From 52fa931140b2e998bd76a72d3cfdf00fabf2ce1b Mon Sep 17 00:00:00 2001 From: Caio Bleggi Date: Tue, 9 Dec 2025 12:03:47 -0300 Subject: [PATCH 01/89] feat(channel): add support for @newsletter in sendMessage and findChannels --- src/api/controllers/chat.controller.ts | 4 ++ .../whatsapp/whatsapp.baileys.service.ts | 68 ++++++++++++++++++- src/api/routes/chat.router.ts | 10 +++ src/utils/createJid.ts | 7 +- 4 files changed, 86 insertions(+), 3 deletions(-) diff --git a/src/api/controllers/chat.controller.ts b/src/api/controllers/chat.controller.ts index 22e90b9faa..6a21fa56aa 100644 --- a/src/api/controllers/chat.controller.ts +++ b/src/api/controllers/chat.controller.ts @@ -113,4 +113,8 @@ export class ChatController { public async blockUser({ instanceName }: InstanceDto, data: BlockUserDto) { return await this.waMonitor.waInstances[instanceName].blockUser(data); } + + public async fetchChannels({ instanceName }: InstanceDto, query: Query) { + return await this.waMonitor.waInstances[instanceName].fetchChannels(query); + } } diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 60e857fcc1..db743facf0 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -3511,9 +3511,24 @@ export class BaileysStartupService extends ChannelStartupService { users: { number: string; jid: string; name?: string }[]; } = { groups: [], broadcast: [], users: [] }; + const onWhatsapp: OnWhatsAppDto[] = []; + data.numbers.forEach((number) => { const jid = createJid(number); + if (isJidNewsletter(jid)) { + onWhatsapp.push( + new OnWhatsAppDto( + jid, + true, // Newsletters are always valid + number, + undefined, // Can be fetched later if needed + 'newsletter', // Indicate it's a newsletter type + ), + ); + return; + } + if (isJidGroup(jid)) { jids.groups.push({ number, jid }); } else if (jid === 'status@broadcast') { @@ -3523,8 +3538,6 @@ export class BaileysStartupService extends ChannelStartupService { } }); - const onWhatsapp: OnWhatsAppDto[] = []; - // BROADCAST onWhatsapp.push(...jids.broadcast.map(({ jid, number }) => new OnWhatsAppDto(jid, false, number))); @@ -4700,6 +4713,10 @@ export class BaileysStartupService extends ChannelStartupService { } } + if (isJidNewsletter(message.key.remoteJid) && message.key.fromMe) { + messageRaw.status = status[3]; // DELIVERED MESSAGE TO NEWSLETTER CHANNEL + } + return messageRaw; } @@ -5119,4 +5136,51 @@ export class BaileysStartupService extends ChannelStartupService { }, }; } + public async fetchChannels(query: Query) { + const page = Number((query as any)?.page ?? 1); + const limit = Number((query as any)?.limit ?? (query as any)?.rows ?? 50); + const skip = (page - 1) * limit; + + const messages = await this.prismaRepository.message.findMany({ + where: { + instanceId: this.instanceId, + AND: [{ key: { path: ['remoteJid'], not: null } }], + }, + orderBy: { messageTimestamp: 'desc' }, + select: { + key: true, + messageTimestamp: true, + }, + }); + + const channelMap = new Map(); + + for (const msg of messages) { + const key = msg.key as any; + const remoteJid = key?.remoteJid as string | undefined; + if (!remoteJid || !isJidNewsletter(remoteJid)) continue; + + if (!channelMap.has(remoteJid)) { + channelMap.set(remoteJid, { + remoteJid, + pushName: undefined, // Push name is never stored for channels, so we set it as undefined + lastMessageTimestamp: msg.messageTimestamp, + }); + } + } + + const allChannels = Array.from(channelMap.values()); + + const total = allChannels.length; + const pages = Math.ceil(total / limit); + const records = allChannels.slice(skip, skip + limit); + + return { + total, + pages, + currentPage: page, + limit, + records, + }; + } } diff --git a/src/api/routes/chat.router.ts b/src/api/routes/chat.router.ts index 158947ed22..f372950fd9 100644 --- a/src/api/routes/chat.router.ts +++ b/src/api/routes/chat.router.ts @@ -281,6 +281,16 @@ export class ChatRouter extends RouterBroker { }); return res.status(HttpStatus.CREATED).json(response); + }) + .post(this.routerPath('findChannels'), ...guards, async (req, res) => { + const response = await this.dataValidate({ + request: req, + schema: contactValidateSchema, + ClassRef: Query, + execute: (instance, query) => chatController.fetchChannels(instance, query as any), + }); + + return res.status(HttpStatus.OK).json(response); }); } diff --git a/src/utils/createJid.ts b/src/utils/createJid.ts index a680e821e1..23a3afe1fa 100644 --- a/src/utils/createJid.ts +++ b/src/utils/createJid.ts @@ -35,7 +35,12 @@ function formatBRNumber(jid: string) { export function createJid(number: string): string { number = number.replace(/:\d+/, ''); - if (number.includes('@g.us') || number.includes('@s.whatsapp.net') || number.includes('@lid')) { + if ( + number.includes('@g.us') || + number.includes('@s.whatsapp.net') || + number.includes('@lid') || + number.includes('@newsletter') + ) { return number; } From 5faf3d18d6db5566048c4245a846528c2481f8e8 Mon Sep 17 00:00:00 2001 From: OrionDesign Date: Tue, 9 Dec 2025 16:56:46 -0300 Subject: [PATCH 02/89] Add poll vote decryption endpoint and logic Introduces a new API endpoint and supporting logic to decrypt WhatsApp poll votes. Adds DecryptPollVoteDto, validation schema, controller method, and service logic to process and aggregate poll vote results based on poll creation message key. --- src/api/controllers/chat.controller.ts | 5 + src/api/dto/chat.dto.ts | 9 + .../whatsapp/whatsapp.baileys.service.ts | 243 ++++++++++++++++++ src/api/routes/chat.router.ts | 12 + src/validate/message.schema.ts | 18 ++ 5 files changed, 287 insertions(+) diff --git a/src/api/controllers/chat.controller.ts b/src/api/controllers/chat.controller.ts index 22e90b9faa..e1d2458f9b 100644 --- a/src/api/controllers/chat.controller.ts +++ b/src/api/controllers/chat.controller.ts @@ -1,6 +1,7 @@ import { ArchiveChatDto, BlockUserDto, + DecryptPollVoteDto, DeleteMessage, getBase64FromMediaMessageDto, MarkChatUnreadDto, @@ -113,4 +114,8 @@ export class ChatController { public async blockUser({ instanceName }: InstanceDto, data: BlockUserDto) { return await this.waMonitor.waInstances[instanceName].blockUser(data); } + + public async decryptPollVote({ instanceName }: InstanceDto, data: DecryptPollVoteDto) { + return await this.waMonitor.waInstances[instanceName].baileysDecryptPollVote(data.pollCreationMessageKey); + } } diff --git a/src/api/dto/chat.dto.ts b/src/api/dto/chat.dto.ts index b11f32b054..1e6bcbcfc5 100644 --- a/src/api/dto/chat.dto.ts +++ b/src/api/dto/chat.dto.ts @@ -127,3 +127,12 @@ export class BlockUserDto { number: string; status: 'block' | 'unblock'; } + +export class DecryptPollVoteDto { + pollCreationMessageKey: { + id: string; + remoteJid: string; + participant?: string; + fromMe?: boolean; + }; +} \ No newline at end of file diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 60e857fcc1..1b678ad91a 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -5119,4 +5119,247 @@ export class BaileysStartupService extends ChannelStartupService { }, }; } + + public async baileysDecryptPollVote(pollCreationMessageKey: proto.IMessageKey) { + try { + this.logger.verbose('Starting poll vote decryption process'); + + // Buscar a mensagem de criação da enquete + const pollCreationMessage = (await this.getMessage(pollCreationMessageKey, true)) as proto.IWebMessageInfo; + + if (!pollCreationMessage) { + throw new NotFoundException('Poll creation message not found'); + } + + // Extrair opções da enquete + const pollOptions = + (pollCreationMessage.message as any)?.pollCreationMessage?.options || + (pollCreationMessage.message as any)?.pollCreationMessageV3?.options || + []; + + if (!pollOptions || pollOptions.length === 0) { + throw new NotFoundException('Poll options not found'); + } + + // Recuperar chave de criptografia + const pollMessageSecret = (await this.getMessage(pollCreationMessageKey)) as any; + let pollEncKey = pollMessageSecret?.messageContextInfo?.messageSecret; + + if (!pollEncKey) { + throw new NotFoundException('Poll encryption key not found'); + } + + // Normalizar chave de criptografia + if (typeof pollEncKey === 'string') { + pollEncKey = Buffer.from(pollEncKey, 'base64'); + } else if (pollEncKey?.type === 'Buffer' && Array.isArray(pollEncKey.data)) { + pollEncKey = Buffer.from(pollEncKey.data); + } + + if (Buffer.isBuffer(pollEncKey) && pollEncKey.length === 44) { + pollEncKey = Buffer.from(pollEncKey.toString('utf8'), 'base64'); + } + + // Buscar todas as mensagens de atualização de votos + const allPollUpdateMessages = await this.prismaRepository.message.findMany({ + where: { + instanceId: this.instanceId, + messageType: 'pollUpdateMessage', + }, + select: { + id: true, + key: true, + message: true, + messageTimestamp: true, + }, + }); + + this.logger.verbose(`Found ${allPollUpdateMessages.length} pollUpdateMessage messages in database`); + + // Filtrar apenas mensagens relacionadas a esta enquete específica + const pollUpdateMessages = allPollUpdateMessages.filter((msg) => { + const pollUpdate = (msg.message as any)?.pollUpdateMessage; + if (!pollUpdate) return false; + + const creationKey = pollUpdate.pollCreationMessageKey; + if (!creationKey) return false; + + return ( + creationKey.id === pollCreationMessageKey.id && + jidNormalizedUser(creationKey.remoteJid || '') === jidNormalizedUser(pollCreationMessageKey.remoteJid || '') + ); + }); + + this.logger.verbose(`Filtered to ${pollUpdateMessages.length} matching poll update messages`); + + // Preparar candidatos de JID para descriptografia + const creatorCandidates = [ + this.instance.wuid, + this.client.user?.lid, + pollCreationMessage.key.participant, + (pollCreationMessage.key as any).participantAlt, + pollCreationMessage.key.remoteJid, + (pollCreationMessage.key as any).remoteJidAlt, + ].filter(Boolean); + + const uniqueCreators = [...new Set(creatorCandidates.map((id) => jidNormalizedUser(id)))]; + + // Processar votos + const votesByUser = new Map(); + + this.logger.verbose(`Processing ${pollUpdateMessages.length} poll update messages for decryption`); + + for (const pollUpdateMsg of pollUpdateMessages) { + const pollVote = (pollUpdateMsg.message as any)?.pollUpdateMessage?.vote; + if (!pollVote) continue; + + const key = pollUpdateMsg.key as any; + const voterCandidates = [ + this.instance.wuid, + this.client.user?.lid, + key.participant, + key.participantAlt, + key.remoteJidAlt, + key.remoteJid, + ].filter(Boolean); + + const uniqueVoters = [...new Set(voterCandidates.map((id) => jidNormalizedUser(id)))]; + + let selectedOptionNames: string[] = []; + let successfulVoterJid: string | undefined; + + // Verificar se o voto já está descriptografado + if (pollVote.selectedOptions && Array.isArray(pollVote.selectedOptions)) { + const selectedOptions = pollVote.selectedOptions; + this.logger.verbose('Vote already has selectedOptions, checking format'); + + // Verificar se são strings (já descriptografado) ou buffers (precisa descriptografar) + if (selectedOptions.length > 0 && typeof selectedOptions[0] === 'string') { + // Já está descriptografado como nomes de opções + selectedOptionNames = selectedOptions; + successfulVoterJid = uniqueVoters[0]; + this.logger.verbose(`Using already decrypted vote: voter=${successfulVoterJid}, options=${selectedOptionNames.join(',')}`); + } else { + // Está como hash, precisa converter para nomes + selectedOptionNames = pollOptions + .filter((option: any) => { + const hash = createHash('sha256').update(option.optionName).digest(); + return selectedOptions.some((selected: any) => { + if (Buffer.isBuffer(selected)) { + return Buffer.compare(selected, hash) === 0; + } + return false; + }); + }) + .map((option: any) => option.optionName); + successfulVoterJid = uniqueVoters[0]; + } + } else if (pollVote.encPayload && pollEncKey) { + // Tentar descriptografar + let decryptedVote: any = null; + + for (const creator of uniqueCreators) { + for (const voter of uniqueVoters) { + try { + decryptedVote = decryptPollVote(pollVote, { + pollCreatorJid: creator, + pollMsgId: pollCreationMessage.key.id, + pollEncKey, + voterJid: voter, + } as any); + + if (decryptedVote) { + successfulVoterJid = voter; + break; + } + } catch (error) { + // Continue tentando outras combinações + } + } + if (decryptedVote) break; + } + + if (decryptedVote && decryptedVote.selectedOptions) { + // Converter hashes para nomes de opções + selectedOptionNames = pollOptions + .filter((option: any) => { + const hash = createHash('sha256').update(option.optionName).digest(); + return decryptedVote.selectedOptions.some((selected: any) => { + if (Buffer.isBuffer(selected)) { + return Buffer.compare(selected, hash) === 0; + } + return false; + }); + }) + .map((option: any) => option.optionName); + + this.logger.verbose(`Successfully decrypted vote for voter: ${successfulVoterJid}, creator: ${uniqueCreators[0]}`); + } else { + this.logger.warn(`Failed to decrypt vote. Last error: Could not decrypt with any combination`); + continue; + } + } else { + this.logger.warn('Vote has no encPayload and no selectedOptions, skipping'); + continue; + } + + if (selectedOptionNames.length > 0 && successfulVoterJid) { + const normalizedVoterJid = jidNormalizedUser(successfulVoterJid); + const existingVote = votesByUser.get(normalizedVoterJid); + + // Manter apenas o voto mais recente de cada usuário + if (!existingVote || pollUpdateMsg.messageTimestamp > existingVote.timestamp) { + votesByUser.set(normalizedVoterJid, { + timestamp: pollUpdateMsg.messageTimestamp, + selectedOptions: selectedOptionNames, + voterJid: successfulVoterJid, + }); + } + } + } + + // Agrupar votos por opção + const results: Record = {}; + + // Inicializar todas as opções com zero votos + pollOptions.forEach((option: any) => { + results[option.optionName] = { + votes: 0, + voters: [], + }; + }); + + // Agregar votos + votesByUser.forEach((voteData) => { + voteData.selectedOptions.forEach((optionName) => { + if (results[optionName]) { + results[optionName].votes++; + if (!results[optionName].voters.includes(voteData.voterJid)) { + results[optionName].voters.push(voteData.voterJid); + } + } + }); + }); + + // Obter nome da enquete + const pollName = + (pollCreationMessage.message as any)?.pollCreationMessage?.name || + (pollCreationMessage.message as any)?.pollCreationMessageV3?.name || + 'Enquete sem nome'; + + // Calcular total de votos únicos + const totalVotes = votesByUser.size; + + return { + poll: { + name: pollName, + totalVotes, + results, + }, + }; + } catch (error) { + this.logger.error(`Error decrypting poll votes: ${error}`); + throw new InternalServerErrorException('Error decrypting poll votes', error.toString()); + } + } } diff --git a/src/api/routes/chat.router.ts b/src/api/routes/chat.router.ts index 158947ed22..e374b6d635 100644 --- a/src/api/routes/chat.router.ts +++ b/src/api/routes/chat.router.ts @@ -2,6 +2,7 @@ import { RouterBroker } from '@api/abstract/abstract.router'; import { ArchiveChatDto, BlockUserDto, + DecryptPollVoteDto, DeleteMessage, getBase64FromMediaMessageDto, MarkChatUnreadDto, @@ -23,6 +24,7 @@ import { archiveChatSchema, blockUserSchema, contactValidateSchema, + decryptPollVoteSchema, deleteMessageSchema, markChatUnreadSchema, messageUpSchema, @@ -281,6 +283,16 @@ export class ChatRouter extends RouterBroker { }); return res.status(HttpStatus.CREATED).json(response); + }) + .post(this.routerPath('getPollVote'), ...guards, async (req, res) => { + const response = await this.dataValidate({ + request: req, + schema: decryptPollVoteSchema, + ClassRef: DecryptPollVoteDto, + execute: (instance, data) => chatController.decryptPollVote(instance, data), + }); + + return res.status(HttpStatus.OK).json(response); }); } diff --git a/src/validate/message.schema.ts b/src/validate/message.schema.ts index d514c6199e..79d5cda2cd 100644 --- a/src/validate/message.schema.ts +++ b/src/validate/message.schema.ts @@ -447,3 +447,21 @@ export const buttonsMessageSchema: JSONSchema7 = { }, required: ['number'], }; + +export const decryptPollVoteSchema: JSONSchema7 = { + $id: v4(), + type: 'object', + properties: { + pollCreationMessageKey: { + type: 'object', + properties: { + id: { type: 'string' }, + remoteJid: { type: 'string' }, + participant: { type: 'string' }, + fromMe: { type: 'boolean' }, + }, + required: ['id', 'remoteJid'], + }, + }, + required: ['pollCreationMessageKey'], +}; \ No newline at end of file From 076449e5d6ab5a867988ac3d9bd6f3117d5816be Mon Sep 17 00:00:00 2001 From: OrionDesign Date: Tue, 9 Dec 2025 17:03:15 -0300 Subject: [PATCH 03/89] Refactor DecryptPollVoteDto and schema structure Updated DecryptPollVoteDto to use a nested message.key structure and moved remoteJid to the top level. Adjusted the controller and validation schema to match the new structure for consistency and clarity. --- src/api/controllers/chat.controller.ts | 6 +++++- src/api/dto/chat.dto.ts | 10 +++++----- src/validate/message.schema.ts | 18 +++++++++++------- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/src/api/controllers/chat.controller.ts b/src/api/controllers/chat.controller.ts index e1d2458f9b..c224ef9273 100644 --- a/src/api/controllers/chat.controller.ts +++ b/src/api/controllers/chat.controller.ts @@ -116,6 +116,10 @@ export class ChatController { } public async decryptPollVote({ instanceName }: InstanceDto, data: DecryptPollVoteDto) { - return await this.waMonitor.waInstances[instanceName].baileysDecryptPollVote(data.pollCreationMessageKey); + const pollCreationMessageKey = { + id: data.message.key.id, + remoteJid: data.remoteJid, + }; + return await this.waMonitor.waInstances[instanceName].baileysDecryptPollVote(pollCreationMessageKey); } } diff --git a/src/api/dto/chat.dto.ts b/src/api/dto/chat.dto.ts index 1e6bcbcfc5..a8098729f4 100644 --- a/src/api/dto/chat.dto.ts +++ b/src/api/dto/chat.dto.ts @@ -129,10 +129,10 @@ export class BlockUserDto { } export class DecryptPollVoteDto { - pollCreationMessageKey: { - id: string; - remoteJid: string; - participant?: string; - fromMe?: boolean; + message: { + key: { + id: string; + }; }; + remoteJid: string; } \ No newline at end of file diff --git a/src/validate/message.schema.ts b/src/validate/message.schema.ts index 79d5cda2cd..aef922cd93 100644 --- a/src/validate/message.schema.ts +++ b/src/validate/message.schema.ts @@ -452,16 +452,20 @@ export const decryptPollVoteSchema: JSONSchema7 = { $id: v4(), type: 'object', properties: { - pollCreationMessageKey: { + message: { type: 'object', properties: { - id: { type: 'string' }, - remoteJid: { type: 'string' }, - participant: { type: 'string' }, - fromMe: { type: 'boolean' }, + key: { + type: 'object', + properties: { + id: { type: 'string' }, + }, + required: ['id'], + }, }, - required: ['id', 'remoteJid'], + required: ['key'], }, + remoteJid: { type: 'string' }, }, - required: ['pollCreationMessageKey'], + required: ['message', 'remoteJid'], }; \ No newline at end of file From 67c4aa640b726467810cefbeb0482fe882a47d6d Mon Sep 17 00:00:00 2001 From: OrionDesign Date: Thu, 11 Dec 2025 17:01:13 -0300 Subject: [PATCH 04/89] =?UTF-8?q?refactor(baileys):=20atualizar=20servi?= =?UTF-8?q?=C3=83=C2=A7o=20de=20mensagens=20e=20schemas=20de=20valida?= =?UTF-8?q?=C3=83=C2=A7=C3=83=C2=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 28 +++++ src/api/dto/chat.dto.ts | 2 +- .../whatsapp/whatsapp.baileys.service.ts | 116 +++++++++--------- src/validate/message.schema.ts | 2 +- 4 files changed, 90 insertions(+), 58 deletions(-) diff --git a/package-lock.json b/package-lock.json index c45e8fef38..1aafeaba67 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2907,6 +2907,7 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", "license": "Apache-2.0", + "peer": true, "engines": { "node": ">=8.0.0" } @@ -2928,6 +2929,7 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-2.2.0.tgz", "integrity": "sha512-qRkLWiUEZNAmYapZ7KGS5C4OmBLcP/H2foXeOEaowYCR0wi89fHejrfYfbuLVCMLp/dWZXKvQusdbUEZjERfwQ==", "license": "Apache-2.0", + "peer": true, "engines": { "node": "^18.19.0 || >=20.6.0" }, @@ -2940,6 +2942,7 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.2.0.tgz", "integrity": "sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==", "license": "Apache-2.0", + "peer": true, "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, @@ -2955,6 +2958,7 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.204.0.tgz", "integrity": "sha512-vV5+WSxktzoMP8JoYWKeopChy6G3HKk4UQ2hESCRDUUTZqQ3+nM3u8noVG0LmNfRWwcFBnbZ71GKC7vaYYdJ1g==", "license": "Apache-2.0", + "peer": true, "dependencies": { "@opentelemetry/api-logs": "0.204.0", "import-in-the-middle": "^1.8.1", @@ -3362,6 +3366,7 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", "license": "Apache-2.0", + "peer": true, "dependencies": { "@opentelemetry/core": "2.2.0", "@opentelemetry/semantic-conventions": "^1.29.0" @@ -3378,6 +3383,7 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.2.0.tgz", "integrity": "sha512-xWQgL0Bmctsalg6PaXExmzdedSp3gyKV8mQBwK/j9VGdCDu2fmXIb2gAehBKbkXCpJ4HPkgv3QfoJWRT4dHWbw==", "license": "Apache-2.0", + "peer": true, "dependencies": { "@opentelemetry/core": "2.2.0", "@opentelemetry/resources": "2.2.0", @@ -3395,6 +3401,7 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.38.0.tgz", "integrity": "sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg==", "license": "Apache-2.0", + "peer": true, "engines": { "node": ">=14" } @@ -3643,6 +3650,7 @@ "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.6.1.tgz", "integrity": "sha512-/KCsg3xSlR+nCK8/8ZYSknYxvXHwubJrU82F3Lm1Fp6789VQ0/3RJKfsmRXjqfaTA++23CvC3hqmqe/2GEt6Kw==", "license": "MIT", + "peer": true, "dependencies": { "cluster-key-slot": "1.1.2", "generic-pool": "3.9.0", @@ -4933,6 +4941,7 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", "license": "MIT", + "peer": true, "dependencies": { "undici-types": "~7.16.0" } @@ -5108,6 +5117,7 @@ "integrity": "sha512-lJi3PfxVmo0AkEY93ecfN+r8SofEqZNGByvHAI3GBLrvt1Cw6H5k1IM02nSzu0RfUafr2EvFSw0wAsZgubNplQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.47.0", "@typescript-eslint/types": "8.47.0", @@ -5411,6 +5421,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -5758,6 +5769,7 @@ "resolved": "https://registry.npmjs.org/audio-decode/-/audio-decode-2.2.3.tgz", "integrity": "sha512-Z0lHvMayR/Pad9+O9ddzaBJE0DrhZkQlStrC1RwcAHF3AhQAsdwKHeLGK8fYKyp2DDU6xHxzGb4CLMui12yVrg==", "license": "MIT", + "peer": true, "dependencies": { "@wasm-audio-decoders/flac": "^0.2.4", "@wasm-audio-decoders/ogg-vorbis": "^0.1.15", @@ -6746,6 +6758,7 @@ "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", @@ -7636,6 +7649,7 @@ "integrity": "sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA==", "hasInstallScript": true, "license": "MIT", + "peer": true, "bin": { "esbuild": "bin/esbuild" }, @@ -7706,6 +7720,7 @@ "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -7762,6 +7777,7 @@ "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", "dev": true, "license": "MIT", + "peer": true, "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -8368,6 +8384,7 @@ "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", "license": "MIT", + "peer": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -10355,6 +10372,7 @@ "resolved": "https://registry.npmjs.org/jimp/-/jimp-1.6.0.tgz", "integrity": "sha512-YcwCHw1kiqEeI5xRpDlPPBGL2EOpBKLwO4yIBJcXWHPj5PnA5urGq0jbyhM5KoNpypQ6VboSoxc9D8HyfvngSg==", "license": "MIT", + "peer": true, "dependencies": { "@jimp/core": "1.6.0", "@jimp/diff": "1.6.0", @@ -10585,6 +10603,7 @@ "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.5.4.tgz", "integrity": "sha512-eohl3hKTiVyD1ilYdw9T0OiB4hnjef89e3dMYKz+mVKDzj+5IteTseASUsOB+EU9Tf6VNTCjDePcP6wkDGmLKQ==", "license": "MIT", + "peer": true, "dependencies": { "@keyv/serialize": "^1.1.1" } @@ -10680,6 +10699,7 @@ "resolved": "https://registry.npmjs.org/link-preview-js/-/link-preview-js-3.2.0.tgz", "integrity": "sha512-FvrLltjOPGbTzt+RugbzM7g8XuUNLPO2U/INSLczrYdAA32E7nZVUrVL1gr61DGOArGJA2QkPGMEvNMLLsXREA==", "license": "MIT", + "peer": true, "dependencies": { "cheerio": "1.0.0-rc.11", "url": "0.11.0" @@ -12600,6 +12620,7 @@ "resolved": "https://registry.npmjs.org/pg/-/pg-8.16.3.tgz", "integrity": "sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw==", "license": "MIT", + "peer": true, "dependencies": { "pg-connection-string": "^2.9.1", "pg-pool": "^3.10.1", @@ -12909,6 +12930,7 @@ "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", "dev": true, "license": "MIT", + "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -12938,6 +12960,7 @@ "integrity": "sha512-F3eX7K+tWpkbhl3l4+VkFtrwJlLXbAM+f9jolgoUZbFcm1DgHZ4cq9AgVEgUym2au5Ad/TDLN8lg83D+M10ycw==", "hasInstallScript": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "@prisma/config": "6.19.0", "@prisma/engines": "6.19.0" @@ -14029,6 +14052,7 @@ "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==", "hasInstallScript": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", @@ -14871,6 +14895,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -15059,6 +15084,7 @@ "integrity": "sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { "esbuild": "~0.25.0", "get-tsconfig": "^4.7.5" @@ -15707,6 +15733,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -16222,6 +16249,7 @@ "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==", "devOptional": true, "license": "ISC", + "peer": true, "bin": { "yaml": "bin.mjs" }, diff --git a/src/api/dto/chat.dto.ts b/src/api/dto/chat.dto.ts index a8098729f4..aeaab6f84c 100644 --- a/src/api/dto/chat.dto.ts +++ b/src/api/dto/chat.dto.ts @@ -135,4 +135,4 @@ export class DecryptPollVoteDto { }; }; remoteJid: string; -} \ No newline at end of file +} diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 1b678ad91a..819138474b 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -733,7 +733,7 @@ export class BaileysStartupService extends ChannelStartupService { }); return await this.createClient(number); - } catch (error) { + } catch { this.logger.error(error); throw new InternalServerErrorException(error?.toString()); } @@ -742,7 +742,7 @@ export class BaileysStartupService extends ChannelStartupService { public async reloadConnection(): Promise { try { return await this.createClient(this.phoneNumber); - } catch (error) { + } catch { this.logger.error(error); throw new InternalServerErrorException(error?.toString()); } @@ -888,7 +888,7 @@ export class BaileysStartupService extends ChannelStartupService { }), ); } - } catch (error) { + } catch { console.error(error); this.logger.error(`Error: ${error.message}`); } @@ -1074,7 +1074,7 @@ export class BaileysStartupService extends ChannelStartupService { contacts = undefined; messages = undefined; chats = undefined; - } catch (error) { + } catch { this.logger.error(error); } }, @@ -1434,7 +1434,7 @@ export class BaileysStartupService extends ChannelStartupService { await this.prismaRepository.message.update({ where: { id: msg.id }, data: messageRaw }); } - } catch (error) { + } catch { this.logger.error(['Error on upload file to minio', error?.message, error?.stack]); } } @@ -1466,7 +1466,7 @@ export class BaileysStartupService extends ChannelStartupService { messageRaw.message.base64 = buffer.toString('base64'); } } - } catch (error) { + } catch { this.logger.error(['Error converting media to base64', error?.message]); } } @@ -1550,7 +1550,7 @@ export class BaileysStartupService extends ChannelStartupService { create: contactRaw, }); } - } catch (error) { + } catch { this.logger.error(error); } }, @@ -1798,7 +1798,7 @@ export class BaileysStartupService extends ChannelStartupService { }; this.sendDataWebhook(Events.GROUP_PARTICIPANTS_UPDATE, enhancedParticipantsUpdate); - } catch (error) { + } catch { this.logger.error( `Failed to resolve participant data for GROUP_PARTICIPANTS_UPDATE webhook: ${error.message} | Group: ${participantsUpdate.id} | Participants: ${participantsUpdate.participants.length}`, ); @@ -2005,7 +2005,7 @@ export class BaileysStartupService extends ChannelStartupService { return; } } - } catch (error) { + } catch { this.logger.error(error); } }); @@ -2122,7 +2122,7 @@ export class BaileysStartupService extends ChannelStartupService { // return call; return { id: '123', jid, isVideo, callDuration }; - } catch (error) { + } catch { return error; } } @@ -2503,7 +2503,7 @@ export class BaileysStartupService extends ChannelStartupService { await this.prismaRepository.message.update({ where: { id: msg.id }, data: messageRaw }); } - } catch (error) { + } catch { this.logger.error(['Error on upload file to minio', error?.message, error?.stack]); } } @@ -2534,7 +2534,7 @@ export class BaileysStartupService extends ChannelStartupService { messageRaw.message.base64 = buffer.toString('base64'); } } - } catch (error) { + } catch { this.logger.error(['Error converting media to base64', error?.message]); } } @@ -2555,7 +2555,7 @@ export class BaileysStartupService extends ChannelStartupService { } return messageRaw; - } catch (error) { + } catch { this.logger.error(error); throw new BadRequestException(error.toString()); } @@ -2607,7 +2607,7 @@ export class BaileysStartupService extends ChannelStartupService { } return { presence: data.presence }; - } catch (error) { + } catch { this.logger.error(error); throw new BadRequestException(error.toString()); } @@ -2619,7 +2619,7 @@ export class BaileysStartupService extends ChannelStartupService { await this.client.sendPresenceUpdate(data.presence); return { presence: data.presence }; - } catch (error) { + } catch { this.logger.error(error); throw new BadRequestException(error.toString()); } @@ -2860,7 +2860,7 @@ export class BaileysStartupService extends ChannelStartupService { this.logger.verbose(`Video duration: ${duration} seconds`); prepareMedia[mediaType].seconds = duration; - } catch (error) { + } catch { this.logger.error('Error getting video duration:'); this.logger.error(error); throw new Error(`Failed to get video duration: ${error.message}`); @@ -2887,7 +2887,7 @@ export class BaileysStartupService extends ChannelStartupService { { [mediaType]: { ...prepareMedia[mediaType] } }, { userJid: this.instance.wuid }, ); - } catch (error) { + } catch { this.logger.error(error); throw new InternalServerErrorException(error?.toString() || error); } @@ -2932,7 +2932,7 @@ export class BaileysStartupService extends ChannelStartupService { } else { return await sharp(imageBuffer).webp().toBuffer(); } - } catch (error) { + } catch { console.error('Erro ao converter a imagem para WebP:', error); throw error; } @@ -3683,7 +3683,7 @@ export class BaileysStartupService extends ChannelStartupService { }); await this.client.readMessages(keys); return { message: 'Read messages', read: 'success' }; - } catch (error) { + } catch { throw new InternalServerErrorException('Read messages fail', error.toString()); } } @@ -3732,7 +3732,7 @@ export class BaileysStartupService extends ChannelStartupService { await this.client.chatModify({ archive: data.archive, lastMessages: [last_message] }, createJid(number)); return { chatId: number, archived: true }; - } catch (error) { + } catch { throw new InternalServerErrorException({ archived: false, message: ['An error occurred while archiving the chat. Open a calling.', error.toString()], @@ -3760,7 +3760,7 @@ export class BaileysStartupService extends ChannelStartupService { await this.client.chatModify({ markRead: false, lastMessages: [last_message] }, createJid(number)); return { chatId: number, markedChatUnread: true }; - } catch (error) { + } catch { throw new InternalServerErrorException({ markedChatUnread: false, message: ['An error occurred while marked unread the chat. Open a calling.', error.toString()], @@ -3817,7 +3817,7 @@ export class BaileysStartupService extends ChannelStartupService { } return response; - } catch (error) { + } catch { throw new InternalServerErrorException('Error while deleting message for everyone', error?.toString()); } } @@ -3955,7 +3955,7 @@ export class BaileysStartupService extends ChannelStartupService { return result; } - } catch (error) { + } catch { this.logger.error('Error converting audio to mp4:'); this.logger.error(error); throw new BadRequestException('Failed to convert audio to MP4'); @@ -3971,7 +3971,7 @@ export class BaileysStartupService extends ChannelStartupService { base64: buffer.toString('base64'), buffer: getBuffer ? buffer : null, }; - } catch (error) { + } catch { this.logger.error('Error processing media message:'); this.logger.error(error); throw new BadRequestException(error.toString()); @@ -4013,7 +4013,7 @@ export class BaileysStartupService extends ChannelStartupService { groupadd: settings.groupadd, }, }; - } catch (error) { + } catch { throw new InternalServerErrorException('Error updating privacy settings', error.toString()); } } @@ -4031,7 +4031,7 @@ export class BaileysStartupService extends ChannelStartupService { } return { isBusiness: true, ...profile }; - } catch (error) { + } catch { throw new InternalServerErrorException('Error updating profile name', error.toString()); } } @@ -4041,7 +4041,7 @@ export class BaileysStartupService extends ChannelStartupService { await this.client.updateProfileName(name); return { update: 'success' }; - } catch (error) { + } catch { throw new InternalServerErrorException('Error updating profile name', error.toString()); } } @@ -4051,7 +4051,7 @@ export class BaileysStartupService extends ChannelStartupService { await this.client.updateProfileStatus(status); return { update: 'success' }; - } catch (error) { + } catch { throw new InternalServerErrorException('Error updating profile status', error.toString()); } } @@ -4092,7 +4092,7 @@ export class BaileysStartupService extends ChannelStartupService { this.reloadConnection(); return { update: 'success' }; - } catch (error) { + } catch { throw new InternalServerErrorException('Error updating profile picture', error.toString()); } } @@ -4104,7 +4104,7 @@ export class BaileysStartupService extends ChannelStartupService { this.reloadConnection(); return { update: 'success' }; - } catch (error) { + } catch { throw new InternalServerErrorException('Error removing profile picture', error.toString()); } } @@ -4124,7 +4124,7 @@ export class BaileysStartupService extends ChannelStartupService { await this.client.updateBlockStatus(sender, data.status); return { block: 'success' }; - } catch (error) { + } catch { throw new InternalServerErrorException('Error blocking user', error.toString()); } } @@ -4150,7 +4150,7 @@ export class BaileysStartupService extends ChannelStartupService { } return null; - } catch (error) { + } catch { this.logger.error(error); throw new BadRequestException(error.toString()); } @@ -4238,7 +4238,7 @@ export class BaileysStartupService extends ChannelStartupService { } return messageSent; - } catch (error) { + } catch { this.logger.error(error); throw error; } @@ -4278,7 +4278,7 @@ export class BaileysStartupService extends ChannelStartupService { return { numberJid: contact.jid, labelId: data.labelId, remove: true }; } - } catch (error) { + } catch { throw new BadRequestException(`Unable to ${data.action} label to chat`, error.toString()); } } @@ -4296,7 +4296,7 @@ export class BaileysStartupService extends ChannelStartupService { } return meta; - } catch (error) { + } catch { this.logger.error(error); return null; } @@ -4344,7 +4344,7 @@ export class BaileysStartupService extends ChannelStartupService { const group = await this.client.groupMetadata(id); return group; - } catch (error) { + } catch { this.logger.error(error); throw new InternalServerErrorException('Error creating group', error.toString()); } @@ -4383,7 +4383,7 @@ export class BaileysStartupService extends ChannelStartupService { await this.client.updateProfilePicture(picture.groupJid, pic); return { update: 'success' }; - } catch (error) { + } catch { throw new InternalServerErrorException('Error update group picture', error.toString()); } } @@ -4393,7 +4393,7 @@ export class BaileysStartupService extends ChannelStartupService { await this.client.groupUpdateSubject(data.groupJid, data.subject); return { update: 'success' }; - } catch (error) { + } catch { throw new InternalServerErrorException('Error updating group subject', error.toString()); } } @@ -4403,7 +4403,7 @@ export class BaileysStartupService extends ChannelStartupService { await this.client.groupUpdateDescription(data.groupJid, data.description); return { update: 'success' }; - } catch (error) { + } catch { throw new InternalServerErrorException('Error updating group description', error.toString()); } } @@ -4437,7 +4437,7 @@ export class BaileysStartupService extends ChannelStartupService { isCommunityAnnounce: group.isCommunityAnnounce, linkedParent: group.linkedParent, }; - } catch (error) { + } catch { if (reply === 'inner') { return; } @@ -4484,7 +4484,7 @@ export class BaileysStartupService extends ChannelStartupService { try { const code = await this.client.groupInviteCode(id.groupJid); return { inviteUrl: `https://chat.whatsapp.com/${code}`, inviteCode: code }; - } catch (error) { + } catch { throw new NotFoundException('No invite code', error.toString()); } } @@ -4524,7 +4524,7 @@ export class BaileysStartupService extends ChannelStartupService { try { const groupJid = await this.client.groupAcceptInvite(id.inviteCode); return { accepted: true, groupJid: groupJid }; - } catch (error) { + } catch { throw new NotFoundException('Accept invite error', error.toString()); } } @@ -4533,7 +4533,7 @@ export class BaileysStartupService extends ChannelStartupService { try { const inviteCode = await this.client.groupRevokeInvite(id.groupJid); return { revoked: true, inviteCode }; - } catch (error) { + } catch { throw new NotFoundException('Revoke error', error.toString()); } } @@ -4559,7 +4559,7 @@ export class BaileysStartupService extends ChannelStartupService { } return { participants: parsedParticipants }; - } catch (error) { + } catch { console.error(error); throw new NotFoundException('No participants', error.toString()); } @@ -4574,7 +4574,7 @@ export class BaileysStartupService extends ChannelStartupService { update.action, ); return { updateParticipants: updateParticipants }; - } catch (error) { + } catch { throw new BadRequestException('Error updating participants', error.toString()); } } @@ -4583,7 +4583,7 @@ export class BaileysStartupService extends ChannelStartupService { try { const updateSetting = await this.client.groupSettingUpdate(update.groupJid, update.action); return { updateSetting: updateSetting }; - } catch (error) { + } catch { throw new BadRequestException('Error updating setting', error.toString()); } } @@ -4592,7 +4592,7 @@ export class BaileysStartupService extends ChannelStartupService { try { await this.client.groupToggleEphemeral(update.groupJid, update.expiration); return { success: true }; - } catch (error) { + } catch { throw new BadRequestException('Error updating setting', error.toString()); } } @@ -4601,7 +4601,7 @@ export class BaileysStartupService extends ChannelStartupService { try { await this.client.groupLeave(id.groupJid); return { groupJid: id.groupJid, leave: true }; - } catch (error) { + } catch { throw new BadRequestException('Unable to leave the group', error.toString()); } } @@ -4885,7 +4885,7 @@ export class BaileysStartupService extends ChannelStartupService { const response = await this.client.signalRepository.decryptMessage({ jid, type, ciphertext: ciphertextBuffer }); return response instanceof Uint8Array ? Buffer.from(response).toString('base64') : response; - } catch (error) { + } catch { this.logger.error('Error decrypting message:'); this.logger.error(error); throw error; @@ -4943,7 +4943,7 @@ export class BaileysStartupService extends ChannelStartupService { catalogLength: productsCatalog.length, catalog: productsCatalog, }; - } catch (error) { + } catch { console.log(error); return { wuid: jid, name: null, isBusiness: false }; } @@ -4964,7 +4964,7 @@ export class BaileysStartupService extends ChannelStartupService { } return catalog; - } catch (error) { + } catch { throw new InternalServerErrorException('Error getCatalog', error.toString()); } } @@ -5008,7 +5008,7 @@ export class BaileysStartupService extends ChannelStartupService { } return result.collections; - } catch (error) { + } catch { throw new InternalServerErrorException('Error getCatalog', error.toString()); } } @@ -5238,7 +5238,9 @@ export class BaileysStartupService extends ChannelStartupService { // Já está descriptografado como nomes de opções selectedOptionNames = selectedOptions; successfulVoterJid = uniqueVoters[0]; - this.logger.verbose(`Using already decrypted vote: voter=${successfulVoterJid}, options=${selectedOptionNames.join(',')}`); + this.logger.verbose( + `Using already decrypted vote: voter=${successfulVoterJid}, options=${selectedOptionNames.join(',')}`, + ); } else { // Está como hash, precisa converter para nomes selectedOptionNames = pollOptions @@ -5272,7 +5274,7 @@ export class BaileysStartupService extends ChannelStartupService { successfulVoterJid = voter; break; } - } catch (error) { + } catch { // Continue tentando outras combinações } } @@ -5293,7 +5295,9 @@ export class BaileysStartupService extends ChannelStartupService { }) .map((option: any) => option.optionName); - this.logger.verbose(`Successfully decrypted vote for voter: ${successfulVoterJid}, creator: ${uniqueCreators[0]}`); + this.logger.verbose( + `Successfully decrypted vote for voter: ${successfulVoterJid}, creator: ${uniqueCreators[0]}`, + ); } else { this.logger.warn(`Failed to decrypt vote. Last error: Could not decrypt with any combination`); continue; @@ -5357,7 +5361,7 @@ export class BaileysStartupService extends ChannelStartupService { results, }, }; - } catch (error) { + } catch { this.logger.error(`Error decrypting poll votes: ${error}`); throw new InternalServerErrorException('Error decrypting poll votes', error.toString()); } diff --git a/src/validate/message.schema.ts b/src/validate/message.schema.ts index aef922cd93..6970fd9b09 100644 --- a/src/validate/message.schema.ts +++ b/src/validate/message.schema.ts @@ -468,4 +468,4 @@ export const decryptPollVoteSchema: JSONSchema7 = { remoteJid: { type: 'string' }, }, required: ['message', 'remoteJid'], -}; \ No newline at end of file +}; From 2fee5053f37b1ea00bb1a12ddd4dc6ea00fc0353 Mon Sep 17 00:00:00 2001 From: OrionDesign Date: Thu, 11 Dec 2025 17:11:58 -0300 Subject: [PATCH 05/89] =?UTF-8?q?fix(baileys):=20corrigir=20declara=C3=83?= =?UTF-8?q?=C2=A7=C3=83=C2=A3o=20de=20vari=C3=83=C2=A1vel=20error=20em=20b?= =?UTF-8?q?locos=20catch?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../whatsapp/whatsapp.baileys.service.ts | 106 +++++++++--------- 1 file changed, 53 insertions(+), 53 deletions(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 819138474b..cf45a931be 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -733,7 +733,7 @@ export class BaileysStartupService extends ChannelStartupService { }); return await this.createClient(number); - } catch { + } catch (error) { this.logger.error(error); throw new InternalServerErrorException(error?.toString()); } @@ -742,7 +742,7 @@ export class BaileysStartupService extends ChannelStartupService { public async reloadConnection(): Promise { try { return await this.createClient(this.phoneNumber); - } catch { + } catch (error) { this.logger.error(error); throw new InternalServerErrorException(error?.toString()); } @@ -888,7 +888,7 @@ export class BaileysStartupService extends ChannelStartupService { }), ); } - } catch { + } catch (error) { console.error(error); this.logger.error(`Error: ${error.message}`); } @@ -1074,7 +1074,7 @@ export class BaileysStartupService extends ChannelStartupService { contacts = undefined; messages = undefined; chats = undefined; - } catch { + } catch (error) { this.logger.error(error); } }, @@ -1434,7 +1434,7 @@ export class BaileysStartupService extends ChannelStartupService { await this.prismaRepository.message.update({ where: { id: msg.id }, data: messageRaw }); } - } catch { + } catch (error) { this.logger.error(['Error on upload file to minio', error?.message, error?.stack]); } } @@ -1466,7 +1466,7 @@ export class BaileysStartupService extends ChannelStartupService { messageRaw.message.base64 = buffer.toString('base64'); } } - } catch { + } catch (error) { this.logger.error(['Error converting media to base64', error?.message]); } } @@ -1550,7 +1550,7 @@ export class BaileysStartupService extends ChannelStartupService { create: contactRaw, }); } - } catch { + } catch (error) { this.logger.error(error); } }, @@ -1798,7 +1798,7 @@ export class BaileysStartupService extends ChannelStartupService { }; this.sendDataWebhook(Events.GROUP_PARTICIPANTS_UPDATE, enhancedParticipantsUpdate); - } catch { + } catch (error) { this.logger.error( `Failed to resolve participant data for GROUP_PARTICIPANTS_UPDATE webhook: ${error.message} | Group: ${participantsUpdate.id} | Participants: ${participantsUpdate.participants.length}`, ); @@ -2005,7 +2005,7 @@ export class BaileysStartupService extends ChannelStartupService { return; } } - } catch { + } catch (error) { this.logger.error(error); } }); @@ -2122,7 +2122,7 @@ export class BaileysStartupService extends ChannelStartupService { // return call; return { id: '123', jid, isVideo, callDuration }; - } catch { + } catch (error) { return error; } } @@ -2503,7 +2503,7 @@ export class BaileysStartupService extends ChannelStartupService { await this.prismaRepository.message.update({ where: { id: msg.id }, data: messageRaw }); } - } catch { + } catch (error) { this.logger.error(['Error on upload file to minio', error?.message, error?.stack]); } } @@ -2534,7 +2534,7 @@ export class BaileysStartupService extends ChannelStartupService { messageRaw.message.base64 = buffer.toString('base64'); } } - } catch { + } catch (error) { this.logger.error(['Error converting media to base64', error?.message]); } } @@ -2555,7 +2555,7 @@ export class BaileysStartupService extends ChannelStartupService { } return messageRaw; - } catch { + } catch (error) { this.logger.error(error); throw new BadRequestException(error.toString()); } @@ -2607,7 +2607,7 @@ export class BaileysStartupService extends ChannelStartupService { } return { presence: data.presence }; - } catch { + } catch (error) { this.logger.error(error); throw new BadRequestException(error.toString()); } @@ -2619,7 +2619,7 @@ export class BaileysStartupService extends ChannelStartupService { await this.client.sendPresenceUpdate(data.presence); return { presence: data.presence }; - } catch { + } catch (error) { this.logger.error(error); throw new BadRequestException(error.toString()); } @@ -2860,7 +2860,7 @@ export class BaileysStartupService extends ChannelStartupService { this.logger.verbose(`Video duration: ${duration} seconds`); prepareMedia[mediaType].seconds = duration; - } catch { + } catch (error) { this.logger.error('Error getting video duration:'); this.logger.error(error); throw new Error(`Failed to get video duration: ${error.message}`); @@ -2887,7 +2887,7 @@ export class BaileysStartupService extends ChannelStartupService { { [mediaType]: { ...prepareMedia[mediaType] } }, { userJid: this.instance.wuid }, ); - } catch { + } catch (error) { this.logger.error(error); throw new InternalServerErrorException(error?.toString() || error); } @@ -2932,7 +2932,7 @@ export class BaileysStartupService extends ChannelStartupService { } else { return await sharp(imageBuffer).webp().toBuffer(); } - } catch { + } catch (error) { console.error('Erro ao converter a imagem para WebP:', error); throw error; } @@ -3683,7 +3683,7 @@ export class BaileysStartupService extends ChannelStartupService { }); await this.client.readMessages(keys); return { message: 'Read messages', read: 'success' }; - } catch { + } catch (error) { throw new InternalServerErrorException('Read messages fail', error.toString()); } } @@ -3732,7 +3732,7 @@ export class BaileysStartupService extends ChannelStartupService { await this.client.chatModify({ archive: data.archive, lastMessages: [last_message] }, createJid(number)); return { chatId: number, archived: true }; - } catch { + } catch (error) { throw new InternalServerErrorException({ archived: false, message: ['An error occurred while archiving the chat. Open a calling.', error.toString()], @@ -3760,7 +3760,7 @@ export class BaileysStartupService extends ChannelStartupService { await this.client.chatModify({ markRead: false, lastMessages: [last_message] }, createJid(number)); return { chatId: number, markedChatUnread: true }; - } catch { + } catch (error) { throw new InternalServerErrorException({ markedChatUnread: false, message: ['An error occurred while marked unread the chat. Open a calling.', error.toString()], @@ -3817,7 +3817,7 @@ export class BaileysStartupService extends ChannelStartupService { } return response; - } catch { + } catch (error) { throw new InternalServerErrorException('Error while deleting message for everyone', error?.toString()); } } @@ -3955,7 +3955,7 @@ export class BaileysStartupService extends ChannelStartupService { return result; } - } catch { + } catch (error) { this.logger.error('Error converting audio to mp4:'); this.logger.error(error); throw new BadRequestException('Failed to convert audio to MP4'); @@ -3971,7 +3971,7 @@ export class BaileysStartupService extends ChannelStartupService { base64: buffer.toString('base64'), buffer: getBuffer ? buffer : null, }; - } catch { + } catch (error) { this.logger.error('Error processing media message:'); this.logger.error(error); throw new BadRequestException(error.toString()); @@ -4013,7 +4013,7 @@ export class BaileysStartupService extends ChannelStartupService { groupadd: settings.groupadd, }, }; - } catch { + } catch (error) { throw new InternalServerErrorException('Error updating privacy settings', error.toString()); } } @@ -4031,7 +4031,7 @@ export class BaileysStartupService extends ChannelStartupService { } return { isBusiness: true, ...profile }; - } catch { + } catch (error) { throw new InternalServerErrorException('Error updating profile name', error.toString()); } } @@ -4041,7 +4041,7 @@ export class BaileysStartupService extends ChannelStartupService { await this.client.updateProfileName(name); return { update: 'success' }; - } catch { + } catch (error) { throw new InternalServerErrorException('Error updating profile name', error.toString()); } } @@ -4051,7 +4051,7 @@ export class BaileysStartupService extends ChannelStartupService { await this.client.updateProfileStatus(status); return { update: 'success' }; - } catch { + } catch (error) { throw new InternalServerErrorException('Error updating profile status', error.toString()); } } @@ -4092,7 +4092,7 @@ export class BaileysStartupService extends ChannelStartupService { this.reloadConnection(); return { update: 'success' }; - } catch { + } catch (error) { throw new InternalServerErrorException('Error updating profile picture', error.toString()); } } @@ -4104,7 +4104,7 @@ export class BaileysStartupService extends ChannelStartupService { this.reloadConnection(); return { update: 'success' }; - } catch { + } catch (error) { throw new InternalServerErrorException('Error removing profile picture', error.toString()); } } @@ -4124,7 +4124,7 @@ export class BaileysStartupService extends ChannelStartupService { await this.client.updateBlockStatus(sender, data.status); return { block: 'success' }; - } catch { + } catch (error) { throw new InternalServerErrorException('Error blocking user', error.toString()); } } @@ -4150,7 +4150,7 @@ export class BaileysStartupService extends ChannelStartupService { } return null; - } catch { + } catch (error) { this.logger.error(error); throw new BadRequestException(error.toString()); } @@ -4238,7 +4238,7 @@ export class BaileysStartupService extends ChannelStartupService { } return messageSent; - } catch { + } catch (error) { this.logger.error(error); throw error; } @@ -4278,7 +4278,7 @@ export class BaileysStartupService extends ChannelStartupService { return { numberJid: contact.jid, labelId: data.labelId, remove: true }; } - } catch { + } catch (error) { throw new BadRequestException(`Unable to ${data.action} label to chat`, error.toString()); } } @@ -4296,7 +4296,7 @@ export class BaileysStartupService extends ChannelStartupService { } return meta; - } catch { + } catch (error) { this.logger.error(error); return null; } @@ -4344,7 +4344,7 @@ export class BaileysStartupService extends ChannelStartupService { const group = await this.client.groupMetadata(id); return group; - } catch { + } catch (error) { this.logger.error(error); throw new InternalServerErrorException('Error creating group', error.toString()); } @@ -4383,7 +4383,7 @@ export class BaileysStartupService extends ChannelStartupService { await this.client.updateProfilePicture(picture.groupJid, pic); return { update: 'success' }; - } catch { + } catch (error) { throw new InternalServerErrorException('Error update group picture', error.toString()); } } @@ -4393,7 +4393,7 @@ export class BaileysStartupService extends ChannelStartupService { await this.client.groupUpdateSubject(data.groupJid, data.subject); return { update: 'success' }; - } catch { + } catch (error) { throw new InternalServerErrorException('Error updating group subject', error.toString()); } } @@ -4403,7 +4403,7 @@ export class BaileysStartupService extends ChannelStartupService { await this.client.groupUpdateDescription(data.groupJid, data.description); return { update: 'success' }; - } catch { + } catch (error) { throw new InternalServerErrorException('Error updating group description', error.toString()); } } @@ -4437,7 +4437,7 @@ export class BaileysStartupService extends ChannelStartupService { isCommunityAnnounce: group.isCommunityAnnounce, linkedParent: group.linkedParent, }; - } catch { + } catch (error) { if (reply === 'inner') { return; } @@ -4484,7 +4484,7 @@ export class BaileysStartupService extends ChannelStartupService { try { const code = await this.client.groupInviteCode(id.groupJid); return { inviteUrl: `https://chat.whatsapp.com/${code}`, inviteCode: code }; - } catch { + } catch (error) { throw new NotFoundException('No invite code', error.toString()); } } @@ -4524,7 +4524,7 @@ export class BaileysStartupService extends ChannelStartupService { try { const groupJid = await this.client.groupAcceptInvite(id.inviteCode); return { accepted: true, groupJid: groupJid }; - } catch { + } catch (error) { throw new NotFoundException('Accept invite error', error.toString()); } } @@ -4533,7 +4533,7 @@ export class BaileysStartupService extends ChannelStartupService { try { const inviteCode = await this.client.groupRevokeInvite(id.groupJid); return { revoked: true, inviteCode }; - } catch { + } catch (error) { throw new NotFoundException('Revoke error', error.toString()); } } @@ -4559,7 +4559,7 @@ export class BaileysStartupService extends ChannelStartupService { } return { participants: parsedParticipants }; - } catch { + } catch (error) { console.error(error); throw new NotFoundException('No participants', error.toString()); } @@ -4574,7 +4574,7 @@ export class BaileysStartupService extends ChannelStartupService { update.action, ); return { updateParticipants: updateParticipants }; - } catch { + } catch (error) { throw new BadRequestException('Error updating participants', error.toString()); } } @@ -4583,7 +4583,7 @@ export class BaileysStartupService extends ChannelStartupService { try { const updateSetting = await this.client.groupSettingUpdate(update.groupJid, update.action); return { updateSetting: updateSetting }; - } catch { + } catch (error) { throw new BadRequestException('Error updating setting', error.toString()); } } @@ -4592,7 +4592,7 @@ export class BaileysStartupService extends ChannelStartupService { try { await this.client.groupToggleEphemeral(update.groupJid, update.expiration); return { success: true }; - } catch { + } catch (error) { throw new BadRequestException('Error updating setting', error.toString()); } } @@ -4601,7 +4601,7 @@ export class BaileysStartupService extends ChannelStartupService { try { await this.client.groupLeave(id.groupJid); return { groupJid: id.groupJid, leave: true }; - } catch { + } catch (error) { throw new BadRequestException('Unable to leave the group', error.toString()); } } @@ -4885,7 +4885,7 @@ export class BaileysStartupService extends ChannelStartupService { const response = await this.client.signalRepository.decryptMessage({ jid, type, ciphertext: ciphertextBuffer }); return response instanceof Uint8Array ? Buffer.from(response).toString('base64') : response; - } catch { + } catch (error) { this.logger.error('Error decrypting message:'); this.logger.error(error); throw error; @@ -4943,7 +4943,7 @@ export class BaileysStartupService extends ChannelStartupService { catalogLength: productsCatalog.length, catalog: productsCatalog, }; - } catch { + } catch (error) { console.log(error); return { wuid: jid, name: null, isBusiness: false }; } @@ -4964,7 +4964,7 @@ export class BaileysStartupService extends ChannelStartupService { } return catalog; - } catch { + } catch (error) { throw new InternalServerErrorException('Error getCatalog', error.toString()); } } @@ -5008,7 +5008,7 @@ export class BaileysStartupService extends ChannelStartupService { } return result.collections; - } catch { + } catch (error) { throw new InternalServerErrorException('Error getCatalog', error.toString()); } } @@ -5361,7 +5361,7 @@ export class BaileysStartupService extends ChannelStartupService { results, }, }; - } catch { + } catch (error) { this.logger.error(`Error decrypting poll votes: ${error}`); throw new InternalServerErrorException('Error decrypting poll votes', error.toString()); } From 6f2bef678c8ba46f6fc4b9fa84e5ae0a13b08715 Mon Sep 17 00:00:00 2001 From: Davidson Gomes Date: Fri, 12 Dec 2025 17:57:44 -0300 Subject: [PATCH 06/89] fix(chat): clean up code formatting by removing unnecessary blank lines in chat controller --- src/api/controllers/chat.controller.ts | 3 ++- .../integrations/channel/whatsapp/whatsapp.baileys.service.ts | 3 ++- src/api/routes/chat.router.ts | 4 ++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/api/controllers/chat.controller.ts b/src/api/controllers/chat.controller.ts index 27feca83de..fa5ea5fbb7 100644 --- a/src/api/controllers/chat.controller.ts +++ b/src/api/controllers/chat.controller.ts @@ -121,7 +121,8 @@ export class ChatController { remoteJid: data.remoteJid, }; return await this.waMonitor.waInstances[instanceName].baileysDecryptPollVote(pollCreationMessageKey); - + } + public async fetchChannels({ instanceName }: InstanceDto, query: Query) { return await this.waMonitor.waInstances[instanceName].fetchChannels(query); } diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index aad88a3741..b75e31a8ad 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -5382,7 +5382,8 @@ export class BaileysStartupService extends ChannelStartupService { this.logger.error(`Error decrypting poll votes: ${error}`); throw new InternalServerErrorException('Error decrypting poll votes', error.toString()); } - + } + public async fetchChannels(query: Query) { const page = Number((query as any)?.page ?? 1); const limit = Number((query as any)?.limit ?? (query as any)?.rows ?? 50); diff --git a/src/api/routes/chat.router.ts b/src/api/routes/chat.router.ts index d90f9b361e..28578d9e77 100644 --- a/src/api/routes/chat.router.ts +++ b/src/api/routes/chat.router.ts @@ -290,6 +290,10 @@ export class ChatRouter extends RouterBroker { schema: decryptPollVoteSchema, ClassRef: DecryptPollVoteDto, execute: (instance, data) => chatController.decryptPollVote(instance, data), + }); + + return res.status(HttpStatus.OK).json(response); + }) .post(this.routerPath('findChannels'), ...guards, async (req, res) => { const response = await this.dataValidate({ request: req, From 2e3c8184ef4d1b843f8253e5ec0c8527ac7e5f9f Mon Sep 17 00:00:00 2001 From: Vitordotpy Date: Mon, 15 Dec 2025 21:38:45 -0300 Subject: [PATCH 07/89] fix(baileys): normalize remote JIDs for consistent database lookups --- .../whatsapp/whatsapp.baileys.service.ts | 43 +++++++++---------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index b75e31a8ad..8255f5fd3f 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -1561,7 +1561,12 @@ export class BaileysStartupService extends ChannelStartupService { const readChatToUpdate: Record = {}; // {remoteJid: true} for await (const { key, update } of args) { - if (settings?.groupsIgnore && key.remoteJid?.includes('@g.us')) { + // Normalize JIDs immediately to ensure consistent DB lookups + const keyAny = key as any; + if (keyAny.remoteJid) keyAny.remoteJid = keyAny.remoteJid.replace(/:.*$/, ''); + if (keyAny.participant) keyAny.participant = keyAny.participant.replace(/:.*$/, ''); + + if (settings?.groupsIgnore && keyAny.remoteJid?.includes('@g.us')) { continue; } @@ -1612,9 +1617,9 @@ export class BaileysStartupService extends ChannelStartupService { const message: any = { keyId: key.id, - remoteJid: key?.remoteJid, + remoteJid: keyAny?.remoteJid?.replace(/:.*$/, ''), fromMe: key.fromMe, - participant: key?.participant, + participant: keyAny?.participant?.replace(/:.*$/, ''), status: status[update.status] ?? 'SERVER_ACK', pollUpdates, instanceId: this.instanceId, @@ -4662,26 +4667,20 @@ export class BaileysStartupService extends ChannelStartupService { return obj; } - private prepareMessage(message: proto.IWebMessageInfo): any { - const contentType = getContentType(message.message); - const contentMsg = message?.message[contentType] as any; - - const messageRaw = { - key: message.key, // Save key exactly as it comes from Baileys - pushName: - message.pushName || - (message.key.fromMe - ? 'Você' - : message?.participant || (message.key?.participant ? message.key.participant.split('@')[0] : null)), - status: status[message.status], - message: this.deserializeMessageBuffers({ ...message.message }), - contextInfo: this.deserializeMessageBuffers(contentMsg?.contextInfo), - messageType: contentType || 'unknown', - messageTimestamp: Long.isLong(message.messageTimestamp) - ? message.messageTimestamp.toNumber() - : (message.messageTimestamp as number), + private prepareMessage(message: WAMessage): Message { + const keyAny = message.key as any; + const messageRaw: any = { + key: { + ...message.key, + remoteJid: keyAny.remoteJid?.replace(/:.*$/, ''), + participant: keyAny.participant?.replace(/:.*$/, ''), + }, + pushName: message.pushName, + message: message.message, + messageType: getContentType(message.message), + messageTimestamp: message.messageTimestamp, + source: getDevice(keyAny.id), instanceId: this.instanceId, - source: getDevice(message.key.id), }; if (!messageRaw.status && message.key.fromMe === false) { From 72b0833ce26751b9b075752a64423da2077e76be Mon Sep 17 00:00:00 2001 From: Vitordotpy Date: Mon, 15 Dec 2025 22:26:52 -0300 Subject: [PATCH 08/89] fix(baileys): cast messageRaw and its properties to any for type safety --- .../whatsapp/whatsapp.baileys.service.ts | 42 ++++++++++--------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 8255f5fd3f..84b9e7851d 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -1201,10 +1201,10 @@ export class BaileysStartupService extends ChannelStartupService { } } - const messageRaw = this.prepareMessage(received); + const messageRaw = this.prepareMessage(received) as any; if (messageRaw.messageType === 'pollUpdateMessage') { - const pollCreationKey = messageRaw.message.pollUpdateMessage.pollCreationMessageKey; + const pollCreationKey = (messageRaw.message as any).pollUpdateMessage.pollCreationMessageKey; const pollMessage = (await this.getMessage(pollCreationKey, true)) as proto.IWebMessageInfo; const pollMessageSecret = (await this.getMessage(pollCreationKey)) as any; @@ -1213,7 +1213,7 @@ export class BaileysStartupService extends ChannelStartupService { (pollMessage.message as any).pollCreationMessage?.options || (pollMessage.message as any).pollCreationMessageV3?.options || []; - const pollVote = messageRaw.message.pollUpdateMessage.vote; + const pollVote = (messageRaw.message as any).pollUpdateMessage.vote; const voterJid = received.key.fromMe ? this.instance.wuid @@ -1293,14 +1293,14 @@ export class BaileysStartupService extends ChannelStartupService { }) .map((option) => option.optionName); - messageRaw.message.pollUpdateMessage.vote.selectedOptions = selectedOptionNames; + (messageRaw.message as any).pollUpdateMessage.vote.selectedOptions = selectedOptionNames; const pollUpdates = pollOptions.map((option) => ({ name: option.optionName, voters: selectedOptionNames.includes(option.optionName) ? [successfulVoterJid] : [], })); - messageRaw.pollUpdates = pollUpdates; + (messageRaw as any).pollUpdates = pollUpdates; } } @@ -1348,13 +1348,14 @@ export class BaileysStartupService extends ChannelStartupService { }); if (openAiDefaultSettings && openAiDefaultSettings.openaiCredsId && openAiDefaultSettings.speechToText) { - messageRaw.message.speechToText = `[audio] ${await this.openaiService.speechToText(received, this)}`; + (messageRaw.message as any).speechToText = + `[audio] ${await this.openaiService.speechToText(received, this)}`; } } if (this.configService.get('DATABASE').SAVE_DATA.NEW_MESSAGE) { // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { pollUpdates, ...messageData } = messageRaw; + const { pollUpdates, ...messageData } = messageRaw as any; const msg = await this.prismaRepository.message.create({ data: messageData }); const { remoteJid } = received.key; @@ -1430,7 +1431,7 @@ export class BaileysStartupService extends ChannelStartupService { const mediaUrl = await s3Service.getObjectUrl(fullName); - messageRaw.message.mediaUrl = mediaUrl; + (messageRaw.message as any).mediaUrl = mediaUrl; await this.prismaRepository.message.update({ where: { id: msg.id }, data: messageRaw }); } @@ -1452,7 +1453,7 @@ export class BaileysStartupService extends ChannelStartupService { ); if (buffer) { - messageRaw.message.base64 = buffer.toString('base64'); + (messageRaw.message as any).base64 = buffer.toString('base64'); } else { // retry to download media const buffer = await downloadMediaMessage( @@ -1463,7 +1464,7 @@ export class BaileysStartupService extends ChannelStartupService { ); if (buffer) { - messageRaw.message.base64 = buffer.toString('base64'); + (messageRaw.message as any).base64 = buffer.toString('base64'); } } } catch (error) { @@ -1475,8 +1476,8 @@ export class BaileysStartupService extends ChannelStartupService { this.logger.verbose(messageRaw); sendTelemetry(`received.message.${messageRaw.messageType ?? 'unknown'}`); - if (messageRaw.key.remoteJid?.includes('@lid') && messageRaw.key.remoteJidAlt) { - messageRaw.key.remoteJid = messageRaw.key.remoteJidAlt; + if ((messageRaw.key as any).remoteJid?.includes('@lid') && (messageRaw.key as any).remoteJidAlt) { + (messageRaw.key as any).remoteJid = (messageRaw.key as any).remoteJidAlt; } console.log(messageRaw); @@ -1484,7 +1485,7 @@ export class BaileysStartupService extends ChannelStartupService { await chatbotController.emit({ instance: { instanceName: this.instance.name, instanceId: this.instanceId }, - remoteJid: messageRaw.key.remoteJid, + remoteJid: (messageRaw.key as any).remoteJid, msg: messageRaw, pushName: messageRaw.pushName, }); @@ -1513,9 +1514,11 @@ export class BaileysStartupService extends ChannelStartupService { await saveOnWhatsappCache([ { remoteJid: - messageRaw.key.addressingMode === 'lid' ? messageRaw.key.remoteJidAlt : messageRaw.key.remoteJid, - remoteJidAlt: messageRaw.key.remoteJidAlt, - lid: messageRaw.key.addressingMode === 'lid' ? 'lid' : null, + (messageRaw.key as any).addressingMode === 'lid' + ? (messageRaw.key as any).remoteJidAlt + : (messageRaw.key as any).remoteJid, + remoteJidAlt: (messageRaw.key as any).remoteJidAlt, + lid: (messageRaw.key as any).addressingMode === 'lid' ? 'lid' : null, }, ]); } @@ -2427,7 +2430,7 @@ export class BaileysStartupService extends ChannelStartupService { messageSent.messageTimestamp = messageSent.messageTimestamp?.toNumber(); } - const messageRaw = this.prepareMessage(messageSent); + const messageRaw = this.prepareMessage(messageSent) as any; const isMedia = messageSent?.message?.imageMessage || @@ -2449,14 +2452,15 @@ export class BaileysStartupService extends ChannelStartupService { ); } - if (this.configService.get('OPENAI').ENABLED && messageRaw?.message?.audioMessage) { + if (this.configService.get('OPENAI').ENABLED && (messageRaw as any)?.message?.audioMessage) { const openAiDefaultSettings = await this.prismaRepository.openaiSetting.findFirst({ where: { instanceId: this.instanceId }, include: { OpenaiCreds: true }, }); if (openAiDefaultSettings && openAiDefaultSettings.openaiCredsId && openAiDefaultSettings.speechToText) { - messageRaw.message.speechToText = `[audio] ${await this.openaiService.speechToText(messageRaw, this)}`; + (messageRaw.message as any).speechToText = + `[audio] ${await this.openaiService.speechToText(messageRaw, this)}`; } } From f46699ef3f9cdaa3ddcb1f7b6a9f25bf91af5aee Mon Sep 17 00:00:00 2001 From: Vitordotpy Date: Mon, 15 Dec 2025 22:35:07 -0300 Subject: [PATCH 09/89] fix(baileys): cast messageRaw and its properties to any for type safety --- .../whatsapp/whatsapp.baileys.service.ts | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 84b9e7851d..33e5eca9c3 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -1564,12 +1564,11 @@ export class BaileysStartupService extends ChannelStartupService { const readChatToUpdate: Record = {}; // {remoteJid: true} for await (const { key, update } of args) { - // Normalize JIDs immediately to ensure consistent DB lookups const keyAny = key as any; - if (keyAny.remoteJid) keyAny.remoteJid = keyAny.remoteJid.replace(/:.*$/, ''); - if (keyAny.participant) keyAny.participant = keyAny.participant.replace(/:.*$/, ''); + const normalizedRemoteJid = keyAny.remoteJid?.replace(/:.*$/, ''); + const normalizedParticipant = keyAny.participant?.replace(/:.*$/, ''); - if (settings?.groupsIgnore && keyAny.remoteJid?.includes('@g.us')) { + if (settings?.groupsIgnore && normalizedRemoteJid?.includes('@g.us')) { continue; } @@ -1620,9 +1619,9 @@ export class BaileysStartupService extends ChannelStartupService { const message: any = { keyId: key.id, - remoteJid: keyAny?.remoteJid?.replace(/:.*$/, ''), + remoteJid: normalizedRemoteJid, fromMe: key.fromMe, - participant: keyAny?.participant?.replace(/:.*$/, ''), + participant: normalizedParticipant, status: status[update.status] ?? 'SERVER_ACK', pollUpdates, instanceId: this.instanceId, @@ -4679,12 +4678,20 @@ export class BaileysStartupService extends ChannelStartupService { remoteJid: keyAny.remoteJid?.replace(/:.*$/, ''), participant: keyAny.participant?.replace(/:.*$/, ''), }, - pushName: message.pushName, - message: message.message, + pushName: + message.pushName || + (message.key.fromMe + ? 'Você' + : message?.participant || (message.key?.participant ? message.key.participant.split('@')[0] : null)), + message: this.deserializeMessageBuffers({ ...message.message }), messageType: getContentType(message.message), - messageTimestamp: message.messageTimestamp, + messageTimestamp: Long.isLong(message.messageTimestamp) + ? message.messageTimestamp.toNumber() + : (message.messageTimestamp as number), source: getDevice(keyAny.id), instanceId: this.instanceId, + status: status[message.status], + contextInfo: this.deserializeMessageBuffers(message.message?.messageContextInfo), }; if (!messageRaw.status && message.key.fromMe === false) { From 52a8d9ea715505d454d46a837fa4ff439353b52e Mon Sep 17 00:00:00 2001 From: Vitordotpy Date: Tue, 16 Dec 2025 11:00:11 -0300 Subject: [PATCH 10/89] fix: normalize remoteJid in message updates and handle race condition in contact cache --- .../whatsapp/whatsapp.baileys.service.ts | 45 +++++++++++++++---- src/utils/onWhatsappCache.ts | 21 +++++++-- 2 files changed, 54 insertions(+), 12 deletions(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 33e5eca9c3..fc9b0b63d5 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -1565,8 +1565,15 @@ export class BaileysStartupService extends ChannelStartupService { for await (const { key, update } of args) { const keyAny = key as any; - const normalizedRemoteJid = keyAny.remoteJid?.replace(/:.*$/, ''); - const normalizedParticipant = keyAny.participant?.replace(/:.*$/, ''); + if (keyAny.remoteJid) { + keyAny.remoteJid = keyAny.remoteJid.replace(/:.*$/, ''); + } + if (keyAny.participant) { + keyAny.participant = keyAny.participant.replace(/:.*$/, ''); + } + + const normalizedRemoteJid = keyAny.remoteJid; + const normalizedParticipant = keyAny.participant; if (settings?.groupsIgnore && normalizedRemoteJid?.includes('@g.us')) { continue; @@ -1644,18 +1651,38 @@ export class BaileysStartupService extends ChannelStartupService { const searchId = originalMessageId || key.id; - const messages = (await this.prismaRepository.$queryRaw` - SELECT * FROM "Message" - WHERE "instanceId" = ${this.instanceId} - AND "key"->>'id' = ${searchId} - LIMIT 1 - `) as any[]; - findMessage = messages[0] || null; + let retries = 0; + const maxRetries = 3; + + while (retries < maxRetries) { + const messages = (await this.prismaRepository.$queryRaw` + SELECT * FROM "Message" + WHERE "instanceId" = ${this.instanceId} + AND "key"->>'id' = ${searchId} + LIMIT 1 + `) as any[]; + findMessage = messages[0] || null; + + if (findMessage?.id) { + break; + } + + retries++; + if (retries < maxRetries) { + await delay(2000); + } + } if (!findMessage?.id) { this.logger.warn(`Original message not found for update. Skipping. Key: ${JSON.stringify(key)}`); continue; } + if (findMessage?.key?.remoteJid && findMessage.key.remoteJid !== key.remoteJid) { + this.logger.verbose( + `Updating key.remoteJid from ${key.remoteJid} to ${findMessage.key.remoteJid} based on stored message`, + ); + key.remoteJid = findMessage.key.remoteJid; + } message.messageId = findMessage.id; } diff --git a/src/utils/onWhatsappCache.ts b/src/utils/onWhatsappCache.ts index 08de0714e2..50fa08c693 100644 --- a/src/utils/onWhatsappCache.ts +++ b/src/utils/onWhatsappCache.ts @@ -164,9 +164,24 @@ export async function saveOnWhatsappCache(data: ISaveOnWhatsappCacheParams[]) { logger.verbose( `[saveOnWhatsappCache] Register does not exist, creating: remoteJid=${remoteJid}, jidOptions=${dataPayload.jidOptions}, lid=${dataPayload.lid}`, ); - await prismaRepository.isOnWhatsapp.create({ - data: dataPayload, - }); + try { + await prismaRepository.isOnWhatsapp.create({ + data: dataPayload, + }); + } catch (error: any) { + // Check for unique constraint violation (Prisma error code P2002) + if (error.code === 'P2002' && error.meta?.target?.includes('remoteJid')) { + logger.verbose( + `[saveOnWhatsappCache] Race condition detected for ${remoteJid}, updating existing record instead.`, + ); + await prismaRepository.isOnWhatsapp.update({ + where: { remoteJid: remoteJid }, + data: dataPayload, + }); + } else { + throw error; + } + } } } catch (e) { // Loga o erro mas não para a execução dos outros promises From cb41e65e29ee549adb23c429f1132c3c559d2ed1 Mon Sep 17 00:00:00 2001 From: Vitordotpy Date: Tue, 16 Dec 2025 11:32:53 -0300 Subject: [PATCH 11/89] fix: enhance logging for missing original messages during updates --- .../integrations/channel/whatsapp/whatsapp.baileys.service.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index fc9b0b63d5..cc0acdf870 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -1674,7 +1674,9 @@ export class BaileysStartupService extends ChannelStartupService { } if (!findMessage?.id) { - this.logger.warn(`Original message not found for update. Skipping. Key: ${JSON.stringify(key)}`); + this.logger.verbose( + `Original message not found for update after ${maxRetries} retries. Skipping. This is expected for protocol messages or ephemeral events not saved to the database. Key: ${JSON.stringify(key)}`, + ); continue; } if (findMessage?.key?.remoteJid && findMessage.key.remoteJid !== key.remoteJid) { From bb831d590f3a605cb87dbdaa625de6ba0b3942c6 Mon Sep 17 00:00:00 2001 From: Vitordotpy Date: Tue, 16 Dec 2025 12:38:47 -0300 Subject: [PATCH 12/89] refactor: optimize retry loop and robustify cache error handling --- .../channel/whatsapp/whatsapp.baileys.service.ts | 10 +++++++++- src/utils/onWhatsappCache.ts | 7 ++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index cc0acdf870..52be633948 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -1653,6 +1653,7 @@ export class BaileysStartupService extends ChannelStartupService { let retries = 0; const maxRetries = 3; + const retryDelay = 500; // 500ms delay to avoid blocking for too long while (retries < maxRetries) { const messages = (await this.prismaRepository.$queryRaw` @@ -1669,7 +1670,7 @@ export class BaileysStartupService extends ChannelStartupService { retries++; if (retries < maxRetries) { - await delay(2000); + await delay(retryDelay); } } @@ -1679,6 +1680,13 @@ export class BaileysStartupService extends ChannelStartupService { ); continue; } + + // Sync the incoming key.remoteJid with the stored one. + // This mutation is safe and necessary because Baileys events might use LIDs while we store Phone JIDs (or vice versa). + // Normalizing ensuring downstream logic uses the identifier that exists in our database. + if (findMessage?.key?.remoteJid && key.remoteJid !== findMessage.key.remoteJid) { + key.remoteJid = findMessage.key.remoteJid; + } if (findMessage?.key?.remoteJid && findMessage.key.remoteJid !== key.remoteJid) { this.logger.verbose( `Updating key.remoteJid from ${key.remoteJid} to ${findMessage.key.remoteJid} based on stored message`, diff --git a/src/utils/onWhatsappCache.ts b/src/utils/onWhatsappCache.ts index 50fa08c693..8d7a2c16a7 100644 --- a/src/utils/onWhatsappCache.ts +++ b/src/utils/onWhatsappCache.ts @@ -1,6 +1,7 @@ import { prismaRepository } from '@api/server.module'; import { configService, Database } from '@config/env.config'; import { Logger } from '@config/logger.config'; +import { Prisma } from '@prisma/client'; import dayjs from 'dayjs'; const logger = new Logger('OnWhatsappCache'); @@ -170,7 +171,11 @@ export async function saveOnWhatsappCache(data: ISaveOnWhatsappCacheParams[]) { }); } catch (error: any) { // Check for unique constraint violation (Prisma error code P2002) - if (error.code === 'P2002' && error.meta?.target?.includes('remoteJid')) { + if ( + error instanceof Prisma.PrismaClientKnownRequestError && + error.code === 'P2002' && + (error.meta?.target as string[])?.includes('remoteJid') + ) { logger.verbose( `[saveOnWhatsappCache] Race condition detected for ${remoteJid}, updating existing record instead.`, ); From 933a28de261f04c80b8cf2e58d9e5c666258dd36 Mon Sep 17 00:00:00 2001 From: Davidson Gomes Date: Tue, 16 Dec 2025 14:18:05 -0300 Subject: [PATCH 13/89] feat(baileys): enhance logout process and connection handling - Introduced a flag to prevent reconnection during instance deletion. - Improved logging for connection updates and errors during logout. - Added a delay before reconnection attempts to avoid rapid loops. - Enhanced webhook headers for better tracking and debugging. - Updated configuration to support manual Baileys version setting. --- .../whatsapp/whatsapp.baileys.service.ts | 64 +++++++++++++++++-- .../event/webhook/webhook.controller.ts | 13 +++- src/config/env.config.ts | 5 ++ src/utils/fetchLatestWaWebVersion.ts | 17 +++++ 4 files changed, 91 insertions(+), 8 deletions(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index b75e31a8ad..3b612d98a5 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -249,6 +249,7 @@ export class BaileysStartupService extends ChannelStartupService { private readonly msgRetryCounterCache: CacheStore = new NodeCache(); private readonly userDevicesCache: CacheStore = new NodeCache({ stdTTL: 300000, useClones: false }); private endSession = false; + private isDeleting = false; // Flag to prevent reconnection during deletion private logBaileys = this.configService.get('LOG').BAILEYS; private eventProcessingQueue: Promise = Promise.resolve(); @@ -265,10 +266,27 @@ export class BaileysStartupService extends ChannelStartupService { } public async logoutInstance() { + // Mark instance as deleting to prevent reconnection attempts + this.isDeleting = true; + this.endSession = true; + this.messageProcessor.onDestroy(); - await this.client?.logout('Log out instance: ' + this.instanceName); - this.client?.ws?.close(); + if (this.client) { + try { + await this.client.logout('Log out instance: ' + this.instanceName); + } catch (error) { + this.logger.error({ message: 'Error during logout', error }); + } + + // Improved socket cleanup + try { + this.client.ws?.close(); + this.client.end(new Error('Instance logout')); + } catch (error) { + this.logger.error({ message: 'Error during socket cleanup', error }); + } + } const db = this.configService.get('DATABASE'); const cache = this.configService.get('CACHE'); @@ -332,6 +350,18 @@ export class BaileysStartupService extends ChannelStartupService { } private async connectionUpdate({ qr, connection, lastDisconnect }: Partial) { + // Enhanced logging for connection updates + const statusCode = (lastDisconnect?.error as Boom)?.output?.statusCode; + this.logger.info({ + message: 'Connection update received', + connection, + hasQr: !!qr, + statusCode, + instanceName: this.instance.name, + isDeleting: this.isDeleting, + endSession: this.endSession, + }); + if (qr) { if (this.instance.qrcode.count === this.configService.get('QRCODE').LIMIT) { this.sendDataWebhook(Events.QRCODE_UPDATED, { @@ -424,11 +454,29 @@ export class BaileysStartupService extends ChannelStartupService { } if (connection === 'close') { + // Check if instance is being deleted or session is ending + if (this.isDeleting || this.endSession) { + this.logger.info('Instance is being deleted/ended, skipping reconnection attempt'); + return; + } + const statusCode = (lastDisconnect?.error as Boom)?.output?.statusCode; const codesToNotReconnect = [DisconnectReason.loggedOut, DisconnectReason.forbidden, 402, 406]; const shouldReconnect = !codesToNotReconnect.includes(statusCode); + + this.logger.info({ + message: 'Connection closed, evaluating reconnection', + statusCode, + shouldReconnect, + instanceName: this.instance.name, + }); + if (shouldReconnect) { - await this.connectToWhatsapp(this.phoneNumber); + // Add 3 second delay before reconnection to prevent rapid reconnection loops + this.logger.info('Reconnecting in 3 seconds...'); + setTimeout(async () => { + await this.connectToWhatsapp(this.phoneNumber); + }, 3000); } else { this.sendDataWebhook(Events.STATUS_INSTANCE, { instance: this.instance.name, @@ -591,10 +639,11 @@ export class BaileysStartupService extends ChannelStartupService { this.logger.info(`Browser: ${browser}`); } + // Fetch latest WhatsApp Web version automatically const baileysVersion = await fetchLatestWaWebVersion({}); const version = baileysVersion.version; - const log = `Baileys version: ${version.join('.')}`; + const log = `Baileys version: ${version.join('.')}`; this.logger.info(log); this.logger.info(`Group Ignore: ${this.localSettings.groupsIgnore}`); @@ -602,7 +651,7 @@ export class BaileysStartupService extends ChannelStartupService { let options; if (this.localProxy?.enabled) { - this.logger.info('Proxy enabled: ' + this.localProxy?.host); + this.logger.verbose('Proxy enabled'); if (this.localProxy?.host?.includes('proxyscrape')) { try { @@ -611,9 +660,10 @@ export class BaileysStartupService extends ChannelStartupService { const proxyUrls = text.split('\r\n'); const rand = Math.floor(Math.random() * Math.floor(proxyUrls.length)); const proxyUrl = 'http://' + proxyUrls[rand]; + this.logger.info('Proxy url: ' + proxyUrl); options = { agent: makeProxyAgent(proxyUrl), fetchAgent: makeProxyAgentUndici(proxyUrl) }; - } catch { - this.localProxy.enabled = false; + } catch (error) { + this.logger.error(error); } } else { options = { diff --git a/src/api/integrations/event/webhook/webhook.controller.ts b/src/api/integrations/event/webhook/webhook.controller.ts index 7f1dd8dc0e..5357554f99 100644 --- a/src/api/integrations/event/webhook/webhook.controller.ts +++ b/src/api/integrations/event/webhook/webhook.controller.ts @@ -124,9 +124,20 @@ export class WebhookController extends EventController implements EventControlle try { if (instance?.enabled && regex.test(instance.url)) { + // Add custom headers for better webhook tracking and debugging + const enhancedHeaders = { + ...webhookHeaders, + 'Content-Type': 'application/json', + 'X-Instance-ID': this.monitor.waInstances[instanceName].instanceId, + 'X-Instance-Name': instanceName, + 'X-Event-Type': event, + 'X-Timestamp': Date.now().toString(), + 'User-Agent': 'EvolutionAPI-Webhook/2.3.7', + }; + const httpService = axios.create({ baseURL, - headers: webhookHeaders as Record | undefined, + headers: enhancedHeaders as Record, timeout: webhookConfig.REQUEST?.TIMEOUT_MS ?? 30000, }); diff --git a/src/config/env.config.ts b/src/config/env.config.ts index 7c4e382e7e..199ffb3806 100644 --- a/src/config/env.config.ts +++ b/src/config/env.config.ts @@ -313,6 +313,7 @@ export type Webhook = { }; export type Pusher = { ENABLED: boolean; GLOBAL?: GlobalPusher; EVENTS: EventsPusher }; export type ConfigSessionPhone = { CLIENT: string; NAME: string }; +export type Baileys = { VERSION?: string }; export type QrCode = { LIMIT: number; COLOR: string }; export type Typebot = { ENABLED: boolean; API_VERSION: string; SEND_MEDIA_BASE64: boolean }; export type Chatwoot = { @@ -410,6 +411,7 @@ export interface Env { WEBHOOK: Webhook; PUSHER: Pusher; CONFIG_SESSION_PHONE: ConfigSessionPhone; + BAILEYS: Baileys; QRCODE: QrCode; TYPEBOT: Typebot; CHATWOOT: Chatwoot; @@ -800,6 +802,9 @@ export class ConfigService { CLIENT: process.env?.CONFIG_SESSION_PHONE_CLIENT || 'Evolution API', NAME: process.env?.CONFIG_SESSION_PHONE_NAME || 'Chrome', }, + BAILEYS: { + VERSION: process.env?.CONFIG_BAILEYS_VERSION, + }, QRCODE: { LIMIT: Number.parseInt(process.env.QRCODE_LIMIT) || 30, COLOR: process.env.QRCODE_COLOR || '#198754', diff --git a/src/utils/fetchLatestWaWebVersion.ts b/src/utils/fetchLatestWaWebVersion.ts index 6dcfb797e5..f6b0aa6d61 100644 --- a/src/utils/fetchLatestWaWebVersion.ts +++ b/src/utils/fetchLatestWaWebVersion.ts @@ -1,7 +1,24 @@ import axios, { AxiosRequestConfig } from 'axios'; import { fetchLatestBaileysVersion, WAVersion } from 'baileys'; +import { Baileys, configService } from '../config/env.config'; + export const fetchLatestWaWebVersion = async (options: AxiosRequestConfig<{}>) => { + // Check if manual version is set via configuration + const baileysConfig = configService.get('BAILEYS'); + const manualVersion = baileysConfig?.VERSION; + + if (manualVersion) { + const versionParts = manualVersion.split('.').map(Number); + if (versionParts.length === 3 && !versionParts.some(isNaN)) { + return { + version: versionParts as WAVersion, + isLatest: false, + isManual: true, + }; + } + } + try { const { data } = await axios.get('https://web.whatsapp.com/sw.js', { ...options, From 6efa87908159ba8eebca9d25d0fa6495dfe5cb5f Mon Sep 17 00:00:00 2001 From: Davidson Gomes Date: Tue, 16 Dec 2025 14:32:26 -0300 Subject: [PATCH 14/89] chore: increase token length in Instance model across MySQL, PostgreSQL, and PSQL Bouncer schemas --- .../20251216143054_increase_token_length/migration.sql | 3 +++ prisma/mysql-schema.prisma | 2 +- .../20251216143054_increase_token_length/migration.sql | 3 +++ prisma/postgresql-schema.prisma | 2 +- prisma/psql_bouncer-schema.prisma | 2 +- 5 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 prisma/mysql-migrations/20251216143054_increase_token_length/migration.sql create mode 100644 prisma/postgresql-migrations/20251216143054_increase_token_length/migration.sql diff --git a/prisma/mysql-migrations/20251216143054_increase_token_length/migration.sql b/prisma/mysql-migrations/20251216143054_increase_token_length/migration.sql new file mode 100644 index 0000000000..7c7d06dced --- /dev/null +++ b/prisma/mysql-migrations/20251216143054_increase_token_length/migration.sql @@ -0,0 +1,3 @@ +-- AlterTable +ALTER TABLE `Instance` MODIFY `token` VARCHAR(500); + diff --git a/prisma/mysql-schema.prisma b/prisma/mysql-schema.prisma index 71b5a743f0..58a7964815 100644 --- a/prisma/mysql-schema.prisma +++ b/prisma/mysql-schema.prisma @@ -70,7 +70,7 @@ model Instance { integration String? @db.VarChar(100) number String? @db.VarChar(100) businessId String? @db.VarChar(100) - token String? @db.VarChar(255) + token String? @db.VarChar(500) clientName String? @db.VarChar(100) disconnectionReasonCode Int? @db.Int disconnectionObject Json? @db.Json diff --git a/prisma/postgresql-migrations/20251216143054_increase_token_length/migration.sql b/prisma/postgresql-migrations/20251216143054_increase_token_length/migration.sql new file mode 100644 index 0000000000..dc6c699de0 --- /dev/null +++ b/prisma/postgresql-migrations/20251216143054_increase_token_length/migration.sql @@ -0,0 +1,3 @@ +-- AlterTable +ALTER TABLE "Instance" ALTER COLUMN "token" TYPE VARCHAR(500); + diff --git a/prisma/postgresql-schema.prisma b/prisma/postgresql-schema.prisma index 6b98f88da4..51b3c97c82 100644 --- a/prisma/postgresql-schema.prisma +++ b/prisma/postgresql-schema.prisma @@ -70,7 +70,7 @@ model Instance { integration String? @db.VarChar(100) number String? @db.VarChar(100) businessId String? @db.VarChar(100) - token String? @db.VarChar(255) + token String? @db.VarChar(500) clientName String? @db.VarChar(100) disconnectionReasonCode Int? @db.Integer disconnectionObject Json? @db.JsonB diff --git a/prisma/psql_bouncer-schema.prisma b/prisma/psql_bouncer-schema.prisma index a3f4dbe902..52e9eb7844 100644 --- a/prisma/psql_bouncer-schema.prisma +++ b/prisma/psql_bouncer-schema.prisma @@ -71,7 +71,7 @@ model Instance { integration String? @db.VarChar(100) number String? @db.VarChar(100) businessId String? @db.VarChar(100) - token String? @db.VarChar(255) + token String? @db.VarChar(500) clientName String? @db.VarChar(100) disconnectionReasonCode Int? @db.Integer disconnectionObject Json? @db.JsonB From d6262ca4f4f41200c53cd7b1aad2ba53b5c83067 Mon Sep 17 00:00:00 2001 From: augustolima1 <62573696+augustolima1@users.noreply.github.com> Date: Tue, 23 Dec 2025 00:47:00 -0300 Subject: [PATCH 15/89] fix(mysql): compatibilidade da coluna lid e queries RAW --- .../migration.sql | 3 +- prisma/mysql-schema.prisma | 1 + .../whatsapp/whatsapp.baileys.service.ts | 240 +++++++++++++----- .../chatwoot/services/chatwoot.service.ts | 73 ++++-- src/api/services/channel.service.ts | 170 +++++++++---- 5 files changed, 343 insertions(+), 144 deletions(-) diff --git a/prisma/mysql-migrations/20250918183910_add_kafka_integration/migration.sql b/prisma/mysql-migrations/20250918183910_add_kafka_integration/migration.sql index c3a089bd04..7db06e1ae6 100644 --- a/prisma/mysql-migrations/20250918183910_add_kafka_integration/migration.sql +++ b/prisma/mysql-migrations/20250918183910_add_kafka_integration/migration.sql @@ -131,8 +131,7 @@ ALTER TABLE `IntegrationSession` MODIFY `createdAt` TIMESTAMP NULL DEFAULT CURRE MODIFY `updatedAt` TIMESTAMP NOT NULL; -- AlterTable -ALTER TABLE `IsOnWhatsapp` DROP COLUMN `lid`, - MODIFY `createdAt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, +ALTER TABLE `IsOnWhatsapp` MODIFY `createdAt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, MODIFY `updatedAt` TIMESTAMP NOT NULL; -- AlterTable diff --git a/prisma/mysql-schema.prisma b/prisma/mysql-schema.prisma index 71b5a743f0..63ef9377d9 100644 --- a/prisma/mysql-schema.prisma +++ b/prisma/mysql-schema.prisma @@ -655,6 +655,7 @@ model IsOnWhatsapp { id String @id @default(cuid()) remoteJid String @unique @db.VarChar(100) jidOptions String + lid String? @db.VarChar(100) createdAt DateTime @default(dbgenerated("CURRENT_TIMESTAMP")) @db.Timestamp updatedAt DateTime @updatedAt @db.Timestamp } diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 60e857fcc1..089d4ca7bf 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -522,12 +522,27 @@ export class BaileysStartupService extends ChannelStartupService { private async getMessage(key: proto.IMessageKey, full = false) { try { - // Use raw SQL to avoid JSON path issues - const webMessageInfo = (await this.prismaRepository.$queryRaw` - SELECT * FROM "Message" - WHERE "instanceId" = ${this.instanceId} - AND "key"->>'id' = ${key.id} - `) as proto.IWebMessageInfo[]; + const provider = this.configService.get('DATABASE').PROVIDER; + + let webMessageInfo: proto.IWebMessageInfo[]; + + if (provider === 'mysql') { + // MySQL version + webMessageInfo = (await this.prismaRepository.$queryRaw` + SELECT * FROM Message + WHERE instanceId = ${this.instanceId} + AND JSON_UNQUOTE(JSON_EXTRACT(\`key\`, '$.id')) = ${key.id} + LIMIT 1 + `) as proto.IWebMessageInfo[]; + } else { + // PostgreSQL version + webMessageInfo = (await this.prismaRepository.$queryRaw` + SELECT * FROM "Message" + WHERE "instanceId" = ${this.instanceId} + AND "key"->>'id' = ${key.id} + LIMIT 1 + `) as proto.IWebMessageInfo[]; + } if (full) { return webMessageInfo[0]; @@ -1636,13 +1651,24 @@ export class BaileysStartupService extends ChannelStartupService { } const searchId = originalMessageId || key.id; - - const messages = (await this.prismaRepository.$queryRaw` - SELECT * FROM "Message" - WHERE "instanceId" = ${this.instanceId} - AND "key"->>'id' = ${searchId} - LIMIT 1 - `) as any[]; + const dbProvider = this.configService.get('DATABASE').PROVIDER; + + let messages: any[]; + if (dbProvider === 'mysql') { + messages = (await this.prismaRepository.$queryRaw` + SELECT * FROM Message + WHERE instanceId = ${this.instanceId} + AND JSON_UNQUOTE(JSON_EXTRACT(\`key\`, '$.id')) = ${searchId} + LIMIT 1 + `) as any[]; + } else { + messages = (await this.prismaRepository.$queryRaw` + SELECT * FROM "Message" + WHERE "instanceId" = ${this.instanceId} + AND "key"->>'id' = ${searchId} + LIMIT 1 + `) as any[]; + } findMessage = messages[0] || null; if (!findMessage?.id) { @@ -4734,16 +4760,32 @@ export class BaileysStartupService extends ChannelStartupService { private async updateMessagesReadedByTimestamp(remoteJid: string, timestamp?: number): Promise { if (timestamp === undefined || timestamp === null) return 0; - // Use raw SQL to avoid JSON path issues - const result = await this.prismaRepository.$executeRaw` - UPDATE "Message" - SET "status" = ${status[4]} - WHERE "instanceId" = ${this.instanceId} - AND "key"->>'remoteJid' = ${remoteJid} - AND ("key"->>'fromMe')::boolean = false - AND "messageTimestamp" <= ${timestamp} - AND ("status" IS NULL OR "status" = ${status[3]}) - `; + const provider = this.configService.get('DATABASE').PROVIDER; + let result: number; + + if (provider === 'mysql') { + // MySQL version + result = await this.prismaRepository.$executeRaw` + UPDATE Message + SET status = ${status[4]} + WHERE instanceId = ${this.instanceId} + AND JSON_UNQUOTE(JSON_EXTRACT(\`key\`, '$.remoteJid')) = ${remoteJid} + AND JSON_UNQUOTE(JSON_EXTRACT(\`key\`, '$.fromMe')) = 'false' + AND messageTimestamp <= ${timestamp} + AND (status IS NULL OR status = ${status[3]}) + `; + } else { + // PostgreSQL version + result = await this.prismaRepository.$executeRaw` + UPDATE "Message" + SET "status" = ${status[4]} + WHERE "instanceId" = ${this.instanceId} + AND "key"->>'remoteJid' = ${remoteJid} + AND ("key"->>'fromMe')::boolean = false + AND "messageTimestamp" <= ${timestamp} + AND ("status" IS NULL OR "status" = ${status[3]}) + `; + } if (result) { if (result > 0) { @@ -4757,16 +4799,33 @@ export class BaileysStartupService extends ChannelStartupService { } private async updateChatUnreadMessages(remoteJid: string): Promise { - const [chat, unreadMessages] = await Promise.all([ - this.prismaRepository.chat.findFirst({ where: { remoteJid } }), - // Use raw SQL to avoid JSON path issues - this.prismaRepository.$queryRaw` + const provider = this.configService.get('DATABASE').PROVIDER; + + let unreadMessagesPromise: Promise; + + if (provider === 'mysql') { + // MySQL version + unreadMessagesPromise = this.prismaRepository.$queryRaw` + SELECT COUNT(*) as count FROM Message + WHERE instanceId = ${this.instanceId} + AND JSON_UNQUOTE(JSON_EXTRACT(\`key\`, '$.remoteJid')) = ${remoteJid} + AND JSON_UNQUOTE(JSON_EXTRACT(\`key\`, '$.fromMe')) = 'false' + AND status = ${status[3]} + `.then((result: any[]) => Number(result[0]?.count) || 0); + } else { + // PostgreSQL version + unreadMessagesPromise = this.prismaRepository.$queryRaw` SELECT COUNT(*)::int as count FROM "Message" WHERE "instanceId" = ${this.instanceId} AND "key"->>'remoteJid' = ${remoteJid} AND ("key"->>'fromMe')::boolean = false AND "status" = ${status[3]} - `.then((result: any[]) => result[0]?.count || 0), + `.then((result: any[]) => result[0]?.count || 0); + } + + const [chat, unreadMessages] = await Promise.all([ + this.prismaRepository.chat.findFirst({ where: { remoteJid } }), + unreadMessagesPromise, ]); if (chat && chat.unreadMessages !== unreadMessages) { @@ -4778,50 +4837,95 @@ export class BaileysStartupService extends ChannelStartupService { private async addLabel(labelId: string, instanceId: string, chatId: string) { const id = cuid(); - - await this.prismaRepository.$executeRawUnsafe( - `INSERT INTO "Chat" ("id", "instanceId", "remoteJid", "labels", "createdAt", "updatedAt") - VALUES ($4, $2, $3, to_jsonb(ARRAY[$1]::text[]), NOW(), NOW()) ON CONFLICT ("instanceId", "remoteJid") - DO - UPDATE - SET "labels" = ( - SELECT to_jsonb(array_agg(DISTINCT elem)) - FROM ( - SELECT jsonb_array_elements_text("Chat"."labels") AS elem - UNION - SELECT $1::text AS elem - ) sub - ), - "updatedAt" = NOW();`, - labelId, - instanceId, - chatId, - id, - ); + const provider = this.configService.get('DATABASE').PROVIDER; + + if (provider === 'mysql') { + // MySQL version - use INSERT ... ON DUPLICATE KEY UPDATE + await this.prismaRepository.$executeRawUnsafe( + `INSERT INTO Chat (id, instanceId, remoteJid, labels, createdAt, updatedAt) + VALUES (?, ?, ?, JSON_ARRAY(?), NOW(), NOW()) + ON DUPLICATE KEY UPDATE + labels = JSON_ARRAY_APPEND( + COALESCE(labels, JSON_ARRAY()), + '$', + ? + ), + updatedAt = NOW()`, + id, + instanceId, + chatId, + labelId, + labelId, + ); + } else { + // PostgreSQL version + await this.prismaRepository.$executeRawUnsafe( + `INSERT INTO "Chat" ("id", "instanceId", "remoteJid", "labels", "createdAt", "updatedAt") + VALUES ($4, $2, $3, to_jsonb(ARRAY[$1]::text[]), NOW(), NOW()) ON CONFLICT ("instanceId", "remoteJid") + DO + UPDATE + SET "labels" = ( + SELECT to_jsonb(array_agg(DISTINCT elem)) + FROM ( + SELECT jsonb_array_elements_text("Chat"."labels") AS elem + UNION + SELECT $1::text AS elem + ) sub + ), + "updatedAt" = NOW();`, + labelId, + instanceId, + chatId, + id, + ); + } } private async removeLabel(labelId: string, instanceId: string, chatId: string) { const id = cuid(); - - await this.prismaRepository.$executeRawUnsafe( - `INSERT INTO "Chat" ("id", "instanceId", "remoteJid", "labels", "createdAt", "updatedAt") - VALUES ($4, $2, $3, '[]'::jsonb, NOW(), NOW()) ON CONFLICT ("instanceId", "remoteJid") - DO - UPDATE - SET "labels" = COALESCE ( - ( - SELECT jsonb_agg(elem) - FROM jsonb_array_elements_text("Chat"."labels") AS elem - WHERE elem <> $1 - ), - '[]'::jsonb - ), - "updatedAt" = NOW();`, - labelId, - instanceId, - chatId, - id, - ); + const provider = this.configService.get('DATABASE').PROVIDER; + + if (provider === 'mysql') { + // MySQL version - use INSERT ... ON DUPLICATE KEY UPDATE + await this.prismaRepository.$executeRawUnsafe( + `INSERT INTO Chat (id, instanceId, remoteJid, labels, createdAt, updatedAt) + VALUES (?, ?, ?, JSON_ARRAY(), NOW(), NOW()) + ON DUPLICATE KEY UPDATE + labels = COALESCE( + JSON_REMOVE( + labels, + JSON_UNQUOTE(JSON_SEARCH(labels, 'one', ?)) + ), + JSON_ARRAY() + ), + updatedAt = NOW()`, + id, + instanceId, + chatId, + labelId, + ); + } else { + // PostgreSQL version + await this.prismaRepository.$executeRawUnsafe( + `INSERT INTO "Chat" ("id", "instanceId", "remoteJid", "labels", "createdAt", "updatedAt") + VALUES ($4, $2, $3, '[]'::jsonb, NOW(), NOW()) ON CONFLICT ("instanceId", "remoteJid") + DO + UPDATE + SET "labels" = COALESCE ( + ( + SELECT jsonb_agg(elem) + FROM jsonb_array_elements_text("Chat"."labels") AS elem + WHERE elem <> $1 + ), + '[]'::jsonb + ), + "updatedAt" = NOW();`, + labelId, + instanceId, + chatId, + id, + ); + } } public async baileysOnWhatsapp(jid: string) { diff --git a/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts b/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts index 906fff1881..d15b198048 100644 --- a/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts +++ b/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts @@ -1617,18 +1617,36 @@ export class ChatwootService { return; } - // Use raw SQL to avoid JSON path issues - const result = await this.prismaRepository.$executeRaw` - UPDATE "Message" - SET - "chatwootMessageId" = ${chatwootMessageIds.messageId}, - "chatwootConversationId" = ${chatwootMessageIds.conversationId}, - "chatwootInboxId" = ${chatwootMessageIds.inboxId}, - "chatwootContactInboxSourceId" = ${chatwootMessageIds.contactInboxSourceId}, - "chatwootIsRead" = ${chatwootMessageIds.isRead || false} - WHERE "instanceId" = ${instance.instanceId} - AND "key"->>'id' = ${key.id} - `; + const provider = this.configService.get('DATABASE').PROVIDER; + let result: number; + + if (provider === 'mysql') { + // MySQL version + result = await this.prismaRepository.$executeRaw` + UPDATE Message + SET + chatwootMessageId = ${chatwootMessageIds.messageId}, + chatwootConversationId = ${chatwootMessageIds.conversationId}, + chatwootInboxId = ${chatwootMessageIds.inboxId}, + chatwootContactInboxSourceId = ${chatwootMessageIds.contactInboxSourceId}, + chatwootIsRead = ${chatwootMessageIds.isRead || false} + WHERE instanceId = ${instance.instanceId} + AND JSON_UNQUOTE(JSON_EXTRACT(\`key\`, '$.id')) = ${key.id} + `; + } else { + // PostgreSQL version + result = await this.prismaRepository.$executeRaw` + UPDATE "Message" + SET + "chatwootMessageId" = ${chatwootMessageIds.messageId}, + "chatwootConversationId" = ${chatwootMessageIds.conversationId}, + "chatwootInboxId" = ${chatwootMessageIds.inboxId}, + "chatwootContactInboxSourceId" = ${chatwootMessageIds.contactInboxSourceId}, + "chatwootIsRead" = ${chatwootMessageIds.isRead || false} + WHERE "instanceId" = ${instance.instanceId} + AND "key"->>'id' = ${key.id} + `; + } this.logger.verbose(`Update result: ${result} rows affected`); @@ -1642,15 +1660,28 @@ export class ChatwootService { } private async getMessageByKeyId(instance: InstanceDto, keyId: string): Promise { - // Use raw SQL query to avoid JSON path issues with Prisma - const messages = await this.prismaRepository.$queryRaw` - SELECT * FROM "Message" - WHERE "instanceId" = ${instance.instanceId} - AND "key"->>'id' = ${keyId} - LIMIT 1 - `; - - return (messages as MessageModel[])[0] || null; + const provider = this.configService.get('DATABASE').PROVIDER; + let messages: MessageModel[]; + + if (provider === 'mysql') { + // MySQL version + messages = await this.prismaRepository.$queryRaw` + SELECT * FROM Message + WHERE instanceId = ${instance.instanceId} + AND JSON_UNQUOTE(JSON_EXTRACT(\`key\`, '$.id')) = ${keyId} + LIMIT 1 + `; + } else { + // PostgreSQL version + messages = await this.prismaRepository.$queryRaw` + SELECT * FROM "Message" + WHERE "instanceId" = ${instance.instanceId} + AND "key"->>'id' = ${keyId} + LIMIT 1 + `; + } + + return messages[0] || null; } private async getReplyToIds( diff --git a/src/api/services/channel.service.ts b/src/api/services/channel.service.ts index 56bec08021..2d7ec8c607 100644 --- a/src/api/services/channel.service.ts +++ b/src/api/services/channel.service.ts @@ -9,7 +9,7 @@ import { TypebotService } from '@api/integrations/chatbot/typebot/services/typeb import { PrismaRepository, Query } from '@api/repository/repository.service'; import { eventManager, waMonitor } from '@api/server.module'; import { Events, wa } from '@api/types/wa.types'; -import { Auth, Chatwoot, ConfigService, HttpServer, Proxy } from '@config/env.config'; +import { Auth, Chatwoot, ConfigService, Database, HttpServer, Proxy } from '@config/env.config'; import { Logger } from '@config/logger.config'; import { NotFoundException } from '@exceptions'; import { Contact, Message, Prisma } from '@prisma/client'; @@ -731,63 +731,127 @@ export class ChannelStartupService { where['remoteJid'] = remoteJid; } - const timestampFilter = - query?.where?.messageTimestamp?.gte && query?.where?.messageTimestamp?.lte - ? Prisma.sql` - AND "Message"."messageTimestamp" >= ${Math.floor(new Date(query.where.messageTimestamp.gte).getTime() / 1000)} - AND "Message"."messageTimestamp" <= ${Math.floor(new Date(query.where.messageTimestamp.lte).getTime() / 1000)}` - : Prisma.sql``; - + const provider = this.configService.get('DATABASE').PROVIDER; const limit = query?.take ? Prisma.sql`LIMIT ${query.take}` : Prisma.sql``; const offset = query?.skip ? Prisma.sql`OFFSET ${query.skip}` : Prisma.sql``; - const results = await this.prismaRepository.$queryRaw` - WITH rankedMessages AS ( - SELECT DISTINCT ON ("Message"."key"->>'remoteJid') - "Contact"."id" as "contactId", - "Message"."key"->>'remoteJid' as "remoteJid", - CASE - WHEN "Message"."key"->>'remoteJid' LIKE '%@g.us' THEN COALESCE("Chat"."name", "Contact"."pushName") - ELSE COALESCE("Contact"."pushName", "Message"."pushName") - END as "pushName", - "Contact"."profilePicUrl", + let results: any[]; + + if (provider === 'mysql') { + // MySQL version + const timestampFilterMysql = + query?.where?.messageTimestamp?.gte && query?.where?.messageTimestamp?.lte + ? Prisma.sql` + AND Message.messageTimestamp >= ${Math.floor(new Date(query.where.messageTimestamp.gte).getTime() / 1000)} + AND Message.messageTimestamp <= ${Math.floor(new Date(query.where.messageTimestamp.lte).getTime() / 1000)}` + : Prisma.sql``; + + results = await this.prismaRepository.$queryRaw` + SELECT + Contact.id as contactId, + JSON_UNQUOTE(JSON_EXTRACT(Message.key, '$.remoteJid')) as remoteJid, + CASE + WHEN JSON_UNQUOTE(JSON_EXTRACT(Message.key, '$.remoteJid')) LIKE '%@g.us' THEN COALESCE(Chat.name, Contact.pushName) + ELSE COALESCE(Contact.pushName, Message.pushName) + END as pushName, + Contact.profilePicUrl, COALESCE( - to_timestamp("Message"."messageTimestamp"::double precision), - "Contact"."updatedAt" - ) as "updatedAt", - "Chat"."name" as "pushName", - "Chat"."createdAt" as "windowStart", - "Chat"."createdAt" + INTERVAL '24 hours' as "windowExpires", - "Chat"."unreadMessages" as "unreadMessages", - CASE WHEN "Chat"."createdAt" + INTERVAL '24 hours' > NOW() THEN true ELSE false END as "windowActive", - "Message"."id" AS "lastMessageId", - "Message"."key" AS "lastMessage_key", + FROM_UNIXTIME(Message.messageTimestamp), + Contact.updatedAt + ) as updatedAt, + Chat.name as chatName, + Chat.createdAt as windowStart, + DATE_ADD(Chat.createdAt, INTERVAL 24 HOUR) as windowExpires, + Chat.unreadMessages as unreadMessages, + CASE WHEN DATE_ADD(Chat.createdAt, INTERVAL 24 HOUR) > NOW() THEN 1 ELSE 0 END as windowActive, + Message.id AS lastMessageId, + Message.key AS lastMessage_key, CASE - WHEN "Message"."key"->>'fromMe' = 'true' THEN 'Você' - ELSE "Message"."pushName" - END AS "lastMessagePushName", - "Message"."participant" AS "lastMessageParticipant", - "Message"."messageType" AS "lastMessageMessageType", - "Message"."message" AS "lastMessageMessage", - "Message"."contextInfo" AS "lastMessageContextInfo", - "Message"."source" AS "lastMessageSource", - "Message"."messageTimestamp" AS "lastMessageMessageTimestamp", - "Message"."instanceId" AS "lastMessageInstanceId", - "Message"."sessionId" AS "lastMessageSessionId", - "Message"."status" AS "lastMessageStatus" - FROM "Message" - LEFT JOIN "Contact" ON "Contact"."remoteJid" = "Message"."key"->>'remoteJid' AND "Contact"."instanceId" = "Message"."instanceId" - LEFT JOIN "Chat" ON "Chat"."remoteJid" = "Message"."key"->>'remoteJid' AND "Chat"."instanceId" = "Message"."instanceId" - WHERE "Message"."instanceId" = ${this.instanceId} - ${remoteJid ? Prisma.sql`AND "Message"."key"->>'remoteJid' = ${remoteJid}` : Prisma.sql``} - ${timestampFilter} - ORDER BY "Message"."key"->>'remoteJid', "Message"."messageTimestamp" DESC - ) - SELECT * FROM rankedMessages - ORDER BY "updatedAt" DESC NULLS LAST - ${limit} - ${offset}; - `; + WHEN JSON_UNQUOTE(JSON_EXTRACT(Message.key, '$.fromMe')) = 'true' THEN 'Você' + ELSE Message.pushName + END AS lastMessagePushName, + Message.participant AS lastMessageParticipant, + Message.messageType AS lastMessageMessageType, + Message.message AS lastMessageMessage, + Message.contextInfo AS lastMessageContextInfo, + Message.source AS lastMessageSource, + Message.messageTimestamp AS lastMessageMessageTimestamp, + Message.instanceId AS lastMessageInstanceId, + Message.sessionId AS lastMessageSessionId, + Message.status AS lastMessageStatus + FROM Message + LEFT JOIN Contact ON Contact.remoteJid = JSON_UNQUOTE(JSON_EXTRACT(Message.key, '$.remoteJid')) AND Contact.instanceId = Message.instanceId + LEFT JOIN Chat ON Chat.remoteJid = JSON_UNQUOTE(JSON_EXTRACT(Message.key, '$.remoteJid')) AND Chat.instanceId = Message.instanceId + WHERE Message.instanceId = ${this.instanceId} + ${remoteJid ? Prisma.sql`AND JSON_UNQUOTE(JSON_EXTRACT(Message.key, '$.remoteJid')) = ${remoteJid}` : Prisma.sql``} + ${timestampFilterMysql} + AND Message.messageTimestamp = ( + SELECT MAX(m2.messageTimestamp) + FROM Message m2 + WHERE JSON_UNQUOTE(JSON_EXTRACT(m2.key, '$.remoteJid')) = JSON_UNQUOTE(JSON_EXTRACT(Message.key, '$.remoteJid')) + AND m2.instanceId = Message.instanceId + ) + ORDER BY updatedAt DESC + ${limit} + ${offset}; + `; + } else { + // PostgreSQL version + const timestampFilter = + query?.where?.messageTimestamp?.gte && query?.where?.messageTimestamp?.lte + ? Prisma.sql` + AND "Message"."messageTimestamp" >= ${Math.floor(new Date(query.where.messageTimestamp.gte).getTime() / 1000)} + AND "Message"."messageTimestamp" <= ${Math.floor(new Date(query.where.messageTimestamp.lte).getTime() / 1000)}` + : Prisma.sql``; + + results = await this.prismaRepository.$queryRaw` + WITH rankedMessages AS ( + SELECT DISTINCT ON ("Message"."key"->>'remoteJid') + "Contact"."id" as "contactId", + "Message"."key"->>'remoteJid' as "remoteJid", + CASE + WHEN "Message"."key"->>'remoteJid' LIKE '%@g.us' THEN COALESCE("Chat"."name", "Contact"."pushName") + ELSE COALESCE("Contact"."pushName", "Message"."pushName") + END as "pushName", + "Contact"."profilePicUrl", + COALESCE( + to_timestamp("Message"."messageTimestamp"::double precision), + "Contact"."updatedAt" + ) as "updatedAt", + "Chat"."name" as "pushName", + "Chat"."createdAt" as "windowStart", + "Chat"."createdAt" + INTERVAL '24 hours' as "windowExpires", + "Chat"."unreadMessages" as "unreadMessages", + CASE WHEN "Chat"."createdAt" + INTERVAL '24 hours' > NOW() THEN true ELSE false END as "windowActive", + "Message"."id" AS "lastMessageId", + "Message"."key" AS "lastMessage_key", + CASE + WHEN "Message"."key"->>'fromMe' = 'true' THEN 'Você' + ELSE "Message"."pushName" + END AS "lastMessagePushName", + "Message"."participant" AS "lastMessageParticipant", + "Message"."messageType" AS "lastMessageMessageType", + "Message"."message" AS "lastMessageMessage", + "Message"."contextInfo" AS "lastMessageContextInfo", + "Message"."source" AS "lastMessageSource", + "Message"."messageTimestamp" AS "lastMessageMessageTimestamp", + "Message"."instanceId" AS "lastMessageInstanceId", + "Message"."sessionId" AS "lastMessageSessionId", + "Message"."status" AS "lastMessageStatus" + FROM "Message" + LEFT JOIN "Contact" ON "Contact"."remoteJid" = "Message"."key"->>'remoteJid' AND "Contact"."instanceId" = "Message"."instanceId" + LEFT JOIN "Chat" ON "Chat"."remoteJid" = "Message"."key"->>'remoteJid' AND "Chat"."instanceId" = "Message"."instanceId" + WHERE "Message"."instanceId" = ${this.instanceId} + ${remoteJid ? Prisma.sql`AND "Message"."key"->>'remoteJid' = ${remoteJid}` : Prisma.sql``} + ${timestampFilter} + ORDER BY "Message"."key"->>'remoteJid', "Message"."messageTimestamp" DESC + ) + SELECT * FROM rankedMessages + ORDER BY "updatedAt" DESC NULLS LAST + ${limit} + ${offset}; + `; + } if (results && isArray(results) && results.length > 0) { const mappedResults = results.map((contact) => { From 0aedee53d4940cb6b7d48066b19d64c979042bd7 Mon Sep 17 00:00:00 2001 From: augustolima1 <62573696+augustolima1@users.noreply.github.com> Date: Tue, 23 Dec 2025 09:55:22 -0300 Subject: [PATCH 16/89] fix: add migration to re-add lid column for existing installations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Creates new migration to ensure lid column exists even in databases where it was previously dropped by the Kafka integration migration. Uses prepared statement to check column existence before adding, ensuring compatibility with both fresh and existing installations. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- .../migration.sql | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 prisma/mysql-migrations/20251223093839_re_add_lid_to_is_onwhatsapp/migration.sql diff --git a/prisma/mysql-migrations/20251223093839_re_add_lid_to_is_onwhatsapp/migration.sql b/prisma/mysql-migrations/20251223093839_re_add_lid_to_is_onwhatsapp/migration.sql new file mode 100644 index 0000000000..1a6046d679 --- /dev/null +++ b/prisma/mysql-migrations/20251223093839_re_add_lid_to_is_onwhatsapp/migration.sql @@ -0,0 +1,21 @@ +-- Re-add lid column that was incorrectly dropped by previous migration +-- This migration ensures backward compatibility for existing installations + +-- Check if column exists before adding +SET @dbname = DATABASE(); +SET @tablename = 'IsOnWhatsapp'; +SET @columnname = 'lid'; +SET @preparedStatement = (SELECT IF( + ( + SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS + WHERE + (table_name = @tablename) + AND (table_schema = @dbname) + AND (column_name = @columnname) + ) > 0, + 'SELECT 1', + CONCAT('ALTER TABLE `', @tablename, '` ADD COLUMN `', @columnname, '` VARCHAR(100);') +)); +PREPARE alterIfNotExists FROM @preparedStatement; +EXECUTE alterIfNotExists; +DEALLOCATE PREPARE alterIfNotExists; From cf8f0b3e120db7a4416e91fa85aabe26a38e41d3 Mon Sep 17 00:00:00 2001 From: Fernando Figueroa Date: Thu, 1 Jan 2026 16:32:17 -0300 Subject: [PATCH 17/89] feat(audio): add waveform visualization for PTT voice messages - Add audio-decode library for audio buffer analysis - Implement getAudioDuration() to extract duration from audio - Implement getAudioWaveform() to generate 64-value waveform array - Normalize waveform values to 0-100 range for WhatsApp compatibility - Change audio bitrate from 128k to 48k per WhatsApp PTT requirements - Add Baileys patch to prevent waveform overwrite - Increase Node.js heap size for build to prevent OOM Fixes #1086 --- Dockerfile | 5 +- package-lock.json | 261 ++++++++++++++++++ package.json | 2 + patches/baileys+7.0.0-rc.6.patch | 13 + .../whatsapp/whatsapp.baileys.service.ts | 72 ++++- 5 files changed, 349 insertions(+), 4 deletions(-) create mode 100644 patches/baileys+7.0.0-rc.6.patch diff --git a/Dockerfile b/Dockerfile index 24c4e3bc7f..747e7d730e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,9 +12,12 @@ WORKDIR /evolution COPY ./package*.json ./ COPY ./tsconfig.json ./ COPY ./tsup.config.ts ./ +COPY ./patches ./patches RUN npm ci --silent +RUN npx patch-package + COPY ./src ./src COPY ./public ./public COPY ./prisma ./prisma @@ -28,7 +31,7 @@ RUN chmod +x ./Docker/scripts/* && dos2unix ./Docker/scripts/* RUN ./Docker/scripts/generate_database.sh -RUN npm run build +RUN NODE_OPTIONS="--max-old-space-size=2048" npm run build FROM node:24-alpine AS final diff --git a/package-lock.json b/package-lock.json index c9c50513a5..476a88c9a6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -91,6 +91,7 @@ "eslint-plugin-simple-import-sort": "^12.1.1", "husky": "^9.1.7", "lint-staged": "^16.1.6", + "patch-package": "^8.0.1", "prettier": "^3.4.2", "tsconfig-paths": "^4.2.0", "tsx": "^4.20.5", @@ -5407,6 +5408,13 @@ "url": "https://github.com/sponsors/eshaz" } }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true, + "license": "BSD-2-Clause" + }, "node_modules/@zxing/text-encoding": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", @@ -6338,6 +6346,22 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/citty": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", @@ -8780,6 +8804,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/find-yarn-workspace-root": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", + "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "micromatch": "^4.0.2" + } + }, "node_modules/findup-sync": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz", @@ -10054,6 +10088,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -10397,6 +10447,19 @@ "node": ">=0.10.0" } }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", @@ -10534,6 +10597,26 @@ "dev": true, "license": "MIT" }, + "node_modules/json-stable-stringify": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.3.0.tgz", + "integrity": "sha512-qtYiSSFlwot9XHtF9bD9c7rwKjr+RecWT//ZnPvSmEjpV5mmPOCN4j8UjY5hbjNkOwZ/jQv3J6R1/pL7RwgMsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "isarray": "^2.0.5", + "jsonify": "^0.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", @@ -10567,6 +10650,16 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsonify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", + "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", + "dev": true, + "license": "Public Domain", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", @@ -10664,6 +10757,16 @@ "@keyv/serialize": "^1.1.1" } }, + "node_modules/klaw-sync": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.11" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -12216,6 +12319,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/openai": { "version": "4.104.0", "resolved": "https://registry.npmjs.org/openai/-/openai-4.104.0.tgz", @@ -12624,6 +12744,137 @@ "node": ">= 0.8" } }, + "node_modules/patch-package": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-8.0.1.tgz", + "integrity": "sha512-VsKRIA8f5uqHQ7NGhwIna6Bx6D9s/1iXlA1hthBVBEbkq+t4kXD0HHt+rJhf/Z+Ci0F/HCB2hvn0qLdLG+Qxlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@yarnpkg/lockfile": "^1.1.0", + "chalk": "^4.1.2", + "ci-info": "^3.7.0", + "cross-spawn": "^7.0.3", + "find-yarn-workspace-root": "^2.0.0", + "fs-extra": "^10.0.0", + "json-stable-stringify": "^1.0.2", + "klaw-sync": "^6.0.0", + "minimist": "^1.2.6", + "open": "^7.4.2", + "semver": "^7.5.3", + "slash": "^2.0.0", + "tmp": "^0.2.4", + "yaml": "^2.2.2" + }, + "bin": { + "patch-package": "index.js" + }, + "engines": { + "node": ">=14", + "npm": ">5" + } + }, + "node_modules/patch-package/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/patch-package/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/patch-package/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/patch-package/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/patch-package/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/patch-package/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/patch-package/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/patch-package/node_modules/tmp": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", + "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.14" + } + }, "node_modules/path-exists": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", @@ -14307,6 +14558,16 @@ "url": "https://github.com/sponsors/eshaz" } }, + "node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/slice-ansi": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", diff --git a/package.json b/package.json index 009782b7c1..ce83b476fa 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "db:studio": "node runWithProvider.js \"npx prisma studio --schema ./prisma/DATABASE_PROVIDER-schema.prisma\"", "db:migrate:dev": "node runWithProvider.js \"rm -rf ./prisma/migrations && cp -r ./prisma/DATABASE_PROVIDER-migrations ./prisma/migrations && npx prisma migrate dev --schema ./prisma/DATABASE_PROVIDER-schema.prisma && cp -r ./prisma/migrations/* ./prisma/DATABASE_PROVIDER-migrations\"", "db:migrate:dev:win": "node runWithProvider.js \"xcopy /E /I prisma\\DATABASE_PROVIDER-migrations prisma\\migrations && npx prisma migrate dev --schema prisma\\DATABASE_PROVIDER-schema.prisma\"", + "postinstall": "patch-package", "prepare": "husky" }, "repository": { @@ -147,6 +148,7 @@ "eslint-plugin-simple-import-sort": "^12.1.1", "husky": "^9.1.7", "lint-staged": "^16.1.6", + "patch-package": "^8.0.1", "prettier": "^3.4.2", "tsconfig-paths": "^4.2.0", "tsx": "^4.20.5", diff --git a/patches/baileys+7.0.0-rc.6.patch b/patches/baileys+7.0.0-rc.6.patch new file mode 100644 index 0000000000..e01f5cac3a --- /dev/null +++ b/patches/baileys+7.0.0-rc.6.patch @@ -0,0 +1,13 @@ +diff --git a/node_modules/baileys/lib/Utils/messages.js b/node_modules/baileys/lib/Utils/messages.js +index 17b05b8..782efb4 100644 +--- a/node_modules/baileys/lib/Utils/messages.js ++++ b/node_modules/baileys/lib/Utils/messages.js +@@ -132,7 +132,7 @@ export const prepareWAMessageMedia = async (message, options) => { + } + const requiresDurationComputation = mediaType === 'audio' && typeof uploadData.seconds === 'undefined'; + const requiresThumbnailComputation = (mediaType === 'image' || mediaType === 'video') && typeof uploadData['jpegThumbnail'] === 'undefined'; +- const requiresWaveformProcessing = mediaType === 'audio' && uploadData.ptt === true; ++ const requiresWaveformProcessing = mediaType === 'audio' && uploadData.ptt === true && typeof uploadData.waveform === 'undefined'; + const requiresAudioBackground = options.backgroundColor && mediaType === 'audio' && uploadData.ptt === true; + const requiresOriginalForSomeProcessing = requiresDurationComputation || requiresThumbnailComputation; + const { mediaKey, encFilePath, originalFilePath, fileEncSha256, fileSha256, fileLength } = await encryptedStream(uploadData.media, options.mediaTypeOverride || mediaType, { diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 1e3bdcf134..0ed4ec2da8 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -90,6 +90,7 @@ import useMultiFileAuthStatePrisma from '@utils/use-multi-file-auth-state-prisma import { AuthStateProvider } from '@utils/use-multi-file-auth-state-provider-files'; import { useMultiFileAuthStateRedisDb } from '@utils/use-multi-file-auth-state-redis-db'; import axios from 'axios'; +import audioDecode from 'audio-decode'; import makeWASocket, { AnyMessageContent, BufferedEventData, @@ -3006,7 +3007,7 @@ export class BaileysStartupService extends ChannelStartupService { .noVideo() .audioCodec('libopus') .addOutputOptions('-avoid_negative_ts make_zero') - .audioBitrate('128k') + .audioBitrate('48k') .audioFrequency(48000) .audioChannels(1) .outputOptions([ @@ -3038,6 +3039,58 @@ export class BaileysStartupService extends ChannelStartupService { } } + private async getAudioMetadata(audioBuffer: Buffer): Promise<{ seconds: number; waveform: Uint8Array }> { + try { + this.logger.debug('Decoding audio buffer for metadata extraction...'); + const audioData = await audioDecode(audioBuffer); + + // Extract duration + const seconds = Math.ceil(audioData.duration); + this.logger.debug(`Audio duration: ${seconds} seconds`); + + // Generate waveform + const samples = audioData.getChannelData(0); + const waveformLength = 64; + const samplesPerWaveform = Math.max(1, Math.floor(samples.length / waveformLength)); + + // First pass: calculate raw averages + const rawValues: number[] = []; + for (let i = 0; i < waveformLength; i++) { + const start = i * samplesPerWaveform; + const end = start + samplesPerWaveform; + let sum = 0; + for (let j = start; j < end && j < samples.length; j++) { + sum += Math.abs(samples[j]); + } + const avg = sum / samplesPerWaveform; + rawValues.push(avg); + } + + // Find max value for normalization + const maxValue = Math.max(...rawValues); + + // Second pass: normalize to 0-100 range + const waveform = new Uint8Array(waveformLength); + if (maxValue > 0) { + for (let i = 0; i < waveformLength; i++) { + const normalized = Math.floor((rawValues[i] / maxValue) * 100); + waveform[i] = rawValues[i] > 0 ? Math.max(5, Math.min(100, normalized)) : 0; + } + } else { + waveform.fill(50); + } + + this.logger.debug(`Generated waveform with ${waveform.length} values`); + + return { seconds, waveform }; + } catch (error) { + this.logger.warn(`Failed to extract audio metadata: ${error.message}, using defaults`); + const defaultWaveform = new Uint8Array(64); + defaultWaveform.fill(50); + return { seconds: 1, waveform: defaultWaveform }; + } + } + public async audioWhatsapp(data: SendAudioDto, file?: any, isIntegration = false) { const mediaData: SendAudioDto = { ...data }; @@ -3056,9 +3109,13 @@ export class BaileysStartupService extends ChannelStartupService { const convert = await this.processAudio(mediaData.audio); if (Buffer.isBuffer(convert)) { + const { seconds, waveform } = await this.getAudioMetadata(convert); + + const messageContent = { audio: convert, ptt: true, mimetype: 'audio/ogg; codecs=opus', seconds, waveform }; + const result = this.sendMessageWithTyping( data.number, - { audio: convert, ptt: true, mimetype: 'audio/ogg; codecs=opus' }, + messageContent as any, { presence: 'recording', delay: data?.delay }, isIntegration, ); @@ -3069,12 +3126,21 @@ export class BaileysStartupService extends ChannelStartupService { } } + const audioBuffer = isURL(data.audio) ? { url: data.audio } : Buffer.from(data.audio, 'base64'); + let metadata: { seconds: number; waveform: Uint8Array } | undefined; + + // Only generate waveform for buffers, not URLs + if (Buffer.isBuffer(audioBuffer)) { + metadata = await this.getAudioMetadata(audioBuffer); + } + return await this.sendMessageWithTyping( data.number, { - audio: isURL(data.audio) ? { url: data.audio } : Buffer.from(data.audio, 'base64'), + audio: audioBuffer, ptt: true, mimetype: 'audio/ogg; codecs=opus', + ...(metadata && { seconds: metadata.seconds, waveform: metadata.waveform }), }, { presence: 'recording', delay: data?.delay }, isIntegration, From 8aac7403d43c21931a32300a3ddaca55b577c82a Mon Sep 17 00:00:00 2001 From: eltonciatto Date: Sat, 3 Jan 2026 23:06:44 -0300 Subject: [PATCH 18/89] fix(integrations): resolve typebot media regression and baileys link preview - Fix linkPreview logic in Baileys to default to true - Add support for 'file' and 'embed' types in Typebot integration - Ensure correct media type detection for PDFs and docs --- .../whatsapp/whatsapp.baileys.service.ts | 22 +++++++------- .../typebot/services/typebot.service.ts | 30 +++++++++++++++++++ 2 files changed, 41 insertions(+), 11 deletions(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 4db8146cc2..59619c4c09 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -436,7 +436,7 @@ export class BaileysStartupService extends ChannelStartupService { qrcodeTerminal.generate(qr, { small: true }, (qrcode) => this.logger.log( `\n{ instance: ${this.instance.name} pairingCode: ${this.instance.qrcode.pairingCode}, qrcodeCount: ${this.instance.qrcode.count} }\n` + - qrcode, + qrcode, ), ); @@ -1049,16 +1049,16 @@ export class BaileysStartupService extends ChannelStartupService { const messagesRepository: Set = new Set( chatwootImport.getRepositoryMessagesCache(instance) ?? - ( - await this.prismaRepository.message.findMany({ - select: { key: true }, - where: { instanceId: this.instanceId }, - }) - ).map((message) => { - const key = message.key as { id: string }; + ( + await this.prismaRepository.message.findMany({ + select: { key: true }, + where: { instanceId: this.instanceId }, + }) + ).map((message) => { + const key = message.key as { id: string }; - return key.id; - }), + return key.id; + }), ); if (chatwootImport.getRepositoryMessagesCache(instance) === null) { @@ -2432,7 +2432,7 @@ export class BaileysStartupService extends ChannelStartupService { } } - const linkPreview = options?.linkPreview != false ? undefined : false; + const linkPreview = options?.linkPreview !== false; let quoted: WAMessage; diff --git a/src/api/integrations/chatbot/typebot/services/typebot.service.ts b/src/api/integrations/chatbot/typebot/services/typebot.service.ts index 03712bfdb3..b18b338bbb 100644 --- a/src/api/integrations/chatbot/typebot/services/typebot.service.ts +++ b/src/api/integrations/chatbot/typebot/services/typebot.service.ts @@ -368,6 +368,36 @@ export class TypebotService extends BaseChatbotService { sendTelemetry('/message/sendWhatsAppAudio'); } + if (message.type === 'file' || message.type === 'embed') { + const mediaUrl = message.content.url; + const mediaType = this.getMediaType(mediaUrl); + + if (mediaType === 'audio') { + await instance.audioWhatsapp( + { + number: session.remoteJid, + delay: settings?.delayMessage || 1000, + encoding: true, + audio: mediaUrl, + }, + false, + ); + } else { + await instance.mediaMessage( + { + number: session.remoteJid, + delay: settings?.delayMessage || 1000, + mediatype: mediaType || 'document', + media: mediaUrl, + fileName: message.content.name || 'document.pdf', + }, + null, + false, + ); + } + sendTelemetry('/message/sendMedia'); + } + const wait = findItemAndGetSecondsToWait(clientSideActions, message.id); if (wait) { From 3f91cf41e2e11a91e7a47a5e6c5f824db3d392ce Mon Sep 17 00:00:00 2001 From: eltonciatto Date: Sat, 3 Jan 2026 23:17:56 -0300 Subject: [PATCH 19/89] reverte undefined --- .../integrations/channel/whatsapp/whatsapp.baileys.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 59619c4c09..7cd6a8905b 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -2432,7 +2432,7 @@ export class BaileysStartupService extends ChannelStartupService { } } - const linkPreview = options?.linkPreview !== false; + const linkPreview = options?.linkPreview != false ? undefined : false; let quoted: WAMessage; From 53f47d5fff2d5160d2ee0e13cf1408dd4201b63a Mon Sep 17 00:00:00 2001 From: eltonciatto Date: Sat, 3 Jan 2026 23:32:41 -0300 Subject: [PATCH 20/89] =?UTF-8?q?feat:=20=20Implementei=20agora=20a=20gera?= =?UTF-8?q?=C3=A7=C3=A3o=20ativa=20de=20Link=20Preview=20dentro=20do=20ser?= =?UTF-8?q?vi=C3=A7o=20do=20WhatsApp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../whatsapp/whatsapp.baileys.service.ts | 47 ++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 7cd6a8905b..3969af7685 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -139,6 +139,7 @@ import { createHash } from 'crypto'; import EventEmitter2 from 'eventemitter2'; import ffmpeg from 'fluent-ffmpeg'; import FormData from 'form-data'; +import { getLinkPreview } from 'link-preview-js'; import Long from 'long'; import mimeTypes from 'mime-types'; import NodeCache from 'node-cache'; @@ -2221,6 +2222,43 @@ export class BaileysStartupService extends ChannelStartupService { } } + private async generateLinkPreview(text: string) { + try { + const linkRegex = /https?:\/\/[^\s]+/; + const match = text.match(linkRegex); + + if (!match) return undefined; + + const url = match[0]; + const previewData = await getLinkPreview(url, { + imagesPropertyType: 'og', // fetches only open-graph images + headers: { + 'user-agent': 'googlebot', // fetches with googlebot to prevent login pages + }, + }) as any; + + if (!previewData || !previewData.title) return undefined; + + const image = previewData.images && previewData.images.length > 0 ? previewData.images[0] : undefined; + + return { + externalAdReply: { + title: previewData.title, + body: previewData.description, + mediaType: 2, // 2 for video/image preview, though usually 1 is for thumbnail + thumbnailUrl: image, + sourceUrl: url, + mediaUrl: url, + renderLargerThumbnail: true, + showAdAttribution: true + } + }; + } catch (error) { + this.logger.error(`Error generating link preview: ${error}`); + return undefined; + } + } + private async sendMessage( sender: string, message: any, @@ -2432,7 +2470,12 @@ export class BaileysStartupService extends ChannelStartupService { } } - const linkPreview = options?.linkPreview != false ? undefined : false; + const linkPreview = options?.linkPreview === false ? false : undefined; + + let previewContext: any = undefined; + if (linkPreview !== false && (message as any)?.conversation) { + previewContext = await this.generateLinkPreview((message as any).conversation); + } let quoted: WAMessage; @@ -2486,6 +2529,7 @@ export class BaileysStartupService extends ChannelStartupService { quoted, null, group?.ephemeralDuration, + previewContext, // group?.participants, ); } else { @@ -2499,6 +2543,7 @@ export class BaileysStartupService extends ChannelStartupService { unsigned: false, }, disappearingMode: { initiator: 0 }, + ...previewContext, }; messageSent = await this.sendMessage( sender, From dcc9ffc64f1b153386c48015fe7f20b981cef490 Mon Sep 17 00:00:00 2001 From: eltonciatto Date: Sat, 3 Jan 2026 23:40:04 -0300 Subject: [PATCH 21/89] feat: Fix linkPreview via label --- .../integrations/channel/whatsapp/whatsapp.baileys.service.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 3969af7685..2473c75039 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -2249,8 +2249,8 @@ export class BaileysStartupService extends ChannelStartupService { thumbnailUrl: image, sourceUrl: url, mediaUrl: url, - renderLargerThumbnail: true, - showAdAttribution: true + renderLargerThumbnail: true + // showAdAttribution: true // Removed to prevent "Sent via ad" label } }; } catch (error) { From 260ad02472a15bb383539d2482ebd3e43a0aa470 Mon Sep 17 00:00:00 2001 From: eltonciatto Date: Sat, 3 Jan 2026 23:53:51 -0300 Subject: [PATCH 22/89] feat: implement Baileys channel services with advanced message handling, Typebot integration, and comprehensive API functionalities for chat, group, and business profiles. --- .../whatsapp/whatsapp.baileys.service.ts | 5 +++- .../typebot/services/typebot.service.ts | 28 +++++++++++++++++-- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 2473c75039..2068096f97 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -2229,7 +2229,10 @@ export class BaileysStartupService extends ChannelStartupService { if (!match) return undefined; - const url = match[0]; + // Trim common trailing punctuation that may follow URLs in natural text + const url = match[0].replace(/[.,);\]]+$/u, ''); + if (!url) return undefined; + const previewData = await getLinkPreview(url, { imagesPropertyType: 'og', // fetches only open-graph images headers: { diff --git a/src/api/integrations/chatbot/typebot/services/typebot.service.ts b/src/api/integrations/chatbot/typebot/services/typebot.service.ts index b18b338bbb..79f3180b82 100644 --- a/src/api/integrations/chatbot/typebot/services/typebot.service.ts +++ b/src/api/integrations/chatbot/typebot/services/typebot.service.ts @@ -369,9 +369,33 @@ export class TypebotService extends BaseChatbotService { } if (message.type === 'file' || message.type === 'embed') { - const mediaUrl = message.content.url; + const content = message.content as { url?: string; name?: string } | undefined; + if (!content?.url) { + sendTelemetry('/message/sendMediaMissingUrl'); + return; + } + + const mediaUrl = content.url; const mediaType = this.getMediaType(mediaUrl); + let fileName = content.name; + if (!fileName) { + try { + const urlObj = new URL(mediaUrl); + const path = urlObj.pathname || ''; + const candidate = path.split('/').pop() || ''; + if (candidate && candidate.includes('.')) { + fileName = candidate; + } + } catch { + // Ignore URL parsing failures + } + + if (!fileName) { + fileName = mediaType && mediaType !== 'document' ? `media.${mediaType}` : 'attachment'; + } + } + if (mediaType === 'audio') { await instance.audioWhatsapp( { @@ -389,7 +413,7 @@ export class TypebotService extends BaseChatbotService { delay: settings?.delayMessage || 1000, mediatype: mediaType || 'document', media: mediaUrl, - fileName: message.content.name || 'document.pdf', + fileName, }, null, false, From c5df499a265c12241f5d56fba4738f798fdfdaf9 Mon Sep 17 00:00:00 2001 From: eltonciatto Date: Sat, 3 Jan 2026 23:59:51 -0300 Subject: [PATCH 23/89] feat: implement Baileys service for WhatsApp channel, managing connections, messages, groups, profiles, and integrating with Chatwoot, OpenAI, and S3. --- .../channel/whatsapp/whatsapp.baileys.service.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 2068096f97..991a632bad 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -2244,12 +2244,23 @@ export class BaileysStartupService extends ChannelStartupService { const image = previewData.images && previewData.images.length > 0 ? previewData.images[0] : undefined; + let thumbnail: Buffer | undefined = undefined; + if (image) { + try { + const response = await axios.get(image, { responseType: 'arraybuffer' }); + thumbnail = Buffer.from(response.data); + } catch { + // Ignore image fetch failures + } + } + return { externalAdReply: { title: previewData.title, body: previewData.description, - mediaType: 2, // 2 for video/image preview, though usually 1 is for thumbnail + mediaType: 1, // 1 for image, 2 for video. Using 1 for better cover image support with renderLargerThumbnail thumbnailUrl: image, + thumbnail: thumbnail, sourceUrl: url, mediaUrl: url, renderLargerThumbnail: true From 91d01fa126c9875882720ec3b1e9ac3c22d0e6e1 Mon Sep 17 00:00:00 2001 From: eltonciatto Date: Sun, 4 Jan 2026 00:11:28 -0300 Subject: [PATCH 24/89] feat: implement new Baileys features including PTV messages, poll decryption, and channel fetching --- .../channel/whatsapp/whatsapp.baileys.service.ts | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 991a632bad..2068096f97 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -2244,23 +2244,12 @@ export class BaileysStartupService extends ChannelStartupService { const image = previewData.images && previewData.images.length > 0 ? previewData.images[0] : undefined; - let thumbnail: Buffer | undefined = undefined; - if (image) { - try { - const response = await axios.get(image, { responseType: 'arraybuffer' }); - thumbnail = Buffer.from(response.data); - } catch { - // Ignore image fetch failures - } - } - return { externalAdReply: { title: previewData.title, body: previewData.description, - mediaType: 1, // 1 for image, 2 for video. Using 1 for better cover image support with renderLargerThumbnail + mediaType: 2, // 2 for video/image preview, though usually 1 is for thumbnail thumbnailUrl: image, - thumbnail: thumbnail, sourceUrl: url, mediaUrl: url, renderLargerThumbnail: true From 4adffae140a21739cf733de7d7b849f4afce69ac Mon Sep 17 00:00:00 2001 From: Elton Ciatto <53355283+eltonciatto@users.noreply.github.com> Date: Sun, 4 Jan 2026 00:21:08 -0300 Subject: [PATCH 25/89] Update src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com> --- .../integrations/channel/whatsapp/whatsapp.baileys.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 2068096f97..095b46ccc9 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -2257,7 +2257,7 @@ export class BaileysStartupService extends ChannelStartupService { } }; } catch (error) { - this.logger.error(`Error generating link preview: ${error}`); + this.logger.error('Error generating link preview', error); return undefined; } } From 3514eeb62e2b317722450600a2ca1471b2167fd7 Mon Sep 17 00:00:00 2001 From: Elton Ciatto <53355283+eltonciatto@users.noreply.github.com> Date: Sun, 4 Jan 2026 00:24:42 -0300 Subject: [PATCH 26/89] Reverte --- .../integrations/channel/whatsapp/whatsapp.baileys.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 095b46ccc9..2068096f97 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -2257,7 +2257,7 @@ export class BaileysStartupService extends ChannelStartupService { } }; } catch (error) { - this.logger.error('Error generating link preview', error); + this.logger.error(`Error generating link preview: ${error}`); return undefined; } } From 59cfe87d60bf0f1cb24ed2d6b94693843b09c9f7 Mon Sep 17 00:00:00 2001 From: GABRIEL-PI Date: Thu, 4 Dec 2025 13:56:51 -0300 Subject: [PATCH 27/89] =?UTF-8?q?fix:=20usar=20Multi-Device=20nativo=20par?= =?UTF-8?q?a=20evitar=20desconex=C3=B5es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy-vps.sh | 66 ++++++++++ docker-compose.local.yaml | 120 ++++++++++++++++++ docker-compose.prod.yaml | 64 ++++++++++ .../whatsapp/whatsapp.baileys.service.ts | 18 +-- 4 files changed, 255 insertions(+), 13 deletions(-) create mode 100644 deploy-vps.sh create mode 100644 docker-compose.local.yaml create mode 100644 docker-compose.prod.yaml diff --git a/deploy-vps.sh b/deploy-vps.sh new file mode 100644 index 0000000000..5c5ee61cf2 --- /dev/null +++ b/deploy-vps.sh @@ -0,0 +1,66 @@ +#!/bin/bash + +# =========================================== +# SCRIPT DE DEPLOY - Evolution API Multi-Device +# =========================================== + +set -e + +echo "🚀 Iniciando deploy da Evolution API com Multi-Device fix..." + +# Cores para output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +# Verificar se está no diretório correto +if [ ! -f "docker-compose.prod.yaml" ]; then + echo -e "${RED}❌ Erro: Execute este script no diretório da Evolution API${NC}" + exit 1 +fi + +# Backup do docker-compose atual (se existir) +if [ -f "docker-compose.yaml" ]; then + echo -e "${YELLOW}📦 Fazendo backup do docker-compose.yaml atual...${NC}" + cp docker-compose.yaml docker-compose.yaml.backup.$(date +%Y%m%d_%H%M%S) +fi + +# Parar containers existentes (mantém volumes) +echo -e "${YELLOW}⏹️ Parando containers existentes...${NC}" +docker compose -f docker-compose.prod.yaml down 2>/dev/null || docker-compose -f docker-compose.prod.yaml down 2>/dev/null || true + +# Build da nova imagem +echo -e "${YELLOW}🔨 Buildando imagem com Multi-Device fix...${NC}" +docker compose -f docker-compose.prod.yaml build --no-cache api + +# Subir containers +echo -e "${YELLOW}🚀 Iniciando containers...${NC}" +docker compose -f docker-compose.prod.yaml up -d + +# Aguardar API iniciar +echo -e "${YELLOW}⏳ Aguardando API iniciar...${NC}" +sleep 10 + +# Verificar status +echo -e "${GREEN}✅ Deploy concluído!${NC}" +echo "" +echo "📊 Status dos containers:" +docker compose -f docker-compose.prod.yaml ps + +echo "" +echo "📋 Últimos logs da API:" +docker compose -f docker-compose.prod.yaml logs api --tail 20 + +echo "" +echo -e "${GREEN}========================================${NC}" +echo -e "${GREEN}🎉 Evolution API Multi-Device está rodando!${NC}" +echo -e "${GREEN}========================================${NC}" +echo "" +echo "🔗 Acesse: http://SEU_IP:8080" +echo "📚 Docs: http://SEU_IP:8080/docs" +echo "🖥️ Manager: http://SEU_IP:8080/manager" +echo "" +echo "💡 Para ver logs em tempo real:" +echo " docker compose -f docker-compose.prod.yaml logs -f api" + diff --git a/docker-compose.local.yaml b/docker-compose.local.yaml new file mode 100644 index 0000000000..1c68ee4070 --- /dev/null +++ b/docker-compose.local.yaml @@ -0,0 +1,120 @@ +version: "3.8" + +services: + api: + container_name: evolution_api_local + build: + context: . + dockerfile: Dockerfile + restart: unless-stopped + depends_on: + postgres: + condition: service_healthy + redis: + condition: service_started + ports: + - "8080:8080" + volumes: + - evolution_instances:/evolution/instances + networks: + - evolution-local + environment: + # Servidor + - SERVER_NAME=evolution + - SERVER_TYPE=http + - SERVER_PORT=8080 + - SERVER_URL=http://localhost:8080 + - SERVER_DISABLE_DOCS=false + - SERVER_DISABLE_MANAGER=false + + # Banco de dados + - DATABASE_PROVIDER=postgresql + - DATABASE_CONNECTION_URI=postgresql://evolution:evolution123@postgres:5432/evolution + - DATABASE_CONNECTION_CLIENT_NAME=evolution + - DATABASE_SAVE_DATA_INSTANCE=true + - DATABASE_SAVE_DATA_NEW_MESSAGE=true + - DATABASE_SAVE_MESSAGE_UPDATE=true + - DATABASE_SAVE_DATA_CONTACTS=true + - DATABASE_SAVE_DATA_CHATS=true + - DATABASE_SAVE_DATA_HISTORIC=true + - DATABASE_SAVE_DATA_LABELS=true + - DATABASE_SAVE_IS_ON_WHATSAPP=true + - DATABASE_SAVE_IS_ON_WHATSAPP_DAYS=7 + + # Redis + - CACHE_REDIS_ENABLED=true + - CACHE_REDIS_URI=redis://redis:6379 + - CACHE_REDIS_PREFIX_KEY=evolution-cache + - CACHE_REDIS_TTL=604800 + - CACHE_REDIS_SAVE_INSTANCES=true + - CACHE_LOCAL_ENABLED=true + + # Autenticação + - AUTHENTICATION_API_KEY=sua-api-key-aqui + - AUTHENTICATION_EXPOSE_IN_FETCH_INSTANCES=false + + # Logs + - LOG_LEVEL=ERROR,WARN,DEBUG,INFO,LOG,VERBOSE,WEBHOOKS,WEBSOCKET + - LOG_COLOR=true + - LOG_BAILEYS=error + + # Instâncias + - DEL_INSTANCE=false + - DEL_TEMP_INSTANCES=true + + # Idioma + - LANGUAGE=pt-BR + + # WebSocket + - WEBSOCKET_ENABLED=true + - WEBSOCKET_GLOBAL_EVENTS=true + + # QR Code + - QRCODE_LIMIT=30 + - QRCODE_COLOR=#198754 + + # Telemetria + - TELEMETRY_ENABLED=false + + postgres: + container_name: evolution_postgres_local + image: postgres:15-alpine + restart: unless-stopped + environment: + - POSTGRES_DB=evolution + - POSTGRES_USER=evolution + - POSTGRES_PASSWORD=evolution123 + volumes: + - postgres_data:/var/lib/postgresql/data + networks: + - evolution-local + ports: + - "5432:5432" + healthcheck: + test: ["CMD-SHELL", "pg_isready -U evolution -d evolution"] + interval: 5s + timeout: 5s + retries: 5 + + redis: + container_name: evolution_redis_local + image: redis:7-alpine + restart: unless-stopped + command: redis-server --appendonly yes + volumes: + - redis_data:/data + networks: + - evolution-local + ports: + - "6379:6379" + +volumes: + evolution_instances: + postgres_data: + redis_data: + +networks: + evolution-local: + name: evolution-local + driver: bridge + diff --git a/docker-compose.prod.yaml b/docker-compose.prod.yaml new file mode 100644 index 0000000000..7f05d11cab --- /dev/null +++ b/docker-compose.prod.yaml @@ -0,0 +1,64 @@ +services: + api: + container_name: evolution_api + # Build local com as alterações do Multi-Device + build: + context: . + dockerfile: Dockerfile + image: evolution-api:v2.3.4-multidevice + restart: always + depends_on: + - redis + - postgres + ports: + - 8080:8080 + volumes: + - evolution_instances:/evolution/instances + networks: + - evolution-net + env_file: + - .env + expose: + - 8080 + + redis: + image: redis:latest + networks: + - evolution-net + container_name: redis + command: > + redis-server --port 6379 --appendonly yes + volumes: + - evolution_redis:/data + ports: + - 6379:6379 + + postgres: + container_name: postgres + image: postgres:15 + networks: + - evolution-net + command: ["postgres", "-c", "max_connections=1000", "-c", "listen_addresses=*"] + restart: always + ports: + - 5432:5432 + environment: + - POSTGRES_USER=caio + - POSTGRES_PASSWORD=caio123 + - POSTGRES_DB=evolution + - POSTGRES_HOST_AUTH_METHOD=trust + volumes: + - postgres_data:/var/lib/postgresql/data + expose: + - 5432 + +volumes: + evolution_instances: + evolution_redis: + postgres_data: + +networks: + evolution-net: + name: evolution-net + driver: bridge + diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 4db8146cc2..6957c2d4d2 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -67,7 +67,6 @@ import { Chatwoot, ConfigService, configService, - ConfigSessionPhone, Database, Log, Openai, @@ -124,7 +123,6 @@ import makeWASocket, { Product, proto, UserFacingSocketConfig, - WABrowserDescription, WAMediaUpload, WAMessage, WAMessageKey, @@ -143,7 +141,6 @@ import Long from 'long'; import mimeTypes from 'mime-types'; import NodeCache from 'node-cache'; import cron from 'node-cron'; -import { release } from 'os'; import { join } from 'path'; import P from 'pino'; import qrcode, { QRCodeToDataURLOptions } from 'qrcode'; @@ -624,21 +621,16 @@ export class BaileysStartupService extends ChannelStartupService { private async createClient(number?: string): Promise { this.instance.authState = await this.defineAuthState(); - const session = this.configService.get('CONFIG_SESSION_PHONE'); - - let browserOptions = {}; - if (number || this.phoneNumber) { this.phoneNumber = number; this.logger.info(`Phone number: ${number}`); - } else { - const browser: WABrowserDescription = [session.CLIENT, session.NAME, release()]; - browserOptions = { browser }; - - this.logger.info(`Browser: ${browser}`); } + // Multi-Device mode: não definimos browser para evitar ser tratado como WebClient + // Isso faz o Baileys usar o modo MD nativo, que não conflita com outras sessões + this.logger.info('Using Multi-Device native mode (no browser identification)'); + // Fetch latest WhatsApp Web version automatically const baileysVersion = await fetchLatestWaWebVersion({}); const version = baileysVersion.version; @@ -697,7 +689,7 @@ export class BaileysStartupService extends ChannelStartupService { msgRetryCounterCache: this.msgRetryCounterCache, generateHighQualityLinkPreview: true, getMessage: async (key) => (await this.getMessage(key)) as Promise, - ...browserOptions, + // Removido browserOptions para usar Multi-Device nativo (não WebClient) markOnlineOnConnect: this.localSettings.alwaysOnline, retryRequestDelayMs: 350, maxMsgRetryCount: 4, From cecc5e4ed6fd9a98aa1d5eec144788b5675d7f15 Mon Sep 17 00:00:00 2001 From: GABRIEL-PI Date: Thu, 4 Dec 2025 14:19:19 -0300 Subject: [PATCH 28/89] =?UTF-8?q?docs:=20adiciona=20documenta=C3=A7=C3=A3o?= =?UTF-8?q?=20do=20deploy=20Multi-Device=20fix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DEPLOY-MULTIDEVICE-FIX.md | 282 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 282 insertions(+) create mode 100644 DEPLOY-MULTIDEVICE-FIX.md diff --git a/DEPLOY-MULTIDEVICE-FIX.md b/DEPLOY-MULTIDEVICE-FIX.md new file mode 100644 index 0000000000..3c8b9a112a --- /dev/null +++ b/DEPLOY-MULTIDEVICE-FIX.md @@ -0,0 +1,282 @@ +# 🚀 Evolution API - Multi-Device Fix + +## 📋 Resumo da Alteração + +**Problema:** A Evolution API estava caindo/desconectando quando o WhatsApp Android estava ativo, porque se identificava como "WebClient" (WhatsApp Web), ocupando o slot de sessão web. + +**Solução:** Remover a identificação de browser para usar o modo Multi-Device nativo do Baileys 7.x, que não conflita com outras sessões. + +--- + +## 🔧 Alteração no Código + +### Arquivo: `src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts` + +**ANTES (WebClient - CAI):** +```typescript +const session = this.configService.get('CONFIG_SESSION_PHONE'); + +let browserOptions = {}; + +if (number || this.phoneNumber) { + this.phoneNumber = number; + this.logger.info(`Phone number: ${number}`); +} else { + const browser: WABrowserDescription = [session.CLIENT, session.NAME, release()]; + browserOptions = { browser }; + this.logger.info(`Browser: ${browser}`); +} + +// ... no socketConfig: +...browserOptions, +``` + +**DEPOIS (Multi-Device nativo - NÃO CAI):** +```typescript +if (number || this.phoneNumber) { + this.phoneNumber = number; + this.logger.info(`Phone number: ${number}`); +} + +// Multi-Device mode: não definimos browser para evitar ser tratado como WebClient +// Isso faz o Baileys usar o modo MD nativo, que não conflita com outras sessões +this.logger.info('Using Multi-Device native mode (no browser identification)'); + +// ... no socketConfig: +// Removido browserOptions para usar Multi-Device nativo (não WebClient) +``` + +### Imports removidos: +- `ConfigSessionPhone` do `@config/env.config` +- `WABrowserDescription` do `baileys` +- `release` do `os` + +--- + +## 📦 Repositório Fork + +**URL:** https://github.com/joinads/evolution-api + +**Commit:** `5dbf3e93` - "fix: usar Multi-Device nativo para evitar desconexões" + +--- + +## 🐳 Deploy na VPS com Docker Compose + +### Pré-requisitos +- Docker e Docker Compose instalados +- Acesso SSH à VPS +- Volumes existentes com dados (PostgreSQL, Redis, Instances) + +### Volumes Utilizados (externos) +``` +evolution-clean_evolution_instances # Dados das instâncias WhatsApp +evolution-clean_evolution_redis # Cache Redis +evolution-clean_postgres_data # Banco de dados PostgreSQL +``` + +--- + +## 📝 Comandos de Deploy + +### 1. Clone o repositório +```bash +cd ~ +git clone https://github.com/joinads/evolution-api.git evolution-api-custom +cd evolution-api-custom +``` + +### 2. Copie o .env existente +```bash +cp ~/evolution-clean/.env . +``` + +### 3. Crie o docker-compose.prod.yaml +```bash +cat > docker-compose.prod.yaml << 'EOF' +services: + api: + container_name: evolution_api + build: + context: . + dockerfile: Dockerfile + image: evolution-api:v2.3.4-multidevice + restart: always + depends_on: + - redis + - postgres + ports: + - 8080:8080 + volumes: + - evolution-clean_evolution_instances:/evolution/instances + networks: + - evolution-net + env_file: + - .env + expose: + - 8080 + + redis: + image: redis:latest + networks: + - evolution-net + container_name: redis + command: > + redis-server --port 6379 --appendonly yes + volumes: + - evolution-clean_evolution_redis:/data + ports: + - 6379:6379 + + postgres: + container_name: postgres + image: postgres:15 + networks: + - evolution-net + command: ["postgres", "-c", "max_connections=1000", "-c", "listen_addresses=*"] + restart: always + ports: + - 5432:5432 + environment: + - POSTGRES_USER=caio + - POSTGRES_PASSWORD=caio123 + - POSTGRES_DB=evolution + - POSTGRES_HOST_AUTH_METHOD=trust + volumes: + - evolution-clean_postgres_data:/var/lib/postgresql/data + expose: + - 5432 + +volumes: + evolution-clean_evolution_instances: + external: true + evolution-clean_evolution_redis: + external: true + evolution-clean_postgres_data: + external: true + +networks: + evolution-net: + name: evolution-net + driver: bridge +EOF +``` + +### 4. Pare a Evolution antiga (se estiver rodando) +```bash +cd ~/evolution-clean +docker-compose down +``` + +### 5. Build da nova imagem +```bash +cd ~/evolution-api-custom +docker-compose -f docker-compose.prod.yaml build --no-cache +``` + +### 6. Suba os containers +```bash +docker-compose -f docker-compose.prod.yaml up -d +``` + +### 7. Verifique os logs +```bash +docker-compose -f docker-compose.prod.yaml logs -f api +``` + +--- + +## 🔄 Comandos Úteis + +### Ver status dos containers +```bash +docker-compose -f docker-compose.prod.yaml ps +``` + +### Reiniciar a API +```bash +docker-compose -f docker-compose.prod.yaml restart api +``` + +### Ver logs em tempo real +```bash +docker-compose -f docker-compose.prod.yaml logs -f api +``` + +### Parar todos os containers +```bash +docker-compose -f docker-compose.prod.yaml down +``` + +### Rebuild após alterações no código +```bash +git pull origin main +docker-compose -f docker-compose.prod.yaml build --no-cache +docker-compose -f docker-compose.prod.yaml up -d +``` + +--- + +## 🔍 Verificar se o Fix está Funcionando + +Nos logs da API, você deve ver: +``` +Using Multi-Device native mode (no browser identification) +``` + +**NÃO deve mais aparecer:** +``` +Browser: ['Evolution API', 'Chrome', ...] +``` + +--- + +## ⚠️ Notas Importantes + +1. **Instâncias existentes:** Continuam funcionando normalmente. As credenciais salvas não dependem do parâmetro `browser`. + +2. **Novas conexões:** Usarão o modo Multi-Device nativo automaticamente. + +3. **Se uma sessão expirar:** Ao reconectar via QR Code, já usará o novo modo. + +4. **Volumes externos:** O docker-compose usa `external: true` para apontar para os volumes existentes, preservando todos os dados. + +--- + +## 📊 Comparação: Antes vs Depois + +| Aspecto | Antes (v2.3.4 oficial) | Depois (com fix) | +|---------|------------------------|------------------| +| Identificação | `['Evolution API', 'Chrome', OS]` | Nenhuma (MD nativo) | +| Tipo de sessão | WebClient | Multi-Device | +| Aparece como | "WhatsApp Web" | Dispositivo vinculado | +| Conflita com Android | ✅ SIM | ❌ NÃO | +| Cai quando Android ativo | ✅ SIM | ❌ NÃO | + +--- + +## 🆘 Rollback (Voltar para versão oficial) + +Se precisar voltar para a versão oficial: + +```bash +cd ~/evolution-api-custom +docker-compose -f docker-compose.prod.yaml down + +cd ~/evolution-clean +docker-compose up -d +``` + +--- + +## 📅 Data da Alteração +**04 de Dezembro de 2025** + +## 👤 Autor +Alteração realizada com auxílio de IA (Claude/Cursor) + +## 🔗 Links +- Fork: https://github.com/joinads/evolution-api +- Original: https://github.com/EvolutionAPI/evolution-api +- Baileys: https://github.com/WhiskeySockets/Baileys + From 94602050577e8ed2e843588900c041b099686d20 Mon Sep 17 00:00:00 2001 From: GABRIEL-PI Date: Thu, 4 Dec 2025 14:21:20 -0300 Subject: [PATCH 29/89] =?UTF-8?q?docs:=20adiciona=20documenta=C3=A7=C3=A3o?= =?UTF-8?q?=20do=20deploy=20Multi-Device=20fix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DEPLOY-MULTIDEVICE-FIX.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/DEPLOY-MULTIDEVICE-FIX.md b/DEPLOY-MULTIDEVICE-FIX.md index 3c8b9a112a..a9d16076a9 100644 --- a/DEPLOY-MULTIDEVICE-FIX.md +++ b/DEPLOY-MULTIDEVICE-FIX.md @@ -267,14 +267,6 @@ cd ~/evolution-clean docker-compose up -d ``` ---- - -## 📅 Data da Alteração -**04 de Dezembro de 2025** - -## 👤 Autor -Alteração realizada com auxílio de IA (Claude/Cursor) - ## 🔗 Links - Fork: https://github.com/joinads/evolution-api - Original: https://github.com/EvolutionAPI/evolution-api From 35ee2fecb79e8f37f10be4ab6db1e5c9d72918bd Mon Sep 17 00:00:00 2001 From: GABRIEL-PI Date: Sat, 10 Jan 2026 13:44:28 -0300 Subject: [PATCH 30/89] chore: remove unused deploy files and cleanup whatsapp service --- DEPLOY-MULTIDEVICE-FIX.md | 274 ------------------ deploy-vps.sh | 66 ----- docker-compose.local.yaml | 120 -------- docker-compose.prod.yaml | 64 ---- .../whatsapp/whatsapp.baileys.service.ts | 6 +- 5 files changed, 4 insertions(+), 526 deletions(-) delete mode 100644 DEPLOY-MULTIDEVICE-FIX.md delete mode 100644 deploy-vps.sh delete mode 100644 docker-compose.local.yaml delete mode 100644 docker-compose.prod.yaml diff --git a/DEPLOY-MULTIDEVICE-FIX.md b/DEPLOY-MULTIDEVICE-FIX.md deleted file mode 100644 index a9d16076a9..0000000000 --- a/DEPLOY-MULTIDEVICE-FIX.md +++ /dev/null @@ -1,274 +0,0 @@ -# 🚀 Evolution API - Multi-Device Fix - -## 📋 Resumo da Alteração - -**Problema:** A Evolution API estava caindo/desconectando quando o WhatsApp Android estava ativo, porque se identificava como "WebClient" (WhatsApp Web), ocupando o slot de sessão web. - -**Solução:** Remover a identificação de browser para usar o modo Multi-Device nativo do Baileys 7.x, que não conflita com outras sessões. - ---- - -## 🔧 Alteração no Código - -### Arquivo: `src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts` - -**ANTES (WebClient - CAI):** -```typescript -const session = this.configService.get('CONFIG_SESSION_PHONE'); - -let browserOptions = {}; - -if (number || this.phoneNumber) { - this.phoneNumber = number; - this.logger.info(`Phone number: ${number}`); -} else { - const browser: WABrowserDescription = [session.CLIENT, session.NAME, release()]; - browserOptions = { browser }; - this.logger.info(`Browser: ${browser}`); -} - -// ... no socketConfig: -...browserOptions, -``` - -**DEPOIS (Multi-Device nativo - NÃO CAI):** -```typescript -if (number || this.phoneNumber) { - this.phoneNumber = number; - this.logger.info(`Phone number: ${number}`); -} - -// Multi-Device mode: não definimos browser para evitar ser tratado como WebClient -// Isso faz o Baileys usar o modo MD nativo, que não conflita com outras sessões -this.logger.info('Using Multi-Device native mode (no browser identification)'); - -// ... no socketConfig: -// Removido browserOptions para usar Multi-Device nativo (não WebClient) -``` - -### Imports removidos: -- `ConfigSessionPhone` do `@config/env.config` -- `WABrowserDescription` do `baileys` -- `release` do `os` - ---- - -## 📦 Repositório Fork - -**URL:** https://github.com/joinads/evolution-api - -**Commit:** `5dbf3e93` - "fix: usar Multi-Device nativo para evitar desconexões" - ---- - -## 🐳 Deploy na VPS com Docker Compose - -### Pré-requisitos -- Docker e Docker Compose instalados -- Acesso SSH à VPS -- Volumes existentes com dados (PostgreSQL, Redis, Instances) - -### Volumes Utilizados (externos) -``` -evolution-clean_evolution_instances # Dados das instâncias WhatsApp -evolution-clean_evolution_redis # Cache Redis -evolution-clean_postgres_data # Banco de dados PostgreSQL -``` - ---- - -## 📝 Comandos de Deploy - -### 1. Clone o repositório -```bash -cd ~ -git clone https://github.com/joinads/evolution-api.git evolution-api-custom -cd evolution-api-custom -``` - -### 2. Copie o .env existente -```bash -cp ~/evolution-clean/.env . -``` - -### 3. Crie o docker-compose.prod.yaml -```bash -cat > docker-compose.prod.yaml << 'EOF' -services: - api: - container_name: evolution_api - build: - context: . - dockerfile: Dockerfile - image: evolution-api:v2.3.4-multidevice - restart: always - depends_on: - - redis - - postgres - ports: - - 8080:8080 - volumes: - - evolution-clean_evolution_instances:/evolution/instances - networks: - - evolution-net - env_file: - - .env - expose: - - 8080 - - redis: - image: redis:latest - networks: - - evolution-net - container_name: redis - command: > - redis-server --port 6379 --appendonly yes - volumes: - - evolution-clean_evolution_redis:/data - ports: - - 6379:6379 - - postgres: - container_name: postgres - image: postgres:15 - networks: - - evolution-net - command: ["postgres", "-c", "max_connections=1000", "-c", "listen_addresses=*"] - restart: always - ports: - - 5432:5432 - environment: - - POSTGRES_USER=caio - - POSTGRES_PASSWORD=caio123 - - POSTGRES_DB=evolution - - POSTGRES_HOST_AUTH_METHOD=trust - volumes: - - evolution-clean_postgres_data:/var/lib/postgresql/data - expose: - - 5432 - -volumes: - evolution-clean_evolution_instances: - external: true - evolution-clean_evolution_redis: - external: true - evolution-clean_postgres_data: - external: true - -networks: - evolution-net: - name: evolution-net - driver: bridge -EOF -``` - -### 4. Pare a Evolution antiga (se estiver rodando) -```bash -cd ~/evolution-clean -docker-compose down -``` - -### 5. Build da nova imagem -```bash -cd ~/evolution-api-custom -docker-compose -f docker-compose.prod.yaml build --no-cache -``` - -### 6. Suba os containers -```bash -docker-compose -f docker-compose.prod.yaml up -d -``` - -### 7. Verifique os logs -```bash -docker-compose -f docker-compose.prod.yaml logs -f api -``` - ---- - -## 🔄 Comandos Úteis - -### Ver status dos containers -```bash -docker-compose -f docker-compose.prod.yaml ps -``` - -### Reiniciar a API -```bash -docker-compose -f docker-compose.prod.yaml restart api -``` - -### Ver logs em tempo real -```bash -docker-compose -f docker-compose.prod.yaml logs -f api -``` - -### Parar todos os containers -```bash -docker-compose -f docker-compose.prod.yaml down -``` - -### Rebuild após alterações no código -```bash -git pull origin main -docker-compose -f docker-compose.prod.yaml build --no-cache -docker-compose -f docker-compose.prod.yaml up -d -``` - ---- - -## 🔍 Verificar se o Fix está Funcionando - -Nos logs da API, você deve ver: -``` -Using Multi-Device native mode (no browser identification) -``` - -**NÃO deve mais aparecer:** -``` -Browser: ['Evolution API', 'Chrome', ...] -``` - ---- - -## ⚠️ Notas Importantes - -1. **Instâncias existentes:** Continuam funcionando normalmente. As credenciais salvas não dependem do parâmetro `browser`. - -2. **Novas conexões:** Usarão o modo Multi-Device nativo automaticamente. - -3. **Se uma sessão expirar:** Ao reconectar via QR Code, já usará o novo modo. - -4. **Volumes externos:** O docker-compose usa `external: true` para apontar para os volumes existentes, preservando todos os dados. - ---- - -## 📊 Comparação: Antes vs Depois - -| Aspecto | Antes (v2.3.4 oficial) | Depois (com fix) | -|---------|------------------------|------------------| -| Identificação | `['Evolution API', 'Chrome', OS]` | Nenhuma (MD nativo) | -| Tipo de sessão | WebClient | Multi-Device | -| Aparece como | "WhatsApp Web" | Dispositivo vinculado | -| Conflita com Android | ✅ SIM | ❌ NÃO | -| Cai quando Android ativo | ✅ SIM | ❌ NÃO | - ---- - -## 🆘 Rollback (Voltar para versão oficial) - -Se precisar voltar para a versão oficial: - -```bash -cd ~/evolution-api-custom -docker-compose -f docker-compose.prod.yaml down - -cd ~/evolution-clean -docker-compose up -d -``` - -## 🔗 Links -- Fork: https://github.com/joinads/evolution-api -- Original: https://github.com/EvolutionAPI/evolution-api -- Baileys: https://github.com/WhiskeySockets/Baileys - diff --git a/deploy-vps.sh b/deploy-vps.sh deleted file mode 100644 index 5c5ee61cf2..0000000000 --- a/deploy-vps.sh +++ /dev/null @@ -1,66 +0,0 @@ -#!/bin/bash - -# =========================================== -# SCRIPT DE DEPLOY - Evolution API Multi-Device -# =========================================== - -set -e - -echo "🚀 Iniciando deploy da Evolution API com Multi-Device fix..." - -# Cores para output -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -NC='\033[0m' # No Color - -# Verificar se está no diretório correto -if [ ! -f "docker-compose.prod.yaml" ]; then - echo -e "${RED}❌ Erro: Execute este script no diretório da Evolution API${NC}" - exit 1 -fi - -# Backup do docker-compose atual (se existir) -if [ -f "docker-compose.yaml" ]; then - echo -e "${YELLOW}📦 Fazendo backup do docker-compose.yaml atual...${NC}" - cp docker-compose.yaml docker-compose.yaml.backup.$(date +%Y%m%d_%H%M%S) -fi - -# Parar containers existentes (mantém volumes) -echo -e "${YELLOW}⏹️ Parando containers existentes...${NC}" -docker compose -f docker-compose.prod.yaml down 2>/dev/null || docker-compose -f docker-compose.prod.yaml down 2>/dev/null || true - -# Build da nova imagem -echo -e "${YELLOW}🔨 Buildando imagem com Multi-Device fix...${NC}" -docker compose -f docker-compose.prod.yaml build --no-cache api - -# Subir containers -echo -e "${YELLOW}🚀 Iniciando containers...${NC}" -docker compose -f docker-compose.prod.yaml up -d - -# Aguardar API iniciar -echo -e "${YELLOW}⏳ Aguardando API iniciar...${NC}" -sleep 10 - -# Verificar status -echo -e "${GREEN}✅ Deploy concluído!${NC}" -echo "" -echo "📊 Status dos containers:" -docker compose -f docker-compose.prod.yaml ps - -echo "" -echo "📋 Últimos logs da API:" -docker compose -f docker-compose.prod.yaml logs api --tail 20 - -echo "" -echo -e "${GREEN}========================================${NC}" -echo -e "${GREEN}🎉 Evolution API Multi-Device está rodando!${NC}" -echo -e "${GREEN}========================================${NC}" -echo "" -echo "🔗 Acesse: http://SEU_IP:8080" -echo "📚 Docs: http://SEU_IP:8080/docs" -echo "🖥️ Manager: http://SEU_IP:8080/manager" -echo "" -echo "💡 Para ver logs em tempo real:" -echo " docker compose -f docker-compose.prod.yaml logs -f api" - diff --git a/docker-compose.local.yaml b/docker-compose.local.yaml deleted file mode 100644 index 1c68ee4070..0000000000 --- a/docker-compose.local.yaml +++ /dev/null @@ -1,120 +0,0 @@ -version: "3.8" - -services: - api: - container_name: evolution_api_local - build: - context: . - dockerfile: Dockerfile - restart: unless-stopped - depends_on: - postgres: - condition: service_healthy - redis: - condition: service_started - ports: - - "8080:8080" - volumes: - - evolution_instances:/evolution/instances - networks: - - evolution-local - environment: - # Servidor - - SERVER_NAME=evolution - - SERVER_TYPE=http - - SERVER_PORT=8080 - - SERVER_URL=http://localhost:8080 - - SERVER_DISABLE_DOCS=false - - SERVER_DISABLE_MANAGER=false - - # Banco de dados - - DATABASE_PROVIDER=postgresql - - DATABASE_CONNECTION_URI=postgresql://evolution:evolution123@postgres:5432/evolution - - DATABASE_CONNECTION_CLIENT_NAME=evolution - - DATABASE_SAVE_DATA_INSTANCE=true - - DATABASE_SAVE_DATA_NEW_MESSAGE=true - - DATABASE_SAVE_MESSAGE_UPDATE=true - - DATABASE_SAVE_DATA_CONTACTS=true - - DATABASE_SAVE_DATA_CHATS=true - - DATABASE_SAVE_DATA_HISTORIC=true - - DATABASE_SAVE_DATA_LABELS=true - - DATABASE_SAVE_IS_ON_WHATSAPP=true - - DATABASE_SAVE_IS_ON_WHATSAPP_DAYS=7 - - # Redis - - CACHE_REDIS_ENABLED=true - - CACHE_REDIS_URI=redis://redis:6379 - - CACHE_REDIS_PREFIX_KEY=evolution-cache - - CACHE_REDIS_TTL=604800 - - CACHE_REDIS_SAVE_INSTANCES=true - - CACHE_LOCAL_ENABLED=true - - # Autenticação - - AUTHENTICATION_API_KEY=sua-api-key-aqui - - AUTHENTICATION_EXPOSE_IN_FETCH_INSTANCES=false - - # Logs - - LOG_LEVEL=ERROR,WARN,DEBUG,INFO,LOG,VERBOSE,WEBHOOKS,WEBSOCKET - - LOG_COLOR=true - - LOG_BAILEYS=error - - # Instâncias - - DEL_INSTANCE=false - - DEL_TEMP_INSTANCES=true - - # Idioma - - LANGUAGE=pt-BR - - # WebSocket - - WEBSOCKET_ENABLED=true - - WEBSOCKET_GLOBAL_EVENTS=true - - # QR Code - - QRCODE_LIMIT=30 - - QRCODE_COLOR=#198754 - - # Telemetria - - TELEMETRY_ENABLED=false - - postgres: - container_name: evolution_postgres_local - image: postgres:15-alpine - restart: unless-stopped - environment: - - POSTGRES_DB=evolution - - POSTGRES_USER=evolution - - POSTGRES_PASSWORD=evolution123 - volumes: - - postgres_data:/var/lib/postgresql/data - networks: - - evolution-local - ports: - - "5432:5432" - healthcheck: - test: ["CMD-SHELL", "pg_isready -U evolution -d evolution"] - interval: 5s - timeout: 5s - retries: 5 - - redis: - container_name: evolution_redis_local - image: redis:7-alpine - restart: unless-stopped - command: redis-server --appendonly yes - volumes: - - redis_data:/data - networks: - - evolution-local - ports: - - "6379:6379" - -volumes: - evolution_instances: - postgres_data: - redis_data: - -networks: - evolution-local: - name: evolution-local - driver: bridge - diff --git a/docker-compose.prod.yaml b/docker-compose.prod.yaml deleted file mode 100644 index 7f05d11cab..0000000000 --- a/docker-compose.prod.yaml +++ /dev/null @@ -1,64 +0,0 @@ -services: - api: - container_name: evolution_api - # Build local com as alterações do Multi-Device - build: - context: . - dockerfile: Dockerfile - image: evolution-api:v2.3.4-multidevice - restart: always - depends_on: - - redis - - postgres - ports: - - 8080:8080 - volumes: - - evolution_instances:/evolution/instances - networks: - - evolution-net - env_file: - - .env - expose: - - 8080 - - redis: - image: redis:latest - networks: - - evolution-net - container_name: redis - command: > - redis-server --port 6379 --appendonly yes - volumes: - - evolution_redis:/data - ports: - - 6379:6379 - - postgres: - container_name: postgres - image: postgres:15 - networks: - - evolution-net - command: ["postgres", "-c", "max_connections=1000", "-c", "listen_addresses=*"] - restart: always - ports: - - 5432:5432 - environment: - - POSTGRES_USER=caio - - POSTGRES_PASSWORD=caio123 - - POSTGRES_DB=evolution - - POSTGRES_HOST_AUTH_METHOD=trust - volumes: - - postgres_data:/var/lib/postgresql/data - expose: - - 5432 - -volumes: - evolution_instances: - evolution_redis: - postgres_data: - -networks: - evolution-net: - name: evolution-net - driver: bridge - diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 6957c2d4d2..239bf73861 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -621,17 +621,19 @@ export class BaileysStartupService extends ChannelStartupService { private async createClient(number?: string): Promise { this.instance.authState = await this.defineAuthState(); - if (number || this.phoneNumber) { + if (number) { this.phoneNumber = number; - this.logger.info(`Phone number: ${number}`); } +<<<<<<< HEAD // Multi-Device mode: não definimos browser para evitar ser tratado como WebClient // Isso faz o Baileys usar o modo MD nativo, que não conflita com outras sessões this.logger.info('Using Multi-Device native mode (no browser identification)'); // Fetch latest WhatsApp Web version automatically +======= +>>>>>>> 6b18bc21 (chore: remove unused deploy files and cleanup whatsapp service) const baileysVersion = await fetchLatestWaWebVersion({}); const version = baileysVersion.version; From a99960379942d1c23a11a5e5d4e52b0378b18e90 Mon Sep 17 00:00:00 2001 From: GABRIEL-PI Date: Sat, 10 Jan 2026 13:54:45 -0300 Subject: [PATCH 31/89] fix: resolve merge markers in whatsapp service --- .../channel/whatsapp/whatsapp.baileys.service.ts | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 239bf73861..7fc8970a9e 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -626,14 +626,7 @@ export class BaileysStartupService extends ChannelStartupService { this.logger.info(`Phone number: ${number}`); } -<<<<<<< HEAD - // Multi-Device mode: não definimos browser para evitar ser tratado como WebClient - // Isso faz o Baileys usar o modo MD nativo, que não conflita com outras sessões - this.logger.info('Using Multi-Device native mode (no browser identification)'); - // Fetch latest WhatsApp Web version automatically -======= ->>>>>>> 6b18bc21 (chore: remove unused deploy files and cleanup whatsapp service) const baileysVersion = await fetchLatestWaWebVersion({}); const version = baileysVersion.version; From f07166f945190be67e83cc58908b15fe7a2e8b6d Mon Sep 17 00:00:00 2001 From: Vitor Duggen Date: Wed, 14 Jan 2026 10:08:55 -0300 Subject: [PATCH 32/89] fix(baileys): improve error logging for fetching latest WaWeb version --- .../channel/whatsapp/whatsapp.baileys.service.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 4db8146cc2..52dd0de79a 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -646,6 +646,11 @@ export class BaileysStartupService extends ChannelStartupService { const log = `Baileys version: ${version.join('.')}`; this.logger.info(log); + const error = baileysVersion?.error ?? null; + if (error) { + this.logger.error(`Fetch latest WaWeb version error: ${error.message}`); + } + this.logger.info(`Group Ignore: ${this.localSettings.groupsIgnore}`); let options; From f5c8a3d791db17ac69252db7413ee6e99f3edf83 Mon Sep 17 00:00:00 2001 From: Vitor Duggen Date: Wed, 14 Jan 2026 10:18:51 -0300 Subject: [PATCH 33/89] fix(baileys): enhance error logging by serializing error object for fetching latest WaWeb version --- .../integrations/channel/whatsapp/whatsapp.baileys.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 52dd0de79a..358f1aafc0 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -648,7 +648,7 @@ export class BaileysStartupService extends ChannelStartupService { const error = baileysVersion?.error ?? null; if (error) { - this.logger.error(`Fetch latest WaWeb version error: ${error.message}`); + this.logger.error(`Fetch latest WaWeb version error: ${JSON.stringify({ error })}`); } this.logger.info(`Group Ignore: ${this.localSettings.groupsIgnore}`); From 5613dd4ec8893e4873fddc526062a3c59fa4e395 Mon Sep 17 00:00:00 2001 From: Jeferson Ramos Date: Wed, 14 Jan 2026 11:11:48 -0300 Subject: [PATCH 34/89] feat: add generateMessageID method and support for messageId in sendMessage DTO --- src/api/dto/sendMessage.dto.ts | 2 ++ .../evolution/evolution.channel.service.ts | 6 +++++- .../channel/whatsapp/baileys.controller.ts | 6 ++++++ .../channel/whatsapp/baileys.router.ts | 10 ++++++++++ .../whatsapp/whatsapp.baileys.service.ts | 18 ++++++++++++++++-- 5 files changed, 39 insertions(+), 3 deletions(-) diff --git a/src/api/dto/sendMessage.dto.ts b/src/api/dto/sendMessage.dto.ts index ba9ecf527c..797ca111ba 100644 --- a/src/api/dto/sendMessage.dto.ts +++ b/src/api/dto/sendMessage.dto.ts @@ -14,6 +14,7 @@ export class Options { mentionsEveryOne?: boolean; mentioned?: string[]; webhookUrl?: string; + messageId?: string; } export class MediaMessage { @@ -45,6 +46,7 @@ export class Metadata { mentioned?: string[]; encoding?: boolean; notConvertSticker?: boolean; + messageId?: string; } export class SendTextDto extends Metadata { diff --git a/src/api/integrations/channel/evolution/evolution.channel.service.ts b/src/api/integrations/channel/evolution/evolution.channel.service.ts index 87bea08e6e..3d8e632e21 100644 --- a/src/api/integrations/channel/evolution/evolution.channel.service.ts +++ b/src/api/integrations/channel/evolution/evolution.channel.service.ts @@ -318,7 +318,7 @@ export class EvolutionStartupService extends ChannelStartupService { let audioFile; - const messageId = v4(); + const messageId = options?.messageId || v4(); let messageRaw: any; @@ -548,6 +548,7 @@ export class EvolutionStartupService extends ChannelStartupService { linkPreview: data?.linkPreview, mentionsEveryOne: data?.mentionsEveryOne, mentioned: data?.mentioned, + messageId: data?.messageId, }, null, isIntegration, @@ -613,6 +614,7 @@ export class EvolutionStartupService extends ChannelStartupService { linkPreview: data?.linkPreview, mentionsEveryOne: data?.mentionsEveryOne, mentioned: data?.mentioned, + messageId: data?.messageId, }, file, isIntegration, @@ -711,6 +713,7 @@ export class EvolutionStartupService extends ChannelStartupService { linkPreview: data?.linkPreview, mentionsEveryOne: data?.mentionsEveryOne, mentioned: data?.mentioned, + messageId: data?.messageId, }, file, isIntegration, @@ -736,6 +739,7 @@ export class EvolutionStartupService extends ChannelStartupService { quoted: data?.quoted, mentionsEveryOne: data?.mentionsEveryOne, mentioned: data?.mentioned, + messageId: data?.messageId, }, null, isIntegration, diff --git a/src/api/integrations/channel/whatsapp/baileys.controller.ts b/src/api/integrations/channel/whatsapp/baileys.controller.ts index ee547338da..5a6e121dd6 100644 --- a/src/api/integrations/channel/whatsapp/baileys.controller.ts +++ b/src/api/integrations/channel/whatsapp/baileys.controller.ts @@ -10,6 +10,12 @@ export class BaileysController { return instance.baileysOnWhatsapp(body?.jid); } + public async generateMessageID({ instanceName }: InstanceDto) { + const instance = this.waMonitor.waInstances[instanceName]; + + return instance.generateMessageID(); + } + public async profilePictureUrl({ instanceName }: InstanceDto, body: any) { const instance = this.waMonitor.waInstances[instanceName]; diff --git a/src/api/integrations/channel/whatsapp/baileys.router.ts b/src/api/integrations/channel/whatsapp/baileys.router.ts index 04a1d565fb..354995e049 100644 --- a/src/api/integrations/channel/whatsapp/baileys.router.ts +++ b/src/api/integrations/channel/whatsapp/baileys.router.ts @@ -19,6 +19,16 @@ export class BaileysRouter extends RouterBroker { res.status(HttpStatus.OK).json(response); }) + .get(this.routerPath('generateMessageID'), ...guards, async (req, res) => { + const response = await this.dataValidate({ + request: req, + schema: instanceSchema, + ClassRef: InstanceDto, + execute: (instance) => baileysController.generateMessageID(instance), + }); + + res.status(HttpStatus.OK).json(response); + }) .post(this.routerPath('profilePictureUrl'), ...guards, async (req, res) => { const response = await this.dataValidate({ request: req, diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index c87342013a..a5435bcc6a 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -128,6 +128,7 @@ import makeWASocket, { WAMessageKey, WAPresence, WASocket, + generateMessageIDV2 } from 'baileys'; import { Label } from 'baileys/lib/Types/Label'; import { LabelAssociation } from 'baileys/lib/Types/LabelAssociation'; @@ -1979,6 +1980,13 @@ export class BaileysStartupService extends ChannelStartupService { } } + private async generateMessageID() { + + return { + id: generateMessageIDV2(this.client.user?.id) + }; + } + private async sendMessage( sender: string, message: any, @@ -2242,7 +2250,7 @@ export class BaileysStartupService extends ChannelStartupService { mentions, linkPreview, quoted, - null, + options.messageId, group?.ephemeralDuration, // group?.participants, ); @@ -2264,7 +2272,7 @@ export class BaileysStartupService extends ChannelStartupService { mentions, linkPreview, quoted, - null, + options.messageId, undefined, contextInfo, ); @@ -2490,6 +2498,7 @@ export class BaileysStartupService extends ChannelStartupService { linkPreview: data?.linkPreview, mentionsEveryOne: data?.mentionsEveryOne, mentioned: data?.mentioned, + messageId: data?.messageId, }, isIntegration, ); @@ -2506,6 +2515,7 @@ export class BaileysStartupService extends ChannelStartupService { linkPreview: data?.linkPreview, mentionsEveryOne: data?.mentionsEveryOne, mentioned: data?.mentioned, + messageId: data?.messageId, }, ); } @@ -2819,6 +2829,7 @@ export class BaileysStartupService extends ChannelStartupService { quoted: data?.quoted, mentionsEveryOne: data?.mentionsEveryOne, mentioned: data?.mentioned, + messageId: data?.messageId, }, ); @@ -2841,6 +2852,7 @@ export class BaileysStartupService extends ChannelStartupService { quoted: data?.quoted, mentionsEveryOne: data?.mentionsEveryOne, mentioned: data?.mentioned, + messageId: data?.messageId, }, isIntegration, ); @@ -2857,6 +2869,7 @@ export class BaileysStartupService extends ChannelStartupService { quoted: data?.quoted, mentionsEveryOne: data?.mentionsEveryOne, mentioned: data?.mentioned, + messageId: data?.messageId, }; if (file) mediaData.media = file.buffer.toString('base64'); @@ -2872,6 +2885,7 @@ export class BaileysStartupService extends ChannelStartupService { quoted: data?.quoted, mentionsEveryOne: data?.mentionsEveryOne, mentioned: data?.mentioned, + messageId: data?.messageId, }, isIntegration, ); From 04913a8a3e33f4973d74fead391af6e3f46376be Mon Sep 17 00:00:00 2001 From: Jeferson Ramos Date: Wed, 14 Jan 2026 11:35:01 -0300 Subject: [PATCH 35/89] Fix lint --- .../channel/whatsapp/whatsapp.baileys.service.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index a5435bcc6a..5b5c1a51f9 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -103,6 +103,7 @@ import makeWASocket, { DisconnectReason, downloadContentFromMessage, downloadMediaMessage, + generateMessageIDV2, generateWAMessageFromContent, getAggregateVotesInPollMessage, GetCatalogOptions, @@ -128,7 +129,6 @@ import makeWASocket, { WAMessageKey, WAPresence, WASocket, - generateMessageIDV2 } from 'baileys'; import { Label } from 'baileys/lib/Types/Label'; import { LabelAssociation } from 'baileys/lib/Types/LabelAssociation'; @@ -1981,9 +1981,8 @@ export class BaileysStartupService extends ChannelStartupService { } private async generateMessageID() { - return { - id: generateMessageIDV2(this.client.user?.id) + id: generateMessageIDV2(this.client.user?.id), }; } From ee83aaca3e53257a6cb31f56d205bbc4447e4347 Mon Sep 17 00:00:00 2001 From: Jeferson Ramos <36611481+JefersonRamos@users.noreply.github.com> Date: Wed, 14 Jan 2026 11:35:59 -0300 Subject: [PATCH 36/89] Update src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com> --- .../channel/whatsapp/whatsapp.baileys.service.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 5b5c1a51f9..22b0f46942 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -1979,10 +1979,9 @@ export class BaileysStartupService extends ChannelStartupService { return error; } } - - private async generateMessageID() { + public generateMessageID() { return { - id: generateMessageIDV2(this.client.user?.id), + id: generateMessageIDV2(this.client.user?.id) }; } From 048f82590ca81de9689eaa96ad2865f69d1c9392 Mon Sep 17 00:00:00 2001 From: Jeferson Ramos <36611481+JefersonRamos@users.noreply.github.com> Date: Wed, 14 Jan 2026 11:36:20 -0300 Subject: [PATCH 37/89] Update src/api/integrations/channel/evolution/evolution.channel.service.ts Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com> --- .../integrations/channel/evolution/evolution.channel.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/api/integrations/channel/evolution/evolution.channel.service.ts b/src/api/integrations/channel/evolution/evolution.channel.service.ts index 3d8e632e21..76a154fb17 100644 --- a/src/api/integrations/channel/evolution/evolution.channel.service.ts +++ b/src/api/integrations/channel/evolution/evolution.channel.service.ts @@ -318,7 +318,7 @@ export class EvolutionStartupService extends ChannelStartupService { let audioFile; - const messageId = options?.messageId || v4(); + const messageId = options?.messageId ?? v4(); let messageRaw: any; From e5fab3ef2b630804baefc9c161faf6612ccb8aed Mon Sep 17 00:00:00 2001 From: Jeferson Ramos <36611481+JefersonRamos@users.noreply.github.com> Date: Wed, 14 Jan 2026 13:14:03 -0300 Subject: [PATCH 38/89] Update whatsapp.baileys.service.ts --- .../integrations/channel/whatsapp/whatsapp.baileys.service.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 22b0f46942..9a6763e162 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -2248,7 +2248,7 @@ export class BaileysStartupService extends ChannelStartupService { mentions, linkPreview, quoted, - options.messageId, + optionsoptions?.messageId ?? null, group?.ephemeralDuration, // group?.participants, ); @@ -2270,7 +2270,7 @@ export class BaileysStartupService extends ChannelStartupService { mentions, linkPreview, quoted, - options.messageId, + options?.messageId ?? null, undefined, contextInfo, ); From 13338df1bce328f9f02bc9906366dcd3f109cf03 Mon Sep 17 00:00:00 2001 From: Jeferson Ramos Date: Wed, 14 Jan 2026 13:47:14 -0300 Subject: [PATCH 39/89] fix: correct syntax in generateMessageID method --- .../integrations/channel/whatsapp/whatsapp.baileys.service.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 9a6763e162..b2c291f012 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -1981,7 +1981,7 @@ export class BaileysStartupService extends ChannelStartupService { } public generateMessageID() { return { - id: generateMessageIDV2(this.client.user?.id) + id: generateMessageIDV2(this.client.user?.id), }; } @@ -2248,7 +2248,7 @@ export class BaileysStartupService extends ChannelStartupService { mentions, linkPreview, quoted, - optionsoptions?.messageId ?? null, + options?.messageId ?? null, group?.ephemeralDuration, // group?.participants, ); From afb76b7b35043baeff3bcf4a3f517e1c8757279b Mon Sep 17 00:00:00 2001 From: Vitor Duggen Date: Wed, 14 Jan 2026 20:24:44 -0300 Subject: [PATCH 40/89] feat(baileys): implement caching for WhatsApp Web version fetching - Added caching mechanism to store and retrieve the latest WhatsApp Web version - Enhanced error handling to utilize cached fallback versions when fetching fails - Updated the fetchLatestWaWebVersion function to accept a cache service as an optional parameter --- .../whatsapp/whatsapp.baileys.service.ts | 2 +- src/utils/fetchLatestWaWebVersion.ts | 60 +++++++++++++++++-- 2 files changed, 57 insertions(+), 5 deletions(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 358f1aafc0..32d66fcb60 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -640,7 +640,7 @@ export class BaileysStartupService extends ChannelStartupService { } // Fetch latest WhatsApp Web version automatically - const baileysVersion = await fetchLatestWaWebVersion({}); + const baileysVersion = await fetchLatestWaWebVersion({}, this.cache); const version = baileysVersion.version; const log = `Baileys version: ${version.join('.')}`; diff --git a/src/utils/fetchLatestWaWebVersion.ts b/src/utils/fetchLatestWaWebVersion.ts index f6b0aa6d61..f973f20f22 100644 --- a/src/utils/fetchLatestWaWebVersion.ts +++ b/src/utils/fetchLatestWaWebVersion.ts @@ -1,9 +1,20 @@ import axios, { AxiosRequestConfig } from 'axios'; import { fetchLatestBaileysVersion, WAVersion } from 'baileys'; +import { CacheService } from '../api/services/cache.service'; +import { CacheEngine } from '../cache/cacheengine'; import { Baileys, configService } from '../config/env.config'; -export const fetchLatestWaWebVersion = async (options: AxiosRequestConfig<{}>) => { +// Cache keys +const CACHE_KEY_WHATSAPP_WEB_VERSION = 'whatsapp_web_version'; +const CACHE_KEY_BAILEYS_FALLBACK_VERSION = 'baileys_fallback_version'; + +// Cache TTL (1 hour in seconds) +const CACHE_TTL_SECONDS = 3600; + +const MODULE_NAME = 'whatsapp-version'; + +export const fetchLatestWaWebVersion = async (options: AxiosRequestConfig<{}>, cache?: CacheService) => { // Check if manual version is set via configuration const baileysConfig = configService.get('BAILEYS'); const manualVersion = baileysConfig?.VERSION; @@ -19,6 +30,22 @@ export const fetchLatestWaWebVersion = async (options: AxiosRequestConfig<{}>) = } } + let versionCache = cache || null; + + if (!versionCache) { + // Cache estático para versões do WhatsApp Web e fallback do Baileys (fallback se não for passado via parâmetro) + const cacheEngine = new CacheEngine(configService, MODULE_NAME); + const engine = cacheEngine.getEngine(); + const defaultVersionCache = new CacheService(engine); + versionCache = defaultVersionCache; + } + + // Check cache for WhatsApp Web version + const cachedWaVersion = await versionCache.get(CACHE_KEY_WHATSAPP_WEB_VERSION); + if (cachedWaVersion) { + return cachedWaVersion; + } + try { const { data } = await axios.get('https://web.whatsapp.com/sw.js', { ...options, @@ -29,26 +56,51 @@ export const fetchLatestWaWebVersion = async (options: AxiosRequestConfig<{}>) = const match = data.match(regex); if (!match?.[1]) { - return { + // Check cache for Baileys fallback version + const cachedFallback = await versionCache.get(CACHE_KEY_BAILEYS_FALLBACK_VERSION); + if (cachedFallback) { + return cachedFallback; + } + + // Fetch and cache Baileys fallback version + const fallbackVersion = { version: (await fetchLatestBaileysVersion()).version as WAVersion, isLatest: false, error: { message: 'Could not find client revision in the fetched content', }, }; + + await versionCache.set(CACHE_KEY_BAILEYS_FALLBACK_VERSION, fallbackVersion, CACHE_TTL_SECONDS); + return fallbackVersion; } const clientRevision = match[1]; - return { + const result = { version: [2, 3000, +clientRevision] as WAVersion, isLatest: true, }; + + // Cache the successful result + await versionCache.set(CACHE_KEY_WHATSAPP_WEB_VERSION, result, CACHE_TTL_SECONDS); + + return result; } catch (error) { - return { + // Check cache for Baileys fallback version + const cachedFallback = await versionCache.get(CACHE_KEY_BAILEYS_FALLBACK_VERSION); + if (cachedFallback) { + return cachedFallback; + } + + // Fetch and cache Baileys fallback version + const fallbackVersion = { version: (await fetchLatestBaileysVersion()).version as WAVersion, isLatest: false, error, }; + + await versionCache.set(CACHE_KEY_BAILEYS_FALLBACK_VERSION, fallbackVersion, CACHE_TTL_SECONDS); + return fallbackVersion; } }; From 3d253fff3ef2e7dacb27dae79acf7f0aed5ff216 Mon Sep 17 00:00:00 2001 From: "felipe.francca" Date: Fri, 16 Jan 2026 09:10:05 -0300 Subject: [PATCH 41/89] =?UTF-8?q?Corre=C3=A7=C3=A3o=20de=20bug:=20Loop=20i?= =?UTF-8?q?nfinito=20de=20reconex=C3=A3o=20do=20c=C3=B3digo=20QR?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../channel/whatsapp/whatsapp.baileys.service.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 60e857fcc1..8f941a2ecd 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -426,8 +426,19 @@ export class BaileysStartupService extends ChannelStartupService { if (connection === 'close') { const statusCode = (lastDisconnect?.error as Boom)?.output?.statusCode; const codesToNotReconnect = [DisconnectReason.loggedOut, DisconnectReason.forbidden, 402, 406]; + + // FIX: Não reconectar se é primeira conexão (aguardando QR code) + // Isso evita loop infinito que impede geração do QR + const isInitialConnection = !this.instance.wuid && this.instance.qrcode.count === 0; + + if (isInitialConnection) { + this.logger.info('Initial connection closed, waiting for QR code generation...'); + return; + } + const shouldReconnect = !codesToNotReconnect.includes(statusCode); if (shouldReconnect) { + this.logger.warn(`Connection lost (status: ${statusCode}), reconnecting...`); await this.connectToWhatsapp(this.phoneNumber); } else { this.sendDataWebhook(Events.STATUS_INSTANCE, { From 69e7403ded5691a5189e0d87e09c542e51ea1bb8 Mon Sep 17 00:00:00 2001 From: "felipe.francca" Date: Mon, 19 Jan 2026 15:14:55 -0300 Subject: [PATCH 42/89] refactor: apply code review suggestions (safety checks and logging) --- .../channel/whatsapp/whatsapp.baileys.service.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 8f941a2ecd..f32d4a0e48 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -427,9 +427,9 @@ export class BaileysStartupService extends ChannelStartupService { const statusCode = (lastDisconnect?.error as Boom)?.output?.statusCode; const codesToNotReconnect = [DisconnectReason.loggedOut, DisconnectReason.forbidden, 402, 406]; - // FIX: Não reconectar se é primeira conexão (aguardando QR code) - // Isso evita loop infinito que impede geração do QR - const isInitialConnection = !this.instance.wuid && this.instance.qrcode.count === 0; + // FIX: Do not reconnect if it's the initial connection (waiting for QR code) + // This prevents infinite loop that blocks QR code generation + const isInitialConnection = !this.instance.wuid && (this.instance.qrcode?.count ?? 0) === 0; if (isInitialConnection) { this.logger.info('Initial connection closed, waiting for QR code generation...'); @@ -441,6 +441,9 @@ export class BaileysStartupService extends ChannelStartupService { this.logger.warn(`Connection lost (status: ${statusCode}), reconnecting...`); await this.connectToWhatsapp(this.phoneNumber); } else { + this.logger.info( + `Skipping reconnection for status code ${statusCode} (code is in codesToNotReconnect list)`, + ); this.sendDataWebhook(Events.STATUS_INSTANCE, { instance: this.instance.name, status: 'closed', From 70d334b0b604b8b08170bc7a88e46057051231b0 Mon Sep 17 00:00:00 2001 From: Jeferson Ramos Date: Tue, 20 Jan 2026 10:45:58 -0300 Subject: [PATCH 43/89] fix(whatsapp): enhance contact and chat handling with improved JID mapping and debug logging --- .../whatsapp/whatsapp.baileys.service.ts | 47 +++++++++++++++++-- 1 file changed, 44 insertions(+), 3 deletions(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 60e857fcc1..9b8f31f7ae 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -939,6 +939,14 @@ export class BaileysStartupService extends ChannelStartupService { progress?: number; syncType?: proto.HistorySync.HistorySyncType; }) => { + //These logs are crucial; when something changes in Baileys/WhatsApp, we can more easily understand what changed! + this.logger.debug('Messages abaixo'); + this.logger.debug(messages); + this.logger.debug('Chats abaixo'); + this.logger.debug(chats); + this.logger.debug('Contatos abaixo'); + this.logger.debug(contacts); + try { if (syncType === proto.HistorySync.HistorySyncType.ON_DEMAND) { console.log('received on-demand history sync, messages=', messages); @@ -967,14 +975,30 @@ export class BaileysStartupService extends ChannelStartupService { } const contactsMap = new Map(); + const contactsMapLidJid = new Map(); for (const contact of contacts) { + + let jid = null; + + if (contact?.id?.search('@lid') !== -1) { + if (contact.phoneNumber) { + jid = contact.phoneNumber; + } + } + + if (!jid) { + jid = contact?.id; + } + if (contact.id && (contact.notify || contact.name)) { - contactsMap.set(contact.id, { name: contact.name ?? contact.notify, jid: contact.id }); + contactsMap.set(contact.id, { name: contact.name ?? contact.notify, jid }); } + + contactsMapLidJid.set(contact.id, { jid }); } - const chatsRaw: { remoteJid: string; instanceId: string; name?: string }[] = []; + const chatsRaw: { remoteJid: string; remoteLid: string; instanceId: string; name?: string }[] = []; const chatsRepository = new Set( (await this.prismaRepository.chat.findMany({ where: { instanceId: this.instanceId } })).map( (chat) => chat.remoteJid, @@ -986,7 +1010,24 @@ export class BaileysStartupService extends ChannelStartupService { continue; } - chatsRaw.push({ remoteJid: chat.id, instanceId: this.instanceId, name: chat.name }); + let remoteJid = null; + let remoteLid = null; + + if (chat.id.search('@lid') !== -1) { + const contact = contactsMapLidJid.get(chat.id); + + remoteLid = chat.id; + + if (contact && contact.jid) { + remoteJid = contact.jid; + } + } + + if (!remoteJid) { + remoteJid = chat.id; + } + + chatsRaw.push({ remoteJid, remoteLid, instanceId: this.instanceId, name: chat.name }); } this.sendDataWebhook(Events.CHATS_SET, chatsRaw); From 3979a9e08ca1eb6e53c66abee41a1de118a1a120 Mon Sep 17 00:00:00 2001 From: Jeferson Ramos Date: Tue, 20 Jan 2026 10:53:06 -0300 Subject: [PATCH 44/89] fix(whatsapp): remove unnecessary blank line in contacts mapping loop --- .../integrations/channel/whatsapp/whatsapp.baileys.service.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 9b8f31f7ae..7ed2750cae 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -978,7 +978,6 @@ export class BaileysStartupService extends ChannelStartupService { const contactsMapLidJid = new Map(); for (const contact of contacts) { - let jid = null; if (contact?.id?.search('@lid') !== -1) { From 06b0ff0e27903d3811c725488ddb8c4b8e691292 Mon Sep 17 00:00:00 2001 From: Jeferson Ramos Date: Tue, 20 Jan 2026 13:14:46 -0300 Subject: [PATCH 45/89] fix(whatsapp): update chatsRaw handling to remove remoteLid and optimize variable declaration --- .../channel/whatsapp/whatsapp.baileys.service.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 7ed2750cae..eb23a7a449 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -997,7 +997,7 @@ export class BaileysStartupService extends ChannelStartupService { contactsMapLidJid.set(contact.id, { jid }); } - const chatsRaw: { remoteJid: string; remoteLid: string; instanceId: string; name?: string }[] = []; + let chatsRaw: { remoteJid: string; remoteLid: string; instanceId: string; name?: string }[] = []; const chatsRepository = new Set( (await this.prismaRepository.chat.findMany({ where: { instanceId: this.instanceId } })).map( (chat) => chat.remoteJid, @@ -1032,6 +1032,12 @@ export class BaileysStartupService extends ChannelStartupService { this.sendDataWebhook(Events.CHATS_SET, chatsRaw); if (this.configService.get('DATABASE').SAVE_DATA.HISTORIC) { + chatsRaw = chatsRaw.map((chat) => { + delete chat.remoteLid; + + return chat; + }); + await this.prismaRepository.chat.createMany({ data: chatsRaw, skipDuplicates: true }); } From d131e83d08cbb366bb710a1f0a1eba0f802f78fb Mon Sep 17 00:00:00 2001 From: Jeferson Ramos Date: Wed, 21 Jan 2026 09:53:28 -0300 Subject: [PATCH 46/89] fix(whatsapp): handle remoteLid assignment for chats with accountLid containing '@lid' --- .../integrations/channel/whatsapp/whatsapp.baileys.service.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index eb23a7a449..589719dbe0 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -1022,6 +1022,10 @@ export class BaileysStartupService extends ChannelStartupService { } } + if (!remoteLid && chat.accountLid.search('@lid') !== -1) { + remoteLid = chat.accountLid; + } + if (!remoteJid) { remoteJid = chat.id; } From b8d6c87360f189c41d6f8223d43a56c2e1f146d3 Mon Sep 17 00:00:00 2001 From: Jeferson Ramos Date: Wed, 21 Jan 2026 17:39:19 -0300 Subject: [PATCH 47/89] fix(whatsapp): correct remoteJid handling and optimize chat creation logic --- .../whatsapp/whatsapp.baileys.service.ts | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 589719dbe0..f8384c7b18 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -1028,7 +1028,7 @@ export class BaileysStartupService extends ChannelStartupService { if (!remoteJid) { remoteJid = chat.id; - } + } chatsRaw.push({ remoteJid, remoteLid, instanceId: this.instanceId, name: chat.name }); } @@ -1036,13 +1036,13 @@ export class BaileysStartupService extends ChannelStartupService { this.sendDataWebhook(Events.CHATS_SET, chatsRaw); if (this.configService.get('DATABASE').SAVE_DATA.HISTORIC) { - chatsRaw = chatsRaw.map((chat) => { - delete chat.remoteLid; + const chatsToCreateMany = JSON.parse(JSON.stringify(chatsRaw)).map((chat) => { + delete chat.remoteLid; return chat; - }); + }) - await this.prismaRepository.chat.createMany({ data: chatsRaw, skipDuplicates: true }); + await this.prismaRepository.chat.createMany({ data: chatsToCreateMany, skipDuplicates: true }); } const messagesRaw: any[] = []; @@ -1525,8 +1525,15 @@ export class BaileysStartupService extends ChannelStartupService { this.logger.verbose(messageRaw); sendTelemetry(`received.message.${messageRaw.messageType ?? 'unknown'}`); + if (messageRaw.key.remoteJid?.includes('@lid') && messageRaw.key.remoteJidAlt) { + + const lid = messageRaw.key.remoteJid + messageRaw.key.remoteJid = messageRaw.key.remoteJidAlt; + messageRaw.key.remoteJidAlt = lid + + messageRaw.key.addressingMode = 'pn' } console.log(messageRaw); From 9401216927910fc439558e4586f9def9e4d4a308 Mon Sep 17 00:00:00 2001 From: Jeferson Ramos Date: Wed, 21 Jan 2026 17:42:50 -0300 Subject: [PATCH 48/89] fix(whatsapp): lint --- .../channel/whatsapp/whatsapp.baileys.service.ts | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index f8384c7b18..9db4bfcb3c 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -997,7 +997,7 @@ export class BaileysStartupService extends ChannelStartupService { contactsMapLidJid.set(contact.id, { jid }); } - let chatsRaw: { remoteJid: string; remoteLid: string; instanceId: string; name?: string }[] = []; + const chatsRaw: { remoteJid: string; remoteLid: string; instanceId: string; name?: string }[] = []; const chatsRepository = new Set( (await this.prismaRepository.chat.findMany({ where: { instanceId: this.instanceId } })).map( (chat) => chat.remoteJid, @@ -1028,7 +1028,7 @@ export class BaileysStartupService extends ChannelStartupService { if (!remoteJid) { remoteJid = chat.id; - } + } chatsRaw.push({ remoteJid, remoteLid, instanceId: this.instanceId, name: chat.name }); } @@ -1036,11 +1036,10 @@ export class BaileysStartupService extends ChannelStartupService { this.sendDataWebhook(Events.CHATS_SET, chatsRaw); if (this.configService.get('DATABASE').SAVE_DATA.HISTORIC) { - const chatsToCreateMany = JSON.parse(JSON.stringify(chatsRaw)).map((chat) => { delete chat.remoteLid; return chat; - }) + }); await this.prismaRepository.chat.createMany({ data: chatsToCreateMany, skipDuplicates: true }); } @@ -1527,13 +1526,12 @@ export class BaileysStartupService extends ChannelStartupService { sendTelemetry(`received.message.${messageRaw.messageType ?? 'unknown'}`); if (messageRaw.key.remoteJid?.includes('@lid') && messageRaw.key.remoteJidAlt) { - - const lid = messageRaw.key.remoteJid + const lid = messageRaw.key.remoteJid; messageRaw.key.remoteJid = messageRaw.key.remoteJidAlt; - messageRaw.key.remoteJidAlt = lid + messageRaw.key.remoteJidAlt = lid; - messageRaw.key.addressingMode = 'pn' + messageRaw.key.addressingMode = 'pn'; } console.log(messageRaw); From 636b9a8d067361c86d7a4dce84ea05e07382ea5d Mon Sep 17 00:00:00 2001 From: Jeferson Ramos Date: Thu, 22 Jan 2026 15:08:33 -0300 Subject: [PATCH 49/89] fix(whatsapp): ensure accountLid is defined before checking for '@lid' in remoteLid assignment --- .../integrations/channel/whatsapp/whatsapp.baileys.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 9db4bfcb3c..aa7a455515 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -1022,7 +1022,7 @@ export class BaileysStartupService extends ChannelStartupService { } } - if (!remoteLid && chat.accountLid.search('@lid') !== -1) { + if (!remoteLid && chat.accountLid && chat.accountLid.search('@lid') !== -1) { remoteLid = chat.accountLid; } From d15c434b4c9eaff6479e4734a1162651fb2ce0e1 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 26 Jan 2026 13:07:00 -0300 Subject: [PATCH 50/89] fix(baileys): interactive buttons via deviceSentMessage + CTA limits --- .../whatsapp/whatsapp.baileys.service.ts | 155 +++++++++--------- 1 file changed, 81 insertions(+), 74 deletions(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 60e857fcc1..58935c1a1c 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -3311,91 +3311,46 @@ export class BaileysStartupService extends ChannelStartupService { ]); public async buttonMessage(data: SendButtonsDto) { - if (data.buttons.length === 0) { - throw new BadRequestException('At least one button is required'); - } - - const hasReplyButtons = data.buttons.some((btn) => btn.type === 'reply'); - - const hasPixButton = data.buttons.some((btn) => btn.type === 'pix'); + if (data.buttons.length === 0) { + throw new BadRequestException('At least one button is required'); + } - const hasOtherButtons = data.buttons.some((btn) => btn.type !== 'reply' && btn.type !== 'pix'); + const hasReplyButtons = data.buttons.some((btn) => btn.type === 'reply'); + const hasPixButton = data.buttons.some((btn) => btn.type === 'pix'); + const hasOtherButtons = data.buttons.some((btn) => btn.type !== 'reply' && btn.type !== 'pix'); - if (hasReplyButtons) { - if (data.buttons.length > 3) { - throw new BadRequestException('Maximum of 3 reply buttons allowed'); - } - if (hasOtherButtons) { - throw new BadRequestException('Reply buttons cannot be mixed with other button types'); - } + // Reply rules + if (hasReplyButtons) { + if (data.buttons.length > 3) { + throw new BadRequestException('Maximum of 3 reply buttons allowed'); } - - if (hasPixButton) { - if (data.buttons.length > 1) { - throw new BadRequestException('Only one PIX button is allowed'); - } - if (hasOtherButtons) { - throw new BadRequestException('PIX button cannot be mixed with other button types'); - } - - const message: proto.IMessage = { - viewOnceMessage: { - message: { - interactiveMessage: { - nativeFlowMessage: { - buttons: [{ name: this.mapType.get('pix'), buttonParamsJson: this.toJSONString(data.buttons[0]) }], - messageParamsJson: JSON.stringify({ from: 'api', templateId: v4() }), - }, - }, - }, - }, - }; - - return await this.sendMessageWithTyping(data.number, message, { - delay: data?.delay, - presence: 'composing', - quoted: data?.quoted, - mentionsEveryOne: data?.mentionsEveryOne, - mentioned: data?.mentioned, - }); + if (hasOtherButtons) { + throw new BadRequestException('Reply buttons cannot be mixed with other button types'); } + } - const generate = await (async () => { - if (data?.thumbnailUrl) { - return await this.prepareMediaMessage({ mediatype: 'image', media: data.thumbnailUrl }); - } - })(); + // CTA rules (url/call/copy) - WhatsApp limits to 2 CTAs + if (hasOtherButtons && !hasReplyButtons && !hasPixButton) { + if (data.buttons.length > 2) { + throw new BadRequestException('Maximum of 2 CTA buttons allowed (url/call/copy)'); + } + } - const buttons = data.buttons.map((value) => { - return { name: this.mapType.get(value.type), buttonParamsJson: this.toJSONString(value) }; - }); + // PIX rules + if (hasPixButton) { + if (data.buttons.length > 1) { + throw new BadRequestException('Only one PIX button is allowed'); + } + if (hasOtherButtons) { + throw new BadRequestException('PIX button cannot be mixed with other button types'); + } const message: proto.IMessage = { - viewOnceMessage: { + deviceSentMessage: { message: { interactiveMessage: { - body: { - text: (() => { - let t = '*' + data.title + '*'; - if (data?.description) { - t += '\n\n'; - t += data.description; - t += '\n'; - } - return t; - })(), - }, - footer: { text: data?.footer }, - header: (() => { - if (generate?.message?.imageMessage) { - return { - hasMediaAttachment: !!generate.message.imageMessage, - imageMessage: generate.message.imageMessage, - }; - } - })(), nativeFlowMessage: { - buttons: buttons, + buttons: [{ name: this.mapType.get('pix'), buttonParamsJson: this.toJSONString(data.buttons[0]) }], messageParamsJson: JSON.stringify({ from: 'api', templateId: v4() }), }, }, @@ -3412,6 +3367,58 @@ export class BaileysStartupService extends ChannelStartupService { }); } + const generate = await (async () => { + if (data?.thumbnailUrl) { + return await this.prepareMediaMessage({ mediatype: 'image', media: data.thumbnailUrl }); + } + })(); + + const buttons = data.buttons.map((value) => { + return { name: this.mapType.get(value.type), buttonParamsJson: this.toJSONString(value) }; + }); + + const message: proto.IMessage = { + deviceSentMessage: { + message: { + interactiveMessage: { + body: { + text: (() => { + let t = '*' + data.title + '*'; + if (data?.description) { + t += '\n\n'; + t += data.description; + t += '\n'; + } + return t; + })(), + }, + footer: { text: data?.footer }, + header: (() => { + if (generate?.message?.imageMessage) { + return { + hasMediaAttachment: !!generate.message.imageMessage, + imageMessage: generate.message.imageMessage, + }; + } + })(), + nativeFlowMessage: { + buttons, + messageParamsJson: JSON.stringify({ from: 'api', templateId: v4() }), + }, + }, + }, + }, + }; + + return await this.sendMessageWithTyping(data.number, message, { + delay: data?.delay, + presence: 'composing', + quoted: data?.quoted, + mentionsEveryOne: data?.mentionsEveryOne, + mentioned: data?.mentioned, + }); +} + public async locationMessage(data: SendLocationDto) { return await this.sendMessageWithTyping( data.number, From 08f8d055d4bdd2be807b13e3c9113fd1e3658f43 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 26 Jan 2026 13:19:50 -0300 Subject: [PATCH 51/89] fix(baileys): interactive buttons via deviceSentMessage + CTA limits --- .../whatsapp/whatsapp.baileys.service.ts | 111 +++++++++++------- 1 file changed, 70 insertions(+), 41 deletions(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 58935c1a1c..a45bf348d9 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -3310,48 +3310,57 @@ export class BaileysStartupService extends ChannelStartupService { ['random', 'EVP'], ]); - public async buttonMessage(data: SendButtonsDto) { - if (data.buttons.length === 0) { + aqui? + +public async buttonMessage(data: SendButtonsDto) { + if (!data.buttons || data.buttons.length === 0) { throw new BadRequestException('At least one button is required'); } const hasReplyButtons = data.buttons.some((btn) => btn.type === 'reply'); const hasPixButton = data.buttons.some((btn) => btn.type === 'pix'); - const hasOtherButtons = data.buttons.some((btn) => btn.type !== 'reply' && btn.type !== 'pix'); + const hasCTAButtons = data.buttons.some( + (btn) => btn.type === 'url' || btn.type === 'call' || btn.type === 'copy', + ); + + /* ========================= + * REGRAS DE VALIDAÇÃO + * ========================= */ - // Reply rules + // Reply if (hasReplyButtons) { if (data.buttons.length > 3) { throw new BadRequestException('Maximum of 3 reply buttons allowed'); } - if (hasOtherButtons) { - throw new BadRequestException('Reply buttons cannot be mixed with other button types'); - } - } - - // CTA rules (url/call/copy) - WhatsApp limits to 2 CTAs - if (hasOtherButtons && !hasReplyButtons && !hasPixButton) { - if (data.buttons.length > 2) { - throw new BadRequestException('Maximum of 2 CTA buttons allowed (url/call/copy)'); + if (hasCTAButtons || hasPixButton) { + throw new BadRequestException('Reply buttons cannot be mixed with CTA or PIX buttons'); } } - // PIX rules + // PIX if (hasPixButton) { if (data.buttons.length > 1) { throw new BadRequestException('Only one PIX button is allowed'); } - if (hasOtherButtons) { + if (hasReplyButtons || hasCTAButtons) { throw new BadRequestException('PIX button cannot be mixed with other button types'); } const message: proto.IMessage = { - deviceSentMessage: { + viewOnceMessage: { message: { interactiveMessage: { nativeFlowMessage: { - buttons: [{ name: this.mapType.get('pix'), buttonParamsJson: this.toJSONString(data.buttons[0]) }], - messageParamsJson: JSON.stringify({ from: 'api', templateId: v4() }), + buttons: [ + { + name: this.mapType.get('pix'), + buttonParamsJson: this.toJSONString(data.buttons[0]), + }, + ], + messageParamsJson: JSON.stringify({ + from: 'api', + templateId: v4(), + }), }, }, }, @@ -3367,43 +3376,63 @@ export class BaileysStartupService extends ChannelStartupService { }); } - const generate = await (async () => { - if (data?.thumbnailUrl) { - return await this.prepareMediaMessage({ mediatype: 'image', media: data.thumbnailUrl }); + // CTA (url / call / copy) + if (hasCTAButtons) { + if (data.buttons.length > 2) { + throw new BadRequestException('Maximum of 2 CTA buttons allowed'); + } + if (hasReplyButtons) { + throw new BadRequestException('CTA buttons cannot be mixed with reply buttons'); } - })(); + } - const buttons = data.buttons.map((value) => { - return { name: this.mapType.get(value.type), buttonParamsJson: this.toJSONString(value) }; - }); + /* ========================= + * HEADER (opcional) + * ========================= */ + + const generatedMedia = data?.thumbnailUrl + ? await this.prepareMediaMessage({ mediatype: 'image', media: data.thumbnailUrl }) + : null; + + /* ========================= + * BOTÕES + * ========================= */ + + const buttons = data.buttons.map((btn) => ({ + name: this.mapType.get(btn.type), + buttonParamsJson: this.toJSONString(btn), + })); + + /* ========================= + * MENSAGEM FINAL + * ========================= */ const message: proto.IMessage = { - deviceSentMessage: { + viewOnceMessage: { message: { interactiveMessage: { body: { text: (() => { - let t = '*' + data.title + '*'; + let text = `*${data.title}*`; if (data?.description) { - t += '\n\n'; - t += data.description; - t += '\n'; + text += `\n\n${data.description}`; } - return t; + return text; })(), }, - footer: { text: data?.footer }, - header: (() => { - if (generate?.message?.imageMessage) { - return { - hasMediaAttachment: !!generate.message.imageMessage, - imageMessage: generate.message.imageMessage, - }; - } - })(), + footer: data?.footer ? { text: data.footer } : undefined, + header: generatedMedia?.message?.imageMessage + ? { + hasMediaAttachment: true, + imageMessage: generatedMedia.message.imageMessage, + } + : undefined, nativeFlowMessage: { buttons, - messageParamsJson: JSON.stringify({ from: 'api', templateId: v4() }), + messageParamsJson: JSON.stringify({ + from: 'api', + templateId: v4(), + }), }, }, }, From a4f8e95d1829ea1a2bcd7dc3c8002265b6ac0ed3 Mon Sep 17 00:00:00 2001 From: Bruno Fernandes Date: Mon, 26 Jan 2026 13:55:41 -0300 Subject: [PATCH 52/89] chore(lint): fix formatting and remove stray text --- .../whatsapp/whatsapp.baileys.service.ts | 208 +++++++++--------- 1 file changed, 102 insertions(+), 106 deletions(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index a45bf348d9..f18795c543 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -3310,53 +3310,121 @@ export class BaileysStartupService extends ChannelStartupService { ['random', 'EVP'], ]); - aqui? - -public async buttonMessage(data: SendButtonsDto) { - if (!data.buttons || data.buttons.length === 0) { - throw new BadRequestException('At least one button is required'); - } + public async buttonMessage(data: SendButtonsDto) { + if (!data.buttons || data.buttons.length === 0) { + throw new BadRequestException('At least one button is required'); + } - const hasReplyButtons = data.buttons.some((btn) => btn.type === 'reply'); - const hasPixButton = data.buttons.some((btn) => btn.type === 'pix'); - const hasCTAButtons = data.buttons.some( - (btn) => btn.type === 'url' || btn.type === 'call' || btn.type === 'copy', - ); + const hasReplyButtons = data.buttons.some((btn) => btn.type === 'reply'); + const hasPixButton = data.buttons.some((btn) => btn.type === 'pix'); + const hasCTAButtons = data.buttons.some((btn) => btn.type === 'url' || btn.type === 'call' || btn.type === 'copy'); - /* ========================= - * REGRAS DE VALIDAÇÃO - * ========================= */ + /* ========================= + * REGRAS DE VALIDAÇÃO + * ========================= */ - // Reply - if (hasReplyButtons) { - if (data.buttons.length > 3) { - throw new BadRequestException('Maximum of 3 reply buttons allowed'); - } - if (hasCTAButtons || hasPixButton) { - throw new BadRequestException('Reply buttons cannot be mixed with CTA or PIX buttons'); + // Reply + if (hasReplyButtons) { + if (data.buttons.length > 3) { + throw new BadRequestException('Maximum of 3 reply buttons allowed'); + } + if (hasCTAButtons || hasPixButton) { + throw new BadRequestException('Reply buttons cannot be mixed with CTA or PIX buttons'); + } } - } - // PIX - if (hasPixButton) { - if (data.buttons.length > 1) { - throw new BadRequestException('Only one PIX button is allowed'); + // PIX + if (hasPixButton) { + if (data.buttons.length > 1) { + throw new BadRequestException('Only one PIX button is allowed'); + } + if (hasReplyButtons || hasCTAButtons) { + throw new BadRequestException('PIX button cannot be mixed with other button types'); + } + + const message: proto.IMessage = { + viewOnceMessage: { + message: { + interactiveMessage: { + nativeFlowMessage: { + buttons: [ + { + name: this.mapType.get('pix'), + buttonParamsJson: this.toJSONString(data.buttons[0]), + }, + ], + messageParamsJson: JSON.stringify({ + from: 'api', + templateId: v4(), + }), + }, + }, + }, + }, + }; + + return await this.sendMessageWithTyping(data.number, message, { + delay: data?.delay, + presence: 'composing', + quoted: data?.quoted, + mentionsEveryOne: data?.mentionsEveryOne, + mentioned: data?.mentioned, + }); } - if (hasReplyButtons || hasCTAButtons) { - throw new BadRequestException('PIX button cannot be mixed with other button types'); + + // CTA (url / call / copy) + if (hasCTAButtons) { + if (data.buttons.length > 2) { + throw new BadRequestException('Maximum of 2 CTA buttons allowed'); + } + if (hasReplyButtons) { + throw new BadRequestException('CTA buttons cannot be mixed with reply buttons'); + } } + /* ========================= + * HEADER (opcional) + * ========================= */ + + const generatedMedia = data?.thumbnailUrl + ? await this.prepareMediaMessage({ mediatype: 'image', media: data.thumbnailUrl }) + : null; + + /* ========================= + * BOTÕES + * ========================= */ + + const buttons = data.buttons.map((btn) => ({ + name: this.mapType.get(btn.type), + buttonParamsJson: this.toJSONString(btn), + })); + + /* ========================= + * MENSAGEM FINAL + * ========================= */ + const message: proto.IMessage = { viewOnceMessage: { message: { interactiveMessage: { + body: { + text: (() => { + let text = `*${data.title}*`; + if (data?.description) { + text += `\n\n${data.description}`; + } + return text; + })(), + }, + footer: data?.footer ? { text: data.footer } : undefined, + header: generatedMedia?.message?.imageMessage + ? { + hasMediaAttachment: true, + imageMessage: generatedMedia.message.imageMessage, + } + : undefined, nativeFlowMessage: { - buttons: [ - { - name: this.mapType.get('pix'), - buttonParamsJson: this.toJSONString(data.buttons[0]), - }, - ], + buttons, messageParamsJson: JSON.stringify({ from: 'api', templateId: v4(), @@ -3376,78 +3444,6 @@ public async buttonMessage(data: SendButtonsDto) { }); } - // CTA (url / call / copy) - if (hasCTAButtons) { - if (data.buttons.length > 2) { - throw new BadRequestException('Maximum of 2 CTA buttons allowed'); - } - if (hasReplyButtons) { - throw new BadRequestException('CTA buttons cannot be mixed with reply buttons'); - } - } - - /* ========================= - * HEADER (opcional) - * ========================= */ - - const generatedMedia = data?.thumbnailUrl - ? await this.prepareMediaMessage({ mediatype: 'image', media: data.thumbnailUrl }) - : null; - - /* ========================= - * BOTÕES - * ========================= */ - - const buttons = data.buttons.map((btn) => ({ - name: this.mapType.get(btn.type), - buttonParamsJson: this.toJSONString(btn), - })); - - /* ========================= - * MENSAGEM FINAL - * ========================= */ - - const message: proto.IMessage = { - viewOnceMessage: { - message: { - interactiveMessage: { - body: { - text: (() => { - let text = `*${data.title}*`; - if (data?.description) { - text += `\n\n${data.description}`; - } - return text; - })(), - }, - footer: data?.footer ? { text: data.footer } : undefined, - header: generatedMedia?.message?.imageMessage - ? { - hasMediaAttachment: true, - imageMessage: generatedMedia.message.imageMessage, - } - : undefined, - nativeFlowMessage: { - buttons, - messageParamsJson: JSON.stringify({ - from: 'api', - templateId: v4(), - }), - }, - }, - }, - }, - }; - - return await this.sendMessageWithTyping(data.number, message, { - delay: data?.delay, - presence: 'composing', - quoted: data?.quoted, - mentionsEveryOne: data?.mentionsEveryOne, - mentioned: data?.mentioned, - }); -} - public async locationMessage(data: SendLocationDto) { return await this.sendMessageWithTyping( data.number, From 2d729a3a353aa1c1d71f8e9bd1948d6a90596449 Mon Sep 17 00:00:00 2001 From: ValdecirMysian Date: Wed, 28 Jan 2026 00:03:27 -0300 Subject: [PATCH 53/89] Enhance getTypeMessage to include orderMessage Added support for orderMessage in getTypeMessage method and updated message formatting for orders. --- .../chatwoot/services/chatwoot.service.ts | 69 ++++++++++++------- 1 file changed, 44 insertions(+), 25 deletions(-) diff --git a/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts b/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts index 906fff1881..4fbcba24fe 100644 --- a/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts +++ b/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts @@ -1758,41 +1758,60 @@ export class ChatwootService { } private getTypeMessage(msg: any) { - const types = { - conversation: msg.conversation, - imageMessage: msg.imageMessage?.caption, - videoMessage: msg.videoMessage?.caption, - extendedTextMessage: msg.extendedTextMessage?.text, - messageContextInfo: msg.messageContextInfo?.stanzaId, - stickerMessage: undefined, - documentMessage: msg.documentMessage?.caption, - documentWithCaptionMessage: msg.documentWithCaptionMessage?.message?.documentMessage?.caption, - audioMessage: msg.audioMessage ? (msg.audioMessage.caption ?? '') : undefined, - contactMessage: msg.contactMessage?.vcard, - contactsArrayMessage: msg.contactsArrayMessage, - locationMessage: msg.locationMessage, - liveLocationMessage: msg.liveLocationMessage, - listMessage: msg.listMessage, - listResponseMessage: msg.listResponseMessage, - viewOnceMessageV2: - msg?.message?.viewOnceMessageV2?.message?.imageMessage?.url || - msg?.message?.viewOnceMessageV2?.message?.videoMessage?.url || - msg?.message?.viewOnceMessageV2?.message?.audioMessage?.url, - }; - - return types; - } + const types = { + conversation: msg.conversation, + imageMessage: msg.imageMessage?.caption, + videoMessage: msg.videoMessage?.caption, + extendedTextMessage: msg.extendedTextMessage?.text, + messageContextInfo: msg.messageContextInfo?.stanzaId, + stickerMessage: undefined, + documentMessage: msg.documentMessage?.caption, + documentWithCaptionMessage: msg.documentWithCaptionMessage?.message?.documentMessage?.caption, + audioMessage: msg.audioMessage ? (msg.audioMessage.caption ?? '') : undefined, + contactMessage: msg.contactMessage?.vcard, + contactsArrayMessage: msg.contactsArrayMessage, + locationMessage: msg.locationMessage, + liveLocationMessage: msg.liveLocationMessage, + listMessage: msg.listMessage, + listResponseMessage: msg.listResponseMessage, + // Adicione a linha abaixo. Atenção à vírgula na linha de cima! + orderMessage: msg.orderMessage, + viewOnceMessageV2: + msg?.message?.viewOnceMessageV2?.message?.imageMessage?.url || + msg?.message?.viewOnceMessageV2?.message?.videoMessage?.url || + msg?.message?.viewOnceMessageV2?.message?.audioMessage?.url, + }; + + return types; +} private getMessageContent(types: any) { const typeKey = Object.keys(types).find((key) => types[key] !== undefined); let result = typeKey ? types[typeKey] : undefined; - // Remove externalAdReplyBody| in Chatwoot (Already Have) + // Remove externalAdReplyBody| in Chatwoot if (result && typeof result === 'string' && result.includes('externalAdReplyBody|')) { result = result.split('externalAdReplyBody|').filter(Boolean).join(''); } + // Tratamento de Pedidos do Catálogo + if (typeKey === 'orderMessage') { + const amount = result.totalAmount1000; + // Converte o objeto Long para número antes da divisão + const rawPrice = (Long.isLong(amount) ? amount.toNumber() : amount) || 0; + const price = (rawPrice / 1000).toLocaleString('pt-BR', { + style: 'currency', + currency: result.totalCurrencyCode || 'BRL', + }); + + return `🛒 *NOVO PEDIDO NO CATÁLOGO*\n\n` + + `*Produto:* ${result.orderTitle}\n` + + `*Valor:* ${price}\n` + + `*ID:* ${result.orderId}\n\n` + + `_Atenda agora para finalizar a venda!_`; + } + if (typeKey === 'locationMessage' || typeKey === 'liveLocationMessage') { const latitude = result.degreesLatitude; const longitude = result.degreesLongitude; From be30cdae042be43368e5953a0838d18485721357 Mon Sep 17 00:00:00 2001 From: Santosl2 Date: Wed, 28 Jan 2026 00:51:29 -0300 Subject: [PATCH 54/89] fix(package): add network family autoselection timeout to start:prod script --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 56e32fcc8a..b67d6b00b3 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "scripts": { "build": "tsc --noEmit && tsup", "start": "tsx ./src/main.ts", - "start:prod": "node dist/main", + "start:prod": "node --network-family-autoselection-attempt-timeout=1000 dist/main", "dev:server": "tsx watch ./src/main.ts", "test": "tsx watch ./test/all.test.ts", "lint": "eslint --fix --ext .ts src", From 6827693c638d1b5ed398146bd9df84b67518bbca Mon Sep 17 00:00:00 2001 From: awanmh Date: Wed, 28 Jan 2026 11:58:36 +0700 Subject: [PATCH 55/89] fix: resolve facebook ads context readability --- src/utils/getConversationMessage.ts | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/utils/getConversationMessage.ts b/src/utils/getConversationMessage.ts index eca23b4547..0abcaf9108 100644 --- a/src/utils/getConversationMessage.ts +++ b/src/utils/getConversationMessage.ts @@ -16,7 +16,7 @@ const getTypeMessage = (msg: any) => { conversation: msg?.message?.conversation, extendedTextMessage: msg?.message?.extendedTextMessage?.text, contactMessage: msg?.message?.contactMessage?.displayName, - locationMessage: msg?.message?.locationMessage?.degreesLatitude.toString(), + locationMessage: msg?.message?.locationMessage?.degreesLatitude?.toString(), viewOnceMessageV2: msg?.message?.viewOnceMessageV2?.message?.imageMessage?.url || msg?.message?.viewOnceMessageV2?.message?.videoMessage?.url || @@ -49,9 +49,14 @@ const getTypeMessage = (msg: any) => { : '' }` : undefined, - externalAdReplyBody: msg?.contextInfo?.externalAdReply?.body - ? `externalAdReplyBody|${msg.contextInfo.externalAdReply.body}` + + // --- FIX FACEBOOK ADS START --- + externalAdReplyBody: msg?.message?.extendedTextMessage?.contextInfo?.externalAdReply?.body + ? `externalAdReplyBody|${msg.message.extendedTextMessage.contextInfo.externalAdReply.body}` + : msg?.message?.extendedTextMessage?.contextInfo?.externalAdReply?.title + ? `externalAdReplyBody|${msg.message.extendedTextMessage.contextInfo.externalAdReply.title}` : undefined, + // --- FIX FACEBOOK ADS END --- }; const messageType = Object.keys(types).find((key) => types[key] !== undefined) || 'unknown'; @@ -60,7 +65,7 @@ const getTypeMessage = (msg: any) => { }; const getMessageContent = (types: any) => { - const typeKey = Object.keys(types).find((key) => key !== 'externalAdReplyBody' && types[key] !== undefined); + const typeKey = Object.keys(types).find((key) => key !== 'externalAdReplyBody' && key !== 'messageType' && types[key] !== undefined); let result = typeKey ? types[typeKey] : undefined; @@ -73,8 +78,6 @@ const getMessageContent = (types: any) => { export const getConversationMessage = (msg: any) => { const types = getTypeMessage(msg); - const messageContent = getMessageContent(types); - return messageContent; -}; +}; \ No newline at end of file From 2ff572d80ca6e6028538468aca51502c3a72d554 Mon Sep 17 00:00:00 2001 From: ValdecirMysian Date: Wed, 28 Jan 2026 05:26:42 -0300 Subject: [PATCH 56/89] Enhance order message structure and content Refactor order message handling and improve formatting. --- .../chatwoot/services/chatwoot.service.ts | 38 ++++++++++++++----- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts b/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts index 4fbcba24fe..560945581a 100644 --- a/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts +++ b/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts @@ -1774,8 +1774,7 @@ export class ChatwootService { liveLocationMessage: msg.liveLocationMessage, listMessage: msg.listMessage, listResponseMessage: msg.listResponseMessage, - // Adicione a linha abaixo. Atenção à vírgula na linha de cima! - orderMessage: msg.orderMessage, + orderMessage: msg.orderMessage, viewOnceMessageV2: msg?.message?.viewOnceMessageV2?.message?.imageMessage?.url || msg?.message?.viewOnceMessageV2?.message?.videoMessage?.url || @@ -1795,21 +1794,40 @@ export class ChatwootService { result = result.split('externalAdReplyBody|').filter(Boolean).join(''); } - // Tratamento de Pedidos do Catálogo + // Tratamento de Pedidos do Catálogo (WhatsApp Business Catalog) if (typeKey === 'orderMessage') { + // Extrai o valor - pode ser Long, objeto {low, high}, ou número direto + let rawPrice = 0; const amount = result.totalAmount1000; - // Converte o objeto Long para número antes da divisão - const rawPrice = (Long.isLong(amount) ? amount.toNumber() : amount) || 0; + + if (Long.isLong(amount)) { + rawPrice = amount.toNumber(); + } else if (amount && typeof amount === 'object' && 'low' in amount) { + // Formato {low: number, high: number, unsigned: boolean} + rawPrice = Long.fromValue(amount).toNumber(); + } else if (typeof amount === 'number') { + rawPrice = amount; + } + const price = (rawPrice / 1000).toLocaleString('pt-BR', { style: 'currency', currency: result.totalCurrencyCode || 'BRL', }); - return `🛒 *NOVO PEDIDO NO CATÁLOGO*\n\n` + - `*Produto:* ${result.orderTitle}\n` + - `*Valor:* ${price}\n` + - `*ID:* ${result.orderId}\n\n` + - `_Atenda agora para finalizar a venda!_`; + const itemCount = result.itemCount || 1; + const orderTitle = result.orderTitle || 'Produto do catálogo'; + const orderId = result.orderId || 'N/A'; + + return ( + `🛒 *NOVO PEDIDO NO CATÁLOGO*\n` + + `━━━━━━━━━━━━━━━━━━━━━\n` + + `📦 *Produto:* ${orderTitle}\n` + + `📊 *Quantidade:* ${itemCount}\n` + + `💰 *Total:* ${price}\n` + + `🆔 *Pedido:* #${orderId}\n` + + `━━━━━━━━━━━━━━━━━━━━━\n` + + `_Responda para atender este pedido!_` + ); } if (typeKey === 'locationMessage' || typeKey === 'liveLocationMessage') { From 6c274f71ae444ab241f35017352ad4d07676ed2f Mon Sep 17 00:00:00 2001 From: ValdecirMysian Date: Wed, 28 Jan 2026 12:18:27 -0300 Subject: [PATCH 57/89] Add caching for processed order IDs to prevent duplicates Implement cache for deduplication of order messages to avoid processing duplicates. --- .../chatwoot/services/chatwoot.service.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts b/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts index 560945581a..ff6d28f3f4 100644 --- a/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts +++ b/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts @@ -49,6 +49,10 @@ export class ChatwootService { private provider: any; + // Cache para deduplicação de orderMessage (evita mensagens duplicadas) + private processedOrderIds: Map = new Map(); + private readonly ORDER_CACHE_TTL_MS = 30000; // 30 segundos + constructor( private readonly waMonitor: WAMonitoringService, private readonly configService: ConfigService, @@ -1795,6 +1799,20 @@ export class ChatwootService { } // Tratamento de Pedidos do Catálogo (WhatsApp Business Catalog) + if (typeKey === 'orderMessage' && result.orderId) { + const now = Date.now(); + // Limpa entradas antigas do cache + this.processedOrderIds.forEach((timestamp, id) => { + if (now - timestamp > this.ORDER_CACHE_TTL_MS) { + this.processedOrderIds.delete(id); + } + }); + // Verifica se já processou este orderId + if (this.processedOrderIds.has(result.orderId)) { + return undefined; // Ignora duplicado + } + this.processedOrderIds.set(result.orderId, now); + } if (typeKey === 'orderMessage') { // Extrai o valor - pode ser Long, objeto {low, high}, ou número direto let rawPrice = 0; From 367153e0b2e2f9f3c3420feded52c4a1d0c800e2 Mon Sep 17 00:00:00 2001 From: ValdecirMysian Date: Wed, 28 Jan 2026 17:51:22 -0300 Subject: [PATCH 58/89] add support for WhatsApp catalog orderMessage From 22048fe2117c784faf5292dfd69bfb1a5dbabbfb Mon Sep 17 00:00:00 2001 From: ValdecirMysian Date: Thu, 29 Jan 2026 13:03:06 -0300 Subject: [PATCH 59/89] Refactor message data handling in chatwoot.service.ts Filtered null/undefined values from replyToIds before sending and constructed messageData object to include valid content_attributes. --- .../chatwoot/services/chatwoot.service.ts | 54 +++++++++++++------ 1 file changed, 38 insertions(+), 16 deletions(-) diff --git a/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts b/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts index ff6d28f3f4..2a0117aad3 100644 --- a/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts +++ b/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts @@ -947,20 +947,39 @@ export class ChatwootService { const sourceReplyId = quotedMsg?.chatwootMessageId || null; + // Filtra valores null/undefined do content_attributes para evitar erro 406 + const filteredReplyToIds = Object.fromEntries( + Object.entries(replyToIds).filter(([_, value]) => value != null) + ); + + // Monta o objeto data, incluindo content_attributes apenas se houver dados válidos + const messageData: any = { + content: content, + message_type: messageType, + content_type: 'text', // Explicitamente define como texto para Chatwoot 4.x + attachments: attachments, + private: privateMessage || false, + }; + + // Adiciona source_id apenas se existir + if (sourceId) { + messageData.source_id = sourceId; + } + + // Adiciona content_attributes apenas se houver dados válidos + if (Object.keys(filteredReplyToIds).length > 0) { + messageData.content_attributes = filteredReplyToIds; + } + + // Adiciona source_reply_id apenas se existir + if (sourceReplyId) { + messageData.source_reply_id = sourceReplyId.toString(); + } + const message = await client.messages.create({ accountId: this.provider.accountId, conversationId: conversationId, - data: { - content: content, - message_type: messageType, - attachments: attachments, - private: privateMessage || false, - source_id: sourceId, - content_attributes: { - ...replyToIds, - }, - source_reply_id: sourceReplyId ? sourceReplyId.toString() : null, - }, + data: messageData, }); if (!message) { @@ -1086,11 +1105,14 @@ export class ChatwootService { if (messageBody && instance) { const replyToIds = await this.getReplyToIds(messageBody, instance); - if (replyToIds.in_reply_to || replyToIds.in_reply_to_external_id) { - const content = JSON.stringify({ - ...replyToIds, - }); - data.append('content_attributes', content); + // Filtra valores null/undefined antes de enviar + const filteredReplyToIds = Object.fromEntries( + Object.entries(replyToIds).filter(([_, value]) => value != null) + ); + + if (Object.keys(filteredReplyToIds).length > 0) { + const contentAttrs = JSON.stringify(filteredReplyToIds); + data.append('content_attributes', contentAttrs); } } From 796bc4c89a119cc6d81b5e829b2bf64276012e18 Mon Sep 17 00:00:00 2001 From: ValdecirMysian Date: Thu, 29 Jan 2026 20:53:23 -0300 Subject: [PATCH 60/89] Implement LID to phone number mapping and caching Added LID to phone number mapping and resolution logic to handle LID addresses. Implemented caching for LID mappings and added methods to clean and save mappings. --- .../chatwoot/services/chatwoot.service.ts | 133 +++++++++++++++++- 1 file changed, 129 insertions(+), 4 deletions(-) diff --git a/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts b/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts index 2a0117aad3..b0bd12d2fc 100644 --- a/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts +++ b/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts @@ -53,6 +53,10 @@ export class ChatwootService { private processedOrderIds: Map = new Map(); private readonly ORDER_CACHE_TTL_MS = 30000; // 30 segundos + // Cache para mapeamento LID → Número Normal (resolve problema de @lid) + private lidToPhoneMap: Map = new Map(); + private readonly LID_CACHE_TTL_MS = 3600000; // 1 hora + constructor( private readonly waMonitor: WAMonitoringService, private readonly configService: ConfigService, @@ -636,10 +640,32 @@ export class ChatwootService { public async createConversation(instance: InstanceDto, body: any) { const isLid = body.key.addressingMode === 'lid'; const isGroup = body.key.remoteJid.endsWith('@g.us'); - const phoneNumber = isLid && !isGroup ? body.key.remoteJidAlt : body.key.remoteJid; - const { remoteJid } = body.key; - const cacheKey = `${instance.instanceName}:createConversation-${remoteJid}`; - const lockKey = `${instance.instanceName}:lock:createConversation-${remoteJid}`; + let phoneNumber = isLid && !isGroup ? body.key.remoteJidAlt : body.key.remoteJid; + let { remoteJid } = body.key; + + // CORREÇÃO LID: Resolve LID para número normal antes de processar + if (isLid && !isGroup) { + const resolvedPhone = await this.resolveLidToPhone(instance, body.key); + + if (resolvedPhone && resolvedPhone !== remoteJid) { + this.logger.verbose(`LID detected and resolved: ${remoteJid} → ${resolvedPhone}`); + phoneNumber = resolvedPhone; + + // Salva mapeamento se temos remoteJidAlt + if (body.key.remoteJidAlt) { + this.saveLidMapping(remoteJid, body.key.remoteJidAlt); + } + } else if (body.key.remoteJidAlt) { + // Se não resolveu mas tem remoteJidAlt, usa ele + phoneNumber = body.key.remoteJidAlt; + this.saveLidMapping(remoteJid, body.key.remoteJidAlt); + this.logger.verbose(`Using remoteJidAlt for LID: ${remoteJid} → ${phoneNumber}`); + } + } + + // Usa phoneNumber como base para cache (não o LID) + const cacheKey = `${instance.instanceName}:createConversation-${phoneNumber}`; + const lockKey = `${instance.instanceName}:lock:createConversation-${phoneNumber}`; const maxWaitTime = 5000; // 5 seconds const client = await this.clientCw(instance); if (!client) return null; @@ -2070,6 +2096,29 @@ export class ChatwootService { } } + // CORREÇÃO LID: Resolve LID para número normal antes de processar evento + if (body?.key?.remoteJid && body.key.remoteJid.includes('@lid') && !body.key.remoteJid.endsWith('@g.us')) { + const originalJid = body.key.remoteJid; + const resolvedPhone = await this.resolveLidToPhone(instance, body.key); + + if (resolvedPhone && resolvedPhone !== originalJid) { + this.logger.verbose(`Event LID resolved: ${originalJid} → ${resolvedPhone}`); + body.key.remoteJid = resolvedPhone; + + // Salva mapeamento se temos remoteJidAlt + if (body.key.remoteJidAlt) { + this.saveLidMapping(originalJid, body.key.remoteJidAlt); + } + } else if (body.key.remoteJidAlt && !body.key.remoteJidAlt.includes('@lid')) { + // Se não resolveu mas tem remoteJidAlt válido, usa ele + this.logger.verbose(`Using remoteJidAlt for event: ${originalJid} → ${body.key.remoteJidAlt}`); + body.key.remoteJid = body.key.remoteJidAlt; + this.saveLidMapping(originalJid, body.key.remoteJidAlt); + } else { + this.logger.warn(`Could not resolve LID for event, keeping original: ${originalJid}`); + } + } + if (event === 'messages.upsert' || event === 'send.message') { this.logger.info(`[${event}] New message received - Instance: ${JSON.stringify(body, null, 2)}`); if (body.key.remoteJid === 'status@broadcast') { @@ -2614,6 +2663,82 @@ export class ChatwootService { return remoteJid.replace(/:\d+/, '').split('@')[0]; } + /** + * Limpa entradas antigas do cache de mapeamento LID + */ + private cleanLidCache() { + const now = Date.now(); + this.lidToPhoneMap.forEach((value, lid) => { + if (now - value.timestamp > this.LID_CACHE_TTL_MS) { + this.lidToPhoneMap.delete(lid); + } + }); + } + + /** + * Salva mapeamento LID → Número Normal + */ + private saveLidMapping(lid: string, phoneNumber: string) { + if (!lid || !phoneNumber || !lid.includes('@lid')) { + return; + } + + this.cleanLidCache(); + this.lidToPhoneMap.set(lid, { + phone: phoneNumber, + timestamp: Date.now(), + }); + + this.logger.verbose(`LID mapping saved: ${lid} → ${phoneNumber}`); + } + + /** + * Resolve LID para Número Normal + * Retorna o número normal se encontrado, ou o LID original se não encontrado + */ + private async resolveLidToPhone(instance: InstanceDto, messageKey: any): Promise { + const { remoteJid, remoteJidAlt } = messageKey; + + // Se não for LID, retorna o próprio remoteJid + if (!remoteJid || !remoteJid.includes('@lid')) { + return remoteJid; + } + + // 1. Tenta buscar no cache + const cached = this.lidToPhoneMap.get(remoteJid); + if (cached) { + this.logger.verbose(`LID resolved from cache: ${remoteJid} → ${cached.phone}`); + return cached.phone; + } + + // 2. Se tem remoteJidAlt (número alternativo), usa ele e salva no cache + if (remoteJidAlt && !remoteJidAlt.includes('@lid')) { + this.saveLidMapping(remoteJid, remoteJidAlt); + this.logger.verbose(`LID resolved from remoteJidAlt: ${remoteJid} → ${remoteJidAlt}`); + return remoteJidAlt; + } + + // 3. Tenta buscar no banco de dados do Chatwoot + try { + const lidIdentifier = this.normalizeJidIdentifier(remoteJid); + const contact = await this.findContactByIdentifier(instance, lidIdentifier); + + if (contact && contact.phone_number) { + // Converte +554498860240 → 554498860240@s.whatsapp.net + const phoneNumber = contact.phone_number.replace('+', '') + '@s.whatsapp.net'; + this.saveLidMapping(remoteJid, phoneNumber); + this.logger.verbose(`LID resolved from database: ${remoteJid} → ${phoneNumber}`); + return phoneNumber; + } + } catch (error) { + this.logger.warn(`Error resolving LID from database: ${error}`); + } + + // 4. Se não encontrou, retorna null (será necessário criar novo contato) + this.logger.warn(`Could not resolve LID: ${remoteJid}`); + return null; + } + public startImportHistoryMessages(instance: InstanceDto) { if (!this.isImportHistoryAvailable()) { return; From c84626d244db972c0e2624a7ee177d8e4b70c0b1 Mon Sep 17 00:00:00 2001 From: awanmh Date: Fri, 30 Jan 2026 17:00:38 +0700 Subject: [PATCH 61/89] fix: add fallback path for externalAdReply as suggested by sourcery --- src/utils/getConversationMessage.ts | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/utils/getConversationMessage.ts b/src/utils/getConversationMessage.ts index 0abcaf9108..377df64c15 100644 --- a/src/utils/getConversationMessage.ts +++ b/src/utils/getConversationMessage.ts @@ -49,13 +49,17 @@ const getTypeMessage = (msg: any) => { : '' }` : undefined, - + // --- FIX FACEBOOK ADS START --- externalAdReplyBody: msg?.message?.extendedTextMessage?.contextInfo?.externalAdReply?.body ? `externalAdReplyBody|${msg.message.extendedTextMessage.contextInfo.externalAdReply.body}` : msg?.message?.extendedTextMessage?.contextInfo?.externalAdReply?.title - ? `externalAdReplyBody|${msg.message.extendedTextMessage.contextInfo.externalAdReply.title}` - : undefined, + ? `externalAdReplyBody|${msg.message.extendedTextMessage.contextInfo.externalAdReply.title}` + : msg?.contextInfo?.externalAdReply?.body + ? `externalAdReplyBody|${msg.contextInfo.externalAdReply.body}` + : msg?.contextInfo?.externalAdReply?.title + ? `externalAdReplyBody|${msg.contextInfo.externalAdReply.title}` + : undefined, // --- FIX FACEBOOK ADS END --- }; @@ -65,7 +69,9 @@ const getTypeMessage = (msg: any) => { }; const getMessageContent = (types: any) => { - const typeKey = Object.keys(types).find((key) => key !== 'externalAdReplyBody' && key !== 'messageType' && types[key] !== undefined); + const typeKey = Object.keys(types).find( + (key) => key !== 'externalAdReplyBody' && key !== 'messageType' && types[key] !== undefined, + ); let result = typeKey ? types[typeKey] : undefined; @@ -80,4 +86,4 @@ export const getConversationMessage = (msg: any) => { const types = getTypeMessage(msg); const messageContent = getMessageContent(types); return messageContent; -}; \ No newline at end of file +}; From cfa475d47beb4e7db1438fe4381e7a63d28a38c1 Mon Sep 17 00:00:00 2001 From: ValdecirMysian Date: Sun, 1 Feb 2026 15:37:20 -0300 Subject: [PATCH 62/89] Implement quoted product message handling Added handling for quoted product messages including price extraction and formatting. --- .../chatwoot/services/chatwoot.service.ts | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts b/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts index b0bd12d2fc..4911196270 100644 --- a/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts +++ b/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts @@ -1827,6 +1827,7 @@ export class ChatwootService { listMessage: msg.listMessage, listResponseMessage: msg.listResponseMessage, orderMessage: msg.orderMessage, + quotedProductMessage: msg.contextInfo?.quotedMessage?.productMessage, viewOnceMessageV2: msg?.message?.viewOnceMessageV2?.message?.imageMessage?.url || msg?.message?.viewOnceMessageV2?.message?.videoMessage?.url || @@ -1861,6 +1862,40 @@ export class ChatwootService { } this.processedOrderIds.set(result.orderId, now); } + // Tratamento de Produto citado (WhatsApp Desktop) +if (typeKey === 'quotedProductMessage' && result?.product) { + const product = result.product; + + // Extrai preço + let rawPrice = 0; + const amount = product.priceAmount1000; + + if (Long.isLong(amount)) { + rawPrice = amount.toNumber(); + } else if (amount && typeof amount === 'object' && 'low' in amount) { + rawPrice = Long.fromValue(amount).toNumber(); + } else if (typeof amount === 'number') { + rawPrice = amount; + } + + const price = (rawPrice / 1000).toLocaleString('pt-BR', { + style: 'currency', + currency: product.currencyCode || 'BRL', + }); + + const productTitle = product.title || 'Produto do catálogo'; + const productId = product.productId || 'N/A'; + + return ( + `🛒 *PRODUTO DO CATÁLOGO (Desktop)*\n` + + `━━━━━━━━━━━━━━━━━━━━━\n` + + `📦 *Produto:* ${productTitle}\n` + + `💰 *Preço:* ${price}\n` + + `🆔 *Código:* ${productId}\n` + + `━━━━━━━━━━━━━━━━━━━━━\n` + + `_Cliente perguntou: "${types.conversation || 'Me envia este produto?'}"_` + ); +} if (typeKey === 'orderMessage') { // Extrai o valor - pode ser Long, objeto {low, high}, ou número direto let rawPrice = 0; From 5dd18451ea3c231d55d11871a37cd38712ecc38f Mon Sep 17 00:00:00 2001 From: yurii Date: Mon, 9 Feb 2026 14:44:31 +0100 Subject: [PATCH 63/89] fix(docker): fix docker-compose startup failures for fresh installs - Remove dokploy-network external network dependency that breaks docker-compose up on fresh installs without the network pre-created - Fix evolution-manager frontend crash by adding nginx.conf with corrected gzip_proxied directive (removes invalid must-revalidate value) - Add missing POSTGRES_DATABASE, POSTGRES_USERNAME, POSTGRES_PASSWORD to .env.example (required by docker-compose postgres service) - Fix DATABASE_CONNECTION_URI hostname from postgres to evolution-postgres to match the docker-compose service name Co-Authored-By: Claude Opus 4.6 --- .env.example | 8 ++++++- docker-compose.yaml | 11 +++------- nginx.conf | 51 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+), 9 deletions(-) create mode 100644 nginx.conf diff --git a/.env.example b/.env.example index 73a3b40d35..f4a99e8b3b 100644 --- a/.env.example +++ b/.env.example @@ -52,7 +52,13 @@ DEL_INSTANCE=false # Provider: postgresql | mysql | psql_bouncer DATABASE_PROVIDER=postgresql -DATABASE_CONNECTION_URI='postgresql://user:pass@postgres:5432/evolution_db?schema=evolution_api' +DATABASE_CONNECTION_URI='postgresql://user:pass@evolution-postgres:5432/evolution_db?schema=evolution_api' + +# Postgres container settings (used by docker-compose) +POSTGRES_DATABASE=evolution_db +POSTGRES_USERNAME=user +POSTGRES_PASSWORD=pass + # Client name for the database connection # It is used to separate an API installation from another that uses the same database. DATABASE_CONNECTION_CLIENT_NAME=evolution_exchange diff --git a/docker-compose.yaml b/docker-compose.yaml index e0edee6569..a2f5266956 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -14,7 +14,6 @@ services: - evolution_instances:/evolution/instances networks: - evolution-net - - dokploy-network env_file: - .env expose: @@ -26,6 +25,8 @@ services: restart: always ports: - "3000:80" + volumes: + - ./nginx.conf:/etc/nginx/conf.d/nginx.conf:ro networks: - evolution-net @@ -41,9 +42,6 @@ services: evolution-net: aliases: - evolution-redis - dokploy-network: - aliases: - - evolution-redis expose: - "6379" @@ -67,7 +65,6 @@ services: - postgres_data:/var/lib/postgresql/data networks: - evolution-net - - dokploy-network expose: - "5432" @@ -79,6 +76,4 @@ volumes: networks: evolution-net: name: evolution-net - driver: bridge - dokploy-network: - external: true \ No newline at end of file + driver: bridge \ No newline at end of file diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000000..7f40362133 --- /dev/null +++ b/nginx.conf @@ -0,0 +1,51 @@ +server { + listen 80; + server_name localhost; + root /usr/share/nginx/html; + index index.html; + + # Gzip compression + gzip on; + gzip_vary on; + gzip_min_length 1024; + gzip_proxied expired no-cache no-store private auth; + gzip_types + text/plain + text/css + text/xml + text/javascript + application/javascript + application/xml+rss + application/json; + + # Security headers + add_header X-Frame-Options "SAMEORIGIN" always; + add_header X-XSS-Protection "1; mode=block" always; + add_header X-Content-Type-Options "nosniff" always; + add_header Referrer-Policy "no-referrer-when-downgrade" always; + add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'" always; + + # Handle client routing + location / { + try_files $uri $uri/ /index.html; + } + + # Cache static assets + location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ { + expires 1y; + add_header Cache-Control "public, immutable"; + } + + # Cache HTML files for a shorter period + location ~* \.html$ { + expires 1h; + add_header Cache-Control "public"; + } + + # Health check endpoint + location /health { + access_log off; + return 200 "healthy\n"; + add_header Content-Type text/plain; + } +} From 42b46e0813677f0eab9f7c36b60e07e00cfafcaa Mon Sep 17 00:00:00 2001 From: Milton Sosa Date: Mon, 16 Feb 2026 04:30:13 -0300 Subject: [PATCH 64/89] fix(chatbot): closed session should not block bot re-activation When a chatbot session exists with status='closed', the emit() method returned early, preventing the bot from re-activating on new messages. Root cause: the guard 'if (session.status === closed) return' was meant to skip sessions not awaiting user input, but it also prevented new conversations from starting after a bot flow completed. Fix: nullify the session instead of returning, so processBot enters the '!session' branch and creates a fresh session. Also adds null guards: - getConversationMessage: return empty string instead of undefined - findBotByTrigger: handle null/undefined content gracefully --- src/api/integrations/chatbot/base-chatbot.controller.ts | 6 +++--- src/utils/findBotByTrigger.ts | 8 ++++++++ src/utils/getConversationMessage.ts | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/api/integrations/chatbot/base-chatbot.controller.ts b/src/api/integrations/chatbot/base-chatbot.controller.ts index a5b83e257c..4108785e4c 100644 --- a/src/api/integrations/chatbot/base-chatbot.controller.ts +++ b/src/api/integrations/chatbot/base-chatbot.controller.ts @@ -797,7 +797,7 @@ export abstract class BaseChatbotController { + const normalizedContent = content?.trim() || ''; + // Check for triggerType 'all' or 'none' (both should match any message) const findTriggerAllOrNone = await botRepository.findFirst({ where: { @@ -16,6 +18,12 @@ export const findBotByTrigger = async (botRepository: any, content: string, inst return findTriggerAllOrNone; } + // If content is empty (null, undefined, whitespace-only, or media-only messages), + // only 'all'/'none' triggers apply — skip keyword/regex matching + if (!normalizedContent) { + return null; + } + const findTriggerAdvanced = await botRepository.findMany({ where: { enabled: true, diff --git a/src/utils/getConversationMessage.ts b/src/utils/getConversationMessage.ts index eca23b4547..bd13f89e21 100644 --- a/src/utils/getConversationMessage.ts +++ b/src/utils/getConversationMessage.ts @@ -76,5 +76,5 @@ export const getConversationMessage = (msg: any) => { const messageContent = getMessageContent(types); - return messageContent; + return messageContent ?? ''; }; From cb4a14d1ef0e279aed5042ec3a569d0cbd678423 Mon Sep 17 00:00:00 2001 From: Milton Sosa Date: Mon, 16 Feb 2026 04:30:40 -0300 Subject: [PATCH 65/89] fix(meta): normalize execution order and fix chatwootIds in Cloud API Two bugs in BusinessStartupService message processing: 1. Execution order: Chatwoot was processed AFTER the bot emit(), but Baileys channel processes Chatwoot FIRST. This inconsistency meant the bot could not access chatwootConversationId/chatwootInboxId when processing messages from the Cloud API. 2. chatwootIds assignment: chatwootInboxId and chatwootConversationId were both incorrectly set to chatwootSentMessage.id instead of .inbox_id and .conversation_id respectively. Fix: reorder to Chatwoot-first (consistent with Baileys) and use the correct property names from the Chatwoot response object. --- .../channel/meta/whatsapp.business.service.ts | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/api/integrations/channel/meta/whatsapp.business.service.ts b/src/api/integrations/channel/meta/whatsapp.business.service.ts index 1e4808c156..1f820d0e57 100644 --- a/src/api/integrations/channel/meta/whatsapp.business.service.ts +++ b/src/api/integrations/channel/meta/whatsapp.business.service.ts @@ -668,15 +668,7 @@ export class BusinessStartupService extends ChannelStartupService { sendTelemetry(`received.message.${messageRaw.messageType ?? 'unknown'}`); - this.sendDataWebhook(Events.MESSAGES_UPSERT, messageRaw); - - await chatbotController.emit({ - instance: { instanceName: this.instance.name, instanceId: this.instanceId }, - remoteJid: messageRaw.key.remoteJid, - msg: messageRaw, - pushName: messageRaw.pushName, - }); - + // Normalized order: Chatwoot first, then bot (consistent with Baileys channel) if (this.configService.get('CHATWOOT').ENABLED && this.localChatwoot?.enabled) { const chatwootSentMessage = await this.chatwootService.eventWhatsapp( Events.MESSAGES_UPSERT, @@ -684,13 +676,22 @@ export class BusinessStartupService extends ChannelStartupService { messageRaw, ); - if (chatwootSentMessage?.id) { + if (chatwootSentMessage) { messageRaw.chatwootMessageId = chatwootSentMessage.id; - messageRaw.chatwootInboxId = chatwootSentMessage.id; - messageRaw.chatwootConversationId = chatwootSentMessage.id; + messageRaw.chatwootInboxId = chatwootSentMessage.inbox_id; + messageRaw.chatwootConversationId = chatwootSentMessage.conversation_id; } } + this.sendDataWebhook(Events.MESSAGES_UPSERT, messageRaw); + + await chatbotController.emit({ + instance: { instanceName: this.instance.name, instanceId: this.instanceId }, + remoteJid: messageRaw.key.remoteJid, + msg: messageRaw, + pushName: messageRaw.pushName, + }); + if (!this.isMediaMessage(message) && message.type !== 'sticker') { await this.prismaRepository.message.create({ data: messageRaw, From e2a7716e19443c2ab235ea733576114afd3fb285 Mon Sep 17 00:00:00 2001 From: Rafael Berrocal Justiniano Date: Mon, 23 Feb 2026 21:07:21 -0300 Subject: [PATCH 66/89] feat(sqs): add support for custom base_url --- env.example | 1 + src/api/integrations/event/sqs/sqs.controller.ts | 3 ++- src/config/env.config.ts | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/env.example b/env.example index 5fe448b82c..d6509d5461 100644 --- a/env.example +++ b/env.example @@ -166,6 +166,7 @@ SQS_ACCESS_KEY_ID= SQS_SECRET_ACCESS_KEY= SQS_ACCOUNT_ID= SQS_REGION= +SQS_BASE_URL= SQS_MAX_PAYLOAD_SIZE=1048576 # =========================================== diff --git a/src/api/integrations/event/sqs/sqs.controller.ts b/src/api/integrations/event/sqs/sqs.controller.ts index 2b0398ef21..782a9aa5cd 100644 --- a/src/api/integrations/event/sqs/sqs.controller.ts +++ b/src/api/integrations/event/sqs/sqs.controller.ts @@ -126,7 +126,8 @@ export class SqsController extends EventController implements EventControllerInt ? 'singlequeue' : `${event.replace('.', '_').toLowerCase()}`; const queueName = `${prefixName}_${eventFormatted}.fifo`; - const sqsUrl = `https://sqs.${sqsConfig.REGION}.amazonaws.com/${sqsConfig.ACCOUNT_ID}/${queueName}`; + const baseUrl = sqsConfig.BASE_URL || `https://sqs.${sqsConfig.REGION}.amazonaws.com`; + const sqsUrl = `${baseUrl}/${sqsConfig.ACCOUNT_ID}/${queueName}`; const message = { ...(extra ?? {}), diff --git a/src/config/env.config.ts b/src/config/env.config.ts index 7c4e382e7e..f1265a875f 100644 --- a/src/config/env.config.ts +++ b/src/config/env.config.ts @@ -121,6 +121,7 @@ export type Sqs = { SECRET_ACCESS_KEY: string; ACCOUNT_ID: string; REGION: string; + BASE_URL: string; MAX_PAYLOAD_SIZE: number; EVENTS: { APPLICATION_STARTUP: boolean; @@ -585,6 +586,7 @@ export class ConfigService { SECRET_ACCESS_KEY: process.env.SQS_SECRET_ACCESS_KEY || '', ACCOUNT_ID: process.env.SQS_ACCOUNT_ID || '', REGION: process.env.SQS_REGION || '', + BASE_URL: process.env.SQS_BASE_URL || '', MAX_PAYLOAD_SIZE: Number.parseInt(process.env.SQS_MAX_PAYLOAD_SIZE ?? '1048576'), EVENTS: { APPLICATION_STARTUP: process.env?.SQS_GLOBAL_APPLICATION_STARTUP === 'true', From 0419e82d8f2cdd28b16312b94802b3417f11b8ca Mon Sep 17 00:00:00 2001 From: Rafael Berrocal Justiniano Date: Mon, 23 Feb 2026 21:22:19 -0300 Subject: [PATCH 67/89] fix: handle potential trailing slashes --- src/api/integrations/event/sqs/sqs.controller.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/api/integrations/event/sqs/sqs.controller.ts b/src/api/integrations/event/sqs/sqs.controller.ts index 782a9aa5cd..d18677c4fb 100644 --- a/src/api/integrations/event/sqs/sqs.controller.ts +++ b/src/api/integrations/event/sqs/sqs.controller.ts @@ -126,7 +126,8 @@ export class SqsController extends EventController implements EventControllerInt ? 'singlequeue' : `${event.replace('.', '_').toLowerCase()}`; const queueName = `${prefixName}_${eventFormatted}.fifo`; - const baseUrl = sqsConfig.BASE_URL || `https://sqs.${sqsConfig.REGION}.amazonaws.com`; + const rawBaseUrl = sqsConfig.BASE_URL || `https://sqs.${sqsConfig.REGION}.amazonaws.com`; + const baseUrl = rawBaseUrl.replace(/\/+$/, ''); const sqsUrl = `${baseUrl}/${sqsConfig.ACCOUNT_ID}/${queueName}`; const message = { From ec7999b04f8717cf5dd8bbf42459a1ff161a70f0 Mon Sep 17 00:00:00 2001 From: Alexandre Reyes Martins Date: Mon, 23 Feb 2026 21:31:20 +0000 Subject: [PATCH 68/89] feat(history-sync): emit messaging-history.set event on sync completion and fix race condition Reorder webhook emissions (CHATS_SET, MESSAGES_SET) to fire after database persistence, fixing a race condition where consumers received the event before data was queryable. Emit a new MESSAGING_HISTORY_SET event when progress reaches 100%, allowing consumers to know exactly when history sync is complete and messages are available in the database. Register the new event across all transport types (Webhook, WebSocket, RabbitMQ, NATS, SQS, Kafka, Pusher) and validation schemas. --- .../whatsapp/whatsapp.baileys.service.ts | 20 +++++++++++++------ .../integrations/event/event.controller.ts | 1 + src/config/env.config.ts | 10 ++++++++++ src/validate/instance.schema.ts | 4 ++++ 4 files changed, 29 insertions(+), 6 deletions(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 60e857fcc1..9f4a900af0 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -989,12 +989,12 @@ export class BaileysStartupService extends ChannelStartupService { chatsRaw.push({ remoteJid: chat.id, instanceId: this.instanceId, name: chat.name }); } - this.sendDataWebhook(Events.CHATS_SET, chatsRaw); - if (this.configService.get('DATABASE').SAVE_DATA.HISTORIC) { await this.prismaRepository.chat.createMany({ data: chatsRaw, skipDuplicates: true }); } + this.sendDataWebhook(Events.CHATS_SET, chatsRaw); + const messagesRaw: any[] = []; const messagesRepository: Set = new Set( @@ -1046,15 +1046,15 @@ export class BaileysStartupService extends ChannelStartupService { messagesRaw.push(this.prepareMessage(m)); } + if (this.configService.get('DATABASE').SAVE_DATA.HISTORIC) { + await this.prismaRepository.message.createMany({ data: messagesRaw, skipDuplicates: true }); + } + this.sendDataWebhook(Events.MESSAGES_SET, [...messagesRaw], true, undefined, { isLatest, progress, }); - if (this.configService.get('DATABASE').SAVE_DATA.HISTORIC) { - await this.prismaRepository.message.createMany({ data: messagesRaw, skipDuplicates: true }); - } - if ( this.configService.get('CHATWOOT').ENABLED && this.localChatwoot?.enabled && @@ -1071,6 +1071,14 @@ export class BaileysStartupService extends ChannelStartupService { contacts.filter((c) => !!c.notify || !!c.name).map((c) => ({ id: c.id, name: c.name ?? c.notify })), ); + if (progress === 100) { + this.sendDataWebhook(Events.MESSAGING_HISTORY_SET, { + messageCount: messagesRaw.length, + chatCount: chatsRaw.length, + contactCount: contacts?.length ?? 0, + }); + } + contacts = undefined; messages = undefined; chats = undefined; diff --git a/src/api/integrations/event/event.controller.ts b/src/api/integrations/event/event.controller.ts index 39b52184bf..63061ea10f 100644 --- a/src/api/integrations/event/event.controller.ts +++ b/src/api/integrations/event/event.controller.ts @@ -162,6 +162,7 @@ export class EventController { 'CALL', 'TYPEBOT_START', 'TYPEBOT_CHANGE_STATUS', + 'MESSAGING_HISTORY_SET', 'REMOVE_INSTANCE', 'LOGOUT_INSTANCE', 'INSTANCE_CREATE', diff --git a/src/config/env.config.ts b/src/config/env.config.ts index 7c4e382e7e..772ae9279d 100644 --- a/src/config/env.config.ts +++ b/src/config/env.config.ts @@ -91,6 +91,7 @@ export type EventsRabbitmq = { CALL: boolean; TYPEBOT_START: boolean; TYPEBOT_CHANGE_STATUS: boolean; + MESSAGING_HISTORY_SET: boolean; }; export type Rabbitmq = { @@ -150,6 +151,7 @@ export type Sqs = { SEND_MESSAGE: boolean; TYPEBOT_CHANGE_STATUS: boolean; TYPEBOT_START: boolean; + MESSAGING_HISTORY_SET: boolean; }; }; @@ -223,6 +225,7 @@ export type EventsWebhook = { CALL: boolean; TYPEBOT_START: boolean; TYPEBOT_CHANGE_STATUS: boolean; + MESSAGING_HISTORY_SET: boolean; ERRORS: boolean; ERRORS_WEBHOOK: string; }; @@ -256,6 +259,7 @@ export type EventsPusher = { CALL: boolean; TYPEBOT_START: boolean; TYPEBOT_CHANGE_STATUS: boolean; + MESSAGING_HISTORY_SET: boolean; }; export type ApiKey = { KEY: string }; @@ -537,6 +541,7 @@ export class ConfigService { CALL: process.env?.RABBITMQ_EVENTS_CALL === 'true', TYPEBOT_START: process.env?.RABBITMQ_EVENTS_TYPEBOT_START === 'true', TYPEBOT_CHANGE_STATUS: process.env?.RABBITMQ_EVENTS_TYPEBOT_CHANGE_STATUS === 'true', + MESSAGING_HISTORY_SET: process.env?.RABBITMQ_EVENTS_MESSAGING_HISTORY_SET === 'true', }, }, NATS: { @@ -574,6 +579,7 @@ export class ConfigService { CALL: process.env?.NATS_EVENTS_CALL === 'true', TYPEBOT_START: process.env?.NATS_EVENTS_TYPEBOT_START === 'true', TYPEBOT_CHANGE_STATUS: process.env?.NATS_EVENTS_TYPEBOT_CHANGE_STATUS === 'true', + MESSAGING_HISTORY_SET: process.env?.NATS_EVENTS_MESSAGING_HISTORY_SET === 'true', }, }, SQS: { @@ -614,6 +620,7 @@ export class ConfigService { SEND_MESSAGE: process.env?.SQS_GLOBAL_SEND_MESSAGE === 'true', TYPEBOT_CHANGE_STATUS: process.env?.SQS_GLOBAL_TYPEBOT_CHANGE_STATUS === 'true', TYPEBOT_START: process.env?.SQS_GLOBAL_TYPEBOT_START === 'true', + MESSAGING_HISTORY_SET: process.env?.SQS_GLOBAL_MESSAGING_HISTORY_SET === 'true', }, }, KAFKA: { @@ -657,6 +664,7 @@ export class ConfigService { CALL: process.env?.KAFKA_EVENTS_CALL === 'true', TYPEBOT_START: process.env?.KAFKA_EVENTS_TYPEBOT_START === 'true', TYPEBOT_CHANGE_STATUS: process.env?.KAFKA_EVENTS_TYPEBOT_CHANGE_STATUS === 'true', + MESSAGING_HISTORY_SET: process.env?.KAFKA_EVENTS_MESSAGING_HISTORY_SET === 'true', }, SASL: process.env?.KAFKA_SASL_ENABLED === 'true' @@ -722,6 +730,7 @@ export class ConfigService { CALL: process.env?.PUSHER_EVENTS_CALL === 'true', TYPEBOT_START: process.env?.PUSHER_EVENTS_TYPEBOT_START === 'true', TYPEBOT_CHANGE_STATUS: process.env?.PUSHER_EVENTS_TYPEBOT_CHANGE_STATUS === 'true', + MESSAGING_HISTORY_SET: process.env?.PUSHER_EVENTS_MESSAGING_HISTORY_SET === 'true', }, }, WA_BUSINESS: { @@ -779,6 +788,7 @@ export class ConfigService { CALL: process.env?.WEBHOOK_EVENTS_CALL === 'true', TYPEBOT_START: process.env?.WEBHOOK_EVENTS_TYPEBOT_START === 'true', TYPEBOT_CHANGE_STATUS: process.env?.WEBHOOK_EVENTS_TYPEBOT_CHANGE_STATUS === 'true', + MESSAGING_HISTORY_SET: process.env?.WEBHOOK_EVENTS_MESSAGING_HISTORY_SET === 'true', ERRORS: process.env?.WEBHOOK_EVENTS_ERRORS === 'true', ERRORS_WEBHOOK: process.env?.WEBHOOK_EVENTS_ERRORS_WEBHOOK || '', }, diff --git a/src/validate/instance.schema.ts b/src/validate/instance.schema.ts index a0553b6667..16fd4fe80b 100644 --- a/src/validate/instance.schema.ts +++ b/src/validate/instance.schema.ts @@ -86,6 +86,7 @@ export const instanceSchema: JSONSchema7 = { 'CALL', 'TYPEBOT_START', 'TYPEBOT_CHANGE_STATUS', + 'MESSAGING_HISTORY_SET', ], }, }, @@ -123,6 +124,7 @@ export const instanceSchema: JSONSchema7 = { 'CALL', 'TYPEBOT_START', 'TYPEBOT_CHANGE_STATUS', + 'MESSAGING_HISTORY_SET', ], }, }, @@ -160,6 +162,7 @@ export const instanceSchema: JSONSchema7 = { 'CALL', 'TYPEBOT_START', 'TYPEBOT_CHANGE_STATUS', + 'MESSAGING_HISTORY_SET', ], }, }, @@ -197,6 +200,7 @@ export const instanceSchema: JSONSchema7 = { 'CALL', 'TYPEBOT_START', 'TYPEBOT_CHANGE_STATUS', + 'MESSAGING_HISTORY_SET', ], }, }, From 1242baa5a4bec20f2eced8f1d017186c15d68a4d Mon Sep 17 00:00:00 2001 From: Alexandre Reyes Martins Date: Mon, 23 Feb 2026 21:48:30 +0000 Subject: [PATCH 69/89] fix(history-sync): use cumulative counts in MESSAGING_HISTORY_SET event Track message, chat and contact counts across all history sync batches using instance-level counters, so the final event reports accurate totals instead of only the last batch counts. Addresses Sourcery review feedback on PR #2440. --- .../whatsapp/whatsapp.baileys.service.ts | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 9f4a900af0..1c9bd23245 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -252,6 +252,11 @@ export class BaileysStartupService extends ChannelStartupService { private logBaileys = this.configService.get('LOG').BAILEYS; private eventProcessingQueue: Promise = Promise.resolve(); + // Cumulative history sync counters (reset on sync completion) + private historySyncMessageCount = 0; + private historySyncChatCount = 0; + private historySyncContactCount = 0; + // Cache TTL constants (in seconds) private readonly MESSAGE_CACHE_TTL_SECONDS = 5 * 60; // 5 minutes - avoid duplicate message processing private readonly UPDATE_CACHE_TTL_SECONDS = 30 * 60; // 30 minutes - avoid duplicate status updates @@ -993,6 +998,8 @@ export class BaileysStartupService extends ChannelStartupService { await this.prismaRepository.chat.createMany({ data: chatsRaw, skipDuplicates: true }); } + this.historySyncChatCount += chatsRaw.length; + this.sendDataWebhook(Events.CHATS_SET, chatsRaw); const messagesRaw: any[] = []; @@ -1046,6 +1053,8 @@ export class BaileysStartupService extends ChannelStartupService { messagesRaw.push(this.prepareMessage(m)); } + this.historySyncMessageCount += messagesRaw.length; + if (this.configService.get('DATABASE').SAVE_DATA.HISTORIC) { await this.prismaRepository.message.createMany({ data: messagesRaw, skipDuplicates: true }); } @@ -1067,16 +1076,23 @@ export class BaileysStartupService extends ChannelStartupService { ); } + const filteredContacts = contacts.filter((c) => !!c.notify || !!c.name); + this.historySyncContactCount += filteredContacts.length; + await this.contactHandle['contacts.upsert']( - contacts.filter((c) => !!c.notify || !!c.name).map((c) => ({ id: c.id, name: c.name ?? c.notify })), + filteredContacts.map((c) => ({ id: c.id, name: c.name ?? c.notify })), ); if (progress === 100) { this.sendDataWebhook(Events.MESSAGING_HISTORY_SET, { - messageCount: messagesRaw.length, - chatCount: chatsRaw.length, - contactCount: contacts?.length ?? 0, + messageCount: this.historySyncMessageCount, + chatCount: this.historySyncChatCount, + contactCount: this.historySyncContactCount, }); + + this.historySyncMessageCount = 0; + this.historySyncChatCount = 0; + this.historySyncContactCount = 0; } contacts = undefined; From 6f759443b0b6a658ee5144f02790d2ec3d473204 Mon Sep 17 00:00:00 2001 From: Alexandre Reyes Martins Date: Tue, 24 Feb 2026 14:06:14 +0000 Subject: [PATCH 70/89] fix(history-sync): reset cumulative counters on new sync start and abort MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Detect new sync runs by tracking lastProgress — when progress resets or decreases, counters are zeroed before accumulating. This prevents stale counts from aborted syncs leaking into subsequent runs. Addresses Sourcery review feedback on PR #2442. --- .../channel/whatsapp/whatsapp.baileys.service.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 1c9bd23245..4b5a115ba6 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -252,10 +252,11 @@ export class BaileysStartupService extends ChannelStartupService { private logBaileys = this.configService.get('LOG').BAILEYS; private eventProcessingQueue: Promise = Promise.resolve(); - // Cumulative history sync counters (reset on sync completion) + // Cumulative history sync counters (reset on new sync or completion) private historySyncMessageCount = 0; private historySyncChatCount = 0; private historySyncContactCount = 0; + private historySyncLastProgress = -1; // Cache TTL constants (in seconds) private readonly MESSAGE_CACHE_TTL_SECONDS = 5 * 60; // 5 minutes - avoid duplicate message processing @@ -945,6 +946,14 @@ export class BaileysStartupService extends ChannelStartupService { syncType?: proto.HistorySync.HistorySyncType; }) => { try { + // Reset counters when a new sync starts (progress resets or decreases) + if (progress <= this.historySyncLastProgress) { + this.historySyncMessageCount = 0; + this.historySyncChatCount = 0; + this.historySyncContactCount = 0; + } + this.historySyncLastProgress = progress ?? -1; + if (syncType === proto.HistorySync.HistorySyncType.ON_DEMAND) { console.log('received on-demand history sync, messages=', messages); } @@ -1093,6 +1102,7 @@ export class BaileysStartupService extends ChannelStartupService { this.historySyncMessageCount = 0; this.historySyncChatCount = 0; this.historySyncContactCount = 0; + this.historySyncLastProgress = -1; } contacts = undefined; From 21513f5d5c93157f00a77ae983e25c5150c33eeb Mon Sep 17 00:00:00 2001 From: Davidson Gomes Date: Tue, 24 Feb 2026 12:10:06 -0300 Subject: [PATCH 71/89] Remove unnecessary debug logs from sync function Removed debug logging for messages, chats, and contacts. --- .../channel/whatsapp/whatsapp.baileys.service.ts | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 25c6dbe092..76280a4d86 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -989,14 +989,6 @@ export class BaileysStartupService extends ChannelStartupService { progress?: number; syncType?: proto.HistorySync.HistorySyncType; }) => { - //These logs are crucial; when something changes in Baileys/WhatsApp, we can more easily understand what changed! - this.logger.debug('Messages abaixo'); - this.logger.debug(messages); - this.logger.debug('Chats abaixo'); - this.logger.debug(chats); - this.logger.debug('Contatos abaixo'); - this.logger.debug(contacts); - try { if (syncType === proto.HistorySync.HistorySyncType.ON_DEMAND) { console.log('received on-demand history sync, messages=', messages); From 35a4bd44940ce4ed3570e2b6c05b79293adcb6c3 Mon Sep 17 00:00:00 2001 From: Matheus Pastorini Date: Wed, 29 Apr 2026 15:34:47 -0300 Subject: [PATCH 72/89] feat(messages): add carousel + fix interactive rendering on WhatsApp Web/Desktop MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds carousel message support and fixes button/list rendering on WhatsApp Web/Desktop and iOS by injecting the required node into the relayMessage stanza via the official Baileys additionalNodes option. Changes: - New endpoint POST /message/sendCarousel/{instance} (interactiveMessage with carouselMessage; single-card-without-image is sent as nativeFlowMessage for iOS compatibility) - buttonMessage: removed viewOnceMessage wrapper that prevented button rendering on Web/Desktop; added node - listMessage: switched to legacy listMessage with SINGLE_SELECT listType (the modern interactiveMessage+single_select format does not render on Web/Desktop) and added the node - sendMessage / sendMessageWithTyping: forward an optional additionalNodes parameter, and route top-level interactiveMessage / listMessage through client.relayMessage so the biz node reaches the stanza - POST /instance/logout/{instance}: idempotent when the instance is already closed (returns SUCCESS instead of 400) so the manager UI delete flow (logout-then-delete) does not surface a misleading error - DTO/schema/controller/router: SendCarouselDto, CarouselCard, carouselMessageSchema, sendCarousel handler and route - Manager UI: small vanilla helper script (test-interactive.js) injected via index.html to add a "Test Interactive" button per instance card with an editable JSON modal for the 5 message kinds (Reply / CTA / PIX / List / Carousel) - Drive-by fix: undefined `maxRetries` reference in a verbose log inside the messages.update handler Tested manually on WhatsApp Web, Desktop, iOS and Android — all five message kinds render correctly across clients. --- manager/dist/assets/test-interactive.js | 448 ++++++++++++++++++ manager/dist/index.html | 1 + src/api/controllers/instance.controller.ts | 4 +- src/api/controllers/sendMessage.controller.ts | 5 + src/api/dto/sendMessage.dto.ts | 13 + .../helpers/interactiveMessage.helper.ts | 141 ++++++ .../whatsapp/whatsapp.baileys.service.ts | 288 +++++++---- .../chatwoot/services/chatwoot.service.ts | 142 +++--- src/api/routes/sendMessage.router.ts | 12 + src/validate/message.schema.ts | 59 +++ 10 files changed, 951 insertions(+), 162 deletions(-) create mode 100644 manager/dist/assets/test-interactive.js create mode 100644 src/api/integrations/channel/whatsapp/helpers/interactiveMessage.helper.ts diff --git a/manager/dist/assets/test-interactive.js b/manager/dist/assets/test-interactive.js new file mode 100644 index 0000000000..5f2adee99b --- /dev/null +++ b/manager/dist/assets/test-interactive.js @@ -0,0 +1,448 @@ +/* eslint-disable */ +/** + * Painel de testes para envio de mensagens interativas (Botões, Lista, Carrossel). + * Injeta um botão "Testar Interativo" em cada card de instância no manager. + * Fallback: se nenhum card for detectado, mostra um botão flutuante (FAB). + */ +(function () { + 'use strict'; + + if (window.__evoTestInteractive) return; + window.__evoTestInteractive = true; + + const STYLE = ` + .evo-test-btn { + display: inline-flex; align-items: center; gap: 6px; + padding: 6px 10px; margin: 4px; + font-size: 12px; font-weight: 600; line-height: 1; + background: #6e44ff; color: #fff; border: none; border-radius: 6px; + cursor: pointer; box-shadow: 0 1px 2px rgba(0,0,0,.15); + transition: background .15s; + } + .evo-test-btn:hover { background: #5a36d6; } + .evo-test-fab { + position: fixed; right: 24px; bottom: 24px; z-index: 999998; + padding: 12px 16px; font-size: 14px; font-weight: 700; + background: #6e44ff; color: #fff; border: none; border-radius: 999px; + cursor: pointer; box-shadow: 0 4px 12px rgba(0,0,0,.25); + } + .evo-test-overlay { + position: fixed; inset: 0; background: rgba(0,0,0,.55); + z-index: 999999; display: flex; align-items: center; justify-content: center; + font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; + } + .evo-test-modal { + width: min(720px, 92vw); max-height: 92vh; overflow: auto; + background: #fff; color: #1a1a1a; border-radius: 12px; + padding: 20px; box-shadow: 0 12px 40px rgba(0,0,0,.4); + } + .evo-test-modal h2 { margin: 0 0 4px; font-size: 18px; } + .evo-test-modal .evo-sub { color: #666; font-size: 12px; margin-bottom: 14px; } + .evo-test-tabs { display: flex; gap: 4px; border-bottom: 1px solid #e5e5e5; margin-bottom: 14px; } + .evo-test-tab { + padding: 8px 14px; border: none; background: transparent; cursor: pointer; + font-size: 13px; font-weight: 600; color: #666; border-bottom: 2px solid transparent; + } + .evo-test-tab.active { color: #6e44ff; border-color: #6e44ff; } + .evo-test-form label { display: block; font-size: 12px; font-weight: 600; margin: 10px 0 4px; color: #444; } + .evo-test-form input, .evo-test-form textarea { + width: 100%; padding: 8px 10px; border: 1px solid #d0d0d0; border-radius: 6px; + font-size: 13px; font-family: inherit; box-sizing: border-box; + } + .evo-test-form textarea { font-family: ui-monospace, "SF Mono", Consolas, monospace; min-height: 180px; resize: vertical; } + .evo-test-actions { display: flex; gap: 8px; justify-content: flex-end; margin-top: 16px; } + .evo-test-actions button { + padding: 8px 14px; font-size: 13px; font-weight: 600; border-radius: 6px; cursor: pointer; border: none; + } + .evo-test-cancel { background: #eee; color: #333; } + .evo-test-send { background: #6e44ff; color: #fff; } + .evo-test-send:disabled { opacity: .6; cursor: not-allowed; } + .evo-test-toast { + position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%); + padding: 12px 18px; border-radius: 8px; font-size: 13px; color: #fff; + z-index: 9999999; box-shadow: 0 4px 12px rgba(0,0,0,.3); + } + .evo-test-toast.ok { background: #16a34a; } + .evo-test-toast.err { background: #dc2626; } + .evo-test-fab-menu { + position: fixed; right: 24px; bottom: 80px; z-index: 999998; + background: #fff; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,.2); + max-height: 320px; overflow: auto; min-width: 220px; + } + .evo-test-fab-menu button { + display: block; width: 100%; padding: 10px 14px; text-align: left; + border: none; background: transparent; font-size: 13px; cursor: pointer; border-bottom: 1px solid #f0f0f0; + } + .evo-test-fab-menu button:hover { background: #f5f3ff; } + `; + + const styleEl = document.createElement('style'); + styleEl.textContent = STYLE; + document.head.appendChild(styleEl); + + // Os tipos de botão NÃO PODEM SER MISTURADOS no mesmo envio. + // Regras da API: + // - reply: 1 a 3 botões, sem misturar com CTA ou PIX + // - CTA (url/call/copy): 1 a 2 botões, sem misturar com reply ou PIX + // - pix: exatamente 1 botão isolado (payment_info) + // Por isso há abas separadas. + const TEMPLATES = { + reply: { + number: '', + title: 'Resposta Rápida', + description: 'Escolha uma das opções abaixo:', + footer: 'Evolution API', + buttons: [ + { type: 'reply', displayText: '✅ Confirmar', id: 'opt_confirm' }, + { type: 'reply', displayText: '❌ Cancelar', id: 'opt_cancel' }, + { type: 'reply', displayText: '🤔 Talvez', id: 'opt_maybe' }, + ], + }, + cta: { + number: '', + title: 'Botões CTA', + description: 'Botões de URL e copia-código (cta_url + cta_copy):', + footer: 'Máx. 2 botões CTA por mensagem', + buttons: [ + { type: 'url', displayText: '🌐 Abrir site', url: 'https://example.com' }, + { type: 'copy', displayText: '📋 Copiar PIX', copyCode: '00020126580014BR.GOV.BCB.PIX0136abc12345-6789-0000-aaaa-bbbbccccdddd5204000053039865802BR5913FULANO DE TAL6009SAO PAULO62070503***6304ABCD' }, + ], + }, + pix: { + number: '', + title: 'Pagamento via PIX', + description: 'Toque para pagar via PIX (payment_info)', + footer: 'WhatsApp Pay', + buttons: [ + { + type: 'pix', + currency: 'BRL', + name: 'Empresa Exemplo', + keyType: 'random', + key: 'abc12345-6789-0000-aaaa-bbbbccccdddd', + }, + ], + }, + list: { + number: '', + title: 'Cardápio de Teste', + description: 'Escolha um item abaixo', + footerText: 'Validade hoje', + buttonText: 'Ver opções', + sections: [ + { + title: 'Bebidas', + rows: [ + { title: 'Coca-Cola', description: 'Lata 350ml', rowId: 'coca' }, + { title: 'Suco de Laranja', description: '300ml natural', rowId: 'suco' }, + ], + }, + { + title: 'Lanches', + rows: [ + { title: 'X-Burger', description: 'Pão, carne 150g, queijo', rowId: 'xburger' }, + ], + }, + ], + }, + carousel: { + number: '', + body: 'Catálogo da semana', + cards: [ + { + body: 'Produto A', + footer: 'R$ 99,90', + imageUrl: 'https://picsum.photos/seed/a/600/400', + buttons: [{ type: 'url', displayText: 'Comprar', url: 'https://exemplo.com/a' }], + }, + { + body: 'Produto B', + footer: 'R$ 149,90', + imageUrl: 'https://picsum.photos/seed/b/600/400', + buttons: [{ type: 'url', displayText: 'Comprar', url: 'https://exemplo.com/b' }], + }, + { + body: 'Produto C', + footer: 'R$ 199,90', + imageUrl: 'https://picsum.photos/seed/c/600/400', + buttons: [{ type: 'reply', displayText: 'Quero!', id: 'prod_c' }], + }, + ], + }, + }; + + const ENDPOINT = { + reply: 'sendButtons', + cta: 'sendButtons', + pix: 'sendButtons', + list: 'sendList', + carousel: 'sendCarousel', + }; + const TAB_LABEL = { + reply: 'Reply', + cta: 'CTA', + pix: 'PIX', + list: 'Lista', + carousel: 'Carrossel', + }; + + function getApiKey() { + return localStorage.getItem('accessToken') || localStorage.getItem('token') || ''; + } + + function getApiUrl() { + const u = localStorage.getItem('apiUrl'); + return u && u !== 'undefined' && u !== 'null' ? u.replace(/\/+$/, '') : window.location.origin; + } + + async function fetchInstances() { + const apikey = getApiKey(); + if (!apikey) return []; + try { + const res = await fetch(getApiUrl() + '/instance/fetchInstances', { headers: { apikey } }); + if (!res.ok) return []; + const data = await res.json(); + const list = Array.isArray(data) ? data : (data?.instances || []); + return list + .map((it) => { + const name = it?.name || it?.instanceName || it?.instance?.instanceName; + const token = it?.token || it?.hash || it?.instance?.hash || it?.apikey; + return name ? { name, token } : null; + }) + .filter(Boolean); + } catch (e) { + console.error('[evo-test] fetchInstances error', e); + return []; + } + } + + function showToast(msg, type) { + const el = document.createElement('div'); + el.className = 'evo-test-toast ' + (type || 'ok'); + el.textContent = msg; + document.body.appendChild(el); + setTimeout(() => el.remove(), 4000); + } + + function openModal(instance) { + const overlay = document.createElement('div'); + overlay.className = 'evo-test-overlay'; + + const modal = document.createElement('div'); + modal.className = 'evo-test-modal'; + + let activeTab = 'reply'; + + const render = () => { + const tpl = TEMPLATES[activeTab]; + if (!tpl.number) tpl.number = ''; + + modal.innerHTML = ` +

Teste Interativo

+
Instância: ${instance.name} · Endpoint: POST /message/${ENDPOINT[activeTab]}/${instance.name}
+
+ ${Object.keys(ENDPOINT).map((k) => ``).join('')} +
+
+ + + + +
+
+ + +
+ `; + + const payloadCopy = { ...tpl }; + delete payloadCopy.number; + modal.querySelector('.evo-payload').value = JSON.stringify(payloadCopy, null, 2); + + modal.querySelectorAll('.evo-test-tab').forEach((btn) => { + btn.onclick = () => { + activeTab = btn.dataset.tab; + render(); + }; + }); + + modal.querySelector('.evo-test-cancel').onclick = () => overlay.remove(); + modal.querySelector('.evo-test-send').onclick = async (ev) => { + const sendBtn = ev.currentTarget; + const number = (modal.querySelector('.evo-number').value || '').replace(/\D/g, ''); + if (!number) { + showToast('Informe o número de destino', 'err'); + return; + } + let payload; + try { + payload = JSON.parse(modal.querySelector('.evo-payload').value); + } catch (e) { + showToast('JSON inválido: ' + e.message, 'err'); + return; + } + payload.number = number; + TEMPLATES[activeTab].number = number; + + sendBtn.disabled = true; + sendBtn.textContent = 'Enviando...'; + try { + const apikey = instance.token || getApiKey(); + const url = getApiUrl() + '/message/' + ENDPOINT[activeTab] + '/' + encodeURIComponent(instance.name); + const res = await fetch(url, { + method: 'POST', + headers: { 'Content-Type': 'application/json', apikey }, + body: JSON.stringify(payload), + }); + const data = await res.json().catch(() => ({})); + if (res.ok) { + showToast('Mensagem enviada (id ' + (data?.key?.id || data?.messageId || 'ok') + ')', 'ok'); + overlay.remove(); + } else { + const msg = data?.response?.message || data?.message || res.statusText; + showToast('Erro ' + res.status + ': ' + (Array.isArray(msg) ? msg.join('; ') : msg), 'err'); + sendBtn.disabled = false; + sendBtn.textContent = 'Enviar'; + } + } catch (e) { + showToast('Falha de rede: ' + e.message, 'err'); + sendBtn.disabled = false; + sendBtn.textContent = 'Enviar'; + } + }; + }; + + render(); + overlay.appendChild(modal); + overlay.addEventListener('click', (e) => { + if (e.target === overlay) overlay.remove(); + }); + document.body.appendChild(overlay); + } + + // -- Detector de cards via MutationObserver ----------------------------------- + + let knownInstances = []; + let lastInstanceFetch = 0; + + async function refreshInstancesIfStale() { + if (Date.now() - lastInstanceFetch > 8000) { + knownInstances = await fetchInstances(); + lastInstanceFetch = Date.now(); + } + } + + function findCardForInstance(name) { + // Procura elementos folha que contenham EXATAMENTE o nome da instância + const candidates = []; + const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, null); + let node; + while ((node = walker.nextNode())) { + if (node.nodeValue && node.nodeValue.trim() === name) { + candidates.push(node.parentElement); + } + } + + for (const el of candidates) { + let ancestor = el; + let depth = 0; + while (ancestor && depth < 6) { + const hasButton = ancestor.querySelector('button, a[role="button"]'); + const rect = ancestor.getBoundingClientRect && ancestor.getBoundingClientRect(); + if (hasButton && rect && rect.width > 180 && rect.height > 80) { + return ancestor; + } + ancestor = ancestor.parentElement; + depth++; + } + } + return null; + } + + function injectIntoCard(card, instance) { + if (card.querySelector('.evo-test-btn[data-evo-instance="' + instance.name + '"]')) return; + const btn = document.createElement('button'); + btn.className = 'evo-test-btn'; + btn.dataset.evoInstance = instance.name; + btn.type = 'button'; + btn.textContent = '🧪 Testar Interativo'; + btn.addEventListener('click', (e) => { + e.preventDefault(); + e.stopPropagation(); + openModal(instance); + }); + // injeta perto dos outros botões (no final do card) + const buttonContainer = card.querySelector('button')?.parentElement || card; + buttonContainer.appendChild(btn); + card.dataset.evoTestInjected = '1'; + } + + async function scan() { + await refreshInstancesIfStale(); + if (!knownInstances.length) return; + for (const inst of knownInstances) { + const card = findCardForInstance(inst.name); + if (card) injectIntoCard(card, inst); + } + ensureFab(); + } + + function ensureFab() { + // Se NENHUM card foi injetado, mostra o FAB. Se houver pelo menos um, remove o FAB. + const anyInjected = document.querySelector('.evo-test-btn[data-evo-instance]'); + const existingFab = document.querySelector('.evo-test-fab'); + if (anyInjected) { + existingFab && existingFab.remove(); + return; + } + if (existingFab) return; + const fab = document.createElement('button'); + fab.className = 'evo-test-fab'; + fab.textContent = '🧪 Testar Interativo'; + fab.onclick = () => openFabMenu(fab); + document.body.appendChild(fab); + } + + function openFabMenu(fab) { + document.querySelectorAll('.evo-test-fab-menu').forEach((m) => m.remove()); + if (!knownInstances.length) { + showToast('Nenhuma instância encontrada. Verifique sua API key.', 'err'); + return; + } + const menu = document.createElement('div'); + menu.className = 'evo-test-fab-menu'; + knownInstances.forEach((inst) => { + const b = document.createElement('button'); + b.textContent = inst.name; + b.onclick = () => { + menu.remove(); + openModal(inst); + }; + menu.appendChild(b); + }); + document.body.appendChild(menu); + setTimeout(() => { + const closer = (e) => { + if (!menu.contains(e.target) && e.target !== fab) { + menu.remove(); + document.removeEventListener('click', closer); + } + }; + document.addEventListener('click', closer); + }, 0); + } + + let scanTimer = null; + function scheduleScan() { + clearTimeout(scanTimer); + scanTimer = setTimeout(scan, 300); + } + + const observer = new MutationObserver(scheduleScan); + observer.observe(document.body, { childList: true, subtree: true }); + + // primeira tentativa após 1s para dar tempo do React renderizar + setTimeout(scan, 1000); + setTimeout(scan, 3000); + setInterval(scan, 10000); +})(); diff --git a/manager/dist/index.html b/manager/dist/index.html index 01a75fd5a6..20c0919f8c 100644 --- a/manager/dist/index.html +++ b/manager/dist/index.html @@ -10,5 +10,6 @@
+ diff --git a/src/api/controllers/instance.controller.ts b/src/api/controllers/instance.controller.ts index 6a69106881..fcbf8017b6 100644 --- a/src/api/controllers/instance.controller.ts +++ b/src/api/controllers/instance.controller.ts @@ -436,8 +436,10 @@ export class InstanceController { public async logout({ instanceName }: InstanceDto) { const { instance } = await this.connectionState({ instanceName }); + // Idempotente: se já está desconectada, retorna sucesso silenciosamente. + // Evita falhar o fluxo de delete do painel, que sempre chama logout antes do delete. if (instance.state === 'close') { - throw new BadRequestException('The "' + instanceName + '" instance is not connected'); + return { status: 'SUCCESS', error: false, response: { message: 'Instance was already disconnected' } }; } try { diff --git a/src/api/controllers/sendMessage.controller.ts b/src/api/controllers/sendMessage.controller.ts index 64aa1c8468..8414c67db8 100644 --- a/src/api/controllers/sendMessage.controller.ts +++ b/src/api/controllers/sendMessage.controller.ts @@ -2,6 +2,7 @@ import { InstanceDto } from '@api/dto/instance.dto'; import { SendAudioDto, SendButtonsDto, + SendCarouselDto, SendContactDto, SendListDto, SendLocationDto, @@ -86,6 +87,10 @@ export class SendMessageController { return await this.waMonitor.waInstances[instanceName].listMessage(data); } + public async sendCarousel({ instanceName }: InstanceDto, data: SendCarouselDto) { + return await this.waMonitor.waInstances[instanceName].carouselMessage(data); + } + public async sendContact({ instanceName }: InstanceDto, data: SendContactDto) { return await this.waMonitor.waInstances[instanceName].contactMessage(data); } diff --git a/src/api/dto/sendMessage.dto.ts b/src/api/dto/sendMessage.dto.ts index 797ca111ba..da71494b9e 100644 --- a/src/api/dto/sendMessage.dto.ts +++ b/src/api/dto/sendMessage.dto.ts @@ -169,3 +169,16 @@ export class SendReactionDto { key: proto.IMessageKey; reaction: string; } + +export class CarouselCard { + title?: string; + body: string; + footer?: string; + imageUrl?: string; + buttons: Button[]; +} + +export class SendCarouselDto extends Metadata { + body: string; + cards: CarouselCard[]; +} diff --git a/src/api/integrations/channel/whatsapp/helpers/interactiveMessage.helper.ts b/src/api/integrations/channel/whatsapp/helpers/interactiveMessage.helper.ts new file mode 100644 index 0000000000..eb132db27a --- /dev/null +++ b/src/api/integrations/channel/whatsapp/helpers/interactiveMessage.helper.ts @@ -0,0 +1,141 @@ +import { Button, KeyType } from '@api/dto/sendMessage.dto'; +import { BinaryNode } from 'baileys'; + +export function buildInteractiveBizNode(): BinaryNode { + return { + tag: 'biz', + attrs: {}, + content: [ + { + tag: 'interactive', + attrs: { type: 'native_flow', v: '1' }, + content: [{ tag: 'native_flow', attrs: { v: '9', name: 'mixed' } }], + }, + ], + }; +} + +/** + * Biz node específico para `listMessage` legado. + * Necessário para o WhatsApp Web/Desktop renderizar a lista — o moderno + * (`interactiveMessage` + `single_select`) não é renderizado no Web. + */ +export function buildListBizNode(): BinaryNode { + return { + tag: 'biz', + attrs: {}, + content: [{ tag: 'list', attrs: { type: 'product_list', v: '2' } }], + }; +} + +type NativeFlowButton = { name: string; buttonParamsJson: string }; + +type NativeFlowDeps = { + generateRandomId: () => string; + mapKeyType: Map; +}; + +export function toNativeFlowButton(button: Button, deps: NativeFlowDeps): NativeFlowButton { + const displayText = button.displayText ?? ''; + + switch (button.type) { + case 'url': + return { + name: 'cta_url', + buttonParamsJson: JSON.stringify({ + display_text: displayText, + url: button.url, + merchant_url: button.url, + }), + }; + + case 'call': + return { + name: 'cta_call', + buttonParamsJson: JSON.stringify({ + display_text: displayText, + phone_number: button.phoneNumber, + }), + }; + + case 'copy': + return { + name: 'cta_copy', + buttonParamsJson: JSON.stringify({ + display_text: displayText, + copy_code: button.copyCode, + }), + }; + + case 'reply': + return { + name: 'quick_reply', + buttonParamsJson: JSON.stringify({ + display_text: displayText, + id: button.id ?? deps.generateRandomId(), + }), + }; + + case 'pix': + return { + name: 'payment_info', + buttonParamsJson: JSON.stringify({ + currency: button.currency, + total_amount: { value: 0, offset: 100 }, + reference_id: deps.generateRandomId(), + type: 'physical-goods', + order: { + status: 'pending', + subtotal: { value: 0, offset: 100 }, + order_type: 'ORDER', + items: [ + { name: '', amount: { value: 0, offset: 100 }, quantity: 0, sale_amount: { value: 0, offset: 100 } }, + ], + }, + payment_settings: [ + { + type: 'pix_static_code', + pix_static_code: { + merchant_name: button.name, + key: button.key, + key_type: deps.mapKeyType.get(button.keyType), + }, + }, + ], + share_payment_status: false, + }), + }; + + default: + throw new Error(`Unsupported button type: ${(button as Button).type}`); + } +} + +type ListSection = { + title: string; + rows: Array<{ title: string; description?: string; rowId: string }>; +}; + +export function buildSingleSelectButton(buttonText: string, sections: ListSection[]): NativeFlowButton { + const buttonParams = { + title: buttonText || ' ', + sections: (sections || []).map((section) => ({ + title: section.title || ' ', + highlight_label: '', + rows: (section.rows || []).map((row, index) => { + const rowTitle = row.title || ' '; + return { + header: rowTitle, + title: rowTitle, + description: row.description || ' ', + id: row.rowId || `row_${index}`, + }; + }), + })), + }; + + return { + name: 'single_select', + buttonParamsJson: JSON.stringify(buttonParams), + }; +} diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index aec1806fb0..5aeeac1755 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -33,12 +33,14 @@ import { InstanceDto, SetPresenceDto } from '@api/dto/instance.dto'; import { HandleLabelDto, LabelDto } from '@api/dto/label.dto'; import { Button, + CarouselCard, ContactMessage, KeyType, MediaMessage, Options, SendAudioDto, SendButtonsDto, + SendCarouselDto, SendContactDto, SendListDto, SendLocationDto, @@ -88,10 +90,11 @@ import { sendTelemetry } from '@utils/sendTelemetry'; import useMultiFileAuthStatePrisma from '@utils/use-multi-file-auth-state-prisma'; import { AuthStateProvider } from '@utils/use-multi-file-auth-state-provider-files'; import { useMultiFileAuthStateRedisDb } from '@utils/use-multi-file-auth-state-redis-db'; -import axios from 'axios'; import audioDecode from 'audio-decode'; +import axios from 'axios'; import makeWASocket, { AnyMessageContent, + BinaryNode, BufferedEventData, BufferJSON, CacheStore, @@ -153,6 +156,7 @@ import { PassThrough, Readable } from 'stream'; import { v4 } from 'uuid'; import { BaileysMessageProcessor } from './baileysMessage.processor'; +import { buildInteractiveBizNode, buildListBizNode, toNativeFlowButton } from './helpers/interactiveMessage.helper'; import { useVoiceCallsBaileys } from './voiceCalls/useVoiceCallsBaileys'; export interface ExtendedIMessageKey extends proto.IMessageKey { @@ -442,7 +446,7 @@ export class BaileysStartupService extends ChannelStartupService { qrcodeTerminal.generate(qr, { small: true }, (qrcode) => this.logger.log( `\n{ instance: ${this.instance.name} pairingCode: ${this.instance.qrcode.pairingCode}, qrcodeCount: ${this.instance.qrcode.count} }\n` + - qrcode, + qrcode, ), ); @@ -468,16 +472,16 @@ export class BaileysStartupService extends ChannelStartupService { const statusCode = (lastDisconnect?.error as Boom)?.output?.statusCode; const codesToNotReconnect = [DisconnectReason.loggedOut, DisconnectReason.forbidden, 402, 406]; - + // FIX: Do not reconnect if it's the initial connection (waiting for QR code) // This prevents infinite loop that blocks QR code generation const isInitialConnection = !this.instance.wuid && (this.instance.qrcode?.count ?? 0) === 0; - + if (isInitialConnection) { this.logger.info('Initial connection closed, waiting for QR code generation...'); return; } - + const shouldReconnect = !codesToNotReconnect.includes(statusCode); this.logger.info({ @@ -494,9 +498,7 @@ export class BaileysStartupService extends ChannelStartupService { await this.connectToWhatsapp(this.phoneNumber); }, 3000); } else { - this.logger.info( - `Skipping reconnection for status code ${statusCode} (code is in codesToNotReconnect list)`, - ); + this.logger.info(`Skipping reconnection for status code ${statusCode} (code is in codesToNotReconnect list)`); this.sendDataWebhook(Events.STATUS_INSTANCE, { instance: this.instance.name, status: 'closed', @@ -1129,16 +1131,16 @@ export class BaileysStartupService extends ChannelStartupService { const messagesRepository: Set = new Set( chatwootImport.getRepositoryMessagesCache(instance) ?? - ( - await this.prismaRepository.message.findMany({ - select: { key: true }, - where: { instanceId: this.instanceId }, - }) - ).map((message) => { - const key = message.key as { id: string }; + ( + await this.prismaRepository.message.findMany({ + select: { key: true }, + where: { instanceId: this.instanceId }, + }) + ).map((message) => { + const key = message.key as { id: string }; - return key.id; - }), + return key.id; + }), ); if (chatwootImport.getRepositoryMessagesCache(instance) === null) { @@ -1826,7 +1828,7 @@ export class BaileysStartupService extends ChannelStartupService { if (!findMessage?.id) { this.logger.verbose( - `Original message not found for update after ${maxRetries} retries. Skipping. This is expected for protocol messages or ephemeral events not saved to the database. Key: ${JSON.stringify(key)}`, + `Original message not found for update. Skipping. This is expected for protocol messages or ephemeral events not saved to the database. Key: ${JSON.stringify(key)}`, ); continue; } @@ -2337,12 +2339,12 @@ export class BaileysStartupService extends ChannelStartupService { const url = match[0].replace(/[.,);\]]+$/u, ''); if (!url) return undefined; - const previewData = await getLinkPreview(url, { + const previewData = (await getLinkPreview(url, { imagesPropertyType: 'og', // fetches only open-graph images headers: { 'user-agent': 'googlebot', // fetches with googlebot to prevent login pages }, - }) as any; + })) as any; if (!previewData || !previewData.title) return undefined; @@ -2356,9 +2358,9 @@ export class BaileysStartupService extends ChannelStartupService { thumbnailUrl: image, sourceUrl: url, mediaUrl: url, - renderLargerThumbnail: true + renderLargerThumbnail: true, // showAdAttribution: true // Removed to prevent "Sent via ad" label - } + }, }; } catch (error) { this.logger.error(`Error generating link preview: ${error}`); @@ -2375,6 +2377,7 @@ export class BaileysStartupService extends ChannelStartupService { messageId?: string, ephemeralExpiration?: number, contextInfo?: any, + additionalNodes?: BinaryNode[], // participants?: GroupParticipant[], ) { sender = sender.toLowerCase(); @@ -2394,14 +2397,17 @@ export class BaileysStartupService extends ChannelStartupService { // NOTE: NÃO DEVEMOS GERAR O messageId AQUI, SOMENTE SE VIER INFORMADO POR PARAMETRO. A GERAÇÃO ANTERIOR IMPEDE O WZAP DE IDENTIFICAR A SOURCE. if (messageId) option.messageId = messageId; - if (message['viewOnceMessage']) { + if (message['viewOnceMessage'] || message['interactiveMessage'] || message['listMessage']) { const m = generateWAMessageFromContent(sender, message, { timestamp: new Date(), userJid: this.instance.wuid, messageId, quoted, }); - const id = await this.client.relayMessage(sender, message, { messageId }); + const id = await this.client.relayMessage(sender, message, { + messageId, + ...(additionalNodes?.length ? { additionalNodes } : {}), + }); m.key = { id: id, remoteJid: sender, participant: isPnUser(sender) ? sender : undefined, fromMe: true }; for (const [key, value] of Object.entries(m)) { if (!value || (isArray(value) && value.length) === 0) { @@ -2530,6 +2536,7 @@ export class BaileysStartupService extends ChannelStartupService { message: T, options?: Options, isIntegration = false, + additionalNodes?: BinaryNode[], ) { const isWA = (await this.whatsappNumber({ numbers: [number] }))?.shift(); @@ -2637,6 +2644,7 @@ export class BaileysStartupService extends ChannelStartupService { options?.messageId ?? null, group?.ephemeralDuration, previewContext, + additionalNodes, // group?.participants, ); } else { @@ -2661,6 +2669,7 @@ export class BaileysStartupService extends ChannelStartupService { options?.messageId ?? null, undefined, contextInfo, + additionalNodes, ); } @@ -3661,33 +3670,35 @@ export class BaileysStartupService extends ChannelStartupService { } const message: proto.IMessage = { - viewOnceMessage: { - message: { - interactiveMessage: { - nativeFlowMessage: { - buttons: [ - { - name: this.mapType.get('pix'), - buttonParamsJson: this.toJSONString(data.buttons[0]), - }, - ], - messageParamsJson: JSON.stringify({ - from: 'api', - templateId: v4(), - }), + interactiveMessage: { + nativeFlowMessage: { + buttons: [ + { + name: this.mapType.get('pix'), + buttonParamsJson: this.toJSONString(data.buttons[0]), }, - }, + ], + messageParamsJson: JSON.stringify({ + from: 'api', + templateId: v4(), + }), }, }, }; - return await this.sendMessageWithTyping(data.number, message, { - delay: data?.delay, - presence: 'composing', - quoted: data?.quoted, - mentionsEveryOne: data?.mentionsEveryOne, - mentioned: data?.mentioned, - }); + return await this.sendMessageWithTyping( + data.number, + message, + { + delay: data?.delay, + presence: 'composing', + quoted: data?.quoted, + mentionsEveryOne: data?.mentionsEveryOne, + mentioned: data?.mentioned, + }, + false, + [buildInteractiveBizNode()], + ); } // CTA (url / call / copy) @@ -3722,44 +3733,46 @@ export class BaileysStartupService extends ChannelStartupService { * ========================= */ const message: proto.IMessage = { - viewOnceMessage: { - message: { - interactiveMessage: { - body: { - text: (() => { - let text = `*${data.title}*`; - if (data?.description) { - text += `\n\n${data.description}`; - } - return text; - })(), - }, - footer: data?.footer ? { text: data.footer } : undefined, - header: generatedMedia?.message?.imageMessage - ? { - hasMediaAttachment: true, - imageMessage: generatedMedia.message.imageMessage, - } - : undefined, - nativeFlowMessage: { - buttons, - messageParamsJson: JSON.stringify({ - from: 'api', - templateId: v4(), - }), - }, - }, + interactiveMessage: { + body: { + text: (() => { + let text = `*${data.title}*`; + if (data?.description) { + text += `\n\n${data.description}`; + } + return text; + })(), + }, + footer: data?.footer ? { text: data.footer } : undefined, + header: generatedMedia?.message?.imageMessage + ? { + hasMediaAttachment: true, + imageMessage: generatedMedia.message.imageMessage, + } + : undefined, + nativeFlowMessage: { + buttons, + messageParamsJson: JSON.stringify({ + from: 'api', + templateId: v4(), + }), }, }, }; - return await this.sendMessageWithTyping(data.number, message, { - delay: data?.delay, - presence: 'composing', - quoted: data?.quoted, - mentionsEveryOne: data?.mentionsEveryOne, - mentioned: data?.mentioned, - }); + return await this.sendMessageWithTyping( + data.number, + message, + { + delay: data?.delay, + presence: 'composing', + quoted: data?.quoted, + mentionsEveryOne: data?.mentionsEveryOne, + mentioned: data?.mentioned, + }, + false, + [buildInteractiveBizNode()], + ); } public async locationMessage(data: SendLocationDto) { @@ -3784,18 +3797,115 @@ export class BaileysStartupService extends ChannelStartupService { } public async listMessage(data: SendListDto) { + // Formato LEGADO (`listMessage` com listType SINGLE_SELECT) — funciona em Web, iOS e Android. + // O formato moderno (interactiveMessage + nativeFlowMessage com single_select) só renderiza + // em mobile recente; no WhatsApp Web/Desktop a mensagem chega vazia. + const message: proto.IMessage = { + listMessage: { + title: data.title || '', + description: data.description || '', + buttonText: data.buttonText || 'Ver Menu', + footerText: data.footerText || '', + listType: proto.Message.ListMessage.ListType.SINGLE_SELECT, + sections: (data.sections || []).map((section) => ({ + title: section.title || '', + rows: (section.rows || []).map((row) => ({ + title: row.title || '', + description: row.description || '', + rowId: row.rowId || '', + })), + })), + }, + }; + return await this.sendMessageWithTyping( data.number, + message, { - listMessage: { - title: data.title, - description: data.description, - buttonText: data?.buttonText, - footerText: data?.footerText, - sections: data.sections, - listType: 2, - }, + delay: data?.delay, + presence: 'composing', + quoted: data?.quoted, + mentionsEveryOne: data?.mentionsEveryOne, + mentioned: data?.mentioned, }, + false, + [buildListBizNode()], + ); + } + + public async carouselMessage(data: SendCarouselDto) { + if (!data.cards?.length) { + throw new BadRequestException('At least one card is required'); + } + if (data.cards.length > 10) { + throw new BadRequestException('Maximum of 10 cards allowed'); + } + + for (const card of data.cards) { + if (!card.buttons?.length) { + throw new BadRequestException('Each card must have at least one button'); + } + if (card.buttons.length > 3) { + throw new BadRequestException('Maximum of 3 buttons per card'); + } + if (card.buttons.some((b) => b.type === 'pix')) { + throw new BadRequestException('PIX buttons are not supported in carousel'); + } + } + + const buildCardButtons = (card: CarouselCard) => + card.buttons.map((btn) => + toNativeFlowButton(btn, { + generateRandomId: this.generateRandomId.bind(this), + mapKeyType: this.mapKeyType, + }), + ); + + // Otimização iOS: 1 card sem imagem → nativeFlowMessage direto (sem carouselMessage wrapper) + const isSingleNoImage = data.cards.length === 1 && !data.cards[0].imageUrl; + + let interactiveMessage: proto.Message.IInteractiveMessage; + + if (isSingleNoImage) { + const card = data.cards[0]; + interactiveMessage = { + body: { text: card.body }, + footer: card.footer ? { text: card.footer } : undefined, + nativeFlowMessage: { + buttons: buildCardButtons(card), + messageParamsJson: JSON.stringify({ from: 'api', templateId: v4() }), + }, + }; + } else { + const cards = await Promise.all( + data.cards.map(async (card) => { + let header: proto.Message.InteractiveMessage.IHeader | undefined; + if (card.imageUrl) { + const prepared = await this.prepareMediaMessage({ mediatype: 'image', media: card.imageUrl }); + if (prepared?.message?.imageMessage) { + header = { hasMediaAttachment: true, imageMessage: prepared.message.imageMessage }; + } + } + return { + header, + body: { text: card.body }, + footer: card.footer ? { text: card.footer } : undefined, + nativeFlowMessage: { buttons: buildCardButtons(card) }, + } as proto.Message.IInteractiveMessage; + }), + ); + + interactiveMessage = { + body: { text: data.body }, + carouselMessage: { cards, messageVersion: 1 }, + }; + } + + const message: proto.IMessage = { interactiveMessage }; + + return await this.sendMessageWithTyping( + data.number, + message, { delay: data?.delay, presence: 'composing', @@ -3803,6 +3913,8 @@ export class BaileysStartupService extends ChannelStartupService { mentionsEveryOne: data?.mentionsEveryOne, mentioned: data?.mentioned, }, + false, + [buildInteractiveBizNode()], ); } diff --git a/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts b/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts index 5c2e038917..42fdabd631 100644 --- a/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts +++ b/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts @@ -641,16 +641,16 @@ export class ChatwootService { const isLid = body.key.addressingMode === 'lid'; const isGroup = body.key.remoteJid.endsWith('@g.us'); let phoneNumber = isLid && !isGroup ? body.key.remoteJidAlt : body.key.remoteJid; - let { remoteJid } = body.key; + const { remoteJid } = body.key; // CORREÇÃO LID: Resolve LID para número normal antes de processar if (isLid && !isGroup) { const resolvedPhone = await this.resolveLidToPhone(instance, body.key); - + if (resolvedPhone && resolvedPhone !== remoteJid) { this.logger.verbose(`LID detected and resolved: ${remoteJid} → ${resolvedPhone}`); phoneNumber = resolvedPhone; - + // Salva mapeamento se temos remoteJidAlt if (body.key.remoteJidAlt) { this.saveLidMapping(remoteJid, body.key.remoteJidAlt); @@ -974,9 +974,7 @@ export class ChatwootService { const sourceReplyId = quotedMsg?.chatwootMessageId || null; // Filtra valores null/undefined do content_attributes para evitar erro 406 - const filteredReplyToIds = Object.fromEntries( - Object.entries(replyToIds).filter(([_, value]) => value != null) - ); + const filteredReplyToIds = Object.fromEntries(Object.entries(replyToIds).filter(([, value]) => value != null)); // Monta o objeto data, incluindo content_attributes apenas se houver dados válidos const messageData: any = { @@ -1132,9 +1130,7 @@ export class ChatwootService { const replyToIds = await this.getReplyToIds(messageBody, instance); // Filtra valores null/undefined antes de enviar - const filteredReplyToIds = Object.fromEntries( - Object.entries(replyToIds).filter(([_, value]) => value != null) - ); + const filteredReplyToIds = Object.fromEntries(Object.entries(replyToIds).filter(([, value]) => value != null)); if (Object.keys(filteredReplyToIds).length > 0) { const contentAttrs = JSON.stringify(filteredReplyToIds); @@ -1841,32 +1837,32 @@ export class ChatwootService { } private getTypeMessage(msg: any) { - const types = { - conversation: msg.conversation, - imageMessage: msg.imageMessage?.caption, - videoMessage: msg.videoMessage?.caption, - extendedTextMessage: msg.extendedTextMessage?.text, - messageContextInfo: msg.messageContextInfo?.stanzaId, - stickerMessage: undefined, - documentMessage: msg.documentMessage?.caption, - documentWithCaptionMessage: msg.documentWithCaptionMessage?.message?.documentMessage?.caption, - audioMessage: msg.audioMessage ? (msg.audioMessage.caption ?? '') : undefined, - contactMessage: msg.contactMessage?.vcard, - contactsArrayMessage: msg.contactsArrayMessage, - locationMessage: msg.locationMessage, - liveLocationMessage: msg.liveLocationMessage, - listMessage: msg.listMessage, - listResponseMessage: msg.listResponseMessage, - orderMessage: msg.orderMessage, - quotedProductMessage: msg.contextInfo?.quotedMessage?.productMessage, - viewOnceMessageV2: - msg?.message?.viewOnceMessageV2?.message?.imageMessage?.url || - msg?.message?.viewOnceMessageV2?.message?.videoMessage?.url || - msg?.message?.viewOnceMessageV2?.message?.audioMessage?.url, - }; - - return types; -} + const types = { + conversation: msg.conversation, + imageMessage: msg.imageMessage?.caption, + videoMessage: msg.videoMessage?.caption, + extendedTextMessage: msg.extendedTextMessage?.text, + messageContextInfo: msg.messageContextInfo?.stanzaId, + stickerMessage: undefined, + documentMessage: msg.documentMessage?.caption, + documentWithCaptionMessage: msg.documentWithCaptionMessage?.message?.documentMessage?.caption, + audioMessage: msg.audioMessage ? (msg.audioMessage.caption ?? '') : undefined, + contactMessage: msg.contactMessage?.vcard, + contactsArrayMessage: msg.contactsArrayMessage, + locationMessage: msg.locationMessage, + liveLocationMessage: msg.liveLocationMessage, + listMessage: msg.listMessage, + listResponseMessage: msg.listResponseMessage, + orderMessage: msg.orderMessage, + quotedProductMessage: msg.contextInfo?.quotedMessage?.productMessage, + viewOnceMessageV2: + msg?.message?.viewOnceMessageV2?.message?.imageMessage?.url || + msg?.message?.viewOnceMessageV2?.message?.videoMessage?.url || + msg?.message?.viewOnceMessageV2?.message?.audioMessage?.url, + }; + + return types; + } private getMessageContent(types: any) { const typeKey = Object.keys(types).find((key) => types[key] !== undefined); @@ -1894,39 +1890,39 @@ export class ChatwootService { this.processedOrderIds.set(result.orderId, now); } // Tratamento de Produto citado (WhatsApp Desktop) -if (typeKey === 'quotedProductMessage' && result?.product) { - const product = result.product; - - // Extrai preço - let rawPrice = 0; - const amount = product.priceAmount1000; - - if (Long.isLong(amount)) { - rawPrice = amount.toNumber(); - } else if (amount && typeof amount === 'object' && 'low' in amount) { - rawPrice = Long.fromValue(amount).toNumber(); - } else if (typeof amount === 'number') { - rawPrice = amount; - } + if (typeKey === 'quotedProductMessage' && result?.product) { + const product = result.product; - const price = (rawPrice / 1000).toLocaleString('pt-BR', { - style: 'currency', - currency: product.currencyCode || 'BRL', - }); - - const productTitle = product.title || 'Produto do catálogo'; - const productId = product.productId || 'N/A'; - - return ( - `🛒 *PRODUTO DO CATÁLOGO (Desktop)*\n` + - `━━━━━━━━━━━━━━━━━━━━━\n` + - `📦 *Produto:* ${productTitle}\n` + - `💰 *Preço:* ${price}\n` + - `🆔 *Código:* ${productId}\n` + - `━━━━━━━━━━━━━━━━━━━━━\n` + - `_Cliente perguntou: "${types.conversation || 'Me envia este produto?'}"_` - ); -} + // Extrai preço + let rawPrice = 0; + const amount = product.priceAmount1000; + + if (Long.isLong(amount)) { + rawPrice = amount.toNumber(); + } else if (amount && typeof amount === 'object' && 'low' in amount) { + rawPrice = Long.fromValue(amount).toNumber(); + } else if (typeof amount === 'number') { + rawPrice = amount; + } + + const price = (rawPrice / 1000).toLocaleString('pt-BR', { + style: 'currency', + currency: product.currencyCode || 'BRL', + }); + + const productTitle = product.title || 'Produto do catálogo'; + const productId = product.productId || 'N/A'; + + return ( + `🛒 *PRODUTO DO CATÁLOGO (Desktop)*\n` + + `━━━━━━━━━━━━━━━━━━━━━\n` + + `📦 *Produto:* ${productTitle}\n` + + `💰 *Preço:* ${price}\n` + + `🆔 *Código:* ${productId}\n` + + `━━━━━━━━━━━━━━━━━━━━━\n` + + `_Cliente perguntou: "${types.conversation || 'Me envia este produto?'}"_` + ); + } if (typeKey === 'orderMessage') { // Extrai o valor - pode ser Long, objeto {low, high}, ou número direto let rawPrice = 0; @@ -2166,11 +2162,11 @@ if (typeKey === 'quotedProductMessage' && result?.product) { if (body?.key?.remoteJid && body.key.remoteJid.includes('@lid') && !body.key.remoteJid.endsWith('@g.us')) { const originalJid = body.key.remoteJid; const resolvedPhone = await this.resolveLidToPhone(instance, body.key); - + if (resolvedPhone && resolvedPhone !== originalJid) { this.logger.verbose(`Event LID resolved: ${originalJid} → ${resolvedPhone}`); body.key.remoteJid = resolvedPhone; - + // Salva mapeamento se temos remoteJidAlt if (body.key.remoteJidAlt) { this.saveLidMapping(originalJid, body.key.remoteJidAlt); @@ -2748,13 +2744,13 @@ if (typeKey === 'quotedProductMessage' && result?.product) { if (!lid || !phoneNumber || !lid.includes('@lid')) { return; } - + this.cleanLidCache(); this.lidToPhoneMap.set(lid, { phone: phoneNumber, timestamp: Date.now(), }); - + this.logger.verbose(`LID mapping saved: ${lid} → ${phoneNumber}`); } @@ -2764,7 +2760,7 @@ if (typeKey === 'quotedProductMessage' && result?.product) { */ private async resolveLidToPhone(instance: InstanceDto, messageKey: any): Promise { const { remoteJid, remoteJidAlt } = messageKey; - + // Se não for LID, retorna o próprio remoteJid if (!remoteJid || !remoteJid.includes('@lid')) { return remoteJid; @@ -2788,7 +2784,7 @@ if (typeKey === 'quotedProductMessage' && result?.product) { try { const lidIdentifier = this.normalizeJidIdentifier(remoteJid); const contact = await this.findContactByIdentifier(instance, lidIdentifier); - + if (contact && contact.phone_number) { // Converte +554498860240 → 554498860240@s.whatsapp.net const phoneNumber = contact.phone_number.replace('+', '') + '@s.whatsapp.net'; diff --git a/src/api/routes/sendMessage.router.ts b/src/api/routes/sendMessage.router.ts index cd073dba3d..51876483d0 100644 --- a/src/api/routes/sendMessage.router.ts +++ b/src/api/routes/sendMessage.router.ts @@ -2,6 +2,7 @@ import { RouterBroker } from '@api/abstract/abstract.router'; import { SendAudioDto, SendButtonsDto, + SendCarouselDto, SendContactDto, SendListDto, SendLocationDto, @@ -18,6 +19,7 @@ import { sendMessageController } from '@api/server.module'; import { audioMessageSchema, buttonsMessageSchema, + carouselMessageSchema, contactMessageSchema, listMessageSchema, locationMessageSchema, @@ -180,6 +182,16 @@ export class MessageRouter extends RouterBroker { execute: (instance, data) => sendMessageController.sendButtons(instance, data), }); + return res.status(HttpStatus.CREATED).json(response); + }) + .post(this.routerPath('sendCarousel'), ...guards, async (req, res) => { + const response = await this.dataValidate({ + request: req, + schema: carouselMessageSchema, + ClassRef: SendCarouselDto, + execute: (instance, data) => sendMessageController.sendCarousel(instance, data), + }); + return res.status(HttpStatus.CREATED).json(response); }); } diff --git a/src/validate/message.schema.ts b/src/validate/message.schema.ts index 6970fd9b09..5d6a31116e 100644 --- a/src/validate/message.schema.ts +++ b/src/validate/message.schema.ts @@ -448,6 +448,65 @@ export const buttonsMessageSchema: JSONSchema7 = { required: ['number'], }; +export const carouselMessageSchema: JSONSchema7 = { + $id: v4(), + type: 'object', + properties: { + number: { ...numberDefinition }, + body: { type: 'string', minLength: 1 }, + cards: { + type: 'array', + minItems: 1, + maxItems: 10, + items: { + type: 'object', + properties: { + title: { type: 'string' }, + body: { type: 'string', minLength: 1 }, + footer: { type: 'string' }, + imageUrl: { type: 'string' }, + buttons: { + type: 'array', + minItems: 1, + maxItems: 3, + items: { + type: 'object', + properties: { + type: { type: 'string', enum: ['reply', 'copy', 'url', 'call'] }, + displayText: { type: 'string' }, + id: { type: 'string' }, + url: { type: 'string' }, + copyCode: { type: 'string' }, + phoneNumber: { type: 'string' }, + }, + required: ['type'], + ...isNotEmpty('id', 'url', 'phoneNumber'), + }, + }, + }, + required: ['body', 'buttons'], + }, + }, + delay: { + type: 'integer', + description: 'Enter a value in milliseconds', + }, + quoted: { ...quotedOptionsSchema }, + everyOne: { type: 'boolean', enum: [true, false] }, + mentioned: { + type: 'array', + minItems: 1, + uniqueItems: true, + items: { + type: 'string', + pattern: '^\\d+', + description: '"mentioned" must be an array of numeric strings', + }, + }, + }, + required: ['number', 'body', 'cards'], +}; + export const decryptPollVoteSchema: JSONSchema7 = { $id: v4(), type: 'object', From 555fa669387e2fb2c8278667f0b6227195dbd697 Mon Sep 17 00:00:00 2001 From: Octopus Date: Thu, 7 May 2026 00:49:24 +0800 Subject: [PATCH 73/89] fix: use correct Prisma JSON path filter in getLastMessage (fixes #2495) (#2515) The `getLastMessage` function was using an invalid Prisma where-clause syntax `{ key: { remoteJid: number } }` for a JSON/JSONB field. Prisma requires `{ key: { path: ['remoteJid'], equals: value } }` to filter on a JSON field path. This caused a PrismaClientValidationError whenever `archiveChat` or `markChatUnread` called `getLastMessage` with a chat number instead of providing lastMessage directly. Co-authored-by: octo-patch --- .../integrations/channel/whatsapp/whatsapp.baileys.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 5aeeac1755..93e412ab0d 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -4164,7 +4164,7 @@ export class BaileysStartupService extends ChannelStartupService { } public async getLastMessage(number: string) { - const where: any = { key: { remoteJid: number }, instanceId: this.instance.id }; + const where: any = { key: { path: ['remoteJid'], equals: number }, instanceId: this.instanceId }; const messages = await this.prismaRepository.message.findMany({ where, From 3f567dbe65ef6597a4b3935260f80f39387ac05d Mon Sep 17 00:00:00 2001 From: easedu Date: Wed, 6 May 2026 13:49:45 -0300 Subject: [PATCH 74/89] fix(baileys): correct JID filter in markMessageAsRead for all user types (#2418) The condition used isPnUser() which only matches @pn.whatsapp.net JIDs, silently excluding normal users (@s.whatsapp.net) and LID users (@lid). Messages were never actually marked as read for these JID types. Replace allowlist approach (isJidGroup || isPnUser) with denylist (!isJidBroadcast && !isJidNewsletter) to correctly include all valid user and group JIDs while excluding only broadcast and newsletter JIDs. Fixes #2277 --- .../integrations/channel/whatsapp/whatsapp.baileys.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 93e412ab0d..3bc1473908 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -4152,7 +4152,7 @@ export class BaileysStartupService extends ChannelStartupService { try { const keys: proto.IMessageKey[] = []; data.readMessages.forEach((read) => { - if (isJidGroup(read.remoteJid) || isPnUser(read.remoteJid)) { + if (!isJidBroadcast(read.remoteJid) && !isJidNewsletter(read.remoteJid)) { keys.push({ remoteJid: read.remoteJid, fromMe: read.fromMe, id: read.id }); } }); From c29bcc50552512967ef285fe03127735b14fd2cc Mon Sep 17 00:00:00 2001 From: Bruno Sgarbi Date: Wed, 6 May 2026 13:49:50 -0300 Subject: [PATCH 75/89] fix(instance.controller): emit remove.instance even when logout fails (zombie cleanup) (#2520) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(instance.controller): emit remove.instance even when logout fails When a Baileys WebSocket dies but the in-memory `waInstances[name]` entry still exists (a "zombie" instance), `deleteInstance()` calls `await this.logout()` which throws "Connection Closed". The throw causes the outer try/catch to skip the `eventEmitter.emit('remove.instance')` call — which is the only mechanism that purges the zombie from `waInstances`. Result: zombies persist in memory until the entire `evo2_api` container is restarted, affecting ALL instances on the host (not just the broken one). Operators have no per-instance recovery path in v2.3.x — their only option is `docker restart`, which forces every connected user to re-scan the QR code. Fix: wrap the inner `logout()` call in its own try/catch. Log a warning when it fails but continue to the cleanup emit. The in-memory entry must be removed regardless of whether logout completed cleanly — `remove.instance` is the canonical way to purge a stuck instance, and DB/cache cleanup happens in the same event handler. This makes `DELETE /instance/:name` idempotent against zombies: a caller can always recover a single instance without nuking the whole host. Refs: - #693 (instance/restart closes the session) - #1286 (Connection Closed in v2.2.3) - #2026 (Sync lost after reboot) - #2027 (Loss of synchronization on reboot) Tested in production at Rigarr (14 instances, ~25k msgs/day) by overlaying this patch on v2.3.7 via Docker. Before: any zombie forced a full container restart. After: per-instance cleanup works cleanly while other vendors stay connected. Signed-off-by: Bruno Cavalcante Sgarbi * review: address Sourcery feedback — neutral language + log error object Per https://github.com/EvolutionAPI/evolution-api/pull/2520 review: 1. Drop vendor-specific markers in code comment and log message (was '[ZOMBIE-CLEANUP]' and 'RIGARR PATCH'). Comment now describes the bug in upstream-friendly terms. 2. Pass the full error object to logger.warn instead of toString(), following the existing convention in monitor.service.ts ('no.connection' handler) where structured object logging is used to preserve diagnostic detail. No behavior change. --------- Signed-off-by: Bruno Cavalcante Sgarbi Co-authored-by: Bruno Sgarbi --- src/api/controllers/instance.controller.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/api/controllers/instance.controller.ts b/src/api/controllers/instance.controller.ts index fcbf8017b6..345e605a84 100644 --- a/src/api/controllers/instance.controller.ts +++ b/src/api/controllers/instance.controller.ts @@ -458,7 +458,21 @@ export class InstanceController { if (this.configService.get('CHATWOOT').ENABLED) waInstances?.clearCacheChatwoot(); if (instance.state === 'connecting' || instance.state === 'open') { - await this.logout({ instanceName }); + try { + await this.logout({ instanceName }); + } catch (error) { + // logout can throw "Connection Closed" when the underlying Baileys + // socket is already dead but waInstances[name] still exists. We + // must continue to the remove.instance emit below — that is the + // only path that purges the in-memory entry and runs cleaningUp(). + // Without this catch, the stale entry persists until the entire + // process restarts. + this.logger.warn({ + message: 'logout failed during deleteInstance — proceeding with cleanup', + instanceName, + error, + }); + } } try { From 6e737d4e36fa58ba94cd6d2ab7dc3122efb65a84 Mon Sep 17 00:00:00 2001 From: Enzo William Pearce <82736167+enzowilliam@users.noreply.github.com> Date: Wed, 6 May 2026 13:49:57 -0300 Subject: [PATCH 76/89] fix: mentionsEveryOne always active even when set to false (#2470) - Changed truthy check to strict equality (=== true) to properly handle string values like "false" sent by clients (e.g., n8n) - Fixed validation schema property name from 'everyOne' to 'mentionsEveryOne' to match DTO and service code Fixes #2431 Co-authored-by: Claude Opus 4.5 --- .../whatsapp/whatsapp.baileys.service.ts | 2 +- src/validate/message.schema.ts | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 3bc1473908..28e9c4d962 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -2623,7 +2623,7 @@ export class BaileysStartupService extends ChannelStartupService { throw new NotFoundException('Group not found'); } - if (options?.mentionsEveryOne) { + if (options?.mentionsEveryOne === true) { mentions = group.participants.map((participant) => participant.id); } else if (options?.mentioned?.length) { mentions = options.mentioned.map((mention) => { diff --git a/src/validate/message.schema.ts b/src/validate/message.schema.ts index 5d6a31116e..040b22280a 100644 --- a/src/validate/message.schema.ts +++ b/src/validate/message.schema.ts @@ -77,7 +77,7 @@ export const textMessageSchema: JSONSchema7 = { description: 'Enter a value in milliseconds', }, quoted: { ...quotedOptionsSchema }, - everyOne: { type: 'boolean', enum: [true, false] }, + mentionsEveryOne: { type: 'boolean', enum: [true, false] }, mentioned: { type: 'array', minItems: 1, @@ -107,7 +107,7 @@ export const mediaMessageSchema: JSONSchema7 = { description: 'Enter a value in milliseconds', }, quoted: { ...quotedOptionsSchema }, - everyOne: { type: 'boolean', enum: [true, false] }, + mentionsEveryOne: { type: 'boolean', enum: [true, false] }, mentioned: { type: 'array', minItems: 1, @@ -133,7 +133,7 @@ export const ptvMessageSchema: JSONSchema7 = { description: 'Enter a value in milliseconds', }, quoted: { ...quotedOptionsSchema }, - everyOne: { type: 'boolean', enum: [true, false] }, + mentionsEveryOne: { type: 'boolean', enum: [true, false] }, mentioned: { type: 'array', minItems: 1, @@ -159,7 +159,7 @@ export const audioMessageSchema: JSONSchema7 = { description: 'Enter a value in milliseconds', }, quoted: { ...quotedOptionsSchema }, - everyOne: { type: 'boolean', enum: [true, false] }, + mentionsEveryOne: { type: 'boolean', enum: [true, false] }, mentioned: { type: 'array', minItems: 1, @@ -209,7 +209,7 @@ export const stickerMessageSchema: JSONSchema7 = { description: 'Enter a value in milliseconds', }, quoted: { ...quotedOptionsSchema }, - everyOne: { type: 'boolean', enum: [true, false] }, + mentionsEveryOne: { type: 'boolean', enum: [true, false] }, mentioned: { type: 'array', minItems: 1, @@ -238,7 +238,7 @@ export const locationMessageSchema: JSONSchema7 = { description: 'Enter a value in milliseconds', }, quoted: { ...quotedOptionsSchema }, - everyOne: { type: 'boolean', enum: [true, false] }, + mentionsEveryOne: { type: 'boolean', enum: [true, false] }, mentioned: { type: 'array', minItems: 1, @@ -325,7 +325,7 @@ export const pollMessageSchema: JSONSchema7 = { description: 'Enter a value in milliseconds', }, quoted: { ...quotedOptionsSchema }, - everyOne: { type: 'boolean', enum: [true, false] }, + mentionsEveryOne: { type: 'boolean', enum: [true, false] }, mentioned: { type: 'array', minItems: 1, @@ -382,7 +382,7 @@ export const listMessageSchema: JSONSchema7 = { description: 'Enter a value in milliseconds', }, quoted: { ...quotedOptionsSchema }, - everyOne: { type: 'boolean', enum: [true, false] }, + mentionsEveryOne: { type: 'boolean', enum: [true, false] }, mentioned: { type: 'array', minItems: 1, @@ -433,7 +433,7 @@ export const buttonsMessageSchema: JSONSchema7 = { description: 'Enter a value in milliseconds', }, quoted: { ...quotedOptionsSchema }, - everyOne: { type: 'boolean', enum: [true, false] }, + mentionsEveryOne: { type: 'boolean', enum: [true, false] }, mentioned: { type: 'array', minItems: 1, From 8e7e13d593cc710829e4b1815c9f3a742742b8de Mon Sep 17 00:00:00 2001 From: MohaDevPro <67959289+MohaDevPro@users.noreply.github.com> Date: Wed, 6 May 2026 19:50:03 +0300 Subject: [PATCH 77/89] fix(whatsapp): resolve this.isZero error in list messages by removing destructive JSON cloning (#2461) * fix(whatsapp): resolve this.isZero error in list messages by removing destructive JSON cloning * refactor: extract listType normalization into a helper function --- .../whatsapp/whatsapp.baileys.service.ts | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 28e9c4d962..9d75b6d868 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -228,6 +228,12 @@ async function getVideoDuration(input: Buffer | string | Readable): Promise Date: Wed, 6 May 2026 13:50:09 -0300 Subject: [PATCH 78/89] fix(meta): resolve race condition in Business API sender identification (#2493) The BusinessStartupService shared a mutable this.phoneNumber property across concurrent webhook requests. When two webhooks arrived near- simultaneously for the same phone_number_id, the second request could overwrite phoneNumber before the first finished processing, causing messages to be attributed to the wrong sender (wrong remoteJid). Changes: - Compute senderJid as a local variable before calling eventHandler - Pass senderJid as parameter through eventHandler -> messageHandle - Await eventHandler to prevent concurrent mutation - Replace all this.phoneNumber reads inside messageHandle with the local senderJid parameter Made-with: Cursor --- .../channel/meta/whatsapp.business.service.ts | 26 ++++++++----------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/src/api/integrations/channel/meta/whatsapp.business.service.ts b/src/api/integrations/channel/meta/whatsapp.business.service.ts index 1f820d0e57..03c8eb44ca 100644 --- a/src/api/integrations/channel/meta/whatsapp.business.service.ts +++ b/src/api/integrations/channel/meta/whatsapp.business.service.ts @@ -131,9 +131,10 @@ export class BusinessStartupService extends ChannelStartupService { try { this.loadChatwoot(); - this.eventHandler(content); + const senderJid = createJid(content.messages ? content.messages[0].from : content.statuses[0]?.recipient_id); + this.phoneNumber = senderJid; - this.phoneNumber = createJid(content.messages ? content.messages[0].from : content.statuses[0]?.recipient_id); + await this.eventHandler(content, senderJid); } catch (error) { this.logger.error(error); throw new InternalServerErrorException(error?.toString()); @@ -382,7 +383,7 @@ export class BusinessStartupService extends ChannelStartupService { return messageType; } - protected async messageHandle(received: any, database: Database, settings: any) { + protected async messageHandle(received: any, database: Database, settings: any, senderJid: string) { try { let messageRaw: any; let pushName: any; @@ -390,11 +391,11 @@ export class BusinessStartupService extends ChannelStartupService { if (received.contacts) pushName = received.contacts[0].profile.name; if (received.messages) { - const message = received.messages[0]; // Añadir esta línea para definir message + const message = received.messages[0]; const key = { id: message.id, - remoteJid: this.phoneNumber, + remoteJid: senderJid, fromMe: message.from === received.metadata.phone_number_id, }; @@ -748,8 +749,8 @@ export class BusinessStartupService extends ChannelStartupService { for await (const item of received.statuses) { const key = { id: item.id, - remoteJid: this.phoneNumber, - fromMe: this.phoneNumber === received.metadata.phone_number_id, + remoteJid: senderJid, + fromMe: senderJid === received.metadata.phone_number_id, }; if (settings?.groups_ignore && key.remoteJid.includes('@g.us')) { return; @@ -894,21 +895,18 @@ export class BusinessStartupService extends ChannelStartupService { return message; } - protected async eventHandler(content: any) { + protected async eventHandler(content: any, senderJid: string) { try { - // Registro para depuración this.logger.log('Contenido recibido en eventHandler:'); this.logger.log(JSON.stringify(content, null, 2)); const database = this.configService.get('DATABASE'); const settings = await this.findSettings(); - // Si hay mensajes, verificar primero el tipo if (content.messages && content.messages.length > 0) { const message = content.messages[0]; this.logger.log(`Tipo de mensaje recibido: ${message.type}`); - // Verificamos el tipo de mensaje antes de procesarlo if ( message.type === 'text' || message.type === 'image' || @@ -922,14 +920,12 @@ export class BusinessStartupService extends ChannelStartupService { message.type === 'button' || message.type === 'reaction' ) { - // Procesar el mensaje normalmente - this.messageHandle(content, database, settings); + await this.messageHandle(content, database, settings, senderJid); } else { this.logger.warn(`Tipo de mensaje no reconocido: ${message.type}`); } } else if (content.statuses) { - // Procesar actualizaciones de estado - this.messageHandle(content, database, settings); + await this.messageHandle(content, database, settings, senderJid); } else { this.logger.warn('No se encontraron mensajes ni estados en el contenido recibido'); } From 27ce6e2448293229cdeaf42d7e9f7d63d82e9ab2 Mon Sep 17 00:00:00 2001 From: rafavasconcelost Date: Wed, 6 May 2026 13:50:15 -0300 Subject: [PATCH 79/89] feat(chat): add markMessageAsPlayed endpoint (audio receipt) (#2519) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds POST /chat/markMessageAsPlayed/{instance} for marking received audio messages as played (blue microphone in WhatsApp), mirroring the existing markMessageAsRead pattern. Baileys natively supports sock.sendReceipts(keys, 'played') but Evolution only exposed the 'read' type via /chat/markMessageAsRead. CRMs that play back voice notes received from contacts had no way to send the played ack — this endpoint fills the gap with the same DTO/schema shape (key shape: id, fromMe, remoteJid) under a 'playedMessages' array. Mirrors: - DTO: MarkMessageAsPlayedDto extends Key array (mirrors ReadMessageDto) - Schema: markMessageAsPlayedSchema (JSONSchema7, mirrors readMessageSchema) - Service: markMessageAsPlayed -> client.sendReceipts(keys, 'played') - Controller: markMessageAsPlayed -> waMonitor delegation - Router: POST routerPath('markMessageAsPlayed') Use case: agent CRMs (Chatwoot-like) that present audio messages with a play button and need to send the played receipt back to the contact when the agent plays the audio in the dashboard. --- src/api/controllers/chat.controller.ts | 5 +++++ src/api/dto/chat.dto.ts | 4 ++++ .../whatsapp/whatsapp.baileys.service.ts | 19 ++++++++++++++++ src/api/routes/chat.router.ts | 12 ++++++++++ src/validate/chat.schema.ts | 22 +++++++++++++++++++ 5 files changed, 62 insertions(+) diff --git a/src/api/controllers/chat.controller.ts b/src/api/controllers/chat.controller.ts index fa5ea5fbb7..50f0e36d85 100644 --- a/src/api/controllers/chat.controller.ts +++ b/src/api/controllers/chat.controller.ts @@ -5,6 +5,7 @@ import { DeleteMessage, getBase64FromMediaMessageDto, MarkChatUnreadDto, + MarkMessageAsPlayedDto, NumberDto, PrivacySettingDto, ProfileNameDto, @@ -31,6 +32,10 @@ export class ChatController { return await this.waMonitor.waInstances[instanceName].markMessageAsRead(data); } + public async markMessageAsPlayed({ instanceName }: InstanceDto, data: MarkMessageAsPlayedDto) { + return await this.waMonitor.waInstances[instanceName].markMessageAsPlayed(data); + } + public async archiveChat({ instanceName }: InstanceDto, data: ArchiveChatDto) { return await this.waMonitor.waInstances[instanceName].archiveChat(data); } diff --git a/src/api/dto/chat.dto.ts b/src/api/dto/chat.dto.ts index aeaab6f84c..9c6be9f4c9 100644 --- a/src/api/dto/chat.dto.ts +++ b/src/api/dto/chat.dto.ts @@ -70,6 +70,10 @@ export class ReadMessageDto { readMessages: Key[]; } +export class MarkMessageAsPlayedDto { + playedMessages: Key[]; +} + export class LastMessage { key: Key; messageTimestamp?: number; diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 9d75b6d868..9e8790c8fe 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -7,6 +7,7 @@ import { getBase64FromMediaMessageDto, LastMessage, MarkChatUnreadDto, + MarkMessageAsPlayedDto, NumberBusiness, OnWhatsAppDto, PrivacySettingDto, @@ -4158,6 +4159,24 @@ export class BaileysStartupService extends ChannelStartupService { } } + public async markMessageAsPlayed(data: MarkMessageAsPlayedDto) { + try { + const keys: proto.IMessageKey[] = []; + data.playedMessages.forEach((played) => { + if (isJidGroup(played.remoteJid) || isPnUser(played.remoteJid)) { + keys.push({ remoteJid: played.remoteJid, fromMe: played.fromMe, id: played.id }); + } + }); + // Baileys exposes sendReceipts(keys, type) where type='played' triggers the + // PLAYED ack (blue microphone). Used when an agent plays back an audio + // message received from a contact, mirroring the contact's view in WhatsApp. + await this.client.sendReceipts(keys, 'played'); + return { message: 'Played messages', played: 'success' }; + } catch (error) { + throw new InternalServerErrorException('Mark messages as played fail', error.toString()); + } + } + public async getLastMessage(number: string) { const where: any = { key: { path: ['remoteJid'], equals: number }, instanceId: this.instanceId }; diff --git a/src/api/routes/chat.router.ts b/src/api/routes/chat.router.ts index 28578d9e77..aafa0d337f 100644 --- a/src/api/routes/chat.router.ts +++ b/src/api/routes/chat.router.ts @@ -6,6 +6,7 @@ import { DeleteMessage, getBase64FromMediaMessageDto, MarkChatUnreadDto, + MarkMessageAsPlayedDto, NumberDto, PrivacySettingDto, ProfileNameDto, @@ -27,6 +28,7 @@ import { decryptPollVoteSchema, deleteMessageSchema, markChatUnreadSchema, + markMessageAsPlayedSchema, messageUpSchema, messageValidateSchema, presenceSchema, @@ -72,6 +74,16 @@ export class ChatRouter extends RouterBroker { return res.status(HttpStatus.CREATED).json(response); }) + .post(this.routerPath('markMessageAsPlayed'), ...guards, async (req, res) => { + const response = await this.dataValidate({ + request: req, + schema: markMessageAsPlayedSchema, + ClassRef: MarkMessageAsPlayedDto, + execute: (instance, data) => chatController.markMessageAsPlayed(instance, data), + }); + + return res.status(HttpStatus.CREATED).json(response); + }) .post(this.routerPath('archiveChat'), ...guards, async (req, res) => { const response = await this.dataValidate({ request: req, diff --git a/src/validate/chat.schema.ts b/src/validate/chat.schema.ts index 7dae44539b..03ebb73f4b 100644 --- a/src/validate/chat.schema.ts +++ b/src/validate/chat.schema.ts @@ -63,6 +63,28 @@ export const readMessageSchema: JSONSchema7 = { required: ['readMessages'], }; +export const markMessageAsPlayedSchema: JSONSchema7 = { + $id: v4(), + type: 'object', + properties: { + playedMessages: { + type: 'array', + minItems: 1, + uniqueItems: true, + items: { + properties: { + id: { type: 'string' }, + fromMe: { type: 'boolean', enum: [true, false] }, + remoteJid: { type: 'string' }, + }, + required: ['id', 'fromMe', 'remoteJid'], + ...isNotEmpty('id', 'remoteJid'), + }, + }, + }, + required: ['playedMessages'], +}; + export const archiveChatSchema: JSONSchema7 = { $id: v4(), type: 'object', From 36a2f65ebe41d7174aed1def225a817209d3550b Mon Sep 17 00:00:00 2001 From: Alexandre Reyes Martins Date: Wed, 6 May 2026 13:50:21 -0300 Subject: [PATCH 80/89] fix(history-sync): emit completion before contact upsert (#2510) * fix(history-sync): emit completion before contact upsert * chore(ci): rerun checks on current head * fix(history-sync): include progress in completion event * style(chatwoot): fix lint violations * fix(history-sync): ignore non-primary completions * Revert "fix(history-sync): ignore non-primary completions" This reverts commit c0523d615543ffc2da92516bc9e6a741a1074da2. * chore: add ghcr publish workflow to branch --- .github/workflows/publish_ghcr_image.yml | 66 +++++++++++++++++++ .../whatsapp/whatsapp.baileys.service.ts | 19 +++--- 2 files changed, 77 insertions(+), 8 deletions(-) create mode 100644 .github/workflows/publish_ghcr_image.yml diff --git a/.github/workflows/publish_ghcr_image.yml b/.github/workflows/publish_ghcr_image.yml new file mode 100644 index 0000000000..5dd7fab7b7 --- /dev/null +++ b/.github/workflows/publish_ghcr_image.yml @@ -0,0 +1,66 @@ +name: Build and Publish GHCR image + +on: + push: + branches: + - main + tags: + - "v*" + workflow_dispatch: + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository_owner }}/evolution-api + +jobs: + build-and-push: + name: Build and Push GHCR + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout + uses: actions/checkout@v5 + with: + submodules: recursive + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to GHCR + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: | + type=raw,value=latest,enable={{is_default_branch}} + type=ref,event=branch + type=ref,event=tag + type=sha + + - name: Build and push + id: build-and-push + uses: docker/build-push-action@v6 + with: + context: . + push: true + platforms: linux/amd64,linux/arm64 + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max + + - name: Image digest + run: echo ${{ steps.build-and-push.outputs.digest }} diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 9e8790c8fe..e3af63d0ad 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -1017,13 +1017,15 @@ export class BaileysStartupService extends ChannelStartupService { syncType?: proto.HistorySync.HistorySyncType; }) => { try { - // Reset counters when a new sync starts (progress resets or decreases) - if (progress <= this.historySyncLastProgress) { + const normalizedProgress = progress ?? -1; + + if (normalizedProgress <= this.historySyncLastProgress) { this.historySyncMessageCount = 0; this.historySyncChatCount = 0; this.historySyncContactCount = 0; } - this.historySyncLastProgress = progress ?? -1; + + this.historySyncLastProgress = normalizedProgress; if (syncType === proto.HistorySync.HistorySyncType.ON_DEMAND) { console.log('received on-demand history sync, messages=', messages); @@ -1200,15 +1202,12 @@ export class BaileysStartupService extends ChannelStartupService { const filteredContacts = contacts.filter((c) => !!c.notify || !!c.name); this.historySyncContactCount += filteredContacts.length; - await this.contactHandle['contacts.upsert']( - filteredContacts.map((c) => ({ id: c.id, name: c.name ?? c.notify })), - ); - - if (progress === 100) { + if (normalizedProgress === 100) { this.sendDataWebhook(Events.MESSAGING_HISTORY_SET, { messageCount: this.historySyncMessageCount, chatCount: this.historySyncChatCount, contactCount: this.historySyncContactCount, + progress: normalizedProgress, }); this.historySyncMessageCount = 0; @@ -1217,6 +1216,10 @@ export class BaileysStartupService extends ChannelStartupService { this.historySyncLastProgress = -1; } + await this.contactHandle['contacts.upsert']( + filteredContacts.map((c) => ({ id: c.id, name: c.name ?? c.notify })), + ); + contacts = undefined; messages = undefined; chats = undefined; From 60eb71ea5ba4a761ab7ed26954ccac06069e4e39 Mon Sep 17 00:00:00 2001 From: Davidson Gomes Date: Wed, 6 May 2026 14:10:56 -0300 Subject: [PATCH 81/89] fix(docs): remove duplicate cover image from README Co-Authored-By: Claude Opus 4.7 (1M context) --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index d9ea137e14..0af3a614b7 100644 --- a/README.md +++ b/README.md @@ -25,8 +25,6 @@ Support

-
Evolution API
- --- ## About From 63d339a85ff3376ebe29508f516df0a8f29902e2 Mon Sep 17 00:00:00 2001 From: Davidson Gomes Date: Wed, 6 May 2026 14:13:30 -0300 Subject: [PATCH 82/89] docs(hosting): show only the project-specific HostGator partnership link Co-Authored-By: Claude Opus 4.7 (1M context) --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 0af3a614b7..98218c5f8a 100644 --- a/README.md +++ b/README.md @@ -170,6 +170,14 @@ Local storage or S3/MinIO. Automatic media download from WhatsApp. Optional audi --- +## Hosting + +Deploy Evolution API with optimized infrastructure through our HostGator partnership: + +[**Evolution API VPS — HostGator**](https://evolution-api.com/vps-evolution-api) + +--- + ## Telemetry Evolution API collects anonymous telemetry data (routes used, most accessed routes, API version) to help improve the service. **No sensitive or personal data is collected.** This information helps us identify improvements and provide a better experience for users. From af71b9274abb0abf4e0bba5f396412728e3cb054 Mon Sep 17 00:00:00 2001 From: Davidson Gomes Date: Wed, 6 May 2026 14:35:49 -0300 Subject: [PATCH 83/89] docs(org): update GitHub URLs from EvolutionAPI to evolution-foundation Co-Authored-By: Claude Opus 4.7 (1M context) --- CONTRIBUTING.md | 2 +- README.md | 6 +++--- evolution-manager-v2 | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 595600cc05..8aa5df1c7f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -12,7 +12,7 @@ Harassment, discrimination, or abusive behavior will not be tolerated. ### Reporting Bugs -1. Check existing [issues](https://github.com/EvolutionAPI/evolution-api/issues) +1. Check existing [issues](https://github.com/evolution-foundation/evolution-api/issues) to avoid duplicates 2. Open a new issue with: - Clear, descriptive title diff --git a/README.md b/README.md index 98218c5f8a..4586e4028a 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@

- Latest version + Latest version License: Apache 2.0 Documentation Community @@ -37,7 +37,7 @@ Evolution API began as a WhatsApp controller API based on [CodeChat](https://git ## Part of the Evolution Foundation ecosystem -Evolution API is one of the messaging engines maintained by Evolution Foundation. It is used as a WhatsApp provider by the [Evo CRM Community](https://github.com/EvolutionAPI/evo-crm-community) and other projects in the ecosystem. +Evolution API is one of the messaging engines maintained by Evolution Foundation. It is used as a WhatsApp provider by the [Evo CRM Community](https://github.com/evolution-foundation/evo-crm-community) and other projects in the ecosystem. --- @@ -80,7 +80,7 @@ Evolution API integrates natively with many platforms: ### Installation ```bash -git clone git@github.com:EvolutionAPI/evolution-api.git +git clone git@github.com:evolution-foundation/evolution-api.git cd evolution-api # Install dependencies diff --git a/evolution-manager-v2 b/evolution-manager-v2 index f054b9bc28..3137df4695 160000 --- a/evolution-manager-v2 +++ b/evolution-manager-v2 @@ -1 +1 @@ -Subproject commit f054b9bc28083152d4948f835e3346fd0add39db +Subproject commit 3137df469504ce211c68e7b35f0706497ac1b95f From 84a92f1c69dc017ebf3456ba04a66e5356bf03ce Mon Sep 17 00:00:00 2001 From: Davidson Gomes Date: Wed, 6 May 2026 14:38:31 -0300 Subject: [PATCH 84/89] docs(org): update nested submodule URLs from EvolutionAPI to evolution-foundation Co-Authored-By: Claude Opus 4.7 (1M context) --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index ef5b3e63cf..54a177465b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "evolution-manager-v2"] path = evolution-manager-v2 - url = https://github.com/EvolutionAPI/evolution-manager-v2.git + url = https://github.com/evolution-foundation/evolution-manager-v2.git From 9a4ae2bc78b494232b862576dc25ddc4a6717773 Mon Sep 17 00:00:00 2001 From: hassankaid Date: Wed, 6 May 2026 19:04:32 +0100 Subject: [PATCH 85/89] feat(group): add updateMemberAddMode endpoint (#2525) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(group): add updateMemberAddMode endpoint Expose the WhatsApp protocol's group "member add mode" setting (supported by Baileys via groupMemberAddMode) as a new endpoint, so clients can toggle whether non-admin members are allowed to add participants to a group. POST /group/updateMemberAddMode/{instance}?groupJid= body: { "mode": "admin_add" | "all_member_add" } - admin_add → only admins can add new members - all_member_add → any member can add new members (WhatsApp default) Mirrors the existing pattern of updateSetting: - DTO : GroupUpdateMemberAddModeDto - Schema: updateMemberAddModeSchema (validates mode enum) - Service: WhatsappBaileysService.updateMemberAddMode - Controller: GroupController.updateMemberAddMode - Route: POST /group/updateMemberAddMode No breaking change. No new dependency. * ci: build & publish fork Docker image to GHCR Triggered on every push to feat/group-member-add-mode. Produces: ghcr.io/hassankaid/evolution-api:member-add-mode ghcr.io/hassankaid/evolution-api:sha- Allows users running self-hosted Evolution to swap their Docker image to this fork while keeping all their state (sessions, DB, Redis) untouched, until the upstream PR #2525 is merged. --- .github/workflows/publish-fork-image.yml | 48 +++++++++++++++++++ src/api/controllers/group.controller.ts | 5 ++ src/api/dto/group.dto.ts | 4 ++ .../whatsapp/whatsapp.baileys.service.ts | 10 ++++ src/api/routes/group.router.ts | 12 +++++ src/validate/group.schema.ts | 14 ++++++ 6 files changed, 93 insertions(+) create mode 100644 .github/workflows/publish-fork-image.yml diff --git a/.github/workflows/publish-fork-image.yml b/.github/workflows/publish-fork-image.yml new file mode 100644 index 0000000000..afbcdaffff --- /dev/null +++ b/.github/workflows/publish-fork-image.yml @@ -0,0 +1,48 @@ +name: Publish fork Docker image + +on: + push: + branches: + - 'feat/group-member-add-mode' + workflow_dispatch: + +permissions: + contents: read + packages: write + +jobs: + build-and-push: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to GHCR + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Compute lowercase repo + id: vars + run: echo "repo=$(echo '${{ github.repository }}' | tr '[:upper:]' '[:lower:]')" >> "$GITHUB_OUTPUT" + + - name: Build and push + uses: docker/build-push-action@v6 + with: + context: . + file: ./Dockerfile + push: true + platforms: linux/amd64 + tags: | + ghcr.io/${{ steps.vars.outputs.repo }}:member-add-mode + ghcr.io/${{ steps.vars.outputs.repo }}:sha-${{ github.sha }} + cache-from: type=gha + cache-to: type=gha,mode=max diff --git a/src/api/controllers/group.controller.ts b/src/api/controllers/group.controller.ts index ebe7c03671..6c5904ccd7 100644 --- a/src/api/controllers/group.controller.ts +++ b/src/api/controllers/group.controller.ts @@ -9,6 +9,7 @@ import { GroupSendInvite, GroupSubjectDto, GroupToggleEphemeralDto, + GroupUpdateMemberAddModeDto, GroupUpdateParticipantDto, GroupUpdateSettingDto, } from '@api/dto/group.dto'; @@ -74,6 +75,10 @@ export class GroupController { return await this.waMonitor.waInstances[instance.instanceName].updateGSetting(update); } + public async updateMemberAddMode(instance: InstanceDto, update: GroupUpdateMemberAddModeDto) { + return await this.waMonitor.waInstances[instance.instanceName].updateMemberAddMode(update); + } + public async toggleEphemeral(instance: InstanceDto, update: GroupToggleEphemeralDto) { return await this.waMonitor.waInstances[instance.instanceName].toggleEphemeral(update); } diff --git a/src/api/dto/group.dto.ts b/src/api/dto/group.dto.ts index 293329d2ed..06485bc372 100644 --- a/src/api/dto/group.dto.ts +++ b/src/api/dto/group.dto.ts @@ -54,3 +54,7 @@ export class GroupUpdateSettingDto extends GroupJid { export class GroupToggleEphemeralDto extends GroupJid { expiration: 0 | 86400 | 604800 | 7776000; } + +export class GroupUpdateMemberAddModeDto extends GroupJid { + mode: 'admin_add' | 'all_member_add'; +} diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index e3af63d0ad..8dfb944335 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -27,6 +27,7 @@ import { GroupSendInvite, GroupSubjectDto, GroupToggleEphemeralDto, + GroupUpdateMemberAddModeDto, GroupUpdateParticipantDto, GroupUpdateSettingDto, } from '@api/dto/group.dto'; @@ -5080,6 +5081,15 @@ export class BaileysStartupService extends ChannelStartupService { } } + public async updateMemberAddMode(update: GroupUpdateMemberAddModeDto) { + try { + await this.client.groupMemberAddMode(update.groupJid, update.mode); + return { update: 'success', mode: update.mode }; + } catch (error) { + throw new BadRequestException('Error updating member add mode', error.toString()); + } + } + public async toggleEphemeral(update: GroupToggleEphemeralDto) { try { await this.client.groupToggleEphemeral(update.groupJid, update.expiration); diff --git a/src/api/routes/group.router.ts b/src/api/routes/group.router.ts index 7086b11769..8a87abdf91 100644 --- a/src/api/routes/group.router.ts +++ b/src/api/routes/group.router.ts @@ -10,6 +10,7 @@ import { GroupSendInvite, GroupSubjectDto, GroupToggleEphemeralDto, + GroupUpdateMemberAddModeDto, GroupUpdateParticipantDto, GroupUpdateSettingDto, } from '@api/dto/group.dto'; @@ -25,6 +26,7 @@ import { updateGroupDescriptionSchema, updateGroupPictureSchema, updateGroupSubjectSchema, + updateMemberAddModeSchema, updateParticipantsSchema, updateSettingsSchema, } from '@validate/validate.schema'; @@ -176,6 +178,16 @@ export class GroupRouter extends RouterBroker { res.status(HttpStatus.CREATED).json(response); }) + .post(this.routerPath('updateMemberAddMode'), ...guards, async (req, res) => { + const response = await this.groupValidate({ + request: req, + schema: updateMemberAddModeSchema, + ClassRef: GroupUpdateMemberAddModeDto, + execute: (instance, data) => groupController.updateMemberAddMode(instance, data), + }); + + res.status(HttpStatus.CREATED).json(response); + }) .post(this.routerPath('toggleEphemeral'), ...guards, async (req, res) => { const response = await this.groupValidate({ request: req, diff --git a/src/validate/group.schema.ts b/src/validate/group.schema.ts index 8da188d87f..2962f1be01 100644 --- a/src/validate/group.schema.ts +++ b/src/validate/group.schema.ts @@ -191,3 +191,17 @@ export const updateGroupDescriptionSchema: JSONSchema7 = { required: ['groupJid', 'description'], ...isNotEmpty('groupJid', 'description'), }; + +export const updateMemberAddModeSchema: JSONSchema7 = { + $id: v4(), + type: 'object', + properties: { + groupJid: { type: 'string' }, + mode: { + type: 'string', + enum: ['admin_add', 'all_member_add'], + }, + }, + required: ['groupJid', 'mode'], + ...isNotEmpty('groupJid', 'mode'), +}; From 71bf563036c5799c74801be0e54a80eb3445a27f Mon Sep 17 00:00:00 2001 From: Davidson Gomes Date: Wed, 6 May 2026 16:25:11 -0300 Subject: [PATCH 86/89] v2.4.0: license activation required (BREAKING CHANGE) (#2530) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(licensing): mirror evolution-go license activation system Phase 1 of the licensing rollout — backend only. Brings the same activation lifecycle that already exists in evolution-go (pkg/core) into evolution-api as src/licensing/, plus a public /license/* router and a gate middleware that 503s API traffic until activation. Module layout (mirrors pkg/core/*.go): - src/licensing/model.ts (config keys, type contracts) - src/licensing/store.ts (Prisma RuntimeConfig CRUD + hardware-based instance ID) - src/licensing/endpoint.ts (XOR-decoded URL with parts-array dev fallback) - src/licensing/transport.ts (axios + HMAC-SHA256 signing) - src/licensing/integrity.ts (paridade-only stubs - Baileys does not consume) - src/licensing/runtime.ts (RuntimeContext, initializeRuntime, gateMiddleware, heartbeat, shutdown, completeActivation) Public routes (no auth) - same contract as evolution-go: - GET /license/status -> {status, instance_id, api_key (masked)} - GET /license/register?redirect_uri -> POST /v1/register/init upstream - GET /license/activate?code= -> POST /v1/register/exchange + activate Bootstrap order in src/main.ts: 1. setDB(prisma) 2. initializeRuntime({tier: 'evolution-api', version, globalApiKey}) 3. /license router (always public) 4. gateMiddleware (503 LICENSE_REQUIRED before business routers) 5. business routers 6. startHeartbeat (30 min, fire-and-forget) 7. SIGTERM/SIGINT -> POST /v1/deactivate (best-effort) Behaviour notes: - AUTHENTICATION_API_KEY is reused as bootstrap key (mirrors GLOBAL_API_KEY in Go). If a license already exists in the DB, the service runs locally even if the licensing server is unreachable. - Gate middleware allowlist: /license/*, /manager/**, /assets/**, /store/**, /health, /server/ok, /favicon.ico, /ws, common static extensions. - Heartbeat carries optional telemetry_bundle with messages_sent / messages_recv that callers can feed via trackMessageSent() / trackMessageRecv(). Schema: - New Prisma model RuntimeConfig (key/value) on both postgresql and mysql schemas. Run npm run db:migrate:dev per provider before starting the service. Endpoint URL ofuscation: - Set LICENSE_ENDPOINT_ENCODED + LICENSE_ENDPOINT_XOR_KEY (hex) in release builds to avoid the licensing URL appearing as a plain string in the bundle. - Dev fallback assembles license.evolutionfoundation.com.br from a parts array, same technique as evolution-go. Phase 2 (manager-v2 UI for the activation flow) lands in a separate PR under evolution-foundation/evolution-manager-v2. * feat(licensing): add Prisma migration for RuntimeConfig table Adds the database migration that creates the licensing storage table (postgres + mysql). This was missing from the previous licensing commit. Without this migration, npm run db:deploy is a no-op and the server will fail to find the table at boot. * release: 2.4.0 - license activation required Polishes the licensing rollout for public release: - Better error UX: HTTP 503 now carries instance_id, docs_url and an actionable message instructing the operator to open the manager UI or set AUTHENTICATION_API_KEY in .env. - Better boot banner: lists the activation paths (manager UI, env var) with the docs URL and the instance_id. - Auto-detect missing migration: if the RuntimeConfig table is absent, the server prints a clear banner asking the operator to run npm run db:deploy and exits 1, instead of throwing a Prisma stack trace from inside the bootstrap. - Version bump 2.3.7 -> 2.4.0. - CHANGELOG entry with BREAKING CHANGE notice and migration guide. - README section 'License Activation' linking to docs.evolutionfoundation.com.br/licensing. * build(manager): refresh manager/dist with v2.4.0 bundle - Bumps the embedded manager UI to the version published on evolution-foundation/evolution-manager-v2 main, which now includes the license-aware login flow that mirrors evolution-go-manager. - Removes the legacy manager/dist/assets/test-interactive.js stand-alone script — its functionality is now a proper React component (TestInteractiveModal) inside the bundle, accessed from the instance card on the dashboard. - Updates the manager-v2 submodule pointer to track main. * style(licensing): apply prettier/eslint autofix and hoist DOCS_URL The autofix from the pre-push hook reorders imports, normalizes line breaks and reformats the constructor signature. Also moves DOCS_URL to the top of the module so the auto-detect error path can reference it without hitting the temporal dead zone. * feat(licensing): bake licensing endpoint into bundle at build time Mirrors evolution-go/tools/build-dist/obfuscate.go: the URL of the licensing server is now XOR-encoded into the JS bundle by tsup `define`, so it never appears as a plain literal in dist/main.js. The Dockerfile accepts the pair as build-args (NOT runtime env vars) so an operator cannot point the running service at a different licensing server. - src/licensing/endpoint.ts: read from compile-time `__LICENSE_ENDPOINT_*__` identifiers replaced by tsup; keep parts-array fallback for dev builds. - tsup.config.ts: `define` reads LICENSE_ENDPOINT_ENCODED / _XOR_KEY from build env at the moment npm run build is invoked. - tools/encode-url.js: helper to generate the hex pair for a given URL. Usage: eval "$(node tools/encode-url.js )". - Dockerfile: ARG + ENV plumbing for the build stage only. - CHANGELOG: notes about the build-time obfuscation. * chore: drop evolution-manager-v2 submodule The manager-v2 source repository is now private, so the CI checkout step fails when trying to fetch the submodule (no PAT configured, GITHUB_TOKEN has no cross-repo read scope). Drop the submodule entirely — the runtime artefact already lives under manager/dist/ in this repo, which is what the Express server serves. Source for the manager continues to be maintained at evolution-foundation/evolution-manager-v2 (private). * style(licensing): prettier autofix on endpoint.ts * docs(changelog): expand 2.4.0 entry with all features since 2.3.7 Previous entry only covered the licensing rollout. The release actually includes 50 commits worth of work: - Manager v2 completely redesigned (Tailwind v4 + @evoapi/design-system, dual-provider support, advanced sessions panels, license flow, Test Interactive modal, full i18n). - Carousel message endpoint (POST /message/sendCarousel). - Cross-client fix for buttons and list rendering on WhatsApp Web/Desktop/iOS via the stanza node and the legacy listMessage payload. - Interactive buttons via deviceSentMessage with corrected CTA limits and PIX payment_info support. - Catalog orderMessage and quoted productMessage support. - New messaging-history.set event with cumulative counts. - markMessageAsPlayed audio receipt endpoint. - SQS custom base_url. - LID -> phone-number mapping with cache. - Multiple bug fixes (mentionsEveryOne, getLastMessage, markMessageAsRead, list-message JSON cloning, Cloud API race conditions, instance logout idempotency, zombie-instance cleanup, network family timeout, etc.). --- .gitmodules | 3 - CHANGELOG.md | 247 ++++++++ Dockerfile | 10 + README.md | 27 + evolution-manager-v2 | 1 - manager/dist/assets/index-C-JyjMiq.css | 1 + manager/dist/assets/index-CO3NSIFj.js | 485 --------------- manager/dist/assets/index-DsIrum0U.css | 1 - manager/dist/assets/index-pLdnG_0T.js | 584 ++++++++++++++++++ manager/dist/assets/test-interactive.js | 448 -------------- manager/dist/index.html | 5 +- package.json | 2 +- .../migration.sql | 11 + prisma/mysql-schema.prisma | 8 + .../migration.sql | 13 + prisma/postgresql-schema.prisma | 8 + src/api/routes/license.router.ts | 72 +++ src/licensing/endpoint.ts | 70 +++ src/licensing/integrity.ts | 31 + src/licensing/model.ts | 43 ++ src/licensing/runtime.ts | 435 +++++++++++++ src/licensing/store.ts | 109 ++++ src/licensing/transport.ts | 51 ++ src/main.ts | 32 + tools/encode-url.js | 37 ++ tsconfig.json | 1 + tsup.config.ts | 9 + 27 files changed, 1802 insertions(+), 942 deletions(-) delete mode 100644 .gitmodules delete mode 160000 evolution-manager-v2 create mode 100644 manager/dist/assets/index-C-JyjMiq.css delete mode 100644 manager/dist/assets/index-CO3NSIFj.js delete mode 100644 manager/dist/assets/index-DsIrum0U.css create mode 100644 manager/dist/assets/index-pLdnG_0T.js delete mode 100644 manager/dist/assets/test-interactive.js create mode 100644 prisma/mysql-migrations/20260506184850_add_runtime_config/migration.sql create mode 100644 prisma/postgresql-migrations/20260506184850_add_runtime_config/migration.sql create mode 100644 src/api/routes/license.router.ts create mode 100644 src/licensing/endpoint.ts create mode 100644 src/licensing/integrity.ts create mode 100644 src/licensing/model.ts create mode 100644 src/licensing/runtime.ts create mode 100644 src/licensing/store.ts create mode 100644 src/licensing/transport.ts create mode 100755 tools/encode-url.js diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 54a177465b..0000000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "evolution-manager-v2"] - path = evolution-manager-v2 - url = https://github.com/evolution-foundation/evolution-manager-v2.git diff --git a/CHANGELOG.md b/CHANGELOG.md index 5102b5375c..1bf176b147 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,250 @@ +# 2.4.0 (2026-05-06) + +### ⚠️ BREAKING CHANGE — License activation is now required + +Starting with v2.4.0, every Evolution API instance must be activated against the +Evolution Foundation licensing server before serving API traffic. Until activation, +all business endpoints return: + +``` +HTTP 503 Service Unavailable +{ + "error": "service not activated", + "code": "LICENSE_REQUIRED", + "register_url": "https:///manager/login", + "instance_id": "", + "docs_url": "https://docs.evolutionfoundation.com.br/licensing", + "message": "..." +} +``` + +The following routes always remain public so the operator can recover: +`/license/status`, `/license/register`, `/license/activate`, `/manager/**`, +`/health`, `/server/ok`, `/ws`, static assets. + +### Migration guide + +1. Pull the new version and install dependencies: + ```bash + git pull + npm install + ``` + +2. Apply the new migration (creates the `RuntimeConfig` table). Required: + ```bash + npm run db:deploy + ``` + If you skip this step, the server now fails fast with a clear error + asking you to run `db:deploy`. + +3. Start the service. There are three activation paths: + + - **Already have a valid licensing key?** Set it as `AUTHENTICATION_API_KEY` + in your `.env` and restart. The bootstrap step will validate the key with + the licensing server, persist it, and activate the instance automatically. + + - **First-time activation via the manager UI?** Open + `https:///manager/login`. The manager detects that the + instance is unlicensed and redirects you to the registration page on + the licensing server. After you complete the form, you are sent back + to `/manager/license/callback?code=...`, the manager exchanges the code, + and the dashboard becomes accessible. + + - **Calling the API from code (n8n, Make, custom scripts) without a valid + license?** Every request will receive `503 LICENSE_REQUIRED` with the + `register_url` field pointing to the manager. Open it in a browser to + activate. + +### Added + +#### Manager v2 — completely redesigned dashboard + +The embedded manager (served at `/manager`) was rebuilt from the ground up +on **Tailwind v4** + the new **`@evoapi/design-system`**, using the same +visual language as the rest of the Evolution Foundation product line. +Every screen was refactored — no surface remains untouched. + +Highlights: + +- **Modern dashboard** with skeleton loading, illustrated empty state, + and a typed-name confirmation modal for instance deletion (no more + accidental clicks). +- **Dual-provider support**: the manager now talks to either + `evolution-api` or `evolution-go` (selected at login, persisted in + localStorage). When connected to a GO backend, the sidebar/router + automatically hide the modules GO does not implement. +- **Sessions panels** for the seven chatbot integrations (OpenAI, Dify, + N8N, EvoAI, EvolutionBot, Flowise, Typebot) gained advanced filters + (name / number / status / time presets + custom), + bulk-status-change actions, client-side pagination, and a real + send-message modal calling `/message/sendText`. +- **License-aware login** — see the *Licensing* section below for the + details. +- **🧪 Test Interactive** modal on each instance card — a 5-tab + payload editor (Reply / CTA / PIX / List / Carousel) for + smoke-testing the new interactive-message endpoints from the + dashboard. Replaces the legacy stand-alone `test-interactive.js` + vanilla script that used to be injected into `index.html`. +- **Full i18n coverage** in **pt-BR / en-US / es-ES / fr-FR** — every + screen, every toast, every modal. +- **Branding refresh** — sidebar/footer/login point to + `docs.evolutionfoundation.com.br`, GitHub links to + `evolution-foundation/evolution-manager-v2`, contact to + `suporte@evofoundation.com.br`. + +The new bundle is shipped pre-built under `manager/dist/`. The manager +source repository moved to `evolution-foundation/evolution-manager-v2` +(private) — the previous in-repo submodule was dropped. + +#### Licensing +- **Licensing module** under `src/licensing/` — RuntimeContext, gate middleware, + signed/unsigned HTTP transport, hardware-based instance ID, fire-and-forget + heartbeat (every 30 min), graceful shutdown deactivation. Mirrors the + evolution-go `pkg/core/` reference implementation. +- **Public license endpoints**: + - `GET /license/status` — current activation state and (masked) api_key + - `GET /license/register?redirect_uri=` — initiates registration on the + licensing server, returns `register_url` + - `GET /license/activate?code=` — exchanges the authorization code received + on the callback for a real api_key, persists it, marks the runtime active. +- **New Prisma model** `RuntimeConfig` (key/value rows in `RuntimeConfig` table) + for both PostgreSQL and MySQL schemas. +- **Auto-detect missing migration**: if the `RuntimeConfig` table is absent, + the server prints a clear banner explaining `npm run db:deploy` and exits 1 + instead of throwing a stack trace from the Prisma client. +- **Manager v2** ships with the new license-aware login flow that recognises + HTTP 503 / `LICENSE_REQUIRED`, calls `/license/register`, and redirects to + the registration server. After the callback, it lands on + `/manager/license/callback?code=...` and finalises activation. The new + manager bundle is included under `manager/dist/`. + +#### Interactive Messages (Buttons / List / CTA / PIX / Carousel) +- **New endpoint `POST /message/sendCarousel/{instance}`** — multi-card + product carousel built on top of `interactiveMessage` + `carouselMessage`. + Single-card-without-image falls back to `nativeFlowMessage` for iOS + compatibility. New DTO `SendCarouselDto`, schema `carouselMessageSchema`. +- **Button rendering fixed on WhatsApp Web/Desktop/iOS/Android** — removed the + `viewOnceMessage` wrapper that prevented buttons from rendering and started + injecting the required ` + ` node into the + `relayMessage` stanza via Baileys' official `additionalNodes` option. +- **List messages fixed on WhatsApp Web/Desktop** — switched to legacy + `listMessage` with `SINGLE_SELECT` listType (the modern + `interactiveMessage + single_select` format does not render on Web/Desktop) + and added ``. +- **Interactive buttons via `deviceSentMessage`** + corrected CTA limits + (max 2 CTA buttons, no mixing with reply or PIX), aligning with the + WhatsApp Business message contract. +- **PIX support** for interactive button messages (`payment_info` button + type — exactly 1 button, isolated). +- **Quoted product / Catalog `orderMessage`** support — handles + `quotedMessage.productMessage` and the catalog `orderMessage` shape, + including `getTypeMessage` enrichment, deduplication cache for + processed order IDs, and propagation through Chatwoot integration. +- Manager UI: a `🧪 Test Interactive` button on each instance card opens + a modal with five tabs (Reply / CTA / PIX / List / Carousel) and an + editable JSON payload — useful for smoke-testing every kind of + interactive message without leaving the dashboard. + +#### History Sync +- **New event `messaging-history.set`** emitted on sync completion, with + cumulative counts (chats, contacts, messages, isLatest, progress). + Allows downstream consumers to know exactly when a history sync has + finished and how much was imported. +- Cumulative counters reset on a new sync start to avoid carry-over + between consecutive syncs. + +#### Other +- **New endpoint `POST /chat/markMessageAsPlayed/{instance}`** — emits the + audio "played" receipt (PTT/VOICE), completing the read/delivered/played + triplet for voice messages. +- **SQS integration** now accepts a custom `base_url` (useful for + LocalStack and corporate VPC endpoints). +- **LID → phone-number mapping and caching** — translates the new + `@lid` identifiers WhatsApp uses for hidden-phone profiles into the + real `@s.whatsapp.net` JID for downstream processing, with a cache + to avoid redundant lookups. + +#### Branding / Documentation +- README, LICENSE, NOTICE, TRADEMARKS standardised under the + **Evolution Foundation 2026** identity. +- All GitHub URLs migrated from `EvolutionAPI` to `evolution-foundation`. +- New README section "License Activation" linking to + . + +### Fixed + +- **`mentionsEveryOne` honours `false`** — earlier the flag was always + applied regardless of value (#2470). +- **`getLastMessage`**: corrected the Prisma JSON path filter so the + query returns the actual last message (#2495 / #2515). +- **`markMessageAsRead`**: corrected JID filter to cover all user types + (regular, business, broadcast, group). +- **List messages**: removed destructive JSON cloning that triggered + `this.isZero` when the message contained `Long`-typed fields (#2461). +- **History sync race condition**: completion event is now emitted + *before* the contact upsert, so consumers don't observe the sync as + finished while contacts are still being written (#2510). +- **Business API (Cloud)**: race condition in sender identification + resolved (#2493); execution order normalised; `chatwootIds` + correctly propagated. +- **`/instance/logout/{instance}`** — idempotent: returns SUCCESS instead + of 400 when the instance is already closed, so the manager UI delete + flow (logout-then-delete) does not surface a misleading error. +- **`remove.instance` event** — emitted even when logout itself fails, + preventing zombie instances after a partially failed delete (#2520). +- **Chatbot session**: a closed session no longer blocks bot + re-activation. +- **Docker compose**: fresh-install startup failures resolved. +- **WhatsApp chats**: `accountLid` handling, `remoteJid` normalisation + and `chatsRaw` mapping cleaned up to avoid mismatched contact data + on first connection. +- **Facebook ads**: `externalAdReply` context readability and fallback + path for missing fields. +- **Networking**: added the `--network-family-autoselection-attempt-timeout` + flag in `start:prod` so IPv4/IPv6 races no longer hang the boot on + hosts with broken IPv6. +- **Trailing slashes** on configuration URLs are now tolerated in all + HTTP clients. +- Verbose-log fix: undefined `maxRetries` reference inside the + `messages.update` handler. + +### Notes + +- `AUTHENTICATION_API_KEY` keeps its original meaning (global API key for + business endpoints) **and** gains a second use as the bootstrap license + key. If the value you have is a real licensing key, activation is silent. + If it is not, the service starts unlicensed and waits for activation via + the manager. +- Activation is a one-time operation. The `api_key` is stored in the database + and reused across restarts. The licensing server is only consulted again + for periodic heartbeats (telemetry — non-blocking) and on graceful shutdown + (`/v1/deactivate`). +- If the licensing server is unreachable but the instance has been activated + before, the service continues to serve traffic normally — local DB is the + source of truth for activation state after the first successful call. +- Release builds bake the licensing endpoint into the bundle as an XOR-encoded + string via tsup `define`, so the URL never appears as a plain literal in + `dist/main.js`. Generate the pair with `node tools/encode-url.js ` and + pass `LICENSE_ENDPOINT_ENCODED` / `LICENSE_ENDPOINT_XOR_KEY` as Docker + build-args (NOT runtime env vars). Local dev builds use a parts-array + fallback that still avoids a single string literal but is not obfuscated. + +### Troubleshooting + +- **`HTTP 503 LICENSE_REQUIRED`** — expected before activation. Follow the + migration guide. +- **`The table evolution_api.RuntimeConfig does not exist`** (legacy stack + trace if you somehow bypass the new auto-detect) — run `npm run db:deploy`. +- **`Global API key not accepted by licensing server: invalid signature`** — + your existing `AUTHENTICATION_API_KEY` is not a valid licensing key. Use + the manager UI flow to obtain a new one. +- **Buttons/list not rendering on WhatsApp Web** — make sure you are on + v2.4.0+; the `` stanza node and the legacy `listMessage` payload + shipped with this release are required for cross-client rendering. + +--- + # 2.3.7 (2025-12-05) ### Features diff --git a/Dockerfile b/Dockerfile index 747e7d730e..81953db4ff 100644 --- a/Dockerfile +++ b/Dockerfile @@ -31,6 +31,16 @@ RUN chmod +x ./Docker/scripts/* && dos2unix ./Docker/scripts/* RUN ./Docker/scripts/generate_database.sh +# Licensing endpoint is XOR-encoded into the bundle by tsup `define`. Pass the +# pair via build-args (NEVER as runtime env vars) to keep the URL out of the +# compiled JavaScript as a plain literal. Generate them with +# `node tools/encode-url.js `. Leaving them empty is OK for non-release +# builds — the dev fallback in src/licensing/endpoint.ts kicks in. +ARG LICENSE_ENDPOINT_ENCODED +ARG LICENSE_ENDPOINT_XOR_KEY +ENV LICENSE_ENDPOINT_ENCODED=${LICENSE_ENDPOINT_ENCODED} +ENV LICENSE_ENDPOINT_XOR_KEY=${LICENSE_ENDPOINT_XOR_KEY} + RUN NODE_OPTIONS="--max-old-space-size=2048" npm run build FROM node:24-alpine AS final diff --git a/README.md b/README.md index 4586e4028a..d39317f6c6 100644 --- a/README.md +++ b/README.md @@ -124,6 +124,33 @@ docker run -p 8080:8080 --env-file .env evoapicloud/evolution-api:latest --- +## License Activation + +Starting from **v2.4.0**, every Evolution API instance must be activated +against the Evolution Foundation licensing server before serving API +traffic. While unactivated, business endpoints return +`HTTP 503 LICENSE_REQUIRED` with a `register_url` pointing to the manager +UI. + +There are two ways to activate: + +1. **Set a known licensing key** as `AUTHENTICATION_API_KEY` in your + `.env`. The server validates it on boot, persists it locally and + activates the instance silently. +2. **Activate via the manager UI** at `https:///manager/login`. + On first login the manager detects an unlicensed backend and redirects + you to the registration server; once you complete the form you are + redirected back and the dashboard becomes accessible. + +Activation is a one-time operation — the key is persisted in the +`RuntimeConfig` table and reused across restarts. The licensing server is +only consulted again for fire-and-forget heartbeats (telemetry) and a +best-effort `/v1/deactivate` notice on graceful shutdown. + +Full activation guide: + +--- + ## Architecture Evolution API is built with a multi-provider, event-driven architecture: diff --git a/evolution-manager-v2 b/evolution-manager-v2 deleted file mode 160000 index 3137df4695..0000000000 --- a/evolution-manager-v2 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 3137df469504ce211c68e7b35f0706497ac1b95f diff --git a/manager/dist/assets/index-C-JyjMiq.css b/manager/dist/assets/index-C-JyjMiq.css new file mode 100644 index 0000000000..9f0c8f2ee9 --- /dev/null +++ b/manager/dist/assets/index-C-JyjMiq.css @@ -0,0 +1 @@ +@layer properties;@layer theme,base,components,utilities;@layer theme{:root,:host{--font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-100: oklch(93.6% .032 17.717);--color-red-500: oklch(63.7% .237 25.331);--color-red-600: oklch(57.7% .245 27.325);--color-red-700: oklch(50.5% .213 27.518);--color-red-800: oklch(44.4% .177 26.899);--color-orange-100: oklch(95.4% .038 75.164);--color-orange-500: oklch(70.5% .213 47.604);--color-orange-600: oklch(64.6% .222 41.116);--color-orange-700: oklch(55.3% .195 38.402);--color-yellow-100: oklch(97.3% .071 103.193);--color-yellow-400: oklch(85.2% .199 91.936);--color-yellow-500: oklch(79.5% .184 86.047);--color-yellow-600: oklch(68.1% .162 75.834);--color-yellow-700: oklch(55.4% .135 66.442);--color-green-50: oklch(98.2% .018 155.826);--color-green-100: oklch(96.2% .044 156.743);--color-green-200: oklch(92.5% .084 155.995);--color-green-400: oklch(79.2% .209 151.711);--color-green-500: oklch(72.3% .219 149.579);--color-green-600: oklch(62.7% .194 149.214);--color-green-700: oklch(52.7% .154 150.069);--color-green-800: oklch(44.8% .119 151.328);--color-blue-50: oklch(97% .014 254.604);--color-blue-100: oklch(93.2% .032 255.585);--color-blue-200: oklch(88.2% .059 254.128);--color-blue-400: oklch(70.7% .165 254.624);--color-blue-500: oklch(62.3% .214 259.815);--color-blue-600: oklch(54.6% .245 262.881);--color-blue-700: oklch(48.8% .243 264.376);--color-blue-800: oklch(42.4% .199 265.638);--color-blue-900: oklch(37.9% .146 265.522);--color-purple-50: oklch(97.7% .014 308.299);--color-purple-100: oklch(94.6% .033 307.174);--color-purple-200: oklch(90.2% .063 306.703);--color-purple-500: oklch(62.7% .265 303.9);--color-purple-600: oklch(55.8% .288 302.321);--color-purple-700: oklch(49.6% .265 301.924);--color-purple-900: oklch(38.1% .176 304.987);--color-pink-50: oklch(97.1% .014 343.198);--color-pink-500: oklch(65.6% .241 354.308);--color-pink-600: oklch(59.2% .249 .584);--color-slate-50: oklch(98.4% .003 247.858);--color-slate-800: oklch(27.9% .041 260.031);--color-slate-900: oklch(20.8% .042 265.755);--color-gray-400: oklch(70.7% .022 261.325);--color-gray-600: oklch(44.6% .03 256.802);--color-gray-700: oklch(37.3% .034 259.733);--color-gray-900: oklch(21% .034 264.665);--color-black: #000;--color-white: #fff;--spacing: .25rem;--container-xs: 20rem;--container-sm: 24rem;--container-md: 28rem;--container-lg: 32rem;--container-2xl: 42rem;--container-4xl: 56rem;--container-6xl: 72rem;--text-xs: .75rem;--text-xs--line-height: calc(1 / .75);--text-sm: .875rem;--text-sm--line-height: calc(1.25 / .875);--text-base: 1rem;--text-base--line-height: 1.5 ;--text-lg: 1.125rem;--text-lg--line-height: calc(1.75 / 1.125);--text-xl: 1.25rem;--text-xl--line-height: calc(1.75 / 1.25);--text-2xl: 1.5rem;--text-2xl--line-height: calc(2 / 1.5);--text-3xl: 1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl: 2.25rem;--text-4xl--line-height: calc(2.5 / 2.25);--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--tracking-tight: -.025em;--tracking-widest: .1em;--leading-tight: 1.25;--leading-snug: 1.375;--leading-relaxed: 1.625;--radius-xs: .125rem;--ease-in-out: cubic-bezier(.4, 0, .2, 1);--animate-spin: spin 1s linear infinite;--animate-pulse: pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--aspect-video: 16 / 9;--default-transition-duration: .15s;--default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);--default-font-family: var(--font-sans);--default-mono-font-family: var(--font-mono);--color-background: var(--background);--color-foreground: var(--foreground);--color-primary: var(--primary);--color-primary-foreground: var(--primary-foreground);--color-secondary: var(--secondary);--color-secondary-foreground: var(--secondary-foreground);--color-muted: var(--muted);--color-muted-foreground: var(--muted-foreground);--color-accent: var(--accent);--color-accent-foreground: var(--accent-foreground);--color-destructive: var(--destructive);--color-destructive-foreground: var(--destructive-foreground);--color-border: var(--border);--color-input: var(--input);--color-ring: var(--ring)}}@layer base{*,:after,:before,::backdrop,::file-selector-button{box-sizing:border-box;margin:0;padding:0;border:0 solid}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;tab-size:4;font-family:var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings, normal);font-variation-settings:var(--default-font-variation-settings, normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings, normal);font-variation-settings:var(--default-mono-font-variation-settings, normal);font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea,::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;border-radius:0;background-color:transparent;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px){::placeholder{color:currentcolor}@supports (color: color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]),::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.\@container\/card-header{container-type:inline-size;container-name:card-header}.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.-top-2{top:calc(var(--spacing) * -2)}.-top-12{top:calc(var(--spacing) * -12)}.top-0{top:calc(var(--spacing) * 0)}.top-1\.5{top:calc(var(--spacing) * 1.5)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-3\.5{top:calc(var(--spacing) * 3.5)}.top-4{top:calc(var(--spacing) * 4)}.top-\[1px\]{top:1px}.top-\[50\%\]{top:50%}.top-\[60\%\]{top:60%}.top-full{top:100%}.-right-0{right:calc(var(--spacing) * -0)}.-right-2{right:calc(var(--spacing) * -2)}.-right-12{right:calc(var(--spacing) * -12)}.right-0{right:calc(var(--spacing) * 0)}.right-1{right:calc(var(--spacing) * 1)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.-bottom-0{bottom:calc(var(--spacing) * -0)}.-bottom-12{bottom:calc(var(--spacing) * -12)}.bottom-0{bottom:calc(var(--spacing) * 0)}.-left-12{left:calc(var(--spacing) * -12)}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-3{left:calc(var(--spacing) * 3)}.left-4{left:calc(var(--spacing) * 4)}.left-\[50\%\]{left:50%}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[1\]{z-index:1}.col-span-2{grid-column:span 2 / span 2}.col-span-3{grid-column:span 3 / span 3}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2 / span 2}.row-span-3{grid-row:span 3 / span 3}.row-start-1{grid-row-start:1}.container{width:100%}@media (width >= 40rem){.container{max-width:40rem}}@media (width >= 48rem){.container{max-width:48rem}}@media (width >= 64rem){.container{max-width:64rem}}@media (width >= 80rem){.container{max-width:80rem}}@media (width >= 96rem){.container{max-width:96rem}}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-3\.5{margin-inline:calc(var(--spacing) * 3.5)}.mx-auto{margin-inline:auto}.my-0\.5{margin-block:calc(var(--spacing) * .5)}.my-1{margin-block:calc(var(--spacing) * 1)}.my-4{margin-block:calc(var(--spacing) * 4)}.-mt-1{margin-top:calc(var(--spacing) * -1)}.-mt-4{margin-top:calc(var(--spacing) * -4)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-auto{margin-top:auto}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.-ml-1{margin-left:calc(var(--spacing) * -1)}.-ml-4{margin-left:calc(var(--spacing) * -4)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-8{margin-left:calc(var(--spacing) * 8)}.ml-12{margin-left:calc(var(--spacing) * 12)}.ml-auto{margin-left:auto}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.field-sizing-content{field-sizing:content}.aspect-square{aspect-ratio:1 / 1}.aspect-video{aspect-ratio:var(--aspect-video)}.size-\(--cell-size\){width:var(--cell-size);height:var(--cell-size)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-auto{width:auto;height:auto}.size-full{width:100%;height:100%}.h-\(--cell-size\){height:var(--cell-size)}.h-1{height:calc(var(--spacing) * 1)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-24{height:calc(var(--spacing) * 24)}.h-32{height:calc(var(--spacing) * 32)}.h-48{height:calc(var(--spacing) * 48)}.h-\[1\.15rem\]{height:1.15rem}.h-\[100px\]{height:100px}.h-\[150px\]{height:150px}.h-\[200px\]{height:200px}.h-\[300px\]{height:300px}.h-\[400px\]{height:400px}.h-\[500px\]{height:500px}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-\[var\(--radix-navigation-menu-viewport-height\)\]{height:var(--radix-navigation-menu-viewport-height)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.h-svh{height:100svh}.max-h-\(--radix-context-menu-content-available-height\){max-height:var(--radix-context-menu-content-available-height)}.max-h-\(--radix-dropdown-menu-content-available-height\){max-height:var(--radix-dropdown-menu-content-available-height)}.max-h-\(--radix-select-content-available-height\){max-height:var(--radix-select-content-available-height)}.max-h-\[80vh\]{max-height:80vh}.max-h-\[300px\]{max-height:300px}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-4{min-height:calc(var(--spacing) * 4)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-\[80px\]{min-height:80px}.min-h-\[100px\]{min-height:100px}.min-h-\[100vh\]{min-height:100vh}.min-h-svh{min-height:100svh}.w-\(--cell-size\){width:var(--cell-size)}.w-0{width:calc(var(--spacing) * 0)}.w-1{width:calc(var(--spacing) * 1)}.w-1\/2{width:50%}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-2\/3{width:calc(2/3 * 100%)}.w-3{width:calc(var(--spacing) * 3)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-18{width:calc(var(--spacing) * 18)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-32{width:calc(var(--spacing) * 32)}.w-48{width:calc(var(--spacing) * 48)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-80{width:calc(var(--spacing) * 80)}.w-96{width:calc(var(--spacing) * 96)}.w-\[--radix-dropdown-menu-trigger-width\]{width:--radix-dropdown-menu-trigger-width}.w-\[50px\]{width:50px}.w-\[100px\]{width:100px}.w-\[180px\]{width:180px}.w-\[200px\]{width:200px}.w-\[250px\]{width:250px}.w-\[280px\]{width:280px}.w-\[300px\]{width:300px}.w-\[350px\]{width:350px}.w-\[400px\]{width:400px}.w-\[500px\]{width:500px}.w-\[600px\]{width:600px}.w-\[var\(--sidebar-width\)\]{width:var(--sidebar-width)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-px{width:1px}.max-w-\(--skeleton-width\){max-width:var(--skeleton-width)}.max-w-2xl{max-width:var(--container-2xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-lg{max-width:var(--container-lg)}.max-w-max{max-width:max-content}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.max-w-xs{max-width:var(--container-xs)}.min-w-\(--cell-size\){min-width:var(--cell-size)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-5{min-width:calc(var(--spacing) * 5)}.min-w-8{min-width:calc(var(--spacing) * 8)}.min-w-9{min-width:calc(var(--spacing) * 9)}.min-w-10{min-width:calc(var(--spacing) * 10)}.min-w-56{min-width:calc(var(--spacing) * 56)}.min-w-\[8rem\]{min-width:8rem}.min-w-\[12rem\]{min-width:12rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-full{flex-basis:100%}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\(--radix-context-menu-content-transform-origin\){transform-origin:var(--radix-context-menu-content-transform-origin)}.origin-\(--radix-dropdown-menu-content-transform-origin\){transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.origin-\(--radix-hover-card-content-transform-origin\){transform-origin:var(--radix-hover-card-content-transform-origin)}.origin-\(--radix-menubar-content-transform-origin\){transform-origin:var(--radix-menubar-content-transform-origin)}.origin-\(--radix-select-content-transform-origin\){transform-origin:var(--radix-select-content-transform-origin)}.origin-\(--radix-tooltip-content-transform-origin\){transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-px{--tw-translate-x: -1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\[-50\%\]{--tw-translate-x: -50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-px{--tw-translate-x: 1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-0\.5{--tw-translate-y: calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y: -50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y: calc(-50% - 2px) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-caret-blink{animation:caret-blink 1.25s ease-out infinite}.animate-in{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize-none{resize:none}.scroll-my-1{scroll-margin-block:calc(var(--spacing) * 1)}.scroll-py-1{scroll-padding-block:calc(var(--spacing) * 1)}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.appearance-none{appearance:none}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-\[0_1fr\]{grid-template-columns:0 1fr}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.justify-items-start{justify-items:start}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}:where(.space-y-0>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 0) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 0) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}:where(.-space-x-2>:not(:last-child)){--tw-space-x-reverse: 0;margin-inline-start:calc(calc(var(--spacing) * -2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * -2) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse: 0;margin-inline-start:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse: 0;margin-inline-start:calc(calc(var(--spacing) * 3) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse: 0;margin-inline-start:calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-6>:not(:last-child)){--tw-space-x-reverse: 0;margin-inline-start:calc(calc(var(--spacing) * 6) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-x-reverse)))}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[4px\]{border-radius:4px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:calc(infinity * 1px)}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-l-md{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.rounded-r-md{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-\[1\.5px\]{border-style:var(--tw-border-style);border-width:1.5px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style: dashed;border-style:dashed}.border-\(--color-border\){border-color:var(--color-border)}.border-background{border-color:var(--background)}.border-blue-200{border-color:var(--color-blue-200)}.border-border\/50{border-color:var(--border)}@supports (color: color-mix(in lab,red,red)){.border-border\/50{border-color:color-mix(in oklab,var(--border) 50%,transparent)}}.border-current{border-color:currentcolor}.border-destructive{border-color:var(--destructive)}.border-destructive\/20{border-color:var(--destructive)}@supports (color: color-mix(in lab,red,red)){.border-destructive\/20{border-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.border-gray-700{border-color:var(--color-gray-700)}.border-green-200{border-color:var(--color-green-200)}.border-green-500{border-color:var(--color-green-500)}.border-input{border-color:var(--input)}.border-muted{border-color:var(--muted)}.border-primary{border-color:var(--primary)}.border-purple-100{border-color:var(--color-purple-100)}.border-purple-200{border-color:var(--color-purple-200)}.border-sidebar-border{border-color:var(--sidebar-border)}.border-transparent{border-color:transparent}.border-white{border-color:var(--color-white)}.border-yellow-500{border-color:var(--color-yellow-500)}.border-t-transparent{border-top-color:transparent}.border-l-transparent{border-left-color:transparent}.bg-\(--color-bg\){background-color:var(--color-bg)}.bg-accent{background-color:var(--accent)}.bg-background{background-color:var(--background)}.bg-black{background-color:var(--color-black)}.bg-black\/50{background-color:color-mix(in srgb,#000 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-destructive{background-color:var(--destructive)}.bg-destructive\/10{background-color:var(--destructive)}@supports (color: color-mix(in lab,red,red)){.bg-destructive\/10{background-color:color-mix(in oklab,var(--destructive) 10%,transparent)}}.bg-foreground{background-color:var(--foreground)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-600{background-color:var(--color-gray-600)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-500{background-color:var(--color-green-500)}.bg-green-600{background-color:var(--color-green-600)}.bg-muted{background-color:var(--muted)}.bg-muted\/50{background-color:var(--muted)}@supports (color: color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.bg-orange-100{background-color:var(--color-orange-100)}.bg-orange-500{background-color:var(--color-orange-500)}.bg-orange-600{background-color:var(--color-orange-600)}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-primary\/10{background-color:var(--primary)}@supports (color: color-mix(in lab,red,red)){.bg-primary\/10{background-color:color-mix(in oklab,var(--primary) 10%,transparent)}}.bg-primary\/20{background-color:var(--primary)}@supports (color: color-mix(in lab,red,red)){.bg-primary\/20{background-color:color-mix(in oklab,var(--primary) 20%,transparent)}}.bg-purple-100{background-color:var(--color-purple-100)}.bg-purple-500{background-color:var(--color-purple-500)}.bg-purple-600{background-color:var(--color-purple-600)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-600{background-color:var(--color-red-600)}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-border{background-color:var(--sidebar-border)}.bg-sidebar-primary{background-color:var(--sidebar-primary)}.bg-slate-50{background-color:var(--color-slate-50)}.bg-transparent{background-color:transparent}.bg-white{background-color:var(--color-white)}.bg-white\/60{background-color:color-mix(in srgb,#fff 60%,transparent)}@supports (color: color-mix(in lab,red,red)){.bg-white\/60{background-color:color-mix(in oklab,var(--color-white) 60%,transparent)}}.bg-white\/80{background-color:color-mix(in srgb,#fff 80%,transparent)}@supports (color: color-mix(in lab,red,red)){.bg-white\/80{background-color:color-mix(in oklab,var(--color-white) 80%,transparent)}}.bg-yellow-100{background-color:var(--color-yellow-100)}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-yellow-600{background-color:var(--color-yellow-600)}.bg-gradient-to-b{--tw-gradient-position: to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-br{--tw-gradient-position: to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position: to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-blue-400{--tw-gradient-from: var(--color-blue-400);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-blue-500{--tw-gradient-from: var(--color-blue-500);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-blue-500\/20{--tw-gradient-from: color-mix(in srgb, oklch(62.3% .214 259.815) 20%, transparent);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}@supports (color: color-mix(in lab,red,red)){.from-blue-500\/20{--tw-gradient-from: color-mix(in oklab, var(--color-blue-500) 20%, transparent)}}.from-muted\/50{--tw-gradient-from: var(--muted);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}@supports (color: color-mix(in lab,red,red)){.from-muted\/50{--tw-gradient-from: color-mix(in oklab, var(--muted) 50%, transparent)}}.from-purple-50{--tw-gradient-from: var(--color-purple-50);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-purple-500{--tw-gradient-from: var(--color-purple-500);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-white{--tw-gradient-from: var(--color-white);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-blue-600\/20{--tw-gradient-to: color-mix(in srgb, oklch(54.6% .245 262.881) 20%, transparent);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}@supports (color: color-mix(in lab,red,red)){.to-blue-600\/20{--tw-gradient-to: color-mix(in oklab, var(--color-blue-600) 20%, transparent)}}.to-gray-900{--tw-gradient-to: var(--color-gray-900);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-muted{--tw-gradient-to: var(--muted);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-pink-50{--tw-gradient-to: var(--color-pink-50);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-pink-500{--tw-gradient-to: var(--color-pink-500);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-purple-600{--tw-gradient-to: var(--color-purple-600);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.fill-blue-400{fill:var(--color-blue-400)}.fill-current{fill:currentcolor}.fill-primary{fill:var(--primary)}.fill-yellow-400{fill:var(--color-yellow-400)}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-\[3px\]{padding:3px}.p-px{padding:1px}.px-\(--cell-size\){padding-inline:var(--cell-size)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-2\.5{padding-right:calc(var(--spacing) * 2.5)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pb-0{padding-bottom:calc(var(--spacing) * 0)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-10{padding-left:calc(var(--spacing) * 10)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading, var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading, var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading, var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading, var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading, var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading, var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height))}.text-\[0\.8rem\]{font-size:.8rem}.text-\[10px\]{font-size:10px}.leading-none{--tw-leading: 1;line-height:1}.leading-relaxed{--tw-leading: var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading: var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading: var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight: var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight: var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking: var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-widest{--tw-tracking: var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.text-accent-foreground{color:var(--accent-foreground)}.text-blue-400{color:var(--color-blue-400)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-blue-800{color:var(--color-blue-800)}.text-blue-900{color:var(--color-blue-900)}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentcolor}.text-destructive{color:var(--destructive)}.text-destructive-foreground{color:var(--destructive-foreground)}.text-foreground{color:var(--foreground)}.text-green-400{color:var(--color-green-400)}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-green-800{color:var(--color-green-800)}.text-muted-foreground{color:var(--muted-foreground)}.text-orange-600{color:var(--color-orange-600)}.text-orange-700{color:var(--color-orange-700)}.text-pink-600{color:var(--color-pink-600)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-purple-500{color:var(--color-purple-500)}.text-purple-600{color:var(--color-purple-600)}.text-purple-700{color:var(--color-purple-700)}.text-purple-900{color:var(--color-purple-900)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-foreground{color:var(--sidebar-foreground)}.text-sidebar-foreground\/70{color:var(--sidebar-foreground)}@supports (color: color-mix(in lab,red,red)){.text-sidebar-foreground\/70{color:color-mix(in oklab,var(--sidebar-foreground) 70%,transparent)}}.text-sidebar-primary-foreground{color:var(--sidebar-primary-foreground)}.text-white{color:var(--color-white)}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-600{color:var(--color-yellow-600)}.text-yellow-700{color:var(--color-yellow-700)}.capitalize{text-transform:capitalize}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0%}.opacity-50{opacity:50%}.opacity-70{opacity:70%}.opacity-75{opacity:75%}.opacity-90{opacity:90%}.opacity-100{opacity:100%}.shadow{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow: 0 0 0 1px var(--tw-shadow-color, hsl(var(--sidebar-border)));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-0{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-primary{--tw-ring-color: var(--primary)}.ring-ring\/50{--tw-ring-color: var(--ring)}@supports (color: color-mix(in lab,red,red)){.ring-ring\/50{--tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent)}}.ring-sidebar-ring{--tw-ring-color: var(--sidebar-ring)}.ring-offset-background{--tw-ring-offset-color: var(--background)}.outline-hidden{--tw-outline-style: none;outline-style:none}@media (forced-colors: active){.outline-hidden{outline:2px solid transparent;outline-offset:2px}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,visibility,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-\[margin\,opacity\]{transition-property:margin,opacity;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-\[width\,height\]{transition-property:width,height;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-none{transition-property:none}.duration-200{--tw-duration: .2s;transition-duration:.2s}.duration-300{--tw-duration: .3s;transition-duration:.3s}.duration-1000{--tw-duration: 1s;transition-duration:1s}.ease-in-out{--tw-ease: var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-linear{--tw-ease: linear;transition-timing-function:linear}.fade-in-0{--tw-enter-opacity: 0 ;--tw-enter-opacity: 0}.outline-none{--tw-outline-style: none;outline-style:none}.select-all{-webkit-user-select:all;user-select:all}.select-none{-webkit-user-select:none;user-select:none}.zoom-in-95{--tw-enter-scale: 95% ;--tw-enter-scale: .95}.\[--cell-size\:--spacing\(8\)\]{--cell-size: calc(var(--spacing) * 8)}.group-focus-within\/menu-item\:opacity-100:is(:where(.group\/menu-item):focus-within *){opacity:100%}@media (hover: hover){.group-hover\/menu-item\:opacity-100:is(:where(.group\/menu-item):hover *){opacity:100%}}.group-has-data-\[sidebar\=menu-action\]\/menu-item\:pr-8:is(:where(.group\/menu-item):has(*[data-sidebar=menu-action]) *){padding-right:calc(var(--spacing) * 8)}.group-has-\[\[data-collapsible\=icon\]\]\/sidebar-wrapper\:h-12:is(:where(.group\/sidebar-wrapper):has(*:is([data-collapsible=icon])) *){height:calc(var(--spacing) * 12)}.group-data-\[collapsible\=icon\]\:-mt-8:is(:where(.group)[data-collapsible=icon] *){margin-top:calc(var(--spacing) * -8)}.group-data-\[collapsible\=icon\]\:hidden:is(:where(.group)[data-collapsible=icon] *){display:none}.group-data-\[collapsible\=icon\]\:size-8\!:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--spacing) * 8)!important;height:calc(var(--spacing) * 8)!important}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+1rem\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + 1rem)}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+1rem\+2px\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + 1rem + 2px)}.group-data-\[collapsible\=icon\]\:w-\[var\(--sidebar-width-icon\)\]:is(:where(.group)[data-collapsible=icon] *){width:var(--sidebar-width-icon)}.group-data-\[collapsible\=icon\]\:overflow-hidden:is(:where(.group)[data-collapsible=icon] *){overflow:hidden}.group-data-\[collapsible\=icon\]\:p-0\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing) * 0)!important}.group-data-\[collapsible\=icon\]\:p-2\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing) * 2)!important}.group-data-\[collapsible\=icon\]\:opacity-0:is(:where(.group)[data-collapsible=icon] *){opacity:0%}.group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){right:calc(var(--sidebar-width) * -1)}.group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){left:calc(var(--sidebar-width) * -1)}.group-data-\[collapsible\=offcanvas\]\:w-0:is(:where(.group)[data-collapsible=offcanvas] *){width:calc(var(--spacing) * 0)}.group-data-\[collapsible\=offcanvas\]\:translate-x-0:is(:where(.group)[data-collapsible=offcanvas] *){--tw-translate-x: calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:50%}.group-data-\[focused\=true\]\/day\:relative:is(:where(.group\/day)[data-focused=true] *){position:relative}.group-data-\[focused\=true\]\/day\:z-10:is(:where(.group\/day)[data-focused=true] *){z-index:10}.group-data-\[focused\=true\]\/day\:border-ring:is(:where(.group\/day)[data-focused=true] *){border-color:var(--ring)}.group-data-\[focused\=true\]\/day\:ring-\[3px\]:is(:where(.group\/day)[data-focused=true] *){--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[focused\=true\]\/day\:ring-ring\/50:is(:where(.group\/day)[data-focused=true] *){--tw-ring-color: var(--ring)}@supports (color: color-mix(in lab,red,red)){.group-data-\[focused\=true\]\/day\:ring-ring\/50:is(:where(.group\/day)[data-focused=true] *){--tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent)}}.group-data-\[side\=left\]\:-right-4:is(:where(.group)[data-side=left] *){right:calc(var(--spacing) * -4)}.group-data-\[side\=left\]\:border-r:is(:where(.group)[data-side=left] *){border-right-style:var(--tw-border-style);border-right-width:1px}.group-data-\[side\=right\]\:left-0:is(:where(.group)[data-side=right] *){left:calc(var(--spacing) * 0)}.group-data-\[side\=right\]\:rotate-180:is(:where(.group)[data-side=right] *){rotate:180deg}.group-data-\[side\=right\]\:border-l:is(:where(.group)[data-side=right] *){border-left-style:var(--tw-border-style);border-left-width:1px}.group-data-\[state\=open\]\:rotate-180:is(:where(.group)[data-state=open] *){rotate:180deg}.group-data-\[state\=open\]\/collapsible\:rotate-180:is(:where(.group\/collapsible)[data-state=open] *){rotate:180deg}.group-data-\[variant\=floating\]\:rounded-lg:is(:where(.group)[data-variant=floating] *){border-radius:var(--radius)}.group-data-\[variant\=floating\]\:border:is(:where(.group)[data-variant=floating] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[variant\=floating\]\:border-sidebar-border:is(:where(.group)[data-variant=floating] *){border-color:var(--sidebar-border)}.group-data-\[variant\=floating\]\:shadow-sm:is(:where(.group)[data-variant=floating] *){--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[vaul-drawer-direction\=bottom\]\/drawer-content\:block:is(:where(.group\/drawer-content)[data-vaul-drawer-direction=bottom] *){display:block}.group-data-\[vaul-drawer-direction\=bottom\]\/drawer-content\:text-center:is(:where(.group\/drawer-content)[data-vaul-drawer-direction=bottom] *){text-align:center}.group-data-\[vaul-drawer-direction\=top\]\/drawer-content\:text-center:is(:where(.group\/drawer-content)[data-vaul-drawer-direction=top] *){text-align:center}.group-data-\[viewport\=false\]\/navigation-menu\:top-full:is(:where(.group\/navigation-menu)[data-viewport=false] *){top:100%}.group-data-\[viewport\=false\]\/navigation-menu\:mt-1\.5:is(:where(.group\/navigation-menu)[data-viewport=false] *){margin-top:calc(var(--spacing) * 1.5)}.group-data-\[viewport\=false\]\/navigation-menu\:overflow-hidden:is(:where(.group\/navigation-menu)[data-viewport=false] *){overflow:hidden}.group-data-\[viewport\=false\]\/navigation-menu\:rounded-md:is(:where(.group\/navigation-menu)[data-viewport=false] *){border-radius:calc(var(--radius) - 2px)}.group-data-\[viewport\=false\]\/navigation-menu\:border:is(:where(.group\/navigation-menu)[data-viewport=false] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[viewport\=false\]\/navigation-menu\:bg-popover:is(:where(.group\/navigation-menu)[data-viewport=false] *){background-color:var(--popover)}.group-data-\[viewport\=false\]\/navigation-menu\:text-popover-foreground:is(:where(.group\/navigation-menu)[data-viewport=false] *){color:var(--popover-foreground)}.group-data-\[viewport\=false\]\/navigation-menu\:shadow:is(:where(.group\/navigation-menu)[data-viewport=false] *){--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[viewport\=false\]\/navigation-menu\:duration-200:is(:where(.group\/navigation-menu)[data-viewport=false] *){--tw-duration: .2s;transition-duration:.2s}@media (hover: hover){.peer-hover\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button):hover~*){color:var(--sidebar-accent-foreground)}}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:50%}.peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button)[data-active=true]~*){color:var(--sidebar-accent-foreground)}.peer-data-\[size\=default\]\/menu-button\:top-1\.5:is(:where(.peer\/menu-button)[data-size=default]~*){top:calc(var(--spacing) * 1.5)}.peer-data-\[size\=lg\]\/menu-button\:top-2\.5:is(:where(.peer\/menu-button)[data-size=lg]~*){top:calc(var(--spacing) * 2.5)}.peer-data-\[size\=sm\]\/menu-button\:top-1:is(:where(.peer\/menu-button)[data-size=sm]~*){top:calc(var(--spacing) * 1)}.selection\:bg-primary *::selection{background-color:var(--primary)}.selection\:bg-primary::selection{background-color:var(--primary)}.selection\:text-primary-foreground *::selection{color:var(--primary-foreground)}.selection\:text-primary-foreground::selection{color:var(--primary-foreground)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:calc(var(--spacing) * 7)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:calc(var(--spacing) * -2)}.after\:inset-y-0:after{content:var(--tw-content);inset-block:calc(var(--spacing) * 0)}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:w-1:after{content:var(--tw-content);width:calc(var(--spacing) * 1)}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.after\:-translate-x-1\/2:after{content:var(--tw-content);--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.group-data-\[collapsible\=offcanvas\]\:after\:left-full:is(:where(.group)[data-collapsible=offcanvas] *):after{content:var(--tw-content);left:100%}.first\:rounded-l-md:first-child{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.first\:border-l:first-child{border-left-style:var(--tw-border-style);border-left-width:1px}.last\:rounded-r-md:last-child{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0px}@media (hover: hover){.hover\:border-muted-foreground\/50:hover{border-color:var(--muted-foreground)}@supports (color: color-mix(in lab,red,red)){.hover\:border-muted-foreground\/50:hover{border-color:color-mix(in oklab,var(--muted-foreground) 50%,transparent)}}}@media (hover: hover){.hover\:bg-accent:hover{background-color:var(--accent)}}@media (hover: hover){.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}}@media (hover: hover){.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color: color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive) 90%,transparent)}}}@media (hover: hover){.hover\:bg-gray-700:hover{background-color:var(--color-gray-700)}}@media (hover: hover){.hover\:bg-green-700:hover{background-color:var(--color-green-700)}}@media (hover: hover){.hover\:bg-muted:hover{background-color:var(--muted)}}@media (hover: hover){.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color: color-mix(in lab,red,red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}}@media (hover: hover){.hover\:bg-orange-700:hover{background-color:var(--color-orange-700)}}@media (hover: hover){.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color: color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary) 90%,transparent)}}}@media (hover: hover){.hover\:bg-purple-700:hover{background-color:var(--color-purple-700)}}@media (hover: hover){.hover\:bg-red-700:hover{background-color:var(--color-red-700)}}@media (hover: hover){.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color: color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary) 80%,transparent)}}}@media (hover: hover){.hover\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}}@media (hover: hover){.hover\:bg-white:hover{background-color:var(--color-white)}}@media (hover: hover){.hover\:bg-yellow-700:hover{background-color:var(--color-yellow-700)}}@media (hover: hover){.hover\:from-purple-600:hover{--tw-gradient-from: var(--color-purple-600);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}}@media (hover: hover){.hover\:to-pink-600:hover{--tw-gradient-to: var(--color-pink-600);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}}@media (hover: hover){.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}}@media (hover: hover){.hover\:text-destructive:hover{color:var(--destructive)}}@media (hover: hover){.hover\:text-foreground:hover{color:var(--foreground)}}@media (hover: hover){.hover\:text-muted-foreground:hover{color:var(--muted-foreground)}}@media (hover: hover){.hover\:text-primary:hover{color:var(--primary)}}@media (hover: hover){.hover\:text-sidebar-accent-foreground:hover{color:var(--sidebar-accent-foreground)}}@media (hover: hover){.hover\:underline:hover{text-decoration-line:underline}}@media (hover: hover){.hover\:opacity-90:hover{opacity:90%}}@media (hover: hover){.hover\:opacity-100:hover{opacity:100%}}@media (hover: hover){.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow: 0 0 0 1px var(--tw-shadow-color, hsl(var(--sidebar-accent)));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@media (hover: hover){.hover\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@media (hover: hover){.hover\:ring-4:hover{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@media (hover: hover){.hover\:group-data-\[collapsible\=offcanvas\]\:bg-sidebar:hover:is(:where(.group)[data-collapsible=offcanvas] *){background-color:var(--sidebar)}}@media (hover: hover){.hover\:after\:bg-sidebar-border:hover:after{content:var(--tw-content);background-color:var(--sidebar-border)}}.focus\:z-10:focus{z-index:10}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus\:shadow-md:focus{--tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-2:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color: var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px;--tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style: none;outline-style:none}@media (forced-colors: active){.focus\:outline-hidden:focus{outline:2px solid transparent;outline-offset:2px}}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-4:focus-visible{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color: var(--destructive)}@supports (color: color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent)}}.focus-visible\:ring-green-500\/20:focus-visible{--tw-ring-color: color-mix(in srgb, oklch(72.3% .219 149.579) 20%, transparent)}@supports (color: color-mix(in lab,red,red)){.focus-visible\:ring-green-500\/20:focus-visible{--tw-ring-color: color-mix(in oklab, var(--color-green-500) 20%, transparent)}}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: var(--ring)}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color: var(--ring)}@supports (color: color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent)}}.focus-visible\:ring-yellow-500\/20:focus-visible{--tw-ring-color: color-mix(in srgb, oklch(79.5% .184 86.047) 20%, transparent)}@supports (color: color-mix(in lab,red,red)){.focus-visible\:ring-yellow-500\/20:focus-visible{--tw-ring-color: color-mix(in oklab, var(--color-yellow-500) 20%, transparent)}}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width: 1px;--tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px;--tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:outline-hidden:focus-visible{--tw-outline-style: none;outline-style:none}@media (forced-colors: active){.focus-visible\:outline-hidden:focus-visible{outline:2px solid transparent;outline-offset:2px}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.focus-visible\:outline-none:focus-visible{--tw-outline-style: none;outline-style:none}.active\:bg-sidebar-accent:active{background-color:var(--sidebar-accent)}.active\:text-sidebar-accent-foreground:active{color:var(--sidebar-accent-foreground)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:50%}:where(*[data-side=left]) .in-data-\[side\=left\]\:cursor-w-resize{cursor:w-resize}:where(*[data-side=right]) .in-data-\[side\=right\]\:cursor-e-resize{cursor:e-resize}.has-focus\:border-ring:has(*:focus){border-color:var(--ring)}.has-focus\:ring-\[3px\]:has(*:focus){--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.has-focus\:ring-ring\/50:has(*:focus){--tw-ring-color: var(--ring)}@supports (color: color-mix(in lab,red,red)){.has-focus\:ring-ring\/50:has(*:focus){--tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent)}}.has-disabled\:opacity-50:has(*:disabled){opacity:50%}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has(*[data-slot=card-action]){grid-template-columns:1fr auto}.has-data-\[variant\=inset\]\:bg-sidebar:has(*[data-variant=inset]){background-color:var(--sidebar)}.has-\[\>svg\]\:grid-cols-\[calc\(var\(--spacing\)\*4\)_1fr\]:has(>svg){grid-template-columns:calc(var(--spacing) * 4) 1fr}.has-\[\>svg\]\:gap-x-3:has(>svg){column-gap:calc(var(--spacing) * 3)}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing) * 2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing) * 3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing) * 4)}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:50%}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color: var(--destructive)}@supports (color: color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent)}}.aria-selected\:text-muted-foreground[aria-selected=true]{color:var(--muted-foreground)}.data-\[active\=true\]\:z-10[data-active=true]{z-index:10}.data-\[active\=true\]\:border-ring[data-active=true]{border-color:var(--ring)}.data-\[active\=true\]\:bg-accent\/50[data-active=true]{background-color:var(--accent)}@supports (color: color-mix(in lab,red,red)){.data-\[active\=true\]\:bg-accent\/50[data-active=true]{background-color:color-mix(in oklab,var(--accent) 50%,transparent)}}.data-\[active\=true\]\:bg-sidebar-accent[data-active=true]{background-color:var(--sidebar-accent)}.data-\[active\=true\]\:font-medium[data-active=true]{--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[active\=true\]\:text-accent-foreground[data-active=true]{color:var(--accent-foreground)}.data-\[active\=true\]\:text-sidebar-accent-foreground[data-active=true]{color:var(--sidebar-accent-foreground)}.data-\[active\=true\]\:ring-\[3px\][data-active=true]{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[active\=true\]\:ring-ring\/50[data-active=true]{--tw-ring-color: var(--ring)}@supports (color: color-mix(in lab,red,red)){.data-\[active\=true\]\:ring-ring\/50[data-active=true]{--tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent)}}@media (hover: hover){.data-\[active\=true\]\:hover\:bg-accent[data-active=true]:hover{background-color:var(--accent)}}.data-\[active\=true\]\:focus\:bg-accent[data-active=true]:focus{background-color:var(--accent)}.data-\[active\=true\]\:aria-invalid\:border-destructive[data-active=true][aria-invalid=true]{border-color:var(--destructive)}.data-\[active\=true\]\:aria-invalid\:ring-destructive\/20[data-active=true][aria-invalid=true]{--tw-ring-color: var(--destructive)}@supports (color: color-mix(in lab,red,red)){.data-\[active\=true\]\:aria-invalid\:ring-destructive\/20[data-active=true][aria-invalid=true]{--tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent)}}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:50%}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true]{pointer-events:none}.data-\[disabled\=true\]\:opacity-50[data-disabled=true]{opacity:50%}.data-\[empty\=true\]\:text-muted-foreground[data-empty=true]{color:var(--muted-foreground)}.data-\[error\=true\]\:text-destructive[data-error=true]{color:var(--destructive)}.data-\[inset\]\:pl-8[data-inset]{padding-left:calc(var(--spacing) * 8)}.data-\[motion\=from-end\]\:slide-in-from-right-52[data-motion=from-end]{--tw-enter-translate-x: calc(52*var(--spacing))}.data-\[motion\=from-start\]\:slide-in-from-left-52[data-motion=from-start]{--tw-enter-translate-x: calc(52*var(--spacing)*-1)}.data-\[motion\=to-end\]\:slide-out-to-right-52[data-motion=to-end]{--tw-exit-translate-x: calc(52*var(--spacing))}.data-\[motion\=to-start\]\:slide-out-to-left-52[data-motion=to-start]{--tw-exit-translate-x: calc(52*var(--spacing)*-1)}.data-\[motion\^\=from-\]\:animate-in[data-motion^=from-]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[motion\^\=from-\]\:fade-in[data-motion^=from-]{--tw-enter-opacity: 0}.data-\[motion\^\=to-\]\:animate-out[data-motion^=to-]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[motion\^\=to-\]\:fade-out[data-motion^=to-]{--tw-exit-opacity: 0}.data-\[orientation\=horizontal\]\:h-1\.5[data-orientation=horizontal]{height:calc(var(--spacing) * 1.5)}.data-\[orientation\=horizontal\]\:h-full[data-orientation=horizontal]{height:100%}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:min-h-44[data-orientation=vertical]{min-height:calc(var(--spacing) * 44)}.data-\[orientation\=vertical\]\:w-1\.5[data-orientation=vertical]{width:calc(var(--spacing) * 1.5)}.data-\[orientation\=vertical\]\:w-auto[data-orientation=vertical]{width:auto}.data-\[orientation\=vertical\]\:w-full[data-orientation=vertical]{width:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[orientation\=vertical\]\:flex-col[data-orientation=vertical]{flex-direction:column}.data-\[panel-group-direction\=vertical\]\:h-px[data-panel-group-direction=vertical]{height:1px}.data-\[panel-group-direction\=vertical\]\:w-full[data-panel-group-direction=vertical]{width:100%}.data-\[panel-group-direction\=vertical\]\:flex-col[data-panel-group-direction=vertical]{flex-direction:column}.data-\[panel-group-direction\=vertical\]\:after\:left-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);left:calc(var(--spacing) * 0)}.data-\[panel-group-direction\=vertical\]\:after\:h-1[data-panel-group-direction=vertical]:after{content:var(--tw-content);height:calc(var(--spacing) * 1)}.data-\[panel-group-direction\=vertical\]\:after\:w-full[data-panel-group-direction=vertical]:after{content:var(--tw-content);width:100%}.data-\[panel-group-direction\=vertical\]\:after\:translate-x-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-x: calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[panel-group-direction\=vertical\]\:after\:-translate-y-1\/2[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\[range-end\=true\]\:rounded-md[data-range-end=true]{border-radius:calc(var(--radius) - 2px)}.data-\[range-end\=true\]\:rounded-r-md[data-range-end=true]{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.data-\[range-end\=true\]\:bg-primary[data-range-end=true]{background-color:var(--primary)}.data-\[range-end\=true\]\:text-primary-foreground[data-range-end=true]{color:var(--primary-foreground)}.data-\[range-middle\=true\]\:rounded-none[data-range-middle=true]{border-radius:0}.data-\[range-middle\=true\]\:bg-accent[data-range-middle=true]{background-color:var(--accent)}.data-\[range-middle\=true\]\:text-accent-foreground[data-range-middle=true]{color:var(--accent-foreground)}.data-\[range-start\=true\]\:rounded-md[data-range-start=true]{border-radius:calc(var(--radius) - 2px)}.data-\[range-start\=true\]\:rounded-l-md[data-range-start=true]{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.data-\[range-start\=true\]\:bg-primary[data-range-start=true]{background-color:var(--primary)}.data-\[range-start\=true\]\:text-primary-foreground[data-range-start=true]{color:var(--primary-foreground)}.data-\[selected-single\=true\]\:bg-primary[data-selected-single=true]{background-color:var(--primary)}.data-\[selected-single\=true\]\:text-primary-foreground[data-selected-single=true]{color:var(--primary-foreground)}.data-\[selected\=true\]\:rounded-none[data-selected=true]{border-radius:0}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:var(--accent)}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:var(--accent-foreground)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y: calc(2*var(--spacing)*-1)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x: calc(2*var(--spacing))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x: calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y: calc(2*var(--spacing))}.data-\[size\=default\]\:h-9[data-size=default]{height:calc(var(--spacing) * 9)}.data-\[size\=sm\]\:h-8[data-size=sm]{height:calc(var(--spacing) * 8)}:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:var(--destructive)}@supports (color: color-mix(in lab,red,red)){:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:color-mix(in oklab,var(--destructive) 90%,transparent)}}:is(.\*\*\:data-\[slot\=command-input-wrapper\]\:h-12 *)[data-slot=command-input-wrapper]{height:calc(var(--spacing) * 12)}:is(.\*\*\:data-\[slot\=navigation-menu-link\]\:focus\:ring-0 *)[data-slot=navigation-menu-link]:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:is(.\*\*\:data-\[slot\=navigation-menu-link\]\:focus\:outline-none *)[data-slot=navigation-menu-link]:focus{--tw-outline-style: none;outline-style:none}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-2>*)[data-slot=select-value]{gap:calc(var(--spacing) * 2)}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:var(--background)}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[state\=checked\]\:translate-x-\[calc\(100\%-2px\)\][data-state=checked]{--tw-translate-x: calc(100% - 2px) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:border-primary[data-state=checked]{border-color:var(--primary)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--primary)}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:var(--primary-foreground)}.data-\[state\=closed\]\:animate-accordion-up[data-state=closed]{animation:accordion-up var(--tw-animation-duration,var(--tw-duration,.2s))ease-out}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:duration-300[data-state=closed]{--tw-duration: .3s;transition-duration:.3s}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity: 0 ;--tw-exit-opacity: 0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale: 95% ;--tw-exit-scale: .95}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y: 100%}.data-\[state\=closed\]\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x: -100%}.data-\[state\=closed\]\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x: 100%}.data-\[state\=closed\]\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y: -100%}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:animate-out:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:fade-out-0:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=closed]{--tw-exit-opacity: 0 ;--tw-exit-opacity: 0}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:zoom-out-95:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=closed]{--tw-exit-scale: 95% ;--tw-exit-scale: .95}.data-\[state\=hidden\]\:animate-out[data-state=hidden]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=hidden\]\:fade-out[data-state=hidden]{--tw-exit-opacity: 0}.data-\[state\=on\]\:bg-accent[data-state=on]{background-color:var(--accent)}.data-\[state\=on\]\:text-accent-foreground[data-state=on]{color:var(--accent-foreground)}.data-\[state\=open\]\:animate-accordion-down[data-state=open]{animation:accordion-down var(--tw-animation-duration,var(--tw-duration,.2s))ease-out}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:var(--accent)}.data-\[state\=open\]\:bg-accent\/50[data-state=open]{background-color:var(--accent)}@supports (color: color-mix(in lab,red,red)){.data-\[state\=open\]\:bg-accent\/50[data-state=open]{background-color:color-mix(in oklab,var(--accent) 50%,transparent)}}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:var(--secondary)}.data-\[state\=open\]\:bg-sidebar-accent[data-state=open]{background-color:var(--sidebar-accent)}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:var(--accent-foreground)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}.data-\[state\=open\]\:text-sidebar-accent-foreground[data-state=open]{color:var(--sidebar-accent-foreground)}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:100%}.data-\[state\=open\]\:duration-500[data-state=open]{--tw-duration: .5s;transition-duration:.5s}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity: 0 ;--tw-enter-opacity: 0}.data-\[state\=open\]\:zoom-in-90[data-state=open]{--tw-enter-scale: 90% ;--tw-enter-scale: .9}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale: 95% ;--tw-enter-scale: .95}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y: 100%}.data-\[state\=open\]\:slide-in-from-left[data-state=open]{--tw-enter-translate-x: -100%}.data-\[state\=open\]\:slide-in-from-right[data-state=open]{--tw-enter-translate-x: 100%}.data-\[state\=open\]\:slide-in-from-top[data-state=open]{--tw-enter-translate-y: -100%}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:animate-in:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:fade-in-0:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=open]{--tw-enter-opacity: 0 ;--tw-enter-opacity: 0}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:zoom-in-95:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=open]{--tw-enter-scale: 95% ;--tw-enter-scale: .95}@media (hover: hover){.data-\[state\=open\]\:hover\:bg-accent[data-state=open]:hover{background-color:var(--accent)}}@media (hover: hover){.data-\[state\=open\]\:hover\:bg-sidebar-accent[data-state=open]:hover{background-color:var(--sidebar-accent)}}@media (hover: hover){.data-\[state\=open\]\:hover\:text-sidebar-accent-foreground[data-state=open]:hover{color:var(--sidebar-accent-foreground)}}.data-\[state\=open\]\:focus\:bg-accent[data-state=open]:focus{background-color:var(--accent)}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x: calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:var(--input)}.data-\[state\=visible\]\:animate-in[data-state=visible]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=visible\]\:fade-in[data-state=visible]{--tw-enter-opacity: 0}.data-\[variant\=destructive\]\:text-destructive[data-variant=destructive]{color:var(--destructive)}.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color: color-mix(in lab,red,red)){.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--destructive) 10%,transparent)}}.data-\[variant\=destructive\]\:focus\:text-destructive[data-variant=destructive]:focus{color:var(--destructive)}.data-\[variant\=outline\]\:border-l-0[data-variant=outline]{border-left-style:var(--tw-border-style);border-left-width:0px}.data-\[variant\=outline\]\:shadow-xs[data-variant=outline]{--tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[variant\=outline\]\:first\:border-l[data-variant=outline]:first-child{border-left-style:var(--tw-border-style);border-left-width:1px}.data-\[vaul-drawer-direction\=bottom\]\:inset-x-0[data-vaul-drawer-direction=bottom]{inset-inline:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=bottom\]\:bottom-0[data-vaul-drawer-direction=bottom]{bottom:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=bottom\]\:mt-24[data-vaul-drawer-direction=bottom]{margin-top:calc(var(--spacing) * 24)}.data-\[vaul-drawer-direction\=bottom\]\:max-h-\[80vh\][data-vaul-drawer-direction=bottom]{max-height:80vh}.data-\[vaul-drawer-direction\=bottom\]\:rounded-t-lg[data-vaul-drawer-direction=bottom]{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.data-\[vaul-drawer-direction\=bottom\]\:border-t[data-vaul-drawer-direction=bottom]{border-top-style:var(--tw-border-style);border-top-width:1px}.data-\[vaul-drawer-direction\=left\]\:inset-y-0[data-vaul-drawer-direction=left]{inset-block:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=left\]\:left-0[data-vaul-drawer-direction=left]{left:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=left\]\:w-3\/4[data-vaul-drawer-direction=left]{width:75%}.data-\[vaul-drawer-direction\=left\]\:border-r[data-vaul-drawer-direction=left]{border-right-style:var(--tw-border-style);border-right-width:1px}.data-\[vaul-drawer-direction\=right\]\:inset-y-0[data-vaul-drawer-direction=right]{inset-block:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=right\]\:right-0[data-vaul-drawer-direction=right]{right:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=right\]\:w-3\/4[data-vaul-drawer-direction=right]{width:75%}.data-\[vaul-drawer-direction\=right\]\:border-l[data-vaul-drawer-direction=right]{border-left-style:var(--tw-border-style);border-left-width:1px}.data-\[vaul-drawer-direction\=top\]\:inset-x-0[data-vaul-drawer-direction=top]{inset-inline:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=top\]\:top-0[data-vaul-drawer-direction=top]{top:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=top\]\:mb-24[data-vaul-drawer-direction=top]{margin-bottom:calc(var(--spacing) * 24)}.data-\[vaul-drawer-direction\=top\]\:max-h-\[80vh\][data-vaul-drawer-direction=top]{max-height:80vh}.data-\[vaul-drawer-direction\=top\]\:rounded-b-lg[data-vaul-drawer-direction=top]{border-bottom-right-radius:var(--radius);border-bottom-left-radius:var(--radius)}.data-\[vaul-drawer-direction\=top\]\:border-b[data-vaul-drawer-direction=top]{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}@media (width >= 40rem){.sm\:block{display:block}}@media (width >= 40rem){.sm\:flex{display:flex}}@media (width >= 40rem){.sm\:w-auto{width:auto}}@media (width >= 40rem){.sm\:max-w-\[425px\]{max-width:425px}}@media (width >= 40rem){.sm\:max-w-lg{max-width:var(--container-lg)}}@media (width >= 40rem){.sm\:max-w-md{max-width:var(--container-md)}}@media (width >= 40rem){.sm\:max-w-sm{max-width:var(--container-sm)}}@media (width >= 40rem){.sm\:flex-row{flex-direction:row}}@media (width >= 40rem){.sm\:justify-end{justify-content:flex-end}}@media (width >= 40rem){.sm\:gap-2\.5{gap:calc(var(--spacing) * 2.5)}}@media (width >= 40rem){.sm\:pr-2\.5{padding-right:calc(var(--spacing) * 2.5)}}@media (width >= 40rem){.sm\:pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}}@media (width >= 40rem){.sm\:text-left{text-align:left}}@media (width >= 40rem){.data-\[vaul-drawer-direction\=left\]\:sm\:max-w-sm[data-vaul-drawer-direction=left]{max-width:var(--container-sm)}}@media (width >= 40rem){.data-\[vaul-drawer-direction\=right\]\:sm\:max-w-sm[data-vaul-drawer-direction=right]{max-width:var(--container-sm)}}@media (width >= 48rem){.md\:absolute{position:absolute}}@media (width >= 48rem){.md\:block{display:block}}@media (width >= 48rem){.md\:flex{display:flex}}@media (width >= 48rem){.md\:min-h-min{min-height:min-content}}@media (width >= 48rem){.md\:w-\[400px\]{width:400px}}@media (width >= 48rem){.md\:w-\[500px\]{width:500px}}@media (width >= 48rem){.md\:w-\[var\(--radix-navigation-menu-viewport-width\)\]{width:var(--radix-navigation-menu-viewport-width)}}@media (width >= 48rem){.md\:w-auto{width:auto}}@media (width >= 48rem){.md\:basis-1\/2{flex-basis:50%}}@media (width >= 48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width >= 48rem){.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width >= 48rem){.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (width >= 48rem){.md\:flex-row{flex-direction:row}}@media (width >= 48rem){.md\:gap-1\.5{gap:calc(var(--spacing) * 1.5)}}@media (width >= 48rem){.md\:text-left{text-align:left}}@media (width >= 48rem){.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height))}}@media (width >= 48rem){.md\:opacity-0{opacity:0%}}@media (width >= 48rem){.md\:peer-data-\[variant\=inset\]\:m-2:is(:where(.peer)[data-variant=inset]~*){margin:calc(var(--spacing) * 2)}}@media (width >= 48rem){.md\:peer-data-\[variant\=inset\]\:ml-0:is(:where(.peer)[data-variant=inset]~*){margin-left:calc(var(--spacing) * 0)}}@media (width >= 48rem){.md\:peer-data-\[variant\=inset\]\:rounded-xl:is(:where(.peer)[data-variant=inset]~*){border-radius:calc(var(--radius) + 4px)}}@media (width >= 48rem){.md\:peer-data-\[variant\=inset\]\:shadow-sm:is(:where(.peer)[data-variant=inset]~*){--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@media (width >= 48rem){.md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ml-2:is(:where(.peer)[data-variant=inset]~*):is(:where(.peer)[data-state=collapsed]~*){margin-left:calc(var(--spacing) * 2)}}@media (width >= 48rem){.md\:after\:hidden:after{content:var(--tw-content);display:none}}@media (width >= 64rem){.lg\:w-\[500px\]{width:500px}}@media (width >= 64rem){.lg\:w-\[600px\]{width:600px}}@media (width >= 64rem){.lg\:basis-1\/3{flex-basis:calc(1/3 * 100%)}}@media (width >= 64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width >= 64rem){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width >= 64rem){.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (width >= 64rem){.lg\:grid-cols-\[\.75fr_1fr\]{grid-template-columns:.75fr 1fr}}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-destructive\/60:is(.dark *){background-color:var(--destructive)}@supports (color: color-mix(in lab,red,red)){.dark\:bg-destructive\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive) 60%,transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color: color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.dark\:bg-slate-800:is(.dark *){background-color:var(--color-slate-800)}.dark\:bg-slate-900:is(.dark *){background-color:var(--color-slate-900)}.dark\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}@media (hover: hover){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color: color-mix(in lab,red,red)){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent) 50%,transparent)}}}@media (hover: hover){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color: color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input) 50%,transparent)}}}@media (hover: hover){.dark\:hover\:text-accent-foreground:is(.dark *):hover{color:var(--accent-foreground)}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color: var(--destructive)}@supports (color: color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color: var(--destructive)}@supports (color: color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:data-\[active\=true\]\:aria-invalid\:ring-destructive\/40:is(.dark *)[data-active=true][aria-invalid=true]{--tw-ring-color: var(--destructive)}@supports (color: color-mix(in lab,red,red)){.dark\:data-\[active\=true\]\:aria-invalid\:ring-destructive\/40:is(.dark *)[data-active=true][aria-invalid=true]{--tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:data-\[state\=active\]\:border-input:is(.dark *)[data-state=active]{border-color:var(--input)}.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:var(--input)}@supports (color: color-mix(in lab,red,red)){.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.dark\:data-\[state\=active\]\:text-foreground:is(.dark *)[data-state=active]{color:var(--foreground)}.dark\:data-\[state\=checked\]\:bg-primary:is(.dark *)[data-state=checked]{background-color:var(--primary)}.dark\:data-\[state\=checked\]\:bg-primary-foreground:is(.dark *)[data-state=checked]{background-color:var(--primary-foreground)}.dark\:data-\[state\=unchecked\]\:bg-foreground:is(.dark *)[data-state=unchecked]{background-color:var(--foreground)}.dark\:data-\[state\=unchecked\]\:bg-input\/80:is(.dark *)[data-state=unchecked]{background-color:var(--input)}@supports (color: color-mix(in lab,red,red)){.dark\:data-\[state\=unchecked\]\:bg-input\/80:is(.dark *)[data-state=unchecked]{background-color:color-mix(in oklab,var(--input) 80%,transparent)}}.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color: color-mix(in lab,red,red)){.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.\[\&_\.recharts-cartesian-axis-tick_text\]\:fill-muted-foreground .recharts-cartesian-axis-tick text{fill:var(--muted-foreground)}.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke="#ccc"]{stroke:var(--border)}@supports (color: color-mix(in lab,red,red)){.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke="#ccc"]{stroke:color-mix(in oklab,var(--border) 50%,transparent)}}.\[\&_\.recharts-curve\.recharts-tooltip-cursor\]\:stroke-border .recharts-curve.recharts-tooltip-cursor{stroke:var(--border)}.\[\&_\.recharts-dot\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-dot[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-layer\]\:outline-hidden .recharts-layer{--tw-outline-style: none;outline-style:none}@media (forced-colors: active){.\[\&_\.recharts-layer\]\:outline-hidden .recharts-layer{outline:2px solid transparent;outline-offset:2px}}.\[\&_\.recharts-polar-grid_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-polar-grid [stroke="#ccc"]{stroke:var(--border)}.\[\&_\.recharts-radial-bar-background-sector\]\:fill-muted .recharts-radial-bar-background-sector{fill:var(--muted)}.\[\&_\.recharts-rectangle\.recharts-tooltip-cursor\]\:fill-muted .recharts-rectangle.recharts-tooltip-cursor{fill:var(--muted)}.\[\&_\.recharts-reference-line_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-reference-line [stroke="#ccc"]{stroke:var(--border)}.\[\&_\.recharts-sector\]\:outline-hidden .recharts-sector{--tw-outline-style: none;outline-style:none}@media (forced-colors: active){.\[\&_\.recharts-sector\]\:outline-hidden .recharts-sector{outline:2px solid transparent;outline-offset:2px}}.\[\&_\.recharts-sector\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-sector[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-surface\]\:outline-hidden .recharts-surface{--tw-outline-style: none;outline-style:none}@media (forced-colors: active){.\[\&_\.recharts-surface\]\:outline-hidden .recharts-surface{outline:2px solid transparent;outline-offset:2px}}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-inline:calc(var(--spacing) * 2)}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-block:calc(var(--spacing) * 1.5)}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height))}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium)}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:var(--muted-foreground)}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-inline:calc(var(--spacing) * 2)}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:calc(var(--spacing) * 0)}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:calc(var(--spacing) * 5)}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:calc(var(--spacing) * 5)}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:calc(var(--spacing) * 12)}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-inline:calc(var(--spacing) * 2)}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-block:calc(var(--spacing) * 3)}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:calc(var(--spacing) * 5)}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:calc(var(--spacing) * 5)}.\[\&_p\]\:leading-relaxed p{--tw-leading: var(--leading-relaxed);line-height:var(--leading-relaxed)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:var(--muted-foreground)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0px}.\[\&\:\:-webkit-calendar-picker-indicator\]\:hidden::-webkit-calendar-picker-indicator{display:none}.\[\&\:\:-webkit-calendar-picker-indicator\]\:appearance-none::-webkit-calendar-picker-indicator{appearance:none}.\[\&\:first-child\[data-selected\=true\]_button\]\:rounded-l-md:first-child[data-selected=true] button{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing) * 0)}.\[\.border-b\]\:pb-6:is(.border-b){padding-bottom:calc(var(--spacing) * 6)}.\[\.border-t\]\:pt-6:is(.border-t){padding-top:calc(var(--spacing) * 6)}:is(.rtl\:\*\*\:\[\.rdp-button\\_next\>svg\]\:rotate-180:where(:dir(rtl),[dir=rtl],[dir=rtl] *) *):is(.rdp-button_next>svg){rotate:180deg}:is(.rtl\:\*\*\:\[\.rdp-button\\_previous\>svg\]\:rotate-180:where(:dir(rtl),[dir=rtl],[dir=rtl] *) *):is(.rdp-button_previous>svg){rotate:180deg}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing) * 2)}:is(.data-\[variant\=destructive\]\:\*\:\[svg\]\:\!text-destructive[data-variant=destructive]>*):is(svg){color:var(--destructive)!important}.\[\&\:last-child\[data-selected\=true\]_button\]\:rounded-r-md:last-child[data-selected=true] button{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y: 2px;translate:var(--tw-translate-x) var(--tw-translate-y)}.\[\&\>button\]\:hidden>button{display:none}.\[\&\>div\]\:bg-blue-500>div{background-color:var(--color-blue-500)}.\[\&\>div\]\:bg-green-500>div{background-color:var(--color-green-500)}.\[\&\>div\]\:bg-orange-500>div{background-color:var(--color-orange-500)}.\[\&\>div\]\:bg-red-500>div{background-color:var(--color-red-500)}.\[\&\>div\]\:bg-yellow-500>div{background-color:var(--color-yellow-500)}.\[\&\>div\]\:bg-gradient-to-r>div{--tw-gradient-position: to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.\[\&\>div\]\:from-purple-500>div{--tw-gradient-from: var(--color-purple-500);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.\[\&\>div\]\:to-pink-500>div{--tw-gradient-to: var(--color-pink-500);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.\[\&\>span\]\:text-xs>span{font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height))}.\[\&\>span\]\:opacity-70>span{opacity:70%}.\[\&\>span\:last-child\]\:truncate>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&\>svg\]\:size-3\.5>svg{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>svg\]\:h-2\.5>svg{height:calc(var(--spacing) * 2.5)}.\[\&\>svg\]\:h-3>svg{height:calc(var(--spacing) * 3)}.\[\&\>svg\]\:w-2\.5>svg{width:calc(var(--spacing) * 2.5)}.\[\&\>svg\]\:w-3>svg{width:calc(var(--spacing) * 3)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:translate-y-0\.5>svg{--tw-translate-y: calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.\[\&\>svg\]\:text-current>svg{color:currentcolor}.\[\&\>svg\]\:text-muted-foreground>svg{color:var(--muted-foreground)}.\[\&\>svg\]\:text-sidebar-accent-foreground>svg{color:var(--sidebar-accent-foreground)}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0px}.\[\&\[data-panel-group-direction\=vertical\]\>div\]\:rotate-90[data-panel-group-direction=vertical]>div{rotate:90deg}.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{rotate:180deg}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:calc(var(--spacing) * -2)}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:calc(var(--spacing) * -2)}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}[data-slot=card-content] .\[\[data-slot\=card-content\]_\&\]\:bg-transparent{background-color:transparent}[data-slot=popover-content] .\[\[data-slot\=popover-content\]_\&\]\:bg-transparent{background-color:transparent}@media (hover: hover){a.\[a\&\]\:hover\:bg-accent:hover{background-color:var(--accent)}}@media (hover: hover){a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color: color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive) 90%,transparent)}}}@media (hover: hover){a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color: color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary) 90%,transparent)}}}@media (hover: hover){a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:var(--secondary)}@supports (color: color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:color-mix(in oklab,var(--secondary) 90%,transparent)}}}@media (hover: hover){a.\[a\&\]\:hover\:text-accent-foreground:hover{color:var(--accent-foreground)}}}@property --tw-animation-delay{syntax: "*"; inherits: false; initial-value: 0s;}@property --tw-animation-direction{syntax: "*"; inherits: false; initial-value: normal;}@property --tw-animation-duration{syntax: "*"; inherits: false;}@property --tw-animation-fill-mode{syntax: "*"; inherits: false; initial-value: none;}@property --tw-animation-iteration-count{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-enter-opacity{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-enter-rotate{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-enter-scale{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-enter-translate-x{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-enter-translate-y{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-exit-opacity{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-exit-rotate{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-exit-scale{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-exit-translate-x{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-exit-translate-y{syntax: "*"; inherits: false; initial-value: 0;}:root{--background: oklch(1 0 0);--foreground: oklch(.145 0 0);--card: oklch(1 0 0);--card-foreground: oklch(.145 0 0);--popover: oklch(1 0 0);--popover-foreground: oklch(.145 0 0);--primary: oklch(67.35% .153 159.64);--primary-foreground: oklch(.985 0 0);--secondary: oklch(.97 0 0);--secondary-foreground: oklch(.205 0 0);--muted: oklch(.97 0 0);--muted-foreground: oklch(.556 0 0);--accent: oklch(.97 0 0);--accent-foreground: oklch(.205 0 0);--destructive: oklch(.577 .245 27.325);--destructive-foreground: oklch(.577 .245 27.325);--border: oklch(.922 0 0);--input: oklch(.922 0 0);--ring: oklch(.708 0 0);--chart-1: oklch(.646 .222 41.116);--chart-2: oklch(.6 .118 184.704);--chart-3: oklch(.398 .07 227.392);--chart-4: oklch(.828 .189 84.429);--chart-5: oklch(.769 .188 70.08);--radius: .625rem;--sidebar: oklch(.985 0 0);--sidebar-foreground: oklch(.145 0 0);--sidebar-primary: oklch(.205 0 0);--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.97 0 0);--sidebar-accent-foreground: oklch(.205 0 0);--sidebar-border: oklch(.922 0 0);--sidebar-ring: oklch(.708 0 0)}.dark{--background: oklch(.145 0 0);--foreground: oklch(.985 0 0);--card: oklch(.145 0 0);--card-foreground: oklch(.985 0 0);--popover: oklch(.145 0 0);--popover-foreground: oklch(.985 0 0);--primary: oklch(88.18% .202 159.34);--primary-foreground: oklch(.205 0 0);--secondary: oklch(.269 0 0);--secondary-foreground: oklch(.985 0 0);--muted: oklch(.269 0 0);--muted-foreground: oklch(.708 0 0);--accent: oklch(.269 0 0);--accent-foreground: oklch(.985 0 0);--destructive: oklch(.396 .141 25.723);--destructive-foreground: oklch(.637 .237 25.331);--border: oklch(.269 0 0);--input: oklch(.269 0 0);--ring: oklch(.439 0 0);--chart-1: oklch(.488 .243 264.376);--chart-2: oklch(.696 .17 162.48);--chart-3: oklch(.769 .188 70.08);--chart-4: oklch(.627 .265 303.9);--chart-5: oklch(.645 .246 16.439);--sidebar: oklch(.205 0 0);--sidebar-foreground: oklch(.985 0 0);--sidebar-primary: oklch(.488 .243 264.376);--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.269 0 0);--sidebar-accent-foreground: oklch(.985 0 0);--sidebar-border: oklch(.269 0 0);--sidebar-ring: oklch(.439 0 0)}@layer base{*{border-color:var(--border);outline-color:var(--ring)}@supports (color: color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring) 50%,transparent)}}body{background-color:var(--background);color:var(--foreground)}}@property --tw-translate-x{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-y{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-z{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-rotate-x{syntax: "*"; inherits: false;}@property --tw-rotate-y{syntax: "*"; inherits: false;}@property --tw-rotate-z{syntax: "*"; inherits: false;}@property --tw-skew-x{syntax: "*"; inherits: false;}@property --tw-skew-y{syntax: "*"; inherits: false;}@property --tw-space-y-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-space-x-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-border-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-gradient-position{syntax: "*"; inherits: false;}@property --tw-gradient-from{syntax: ""; inherits: false; initial-value: #0000;}@property --tw-gradient-via{syntax: ""; inherits: false; initial-value: #0000;}@property --tw-gradient-to{syntax: ""; inherits: false; initial-value: #0000;}@property --tw-gradient-stops{syntax: "*"; inherits: false;}@property --tw-gradient-via-stops{syntax: "*"; inherits: false;}@property --tw-gradient-from-position{syntax: ""; inherits: false; initial-value: 0%;}@property --tw-gradient-via-position{syntax: ""; inherits: false; initial-value: 50%;}@property --tw-gradient-to-position{syntax: ""; inherits: false; initial-value: 100%;}@property --tw-leading{syntax: "*"; inherits: false;}@property --tw-font-weight{syntax: "*"; inherits: false;}@property --tw-tracking{syntax: "*"; inherits: false;}@property --tw-ordinal{syntax: "*"; inherits: false;}@property --tw-slashed-zero{syntax: "*"; inherits: false;}@property --tw-numeric-figure{syntax: "*"; inherits: false;}@property --tw-numeric-spacing{syntax: "*"; inherits: false;}@property --tw-numeric-fraction{syntax: "*"; inherits: false;}@property --tw-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: "*"; inherits: false;}@property --tw-shadow-alpha{syntax: ""; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: "*"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: ""; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: "*"; inherits: false;}@property --tw-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: "*"; inherits: false;}@property --tw-inset-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: "*"; inherits: false;}@property --tw-ring-offset-width{syntax: ""; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: "*"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-outline-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-duration{syntax: "*"; inherits: false;}@property --tw-ease{syntax: "*"; inherits: false;}@property --tw-content{syntax: "*"; initial-value: ""; inherits: false;}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0))}}@keyframes accordion-down{0%{height:0}to{height:var(--radix-accordion-content-height,var(--bits-accordion-content-height,var(--reka-accordion-content-height,var(--kb-accordion-content-height,auto))))}}@keyframes accordion-up{0%{height:var(--radix-accordion-content-height,var(--bits-accordion-content-height,var(--reka-accordion-content-height,var(--kb-accordion-content-height,auto))))}to{height:0}}@keyframes caret-blink{0%,70%,to{opacity:1}20%,50%{opacity:0}}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x: 0;--tw-translate-y: 0;--tw-translate-z: 0;--tw-rotate-x: initial;--tw-rotate-y: initial;--tw-rotate-z: initial;--tw-skew-x: initial;--tw-skew-y: initial;--tw-space-y-reverse: 0;--tw-space-x-reverse: 0;--tw-border-style: solid;--tw-gradient-position: initial;--tw-gradient-from: #0000;--tw-gradient-via: #0000;--tw-gradient-to: #0000;--tw-gradient-stops: initial;--tw-gradient-via-stops: initial;--tw-gradient-from-position: 0%;--tw-gradient-via-position: 50%;--tw-gradient-to-position: 100%;--tw-leading: initial;--tw-font-weight: initial;--tw-tracking: initial;--tw-ordinal: initial;--tw-slashed-zero: initial;--tw-numeric-figure: initial;--tw-numeric-spacing: initial;--tw-numeric-fraction: initial;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-outline-style: solid;--tw-duration: initial;--tw-ease: initial;--tw-content: "";--tw-animation-delay: 0s;--tw-animation-direction: normal;--tw-animation-duration: initial;--tw-animation-fill-mode: none;--tw-animation-iteration-count: 1;--tw-enter-opacity: 1;--tw-enter-rotate: 0;--tw-enter-scale: 1;--tw-enter-translate-x: 0;--tw-enter-translate-y: 0;--tw-exit-opacity: 1;--tw-exit-rotate: 0;--tw-exit-scale: 1;--tw-exit-translate-x: 0;--tw-exit-translate-y: 0}}}/*! tailwindcss v4.1.10 | MIT License | https://tailwindcss.com *//*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-content:"";--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-200:oklch(88.5% .062 18.334);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-yellow-50:oklch(98.7% .026 102.212);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-950:oklch(28.6% .066 53.813);--color-green-500:oklch(72.3% .219 149.579);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-rose-600:oklch(58.6% .253 17.585);--color-rose-700:oklch(51.4% .222 16.935);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-md:28rem;--container-lg:32rem;--container-2xl:42rem;--container-4xl:56rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-widest:.1em;--radius-xs:.125rem;--radius-3xl:1.5rem;--animate-spin:spin 1s linear infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring) 50%,transparent)}}html,body{height:100%;margin:0;padding:0;overflow:hidden}body{background-color:var(--background);color:var(--foreground);font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif}#root{height:100%}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0;border-radius:4px}::-webkit-scrollbar-thumb{background-color:#ffffff26;background-clip:content-box;border:2px solid #0000;border-radius:4px;transition:background-color .2s}::-webkit-scrollbar-thumb:hover{background-color:#ffffff40}*{scrollbar-width:thin;scrollbar-color:#ffffff26 transparent}@media (max-width:768px){*{scrollbar-width:none}::-webkit-scrollbar{display:none}}}@layer components;@layer utilities{.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-4{top:calc(var(--spacing) * 4)}.top-\[50\%\]{top:50%}.right-0{right:calc(var(--spacing) * 0)}.right-4{right:calc(var(--spacing) * 4)}.-bottom-4{bottom:calc(var(--spacing) * -4)}.left-0{left:calc(var(--spacing) * 0)}.left-3{left:calc(var(--spacing) * 3)}.left-\[50\%\]{left:50%}.z-10{z-index:10}.z-50{z-index:50}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.-m-2{margin:calc(var(--spacing) * -2)}.m-4{margin:calc(var(--spacing) * 4)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-auto{margin-inline:auto}.my-2{margin-block:calc(var(--spacing) * 2)}.my-4{margin-block:calc(var(--spacing) * 4)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-12{margin-top:calc(var(--spacing) * 12)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-16{margin-right:calc(var(--spacing) * 16)}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.mb-12{margin-bottom:calc(var(--spacing) * 12)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-7{margin-left:calc(var(--spacing) * 7)}.ml-auto{margin-left:auto}.box-border{box-sizing:border-box}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.field-sizing-content{field-sizing:content}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-16{height:calc(var(--spacing) * 16)}.h-24{height:calc(var(--spacing) * 24)}.h-56{height:calc(var(--spacing) * 56)}.h-64{height:calc(var(--spacing) * 64)}.h-\[1\.2rem\]{height:1.2rem}.h-\[1px\]{height:1px}.h-\[85vh\]{height:85vh}.h-auto{height:auto}.h-full{height:100%}.h-screen{height:100vh}.max-h-32{max-height:calc(var(--spacing) * 32)}.max-h-\[200px\]{max-height:200px}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-9{min-height:calc(var(--spacing) * 9)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-\[40vh\]{min-height:40vh}.min-h-screen{min-height:100vh}.w-1{width:calc(var(--spacing) * 1)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-80{width:calc(var(--spacing) * 80)}.w-\[1\.2rem\]{width:1.2rem}.w-\[300px\]{width:300px}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-32{max-width:calc(var(--spacing) * 32)}.max-w-40{max-width:calc(var(--spacing) * 40)}.max-w-\[60\%\]{max-width:60%}.max-w-\[64rem\]{max-width:64rem}.max-w-\[70\%\]{max-width:70%}.max-w-\[320px\]{max-width:320px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[80px\]{min-width:80px}.min-w-\[180px\]{min-width:180px}.min-w-\[280px\]{min-width:280px}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-0{--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.rotate-0{rotate:0deg}.rotate-90{rotate:90deg}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize-none{resize:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-1{gap:calc(var(--spacing) * 1)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 3) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-x-reverse)))}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-\[16px\]{border-radius:16px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-l-lg{border-top-left-radius:var(--radius);border-bottom-left-radius:var(--radius)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.border-black{border-color:var(--color-black)}.border-black\/10{border-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.border-black\/10{border-color:color-mix(in oklab,var(--color-black) 10%,transparent)}}.border-border,.border-border\/50{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.border-border\/50{border-color:color-mix(in oklab,var(--border) 50%,transparent)}}.border-gray-300{border-color:var(--color-gray-300)}.border-input{border-color:var(--input)}.border-muted{border-color:var(--muted)}.border-sidebar-border{border-color:var(--sidebar-border)}.border-l-primary{border-left-color:var(--primary)}.bg-\[\#b2ece0\]{background-color:#b2ece0}.bg-\[\#c8fff2\]{background-color:#c8fff2}.bg-\[\#d2e2e2\]{background-color:#d2e2e2}.bg-\[\#e0f0f0\]{background-color:#e0f0f0}.bg-background,.bg-background\/80{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.bg-background\/80{background-color:color-mix(in oklab,var(--background) 80%,transparent)}}.bg-background\/95{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.bg-background\/95{background-color:color-mix(in oklab,var(--background) 95%,transparent)}}.bg-black\/5{background-color:#0000000d}@supports (color:color-mix(in lab,red,red)){.bg-black\/5{background-color:color-mix(in oklab,var(--color-black) 5%,transparent)}}.bg-black\/10{background-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.bg-black\/10{background-color:color-mix(in oklab,var(--color-black) 10%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-700{background-color:var(--color-blue-700)}.bg-card,.bg-card\/50{background-color:var(--card)}@supports (color:color-mix(in lab,red,red)){.bg-card\/50{background-color:color-mix(in oklab,var(--card) 50%,transparent)}}.bg-gray-100{background-color:var(--color-gray-100)}.bg-green-500\/10{background-color:#00c7581a}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/10{background-color:color-mix(in oklab,var(--color-green-500) 10%,transparent)}}.bg-muted,.bg-muted\/10{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/10{background-color:color-mix(in oklab,var(--muted) 10%,transparent)}}.bg-muted\/30{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/30{background-color:color-mix(in oklab,var(--muted) 30%,transparent)}}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.bg-primary,.bg-primary\/10{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/10{background-color:color-mix(in oklab,var(--primary) 10%,transparent)}}.bg-primary\/20{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/20{background-color:color-mix(in oklab,var(--primary) 20%,transparent)}}.bg-primary\/30{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/30{background-color:color-mix(in oklab,var(--primary) 30%,transparent)}}.bg-red-50{background-color:var(--color-red-50)}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/10{background-color:color-mix(in oklab,var(--color-red-500) 10%,transparent)}}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-accent\/50{background-color:var(--sidebar-accent)}@supports (color:color-mix(in lab,red,red)){.bg-sidebar-accent\/50{background-color:color-mix(in oklab,var(--sidebar-accent) 50%,transparent)}}.bg-sidebar-border{background-color:var(--sidebar-border)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-yellow-50{background-color:var(--color-yellow-50)}.bg-yellow-500\/10{background-color:#edb2001a}@supports (color:color-mix(in lab,red,red)){.bg-yellow-500\/10{background-color:color-mix(in oklab,var(--color-yellow-500) 10%,transparent)}}.bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-primary\/20{--tw-gradient-from:var(--primary)}@supports (color:color-mix(in lab,red,red)){.from-primary\/20{--tw-gradient-from:color-mix(in oklab, var(--primary) 20%, transparent)}}.from-primary\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-background\/95{--tw-gradient-via:var(--background)}@supports (color:color-mix(in lab,red,red)){.via-background\/95{--tw-gradient-via:color-mix(in oklab, var(--background) 95%, transparent)}}.via-background\/95{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-background{--tw-gradient-to:var(--background);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.fill-gray-100{fill:var(--color-gray-100)}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-\[0\.375rem_1rem_0_1rem\]{padding:.375rem 1rem 0}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-16{padding-block:calc(var(--spacing) * 16)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-9{padding-left:calc(var(--spacing) * 9)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[11px\]{font-size:11px}.leading-none{--tw-leading:1;line-height:1}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-wrap{text-wrap:wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.overflow-ellipsis,.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[\#008069\]{color:#008069}.text-\[\#b03f3f\]{color:#b03f3f}.text-black{color:var(--color-black)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-destructive{color:var(--destructive)}.text-foreground{color:var(--foreground)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-900{color:var(--color-gray-900)}.text-green-500{color:var(--color-green-500)}.text-muted-foreground,.text-muted-foreground\/40{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/40{color:color-mix(in oklab,var(--muted-foreground) 40%,transparent)}}.text-muted-foreground\/50{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/50{color:color-mix(in oklab,var(--muted-foreground) 50%,transparent)}}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-red-500{color:var(--color-red-500)}.text-red-800{color:var(--color-red-800)}.text-rose-600{color:var(--color-rose-600)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-foreground,.text-sidebar-foreground\/60{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab,red,red)){.text-sidebar-foreground\/60{color:color-mix(in oklab,var(--sidebar-foreground) 60%,transparent)}}.text-sidebar-foreground\/70{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab,red,red)){.text-sidebar-foreground\/70{color:color-mix(in oklab,var(--sidebar-foreground) 70%,transparent)}}.text-yellow-500{color:var(--color-yellow-500)}.underline{text-decoration-line:underline}.caret-transparent{caret-color:#0000}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-muted-foreground{--tw-ring-color:var(--muted-foreground)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.outline-none{--tw-outline-style:none;outline-style:none}.paused{animation-play-state:paused}.running{animation-play-state:running}@media (hover:hover){.group-hover\:visible:is(:where(.group):hover *){visibility:visible}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.selection\:bg-primary ::selection{background-color:var(--primary)}.selection\:bg-primary::selection{background-color:var(--primary)}.selection\:text-primary-foreground ::selection{color:var(--primary-foreground)}.selection\:text-primary-foreground::selection{color:var(--primary-foreground)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:calc(var(--spacing) * 7)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:bottom-\[12px\]:after{content:var(--tw-content);bottom:12px}.after\:border-\[8px\]:after{content:var(--tw-content);border-style:var(--tw-border-style);border-width:8px}.after\:border-solid:after{content:var(--tw-content);--tw-border-style:solid;border-style:solid}@media (hover:hover){.hover\:bg-\[\#a4ecde\]:hover{background-color:#a4ecde}.hover\:bg-\[\#b2ece0\]:hover{background-color:#b2ece0}.hover\:bg-\[\#c2d2d2\]:hover{background-color:#c2d2d2}.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-black\/10:hover{background-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-black\/10:hover{background-color:color-mix(in oklab,var(--color-black) 10%,transparent)}}.hover\:bg-green-500\/20:hover{background-color:#00c75833}@supports (color:color-mix(in lab,red,red)){.hover\:bg-green-500\/20:hover{background-color:color-mix(in oklab,var(--color-green-500) 20%,transparent)}}.hover\:bg-primary\/85:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/85:hover{background-color:color-mix(in oklab,var(--primary) 85%,transparent)}}.hover\:bg-red-500\/10:hover{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/10:hover{background-color:color-mix(in oklab,var(--color-red-500) 10%,transparent)}}.hover\:bg-red-500\/20:hover{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/20:hover{background-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.hover\:bg-sidebar-accent:hover,.hover\:bg-sidebar-accent\/30:hover{background-color:var(--sidebar-accent)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-sidebar-accent\/30:hover{background-color:color-mix(in oklab,var(--sidebar-accent) 30%,transparent)}}.hover\:bg-yellow-500\/20:hover{background-color:#edb20033}@supports (color:color-mix(in lab,red,red)){.hover\:bg-yellow-500\/20:hover{background-color:color-mix(in oklab,var(--color-yellow-500) 20%,transparent)}}.hover\:stroke-destructive:hover{stroke:var(--destructive)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-primary:hover{color:var(--primary)}.hover\:text-red-400:hover{color:var(--color-red-400)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-black\/10:hover{--tw-shadow-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.hover\:shadow-black\/10:hover{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 10%, transparent) var(--tw-shadow-alpha), transparent)}}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible,.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.focus-visible\:ring-transparent:focus-visible{--tw-ring-color:transparent}.focus-visible\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:ring-offset-transparent:focus-visible{--tw-ring-offset-color:transparent}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-muted:disabled{background-color:var(--muted)}.disabled\:text-muted-foreground:disabled{color:var(--muted-foreground)}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.data-\[state\=active\]\:bg-primary[data-state=active]{background-color:var(--primary)}.data-\[state\=active\]\:text-primary-foreground[data-state=active]{color:var(--primary-foreground)}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:rotate-180[data-state=open]{rotate:180deg}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:var(--accent)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}@media (min-width:40rem){.sm\:inline{display:inline}.sm\:max-h-\[600px\]{max-height:600px}.sm\:w-auto{width:auto}.sm\:max-w-\[650px\]{max-width:650px}.sm\:max-w-\[740px\]{max-width:740px}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-md{max-width:var(--container-md)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-\[10rem_1fr_10rem\]{grid-template-columns:10rem 1fr 10rem}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:gap-0{gap:calc(var(--spacing) * 0)}.sm\:text-left{text-align:left}}@media (min-width:48rem){.md\:flex{display:flex}.md\:inline{display:inline}.md\:w-80{width:calc(var(--spacing) * 80)}.md\:flex-shrink-0{flex-shrink:0}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:items-start{align-items:flex-start}.md\:justify-between{justify-content:space-between}.md\:gap-8{gap:calc(var(--spacing) * 8)}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media (min-width:64rem){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width:80rem){.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.dark\:scale-0:is(.dark *){--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x) var(--tw-scale-y)}.dark\:scale-100:is(.dark *){--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.dark\:-rotate-90:is(.dark *){rotate:-90deg}.dark\:rotate-0:is(.dark *){rotate:0deg}.dark\:border-gray-700:is(.dark *){border-color:var(--color-gray-700)}.dark\:border-white\/10:is(.dark *){border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.dark\:border-white\/10:is(.dark *){border-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.dark\:bg-\[\#0b332a\]:is(.dark *){background-color:#0b332a}.dark\:bg-\[\#0f1413\]:is(.dark *){background-color:#0f1413}.dark\:bg-\[\#1d2724\]:is(.dark *){background-color:#1d2724}.dark\:bg-\[\#082720\]:is(.dark *){background-color:#082720}.dark\:bg-blue-300:is(.dark *){background-color:var(--color-blue-300)}.dark\:bg-gray-800:is(.dark *){background-color:var(--color-gray-800)}.dark\:bg-gray-900:is(.dark *){background-color:var(--color-gray-900)}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.dark\:bg-red-900:is(.dark *){background-color:var(--color-red-900)}.dark\:bg-white\/5:is(.dark *){background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-white\/5:is(.dark *){background-color:color-mix(in oklab,var(--color-white) 5%,transparent)}}.dark\:bg-white\/10:is(.dark *){background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.dark\:bg-white\/10:is(.dark *){background-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.dark\:bg-yellow-950:is(.dark *){background-color:var(--color-yellow-950)}.dark\:fill-gray-800:is(.dark *){fill:var(--color-gray-800)}.dark\:text-\[\#00a884\]:is(.dark *){color:#00a884}.dark\:text-blue-300:is(.dark *){color:var(--color-blue-300)}.dark\:text-gray-100:is(.dark *){color:var(--color-gray-100)}.dark\:text-gray-300:is(.dark *){color:var(--color-gray-300)}.dark\:text-gray-400:is(.dark *){color:var(--color-gray-400)}.dark\:text-red-200:is(.dark *){color:var(--color-red-200)}.dark\:text-white:is(.dark *){color:var(--color-white)}@media (hover:hover){.dark\:hover\:bg-\[\#071f19\]:is(.dark *):hover{background-color:#071f19}.dark\:hover\:bg-\[\#141a18\]:is(.dark *):hover{background-color:#141a18}.dark\:hover\:bg-\[\#082720\]:is(.dark *):hover{background-color:#082720}.dark\:hover\:bg-white\/10:is(.dark *):hover{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-white\/10:is(.dark *):hover{background-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>\*\]\:p-4>*{padding:calc(var(--spacing) * 4)}.\[\&\>\*\]\:px-4>*{padding-inline:calc(var(--spacing) * 4)}.\[\&\>\*\]\:py-2>*{padding-block:calc(var(--spacing) * 2)}.\[\&\>svg\]\:fill-rose-600>svg{fill:var(--color-rose-600)}@media (hover:hover){.hover\:\[\&\>svg\]\:fill-rose-700:hover>svg{fill:var(--color-rose-700)}}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}:root{--toastify-color-light: #fff;--toastify-color-dark: #121212;--toastify-color-info: #3498db;--toastify-color-success: #07bc0c;--toastify-color-warning: #f1c40f;--toastify-color-error: #e74c3c;--toastify-color-transparent: rgba(255, 255, 255, .7);--toastify-icon-color-info: var(--toastify-color-info);--toastify-icon-color-success: var(--toastify-color-success);--toastify-icon-color-warning: var(--toastify-color-warning);--toastify-icon-color-error: var(--toastify-color-error);--toastify-toast-width: 320px;--toastify-toast-offset: 16px;--toastify-toast-top: max(var(--toastify-toast-offset), env(safe-area-inset-top));--toastify-toast-right: max(var(--toastify-toast-offset), env(safe-area-inset-right));--toastify-toast-left: max(var(--toastify-toast-offset), env(safe-area-inset-left));--toastify-toast-bottom: max(var(--toastify-toast-offset), env(safe-area-inset-bottom));--toastify-toast-background: #fff;--toastify-toast-min-height: 64px;--toastify-toast-max-height: 800px;--toastify-toast-bd-radius: 6px;--toastify-font-family: sans-serif;--toastify-z-index: 9999;--toastify-text-color-light: #757575;--toastify-text-color-dark: #fff;--toastify-text-color-info: #fff;--toastify-text-color-success: #fff;--toastify-text-color-warning: #fff;--toastify-text-color-error: #fff;--toastify-spinner-color: #616161;--toastify-spinner-color-empty-area: #e0e0e0;--toastify-color-progress-light: linear-gradient( to right, #4cd964, #5ac8fa, #007aff, #34aadc, #5856d6, #ff2d55 );--toastify-color-progress-dark: #bb86fc;--toastify-color-progress-info: var(--toastify-color-info);--toastify-color-progress-success: var(--toastify-color-success);--toastify-color-progress-warning: var(--toastify-color-warning);--toastify-color-progress-error: var(--toastify-color-error);--toastify-color-progress-bgo: .2}.Toastify__toast-container{z-index:var(--toastify-z-index);-webkit-transform:translate3d(0,0,var(--toastify-z-index));position:fixed;padding:4px;width:var(--toastify-toast-width);box-sizing:border-box;color:#fff}.Toastify__toast-container--top-left{top:var(--toastify-toast-top);left:var(--toastify-toast-left)}.Toastify__toast-container--top-center{top:var(--toastify-toast-top);left:50%;transform:translate(-50%)}.Toastify__toast-container--top-right{top:var(--toastify-toast-top);right:var(--toastify-toast-right)}.Toastify__toast-container--bottom-left{bottom:var(--toastify-toast-bottom);left:var(--toastify-toast-left)}.Toastify__toast-container--bottom-center{bottom:var(--toastify-toast-bottom);left:50%;transform:translate(-50%)}.Toastify__toast-container--bottom-right{bottom:var(--toastify-toast-bottom);right:var(--toastify-toast-right)}@media only screen and (max-width : 480px){.Toastify__toast-container{width:100vw;padding:0;left:env(safe-area-inset-left);margin:0}.Toastify__toast-container--top-left,.Toastify__toast-container--top-center,.Toastify__toast-container--top-right{top:env(safe-area-inset-top);transform:translate(0)}.Toastify__toast-container--bottom-left,.Toastify__toast-container--bottom-center,.Toastify__toast-container--bottom-right{bottom:env(safe-area-inset-bottom);transform:translate(0)}.Toastify__toast-container--rtl{right:env(safe-area-inset-right);left:initial}}.Toastify__toast{--y: 0;position:relative;-ms-touch-action:none;touch-action:none;min-height:var(--toastify-toast-min-height);box-sizing:border-box;margin-bottom:1rem;padding:8px;border-radius:var(--toastify-toast-bd-radius);box-shadow:0 4px 12px #0000001a;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;max-height:var(--toastify-toast-max-height);font-family:var(--toastify-font-family);cursor:default;direction:ltr;z-index:0;overflow:hidden}.Toastify__toast--stacked{position:absolute;width:100%;transform:translate3d(0,var(--y),0) scale(var(--s));transition:transform .3s}.Toastify__toast--stacked[data-collapsed] .Toastify__toast-body,.Toastify__toast--stacked[data-collapsed] .Toastify__close-button{transition:opacity .1s}.Toastify__toast--stacked[data-collapsed=false]{overflow:visible}.Toastify__toast--stacked[data-collapsed=true]:not(:last-child)>*{opacity:0}.Toastify__toast--stacked:after{content:"";position:absolute;left:0;right:0;height:calc(var(--g) * 1px);bottom:100%}.Toastify__toast--stacked[data-pos=top]{top:0}.Toastify__toast--stacked[data-pos=bot]{bottom:0}.Toastify__toast--stacked[data-pos=bot].Toastify__toast--stacked:before{transform-origin:top}.Toastify__toast--stacked[data-pos=top].Toastify__toast--stacked:before{transform-origin:bottom}.Toastify__toast--stacked:before{content:"";position:absolute;left:0;right:0;bottom:0;height:100%;transform:scaleY(3);z-index:-1}.Toastify__toast--rtl{direction:rtl}.Toastify__toast--close-on-click{cursor:pointer}.Toastify__toast-body{margin:auto 0;-ms-flex:1 1 auto;flex:1 1 auto;padding:6px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.Toastify__toast-body>div:last-child{word-break:break-word;-ms-flex:1;flex:1}.Toastify__toast-icon{-webkit-margin-end:10px;margin-inline-end:10px;width:20px;-ms-flex-negative:0;flex-shrink:0;display:-ms-flexbox;display:flex}.Toastify--animate{animation-fill-mode:both;animation-duration:.5s}.Toastify--animate-icon{animation-fill-mode:both;animation-duration:.3s}@media only screen and (max-width : 480px){.Toastify__toast{margin-bottom:0;border-radius:0}}.Toastify__toast-theme--dark{background:var(--toastify-color-dark);color:var(--toastify-text-color-dark)}.Toastify__toast-theme--light,.Toastify__toast-theme--colored.Toastify__toast--default{background:var(--toastify-color-light);color:var(--toastify-text-color-light)}.Toastify__toast-theme--colored.Toastify__toast--info{color:var(--toastify-text-color-info);background:var(--toastify-color-info)}.Toastify__toast-theme--colored.Toastify__toast--success{color:var(--toastify-text-color-success);background:var(--toastify-color-success)}.Toastify__toast-theme--colored.Toastify__toast--warning{color:var(--toastify-text-color-warning);background:var(--toastify-color-warning)}.Toastify__toast-theme--colored.Toastify__toast--error{color:var(--toastify-text-color-error);background:var(--toastify-color-error)}.Toastify__progress-bar-theme--light{background:var(--toastify-color-progress-light)}.Toastify__progress-bar-theme--dark{background:var(--toastify-color-progress-dark)}.Toastify__progress-bar--info{background:var(--toastify-color-progress-info)}.Toastify__progress-bar--success{background:var(--toastify-color-progress-success)}.Toastify__progress-bar--warning{background:var(--toastify-color-progress-warning)}.Toastify__progress-bar--error{background:var(--toastify-color-progress-error)}.Toastify__progress-bar-theme--colored.Toastify__progress-bar--info,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--success,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--warning,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--error{background:var(--toastify-color-transparent)}.Toastify__close-button{color:#fff;background:transparent;outline:none;border:none;padding:0;cursor:pointer;opacity:.7;transition:.3s ease;-ms-flex-item-align:start;align-self:flex-start;z-index:1}.Toastify__close-button--light{color:#000;opacity:.3}.Toastify__close-button>svg{fill:currentColor;height:16px;width:14px}.Toastify__close-button:hover,.Toastify__close-button:focus{opacity:1}@keyframes Toastify__trackProgress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.Toastify__progress-bar{position:absolute;bottom:0;left:0;width:100%;height:100%;z-index:var(--toastify-z-index);opacity:.7;transform-origin:left;border-bottom-left-radius:var(--toastify-toast-bd-radius)}.Toastify__progress-bar--animated{animation:Toastify__trackProgress linear 1 forwards}.Toastify__progress-bar--controlled{transition:transform .2s}.Toastify__progress-bar--rtl{right:0;left:initial;transform-origin:right;border-bottom-left-radius:initial;border-bottom-right-radius:var(--toastify-toast-bd-radius)}.Toastify__progress-bar--wrp{position:absolute;bottom:0;left:0;width:100%;height:5px;border-bottom-left-radius:var(--toastify-toast-bd-radius)}.Toastify__progress-bar--wrp[data-hidden=true]{opacity:0}.Toastify__progress-bar--bg{opacity:var(--toastify-color-progress-bgo);width:100%;height:100%}.Toastify__spinner{width:20px;height:20px;box-sizing:border-box;border:2px solid;border-radius:100%;border-color:var(--toastify-spinner-color-empty-area);border-right-color:var(--toastify-spinner-color);animation:Toastify__spin .65s linear infinite}@keyframes Toastify__bounceInRight{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutRight{20%{opacity:1;transform:translate3d(-20px,var(--y),0)}to{opacity:0;transform:translate3d(2000px,var(--y),0)}}@keyframes Toastify__bounceInLeft{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(-3000px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutLeft{20%{opacity:1;transform:translate3d(20px,var(--y),0)}to{opacity:0;transform:translate3d(-2000px,var(--y),0)}}@keyframes Toastify__bounceInUp{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,3000px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes Toastify__bounceOutUp{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes Toastify__bounceInDown{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes Toastify__bounceOutDown{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translate3d(0,2000px,0)}}.Toastify__bounce-enter--top-left,.Toastify__bounce-enter--bottom-left{animation-name:Toastify__bounceInLeft}.Toastify__bounce-enter--top-right,.Toastify__bounce-enter--bottom-right{animation-name:Toastify__bounceInRight}.Toastify__bounce-enter--top-center{animation-name:Toastify__bounceInDown}.Toastify__bounce-enter--bottom-center{animation-name:Toastify__bounceInUp}.Toastify__bounce-exit--top-left,.Toastify__bounce-exit--bottom-left{animation-name:Toastify__bounceOutLeft}.Toastify__bounce-exit--top-right,.Toastify__bounce-exit--bottom-right{animation-name:Toastify__bounceOutRight}.Toastify__bounce-exit--top-center{animation-name:Toastify__bounceOutUp}.Toastify__bounce-exit--bottom-center{animation-name:Toastify__bounceOutDown}@keyframes Toastify__zoomIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes Toastify__zoomOut{0%{opacity:1}50%{opacity:0;transform:translate3d(0,var(--y),0) scale3d(.3,.3,.3)}to{opacity:0}}.Toastify__zoom-enter{animation-name:Toastify__zoomIn}.Toastify__zoom-exit{animation-name:Toastify__zoomOut}@keyframes Toastify__flipIn{0%{transform:perspective(400px) rotateX(90deg);animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotateX(-20deg);animation-timing-function:ease-in}60%{transform:perspective(400px) rotateX(10deg);opacity:1}80%{transform:perspective(400px) rotateX(-5deg)}to{transform:perspective(400px)}}@keyframes Toastify__flipOut{0%{transform:translate3d(0,var(--y),0) perspective(400px)}30%{transform:translate3d(0,var(--y),0) perspective(400px) rotateX(-20deg);opacity:1}to{transform:translate3d(0,var(--y),0) perspective(400px) rotateX(90deg);opacity:0}}.Toastify__flip-enter{animation-name:Toastify__flipIn}.Toastify__flip-exit{animation-name:Toastify__flipOut}@keyframes Toastify__slideInRight{0%{transform:translate3d(110%,0,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInLeft{0%{transform:translate3d(-110%,0,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInUp{0%{transform:translate3d(0,110%,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInDown{0%{transform:translate3d(0,-110%,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideOutRight{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(110%,var(--y),0)}}@keyframes Toastify__slideOutLeft{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(-110%,var(--y),0)}}@keyframes Toastify__slideOutDown{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(0,500px,0)}}@keyframes Toastify__slideOutUp{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(0,-500px,0)}}.Toastify__slide-enter--top-left,.Toastify__slide-enter--bottom-left{animation-name:Toastify__slideInLeft}.Toastify__slide-enter--top-right,.Toastify__slide-enter--bottom-right{animation-name:Toastify__slideInRight}.Toastify__slide-enter--top-center{animation-name:Toastify__slideInDown}.Toastify__slide-enter--bottom-center{animation-name:Toastify__slideInUp}.Toastify__slide-exit--top-left,.Toastify__slide-exit--bottom-left{animation-name:Toastify__slideOutLeft;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--top-right,.Toastify__slide-exit--bottom-right{animation-name:Toastify__slideOutRight;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--top-center{animation-name:Toastify__slideOutUp;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--bottom-center{animation-name:Toastify__slideOutDown;animation-timing-function:ease-in;animation-duration:.3s}@keyframes Toastify__spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.tabs-chat{background-color:transparent;width:100%;border-radius:0}.contacts-container{height:calc(100vh - 180px);overflow-y:auto;display:flex;flex-direction:column}.chat-item{display:flex;padding:10px;cursor:pointer}.custom-scrollbar{scrollbar-width:none}.custom-scrollbar::-webkit-scrollbar{display:none}.input-container{position:sticky;bottom:0;display:flex;flex-direction:column;gap:.375rem;background-color:transparent;padding:.375rem 1rem;width:100%;max-width:48rem;margin:0 auto;box-sizing:border-box}.formatted-message{white-space:pre-wrap}.formatted-message p{margin-bottom:1em}.formatted-message strong{font-weight:700}.formatted-message em{font-style:italic}.formatted-message del{text-decoration:line-through}.formatted-message a{color:#170c96!important;text-decoration:underline!important}.highlight-quoted{animation:highlight 2s ease-out}@keyframes highlight{0%{background-color:#3b82f633}to{background-color:transparent}} diff --git a/manager/dist/assets/index-CO3NSIFj.js b/manager/dist/assets/index-CO3NSIFj.js deleted file mode 100644 index 3d8c88d0f0..0000000000 --- a/manager/dist/assets/index-CO3NSIFj.js +++ /dev/null @@ -1,485 +0,0 @@ -var TD=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var tie=TD((ko,jo)=>{function Bk(e,t){for(var n=0;nr[s]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const o of s)if(o.type==="childList")for(const l of o.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&r(l)}).observe(document,{childList:!0,subtree:!0});function n(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerPolicy&&(o.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?o.credentials="include":s.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(s){if(s.ep)return;s.ep=!0;const o=n(s);fetch(s.href,o)}})();function fd(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var av={exports:{}},Xc={},iv={exports:{}},Et={};/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var A0;function ND(){if(A0)return Et;A0=1;var e=Symbol.for("react.element"),t=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),o=Symbol.for("react.provider"),l=Symbol.for("react.context"),u=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),f=Symbol.for("react.memo"),h=Symbol.for("react.lazy"),m=Symbol.iterator;function g(A){return A===null||typeof A!="object"?null:(A=m&&A[m]||A["@@iterator"],typeof A=="function"?A:null)}var x={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},b=Object.assign,w={};function C(A,F,fe){this.props=A,this.context=F,this.refs=w,this.updater=fe||x}C.prototype.isReactComponent={},C.prototype.setState=function(A,F){if(typeof A!="object"&&typeof A!="function"&&A!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,A,F,"setState")},C.prototype.forceUpdate=function(A){this.updater.enqueueForceUpdate(this,A,"forceUpdate")};function k(){}k.prototype=C.prototype;function j(A,F,fe){this.props=A,this.context=F,this.refs=w,this.updater=fe||x}var M=j.prototype=new k;M.constructor=j,b(M,C.prototype),M.isPureReactComponent=!0;var _=Array.isArray,R=Object.prototype.hasOwnProperty,N={current:null},O={key:!0,ref:!0,__self:!0,__source:!0};function D(A,F,fe){var te,de={},ge=null,Z=null;if(F!=null)for(te in F.ref!==void 0&&(Z=F.ref),F.key!==void 0&&(ge=""+F.key),F)R.call(F,te)&&!O.hasOwnProperty(te)&&(de[te]=F[te]);var ye=arguments.length-2;if(ye===1)de.children=fe;else if(1{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},Fl=typeof window>"u"||"Deno"in globalThis;function ss(){}function RD(e,t){return typeof e=="function"?e(t):e}function Sy(e){return typeof e=="number"&&e>=0&&e!==1/0}function zk(e,t){return Math.max(e+(t||0)-Date.now(),0)}function _l(e,t){return typeof e=="function"?e(t):e}function ws(e,t){return typeof e=="function"?e(t):e}function $0(e,t){const{type:n="all",exact:r,fetchStatus:s,predicate:o,queryKey:l,stale:u}=e;if(l){if(r){if(t.queryHash!==_b(l,t.options))return!1}else if(!Ou(t.queryKey,l))return!1}if(n!=="all"){const d=t.isActive();if(n==="active"&&!d||n==="inactive"&&d)return!1}return!(typeof u=="boolean"&&t.isStale()!==u||s&&s!==t.state.fetchStatus||o&&!o(t))}function B0(e,t){const{exact:n,status:r,predicate:s,mutationKey:o}=e;if(o){if(!t.options.mutationKey)return!1;if(n){if(xi(t.options.mutationKey)!==xi(o))return!1}else if(!Ou(t.options.mutationKey,o))return!1}return!(r&&t.state.status!==r||s&&!s(t))}function _b(e,t){return(t?.queryKeyHashFn||xi)(e)}function xi(e){return JSON.stringify(e,(t,n)=>Cy(n)?Object.keys(n).sort().reduce((r,s)=>(r[s]=n[s],r),{}):n)}function Ou(e,t){return e===t?!0:typeof e!=typeof t?!1:e&&t&&typeof e=="object"&&typeof t=="object"?!Object.keys(t).some(n=>!Ou(e[n],t[n])):!1}function Uk(e,t){if(e===t)return e;const n=z0(e)&&z0(t);if(n||Cy(e)&&Cy(t)){const r=n?e:Object.keys(e),s=r.length,o=n?t:Object.keys(t),l=o.length,u=n?[]:{};let d=0;for(let f=0;f{setTimeout(t,e)})}function Ey(e,t,n){return typeof n.structuralSharing=="function"?n.structuralSharing(e,t):n.structuralSharing!==!1?Uk(e,t):t}function OD(e,t,n=0){const r=[...e,t];return n&&r.length>n?r.slice(1):r}function ID(e,t,n=0){const r=[t,...e];return n&&r.length>n?r.slice(0,-1):r}var Vk=Symbol();function Hk(e,t){return!e.queryFn&&t?.initialPromise?()=>t.initialPromise:!e.queryFn||e.queryFn===Vk?()=>Promise.reject(new Error(`Missing queryFn: '${e.queryHash}'`)):e.queryFn}var AD=class extends Zl{#e;#t;#r;constructor(){super(),this.#r=e=>{if(!Fl&&window.addEventListener){const t=()=>e();return window.addEventListener("visibilitychange",t,!1),()=>{window.removeEventListener("visibilitychange",t)}}}}onSubscribe(){this.#t||this.setEventListener(this.#r)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#r=e,this.#t?.(),this.#t=e(t=>{typeof t=="boolean"?this.setFocused(t):this.onFocus()})}setFocused(e){this.#e!==e&&(this.#e=e,this.onFocus())}onFocus(){const e=this.isFocused();this.listeners.forEach(t=>{t(e)})}isFocused(){return typeof this.#e=="boolean"?this.#e:globalThis.document?.visibilityState!=="hidden"}},Rb=new AD,DD=class extends Zl{#e=!0;#t;#r;constructor(){super(),this.#r=e=>{if(!Fl&&window.addEventListener){const t=()=>e(!0),n=()=>e(!1);return window.addEventListener("online",t,!1),window.addEventListener("offline",n,!1),()=>{window.removeEventListener("online",t),window.removeEventListener("offline",n)}}}}onSubscribe(){this.#t||this.setEventListener(this.#r)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#r=e,this.#t?.(),this.#t=e(this.setOnline.bind(this))}setOnline(e){this.#e!==e&&(this.#e=e,this.listeners.forEach(n=>{n(e)}))}isOnline(){return this.#e}},_p=new DD;function FD(e){return Math.min(1e3*2**e,3e4)}function qk(e){return(e??"online")==="online"?_p.isOnline():!0}var Kk=class extends Error{constructor(e){super("CancelledError"),this.revert=e?.revert,this.silent=e?.silent}};function lv(e){return e instanceof Kk}function Wk(e){let t=!1,n=0,r=!1,s,o,l;const u=new Promise((k,j)=>{o=k,l=j}),d=k=>{r||(b(new Kk(k)),e.abort?.())},f=()=>{t=!0},h=()=>{t=!1},m=()=>Rb.isFocused()&&(e.networkMode==="always"||_p.isOnline())&&e.canRun(),g=()=>qk(e.networkMode)&&e.canRun(),x=k=>{r||(r=!0,e.onSuccess?.(k),s?.(),o(k))},b=k=>{r||(r=!0,e.onError?.(k),s?.(),l(k))},w=()=>new Promise(k=>{s=j=>{(r||m())&&k(j)},e.onPause?.()}).then(()=>{s=void 0,r||e.onContinue?.()}),C=()=>{if(r)return;let k;const j=n===0?e.initialPromise:void 0;try{k=j??e.fn()}catch(M){k=Promise.reject(M)}Promise.resolve(k).then(x).catch(M=>{if(r)return;const _=e.retry??(Fl?0:3),R=e.retryDelay??FD,N=typeof R=="function"?R(n,M):R,O=_===!0||typeof _=="number"&&n<_||typeof _=="function"&&_(n,M);if(t||!O){b(M);return}n++,e.onFail?.(n,M),PD(N).then(()=>m()?void 0:w()).then(()=>{t?b(M):C()})})};return{promise:u,cancel:d,continue:()=>(s?.(),u),cancelRetry:f,continueRetry:h,canStart:g,start:()=>(g()?C():w().then(C),u)}}function LD(){let e=[],t=0,n=g=>{g()},r=g=>{g()},s=g=>setTimeout(g,0);const o=g=>{s=g},l=g=>{let x;t++;try{x=g()}finally{t--,t||f()}return x},u=g=>{t?e.push(g):s(()=>{n(g)})},d=g=>(...x)=>{u(()=>{g(...x)})},f=()=>{const g=e;e=[],g.length&&s(()=>{r(()=>{g.forEach(x=>{n(x)})})})};return{batch:l,batchCalls:d,schedule:u,setNotifyFunction:g=>{n=g},setBatchNotifyFunction:g=>{r=g},setScheduler:o}}var Fn=LD(),Gk=class{#e;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),Sy(this.gcTime)&&(this.#e=setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(Fl?1/0:300*1e3))}clearGcTimeout(){this.#e&&(clearTimeout(this.#e),this.#e=void 0)}},$D=class extends Gk{#e;#t;#r;#n;#a;#o;constructor(e){super(),this.#o=!1,this.#a=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.#r=e.cache,this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#e=BD(this.options),this.state=e.state??this.#e,this.scheduleGc()}get meta(){return this.options.meta}get promise(){return this.#n?.promise}setOptions(e){this.options={...this.#a,...e},this.updateGcTime(this.options.gcTime)}optionalRemove(){!this.observers.length&&this.state.fetchStatus==="idle"&&this.#r.remove(this)}setData(e,t){const n=Ey(this.state.data,e,this.options);return this.#s({data:n,type:"success",dataUpdatedAt:t?.updatedAt,manual:t?.manual}),n}setState(e,t){this.#s({type:"setState",state:e,setStateOptions:t})}cancel(e){const t=this.#n?.promise;return this.#n?.cancel(e),t?t.then(ss).catch(ss):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(this.#e)}isActive(){return this.observers.some(e=>ws(e.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0&&!this.isActive()}isStale(){return this.state.isInvalidated?!0:this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):this.state.data===void 0}isStaleByTime(e=0){return this.state.isInvalidated||this.state.data===void 0||!zk(this.state.dataUpdatedAt,e)}onFocus(){this.observers.find(t=>t.shouldFetchOnWindowFocus())?.refetch({cancelRefetch:!1}),this.#n?.continue()}onOnline(){this.observers.find(t=>t.shouldFetchOnReconnect())?.refetch({cancelRefetch:!1}),this.#n?.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.#r.notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter(t=>t!==e),this.observers.length||(this.#n&&(this.#o?this.#n.cancel({revert:!0}):this.#n.cancelRetry()),this.scheduleGc()),this.#r.notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||this.#s({type:"invalidate"})}fetch(e,t){if(this.state.fetchStatus!=="idle"){if(this.state.data!==void 0&&t?.cancelRefetch)this.cancel({silent:!0});else if(this.#n)return this.#n.continueRetry(),this.#n.promise}if(e&&this.setOptions(e),!this.options.queryFn){const u=this.observers.find(d=>d.options.queryFn);u&&this.setOptions(u.options)}const n=new AbortController,r=u=>{Object.defineProperty(u,"signal",{enumerable:!0,get:()=>(this.#o=!0,n.signal)})},s=()=>{const u=Hk(this.options,t),d={queryKey:this.queryKey,meta:this.meta};return r(d),this.#o=!1,this.options.persister?this.options.persister(u,d,this):u(d)},o={fetchOptions:t,options:this.options,queryKey:this.queryKey,state:this.state,fetchFn:s};r(o),this.options.behavior?.onFetch(o,this),this.#t=this.state,(this.state.fetchStatus==="idle"||this.state.fetchMeta!==o.fetchOptions?.meta)&&this.#s({type:"fetch",meta:o.fetchOptions?.meta});const l=u=>{lv(u)&&u.silent||this.#s({type:"error",error:u}),lv(u)||(this.#r.config.onError?.(u,this),this.#r.config.onSettled?.(this.state.data,u,this)),this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1};return this.#n=Wk({initialPromise:t?.initialPromise,fn:o.fetchFn,abort:n.abort.bind(n),onSuccess:u=>{if(u===void 0){l(new Error(`${this.queryHash} data is undefined`));return}try{this.setData(u)}catch(d){l(d);return}this.#r.config.onSuccess?.(u,this),this.#r.config.onSettled?.(u,this.state.error,this),this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1},onError:l,onFail:(u,d)=>{this.#s({type:"failed",failureCount:u,error:d})},onPause:()=>{this.#s({type:"pause"})},onContinue:()=>{this.#s({type:"continue"})},retry:o.options.retry,retryDelay:o.options.retryDelay,networkMode:o.options.networkMode,canRun:()=>!0}),this.#n.start()}#s(e){const t=n=>{switch(e.type){case"failed":return{...n,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...n,fetchStatus:"paused"};case"continue":return{...n,fetchStatus:"fetching"};case"fetch":return{...n,...Jk(n.data,this.options),fetchMeta:e.meta??null};case"success":return{...n,data:e.data,dataUpdateCount:n.dataUpdateCount+1,dataUpdatedAt:e.dataUpdatedAt??Date.now(),error:null,isInvalidated:!1,status:"success",...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};case"error":const r=e.error;return lv(r)&&r.revert&&this.#t?{...this.#t,fetchStatus:"idle"}:{...n,error:r,errorUpdateCount:n.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:n.fetchFailureCount+1,fetchFailureReason:r,fetchStatus:"idle",status:"error"};case"invalidate":return{...n,isInvalidated:!0};case"setState":return{...n,...e.state}}};this.state=t(this.state),Fn.batch(()=>{this.observers.forEach(n=>{n.onQueryUpdate()}),this.#r.notify({query:this,type:"updated",action:e})})}};function Jk(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:qk(t.networkMode)?"fetching":"paused",...e===void 0&&{error:null,status:"pending"}}}function BD(e){const t=typeof e.initialData=="function"?e.initialData():e.initialData,n=t!==void 0,r=n?typeof e.initialDataUpdatedAt=="function"?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:n?r??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?"success":"pending",fetchStatus:"idle"}}var zD=class extends Zl{constructor(e={}){super(),this.config=e,this.#e=new Map}#e;build(e,t,n){const r=t.queryKey,s=t.queryHash??_b(r,t);let o=this.get(s);return o||(o=new $D({cache:this,queryKey:r,queryHash:s,options:e.defaultQueryOptions(t),state:n,defaultOptions:e.getQueryDefaults(r)}),this.add(o)),o}add(e){this.#e.has(e.queryHash)||(this.#e.set(e.queryHash,e),this.notify({type:"added",query:e}))}remove(e){const t=this.#e.get(e.queryHash);t&&(e.destroy(),t===e&&this.#e.delete(e.queryHash),this.notify({type:"removed",query:e}))}clear(){Fn.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#e.get(e)}getAll(){return[...this.#e.values()]}find(e){const t={exact:!0,...e};return this.getAll().find(n=>$0(t,n))}findAll(e={}){const t=this.getAll();return Object.keys(e).length>0?t.filter(n=>$0(e,n)):t}notify(e){Fn.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){Fn.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){Fn.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},UD=class extends Gk{#e;#t;#r;constructor(e){super(),this.mutationId=e.mutationId,this.#t=e.mutationCache,this.#e=[],this.state=e.state||Qk(),this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#e.includes(e)||(this.#e.push(e),this.clearGcTimeout(),this.#t.notify({type:"observerAdded",mutation:this,observer:e}))}removeObserver(e){this.#e=this.#e.filter(t=>t!==e),this.scheduleGc(),this.#t.notify({type:"observerRemoved",mutation:this,observer:e})}optionalRemove(){this.#e.length||(this.state.status==="pending"?this.scheduleGc():this.#t.remove(this))}continue(){return this.#r?.continue()??this.execute(this.state.variables)}async execute(e){this.#r=Wk({fn:()=>this.options.mutationFn?this.options.mutationFn(e):Promise.reject(new Error("No mutationFn found")),onFail:(r,s)=>{this.#n({type:"failed",failureCount:r,error:s})},onPause:()=>{this.#n({type:"pause"})},onContinue:()=>{this.#n({type:"continue"})},retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#t.canRun(this)});const t=this.state.status==="pending",n=!this.#r.canStart();try{if(!t){this.#n({type:"pending",variables:e,isPaused:n}),await this.#t.config.onMutate?.(e,this);const s=await this.options.onMutate?.(e);s!==this.state.context&&this.#n({type:"pending",context:s,variables:e,isPaused:n})}const r=await this.#r.start();return await this.#t.config.onSuccess?.(r,e,this.state.context,this),await this.options.onSuccess?.(r,e,this.state.context),await this.#t.config.onSettled?.(r,null,this.state.variables,this.state.context,this),await this.options.onSettled?.(r,null,e,this.state.context),this.#n({type:"success",data:r}),r}catch(r){try{throw await this.#t.config.onError?.(r,e,this.state.context,this),await this.options.onError?.(r,e,this.state.context),await this.#t.config.onSettled?.(void 0,r,this.state.variables,this.state.context,this),await this.options.onSettled?.(void 0,r,e,this.state.context),r}finally{this.#n({type:"error",error:r})}}finally{this.#t.runNext(this)}}#n(e){const t=n=>{switch(e.type){case"failed":return{...n,failureCount:e.failureCount,failureReason:e.error};case"pause":return{...n,isPaused:!0};case"continue":return{...n,isPaused:!1};case"pending":return{...n,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:"pending",variables:e.variables,submittedAt:Date.now()};case"success":return{...n,data:e.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...n,data:void 0,error:e.error,failureCount:n.failureCount+1,failureReason:e.error,isPaused:!1,status:"error"}}};this.state=t(this.state),Fn.batch(()=>{this.#e.forEach(n=>{n.onMutationUpdate(e)}),this.#t.notify({mutation:this,type:"updated",action:e})})}};function Qk(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}var VD=class extends Zl{constructor(e={}){super(),this.config=e,this.#e=new Map,this.#t=Date.now()}#e;#t;build(e,t,n){const r=new UD({mutationCache:this,mutationId:++this.#t,options:e.defaultMutationOptions(t),state:n});return this.add(r),r}add(e){const t=Df(e),n=this.#e.get(t)??[];n.push(e),this.#e.set(t,n),this.notify({type:"added",mutation:e})}remove(e){const t=Df(e);if(this.#e.has(t)){const n=this.#e.get(t)?.filter(r=>r!==e);n&&(n.length===0?this.#e.delete(t):this.#e.set(t,n))}this.notify({type:"removed",mutation:e})}canRun(e){const t=this.#e.get(Df(e))?.find(n=>n.state.status==="pending");return!t||t===e}runNext(e){return this.#e.get(Df(e))?.find(n=>n!==e&&n.state.isPaused)?.continue()??Promise.resolve()}clear(){Fn.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}getAll(){return[...this.#e.values()].flat()}find(e){const t={exact:!0,...e};return this.getAll().find(n=>B0(t,n))}findAll(e={}){return this.getAll().filter(t=>B0(e,t))}notify(e){Fn.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){const e=this.getAll().filter(t=>t.state.isPaused);return Fn.batch(()=>Promise.all(e.map(t=>t.continue().catch(ss))))}};function Df(e){return e.options.scope?.id??String(e.mutationId)}function HD(e){return{onFetch:(t,n)=>{const r=async()=>{const s=t.options,o=t.fetchOptions?.meta?.fetchMore?.direction,l=t.state.data?.pages||[],u=t.state.data?.pageParams||[],d={pages:[],pageParams:[]};let f=!1;const h=b=>{Object.defineProperty(b,"signal",{enumerable:!0,get:()=>(t.signal.aborted?f=!0:t.signal.addEventListener("abort",()=>{f=!0}),t.signal)})},m=Hk(t.options,t.fetchOptions),g=async(b,w,C)=>{if(f)return Promise.reject();if(w==null&&b.pages.length)return Promise.resolve(b);const k={queryKey:t.queryKey,pageParam:w,direction:C?"backward":"forward",meta:t.options.meta};h(k);const j=await m(k),{maxPages:M}=t.options,_=C?ID:OD;return{pages:_(b.pages,j,M),pageParams:_(b.pageParams,w,M)}};let x;if(o&&l.length){const b=o==="backward",w=b?qD:V0,C={pages:l,pageParams:u},k=w(s,C);x=await g(C,k,b)}else{x=await g(d,u[0]??s.initialPageParam);const b=e??l.length;for(let w=1;wt.options.persister?.(r,{queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},n):t.fetchFn=r}}}function V0(e,{pages:t,pageParams:n}){const r=t.length-1;return t.length>0?e.getNextPageParam(t[r],t,n[r],n):void 0}function qD(e,{pages:t,pageParams:n}){return t.length>0?e.getPreviousPageParam?.(t[0],t,n[0],n):void 0}var KD=class{#e;#t;#r;#n;#a;#o;#s;#i;constructor(e={}){this.#e=e.queryCache||new zD,this.#t=e.mutationCache||new VD,this.#r=e.defaultOptions||{},this.#n=new Map,this.#a=new Map,this.#o=0}mount(){this.#o++,this.#o===1&&(this.#s=Rb.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onFocus())}),this.#i=_p.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onOnline())}))}unmount(){this.#o--,this.#o===0&&(this.#s?.(),this.#s=void 0,this.#i?.(),this.#i=void 0)}isFetching(e){return this.#e.findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return this.#t.findAll({...e,status:"pending"}).length}getQueryData(e){const t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state.data}ensureQueryData(e){const t=this.getQueryData(e.queryKey);if(t===void 0)return this.fetchQuery(e);{const n=this.defaultQueryOptions(e),r=this.#e.build(this,n);return e.revalidateIfStale&&r.isStaleByTime(_l(n.staleTime,r))&&this.prefetchQuery(n),Promise.resolve(t)}}getQueriesData(e){return this.#e.findAll(e).map(({queryKey:t,state:n})=>{const r=n.data;return[t,r]})}setQueryData(e,t,n){const r=this.defaultQueryOptions({queryKey:e}),o=this.#e.get(r.queryHash)?.state.data,l=RD(t,o);if(l!==void 0)return this.#e.build(this,r).setData(l,{...n,manual:!0})}setQueriesData(e,t,n){return Fn.batch(()=>this.#e.findAll(e).map(({queryKey:r})=>[r,this.setQueryData(r,t,n)]))}getQueryState(e){const t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state}removeQueries(e){const t=this.#e;Fn.batch(()=>{t.findAll(e).forEach(n=>{t.remove(n)})})}resetQueries(e,t){const n=this.#e,r={type:"active",...e};return Fn.batch(()=>(n.findAll(e).forEach(s=>{s.reset()}),this.refetchQueries(r,t)))}cancelQueries(e={},t={}){const n={revert:!0,...t},r=Fn.batch(()=>this.#e.findAll(e).map(s=>s.cancel(n)));return Promise.all(r).then(ss).catch(ss)}invalidateQueries(e={},t={}){return Fn.batch(()=>{if(this.#e.findAll(e).forEach(r=>{r.invalidate()}),e.refetchType==="none")return Promise.resolve();const n={...e,type:e.refetchType??e.type??"active"};return this.refetchQueries(n,t)})}refetchQueries(e={},t){const n={...t,cancelRefetch:t?.cancelRefetch??!0},r=Fn.batch(()=>this.#e.findAll(e).filter(s=>!s.isDisabled()).map(s=>{let o=s.fetch(void 0,n);return n.throwOnError||(o=o.catch(ss)),s.state.fetchStatus==="paused"?Promise.resolve():o}));return Promise.all(r).then(ss)}fetchQuery(e){const t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);const n=this.#e.build(this,t);return n.isStaleByTime(_l(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(ss).catch(ss)}fetchInfiniteQuery(e){return e.behavior=HD(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(ss).catch(ss)}resumePausedMutations(){return _p.isOnline()?this.#t.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#e}getMutationCache(){return this.#t}getDefaultOptions(){return this.#r}setDefaultOptions(e){this.#r=e}setQueryDefaults(e,t){this.#n.set(xi(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){const t=[...this.#n.values()];let n={};return t.forEach(r=>{Ou(e,r.queryKey)&&(n={...n,...r.defaultOptions})}),n}setMutationDefaults(e,t){this.#a.set(xi(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){const t=[...this.#a.values()];let n={};return t.forEach(r=>{Ou(e,r.mutationKey)&&(n={...n,...r.defaultOptions})}),n}defaultQueryOptions(e){if(e._defaulted)return e;const t={...this.#r.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||(t.queryHash=_b(t.queryKey,t)),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!=="always"),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode="offlineFirst"),t.enabled!==!0&&t.queryFn===Vk&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#r.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#e.clear(),this.#t.clear()}},WD=class extends Zl{constructor(e,t){super(),this.options=t,this.#e=e,this.#s=null,this.bindMethods(),this.setOptions(t)}#e;#t=void 0;#r=void 0;#n=void 0;#a;#o;#s;#i;#f;#p;#c;#u;#l;#h=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#t.addObserver(this),H0(this.#t,this.options)?this.#d():this.updateResult(),this.#y())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return ky(this.#t,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return ky(this.#t,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#b(),this.#x(),this.#t.removeObserver(this)}setOptions(e,t){const n=this.options,r=this.#t;if(this.options=this.#e.defaultQueryOptions(e),this.options.enabled!==void 0&&typeof this.options.enabled!="boolean"&&typeof this.options.enabled!="function"&&typeof ws(this.options.enabled,this.#t)!="boolean")throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");this.#w(),this.#t.setOptions(this.options),n._defaulted&&!Mp(this.options,n)&&this.#e.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#t,observer:this});const s=this.hasListeners();s&&q0(this.#t,r,this.options,n)&&this.#d(),this.updateResult(t),s&&(this.#t!==r||ws(this.options.enabled,this.#t)!==ws(n.enabled,this.#t)||_l(this.options.staleTime,this.#t)!==_l(n.staleTime,this.#t))&&this.#g();const o=this.#m();s&&(this.#t!==r||ws(this.options.enabled,this.#t)!==ws(n.enabled,this.#t)||o!==this.#l)&&this.#v(o)}getOptimisticResult(e){const t=this.#e.getQueryCache().build(this.#e,e),n=this.createResult(t,e);return JD(this,n)&&(this.#n=n,this.#o=this.options,this.#a=this.#t.state),n}getCurrentResult(){return this.#n}trackResult(e,t){const n={};return Object.keys(e).forEach(r=>{Object.defineProperty(n,r,{configurable:!1,enumerable:!0,get:()=>(this.trackProp(r),t?.(r),e[r])})}),n}trackProp(e){this.#h.add(e)}getCurrentQuery(){return this.#t}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){const t=this.#e.defaultQueryOptions(e),n=this.#e.getQueryCache().build(this.#e,t);return n.isFetchingOptimistic=!0,n.fetch().then(()=>this.createResult(n,t))}fetch(e){return this.#d({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#n))}#d(e){this.#w();let t=this.#t.fetch(this.options,e);return e?.throwOnError||(t=t.catch(ss)),t}#g(){this.#b();const e=_l(this.options.staleTime,this.#t);if(Fl||this.#n.isStale||!Sy(e))return;const n=zk(this.#n.dataUpdatedAt,e)+1;this.#c=setTimeout(()=>{this.#n.isStale||this.updateResult()},n)}#m(){return(typeof this.options.refetchInterval=="function"?this.options.refetchInterval(this.#t):this.options.refetchInterval)??!1}#v(e){this.#x(),this.#l=e,!(Fl||ws(this.options.enabled,this.#t)===!1||!Sy(this.#l)||this.#l===0)&&(this.#u=setInterval(()=>{(this.options.refetchIntervalInBackground||Rb.isFocused())&&this.#d()},this.#l))}#y(){this.#g(),this.#v(this.#m())}#b(){this.#c&&(clearTimeout(this.#c),this.#c=void 0)}#x(){this.#u&&(clearInterval(this.#u),this.#u=void 0)}createResult(e,t){const n=this.#t,r=this.options,s=this.#n,o=this.#a,l=this.#o,d=e!==n?e.state:this.#r,{state:f}=e;let h={...f},m=!1,g;if(t._optimisticResults){const N=this.hasListeners(),O=!N&&H0(e,t),D=N&&q0(e,n,t,r);(O||D)&&(h={...h,...Jk(f.data,e.options)}),t._optimisticResults==="isRestoring"&&(h.fetchStatus="idle")}let{error:x,errorUpdatedAt:b,status:w}=h;if(t.select&&h.data!==void 0)if(s&&h.data===o?.data&&t.select===this.#i)g=this.#f;else try{this.#i=t.select,g=t.select(h.data),g=Ey(s?.data,g,t),this.#f=g,this.#s=null}catch(N){this.#s=N}else g=h.data;if(t.placeholderData!==void 0&&g===void 0&&w==="pending"){let N;if(s?.isPlaceholderData&&t.placeholderData===l?.placeholderData)N=s.data;else if(N=typeof t.placeholderData=="function"?t.placeholderData(this.#p?.state.data,this.#p):t.placeholderData,t.select&&N!==void 0)try{N=t.select(N),this.#s=null}catch(O){this.#s=O}N!==void 0&&(w="success",g=Ey(s?.data,N,t),m=!0)}this.#s&&(x=this.#s,g=this.#f,b=Date.now(),w="error");const C=h.fetchStatus==="fetching",k=w==="pending",j=w==="error",M=k&&C,_=g!==void 0;return{status:w,fetchStatus:h.fetchStatus,isPending:k,isSuccess:w==="success",isError:j,isInitialLoading:M,isLoading:M,data:g,dataUpdatedAt:h.dataUpdatedAt,error:x,errorUpdatedAt:b,failureCount:h.fetchFailureCount,failureReason:h.fetchFailureReason,errorUpdateCount:h.errorUpdateCount,isFetched:h.dataUpdateCount>0||h.errorUpdateCount>0,isFetchedAfterMount:h.dataUpdateCount>d.dataUpdateCount||h.errorUpdateCount>d.errorUpdateCount,isFetching:C,isRefetching:C&&!k,isLoadingError:j&&!_,isPaused:h.fetchStatus==="paused",isPlaceholderData:m,isRefetchError:j&&_,isStale:Pb(e,t),refetch:this.refetch}}updateResult(e){const t=this.#n,n=this.createResult(this.#t,this.options);if(this.#a=this.#t.state,this.#o=this.options,this.#a.data!==void 0&&(this.#p=this.#t),Mp(n,t))return;this.#n=n;const r={},s=()=>{if(!t)return!0;const{notifyOnChangeProps:o}=this.options,l=typeof o=="function"?o():o;if(l==="all"||!l&&!this.#h.size)return!0;const u=new Set(l??this.#h);return this.options.throwOnError&&u.add("error"),Object.keys(this.#n).some(d=>{const f=d;return this.#n[f]!==t[f]&&u.has(f)})};e?.listeners!==!1&&s()&&(r.listeners=!0),this.#S({...r,...e})}#w(){const e=this.#e.getQueryCache().build(this.#e,this.options);if(e===this.#t)return;const t=this.#t;this.#t=e,this.#r=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#y()}#S(e){Fn.batch(()=>{e.listeners&&this.listeners.forEach(t=>{t(this.#n)}),this.#e.getQueryCache().notify({query:this.#t,type:"observerResultsUpdated"})})}};function GD(e,t){return ws(t.enabled,e)!==!1&&e.state.data===void 0&&!(e.state.status==="error"&&t.retryOnMount===!1)}function H0(e,t){return GD(e,t)||e.state.data!==void 0&&ky(e,t,t.refetchOnMount)}function ky(e,t,n){if(ws(t.enabled,e)!==!1){const r=typeof n=="function"?n(e):n;return r==="always"||r!==!1&&Pb(e,t)}return!1}function q0(e,t,n,r){return(e!==t||ws(r.enabled,e)===!1)&&(!n.suspense||e.state.status!=="error")&&Pb(e,n)}function Pb(e,t){return ws(t.enabled,e)!==!1&&e.isStaleByTime(_l(t.staleTime,e))}function JD(e,t){return!Mp(e.getCurrentResult(),t)}var QD=class extends Zl{#e;#t=void 0;#r;#n;constructor(t,n){super(),this.#e=t,this.setOptions(n),this.bindMethods(),this.#a()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(t){const n=this.options;this.options=this.#e.defaultMutationOptions(t),Mp(this.options,n)||this.#e.getMutationCache().notify({type:"observerOptionsUpdated",mutation:this.#r,observer:this}),n?.mutationKey&&this.options.mutationKey&&xi(n.mutationKey)!==xi(this.options.mutationKey)?this.reset():this.#r?.state.status==="pending"&&this.#r.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#r?.removeObserver(this)}onMutationUpdate(t){this.#a(),this.#o(t)}getCurrentResult(){return this.#t}reset(){this.#r?.removeObserver(this),this.#r=void 0,this.#a(),this.#o()}mutate(t,n){return this.#n=n,this.#r?.removeObserver(this),this.#r=this.#e.getMutationCache().build(this.#e,this.options),this.#r.addObserver(this),this.#r.execute(t)}#a(){const t=this.#r?.state??Qk();this.#t={...t,isPending:t.status==="pending",isSuccess:t.status==="success",isError:t.status==="error",isIdle:t.status==="idle",mutate:this.mutate,reset:this.reset}}#o(t){Fn.batch(()=>{if(this.#n&&this.hasListeners()){const n=this.#t.variables,r=this.#t.context;t?.type==="success"?(this.#n.onSuccess?.(t.data,n,r),this.#n.onSettled?.(t.data,null,n,r)):t?.type==="error"&&(this.#n.onError?.(t.error,n,r),this.#n.onSettled?.(void 0,t.error,n,r))}this.listeners.forEach(n=>{n(this.#t)})})}},y=pd();const qe=fd(y),Yl=Bk({__proto__:null,default:qe},[y]);var Zk=y.createContext(void 0),Ob=e=>{const t=y.useContext(Zk);if(!t)throw new Error("No QueryClient set, use QueryClientProvider to set one");return t},Yk=({client:e,children:t})=>(y.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),i.jsx(Zk.Provider,{value:e,children:t})),Xk=y.createContext(!1),ZD=()=>y.useContext(Xk);Xk.Provider;function YD(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var XD=y.createContext(YD()),eF=()=>y.useContext(XD);function ej(e,t){return typeof e=="function"?e(...t):!!e}function tF(){}var nF=(e,t)=>{(e.suspense||e.throwOnError)&&(t.isReset()||(e.retryOnMount=!1))},rF=e=>{y.useEffect(()=>{e.clearReset()},[e])},sF=({result:e,errorResetBoundary:t,throwOnError:n,query:r})=>e.isError&&!t.isReset()&&!e.isFetching&&r&&ej(n,[e.error,r]),oF=e=>{e.suspense&&(typeof e.staleTime!="number"&&(e.staleTime=1e3),typeof e.gcTime=="number"&&(e.gcTime=Math.max(e.gcTime,1e3)))},aF=(e,t)=>e?.suspense&&t.isPending,iF=(e,t,n)=>t.fetchOptimistic(e).catch(()=>{n.clearReset()});function lF(e,t,n){const r=Ob(),s=ZD(),o=eF(),l=r.defaultQueryOptions(e);r.getDefaultOptions().queries?._experimental_beforeQuery?.(l),l._optimisticResults=s?"isRestoring":"optimistic",oF(l),nF(l,o),rF(o);const[u]=y.useState(()=>new t(r,l)),d=u.getOptimisticResult(l);if(y.useSyncExternalStore(y.useCallback(f=>{const h=s?()=>{}:u.subscribe(Fn.batchCalls(f));return u.updateResult(),h},[u,s]),()=>u.getCurrentResult(),()=>u.getCurrentResult()),y.useEffect(()=>{u.setOptions(l,{listeners:!1})},[l,u]),aF(l,d))throw iF(l,u,o);if(sF({result:d,errorResetBoundary:o,throwOnError:l.throwOnError,query:r.getQueryCache().get(l.queryHash)}))throw d.error;return r.getDefaultOptions().queries?._experimental_afterQuery?.(l,d),l.notifyOnChangeProps?d:u.trackResult(d)}function mt(e,t){return lF(e,WD)}function cF(e,t){const n=Ob(),[r]=y.useState(()=>new QD(n,e));y.useEffect(()=>{r.setOptions(e)},[r,e]);const s=y.useSyncExternalStore(y.useCallback(l=>r.subscribe(Fn.batchCalls(l)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),o=y.useCallback((l,u)=>{r.mutate(l,u).catch(tF)},[r]);if(s.error&&ej(r.options.throwOnError,[s.error]))throw s.error;return{...s,mutate:o,mutateAsync:s.mutate}}var Ff={},cv={exports:{}},Cr={},uv={exports:{}},dv={};/** - * @license React - * scheduler.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var K0;function uF(){return K0||(K0=1,(function(e){function t(H,q){var he=H.length;H.push(q);e:for(;0>>1,F=H[A];if(0>>1;As(de,he))ges(Z,de)?(H[A]=Z,H[ge]=he,A=ge):(H[A]=de,H[te]=he,A=te);else if(ges(Z,he))H[A]=Z,H[ge]=he,A=ge;else break e}}return q}function s(H,q){var he=H.sortIndex-q.sortIndex;return he!==0?he:H.id-q.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var l=Date,u=l.now();e.unstable_now=function(){return l.now()-u}}var d=[],f=[],h=1,m=null,g=3,x=!1,b=!1,w=!1,C=typeof setTimeout=="function"?setTimeout:null,k=typeof clearTimeout=="function"?clearTimeout:null,j=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function M(H){for(var q=n(f);q!==null;){if(q.callback===null)r(f);else if(q.startTime<=H)r(f),q.sortIndex=q.expirationTime,t(d,q);else break;q=n(f)}}function _(H){if(w=!1,M(H),!b)if(n(d)!==null)b=!0,re(R);else{var q=n(f);q!==null&&Y(_,q.startTime-H)}}function R(H,q){b=!1,w&&(w=!1,k(D),D=-1),x=!0;var he=g;try{for(M(q),m=n(d);m!==null&&(!(m.expirationTime>q)||H&&!pe());){var A=m.callback;if(typeof A=="function"){m.callback=null,g=m.priorityLevel;var F=A(m.expirationTime<=q);q=e.unstable_now(),typeof F=="function"?m.callback=F:m===n(d)&&r(d),M(q)}else r(d);m=n(d)}if(m!==null)var fe=!0;else{var te=n(f);te!==null&&Y(_,te.startTime-q),fe=!1}return fe}finally{m=null,g=he,x=!1}}var N=!1,O=null,D=-1,z=5,Q=-1;function pe(){return!(e.unstable_now()-QH||125A?(H.sortIndex=he,t(f,H),n(d)===null&&H===n(f)&&(w?(k(D),D=-1):w=!0,Y(_,he-A))):(H.sortIndex=F,t(d,H),b||x||(b=!0,re(R))),H},e.unstable_shouldYield=pe,e.unstable_wrapCallback=function(H){var q=g;return function(){var he=g;g=q;try{return H.apply(this,arguments)}finally{g=he}}}})(dv)),dv}var W0;function dF(){return W0||(W0=1,uv.exports=uF()),uv.exports}/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var G0;function fF(){if(G0)return Cr;G0=1;var e=pd(),t=dF();function n(a){for(var c="https://reactjs.org/docs/error-decoder.html?invariant="+a,p=1;p"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),d=Object.prototype.hasOwnProperty,f=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,h={},m={};function g(a){return d.call(m,a)?!0:d.call(h,a)?!1:f.test(a)?m[a]=!0:(h[a]=!0,!1)}function x(a,c,p,v){if(p!==null&&p.type===0)return!1;switch(typeof c){case"function":case"symbol":return!0;case"boolean":return v?!1:p!==null?!p.acceptsBooleans:(a=a.toLowerCase().slice(0,5),a!=="data-"&&a!=="aria-");default:return!1}}function b(a,c,p,v){if(c===null||typeof c>"u"||x(a,c,p,v))return!0;if(v)return!1;if(p!==null)switch(p.type){case 3:return!c;case 4:return c===!1;case 5:return isNaN(c);case 6:return isNaN(c)||1>c}return!1}function w(a,c,p,v,S,E,T){this.acceptsBooleans=c===2||c===3||c===4,this.attributeName=v,this.attributeNamespace=S,this.mustUseProperty=p,this.propertyName=a,this.type=c,this.sanitizeURL=E,this.removeEmptyString=T}var C={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(a){C[a]=new w(a,0,!1,a,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(a){var c=a[0];C[c]=new w(c,1,!1,a[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(a){C[a]=new w(a,2,!1,a.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(a){C[a]=new w(a,2,!1,a,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(a){C[a]=new w(a,3,!1,a.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(a){C[a]=new w(a,3,!0,a,null,!1,!1)}),["capture","download"].forEach(function(a){C[a]=new w(a,4,!1,a,null,!1,!1)}),["cols","rows","size","span"].forEach(function(a){C[a]=new w(a,6,!1,a,null,!1,!1)}),["rowSpan","start"].forEach(function(a){C[a]=new w(a,5,!1,a.toLowerCase(),null,!1,!1)});var k=/[\-:]([a-z])/g;function j(a){return a[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(a){var c=a.replace(k,j);C[c]=new w(c,1,!1,a,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(a){var c=a.replace(k,j);C[c]=new w(c,1,!1,a,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(a){var c=a.replace(k,j);C[c]=new w(c,1,!1,a,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(a){C[a]=new w(a,1,!1,a.toLowerCase(),null,!1,!1)}),C.xlinkHref=new w("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(a){C[a]=new w(a,1,!1,a.toLowerCase(),null,!0,!0)});function M(a,c,p,v){var S=C.hasOwnProperty(c)?C[c]:null;(S!==null?S.type!==0:v||!(2I||S[T]!==E[I]){var $=` -`+S[T].replace(" at new "," at ");return a.displayName&&$.includes("")&&($=$.replace("",a.displayName)),$}while(1<=T&&0<=I);break}}}finally{fe=!1,Error.prepareStackTrace=p}return(a=a?a.displayName||a.name:"")?F(a):""}function de(a){switch(a.tag){case 5:return F(a.type);case 16:return F("Lazy");case 13:return F("Suspense");case 19:return F("SuspenseList");case 0:case 2:case 15:return a=te(a.type,!1),a;case 11:return a=te(a.type.render,!1),a;case 1:return a=te(a.type,!0),a;default:return""}}function ge(a){if(a==null)return null;if(typeof a=="function")return a.displayName||a.name||null;if(typeof a=="string")return a;switch(a){case O:return"Fragment";case N:return"Portal";case z:return"Profiler";case D:return"StrictMode";case G:return"Suspense";case W:return"SuspenseList"}if(typeof a=="object")switch(a.$$typeof){case pe:return(a.displayName||"Context")+".Consumer";case Q:return(a._context.displayName||"Context")+".Provider";case V:var c=a.render;return a=a.displayName,a||(a=c.displayName||c.name||"",a=a!==""?"ForwardRef("+a+")":"ForwardRef"),a;case ie:return c=a.displayName||null,c!==null?c:ge(a.type)||"Memo";case re:c=a._payload,a=a._init;try{return ge(a(c))}catch{}}return null}function Z(a){var c=a.type;switch(a.tag){case 24:return"Cache";case 9:return(c.displayName||"Context")+".Consumer";case 10:return(c._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return a=c.render,a=a.displayName||a.name||"",c.displayName||(a!==""?"ForwardRef("+a+")":"ForwardRef");case 7:return"Fragment";case 5:return c;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return ge(c);case 8:return c===D?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof c=="function")return c.displayName||c.name||null;if(typeof c=="string")return c}return null}function ye(a){switch(typeof a){case"boolean":case"number":case"string":case"undefined":return a;case"object":return a;default:return""}}function Re(a){var c=a.type;return(a=a.nodeName)&&a.toLowerCase()==="input"&&(c==="checkbox"||c==="radio")}function $e(a){var c=Re(a)?"checked":"value",p=Object.getOwnPropertyDescriptor(a.constructor.prototype,c),v=""+a[c];if(!a.hasOwnProperty(c)&&typeof p<"u"&&typeof p.get=="function"&&typeof p.set=="function"){var S=p.get,E=p.set;return Object.defineProperty(a,c,{configurable:!0,get:function(){return S.call(this)},set:function(T){v=""+T,E.call(this,T)}}),Object.defineProperty(a,c,{enumerable:p.enumerable}),{getValue:function(){return v},setValue:function(T){v=""+T},stopTracking:function(){a._valueTracker=null,delete a[c]}}}}function Ye(a){a._valueTracker||(a._valueTracker=$e(a))}function Fe(a){if(!a)return!1;var c=a._valueTracker;if(!c)return!0;var p=c.getValue(),v="";return a&&(v=Re(a)?a.checked?"true":"false":a.value),a=v,a!==p?(c.setValue(a),!0):!1}function ft(a){if(a=a||(typeof document<"u"?document:void 0),typeof a>"u")return null;try{return a.activeElement||a.body}catch{return a.body}}function ln(a,c){var p=c.checked;return he({},c,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:p??a._wrapperState.initialChecked})}function Sn(a,c){var p=c.defaultValue==null?"":c.defaultValue,v=c.checked!=null?c.checked:c.defaultChecked;p=ye(c.value!=null?c.value:p),a._wrapperState={initialChecked:v,initialValue:p,controlled:c.type==="checkbox"||c.type==="radio"?c.checked!=null:c.value!=null}}function vn(a,c){c=c.checked,c!=null&&M(a,"checked",c,!1)}function Cn(a,c){vn(a,c);var p=ye(c.value),v=c.type;if(p!=null)v==="number"?(p===0&&a.value===""||a.value!=p)&&(a.value=""+p):a.value!==""+p&&(a.value=""+p);else if(v==="submit"||v==="reset"){a.removeAttribute("value");return}c.hasOwnProperty("value")?X(a,c.type,p):c.hasOwnProperty("defaultValue")&&X(a,c.type,ye(c.defaultValue)),c.checked==null&&c.defaultChecked!=null&&(a.defaultChecked=!!c.defaultChecked)}function L(a,c,p){if(c.hasOwnProperty("value")||c.hasOwnProperty("defaultValue")){var v=c.type;if(!(v!=="submit"&&v!=="reset"||c.value!==void 0&&c.value!==null))return;c=""+a._wrapperState.initialValue,p||c===a.value||(a.value=c),a.defaultValue=c}p=a.name,p!==""&&(a.name=""),a.defaultChecked=!!a._wrapperState.initialChecked,p!==""&&(a.name=p)}function X(a,c,p){(c!=="number"||ft(a.ownerDocument)!==a)&&(p==null?a.defaultValue=""+a._wrapperState.initialValue:a.defaultValue!==""+p&&(a.defaultValue=""+p))}var ue=Array.isArray;function Ne(a,c,p,v){if(a=a.options,c){c={};for(var S=0;S"+c.valueOf().toString()+"",c=bn.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;c.firstChild;)a.appendChild(c.firstChild)}});function gr(a,c){if(c){var p=a.firstChild;if(p&&p===a.lastChild&&p.nodeType===3){p.nodeValue=c;return}}a.textContent=c}var Qn={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ro=["Webkit","ms","Moz","O"];Object.keys(Qn).forEach(function(a){ro.forEach(function(c){c=c+a.charAt(0).toUpperCase()+a.substring(1),Qn[c]=Qn[a]})});function Bn(a,c,p){return c==null||typeof c=="boolean"||c===""?"":p||typeof c!="number"||c===0||Qn.hasOwnProperty(a)&&Qn[a]?(""+c).trim():c+"px"}function Te(a,c){a=a.style;for(var p in c)if(c.hasOwnProperty(p)){var v=p.indexOf("--")===0,S=Bn(p,c[p],v);p==="float"&&(p="cssFloat"),v?a.setProperty(p,S):a[p]=S}}var ut=he({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function It(a,c){if(c){if(ut[a]&&(c.children!=null||c.dangerouslySetInnerHTML!=null))throw Error(n(137,a));if(c.dangerouslySetInnerHTML!=null){if(c.children!=null)throw Error(n(60));if(typeof c.dangerouslySetInnerHTML!="object"||!("__html"in c.dangerouslySetInnerHTML))throw Error(n(61))}if(c.style!=null&&typeof c.style!="object")throw Error(n(62))}}function Tn(a,c){if(a.indexOf("-")===-1)return typeof c.is=="string";switch(a){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var mr=null;function vr(a){return a=a.target||a.srcElement||window,a.correspondingUseElement&&(a=a.correspondingUseElement),a.nodeType===3?a.parentNode:a}var Gr=null,Jr=null,_r=null;function Rr(a){if(a=Lc(a)){if(typeof Gr!="function")throw Error(n(280));var c=a.stateNode;c&&(c=Qd(c),Gr(a.stateNode,a.type,c))}}function Uo(a){Jr?_r?_r.push(a):_r=[a]:Jr=a}function vc(){if(Jr){var a=Jr,c=_r;if(_r=Jr=null,Rr(a),c)for(a=0;a>>=0,a===0?32:31-(fs(a)/Rd|0)|0}var Pd=64,Od=4194304;function xc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return a}}function Id(a,c){var p=a.pendingLanes;if(p===0)return 0;var v=0,S=a.suspendedLanes,E=a.pingedLanes,T=p&268435455;if(T!==0){var I=T&~S;I!==0?v=xc(I):(E&=T,E!==0&&(v=xc(E)))}else T=p&~S,T!==0?v=xc(T):E!==0&&(v=xc(E));if(v===0)return 0;if(c!==0&&c!==v&&(c&S)===0&&(S=v&-v,E=c&-c,S>=E||S===16&&(E&4194240)!==0))return c;if((v&4)!==0&&(v|=p&16),c=a.entangledLanes,c!==0)for(a=a.entanglements,c&=v;0p;p++)c.push(a);return c}function wc(a,c,p){a.pendingLanes|=c,c!==536870912&&(a.suspendedLanes=0,a.pingedLanes=0),a=a.eventTimes,c=31-Tt(c),a[c]=p}function GI(a,c){var p=a.pendingLanes&~c;a.pendingLanes=c,a.suspendedLanes=0,a.pingedLanes=0,a.expiredLanes&=c,a.mutableReadLanes&=c,a.entangledLanes&=c,c=a.entanglements;var v=a.eventTimes;for(a=a.expirationTimes;0=Mc),Nw=" ",Mw=!1;function _w(a,c){switch(a){case"keyup":return SA.indexOf(c.keyCode)!==-1;case"keydown":return c.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Rw(a){return a=a.detail,typeof a=="object"&&"data"in a?a.data:null}var Ki=!1;function EA(a,c){switch(a){case"compositionend":return Rw(c);case"keypress":return c.which!==32?null:(Mw=!0,Nw);case"textInput":return a=c.data,a===Nw&&Mw?null:a;default:return null}}function kA(a,c){if(Ki)return a==="compositionend"||!Bg&&_w(a,c)?(a=Sw(),$d=Ig=Go=null,Ki=!1,a):null;switch(a){case"paste":return null;case"keypress":if(!(c.ctrlKey||c.altKey||c.metaKey)||c.ctrlKey&&c.altKey){if(c.char&&1=c)return{node:p,offset:c-a};a=v}e:{for(;p;){if(p.nextSibling){p=p.nextSibling;break e}p=p.parentNode}p=void 0}p=Lw(p)}}function Bw(a,c){return a&&c?a===c?!0:a&&a.nodeType===3?!1:c&&c.nodeType===3?Bw(a,c.parentNode):"contains"in a?a.contains(c):a.compareDocumentPosition?!!(a.compareDocumentPosition(c)&16):!1:!1}function zw(){for(var a=window,c=ft();c instanceof a.HTMLIFrameElement;){try{var p=typeof c.contentWindow.location.href=="string"}catch{p=!1}if(p)a=c.contentWindow;else break;c=ft(a.document)}return c}function Vg(a){var c=a&&a.nodeName&&a.nodeName.toLowerCase();return c&&(c==="input"&&(a.type==="text"||a.type==="search"||a.type==="tel"||a.type==="url"||a.type==="password")||c==="textarea"||a.contentEditable==="true")}function IA(a){var c=zw(),p=a.focusedElem,v=a.selectionRange;if(c!==p&&p&&p.ownerDocument&&Bw(p.ownerDocument.documentElement,p)){if(v!==null&&Vg(p)){if(c=v.start,a=v.end,a===void 0&&(a=c),"selectionStart"in p)p.selectionStart=c,p.selectionEnd=Math.min(a,p.value.length);else if(a=(c=p.ownerDocument||document)&&c.defaultView||window,a.getSelection){a=a.getSelection();var S=p.textContent.length,E=Math.min(v.start,S);v=v.end===void 0?E:Math.min(v.end,S),!a.extend&&E>v&&(S=v,v=E,E=S),S=$w(p,E);var T=$w(p,v);S&&T&&(a.rangeCount!==1||a.anchorNode!==S.node||a.anchorOffset!==S.offset||a.focusNode!==T.node||a.focusOffset!==T.offset)&&(c=c.createRange(),c.setStart(S.node,S.offset),a.removeAllRanges(),E>v?(a.addRange(c),a.extend(T.node,T.offset)):(c.setEnd(T.node,T.offset),a.addRange(c)))}}for(c=[],a=p;a=a.parentNode;)a.nodeType===1&&c.push({element:a,left:a.scrollLeft,top:a.scrollTop});for(typeof p.focus=="function"&&p.focus(),p=0;p=document.documentMode,Wi=null,Hg=null,Oc=null,qg=!1;function Uw(a,c,p){var v=p.window===p?p.document:p.nodeType===9?p:p.ownerDocument;qg||Wi==null||Wi!==ft(v)||(v=Wi,"selectionStart"in v&&Vg(v)?v={start:v.selectionStart,end:v.selectionEnd}:(v=(v.ownerDocument&&v.ownerDocument.defaultView||window).getSelection(),v={anchorNode:v.anchorNode,anchorOffset:v.anchorOffset,focusNode:v.focusNode,focusOffset:v.focusOffset}),Oc&&Pc(Oc,v)||(Oc=v,v=Wd(Hg,"onSelect"),0Yi||(a.current=rm[Yi],rm[Yi]=null,Yi--)}function Qt(a,c){Yi++,rm[Yi]=a.current,a.current=c}var Yo={},Zn=Zo(Yo),yr=Zo(!1),Ka=Yo;function Xi(a,c){var p=a.type.contextTypes;if(!p)return Yo;var v=a.stateNode;if(v&&v.__reactInternalMemoizedUnmaskedChildContext===c)return v.__reactInternalMemoizedMaskedChildContext;var S={},E;for(E in p)S[E]=c[E];return v&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=c,a.__reactInternalMemoizedMaskedChildContext=S),S}function br(a){return a=a.childContextTypes,a!=null}function Zd(){en(yr),en(Zn)}function rS(a,c,p){if(Zn.current!==Yo)throw Error(n(168));Qt(Zn,c),Qt(yr,p)}function sS(a,c,p){var v=a.stateNode;if(c=c.childContextTypes,typeof v.getChildContext!="function")return p;v=v.getChildContext();for(var S in v)if(!(S in c))throw Error(n(108,Z(a)||"Unknown",S));return he({},p,v)}function Yd(a){return a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Yo,Ka=Zn.current,Qt(Zn,a),Qt(yr,yr.current),!0}function oS(a,c,p){var v=a.stateNode;if(!v)throw Error(n(169));p?(a=sS(a,c,Ka),v.__reactInternalMemoizedMergedChildContext=a,en(yr),en(Zn),Qt(Zn,a)):en(yr),Qt(yr,p)}var ao=null,Xd=!1,sm=!1;function aS(a){ao===null?ao=[a]:ao.push(a)}function KA(a){Xd=!0,aS(a)}function Xo(){if(!sm&&ao!==null){sm=!0;var a=0,c=Kt;try{var p=ao;for(Kt=1;a>=T,S-=T,io=1<<32-Tt(c)+S|p<dt?(Vn=tt,tt=null):Vn=tt.sibling;var Lt=be(J,tt,ee[dt],ke);if(Lt===null){tt===null&&(tt=Vn);break}a&&tt&&Lt.alternate===null&&c(J,tt),U=E(Lt,U,dt),et===null?Je=Lt:et.sibling=Lt,et=Lt,tt=Vn}if(dt===ee.length)return p(J,tt),cn&&Ga(J,dt),Je;if(tt===null){for(;dtdt?(Vn=tt,tt=null):Vn=tt.sibling;var la=be(J,tt,Lt.value,ke);if(la===null){tt===null&&(tt=Vn);break}a&&tt&&la.alternate===null&&c(J,tt),U=E(la,U,dt),et===null?Je=la:et.sibling=la,et=la,tt=Vn}if(Lt.done)return p(J,tt),cn&&Ga(J,dt),Je;if(tt===null){for(;!Lt.done;dt++,Lt=ee.next())Lt=we(J,Lt.value,ke),Lt!==null&&(U=E(Lt,U,dt),et===null?Je=Lt:et.sibling=Lt,et=Lt);return cn&&Ga(J,dt),Je}for(tt=v(J,tt);!Lt.done;dt++,Lt=ee.next())Lt=De(tt,J,dt,Lt.value,ke),Lt!==null&&(a&&Lt.alternate!==null&&tt.delete(Lt.key===null?dt:Lt.key),U=E(Lt,U,dt),et===null?Je=Lt:et.sibling=Lt,et=Lt);return a&&tt.forEach(function(jD){return c(J,jD)}),cn&&Ga(J,dt),Je}function kn(J,U,ee,ke){if(typeof ee=="object"&&ee!==null&&ee.type===O&&ee.key===null&&(ee=ee.props.children),typeof ee=="object"&&ee!==null){switch(ee.$$typeof){case R:e:{for(var Je=ee.key,et=U;et!==null;){if(et.key===Je){if(Je=ee.type,Je===O){if(et.tag===7){p(J,et.sibling),U=S(et,ee.props.children),U.return=J,J=U;break e}}else if(et.elementType===Je||typeof Je=="object"&&Je!==null&&Je.$$typeof===re&&fS(Je)===et.type){p(J,et.sibling),U=S(et,ee.props),U.ref=$c(J,et,ee),U.return=J,J=U;break e}p(J,et);break}else c(J,et);et=et.sibling}ee.type===O?(U=ni(ee.props.children,J.mode,ke,ee.key),U.return=J,J=U):(ke=Nf(ee.type,ee.key,ee.props,null,J.mode,ke),ke.ref=$c(J,U,ee),ke.return=J,J=ke)}return T(J);case N:e:{for(et=ee.key;U!==null;){if(U.key===et)if(U.tag===4&&U.stateNode.containerInfo===ee.containerInfo&&U.stateNode.implementation===ee.implementation){p(J,U.sibling),U=S(U,ee.children||[]),U.return=J,J=U;break e}else{p(J,U);break}else c(J,U);U=U.sibling}U=tv(ee,J.mode,ke),U.return=J,J=U}return T(J);case re:return et=ee._init,kn(J,U,et(ee._payload),ke)}if(ue(ee))return He(J,U,ee,ke);if(q(ee))return Ke(J,U,ee,ke);rf(J,ee)}return typeof ee=="string"&&ee!==""||typeof ee=="number"?(ee=""+ee,U!==null&&U.tag===6?(p(J,U.sibling),U=S(U,ee),U.return=J,J=U):(p(J,U),U=ev(ee,J.mode,ke),U.return=J,J=U),T(J)):p(J,U)}return kn}var rl=pS(!0),hS=pS(!1),sf=Zo(null),of=null,sl=null,um=null;function dm(){um=sl=of=null}function fm(a){var c=sf.current;en(sf),a._currentValue=c}function pm(a,c,p){for(;a!==null;){var v=a.alternate;if((a.childLanes&c)!==c?(a.childLanes|=c,v!==null&&(v.childLanes|=c)):v!==null&&(v.childLanes&c)!==c&&(v.childLanes|=c),a===p)break;a=a.return}}function ol(a,c){of=a,um=sl=null,a=a.dependencies,a!==null&&a.firstContext!==null&&((a.lanes&c)!==0&&(xr=!0),a.firstContext=null)}function Yr(a){var c=a._currentValue;if(um!==a)if(a={context:a,memoizedValue:c,next:null},sl===null){if(of===null)throw Error(n(308));sl=a,of.dependencies={lanes:0,firstContext:a}}else sl=sl.next=a;return c}var Ja=null;function hm(a){Ja===null?Ja=[a]:Ja.push(a)}function gS(a,c,p,v){var S=c.interleaved;return S===null?(p.next=p,hm(c)):(p.next=S.next,S.next=p),c.interleaved=p,co(a,v)}function co(a,c){a.lanes|=c;var p=a.alternate;for(p!==null&&(p.lanes|=c),p=a,a=a.return;a!==null;)a.childLanes|=c,p=a.alternate,p!==null&&(p.childLanes|=c),p=a,a=a.return;return p.tag===3?p.stateNode:null}var ea=!1;function gm(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function mS(a,c){a=a.updateQueue,c.updateQueue===a&&(c.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function uo(a,c){return{eventTime:a,lane:c,tag:0,payload:null,callback:null,next:null}}function ta(a,c,p){var v=a.updateQueue;if(v===null)return null;if(v=v.shared,(Ft&2)!==0){var S=v.pending;return S===null?c.next=c:(c.next=S.next,S.next=c),v.pending=c,co(a,p)}return S=v.interleaved,S===null?(c.next=c,hm(v)):(c.next=S.next,S.next=c),v.interleaved=c,co(a,p)}function af(a,c,p){if(c=c.updateQueue,c!==null&&(c=c.shared,(p&4194240)!==0)){var v=c.lanes;v&=a.pendingLanes,p|=v,c.lanes=p,Mg(a,p)}}function vS(a,c){var p=a.updateQueue,v=a.alternate;if(v!==null&&(v=v.updateQueue,p===v)){var S=null,E=null;if(p=p.firstBaseUpdate,p!==null){do{var T={eventTime:p.eventTime,lane:p.lane,tag:p.tag,payload:p.payload,callback:p.callback,next:null};E===null?S=E=T:E=E.next=T,p=p.next}while(p!==null);E===null?S=E=c:E=E.next=c}else S=E=c;p={baseState:v.baseState,firstBaseUpdate:S,lastBaseUpdate:E,shared:v.shared,effects:v.effects},a.updateQueue=p;return}a=p.lastBaseUpdate,a===null?p.firstBaseUpdate=c:a.next=c,p.lastBaseUpdate=c}function lf(a,c,p,v){var S=a.updateQueue;ea=!1;var E=S.firstBaseUpdate,T=S.lastBaseUpdate,I=S.shared.pending;if(I!==null){S.shared.pending=null;var $=I,ae=$.next;$.next=null,T===null?E=ae:T.next=ae,T=$;var xe=a.alternate;xe!==null&&(xe=xe.updateQueue,I=xe.lastBaseUpdate,I!==T&&(I===null?xe.firstBaseUpdate=ae:I.next=ae,xe.lastBaseUpdate=$))}if(E!==null){var we=S.baseState;T=0,xe=ae=$=null,I=E;do{var be=I.lane,De=I.eventTime;if((v&be)===be){xe!==null&&(xe=xe.next={eventTime:De,lane:0,tag:I.tag,payload:I.payload,callback:I.callback,next:null});e:{var He=a,Ke=I;switch(be=c,De=p,Ke.tag){case 1:if(He=Ke.payload,typeof He=="function"){we=He.call(De,we,be);break e}we=He;break e;case 3:He.flags=He.flags&-65537|128;case 0:if(He=Ke.payload,be=typeof He=="function"?He.call(De,we,be):He,be==null)break e;we=he({},we,be);break e;case 2:ea=!0}}I.callback!==null&&I.lane!==0&&(a.flags|=64,be=S.effects,be===null?S.effects=[I]:be.push(I))}else De={eventTime:De,lane:be,tag:I.tag,payload:I.payload,callback:I.callback,next:null},xe===null?(ae=xe=De,$=we):xe=xe.next=De,T|=be;if(I=I.next,I===null){if(I=S.shared.pending,I===null)break;be=I,I=be.next,be.next=null,S.lastBaseUpdate=be,S.shared.pending=null}}while(!0);if(xe===null&&($=we),S.baseState=$,S.firstBaseUpdate=ae,S.lastBaseUpdate=xe,c=S.shared.interleaved,c!==null){S=c;do T|=S.lane,S=S.next;while(S!==c)}else E===null&&(S.shared.lanes=0);Ya|=T,a.lanes=T,a.memoizedState=we}}function yS(a,c,p){if(a=c.effects,c.effects=null,a!==null)for(c=0;cp?p:4,a(!0);var v=xm.transition;xm.transition={};try{a(!1),c()}finally{Kt=p,xm.transition=v}}function FS(){return Xr().memoizedState}function QA(a,c,p){var v=oa(a);if(p={lane:v,action:p,hasEagerState:!1,eagerState:null,next:null},LS(a))$S(c,p);else if(p=gS(a,c,p,v),p!==null){var S=ir();ys(p,a,v,S),BS(p,c,v)}}function ZA(a,c,p){var v=oa(a),S={lane:v,action:p,hasEagerState:!1,eagerState:null,next:null};if(LS(a))$S(c,S);else{var E=a.alternate;if(a.lanes===0&&(E===null||E.lanes===0)&&(E=c.lastRenderedReducer,E!==null))try{var T=c.lastRenderedState,I=E(T,p);if(S.hasEagerState=!0,S.eagerState=I,ps(I,T)){var $=c.interleaved;$===null?(S.next=S,hm(c)):(S.next=$.next,$.next=S),c.interleaved=S;return}}catch{}finally{}p=gS(a,c,S,v),p!==null&&(S=ir(),ys(p,a,v,S),BS(p,c,v))}}function LS(a){var c=a.alternate;return a===hn||c!==null&&c===hn}function $S(a,c){Vc=df=!0;var p=a.pending;p===null?c.next=c:(c.next=p.next,p.next=c),a.pending=c}function BS(a,c,p){if((p&4194240)!==0){var v=c.lanes;v&=a.pendingLanes,p|=v,c.lanes=p,Mg(a,p)}}var hf={readContext:Yr,useCallback:Yn,useContext:Yn,useEffect:Yn,useImperativeHandle:Yn,useInsertionEffect:Yn,useLayoutEffect:Yn,useMemo:Yn,useReducer:Yn,useRef:Yn,useState:Yn,useDebugValue:Yn,useDeferredValue:Yn,useTransition:Yn,useMutableSource:Yn,useSyncExternalStore:Yn,useId:Yn,unstable_isNewReconciler:!1},YA={readContext:Yr,useCallback:function(a,c){return Fs().memoizedState=[a,c===void 0?null:c],a},useContext:Yr,useEffect:MS,useImperativeHandle:function(a,c,p){return p=p!=null?p.concat([a]):null,ff(4194308,4,PS.bind(null,c,a),p)},useLayoutEffect:function(a,c){return ff(4194308,4,a,c)},useInsertionEffect:function(a,c){return ff(4,2,a,c)},useMemo:function(a,c){var p=Fs();return c=c===void 0?null:c,a=a(),p.memoizedState=[a,c],a},useReducer:function(a,c,p){var v=Fs();return c=p!==void 0?p(c):c,v.memoizedState=v.baseState=c,a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:c},v.queue=a,a=a.dispatch=QA.bind(null,hn,a),[v.memoizedState,a]},useRef:function(a){var c=Fs();return a={current:a},c.memoizedState=a},useState:TS,useDebugValue:Tm,useDeferredValue:function(a){return Fs().memoizedState=a},useTransition:function(){var a=TS(!1),c=a[0];return a=JA.bind(null,a[1]),Fs().memoizedState=a,[c,a]},useMutableSource:function(){},useSyncExternalStore:function(a,c,p){var v=hn,S=Fs();if(cn){if(p===void 0)throw Error(n(407));p=p()}else{if(p=c(),Un===null)throw Error(n(349));(Za&30)!==0||SS(v,c,p)}S.memoizedState=p;var E={value:p,getSnapshot:c};return S.queue=E,MS(ES.bind(null,v,E,a),[a]),v.flags|=2048,Kc(9,CS.bind(null,v,E,p,c),void 0,null),p},useId:function(){var a=Fs(),c=Un.identifierPrefix;if(cn){var p=lo,v=io;p=(v&~(1<<32-Tt(v)-1)).toString(32)+p,c=":"+c+"R"+p,p=Hc++,0<\/script>",a=a.removeChild(a.firstChild)):typeof v.is=="string"?a=T.createElement(p,{is:v.is}):(a=T.createElement(p),p==="select"&&(T=a,v.multiple?T.multiple=!0:v.size&&(T.size=v.size))):a=T.createElementNS(a,p),a[As]=c,a[Fc]=v,a0(a,c,!1,!1),c.stateNode=a;e:{switch(T=Tn(p,v),p){case"dialog":Xt("cancel",a),Xt("close",a),S=v;break;case"iframe":case"object":case"embed":Xt("load",a),S=v;break;case"video":case"audio":for(S=0;Sul&&(c.flags|=128,v=!0,Wc(E,!1),c.lanes=4194304)}else{if(!v)if(a=cf(T),a!==null){if(c.flags|=128,v=!0,p=a.updateQueue,p!==null&&(c.updateQueue=p,c.flags|=4),Wc(E,!0),E.tail===null&&E.tailMode==="hidden"&&!T.alternate&&!cn)return Xn(c),null}else 2*Gt()-E.renderingStartTime>ul&&p!==1073741824&&(c.flags|=128,v=!0,Wc(E,!1),c.lanes=4194304);E.isBackwards?(T.sibling=c.child,c.child=T):(p=E.last,p!==null?p.sibling=T:c.child=T,E.last=T)}return E.tail!==null?(c=E.tail,E.rendering=c,E.tail=c.sibling,E.renderingStartTime=Gt(),c.sibling=null,p=pn.current,Qt(pn,v?p&1|2:p&1),c):(Xn(c),null);case 22:case 23:return Zm(),v=c.memoizedState!==null,a!==null&&a.memoizedState!==null!==v&&(c.flags|=8192),v&&(c.mode&1)!==0?(Dr&1073741824)!==0&&(Xn(c),c.subtreeFlags&6&&(c.flags|=8192)):Xn(c),null;case 24:return null;case 25:return null}throw Error(n(156,c.tag))}function aD(a,c){switch(am(c),c.tag){case 1:return br(c.type)&&Zd(),a=c.flags,a&65536?(c.flags=a&-65537|128,c):null;case 3:return al(),en(yr),en(Zn),bm(),a=c.flags,(a&65536)!==0&&(a&128)===0?(c.flags=a&-65537|128,c):null;case 5:return vm(c),null;case 13:if(en(pn),a=c.memoizedState,a!==null&&a.dehydrated!==null){if(c.alternate===null)throw Error(n(340));nl()}return a=c.flags,a&65536?(c.flags=a&-65537|128,c):null;case 19:return en(pn),null;case 4:return al(),null;case 10:return fm(c.type._context),null;case 22:case 23:return Zm(),null;case 24:return null;default:return null}}var yf=!1,er=!1,iD=typeof WeakSet=="function"?WeakSet:Set,ze=null;function ll(a,c){var p=a.ref;if(p!==null)if(typeof p=="function")try{p(null)}catch(v){xn(a,c,v)}else p.current=null}function $m(a,c,p){try{p()}catch(v){xn(a,c,v)}}var c0=!1;function lD(a,c){if(Zg=Fd,a=zw(),Vg(a)){if("selectionStart"in a)var p={start:a.selectionStart,end:a.selectionEnd};else e:{p=(p=a.ownerDocument)&&p.defaultView||window;var v=p.getSelection&&p.getSelection();if(v&&v.rangeCount!==0){p=v.anchorNode;var S=v.anchorOffset,E=v.focusNode;v=v.focusOffset;try{p.nodeType,E.nodeType}catch{p=null;break e}var T=0,I=-1,$=-1,ae=0,xe=0,we=a,be=null;t:for(;;){for(var De;we!==p||S!==0&&we.nodeType!==3||(I=T+S),we!==E||v!==0&&we.nodeType!==3||($=T+v),we.nodeType===3&&(T+=we.nodeValue.length),(De=we.firstChild)!==null;)be=we,we=De;for(;;){if(we===a)break t;if(be===p&&++ae===S&&(I=T),be===E&&++xe===v&&($=T),(De=we.nextSibling)!==null)break;we=be,be=we.parentNode}we=De}p=I===-1||$===-1?null:{start:I,end:$}}else p=null}p=p||{start:0,end:0}}else p=null;for(Yg={focusedElem:a,selectionRange:p},Fd=!1,ze=c;ze!==null;)if(c=ze,a=c.child,(c.subtreeFlags&1028)!==0&&a!==null)a.return=c,ze=a;else for(;ze!==null;){c=ze;try{var He=c.alternate;if((c.flags&1024)!==0)switch(c.tag){case 0:case 11:case 15:break;case 1:if(He!==null){var Ke=He.memoizedProps,kn=He.memoizedState,J=c.stateNode,U=J.getSnapshotBeforeUpdate(c.elementType===c.type?Ke:gs(c.type,Ke),kn);J.__reactInternalSnapshotBeforeUpdate=U}break;case 3:var ee=c.stateNode.containerInfo;ee.nodeType===1?ee.textContent="":ee.nodeType===9&&ee.documentElement&&ee.removeChild(ee.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(n(163))}}catch(ke){xn(c,c.return,ke)}if(a=c.sibling,a!==null){a.return=c.return,ze=a;break}ze=c.return}return He=c0,c0=!1,He}function Gc(a,c,p){var v=c.updateQueue;if(v=v!==null?v.lastEffect:null,v!==null){var S=v=v.next;do{if((S.tag&a)===a){var E=S.destroy;S.destroy=void 0,E!==void 0&&$m(c,p,E)}S=S.next}while(S!==v)}}function bf(a,c){if(c=c.updateQueue,c=c!==null?c.lastEffect:null,c!==null){var p=c=c.next;do{if((p.tag&a)===a){var v=p.create;p.destroy=v()}p=p.next}while(p!==c)}}function Bm(a){var c=a.ref;if(c!==null){var p=a.stateNode;switch(a.tag){case 5:a=p;break;default:a=p}typeof c=="function"?c(a):c.current=a}}function u0(a){var c=a.alternate;c!==null&&(a.alternate=null,u0(c)),a.child=null,a.deletions=null,a.sibling=null,a.tag===5&&(c=a.stateNode,c!==null&&(delete c[As],delete c[Fc],delete c[nm],delete c[HA],delete c[qA])),a.stateNode=null,a.return=null,a.dependencies=null,a.memoizedProps=null,a.memoizedState=null,a.pendingProps=null,a.stateNode=null,a.updateQueue=null}function d0(a){return a.tag===5||a.tag===3||a.tag===4}function f0(a){e:for(;;){for(;a.sibling===null;){if(a.return===null||d0(a.return))return null;a=a.return}for(a.sibling.return=a.return,a=a.sibling;a.tag!==5&&a.tag!==6&&a.tag!==18;){if(a.flags&2||a.child===null||a.tag===4)continue e;a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}function zm(a,c,p){var v=a.tag;if(v===5||v===6)a=a.stateNode,c?p.nodeType===8?p.parentNode.insertBefore(a,c):p.insertBefore(a,c):(p.nodeType===8?(c=p.parentNode,c.insertBefore(a,p)):(c=p,c.appendChild(a)),p=p._reactRootContainer,p!=null||c.onclick!==null||(c.onclick=Jd));else if(v!==4&&(a=a.child,a!==null))for(zm(a,c,p),a=a.sibling;a!==null;)zm(a,c,p),a=a.sibling}function Um(a,c,p){var v=a.tag;if(v===5||v===6)a=a.stateNode,c?p.insertBefore(a,c):p.appendChild(a);else if(v!==4&&(a=a.child,a!==null))for(Um(a,c,p),a=a.sibling;a!==null;)Um(a,c,p),a=a.sibling}var qn=null,ms=!1;function na(a,c,p){for(p=p.child;p!==null;)p0(a,c,p),p=p.sibling}function p0(a,c,p){if(Dt&&typeof Dt.onCommitFiberUnmount=="function")try{Dt.onCommitFiberUnmount(pt,p)}catch{}switch(p.tag){case 5:er||ll(p,c);case 6:var v=qn,S=ms;qn=null,na(a,c,p),qn=v,ms=S,qn!==null&&(ms?(a=qn,p=p.stateNode,a.nodeType===8?a.parentNode.removeChild(p):a.removeChild(p)):qn.removeChild(p.stateNode));break;case 18:qn!==null&&(ms?(a=qn,p=p.stateNode,a.nodeType===8?tm(a.parentNode,p):a.nodeType===1&&tm(a,p),jc(a)):tm(qn,p.stateNode));break;case 4:v=qn,S=ms,qn=p.stateNode.containerInfo,ms=!0,na(a,c,p),qn=v,ms=S;break;case 0:case 11:case 14:case 15:if(!er&&(v=p.updateQueue,v!==null&&(v=v.lastEffect,v!==null))){S=v=v.next;do{var E=S,T=E.destroy;E=E.tag,T!==void 0&&((E&2)!==0||(E&4)!==0)&&$m(p,c,T),S=S.next}while(S!==v)}na(a,c,p);break;case 1:if(!er&&(ll(p,c),v=p.stateNode,typeof v.componentWillUnmount=="function"))try{v.props=p.memoizedProps,v.state=p.memoizedState,v.componentWillUnmount()}catch(I){xn(p,c,I)}na(a,c,p);break;case 21:na(a,c,p);break;case 22:p.mode&1?(er=(v=er)||p.memoizedState!==null,na(a,c,p),er=v):na(a,c,p);break;default:na(a,c,p)}}function h0(a){var c=a.updateQueue;if(c!==null){a.updateQueue=null;var p=a.stateNode;p===null&&(p=a.stateNode=new iD),c.forEach(function(v){var S=vD.bind(null,a,v);p.has(v)||(p.add(v),v.then(S,S))})}}function vs(a,c){var p=c.deletions;if(p!==null)for(var v=0;vS&&(S=T),v&=~E}if(v=S,v=Gt()-v,v=(120>v?120:480>v?480:1080>v?1080:1920>v?1920:3e3>v?3e3:4320>v?4320:1960*uD(v/1960))-v,10a?16:a,sa===null)var v=!1;else{if(a=sa,sa=null,Ef=0,(Ft&6)!==0)throw Error(n(331));var S=Ft;for(Ft|=4,ze=a.current;ze!==null;){var E=ze,T=E.child;if((ze.flags&16)!==0){var I=E.deletions;if(I!==null){for(var $=0;$Gt()-qm?ei(a,0):Hm|=p),Sr(a,c)}function T0(a,c){c===0&&((a.mode&1)===0?c=1:(c=Od,Od<<=1,(Od&130023424)===0&&(Od=4194304)));var p=ir();a=co(a,c),a!==null&&(wc(a,c,p),Sr(a,p))}function mD(a){var c=a.memoizedState,p=0;c!==null&&(p=c.retryLane),T0(a,p)}function vD(a,c){var p=0;switch(a.tag){case 13:var v=a.stateNode,S=a.memoizedState;S!==null&&(p=S.retryLane);break;case 19:v=a.stateNode;break;default:throw Error(n(314))}v!==null&&v.delete(c),T0(a,p)}var N0;N0=function(a,c,p){if(a!==null)if(a.memoizedProps!==c.pendingProps||yr.current)xr=!0;else{if((a.lanes&p)===0&&(c.flags&128)===0)return xr=!1,sD(a,c,p);xr=(a.flags&131072)!==0}else xr=!1,cn&&(c.flags&1048576)!==0&&iS(c,tf,c.index);switch(c.lanes=0,c.tag){case 2:var v=c.type;vf(a,c),a=c.pendingProps;var S=Xi(c,Zn.current);ol(c,p),S=Sm(null,c,v,a,S,p);var E=Cm();return c.flags|=1,typeof S=="object"&&S!==null&&typeof S.render=="function"&&S.$$typeof===void 0?(c.tag=1,c.memoizedState=null,c.updateQueue=null,br(v)?(E=!0,Yd(c)):E=!1,c.memoizedState=S.state!==null&&S.state!==void 0?S.state:null,gm(c),S.updater=gf,c.stateNode=S,S._reactInternals=c,Mm(c,v,a,p),c=Om(null,c,v,!0,E,p)):(c.tag=0,cn&&E&&om(c),ar(null,c,S,p),c=c.child),c;case 16:v=c.elementType;e:{switch(vf(a,c),a=c.pendingProps,S=v._init,v=S(v._payload),c.type=v,S=c.tag=bD(v),a=gs(v,a),S){case 0:c=Pm(null,c,v,a,p);break e;case 1:c=e0(null,c,v,a,p);break e;case 11:c=JS(null,c,v,a,p);break e;case 14:c=QS(null,c,v,gs(v.type,a),p);break e}throw Error(n(306,v,""))}return c;case 0:return v=c.type,S=c.pendingProps,S=c.elementType===v?S:gs(v,S),Pm(a,c,v,S,p);case 1:return v=c.type,S=c.pendingProps,S=c.elementType===v?S:gs(v,S),e0(a,c,v,S,p);case 3:e:{if(t0(c),a===null)throw Error(n(387));v=c.pendingProps,E=c.memoizedState,S=E.element,mS(a,c),lf(c,v,null,p);var T=c.memoizedState;if(v=T.element,E.isDehydrated)if(E={element:v,isDehydrated:!1,cache:T.cache,pendingSuspenseBoundaries:T.pendingSuspenseBoundaries,transitions:T.transitions},c.updateQueue.baseState=E,c.memoizedState=E,c.flags&256){S=il(Error(n(423)),c),c=n0(a,c,v,p,S);break e}else if(v!==S){S=il(Error(n(424)),c),c=n0(a,c,v,p,S);break e}else for(Ar=Qo(c.stateNode.containerInfo.firstChild),Ir=c,cn=!0,hs=null,p=hS(c,null,v,p),c.child=p;p;)p.flags=p.flags&-3|4096,p=p.sibling;else{if(nl(),v===S){c=fo(a,c,p);break e}ar(a,c,v,p)}c=c.child}return c;case 5:return bS(c),a===null&&lm(c),v=c.type,S=c.pendingProps,E=a!==null?a.memoizedProps:null,T=S.children,Xg(v,S)?T=null:E!==null&&Xg(v,E)&&(c.flags|=32),XS(a,c),ar(a,c,T,p),c.child;case 6:return a===null&&lm(c),null;case 13:return r0(a,c,p);case 4:return mm(c,c.stateNode.containerInfo),v=c.pendingProps,a===null?c.child=rl(c,null,v,p):ar(a,c,v,p),c.child;case 11:return v=c.type,S=c.pendingProps,S=c.elementType===v?S:gs(v,S),JS(a,c,v,S,p);case 7:return ar(a,c,c.pendingProps,p),c.child;case 8:return ar(a,c,c.pendingProps.children,p),c.child;case 12:return ar(a,c,c.pendingProps.children,p),c.child;case 10:e:{if(v=c.type._context,S=c.pendingProps,E=c.memoizedProps,T=S.value,Qt(sf,v._currentValue),v._currentValue=T,E!==null)if(ps(E.value,T)){if(E.children===S.children&&!yr.current){c=fo(a,c,p);break e}}else for(E=c.child,E!==null&&(E.return=c);E!==null;){var I=E.dependencies;if(I!==null){T=E.child;for(var $=I.firstContext;$!==null;){if($.context===v){if(E.tag===1){$=uo(-1,p&-p),$.tag=2;var ae=E.updateQueue;if(ae!==null){ae=ae.shared;var xe=ae.pending;xe===null?$.next=$:($.next=xe.next,xe.next=$),ae.pending=$}}E.lanes|=p,$=E.alternate,$!==null&&($.lanes|=p),pm(E.return,p,c),I.lanes|=p;break}$=$.next}}else if(E.tag===10)T=E.type===c.type?null:E.child;else if(E.tag===18){if(T=E.return,T===null)throw Error(n(341));T.lanes|=p,I=T.alternate,I!==null&&(I.lanes|=p),pm(T,p,c),T=E.sibling}else T=E.child;if(T!==null)T.return=E;else for(T=E;T!==null;){if(T===c){T=null;break}if(E=T.sibling,E!==null){E.return=T.return,T=E;break}T=T.return}E=T}ar(a,c,S.children,p),c=c.child}return c;case 9:return S=c.type,v=c.pendingProps.children,ol(c,p),S=Yr(S),v=v(S),c.flags|=1,ar(a,c,v,p),c.child;case 14:return v=c.type,S=gs(v,c.pendingProps),S=gs(v.type,S),QS(a,c,v,S,p);case 15:return ZS(a,c,c.type,c.pendingProps,p);case 17:return v=c.type,S=c.pendingProps,S=c.elementType===v?S:gs(v,S),vf(a,c),c.tag=1,br(v)?(a=!0,Yd(c)):a=!1,ol(c,p),US(c,v,S),Mm(c,v,S,p),Om(null,c,v,!0,a,p);case 19:return o0(a,c,p);case 22:return YS(a,c,p)}throw Error(n(156,c.tag))};function M0(a,c){return Nn(a,c)}function yD(a,c,p,v){this.tag=a,this.key=p,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=c,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=v,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function ts(a,c,p,v){return new yD(a,c,p,v)}function Xm(a){return a=a.prototype,!(!a||!a.isReactComponent)}function bD(a){if(typeof a=="function")return Xm(a)?1:0;if(a!=null){if(a=a.$$typeof,a===V)return 11;if(a===ie)return 14}return 2}function ia(a,c){var p=a.alternate;return p===null?(p=ts(a.tag,c,a.key,a.mode),p.elementType=a.elementType,p.type=a.type,p.stateNode=a.stateNode,p.alternate=a,a.alternate=p):(p.pendingProps=c,p.type=a.type,p.flags=0,p.subtreeFlags=0,p.deletions=null),p.flags=a.flags&14680064,p.childLanes=a.childLanes,p.lanes=a.lanes,p.child=a.child,p.memoizedProps=a.memoizedProps,p.memoizedState=a.memoizedState,p.updateQueue=a.updateQueue,c=a.dependencies,p.dependencies=c===null?null:{lanes:c.lanes,firstContext:c.firstContext},p.sibling=a.sibling,p.index=a.index,p.ref=a.ref,p}function Nf(a,c,p,v,S,E){var T=2;if(v=a,typeof a=="function")Xm(a)&&(T=1);else if(typeof a=="string")T=5;else e:switch(a){case O:return ni(p.children,S,E,c);case D:T=8,S|=8;break;case z:return a=ts(12,p,c,S|2),a.elementType=z,a.lanes=E,a;case G:return a=ts(13,p,c,S),a.elementType=G,a.lanes=E,a;case W:return a=ts(19,p,c,S),a.elementType=W,a.lanes=E,a;case Y:return Mf(p,S,E,c);default:if(typeof a=="object"&&a!==null)switch(a.$$typeof){case Q:T=10;break e;case pe:T=9;break e;case V:T=11;break e;case ie:T=14;break e;case re:T=16,v=null;break e}throw Error(n(130,a==null?a:typeof a,""))}return c=ts(T,p,c,S),c.elementType=a,c.type=v,c.lanes=E,c}function ni(a,c,p,v){return a=ts(7,a,v,c),a.lanes=p,a}function Mf(a,c,p,v){return a=ts(22,a,v,c),a.elementType=Y,a.lanes=p,a.stateNode={isHidden:!1},a}function ev(a,c,p){return a=ts(6,a,null,c),a.lanes=p,a}function tv(a,c,p){return c=ts(4,a.children!==null?a.children:[],a.key,c),c.lanes=p,c.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation},c}function xD(a,c,p,v,S){this.tag=c,this.containerInfo=a,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Ng(0),this.expirationTimes=Ng(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ng(0),this.identifierPrefix=v,this.onRecoverableError=S,this.mutableSourceEagerHydrationData=null}function nv(a,c,p,v,S,E,T,I,$){return a=new xD(a,c,p,I,$),c===1?(c=1,E===!0&&(c|=8)):c=0,E=ts(3,null,null,c),a.current=E,E.stateNode=a,E.memoizedState={element:v,isDehydrated:p,cache:null,transitions:null,pendingSuspenseBoundaries:null},gm(E),a}function wD(a,c,p){var v=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}return e(),cv.exports=fF(),cv.exports}var Q0;function pF(){if(Q0)return Ff;Q0=1;var e=tj();return Ff.createRoot=e.createRoot,Ff.hydrateRoot=e.hydrateRoot,Ff}var hF=pF();const gF=fd(hF),mF=(...e)=>{console?.warn&&(fi(e[0])&&(e[0]=`react-i18next:: ${e[0]}`),console.warn(...e))},Z0={},jy=(...e)=>{fi(e[0])&&Z0[e[0]]||(fi(e[0])&&(Z0[e[0]]=new Date),mF(...e))},nj=(e,t)=>()=>{if(e.isInitialized)t();else{const n=()=>{setTimeout(()=>{e.off("initialized",n)},0),t()};e.on("initialized",n)}},Y0=(e,t,n)=>{e.loadNamespaces(t,nj(e,n))},X0=(e,t,n,r)=>{fi(n)&&(n=[n]),n.forEach(s=>{e.options.ns.indexOf(s)<0&&e.options.ns.push(s)}),e.loadLanguages(t,nj(e,r))},vF=(e,t,n={})=>!t.languages||!t.languages.length?(jy("i18n.languages were undefined or empty",t.languages),!0):t.hasLoadedNamespace(e,{lng:n.lng,precheck:(r,s)=>{if(n.bindI18n?.indexOf("languageChanging")>-1&&r.services.backendConnector.backend&&r.isLanguageChangingTo&&!s(r.isLanguageChangingTo,e))return!1}}),fi=e=>typeof e=="string",yF=e=>typeof e=="object"&&e!==null,bF=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,xF={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"},wF=e=>xF[e],SF=e=>e.replace(bF,wF);let Ty={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:SF};const CF=(e={})=>{Ty={...Ty,...e}},EF=()=>Ty;let rj;const kF=e=>{rj=e},jF=()=>rj,TF={type:"3rdParty",init(e){CF(e.options.react),kF(e)}},sj=y.createContext();class NF{constructor(){this.usedNamespaces={}}addUsedNamespaces(t){t.forEach(n=>{this.usedNamespaces[n]??=!0})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}const MF=(e,t)=>{const n=y.useRef();return y.useEffect(()=>{n.current=e},[e,t]),n.current},oj=(e,t,n,r)=>e.getFixedT(t,n,r),_F=(e,t,n,r)=>y.useCallback(oj(e,t,n,r),[e,t,n,r]),Ve=(e,t={})=>{const{i18n:n}=t,{i18n:r,defaultNS:s}=y.useContext(sj)||{},o=n||r||jF();if(o&&!o.reportNamespaces&&(o.reportNamespaces=new NF),!o){jy("You will need to pass in an i18next instance by using initReactI18next");const _=(N,O)=>fi(O)?O:yF(O)&&fi(O.defaultValue)?O.defaultValue:Array.isArray(N)?N[N.length-1]:N,R=[_,{},!1];return R.t=_,R.i18n={},R.ready=!1,R}o.options.react?.wait&&jy("It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");const l={...EF(),...o.options.react,...t},{useSuspense:u,keyPrefix:d}=l;let f=s||o.options?.defaultNS;f=fi(f)?[f]:f||["translation"],o.reportNamespaces.addUsedNamespaces?.(f);const h=(o.isInitialized||o.initializedStoreOnce)&&f.every(_=>vF(_,o,l)),m=_F(o,t.lng||null,l.nsMode==="fallback"?f:f[0],d),g=()=>m,x=()=>oj(o,t.lng||null,l.nsMode==="fallback"?f:f[0],d),[b,w]=y.useState(g);let C=f.join();t.lng&&(C=`${t.lng}${C}`);const k=MF(C),j=y.useRef(!0);y.useEffect(()=>{const{bindI18n:_,bindI18nStore:R}=l;j.current=!0,!h&&!u&&(t.lng?X0(o,t.lng,f,()=>{j.current&&w(x)}):Y0(o,f,()=>{j.current&&w(x)})),h&&k&&k!==C&&j.current&&w(x);const N=()=>{j.current&&w(x)};return _&&o?.on(_,N),R&&o?.store.on(R,N),()=>{j.current=!1,o&&_?.split(" ").forEach(O=>o.off(O,N)),R&&o&&R.split(" ").forEach(O=>o.store.off(O,N))}},[o,C]),y.useEffect(()=>{j.current&&h&&w(g)},[o,d,h]);const M=[b,o,h];if(M.t=b,M.i18n=o,M.ready=h,h||!h&&!u)return M;throw new Promise(_=>{t.lng?X0(o,t.lng,f,()=>_()):Y0(o,f,()=>_())})};function RF({i18n:e,defaultNS:t,children:n}){const r=y.useMemo(()=>({i18n:e,defaultNS:t}),[e,t]);return y.createElement(sj.Provider,{value:r},n)}var Ma=tj();const Ib=fd(Ma),PF=Bk({__proto__:null,default:Ib},[Ma]);/** - * @remix-run/router v1.18.0 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */function mn(){return mn=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u")throw new Error(t)}function Ll(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function IF(){return Math.random().toString(36).substr(2,8)}function tC(e,t){return{usr:e.state,key:e.key,idx:t}}function Iu(e,t,n,r){return n===void 0&&(n=null),mn({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof t=="string"?_a(t):t,{state:n,key:t&&t.key||r||IF()})}function wi(e){let{pathname:t="/",search:n="",hash:r=""}=e;return n&&n!=="?"&&(t+=n.charAt(0)==="?"?n:"?"+n),r&&r!=="#"&&(t+=r.charAt(0)==="#"?r:"#"+r),t}function _a(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substr(n),e=e.substr(0,n));let r=e.indexOf("?");r>=0&&(t.search=e.substr(r),e=e.substr(0,r)),e&&(t.pathname=e)}return t}function AF(e,t,n,r){r===void 0&&(r={});let{window:s=document.defaultView,v5Compat:o=!1}=r,l=s.history,u=_n.Pop,d=null,f=h();f==null&&(f=0,l.replaceState(mn({},l.state,{idx:f}),""));function h(){return(l.state||{idx:null}).idx}function m(){u=_n.Pop;let C=h(),k=C==null?null:C-f;f=C,d&&d({action:u,location:w.location,delta:k})}function g(C,k){u=_n.Push;let j=Iu(w.location,C,k);f=h()+1;let M=tC(j,f),_=w.createHref(j);try{l.pushState(M,"",_)}catch(R){if(R instanceof DOMException&&R.name==="DataCloneError")throw R;s.location.assign(_)}o&&d&&d({action:u,location:w.location,delta:1})}function x(C,k){u=_n.Replace;let j=Iu(w.location,C,k);f=h();let M=tC(j,f),_=w.createHref(j);l.replaceState(M,"",_),o&&d&&d({action:u,location:w.location,delta:0})}function b(C){let k=s.location.origin!=="null"?s.location.origin:s.location.href,j=typeof C=="string"?C:wi(C);return j=j.replace(/ $/,"%20"),Ct(k,"No window.location.(origin|href) available to create URL for href: "+j),new URL(j,k)}let w={get action(){return u},get location(){return e(s,l)},listen(C){if(d)throw new Error("A history only accepts one active listener");return s.addEventListener(eC,m),d=C,()=>{s.removeEventListener(eC,m),d=null}},createHref(C){return t(s,C)},createURL:b,encodeLocation(C){let k=b(C);return{pathname:k.pathname,search:k.search,hash:k.hash}},push:g,replace:x,go(C){return l.go(C)}};return w}var Zt;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(Zt||(Zt={}));const DF=new Set(["lazy","caseSensitive","path","id","index","children"]);function FF(e){return e.index===!0}function Au(e,t,n,r){return n===void 0&&(n=[]),r===void 0&&(r={}),e.map((s,o)=>{let l=[...n,String(o)],u=typeof s.id=="string"?s.id:l.join("-");if(Ct(s.index!==!0||!s.children,"Cannot specify children on an index route"),Ct(!r[u],'Found a route id collision on id "'+u+`". Route id's must be globally unique within Data Router usages`),FF(s)){let d=mn({},s,t(s),{id:u});return r[u]=d,d}else{let d=mn({},s,t(s),{id:u,children:void 0});return r[u]=d,s.children&&(d.children=Au(s.children,t,l,r)),d}})}function oi(e,t,n){return n===void 0&&(n="/"),cp(e,t,n,!1)}function cp(e,t,n,r){let s=typeof t=="string"?_a(t):t,o=Xl(s.pathname||"/",n);if(o==null)return null;let l=aj(e);$F(l);let u=null;for(let d=0;u==null&&d{let d={relativePath:u===void 0?o.path||"":u,caseSensitive:o.caseSensitive===!0,childrenIndex:l,route:o};d.relativePath.startsWith("/")&&(Ct(d.relativePath.startsWith(r),'Absolute route path "'+d.relativePath+'" nested under path '+('"'+r+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),d.relativePath=d.relativePath.slice(r.length));let f=To([r,d.relativePath]),h=n.concat(d);o.children&&o.children.length>0&&(Ct(o.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+f+'".')),aj(o.children,t,h,f)),!(o.path==null&&!o.index)&&t.push({path:f,score:KF(f,o.index),routesMeta:h})};return e.forEach((o,l)=>{var u;if(o.path===""||!((u=o.path)!=null&&u.includes("?")))s(o,l);else for(let d of ij(o.path))s(o,l,d)}),t}function ij(e){let t=e.split("/");if(t.length===0)return[];let[n,...r]=t,s=n.endsWith("?"),o=n.replace(/\?$/,"");if(r.length===0)return s?[o,""]:[o];let l=ij(r.join("/")),u=[];return u.push(...l.map(d=>d===""?o:[o,d].join("/"))),s&&u.push(...l),u.map(d=>e.startsWith("/")&&d===""?"/":d)}function $F(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:WF(t.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}const BF=/^:[\w-]+$/,zF=3,UF=2,VF=1,HF=10,qF=-2,nC=e=>e==="*";function KF(e,t){let n=e.split("/"),r=n.length;return n.some(nC)&&(r+=qF),t&&(r+=UF),n.filter(s=>!nC(s)).reduce((s,o)=>s+(BF.test(o)?zF:o===""?VF:HF),r)}function WF(e,t){return e.length===t.length&&e.slice(0,-1).every((r,s)=>r===t[s])?e[e.length-1]-t[t.length-1]:0}function GF(e,t,n){n===void 0&&(n=!1);let{routesMeta:r}=e,s={},o="/",l=[];for(let u=0;u{let{paramName:g,isOptional:x}=h;if(g==="*"){let w=u[m]||"";l=o.slice(0,o.length-w.length).replace(/(.)\/+$/,"$1")}const b=u[m];return x&&!b?f[g]=void 0:f[g]=(b||"").replace(/%2F/g,"/"),f},{}),pathname:o,pathnameBase:l,pattern:e}}function JF(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!0),Ll(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let r=[],s="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(l,u,d)=>(r.push({paramName:u,isOptional:d!=null}),d?"/?([^\\/]+)?":"/([^\\/]+)"));return e.endsWith("*")?(r.push({paramName:"*"}),s+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?s+="\\/*$":e!==""&&e!=="/"&&(s+="(?:(?=\\/|$))"),[new RegExp(s,t?void 0:"i"),r]}function QF(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return Ll(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+t+").")),e}}function Xl(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,r=e.charAt(n);return r&&r!=="/"?null:e.slice(n)||"/"}function ZF(e,t){t===void 0&&(t="/");let{pathname:n,search:r="",hash:s=""}=typeof e=="string"?_a(e):e;return{pathname:n?n.startsWith("/")?n:YF(n,t):t,search:e2(r),hash:t2(s)}}function YF(e,t){let n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(s=>{s===".."?n.length>1&&n.pop():s!=="."&&n.push(s)}),n.length>1?n.join("/"):"/"}function fv(e,t,n,r){return"Cannot include a '"+e+"' character in a manually specified "+("`to."+t+"` field ["+JSON.stringify(r)+"]. Please separate it out to the ")+("`to."+n+"` field. Alternatively you may provide the full path as ")+'a string in and the router will parse it for you.'}function lj(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function hh(e,t){let n=lj(e);return t?n.map((r,s)=>s===n.length-1?r.pathname:r.pathnameBase):n.map(r=>r.pathnameBase)}function gh(e,t,n,r){r===void 0&&(r=!1);let s;typeof e=="string"?s=_a(e):(s=mn({},e),Ct(!s.pathname||!s.pathname.includes("?"),fv("?","pathname","search",s)),Ct(!s.pathname||!s.pathname.includes("#"),fv("#","pathname","hash",s)),Ct(!s.search||!s.search.includes("#"),fv("#","search","hash",s)));let o=e===""||s.pathname==="",l=o?"/":s.pathname,u;if(l==null)u=n;else{let m=t.length-1;if(!r&&l.startsWith("..")){let g=l.split("/");for(;g[0]==="..";)g.shift(),m-=1;s.pathname=g.join("/")}u=m>=0?t[m]:"/"}let d=ZF(s,u),f=l&&l!=="/"&&l.endsWith("/"),h=(o||l===".")&&n.endsWith("/");return!d.pathname.endsWith("/")&&(f||h)&&(d.pathname+="/"),d}const To=e=>e.join("/").replace(/\/\/+/g,"/"),XF=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),e2=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,t2=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;class Ab{constructor(t,n,r,s){s===void 0&&(s=!1),this.status=t,this.statusText=n||"",this.internal=s,r instanceof Error?(this.data=r.toString(),this.error=r):this.data=r}}function mh(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const cj=["post","put","patch","delete"],n2=new Set(cj),r2=["get",...cj],s2=new Set(r2),o2=new Set([301,302,303,307,308]),a2=new Set([307,308]),pv={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},i2={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},eu={state:"unblocked",proceed:void 0,reset:void 0,location:void 0},Db=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,l2=e=>({hasErrorBoundary:!!e.hasErrorBoundary}),uj="remix-router-transitions";function c2(e){const t=e.window?e.window:typeof window<"u"?window:void 0,n=typeof t<"u"&&typeof t.document<"u"&&typeof t.document.createElement<"u",r=!n;Ct(e.routes.length>0,"You must provide a non-empty routes array to createRouter");let s;if(e.mapRouteProperties)s=e.mapRouteProperties;else if(e.detectErrorBoundary){let B=e.detectErrorBoundary;s=K=>({hasErrorBoundary:B(K)})}else s=l2;let o={},l=Au(e.routes,s,void 0,o),u,d=e.basename||"/",f=e.unstable_dataStrategy||h2,h=e.unstable_patchRoutesOnMiss,m=mn({v7_fetcherPersist:!1,v7_normalizeFormMethod:!1,v7_partialHydration:!1,v7_prependBasename:!1,v7_relativeSplatPath:!1,v7_skipActionErrorRevalidation:!1},e.future),g=null,x=new Set,b=null,w=null,C=null,k=e.hydrationData!=null,j=oi(l,e.history.location,d),M=null;if(j==null&&!h){let B=lr(404,{pathname:e.history.location.pathname}),{matches:K,route:oe}=pC(l);j=K,M={[oe.id]:B}}j&&h&&!e.hydrationData&&Ba(j,l,e.history.location.pathname).active&&(j=null);let _;if(!j)_=!1,j=[];else if(j.some(B=>B.route.lazy))_=!1;else if(!j.some(B=>B.route.loader))_=!0;else if(m.v7_partialHydration){let B=e.hydrationData?e.hydrationData.loaderData:null,K=e.hydrationData?e.hydrationData.errors:null,oe=ve=>ve.route.loader?typeof ve.route.loader=="function"&&ve.route.loader.hydrate===!0?!1:B&&B[ve.route.id]!==void 0||K&&K[ve.route.id]!==void 0:!0;if(K){let ve=j.findIndex(Oe=>K[Oe.route.id]!==void 0);_=j.slice(0,ve+1).every(oe)}else _=j.every(oe)}else _=e.hydrationData!=null;let R,N={historyAction:e.history.action,location:e.history.location,matches:j,initialized:_,navigation:pv,restoreScrollPosition:e.hydrationData!=null?!1:null,preventScrollReset:!1,revalidation:"idle",loaderData:e.hydrationData&&e.hydrationData.loaderData||{},actionData:e.hydrationData&&e.hydrationData.actionData||null,errors:e.hydrationData&&e.hydrationData.errors||M,fetchers:new Map,blockers:new Map},O=_n.Pop,D=!1,z,Q=!1,pe=new Map,V=null,G=!1,W=!1,ie=[],re=[],Y=new Map,H=0,q=-1,he=new Map,A=new Set,F=new Map,fe=new Map,te=new Set,de=new Map,ge=new Map,Z=new Map,ye=!1;function Re(){if(g=e.history.listen(B=>{let{action:K,location:oe,delta:ve}=B;if(ye){ye=!1;return}Ll(ge.size===0||ve!=null,"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.");let Oe=Gr({currentLocation:N.location,nextLocation:oe,historyAction:K});if(Oe&&ve!=null){ye=!0,e.history.go(ve*-1),vr(Oe,{state:"blocked",location:oe,proceed(){vr(Oe,{state:"proceeding",proceed:void 0,reset:void 0,location:oe}),e.history.go(ve)},reset(){let We=new Map(N.blockers);We.set(Oe,eu),Fe({blockers:We})}});return}return vn(K,oe)}),n){T2(t,pe);let B=()=>N2(t,pe);t.addEventListener("pagehide",B),V=()=>t.removeEventListener("pagehide",B)}return N.initialized||vn(_n.Pop,N.location,{initialHydration:!0}),R}function $e(){g&&g(),V&&V(),x.clear(),z&&z.abort(),N.fetchers.forEach((B,K)=>Qn(K)),N.blockers.forEach((B,K)=>mr(K))}function Ye(B){return x.add(B),()=>x.delete(B)}function Fe(B,K){K===void 0&&(K={}),N=mn({},N,B);let oe=[],ve=[];m.v7_fetcherPersist&&N.fetchers.forEach((Oe,We)=>{Oe.state==="idle"&&(te.has(We)?ve.push(We):oe.push(We))}),[...x].forEach(Oe=>Oe(N,{deletedFetchers:ve,unstable_viewTransitionOpts:K.viewTransitionOpts,unstable_flushSync:K.flushSync===!0})),m.v7_fetcherPersist&&(oe.forEach(Oe=>N.fetchers.delete(Oe)),ve.forEach(Oe=>Qn(Oe)))}function ft(B,K,oe){var ve,Oe;let{flushSync:We}=oe===void 0?{}:oe,st=N.actionData!=null&&N.navigation.formMethod!=null&&bs(N.navigation.formMethod)&&N.navigation.state==="loading"&&((ve=B.state)==null?void 0:ve._isRedirect)!==!0,Me;K.actionData?Object.keys(K.actionData).length>0?Me=K.actionData:Me=null:st?Me=N.actionData:Me=null;let ht=K.loaderData?dC(N.loaderData,K.loaderData,K.matches||[],K.errors):N.loaderData,Ge=N.blockers;Ge.size>0&&(Ge=new Map(Ge),Ge.forEach((Vt,Ht)=>Ge.set(Ht,eu)));let Xe=D===!0||N.navigation.formMethod!=null&&bs(N.navigation.formMethod)&&((Oe=B.state)==null?void 0:Oe._isRedirect)!==!0;u&&(l=u,u=void 0),G||O===_n.Pop||(O===_n.Push?e.history.push(B,B.state):O===_n.Replace&&e.history.replace(B,B.state));let Ut;if(O===_n.Pop){let Vt=pe.get(N.location.pathname);Vt&&Vt.has(B.pathname)?Ut={currentLocation:N.location,nextLocation:B}:pe.has(B.pathname)&&(Ut={currentLocation:B,nextLocation:N.location})}else if(Q){let Vt=pe.get(N.location.pathname);Vt?Vt.add(B.pathname):(Vt=new Set([B.pathname]),pe.set(N.location.pathname,Vt)),Ut={currentLocation:N.location,nextLocation:B}}Fe(mn({},K,{actionData:Me,loaderData:ht,historyAction:O,location:B,initialized:!0,navigation:pv,revalidation:"idle",restoreScrollPosition:yc(B,K.matches||N.matches),preventScrollReset:Xe,blockers:Ge}),{viewTransitionOpts:Ut,flushSync:We===!0}),O=_n.Pop,D=!1,Q=!1,G=!1,W=!1,ie=[],re=[]}async function ln(B,K){if(typeof B=="number"){e.history.go(B);return}let oe=Ny(N.location,N.matches,d,m.v7_prependBasename,B,m.v7_relativeSplatPath,K?.fromRouteId,K?.relative),{path:ve,submission:Oe,error:We}=sC(m.v7_normalizeFormMethod,!1,oe,K),st=N.location,Me=Iu(N.location,ve,K&&K.state);Me=mn({},Me,e.history.encodeLocation(Me));let ht=K&&K.replace!=null?K.replace:void 0,Ge=_n.Push;ht===!0?Ge=_n.Replace:ht===!1||Oe!=null&&bs(Oe.formMethod)&&Oe.formAction===N.location.pathname+N.location.search&&(Ge=_n.Replace);let Xe=K&&"preventScrollReset"in K?K.preventScrollReset===!0:void 0,Ut=(K&&K.unstable_flushSync)===!0,Vt=Gr({currentLocation:st,nextLocation:Me,historyAction:Ge});if(Vt){vr(Vt,{state:"blocked",location:Me,proceed(){vr(Vt,{state:"proceeding",proceed:void 0,reset:void 0,location:Me}),ln(B,K)},reset(){let Ht=new Map(N.blockers);Ht.set(Vt,eu),Fe({blockers:Ht})}});return}return await vn(Ge,Me,{submission:Oe,pendingError:We,preventScrollReset:Xe,replace:K&&K.replace,enableViewTransition:K&&K.unstable_viewTransition,flushSync:Ut})}function Sn(){if(yn(),Fe({revalidation:"loading"}),N.navigation.state!=="submitting"){if(N.navigation.state==="idle"){vn(N.historyAction,N.location,{startUninterruptedRevalidation:!0});return}vn(O||N.historyAction,N.navigation.location,{overrideNavigation:N.navigation})}}async function vn(B,K,oe){z&&z.abort(),z=null,O=B,G=(oe&&oe.startUninterruptedRevalidation)===!0,_d(N.location,N.matches),D=(oe&&oe.preventScrollReset)===!0,Q=(oe&&oe.enableViewTransition)===!0;let ve=u||l,Oe=oe&&oe.overrideNavigation,We=oi(ve,K,d),st=(oe&&oe.flushSync)===!0,Me=Ba(We,ve,K.pathname);if(Me.active&&Me.matches&&(We=Me.matches),!We){let{error:At,notFoundMatches:Nn,route:fn}=Jr(K.pathname);ft(K,{matches:Nn,loaderData:{},errors:{[fn.id]:At}},{flushSync:st});return}if(N.initialized&&!W&&x2(N.location,K)&&!(oe&&oe.submission&&bs(oe.submission.formMethod))){ft(K,{matches:We},{flushSync:st});return}z=new AbortController;let ht=fl(e.history,K,z.signal,oe&&oe.submission),Ge;if(oe&&oe.pendingError)Ge=[jl(We).route.id,{type:Zt.error,error:oe.pendingError}];else if(oe&&oe.submission&&bs(oe.submission.formMethod)){let At=await Cn(ht,K,oe.submission,We,Me.active,{replace:oe.replace,flushSync:st});if(At.shortCircuited)return;if(At.pendingActionResult){let[Nn,fn]=At.pendingActionResult;if(Br(fn)&&mh(fn.error)&&fn.error.status===404){z=null,ft(K,{matches:At.matches,loaderData:{},errors:{[Nn]:fn.error}});return}}We=At.matches||We,Ge=At.pendingActionResult,Oe=hv(K,oe.submission),st=!1,Me.active=!1,ht=fl(e.history,ht.url,ht.signal)}let{shortCircuited:Xe,matches:Ut,loaderData:Vt,errors:Ht}=await L(ht,K,We,Me.active,Oe,oe&&oe.submission,oe&&oe.fetcherSubmission,oe&&oe.replace,oe&&oe.initialHydration===!0,st,Ge);Xe||(z=null,ft(K,mn({matches:Ut||We},fC(Ge),{loaderData:Vt,errors:Ht})))}async function Cn(B,K,oe,ve,Oe,We){We===void 0&&(We={}),yn();let st=k2(K,oe);if(Fe({navigation:st},{flushSync:We.flushSync===!0}),Oe){let Ge=await za(ve,K.pathname,B.signal);if(Ge.type==="aborted")return{shortCircuited:!0};if(Ge.type==="error"){let{boundaryId:Xe,error:Ut}=_r(K.pathname,Ge);return{matches:Ge.partialMatches,pendingActionResult:[Xe,{type:Zt.error,error:Ut}]}}else if(Ge.matches)ve=Ge.matches;else{let{notFoundMatches:Xe,error:Ut,route:Vt}=Jr(K.pathname);return{matches:Xe,pendingActionResult:[Vt.id,{type:Zt.error,error:Ut}]}}}let Me,ht=gu(ve,K);if(!ht.route.action&&!ht.route.lazy)Me={type:Zt.error,error:lr(405,{method:B.method,pathname:K.pathname,routeId:ht.route.id})};else if(Me=(await bt("action",B,[ht],ve))[0],B.signal.aborted)return{shortCircuited:!0};if(ii(Me)){let Ge;return We&&We.replace!=null?Ge=We.replace:Ge=lC(Me.response.headers.get("Location"),new URL(B.url),d)===N.location.pathname+N.location.search,await Be(B,Me,{submission:oe,replace:Ge}),{shortCircuited:!0}}if(ai(Me))throw lr(400,{type:"defer-action"});if(Br(Me)){let Ge=jl(ve,ht.route.id);return(We&&We.replace)!==!0&&(O=_n.Push),{matches:ve,pendingActionResult:[Ge.route.id,Me]}}return{matches:ve,pendingActionResult:[ht.route.id,Me]}}async function L(B,K,oe,ve,Oe,We,st,Me,ht,Ge,Xe){let Ut=Oe||hv(K,We),Vt=We||st||mC(Ut),Ht=!G&&(!m.v7_partialHydration||!ht);if(ve){if(Ht){let Dt=X(Xe);Fe(mn({navigation:Ut},Dt!==void 0?{actionData:Dt}:{}),{flushSync:Ge})}let pt=await za(oe,K.pathname,B.signal);if(pt.type==="aborted")return{shortCircuited:!0};if(pt.type==="error"){let{boundaryId:Dt,error:or}=_r(K.pathname,pt);return{matches:pt.partialMatches,loaderData:{},errors:{[Dt]:or}}}else if(pt.matches)oe=pt.matches;else{let{error:Dt,notFoundMatches:or,route:Tt}=Jr(K.pathname);return{matches:or,loaderData:{},errors:{[Tt.id]:Dt}}}}let At=u||l,[Nn,fn]=oC(e.history,N,oe,Vt,K,m.v7_partialHydration&&ht===!0,m.v7_skipActionErrorRevalidation,W,ie,re,te,F,A,At,d,Xe);if(Rr(pt=>!(oe&&oe.some(Dt=>Dt.route.id===pt))||Nn&&Nn.some(Dt=>Dt.route.id===pt)),q=++H,Nn.length===0&&fn.length===0){let pt=ut();return ft(K,mn({matches:oe,loaderData:{},errors:Xe&&Br(Xe[1])?{[Xe[0]]:Xe[1].error}:null},fC(Xe),pt?{fetchers:new Map(N.fetchers)}:{}),{flushSync:Ge}),{shortCircuited:!0}}if(Ht){let pt={};if(!ve){pt.navigation=Ut;let Dt=X(Xe);Dt!==void 0&&(pt.actionData=Dt)}fn.length>0&&(pt.fetchers=ue(fn)),Fe(pt,{flushSync:Ge})}fn.forEach(pt=>{Y.has(pt.key)&&Bn(pt.key),pt.controller&&Y.set(pt.key,pt.controller)});let Va=()=>fn.forEach(pt=>Bn(pt.key));z&&z.signal.addEventListener("abort",Va);let{loaderResults:Os,fetcherResults:Gt}=await Wt(N.matches,oe,Nn,fn,B);if(B.signal.aborted)return{shortCircuited:!0};z&&z.signal.removeEventListener("abort",Va),fn.forEach(pt=>Y.delete(pt.key));let Vo=hC([...Os,...Gt]);if(Vo){if(Vo.idx>=Nn.length){let pt=fn[Vo.idx-Nn.length].key;A.add(pt)}return await Be(B,Vo.result,{replace:Me}),{shortCircuited:!0}}let{loaderData:Is,errors:Pr}=uC(N,oe,Nn,Os,Xe,fn,Gt,de);de.forEach((pt,Dt)=>{pt.subscribe(or=>{(or||pt.done)&&de.delete(Dt)})}),m.v7_partialHydration&&ht&&N.errors&&Object.entries(N.errors).filter(pt=>{let[Dt]=pt;return!Nn.some(or=>or.route.id===Dt)}).forEach(pt=>{let[Dt,or]=pt;Pr=Object.assign(Pr||{},{[Dt]:or})});let so=ut(),Vi=It(q),Ha=so||Vi||fn.length>0;return mn({matches:oe,loaderData:Is,errors:Pr},Ha?{fetchers:new Map(N.fetchers)}:{})}function X(B){if(B&&!Br(B[1]))return{[B[0]]:B[1].data};if(N.actionData)return Object.keys(N.actionData).length===0?null:N.actionData}function ue(B){return B.forEach(K=>{let oe=N.fetchers.get(K.key),ve=tu(void 0,oe?oe.data:void 0);N.fetchers.set(K.key,ve)}),new Map(N.fetchers)}function Ne(B,K,oe,ve){if(r)throw new Error("router.fetch() was called during the server render, but it shouldn't be. You are likely calling a useFetcher() method in the body of your component. Try moving it to a useEffect or a callback.");Y.has(B)&&Bn(B);let Oe=(ve&&ve.unstable_flushSync)===!0,We=u||l,st=Ny(N.location,N.matches,d,m.v7_prependBasename,oe,m.v7_relativeSplatPath,K,ve?.relative),Me=oi(We,st,d),ht=Ba(Me,We,st);if(ht.active&&ht.matches&&(Me=ht.matches),!Me){En(B,K,lr(404,{pathname:st}),{flushSync:Oe});return}let{path:Ge,submission:Xe,error:Ut}=sC(m.v7_normalizeFormMethod,!0,st,ve);if(Ut){En(B,K,Ut,{flushSync:Oe});return}let Vt=gu(Me,Ge);if(D=(ve&&ve.preventScrollReset)===!0,Xe&&bs(Xe.formMethod)){je(B,K,Ge,Vt,Me,ht.active,Oe,Xe);return}F.set(B,{routeId:K,path:Ge}),Se(B,K,Ge,Vt,Me,ht.active,Oe,Xe)}async function je(B,K,oe,ve,Oe,We,st,Me){yn(),F.delete(B);function ht(Tt){if(!Tt.route.action&&!Tt.route.lazy){let fs=lr(405,{method:Me.formMethod,pathname:oe,routeId:K});return En(B,K,fs,{flushSync:st}),!0}return!1}if(!We&&ht(ve))return;let Ge=N.fetchers.get(B);bn(B,j2(Me,Ge),{flushSync:st});let Xe=new AbortController,Ut=fl(e.history,oe,Xe.signal,Me);if(We){let Tt=await za(Oe,oe,Ut.signal);if(Tt.type==="aborted")return;if(Tt.type==="error"){let{error:fs}=_r(oe,Tt);En(B,K,fs,{flushSync:st});return}else if(Tt.matches){if(Oe=Tt.matches,ve=gu(Oe,oe),ht(ve))return}else{En(B,K,lr(404,{pathname:oe}),{flushSync:st});return}}Y.set(B,Xe);let Vt=H,At=(await bt("action",Ut,[ve],Oe))[0];if(Ut.signal.aborted){Y.get(B)===Xe&&Y.delete(B);return}if(m.v7_fetcherPersist&&te.has(B)){if(ii(At)||Br(At)){bn(B,da(void 0));return}}else{if(ii(At))if(Y.delete(B),q>Vt){bn(B,da(void 0));return}else return A.add(B),bn(B,tu(Me)),Be(Ut,At,{fetcherSubmission:Me});if(Br(At)){En(B,K,At.error);return}}if(ai(At))throw lr(400,{type:"defer-action"});let Nn=N.navigation.location||N.location,fn=fl(e.history,Nn,Xe.signal),Va=u||l,Os=N.navigation.state!=="idle"?oi(Va,N.navigation.location,d):N.matches;Ct(Os,"Didn't find any matches after fetcher action");let Gt=++H;he.set(B,Gt);let Vo=tu(Me,At.data);N.fetchers.set(B,Vo);let[Is,Pr]=oC(e.history,N,Os,Me,Nn,!1,m.v7_skipActionErrorRevalidation,W,ie,re,te,F,A,Va,d,[ve.route.id,At]);Pr.filter(Tt=>Tt.key!==B).forEach(Tt=>{let fs=Tt.key,Rd=N.fetchers.get(fs),jg=tu(void 0,Rd?Rd.data:void 0);N.fetchers.set(fs,jg),Y.has(fs)&&Bn(fs),Tt.controller&&Y.set(fs,Tt.controller)}),Fe({fetchers:new Map(N.fetchers)});let so=()=>Pr.forEach(Tt=>Bn(Tt.key));Xe.signal.addEventListener("abort",so);let{loaderResults:Vi,fetcherResults:Ha}=await Wt(N.matches,Os,Is,Pr,fn);if(Xe.signal.aborted)return;Xe.signal.removeEventListener("abort",so),he.delete(B),Y.delete(B),Pr.forEach(Tt=>Y.delete(Tt.key));let pt=hC([...Vi,...Ha]);if(pt){if(pt.idx>=Is.length){let Tt=Pr[pt.idx-Is.length].key;A.add(Tt)}return Be(fn,pt.result)}let{loaderData:Dt,errors:or}=uC(N,N.matches,Is,Vi,void 0,Pr,Ha,de);if(N.fetchers.has(B)){let Tt=da(At.data);N.fetchers.set(B,Tt)}It(Gt),N.navigation.state==="loading"&&Gt>q?(Ct(O,"Expected pending action"),z&&z.abort(),ft(N.navigation.location,{matches:Os,loaderData:Dt,errors:or,fetchers:new Map(N.fetchers)})):(Fe({errors:or,loaderData:dC(N.loaderData,Dt,Os,or),fetchers:new Map(N.fetchers)}),W=!1)}async function Se(B,K,oe,ve,Oe,We,st,Me){let ht=N.fetchers.get(B);bn(B,tu(Me,ht?ht.data:void 0),{flushSync:st});let Ge=new AbortController,Xe=fl(e.history,oe,Ge.signal);if(We){let At=await za(Oe,oe,Xe.signal);if(At.type==="aborted")return;if(At.type==="error"){let{error:Nn}=_r(oe,At);En(B,K,Nn,{flushSync:st});return}else if(At.matches)Oe=At.matches,ve=gu(Oe,oe);else{En(B,K,lr(404,{pathname:oe}),{flushSync:st});return}}Y.set(B,Ge);let Ut=H,Ht=(await bt("loader",Xe,[ve],Oe))[0];if(ai(Ht)&&(Ht=await gj(Ht,Xe.signal,!0)||Ht),Y.get(B)===Ge&&Y.delete(B),!Xe.signal.aborted){if(te.has(B)){bn(B,da(void 0));return}if(ii(Ht))if(q>Ut){bn(B,da(void 0));return}else{A.add(B),await Be(Xe,Ht);return}if(Br(Ht)){En(B,K,Ht.error);return}Ct(!ai(Ht),"Unhandled fetcher deferred data"),bn(B,da(Ht.data))}}async function Be(B,K,oe){let{submission:ve,fetcherSubmission:Oe,replace:We}=oe===void 0?{}:oe;K.response.headers.has("X-Remix-Revalidate")&&(W=!0);let st=K.response.headers.get("Location");Ct(st,"Expected a Location header on the redirect Response"),st=lC(st,new URL(B.url),d);let Me=Iu(N.location,st,{_isRedirect:!0});if(n){let Ht=!1;if(K.response.headers.has("X-Remix-Reload-Document"))Ht=!0;else if(Db.test(st)){const At=e.history.createURL(st);Ht=At.origin!==t.location.origin||Xl(At.pathname,d)==null}if(Ht){We?t.location.replace(st):t.location.assign(st);return}}z=null;let ht=We===!0?_n.Replace:_n.Push,{formMethod:Ge,formAction:Xe,formEncType:Ut}=N.navigation;!ve&&!Oe&&Ge&&Xe&&Ut&&(ve=mC(N.navigation));let Vt=ve||Oe;if(a2.has(K.response.status)&&Vt&&bs(Vt.formMethod))await vn(ht,Me,{submission:mn({},Vt,{formAction:st}),preventScrollReset:D});else{let Ht=hv(Me,ve);await vn(ht,Me,{overrideNavigation:Ht,fetcherSubmission:Oe,preventScrollReset:D})}}async function bt(B,K,oe,ve){try{let Oe=await g2(f,B,K,oe,ve,o,s);return await Promise.all(Oe.map((We,st)=>{if(S2(We)){let Me=We.result;return{type:Zt.redirect,response:y2(Me,K,oe[st].route.id,ve,d,m.v7_relativeSplatPath)}}return v2(We)}))}catch(Oe){return oe.map(()=>({type:Zt.error,error:Oe}))}}async function Wt(B,K,oe,ve,Oe){let[We,...st]=await Promise.all([oe.length?bt("loader",Oe,oe,K):[],...ve.map(Me=>{if(Me.matches&&Me.match&&Me.controller){let ht=fl(e.history,Me.path,Me.controller.signal);return bt("loader",ht,[Me.match],Me.matches).then(Ge=>Ge[0])}else return Promise.resolve({type:Zt.error,error:lr(404,{pathname:Me.path})})})]);return await Promise.all([gC(B,oe,We,We.map(()=>Oe.signal),!1,N.loaderData),gC(B,ve.map(Me=>Me.match),st,ve.map(Me=>Me.controller?Me.controller.signal:null),!0)]),{loaderResults:We,fetcherResults:st}}function yn(){W=!0,ie.push(...Rr()),F.forEach((B,K)=>{Y.has(K)&&(re.push(K),Bn(K))})}function bn(B,K,oe){oe===void 0&&(oe={}),N.fetchers.set(B,K),Fe({fetchers:new Map(N.fetchers)},{flushSync:(oe&&oe.flushSync)===!0})}function En(B,K,oe,ve){ve===void 0&&(ve={});let Oe=jl(N.matches,K);Qn(B),Fe({errors:{[Oe.route.id]:oe},fetchers:new Map(N.fetchers)},{flushSync:(ve&&ve.flushSync)===!0})}function gr(B){return m.v7_fetcherPersist&&(fe.set(B,(fe.get(B)||0)+1),te.has(B)&&te.delete(B)),N.fetchers.get(B)||i2}function Qn(B){let K=N.fetchers.get(B);Y.has(B)&&!(K&&K.state==="loading"&&he.has(B))&&Bn(B),F.delete(B),he.delete(B),A.delete(B),te.delete(B),N.fetchers.delete(B)}function ro(B){if(m.v7_fetcherPersist){let K=(fe.get(B)||0)-1;K<=0?(fe.delete(B),te.add(B)):fe.set(B,K)}else Qn(B);Fe({fetchers:new Map(N.fetchers)})}function Bn(B){let K=Y.get(B);Ct(K,"Expected fetch controller: "+B),K.abort(),Y.delete(B)}function Te(B){for(let K of B){let oe=gr(K),ve=da(oe.data);N.fetchers.set(K,ve)}}function ut(){let B=[],K=!1;for(let oe of A){let ve=N.fetchers.get(oe);Ct(ve,"Expected fetcher: "+oe),ve.state==="loading"&&(A.delete(oe),B.push(oe),K=!0)}return Te(B),K}function It(B){let K=[];for(let[oe,ve]of he)if(ve0}function Tn(B,K){let oe=N.blockers.get(B)||eu;return ge.get(B)!==K&&ge.set(B,K),oe}function mr(B){N.blockers.delete(B),ge.delete(B)}function vr(B,K){let oe=N.blockers.get(B)||eu;Ct(oe.state==="unblocked"&&K.state==="blocked"||oe.state==="blocked"&&K.state==="blocked"||oe.state==="blocked"&&K.state==="proceeding"||oe.state==="blocked"&&K.state==="unblocked"||oe.state==="proceeding"&&K.state==="unblocked","Invalid blocker state transition: "+oe.state+" -> "+K.state);let ve=new Map(N.blockers);ve.set(B,K),Fe({blockers:ve})}function Gr(B){let{currentLocation:K,nextLocation:oe,historyAction:ve}=B;if(ge.size===0)return;ge.size>1&&Ll(!1,"A router only supports one blocker at a time");let Oe=Array.from(ge.entries()),[We,st]=Oe[Oe.length-1],Me=N.blockers.get(We);if(!(Me&&Me.state==="proceeding")&&st({currentLocation:K,nextLocation:oe,historyAction:ve}))return We}function Jr(B){let K=lr(404,{pathname:B}),oe=u||l,{matches:ve,route:Oe}=pC(oe);return Rr(),{notFoundMatches:ve,route:Oe,error:K}}function _r(B,K){return{boundaryId:jl(K.partialMatches).route.id,error:lr(400,{type:"route-discovery",pathname:B,message:K.error!=null&&"message"in K.error?K.error:String(K.error)})}}function Rr(B){let K=[];return de.forEach((oe,ve)=>{(!B||B(ve))&&(oe.cancel(),K.push(ve),de.delete(ve))}),K}function Uo(B,K,oe){if(b=B,C=K,w=oe||null,!k&&N.navigation===pv){k=!0;let ve=yc(N.location,N.matches);ve!=null&&Fe({restoreScrollPosition:ve})}return()=>{b=null,C=null,w=null}}function vc(B,K){return w&&w(B,K.map(ve=>LF(ve,N.loaderData)))||B.key}function _d(B,K){if(b&&C){let oe=vc(B,K);b[oe]=C()}}function yc(B,K){if(b){let oe=vc(B,K),ve=b[oe];if(typeof ve=="number")return ve}return null}function Ba(B,K,oe){if(h)if(B){let ve=B[B.length-1].route;if(ve.path&&(ve.path==="*"||ve.path.endsWith("/*")))return{active:!0,matches:cp(K,oe,d,!0)}}else return{active:!0,matches:cp(K,oe,d,!0)||[]};return{active:!1,matches:null}}async function za(B,K,oe){let ve=B,Oe=ve.length>0?ve[ve.length-1].route:null;for(;;){let We=u==null,st=u||l;try{await p2(h,K,ve,st,o,s,Z,oe)}catch(Xe){return{type:"error",error:Xe,partialMatches:ve}}finally{We&&(l=[...l])}if(oe.aborted)return{type:"aborted"};let Me=oi(st,K,d),ht=!1;if(Me){let Xe=Me[Me.length-1].route;if(Xe.index)return{type:"success",matches:Me};if(Xe.path&&Xe.path.length>0)if(Xe.path==="*")ht=!0;else return{type:"success",matches:Me}}let Ge=cp(st,K,d,!0);if(!Ge||ve.map(Xe=>Xe.route.id).join("-")===Ge.map(Xe=>Xe.route.id).join("-"))return{type:"success",matches:ht?Me:null};if(ve=Ge,Oe=ve[ve.length-1].route,Oe.path==="*")return{type:"success",matches:ve}}}function Ua(B){o={},u=Au(B,s,void 0,o)}function bc(B,K){let oe=u==null;fj(B,K,u||l,o,s),oe&&(l=[...l],Fe({}))}return R={get basename(){return d},get future(){return m},get state(){return N},get routes(){return l},get window(){return t},initialize:Re,subscribe:Ye,enableScrollRestoration:Uo,navigate:ln,fetch:Ne,revalidate:Sn,createHref:B=>e.history.createHref(B),encodeLocation:B=>e.history.encodeLocation(B),getFetcher:gr,deleteFetcher:ro,dispose:$e,getBlocker:Tn,deleteBlocker:mr,patchRoutes:bc,_internalFetchControllers:Y,_internalActiveDeferreds:de,_internalSetRoutes:Ua},R}function u2(e){return e!=null&&("formData"in e&&e.formData!=null||"body"in e&&e.body!==void 0)}function Ny(e,t,n,r,s,o,l,u){let d,f;if(l){d=[];for(let m of t)if(d.push(m),m.route.id===l){f=m;break}}else d=t,f=t[t.length-1];let h=gh(s||".",hh(d,o),Xl(e.pathname,n)||e.pathname,u==="path");return s==null&&(h.search=e.search,h.hash=e.hash),(s==null||s===""||s===".")&&f&&f.route.index&&!Fb(h.search)&&(h.search=h.search?h.search.replace(/^\?/,"?index&"):"?index"),r&&n!=="/"&&(h.pathname=h.pathname==="/"?n:To([n,h.pathname])),wi(h)}function sC(e,t,n,r){if(!r||!u2(r))return{path:n};if(r.formMethod&&!E2(r.formMethod))return{path:n,error:lr(405,{method:r.formMethod})};let s=()=>({path:n,error:lr(400,{type:"invalid-body"})}),o=r.formMethod||"get",l=e?o.toUpperCase():o.toLowerCase(),u=pj(n);if(r.body!==void 0){if(r.formEncType==="text/plain"){if(!bs(l))return s();let g=typeof r.body=="string"?r.body:r.body instanceof FormData||r.body instanceof URLSearchParams?Array.from(r.body.entries()).reduce((x,b)=>{let[w,C]=b;return""+x+w+"="+C+` -`},""):String(r.body);return{path:n,submission:{formMethod:l,formAction:u,formEncType:r.formEncType,formData:void 0,json:void 0,text:g}}}else if(r.formEncType==="application/json"){if(!bs(l))return s();try{let g=typeof r.body=="string"?JSON.parse(r.body):r.body;return{path:n,submission:{formMethod:l,formAction:u,formEncType:r.formEncType,formData:void 0,json:g,text:void 0}}}catch{return s()}}}Ct(typeof FormData=="function","FormData is not available in this environment");let d,f;if(r.formData)d=My(r.formData),f=r.formData;else if(r.body instanceof FormData)d=My(r.body),f=r.body;else if(r.body instanceof URLSearchParams)d=r.body,f=cC(d);else if(r.body==null)d=new URLSearchParams,f=new FormData;else try{d=new URLSearchParams(r.body),f=cC(d)}catch{return s()}let h={formMethod:l,formAction:u,formEncType:r&&r.formEncType||"application/x-www-form-urlencoded",formData:f,json:void 0,text:void 0};if(bs(h.formMethod))return{path:n,submission:h};let m=_a(n);return t&&m.search&&Fb(m.search)&&d.append("index",""),m.search="?"+d,{path:wi(m),submission:h}}function d2(e,t){let n=e;if(t){let r=e.findIndex(s=>s.route.id===t);r>=0&&(n=e.slice(0,r))}return n}function oC(e,t,n,r,s,o,l,u,d,f,h,m,g,x,b,w){let C=w?Br(w[1])?w[1].error:w[1].data:void 0,k=e.createURL(t.location),j=e.createURL(s),M=w&&Br(w[1])?w[0]:void 0,_=M?d2(n,M):n,R=w?w[1].statusCode:void 0,N=l&&R&&R>=400,O=_.filter((z,Q)=>{let{route:pe}=z;if(pe.lazy)return!0;if(pe.loader==null)return!1;if(o)return typeof pe.loader!="function"||pe.loader.hydrate?!0:t.loaderData[pe.id]===void 0&&(!t.errors||t.errors[pe.id]===void 0);if(f2(t.loaderData,t.matches[Q],z)||d.some(W=>W===z.route.id))return!0;let V=t.matches[Q],G=z;return aC(z,mn({currentUrl:k,currentParams:V.params,nextUrl:j,nextParams:G.params},r,{actionResult:C,actionStatus:R,defaultShouldRevalidate:N?!1:u||k.pathname+k.search===j.pathname+j.search||k.search!==j.search||dj(V,G)}))}),D=[];return m.forEach((z,Q)=>{if(o||!n.some(ie=>ie.route.id===z.routeId)||h.has(Q))return;let pe=oi(x,z.path,b);if(!pe){D.push({key:Q,routeId:z.routeId,path:z.path,matches:null,match:null,controller:null});return}let V=t.fetchers.get(Q),G=gu(pe,z.path),W=!1;g.has(Q)?W=!1:f.includes(Q)?W=!0:V&&V.state!=="idle"&&V.data===void 0?W=u:W=aC(G,mn({currentUrl:k,currentParams:t.matches[t.matches.length-1].params,nextUrl:j,nextParams:n[n.length-1].params},r,{actionResult:C,actionStatus:R,defaultShouldRevalidate:N?!1:u})),W&&D.push({key:Q,routeId:z.routeId,path:z.path,matches:pe,match:G,controller:new AbortController})}),[O,D]}function f2(e,t,n){let r=!t||n.route.id!==t.route.id,s=e[n.route.id]===void 0;return r||s}function dj(e,t){let n=e.route.path;return e.pathname!==t.pathname||n!=null&&n.endsWith("*")&&e.params["*"]!==t.params["*"]}function aC(e,t){if(e.route.shouldRevalidate){let n=e.route.shouldRevalidate(t);if(typeof n=="boolean")return n}return t.defaultShouldRevalidate}async function p2(e,t,n,r,s,o,l,u){let d=[t,...n.map(f=>f.route.id)].join("-");try{let f=l.get(d);f||(f=e({path:t,matches:n,patch:(h,m)=>{u.aborted||fj(h,m,r,s,o)}}),l.set(d,f)),f&&w2(f)&&await f}finally{l.delete(d)}}function fj(e,t,n,r,s){if(e){var o;let l=r[e];Ct(l,"No route found to patch children into: routeId = "+e);let u=Au(t,s,[e,"patch",String(((o=l.children)==null?void 0:o.length)||"0")],r);l.children?l.children.push(...u):l.children=u}else{let l=Au(t,s,["patch",String(n.length||"0")],r);n.push(...l)}}async function iC(e,t,n){if(!e.lazy)return;let r=await e.lazy();if(!e.lazy)return;let s=n[e.id];Ct(s,"No route found in manifest");let o={};for(let l in r){let d=s[l]!==void 0&&l!=="hasErrorBoundary";Ll(!d,'Route "'+s.id+'" has a static property "'+l+'" defined but its lazy function is also returning a value for this property. '+('The lazy route property "'+l+'" will be ignored.')),!d&&!DF.has(l)&&(o[l]=r[l])}Object.assign(s,o),Object.assign(s,mn({},t(s),{lazy:void 0}))}function h2(e){return Promise.all(e.matches.map(t=>t.resolve()))}async function g2(e,t,n,r,s,o,l,u){let d=r.reduce((m,g)=>m.add(g.route.id),new Set),f=new Set,h=await e({matches:s.map(m=>{let g=d.has(m.route.id);return mn({},m,{shouldLoad:g,resolve:b=>(f.add(m.route.id),g?m2(t,n,m,o,l,b,u):Promise.resolve({type:Zt.data,result:void 0}))})}),request:n,params:s[0].params,context:u});return s.forEach(m=>Ct(f.has(m.route.id),'`match.resolve()` was not called for route id "'+m.route.id+'". You must call `match.resolve()` on every match passed to `dataStrategy` to ensure all routes are properly loaded.')),h.filter((m,g)=>d.has(s[g].route.id))}async function m2(e,t,n,r,s,o,l){let u,d,f=h=>{let m,g=new Promise((w,C)=>m=C);d=()=>m(),t.signal.addEventListener("abort",d);let x=w=>typeof h!="function"?Promise.reject(new Error("You cannot call the handler for a route which defines a boolean "+('"'+e+'" [routeId: '+n.route.id+"]"))):h({request:t,params:n.params,context:l},...w!==void 0?[w]:[]),b;return o?b=o(w=>x(w)):b=(async()=>{try{return{type:"data",result:await x()}}catch(w){return{type:"error",result:w}}})(),Promise.race([b,g])};try{let h=n.route[e];if(n.route.lazy)if(h){let m,[g]=await Promise.all([f(h).catch(x=>{m=x}),iC(n.route,s,r)]);if(m!==void 0)throw m;u=g}else if(await iC(n.route,s,r),h=n.route[e],h)u=await f(h);else if(e==="action"){let m=new URL(t.url),g=m.pathname+m.search;throw lr(405,{method:t.method,pathname:g,routeId:n.route.id})}else return{type:Zt.data,result:void 0};else if(h)u=await f(h);else{let m=new URL(t.url),g=m.pathname+m.search;throw lr(404,{pathname:g})}Ct(u.result!==void 0,"You defined "+(e==="action"?"an action":"a loader")+" for route "+('"'+n.route.id+"\" but didn't return anything from your `"+e+"` ")+"function. Please return a value or `null`.")}catch(h){return{type:Zt.error,result:h}}finally{d&&t.signal.removeEventListener("abort",d)}return u}async function v2(e){let{result:t,type:n,status:r}=e;if(hj(t)){let l;try{let u=t.headers.get("Content-Type");u&&/\bapplication\/json\b/.test(u)?t.body==null?l=null:l=await t.json():l=await t.text()}catch(u){return{type:Zt.error,error:u}}return n===Zt.error?{type:Zt.error,error:new Ab(t.status,t.statusText,l),statusCode:t.status,headers:t.headers}:{type:Zt.data,data:l,statusCode:t.status,headers:t.headers}}if(n===Zt.error)return{type:Zt.error,error:t,statusCode:mh(t)?t.status:r};if(C2(t)){var s,o;return{type:Zt.deferred,deferredData:t,statusCode:(s=t.init)==null?void 0:s.status,headers:((o=t.init)==null?void 0:o.headers)&&new Headers(t.init.headers)}}return{type:Zt.data,data:t,statusCode:r}}function y2(e,t,n,r,s,o){let l=e.headers.get("Location");if(Ct(l,"Redirects returned/thrown from loaders/actions must have a Location header"),!Db.test(l)){let u=r.slice(0,r.findIndex(d=>d.route.id===n)+1);l=Ny(new URL(t.url),u,s,!0,l,o),e.headers.set("Location",l)}return e}function lC(e,t,n){if(Db.test(e)){let r=e,s=r.startsWith("//")?new URL(t.protocol+r):new URL(r),o=Xl(s.pathname,n)!=null;if(s.origin===t.origin&&o)return s.pathname+s.search+s.hash}return e}function fl(e,t,n,r){let s=e.createURL(pj(t)).toString(),o={signal:n};if(r&&bs(r.formMethod)){let{formMethod:l,formEncType:u}=r;o.method=l.toUpperCase(),u==="application/json"?(o.headers=new Headers({"Content-Type":u}),o.body=JSON.stringify(r.json)):u==="text/plain"?o.body=r.text:u==="application/x-www-form-urlencoded"&&r.formData?o.body=My(r.formData):o.body=r.formData}return new Request(s,o)}function My(e){let t=new URLSearchParams;for(let[n,r]of e.entries())t.append(n,typeof r=="string"?r:r.name);return t}function cC(e){let t=new FormData;for(let[n,r]of e.entries())t.append(n,r);return t}function b2(e,t,n,r,s,o){let l={},u=null,d,f=!1,h={},m=r&&Br(r[1])?r[1].error:void 0;return n.forEach((g,x)=>{let b=t[x].route.id;if(Ct(!ii(g),"Cannot handle redirect results in processLoaderData"),Br(g)){let w=g.error;m!==void 0&&(w=m,m=void 0),u=u||{};{let C=jl(e,b);u[C.route.id]==null&&(u[C.route.id]=w)}l[b]=void 0,f||(f=!0,d=mh(g.error)?g.error.status:500),g.headers&&(h[b]=g.headers)}else ai(g)?(s.set(b,g.deferredData),l[b]=g.deferredData.data,g.statusCode!=null&&g.statusCode!==200&&!f&&(d=g.statusCode),g.headers&&(h[b]=g.headers)):(l[b]=g.data,g.statusCode&&g.statusCode!==200&&!f&&(d=g.statusCode),g.headers&&(h[b]=g.headers))}),m!==void 0&&r&&(u={[r[0]]:m},l[r[0]]=void 0),{loaderData:l,errors:u,statusCode:d||200,loaderHeaders:h}}function uC(e,t,n,r,s,o,l,u){let{loaderData:d,errors:f}=b2(t,n,r,s,u);for(let h=0;hr.route.id===t)+1):[...e]).reverse().find(r=>r.route.hasErrorBoundary===!0)||e[0]}function pC(e){let t=e.length===1?e[0]:e.find(n=>n.index||!n.path||n.path==="/")||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:t}],route:t}}function lr(e,t){let{pathname:n,routeId:r,method:s,type:o,message:l}=t===void 0?{}:t,u="Unknown Server Error",d="Unknown @remix-run/router error";return e===400?(u="Bad Request",o==="route-discovery"?d='Unable to match URL "'+n+'" - the `unstable_patchRoutesOnMiss()` '+(`function threw the following error: -`+l):s&&n&&r?d="You made a "+s+' request to "'+n+'" but '+('did not provide a `loader` for route "'+r+'", ')+"so there is no way to handle the request.":o==="defer-action"?d="defer() is not supported in actions":o==="invalid-body"&&(d="Unable to encode submission body")):e===403?(u="Forbidden",d='Route "'+r+'" does not match URL "'+n+'"'):e===404?(u="Not Found",d='No route matches URL "'+n+'"'):e===405&&(u="Method Not Allowed",s&&n&&r?d="You made a "+s.toUpperCase()+' request to "'+n+'" but '+('did not provide an `action` for route "'+r+'", ')+"so there is no way to handle the request.":s&&(d='Invalid request method "'+s.toUpperCase()+'"')),new Ab(e||500,u,new Error(d),!0)}function hC(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(ii(n))return{result:n,idx:t}}}function pj(e){let t=typeof e=="string"?_a(e):e;return wi(mn({},t,{hash:""}))}function x2(e,t){return e.pathname!==t.pathname||e.search!==t.search?!1:e.hash===""?t.hash!=="":e.hash===t.hash?!0:t.hash!==""}function w2(e){return typeof e=="object"&&e!=null&&"then"in e}function S2(e){return hj(e.result)&&o2.has(e.result.status)}function ai(e){return e.type===Zt.deferred}function Br(e){return e.type===Zt.error}function ii(e){return(e&&e.type)===Zt.redirect}function C2(e){let t=e;return t&&typeof t=="object"&&typeof t.data=="object"&&typeof t.subscribe=="function"&&typeof t.cancel=="function"&&typeof t.resolveData=="function"}function hj(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.headers=="object"&&typeof e.body<"u"}function E2(e){return s2.has(e.toLowerCase())}function bs(e){return n2.has(e.toLowerCase())}async function gC(e,t,n,r,s,o){for(let l=0;lm.route.id===d.route.id),h=f!=null&&!dj(f,d)&&(o&&o[d.route.id])!==void 0;if(ai(u)&&(s||h)){let m=r[l];Ct(m,"Expected an AbortSignal for revalidating fetcher deferred result"),await gj(u,m,s).then(g=>{g&&(n[l]=g||n[l])})}}}async function gj(e,t,n){if(n===void 0&&(n=!1),!await e.deferredData.resolveData(t)){if(n)try{return{type:Zt.data,data:e.deferredData.unwrappedData}}catch(s){return{type:Zt.error,error:s}}return{type:Zt.data,data:e.deferredData.data}}}function Fb(e){return new URLSearchParams(e).getAll("index").some(t=>t==="")}function gu(e,t){let n=typeof t=="string"?_a(t).search:t.search;if(e[e.length-1].route.index&&Fb(n||""))return e[e.length-1];let r=lj(e);return r[r.length-1]}function mC(e){let{formMethod:t,formAction:n,formEncType:r,text:s,formData:o,json:l}=e;if(!(!t||!n||!r)){if(s!=null)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:void 0,text:s};if(o!=null)return{formMethod:t,formAction:n,formEncType:r,formData:o,json:void 0,text:void 0};if(l!==void 0)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:l,text:void 0}}}function hv(e,t){return t?{state:"loading",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}:{state:"loading",location:e,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function k2(e,t){return{state:"submitting",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}}function tu(e,t){return e?{state:"loading",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t}:{state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:t}}function j2(e,t){return{state:"submitting",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t?t.data:void 0}}function da(e){return{state:"idle",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:e}}function T2(e,t){try{let n=e.sessionStorage.getItem(uj);if(n){let r=JSON.parse(n);for(let[s,o]of Object.entries(r||{}))o&&Array.isArray(o)&&t.set(s,new Set(o||[]))}}catch{}}function N2(e,t){if(t.size>0){let n={};for(let[r,s]of t)n[r]=[...s];try{e.sessionStorage.setItem(uj,JSON.stringify(n))}catch(r){Ll(!1,"Failed to save applied view transitions in sessionStorage ("+r+").")}}}/** - * React Router v6.25.1 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */function Rp(){return Rp=Object.assign?Object.assign.bind():function(e){for(var t=1;t{u.current=!0}),y.useCallback(function(f,h){if(h===void 0&&(h={}),!u.current)return;if(typeof f=="number"){r.go(f);return}let m=gh(f,JSON.parse(l),o,h.relative==="path");e==null&&t!=="/"&&(m.pathname=m.pathname==="/"?t:To([t,m.pathname])),(h.replace?r.replace:r.push)(m,h.state,h)},[t,r,l,o,e])}function ls(){let{matches:e}=y.useContext(Po),t=e[e.length-1];return t?t.params:{}}function bj(e,t){let{relative:n}=t===void 0?{}:t,{future:r}=y.useContext(Ra),{matches:s}=y.useContext(Po),{pathname:o}=Pi(),l=JSON.stringify(hh(s,r.v7_relativeSplatPath));return y.useMemo(()=>gh(e,JSON.parse(l),o,n==="path"),[e,l,o,n])}function R2(e,t,n,r){ec()||Ct(!1);let{navigator:s}=y.useContext(Ra),{matches:o}=y.useContext(Po),l=o[o.length-1],u=l?l.params:{};l&&l.pathname;let d=l?l.pathnameBase:"/";l&&l.route;let f=Pi(),h;h=f;let m=h.pathname||"/",g=m;if(d!=="/"){let w=d.replace(/^\//,"").split("/");g="/"+m.replace(/^\//,"").split("/").slice(w.length).join("/")}let x=oi(e,{pathname:g});return D2(x&&x.map(w=>Object.assign({},w,{params:Object.assign({},u,w.params),pathname:To([d,s.encodeLocation?s.encodeLocation(w.pathname).pathname:w.pathname]),pathnameBase:w.pathnameBase==="/"?d:To([d,s.encodeLocation?s.encodeLocation(w.pathnameBase).pathname:w.pathnameBase])})),o,n,r)}function P2(){let e=B2(),t=mh(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,s={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return y.createElement(y.Fragment,null,y.createElement("h2",null,"Unexpected Application Error!"),y.createElement("h3",{style:{fontStyle:"italic"}},t),n?y.createElement("pre",{style:s},n):null,null)}const O2=y.createElement(P2,null);class I2 extends y.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,n){return n.location!==t.location||n.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:n.error,location:n.location,revalidation:t.revalidation||n.revalidation}}componentDidCatch(t,n){console.error("React Router caught the following error during render",t,n)}render(){return this.state.error!==void 0?y.createElement(Po.Provider,{value:this.props.routeContext},y.createElement(vj.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function A2(e){let{routeContext:t,match:n,children:r}=e,s=y.useContext(vh);return s&&s.static&&s.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(s.staticContext._deepestRenderedBoundaryId=n.route.id),y.createElement(Po.Provider,{value:t},r)}function D2(e,t,n,r){var s;if(t===void 0&&(t=[]),n===void 0&&(n=null),r===void 0&&(r=null),e==null){var o;if((o=n)!=null&&o.errors)e=n.matches;else return null}let l=e,u=(s=n)==null?void 0:s.errors;if(u!=null){let h=l.findIndex(m=>m.route.id&&u?.[m.route.id]!==void 0);h>=0||Ct(!1),l=l.slice(0,Math.min(l.length,h+1))}let d=!1,f=-1;if(n&&r&&r.v7_partialHydration)for(let h=0;h=0?l=l.slice(0,f+1):l=[l[0]];break}}}return l.reduceRight((h,m,g)=>{let x,b=!1,w=null,C=null;n&&(x=u&&m.route.id?u[m.route.id]:void 0,w=m.route.errorElement||O2,d&&(f<0&&g===0?(U2("route-fallback"),b=!0,C=null):f===g&&(b=!0,C=m.route.hydrateFallbackElement||null)));let k=t.concat(l.slice(0,g+1)),j=()=>{let M;return x?M=w:b?M=C:m.route.Component?M=y.createElement(m.route.Component,null):m.route.element?M=m.route.element:M=h,y.createElement(A2,{match:m,routeContext:{outlet:h,matches:k,isDataRoute:n!=null},children:M})};return n&&(m.route.ErrorBoundary||m.route.errorElement||g===0)?y.createElement(I2,{location:n.location,revalidation:n.revalidation,component:w,error:x,children:j(),routeContext:{outlet:null,matches:k,isDataRoute:!0}}):j()},null)}var xj=(function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e})(xj||{}),wj=(function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e})(wj||{});function F2(e){let t=y.useContext(vh);return t||Ct(!1),t}function L2(e){let t=y.useContext(mj);return t||Ct(!1),t}function $2(e){let t=y.useContext(Po);return t||Ct(!1),t}function Sj(e){let t=$2(),n=t.matches[t.matches.length-1];return n.route.id||Ct(!1),n.route.id}function B2(){var e;let t=y.useContext(vj),n=L2(wj.UseRouteError),r=Sj();return t!==void 0?t:(e=n.errors)==null?void 0:e[r]}function z2(){let{router:e}=F2(xj.UseNavigateStable),t=Sj(),n=y.useRef(!1);return yj(()=>{n.current=!0}),y.useCallback(function(s,o){o===void 0&&(o={}),n.current&&(typeof s=="number"?e.navigate(s):e.navigate(s,Rp({fromRouteId:t},o)))},[e,t])}const vC={};function U2(e,t,n){vC[e]||(vC[e]=!0)}function Cj(e){let{to:t,replace:n,state:r,relative:s}=e;ec()||Ct(!1);let{future:o,static:l}=y.useContext(Ra),{matches:u}=y.useContext(Po),{pathname:d}=Pi(),f=dn(),h=gh(t,hh(u,o.v7_relativeSplatPath),d,s==="path"),m=JSON.stringify(h);return y.useEffect(()=>f(JSON.parse(m),{replace:n,state:r,relative:s}),[f,m,s,n,r]),null}function V2(e){let{basename:t="/",children:n=null,location:r,navigationType:s=_n.Pop,navigator:o,static:l=!1,future:u}=e;ec()&&Ct(!1);let d=t.replace(/^\/*/,"/"),f=y.useMemo(()=>({basename:d,navigator:o,static:l,future:Rp({v7_relativeSplatPath:!1},u)}),[d,u,o,l]);typeof r=="string"&&(r=_a(r));let{pathname:h="/",search:m="",hash:g="",state:x=null,key:b="default"}=r,w=y.useMemo(()=>{let C=Xl(h,d);return C==null?null:{location:{pathname:C,search:m,hash:g,state:x,key:b},navigationType:s}},[d,h,m,g,x,b,s]);return w==null?null:y.createElement(Ra.Provider,{value:f},y.createElement(Lb.Provider,{children:n,value:w}))}new Promise(()=>{});function H2(e){let t={hasErrorBoundary:e.ErrorBoundary!=null||e.errorElement!=null};return e.Component&&Object.assign(t,{element:y.createElement(e.Component),Component:void 0}),e.HydrateFallback&&Object.assign(t,{hydrateFallbackElement:y.createElement(e.HydrateFallback),HydrateFallback:void 0}),e.ErrorBoundary&&Object.assign(t,{errorElement:y.createElement(e.ErrorBoundary),ErrorBoundary:void 0}),t}/** - * React Router DOM v6.25.1 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */function Du(){return Du=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&(n[s]=e[s]);return n}function K2(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function W2(e,t){return e.button===0&&(!t||t==="_self")&&!K2(e)}function _y(e){return e===void 0&&(e=""),new URLSearchParams(typeof e=="string"||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,n)=>{let r=e[n];return t.concat(Array.isArray(r)?r.map(s=>[n,s]):[[n,r]])},[]))}function G2(e,t){let n=_y(e);return t&&t.forEach((r,s)=>{n.has(s)||t.getAll(s).forEach(o=>{n.append(s,o)})}),n}const J2=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","unstable_viewTransition"],Q2="6";try{window.__reactRouterVersion=Q2}catch{}function Z2(e,t){return c2({basename:void 0,future:Du({},void 0,{v7_prependBasename:!0}),history:OF({window:void 0}),hydrationData:Y2(),routes:e,mapRouteProperties:H2,unstable_dataStrategy:void 0,unstable_patchRoutesOnMiss:void 0,window:void 0}).initialize()}function Y2(){var e;let t=(e=window)==null?void 0:e.__staticRouterHydrationData;return t&&t.errors&&(t=Du({},t,{errors:X2(t.errors)})),t}function X2(e){if(!e)return null;let t=Object.entries(e),n={};for(let[r,s]of t)if(s&&s.__type==="RouteErrorResponse")n[r]=new Ab(s.status,s.statusText,s.data,s.internal===!0);else if(s&&s.__type==="Error"){if(s.__subType){let o=window[s.__subType];if(typeof o=="function")try{let l=new o(s.message);l.stack="",n[r]=l}catch{}}if(n[r]==null){let o=new Error(s.message);o.stack="",n[r]=o}}else n[r]=s;return n}const eL=y.createContext({isTransitioning:!1}),tL=y.createContext(new Map),nL="startTransition",yC=Yl[nL],rL="flushSync",bC=PF[rL];function sL(e){yC?yC(e):e()}function nu(e){bC?bC(e):e()}class oL{constructor(){this.status="pending",this.promise=new Promise((t,n)=>{this.resolve=r=>{this.status==="pending"&&(this.status="resolved",t(r))},this.reject=r=>{this.status==="pending"&&(this.status="rejected",n(r))}})}}function aL(e){let{fallbackElement:t,router:n,future:r}=e,[s,o]=y.useState(n.state),[l,u]=y.useState(),[d,f]=y.useState({isTransitioning:!1}),[h,m]=y.useState(),[g,x]=y.useState(),[b,w]=y.useState(),C=y.useRef(new Map),{v7_startTransition:k}=r||{},j=y.useCallback(D=>{k?sL(D):D()},[k]),M=y.useCallback((D,z)=>{let{deletedFetchers:Q,unstable_flushSync:pe,unstable_viewTransitionOpts:V}=z;Q.forEach(W=>C.current.delete(W)),D.fetchers.forEach((W,ie)=>{W.data!==void 0&&C.current.set(ie,W.data)});let G=n.window==null||n.window.document==null||typeof n.window.document.startViewTransition!="function";if(!V||G){pe?nu(()=>o(D)):j(()=>o(D));return}if(pe){nu(()=>{g&&(h&&h.resolve(),g.skipTransition()),f({isTransitioning:!0,flushSync:!0,currentLocation:V.currentLocation,nextLocation:V.nextLocation})});let W=n.window.document.startViewTransition(()=>{nu(()=>o(D))});W.finished.finally(()=>{nu(()=>{m(void 0),x(void 0),u(void 0),f({isTransitioning:!1})})}),nu(()=>x(W));return}g?(h&&h.resolve(),g.skipTransition(),w({state:D,currentLocation:V.currentLocation,nextLocation:V.nextLocation})):(u(D),f({isTransitioning:!0,flushSync:!1,currentLocation:V.currentLocation,nextLocation:V.nextLocation}))},[n.window,g,h,C,j]);y.useLayoutEffect(()=>n.subscribe(M),[n,M]),y.useEffect(()=>{d.isTransitioning&&!d.flushSync&&m(new oL)},[d]),y.useEffect(()=>{if(h&&l&&n.window){let D=l,z=h.promise,Q=n.window.document.startViewTransition(async()=>{j(()=>o(D)),await z});Q.finished.finally(()=>{m(void 0),x(void 0),u(void 0),f({isTransitioning:!1})}),x(Q)}},[j,l,h,n.window]),y.useEffect(()=>{h&&l&&s.location.key===l.location.key&&h.resolve()},[h,g,s.location,l]),y.useEffect(()=>{!d.isTransitioning&&b&&(u(b.state),f({isTransitioning:!0,flushSync:!1,currentLocation:b.currentLocation,nextLocation:b.nextLocation}),w(void 0))},[d.isTransitioning,b]),y.useEffect(()=>{},[]);let _=y.useMemo(()=>({createHref:n.createHref,encodeLocation:n.encodeLocation,go:D=>n.navigate(D),push:(D,z,Q)=>n.navigate(D,{state:z,preventScrollReset:Q?.preventScrollReset}),replace:(D,z,Q)=>n.navigate(D,{replace:!0,state:z,preventScrollReset:Q?.preventScrollReset})}),[n]),R=n.basename||"/",N=y.useMemo(()=>({router:n,navigator:_,static:!1,basename:R}),[n,_,R]),O=y.useMemo(()=>({v7_relativeSplatPath:n.future.v7_relativeSplatPath}),[n.future.v7_relativeSplatPath]);return y.createElement(y.Fragment,null,y.createElement(vh.Provider,{value:N},y.createElement(mj.Provider,{value:s},y.createElement(tL.Provider,{value:C.current},y.createElement(eL.Provider,{value:d},y.createElement(V2,{basename:R,location:s.location,navigationType:s.historyAction,navigator:_,future:O},s.initialized||n.future.v7_partialHydration?y.createElement(iL,{routes:n.routes,future:n.future,state:s}):t))))),null)}const iL=y.memo(lL);function lL(e){let{routes:t,future:n,state:r}=e;return R2(t,void 0,r,n)}const cL=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",uL=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Fu=y.forwardRef(function(t,n){let{onClick:r,relative:s,reloadDocument:o,replace:l,state:u,target:d,to:f,preventScrollReset:h,unstable_viewTransition:m}=t,g=q2(t,J2),{basename:x}=y.useContext(Ra),b,w=!1;if(typeof f=="string"&&uL.test(f)&&(b=f,cL))try{let M=new URL(window.location.href),_=f.startsWith("//")?new URL(M.protocol+f):new URL(f),R=Xl(_.pathname,x);_.origin===M.origin&&R!=null?f=R+_.search+_.hash:w=!0}catch{}let C=M2(f,{relative:s}),k=dL(f,{replace:l,state:u,target:d,preventScrollReset:h,relative:s,unstable_viewTransition:m});function j(M){r&&r(M),M.defaultPrevented||k(M)}return y.createElement("a",Du({},g,{href:b||C,onClick:w||o?r:j,ref:n,target:d}))});var xC;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(xC||(xC={}));var wC;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(wC||(wC={}));function dL(e,t){let{target:n,replace:r,state:s,preventScrollReset:o,relative:l,unstable_viewTransition:u}=t===void 0?{}:t,d=dn(),f=Pi(),h=bj(e,{relative:l});return y.useCallback(m=>{if(W2(m,n)){m.preventDefault();let g=r!==void 0?r:wi(f)===wi(h);d(e,{replace:g,state:s,preventScrollReset:o,relative:l,unstable_viewTransition:u})}},[f,d,h,r,s,n,e,o,l,u])}function hd(e){let t=y.useRef(_y(e)),n=y.useRef(!1),r=Pi(),s=y.useMemo(()=>G2(r.search,n.current?null:t.current),[r.search]),o=dn(),l=y.useCallback((u,d)=>{const f=_y(typeof u=="function"?u(s):u);n.current=!0,o("?"+f,d)},[o,s]);return[s,l]}function Ej(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var s=e.length;for(t=0;ttypeof e=="number"&&!isNaN(e),pi=e=>typeof e=="string",Ur=e=>typeof e=="function",up=e=>pi(e)||Ur(e)?e:null,Ry=e=>y.isValidElement(e)||pi(e)||Ur(e)||Lu(e);function fL(e,t,n){n===void 0&&(n=300);const{scrollHeight:r,style:s}=e;requestAnimationFrame(()=>{s.minHeight="initial",s.height=r+"px",s.transition=`all ${n}ms`,requestAnimationFrame(()=>{s.height="0",s.padding="0",s.margin="0",setTimeout(t,n)})})}function yh(e){let{enter:t,exit:n,appendPosition:r=!1,collapse:s=!0,collapseDuration:o=300}=e;return function(l){let{children:u,position:d,preventExitTransition:f,done:h,nodeRef:m,isIn:g,playToast:x}=l;const b=r?`${t}--${d}`:t,w=r?`${n}--${d}`:n,C=y.useRef(0);return y.useLayoutEffect(()=>{const k=m.current,j=b.split(" "),M=_=>{_.target===m.current&&(x(),k.removeEventListener("animationend",M),k.removeEventListener("animationcancel",M),C.current===0&&_.type!=="animationcancel"&&k.classList.remove(...j))};k.classList.add(...j),k.addEventListener("animationend",M),k.addEventListener("animationcancel",M)},[]),y.useEffect(()=>{const k=m.current,j=()=>{k.removeEventListener("animationend",j),s?fL(k,h,o):h()};g||(f?j():(C.current=1,k.className+=` ${w}`,k.addEventListener("animationend",j)))},[g]),qe.createElement(qe.Fragment,null,u)}}function SC(e,t){return e!=null?{content:e.content,containerId:e.props.containerId,id:e.props.toastId,theme:e.props.theme,type:e.props.type,data:e.props.data||{},isLoading:e.props.isLoading,icon:e.props.icon,status:t}:{}}const ur=new Map;let $u=[];const Py=new Set,pL=e=>Py.forEach(t=>t(e)),kj=()=>ur.size>0;function jj(e,t){var n;if(t)return!((n=ur.get(t))==null||!n.isToastActive(e));let r=!1;return ur.forEach(s=>{s.isToastActive(e)&&(r=!0)}),r}function Tj(e,t){Ry(e)&&(kj()||$u.push({content:e,options:t}),ur.forEach(n=>{n.buildToast(e,t)}))}function CC(e,t){ur.forEach(n=>{t!=null&&t!=null&&t.containerId?t?.containerId===n.id&&n.toggle(e,t?.id):n.toggle(e,t?.id)})}function hL(e){const{subscribe:t,getSnapshot:n,setProps:r}=y.useRef((function(o){const l=o.containerId||1;return{subscribe(u){const d=(function(h,m,g){let x=1,b=0,w=[],C=[],k=[],j=m;const M=new Map,_=new Set,R=()=>{k=Array.from(M.values()),_.forEach(D=>D())},N=D=>{C=D==null?[]:C.filter(z=>z!==D),R()},O=D=>{const{toastId:z,onOpen:Q,updateId:pe,children:V}=D.props,G=pe==null;D.staleId&&M.delete(D.staleId),M.set(z,D),C=[...C,D.props.toastId].filter(W=>W!==D.staleId),R(),g(SC(D,G?"added":"updated")),G&&Ur(Q)&&Q(y.isValidElement(V)&&V.props)};return{id:h,props:j,observe:D=>(_.add(D),()=>_.delete(D)),toggle:(D,z)=>{M.forEach(Q=>{z!=null&&z!==Q.props.toastId||Ur(Q.toggle)&&Q.toggle(D)})},removeToast:N,toasts:M,clearQueue:()=>{b-=w.length,w=[]},buildToast:(D,z)=>{if((F=>{let{containerId:fe,toastId:te,updateId:de}=F;const ge=fe?fe!==h:h!==1,Z=M.has(te)&&de==null;return ge||Z})(z))return;const{toastId:Q,updateId:pe,data:V,staleId:G,delay:W}=z,ie=()=>{N(Q)},re=pe==null;re&&b++;const Y={...j,style:j.toastStyle,key:x++,...Object.fromEntries(Object.entries(z).filter(F=>{let[fe,te]=F;return te!=null})),toastId:Q,updateId:pe,data:V,closeToast:ie,isIn:!1,className:up(z.className||j.toastClassName),bodyClassName:up(z.bodyClassName||j.bodyClassName),progressClassName:up(z.progressClassName||j.progressClassName),autoClose:!z.isLoading&&(H=z.autoClose,q=j.autoClose,H===!1||Lu(H)&&H>0?H:q),deleteToast(){const F=M.get(Q),{onClose:fe,children:te}=F.props;Ur(fe)&&fe(y.isValidElement(te)&&te.props),g(SC(F,"removed")),M.delete(Q),b--,b<0&&(b=0),w.length>0?O(w.shift()):R()}};var H,q;Y.closeButton=j.closeButton,z.closeButton===!1||Ry(z.closeButton)?Y.closeButton=z.closeButton:z.closeButton===!0&&(Y.closeButton=!Ry(j.closeButton)||j.closeButton);let he=D;y.isValidElement(D)&&!pi(D.type)?he=y.cloneElement(D,{closeToast:ie,toastProps:Y,data:V}):Ur(D)&&(he=D({closeToast:ie,toastProps:Y,data:V}));const A={content:he,props:Y,staleId:G};j.limit&&j.limit>0&&b>j.limit&&re?w.push(A):Lu(W)?setTimeout(()=>{O(A)},W):O(A)},setProps(D){j=D},setToggle:(D,z)=>{M.get(D).toggle=z},isToastActive:D=>C.some(z=>z===D),getSnapshot:()=>j.newestOnTop?k.reverse():k}})(l,o,pL);ur.set(l,d);const f=d.observe(u);return $u.forEach(h=>Tj(h.content,h.options)),$u=[],()=>{f(),ur.delete(l)}},setProps(u){var d;(d=ur.get(l))==null||d.setProps(u)},getSnapshot(){var u;return(u=ur.get(l))==null?void 0:u.getSnapshot()}}})(e)).current;r(e);const s=y.useSyncExternalStore(t,n,n);return{getToastToRender:function(o){if(!s)return[];const l=new Map;return s.forEach(u=>{const{position:d}=u.props;l.has(d)||l.set(d,[]),l.get(d).push(u)}),Array.from(l,u=>o(u[0],u[1]))},isToastActive:jj,count:s?.length}}function gL(e){const[t,n]=y.useState(!1),[r,s]=y.useState(!1),o=y.useRef(null),l=y.useRef({start:0,delta:0,removalDistance:0,canCloseOnClick:!0,canDrag:!1,didMove:!1}).current,{autoClose:u,pauseOnHover:d,closeToast:f,onClick:h,closeOnClick:m}=e;var g,x;function b(){n(!0)}function w(){n(!1)}function C(M){const _=o.current;l.canDrag&&_&&(l.didMove=!0,t&&w(),l.delta=e.draggableDirection==="x"?M.clientX-l.start:M.clientY-l.start,l.start!==M.clientX&&(l.canCloseOnClick=!1),_.style.transform=`translate3d(${e.draggableDirection==="x"?`${l.delta}px, var(--y)`:`0, calc(${l.delta}px + var(--y))`},0)`,_.style.opacity=""+(1-Math.abs(l.delta/l.removalDistance)))}function k(){document.removeEventListener("pointermove",C),document.removeEventListener("pointerup",k);const M=o.current;if(l.canDrag&&l.didMove&&M){if(l.canDrag=!1,Math.abs(l.delta)>l.removalDistance)return s(!0),e.closeToast(),void e.collapseAll();M.style.transition="transform 0.2s, opacity 0.2s",M.style.removeProperty("transform"),M.style.removeProperty("opacity")}}(x=ur.get((g={id:e.toastId,containerId:e.containerId,fn:n}).containerId||1))==null||x.setToggle(g.id,g.fn),y.useEffect(()=>{if(e.pauseOnFocusLoss)return document.hasFocus()||w(),window.addEventListener("focus",b),window.addEventListener("blur",w),()=>{window.removeEventListener("focus",b),window.removeEventListener("blur",w)}},[e.pauseOnFocusLoss]);const j={onPointerDown:function(M){if(e.draggable===!0||e.draggable===M.pointerType){l.didMove=!1,document.addEventListener("pointermove",C),document.addEventListener("pointerup",k);const _=o.current;l.canCloseOnClick=!0,l.canDrag=!0,_.style.transition="none",e.draggableDirection==="x"?(l.start=M.clientX,l.removalDistance=_.offsetWidth*(e.draggablePercent/100)):(l.start=M.clientY,l.removalDistance=_.offsetHeight*(e.draggablePercent===80?1.5*e.draggablePercent:e.draggablePercent)/100)}},onPointerUp:function(M){const{top:_,bottom:R,left:N,right:O}=o.current.getBoundingClientRect();M.nativeEvent.type!=="touchend"&&e.pauseOnHover&&M.clientX>=N&&M.clientX<=O&&M.clientY>=_&&M.clientY<=R?w():b()}};return u&&d&&(j.onMouseEnter=w,e.stacked||(j.onMouseLeave=b)),m&&(j.onClick=M=>{h&&h(M),l.canCloseOnClick&&f()}),{playToast:b,pauseToast:w,isRunning:t,preventExitTransition:r,toastRef:o,eventHandlers:j}}function mL(e){let{delay:t,isRunning:n,closeToast:r,type:s="default",hide:o,className:l,style:u,controlledProgress:d,progress:f,rtl:h,isIn:m,theme:g}=e;const x=o||d&&f===0,b={...u,animationDuration:`${t}ms`,animationPlayState:n?"running":"paused"};d&&(b.transform=`scaleX(${f})`);const w=wo("Toastify__progress-bar",d?"Toastify__progress-bar--controlled":"Toastify__progress-bar--animated",`Toastify__progress-bar-theme--${g}`,`Toastify__progress-bar--${s}`,{"Toastify__progress-bar--rtl":h}),C=Ur(l)?l({rtl:h,type:s,defaultClassName:w}):wo(w,l),k={[d&&f>=1?"onTransitionEnd":"onAnimationEnd"]:d&&f<1?null:()=>{m&&r()}};return qe.createElement("div",{className:"Toastify__progress-bar--wrp","data-hidden":x},qe.createElement("div",{className:`Toastify__progress-bar--bg Toastify__progress-bar-theme--${g} Toastify__progress-bar--${s}`}),qe.createElement("div",{role:"progressbar","aria-hidden":x?"true":"false","aria-label":"notification timer",className:C,style:b,...k}))}let vL=1;const Nj=()=>""+vL++;function yL(e){return e&&(pi(e.toastId)||Lu(e.toastId))?e.toastId:Nj()}function ku(e,t){return Tj(e,t),t.toastId}function Pp(e,t){return{...t,type:t&&t.type||e,toastId:yL(t)}}function Lf(e){return(t,n)=>ku(t,Pp(e,n))}function me(e,t){return ku(e,Pp("default",t))}me.loading=(e,t)=>ku(e,Pp("default",{isLoading:!0,autoClose:!1,closeOnClick:!1,closeButton:!1,draggable:!1,...t})),me.promise=function(e,t,n){let r,{pending:s,error:o,success:l}=t;s&&(r=pi(s)?me.loading(s,n):me.loading(s.render,{...n,...s}));const u={isLoading:null,autoClose:null,closeOnClick:null,closeButton:null,draggable:null},d=(h,m,g)=>{if(m==null)return void me.dismiss(r);const x={type:h,...u,...n,data:g},b=pi(m)?{render:m}:m;return r?me.update(r,{...x,...b}):me(b.render,{...x,...b}),g},f=Ur(e)?e():e;return f.then(h=>d("success",l,h)).catch(h=>d("error",o,h)),f},me.success=Lf("success"),me.info=Lf("info"),me.error=Lf("error"),me.warning=Lf("warning"),me.warn=me.warning,me.dark=(e,t)=>ku(e,Pp("default",{theme:"dark",...t})),me.dismiss=function(e){(function(t){var n;if(kj()){if(t==null||pi(n=t)||Lu(n))ur.forEach(r=>{r.removeToast(t)});else if(t&&("containerId"in t||"id"in t)){const r=ur.get(t.containerId);r?r.removeToast(t.id):ur.forEach(s=>{s.removeToast(t.id)})}}else $u=$u.filter(r=>t!=null&&r.options.toastId!==t)})(e)},me.clearWaitingQueue=function(e){e===void 0&&(e={}),ur.forEach(t=>{!t.props.limit||e.containerId&&t.id!==e.containerId||t.clearQueue()})},me.isActive=jj,me.update=function(e,t){t===void 0&&(t={});const n=((r,s)=>{var o;let{containerId:l}=s;return(o=ur.get(l||1))==null?void 0:o.toasts.get(r)})(e,t);if(n){const{props:r,content:s}=n,o={delay:100,...r,...t,toastId:t.toastId||e,updateId:Nj()};o.toastId!==e&&(o.staleId=e);const l=o.render||s;delete o.render,ku(l,o)}},me.done=e=>{me.update(e,{progress:1})},me.onChange=function(e){return Py.add(e),()=>{Py.delete(e)}},me.play=e=>CC(!0,e),me.pause=e=>CC(!1,e);const bL=typeof window<"u"?y.useLayoutEffect:y.useEffect,$f=e=>{let{theme:t,type:n,isLoading:r,...s}=e;return qe.createElement("svg",{viewBox:"0 0 24 24",width:"100%",height:"100%",fill:t==="colored"?"currentColor":`var(--toastify-icon-color-${n})`,...s})},gv={info:function(e){return qe.createElement($f,{...e},qe.createElement("path",{d:"M12 0a12 12 0 1012 12A12.013 12.013 0 0012 0zm.25 5a1.5 1.5 0 11-1.5 1.5 1.5 1.5 0 011.5-1.5zm2.25 13.5h-4a1 1 0 010-2h.75a.25.25 0 00.25-.25v-4.5a.25.25 0 00-.25-.25h-.75a1 1 0 010-2h1a2 2 0 012 2v4.75a.25.25 0 00.25.25h.75a1 1 0 110 2z"}))},warning:function(e){return qe.createElement($f,{...e},qe.createElement("path",{d:"M23.32 17.191L15.438 2.184C14.728.833 13.416 0 11.996 0c-1.42 0-2.733.833-3.443 2.184L.533 17.448a4.744 4.744 0 000 4.368C1.243 23.167 2.555 24 3.975 24h16.05C22.22 24 24 22.044 24 19.632c0-.904-.251-1.746-.68-2.44zm-9.622 1.46c0 1.033-.724 1.823-1.698 1.823s-1.698-.79-1.698-1.822v-.043c0-1.028.724-1.822 1.698-1.822s1.698.79 1.698 1.822v.043zm.039-12.285l-.84 8.06c-.057.581-.408.943-.897.943-.49 0-.84-.367-.896-.942l-.84-8.065c-.057-.624.25-1.095.779-1.095h1.91c.528.005.84.476.784 1.1z"}))},success:function(e){return qe.createElement($f,{...e},qe.createElement("path",{d:"M12 0a12 12 0 1012 12A12.014 12.014 0 0012 0zm6.927 8.2l-6.845 9.289a1.011 1.011 0 01-1.43.188l-4.888-3.908a1 1 0 111.25-1.562l4.076 3.261 6.227-8.451a1 1 0 111.61 1.183z"}))},error:function(e){return qe.createElement($f,{...e},qe.createElement("path",{d:"M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"}))},spinner:function(){return qe.createElement("div",{className:"Toastify__spinner"})}},xL=e=>{const{isRunning:t,preventExitTransition:n,toastRef:r,eventHandlers:s,playToast:o}=gL(e),{closeButton:l,children:u,autoClose:d,onClick:f,type:h,hideProgressBar:m,closeToast:g,transition:x,position:b,className:w,style:C,bodyClassName:k,bodyStyle:j,progressClassName:M,progressStyle:_,updateId:R,role:N,progress:O,rtl:D,toastId:z,deleteToast:Q,isIn:pe,isLoading:V,closeOnClick:G,theme:W}=e,ie=wo("Toastify__toast",`Toastify__toast-theme--${W}`,`Toastify__toast--${h}`,{"Toastify__toast--rtl":D},{"Toastify__toast--close-on-click":G}),re=Ur(w)?w({rtl:D,position:b,type:h,defaultClassName:ie}):wo(ie,w),Y=(function(A){let{theme:F,type:fe,isLoading:te,icon:de}=A,ge=null;const Z={theme:F,type:fe};return de===!1||(Ur(de)?ge=de({...Z,isLoading:te}):y.isValidElement(de)?ge=y.cloneElement(de,Z):te?ge=gv.spinner():(ye=>ye in gv)(fe)&&(ge=gv[fe](Z))),ge})(e),H=!!O||!d,q={closeToast:g,type:h,theme:W};let he=null;return l===!1||(he=Ur(l)?l(q):y.isValidElement(l)?y.cloneElement(l,q):(function(A){let{closeToast:F,theme:fe,ariaLabel:te="close"}=A;return qe.createElement("button",{className:`Toastify__close-button Toastify__close-button--${fe}`,type:"button",onClick:de=>{de.stopPropagation(),F(de)},"aria-label":te},qe.createElement("svg",{"aria-hidden":"true",viewBox:"0 0 14 16"},qe.createElement("path",{fillRule:"evenodd",d:"M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"})))})(q)),qe.createElement(x,{isIn:pe,done:Q,position:b,preventExitTransition:n,nodeRef:r,playToast:o},qe.createElement("div",{id:z,onClick:f,"data-in":pe,className:re,...s,style:C,ref:r},qe.createElement("div",{...pe&&{role:N},className:Ur(k)?k({type:h}):wo("Toastify__toast-body",k),style:j},Y!=null&&qe.createElement("div",{className:wo("Toastify__toast-icon",{"Toastify--animate-icon Toastify__zoom-enter":!V})},Y),qe.createElement("div",null,u)),he,qe.createElement(mL,{...R&&!H?{key:`pb-${R}`}:{},rtl:D,theme:W,delay:d,isRunning:t,isIn:pe,closeToast:g,hide:m,type:h,style:_,className:M,controlledProgress:H,progress:O||0})))},bh=function(e,t){return t===void 0&&(t=!1),{enter:`Toastify--animate Toastify__${e}-enter`,exit:`Toastify--animate Toastify__${e}-exit`,appendPosition:t}},wL=yh(bh("bounce",!0));yh(bh("slide",!0));yh(bh("zoom"));yh(bh("flip"));const SL={position:"top-right",transition:wL,autoClose:5e3,closeButton:!0,pauseOnHover:!0,pauseOnFocusLoss:!0,draggable:"touch",draggablePercent:80,draggableDirection:"x",role:"alert",theme:"light"};function CL(e){let t={...SL,...e};const n=e.stacked,[r,s]=y.useState(!0),o=y.useRef(null),{getToastToRender:l,isToastActive:u,count:d}=hL(t),{className:f,style:h,rtl:m,containerId:g}=t;function x(w){const C=wo("Toastify__toast-container",`Toastify__toast-container--${w}`,{"Toastify__toast-container--rtl":m});return Ur(f)?f({position:w,rtl:m,defaultClassName:C}):wo(C,up(f))}function b(){n&&(s(!0),me.play())}return bL(()=>{if(n){var w;const C=o.current.querySelectorAll('[data-in="true"]'),k=12,j=(w=t.position)==null?void 0:w.includes("top");let M=0,_=0;Array.from(C).reverse().forEach((R,N)=>{const O=R;O.classList.add("Toastify__toast--stacked"),N>0&&(O.dataset.collapsed=`${r}`),O.dataset.pos||(O.dataset.pos=j?"top":"bot");const D=M*(r?.2:1)+(r?0:k*N);O.style.setProperty("--y",`${j?D:-1*D}px`),O.style.setProperty("--g",`${k}`),O.style.setProperty("--s",""+(1-(r?_:0))),M+=O.offsetHeight,_+=.025})}},[r,d,n]),qe.createElement("div",{ref:o,className:"Toastify",id:g,onMouseEnter:()=>{n&&(s(!1),me.pause())},onMouseLeave:b},l((w,C)=>{const k=C.length?{...h}:{...h,pointerEvents:"none"};return qe.createElement("div",{className:x(w),style:k,key:`container-${w}`},C.map(j=>{let{content:M,props:_}=j;return qe.createElement(xL,{..._,stacked:n,collapseAll:b,isIn:u(_.toastId,_.containerId),style:_.style,key:`toast-${_.key}`},M)}))}))}const EL={theme:"system",setTheme:()=>null},Mj=y.createContext(EL);function kL({children:e,defaultTheme:t="system",storageKey:n="vite-ui-theme",...r}){const[s,o]=y.useState(()=>localStorage.getItem(n)||t);y.useEffect(()=>{const u=window.document.documentElement;if(u.classList.remove("light","dark"),s==="system"){const d=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";u.classList.add(d);return}u.classList.add(s)},[s]);const l={theme:s,setTheme:u=>{localStorage.setItem(n,u),o(u)}};return i.jsx(Mj.Provider,{...r,value:l,children:e})}const tc=()=>{const e=y.useContext(Mj);if(e===void 0)throw new Error("useTheme must be used within a ThemeProvider");return e};let mv=!1;const _j=new KD({defaultOptions:{queries:{staleTime:1e3*60*5,retry(e){return e>=3?(mv===!1&&(mv=!0,me.error("The application is taking longer than expected to load, please try again in a few minutes.",{onClose:()=>{mv=!1}})),!1):!0}}}});var jn=(e=>(e.API_URL="apiUrl",e.TOKEN="token",e.INSTANCE_ID="instanceId",e.INSTANCE_NAME="instanceName",e.INSTANCE_TOKEN="instanceToken",e.VERSION="version",e.FACEBOOK_APP_ID="facebookAppId",e.FACEBOOK_CONFIG_ID="facebookConfigId",e.FACEBOOK_USER_TOKEN="facebookUserToken",e.CLIENT_NAME="clientName",e))(jn||{});const Rj=async e=>{if(e.url){const t=e.url.endsWith("/")?e.url.slice(0,-1):e.url;localStorage.setItem("apiUrl",t)}e.token&&localStorage.setItem("token",e.token),e.version&&localStorage.setItem("version",e.version),e.facebookAppId&&localStorage.setItem("facebookAppId",e.facebookAppId),e.facebookConfigId&&localStorage.setItem("facebookConfigId",e.facebookConfigId),e.facebookUserToken&&localStorage.setItem("facebookUserToken",e.facebookUserToken),e.clientName&&localStorage.setItem("clientName",e.clientName)},Pj=()=>{localStorage.removeItem("apiUrl"),localStorage.removeItem("token"),localStorage.removeItem("version"),localStorage.removeItem("facebookAppId"),localStorage.removeItem("facebookConfigId"),localStorage.removeItem("facebookUserToken"),localStorage.removeItem("clientName")},dr=e=>localStorage.getItem(e),tn=({children:e})=>{const t=dr(jn.API_URL),n=dr(jn.TOKEN),r=dr(jn.VERSION);return!t||!n||!r?i.jsx(Cj,{to:"/manager/login"}):e},jL=({children:e})=>{const t=dr(jn.API_URL),n=dr(jn.TOKEN),r=dr(jn.VERSION);return t&&n&&r?i.jsx(Cj,{to:"/"}):e};function Oj(e,t){return function(){return e.apply(t,arguments)}}const{toString:TL}=Object.prototype,{getPrototypeOf:$b}=Object,{iterator:xh,toStringTag:Ij}=Symbol,wh=(e=>t=>{const n=TL.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),Rs=e=>(e=e.toLowerCase(),t=>wh(t)===e),Sh=e=>t=>typeof t===e,{isArray:nc}=Array,$l=Sh("undefined");function gd(e){return e!==null&&!$l(e)&&e.constructor!==null&&!$l(e.constructor)&&jr(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const Aj=Rs("ArrayBuffer");function NL(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&Aj(e.buffer),t}const ML=Sh("string"),jr=Sh("function"),Dj=Sh("number"),md=e=>e!==null&&typeof e=="object",_L=e=>e===!0||e===!1,dp=e=>{if(wh(e)!=="object")return!1;const t=$b(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Ij in e)&&!(xh in e)},RL=e=>{if(!md(e)||gd(e))return!1;try{return Object.keys(e).length===0&&Object.getPrototypeOf(e)===Object.prototype}catch{return!1}},PL=Rs("Date"),OL=Rs("File"),IL=Rs("Blob"),AL=Rs("FileList"),DL=e=>md(e)&&jr(e.pipe),FL=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||jr(e.append)&&((t=wh(e))==="formdata"||t==="object"&&jr(e.toString)&&e.toString()==="[object FormData]"))},LL=Rs("URLSearchParams"),[$L,BL,zL,UL]=["ReadableStream","Request","Response","Headers"].map(Rs),VL=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function vd(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let r,s;if(typeof e!="object"&&(e=[e]),nc(e))for(r=0,s=e.length;r0;)if(s=n[r],t===s.toLowerCase())return s;return null}const li=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,Lj=e=>!$l(e)&&e!==li;function Oy(){const{caseless:e,skipUndefined:t}=Lj(this)&&this||{},n={},r=(s,o)=>{const l=e&&Fj(n,o)||o;dp(n[l])&&dp(s)?n[l]=Oy(n[l],s):dp(s)?n[l]=Oy({},s):nc(s)?n[l]=s.slice():(!t||!$l(s))&&(n[l]=s)};for(let s=0,o=arguments.length;s(vd(t,(s,o)=>{n&&jr(s)?e[o]=Oj(s,n):e[o]=s},{allOwnKeys:r}),e),qL=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),KL=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},WL=(e,t,n,r)=>{let s,o,l;const u={};if(t=t||{},e==null)return t;do{for(s=Object.getOwnPropertyNames(e),o=s.length;o-- >0;)l=s[o],(!r||r(l,e,t))&&!u[l]&&(t[l]=e[l],u[l]=!0);e=n!==!1&&$b(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},GL=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return r!==-1&&r===n},JL=e=>{if(!e)return null;if(nc(e))return e;let t=e.length;if(!Dj(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},QL=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&$b(Uint8Array)),ZL=(e,t)=>{const r=(e&&e[xh]).call(e);let s;for(;(s=r.next())&&!s.done;){const o=s.value;t.call(e,o[0],o[1])}},YL=(e,t)=>{let n;const r=[];for(;(n=e.exec(t))!==null;)r.push(n);return r},XL=Rs("HTMLFormElement"),e4=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,s){return r.toUpperCase()+s}),EC=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),t4=Rs("RegExp"),$j=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};vd(n,(s,o)=>{let l;(l=t(s,o,e))!==!1&&(r[o]=l||s)}),Object.defineProperties(e,r)},n4=e=>{$j(e,(t,n)=>{if(jr(e)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=e[n];if(jr(r)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},r4=(e,t)=>{const n={},r=s=>{s.forEach(o=>{n[o]=!0})};return nc(e)?r(e):r(String(e).split(t)),n},s4=()=>{},o4=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t;function a4(e){return!!(e&&jr(e.append)&&e[Ij]==="FormData"&&e[xh])}const i4=e=>{const t=new Array(10),n=(r,s)=>{if(md(r)){if(t.indexOf(r)>=0)return;if(gd(r))return r;if(!("toJSON"in r)){t[s]=r;const o=nc(r)?[]:{};return vd(r,(l,u)=>{const d=n(l,s+1);!$l(d)&&(o[u]=d)}),t[s]=void 0,o}}return r};return n(e,0)},l4=Rs("AsyncFunction"),c4=e=>e&&(md(e)||jr(e))&&jr(e.then)&&jr(e.catch),Bj=((e,t)=>e?setImmediate:t?((n,r)=>(li.addEventListener("message",({source:s,data:o})=>{s===li&&o===n&&r.length&&r.shift()()},!1),s=>{r.push(s),li.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",jr(li.postMessage)),u4=typeof queueMicrotask<"u"?queueMicrotask.bind(li):typeof process<"u"&&process.nextTick||Bj,d4=e=>e!=null&&jr(e[xh]),ce={isArray:nc,isArrayBuffer:Aj,isBuffer:gd,isFormData:FL,isArrayBufferView:NL,isString:ML,isNumber:Dj,isBoolean:_L,isObject:md,isPlainObject:dp,isEmptyObject:RL,isReadableStream:$L,isRequest:BL,isResponse:zL,isHeaders:UL,isUndefined:$l,isDate:PL,isFile:OL,isBlob:IL,isRegExp:t4,isFunction:jr,isStream:DL,isURLSearchParams:LL,isTypedArray:QL,isFileList:AL,forEach:vd,merge:Oy,extend:HL,trim:VL,stripBOM:qL,inherits:KL,toFlatObject:WL,kindOf:wh,kindOfTest:Rs,endsWith:GL,toArray:JL,forEachEntry:ZL,matchAll:YL,isHTMLForm:XL,hasOwnProperty:EC,hasOwnProp:EC,reduceDescriptors:$j,freezeMethods:n4,toObjectSet:r4,toCamelCase:e4,noop:s4,toFiniteNumber:o4,findKey:Fj,global:li,isContextDefined:Lj,isSpecCompliantForm:a4,toJSONObject:i4,isAsyncFn:l4,isThenable:c4,setImmediate:Bj,asap:u4,isIterable:d4};function vt(e,t,n,r,s){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),s&&(this.response=s,this.status=s.status?s.status:null)}ce.inherits(vt,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:ce.toJSONObject(this.config),code:this.code,status:this.status}}});const zj=vt.prototype,Uj={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{Uj[e]={value:e}});Object.defineProperties(vt,Uj);Object.defineProperty(zj,"isAxiosError",{value:!0});vt.from=(e,t,n,r,s,o)=>{const l=Object.create(zj);ce.toFlatObject(e,l,function(h){return h!==Error.prototype},f=>f!=="isAxiosError");const u=e&&e.message?e.message:"Error",d=t==null&&e?e.code:t;return vt.call(l,u,d,n,r,s),e&&l.cause==null&&Object.defineProperty(l,"cause",{value:e,configurable:!0}),l.name=e&&e.name||"Error",o&&Object.assign(l,o),l};const f4=null;function Iy(e){return ce.isPlainObject(e)||ce.isArray(e)}function Vj(e){return ce.endsWith(e,"[]")?e.slice(0,-2):e}function kC(e,t,n){return e?e.concat(t).map(function(s,o){return s=Vj(s),!n&&o?"["+s+"]":s}).join(n?".":""):t}function p4(e){return ce.isArray(e)&&!e.some(Iy)}const h4=ce.toFlatObject(ce,{},null,function(t){return/^is[A-Z]/.test(t)});function Ch(e,t,n){if(!ce.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=ce.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(w,C){return!ce.isUndefined(C[w])});const r=n.metaTokens,s=n.visitor||h,o=n.dots,l=n.indexes,d=(n.Blob||typeof Blob<"u"&&Blob)&&ce.isSpecCompliantForm(t);if(!ce.isFunction(s))throw new TypeError("visitor must be a function");function f(b){if(b===null)return"";if(ce.isDate(b))return b.toISOString();if(ce.isBoolean(b))return b.toString();if(!d&&ce.isBlob(b))throw new vt("Blob is not supported. Use a Buffer instead.");return ce.isArrayBuffer(b)||ce.isTypedArray(b)?d&&typeof Blob=="function"?new Blob([b]):Buffer.from(b):b}function h(b,w,C){let k=b;if(b&&!C&&typeof b=="object"){if(ce.endsWith(w,"{}"))w=r?w:w.slice(0,-2),b=JSON.stringify(b);else if(ce.isArray(b)&&p4(b)||(ce.isFileList(b)||ce.endsWith(w,"[]"))&&(k=ce.toArray(b)))return w=Vj(w),k.forEach(function(M,_){!(ce.isUndefined(M)||M===null)&&t.append(l===!0?kC([w],_,o):l===null?w:w+"[]",f(M))}),!1}return Iy(b)?!0:(t.append(kC(C,w,o),f(b)),!1)}const m=[],g=Object.assign(h4,{defaultVisitor:h,convertValue:f,isVisitable:Iy});function x(b,w){if(!ce.isUndefined(b)){if(m.indexOf(b)!==-1)throw Error("Circular reference detected in "+w.join("."));m.push(b),ce.forEach(b,function(k,j){(!(ce.isUndefined(k)||k===null)&&s.call(t,k,ce.isString(j)?j.trim():j,w,g))===!0&&x(k,w?w.concat(j):[j])}),m.pop()}}if(!ce.isObject(e))throw new TypeError("data must be an object");return x(e),t}function jC(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(r){return t[r]})}function Bb(e,t){this._pairs=[],e&&Ch(e,this,t)}const Hj=Bb.prototype;Hj.append=function(t,n){this._pairs.push([t,n])};Hj.toString=function(t){const n=t?function(r){return t.call(this,r,jC)}:jC;return this._pairs.map(function(s){return n(s[0])+"="+n(s[1])},"").join("&")};function g4(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function qj(e,t,n){if(!t)return e;const r=n&&n.encode||g4;ce.isFunction(n)&&(n={serialize:n});const s=n&&n.serialize;let o;if(s?o=s(t,n):o=ce.isURLSearchParams(t)?t.toString():new Bb(t,n).toString(r),o){const l=e.indexOf("#");l!==-1&&(e=e.slice(0,l)),e+=(e.indexOf("?")===-1?"?":"&")+o}return e}class TC{constructor(){this.handlers=[]}use(t,n,r){return this.handlers.push({fulfilled:t,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){ce.forEach(this.handlers,function(r){r!==null&&t(r)})}}const Kj={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},m4=typeof URLSearchParams<"u"?URLSearchParams:Bb,v4=typeof FormData<"u"?FormData:null,y4=typeof Blob<"u"?Blob:null,b4={isBrowser:!0,classes:{URLSearchParams:m4,FormData:v4,Blob:y4},protocols:["http","https","file","blob","url","data"]},zb=typeof window<"u"&&typeof document<"u",Ay=typeof navigator=="object"&&navigator||void 0,x4=zb&&(!Ay||["ReactNative","NativeScript","NS"].indexOf(Ay.product)<0),w4=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",S4=zb&&window.location.href||"http://localhost",C4=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:zb,hasStandardBrowserEnv:x4,hasStandardBrowserWebWorkerEnv:w4,navigator:Ay,origin:S4},Symbol.toStringTag,{value:"Module"})),rr={...C4,...b4};function E4(e,t){return Ch(e,new rr.classes.URLSearchParams,{visitor:function(n,r,s,o){return rr.isNode&&ce.isBuffer(n)?(this.append(r,n.toString("base64")),!1):o.defaultVisitor.apply(this,arguments)},...t})}function k4(e){return ce.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function j4(e){const t={},n=Object.keys(e);let r;const s=n.length;let o;for(r=0;r=n.length;return l=!l&&ce.isArray(s)?s.length:l,d?(ce.hasOwnProp(s,l)?s[l]=[s[l],r]:s[l]=r,!u):((!s[l]||!ce.isObject(s[l]))&&(s[l]=[]),t(n,r,s[l],o)&&ce.isArray(s[l])&&(s[l]=j4(s[l])),!u)}if(ce.isFormData(e)&&ce.isFunction(e.entries)){const n={};return ce.forEachEntry(e,(r,s)=>{t(k4(r),s,n,0)}),n}return null}function T4(e,t,n){if(ce.isString(e))try{return(t||JSON.parse)(e),ce.trim(e)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(e)}const yd={transitional:Kj,adapter:["xhr","http","fetch"],transformRequest:[function(t,n){const r=n.getContentType()||"",s=r.indexOf("application/json")>-1,o=ce.isObject(t);if(o&&ce.isHTMLForm(t)&&(t=new FormData(t)),ce.isFormData(t))return s?JSON.stringify(Wj(t)):t;if(ce.isArrayBuffer(t)||ce.isBuffer(t)||ce.isStream(t)||ce.isFile(t)||ce.isBlob(t)||ce.isReadableStream(t))return t;if(ce.isArrayBufferView(t))return t.buffer;if(ce.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let u;if(o){if(r.indexOf("application/x-www-form-urlencoded")>-1)return E4(t,this.formSerializer).toString();if((u=ce.isFileList(t))||r.indexOf("multipart/form-data")>-1){const d=this.env&&this.env.FormData;return Ch(u?{"files[]":t}:t,d&&new d,this.formSerializer)}}return o||s?(n.setContentType("application/json",!1),T4(t)):t}],transformResponse:[function(t){const n=this.transitional||yd.transitional,r=n&&n.forcedJSONParsing,s=this.responseType==="json";if(ce.isResponse(t)||ce.isReadableStream(t))return t;if(t&&ce.isString(t)&&(r&&!this.responseType||s)){const l=!(n&&n.silentJSONParsing)&&s;try{return JSON.parse(t,this.parseReviver)}catch(u){if(l)throw u.name==="SyntaxError"?vt.from(u,vt.ERR_BAD_RESPONSE,this,null,this.response):u}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:rr.classes.FormData,Blob:rr.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};ce.forEach(["delete","get","head","post","put","patch"],e=>{yd.headers[e]={}});const N4=ce.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),M4=e=>{const t={};let n,r,s;return e&&e.split(` -`).forEach(function(l){s=l.indexOf(":"),n=l.substring(0,s).trim().toLowerCase(),r=l.substring(s+1).trim(),!(!n||t[n]&&N4[n])&&(n==="set-cookie"?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t},NC=Symbol("internals");function ru(e){return e&&String(e).trim().toLowerCase()}function fp(e){return e===!1||e==null?e:ce.isArray(e)?e.map(fp):String(e)}function _4(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}const R4=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function vv(e,t,n,r,s){if(ce.isFunction(r))return r.call(this,t,n);if(s&&(t=n),!!ce.isString(t)){if(ce.isString(r))return t.indexOf(r)!==-1;if(ce.isRegExp(r))return r.test(t)}}function P4(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,r)=>n.toUpperCase()+r)}function O4(e,t){const n=ce.toCamelCase(" "+t);["get","set","has"].forEach(r=>{Object.defineProperty(e,r+n,{value:function(s,o,l){return this[r].call(this,t,s,o,l)},configurable:!0})})}let Tr=class{constructor(t){t&&this.set(t)}set(t,n,r){const s=this;function o(u,d,f){const h=ru(d);if(!h)throw new Error("header name must be a non-empty string");const m=ce.findKey(s,h);(!m||s[m]===void 0||f===!0||f===void 0&&s[m]!==!1)&&(s[m||d]=fp(u))}const l=(u,d)=>ce.forEach(u,(f,h)=>o(f,h,d));if(ce.isPlainObject(t)||t instanceof this.constructor)l(t,n);else if(ce.isString(t)&&(t=t.trim())&&!R4(t))l(M4(t),n);else if(ce.isObject(t)&&ce.isIterable(t)){let u={},d,f;for(const h of t){if(!ce.isArray(h))throw TypeError("Object iterator must return a key-value pair");u[f=h[0]]=(d=u[f])?ce.isArray(d)?[...d,h[1]]:[d,h[1]]:h[1]}l(u,n)}else t!=null&&o(n,t,r);return this}get(t,n){if(t=ru(t),t){const r=ce.findKey(this,t);if(r){const s=this[r];if(!n)return s;if(n===!0)return _4(s);if(ce.isFunction(n))return n.call(this,s,r);if(ce.isRegExp(n))return n.exec(s);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=ru(t),t){const r=ce.findKey(this,t);return!!(r&&this[r]!==void 0&&(!n||vv(this,this[r],r,n)))}return!1}delete(t,n){const r=this;let s=!1;function o(l){if(l=ru(l),l){const u=ce.findKey(r,l);u&&(!n||vv(r,r[u],u,n))&&(delete r[u],s=!0)}}return ce.isArray(t)?t.forEach(o):o(t),s}clear(t){const n=Object.keys(this);let r=n.length,s=!1;for(;r--;){const o=n[r];(!t||vv(this,this[o],o,t,!0))&&(delete this[o],s=!0)}return s}normalize(t){const n=this,r={};return ce.forEach(this,(s,o)=>{const l=ce.findKey(r,o);if(l){n[l]=fp(s),delete n[o];return}const u=t?P4(o):String(o).trim();u!==o&&delete n[o],n[u]=fp(s),r[u]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return ce.forEach(this,(r,s)=>{r!=null&&r!==!1&&(n[s]=t&&ce.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(` -`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const r=new this(t);return n.forEach(s=>r.set(s)),r}static accessor(t){const r=(this[NC]=this[NC]={accessors:{}}).accessors,s=this.prototype;function o(l){const u=ru(l);r[u]||(O4(s,l),r[u]=!0)}return ce.isArray(t)?t.forEach(o):o(t),this}};Tr.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);ce.reduceDescriptors(Tr.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(r){this[n]=r}}});ce.freezeMethods(Tr);function yv(e,t){const n=this||yd,r=t||n,s=Tr.from(r.headers);let o=r.data;return ce.forEach(e,function(u){o=u.call(n,o,s.normalize(),t?t.status:void 0)}),s.normalize(),o}function Gj(e){return!!(e&&e.__CANCEL__)}function rc(e,t,n){vt.call(this,e??"canceled",vt.ERR_CANCELED,t,n),this.name="CanceledError"}ce.inherits(rc,vt,{__CANCEL__:!0});function Jj(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new vt("Request failed with status code "+n.status,[vt.ERR_BAD_REQUEST,vt.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function I4(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function A4(e,t){e=e||10;const n=new Array(e),r=new Array(e);let s=0,o=0,l;return t=t!==void 0?t:1e3,function(d){const f=Date.now(),h=r[o];l||(l=f),n[s]=d,r[s]=f;let m=o,g=0;for(;m!==s;)g+=n[m++],m=m%e;if(s=(s+1)%e,s===o&&(o=(o+1)%e),f-l{n=h,s=null,o&&(clearTimeout(o),o=null),e(...f)};return[(...f)=>{const h=Date.now(),m=h-n;m>=r?l(f,h):(s=f,o||(o=setTimeout(()=>{o=null,l(s)},r-m)))},()=>s&&l(s)]}const Op=(e,t,n=3)=>{let r=0;const s=A4(50,250);return D4(o=>{const l=o.loaded,u=o.lengthComputable?o.total:void 0,d=l-r,f=s(d),h=l<=u;r=l;const m={loaded:l,total:u,progress:u?l/u:void 0,bytes:d,rate:f||void 0,estimated:f&&u&&h?(u-l)/f:void 0,event:o,lengthComputable:u!=null,[t?"download":"upload"]:!0};e(m)},n)},MC=(e,t)=>{const n=e!=null;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},_C=e=>(...t)=>ce.asap(()=>e(...t)),F4=rr.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,rr.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(rr.origin),rr.navigator&&/(msie|trident)/i.test(rr.navigator.userAgent)):()=>!0,L4=rr.hasStandardBrowserEnv?{write(e,t,n,r,s,o){const l=[e+"="+encodeURIComponent(t)];ce.isNumber(n)&&l.push("expires="+new Date(n).toGMTString()),ce.isString(r)&&l.push("path="+r),ce.isString(s)&&l.push("domain="+s),o===!0&&l.push("secure"),document.cookie=l.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function $4(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function B4(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function Qj(e,t,n){let r=!$4(t);return e&&(r||n==!1)?B4(e,t):t}const RC=e=>e instanceof Tr?{...e}:e;function Si(e,t){t=t||{};const n={};function r(f,h,m,g){return ce.isPlainObject(f)&&ce.isPlainObject(h)?ce.merge.call({caseless:g},f,h):ce.isPlainObject(h)?ce.merge({},h):ce.isArray(h)?h.slice():h}function s(f,h,m,g){if(ce.isUndefined(h)){if(!ce.isUndefined(f))return r(void 0,f,m,g)}else return r(f,h,m,g)}function o(f,h){if(!ce.isUndefined(h))return r(void 0,h)}function l(f,h){if(ce.isUndefined(h)){if(!ce.isUndefined(f))return r(void 0,f)}else return r(void 0,h)}function u(f,h,m){if(m in t)return r(f,h);if(m in e)return r(void 0,f)}const d={url:o,method:o,data:o,baseURL:l,transformRequest:l,transformResponse:l,paramsSerializer:l,timeout:l,timeoutMessage:l,withCredentials:l,withXSRFToken:l,adapter:l,responseType:l,xsrfCookieName:l,xsrfHeaderName:l,onUploadProgress:l,onDownloadProgress:l,decompress:l,maxContentLength:l,maxBodyLength:l,beforeRedirect:l,transport:l,httpAgent:l,httpsAgent:l,cancelToken:l,socketPath:l,responseEncoding:l,validateStatus:u,headers:(f,h,m)=>s(RC(f),RC(h),m,!0)};return ce.forEach(Object.keys({...e,...t}),function(h){const m=d[h]||s,g=m(e[h],t[h],h);ce.isUndefined(g)&&m!==u||(n[h]=g)}),n}const Zj=e=>{const t=Si({},e);let{data:n,withXSRFToken:r,xsrfHeaderName:s,xsrfCookieName:o,headers:l,auth:u}=t;if(t.headers=l=Tr.from(l),t.url=qj(Qj(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),u&&l.set("Authorization","Basic "+btoa((u.username||"")+":"+(u.password?unescape(encodeURIComponent(u.password)):""))),ce.isFormData(n)){if(rr.hasStandardBrowserEnv||rr.hasStandardBrowserWebWorkerEnv)l.setContentType(void 0);else if(ce.isFunction(n.getHeaders)){const d=n.getHeaders(),f=["content-type","content-length"];Object.entries(d).forEach(([h,m])=>{f.includes(h.toLowerCase())&&l.set(h,m)})}}if(rr.hasStandardBrowserEnv&&(r&&ce.isFunction(r)&&(r=r(t)),r||r!==!1&&F4(t.url))){const d=s&&o&&L4.read(o);d&&l.set(s,d)}return t},z4=typeof XMLHttpRequest<"u",U4=z4&&function(e){return new Promise(function(n,r){const s=Zj(e);let o=s.data;const l=Tr.from(s.headers).normalize();let{responseType:u,onUploadProgress:d,onDownloadProgress:f}=s,h,m,g,x,b;function w(){x&&x(),b&&b(),s.cancelToken&&s.cancelToken.unsubscribe(h),s.signal&&s.signal.removeEventListener("abort",h)}let C=new XMLHttpRequest;C.open(s.method.toUpperCase(),s.url,!0),C.timeout=s.timeout;function k(){if(!C)return;const M=Tr.from("getAllResponseHeaders"in C&&C.getAllResponseHeaders()),R={data:!u||u==="text"||u==="json"?C.responseText:C.response,status:C.status,statusText:C.statusText,headers:M,config:e,request:C};Jj(function(O){n(O),w()},function(O){r(O),w()},R),C=null}"onloadend"in C?C.onloadend=k:C.onreadystatechange=function(){!C||C.readyState!==4||C.status===0&&!(C.responseURL&&C.responseURL.indexOf("file:")===0)||setTimeout(k)},C.onabort=function(){C&&(r(new vt("Request aborted",vt.ECONNABORTED,e,C)),C=null)},C.onerror=function(_){const R=_&&_.message?_.message:"Network Error",N=new vt(R,vt.ERR_NETWORK,e,C);N.event=_||null,r(N),C=null},C.ontimeout=function(){let _=s.timeout?"timeout of "+s.timeout+"ms exceeded":"timeout exceeded";const R=s.transitional||Kj;s.timeoutErrorMessage&&(_=s.timeoutErrorMessage),r(new vt(_,R.clarifyTimeoutError?vt.ETIMEDOUT:vt.ECONNABORTED,e,C)),C=null},o===void 0&&l.setContentType(null),"setRequestHeader"in C&&ce.forEach(l.toJSON(),function(_,R){C.setRequestHeader(R,_)}),ce.isUndefined(s.withCredentials)||(C.withCredentials=!!s.withCredentials),u&&u!=="json"&&(C.responseType=s.responseType),f&&([g,b]=Op(f,!0),C.addEventListener("progress",g)),d&&C.upload&&([m,x]=Op(d),C.upload.addEventListener("progress",m),C.upload.addEventListener("loadend",x)),(s.cancelToken||s.signal)&&(h=M=>{C&&(r(!M||M.type?new rc(null,e,C):M),C.abort(),C=null)},s.cancelToken&&s.cancelToken.subscribe(h),s.signal&&(s.signal.aborted?h():s.signal.addEventListener("abort",h)));const j=I4(s.url);if(j&&rr.protocols.indexOf(j)===-1){r(new vt("Unsupported protocol "+j+":",vt.ERR_BAD_REQUEST,e));return}C.send(o||null)})},V4=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let r=new AbortController,s;const o=function(f){if(!s){s=!0,u();const h=f instanceof Error?f:this.reason;r.abort(h instanceof vt?h:new rc(h instanceof Error?h.message:h))}};let l=t&&setTimeout(()=>{l=null,o(new vt(`timeout ${t} of ms exceeded`,vt.ETIMEDOUT))},t);const u=()=>{e&&(l&&clearTimeout(l),l=null,e.forEach(f=>{f.unsubscribe?f.unsubscribe(o):f.removeEventListener("abort",o)}),e=null)};e.forEach(f=>f.addEventListener("abort",o));const{signal:d}=r;return d.unsubscribe=()=>ce.asap(u),d}},H4=function*(e,t){let n=e.byteLength;if(n{const s=q4(e,t);let o=0,l,u=d=>{l||(l=!0,r&&r(d))};return new ReadableStream({async pull(d){try{const{done:f,value:h}=await s.next();if(f){u(),d.close();return}let m=h.byteLength;if(n){let g=o+=m;n(g)}d.enqueue(new Uint8Array(h))}catch(f){throw u(f),f}},cancel(d){return u(d),s.return()}},{highWaterMark:2})},OC=64*1024,{isFunction:Bf}=ce,W4=(({Request:e,Response:t})=>({Request:e,Response:t}))(ce.global),{ReadableStream:IC,TextEncoder:AC}=ce.global,DC=(e,...t)=>{try{return!!e(...t)}catch{return!1}},G4=e=>{e=ce.merge.call({skipUndefined:!0},W4,e);const{fetch:t,Request:n,Response:r}=e,s=t?Bf(t):typeof fetch=="function",o=Bf(n),l=Bf(r);if(!s)return!1;const u=s&&Bf(IC),d=s&&(typeof AC=="function"?(b=>w=>b.encode(w))(new AC):async b=>new Uint8Array(await new n(b).arrayBuffer())),f=o&&u&&DC(()=>{let b=!1;const w=new n(rr.origin,{body:new IC,method:"POST",get duplex(){return b=!0,"half"}}).headers.has("Content-Type");return b&&!w}),h=l&&u&&DC(()=>ce.isReadableStream(new r("").body)),m={stream:h&&(b=>b.body)};s&&["text","arrayBuffer","blob","formData","stream"].forEach(b=>{!m[b]&&(m[b]=(w,C)=>{let k=w&&w[b];if(k)return k.call(w);throw new vt(`Response type '${b}' is not supported`,vt.ERR_NOT_SUPPORT,C)})});const g=async b=>{if(b==null)return 0;if(ce.isBlob(b))return b.size;if(ce.isSpecCompliantForm(b))return(await new n(rr.origin,{method:"POST",body:b}).arrayBuffer()).byteLength;if(ce.isArrayBufferView(b)||ce.isArrayBuffer(b))return b.byteLength;if(ce.isURLSearchParams(b)&&(b=b+""),ce.isString(b))return(await d(b)).byteLength},x=async(b,w)=>{const C=ce.toFiniteNumber(b.getContentLength());return C??g(w)};return async b=>{let{url:w,method:C,data:k,signal:j,cancelToken:M,timeout:_,onDownloadProgress:R,onUploadProgress:N,responseType:O,headers:D,withCredentials:z="same-origin",fetchOptions:Q}=Zj(b),pe=t||fetch;O=O?(O+"").toLowerCase():"text";let V=V4([j,M&&M.toAbortSignal()],_),G=null;const W=V&&V.unsubscribe&&(()=>{V.unsubscribe()});let ie;try{if(N&&f&&C!=="get"&&C!=="head"&&(ie=await x(D,k))!==0){let A=new n(w,{method:"POST",body:k,duplex:"half"}),F;if(ce.isFormData(k)&&(F=A.headers.get("content-type"))&&D.setContentType(F),A.body){const[fe,te]=MC(ie,Op(_C(N)));k=PC(A.body,OC,fe,te)}}ce.isString(z)||(z=z?"include":"omit");const re=o&&"credentials"in n.prototype,Y={...Q,signal:V,method:C.toUpperCase(),headers:D.normalize().toJSON(),body:k,duplex:"half",credentials:re?z:void 0};G=o&&new n(w,Y);let H=await(o?pe(G,Q):pe(w,Y));const q=h&&(O==="stream"||O==="response");if(h&&(R||q&&W)){const A={};["status","statusText","headers"].forEach(de=>{A[de]=H[de]});const F=ce.toFiniteNumber(H.headers.get("content-length")),[fe,te]=R&&MC(F,Op(_C(R),!0))||[];H=new r(PC(H.body,OC,fe,()=>{te&&te(),W&&W()}),A)}O=O||"text";let he=await m[ce.findKey(m,O)||"text"](H,b);return!q&&W&&W(),await new Promise((A,F)=>{Jj(A,F,{data:he,headers:Tr.from(H.headers),status:H.status,statusText:H.statusText,config:b,request:G})})}catch(re){throw W&&W(),re&&re.name==="TypeError"&&/Load failed|fetch/i.test(re.message)?Object.assign(new vt("Network Error",vt.ERR_NETWORK,b,G),{cause:re.cause||re}):vt.from(re,re&&re.code,b,G)}}},J4=new Map,Yj=e=>{let t=e?e.env:{};const{fetch:n,Request:r,Response:s}=t,o=[r,s,n];let l=o.length,u=l,d,f,h=J4;for(;u--;)d=o[u],f=h.get(d),f===void 0&&h.set(d,f=u?new Map:G4(t)),h=f;return f};Yj();const Dy={http:f4,xhr:U4,fetch:{get:Yj}};ce.forEach(Dy,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const FC=e=>`- ${e}`,Q4=e=>ce.isFunction(e)||e===null||e===!1,Xj={getAdapter:(e,t)=>{e=ce.isArray(e)?e:[e];const{length:n}=e;let r,s;const o={};for(let l=0;l`adapter ${d} `+(f===!1?"is not supported by the environment":"is not available in the build"));let u=n?l.length>1?`since : -`+l.map(FC).join(` -`):" "+FC(l[0]):"as no adapter specified";throw new vt("There is no suitable adapter to dispatch the request "+u,"ERR_NOT_SUPPORT")}return s},adapters:Dy};function bv(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new rc(null,e)}function LC(e){return bv(e),e.headers=Tr.from(e.headers),e.data=yv.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Xj.getAdapter(e.adapter||yd.adapter,e)(e).then(function(r){return bv(e),r.data=yv.call(e,e.transformResponse,r),r.headers=Tr.from(r.headers),r},function(r){return Gj(r)||(bv(e),r&&r.response&&(r.response.data=yv.call(e,e.transformResponse,r.response),r.response.headers=Tr.from(r.response.headers))),Promise.reject(r)})}const eT="1.12.2",Eh={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{Eh[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const $C={};Eh.transitional=function(t,n,r){function s(o,l){return"[Axios v"+eT+"] Transitional option '"+o+"'"+l+(r?". "+r:"")}return(o,l,u)=>{if(t===!1)throw new vt(s(l," has been removed"+(n?" in "+n:"")),vt.ERR_DEPRECATED);return n&&!$C[l]&&($C[l]=!0,console.warn(s(l," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(o,l,u):!0}};Eh.spelling=function(t){return(n,r)=>(console.warn(`${r} is likely a misspelling of ${t}`),!0)};function Z4(e,t,n){if(typeof e!="object")throw new vt("options must be an object",vt.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let s=r.length;for(;s-- >0;){const o=r[s],l=t[o];if(l){const u=e[o],d=u===void 0||l(u,o,e);if(d!==!0)throw new vt("option "+o+" must be "+d,vt.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new vt("Unknown option "+o,vt.ERR_BAD_OPTION)}}const pp={assertOptions:Z4,validators:Eh},$s=pp.validators;let hi=class{constructor(t){this.defaults=t||{},this.interceptors={request:new TC,response:new TC}}async request(t,n){try{return await this._request(t,n)}catch(r){if(r instanceof Error){let s={};Error.captureStackTrace?Error.captureStackTrace(s):s=new Error;const o=s.stack?s.stack.replace(/^.+\n/,""):"";try{r.stack?o&&!String(r.stack).endsWith(o.replace(/^.+\n.+\n/,""))&&(r.stack+=` -`+o):r.stack=o}catch{}}throw r}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=Si(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:o}=n;r!==void 0&&pp.assertOptions(r,{silentJSONParsing:$s.transitional($s.boolean),forcedJSONParsing:$s.transitional($s.boolean),clarifyTimeoutError:$s.transitional($s.boolean)},!1),s!=null&&(ce.isFunction(s)?n.paramsSerializer={serialize:s}:pp.assertOptions(s,{encode:$s.function,serialize:$s.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),pp.assertOptions(n,{baseUrl:$s.spelling("baseURL"),withXsrfToken:$s.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let l=o&&ce.merge(o.common,o[n.method]);o&&ce.forEach(["delete","get","head","post","put","patch","common"],b=>{delete o[b]}),n.headers=Tr.concat(l,o);const u=[];let d=!0;this.interceptors.request.forEach(function(w){typeof w.runWhen=="function"&&w.runWhen(n)===!1||(d=d&&w.synchronous,u.unshift(w.fulfilled,w.rejected))});const f=[];this.interceptors.response.forEach(function(w){f.push(w.fulfilled,w.rejected)});let h,m=0,g;if(!d){const b=[LC.bind(this),void 0];for(b.unshift(...u),b.push(...f),g=b.length,h=Promise.resolve(n);m{if(!r._listeners)return;let o=r._listeners.length;for(;o-- >0;)r._listeners[o](s);r._listeners=null}),this.promise.then=s=>{let o;const l=new Promise(u=>{r.subscribe(u),o=u}).then(s);return l.cancel=function(){r.unsubscribe(o)},l},t(function(o,l,u){r.reason||(r.reason=new rc(o,l,u),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=r=>{t.abort(r)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new tT(function(s){t=s}),cancel:t}}};function X4(e){return function(n){return e.apply(null,n)}}function e$(e){return ce.isObject(e)&&e.isAxiosError===!0}const Fy={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Fy).forEach(([e,t])=>{Fy[t]=e});function nT(e){const t=new hi(e),n=Oj(hi.prototype.request,t);return ce.extend(n,hi.prototype,t,{allOwnKeys:!0}),ce.extend(n,t,null,{allOwnKeys:!0}),n.create=function(s){return nT(Si(e,s))},n}const sn=nT(yd);sn.Axios=hi;sn.CanceledError=rc;sn.CancelToken=Y4;sn.isCancel=Gj;sn.VERSION=eT;sn.toFormData=Ch;sn.AxiosError=vt;sn.Cancel=sn.CanceledError;sn.all=function(t){return Promise.all(t)};sn.spread=X4;sn.isAxiosError=e$;sn.mergeConfig=Si;sn.AxiosHeaders=Tr;sn.formToJSON=e=>Wj(ce.isHTMLForm(e)?new FormData(e):e);sn.getAdapter=Xj.getAdapter;sn.HttpStatusCode=Fy;sn.default=sn;const{Axios:aie,AxiosError:iie,CanceledError:lie,isCancel:cie,CancelToken:uie,VERSION:die,all:fie,Cancel:pie,isAxiosError:rT,spread:hie,toFormData:gie,AxiosHeaders:mie,HttpStatusCode:vie,formToJSON:yie,getAdapter:bie,mergeConfig:xie}=sn,t$=e=>["auth","verifyServer",JSON.stringify(e)],sT=async({url:e})=>(await sn.get(`${e}/`)).data,n$=e=>{const{url:t,...n}=e;return mt({...n,queryKey:t$({url:t}),queryFn:()=>sT({url:t}),enabled:!!t})};function r$(e,t){typeof e=="function"?e(t):e!=null&&(e.current=t)}function kh(...e){return t=>e.forEach(n=>r$(n,t))}function Rt(...e){return y.useCallback(kh(...e),e)}var No=y.forwardRef((e,t)=>{const{children:n,...r}=e,s=y.Children.toArray(n),o=s.find(o$);if(o){const l=o.props.children,u=s.map(d=>d===o?y.Children.count(l)>1?y.Children.only(null):y.isValidElement(l)?l.props.children:null:d);return i.jsx(Ly,{...r,ref:t,children:y.isValidElement(l)?y.cloneElement(l,void 0,u):null})}return i.jsx(Ly,{...r,ref:t,children:n})});No.displayName="Slot";var Ly=y.forwardRef((e,t)=>{const{children:n,...r}=e;if(y.isValidElement(n)){const s=i$(n);return y.cloneElement(n,{...a$(r,n.props),ref:t?kh(t,s):s})}return y.Children.count(n)>1?y.Children.only(null):null});Ly.displayName="SlotClone";var s$=({children:e})=>i.jsx(i.Fragment,{children:e});function o$(e){return y.isValidElement(e)&&e.type===s$}function a$(e,t){const n={...t};for(const r in t){const s=e[r],o=t[r];/^on[A-Z]/.test(r)?s&&o?n[r]=(...u)=>{o(...u),s(...u)}:s&&(n[r]=s):r==="style"?n[r]={...s,...o}:r==="className"&&(n[r]=[s,o].filter(Boolean).join(" "))}return{...e,...n}}function i$(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function oT(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e))for(t=0;ttypeof e=="boolean"?"".concat(e):e===0?"0":e,zC=l$,jh=(e,t)=>n=>{var r;if(t?.variants==null)return zC(e,n?.class,n?.className);const{variants:s,defaultVariants:o}=t,l=Object.keys(s).map(f=>{const h=n?.[f],m=o?.[f];if(h===null)return null;const g=BC(h)||BC(m);return s[f][g]}),u=n&&Object.entries(n).reduce((f,h)=>{let[m,g]=h;return g===void 0||(f[m]=g),f},{}),d=t==null||(r=t.compoundVariants)===null||r===void 0?void 0:r.reduce((f,h)=>{let{class:m,className:g,...x}=h;return Object.entries(x).every(b=>{let[w,C]=b;return Array.isArray(C)?C.includes({...o,...u}[w]):{...o,...u}[w]===C})?[...f,m,g]:f},[]);return zC(e,l,d,n?.class,n?.className)},Ub="-";function c$(e){const t=d$(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;function s(l){const u=l.split(Ub);return u[0]===""&&u.length!==1&&u.shift(),aT(u,t)||u$(l)}function o(l,u){const d=n[l]||[];return u&&r[l]?[...d,...r[l]]:d}return{getClassGroupId:s,getConflictingClassGroupIds:o}}function aT(e,t){if(e.length===0)return t.classGroupId;const n=e[0],r=t.nextPart.get(n),s=r?aT(e.slice(1),r):void 0;if(s)return s;if(t.validators.length===0)return;const o=e.join(Ub);return t.validators.find(({validator:l})=>l(o))?.classGroupId}const UC=/^\[(.+)\]$/;function u$(e){if(UC.test(e)){const t=UC.exec(e)[1],n=t?.substring(0,t.indexOf(":"));if(n)return"arbitrary.."+n}}function d$(e){const{theme:t,prefix:n}=e,r={nextPart:new Map,validators:[]};return p$(Object.entries(e.classGroups),n).forEach(([o,l])=>{$y(l,r,o,t)}),r}function $y(e,t,n,r){e.forEach(s=>{if(typeof s=="string"){const o=s===""?t:VC(t,s);o.classGroupId=n;return}if(typeof s=="function"){if(f$(s)){$y(s(r),t,n,r);return}t.validators.push({validator:s,classGroupId:n});return}Object.entries(s).forEach(([o,l])=>{$y(l,VC(t,o),n,r)})})}function VC(e,t){let n=e;return t.split(Ub).forEach(r=>{n.nextPart.has(r)||n.nextPart.set(r,{nextPart:new Map,validators:[]}),n=n.nextPart.get(r)}),n}function f$(e){return e.isThemeGetter}function p$(e,t){return t?e.map(([n,r])=>{const s=r.map(o=>typeof o=="string"?t+o:typeof o=="object"?Object.fromEntries(Object.entries(o).map(([l,u])=>[t+l,u])):o);return[n,s]}):e}function h$(e){if(e<1)return{get:()=>{},set:()=>{}};let t=0,n=new Map,r=new Map;function s(o,l){n.set(o,l),t++,t>e&&(t=0,r=n,n=new Map)}return{get(o){let l=n.get(o);if(l!==void 0)return l;if((l=r.get(o))!==void 0)return s(o,l),l},set(o,l){n.has(o)?n.set(o,l):s(o,l)}}}const iT="!";function g$(e){const{separator:t,experimentalParseClassName:n}=e,r=t.length===1,s=t[0],o=t.length;function l(u){const d=[];let f=0,h=0,m;for(let C=0;Ch?m-h:void 0;return{modifiers:d,hasImportantModifier:x,baseClassName:b,maybePostfixModifierPosition:w}}return n?function(d){return n({className:d,parseClassName:l})}:l}function m$(e){if(e.length<=1)return e;const t=[];let n=[];return e.forEach(r=>{r[0]==="["?(t.push(...n.sort(),r),n=[]):n.push(r)}),t.push(...n.sort()),t}function v$(e){return{cache:h$(e.cacheSize),parseClassName:g$(e),...c$(e)}}const y$=/\s+/;function b$(e,t){const{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:s}=t,o=new Set;return e.trim().split(y$).map(l=>{const{modifiers:u,hasImportantModifier:d,baseClassName:f,maybePostfixModifierPosition:h}=n(l);let m=!!h,g=r(m?f.substring(0,h):f);if(!g){if(!m)return{isTailwindClass:!1,originalClassName:l};if(g=r(f),!g)return{isTailwindClass:!1,originalClassName:l};m=!1}const x=m$(u).join(":");return{isTailwindClass:!0,modifierId:d?x+iT:x,classGroupId:g,originalClassName:l,hasPostfixModifier:m}}).reverse().filter(l=>{if(!l.isTailwindClass)return!0;const{modifierId:u,classGroupId:d,hasPostfixModifier:f}=l,h=u+d;return o.has(h)?!1:(o.add(h),s(d,f).forEach(m=>o.add(u+m)),!0)}).reverse().map(l=>l.originalClassName).join(" ")}function x$(){let e=0,t,n,r="";for(;em(h),e());return n=v$(f),r=n.cache.get,s=n.cache.set,o=u,u(d)}function u(d){const f=r(d);if(f)return f;const h=b$(d,n);return s(d,h),h}return function(){return o(x$.apply(null,arguments))}}function nn(e){const t=n=>n[e]||[];return t.isThemeGetter=!0,t}const cT=/^\[(?:([a-z-]+):)?(.+)\]$/i,S$=/^\d+\/\d+$/,C$=new Set(["px","full","screen"]),E$=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,k$=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,j$=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,T$=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,N$=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/;function ho(e){return ci(e)||C$.has(e)||S$.test(e)}function ca(e){return sc(e,"length",D$)}function ci(e){return!!e&&!Number.isNaN(Number(e))}function zf(e){return sc(e,"number",ci)}function su(e){return!!e&&Number.isInteger(Number(e))}function M$(e){return e.endsWith("%")&&ci(e.slice(0,-1))}function xt(e){return cT.test(e)}function ua(e){return E$.test(e)}const _$=new Set(["length","size","percentage"]);function R$(e){return sc(e,_$,uT)}function P$(e){return sc(e,"position",uT)}const O$=new Set(["image","url"]);function I$(e){return sc(e,O$,L$)}function A$(e){return sc(e,"",F$)}function ou(){return!0}function sc(e,t,n){const r=cT.exec(e);return r?r[1]?typeof t=="string"?r[1]===t:t.has(r[1]):n(r[2]):!1}function D$(e){return k$.test(e)&&!j$.test(e)}function uT(){return!1}function F$(e){return T$.test(e)}function L$(e){return N$.test(e)}function $$(){const e=nn("colors"),t=nn("spacing"),n=nn("blur"),r=nn("brightness"),s=nn("borderColor"),o=nn("borderRadius"),l=nn("borderSpacing"),u=nn("borderWidth"),d=nn("contrast"),f=nn("grayscale"),h=nn("hueRotate"),m=nn("invert"),g=nn("gap"),x=nn("gradientColorStops"),b=nn("gradientColorStopPositions"),w=nn("inset"),C=nn("margin"),k=nn("opacity"),j=nn("padding"),M=nn("saturate"),_=nn("scale"),R=nn("sepia"),N=nn("skew"),O=nn("space"),D=nn("translate"),z=()=>["auto","contain","none"],Q=()=>["auto","hidden","clip","visible","scroll"],pe=()=>["auto",xt,t],V=()=>[xt,t],G=()=>["",ho,ca],W=()=>["auto",ci,xt],ie=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],re=()=>["solid","dashed","dotted","double","none"],Y=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],H=()=>["start","end","center","between","around","evenly","stretch"],q=()=>["","0",xt],he=()=>["auto","avoid","all","avoid-page","page","left","right","column"],A=()=>[ci,zf],F=()=>[ci,xt];return{cacheSize:500,separator:":",theme:{colors:[ou],spacing:[ho,ca],blur:["none","",ua,xt],brightness:A(),borderColor:[e],borderRadius:["none","","full",ua,xt],borderSpacing:V(),borderWidth:G(),contrast:A(),grayscale:q(),hueRotate:F(),invert:q(),gap:V(),gradientColorStops:[e],gradientColorStopPositions:[M$,ca],inset:pe(),margin:pe(),opacity:A(),padding:V(),saturate:A(),scale:A(),sepia:q(),skew:F(),space:V(),translate:V()},classGroups:{aspect:[{aspect:["auto","square","video",xt]}],container:["container"],columns:[{columns:[ua]}],"break-after":[{"break-after":he()}],"break-before":[{"break-before":he()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...ie(),xt]}],overflow:[{overflow:Q()}],"overflow-x":[{"overflow-x":Q()}],"overflow-y":[{"overflow-y":Q()}],overscroll:[{overscroll:z()}],"overscroll-x":[{"overscroll-x":z()}],"overscroll-y":[{"overscroll-y":z()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[w]}],"inset-x":[{"inset-x":[w]}],"inset-y":[{"inset-y":[w]}],start:[{start:[w]}],end:[{end:[w]}],top:[{top:[w]}],right:[{right:[w]}],bottom:[{bottom:[w]}],left:[{left:[w]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",su,xt]}],basis:[{basis:pe()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",xt]}],grow:[{grow:q()}],shrink:[{shrink:q()}],order:[{order:["first","last","none",su,xt]}],"grid-cols":[{"grid-cols":[ou]}],"col-start-end":[{col:["auto",{span:["full",su,xt]},xt]}],"col-start":[{"col-start":W()}],"col-end":[{"col-end":W()}],"grid-rows":[{"grid-rows":[ou]}],"row-start-end":[{row:["auto",{span:[su,xt]},xt]}],"row-start":[{"row-start":W()}],"row-end":[{"row-end":W()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",xt]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",xt]}],gap:[{gap:[g]}],"gap-x":[{"gap-x":[g]}],"gap-y":[{"gap-y":[g]}],"justify-content":[{justify:["normal",...H()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...H(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...H(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[j]}],px:[{px:[j]}],py:[{py:[j]}],ps:[{ps:[j]}],pe:[{pe:[j]}],pt:[{pt:[j]}],pr:[{pr:[j]}],pb:[{pb:[j]}],pl:[{pl:[j]}],m:[{m:[C]}],mx:[{mx:[C]}],my:[{my:[C]}],ms:[{ms:[C]}],me:[{me:[C]}],mt:[{mt:[C]}],mr:[{mr:[C]}],mb:[{mb:[C]}],ml:[{ml:[C]}],"space-x":[{"space-x":[O]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[O]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",xt,t]}],"min-w":[{"min-w":[xt,t,"min","max","fit"]}],"max-w":[{"max-w":[xt,t,"none","full","min","max","fit","prose",{screen:[ua]},ua]}],h:[{h:[xt,t,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[xt,t,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[xt,t,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[xt,t,"auto","min","max","fit"]}],"font-size":[{text:["base",ua,ca]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",zf]}],"font-family":[{font:[ou]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractons"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",xt]}],"line-clamp":[{"line-clamp":["none",ci,zf]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",ho,xt]}],"list-image":[{"list-image":["none",xt]}],"list-style-type":[{list:["none","disc","decimal",xt]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[k]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[k]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...re(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",ho,ca]}],"underline-offset":[{"underline-offset":["auto",ho,xt]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:V()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",xt]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",xt]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[k]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...ie(),P$]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",R$]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},I$]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[b]}],"gradient-via-pos":[{via:[b]}],"gradient-to-pos":[{to:[b]}],"gradient-from":[{from:[x]}],"gradient-via":[{via:[x]}],"gradient-to":[{to:[x]}],rounded:[{rounded:[o]}],"rounded-s":[{"rounded-s":[o]}],"rounded-e":[{"rounded-e":[o]}],"rounded-t":[{"rounded-t":[o]}],"rounded-r":[{"rounded-r":[o]}],"rounded-b":[{"rounded-b":[o]}],"rounded-l":[{"rounded-l":[o]}],"rounded-ss":[{"rounded-ss":[o]}],"rounded-se":[{"rounded-se":[o]}],"rounded-ee":[{"rounded-ee":[o]}],"rounded-es":[{"rounded-es":[o]}],"rounded-tl":[{"rounded-tl":[o]}],"rounded-tr":[{"rounded-tr":[o]}],"rounded-br":[{"rounded-br":[o]}],"rounded-bl":[{"rounded-bl":[o]}],"border-w":[{border:[u]}],"border-w-x":[{"border-x":[u]}],"border-w-y":[{"border-y":[u]}],"border-w-s":[{"border-s":[u]}],"border-w-e":[{"border-e":[u]}],"border-w-t":[{"border-t":[u]}],"border-w-r":[{"border-r":[u]}],"border-w-b":[{"border-b":[u]}],"border-w-l":[{"border-l":[u]}],"border-opacity":[{"border-opacity":[k]}],"border-style":[{border:[...re(),"hidden"]}],"divide-x":[{"divide-x":[u]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[u]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[k]}],"divide-style":[{divide:re()}],"border-color":[{border:[s]}],"border-color-x":[{"border-x":[s]}],"border-color-y":[{"border-y":[s]}],"border-color-t":[{"border-t":[s]}],"border-color-r":[{"border-r":[s]}],"border-color-b":[{"border-b":[s]}],"border-color-l":[{"border-l":[s]}],"divide-color":[{divide:[s]}],"outline-style":[{outline:["",...re()]}],"outline-offset":[{"outline-offset":[ho,xt]}],"outline-w":[{outline:[ho,ca]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:G()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[k]}],"ring-offset-w":[{"ring-offset":[ho,ca]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",ua,A$]}],"shadow-color":[{shadow:[ou]}],opacity:[{opacity:[k]}],"mix-blend":[{"mix-blend":[...Y(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":Y()}],filter:[{filter:["","none"]}],blur:[{blur:[n]}],brightness:[{brightness:[r]}],contrast:[{contrast:[d]}],"drop-shadow":[{"drop-shadow":["","none",ua,xt]}],grayscale:[{grayscale:[f]}],"hue-rotate":[{"hue-rotate":[h]}],invert:[{invert:[m]}],saturate:[{saturate:[M]}],sepia:[{sepia:[R]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[n]}],"backdrop-brightness":[{"backdrop-brightness":[r]}],"backdrop-contrast":[{"backdrop-contrast":[d]}],"backdrop-grayscale":[{"backdrop-grayscale":[f]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[h]}],"backdrop-invert":[{"backdrop-invert":[m]}],"backdrop-opacity":[{"backdrop-opacity":[k]}],"backdrop-saturate":[{"backdrop-saturate":[M]}],"backdrop-sepia":[{"backdrop-sepia":[R]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[l]}],"border-spacing-x":[{"border-spacing-x":[l]}],"border-spacing-y":[{"border-spacing-y":[l]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",xt]}],duration:[{duration:F()}],ease:[{ease:["linear","in","out","in-out",xt]}],delay:[{delay:F()}],animate:[{animate:["none","spin","ping","pulse","bounce",xt]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[_]}],"scale-x":[{"scale-x":[_]}],"scale-y":[{"scale-y":[_]}],rotate:[{rotate:[su,xt]}],"translate-x":[{"translate-x":[D]}],"translate-y":[{"translate-y":[D]}],"skew-x":[{"skew-x":[N]}],"skew-y":[{"skew-y":[N]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",xt]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",xt]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":V()}],"scroll-mx":[{"scroll-mx":V()}],"scroll-my":[{"scroll-my":V()}],"scroll-ms":[{"scroll-ms":V()}],"scroll-me":[{"scroll-me":V()}],"scroll-mt":[{"scroll-mt":V()}],"scroll-mr":[{"scroll-mr":V()}],"scroll-mb":[{"scroll-mb":V()}],"scroll-ml":[{"scroll-ml":V()}],"scroll-p":[{"scroll-p":V()}],"scroll-px":[{"scroll-px":V()}],"scroll-py":[{"scroll-py":V()}],"scroll-ps":[{"scroll-ps":V()}],"scroll-pe":[{"scroll-pe":V()}],"scroll-pt":[{"scroll-pt":V()}],"scroll-pr":[{"scroll-pr":V()}],"scroll-pb":[{"scroll-pb":V()}],"scroll-pl":[{"scroll-pl":V()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",xt]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[ho,ca,zf]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}}const B$=w$($$);function Ie(...e){return B$(wo(e))}const z$=jh("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",warning:"bg-amber-600 shadow-sm hover:bg-amber-600/90 data-active:bg-amber-600/90 text-foreground",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),se=y.forwardRef(({className:e,variant:t,size:n,asChild:r=!1,...s},o)=>{const l=r?No:"button";return i.jsx(l,{className:Ie(z$({variant:t,size:n,className:e})),ref:o,...s})});se.displayName="Button";function Vb(){const{t:e}=Ve(),t=dr(jn.API_URL),{data:n}=n$({url:t}),r=y.useMemo(()=>n?.clientName,[n]),s=y.useMemo(()=>n?.version,[n]),o=[{name:"Discord",url:"https://evolution-api.com/discord"},{name:"Postman",url:"https://evolution-api.com/postman"},{name:"GitHub",url:"https://github.com/EvolutionAPI/evolution-api"},{name:"Docs",url:"https://doc.evolution-api.com"}];return i.jsxs("footer",{className:"flex w-full flex-col items-center justify-between p-6 text-xs text-secondary-foreground sm:flex-row",children:[i.jsxs("div",{className:"flex items-center space-x-3 divide-x",children:[r&&r!==""&&i.jsxs("span",{children:[e("footer.clientName"),": ",i.jsx("strong",{children:r})]}),s&&s!==""&&i.jsxs("span",{className:"pl-3",children:[e("footer.version"),": ",i.jsx("strong",{children:s})]})]}),i.jsx("div",{className:"flex gap-2",children:o.map(l=>i.jsx(se,{variant:"link",asChild:!0,size:"sm",className:"text-xs",children:i.jsx("a",{href:l.url,target:"_blank",rel:"noopener noreferrer",children:l.name})},l.url))})]})}/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const U$=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),dT=(...e)=>e.filter((t,n,r)=>!!t&&r.indexOf(t)===n).join(" ");/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */var V$={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const H$=y.forwardRef(({color:e="currentColor",size:t=24,strokeWidth:n=2,absoluteStrokeWidth:r,className:s="",children:o,iconNode:l,...u},d)=>y.createElement("svg",{ref:d,...V$,width:t,height:t,stroke:e,strokeWidth:r?Number(n)*24/Number(t):n,className:dT("lucide",s),...u},[...l.map(([f,h])=>y.createElement(f,h)),...Array.isArray(o)?o:[o]]));/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Qe=(e,t)=>{const n=y.forwardRef(({className:r,...s},o)=>y.createElement(H$,{ref:o,iconNode:t,className:dT(`lucide-${U$(e)}`,r),...s}));return n.displayName=`${e}`,n};/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const HC=Qe("Apple",[["path",{d:"M12 20.94c1.5 0 2.75 1.06 4 1.06 3 0 6-8 6-12.22A4.91 4.91 0 0 0 17 5c-2.22 0-4 1.44-5 2-1-.56-2.78-2-5-2a4.9 4.9 0 0 0-5 4.78C2 14 5 22 8 22c1.25 0 2.5-1.06 4-1.06Z",key:"3s7exb"}],["path",{d:"M10 2c1 .5 2 2 2 5",key:"fcco2y"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Th=Qe("ArrowRight",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const q$=Qe("ArrowUpDown",[["path",{d:"m21 16-4 4-4-4",key:"f6ql7i"}],["path",{d:"M17 20V4",key:"1ejh1v"}],["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const K$=Qe("Car",[["path",{d:"M19 17h2c.6 0 1-.4 1-1v-3c0-.9-.7-1.7-1.5-1.9C18.7 10.6 16 10 16 10s-1.3-1.4-2.2-2.3c-.5-.4-1.1-.7-1.8-.7H5c-.6 0-1.1.4-1.4.9l-1.4 2.9A3.7 3.7 0 0 0 2 12v4c0 .6.4 1 1 1h2",key:"5owen"}],["circle",{cx:"7",cy:"17",r:"2",key:"u2ysq9"}],["path",{d:"M9 17h6",key:"r8uit2"}],["circle",{cx:"17",cy:"17",r:"2",key:"axvx0g"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const fT=Qe("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Nh=Qe("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const W$=Qe("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const G$=Qe("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const J$=Qe("ChevronsUpDown",[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Q$=Qe("CircleHelp",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Oi=Qe("CircleStop",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["rect",{width:"6",height:"6",x:"9",y:"9",key:"1wrtvo"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const pT=Qe("CircleUser",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}],["path",{d:"M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662",key:"154egf"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Z$=Qe("Circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Y$=Qe("Club",[["path",{d:"M17.28 9.05a5.5 5.5 0 1 0-10.56 0A5.5 5.5 0 1 0 12 17.66a5.5 5.5 0 1 0 5.28-8.6Z",key:"27yuqz"}],["path",{d:"M12 17.66L12 22",key:"ogfahf"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Oo=Qe("Cog",[["path",{d:"M12 20a8 8 0 1 0 0-16 8 8 0 0 0 0 16Z",key:"sobvz5"}],["path",{d:"M12 14a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z",key:"11i496"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 22v-2",key:"1osdcq"}],["path",{d:"m17 20.66-1-1.73",key:"eq3orb"}],["path",{d:"M11 10.27 7 3.34",key:"16pf9h"}],["path",{d:"m20.66 17-1.73-1",key:"sg0v6f"}],["path",{d:"m3.34 7 1.73 1",key:"1ulond"}],["path",{d:"M14 12h8",key:"4f43i9"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"m20.66 7-1.73 1",key:"1ow05n"}],["path",{d:"m3.34 17 1.73-1",key:"nuk764"}],["path",{d:"m17 3.34-1 1.73",key:"2wel8s"}],["path",{d:"m11 13.73-4 6.93",key:"794ttg"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const X$=Qe("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Ii=Qe("Delete",[["path",{d:"M10 5a2 2 0 0 0-1.344.519l-6.328 5.74a1 1 0 0 0 0 1.481l6.328 5.741A2 2 0 0 0 10 19h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2z",key:"1yo7s0"}],["path",{d:"m12 9 6 6",key:"anjzzh"}],["path",{d:"m18 9-6 6",key:"1fp51s"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const eB=Qe("DoorOpen",[["path",{d:"M13 4h3a2 2 0 0 1 2 2v14",key:"hrm0s9"}],["path",{d:"M2 20h3",key:"1gaodv"}],["path",{d:"M13 20h9",key:"s90cdi"}],["path",{d:"M10 12v.01",key:"vx6srw"}],["path",{d:"M13 4.562v16.157a1 1 0 0 1-1.242.97L5 20V5.562a2 2 0 0 1 1.515-1.94l4-1A2 2 0 0 1 13 4.561Z",key:"199qr4"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Pa=Qe("Ellipsis",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const tB=Qe("EyeOff",[["path",{d:"M9.88 9.88a3 3 0 1 0 4.24 4.24",key:"1jxqfv"}],["path",{d:"M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68",key:"9wicm4"}],["path",{d:"M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61",key:"1jreej"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const nB=Qe("Eye",[["path",{d:"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z",key:"rwhkz3"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const rB=Qe("FilePlus",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M9 15h6",key:"cctwl0"}],["path",{d:"M12 18v-6",key:"17g6i2"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const sB=Qe("FileQuestion",[["path",{d:"M12 17h.01",key:"p32p05"}],["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z",key:"1mlx9k"}],["path",{d:"M9.1 9a3 3 0 0 1 5.82 1c0 2-3 3-3 3",key:"mhlwft"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Hb=Qe("File",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const oB=Qe("Flag",[["path",{d:"M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z",key:"i9b6wo"}],["line",{x1:"4",x2:"4",y1:"22",y2:"15",key:"1cm3nv"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const aB=Qe("Github",[["path",{d:"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4",key:"tonef"}],["path",{d:"M9 18c-4.51 2-5-2-7-2",key:"9comsn"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const iB=Qe("Globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const lB=Qe("GripVertical",[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const cB=Qe("Image",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const uB=Qe("Images",[["path",{d:"M18 22H4a2 2 0 0 1-2-2V6",key:"pblm9e"}],["path",{d:"m22 13-1.296-1.296a2.41 2.41 0 0 0-3.408 0L11 18",key:"nf6bnh"}],["circle",{cx:"12",cy:"8",r:"2",key:"1822b1"}],["rect",{width:"16",height:"16",x:"6",y:"2",rx:"2",key:"12espp"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const dB=Qe("IterationCcw",[["path",{d:"M20 10c0-4.4-3.6-8-8-8s-8 3.6-8 8 3.6 8 8 8h8",key:"4znkd0"}],["polyline",{points:"16 14 20 18 16 22",key:"11njsm"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const fB=Qe("Languages",[["path",{d:"m5 8 6 6",key:"1wu5hv"}],["path",{d:"m4 14 6-6 2-3",key:"1k1g8d"}],["path",{d:"M2 5h12",key:"or177f"}],["path",{d:"M7 2h1",key:"1t2jsx"}],["path",{d:"m22 22-5-10-5 10",key:"don7ne"}],["path",{d:"M14 18h6",key:"1m8k6r"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const pB=Qe("LayoutDashboard",[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const hB=Qe("LifeBuoy",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m4.93 4.93 4.24 4.24",key:"1ymg45"}],["path",{d:"m14.83 9.17 4.24-4.24",key:"1cb5xl"}],["path",{d:"m14.83 14.83 4.24 4.24",key:"q42g0n"}],["path",{d:"m9.17 14.83-4.24 4.24",key:"bqpfvv"}],["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const gB=Qe("Lightbulb",[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Ai=Qe("ListCollapse",[["path",{d:"m3 10 2.5-2.5L3 5",key:"i6eama"}],["path",{d:"m3 19 2.5-2.5L3 14",key:"w2gmor"}],["path",{d:"M10 6h11",key:"c7qv1k"}],["path",{d:"M10 12h11",key:"6m4ad9"}],["path",{d:"M10 18h11",key:"11hvi2"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const mB=Qe("Lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const vB=Qe("Mail",[["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const yB=Qe("MapPin",[["path",{d:"M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0Z",key:"2oe9fu"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Bl=Qe("MessageCircle",[["path",{d:"M7.9 20A9 9 0 1 0 4 16.1L2 22Z",key:"vv11sd"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const hT=Qe("Mic",[["path",{d:"M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z",key:"131961"}],["path",{d:"M19 10v2a7 7 0 0 1-14 0v-2",key:"1vc78b"}],["line",{x1:"12",x2:"12",y1:"19",y2:"22",key:"x3vr5v"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const bB=Qe("Moon",[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Di=Qe("Pause",[["rect",{x:"14",y:"4",width:"4",height:"16",rx:"1",key:"zuxfzm"}],["rect",{x:"6",y:"4",width:"4",height:"16",rx:"1",key:"1okwgv"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Fi=Qe("Play",[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const cs=Qe("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Ip=Qe("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Li=Qe("RotateCcw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const xB=Qe("Shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const gT=Qe("Smile",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 14s1.5 2 4 2 4-2 4-2",key:"1y1vjs"}],["line",{x1:"9",x2:"9.01",y1:"9",y2:"9",key:"yxxnd0"}],["line",{x1:"15",x2:"15.01",y1:"9",y2:"9",key:"1p4y9e"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const wB=Qe("Sparkle",[["path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z",key:"4pj2yx"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const SB=Qe("Square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const CB=Qe("Sticker",[["path",{d:"M15.5 3H5a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h14a2 2 0 0 0 2-2V8.5L15.5 3Z",key:"1wis1t"}],["path",{d:"M14 3v4a2 2 0 0 0 2 2h4",key:"36rjfy"}],["path",{d:"M8 13h.01",key:"1sbv64"}],["path",{d:"M16 13h.01",key:"wip0gl"}],["path",{d:"M10 16s.8 1 2 1c1.3 0 2-1 2-1",key:"1vvgv3"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const EB=Qe("Sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const kB=Qe("Trash",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Ap=Qe("User",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const jB=Qe("UsersRound",[["path",{d:"M18 21a8 8 0 0 0-16 0",key:"3ypg7q"}],["circle",{cx:"10",cy:"8",r:"5",key:"o932ke"}],["path",{d:"M22 20c0-3.37-2-6.5-4-8a5 5 0 0 0-.45-8.3",key:"10s06x"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const TB=Qe("Video",[["path",{d:"m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5",key:"ftymec"}],["rect",{x:"2",y:"6",width:"14",height:"12",rx:"2",key:"158x01"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const qb=Qe("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);/** - * @license lucide-react v0.408.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const mT=Qe("Zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]),Ee=sn.create({timeout:3e4});Ee.interceptors.request.use(async e=>{const t=dr(jn.API_URL);if(t&&(e.baseURL=t.toString()),!e.headers.apiKey||e.headers.apiKey===""){const n=dr(jn.INSTANCE_TOKEN);n&&(e.headers.apikey=`${n}`)}return e},e=>Promise.reject(e));const bd=sn.create({timeout:3e4});bd.interceptors.request.use(async e=>{const t=dr(jn.API_URL);if(t&&(e.baseURL=t.toString()),!e.headers.apiKey||e.headers.apiKey===""){const n=dr(jn.TOKEN);n&&(e.headers.apikey=`${n}`)}return e},e=>Promise.reject(e));const NB=e=>["instance","fetchInstance",JSON.stringify(e)],MB=async({instanceId:e})=>{const t=await bd.get("/instance/fetchInstances",{params:{instanceId:e}});return Array.isArray(t.data)?t.data[0]:t.data},vT=e=>{const{instanceId:t,...n}=e;return mt({...n,queryKey:NB({instanceId:t}),queryFn:()=>MB({instanceId:t}),enabled:!!t})};function Ue(e,t,{checkForDefaultPrevented:n=!0}={}){return function(s){if(e?.(s),n===!1||!s.defaultPrevented)return t?.(s)}}function _B(e,t){const n=y.createContext(t);function r(o){const{children:l,...u}=o,d=y.useMemo(()=>u,Object.values(u));return i.jsx(n.Provider,{value:d,children:l})}function s(o){const l=y.useContext(n);if(l)return l;if(t!==void 0)return t;throw new Error(`\`${o}\` must be used within \`${e}\``)}return r.displayName=e+"Provider",[r,s]}function us(e,t=[]){let n=[];function r(o,l){const u=y.createContext(l),d=n.length;n=[...n,l];function f(m){const{scope:g,children:x,...b}=m,w=g?.[e][d]||u,C=y.useMemo(()=>b,Object.values(b));return i.jsx(w.Provider,{value:C,children:x})}function h(m,g){const x=g?.[e][d]||u,b=y.useContext(x);if(b)return b;if(l!==void 0)return l;throw new Error(`\`${m}\` must be used within \`${o}\``)}return f.displayName=o+"Provider",[f,h]}const s=()=>{const o=n.map(l=>y.createContext(l));return function(u){const d=u?.[e]||o;return y.useMemo(()=>({[`__scope${e}`]:{...u,[e]:d}}),[u,d])}};return s.scopeName=e,[r,RB(s,...t)]}function RB(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const r=e.map(s=>({useScope:s(),scopeName:s.scopeName}));return function(o){const l=r.reduce((u,{useScope:d,scopeName:f})=>{const m=d(o)[`__scope${f}`];return{...u,...m}},{});return y.useMemo(()=>({[`__scope${t.scopeName}`]:l}),[l])}};return n.scopeName=t.scopeName,n}function Rn(e){const t=y.useRef(e);return y.useEffect(()=>{t.current=e}),y.useMemo(()=>(...n)=>t.current?.(...n),[])}function ya({prop:e,defaultProp:t,onChange:n=()=>{}}){const[r,s]=PB({defaultProp:t,onChange:n}),o=e!==void 0,l=o?e:r,u=Rn(n),d=y.useCallback(f=>{if(o){const m=typeof f=="function"?f(e):f;m!==e&&u(m)}else s(f)},[o,e,s,u]);return[l,d]}function PB({defaultProp:e,onChange:t}){const n=y.useState(e),[r]=n,s=y.useRef(r),o=Rn(t);return y.useEffect(()=>{s.current!==r&&(o(r),s.current=r)},[r,s,o]),n}var OB=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"],rt=OB.reduce((e,t)=>{const n=y.forwardRef((r,s)=>{const{asChild:o,...l}=r,u=o?No:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),i.jsx(u,{...l,ref:s})});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{});function yT(e,t){e&&Ma.flushSync(()=>e.dispatchEvent(t))}function Kb(e){const t=e+"CollectionProvider",[n,r]=us(t),[s,o]=n(t,{collectionRef:{current:null},itemMap:new Map}),l=x=>{const{scope:b,children:w}=x,C=qe.useRef(null),k=qe.useRef(new Map).current;return i.jsx(s,{scope:b,itemMap:k,collectionRef:C,children:w})};l.displayName=t;const u=e+"CollectionSlot",d=qe.forwardRef((x,b)=>{const{scope:w,children:C}=x,k=o(u,w),j=Rt(b,k.collectionRef);return i.jsx(No,{ref:j,children:C})});d.displayName=u;const f=e+"CollectionItemSlot",h="data-radix-collection-item",m=qe.forwardRef((x,b)=>{const{scope:w,children:C,...k}=x,j=qe.useRef(null),M=Rt(b,j),_=o(f,w);return qe.useEffect(()=>(_.itemMap.set(j,{ref:j,...k}),()=>void _.itemMap.delete(j))),i.jsx(No,{[h]:"",ref:M,children:C})});m.displayName=f;function g(x){const b=o(e+"CollectionConsumer",x);return qe.useCallback(()=>{const C=b.collectionRef.current;if(!C)return[];const k=Array.from(C.querySelectorAll(`[${h}]`));return Array.from(b.itemMap.values()).sort((_,R)=>k.indexOf(_.ref.current)-k.indexOf(R.ref.current))},[b.collectionRef,b.itemMap])}return[{Provider:l,Slot:d,ItemSlot:m},g,r]}var IB=y.createContext(void 0);function xd(e){const t=y.useContext(IB);return e||t||"ltr"}function AB(e,t=globalThis?.document){const n=Rn(e);y.useEffect(()=>{const r=s=>{s.key==="Escape"&&n(s)};return t.addEventListener("keydown",r,{capture:!0}),()=>t.removeEventListener("keydown",r,{capture:!0})},[n,t])}var DB="DismissableLayer",By="dismissableLayer.update",FB="dismissableLayer.pointerDownOutside",LB="dismissableLayer.focusOutside",qC,bT=y.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Mh=y.forwardRef((e,t)=>{const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:r,onPointerDownOutside:s,onFocusOutside:o,onInteractOutside:l,onDismiss:u,...d}=e,f=y.useContext(bT),[h,m]=y.useState(null),g=h?.ownerDocument??globalThis?.document,[,x]=y.useState({}),b=Rt(t,O=>m(O)),w=Array.from(f.layers),[C]=[...f.layersWithOutsidePointerEventsDisabled].slice(-1),k=w.indexOf(C),j=h?w.indexOf(h):-1,M=f.layersWithOutsidePointerEventsDisabled.size>0,_=j>=k,R=zB(O=>{const D=O.target,z=[...f.branches].some(Q=>Q.contains(D));!_||z||(s?.(O),l?.(O),O.defaultPrevented||u?.())},g),N=UB(O=>{const D=O.target;[...f.branches].some(Q=>Q.contains(D))||(o?.(O),l?.(O),O.defaultPrevented||u?.())},g);return AB(O=>{j===f.layers.size-1&&(r?.(O),!O.defaultPrevented&&u&&(O.preventDefault(),u()))},g),y.useEffect(()=>{if(h)return n&&(f.layersWithOutsidePointerEventsDisabled.size===0&&(qC=g.body.style.pointerEvents,g.body.style.pointerEvents="none"),f.layersWithOutsidePointerEventsDisabled.add(h)),f.layers.add(h),KC(),()=>{n&&f.layersWithOutsidePointerEventsDisabled.size===1&&(g.body.style.pointerEvents=qC)}},[h,g,n,f]),y.useEffect(()=>()=>{h&&(f.layers.delete(h),f.layersWithOutsidePointerEventsDisabled.delete(h),KC())},[h,f]),y.useEffect(()=>{const O=()=>x({});return document.addEventListener(By,O),()=>document.removeEventListener(By,O)},[]),i.jsx(rt.div,{...d,ref:b,style:{pointerEvents:M?_?"auto":"none":void 0,...e.style},onFocusCapture:Ue(e.onFocusCapture,N.onFocusCapture),onBlurCapture:Ue(e.onBlurCapture,N.onBlurCapture),onPointerDownCapture:Ue(e.onPointerDownCapture,R.onPointerDownCapture)})});Mh.displayName=DB;var $B="DismissableLayerBranch",BB=y.forwardRef((e,t)=>{const n=y.useContext(bT),r=y.useRef(null),s=Rt(t,r);return y.useEffect(()=>{const o=r.current;if(o)return n.branches.add(o),()=>{n.branches.delete(o)}},[n.branches]),i.jsx(rt.div,{...e,ref:s})});BB.displayName=$B;function zB(e,t=globalThis?.document){const n=Rn(e),r=y.useRef(!1),s=y.useRef(()=>{});return y.useEffect(()=>{const o=u=>{if(u.target&&!r.current){let d=function(){xT(FB,n,f,{discrete:!0})};const f={originalEvent:u};u.pointerType==="touch"?(t.removeEventListener("click",s.current),s.current=d,t.addEventListener("click",s.current,{once:!0})):d()}else t.removeEventListener("click",s.current);r.current=!1},l=window.setTimeout(()=>{t.addEventListener("pointerdown",o)},0);return()=>{window.clearTimeout(l),t.removeEventListener("pointerdown",o),t.removeEventListener("click",s.current)}},[t,n]),{onPointerDownCapture:()=>r.current=!0}}function UB(e,t=globalThis?.document){const n=Rn(e),r=y.useRef(!1);return y.useEffect(()=>{const s=o=>{o.target&&!r.current&&xT(LB,n,{originalEvent:o},{discrete:!1})};return t.addEventListener("focusin",s),()=>t.removeEventListener("focusin",s)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function KC(){const e=new CustomEvent(By);document.dispatchEvent(e)}function xT(e,t,n,{discrete:r}){const s=n.originalEvent.target,o=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&s.addEventListener(e,t,{once:!0}),r?yT(s,o):s.dispatchEvent(o)}var xv=0;function Wb(){y.useEffect(()=>{const e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??WC()),document.body.insertAdjacentElement("beforeend",e[1]??WC()),xv++,()=>{xv===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(t=>t.remove()),xv--}},[])}function WC(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.cssText="outline: none; opacity: 0; position: fixed; pointer-events: none",e}var wv="focusScope.autoFocusOnMount",Sv="focusScope.autoFocusOnUnmount",GC={bubbles:!1,cancelable:!0},VB="FocusScope",_h=y.forwardRef((e,t)=>{const{loop:n=!1,trapped:r=!1,onMountAutoFocus:s,onUnmountAutoFocus:o,...l}=e,[u,d]=y.useState(null),f=Rn(s),h=Rn(o),m=y.useRef(null),g=Rt(t,w=>d(w)),x=y.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;y.useEffect(()=>{if(r){let w=function(M){if(x.paused||!u)return;const _=M.target;u.contains(_)?m.current=_:fa(m.current,{select:!0})},C=function(M){if(x.paused||!u)return;const _=M.relatedTarget;_!==null&&(u.contains(_)||fa(m.current,{select:!0}))},k=function(M){if(document.activeElement===document.body)for(const R of M)R.removedNodes.length>0&&fa(u)};document.addEventListener("focusin",w),document.addEventListener("focusout",C);const j=new MutationObserver(k);return u&&j.observe(u,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",w),document.removeEventListener("focusout",C),j.disconnect()}}},[r,u,x.paused]),y.useEffect(()=>{if(u){QC.add(x);const w=document.activeElement;if(!u.contains(w)){const k=new CustomEvent(wv,GC);u.addEventListener(wv,f),u.dispatchEvent(k),k.defaultPrevented||(HB(JB(wT(u)),{select:!0}),document.activeElement===w&&fa(u))}return()=>{u.removeEventListener(wv,f),setTimeout(()=>{const k=new CustomEvent(Sv,GC);u.addEventListener(Sv,h),u.dispatchEvent(k),k.defaultPrevented||fa(w??document.body,{select:!0}),u.removeEventListener(Sv,h),QC.remove(x)},0)}}},[u,f,h,x]);const b=y.useCallback(w=>{if(!n&&!r||x.paused)return;const C=w.key==="Tab"&&!w.altKey&&!w.ctrlKey&&!w.metaKey,k=document.activeElement;if(C&&k){const j=w.currentTarget,[M,_]=qB(j);M&&_?!w.shiftKey&&k===_?(w.preventDefault(),n&&fa(M,{select:!0})):w.shiftKey&&k===M&&(w.preventDefault(),n&&fa(_,{select:!0})):k===j&&w.preventDefault()}},[n,r,x.paused]);return i.jsx(rt.div,{tabIndex:-1,...l,ref:g,onKeyDown:b})});_h.displayName=VB;function HB(e,{select:t=!1}={}){const n=document.activeElement;for(const r of e)if(fa(r,{select:t}),document.activeElement!==n)return}function qB(e){const t=wT(e),n=JC(t,e),r=JC(t.reverse(),e);return[n,r]}function wT(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const s=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||s?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function JC(e,t){for(const n of e)if(!KB(n,{upTo:t}))return n}function KB(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function WB(e){return e instanceof HTMLInputElement&&"select"in e}function fa(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&WB(e)&&t&&e.select()}}var QC=GB();function GB(){let e=[];return{add(t){const n=e[0];t!==n&&n?.pause(),e=ZC(e,t),e.unshift(t)},remove(t){e=ZC(e,t),e[0]?.resume()}}}function ZC(e,t){const n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function JB(e){return e.filter(t=>t.tagName!=="A")}var Ln=globalThis?.document?y.useLayoutEffect:()=>{},QB=Yl.useId||(()=>{}),ZB=0;function Es(e){const[t,n]=y.useState(QB());return Ln(()=>{n(r=>r??String(ZB++))},[e]),t?`radix-${t}`:""}const YB=["top","right","bottom","left"],Hs=Math.min,zr=Math.max,Dp=Math.round,Uf=Math.floor,ba=e=>({x:e,y:e}),XB={left:"right",right:"left",bottom:"top",top:"bottom"},e3={start:"end",end:"start"};function zy(e,t,n){return zr(e,Hs(t,n))}function Mo(e,t){return typeof e=="function"?e(t):e}function _o(e){return e.split("-")[0]}function oc(e){return e.split("-")[1]}function Gb(e){return e==="x"?"y":"x"}function Jb(e){return e==="y"?"height":"width"}function xa(e){return["top","bottom"].includes(_o(e))?"y":"x"}function Qb(e){return Gb(xa(e))}function t3(e,t,n){n===void 0&&(n=!1);const r=oc(e),s=Qb(e),o=Jb(s);let l=s==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[o]>t.floating[o]&&(l=Fp(l)),[l,Fp(l)]}function n3(e){const t=Fp(e);return[Uy(e),t,Uy(t)]}function Uy(e){return e.replace(/start|end/g,t=>e3[t])}function r3(e,t,n){const r=["left","right"],s=["right","left"],o=["top","bottom"],l=["bottom","top"];switch(e){case"top":case"bottom":return n?t?s:r:t?r:s;case"left":case"right":return t?o:l;default:return[]}}function s3(e,t,n,r){const s=oc(e);let o=r3(_o(e),n==="start",r);return s&&(o=o.map(l=>l+"-"+s),t&&(o=o.concat(o.map(Uy)))),o}function Fp(e){return e.replace(/left|right|bottom|top/g,t=>XB[t])}function o3(e){return{top:0,right:0,bottom:0,left:0,...e}}function ST(e){return typeof e!="number"?o3(e):{top:e,right:e,bottom:e,left:e}}function Lp(e){const{x:t,y:n,width:r,height:s}=e;return{width:r,height:s,top:n,left:t,right:t+r,bottom:n+s,x:t,y:n}}function YC(e,t,n){let{reference:r,floating:s}=e;const o=xa(t),l=Qb(t),u=Jb(l),d=_o(t),f=o==="y",h=r.x+r.width/2-s.width/2,m=r.y+r.height/2-s.height/2,g=r[u]/2-s[u]/2;let x;switch(d){case"top":x={x:h,y:r.y-s.height};break;case"bottom":x={x:h,y:r.y+r.height};break;case"right":x={x:r.x+r.width,y:m};break;case"left":x={x:r.x-s.width,y:m};break;default:x={x:r.x,y:r.y}}switch(oc(t)){case"start":x[l]-=g*(n&&f?-1:1);break;case"end":x[l]+=g*(n&&f?-1:1);break}return x}const a3=async(e,t,n)=>{const{placement:r="bottom",strategy:s="absolute",middleware:o=[],platform:l}=n,u=o.filter(Boolean),d=await(l.isRTL==null?void 0:l.isRTL(t));let f=await l.getElementRects({reference:e,floating:t,strategy:s}),{x:h,y:m}=YC(f,r,d),g=r,x={},b=0;for(let w=0;w({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:s,rects:o,platform:l,elements:u,middlewareData:d}=t,{element:f,padding:h=0}=Mo(e,t)||{};if(f==null)return{};const m=ST(h),g={x:n,y:r},x=Qb(s),b=Jb(x),w=await l.getDimensions(f),C=x==="y",k=C?"top":"left",j=C?"bottom":"right",M=C?"clientHeight":"clientWidth",_=o.reference[b]+o.reference[x]-g[x]-o.floating[b],R=g[x]-o.reference[x],N=await(l.getOffsetParent==null?void 0:l.getOffsetParent(f));let O=N?N[M]:0;(!O||!await(l.isElement==null?void 0:l.isElement(N)))&&(O=u.floating[M]||o.floating[b]);const D=_/2-R/2,z=O/2-w[b]/2-1,Q=Hs(m[k],z),pe=Hs(m[j],z),V=Q,G=O-w[b]-pe,W=O/2-w[b]/2+D,ie=zy(V,W,G),re=!d.arrow&&oc(s)!=null&&W!==ie&&o.reference[b]/2-(WW<=0)){var pe,V;const W=(((pe=o.flip)==null?void 0:pe.index)||0)+1,ie=O[W];if(ie)return{data:{index:W,overflows:Q},reset:{placement:ie}};let re=(V=Q.filter(Y=>Y.overflows[0]<=0).sort((Y,H)=>Y.overflows[1]-H.overflows[1])[0])==null?void 0:V.placement;if(!re)switch(x){case"bestFit":{var G;const Y=(G=Q.filter(H=>{if(N){const q=xa(H.placement);return q===j||q==="y"}return!0}).map(H=>[H.placement,H.overflows.filter(q=>q>0).reduce((q,he)=>q+he,0)]).sort((H,q)=>H[1]-q[1])[0])==null?void 0:G[0];Y&&(re=Y);break}case"initialPlacement":re=u;break}if(s!==re)return{reset:{placement:re}}}return{}}}};function XC(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function e1(e){return YB.some(t=>e[t]>=0)}const c3=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n}=t,{strategy:r="referenceHidden",...s}=Mo(e,t);switch(r){case"referenceHidden":{const o=await Bu(t,{...s,elementContext:"reference"}),l=XC(o,n.reference);return{data:{referenceHiddenOffsets:l,referenceHidden:e1(l)}}}case"escaped":{const o=await Bu(t,{...s,altBoundary:!0}),l=XC(o,n.floating);return{data:{escapedOffsets:l,escaped:e1(l)}}}default:return{}}}}};async function u3(e,t){const{placement:n,platform:r,elements:s}=e,o=await(r.isRTL==null?void 0:r.isRTL(s.floating)),l=_o(n),u=oc(n),d=xa(n)==="y",f=["left","top"].includes(l)?-1:1,h=o&&d?-1:1,m=Mo(t,e);let{mainAxis:g,crossAxis:x,alignmentAxis:b}=typeof m=="number"?{mainAxis:m,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...m};return u&&typeof b=="number"&&(x=u==="end"?b*-1:b),d?{x:x*h,y:g*f}:{x:g*f,y:x*h}}const d3=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,r;const{x:s,y:o,placement:l,middlewareData:u}=t,d=await u3(t,e);return l===((n=u.offset)==null?void 0:n.placement)&&(r=u.arrow)!=null&&r.alignmentOffset?{}:{x:s+d.x,y:o+d.y,data:{...d,placement:l}}}}},f3=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:s}=t,{mainAxis:o=!0,crossAxis:l=!1,limiter:u={fn:C=>{let{x:k,y:j}=C;return{x:k,y:j}}},...d}=Mo(e,t),f={x:n,y:r},h=await Bu(t,d),m=xa(_o(s)),g=Gb(m);let x=f[g],b=f[m];if(o){const C=g==="y"?"top":"left",k=g==="y"?"bottom":"right",j=x+h[C],M=x-h[k];x=zy(j,x,M)}if(l){const C=m==="y"?"top":"left",k=m==="y"?"bottom":"right",j=b+h[C],M=b-h[k];b=zy(j,b,M)}const w=u.fn({...t,[g]:x,[m]:b});return{...w,data:{x:w.x-n,y:w.y-r}}}}},p3=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:n,y:r,placement:s,rects:o,middlewareData:l}=t,{offset:u=0,mainAxis:d=!0,crossAxis:f=!0}=Mo(e,t),h={x:n,y:r},m=xa(s),g=Gb(m);let x=h[g],b=h[m];const w=Mo(u,t),C=typeof w=="number"?{mainAxis:w,crossAxis:0}:{mainAxis:0,crossAxis:0,...w};if(d){const M=g==="y"?"height":"width",_=o.reference[g]-o.floating[M]+C.mainAxis,R=o.reference[g]+o.reference[M]-C.mainAxis;x<_?x=_:x>R&&(x=R)}if(f){var k,j;const M=g==="y"?"width":"height",_=["top","left"].includes(_o(s)),R=o.reference[m]-o.floating[M]+(_&&((k=l.offset)==null?void 0:k[m])||0)+(_?0:C.crossAxis),N=o.reference[m]+o.reference[M]+(_?0:((j=l.offset)==null?void 0:j[m])||0)-(_?C.crossAxis:0);bN&&(b=N)}return{[g]:x,[m]:b}}}},h3=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){const{placement:n,rects:r,platform:s,elements:o}=t,{apply:l=()=>{},...u}=Mo(e,t),d=await Bu(t,u),f=_o(n),h=oc(n),m=xa(n)==="y",{width:g,height:x}=r.floating;let b,w;f==="top"||f==="bottom"?(b=f,w=h===(await(s.isRTL==null?void 0:s.isRTL(o.floating))?"start":"end")?"left":"right"):(w=f,b=h==="end"?"top":"bottom");const C=x-d.top-d.bottom,k=g-d.left-d.right,j=Hs(x-d[b],C),M=Hs(g-d[w],k),_=!t.middlewareData.shift;let R=j,N=M;if(m?N=h||_?Hs(M,k):k:R=h||_?Hs(j,C):C,_&&!h){const D=zr(d.left,0),z=zr(d.right,0),Q=zr(d.top,0),pe=zr(d.bottom,0);m?N=g-2*(D!==0||z!==0?D+z:zr(d.left,d.right)):R=x-2*(Q!==0||pe!==0?Q+pe:zr(d.top,d.bottom))}await l({...t,availableWidth:N,availableHeight:R});const O=await s.getDimensions(o.floating);return g!==O.width||x!==O.height?{reset:{rects:!0}}:{}}}};function ac(e){return CT(e)?(e.nodeName||"").toLowerCase():"#document"}function Vr(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Io(e){var t;return(t=(CT(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function CT(e){return e instanceof Node||e instanceof Vr(e).Node}function Gs(e){return e instanceof Element||e instanceof Vr(e).Element}function Js(e){return e instanceof HTMLElement||e instanceof Vr(e).HTMLElement}function t1(e){return typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof Vr(e).ShadowRoot}function wd(e){const{overflow:t,overflowX:n,overflowY:r,display:s}=Ns(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(s)}function g3(e){return["table","td","th"].includes(ac(e))}function Rh(e){return[":popover-open",":modal"].some(t=>{try{return e.matches(t)}catch{return!1}})}function Zb(e){const t=Yb(),n=Ns(e);return n.transform!=="none"||n.perspective!=="none"||(n.containerType?n.containerType!=="normal":!1)||!t&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!t&&(n.filter?n.filter!=="none":!1)||["transform","perspective","filter"].some(r=>(n.willChange||"").includes(r))||["paint","layout","strict","content"].some(r=>(n.contain||"").includes(r))}function m3(e){let t=wa(e);for(;Js(t)&&!zl(t);){if(Rh(t))return null;if(Zb(t))return t;t=wa(t)}return null}function Yb(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function zl(e){return["html","body","#document"].includes(ac(e))}function Ns(e){return Vr(e).getComputedStyle(e)}function Ph(e){return Gs(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function wa(e){if(ac(e)==="html")return e;const t=e.assignedSlot||e.parentNode||t1(e)&&e.host||Io(e);return t1(t)?t.host:t}function ET(e){const t=wa(e);return zl(t)?e.ownerDocument?e.ownerDocument.body:e.body:Js(t)&&wd(t)?t:ET(t)}function zu(e,t,n){var r;t===void 0&&(t=[]),n===void 0&&(n=!0);const s=ET(e),o=s===((r=e.ownerDocument)==null?void 0:r.body),l=Vr(s);return o?t.concat(l,l.visualViewport||[],wd(s)?s:[],l.frameElement&&n?zu(l.frameElement):[]):t.concat(s,zu(s,[],n))}function kT(e){const t=Ns(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const s=Js(e),o=s?e.offsetWidth:n,l=s?e.offsetHeight:r,u=Dp(n)!==o||Dp(r)!==l;return u&&(n=o,r=l),{width:n,height:r,$:u}}function Xb(e){return Gs(e)?e:e.contextElement}function Rl(e){const t=Xb(e);if(!Js(t))return ba(1);const n=t.getBoundingClientRect(),{width:r,height:s,$:o}=kT(t);let l=(o?Dp(n.width):n.width)/r,u=(o?Dp(n.height):n.height)/s;return(!l||!Number.isFinite(l))&&(l=1),(!u||!Number.isFinite(u))&&(u=1),{x:l,y:u}}const v3=ba(0);function jT(e){const t=Vr(e);return!Yb()||!t.visualViewport?v3:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function y3(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==Vr(e)?!1:t}function Ci(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);const s=e.getBoundingClientRect(),o=Xb(e);let l=ba(1);t&&(r?Gs(r)&&(l=Rl(r)):l=Rl(e));const u=y3(o,n,r)?jT(o):ba(0);let d=(s.left+u.x)/l.x,f=(s.top+u.y)/l.y,h=s.width/l.x,m=s.height/l.y;if(o){const g=Vr(o),x=r&&Gs(r)?Vr(r):r;let b=g,w=b.frameElement;for(;w&&r&&x!==b;){const C=Rl(w),k=w.getBoundingClientRect(),j=Ns(w),M=k.left+(w.clientLeft+parseFloat(j.paddingLeft))*C.x,_=k.top+(w.clientTop+parseFloat(j.paddingTop))*C.y;d*=C.x,f*=C.y,h*=C.x,m*=C.y,d+=M,f+=_,b=Vr(w),w=b.frameElement}}return Lp({width:h,height:m,x:d,y:f})}function b3(e){let{elements:t,rect:n,offsetParent:r,strategy:s}=e;const o=s==="fixed",l=Io(r),u=t?Rh(t.floating):!1;if(r===l||u&&o)return n;let d={scrollLeft:0,scrollTop:0},f=ba(1);const h=ba(0),m=Js(r);if((m||!m&&!o)&&((ac(r)!=="body"||wd(l))&&(d=Ph(r)),Js(r))){const g=Ci(r);f=Rl(r),h.x=g.x+r.clientLeft,h.y=g.y+r.clientTop}return{width:n.width*f.x,height:n.height*f.y,x:n.x*f.x-d.scrollLeft*f.x+h.x,y:n.y*f.y-d.scrollTop*f.y+h.y}}function x3(e){return Array.from(e.getClientRects())}function TT(e){return Ci(Io(e)).left+Ph(e).scrollLeft}function w3(e){const t=Io(e),n=Ph(e),r=e.ownerDocument.body,s=zr(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),o=zr(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let l=-n.scrollLeft+TT(e);const u=-n.scrollTop;return Ns(r).direction==="rtl"&&(l+=zr(t.clientWidth,r.clientWidth)-s),{width:s,height:o,x:l,y:u}}function S3(e,t){const n=Vr(e),r=Io(e),s=n.visualViewport;let o=r.clientWidth,l=r.clientHeight,u=0,d=0;if(s){o=s.width,l=s.height;const f=Yb();(!f||f&&t==="fixed")&&(u=s.offsetLeft,d=s.offsetTop)}return{width:o,height:l,x:u,y:d}}function C3(e,t){const n=Ci(e,!0,t==="fixed"),r=n.top+e.clientTop,s=n.left+e.clientLeft,o=Js(e)?Rl(e):ba(1),l=e.clientWidth*o.x,u=e.clientHeight*o.y,d=s*o.x,f=r*o.y;return{width:l,height:u,x:d,y:f}}function n1(e,t,n){let r;if(t==="viewport")r=S3(e,n);else if(t==="document")r=w3(Io(e));else if(Gs(t))r=C3(t,n);else{const s=jT(e);r={...t,x:t.x-s.x,y:t.y-s.y}}return Lp(r)}function NT(e,t){const n=wa(e);return n===t||!Gs(n)||zl(n)?!1:Ns(n).position==="fixed"||NT(n,t)}function E3(e,t){const n=t.get(e);if(n)return n;let r=zu(e,[],!1).filter(u=>Gs(u)&&ac(u)!=="body"),s=null;const o=Ns(e).position==="fixed";let l=o?wa(e):e;for(;Gs(l)&&!zl(l);){const u=Ns(l),d=Zb(l);!d&&u.position==="fixed"&&(s=null),(o?!d&&!s:!d&&u.position==="static"&&!!s&&["absolute","fixed"].includes(s.position)||wd(l)&&!d&&NT(e,l))?r=r.filter(h=>h!==l):s=u,l=wa(l)}return t.set(e,r),r}function k3(e){let{element:t,boundary:n,rootBoundary:r,strategy:s}=e;const l=[...n==="clippingAncestors"?Rh(t)?[]:E3(t,this._c):[].concat(n),r],u=l[0],d=l.reduce((f,h)=>{const m=n1(t,h,s);return f.top=zr(m.top,f.top),f.right=Hs(m.right,f.right),f.bottom=Hs(m.bottom,f.bottom),f.left=zr(m.left,f.left),f},n1(t,u,s));return{width:d.right-d.left,height:d.bottom-d.top,x:d.left,y:d.top}}function j3(e){const{width:t,height:n}=kT(e);return{width:t,height:n}}function T3(e,t,n){const r=Js(t),s=Io(t),o=n==="fixed",l=Ci(e,!0,o,t);let u={scrollLeft:0,scrollTop:0};const d=ba(0);if(r||!r&&!o)if((ac(t)!=="body"||wd(s))&&(u=Ph(t)),r){const m=Ci(t,!0,o,t);d.x=m.x+t.clientLeft,d.y=m.y+t.clientTop}else s&&(d.x=TT(s));const f=l.left+u.scrollLeft-d.x,h=l.top+u.scrollTop-d.y;return{x:f,y:h,width:l.width,height:l.height}}function Cv(e){return Ns(e).position==="static"}function r1(e,t){return!Js(e)||Ns(e).position==="fixed"?null:t?t(e):e.offsetParent}function MT(e,t){const n=Vr(e);if(Rh(e))return n;if(!Js(e)){let s=wa(e);for(;s&&!zl(s);){if(Gs(s)&&!Cv(s))return s;s=wa(s)}return n}let r=r1(e,t);for(;r&&g3(r)&&Cv(r);)r=r1(r,t);return r&&zl(r)&&Cv(r)&&!Zb(r)?n:r||m3(e)||n}const N3=async function(e){const t=this.getOffsetParent||MT,n=this.getDimensions,r=await n(e.floating);return{reference:T3(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function M3(e){return Ns(e).direction==="rtl"}const _3={convertOffsetParentRelativeRectToViewportRelativeRect:b3,getDocumentElement:Io,getClippingRect:k3,getOffsetParent:MT,getElementRects:N3,getClientRects:x3,getDimensions:j3,getScale:Rl,isElement:Gs,isRTL:M3};function R3(e,t){let n=null,r;const s=Io(e);function o(){var u;clearTimeout(r),(u=n)==null||u.disconnect(),n=null}function l(u,d){u===void 0&&(u=!1),d===void 0&&(d=1),o();const{left:f,top:h,width:m,height:g}=e.getBoundingClientRect();if(u||t(),!m||!g)return;const x=Uf(h),b=Uf(s.clientWidth-(f+m)),w=Uf(s.clientHeight-(h+g)),C=Uf(f),j={rootMargin:-x+"px "+-b+"px "+-w+"px "+-C+"px",threshold:zr(0,Hs(1,d))||1};let M=!0;function _(R){const N=R[0].intersectionRatio;if(N!==d){if(!M)return l();N?l(!1,N):r=setTimeout(()=>{l(!1,1e-7)},1e3)}M=!1}try{n=new IntersectionObserver(_,{...j,root:s.ownerDocument})}catch{n=new IntersectionObserver(_,j)}n.observe(e)}return l(!0),o}function _T(e,t,n,r){r===void 0&&(r={});const{ancestorScroll:s=!0,ancestorResize:o=!0,elementResize:l=typeof ResizeObserver=="function",layoutShift:u=typeof IntersectionObserver=="function",animationFrame:d=!1}=r,f=Xb(e),h=s||o?[...f?zu(f):[],...zu(t)]:[];h.forEach(k=>{s&&k.addEventListener("scroll",n,{passive:!0}),o&&k.addEventListener("resize",n)});const m=f&&u?R3(f,n):null;let g=-1,x=null;l&&(x=new ResizeObserver(k=>{let[j]=k;j&&j.target===f&&x&&(x.unobserve(t),cancelAnimationFrame(g),g=requestAnimationFrame(()=>{var M;(M=x)==null||M.observe(t)})),n()}),f&&!d&&x.observe(f),x.observe(t));let b,w=d?Ci(e):null;d&&C();function C(){const k=Ci(e);w&&(k.x!==w.x||k.y!==w.y||k.width!==w.width||k.height!==w.height)&&n(),w=k,b=requestAnimationFrame(C)}return n(),()=>{var k;h.forEach(j=>{s&&j.removeEventListener("scroll",n),o&&j.removeEventListener("resize",n)}),m?.(),(k=x)==null||k.disconnect(),x=null,d&&cancelAnimationFrame(b)}}const P3=d3,O3=f3,I3=l3,A3=h3,D3=c3,s1=i3,F3=p3,L3=(e,t,n)=>{const r=new Map,s={platform:_3,...n},o={...s.platform,_c:r};return a3(e,t,{...s,platform:o})};var hp=typeof document<"u"?y.useLayoutEffect:y.useEffect;function $p(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let n,r,s;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(!$p(e[r],t[r]))return!1;return!0}if(s=Object.keys(e),n=s.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(t,s[r]))return!1;for(r=n;r--!==0;){const o=s[r];if(!(o==="_owner"&&e.$$typeof)&&!$p(e[o],t[o]))return!1}return!0}return e!==e&&t!==t}function RT(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function o1(e,t){const n=RT(e);return Math.round(t*n)/n}function a1(e){const t=y.useRef(e);return hp(()=>{t.current=e}),t}function PT(e){e===void 0&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:r=[],platform:s,elements:{reference:o,floating:l}={},transform:u=!0,whileElementsMounted:d,open:f}=e,[h,m]=y.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[g,x]=y.useState(r);$p(g,r)||x(r);const[b,w]=y.useState(null),[C,k]=y.useState(null),j=y.useCallback(Y=>{Y!==N.current&&(N.current=Y,w(Y))},[]),M=y.useCallback(Y=>{Y!==O.current&&(O.current=Y,k(Y))},[]),_=o||b,R=l||C,N=y.useRef(null),O=y.useRef(null),D=y.useRef(h),z=d!=null,Q=a1(d),pe=a1(s),V=y.useCallback(()=>{if(!N.current||!O.current)return;const Y={placement:t,strategy:n,middleware:g};pe.current&&(Y.platform=pe.current),L3(N.current,O.current,Y).then(H=>{const q={...H,isPositioned:!0};G.current&&!$p(D.current,q)&&(D.current=q,Ma.flushSync(()=>{m(q)}))})},[g,t,n,pe]);hp(()=>{f===!1&&D.current.isPositioned&&(D.current.isPositioned=!1,m(Y=>({...Y,isPositioned:!1})))},[f]);const G=y.useRef(!1);hp(()=>(G.current=!0,()=>{G.current=!1}),[]),hp(()=>{if(_&&(N.current=_),R&&(O.current=R),_&&R){if(Q.current)return Q.current(_,R,V);V()}},[_,R,V,Q,z]);const W=y.useMemo(()=>({reference:N,floating:O,setReference:j,setFloating:M}),[j,M]),ie=y.useMemo(()=>({reference:_,floating:R}),[_,R]),re=y.useMemo(()=>{const Y={position:n,left:0,top:0};if(!ie.floating)return Y;const H=o1(ie.floating,h.x),q=o1(ie.floating,h.y);return u?{...Y,transform:"translate("+H+"px, "+q+"px)",...RT(ie.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:H,top:q}},[n,u,ie.floating,h.x,h.y]);return y.useMemo(()=>({...h,update:V,refs:W,elements:ie,floatingStyles:re}),[h,V,W,ie,re])}const $3=e=>{function t(n){return{}.hasOwnProperty.call(n,"current")}return{name:"arrow",options:e,fn(n){const{element:r,padding:s}=typeof e=="function"?e(n):e;return r&&t(r)?r.current!=null?s1({element:r.current,padding:s}).fn(n):{}:r?s1({element:r,padding:s}).fn(n):{}}}},OT=(e,t)=>({...P3(e),options:[e,t]}),IT=(e,t)=>({...O3(e),options:[e,t]}),AT=(e,t)=>({...F3(e),options:[e,t]}),DT=(e,t)=>({...I3(e),options:[e,t]}),FT=(e,t)=>({...A3(e),options:[e,t]}),LT=(e,t)=>({...D3(e),options:[e,t]}),$T=(e,t)=>({...$3(e),options:[e,t]});var B3="Arrow",BT=y.forwardRef((e,t)=>{const{children:n,width:r=10,height:s=5,...o}=e;return i.jsx(rt.svg,{...o,ref:t,width:r,height:s,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?n:i.jsx("polygon",{points:"0,0 30,0 15,10"})})});BT.displayName=B3;var z3=BT;function zT(e){const[t,n]=y.useState(void 0);return Ln(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const r=new ResizeObserver(s=>{if(!Array.isArray(s)||!s.length)return;const o=s[0];let l,u;if("borderBoxSize"in o){const d=o.borderBoxSize,f=Array.isArray(d)?d[0]:d;l=f.inlineSize,u=f.blockSize}else l=e.offsetWidth,u=e.offsetHeight;n({width:l,height:u})});return r.observe(e,{box:"border-box"}),()=>r.unobserve(e)}else n(void 0)},[e]),t}var ex="Popper",[UT,Oh]=us(ex),[U3,VT]=UT(ex),HT=e=>{const{__scopePopper:t,children:n}=e,[r,s]=y.useState(null);return i.jsx(U3,{scope:t,anchor:r,onAnchorChange:s,children:n})};HT.displayName=ex;var qT="PopperAnchor",KT=y.forwardRef((e,t)=>{const{__scopePopper:n,virtualRef:r,...s}=e,o=VT(qT,n),l=y.useRef(null),u=Rt(t,l);return y.useEffect(()=>{o.onAnchorChange(r?.current||l.current)}),r?null:i.jsx(rt.div,{...s,ref:u})});KT.displayName=qT;var tx="PopperContent",[V3,H3]=UT(tx),WT=y.forwardRef((e,t)=>{const{__scopePopper:n,side:r="bottom",sideOffset:s=0,align:o="center",alignOffset:l=0,arrowPadding:u=0,avoidCollisions:d=!0,collisionBoundary:f=[],collisionPadding:h=0,sticky:m="partial",hideWhenDetached:g=!1,updatePositionStrategy:x="optimized",onPlaced:b,...w}=e,C=VT(tx,n),[k,j]=y.useState(null),M=Rt(t,Z=>j(Z)),[_,R]=y.useState(null),N=zT(_),O=N?.width??0,D=N?.height??0,z=r+(o!=="center"?"-"+o:""),Q=typeof h=="number"?h:{top:0,right:0,bottom:0,left:0,...h},pe=Array.isArray(f)?f:[f],V=pe.length>0,G={padding:Q,boundary:pe.filter(K3),altBoundary:V},{refs:W,floatingStyles:ie,placement:re,isPositioned:Y,middlewareData:H}=PT({strategy:"fixed",placement:z,whileElementsMounted:(...Z)=>_T(...Z,{animationFrame:x==="always"}),elements:{reference:C.anchor},middleware:[OT({mainAxis:s+D,alignmentAxis:l}),d&&IT({mainAxis:!0,crossAxis:!1,limiter:m==="partial"?AT():void 0,...G}),d&&DT({...G}),FT({...G,apply:({elements:Z,rects:ye,availableWidth:Re,availableHeight:$e})=>{const{width:Ye,height:Fe}=ye.reference,ft=Z.floating.style;ft.setProperty("--radix-popper-available-width",`${Re}px`),ft.setProperty("--radix-popper-available-height",`${$e}px`),ft.setProperty("--radix-popper-anchor-width",`${Ye}px`),ft.setProperty("--radix-popper-anchor-height",`${Fe}px`)}}),_&&$T({element:_,padding:u}),W3({arrowWidth:O,arrowHeight:D}),g&<({strategy:"referenceHidden",...G})]}),[q,he]=QT(re),A=Rn(b);Ln(()=>{Y&&A?.()},[Y,A]);const F=H.arrow?.x,fe=H.arrow?.y,te=H.arrow?.centerOffset!==0,[de,ge]=y.useState();return Ln(()=>{k&&ge(window.getComputedStyle(k).zIndex)},[k]),i.jsx("div",{ref:W.setFloating,"data-radix-popper-content-wrapper":"",style:{...ie,transform:Y?ie.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:de,"--radix-popper-transform-origin":[H.transformOrigin?.x,H.transformOrigin?.y].join(" "),...H.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:i.jsx(V3,{scope:n,placedSide:q,onArrowChange:R,arrowX:F,arrowY:fe,shouldHideArrow:te,children:i.jsx(rt.div,{"data-side":q,"data-align":he,...w,ref:M,style:{...w.style,animation:Y?void 0:"none"}})})})});WT.displayName=tx;var GT="PopperArrow",q3={top:"bottom",right:"left",bottom:"top",left:"right"},JT=y.forwardRef(function(t,n){const{__scopePopper:r,...s}=t,o=H3(GT,r),l=q3[o.placedSide];return i.jsx("span",{ref:o.onArrowChange,style:{position:"absolute",left:o.arrowX,top:o.arrowY,[l]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[o.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[o.placedSide],visibility:o.shouldHideArrow?"hidden":void 0},children:i.jsx(z3,{...s,ref:n,style:{...s.style,display:"block"}})})});JT.displayName=GT;function K3(e){return e!==null}var W3=e=>({name:"transformOrigin",options:e,fn(t){const{placement:n,rects:r,middlewareData:s}=t,l=s.arrow?.centerOffset!==0,u=l?0:e.arrowWidth,d=l?0:e.arrowHeight,[f,h]=QT(n),m={start:"0%",center:"50%",end:"100%"}[h],g=(s.arrow?.x??0)+u/2,x=(s.arrow?.y??0)+d/2;let b="",w="";return f==="bottom"?(b=l?m:`${g}px`,w=`${-d}px`):f==="top"?(b=l?m:`${g}px`,w=`${r.floating.height+d}px`):f==="right"?(b=`${-d}px`,w=l?m:`${x}px`):f==="left"&&(b=`${r.floating.width+d}px`,w=l?m:`${x}px`),{data:{x:b,y:w}}}});function QT(e){const[t,n="center"]=e.split("-");return[t,n]}var ZT=HT,YT=KT,XT=WT,eN=JT,G3="Portal",Ih=y.forwardRef((e,t)=>{const{container:n,...r}=e,[s,o]=y.useState(!1);Ln(()=>o(!0),[]);const l=n||s&&globalThis?.document?.body;return l?Ib.createPortal(i.jsx(rt.div,{...r,ref:t}),l):null});Ih.displayName=G3;function J3(e,t){return y.useReducer((n,r)=>t[n][r]??n,e)}var Mr=e=>{const{present:t,children:n}=e,r=Q3(t),s=typeof n=="function"?n({present:r.isPresent}):y.Children.only(n),o=Rt(r.ref,Z3(s));return typeof n=="function"||r.isPresent?y.cloneElement(s,{ref:o}):null};Mr.displayName="Presence";function Q3(e){const[t,n]=y.useState(),r=y.useRef({}),s=y.useRef(e),o=y.useRef("none"),l=e?"mounted":"unmounted",[u,d]=J3(l,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return y.useEffect(()=>{const f=Vf(r.current);o.current=u==="mounted"?f:"none"},[u]),Ln(()=>{const f=r.current,h=s.current;if(h!==e){const g=o.current,x=Vf(f);e?d("MOUNT"):x==="none"||f?.display==="none"?d("UNMOUNT"):d(h&&g!==x?"ANIMATION_OUT":"UNMOUNT"),s.current=e}},[e,d]),Ln(()=>{if(t){const f=m=>{const x=Vf(r.current).includes(m.animationName);m.target===t&&x&&Ma.flushSync(()=>d("ANIMATION_END"))},h=m=>{m.target===t&&(o.current=Vf(r.current))};return t.addEventListener("animationstart",h),t.addEventListener("animationcancel",f),t.addEventListener("animationend",f),()=>{t.removeEventListener("animationstart",h),t.removeEventListener("animationcancel",f),t.removeEventListener("animationend",f)}}else d("ANIMATION_END")},[t,d]),{isPresent:["mounted","unmountSuspended"].includes(u),ref:y.useCallback(f=>{f&&(r.current=getComputedStyle(f)),n(f)},[])}}function Vf(e){return e?.animationName||"none"}function Z3(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var Ev="rovingFocusGroup.onEntryFocus",Y3={bubbles:!1,cancelable:!0},Ah="RovingFocusGroup",[Vy,tN,X3]=Kb(Ah),[ez,Dh]=us(Ah,[X3]),[tz,nz]=ez(Ah),nN=y.forwardRef((e,t)=>i.jsx(Vy.Provider,{scope:e.__scopeRovingFocusGroup,children:i.jsx(Vy.Slot,{scope:e.__scopeRovingFocusGroup,children:i.jsx(rz,{...e,ref:t})})}));nN.displayName=Ah;var rz=y.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,orientation:r,loop:s=!1,dir:o,currentTabStopId:l,defaultCurrentTabStopId:u,onCurrentTabStopIdChange:d,onEntryFocus:f,preventScrollOnEntryFocus:h=!1,...m}=e,g=y.useRef(null),x=Rt(t,g),b=xd(o),[w=null,C]=ya({prop:l,defaultProp:u,onChange:d}),[k,j]=y.useState(!1),M=Rn(f),_=tN(n),R=y.useRef(!1),[N,O]=y.useState(0);return y.useEffect(()=>{const D=g.current;if(D)return D.addEventListener(Ev,M),()=>D.removeEventListener(Ev,M)},[M]),i.jsx(tz,{scope:n,orientation:r,dir:b,loop:s,currentTabStopId:w,onItemFocus:y.useCallback(D=>C(D),[C]),onItemShiftTab:y.useCallback(()=>j(!0),[]),onFocusableItemAdd:y.useCallback(()=>O(D=>D+1),[]),onFocusableItemRemove:y.useCallback(()=>O(D=>D-1),[]),children:i.jsx(rt.div,{tabIndex:k||N===0?-1:0,"data-orientation":r,...m,ref:x,style:{outline:"none",...e.style},onMouseDown:Ue(e.onMouseDown,()=>{R.current=!0}),onFocus:Ue(e.onFocus,D=>{const z=!R.current;if(D.target===D.currentTarget&&z&&!k){const Q=new CustomEvent(Ev,Y3);if(D.currentTarget.dispatchEvent(Q),!Q.defaultPrevented){const pe=_().filter(re=>re.focusable),V=pe.find(re=>re.active),G=pe.find(re=>re.id===w),ie=[V,G,...pe].filter(Boolean).map(re=>re.ref.current);oN(ie,h)}}R.current=!1}),onBlur:Ue(e.onBlur,()=>j(!1))})})}),rN="RovingFocusGroupItem",sN=y.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,focusable:r=!0,active:s=!1,tabStopId:o,...l}=e,u=Es(),d=o||u,f=nz(rN,n),h=f.currentTabStopId===d,m=tN(n),{onFocusableItemAdd:g,onFocusableItemRemove:x}=f;return y.useEffect(()=>{if(r)return g(),()=>x()},[r,g,x]),i.jsx(Vy.ItemSlot,{scope:n,id:d,focusable:r,active:s,children:i.jsx(rt.span,{tabIndex:h?0:-1,"data-orientation":f.orientation,...l,ref:t,onMouseDown:Ue(e.onMouseDown,b=>{r?f.onItemFocus(d):b.preventDefault()}),onFocus:Ue(e.onFocus,()=>f.onItemFocus(d)),onKeyDown:Ue(e.onKeyDown,b=>{if(b.key==="Tab"&&b.shiftKey){f.onItemShiftTab();return}if(b.target!==b.currentTarget)return;const w=az(b,f.orientation,f.dir);if(w!==void 0){if(b.metaKey||b.ctrlKey||b.altKey||b.shiftKey)return;b.preventDefault();let k=m().filter(j=>j.focusable).map(j=>j.ref.current);if(w==="last")k.reverse();else if(w==="prev"||w==="next"){w==="prev"&&k.reverse();const j=k.indexOf(b.currentTarget);k=f.loop?iz(k,j+1):k.slice(j+1)}setTimeout(()=>oN(k))}})})})});sN.displayName=rN;var sz={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function oz(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function az(e,t,n){const r=oz(e.key,n);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return sz[r]}function oN(e,t=!1){const n=document.activeElement;for(const r of e)if(r===n||(r.focus({preventScroll:t}),document.activeElement!==n))return}function iz(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var aN=nN,iN=sN,lz=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},pl=new WeakMap,Hf=new WeakMap,qf={},kv=0,lN=function(e){return e&&(e.host||lN(e.parentNode))},cz=function(e,t){return t.map(function(n){if(e.contains(n))return n;var r=lN(n);return r&&e.contains(r)?r:(console.error("aria-hidden",n,"in not contained inside",e,". Doing nothing"),null)}).filter(function(n){return!!n})},uz=function(e,t,n,r){var s=cz(t,Array.isArray(e)?e:[e]);qf[n]||(qf[n]=new WeakMap);var o=qf[n],l=[],u=new Set,d=new Set(s),f=function(m){!m||u.has(m)||(u.add(m),f(m.parentNode))};s.forEach(f);var h=function(m){!m||d.has(m)||Array.prototype.forEach.call(m.children,function(g){if(u.has(g))h(g);else try{var x=g.getAttribute(r),b=x!==null&&x!=="false",w=(pl.get(g)||0)+1,C=(o.get(g)||0)+1;pl.set(g,w),o.set(g,C),l.push(g),w===1&&b&&Hf.set(g,!0),C===1&&g.setAttribute(n,"true"),b||g.setAttribute(r,"true")}catch(k){console.error("aria-hidden: cannot operate on ",g,k)}})};return h(t),u.clear(),kv++,function(){l.forEach(function(m){var g=pl.get(m)-1,x=o.get(m)-1;pl.set(m,g),o.set(m,x),g||(Hf.has(m)||m.removeAttribute(r),Hf.delete(m)),x||m.removeAttribute(n)}),kv--,kv||(pl=new WeakMap,pl=new WeakMap,Hf=new WeakMap,qf={})}},nx=function(e,t,n){n===void 0&&(n="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),s=lz(e);return s?(r.push.apply(r,Array.from(s.querySelectorAll("[aria-live]"))),uz(r,s,n,"aria-hidden")):function(){return null}},zs=function(){return zs=Object.assign||function(t){for(var n,r=1,s=arguments.length;r"u")return Tz;var t=Nz(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},_z=fN(),Pl="data-scroll-locked",Rz=function(e,t,n,r){var s=e.left,o=e.top,l=e.right,u=e.gap;return n===void 0&&(n="margin"),` - .`.concat(fz,` { - overflow: hidden `).concat(r,`; - padding-right: `).concat(u,"px ").concat(r,`; - } - body[`).concat(Pl,`] { - overflow: hidden `).concat(r,`; - overscroll-behavior: contain; - `).concat([t&&"position: relative ".concat(r,";"),n==="margin"&&` - padding-left: `.concat(s,`px; - padding-top: `).concat(o,`px; - padding-right: `).concat(l,`px; - margin-left:0; - margin-top:0; - margin-right: `).concat(u,"px ").concat(r,`; - `),n==="padding"&&"padding-right: ".concat(u,"px ").concat(r,";")].filter(Boolean).join(""),` - } - - .`).concat(gp,` { - right: `).concat(u,"px ").concat(r,`; - } - - .`).concat(mp,` { - margin-right: `).concat(u,"px ").concat(r,`; - } - - .`).concat(gp," .").concat(gp,` { - right: 0 `).concat(r,`; - } - - .`).concat(mp," .").concat(mp,` { - margin-right: 0 `).concat(r,`; - } - - body[`).concat(Pl,`] { - `).concat(pz,": ").concat(u,`px; - } -`)},l1=function(){var e=parseInt(document.body.getAttribute(Pl)||"0",10);return isFinite(e)?e:0},Pz=function(){y.useEffect(function(){return document.body.setAttribute(Pl,(l1()+1).toString()),function(){var e=l1()-1;e<=0?document.body.removeAttribute(Pl):document.body.setAttribute(Pl,e.toString())}},[])},Oz=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,s=r===void 0?"margin":r;Pz();var o=y.useMemo(function(){return Mz(s)},[s]);return y.createElement(_z,{styles:Rz(o,!t,s,n?"":"!important")})},Hy=!1;if(typeof window<"u")try{var Kf=Object.defineProperty({},"passive",{get:function(){return Hy=!0,!0}});window.addEventListener("test",Kf,Kf),window.removeEventListener("test",Kf,Kf)}catch{Hy=!1}var hl=Hy?{passive:!1}:!1,Iz=function(e){return e.tagName==="TEXTAREA"},pN=function(e,t){var n=window.getComputedStyle(e);return n[t]!=="hidden"&&!(n.overflowY===n.overflowX&&!Iz(e)&&n[t]==="visible")},Az=function(e){return pN(e,"overflowY")},Dz=function(e){return pN(e,"overflowX")},c1=function(e,t){var n=t.ownerDocument,r=t;do{typeof ShadowRoot<"u"&&r instanceof ShadowRoot&&(r=r.host);var s=hN(e,r);if(s){var o=gN(e,r),l=o[1],u=o[2];if(l>u)return!0}r=r.parentNode}while(r&&r!==n.body);return!1},Fz=function(e){var t=e.scrollTop,n=e.scrollHeight,r=e.clientHeight;return[t,n,r]},Lz=function(e){var t=e.scrollLeft,n=e.scrollWidth,r=e.clientWidth;return[t,n,r]},hN=function(e,t){return e==="v"?Az(t):Dz(t)},gN=function(e,t){return e==="v"?Fz(t):Lz(t)},$z=function(e,t){return e==="h"&&t==="rtl"?-1:1},Bz=function(e,t,n,r,s){var o=$z(e,window.getComputedStyle(t).direction),l=o*r,u=n.target,d=t.contains(u),f=!1,h=l>0,m=0,g=0;do{var x=gN(e,u),b=x[0],w=x[1],C=x[2],k=w-C-o*b;(b||k)&&hN(e,u)&&(m+=k,g+=b),u instanceof ShadowRoot?u=u.host:u=u.parentNode}while(!d&&u!==document.body||d&&(t.contains(u)||t===u));return(h&&Math.abs(m)<1||!h&&Math.abs(g)<1)&&(f=!0),f},Wf=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},u1=function(e){return[e.deltaX,e.deltaY]},d1=function(e){return e&&"current"in e?e.current:e},zz=function(e,t){return e[0]===t[0]&&e[1]===t[1]},Uz=function(e){return` - .block-interactivity-`.concat(e,` {pointer-events: none;} - .allow-interactivity-`).concat(e,` {pointer-events: all;} -`)},Vz=0,gl=[];function Hz(e){var t=y.useRef([]),n=y.useRef([0,0]),r=y.useRef(),s=y.useState(Vz++)[0],o=y.useState(fN)[0],l=y.useRef(e);y.useEffect(function(){l.current=e},[e]),y.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(s));var w=dz([e.lockRef.current],(e.shards||[]).map(d1),!0).filter(Boolean);return w.forEach(function(C){return C.classList.add("allow-interactivity-".concat(s))}),function(){document.body.classList.remove("block-interactivity-".concat(s)),w.forEach(function(C){return C.classList.remove("allow-interactivity-".concat(s))})}}},[e.inert,e.lockRef.current,e.shards]);var u=y.useCallback(function(w,C){if("touches"in w&&w.touches.length===2)return!l.current.allowPinchZoom;var k=Wf(w),j=n.current,M="deltaX"in w?w.deltaX:j[0]-k[0],_="deltaY"in w?w.deltaY:j[1]-k[1],R,N=w.target,O=Math.abs(M)>Math.abs(_)?"h":"v";if("touches"in w&&O==="h"&&N.type==="range")return!1;var D=c1(O,N);if(!D)return!0;if(D?R=O:(R=O==="v"?"h":"v",D=c1(O,N)),!D)return!1;if(!r.current&&"changedTouches"in w&&(M||_)&&(r.current=R),!R)return!0;var z=r.current||R;return Bz(z,C,w,z==="h"?M:_)},[]),d=y.useCallback(function(w){var C=w;if(!(!gl.length||gl[gl.length-1]!==o)){var k="deltaY"in C?u1(C):Wf(C),j=t.current.filter(function(R){return R.name===C.type&&(R.target===C.target||C.target===R.shadowParent)&&zz(R.delta,k)})[0];if(j&&j.should){C.cancelable&&C.preventDefault();return}if(!j){var M=(l.current.shards||[]).map(d1).filter(Boolean).filter(function(R){return R.contains(C.target)}),_=M.length>0?u(C,M[0]):!l.current.noIsolation;_&&C.cancelable&&C.preventDefault()}}},[]),f=y.useCallback(function(w,C,k,j){var M={name:w,delta:C,target:k,should:j,shadowParent:qz(k)};t.current.push(M),setTimeout(function(){t.current=t.current.filter(function(_){return _!==M})},1)},[]),h=y.useCallback(function(w){n.current=Wf(w),r.current=void 0},[]),m=y.useCallback(function(w){f(w.type,u1(w),w.target,u(w,e.lockRef.current))},[]),g=y.useCallback(function(w){f(w.type,Wf(w),w.target,u(w,e.lockRef.current))},[]);y.useEffect(function(){return gl.push(o),e.setCallbacks({onScrollCapture:m,onWheelCapture:m,onTouchMoveCapture:g}),document.addEventListener("wheel",d,hl),document.addEventListener("touchmove",d,hl),document.addEventListener("touchstart",h,hl),function(){gl=gl.filter(function(w){return w!==o}),document.removeEventListener("wheel",d,hl),document.removeEventListener("touchmove",d,hl),document.removeEventListener("touchstart",h,hl)}},[]);var x=e.removeScrollBar,b=e.inert;return y.createElement(y.Fragment,null,b?y.createElement(o,{styles:Uz(s)}):null,x?y.createElement(Oz,{gapMode:e.gapMode}):null)}function qz(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}const Kz=xz(dN,Hz);var Lh=y.forwardRef(function(e,t){return y.createElement(Fh,zs({},e,{ref:t,sideCar:Kz}))});Lh.classNames=Fh.classNames;var qy=["Enter"," "],Wz=["ArrowDown","PageUp","Home"],mN=["ArrowUp","PageDown","End"],Gz=[...Wz,...mN],Jz={ltr:[...qy,"ArrowRight"],rtl:[...qy,"ArrowLeft"]},Qz={ltr:["ArrowLeft"],rtl:["ArrowRight"]},Sd="Menu",[Uu,Zz,Yz]=Kb(Sd),[$i,vN]=us(Sd,[Yz,Oh,Dh]),$h=Oh(),yN=Dh(),[Xz,Bi]=$i(Sd),[eU,Cd]=$i(Sd),bN=e=>{const{__scopeMenu:t,open:n=!1,children:r,dir:s,onOpenChange:o,modal:l=!0}=e,u=$h(t),[d,f]=y.useState(null),h=y.useRef(!1),m=Rn(o),g=xd(s);return y.useEffect(()=>{const x=()=>{h.current=!0,document.addEventListener("pointerdown",b,{capture:!0,once:!0}),document.addEventListener("pointermove",b,{capture:!0,once:!0})},b=()=>h.current=!1;return document.addEventListener("keydown",x,{capture:!0}),()=>{document.removeEventListener("keydown",x,{capture:!0}),document.removeEventListener("pointerdown",b,{capture:!0}),document.removeEventListener("pointermove",b,{capture:!0})}},[]),i.jsx(ZT,{...u,children:i.jsx(Xz,{scope:t,open:n,onOpenChange:m,content:d,onContentChange:f,children:i.jsx(eU,{scope:t,onClose:y.useCallback(()=>m(!1),[m]),isUsingKeyboardRef:h,dir:g,modal:l,children:r})})})};bN.displayName=Sd;var tU="MenuAnchor",rx=y.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e,s=$h(n);return i.jsx(YT,{...s,...r,ref:t})});rx.displayName=tU;var sx="MenuPortal",[nU,xN]=$i(sx,{forceMount:void 0}),wN=e=>{const{__scopeMenu:t,forceMount:n,children:r,container:s}=e,o=Bi(sx,t);return i.jsx(nU,{scope:t,forceMount:n,children:i.jsx(Mr,{present:n||o.open,children:i.jsx(Ih,{asChild:!0,container:s,children:r})})})};wN.displayName=sx;var is="MenuContent",[rU,ox]=$i(is),SN=y.forwardRef((e,t)=>{const n=xN(is,e.__scopeMenu),{forceMount:r=n.forceMount,...s}=e,o=Bi(is,e.__scopeMenu),l=Cd(is,e.__scopeMenu);return i.jsx(Uu.Provider,{scope:e.__scopeMenu,children:i.jsx(Mr,{present:r||o.open,children:i.jsx(Uu.Slot,{scope:e.__scopeMenu,children:l.modal?i.jsx(sU,{...s,ref:t}):i.jsx(oU,{...s,ref:t})})})})}),sU=y.forwardRef((e,t)=>{const n=Bi(is,e.__scopeMenu),r=y.useRef(null),s=Rt(t,r);return y.useEffect(()=>{const o=r.current;if(o)return nx(o)},[]),i.jsx(ax,{...e,ref:s,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:Ue(e.onFocusOutside,o=>o.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),oU=y.forwardRef((e,t)=>{const n=Bi(is,e.__scopeMenu);return i.jsx(ax,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),ax=y.forwardRef((e,t)=>{const{__scopeMenu:n,loop:r=!1,trapFocus:s,onOpenAutoFocus:o,onCloseAutoFocus:l,disableOutsidePointerEvents:u,onEntryFocus:d,onEscapeKeyDown:f,onPointerDownOutside:h,onFocusOutside:m,onInteractOutside:g,onDismiss:x,disableOutsideScroll:b,...w}=e,C=Bi(is,n),k=Cd(is,n),j=$h(n),M=yN(n),_=Zz(n),[R,N]=y.useState(null),O=y.useRef(null),D=Rt(t,O,C.onContentChange),z=y.useRef(0),Q=y.useRef(""),pe=y.useRef(0),V=y.useRef(null),G=y.useRef("right"),W=y.useRef(0),ie=b?Lh:y.Fragment,re=b?{as:No,allowPinchZoom:!0}:void 0,Y=q=>{const he=Q.current+q,A=_().filter(Z=>!Z.disabled),F=document.activeElement,fe=A.find(Z=>Z.ref.current===F)?.textValue,te=A.map(Z=>Z.textValue),de=vU(te,he,fe),ge=A.find(Z=>Z.textValue===de)?.ref.current;(function Z(ye){Q.current=ye,window.clearTimeout(z.current),ye!==""&&(z.current=window.setTimeout(()=>Z(""),1e3))})(he),ge&&setTimeout(()=>ge.focus())};y.useEffect(()=>()=>window.clearTimeout(z.current),[]),Wb();const H=y.useCallback(q=>G.current===V.current?.side&&bU(q,V.current?.area),[]);return i.jsx(rU,{scope:n,searchRef:Q,onItemEnter:y.useCallback(q=>{H(q)&&q.preventDefault()},[H]),onItemLeave:y.useCallback(q=>{H(q)||(O.current?.focus(),N(null))},[H]),onTriggerLeave:y.useCallback(q=>{H(q)&&q.preventDefault()},[H]),pointerGraceTimerRef:pe,onPointerGraceIntentChange:y.useCallback(q=>{V.current=q},[]),children:i.jsx(ie,{...re,children:i.jsx(_h,{asChild:!0,trapped:s,onMountAutoFocus:Ue(o,q=>{q.preventDefault(),O.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:l,children:i.jsx(Mh,{asChild:!0,disableOutsidePointerEvents:u,onEscapeKeyDown:f,onPointerDownOutside:h,onFocusOutside:m,onInteractOutside:g,onDismiss:x,children:i.jsx(aN,{asChild:!0,...M,dir:k.dir,orientation:"vertical",loop:r,currentTabStopId:R,onCurrentTabStopIdChange:N,onEntryFocus:Ue(d,q=>{k.isUsingKeyboardRef.current||q.preventDefault()}),preventScrollOnEntryFocus:!0,children:i.jsx(XT,{role:"menu","aria-orientation":"vertical","data-state":LN(C.open),"data-radix-menu-content":"",dir:k.dir,...j,...w,ref:D,style:{outline:"none",...w.style},onKeyDown:Ue(w.onKeyDown,q=>{const A=q.target.closest("[data-radix-menu-content]")===q.currentTarget,F=q.ctrlKey||q.altKey||q.metaKey,fe=q.key.length===1;A&&(q.key==="Tab"&&q.preventDefault(),!F&&fe&&Y(q.key));const te=O.current;if(q.target!==te||!Gz.includes(q.key))return;q.preventDefault();const ge=_().filter(Z=>!Z.disabled).map(Z=>Z.ref.current);mN.includes(q.key)&&ge.reverse(),gU(ge)}),onBlur:Ue(e.onBlur,q=>{q.currentTarget.contains(q.target)||(window.clearTimeout(z.current),Q.current="")}),onPointerMove:Ue(e.onPointerMove,Vu(q=>{const he=q.target,A=W.current!==q.clientX;if(q.currentTarget.contains(he)&&A){const F=q.clientX>W.current?"right":"left";G.current=F,W.current=q.clientX}}))})})})})})})});SN.displayName=is;var aU="MenuGroup",ix=y.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return i.jsx(rt.div,{role:"group",...r,ref:t})});ix.displayName=aU;var iU="MenuLabel",CN=y.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return i.jsx(rt.div,{...r,ref:t})});CN.displayName=iU;var Bp="MenuItem",f1="menu.itemSelect",Bh=y.forwardRef((e,t)=>{const{disabled:n=!1,onSelect:r,...s}=e,o=y.useRef(null),l=Cd(Bp,e.__scopeMenu),u=ox(Bp,e.__scopeMenu),d=Rt(t,o),f=y.useRef(!1),h=()=>{const m=o.current;if(!n&&m){const g=new CustomEvent(f1,{bubbles:!0,cancelable:!0});m.addEventListener(f1,x=>r?.(x),{once:!0}),yT(m,g),g.defaultPrevented?f.current=!1:l.onClose()}};return i.jsx(EN,{...s,ref:d,disabled:n,onClick:Ue(e.onClick,h),onPointerDown:m=>{e.onPointerDown?.(m),f.current=!0},onPointerUp:Ue(e.onPointerUp,m=>{f.current||m.currentTarget?.click()}),onKeyDown:Ue(e.onKeyDown,m=>{const g=u.searchRef.current!=="";n||g&&m.key===" "||qy.includes(m.key)&&(m.currentTarget.click(),m.preventDefault())})})});Bh.displayName=Bp;var EN=y.forwardRef((e,t)=>{const{__scopeMenu:n,disabled:r=!1,textValue:s,...o}=e,l=ox(Bp,n),u=yN(n),d=y.useRef(null),f=Rt(t,d),[h,m]=y.useState(!1),[g,x]=y.useState("");return y.useEffect(()=>{const b=d.current;b&&x((b.textContent??"").trim())},[o.children]),i.jsx(Uu.ItemSlot,{scope:n,disabled:r,textValue:s??g,children:i.jsx(iN,{asChild:!0,...u,focusable:!r,children:i.jsx(rt.div,{role:"menuitem","data-highlighted":h?"":void 0,"aria-disabled":r||void 0,"data-disabled":r?"":void 0,...o,ref:f,onPointerMove:Ue(e.onPointerMove,Vu(b=>{r?l.onItemLeave(b):(l.onItemEnter(b),b.defaultPrevented||b.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:Ue(e.onPointerLeave,Vu(b=>l.onItemLeave(b))),onFocus:Ue(e.onFocus,()=>m(!0)),onBlur:Ue(e.onBlur,()=>m(!1))})})})}),lU="MenuCheckboxItem",kN=y.forwardRef((e,t)=>{const{checked:n=!1,onCheckedChange:r,...s}=e;return i.jsx(_N,{scope:e.__scopeMenu,checked:n,children:i.jsx(Bh,{role:"menuitemcheckbox","aria-checked":zp(n)?"mixed":n,...s,ref:t,"data-state":cx(n),onSelect:Ue(s.onSelect,()=>r?.(zp(n)?!0:!n),{checkForDefaultPrevented:!1})})})});kN.displayName=lU;var jN="MenuRadioGroup",[cU,uU]=$i(jN,{value:void 0,onValueChange:()=>{}}),TN=y.forwardRef((e,t)=>{const{value:n,onValueChange:r,...s}=e,o=Rn(r);return i.jsx(cU,{scope:e.__scopeMenu,value:n,onValueChange:o,children:i.jsx(ix,{...s,ref:t})})});TN.displayName=jN;var NN="MenuRadioItem",MN=y.forwardRef((e,t)=>{const{value:n,...r}=e,s=uU(NN,e.__scopeMenu),o=n===s.value;return i.jsx(_N,{scope:e.__scopeMenu,checked:o,children:i.jsx(Bh,{role:"menuitemradio","aria-checked":o,...r,ref:t,"data-state":cx(o),onSelect:Ue(r.onSelect,()=>s.onValueChange?.(n),{checkForDefaultPrevented:!1})})})});MN.displayName=NN;var lx="MenuItemIndicator",[_N,dU]=$i(lx,{checked:!1}),RN=y.forwardRef((e,t)=>{const{__scopeMenu:n,forceMount:r,...s}=e,o=dU(lx,n);return i.jsx(Mr,{present:r||zp(o.checked)||o.checked===!0,children:i.jsx(rt.span,{...s,ref:t,"data-state":cx(o.checked)})})});RN.displayName=lx;var fU="MenuSeparator",PN=y.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return i.jsx(rt.div,{role:"separator","aria-orientation":"horizontal",...r,ref:t})});PN.displayName=fU;var pU="MenuArrow",ON=y.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e,s=$h(n);return i.jsx(eN,{...s,...r,ref:t})});ON.displayName=pU;var hU="MenuSub",[wie,IN]=$i(hU),mu="MenuSubTrigger",AN=y.forwardRef((e,t)=>{const n=Bi(mu,e.__scopeMenu),r=Cd(mu,e.__scopeMenu),s=IN(mu,e.__scopeMenu),o=ox(mu,e.__scopeMenu),l=y.useRef(null),{pointerGraceTimerRef:u,onPointerGraceIntentChange:d}=o,f={__scopeMenu:e.__scopeMenu},h=y.useCallback(()=>{l.current&&window.clearTimeout(l.current),l.current=null},[]);return y.useEffect(()=>h,[h]),y.useEffect(()=>{const m=u.current;return()=>{window.clearTimeout(m),d(null)}},[u,d]),i.jsx(rx,{asChild:!0,...f,children:i.jsx(EN,{id:s.triggerId,"aria-haspopup":"menu","aria-expanded":n.open,"aria-controls":s.contentId,"data-state":LN(n.open),...e,ref:kh(t,s.onTriggerChange),onClick:m=>{e.onClick?.(m),!(e.disabled||m.defaultPrevented)&&(m.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:Ue(e.onPointerMove,Vu(m=>{o.onItemEnter(m),!m.defaultPrevented&&!e.disabled&&!n.open&&!l.current&&(o.onPointerGraceIntentChange(null),l.current=window.setTimeout(()=>{n.onOpenChange(!0),h()},100))})),onPointerLeave:Ue(e.onPointerLeave,Vu(m=>{h();const g=n.content?.getBoundingClientRect();if(g){const x=n.content?.dataset.side,b=x==="right",w=b?-5:5,C=g[b?"left":"right"],k=g[b?"right":"left"];o.onPointerGraceIntentChange({area:[{x:m.clientX+w,y:m.clientY},{x:C,y:g.top},{x:k,y:g.top},{x:k,y:g.bottom},{x:C,y:g.bottom}],side:x}),window.clearTimeout(u.current),u.current=window.setTimeout(()=>o.onPointerGraceIntentChange(null),300)}else{if(o.onTriggerLeave(m),m.defaultPrevented)return;o.onPointerGraceIntentChange(null)}})),onKeyDown:Ue(e.onKeyDown,m=>{const g=o.searchRef.current!=="";e.disabled||g&&m.key===" "||Jz[r.dir].includes(m.key)&&(n.onOpenChange(!0),n.content?.focus(),m.preventDefault())})})})});AN.displayName=mu;var DN="MenuSubContent",FN=y.forwardRef((e,t)=>{const n=xN(is,e.__scopeMenu),{forceMount:r=n.forceMount,...s}=e,o=Bi(is,e.__scopeMenu),l=Cd(is,e.__scopeMenu),u=IN(DN,e.__scopeMenu),d=y.useRef(null),f=Rt(t,d);return i.jsx(Uu.Provider,{scope:e.__scopeMenu,children:i.jsx(Mr,{present:r||o.open,children:i.jsx(Uu.Slot,{scope:e.__scopeMenu,children:i.jsx(ax,{id:u.contentId,"aria-labelledby":u.triggerId,...s,ref:f,align:"start",side:l.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:h=>{l.isUsingKeyboardRef.current&&d.current?.focus(),h.preventDefault()},onCloseAutoFocus:h=>h.preventDefault(),onFocusOutside:Ue(e.onFocusOutside,h=>{h.target!==u.trigger&&o.onOpenChange(!1)}),onEscapeKeyDown:Ue(e.onEscapeKeyDown,h=>{l.onClose(),h.preventDefault()}),onKeyDown:Ue(e.onKeyDown,h=>{const m=h.currentTarget.contains(h.target),g=Qz[l.dir].includes(h.key);m&&g&&(o.onOpenChange(!1),u.trigger?.focus(),h.preventDefault())})})})})})});FN.displayName=DN;function LN(e){return e?"open":"closed"}function zp(e){return e==="indeterminate"}function cx(e){return zp(e)?"indeterminate":e?"checked":"unchecked"}function gU(e){const t=document.activeElement;for(const n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function mU(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function vU(e,t,n){const s=t.length>1&&Array.from(t).every(f=>f===t[0])?t[0]:t,o=n?e.indexOf(n):-1;let l=mU(e,Math.max(o,0));s.length===1&&(l=l.filter(f=>f!==n));const d=l.find(f=>f.toLowerCase().startsWith(s.toLowerCase()));return d!==n?d:void 0}function yU(e,t){const{x:n,y:r}=e;let s=!1;for(let o=0,l=t.length-1;or!=h>r&&n<(f-u)*(r-d)/(h-d)+u&&(s=!s)}return s}function bU(e,t){if(!t)return!1;const n={x:e.clientX,y:e.clientY};return yU(n,t)}function Vu(e){return t=>t.pointerType==="mouse"?e(t):void 0}var xU=bN,wU=rx,SU=wN,CU=SN,EU=ix,kU=CN,jU=Bh,TU=kN,NU=TN,MU=MN,_U=RN,RU=PN,PU=ON,OU=AN,IU=FN,ux="DropdownMenu",[AU]=us(ux,[vN]),pr=vN(),[DU,$N]=AU(ux),dx=e=>{const{__scopeDropdownMenu:t,children:n,dir:r,open:s,defaultOpen:o,onOpenChange:l,modal:u=!0}=e,d=pr(t),f=y.useRef(null),[h=!1,m]=ya({prop:s,defaultProp:o,onChange:l});return i.jsx(DU,{scope:t,triggerId:Es(),triggerRef:f,contentId:Es(),open:h,onOpenChange:m,onOpenToggle:y.useCallback(()=>m(g=>!g),[m]),modal:u,children:i.jsx(xU,{...d,open:h,onOpenChange:m,dir:r,modal:u,children:n})})};dx.displayName=ux;var BN="DropdownMenuTrigger",fx=y.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,disabled:r=!1,...s}=e,o=$N(BN,n),l=pr(n);return i.jsx(wU,{asChild:!0,...l,children:i.jsx(rt.button,{type:"button",id:o.triggerId,"aria-haspopup":"menu","aria-expanded":o.open,"aria-controls":o.open?o.contentId:void 0,"data-state":o.open?"open":"closed","data-disabled":r?"":void 0,disabled:r,...s,ref:kh(t,o.triggerRef),onPointerDown:Ue(e.onPointerDown,u=>{!r&&u.button===0&&u.ctrlKey===!1&&(o.onOpenToggle(),o.open||u.preventDefault())}),onKeyDown:Ue(e.onKeyDown,u=>{r||(["Enter"," "].includes(u.key)&&o.onOpenToggle(),u.key==="ArrowDown"&&o.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(u.key)&&u.preventDefault())})})})});fx.displayName=BN;var FU="DropdownMenuPortal",zN=e=>{const{__scopeDropdownMenu:t,...n}=e,r=pr(t);return i.jsx(SU,{...r,...n})};zN.displayName=FU;var UN="DropdownMenuContent",VN=y.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,s=$N(UN,n),o=pr(n),l=y.useRef(!1);return i.jsx(CU,{id:s.contentId,"aria-labelledby":s.triggerId,...o,...r,ref:t,onCloseAutoFocus:Ue(e.onCloseAutoFocus,u=>{l.current||s.triggerRef.current?.focus(),l.current=!1,u.preventDefault()}),onInteractOutside:Ue(e.onInteractOutside,u=>{const d=u.detail.originalEvent,f=d.button===0&&d.ctrlKey===!0,h=d.button===2||f;(!s.modal||h)&&(l.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});VN.displayName=UN;var LU="DropdownMenuGroup",$U=y.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,s=pr(n);return i.jsx(EU,{...s,...r,ref:t})});$U.displayName=LU;var BU="DropdownMenuLabel",HN=y.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,s=pr(n);return i.jsx(kU,{...s,...r,ref:t})});HN.displayName=BU;var zU="DropdownMenuItem",qN=y.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,s=pr(n);return i.jsx(jU,{...s,...r,ref:t})});qN.displayName=zU;var UU="DropdownMenuCheckboxItem",KN=y.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,s=pr(n);return i.jsx(TU,{...s,...r,ref:t})});KN.displayName=UU;var VU="DropdownMenuRadioGroup",HU=y.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,s=pr(n);return i.jsx(NU,{...s,...r,ref:t})});HU.displayName=VU;var qU="DropdownMenuRadioItem",WN=y.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,s=pr(n);return i.jsx(MU,{...s,...r,ref:t})});WN.displayName=qU;var KU="DropdownMenuItemIndicator",GN=y.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,s=pr(n);return i.jsx(_U,{...s,...r,ref:t})});GN.displayName=KU;var WU="DropdownMenuSeparator",JN=y.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,s=pr(n);return i.jsx(RU,{...s,...r,ref:t})});JN.displayName=WU;var GU="DropdownMenuArrow",JU=y.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,s=pr(n);return i.jsx(PU,{...s,...r,ref:t})});JU.displayName=GU;var QU="DropdownMenuSubTrigger",QN=y.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,s=pr(n);return i.jsx(OU,{...s,...r,ref:t})});QN.displayName=QU;var ZU="DropdownMenuSubContent",ZN=y.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,s=pr(n);return i.jsx(IU,{...s,...r,ref:t,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});ZN.displayName=ZU;var YU=dx,XU=fx,e5=zN,YN=VN,XN=HN,eM=qN,tM=KN,nM=WN,rM=GN,Oa=JN,sM=QN,oM=ZN;const Kr=YU,Wr=XU,t5=y.forwardRef(({className:e,inset:t,children:n,...r},s)=>i.jsxs(sM,{ref:s,className:Ie("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent",t&&"pl-8",e),...r,children:[n,i.jsx(W$,{className:"ml-auto h-4 w-4"})]}));t5.displayName=sM.displayName;const n5=y.forwardRef(({className:e,...t},n)=>i.jsx(oM,{ref:n,className:Ie("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...t}));n5.displayName=oM.displayName;const hr=y.forwardRef(({className:e,sideOffset:t=4,...n},r)=>i.jsx(e5,{children:i.jsx(YN,{ref:r,sideOffset:t,className:Ie("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...n})}));hr.displayName=YN.displayName;const wt=y.forwardRef(({className:e,inset:t,...n},r)=>i.jsx(eM,{ref:r,className:Ie("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t&&"pl-8",e),...n}));wt.displayName=eM.displayName;const aM=y.forwardRef(({className:e,children:t,checked:n,...r},s)=>i.jsxs(tM,{ref:s,className:Ie("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),checked:n,...r,children:[i.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:i.jsx(rM,{children:i.jsx(fT,{className:"h-4 w-4"})})}),t]}));aM.displayName=tM.displayName;const r5=y.forwardRef(({className:e,children:t,...n},r)=>i.jsxs(nM,{ref:r,className:Ie("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),...n,children:[i.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:i.jsx(rM,{children:i.jsx(Z$,{className:"h-2 w-2 fill-current"})})}),t]}));r5.displayName=nM.displayName;const Ao=y.forwardRef(({className:e,inset:t,...n},r)=>i.jsx(XN,{ref:r,className:Ie("px-2 py-1.5 text-sm font-semibold",t&&"pl-8",e),...n}));Ao.displayName=XN.displayName;const Xs=y.forwardRef(({className:e,...t},n)=>i.jsx(Oa,{ref:n,className:Ie("-mx-1 my-1 h-px bg-muted",e),...t}));Xs.displayName=Oa.displayName;function iM(){const{t:e,i18n:t}=Ve(),n=r=>{t.changeLanguage(r),localStorage.setItem("i18nextLng",r),window.location.reload()};return i.jsxs(Kr,{children:[i.jsx(Wr,{asChild:!0,children:i.jsxs(se,{variant:"outline",size:"icon",children:[i.jsx(fB,{className:"h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all"}),i.jsx("span",{className:"sr-only",children:e("header.theme.label")})]})}),i.jsxs(hr,{align:"end",children:[i.jsx(wt,{className:t.language==="pt-BR"?"font-bold":"",onClick:()=>n("pt-BR"),children:e("header.language.portuguese")}),i.jsx(wt,{className:t.language==="en-US"?"font-bold":"",onClick:()=>n("en-US"),children:e("header.language.english")}),i.jsx(wt,{className:t.language==="es-ES"?"font-bold":"",onClick:()=>n("es-ES"),children:e("header.language.spanish")}),i.jsx(wt,{className:t.language==="fr-FR"?"font-bold":"",onClick:()=>n("fr-FR"),children:e("header.language.french")})]})]})}function lM(){const{t:e}=Ve(),{setTheme:t}=tc();return i.jsxs(Kr,{children:[i.jsx(Wr,{asChild:!0,children:i.jsxs(se,{variant:"outline",size:"icon",children:[i.jsx(EB,{className:"h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0"}),i.jsx(bB,{className:"absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100"}),i.jsx("span",{className:"sr-only",children:e("header.theme.label")})]})}),i.jsxs(hr,{align:"end",children:[i.jsx(wt,{onClick:()=>t("light"),children:e("header.theme.light")}),i.jsx(wt,{onClick:()=>t("dark"),children:e("header.theme.dark")}),i.jsx(wt,{onClick:()=>t("system"),children:e("header.theme.system")})]})]})}var px="Avatar",[s5]=us(px),[o5,cM]=s5(px),uM=y.forwardRef((e,t)=>{const{__scopeAvatar:n,...r}=e,[s,o]=y.useState("idle");return i.jsx(o5,{scope:n,imageLoadingStatus:s,onImageLoadingStatusChange:o,children:i.jsx(rt.span,{...r,ref:t})})});uM.displayName=px;var dM="AvatarImage",fM=y.forwardRef((e,t)=>{const{__scopeAvatar:n,src:r,onLoadingStatusChange:s=()=>{},...o}=e,l=cM(dM,n),u=a5(r),d=Rn(f=>{s(f),l.onImageLoadingStatusChange(f)});return Ln(()=>{u!=="idle"&&d(u)},[u,d]),u==="loaded"?i.jsx(rt.img,{...o,ref:t,src:r}):null});fM.displayName=dM;var pM="AvatarFallback",hM=y.forwardRef((e,t)=>{const{__scopeAvatar:n,delayMs:r,...s}=e,o=cM(pM,n),[l,u]=y.useState(r===void 0);return y.useEffect(()=>{if(r!==void 0){const d=window.setTimeout(()=>u(!0),r);return()=>window.clearTimeout(d)}},[r]),l&&o.imageLoadingStatus!=="loaded"?i.jsx(rt.span,{...s,ref:t}):null});hM.displayName=pM;function a5(e){const[t,n]=y.useState("idle");return Ln(()=>{if(!e){n("error");return}let r=!0;const s=new window.Image,o=l=>()=>{r&&n(l)};return n("loading"),s.onload=o("loaded"),s.onerror=o("error"),s.src=e,()=>{r=!1}},[e]),t}var gM=uM,mM=fM,vM=hM;const Ei=y.forwardRef(({className:e,...t},n)=>i.jsx(gM,{ref:n,className:Ie("relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",e),...t}));Ei.displayName=gM.displayName;const ki=y.forwardRef(({className:e,...t},n)=>i.jsx(mM,{ref:n,className:Ie("aspect-square h-full w-full",e),...t}));ki.displayName=mM.displayName;const Up=y.forwardRef(({className:e,...t},n)=>i.jsx(vM,{ref:n,className:Ie("flex h-full w-full items-center justify-center rounded-full bg-muted",e),...t}));Up.displayName=vM.displayName;var hx="Dialog",[yM]=us(hx),[i5,Ps]=yM(hx),bM=e=>{const{__scopeDialog:t,children:n,open:r,defaultOpen:s,onOpenChange:o,modal:l=!0}=e,u=y.useRef(null),d=y.useRef(null),[f=!1,h]=ya({prop:r,defaultProp:s,onChange:o});return i.jsx(i5,{scope:t,triggerRef:u,contentRef:d,contentId:Es(),titleId:Es(),descriptionId:Es(),open:f,onOpenChange:h,onOpenToggle:y.useCallback(()=>h(m=>!m),[h]),modal:l,children:n})};bM.displayName=hx;var xM="DialogTrigger",wM=y.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,s=Ps(xM,n),o=Rt(t,s.triggerRef);return i.jsx(rt.button,{type:"button","aria-haspopup":"dialog","aria-expanded":s.open,"aria-controls":s.contentId,"data-state":vx(s.open),...r,ref:o,onClick:Ue(e.onClick,s.onOpenToggle)})});wM.displayName=xM;var gx="DialogPortal",[l5,SM]=yM(gx,{forceMount:void 0}),CM=e=>{const{__scopeDialog:t,forceMount:n,children:r,container:s}=e,o=Ps(gx,t);return i.jsx(l5,{scope:t,forceMount:n,children:y.Children.map(r,l=>i.jsx(Mr,{present:n||o.open,children:i.jsx(Ih,{asChild:!0,container:s,children:l})}))})};CM.displayName=gx;var Vp="DialogOverlay",EM=y.forwardRef((e,t)=>{const n=SM(Vp,e.__scopeDialog),{forceMount:r=n.forceMount,...s}=e,o=Ps(Vp,e.__scopeDialog);return o.modal?i.jsx(Mr,{present:r||o.open,children:i.jsx(c5,{...s,ref:t})}):null});EM.displayName=Vp;var c5=y.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,s=Ps(Vp,n);return i.jsx(Lh,{as:No,allowPinchZoom:!0,shards:[s.contentRef],children:i.jsx(rt.div,{"data-state":vx(s.open),...r,ref:t,style:{pointerEvents:"auto",...r.style}})})}),ji="DialogContent",kM=y.forwardRef((e,t)=>{const n=SM(ji,e.__scopeDialog),{forceMount:r=n.forceMount,...s}=e,o=Ps(ji,e.__scopeDialog);return i.jsx(Mr,{present:r||o.open,children:o.modal?i.jsx(u5,{...s,ref:t}):i.jsx(d5,{...s,ref:t})})});kM.displayName=ji;var u5=y.forwardRef((e,t)=>{const n=Ps(ji,e.__scopeDialog),r=y.useRef(null),s=Rt(t,n.contentRef,r);return y.useEffect(()=>{const o=r.current;if(o)return nx(o)},[]),i.jsx(jM,{...e,ref:s,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:Ue(e.onCloseAutoFocus,o=>{o.preventDefault(),n.triggerRef.current?.focus()}),onPointerDownOutside:Ue(e.onPointerDownOutside,o=>{const l=o.detail.originalEvent,u=l.button===0&&l.ctrlKey===!0;(l.button===2||u)&&o.preventDefault()}),onFocusOutside:Ue(e.onFocusOutside,o=>o.preventDefault())})}),d5=y.forwardRef((e,t)=>{const n=Ps(ji,e.__scopeDialog),r=y.useRef(!1),s=y.useRef(!1);return i.jsx(jM,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:o=>{e.onCloseAutoFocus?.(o),o.defaultPrevented||(r.current||n.triggerRef.current?.focus(),o.preventDefault()),r.current=!1,s.current=!1},onInteractOutside:o=>{e.onInteractOutside?.(o),o.defaultPrevented||(r.current=!0,o.detail.originalEvent.type==="pointerdown"&&(s.current=!0));const l=o.target;n.triggerRef.current?.contains(l)&&o.preventDefault(),o.detail.originalEvent.type==="focusin"&&s.current&&o.preventDefault()}})}),jM=y.forwardRef((e,t)=>{const{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:s,onCloseAutoFocus:o,...l}=e,u=Ps(ji,n),d=y.useRef(null),f=Rt(t,d);return Wb(),i.jsxs(i.Fragment,{children:[i.jsx(_h,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:s,onUnmountAutoFocus:o,children:i.jsx(Mh,{role:"dialog",id:u.contentId,"aria-describedby":u.descriptionId,"aria-labelledby":u.titleId,"data-state":vx(u.open),...l,ref:f,onDismiss:()=>u.onOpenChange(!1)})}),i.jsxs(i.Fragment,{children:[i.jsx(f5,{titleId:u.titleId}),i.jsx(h5,{contentRef:d,descriptionId:u.descriptionId})]})]})}),mx="DialogTitle",TM=y.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,s=Ps(mx,n);return i.jsx(rt.h2,{id:s.titleId,...r,ref:t})});TM.displayName=mx;var NM="DialogDescription",MM=y.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,s=Ps(NM,n);return i.jsx(rt.p,{id:s.descriptionId,...r,ref:t})});MM.displayName=NM;var _M="DialogClose",RM=y.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,s=Ps(_M,n);return i.jsx(rt.button,{type:"button",...r,ref:t,onClick:Ue(e.onClick,()=>s.onOpenChange(!1))})});RM.displayName=_M;function vx(e){return e?"open":"closed"}var PM="DialogTitleWarning",[Sie,OM]=_B(PM,{contentName:ji,titleName:mx,docsSlug:"dialog"}),f5=({titleId:e})=>{const t=OM(PM),n=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users. - -If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component. - -For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return y.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},p5="DialogDescriptionWarning",h5=({contentRef:e,descriptionId:t})=>{const r=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${OM(p5).contentName}}.`;return y.useEffect(()=>{const s=e.current?.getAttribute("aria-describedby");t&&s&&(document.getElementById(t)||console.warn(r))},[r,e,t]),null},g5=bM,m5=wM,v5=CM,IM=EM,AM=kM,DM=TM,FM=MM,LM=RM;const Pt=g5,Bt=m5,y5=v5,$M=LM,BM=y.forwardRef(({className:e,...t},n)=>i.jsx(IM,{ref:n,className:Ie("fixed inset-0 z-50 bg-background/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...t}));BM.displayName=IM.displayName;const Nt=y.forwardRef(({className:e,children:t,closeBtn:n=!0,...r},s)=>i.jsx(y5,{children:i.jsx(BM,{className:"fixed inset-0 grid place-items-center overflow-y-auto",children:i.jsxs(AM,{ref:s,className:Ie("relative z-50 grid w-full max-w-lg gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:m-4 sm:rounded-lg md:w-full",e),...r,children:[t,n&&i.jsxs(LM,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[i.jsx(qb,{className:"h-4 w-4"}),i.jsx("span",{className:"sr-only",children:"Close"})]})]})})}));Nt.displayName=AM.displayName;const Mt=({className:e,...t})=>i.jsx("div",{className:Ie("flex flex-col space-y-1.5 text-center sm:text-left",e),...t});Mt.displayName="DialogHeader";const Yt=({className:e,...t})=>i.jsx("div",{className:Ie("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),...t});Yt.displayName="DialogFooter";const zt=y.forwardRef(({className:e,...t},n)=>i.jsx(DM,{ref:n,className:Ie("text-lg font-semibold leading-none tracking-tight",e),...t}));zt.displayName=DM.displayName;const eo=y.forwardRef(({className:e,...t},n)=>i.jsx(FM,{ref:n,className:Ie("text-sm text-muted-foreground",e),...t}));eo.displayName=FM.displayName;function zM({instanceId:e}){const[t,n]=y.useState(!1),r=dn(),{theme:s}=tc(),o=()=>{Pj(),r("/manager/login")},l=()=>{r("/manager/")},{data:u}=vT({instanceId:e});return i.jsxs("header",{className:"flex items-center justify-between px-4 py-2",children:[i.jsx(Fu,{to:"/manager",onClick:l,className:"flex h-8 items-center gap-4",children:i.jsx("img",{src:s==="dark"?"https://evolution-api.com/files/evo/evolution-logo-white.svg":"https://evolution-api.com/files/evo/evolution-logo.svg",alt:"Logo",className:"h-full"})}),i.jsxs("div",{className:"flex items-center gap-4",children:[e&&i.jsx(Ei,{className:"h-8 w-8",children:i.jsx(ki,{src:u?.profilePicUrl||"/assets/images/evolution-logo.png",alt:u?.name})}),i.jsx(iM,{}),i.jsx(lM,{}),i.jsx(se,{onClick:()=>n(!0),variant:"destructive",size:"icon",children:i.jsx(eB,{size:"18"})})]}),t&&i.jsx(Pt,{onOpenChange:n,open:t,children:i.jsxs(Nt,{children:[i.jsx($M,{}),i.jsx(Mt,{children:"Deseja realmente sair?"}),i.jsx(Yt,{children:i.jsxs("div",{className:"flex items-center gap-4",children:[i.jsx(se,{onClick:()=>n(!1),size:"sm",variant:"outline",children:"Cancelar"}),i.jsx(se,{onClick:o,variant:"destructive",children:"Sair"})]})})]})})]})}const UM=y.createContext(null),ct=()=>{const e=y.useContext(UM);if(!e)throw new Error("useInstance must be used within an InstanceProvider");return e},VM=({children:e})=>{const t=ls(),[n,r]=y.useState(null),{data:s,refetch:o}=vT({instanceId:n});return y.useEffect(()=>{t.instanceId?r(t.instanceId):r(null)},[t]),i.jsx(UM.Provider,{value:{instance:s??null,reloadInstance:async()=>{await o()}},children:e})};var yx="Collapsible",[b5]=us(yx),[x5,bx]=b5(yx),HM=y.forwardRef((e,t)=>{const{__scopeCollapsible:n,open:r,defaultOpen:s,disabled:o,onOpenChange:l,...u}=e,[d=!1,f]=ya({prop:r,defaultProp:s,onChange:l});return i.jsx(x5,{scope:n,disabled:o,contentId:Es(),open:d,onOpenToggle:y.useCallback(()=>f(h=>!h),[f]),children:i.jsx(rt.div,{"data-state":wx(d),"data-disabled":o?"":void 0,...u,ref:t})})});HM.displayName=yx;var qM="CollapsibleTrigger",KM=y.forwardRef((e,t)=>{const{__scopeCollapsible:n,...r}=e,s=bx(qM,n);return i.jsx(rt.button,{type:"button","aria-controls":s.contentId,"aria-expanded":s.open||!1,"data-state":wx(s.open),"data-disabled":s.disabled?"":void 0,disabled:s.disabled,...r,ref:t,onClick:Ue(e.onClick,s.onOpenToggle)})});KM.displayName=qM;var xx="CollapsibleContent",WM=y.forwardRef((e,t)=>{const{forceMount:n,...r}=e,s=bx(xx,e.__scopeCollapsible);return i.jsx(Mr,{present:n||s.open,children:({present:o})=>i.jsx(w5,{...r,ref:t,present:o})})});WM.displayName=xx;var w5=y.forwardRef((e,t)=>{const{__scopeCollapsible:n,present:r,children:s,...o}=e,l=bx(xx,n),[u,d]=y.useState(r),f=y.useRef(null),h=Rt(t,f),m=y.useRef(0),g=m.current,x=y.useRef(0),b=x.current,w=l.open||u,C=y.useRef(w),k=y.useRef();return y.useEffect(()=>{const j=requestAnimationFrame(()=>C.current=!1);return()=>cancelAnimationFrame(j)},[]),Ln(()=>{const j=f.current;if(j){k.current=k.current||{transitionDuration:j.style.transitionDuration,animationName:j.style.animationName},j.style.transitionDuration="0s",j.style.animationName="none";const M=j.getBoundingClientRect();m.current=M.height,x.current=M.width,C.current||(j.style.transitionDuration=k.current.transitionDuration,j.style.animationName=k.current.animationName),d(r)}},[l.open,r]),i.jsx(rt.div,{"data-state":wx(l.open),"data-disabled":l.disabled?"":void 0,id:l.contentId,hidden:!w,...o,ref:h,style:{"--radix-collapsible-content-height":g?`${g}px`:void 0,"--radix-collapsible-content-width":b?`${b}px`:void 0,...e.style},children:w&&s})});function wx(e){return e?"open":"closed"}var S5=HM;const C5=S5,E5=KM,k5=WM;function j5(){const{t:e}=Ve(),t=y.useMemo(()=>[{id:"dashboard",title:e("sidebar.dashboard"),icon:pB,path:"dashboard"},{id:"chat",title:e("sidebar.chat"),icon:Bl,path:"chat"},{navLabel:!0,title:e("sidebar.configurations"),icon:Oo,children:[{id:"settings",title:e("sidebar.settings"),path:"settings"},{id:"proxy",title:e("sidebar.proxy"),path:"proxy"}]},{title:e("sidebar.events"),icon:dB,children:[{id:"webhook",title:e("sidebar.webhook"),path:"webhook"},{id:"websocket",title:e("sidebar.websocket"),path:"websocket"},{id:"rabbitmq",title:e("sidebar.rabbitmq"),path:"rabbitmq"},{id:"sqs",title:e("sidebar.sqs"),path:"sqs"}]},{title:e("sidebar.integrations"),icon:mT,children:[{id:"evoai",title:e("sidebar.evoai"),path:"evoai"},{id:"n8n",title:e("sidebar.n8n"),path:"n8n"},{id:"evolutionBot",title:e("sidebar.evolutionBot"),path:"evolutionBot"},{id:"chatwoot",title:e("sidebar.chatwoot"),path:"chatwoot"},{id:"typebot",title:e("sidebar.typebot"),path:"typebot"},{id:"openai",title:e("sidebar.openai"),path:"openai"},{id:"dify",title:e("sidebar.dify"),path:"dify"},{id:"flowise",title:e("sidebar.flowise"),path:"flowise"}]},{id:"documentation",title:e("sidebar.documentation"),icon:sB,link:"https://doc.evolution-api.com",divider:!0},{id:"postman",title:e("sidebar.postman"),icon:Q$,link:"https://evolution-api.com/postman"},{id:"discord",title:e("sidebar.discord"),icon:Bl,link:"https://evolution-api.com/discord"},{id:"support-premium",title:e("sidebar.supportPremium"),icon:hB,link:"https://evolution-api.com/suporte-pro"}],[e]),n=dn(),{pathname:r}=Pi(),{instance:s}=ct(),o=u=>{!u||!s||(u.path&&n(`/manager/instance/${s.id}/${u.path}`),u.link&&window.open(u.link,"_blank"))},l=y.useMemo(()=>t.map(u=>({...u,children:"children"in u?u.children?.map(d=>({...d,isActive:"path"in d?r.includes(d.path):!1})):void 0,isActive:"path"in u&&u.path?r.includes(u.path):!1})).map(u=>({...u,isActive:u.isActive||"children"in u&&u.children?.some(d=>d.isActive)})),[t,r]);return i.jsx("ul",{className:"flex h-full w-full flex-col gap-2 border-r border-border px-2",children:l.map(u=>i.jsx("li",{className:"divider"in u?"mt-auto":void 0,children:u.children?i.jsxs(C5,{defaultOpen:u.isActive,children:[i.jsx(E5,{asChild:!0,children:i.jsxs(se,{className:Ie("flex w-full items-center justify-start gap-2"),variant:u.isActive?"secondary":"link",children:[u.icon&&i.jsx(u.icon,{size:"15"}),i.jsx("span",{children:u.title}),i.jsx(Nh,{size:"15",className:"ml-auto"})]})}),i.jsx(k5,{children:i.jsx("ul",{className:"my-4 ml-6 flex flex-col gap-2 text-sm",children:u.children.map(d=>i.jsx("li",{children:i.jsx("button",{onClick:()=>o(d),className:Ie(d.isActive?"text-foreground":"text-muted-foreground"),children:i.jsx("span",{className:"nav-label",children:d.title})})},d.id))})})]}):i.jsxs(se,{className:Ie("relative flex w-full items-center justify-start gap-2",u.isActive&&"pointer-events-none"),variant:u.isActive?"secondary":"link",children:["link"in u&&i.jsx("a",{href:u.link,target:"_blank",rel:"noreferrer",className:"absolute inset-0 h-full w-full"}),"path"in u&&i.jsx(Fu,{to:`/manager/instance/${s?.id}/${u.path}`,className:"absolute inset-0 h-full w-full"}),u.icon&&i.jsx(u.icon,{size:"15"}),i.jsx("span",{children:u.title})]})},u.title))})}function Ky(e,[t,n]){return Math.min(n,Math.max(t,e))}function T5(e,t){return y.useReducer((n,r)=>t[n][r]??n,e)}var Sx="ScrollArea",[GM]=us(Sx),[N5,ds]=GM(Sx),JM=y.forwardRef((e,t)=>{const{__scopeScrollArea:n,type:r="hover",dir:s,scrollHideDelay:o=600,...l}=e,[u,d]=y.useState(null),[f,h]=y.useState(null),[m,g]=y.useState(null),[x,b]=y.useState(null),[w,C]=y.useState(null),[k,j]=y.useState(0),[M,_]=y.useState(0),[R,N]=y.useState(!1),[O,D]=y.useState(!1),z=Rt(t,pe=>d(pe)),Q=xd(s);return i.jsx(N5,{scope:n,type:r,dir:Q,scrollHideDelay:o,scrollArea:u,viewport:f,onViewportChange:h,content:m,onContentChange:g,scrollbarX:x,onScrollbarXChange:b,scrollbarXEnabled:R,onScrollbarXEnabledChange:N,scrollbarY:w,onScrollbarYChange:C,scrollbarYEnabled:O,onScrollbarYEnabledChange:D,onCornerWidthChange:j,onCornerHeightChange:_,children:i.jsx(rt.div,{dir:Q,...l,ref:z,style:{position:"relative","--radix-scroll-area-corner-width":k+"px","--radix-scroll-area-corner-height":M+"px",...e.style}})})});JM.displayName=Sx;var QM="ScrollAreaViewport",ZM=y.forwardRef((e,t)=>{const{__scopeScrollArea:n,children:r,nonce:s,...o}=e,l=ds(QM,n),u=y.useRef(null),d=Rt(t,u,l.onViewportChange);return i.jsxs(i.Fragment,{children:[i.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:s}),i.jsx(rt.div,{"data-radix-scroll-area-viewport":"",...o,ref:d,style:{overflowX:l.scrollbarXEnabled?"scroll":"hidden",overflowY:l.scrollbarYEnabled?"scroll":"hidden",...e.style},children:i.jsx("div",{ref:l.onContentChange,style:{minWidth:"100%",display:"table"},children:r})})]})});ZM.displayName=QM;var to="ScrollAreaScrollbar",Cx=y.forwardRef((e,t)=>{const{forceMount:n,...r}=e,s=ds(to,e.__scopeScrollArea),{onScrollbarXEnabledChange:o,onScrollbarYEnabledChange:l}=s,u=e.orientation==="horizontal";return y.useEffect(()=>(u?o(!0):l(!0),()=>{u?o(!1):l(!1)}),[u,o,l]),s.type==="hover"?i.jsx(M5,{...r,ref:t,forceMount:n}):s.type==="scroll"?i.jsx(_5,{...r,ref:t,forceMount:n}):s.type==="auto"?i.jsx(YM,{...r,ref:t,forceMount:n}):s.type==="always"?i.jsx(Ex,{...r,ref:t}):null});Cx.displayName=to;var M5=y.forwardRef((e,t)=>{const{forceMount:n,...r}=e,s=ds(to,e.__scopeScrollArea),[o,l]=y.useState(!1);return y.useEffect(()=>{const u=s.scrollArea;let d=0;if(u){const f=()=>{window.clearTimeout(d),l(!0)},h=()=>{d=window.setTimeout(()=>l(!1),s.scrollHideDelay)};return u.addEventListener("pointerenter",f),u.addEventListener("pointerleave",h),()=>{window.clearTimeout(d),u.removeEventListener("pointerenter",f),u.removeEventListener("pointerleave",h)}}},[s.scrollArea,s.scrollHideDelay]),i.jsx(Mr,{present:n||o,children:i.jsx(YM,{"data-state":o?"visible":"hidden",...r,ref:t})})}),_5=y.forwardRef((e,t)=>{const{forceMount:n,...r}=e,s=ds(to,e.__scopeScrollArea),o=e.orientation==="horizontal",l=Uh(()=>d("SCROLL_END"),100),[u,d]=T5("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}});return y.useEffect(()=>{if(u==="idle"){const f=window.setTimeout(()=>d("HIDE"),s.scrollHideDelay);return()=>window.clearTimeout(f)}},[u,s.scrollHideDelay,d]),y.useEffect(()=>{const f=s.viewport,h=o?"scrollLeft":"scrollTop";if(f){let m=f[h];const g=()=>{const x=f[h];m!==x&&(d("SCROLL"),l()),m=x};return f.addEventListener("scroll",g),()=>f.removeEventListener("scroll",g)}},[s.viewport,o,d,l]),i.jsx(Mr,{present:n||u!=="hidden",children:i.jsx(Ex,{"data-state":u==="hidden"?"hidden":"visible",...r,ref:t,onPointerEnter:Ue(e.onPointerEnter,()=>d("POINTER_ENTER")),onPointerLeave:Ue(e.onPointerLeave,()=>d("POINTER_LEAVE"))})})}),YM=y.forwardRef((e,t)=>{const n=ds(to,e.__scopeScrollArea),{forceMount:r,...s}=e,[o,l]=y.useState(!1),u=e.orientation==="horizontal",d=Uh(()=>{if(n.viewport){const f=n.viewport.offsetWidth{const{orientation:n="vertical",...r}=e,s=ds(to,e.__scopeScrollArea),o=y.useRef(null),l=y.useRef(0),[u,d]=y.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),f=r_(u.viewport,u.content),h={...r,sizes:u,onSizesChange:d,hasThumb:f>0&&f<1,onThumbChange:g=>o.current=g,onThumbPointerUp:()=>l.current=0,onThumbPointerDown:g=>l.current=g};function m(g,x){return D5(g,l.current,u,x)}return n==="horizontal"?i.jsx(R5,{...h,ref:t,onThumbPositionChange:()=>{if(s.viewport&&o.current){const g=s.viewport.scrollLeft,x=p1(g,u,s.dir);o.current.style.transform=`translate3d(${x}px, 0, 0)`}},onWheelScroll:g=>{s.viewport&&(s.viewport.scrollLeft=g)},onDragScroll:g=>{s.viewport&&(s.viewport.scrollLeft=m(g,s.dir))}}):n==="vertical"?i.jsx(P5,{...h,ref:t,onThumbPositionChange:()=>{if(s.viewport&&o.current){const g=s.viewport.scrollTop,x=p1(g,u);o.current.style.transform=`translate3d(0, ${x}px, 0)`}},onWheelScroll:g=>{s.viewport&&(s.viewport.scrollTop=g)},onDragScroll:g=>{s.viewport&&(s.viewport.scrollTop=m(g))}}):null}),R5=y.forwardRef((e,t)=>{const{sizes:n,onSizesChange:r,...s}=e,o=ds(to,e.__scopeScrollArea),[l,u]=y.useState(),d=y.useRef(null),f=Rt(t,d,o.onScrollbarXChange);return y.useEffect(()=>{d.current&&u(getComputedStyle(d.current))},[d]),i.jsx(e_,{"data-orientation":"horizontal",...s,ref:f,sizes:n,style:{bottom:0,left:o.dir==="rtl"?"var(--radix-scroll-area-corner-width)":0,right:o.dir==="ltr"?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":zh(n)+"px",...e.style},onThumbPointerDown:h=>e.onThumbPointerDown(h.x),onDragScroll:h=>e.onDragScroll(h.x),onWheelScroll:(h,m)=>{if(o.viewport){const g=o.viewport.scrollLeft+h.deltaX;e.onWheelScroll(g),o_(g,m)&&h.preventDefault()}},onResize:()=>{d.current&&o.viewport&&l&&r({content:o.viewport.scrollWidth,viewport:o.viewport.offsetWidth,scrollbar:{size:d.current.clientWidth,paddingStart:qp(l.paddingLeft),paddingEnd:qp(l.paddingRight)}})}})}),P5=y.forwardRef((e,t)=>{const{sizes:n,onSizesChange:r,...s}=e,o=ds(to,e.__scopeScrollArea),[l,u]=y.useState(),d=y.useRef(null),f=Rt(t,d,o.onScrollbarYChange);return y.useEffect(()=>{d.current&&u(getComputedStyle(d.current))},[d]),i.jsx(e_,{"data-orientation":"vertical",...s,ref:f,sizes:n,style:{top:0,right:o.dir==="ltr"?0:void 0,left:o.dir==="rtl"?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":zh(n)+"px",...e.style},onThumbPointerDown:h=>e.onThumbPointerDown(h.y),onDragScroll:h=>e.onDragScroll(h.y),onWheelScroll:(h,m)=>{if(o.viewport){const g=o.viewport.scrollTop+h.deltaY;e.onWheelScroll(g),o_(g,m)&&h.preventDefault()}},onResize:()=>{d.current&&o.viewport&&l&&r({content:o.viewport.scrollHeight,viewport:o.viewport.offsetHeight,scrollbar:{size:d.current.clientHeight,paddingStart:qp(l.paddingTop),paddingEnd:qp(l.paddingBottom)}})}})}),[O5,XM]=GM(to),e_=y.forwardRef((e,t)=>{const{__scopeScrollArea:n,sizes:r,hasThumb:s,onThumbChange:o,onThumbPointerUp:l,onThumbPointerDown:u,onThumbPositionChange:d,onDragScroll:f,onWheelScroll:h,onResize:m,...g}=e,x=ds(to,n),[b,w]=y.useState(null),C=Rt(t,z=>w(z)),k=y.useRef(null),j=y.useRef(""),M=x.viewport,_=r.content-r.viewport,R=Rn(h),N=Rn(d),O=Uh(m,10);function D(z){if(k.current){const Q=z.clientX-k.current.left,pe=z.clientY-k.current.top;f({x:Q,y:pe})}}return y.useEffect(()=>{const z=Q=>{const pe=Q.target;b?.contains(pe)&&R(Q,_)};return document.addEventListener("wheel",z,{passive:!1}),()=>document.removeEventListener("wheel",z,{passive:!1})},[M,b,_,R]),y.useEffect(N,[r,N]),Ul(b,O),Ul(x.content,O),i.jsx(O5,{scope:n,scrollbar:b,hasThumb:s,onThumbChange:Rn(o),onThumbPointerUp:Rn(l),onThumbPositionChange:N,onThumbPointerDown:Rn(u),children:i.jsx(rt.div,{...g,ref:C,style:{position:"absolute",...g.style},onPointerDown:Ue(e.onPointerDown,z=>{z.button===0&&(z.target.setPointerCapture(z.pointerId),k.current=b.getBoundingClientRect(),j.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",x.viewport&&(x.viewport.style.scrollBehavior="auto"),D(z))}),onPointerMove:Ue(e.onPointerMove,D),onPointerUp:Ue(e.onPointerUp,z=>{const Q=z.target;Q.hasPointerCapture(z.pointerId)&&Q.releasePointerCapture(z.pointerId),document.body.style.webkitUserSelect=j.current,x.viewport&&(x.viewport.style.scrollBehavior=""),k.current=null})})})}),Hp="ScrollAreaThumb",t_=y.forwardRef((e,t)=>{const{forceMount:n,...r}=e,s=XM(Hp,e.__scopeScrollArea);return i.jsx(Mr,{present:n||s.hasThumb,children:i.jsx(I5,{ref:t,...r})})}),I5=y.forwardRef((e,t)=>{const{__scopeScrollArea:n,style:r,...s}=e,o=ds(Hp,n),l=XM(Hp,n),{onThumbPositionChange:u}=l,d=Rt(t,m=>l.onThumbChange(m)),f=y.useRef(),h=Uh(()=>{f.current&&(f.current(),f.current=void 0)},100);return y.useEffect(()=>{const m=o.viewport;if(m){const g=()=>{if(h(),!f.current){const x=F5(m,u);f.current=x,u()}};return u(),m.addEventListener("scroll",g),()=>m.removeEventListener("scroll",g)}},[o.viewport,h,u]),i.jsx(rt.div,{"data-state":l.hasThumb?"visible":"hidden",...s,ref:d,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...r},onPointerDownCapture:Ue(e.onPointerDownCapture,m=>{const x=m.target.getBoundingClientRect(),b=m.clientX-x.left,w=m.clientY-x.top;l.onThumbPointerDown({x:b,y:w})}),onPointerUp:Ue(e.onPointerUp,l.onThumbPointerUp)})});t_.displayName=Hp;var kx="ScrollAreaCorner",n_=y.forwardRef((e,t)=>{const n=ds(kx,e.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!=="scroll"&&r?i.jsx(A5,{...e,ref:t}):null});n_.displayName=kx;var A5=y.forwardRef((e,t)=>{const{__scopeScrollArea:n,...r}=e,s=ds(kx,n),[o,l]=y.useState(0),[u,d]=y.useState(0),f=!!(o&&u);return Ul(s.scrollbarX,()=>{const h=s.scrollbarX?.offsetHeight||0;s.onCornerHeightChange(h),d(h)}),Ul(s.scrollbarY,()=>{const h=s.scrollbarY?.offsetWidth||0;s.onCornerWidthChange(h),l(h)}),f?i.jsx(rt.div,{...r,ref:t,style:{width:o,height:u,position:"absolute",right:s.dir==="ltr"?0:void 0,left:s.dir==="rtl"?0:void 0,bottom:0,...e.style}}):null});function qp(e){return e?parseInt(e,10):0}function r_(e,t){const n=e/t;return isNaN(n)?0:n}function zh(e){const t=r_(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}function D5(e,t,n,r="ltr"){const s=zh(n),o=s/2,l=t||o,u=s-l,d=n.scrollbar.paddingStart+l,f=n.scrollbar.size-n.scrollbar.paddingEnd-u,h=n.content-n.viewport,m=r==="ltr"?[0,h]:[h*-1,0];return s_([d,f],m)(e)}function p1(e,t,n="ltr"){const r=zh(t),s=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,o=t.scrollbar.size-s,l=t.content-t.viewport,u=o-r,d=n==="ltr"?[0,l]:[l*-1,0],f=Ky(e,d);return s_([0,l],[0,u])(f)}function s_(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];const r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}function o_(e,t){return e>0&&e{})=>{let n={left:e.scrollLeft,top:e.scrollTop},r=0;return(function s(){const o={left:e.scrollLeft,top:e.scrollTop},l=n.left!==o.left,u=n.top!==o.top;(l||u)&&t(),n=o,r=window.requestAnimationFrame(s)})(),()=>window.cancelAnimationFrame(r)};function Uh(e,t){const n=Rn(e),r=y.useRef(0);return y.useEffect(()=>()=>window.clearTimeout(r.current),[]),y.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}function Ul(e,t){const n=Rn(t);Ln(()=>{let r=0;if(e){const s=new ResizeObserver(()=>{cancelAnimationFrame(r),r=window.requestAnimationFrame(n)});return s.observe(e),()=>{window.cancelAnimationFrame(r),s.unobserve(e)}}},[e,n])}var a_=JM,L5=ZM,$5=n_;const Wy=y.forwardRef(({className:e,children:t,...n},r)=>i.jsxs(a_,{ref:r,className:Ie("relative overflow-hidden",e),...n,children:[i.jsx(L5,{className:"h-full w-full rounded-[inherit] [&>div[style]]:!block [&>div[style]]:h-full",children:t}),i.jsx(i_,{}),i.jsx($5,{})]}));Wy.displayName=a_.displayName;const i_=y.forwardRef(({className:e,orientation:t="vertical",...n},r)=>i.jsx(Cx,{ref:r,orientation:t,className:Ie("flex touch-none select-none transition-colors",t==="vertical"&&"h-full w-2.5 border-l border-l-transparent p-[1px]",t==="horizontal"&&"h-2.5 border-t border-t-transparent p-[1px]",e),...n,children:i.jsx(t_,{className:Ie("relative rounded-full bg-border",t==="vertical"&&"flex-1")})}));i_.displayName=Cx.displayName;function un({children:e}){const{instanceId:t}=ls();return i.jsx(VM,{children:i.jsxs("div",{className:"flex h-screen flex-col",children:[i.jsx(zM,{instanceId:t}),i.jsxs("div",{className:"flex min-h-[calc(100vh_-_56px)] flex-1 flex-col md:flex-row",children:[i.jsx(Wy,{className:"mr-2 py-6 md:w-64",children:i.jsx("div",{className:"flex h-full",children:i.jsx(j5,{})})}),i.jsx(Wy,{className:"w-full",children:i.jsxs("div",{className:"flex h-full flex-col",children:[i.jsx("div",{className:"my-2 flex flex-1 flex-col gap-2 pl-2 pr-4",children:e}),i.jsx(Vb,{})]})})]})]})})}function B5({children:e}){return i.jsxs("div",{className:"flex h-full min-h-screen flex-col",children:[i.jsx(zM,{}),i.jsx("main",{className:"flex-1",children:e}),i.jsx(Vb,{})]})}const z5=jh("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",outline:"text-foreground",warning:"border-transparent bg-amber-600 text-amber-100 hover:bg-amber-600/80"}},defaultVariants:{variant:"default"}});function vu({className:e,variant:t,...n}){return i.jsx("div",{className:Ie(z5({variant:t}),e),...n})}function l_({status:e}){const{t}=Ve();return e?e==="open"?i.jsx(vu,{children:t("status.open")}):e==="connecting"?i.jsx(vu,{variant:"warning",children:t("status.connecting")}):e==="close"||e==="closed"?i.jsx(vu,{variant:"destructive",children:t("status.closed")}):i.jsx(vu,{variant:"secondary",children:e}):null}const U5=e=>{navigator.clipboard.writeText(e),me.success("Copiado para a área de transferência")};function c_({token:e,className:t}){const[n,r]=y.useState(!1);return i.jsxs("div",{className:Ie("flex items-center gap-3 truncate rounded-sm bg-primary/20 px-2 py-1",t),children:[i.jsx("pre",{className:"block truncate text-xs",children:n?e:e?.replace(/\w/g,"*")}),i.jsx(se,{variant:"ghost",size:"icon",onClick:()=>{U5(e)},children:i.jsx(X$,{size:"15"})}),i.jsx(se,{variant:"ghost",size:"icon",onClick:()=>{r(s=>!s)},children:n?i.jsx(tB,{size:"15"}):i.jsx(nB,{size:"15"})})]})}const So=y.forwardRef(({className:e,...t},n)=>i.jsx("div",{ref:n,className:Ie("flex flex-col rounded-lg border bg-card text-card-foreground shadow-sm",e),...t}));So.displayName="Card";const Co=y.forwardRef(({className:e,...t},n)=>i.jsx("div",{ref:n,className:Ie("flex flex-col space-y-1.5 p-6",e),...t}));Co.displayName="CardHeader";const gi=y.forwardRef(({className:e,...t},n)=>i.jsx("h3",{ref:n,className:Ie("text-2xl font-semibold leading-none tracking-tight",e),...t}));gi.displayName="CardTitle";const Kp=y.forwardRef(({className:e,...t},n)=>i.jsx("p",{ref:n,className:Ie("text-sm text-muted-foreground",e),...t}));Kp.displayName="CardDescription";const Eo=y.forwardRef(({className:e,...t},n)=>i.jsx("div",{ref:n,className:Ie("p-6 pt-0",e),...t}));Eo.displayName="CardContent";const Vh=y.forwardRef(({className:e,...t},n)=>i.jsx("div",{ref:n,className:Ie("flex items-center p-6 pt-0",e),...t}));Vh.displayName="CardFooter";const u_="flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",ne=y.forwardRef(({className:e,type:t,...n},r)=>i.jsx("input",{type:t,className:Ie(u_,e),ref:r,...n}));ne.displayName="Input";const V5=["instance","fetchInstances"],H5=async()=>(await bd.get("/instance/fetchInstances")).data,q5=e=>mt({...e,queryKey:V5,queryFn:()=>H5()});function nt(e,t){const n=Ob(),r=cF({mutationFn:e});return(s,o)=>r.mutateAsync(s,{onSuccess:async(l,u,d)=>{t?.invalidateKeys&&await Promise.all(t.invalidateKeys.map(f=>n.invalidateQueries({queryKey:f}))),o?.onSuccess?.(l,u,d)},onError(l,u,d){o?.onError?.(l,u,d)},onSettled(l,u,d,f){o?.onSettled?.(l,u,d,f)}})}const K5=async e=>(await bd.post("/instance/create",e)).data,W5=async e=>(await Ee.post(`/instance/restart/${e}`)).data,G5=async e=>(await Ee.delete(`/instance/logout/${e}`)).data,J5=async e=>(await bd.delete(`/instance/delete/${e}`)).data,Q5=async({instanceName:e,token:t,number:n})=>(await Ee.get(`/instance/connect/${e}`,{headers:{apikey:t},params:{number:n}})).data,Z5=async({instanceName:e,token:t,data:n})=>(await Ee.post(`/settings/set/${e}`,n,{headers:{apikey:t}})).data;function Hh(){const e=nt(Q5,{invalidateKeys:[["instance","fetchInstance"],["instance","fetchInstances"]]}),t=nt(Z5,{invalidateKeys:[["instance","fetchSettings"]]}),n=nt(J5,{invalidateKeys:[["instance","fetchInstance"],["instance","fetchInstances"]]}),r=nt(G5,{invalidateKeys:[["instance","fetchInstance"],["instance","fetchInstances"]]}),s=nt(W5,{invalidateKeys:[["instance","fetchInstance"],["instance","fetchInstances"]]}),o=nt(K5,{invalidateKeys:[["instance","fetchInstances"]]});return{connect:e,updateSettings:t,deleteInstance:n,logout:r,restart:s,createInstance:o}}var Ed=e=>e.type==="checkbox",Tl=e=>e instanceof Date,cr=e=>e==null;const d_=e=>typeof e=="object";var $n=e=>!cr(e)&&!Array.isArray(e)&&d_(e)&&!Tl(e),f_=e=>$n(e)&&e.target?Ed(e.target)?e.target.checked:e.target.value:e,Y5=e=>e.substring(0,e.search(/\.\d+(\.|$)/))||e,p_=(e,t)=>e.has(Y5(t)),X5=e=>{const t=e.constructor&&e.constructor.prototype;return $n(t)&&t.hasOwnProperty("isPrototypeOf")},jx=typeof window<"u"&&typeof window.HTMLElement<"u"&&typeof document<"u";function Er(e){let t;const n=Array.isArray(e);if(e instanceof Date)t=new Date(e);else if(e instanceof Set)t=new Set(e);else if(!(jx&&(e instanceof Blob||e instanceof FileList))&&(n||$n(e)))if(t=n?[]:{},!n&&!X5(e))t=e;else for(const r in e)e.hasOwnProperty(r)&&(t[r]=Er(e[r]));else return e;return t}var qh=e=>Array.isArray(e)?e.filter(Boolean):[],wn=e=>e===void 0,_e=(e,t,n)=>{if(!t||!$n(e))return n;const r=qh(t.split(/[,[\].]+?/)).reduce((s,o)=>cr(s)?s:s[o],e);return wn(r)||r===e?wn(e[t])?n:e[t]:r},Us=e=>typeof e=="boolean",Tx=e=>/^\w*$/.test(e),h_=e=>qh(e.replace(/["|']|\]/g,"").split(/\.|\[/)),qt=(e,t,n)=>{let r=-1;const s=Tx(t)?[t]:h_(t),o=s.length,l=o-1;for(;++rqe.useContext(g_),Gn=e=>{const{children:t,...n}=e;return qe.createElement(g_.Provider,{value:n},t)};var m_=(e,t,n,r=!0)=>{const s={defaultValues:t._defaultValues};for(const o in e)Object.defineProperty(s,o,{get:()=>{const l=o;return t._proxyFormState[l]!==Ss.all&&(t._proxyFormState[l]=!r||Ss.all),n&&(n[l]=!0),e[l]}});return s},Lr=e=>$n(e)&&!Object.keys(e).length,v_=(e,t,n,r)=>{n(e);const{name:s,...o}=e;return Lr(o)||Object.keys(o).length>=Object.keys(t).length||Object.keys(o).find(l=>t[l]===(!r||Ss.all))},ju=e=>Array.isArray(e)?e:[e],y_=(e,t,n)=>!e||!t||e===t||ju(e).some(r=>r&&(n?r===t:r.startsWith(t)||t.startsWith(r)));function Nx(e){const t=qe.useRef(e);t.current=e,qe.useEffect(()=>{const n=!e.disabled&&t.current.subject&&t.current.subject.subscribe({next:t.current.next});return()=>{n&&n.unsubscribe()}},[e.disabled])}function e6(e){const t=Kh(),{control:n=t.control,disabled:r,name:s,exact:o}=e||{},[l,u]=qe.useState(n._formState),d=qe.useRef(!0),f=qe.useRef({isDirty:!1,isLoading:!1,dirtyFields:!1,touchedFields:!1,validatingFields:!1,isValidating:!1,isValid:!1,errors:!1}),h=qe.useRef(s);return h.current=s,Nx({disabled:r,next:m=>d.current&&y_(h.current,m.name,o)&&v_(m,f.current,n._updateFormState)&&u({...n._formState,...m}),subject:n._subjects.state}),qe.useEffect(()=>(d.current=!0,f.current.isValid&&n._updateValid(!0),()=>{d.current=!1}),[n]),m_(l,n,f.current,!1)}var qs=e=>typeof e=="string",b_=(e,t,n,r,s)=>qs(e)?(r&&t.watch.add(e),_e(n,e,s)):Array.isArray(e)?e.map(o=>(r&&t.watch.add(o),_e(n,o))):(r&&(t.watchAll=!0),n);function t6(e){const t=Kh(),{control:n=t.control,name:r,defaultValue:s,disabled:o,exact:l}=e||{},u=qe.useRef(r);u.current=r,Nx({disabled:o,subject:n._subjects.values,next:h=>{y_(u.current,h.name,l)&&f(Er(b_(u.current,n._names,h.values||n._formValues,!1,s)))}});const[d,f]=qe.useState(n._getWatch(r,s));return qe.useEffect(()=>n._removeUnmounted()),d}function n6(e){const t=Kh(),{name:n,disabled:r,control:s=t.control,shouldUnregister:o}=e,l=p_(s._names.array,n),u=t6({control:s,name:n,defaultValue:_e(s._formValues,n,_e(s._defaultValues,n,e.defaultValue)),exact:!0}),d=e6({control:s,name:n}),f=qe.useRef(s.register(n,{...e.rules,value:u,...Us(e.disabled)?{disabled:e.disabled}:{}}));return qe.useEffect(()=>{const h=s._options.shouldUnregister||o,m=(g,x)=>{const b=_e(s._fields,g);b&&b._f&&(b._f.mount=x)};if(m(n,!0),h){const g=Er(_e(s._options.defaultValues,n));qt(s._defaultValues,n,g),wn(_e(s._formValues,n))&&qt(s._formValues,n,g)}return()=>{(l?h&&!s._state.action:h)?s.unregister(n):m(n,!1)}},[n,s,l,o]),qe.useEffect(()=>{_e(s._fields,n)&&s._updateDisabledField({disabled:r,fields:s._fields,name:n,value:_e(s._fields,n)._f.value})},[r,n,s]),{field:{name:n,value:u,...Us(r)||d.disabled?{disabled:d.disabled||r}:{},onChange:qe.useCallback(h=>f.current.onChange({target:{value:f_(h),name:n},type:Wp.CHANGE}),[n]),onBlur:qe.useCallback(()=>f.current.onBlur({target:{value:_e(s._formValues,n),name:n},type:Wp.BLUR}),[n,s]),ref:h=>{const m=_e(s._fields,n);m&&h&&(m._f.ref={focus:()=>h.focus(),select:()=>h.select(),setCustomValidity:g=>h.setCustomValidity(g),reportValidity:()=>h.reportValidity()})}},formState:d,fieldState:Object.defineProperties({},{invalid:{enumerable:!0,get:()=>!!_e(d.errors,n)},isDirty:{enumerable:!0,get:()=>!!_e(d.dirtyFields,n)},isTouched:{enumerable:!0,get:()=>!!_e(d.touchedFields,n)},isValidating:{enumerable:!0,get:()=>!!_e(d.validatingFields,n)},error:{enumerable:!0,get:()=>_e(d.errors,n)}})}}const r6=e=>e.render(n6(e));var x_=(e,t,n,r,s)=>t?{...n[e],types:{...n[e]&&n[e].types?n[e].types:{},[r]:s||!0}}:{},h1=e=>({isOnSubmit:!e||e===Ss.onSubmit,isOnBlur:e===Ss.onBlur,isOnChange:e===Ss.onChange,isOnAll:e===Ss.all,isOnTouch:e===Ss.onTouched}),g1=(e,t,n)=>!n&&(t.watchAll||t.watch.has(e)||[...t.watch].some(r=>e.startsWith(r)&&/^\.\w+/.test(e.slice(r.length))));const Tu=(e,t,n,r)=>{for(const s of n||Object.keys(e)){const o=_e(e,s);if(o){const{_f:l,...u}=o;if(l){if(l.refs&&l.refs[0]&&t(l.refs[0],s)&&!r)break;if(l.ref&&t(l.ref,l.name)&&!r)break;Tu(u,t)}else $n(u)&&Tu(u,t)}}};var s6=(e,t,n)=>{const r=ju(_e(e,n));return qt(r,"root",t[n]),qt(e,n,r),e},Mx=e=>e.type==="file",ga=e=>typeof e=="function",Gp=e=>{if(!jx)return!1;const t=e?e.ownerDocument:0;return e instanceof(t&&t.defaultView?t.defaultView.HTMLElement:HTMLElement)},vp=e=>qs(e),_x=e=>e.type==="radio",Jp=e=>e instanceof RegExp;const m1={value:!1,isValid:!1},v1={value:!0,isValid:!0};var w_=e=>{if(Array.isArray(e)){if(e.length>1){const t=e.filter(n=>n&&n.checked&&!n.disabled).map(n=>n.value);return{value:t,isValid:!!t.length}}return e[0].checked&&!e[0].disabled?e[0].attributes&&!wn(e[0].attributes.value)?wn(e[0].value)||e[0].value===""?v1:{value:e[0].value,isValid:!0}:v1:m1}return m1};const y1={isValid:!1,value:null};var S_=e=>Array.isArray(e)?e.reduce((t,n)=>n&&n.checked&&!n.disabled?{isValid:!0,value:n.value}:t,y1):y1;function b1(e,t,n="validate"){if(vp(e)||Array.isArray(e)&&e.every(vp)||Us(e)&&!e)return{type:n,message:vp(e)?e:"",ref:t}}var ml=e=>$n(e)&&!Jp(e)?e:{value:e,message:""},x1=async(e,t,n,r,s)=>{const{ref:o,refs:l,required:u,maxLength:d,minLength:f,min:h,max:m,pattern:g,validate:x,name:b,valueAsNumber:w,mount:C,disabled:k}=e._f,j=_e(t,b);if(!C||k)return{};const M=l?l[0]:o,_=V=>{r&&M.reportValidity&&(M.setCustomValidity(Us(V)?"":V||""),M.reportValidity())},R={},N=_x(o),O=Ed(o),D=N||O,z=(w||Mx(o))&&wn(o.value)&&wn(j)||Gp(o)&&o.value===""||j===""||Array.isArray(j)&&!j.length,Q=x_.bind(null,b,n,R),pe=(V,G,W,ie=go.maxLength,re=go.minLength)=>{const Y=V?G:W;R[b]={type:V?ie:re,message:Y,ref:o,...Q(V?ie:re,Y)}};if(s?!Array.isArray(j)||!j.length:u&&(!D&&(z||cr(j))||Us(j)&&!j||O&&!w_(l).isValid||N&&!S_(l).isValid)){const{value:V,message:G}=vp(u)?{value:!!u,message:u}:ml(u);if(V&&(R[b]={type:go.required,message:G,ref:M,...Q(go.required,G)},!n))return _(G),R}if(!z&&(!cr(h)||!cr(m))){let V,G;const W=ml(m),ie=ml(h);if(!cr(j)&&!isNaN(j)){const re=o.valueAsNumber||j&&+j;cr(W.value)||(V=re>W.value),cr(ie.value)||(G=renew Date(new Date().toDateString()+" "+he),H=o.type=="time",q=o.type=="week";qs(W.value)&&j&&(V=H?Y(j)>Y(W.value):q?j>W.value:re>new Date(W.value)),qs(ie.value)&&j&&(G=H?Y(j)+V.value,ie=!cr(G.value)&&j.length<+G.value;if((W||ie)&&(pe(W,V.message,G.message),!n))return _(R[b].message),R}if(g&&!z&&qs(j)){const{value:V,message:G}=ml(g);if(Jp(V)&&!j.match(V)&&(R[b]={type:go.pattern,message:G,ref:o,...Q(go.pattern,G)},!n))return _(G),R}if(x){if(ga(x)){const V=await x(j,t),G=b1(V,M);if(G&&(R[b]={...G,...Q(go.validate,G.message)},!n))return _(G.message),R}else if($n(x)){let V={};for(const G in x){if(!Lr(V)&&!n)break;const W=b1(await x[G](j,t),M,G);W&&(V={...W,...Q(G,W.message)},_(W.message),n&&(R[b]=V))}if(!Lr(V)&&(R[b]={ref:M,...V},!n))return R}}return _(!0),R};function o6(e,t){const n=t.slice(0,-1).length;let r=0;for(;r{let e=[];return{get observers(){return e},next:s=>{for(const o of e)o.next&&o.next(s)},subscribe:s=>(e.push(s),{unsubscribe:()=>{e=e.filter(o=>o!==s)}}),unsubscribe:()=>{e=[]}}},Qp=e=>cr(e)||!d_(e);function ui(e,t){if(Qp(e)||Qp(t))return e===t;if(Tl(e)&&Tl(t))return e.getTime()===t.getTime();const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(const s of n){const o=e[s];if(!r.includes(s))return!1;if(s!=="ref"){const l=t[s];if(Tl(o)&&Tl(l)||$n(o)&&$n(l)||Array.isArray(o)&&Array.isArray(l)?!ui(o,l):o!==l)return!1}}return!0}var C_=e=>e.type==="select-multiple",i6=e=>_x(e)||Ed(e),_v=e=>Gp(e)&&e.isConnected,E_=e=>{for(const t in e)if(ga(e[t]))return!0;return!1};function Zp(e,t={}){const n=Array.isArray(e);if($n(e)||n)for(const r in e)Array.isArray(e[r])||$n(e[r])&&!E_(e[r])?(t[r]=Array.isArray(e[r])?[]:{},Zp(e[r],t[r])):cr(e[r])||(t[r]=!0);return t}function k_(e,t,n){const r=Array.isArray(e);if($n(e)||r)for(const s in e)Array.isArray(e[s])||$n(e[s])&&!E_(e[s])?wn(t)||Qp(n[s])?n[s]=Array.isArray(e[s])?Zp(e[s],[]):{...Zp(e[s])}:k_(e[s],cr(t)?{}:t[s],n[s]):n[s]=!ui(e[s],t[s]);return n}var Gf=(e,t)=>k_(e,t,Zp(t)),j_=(e,{valueAsNumber:t,valueAsDate:n,setValueAs:r})=>wn(e)?e:t?e===""?NaN:e&&+e:n&&qs(e)?new Date(e):r?r(e):e;function Rv(e){const t=e.ref;if(!(e.refs?e.refs.every(n=>n.disabled):t.disabled))return Mx(t)?t.files:_x(t)?S_(e.refs).value:C_(t)?[...t.selectedOptions].map(({value:n})=>n):Ed(t)?w_(e.refs).value:j_(wn(t.value)?e.ref.value:t.value,e)}var l6=(e,t,n,r)=>{const s={};for(const o of e){const l=_e(t,o);l&&qt(s,o,l._f)}return{criteriaMode:n,names:[...e],fields:s,shouldUseNativeValidation:r}},au=e=>wn(e)?e:Jp(e)?e.source:$n(e)?Jp(e.value)?e.value.source:e.value:e,c6=e=>e.mount&&(e.required||e.min||e.max||e.maxLength||e.minLength||e.pattern||e.validate);function w1(e,t,n){const r=_e(e,n);if(r||Tx(n))return{error:r,name:n};const s=n.split(".");for(;s.length;){const o=s.join("."),l=_e(t,o),u=_e(e,o);if(l&&!Array.isArray(l)&&n!==o)return{name:n};if(u&&u.type)return{name:o,error:u};s.pop()}return{name:n}}var u6=(e,t,n,r,s)=>s.isOnAll?!1:!n&&s.isOnTouch?!(t||e):(n?r.isOnBlur:s.isOnBlur)?!e:(n?r.isOnChange:s.isOnChange)?e:!0,d6=(e,t)=>!qh(_e(e,t)).length&&Dn(e,t);const f6={mode:Ss.onSubmit,reValidateMode:Ss.onChange,shouldFocusError:!0};function p6(e={}){let t={...f6,...e},n={submitCount:0,isDirty:!1,isLoading:ga(t.defaultValues),isValidating:!1,isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,touchedFields:{},dirtyFields:{},validatingFields:{},errors:t.errors||{},disabled:t.disabled||!1},r={},s=$n(t.defaultValues)||$n(t.values)?Er(t.defaultValues||t.values)||{}:{},o=t.shouldUnregister?{}:Er(s),l={action:!1,mount:!1,watch:!1},u={mount:new Set,unMount:new Set,array:new Set,watch:new Set},d,f=0;const h={isDirty:!1,dirtyFields:!1,validatingFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1},m={values:Mv(),array:Mv(),state:Mv()},g=h1(t.mode),x=h1(t.reValidateMode),b=t.criteriaMode===Ss.all,w=L=>X=>{clearTimeout(f),f=setTimeout(L,X)},C=async L=>{if(h.isValid||L){const X=t.resolver?Lr((await D()).errors):await Q(r,!0);X!==n.isValid&&m.state.next({isValid:X})}},k=(L,X)=>{(h.isValidating||h.validatingFields)&&((L||Array.from(u.mount)).forEach(ue=>{ue&&(X?qt(n.validatingFields,ue,X):Dn(n.validatingFields,ue))}),m.state.next({validatingFields:n.validatingFields,isValidating:!Lr(n.validatingFields)}))},j=(L,X=[],ue,Ne,je=!0,Se=!0)=>{if(Ne&&ue){if(l.action=!0,Se&&Array.isArray(_e(r,L))){const Be=ue(_e(r,L),Ne.argA,Ne.argB);je&&qt(r,L,Be)}if(Se&&Array.isArray(_e(n.errors,L))){const Be=ue(_e(n.errors,L),Ne.argA,Ne.argB);je&&qt(n.errors,L,Be),d6(n.errors,L)}if(h.touchedFields&&Se&&Array.isArray(_e(n.touchedFields,L))){const Be=ue(_e(n.touchedFields,L),Ne.argA,Ne.argB);je&&qt(n.touchedFields,L,Be)}h.dirtyFields&&(n.dirtyFields=Gf(s,o)),m.state.next({name:L,isDirty:V(L,X),dirtyFields:n.dirtyFields,errors:n.errors,isValid:n.isValid})}else qt(o,L,X)},M=(L,X)=>{qt(n.errors,L,X),m.state.next({errors:n.errors})},_=L=>{n.errors=L,m.state.next({errors:n.errors,isValid:!1})},R=(L,X,ue,Ne)=>{const je=_e(r,L);if(je){const Se=_e(o,L,wn(ue)?_e(s,L):ue);wn(Se)||Ne&&Ne.defaultChecked||X?qt(o,L,X?Se:Rv(je._f)):ie(L,Se),l.mount&&C()}},N=(L,X,ue,Ne,je)=>{let Se=!1,Be=!1;const bt={name:L},Wt=!!(_e(r,L)&&_e(r,L)._f&&_e(r,L)._f.disabled);if(!ue||Ne){h.isDirty&&(Be=n.isDirty,n.isDirty=bt.isDirty=V(),Se=Be!==bt.isDirty);const yn=Wt||ui(_e(s,L),X);Be=!!(!Wt&&_e(n.dirtyFields,L)),yn||Wt?Dn(n.dirtyFields,L):qt(n.dirtyFields,L,!0),bt.dirtyFields=n.dirtyFields,Se=Se||h.dirtyFields&&Be!==!yn}if(ue){const yn=_e(n.touchedFields,L);yn||(qt(n.touchedFields,L,ue),bt.touchedFields=n.touchedFields,Se=Se||h.touchedFields&&yn!==ue)}return Se&&je&&m.state.next(bt),Se?bt:{}},O=(L,X,ue,Ne)=>{const je=_e(n.errors,L),Se=h.isValid&&Us(X)&&n.isValid!==X;if(e.delayError&&ue?(d=w(()=>M(L,ue)),d(e.delayError)):(clearTimeout(f),d=null,ue?qt(n.errors,L,ue):Dn(n.errors,L)),(ue?!ui(je,ue):je)||!Lr(Ne)||Se){const Be={...Ne,...Se&&Us(X)?{isValid:X}:{},errors:n.errors,name:L};n={...n,...Be},m.state.next(Be)}},D=async L=>{k(L,!0);const X=await t.resolver(o,t.context,l6(L||u.mount,r,t.criteriaMode,t.shouldUseNativeValidation));return k(L),X},z=async L=>{const{errors:X}=await D(L);if(L)for(const ue of L){const Ne=_e(X,ue);Ne?qt(n.errors,ue,Ne):Dn(n.errors,ue)}else n.errors=X;return X},Q=async(L,X,ue={valid:!0})=>{for(const Ne in L){const je=L[Ne];if(je){const{_f:Se,...Be}=je;if(Se){const bt=u.array.has(Se.name);k([Ne],!0);const Wt=await x1(je,o,b,t.shouldUseNativeValidation&&!X,bt);if(k([Ne]),Wt[Se.name]&&(ue.valid=!1,X))break;!X&&(_e(Wt,Se.name)?bt?s6(n.errors,Wt,Se.name):qt(n.errors,Se.name,Wt[Se.name]):Dn(n.errors,Se.name))}Be&&await Q(Be,X,ue)}}return ue.valid},pe=()=>{for(const L of u.unMount){const X=_e(r,L);X&&(X._f.refs?X._f.refs.every(ue=>!_v(ue)):!_v(X._f.ref))&&ge(L)}u.unMount=new Set},V=(L,X)=>(L&&X&&qt(o,L,X),!ui(A(),s)),G=(L,X,ue)=>b_(L,u,{...l.mount?o:wn(X)?s:qs(L)?{[L]:X}:X},ue,X),W=L=>qh(_e(l.mount?o:s,L,e.shouldUnregister?_e(s,L,[]):[])),ie=(L,X,ue={})=>{const Ne=_e(r,L);let je=X;if(Ne){const Se=Ne._f;Se&&(!Se.disabled&&qt(o,L,j_(X,Se)),je=Gp(Se.ref)&&cr(X)?"":X,C_(Se.ref)?[...Se.ref.options].forEach(Be=>Be.selected=je.includes(Be.value)):Se.refs?Ed(Se.ref)?Se.refs.length>1?Se.refs.forEach(Be=>(!Be.defaultChecked||!Be.disabled)&&(Be.checked=Array.isArray(je)?!!je.find(bt=>bt===Be.value):je===Be.value)):Se.refs[0]&&(Se.refs[0].checked=!!je):Se.refs.forEach(Be=>Be.checked=Be.value===je):Mx(Se.ref)?Se.ref.value="":(Se.ref.value=je,Se.ref.type||m.values.next({name:L,values:{...o}})))}(ue.shouldDirty||ue.shouldTouch)&&N(L,je,ue.shouldTouch,ue.shouldDirty,!0),ue.shouldValidate&&he(L)},re=(L,X,ue)=>{for(const Ne in X){const je=X[Ne],Se=`${L}.${Ne}`,Be=_e(r,Se);(u.array.has(L)||!Qp(je)||Be&&!Be._f)&&!Tl(je)?re(Se,je,ue):ie(Se,je,ue)}},Y=(L,X,ue={})=>{const Ne=_e(r,L),je=u.array.has(L),Se=Er(X);qt(o,L,Se),je?(m.array.next({name:L,values:{...o}}),(h.isDirty||h.dirtyFields)&&ue.shouldDirty&&m.state.next({name:L,dirtyFields:Gf(s,o),isDirty:V(L,Se)})):Ne&&!Ne._f&&!cr(Se)?re(L,Se,ue):ie(L,Se,ue),g1(L,u)&&m.state.next({...n}),m.values.next({name:l.mount?L:void 0,values:{...o}})},H=async L=>{l.mount=!0;const X=L.target;let ue=X.name,Ne=!0;const je=_e(r,ue),Se=()=>X.type?Rv(je._f):f_(L),Be=bt=>{Ne=Number.isNaN(bt)||bt===_e(o,ue,bt)};if(je){let bt,Wt;const yn=Se(),bn=L.type===Wp.BLUR||L.type===Wp.FOCUS_OUT,En=!c6(je._f)&&!t.resolver&&!_e(n.errors,ue)&&!je._f.deps||u6(bn,_e(n.touchedFields,ue),n.isSubmitted,x,g),gr=g1(ue,u,bn);qt(o,ue,yn),bn?(je._f.onBlur&&je._f.onBlur(L),d&&d(0)):je._f.onChange&&je._f.onChange(L);const Qn=N(ue,yn,bn,!1),ro=!Lr(Qn)||gr;if(!bn&&m.values.next({name:ue,type:L.type,values:{...o}}),En)return h.isValid&&C(),ro&&m.state.next({name:ue,...gr?{}:Qn});if(!bn&&gr&&m.state.next({...n}),t.resolver){const{errors:Bn}=await D([ue]);if(Be(yn),Ne){const Te=w1(n.errors,r,ue),ut=w1(Bn,r,Te.name||ue);bt=ut.error,ue=ut.name,Wt=Lr(Bn)}}else k([ue],!0),bt=(await x1(je,o,b,t.shouldUseNativeValidation))[ue],k([ue]),Be(yn),Ne&&(bt?Wt=!1:h.isValid&&(Wt=await Q(r,!0)));Ne&&(je._f.deps&&he(je._f.deps),O(ue,Wt,bt,Qn))}},q=(L,X)=>{if(_e(n.errors,X)&&L.focus)return L.focus(),1},he=async(L,X={})=>{let ue,Ne;const je=ju(L);if(t.resolver){const Se=await z(wn(L)?L:je);ue=Lr(Se),Ne=L?!je.some(Be=>_e(Se,Be)):ue}else L?(Ne=(await Promise.all(je.map(async Se=>{const Be=_e(r,Se);return await Q(Be&&Be._f?{[Se]:Be}:Be)}))).every(Boolean),!(!Ne&&!n.isValid)&&C()):Ne=ue=await Q(r);return m.state.next({...!qs(L)||h.isValid&&ue!==n.isValid?{}:{name:L},...t.resolver||!L?{isValid:ue}:{},errors:n.errors}),X.shouldFocus&&!Ne&&Tu(r,q,L?je:u.mount),Ne},A=L=>{const X={...l.mount?o:s};return wn(L)?X:qs(L)?_e(X,L):L.map(ue=>_e(X,ue))},F=(L,X)=>({invalid:!!_e((X||n).errors,L),isDirty:!!_e((X||n).dirtyFields,L),error:_e((X||n).errors,L),isValidating:!!_e(n.validatingFields,L),isTouched:!!_e((X||n).touchedFields,L)}),fe=L=>{L&&ju(L).forEach(X=>Dn(n.errors,X)),m.state.next({errors:L?n.errors:{}})},te=(L,X,ue)=>{const Ne=(_e(r,L,{_f:{}})._f||{}).ref,je=_e(n.errors,L)||{},{ref:Se,message:Be,type:bt,...Wt}=je;qt(n.errors,L,{...Wt,...X,ref:Ne}),m.state.next({name:L,errors:n.errors,isValid:!1}),ue&&ue.shouldFocus&&Ne&&Ne.focus&&Ne.focus()},de=(L,X)=>ga(L)?m.values.subscribe({next:ue=>L(G(void 0,X),ue)}):G(L,X,!0),ge=(L,X={})=>{for(const ue of L?ju(L):u.mount)u.mount.delete(ue),u.array.delete(ue),X.keepValue||(Dn(r,ue),Dn(o,ue)),!X.keepError&&Dn(n.errors,ue),!X.keepDirty&&Dn(n.dirtyFields,ue),!X.keepTouched&&Dn(n.touchedFields,ue),!X.keepIsValidating&&Dn(n.validatingFields,ue),!t.shouldUnregister&&!X.keepDefaultValue&&Dn(s,ue);m.values.next({values:{...o}}),m.state.next({...n,...X.keepDirty?{isDirty:V()}:{}}),!X.keepIsValid&&C()},Z=({disabled:L,name:X,field:ue,fields:Ne,value:je})=>{if(Us(L)&&l.mount||L){const Se=L?void 0:wn(je)?Rv(ue?ue._f:_e(Ne,X)._f):je;qt(o,X,Se),N(X,Se,!1,!1,!0)}},ye=(L,X={})=>{let ue=_e(r,L);const Ne=Us(X.disabled);return qt(r,L,{...ue||{},_f:{...ue&&ue._f?ue._f:{ref:{name:L}},name:L,mount:!0,...X}}),u.mount.add(L),ue?Z({field:ue,disabled:X.disabled,name:L,value:X.value}):R(L,!0,X.value),{...Ne?{disabled:X.disabled}:{},...t.progressive?{required:!!X.required,min:au(X.min),max:au(X.max),minLength:au(X.minLength),maxLength:au(X.maxLength),pattern:au(X.pattern)}:{},name:L,onChange:H,onBlur:H,ref:je=>{if(je){ye(L,X),ue=_e(r,L);const Se=wn(je.value)&&je.querySelectorAll&&je.querySelectorAll("input,select,textarea")[0]||je,Be=i6(Se),bt=ue._f.refs||[];if(Be?bt.find(Wt=>Wt===Se):Se===ue._f.ref)return;qt(r,L,{_f:{...ue._f,...Be?{refs:[...bt.filter(_v),Se,...Array.isArray(_e(s,L))?[{}]:[]],ref:{type:Se.type,name:L}}:{ref:Se}}}),R(L,!1,void 0,Se)}else ue=_e(r,L,{}),ue._f&&(ue._f.mount=!1),(t.shouldUnregister||X.shouldUnregister)&&!(p_(u.array,L)&&l.action)&&u.unMount.add(L)}}},Re=()=>t.shouldFocusError&&Tu(r,q,u.mount),$e=L=>{Us(L)&&(m.state.next({disabled:L}),Tu(r,(X,ue)=>{const Ne=_e(r,ue);Ne&&(X.disabled=Ne._f.disabled||L,Array.isArray(Ne._f.refs)&&Ne._f.refs.forEach(je=>{je.disabled=Ne._f.disabled||L}))},0,!1))},Ye=(L,X)=>async ue=>{let Ne;ue&&(ue.preventDefault&&ue.preventDefault(),ue.persist&&ue.persist());let je=Er(o);if(m.state.next({isSubmitting:!0}),t.resolver){const{errors:Se,values:Be}=await D();n.errors=Se,je=Be}else await Q(r);if(Dn(n.errors,"root"),Lr(n.errors)){m.state.next({errors:{}});try{await L(je,ue)}catch(Se){Ne=Se}}else X&&await X({...n.errors},ue),Re(),setTimeout(Re);if(m.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:Lr(n.errors)&&!Ne,submitCount:n.submitCount+1,errors:n.errors}),Ne)throw Ne},Fe=(L,X={})=>{_e(r,L)&&(wn(X.defaultValue)?Y(L,Er(_e(s,L))):(Y(L,X.defaultValue),qt(s,L,Er(X.defaultValue))),X.keepTouched||Dn(n.touchedFields,L),X.keepDirty||(Dn(n.dirtyFields,L),n.isDirty=X.defaultValue?V(L,Er(_e(s,L))):V()),X.keepError||(Dn(n.errors,L),h.isValid&&C()),m.state.next({...n}))},ft=(L,X={})=>{const ue=L?Er(L):s,Ne=Er(ue),je=Lr(L),Se=je?s:Ne;if(X.keepDefaultValues||(s=ue),!X.keepValues){if(X.keepDirtyValues)for(const Be of u.mount)_e(n.dirtyFields,Be)?qt(Se,Be,_e(o,Be)):Y(Be,_e(Se,Be));else{if(jx&&wn(L))for(const Be of u.mount){const bt=_e(r,Be);if(bt&&bt._f){const Wt=Array.isArray(bt._f.refs)?bt._f.refs[0]:bt._f.ref;if(Gp(Wt)){const yn=Wt.closest("form");if(yn){yn.reset();break}}}}r={}}o=e.shouldUnregister?X.keepDefaultValues?Er(s):{}:Er(Se),m.array.next({values:{...Se}}),m.values.next({values:{...Se}})}u={mount:X.keepDirtyValues?u.mount:new Set,unMount:new Set,array:new Set,watch:new Set,watchAll:!1,focus:""},l.mount=!h.isValid||!!X.keepIsValid||!!X.keepDirtyValues,l.watch=!!e.shouldUnregister,m.state.next({submitCount:X.keepSubmitCount?n.submitCount:0,isDirty:je?!1:X.keepDirty?n.isDirty:!!(X.keepDefaultValues&&!ui(L,s)),isSubmitted:X.keepIsSubmitted?n.isSubmitted:!1,dirtyFields:je?{}:X.keepDirtyValues?X.keepDefaultValues&&o?Gf(s,o):n.dirtyFields:X.keepDefaultValues&&L?Gf(s,L):X.keepDirty?n.dirtyFields:{},touchedFields:X.keepTouched?n.touchedFields:{},errors:X.keepErrors?n.errors:{},isSubmitSuccessful:X.keepIsSubmitSuccessful?n.isSubmitSuccessful:!1,isSubmitting:!1})},ln=(L,X)=>ft(ga(L)?L(o):L,X);return{control:{register:ye,unregister:ge,getFieldState:F,handleSubmit:Ye,setError:te,_executeSchema:D,_getWatch:G,_getDirty:V,_updateValid:C,_removeUnmounted:pe,_updateFieldArray:j,_updateDisabledField:Z,_getFieldArray:W,_reset:ft,_resetDefaultValues:()=>ga(t.defaultValues)&&t.defaultValues().then(L=>{ln(L,t.resetOptions),m.state.next({isLoading:!1})}),_updateFormState:L=>{n={...n,...L}},_disableForm:$e,_subjects:m,_proxyFormState:h,_setErrors:_,get _fields(){return r},get _formValues(){return o},get _state(){return l},set _state(L){l=L},get _defaultValues(){return s},get _names(){return u},set _names(L){u=L},get _formState(){return n},set _formState(L){n=L},get _options(){return t},set _options(L){t={...t,...L}}},trigger:he,register:ye,handleSubmit:Ye,watch:de,setValue:Y,getValues:A,reset:ln,resetField:Fe,clearErrors:fe,unregister:ge,setError:te,setFocus:(L,X={})=>{const ue=_e(r,L),Ne=ue&&ue._f;if(Ne){const je=Ne.refs?Ne.refs[0]:Ne.ref;je.focus&&(je.focus(),X.shouldSelect&&je.select())}},getFieldState:F}}function on(e={}){const t=qe.useRef(),n=qe.useRef(),[r,s]=qe.useState({isDirty:!1,isValidating:!1,isLoading:ga(e.defaultValues),isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,submitCount:0,dirtyFields:{},touchedFields:{},validatingFields:{},errors:e.errors||{},disabled:e.disabled||!1,defaultValues:ga(e.defaultValues)?void 0:e.defaultValues});t.current||(t.current={...p6(e),formState:r});const o=t.current.control;return o._options=e,Nx({subject:o._subjects.state,next:l=>{v_(l,o._proxyFormState,o._updateFormState,!0)&&s({...o._formState})}}),qe.useEffect(()=>o._disableForm(e.disabled),[o,e.disabled]),qe.useEffect(()=>{if(o._proxyFormState.isDirty){const l=o._getDirty();l!==r.isDirty&&o._subjects.state.next({isDirty:l})}},[o,r.isDirty]),qe.useEffect(()=>{e.values&&!ui(e.values,n.current)?(o._reset(e.values,o._options.resetOptions),n.current=e.values,s(l=>({...l}))):o._resetDefaultValues()},[e.values,o]),qe.useEffect(()=>{e.errors&&o._setErrors(e.errors)},[e.errors,o]),qe.useEffect(()=>{o._state.mount||(o._updateValid(),o._state.mount=!0),o._state.watch&&(o._state.watch=!1,o._subjects.state.next({...o._formState})),o._removeUnmounted()}),qe.useEffect(()=>{e.shouldUnregister&&o._subjects.values.next({values:o._getWatch()})},[e.shouldUnregister,o]),t.current.formState=m_(r,o),t.current}const S1=(e,t,n)=>{if(e&&"reportValidity"in e){const r=_e(n,t);e.setCustomValidity(r&&r.message||""),e.reportValidity()}},T_=(e,t)=>{for(const n in t.fields){const r=t.fields[n];r&&r.ref&&"reportValidity"in r.ref?S1(r.ref,n,e):r.refs&&r.refs.forEach(s=>S1(s,n,e))}},h6=(e,t)=>{t.shouldUseNativeValidation&&T_(e,t);const n={};for(const r in e){const s=_e(t.fields,r),o=Object.assign(e[r]||{},{ref:s&&s.ref});if(g6(t.names||Object.keys(e),r)){const l=Object.assign({},_e(n,r));qt(l,"root",o),qt(n,r,l)}else qt(n,r,o)}return n},g6=(e,t)=>e.some(n=>n.startsWith(t+"."));var m6=function(e,t){for(var n={};e.length;){var r=e[0],s=r.code,o=r.message,l=r.path.join(".");if(!n[l])if("unionErrors"in r){var u=r.unionErrors[0].errors[0];n[l]={message:u.message,type:u.code}}else n[l]={message:o,type:s};if("unionErrors"in r&&r.unionErrors.forEach(function(h){return h.errors.forEach(function(m){return e.push(m)})}),t){var d=n[l].types,f=d&&d[r.code];n[l]=x_(l,t,n,s,f?[].concat(f,r.message):r.message)}e.shift()}return n},an=function(e,t,n){return n===void 0&&(n={}),function(r,s,o){try{return Promise.resolve((function(l,u){try{var d=Promise.resolve(e[n.mode==="sync"?"parse":"parseAsync"](r,t)).then(function(f){return o.shouldUseNativeValidation&&T_({},o),{errors:{},values:n.raw?r:f}})}catch(f){return u(f)}return d&&d.then?d.then(void 0,u):d})(0,function(l){if((function(u){return Array.isArray(u?.errors)})(l))return{values:{},errors:h6(m6(l.errors,!o.shouldUseNativeValidation&&o.criteriaMode==="all"),o)};throw l}))}catch(l){return Promise.reject(l)}}},Wn=[];for(var Pv=0;Pv<256;++Pv)Wn.push((Pv+256).toString(16).slice(1));function v6(e,t=0){return(Wn[e[t+0]]+Wn[e[t+1]]+Wn[e[t+2]]+Wn[e[t+3]]+"-"+Wn[e[t+4]]+Wn[e[t+5]]+"-"+Wn[e[t+6]]+Wn[e[t+7]]+"-"+Wn[e[t+8]]+Wn[e[t+9]]+"-"+Wn[e[t+10]]+Wn[e[t+11]]+Wn[e[t+12]]+Wn[e[t+13]]+Wn[e[t+14]]+Wn[e[t+15]]).toLowerCase()}var Jf,y6=new Uint8Array(16);function b6(){if(!Jf&&(Jf=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Jf))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Jf(y6)}var x6=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto);const C1={randomUUID:x6};function E1(e,t,n){if(C1.randomUUID&&!e)return C1.randomUUID();e=e||{};var r=e.random||(e.rng||b6)();return r[6]=r[6]&15|64,r[8]=r[8]&63|128,v6(r)}var Ot;(function(e){e.assertEqual=s=>s;function t(s){}e.assertIs=t;function n(s){throw new Error}e.assertNever=n,e.arrayToEnum=s=>{const o={};for(const l of s)o[l]=l;return o},e.getValidEnumValues=s=>{const o=e.objectKeys(s).filter(u=>typeof s[s[u]]!="number"),l={};for(const u of o)l[u]=s[u];return e.objectValues(l)},e.objectValues=s=>e.objectKeys(s).map(function(o){return s[o]}),e.objectKeys=typeof Object.keys=="function"?s=>Object.keys(s):s=>{const o=[];for(const l in s)Object.prototype.hasOwnProperty.call(s,l)&&o.push(l);return o},e.find=(s,o)=>{for(const l of s)if(o(l))return l},e.isInteger=typeof Number.isInteger=="function"?s=>Number.isInteger(s):s=>typeof s=="number"&&isFinite(s)&&Math.floor(s)===s;function r(s,o=" | "){return s.map(l=>typeof l=="string"?`'${l}'`:l).join(o)}e.joinValues=r,e.jsonStringifyReplacer=(s,o)=>typeof o=="bigint"?o.toString():o})(Ot||(Ot={}));var Gy;(function(e){e.mergeShapes=(t,n)=>({...t,...n})})(Gy||(Gy={}));const Le=Ot.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),pa=e=>{switch(typeof e){case"undefined":return Le.undefined;case"string":return Le.string;case"number":return isNaN(e)?Le.nan:Le.number;case"boolean":return Le.boolean;case"function":return Le.function;case"bigint":return Le.bigint;case"symbol":return Le.symbol;case"object":return Array.isArray(e)?Le.array:e===null?Le.null:e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?Le.promise:typeof Map<"u"&&e instanceof Map?Le.map:typeof Set<"u"&&e instanceof Set?Le.set:typeof Date<"u"&&e instanceof Date?Le.date:Le.object;default:return Le.unknown}},Ce=Ot.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),w6=e=>JSON.stringify(e,null,2).replace(/"([^"]+)":/g,"$1:");class Hr extends Error{constructor(t){super(),this.issues=[],this.addIssue=r=>{this.issues=[...this.issues,r]},this.addIssues=(r=[])=>{this.issues=[...this.issues,...r]};const n=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,n):this.__proto__=n,this.name="ZodError",this.issues=t}get errors(){return this.issues}format(t){const n=t||function(o){return o.message},r={_errors:[]},s=o=>{for(const l of o.issues)if(l.code==="invalid_union")l.unionErrors.map(s);else if(l.code==="invalid_return_type")s(l.returnTypeError);else if(l.code==="invalid_arguments")s(l.argumentsError);else if(l.path.length===0)r._errors.push(n(l));else{let u=r,d=0;for(;dn.message){const n={},r=[];for(const s of this.issues)s.path.length>0?(n[s.path[0]]=n[s.path[0]]||[],n[s.path[0]].push(t(s))):r.push(t(s));return{formErrors:r,fieldErrors:n}}get formErrors(){return this.flatten()}}Hr.create=e=>new Hr(e);const Vl=(e,t)=>{let n;switch(e.code){case Ce.invalid_type:e.received===Le.undefined?n="Required":n=`Expected ${e.expected}, received ${e.received}`;break;case Ce.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,Ot.jsonStringifyReplacer)}`;break;case Ce.unrecognized_keys:n=`Unrecognized key(s) in object: ${Ot.joinValues(e.keys,", ")}`;break;case Ce.invalid_union:n="Invalid input";break;case Ce.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${Ot.joinValues(e.options)}`;break;case Ce.invalid_enum_value:n=`Invalid enum value. Expected ${Ot.joinValues(e.options)}, received '${e.received}'`;break;case Ce.invalid_arguments:n="Invalid function arguments";break;case Ce.invalid_return_type:n="Invalid function return type";break;case Ce.invalid_date:n="Invalid date";break;case Ce.invalid_string:typeof e.validation=="object"?"includes"in e.validation?(n=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position=="number"&&(n=`${n} at one or more positions greater than or equal to ${e.validation.position}`)):"startsWith"in e.validation?n=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?n=`Invalid input: must end with "${e.validation.endsWith}"`:Ot.assertNever(e.validation):e.validation!=="regex"?n=`Invalid ${e.validation}`:n="Invalid";break;case Ce.too_small:e.type==="array"?n=`Array must contain ${e.exact?"exactly":e.inclusive?"at least":"more than"} ${e.minimum} element(s)`:e.type==="string"?n=`String must contain ${e.exact?"exactly":e.inclusive?"at least":"over"} ${e.minimum} character(s)`:e.type==="number"?n=`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:e.type==="date"?n=`Date must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(e.minimum))}`:n="Invalid input";break;case Ce.too_big:e.type==="array"?n=`Array must contain ${e.exact?"exactly":e.inclusive?"at most":"less than"} ${e.maximum} element(s)`:e.type==="string"?n=`String must contain ${e.exact?"exactly":e.inclusive?"at most":"under"} ${e.maximum} character(s)`:e.type==="number"?n=`Number must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="bigint"?n=`BigInt must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="date"?n=`Date must be ${e.exact?"exactly":e.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(e.maximum))}`:n="Invalid input";break;case Ce.custom:n="Invalid input";break;case Ce.invalid_intersection_types:n="Intersection results could not be merged";break;case Ce.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case Ce.not_finite:n="Number must be finite";break;default:n=t.defaultError,Ot.assertNever(e)}return{message:n}};let N_=Vl;function S6(e){N_=e}function Yp(){return N_}const Xp=e=>{const{data:t,path:n,errorMaps:r,issueData:s}=e,o=[...n,...s.path||[]],l={...s,path:o};if(s.message!==void 0)return{...s,path:o,message:s.message};let u="";const d=r.filter(f=>!!f).slice().reverse();for(const f of d)u=f(l,{data:t,defaultError:u}).message;return{...s,path:o,message:u}},C6=[];function Ae(e,t){const n=Yp(),r=Xp({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,n,n===Vl?void 0:Vl].filter(s=>!!s)});e.common.issues.push(r)}class sr{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(t,n){const r=[];for(const s of n){if(s.status==="aborted")return lt;s.status==="dirty"&&t.dirty(),r.push(s.value)}return{status:t.value,value:r}}static async mergeObjectAsync(t,n){const r=[];for(const s of n){const o=await s.key,l=await s.value;r.push({key:o,value:l})}return sr.mergeObjectSync(t,r)}static mergeObjectSync(t,n){const r={};for(const s of n){const{key:o,value:l}=s;if(o.status==="aborted"||l.status==="aborted")return lt;o.status==="dirty"&&t.dirty(),l.status==="dirty"&&t.dirty(),o.value!=="__proto__"&&(typeof l.value<"u"||s.alwaysSet)&&(r[o.value]=l.value)}return{status:t.value,value:r}}}const lt=Object.freeze({status:"aborted"}),Nl=e=>({status:"dirty",value:e}),fr=e=>({status:"valid",value:e}),Jy=e=>e.status==="aborted",Qy=e=>e.status==="dirty",Hu=e=>e.status==="valid",qu=e=>typeof Promise<"u"&&e instanceof Promise;function eh(e,t,n,r){if(typeof t=="function"?e!==t||!0:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return t.get(e)}function M_(e,t,n,r,s){if(typeof t=="function"?e!==t||!0:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t.set(e,n),n}var Ze;(function(e){e.errToObj=t=>typeof t=="string"?{message:t}:t||{},e.toString=t=>typeof t=="string"?t:t?.message})(Ze||(Ze={}));var yu,bu;class Qs{constructor(t,n,r,s){this._cachedPath=[],this.parent=t,this.data=n,this._path=r,this._key=s}get path(){return this._cachedPath.length||(this._key instanceof Array?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const k1=(e,t)=>{if(Hu(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const n=new Hr(e.common.issues);return this._error=n,this._error}}};function yt(e){if(!e)return{};const{errorMap:t,invalid_type_error:n,required_error:r,description:s}=e;if(t&&(n||r))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:s}:{errorMap:(l,u)=>{var d,f;const{message:h}=e;return l.code==="invalid_enum_value"?{message:h??u.defaultError}:typeof u.data>"u"?{message:(d=h??r)!==null&&d!==void 0?d:u.defaultError}:l.code!=="invalid_type"?{message:u.defaultError}:{message:(f=h??n)!==null&&f!==void 0?f:u.defaultError}},description:s}}class St{constructor(t){this.spa=this.safeParseAsync,this._def=t,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(t){return pa(t.data)}_getOrReturnCtx(t,n){return n||{common:t.parent.common,data:t.data,parsedType:pa(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}_processInputParams(t){return{status:new sr,ctx:{common:t.parent.common,data:t.data,parsedType:pa(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}}_parseSync(t){const n=this._parse(t);if(qu(n))throw new Error("Synchronous parse encountered promise.");return n}_parseAsync(t){const n=this._parse(t);return Promise.resolve(n)}parse(t,n){const r=this.safeParse(t,n);if(r.success)return r.data;throw r.error}safeParse(t,n){var r;const s={common:{issues:[],async:(r=n?.async)!==null&&r!==void 0?r:!1,contextualErrorMap:n?.errorMap},path:n?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:pa(t)},o=this._parseSync({data:t,path:s.path,parent:s});return k1(s,o)}async parseAsync(t,n){const r=await this.safeParseAsync(t,n);if(r.success)return r.data;throw r.error}async safeParseAsync(t,n){const r={common:{issues:[],contextualErrorMap:n?.errorMap,async:!0},path:n?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:pa(t)},s=this._parse({data:t,path:r.path,parent:r}),o=await(qu(s)?s:Promise.resolve(s));return k1(r,o)}refine(t,n){const r=s=>typeof n=="string"||typeof n>"u"?{message:n}:typeof n=="function"?n(s):n;return this._refinement((s,o)=>{const l=t(s),u=()=>o.addIssue({code:Ce.custom,...r(s)});return typeof Promise<"u"&&l instanceof Promise?l.then(d=>d?!0:(u(),!1)):l?!0:(u(),!1)})}refinement(t,n){return this._refinement((r,s)=>t(r)?!0:(s.addIssue(typeof n=="function"?n(r,s):n),!1))}_refinement(t){return new Ms({schema:this,typeName:it.ZodEffects,effect:{type:"refinement",refinement:t}})}superRefine(t){return this._refinement(t)}optional(){return Ws.create(this,this._def)}nullable(){return ka.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return ks.create(this,this._def)}promise(){return ql.create(this,this._def)}or(t){return Ju.create([this,t],this._def)}and(t){return Qu.create(this,t,this._def)}transform(t){return new Ms({...yt(this._def),schema:this,typeName:it.ZodEffects,effect:{type:"transform",transform:t}})}default(t){const n=typeof t=="function"?t:()=>t;return new td({...yt(this._def),innerType:this,defaultValue:n,typeName:it.ZodDefault})}brand(){return new Rx({typeName:it.ZodBranded,type:this,...yt(this._def)})}catch(t){const n=typeof t=="function"?t:()=>t;return new nd({...yt(this._def),innerType:this,catchValue:n,typeName:it.ZodCatch})}describe(t){const n=this.constructor;return new n({...this._def,description:t})}pipe(t){return kd.create(this,t)}readonly(){return rd.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const E6=/^c[^\s-]{8,}$/i,k6=/^[0-9a-z]+$/,j6=/^[0-9A-HJKMNP-TV-Z]{26}$/,T6=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,N6=/^[a-z0-9_-]{21}$/i,M6=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,_6=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,R6="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";let Ov;const P6=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,O6=/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,I6=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,__="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",A6=new RegExp(`^${__}$`);function R_(e){let t="([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d";return e.precision?t=`${t}\\.\\d{${e.precision}}`:e.precision==null&&(t=`${t}(\\.\\d+)?`),t}function D6(e){return new RegExp(`^${R_(e)}$`)}function P_(e){let t=`${__}T${R_(e)}`;const n=[];return n.push(e.local?"Z?":"Z"),e.offset&&n.push("([+-]\\d{2}:?\\d{2})"),t=`${t}(${n.join("|")})`,new RegExp(`^${t}$`)}function F6(e,t){return!!((t==="v4"||!t)&&P6.test(e)||(t==="v6"||!t)&&O6.test(e))}class Cs extends St{_parse(t){if(this._def.coerce&&(t.data=String(t.data)),this._getType(t)!==Le.string){const o=this._getOrReturnCtx(t);return Ae(o,{code:Ce.invalid_type,expected:Le.string,received:o.parsedType}),lt}const r=new sr;let s;for(const o of this._def.checks)if(o.kind==="min")t.data.lengtho.value&&(s=this._getOrReturnCtx(t,s),Ae(s,{code:Ce.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),r.dirty());else if(o.kind==="length"){const l=t.data.length>o.value,u=t.data.lengtht.test(s),{validation:n,code:Ce.invalid_string,...Ze.errToObj(r)})}_addCheck(t){return new Cs({...this._def,checks:[...this._def.checks,t]})}email(t){return this._addCheck({kind:"email",...Ze.errToObj(t)})}url(t){return this._addCheck({kind:"url",...Ze.errToObj(t)})}emoji(t){return this._addCheck({kind:"emoji",...Ze.errToObj(t)})}uuid(t){return this._addCheck({kind:"uuid",...Ze.errToObj(t)})}nanoid(t){return this._addCheck({kind:"nanoid",...Ze.errToObj(t)})}cuid(t){return this._addCheck({kind:"cuid",...Ze.errToObj(t)})}cuid2(t){return this._addCheck({kind:"cuid2",...Ze.errToObj(t)})}ulid(t){return this._addCheck({kind:"ulid",...Ze.errToObj(t)})}base64(t){return this._addCheck({kind:"base64",...Ze.errToObj(t)})}ip(t){return this._addCheck({kind:"ip",...Ze.errToObj(t)})}datetime(t){var n,r;return typeof t=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:t}):this._addCheck({kind:"datetime",precision:typeof t?.precision>"u"?null:t?.precision,offset:(n=t?.offset)!==null&&n!==void 0?n:!1,local:(r=t?.local)!==null&&r!==void 0?r:!1,...Ze.errToObj(t?.message)})}date(t){return this._addCheck({kind:"date",message:t})}time(t){return typeof t=="string"?this._addCheck({kind:"time",precision:null,message:t}):this._addCheck({kind:"time",precision:typeof t?.precision>"u"?null:t?.precision,...Ze.errToObj(t?.message)})}duration(t){return this._addCheck({kind:"duration",...Ze.errToObj(t)})}regex(t,n){return this._addCheck({kind:"regex",regex:t,...Ze.errToObj(n)})}includes(t,n){return this._addCheck({kind:"includes",value:t,position:n?.position,...Ze.errToObj(n?.message)})}startsWith(t,n){return this._addCheck({kind:"startsWith",value:t,...Ze.errToObj(n)})}endsWith(t,n){return this._addCheck({kind:"endsWith",value:t,...Ze.errToObj(n)})}min(t,n){return this._addCheck({kind:"min",value:t,...Ze.errToObj(n)})}max(t,n){return this._addCheck({kind:"max",value:t,...Ze.errToObj(n)})}length(t,n){return this._addCheck({kind:"length",value:t,...Ze.errToObj(n)})}nonempty(t){return this.min(1,Ze.errToObj(t))}trim(){return new Cs({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new Cs({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new Cs({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(t=>t.kind==="datetime")}get isDate(){return!!this._def.checks.find(t=>t.kind==="date")}get isTime(){return!!this._def.checks.find(t=>t.kind==="time")}get isDuration(){return!!this._def.checks.find(t=>t.kind==="duration")}get isEmail(){return!!this._def.checks.find(t=>t.kind==="email")}get isURL(){return!!this._def.checks.find(t=>t.kind==="url")}get isEmoji(){return!!this._def.checks.find(t=>t.kind==="emoji")}get isUUID(){return!!this._def.checks.find(t=>t.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(t=>t.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(t=>t.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(t=>t.kind==="cuid2")}get isULID(){return!!this._def.checks.find(t=>t.kind==="ulid")}get isIP(){return!!this._def.checks.find(t=>t.kind==="ip")}get isBase64(){return!!this._def.checks.find(t=>t.kind==="base64")}get minLength(){let t=null;for(const n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t}get maxLength(){let t=null;for(const n of this._def.checks)n.kind==="max"&&(t===null||n.value{var t;return new Cs({checks:[],typeName:it.ZodString,coerce:(t=e?.coerce)!==null&&t!==void 0?t:!1,...yt(e)})};function L6(e,t){const n=(e.toString().split(".")[1]||"").length,r=(t.toString().split(".")[1]||"").length,s=n>r?n:r,o=parseInt(e.toFixed(s).replace(".","")),l=parseInt(t.toFixed(s).replace(".",""));return o%l/Math.pow(10,s)}class Sa extends St{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(t){if(this._def.coerce&&(t.data=Number(t.data)),this._getType(t)!==Le.number){const o=this._getOrReturnCtx(t);return Ae(o,{code:Ce.invalid_type,expected:Le.number,received:o.parsedType}),lt}let r;const s=new sr;for(const o of this._def.checks)o.kind==="int"?Ot.isInteger(t.data)||(r=this._getOrReturnCtx(t,r),Ae(r,{code:Ce.invalid_type,expected:"integer",received:"float",message:o.message}),s.dirty()):o.kind==="min"?(o.inclusive?t.datao.value:t.data>=o.value)&&(r=this._getOrReturnCtx(t,r),Ae(r,{code:Ce.too_big,maximum:o.value,type:"number",inclusive:o.inclusive,exact:!1,message:o.message}),s.dirty()):o.kind==="multipleOf"?L6(t.data,o.value)!==0&&(r=this._getOrReturnCtx(t,r),Ae(r,{code:Ce.not_multiple_of,multipleOf:o.value,message:o.message}),s.dirty()):o.kind==="finite"?Number.isFinite(t.data)||(r=this._getOrReturnCtx(t,r),Ae(r,{code:Ce.not_finite,message:o.message}),s.dirty()):Ot.assertNever(o);return{status:s.value,value:t.data}}gte(t,n){return this.setLimit("min",t,!0,Ze.toString(n))}gt(t,n){return this.setLimit("min",t,!1,Ze.toString(n))}lte(t,n){return this.setLimit("max",t,!0,Ze.toString(n))}lt(t,n){return this.setLimit("max",t,!1,Ze.toString(n))}setLimit(t,n,r,s){return new Sa({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:Ze.toString(s)}]})}_addCheck(t){return new Sa({...this._def,checks:[...this._def.checks,t]})}int(t){return this._addCheck({kind:"int",message:Ze.toString(t)})}positive(t){return this._addCheck({kind:"min",value:0,inclusive:!1,message:Ze.toString(t)})}negative(t){return this._addCheck({kind:"max",value:0,inclusive:!1,message:Ze.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:0,inclusive:!0,message:Ze.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:0,inclusive:!0,message:Ze.toString(t)})}multipleOf(t,n){return this._addCheck({kind:"multipleOf",value:t,message:Ze.toString(n)})}finite(t){return this._addCheck({kind:"finite",message:Ze.toString(t)})}safe(t){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:Ze.toString(t)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:Ze.toString(t)})}get minValue(){let t=null;for(const n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t}get maxValue(){let t=null;for(const n of this._def.checks)n.kind==="max"&&(t===null||n.valuet.kind==="int"||t.kind==="multipleOf"&&Ot.isInteger(t.value))}get isFinite(){let t=null,n=null;for(const r of this._def.checks){if(r.kind==="finite"||r.kind==="int"||r.kind==="multipleOf")return!0;r.kind==="min"?(n===null||r.value>n)&&(n=r.value):r.kind==="max"&&(t===null||r.valuenew Sa({checks:[],typeName:it.ZodNumber,coerce:e?.coerce||!1,...yt(e)});class Ca extends St{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(t){if(this._def.coerce&&(t.data=BigInt(t.data)),this._getType(t)!==Le.bigint){const o=this._getOrReturnCtx(t);return Ae(o,{code:Ce.invalid_type,expected:Le.bigint,received:o.parsedType}),lt}let r;const s=new sr;for(const o of this._def.checks)o.kind==="min"?(o.inclusive?t.datao.value:t.data>=o.value)&&(r=this._getOrReturnCtx(t,r),Ae(r,{code:Ce.too_big,type:"bigint",maximum:o.value,inclusive:o.inclusive,message:o.message}),s.dirty()):o.kind==="multipleOf"?t.data%o.value!==BigInt(0)&&(r=this._getOrReturnCtx(t,r),Ae(r,{code:Ce.not_multiple_of,multipleOf:o.value,message:o.message}),s.dirty()):Ot.assertNever(o);return{status:s.value,value:t.data}}gte(t,n){return this.setLimit("min",t,!0,Ze.toString(n))}gt(t,n){return this.setLimit("min",t,!1,Ze.toString(n))}lte(t,n){return this.setLimit("max",t,!0,Ze.toString(n))}lt(t,n){return this.setLimit("max",t,!1,Ze.toString(n))}setLimit(t,n,r,s){return new Ca({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:Ze.toString(s)}]})}_addCheck(t){return new Ca({...this._def,checks:[...this._def.checks,t]})}positive(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:Ze.toString(t)})}negative(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:Ze.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:Ze.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:Ze.toString(t)})}multipleOf(t,n){return this._addCheck({kind:"multipleOf",value:t,message:Ze.toString(n)})}get minValue(){let t=null;for(const n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t}get maxValue(){let t=null;for(const n of this._def.checks)n.kind==="max"&&(t===null||n.value{var t;return new Ca({checks:[],typeName:it.ZodBigInt,coerce:(t=e?.coerce)!==null&&t!==void 0?t:!1,...yt(e)})};class Ku extends St{_parse(t){if(this._def.coerce&&(t.data=!!t.data),this._getType(t)!==Le.boolean){const r=this._getOrReturnCtx(t);return Ae(r,{code:Ce.invalid_type,expected:Le.boolean,received:r.parsedType}),lt}return fr(t.data)}}Ku.create=e=>new Ku({typeName:it.ZodBoolean,coerce:e?.coerce||!1,...yt(e)});class Ti extends St{_parse(t){if(this._def.coerce&&(t.data=new Date(t.data)),this._getType(t)!==Le.date){const o=this._getOrReturnCtx(t);return Ae(o,{code:Ce.invalid_type,expected:Le.date,received:o.parsedType}),lt}if(isNaN(t.data.getTime())){const o=this._getOrReturnCtx(t);return Ae(o,{code:Ce.invalid_date}),lt}const r=new sr;let s;for(const o of this._def.checks)o.kind==="min"?t.data.getTime()o.value&&(s=this._getOrReturnCtx(t,s),Ae(s,{code:Ce.too_big,message:o.message,inclusive:!0,exact:!1,maximum:o.value,type:"date"}),r.dirty()):Ot.assertNever(o);return{status:r.value,value:new Date(t.data.getTime())}}_addCheck(t){return new Ti({...this._def,checks:[...this._def.checks,t]})}min(t,n){return this._addCheck({kind:"min",value:t.getTime(),message:Ze.toString(n)})}max(t,n){return this._addCheck({kind:"max",value:t.getTime(),message:Ze.toString(n)})}get minDate(){let t=null;for(const n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t!=null?new Date(t):null}get maxDate(){let t=null;for(const n of this._def.checks)n.kind==="max"&&(t===null||n.valuenew Ti({checks:[],coerce:e?.coerce||!1,typeName:it.ZodDate,...yt(e)});class th extends St{_parse(t){if(this._getType(t)!==Le.symbol){const r=this._getOrReturnCtx(t);return Ae(r,{code:Ce.invalid_type,expected:Le.symbol,received:r.parsedType}),lt}return fr(t.data)}}th.create=e=>new th({typeName:it.ZodSymbol,...yt(e)});class Wu extends St{_parse(t){if(this._getType(t)!==Le.undefined){const r=this._getOrReturnCtx(t);return Ae(r,{code:Ce.invalid_type,expected:Le.undefined,received:r.parsedType}),lt}return fr(t.data)}}Wu.create=e=>new Wu({typeName:it.ZodUndefined,...yt(e)});class Gu extends St{_parse(t){if(this._getType(t)!==Le.null){const r=this._getOrReturnCtx(t);return Ae(r,{code:Ce.invalid_type,expected:Le.null,received:r.parsedType}),lt}return fr(t.data)}}Gu.create=e=>new Gu({typeName:it.ZodNull,...yt(e)});class Hl extends St{constructor(){super(...arguments),this._any=!0}_parse(t){return fr(t.data)}}Hl.create=e=>new Hl({typeName:it.ZodAny,...yt(e)});class mi extends St{constructor(){super(...arguments),this._unknown=!0}_parse(t){return fr(t.data)}}mi.create=e=>new mi({typeName:it.ZodUnknown,...yt(e)});class Ro extends St{_parse(t){const n=this._getOrReturnCtx(t);return Ae(n,{code:Ce.invalid_type,expected:Le.never,received:n.parsedType}),lt}}Ro.create=e=>new Ro({typeName:it.ZodNever,...yt(e)});class nh extends St{_parse(t){if(this._getType(t)!==Le.undefined){const r=this._getOrReturnCtx(t);return Ae(r,{code:Ce.invalid_type,expected:Le.void,received:r.parsedType}),lt}return fr(t.data)}}nh.create=e=>new nh({typeName:it.ZodVoid,...yt(e)});class ks extends St{_parse(t){const{ctx:n,status:r}=this._processInputParams(t),s=this._def;if(n.parsedType!==Le.array)return Ae(n,{code:Ce.invalid_type,expected:Le.array,received:n.parsedType}),lt;if(s.exactLength!==null){const l=n.data.length>s.exactLength.value,u=n.data.lengths.maxLength.value&&(Ae(n,{code:Ce.too_big,maximum:s.maxLength.value,type:"array",inclusive:!0,exact:!1,message:s.maxLength.message}),r.dirty()),n.common.async)return Promise.all([...n.data].map((l,u)=>s.type._parseAsync(new Qs(n,l,n.path,u)))).then(l=>sr.mergeArray(r,l));const o=[...n.data].map((l,u)=>s.type._parseSync(new Qs(n,l,n.path,u)));return sr.mergeArray(r,o)}get element(){return this._def.type}min(t,n){return new ks({...this._def,minLength:{value:t,message:Ze.toString(n)}})}max(t,n){return new ks({...this._def,maxLength:{value:t,message:Ze.toString(n)}})}length(t,n){return new ks({...this._def,exactLength:{value:t,message:Ze.toString(n)}})}nonempty(t){return this.min(1,t)}}ks.create=(e,t)=>new ks({type:e,minLength:null,maxLength:null,exactLength:null,typeName:it.ZodArray,...yt(t)});function El(e){if(e instanceof gn){const t={};for(const n in e.shape){const r=e.shape[n];t[n]=Ws.create(El(r))}return new gn({...e._def,shape:()=>t})}else return e instanceof ks?new ks({...e._def,type:El(e.element)}):e instanceof Ws?Ws.create(El(e.unwrap())):e instanceof ka?ka.create(El(e.unwrap())):e instanceof Zs?Zs.create(e.items.map(t=>El(t))):e}class gn extends St{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const t=this._def.shape(),n=Ot.objectKeys(t);return this._cached={shape:t,keys:n}}_parse(t){if(this._getType(t)!==Le.object){const f=this._getOrReturnCtx(t);return Ae(f,{code:Ce.invalid_type,expected:Le.object,received:f.parsedType}),lt}const{status:r,ctx:s}=this._processInputParams(t),{shape:o,keys:l}=this._getCached(),u=[];if(!(this._def.catchall instanceof Ro&&this._def.unknownKeys==="strip"))for(const f in s.data)l.includes(f)||u.push(f);const d=[];for(const f of l){const h=o[f],m=s.data[f];d.push({key:{status:"valid",value:f},value:h._parse(new Qs(s,m,s.path,f)),alwaysSet:f in s.data})}if(this._def.catchall instanceof Ro){const f=this._def.unknownKeys;if(f==="passthrough")for(const h of u)d.push({key:{status:"valid",value:h},value:{status:"valid",value:s.data[h]}});else if(f==="strict")u.length>0&&(Ae(s,{code:Ce.unrecognized_keys,keys:u}),r.dirty());else if(f!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const f=this._def.catchall;for(const h of u){const m=s.data[h];d.push({key:{status:"valid",value:h},value:f._parse(new Qs(s,m,s.path,h)),alwaysSet:h in s.data})}}return s.common.async?Promise.resolve().then(async()=>{const f=[];for(const h of d){const m=await h.key,g=await h.value;f.push({key:m,value:g,alwaysSet:h.alwaysSet})}return f}).then(f=>sr.mergeObjectSync(r,f)):sr.mergeObjectSync(r,d)}get shape(){return this._def.shape()}strict(t){return Ze.errToObj,new gn({...this._def,unknownKeys:"strict",...t!==void 0?{errorMap:(n,r)=>{var s,o,l,u;const d=(l=(o=(s=this._def).errorMap)===null||o===void 0?void 0:o.call(s,n,r).message)!==null&&l!==void 0?l:r.defaultError;return n.code==="unrecognized_keys"?{message:(u=Ze.errToObj(t).message)!==null&&u!==void 0?u:d}:{message:d}}}:{}})}strip(){return new gn({...this._def,unknownKeys:"strip"})}passthrough(){return new gn({...this._def,unknownKeys:"passthrough"})}extend(t){return new gn({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new gn({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:it.ZodObject})}setKey(t,n){return this.augment({[t]:n})}catchall(t){return new gn({...this._def,catchall:t})}pick(t){const n={};return Ot.objectKeys(t).forEach(r=>{t[r]&&this.shape[r]&&(n[r]=this.shape[r])}),new gn({...this._def,shape:()=>n})}omit(t){const n={};return Ot.objectKeys(this.shape).forEach(r=>{t[r]||(n[r]=this.shape[r])}),new gn({...this._def,shape:()=>n})}deepPartial(){return El(this)}partial(t){const n={};return Ot.objectKeys(this.shape).forEach(r=>{const s=this.shape[r];t&&!t[r]?n[r]=s:n[r]=s.optional()}),new gn({...this._def,shape:()=>n})}required(t){const n={};return Ot.objectKeys(this.shape).forEach(r=>{if(t&&!t[r])n[r]=this.shape[r];else{let o=this.shape[r];for(;o instanceof Ws;)o=o._def.innerType;n[r]=o}}),new gn({...this._def,shape:()=>n})}keyof(){return O_(Ot.objectKeys(this.shape))}}gn.create=(e,t)=>new gn({shape:()=>e,unknownKeys:"strip",catchall:Ro.create(),typeName:it.ZodObject,...yt(t)});gn.strictCreate=(e,t)=>new gn({shape:()=>e,unknownKeys:"strict",catchall:Ro.create(),typeName:it.ZodObject,...yt(t)});gn.lazycreate=(e,t)=>new gn({shape:e,unknownKeys:"strip",catchall:Ro.create(),typeName:it.ZodObject,...yt(t)});class Ju extends St{_parse(t){const{ctx:n}=this._processInputParams(t),r=this._def.options;function s(o){for(const u of o)if(u.result.status==="valid")return u.result;for(const u of o)if(u.result.status==="dirty")return n.common.issues.push(...u.ctx.common.issues),u.result;const l=o.map(u=>new Hr(u.ctx.common.issues));return Ae(n,{code:Ce.invalid_union,unionErrors:l}),lt}if(n.common.async)return Promise.all(r.map(async o=>{const l={...n,common:{...n.common,issues:[]},parent:null};return{result:await o._parseAsync({data:n.data,path:n.path,parent:l}),ctx:l}})).then(s);{let o;const l=[];for(const d of r){const f={...n,common:{...n.common,issues:[]},parent:null},h=d._parseSync({data:n.data,path:n.path,parent:f});if(h.status==="valid")return h;h.status==="dirty"&&!o&&(o={result:h,ctx:f}),f.common.issues.length&&l.push(f.common.issues)}if(o)return n.common.issues.push(...o.ctx.common.issues),o.result;const u=l.map(d=>new Hr(d));return Ae(n,{code:Ce.invalid_union,unionErrors:u}),lt}}get options(){return this._def.options}}Ju.create=(e,t)=>new Ju({options:e,typeName:it.ZodUnion,...yt(t)});const mo=e=>e instanceof Yu?mo(e.schema):e instanceof Ms?mo(e.innerType()):e instanceof Xu?[e.value]:e instanceof Ea?e.options:e instanceof ed?Ot.objectValues(e.enum):e instanceof td?mo(e._def.innerType):e instanceof Wu?[void 0]:e instanceof Gu?[null]:e instanceof Ws?[void 0,...mo(e.unwrap())]:e instanceof ka?[null,...mo(e.unwrap())]:e instanceof Rx||e instanceof rd?mo(e.unwrap()):e instanceof nd?mo(e._def.innerType):[];class Wh extends St{_parse(t){const{ctx:n}=this._processInputParams(t);if(n.parsedType!==Le.object)return Ae(n,{code:Ce.invalid_type,expected:Le.object,received:n.parsedType}),lt;const r=this.discriminator,s=n.data[r],o=this.optionsMap.get(s);return o?n.common.async?o._parseAsync({data:n.data,path:n.path,parent:n}):o._parseSync({data:n.data,path:n.path,parent:n}):(Ae(n,{code:Ce.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),lt)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,n,r){const s=new Map;for(const o of n){const l=mo(o.shape[t]);if(!l.length)throw new Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(const u of l){if(s.has(u))throw new Error(`Discriminator property ${String(t)} has duplicate value ${String(u)}`);s.set(u,o)}}return new Wh({typeName:it.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:s,...yt(r)})}}function Zy(e,t){const n=pa(e),r=pa(t);if(e===t)return{valid:!0,data:e};if(n===Le.object&&r===Le.object){const s=Ot.objectKeys(t),o=Ot.objectKeys(e).filter(u=>s.indexOf(u)!==-1),l={...e,...t};for(const u of o){const d=Zy(e[u],t[u]);if(!d.valid)return{valid:!1};l[u]=d.data}return{valid:!0,data:l}}else if(n===Le.array&&r===Le.array){if(e.length!==t.length)return{valid:!1};const s=[];for(let o=0;o{if(Jy(o)||Jy(l))return lt;const u=Zy(o.value,l.value);return u.valid?((Qy(o)||Qy(l))&&n.dirty(),{status:n.value,value:u.data}):(Ae(r,{code:Ce.invalid_intersection_types}),lt)};return r.common.async?Promise.all([this._def.left._parseAsync({data:r.data,path:r.path,parent:r}),this._def.right._parseAsync({data:r.data,path:r.path,parent:r})]).then(([o,l])=>s(o,l)):s(this._def.left._parseSync({data:r.data,path:r.path,parent:r}),this._def.right._parseSync({data:r.data,path:r.path,parent:r}))}}Qu.create=(e,t,n)=>new Qu({left:e,right:t,typeName:it.ZodIntersection,...yt(n)});class Zs extends St{_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==Le.array)return Ae(r,{code:Ce.invalid_type,expected:Le.array,received:r.parsedType}),lt;if(r.data.lengththis._def.items.length&&(Ae(r,{code:Ce.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),n.dirty());const o=[...r.data].map((l,u)=>{const d=this._def.items[u]||this._def.rest;return d?d._parse(new Qs(r,l,r.path,u)):null}).filter(l=>!!l);return r.common.async?Promise.all(o).then(l=>sr.mergeArray(n,l)):sr.mergeArray(n,o)}get items(){return this._def.items}rest(t){return new Zs({...this._def,rest:t})}}Zs.create=(e,t)=>{if(!Array.isArray(e))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new Zs({items:e,typeName:it.ZodTuple,rest:null,...yt(t)})};class Zu extends St{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==Le.object)return Ae(r,{code:Ce.invalid_type,expected:Le.object,received:r.parsedType}),lt;const s=[],o=this._def.keyType,l=this._def.valueType;for(const u in r.data)s.push({key:o._parse(new Qs(r,u,r.path,u)),value:l._parse(new Qs(r,r.data[u],r.path,u)),alwaysSet:u in r.data});return r.common.async?sr.mergeObjectAsync(n,s):sr.mergeObjectSync(n,s)}get element(){return this._def.valueType}static create(t,n,r){return n instanceof St?new Zu({keyType:t,valueType:n,typeName:it.ZodRecord,...yt(r)}):new Zu({keyType:Cs.create(),valueType:t,typeName:it.ZodRecord,...yt(n)})}}class rh extends St{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==Le.map)return Ae(r,{code:Ce.invalid_type,expected:Le.map,received:r.parsedType}),lt;const s=this._def.keyType,o=this._def.valueType,l=[...r.data.entries()].map(([u,d],f)=>({key:s._parse(new Qs(r,u,r.path,[f,"key"])),value:o._parse(new Qs(r,d,r.path,[f,"value"]))}));if(r.common.async){const u=new Map;return Promise.resolve().then(async()=>{for(const d of l){const f=await d.key,h=await d.value;if(f.status==="aborted"||h.status==="aborted")return lt;(f.status==="dirty"||h.status==="dirty")&&n.dirty(),u.set(f.value,h.value)}return{status:n.value,value:u}})}else{const u=new Map;for(const d of l){const f=d.key,h=d.value;if(f.status==="aborted"||h.status==="aborted")return lt;(f.status==="dirty"||h.status==="dirty")&&n.dirty(),u.set(f.value,h.value)}return{status:n.value,value:u}}}}rh.create=(e,t,n)=>new rh({valueType:t,keyType:e,typeName:it.ZodMap,...yt(n)});class Ni extends St{_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==Le.set)return Ae(r,{code:Ce.invalid_type,expected:Le.set,received:r.parsedType}),lt;const s=this._def;s.minSize!==null&&r.data.sizes.maxSize.value&&(Ae(r,{code:Ce.too_big,maximum:s.maxSize.value,type:"set",inclusive:!0,exact:!1,message:s.maxSize.message}),n.dirty());const o=this._def.valueType;function l(d){const f=new Set;for(const h of d){if(h.status==="aborted")return lt;h.status==="dirty"&&n.dirty(),f.add(h.value)}return{status:n.value,value:f}}const u=[...r.data.values()].map((d,f)=>o._parse(new Qs(r,d,r.path,f)));return r.common.async?Promise.all(u).then(d=>l(d)):l(u)}min(t,n){return new Ni({...this._def,minSize:{value:t,message:Ze.toString(n)}})}max(t,n){return new Ni({...this._def,maxSize:{value:t,message:Ze.toString(n)}})}size(t,n){return this.min(t,n).max(t,n)}nonempty(t){return this.min(1,t)}}Ni.create=(e,t)=>new Ni({valueType:e,minSize:null,maxSize:null,typeName:it.ZodSet,...yt(t)});class Ol extends St{constructor(){super(...arguments),this.validate=this.implement}_parse(t){const{ctx:n}=this._processInputParams(t);if(n.parsedType!==Le.function)return Ae(n,{code:Ce.invalid_type,expected:Le.function,received:n.parsedType}),lt;function r(u,d){return Xp({data:u,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,Yp(),Vl].filter(f=>!!f),issueData:{code:Ce.invalid_arguments,argumentsError:d}})}function s(u,d){return Xp({data:u,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,Yp(),Vl].filter(f=>!!f),issueData:{code:Ce.invalid_return_type,returnTypeError:d}})}const o={errorMap:n.common.contextualErrorMap},l=n.data;if(this._def.returns instanceof ql){const u=this;return fr(async function(...d){const f=new Hr([]),h=await u._def.args.parseAsync(d,o).catch(x=>{throw f.addIssue(r(d,x)),f}),m=await Reflect.apply(l,this,h);return await u._def.returns._def.type.parseAsync(m,o).catch(x=>{throw f.addIssue(s(m,x)),f})})}else{const u=this;return fr(function(...d){const f=u._def.args.safeParse(d,o);if(!f.success)throw new Hr([r(d,f.error)]);const h=Reflect.apply(l,this,f.data),m=u._def.returns.safeParse(h,o);if(!m.success)throw new Hr([s(h,m.error)]);return m.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new Ol({...this._def,args:Zs.create(t).rest(mi.create())})}returns(t){return new Ol({...this._def,returns:t})}implement(t){return this.parse(t)}strictImplement(t){return this.parse(t)}static create(t,n,r){return new Ol({args:t||Zs.create([]).rest(mi.create()),returns:n||mi.create(),typeName:it.ZodFunction,...yt(r)})}}class Yu extends St{get schema(){return this._def.getter()}_parse(t){const{ctx:n}=this._processInputParams(t);return this._def.getter()._parse({data:n.data,path:n.path,parent:n})}}Yu.create=(e,t)=>new Yu({getter:e,typeName:it.ZodLazy,...yt(t)});class Xu extends St{_parse(t){if(t.data!==this._def.value){const n=this._getOrReturnCtx(t);return Ae(n,{received:n.data,code:Ce.invalid_literal,expected:this._def.value}),lt}return{status:"valid",value:t.data}}get value(){return this._def.value}}Xu.create=(e,t)=>new Xu({value:e,typeName:it.ZodLiteral,...yt(t)});function O_(e,t){return new Ea({values:e,typeName:it.ZodEnum,...yt(t)})}class Ea extends St{constructor(){super(...arguments),yu.set(this,void 0)}_parse(t){if(typeof t.data!="string"){const n=this._getOrReturnCtx(t),r=this._def.values;return Ae(n,{expected:Ot.joinValues(r),received:n.parsedType,code:Ce.invalid_type}),lt}if(eh(this,yu)||M_(this,yu,new Set(this._def.values)),!eh(this,yu).has(t.data)){const n=this._getOrReturnCtx(t),r=this._def.values;return Ae(n,{received:n.data,code:Ce.invalid_enum_value,options:r}),lt}return fr(t.data)}get options(){return this._def.values}get enum(){const t={};for(const n of this._def.values)t[n]=n;return t}get Values(){const t={};for(const n of this._def.values)t[n]=n;return t}get Enum(){const t={};for(const n of this._def.values)t[n]=n;return t}extract(t,n=this._def){return Ea.create(t,{...this._def,...n})}exclude(t,n=this._def){return Ea.create(this.options.filter(r=>!t.includes(r)),{...this._def,...n})}}yu=new WeakMap;Ea.create=O_;class ed extends St{constructor(){super(...arguments),bu.set(this,void 0)}_parse(t){const n=Ot.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(t);if(r.parsedType!==Le.string&&r.parsedType!==Le.number){const s=Ot.objectValues(n);return Ae(r,{expected:Ot.joinValues(s),received:r.parsedType,code:Ce.invalid_type}),lt}if(eh(this,bu)||M_(this,bu,new Set(Ot.getValidEnumValues(this._def.values))),!eh(this,bu).has(t.data)){const s=Ot.objectValues(n);return Ae(r,{received:r.data,code:Ce.invalid_enum_value,options:s}),lt}return fr(t.data)}get enum(){return this._def.values}}bu=new WeakMap;ed.create=(e,t)=>new ed({values:e,typeName:it.ZodNativeEnum,...yt(t)});class ql extends St{unwrap(){return this._def.type}_parse(t){const{ctx:n}=this._processInputParams(t);if(n.parsedType!==Le.promise&&n.common.async===!1)return Ae(n,{code:Ce.invalid_type,expected:Le.promise,received:n.parsedType}),lt;const r=n.parsedType===Le.promise?n.data:Promise.resolve(n.data);return fr(r.then(s=>this._def.type.parseAsync(s,{path:n.path,errorMap:n.common.contextualErrorMap})))}}ql.create=(e,t)=>new ql({type:e,typeName:it.ZodPromise,...yt(t)});class Ms extends St{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===it.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(t){const{status:n,ctx:r}=this._processInputParams(t),s=this._def.effect||null,o={addIssue:l=>{Ae(r,l),l.fatal?n.abort():n.dirty()},get path(){return r.path}};if(o.addIssue=o.addIssue.bind(o),s.type==="preprocess"){const l=s.transform(r.data,o);if(r.common.async)return Promise.resolve(l).then(async u=>{if(n.value==="aborted")return lt;const d=await this._def.schema._parseAsync({data:u,path:r.path,parent:r});return d.status==="aborted"?lt:d.status==="dirty"||n.value==="dirty"?Nl(d.value):d});{if(n.value==="aborted")return lt;const u=this._def.schema._parseSync({data:l,path:r.path,parent:r});return u.status==="aborted"?lt:u.status==="dirty"||n.value==="dirty"?Nl(u.value):u}}if(s.type==="refinement"){const l=u=>{const d=s.refinement(u,o);if(r.common.async)return Promise.resolve(d);if(d instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return u};if(r.common.async===!1){const u=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});return u.status==="aborted"?lt:(u.status==="dirty"&&n.dirty(),l(u.value),{status:n.value,value:u.value})}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(u=>u.status==="aborted"?lt:(u.status==="dirty"&&n.dirty(),l(u.value).then(()=>({status:n.value,value:u.value}))))}if(s.type==="transform")if(r.common.async===!1){const l=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if(!Hu(l))return l;const u=s.transform(l.value,o);if(u instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:n.value,value:u}}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(l=>Hu(l)?Promise.resolve(s.transform(l.value,o)).then(u=>({status:n.value,value:u})):l);Ot.assertNever(s)}}Ms.create=(e,t,n)=>new Ms({schema:e,typeName:it.ZodEffects,effect:t,...yt(n)});Ms.createWithPreprocess=(e,t,n)=>new Ms({schema:t,effect:{type:"preprocess",transform:e},typeName:it.ZodEffects,...yt(n)});class Ws extends St{_parse(t){return this._getType(t)===Le.undefined?fr(void 0):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}}Ws.create=(e,t)=>new Ws({innerType:e,typeName:it.ZodOptional,...yt(t)});class ka extends St{_parse(t){return this._getType(t)===Le.null?fr(null):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}}ka.create=(e,t)=>new ka({innerType:e,typeName:it.ZodNullable,...yt(t)});class td extends St{_parse(t){const{ctx:n}=this._processInputParams(t);let r=n.data;return n.parsedType===Le.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:n.path,parent:n})}removeDefault(){return this._def.innerType}}td.create=(e,t)=>new td({innerType:e,typeName:it.ZodDefault,defaultValue:typeof t.default=="function"?t.default:()=>t.default,...yt(t)});class nd extends St{_parse(t){const{ctx:n}=this._processInputParams(t),r={...n,common:{...n.common,issues:[]}},s=this._def.innerType._parse({data:r.data,path:r.path,parent:{...r}});return qu(s)?s.then(o=>({status:"valid",value:o.status==="valid"?o.value:this._def.catchValue({get error(){return new Hr(r.common.issues)},input:r.data})})):{status:"valid",value:s.status==="valid"?s.value:this._def.catchValue({get error(){return new Hr(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}}nd.create=(e,t)=>new nd({innerType:e,typeName:it.ZodCatch,catchValue:typeof t.catch=="function"?t.catch:()=>t.catch,...yt(t)});class sh extends St{_parse(t){if(this._getType(t)!==Le.nan){const r=this._getOrReturnCtx(t);return Ae(r,{code:Ce.invalid_type,expected:Le.nan,received:r.parsedType}),lt}return{status:"valid",value:t.data}}}sh.create=e=>new sh({typeName:it.ZodNaN,...yt(e)});const $6=Symbol("zod_brand");class Rx extends St{_parse(t){const{ctx:n}=this._processInputParams(t),r=n.data;return this._def.type._parse({data:r,path:n.path,parent:n})}unwrap(){return this._def.type}}class kd extends St{_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.common.async)return(async()=>{const o=await this._def.in._parseAsync({data:r.data,path:r.path,parent:r});return o.status==="aborted"?lt:o.status==="dirty"?(n.dirty(),Nl(o.value)):this._def.out._parseAsync({data:o.value,path:r.path,parent:r})})();{const s=this._def.in._parseSync({data:r.data,path:r.path,parent:r});return s.status==="aborted"?lt:s.status==="dirty"?(n.dirty(),{status:"dirty",value:s.value}):this._def.out._parseSync({data:s.value,path:r.path,parent:r})}}static create(t,n){return new kd({in:t,out:n,typeName:it.ZodPipeline})}}class rd extends St{_parse(t){const n=this._def.innerType._parse(t),r=s=>(Hu(s)&&(s.value=Object.freeze(s.value)),s);return qu(n)?n.then(s=>r(s)):r(n)}unwrap(){return this._def.innerType}}rd.create=(e,t)=>new rd({innerType:e,typeName:it.ZodReadonly,...yt(t)});function I_(e,t={},n){return e?Hl.create().superRefine((r,s)=>{var o,l;if(!e(r)){const u=typeof t=="function"?t(r):typeof t=="string"?{message:t}:t,d=(l=(o=u.fatal)!==null&&o!==void 0?o:n)!==null&&l!==void 0?l:!0,f=typeof u=="string"?{message:u}:u;s.addIssue({code:"custom",...f,fatal:d})}}):Hl.create()}const B6={object:gn.lazycreate};var it;(function(e){e.ZodString="ZodString",e.ZodNumber="ZodNumber",e.ZodNaN="ZodNaN",e.ZodBigInt="ZodBigInt",e.ZodBoolean="ZodBoolean",e.ZodDate="ZodDate",e.ZodSymbol="ZodSymbol",e.ZodUndefined="ZodUndefined",e.ZodNull="ZodNull",e.ZodAny="ZodAny",e.ZodUnknown="ZodUnknown",e.ZodNever="ZodNever",e.ZodVoid="ZodVoid",e.ZodArray="ZodArray",e.ZodObject="ZodObject",e.ZodUnion="ZodUnion",e.ZodDiscriminatedUnion="ZodDiscriminatedUnion",e.ZodIntersection="ZodIntersection",e.ZodTuple="ZodTuple",e.ZodRecord="ZodRecord",e.ZodMap="ZodMap",e.ZodSet="ZodSet",e.ZodFunction="ZodFunction",e.ZodLazy="ZodLazy",e.ZodLiteral="ZodLiteral",e.ZodEnum="ZodEnum",e.ZodEffects="ZodEffects",e.ZodNativeEnum="ZodNativeEnum",e.ZodOptional="ZodOptional",e.ZodNullable="ZodNullable",e.ZodDefault="ZodDefault",e.ZodCatch="ZodCatch",e.ZodPromise="ZodPromise",e.ZodBranded="ZodBranded",e.ZodPipeline="ZodPipeline",e.ZodReadonly="ZodReadonly"})(it||(it={}));const z6=(e,t={message:`Input not instance of ${e.name}`})=>I_(n=>n instanceof e,t),A_=Cs.create,D_=Sa.create,U6=sh.create,V6=Ca.create,F_=Ku.create,H6=Ti.create,q6=th.create,K6=Wu.create,W6=Gu.create,G6=Hl.create,J6=mi.create,Q6=Ro.create,Z6=nh.create,Y6=ks.create,X6=gn.create,e8=gn.strictCreate,t8=Ju.create,n8=Wh.create,r8=Qu.create,s8=Zs.create,o8=Zu.create,a8=rh.create,i8=Ni.create,l8=Ol.create,c8=Yu.create,u8=Xu.create,d8=Ea.create,f8=ed.create,p8=ql.create,j1=Ms.create,h8=Ws.create,g8=ka.create,m8=Ms.createWithPreprocess,v8=kd.create,y8=()=>A_().optional(),b8=()=>D_().optional(),x8=()=>F_().optional(),w8={string:(e=>Cs.create({...e,coerce:!0})),number:(e=>Sa.create({...e,coerce:!0})),boolean:(e=>Ku.create({...e,coerce:!0})),bigint:(e=>Ca.create({...e,coerce:!0})),date:(e=>Ti.create({...e,coerce:!0}))},S8=lt;var P=Object.freeze({__proto__:null,defaultErrorMap:Vl,setErrorMap:S6,getErrorMap:Yp,makeIssue:Xp,EMPTY_PATH:C6,addIssueToContext:Ae,ParseStatus:sr,INVALID:lt,DIRTY:Nl,OK:fr,isAborted:Jy,isDirty:Qy,isValid:Hu,isAsync:qu,get util(){return Ot},get objectUtil(){return Gy},ZodParsedType:Le,getParsedType:pa,ZodType:St,datetimeRegex:P_,ZodString:Cs,ZodNumber:Sa,ZodBigInt:Ca,ZodBoolean:Ku,ZodDate:Ti,ZodSymbol:th,ZodUndefined:Wu,ZodNull:Gu,ZodAny:Hl,ZodUnknown:mi,ZodNever:Ro,ZodVoid:nh,ZodArray:ks,ZodObject:gn,ZodUnion:Ju,ZodDiscriminatedUnion:Wh,ZodIntersection:Qu,ZodTuple:Zs,ZodRecord:Zu,ZodMap:rh,ZodSet:Ni,ZodFunction:Ol,ZodLazy:Yu,ZodLiteral:Xu,ZodEnum:Ea,ZodNativeEnum:ed,ZodPromise:ql,ZodEffects:Ms,ZodTransformer:Ms,ZodOptional:Ws,ZodNullable:ka,ZodDefault:td,ZodCatch:nd,ZodNaN:sh,BRAND:$6,ZodBranded:Rx,ZodPipeline:kd,ZodReadonly:rd,custom:I_,Schema:St,ZodSchema:St,late:B6,get ZodFirstPartyTypeKind(){return it},coerce:w8,any:G6,array:Y6,bigint:V6,boolean:F_,date:H6,discriminatedUnion:n8,effect:j1,enum:d8,function:l8,instanceof:z6,intersection:r8,lazy:c8,literal:u8,map:a8,nan:U6,nativeEnum:f8,never:Q6,null:W6,nullable:g8,number:D_,object:X6,oboolean:x8,onumber:b8,optional:h8,ostring:y8,pipeline:v8,preprocess:m8,promise:p8,record:o8,set:i8,strictObject:e8,string:A_,symbol:q6,transformer:j1,tuple:s8,undefined:K6,union:t8,unknown:J6,void:Z6,NEVER:S8,ZodIssueCode:Ce,quotelessJson:w6,ZodError:Hr}),L_=y.createContext({dragDropManager:void 0}),os;(function(e){e.SOURCE="SOURCE",e.TARGET="TARGET"})(os||(os={}));function gt(e,t){for(var n=arguments.length,r=new Array(n>2?n-2:0),s=2;s-1})}var T8={type:Px,payload:{clientOffset:null,sourceClientOffset:null}};function N8(e){return function(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{publishSource:!0},s=r.publishSource,o=s===void 0?!0:s,l=r.clientOffset,u=r.getSourceClientOffset,d=e.getMonitor(),f=e.getRegistry();e.dispatch(T1(l)),M8(n,d,f);var h=P8(n,d);if(h===null){e.dispatch(T8);return}var m=null;if(l){if(!u)throw new Error("getSourceClientOffset must be defined");_8(u),m=u(h)}e.dispatch(T1(l,m));var g=f.getSource(h),x=g.beginDrag(d,h);if(x!=null){R8(x),f.pinSource(h);var b=f.getSourceType(h);return{type:Gh,payload:{itemType:b,item:x,sourceId:h,clientOffset:l||null,sourceClientOffset:m||null,isSourcePublic:!!o}}}}}function M8(e,t,n){gt(!t.isDragging(),"Cannot call beginDrag while dragging."),e.forEach(function(r){gt(n.getSource(r),"Expected sourceIds to be registered.")})}function _8(e){gt(typeof e=="function","When clientOffset is provided, getSourceClientOffset must be a function.")}function R8(e){gt($_(e),"Item must be an object.")}function P8(e,t){for(var n=null,r=e.length-1;r>=0;r--)if(t.canDragSource(e[r])){n=e[r];break}return n}function O8(e){return function(){var n=e.getMonitor();if(n.isDragging())return{type:Ox}}}function Yy(e,t){return t===null?e===null:Array.isArray(e)?e.some(function(n){return n===t}):e===t}function I8(e){return function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s=r.clientOffset;A8(n);var o=n.slice(0),l=e.getMonitor(),u=e.getRegistry();D8(o,l,u);var d=l.getItemType();return F8(o,u,d),L8(o,l,u),{type:Jh,payload:{targetIds:o,clientOffset:s||null}}}}function A8(e){gt(Array.isArray(e),"Expected targetIds to be an array.")}function D8(e,t,n){gt(t.isDragging(),"Cannot call hover while not dragging."),gt(!t.didDrop(),"Cannot call hover after drop.");for(var r=0;r=0;r--){var s=e[r],o=t.getTargetType(s);Yy(o,n)||e.splice(r,1)}}function L8(e,t,n){e.forEach(function(r){var s=n.getTarget(r);s.hover(t,r)})}function N1(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,r)}return n}function M1(e){for(var t=1;t0&&arguments[0]!==void 0?arguments[0]:{},r=e.getMonitor(),s=e.getRegistry();z8(r);var o=H8(r);o.forEach(function(l,u){var d=U8(l,u,s,r),f={type:Qh,payload:{dropResult:M1(M1({},n),d)}};e.dispatch(f)})}}function z8(e){gt(e.isDragging(),"Cannot call drop while not dragging."),gt(!e.didDrop(),"Cannot call drop twice during one drag operation.")}function U8(e,t,n,r){var s=n.getTarget(e),o=s?s.drop(r,e):void 0;return V8(o),typeof o>"u"&&(o=t===0?{}:r.getDropResult()),o}function V8(e){gt(typeof e>"u"||$_(e),"Drop result must either be an object or undefined.")}function H8(e){var t=e.getTargetIds().filter(e.canDropOnTarget,e);return t.reverse(),t}function q8(e){return function(){var n=e.getMonitor(),r=e.getRegistry();K8(n);var s=n.getSourceId();if(s!=null){var o=r.getSource(s,!0);o.endDrag(n,s),r.unpinSource()}return{type:Zh}}}function K8(e){gt(e.isDragging(),"Cannot call endDrag while not dragging.")}function W8(e){return{beginDrag:N8(e),publishDragSource:O8(e),hover:I8(e),drop:B8(e),endDrag:q8(e)}}function G8(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function J8(e,t){for(var n=0;n0;r.backend&&(s&&!r.isSetUp?(r.backend.setup(),r.isSetUp=!0):!s&&r.isSetUp&&(r.backend.teardown(),r.isSetUp=!1))}),this.store=t,this.monitor=n,t.subscribe(this.handleRefCountChange)}return Q8(e,[{key:"receiveBackend",value:function(n){this.backend=n}},{key:"getMonitor",value:function(){return this.monitor}},{key:"getBackend",value:function(){return this.backend}},{key:"getRegistry",value:function(){return this.monitor.registry}},{key:"getActions",value:function(){var n=this,r=this.store.dispatch;function s(l){return function(){for(var u=arguments.length,d=new Array(u),f=0;f"u"&&(n=t,t=void 0),typeof n<"u"){if(typeof n!="function")throw new Error(ns(1));return n(B_)(e,t)}if(typeof e!="function")throw new Error(ns(2));var s=e,o=t,l=[],u=l,d=!1;function f(){u===l&&(u=l.slice())}function h(){if(d)throw new Error(ns(3));return o}function m(w){if(typeof w!="function")throw new Error(ns(4));if(d)throw new Error(ns(5));var C=!0;return f(),u.push(w),function(){if(C){if(d)throw new Error(ns(6));C=!1,f();var j=u.indexOf(w);u.splice(j,1),l=null}}}function g(w){if(!Y8(w))throw new Error(ns(7));if(typeof w.type>"u")throw new Error(ns(8));if(d)throw new Error(ns(9));try{d=!0,o=s(o,w)}finally{d=!1}for(var C=l=u,k=0;k2&&arguments[2]!==void 0?arguments[2]:X8;if(e.length!==t.length)return!1;for(var r=0;r0&&arguments[0]!==void 0?arguments[0]:A1,t=arguments.length>1?arguments[1]:void 0,n=t.payload;switch(t.type){case Px:case Gh:return{initialSourceClientOffset:n.sourceClientOffset,initialClientOffset:n.clientOffset,clientOffset:n.clientOffset};case Jh:return eV(e.clientOffset,n.clientOffset)?e:I1(I1({},e),{},{clientOffset:n.clientOffset});case Zh:case Qh:return A1;default:return e}}var Ix="dnd-core/ADD_SOURCE",Ax="dnd-core/ADD_TARGET",Dx="dnd-core/REMOVE_SOURCE",Yh="dnd-core/REMOVE_TARGET";function sV(e){return{type:Ix,payload:{sourceId:e}}}function oV(e){return{type:Ax,payload:{targetId:e}}}function aV(e){return{type:Dx,payload:{sourceId:e}}}function iV(e){return{type:Yh,payload:{targetId:e}}}function D1(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,r)}return n}function rs(e){for(var t=1;t0&&arguments[0]!==void 0?arguments[0]:cV,t=arguments.length>1?arguments[1]:void 0,n=t.payload;switch(t.type){case Gh:return rs(rs({},e),{},{itemType:n.itemType,item:n.item,sourceId:n.sourceId,isSourcePublic:n.isSourcePublic,dropResult:null,didDrop:!1});case Ox:return rs(rs({},e),{},{isSourcePublic:!0});case Jh:return rs(rs({},e),{},{targetIds:n.targetIds});case Yh:return e.targetIds.indexOf(n.targetId)===-1?e:rs(rs({},e),{},{targetIds:E8(e.targetIds,n.targetId)});case Qh:return rs(rs({},e),{},{dropResult:n.dropResult,didDrop:!0,targetIds:[]});case Zh:return rs(rs({},e),{},{itemType:null,item:null,sourceId:null,dropResult:null,didDrop:!1,isSourcePublic:null,targetIds:[]});default:return e}}function dV(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case Ix:case Ax:return e+1;case Dx:case Yh:return e-1;default:return e}}var oh=[],Fx=[];oh.__IS_NONE__=!0;Fx.__IS_ALL__=!0;function fV(e,t){if(e===oh)return!1;if(e===Fx||typeof t>"u")return!0;var n=j8(t,e);return n.length>0}function pV(){var e=arguments.length>1?arguments[1]:void 0;switch(e.type){case Jh:break;case Ix:case Ax:case Yh:case Dx:return oh;case Gh:case Ox:case Zh:case Qh:default:return Fx}var t=e.payload,n=t.targetIds,r=n===void 0?[]:n,s=t.prevTargetIds,o=s===void 0?[]:s,l=k8(r,o),u=l.length>0||!tV(r,o);if(!u)return oh;var d=o[o.length-1],f=r[r.length-1];return d!==f&&(d&&l.push(d),f&&l.push(f)),l}function hV(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e+1}function F1(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,r)}return n}function L1(e){for(var t=1;t0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;return{dirtyHandlerIds:pV(e.dirtyHandlerIds,{type:t.type,payload:L1(L1({},t.payload),{},{prevTargetIds:C8(e,"dragOperation.targetIds",[])})}),dragOffset:rV(e.dragOffset,t),refCount:dV(e.refCount,t),dragOperation:uV(e.dragOperation,t),stateId:hV(e.stateId)}}function vV(e,t){return{x:e.x+t.x,y:e.y+t.y}}function z_(e,t){return{x:e.x-t.x,y:e.y-t.y}}function yV(e){var t=e.clientOffset,n=e.initialClientOffset,r=e.initialSourceClientOffset;return!t||!n||!r?null:z_(vV(t,r),n)}function bV(e){var t=e.clientOffset,n=e.initialClientOffset;return!t||!n?null:z_(t,n)}function xV(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function wV(e,t){for(var n=0;n1&&arguments[1]!==void 0?arguments[1]:{handlerIds:void 0},o=s.handlerIds;gt(typeof n=="function","listener must be a function."),gt(typeof o>"u"||Array.isArray(o),"handlerIds, when specified, must be an array of strings.");var l=this.store.getState().stateId,u=function(){var f=r.store.getState(),h=f.stateId;try{var m=h===l||h===l+1&&!fV(f.dirtyHandlerIds,o);m||n()}finally{l=h}};return this.store.subscribe(u)}},{key:"subscribeToOffsetChange",value:function(n){var r=this;gt(typeof n=="function","listener must be a function.");var s=this.store.getState().dragOffset,o=function(){var u=r.store.getState().dragOffset;u!==s&&(s=u,n())};return this.store.subscribe(o)}},{key:"canDragSource",value:function(n){if(!n)return!1;var r=this.registry.getSource(n);return gt(r,"Expected to find a valid source. sourceId=".concat(n)),this.isDragging()?!1:r.canDrag(this,n)}},{key:"canDropOnTarget",value:function(n){if(!n)return!1;var r=this.registry.getTarget(n);if(gt(r,"Expected to find a valid target. targetId=".concat(n)),!this.isDragging()||this.didDrop())return!1;var s=this.registry.getTargetType(n),o=this.getItemType();return Yy(s,o)&&r.canDrop(this,n)}},{key:"isDragging",value:function(){return!!this.getItemType()}},{key:"isDraggingSource",value:function(n){if(!n)return!1;var r=this.registry.getSource(n,!0);if(gt(r,"Expected to find a valid source. sourceId=".concat(n)),!this.isDragging()||!this.isSourcePublic())return!1;var s=this.registry.getSourceType(n),o=this.getItemType();return s!==o?!1:r.isDragging(this,n)}},{key:"isOverTarget",value:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{shallow:!1};if(!n)return!1;var s=r.shallow;if(!this.isDragging())return!1;var o=this.registry.getTargetType(n),l=this.getItemType();if(l&&!Yy(o,l))return!1;var u=this.getTargetIds();if(!u.length)return!1;var d=u.indexOf(n);return s?d===u.length-1:d>-1}},{key:"getItemType",value:function(){return this.store.getState().dragOperation.itemType}},{key:"getItem",value:function(){return this.store.getState().dragOperation.item}},{key:"getSourceId",value:function(){return this.store.getState().dragOperation.sourceId}},{key:"getTargetIds",value:function(){return this.store.getState().dragOperation.targetIds}},{key:"getDropResult",value:function(){return this.store.getState().dragOperation.dropResult}},{key:"didDrop",value:function(){return this.store.getState().dragOperation.didDrop}},{key:"isSourcePublic",value:function(){return!!this.store.getState().dragOperation.isSourcePublic}},{key:"getInitialClientOffset",value:function(){return this.store.getState().dragOffset.initialClientOffset}},{key:"getInitialSourceClientOffset",value:function(){return this.store.getState().dragOffset.initialSourceClientOffset}},{key:"getClientOffset",value:function(){return this.store.getState().dragOffset.clientOffset}},{key:"getSourceClientOffset",value:function(){return yV(this.store.getState().dragOffset)}},{key:"getDifferenceFromInitialOffset",value:function(){return bV(this.store.getState().dragOffset)}}]),e})(),EV=0;function kV(){return EV++}function bp(e){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?bp=function(n){return typeof n}:bp=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},bp(e)}function jV(e){gt(typeof e.canDrag=="function","Expected canDrag to be a function."),gt(typeof e.beginDrag=="function","Expected beginDrag to be a function."),gt(typeof e.endDrag=="function","Expected endDrag to be a function.")}function TV(e){gt(typeof e.canDrop=="function","Expected canDrop to be a function."),gt(typeof e.hover=="function","Expected hover to be a function."),gt(typeof e.drop=="function","Expected beginDrag to be a function.")}function Xy(e,t){if(t&&Array.isArray(e)){e.forEach(function(n){return Xy(n,!1)});return}gt(typeof e=="string"||bp(e)==="symbol",t?"Type can only be a string, a symbol, or an array of either.":"Type can only be a string or a symbol.")}const B1=typeof global<"u"?global:self,U_=B1.MutationObserver||B1.WebKitMutationObserver;function V_(e){return function(){const n=setTimeout(s,0),r=setInterval(s,50);function s(){clearTimeout(n),clearInterval(r),e()}}}function NV(e){let t=1;const n=new U_(e),r=document.createTextNode("");return n.observe(r,{characterData:!0}),function(){t=-t,r.data=t}}const MV=typeof U_=="function"?NV:V_;class _V{enqueueTask(t){const{queue:n,requestFlush:r}=this;n.length||(r(),this.flushing=!0),n[n.length]=t}constructor(){this.queue=[],this.pendingErrors=[],this.flushing=!1,this.index=0,this.capacity=1024,this.flush=()=>{const{queue:t}=this;for(;this.indexthis.capacity){for(let r=0,s=t.length-this.index;r{this.pendingErrors.push(t),this.requestErrorThrow()},this.requestFlush=MV(this.flush),this.requestErrorThrow=V_(()=>{if(this.pendingErrors.length)throw this.pendingErrors.shift()})}}class RV{call(){try{this.task&&this.task()}catch(t){this.onError(t)}finally{this.task=null,this.release(this)}}constructor(t,n){this.onError=t,this.release=n,this.task=null}}class PV{create(t){const n=this.freeTasks,r=n.length?n.pop():new RV(this.onError,s=>n[n.length]=s);return r.task=t,r}constructor(t){this.onError=t,this.freeTasks=[]}}const H_=new _V,OV=new PV(H_.registerPendingError);function IV(e){H_.enqueueTask(OV.create(e))}function AV(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function DV(e,t){for(var n=0;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n1&&arguments[1]!==void 0?arguments[1]:!1;gt(this.isSourceId(n),"Expected a valid source ID.");var s=r&&n===this.pinnedSourceId,o=s?this.pinnedSource:this.dragSources.get(n);return o}},{key:"getTarget",value:function(n){return gt(this.isTargetId(n),"Expected a valid target ID."),this.dropTargets.get(n)}},{key:"getSourceType",value:function(n){return gt(this.isSourceId(n),"Expected a valid source ID."),this.types.get(n)}},{key:"getTargetType",value:function(n){return gt(this.isTargetId(n),"Expected a valid target ID."),this.types.get(n)}},{key:"isSourceId",value:function(n){var r=U1(n);return r===os.SOURCE}},{key:"isTargetId",value:function(n){var r=U1(n);return r===os.TARGET}},{key:"removeSource",value:function(n){var r=this;gt(this.getSource(n),"Expected an existing source."),this.store.dispatch(aV(n)),IV(function(){r.dragSources.delete(n),r.types.delete(n)})}},{key:"removeTarget",value:function(n){gt(this.getTarget(n),"Expected an existing target."),this.store.dispatch(iV(n)),this.dropTargets.delete(n),this.types.delete(n)}},{key:"pinSource",value:function(n){var r=this.getSource(n);gt(r,"Expected an existing source."),this.pinnedSourceId=n,this.pinnedSource=r}},{key:"unpinSource",value:function(){gt(this.pinnedSource,"No source is pinned at the time."),this.pinnedSourceId=null,this.pinnedSource=null}},{key:"addHandler",value:function(n,r,s){var o=VV(n);return this.types.set(o,r),n===os.SOURCE?this.dragSources.set(o,s):n===os.TARGET&&this.dropTargets.set(o,s),o}}]),e})();function qV(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:void 0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,s=KV(r),o=new CV(s,new HV(s)),l=new Z8(s,o),u=e(l,t,n);return l.receiveBackend(u),l}function KV(e){var t=typeof window<"u"&&window.__REDUX_DEVTOOLS_EXTENSION__;return B_(mV,e&&t&&t({name:"dnd-core",instanceId:"dnd-core"}))}var WV=["children"];function GV(e,t){return YV(e)||ZV(e,t)||QV(e,t)||JV()}function JV(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function QV(e,t){if(e){if(typeof e=="string")return H1(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return H1(e,t)}}function H1(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function eH(e,t){if(e==null)return{};var n={},r=Object.keys(e),s,o;for(o=0;o=0)&&(n[s]=e[s]);return n}var q1=0,xp=Symbol.for("__REACT_DND_CONTEXT_INSTANCE__"),tH=y.memo(function(t){var n=t.children,r=XV(t,WV),s=nH(r),o=GV(s,2),l=o[0],u=o[1];return y.useEffect(function(){if(u){var d=q_();return++q1,function(){--q1===0&&(d[xp]=null)}}},[]),i.jsx(L_.Provider,Object.assign({value:l},{children:n}),void 0)});function nH(e){if("manager"in e){var t={dragDropManager:e.manager};return[t,!1]}var n=rH(e.backend,e.context,e.options,e.debugMode),r=!e.context;return[n,r]}function rH(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:q_(),n=arguments.length>2?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0,s=t;return s[xp]||(s[xp]={dragDropManager:qV(e,t,n,r)}),s[xp]}function q_(){return typeof global<"u"?global:window}function sH(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function oH(e,t){for(var n=0;n, or turn it into a ")+"drag source or a drop target itself.")}}function pH(e){return function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(!y.isValidElement(t)){var r=t;return e(r,n),r}var s=t;fH(s);var o=n?function(l){return e(l,n)}:e;return hH(s,o)}}function K_(e){var t={};return Object.keys(e).forEach(function(n){var r=e[n];if(n.endsWith("Ref"))t[n]=e[n];else{var s=pH(r);t[n]=function(){return s}}}),t}function G1(e,t){typeof e=="function"?e(t):e.current=t}function hH(e,t){var n=e.ref;return gt(typeof n!="string","Cannot connect React DnD to an element with an existing string ref. Please convert it to use a callback ref instead, or wrap it into a or

. Read more: https://reactjs.org/docs/refs-and-the-dom.html#callback-refs"),n?y.cloneElement(e,{ref:function(s){G1(n,s),G1(t,s)}}):y.cloneElement(e,{ref:t})}function wp(e){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?wp=function(n){return typeof n}:wp=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},wp(e)}function eb(e){return e!==null&&wp(e)==="object"&&Object.prototype.hasOwnProperty.call(e,"current")}function tb(e,t,n,r){var s=void 0;if(s!==void 0)return!!s;if(e===t)return!0;if(typeof e!="object"||!e||typeof t!="object"||!t)return!1;var o=Object.keys(e),l=Object.keys(t);if(o.length!==l.length)return!1;for(var u=Object.prototype.hasOwnProperty.bind(t),d=0;de.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n0}},{key:"leave",value:function(n){var r=this.entered.length;return this.entered=Eq(this.entered.filter(this.isNodeInDocument),n),r>0&&this.entered.length===0}},{key:"reset",value:function(){this.entered=[]}}]),e})(),_q=J_(function(){return/firefox/i.test(navigator.userAgent)}),Q_=J_(function(){return!!window.safari});function Rq(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Pq(e,t){for(var n=0;nn)h=m-1;else return s[m]}d=Math.max(0,h);var x=n-r[d],b=x*x;return s[d]+o[d]*x+l[d]*b+u[d]*x*b}}]),e})(),Iq=1;function Z_(e){var t=e.nodeType===Iq?e:e.parentElement;if(!t)return null;var n=t.getBoundingClientRect(),r=n.top,s=n.left;return{x:s,y:r}}function Qf(e){return{x:e.clientX,y:e.clientY}}function Aq(e){var t;return e.nodeName==="IMG"&&(_q()||!((t=document.documentElement)!==null&&t!==void 0&&t.contains(e)))}function Dq(e,t,n,r){var s=e?t.width:n,o=e?t.height:r;return Q_()&&e&&(o/=window.devicePixelRatio,s/=window.devicePixelRatio),{dragPreviewWidth:s,dragPreviewHeight:o}}function Fq(e,t,n,r,s){var o=Aq(t),l=o?e:t,u=Z_(l),d={x:n.x-u.x,y:n.y-u.y},f=e.offsetWidth,h=e.offsetHeight,m=r.anchorX,g=r.anchorY,x=Dq(o,t,f,h),b=x.dragPreviewWidth,w=x.dragPreviewHeight,C=function(){var O=new nE([0,.5,1],[d.y,d.y/h*w,d.y+w-h]),D=O.interpolate(g);return Q_()&&o&&(D+=(window.devicePixelRatio-1)*w),D},k=function(){var O=new nE([0,.5,1],[d.x,d.x/f*b,d.x+b-f]);return O.interpolate(m)},j=s.offsetX,M=s.offsetY,_=j===0||j,R=M===0||M;return{x:_?j:k(),y:R?M:C()}}var Y_="__NATIVE_FILE__",X_="__NATIVE_URL__",eR="__NATIVE_TEXT__",tR="__NATIVE_HTML__";const rE=Object.freeze(Object.defineProperty({__proto__:null,FILE:Y_,HTML:tR,TEXT:eR,URL:X_},Symbol.toStringTag,{value:"Module"}));function $v(e,t,n){var r=t.reduce(function(s,o){return s||e.getData(o)},"");return r??n}var yl;function Zf(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var rb=(yl={},Zf(yl,Y_,{exposeProperties:{files:function(t){return Array.prototype.slice.call(t.files)},items:function(t){return t.items},dataTransfer:function(t){return t}},matchesTypes:["Files"]}),Zf(yl,tR,{exposeProperties:{html:function(t,n){return $v(t,n,"")},dataTransfer:function(t){return t}},matchesTypes:["Html","text/html"]}),Zf(yl,X_,{exposeProperties:{urls:function(t,n){return $v(t,n,"").split(` -`)},dataTransfer:function(t){return t}},matchesTypes:["Url","text/uri-list"]}),Zf(yl,eR,{exposeProperties:{text:function(t,n){return $v(t,n,"")},dataTransfer:function(t){return t}},matchesTypes:["Text","text/plain"]}),yl);function Lq(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function $q(e,t){for(var n=0;n-1})})[0]||null}function Vq(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Hq(e,t){for(var n=0;n0&&s.actions.hover(l,{clientOffset:Qf(o)});var u=l.some(function(d){return s.monitor.canDropOnTarget(d)});u&&(o.preventDefault(),o.dataTransfer&&(o.dataTransfer.dropEffect=s.getCurrentDropEffect()))}}),jt(this,"handleTopDragOverCapture",function(){s.dragOverTargetIds=[]}),jt(this,"handleTopDragOver",function(o){var l=s.dragOverTargetIds;if(s.dragOverTargetIds=[],!s.monitor.isDragging()){o.preventDefault(),o.dataTransfer&&(o.dataTransfer.dropEffect="none");return}s.altKeyPressed=o.altKey,s.lastClientOffset=Qf(o),s.hoverRafId===null&&typeof requestAnimationFrame<"u"&&(s.hoverRafId=requestAnimationFrame(function(){s.monitor.isDragging()&&s.actions.hover(l||[],{clientOffset:s.lastClientOffset}),s.hoverRafId=null}));var u=(l||[]).some(function(d){return s.monitor.canDropOnTarget(d)});u?(o.preventDefault(),o.dataTransfer&&(o.dataTransfer.dropEffect=s.getCurrentDropEffect())):s.isDraggingNativeItem()?o.preventDefault():(o.preventDefault(),o.dataTransfer&&(o.dataTransfer.dropEffect="none"))}),jt(this,"handleTopDragLeaveCapture",function(o){s.isDraggingNativeItem()&&o.preventDefault();var l=s.enterLeaveCounter.leave(o.target);l&&s.isDraggingNativeItem()&&setTimeout(function(){return s.endDragNativeItem()},0)}),jt(this,"handleTopDropCapture",function(o){if(s.dropTargetIds=[],s.isDraggingNativeItem()){var l;o.preventDefault(),(l=s.currentNativeSource)===null||l===void 0||l.loadDataTransfer(o.dataTransfer)}else Bv(o.dataTransfer)&&o.preventDefault();s.enterLeaveCounter.reset()}),jt(this,"handleTopDrop",function(o){var l=s.dropTargetIds;s.dropTargetIds=[],s.actions.hover(l,{clientOffset:Qf(o)}),s.actions.drop({dropEffect:s.getCurrentDropEffect()}),s.isDraggingNativeItem()?s.endDragNativeItem():s.monitor.isDragging()&&s.actions.endDrag()}),jt(this,"handleSelectStart",function(o){var l=o.target;typeof l.dragDrop=="function"&&(l.tagName==="INPUT"||l.tagName==="SELECT"||l.tagName==="TEXTAREA"||l.isContentEditable||(o.preventDefault(),l.dragDrop()))}),this.options=new Kq(n,r),this.actions=t.getActions(),this.monitor=t.getMonitor(),this.registry=t.getRegistry(),this.enterLeaveCounter=new Mq(this.isNodeInDocument)}return Jq(e,[{key:"profile",value:function(){var n,r;return{sourcePreviewNodes:this.sourcePreviewNodes.size,sourcePreviewNodeOptions:this.sourcePreviewNodeOptions.size,sourceNodeOptions:this.sourceNodeOptions.size,sourceNodes:this.sourceNodes.size,dragStartSourceIds:((n=this.dragStartSourceIds)===null||n===void 0?void 0:n.length)||0,dropTargetIds:this.dropTargetIds.length,dragEnterTargetIds:this.dragEnterTargetIds.length,dragOverTargetIds:((r=this.dragOverTargetIds)===null||r===void 0?void 0:r.length)||0}}},{key:"window",get:function(){return this.options.window}},{key:"document",get:function(){return this.options.document}},{key:"rootElement",get:function(){return this.options.rootElement}},{key:"setup",value:function(){var n=this.rootElement;if(n!==void 0){if(n.__isReactDndBackendSetUp)throw new Error("Cannot have two HTML5 backends at the same time.");n.__isReactDndBackendSetUp=!0,this.addEventListeners(n)}}},{key:"teardown",value:function(){var n=this.rootElement;if(n!==void 0&&(n.__isReactDndBackendSetUp=!1,this.removeEventListeners(this.rootElement),this.clearCurrentDragSourceNode(),this.asyncEndDragFrameId)){var r;(r=this.window)===null||r===void 0||r.cancelAnimationFrame(this.asyncEndDragFrameId)}}},{key:"connectDragPreview",value:function(n,r,s){var o=this;return this.sourcePreviewNodeOptions.set(n,s),this.sourcePreviewNodes.set(n,r),function(){o.sourcePreviewNodes.delete(n),o.sourcePreviewNodeOptions.delete(n)}}},{key:"connectDragSource",value:function(n,r,s){var o=this;this.sourceNodes.set(n,r),this.sourceNodeOptions.set(n,s);var l=function(f){return o.handleDragStart(f,n)},u=function(f){return o.handleSelectStart(f)};return r.setAttribute("draggable","true"),r.addEventListener("dragstart",l),r.addEventListener("selectstart",u),function(){o.sourceNodes.delete(n),o.sourceNodeOptions.delete(n),r.removeEventListener("dragstart",l),r.removeEventListener("selectstart",u),r.setAttribute("draggable","false")}}},{key:"connectDropTarget",value:function(n,r){var s=this,o=function(f){return s.handleDragEnter(f,n)},l=function(f){return s.handleDragOver(f,n)},u=function(f){return s.handleDrop(f,n)};return r.addEventListener("dragenter",o),r.addEventListener("dragover",l),r.addEventListener("drop",u),function(){r.removeEventListener("dragenter",o),r.removeEventListener("dragover",l),r.removeEventListener("drop",u)}}},{key:"addEventListeners",value:function(n){n.addEventListener&&(n.addEventListener("dragstart",this.handleTopDragStart),n.addEventListener("dragstart",this.handleTopDragStartCapture,!0),n.addEventListener("dragend",this.handleTopDragEndCapture,!0),n.addEventListener("dragenter",this.handleTopDragEnter),n.addEventListener("dragenter",this.handleTopDragEnterCapture,!0),n.addEventListener("dragleave",this.handleTopDragLeaveCapture,!0),n.addEventListener("dragover",this.handleTopDragOver),n.addEventListener("dragover",this.handleTopDragOverCapture,!0),n.addEventListener("drop",this.handleTopDrop),n.addEventListener("drop",this.handleTopDropCapture,!0))}},{key:"removeEventListeners",value:function(n){n.removeEventListener&&(n.removeEventListener("dragstart",this.handleTopDragStart),n.removeEventListener("dragstart",this.handleTopDragStartCapture,!0),n.removeEventListener("dragend",this.handleTopDragEndCapture,!0),n.removeEventListener("dragenter",this.handleTopDragEnter),n.removeEventListener("dragenter",this.handleTopDragEnterCapture,!0),n.removeEventListener("dragleave",this.handleTopDragLeaveCapture,!0),n.removeEventListener("dragover",this.handleTopDragOver),n.removeEventListener("dragover",this.handleTopDragOverCapture,!0),n.removeEventListener("drop",this.handleTopDrop),n.removeEventListener("drop",this.handleTopDropCapture,!0))}},{key:"getCurrentSourceNodeOptions",value:function(){var n=this.monitor.getSourceId(),r=this.sourceNodeOptions.get(n);return aE({dropEffect:this.altKeyPressed?"copy":"move"},r||{})}},{key:"getCurrentDropEffect",value:function(){return this.isDraggingNativeItem()?"copy":this.getCurrentSourceNodeOptions().dropEffect}},{key:"getCurrentSourcePreviewNodeOptions",value:function(){var n=this.monitor.getSourceId(),r=this.sourcePreviewNodeOptions.get(n);return aE({anchorX:.5,anchorY:.5,captureDraggingState:!1},r||{})}},{key:"isDraggingNativeItem",value:function(){var n=this.monitor.getItemType();return Object.keys(rE).some(function(r){return rE[r]===n})}},{key:"beginDragNativeItem",value:function(n,r){this.clearCurrentDragSourceNode(),this.currentNativeSource=Uq(n,r),this.currentNativeHandle=this.registry.addSource(n,this.currentNativeSource),this.actions.beginDrag([this.currentNativeHandle])}},{key:"setCurrentDragSourceNode",value:function(n){var r=this;this.clearCurrentDragSourceNode(),this.currentDragSourceNode=n;var s=1e3;this.mouseMoveTimeoutTimer=setTimeout(function(){var o;return(o=r.rootElement)===null||o===void 0?void 0:o.addEventListener("mousemove",r.endDragIfSourceWasRemovedFromDOM,!0)},s)}},{key:"clearCurrentDragSourceNode",value:function(){if(this.currentDragSourceNode){if(this.currentDragSourceNode=null,this.rootElement){var n;(n=this.window)===null||n===void 0||n.clearTimeout(this.mouseMoveTimeoutTimer||void 0),this.rootElement.removeEventListener("mousemove",this.endDragIfSourceWasRemovedFromDOM,!0)}return this.mouseMoveTimeoutTimer=null,!0}return!1}},{key:"handleDragStart",value:function(n,r){n.defaultPrevented||(this.dragStartSourceIds||(this.dragStartSourceIds=[]),this.dragStartSourceIds.unshift(r))}},{key:"handleDragEnter",value:function(n,r){this.dragEnterTargetIds.unshift(r)}},{key:"handleDragOver",value:function(n,r){this.dragOverTargetIds===null&&(this.dragOverTargetIds=[]),this.dragOverTargetIds.unshift(r)}},{key:"handleDrop",value:function(n,r){this.dropTargetIds.unshift(r)}}]),e})(),Zq=function(t,n,r){return new Qq(t,n,r)},Yq=Object.create,nR=Object.defineProperty,Xq=Object.getOwnPropertyDescriptor,rR=Object.getOwnPropertyNames,e7=Object.getPrototypeOf,t7=Object.prototype.hasOwnProperty,n7=(e,t)=>function(){return t||(0,e[rR(e)[0]])((t={exports:{}}).exports,t),t.exports},r7=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of rR(t))!t7.call(e,s)&&s!==n&&nR(e,s,{get:()=>t[s],enumerable:!(r=Xq(t,s))||r.enumerable});return e},sR=(e,t,n)=>(n=e!=null?Yq(e7(e)):{},r7(nR(n,"default",{value:e,enumerable:!0}),e)),oR=n7({"node_modules/classnames/index.js"(e,t){(function(){var n={}.hasOwnProperty;function r(){for(var s=[],o=0;o-1}var dK=uK,fK=9007199254740991,pK=/^(?:0|[1-9]\d*)$/;function hK(e,t){var n=typeof e;return t=t??fK,!!t&&(n=="number"||n!="symbol"&&pK.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=vK}var fR=yK;function bK(e){return e!=null&&fR(e.length)&&!uR(e)}var xK=bK,wK=Object.prototype;function SK(e){var t=e&&e.constructor,n=typeof t=="function"&&t.prototype||wK;return e===n}var CK=SK;function EK(e,t){for(var n=-1,r=Array(e);++n-1}var t9=e9;function n9(e,t){var n=this.__data__,r=Xh(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}var r9=n9;function dc(e){var t=-1,n=e==null?0:e.length;for(this.clear();++tu))return!1;var f=o.get(e),h=o.get(t);if(f&&h)return f==t&&h==e;var m=-1,g=!0,x=n&uG?new bR:void 0;for(o.set(e,t),o.set(t,e);++m":">",'"':""","'":"'"},VG=S9(UG),HG=VG,CR=/[&<>"']/g,qG=RegExp(CR.source);function KG(e){return e=yR(e),e&&qG.test(e)?e.replace(CR,HG):e}var WG=KG,ER=/[\\^$.*+?()[\]{}|]/g,GG=RegExp(ER.source);function JG(e){return e=yR(e),e&&GG.test(e)?e.replace(ER,"\\$&"):e}var QG=JG;function ZG(e,t){return $G(e,t)}var YG=ZG,XG=1/0,eJ=Al&&1/Lx(new Al([,-0]))[1]==XG?function(e){return new Al(e)}:tK,tJ=eJ,nJ=200;function rJ(e,t,n){var r=-1,s=dK,o=e.length,l=!0,u=[],d=u;if(n)l=!1,s=zG;else if(o>=nJ){var f=t?null:tJ(e);if(f)return Lx(f);l=!1,s=xR,d=new bR}else d=t?[]:u;e:for(;++ri.jsx("button",{className:e.classNames.clearAll,onClick:e.onClick,children:"Clear all"}),lJ=iJ,cJ=(e,t)=>{const n=t.offsetHeight,r=e.offsetHeight,s=e.offsetTop-t.scrollTop;s+r>=n?t.scrollTop+=s-n+r:s<0&&(t.scrollTop+=s)},lb=(e,t,n,r)=>typeof r=="function"?r(e):e.length>=t&&n,uJ=e=>{const t=y.createRef(),{labelField:n,minQueryLength:r,isFocused:s,classNames:o,selectedIndex:l,query:u}=e;y.useEffect(()=>{if(!t.current)return;const m=t.current.querySelector(`.${o.activeSuggestion}`);m&&cJ(m,t.current)},[l]);const d=(m,g)=>{const x=g.trim().replace(/[-\\^$*+?.()|[\]{}]/g,"\\$&"),{[n]:b}=m;return{__html:b.replace(RegExp(x,"gi"),w=>`${WG(w)}`)}},f=(m,g)=>typeof e.renderSuggestion=="function"?e.renderSuggestion(m,g):i.jsx("span",{dangerouslySetInnerHTML:d(m,g)}),h=e.suggestions.map((m,g)=>i.jsx("li",{onMouseDown:e.handleClick.bind(null,g),onTouchStart:e.handleClick.bind(null,g),onMouseOver:e.handleHover.bind(null,g),className:g===e.selectedIndex?e.classNames.activeSuggestion:"",children:f(m,e.query)},g));return h.length===0||!lb(u,r||2,s,e.shouldRenderSuggestions)?null:i.jsx("div",{ref:t,className:o.suggestions,"data-testid":"suggestions",children:i.jsxs("ul",{children:[" ",h," "]})})},dJ=(e,t)=>{const{query:n,minQueryLength:r=2,isFocused:s,suggestions:o}=t;return!!(e.isFocused===s&&YG(e.suggestions,o)&&lb(n,r,s,t.shouldRenderSuggestions)===lb(e.query,e.minQueryLength??2,e.isFocused,e.shouldRenderSuggestions)&&e.selectedIndex===t.selectedIndex)},fJ=y.memo(uJ,dJ),pJ=fJ,hJ=sR(oR()),gJ=sR(oR());function mJ(e){const t=e.map(r=>{const s=r-48*Math.floor(r/48);return String.fromCharCode(96<=r?s:r)}).join(""),n=QG(t);return new RegExp(`[${n}]+`)}function vJ(e){switch(e){case Vs.ENTER:return[10,13];case Vs.TAB:return 9;case Vs.COMMA:return 188;case Vs.SPACE:return 32;case Vs.SEMICOLON:return 186;default:return 0}}function PE(e){const{moveTag:t,readOnly:n,allowDragDrop:r}=e;return t!==void 0&&!n&&r}function yJ(e){const{readOnly:t,allowDragDrop:n}=e;return!t&&n}var bJ=e=>{const{readOnly:t,removeComponent:n,onRemove:r,className:s,tag:o,index:l}=e,u=f=>{if(Il.ENTER.includes(f.keyCode)||f.keyCode===Il.SPACE){f.preventDefault(),f.stopPropagation();return}f.keyCode===Il.BACKSPACE&&r(f)};if(t)return i.jsx("span",{});const d=`Tag at index ${l} with value ${o.id} focussed. Press backspace to remove`;if(n){const f=n;return i.jsx(f,{"data-testid":"remove",onRemove:r,onKeyDown:u,className:s,"aria-label":d,tag:o,index:l})}return i.jsx("button",{"data-testid":"remove",onClick:r,onKeyDown:u,className:s,type:"button","aria-label":d,children:i.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",height:"12",width:"12",fill:"#fff",children:i.jsx("path",{d:"M376.6 84.5c11.3-13.6 9.5-33.8-4.1-45.1s-33.8-9.5-45.1 4.1L192 206 56.6 43.5C45.3 29.9 25.1 28.1 11.5 39.4S-3.9 70.9 7.4 84.5L150.3 256 7.4 427.5c-11.3 13.6-9.5 33.8 4.1 45.1s33.8 9.5 45.1-4.1L192 306 327.4 468.5c11.3 13.6 31.5 15.4 45.1 4.1s15.4-31.5 4.1-45.1L233.7 256 376.6 84.5z"})})})},xJ=bJ,OE={TAG:"tag"},wJ=e=>{const t=y.useRef(null),{readOnly:n=!1,tag:r,classNames:s,index:o,moveTag:l,allowDragDrop:u=!0,labelField:d="text",tags:f}=e,[{isDragging:h},m]=iq(()=>({type:OE.TAG,collect:C=>({isDragging:!!C.isDragging()}),item:e,canDrag:()=>PE({moveTag:l,readOnly:n,allowDragDrop:u})}),[f]),[,g]=Cq(()=>({accept:OE.TAG,drop:C=>{const k=C.index,j=o;k!==j&&e?.moveTag?.(k,j)},canDrop:C=>yJ(C)}),[f]);m(g(t));const x=e.tag[d],{className:b=""}=r,w=h?0:1;return i.jsxs("span",{ref:t,className:(0,gJ.default)("tag-wrapper",s.tag,b),style:{opacity:w,cursor:PE({moveTag:l,readOnly:n,allowDragDrop:u})?"move":"auto"},"data-testid":"tag",onClick:e.onTagClicked,onTouchStart:e.onTagClicked,children:[x,i.jsx(xJ,{tag:e.tag,className:s.remove,removeComponent:e.removeComponent,onRemove:e.onDelete,readOnly:n,index:o})]})},SJ=e=>{const{autofocus:t,autoFocus:n,readOnly:r,labelField:s,allowDeleteFromEmptyInput:o,allowAdditionFromPaste:l,allowDragDrop:u,minQueryLength:d,shouldRenderSuggestions:f,removeComponent:h,autocomplete:m,inline:g,maxTags:x,allowUnique:b,editable:w,placeholder:C,delimiters:k,separators:j,tags:M,inputFieldPosition:_,inputProps:R,classNames:N,maxLength:O,inputValue:D,clearAll:z}=e,[Q,pe]=y.useState(e.suggestions),[V,G]=y.useState(""),[W,ie]=y.useState(!1),[re,Y]=y.useState(-1),[H,q]=y.useState(!1),[he,A]=y.useState(""),[F,fe]=y.useState(-1),[te,de]=y.useState(""),ge=y.createRef(),Z=y.useRef(null),ye=y.useRef(null);y.useEffect(()=>{k.length&&console.warn("[Deprecation] The delimiters prop is deprecated and will be removed in v7.x.x, please use separators instead. If you have any concerns regarding this, please share your thoughts in https://github.com/react-tags/react-tags/issues/960")},[]),y.useEffect(()=>{typeof g<"u"&&console.warn("[Deprecation] The inline attribute is deprecated and will be removed in v7.x.x, please use inputFieldPosition instead.")},[g]),y.useEffect(()=>{typeof t<"u"&&console.warn("[Deprecated] autofocus prop will be removed in 7.x so please migrate to autoFocus prop."),(t||n&&t!==!1)&&!r&&Ye()},[n,n,r]),y.useEffect(()=>{vn()},[V,e.suggestions]);const Re=Te=>{let ut=e.suggestions.slice();if(b){const mr=M.map(vr=>vr.id.trim().toLowerCase());ut=ut.filter(vr=>!mr.includes(vr.id.toLowerCase()))}if(e.handleFilterSuggestions)return e.handleFilterSuggestions(Te,ut);const It=ut.filter(mr=>$e(Te,mr)===0),Tn=ut.filter(mr=>$e(Te,mr)>0);return It.concat(Tn)},$e=(Te,ut)=>ut[s].toLowerCase().indexOf(Te.toLowerCase()),Ye=()=>{G(""),Z.current&&(Z.current.value="",Z.current.focus())},Fe=(Te,ut)=>{ut.preventDefault(),ut.stopPropagation();const It=M.slice();It.length!==0&&(de(""),e?.handleDelete?.(Te,ut),ft(Te,It))},ft=(Te,ut)=>{if(!ge?.current)return;const It=ge.current.querySelectorAll(".ReactTags__remove");let Tn="";Te===0&&ut.length>1?(Tn=`Tag at index ${Te} with value ${ut[Te].id} deleted. Tag at index 0 with value ${ut[1].id} focussed. Press backspace to remove`,It[0].focus()):Te>0?(Tn=`Tag at index ${Te} with value ${ut[Te].id} deleted. Tag at index ${Te-1} with value ${ut[Te-1].id} focussed. Press backspace to remove`,It[Te-1].focus()):(Tn=`Tag at index ${Te} with value ${ut[Te].id} deleted. Input focussed. Press enter to add a new tag`,Z.current?.focus()),A(Tn)},ln=(Te,ut,It)=>{r||(w&&(fe(Te),G(ut[s]),ye.current?.focus()),e.handleTagClick?.(Te,It))},Sn=Te=>{e.handleInputChange&&e.handleInputChange(Te.target.value,Te);const ut=Te.target.value.trim();G(ut)},vn=()=>{const Te=Re(V);pe(Te),Y(re>=Te.length?Te.length-1:re)},Cn=Te=>{const ut=Te.target.value;e.handleInputFocus&&e.handleInputFocus(ut,Te),ie(!0)},L=Te=>{const ut=Te.target.value;e.handleInputBlur&&(e.handleInputBlur(ut,Te),Z.current&&(Z.current.value="")),ie(!1),fe(-1)},X=Te=>{if(Te.key==="Escape"&&(Te.preventDefault(),Te.stopPropagation(),Y(-1),q(!1),pe([]),fe(-1)),(j.indexOf(Te.key)!==-1||k.indexOf(Te.keyCode)!==-1)&&!Te.shiftKey){(Te.keyCode!==Il.TAB||V!=="")&&Te.preventDefault();const ut=H&&re!==-1?Q[re]:{id:V.trim(),[s]:V.trim(),className:""};Object.keys(ut)&&je(ut)}Te.key==="Backspace"&&V===""&&(o||_===cu.INLINE)&&Fe(M.length-1,Te),Te.keyCode===Il.UP_ARROW&&(Te.preventDefault(),Y(re<=0?Q.length-1:re-1),q(!0)),Te.keyCode===Il.DOWN_ARROW&&(Te.preventDefault(),q(!0),Q.length===0?Y(-1):Y((re+1)%Q.length))},ue=()=>x&&M.length>=x,Ne=Te=>{if(!l)return;if(ue()){de(lE.TAG_LIMIT),Ye();return}de(""),Te.preventDefault();const ut=Te.clipboardData||window.clipboardData,It=ut.getData("text"),{maxLength:Tn=It.length}=e,mr=Math.min(Tn,It.length),vr=ut.getData("text").substr(0,mr);let Gr=k;j.length&&(Gr=[],j.forEach(Rr=>{const Uo=vJ(Rr);Array.isArray(Uo)?Gr=[...Gr,...Uo]:Gr.push(Uo)}));const Jr=mJ(Gr),_r=vr.split(Jr).map(Rr=>Rr.trim());aJ(_r).forEach(Rr=>je({id:Rr.trim(),[s]:Rr.trim(),className:""}))},je=Te=>{if(!Te.id||!Te[s])return;if(F===-1){if(ue()){de(lE.TAG_LIMIT),Ye();return}de("")}const ut=M.map(It=>It.id.toLowerCase());if(!(b&&ut.indexOf(Te.id.trim().toLowerCase())>=0)){if(m){const It=Re(Te[s]);console.warn("[Deprecation] The autocomplete prop will be removed in 7.x to simplify the integration and make it more intutive. If you have any concerns regarding this, please share your thoughts in https://github.com/react-tags/react-tags/issues/949"),(m===1&&It.length===1||m===!0&&It.length)&&(Te=It[0])}F!==-1&&e.onTagUpdate?e.onTagUpdate(F,Te):e?.handleAddition?.(Te),G(""),q(!1),Y(-1),fe(-1),Ye()}},Se=Te=>{je(Q[Te])},Be=()=>{e.onClearAll&&e.onClearAll(),de(""),Ye()},bt=Te=>{Y(Te),q(!0)},Wt=(Te,ut)=>{const It=M[Te];e?.handleDrag?.(It,Te,ut)},bn=(()=>{const Te={...iE,...e.classNames};return M.map((ut,It)=>i.jsx(y.Fragment,{children:F===It?i.jsx("div",{className:Te.editTagInput,children:i.jsx("input",{ref:Tn=>{ye.current=Tn},onFocus:Cn,value:V,onChange:Sn,onKeyDown:X,onBlur:L,className:Te.editTagInputField,onPaste:Ne,"data-testid":"tag-edit"})}):i.jsx(wJ,{index:It,tag:ut,tags:M,labelField:s,onDelete:Tn=>Fe(It,Tn),moveTag:u?Wt:void 0,removeComponent:h,onTagClicked:Tn=>ln(It,ut,Tn),readOnly:r,classNames:Te,allowDragDrop:u})},It))})(),En={...iE,...N},{name:gr,id:Qn}=e,ro=g===!1?cu.BOTTOM:_,Bn=r?null:i.jsxs("div",{className:En.tagInput,children:[i.jsx("input",{...R,ref:Te=>{Z.current=Te},className:En.tagInputField,type:"text",placeholder:C,"aria-label":C,onFocus:Cn,onBlur:L,onChange:Sn,onKeyDown:X,onPaste:Ne,name:gr,id:Qn,maxLength:O,value:D,"data-automation":"input","data-testid":"input"}),i.jsx(pJ,{query:V.trim(),suggestions:Q,labelField:s,selectedIndex:re,handleClick:Se,handleHover:bt,minQueryLength:d,shouldRenderSuggestions:f,isFocused:W,classNames:En,renderSuggestion:e.renderSuggestion}),z&&M.length>0&&i.jsx(lJ,{classNames:En,onClick:Be}),te&&i.jsxs("div",{"data-testid":"error",className:"ReactTags__error",children:[i.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",height:"24",width:"24",fill:"#e03131",children:i.jsx("path",{d:"M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24V296c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"})}),te]})]});return i.jsxs("div",{className:(0,hJ.default)(En.tags,"react-tags-wrapper"),ref:ge,children:[i.jsx("p",{role:"alert",className:"sr-only",style:{position:"absolute",overflow:"hidden",clip:"rect(0 0 0 0)",margin:"-1px",padding:0,width:"1px",height:"1px",border:0},children:he}),ro===cu.TOP&&Bn,i.jsxs("div",{className:En.selected,children:[bn,ro===cu.INLINE&&Bn]}),ro===cu.BOTTOM&&Bn]})},CJ=SJ,EJ=e=>{const{placeholder:t=s7,labelField:n=o7,suggestions:r=[],delimiters:s=[],separators:o=e.delimiters?.length?[]:[Vs.ENTER,Vs.TAB],autofocus:l,autoFocus:u=!0,inline:d,inputFieldPosition:f="inline",allowDeleteFromEmptyInput:h=!1,allowAdditionFromPaste:m=!0,autocomplete:g=!1,readOnly:x=!1,allowUnique:b=!0,allowDragDrop:w=!0,tags:C=[],inputProps:k={},editable:j=!1,clearAll:M=!1,handleDelete:_,handleAddition:R,onTagUpdate:N,handleDrag:O,handleFilterSuggestions:D,handleTagClick:z,handleInputChange:Q,handleInputFocus:pe,handleInputBlur:V,minQueryLength:G,shouldRenderSuggestions:W,removeComponent:ie,onClearAll:re,classNames:Y,name:H,id:q,maxLength:he,inputValue:A,maxTags:F,renderSuggestion:fe}=e;return i.jsx(CJ,{placeholder:t,labelField:n,suggestions:r,delimiters:s,separators:o,autofocus:l,autoFocus:u,inline:d,inputFieldPosition:f,allowDeleteFromEmptyInput:h,allowAdditionFromPaste:m,autocomplete:g,readOnly:x,allowUnique:b,allowDragDrop:w,tags:C,inputProps:k,editable:j,clearAll:M,handleDelete:_,handleAddition:R,onTagUpdate:N,handleDrag:O,handleFilterSuggestions:D,handleTagClick:z,handleInputChange:Q,handleInputFocus:pe,handleInputBlur:V,minQueryLength:G,shouldRenderSuggestions:W,removeComponent:ie,onClearAll:re,classNames:Y,name:H,id:q,maxLength:he,inputValue:A,maxTags:F,renderSuggestion:fe})},kJ=({...e})=>i.jsx(tH,{backend:Zq,children:i.jsx(EJ,{...e})});/*! Bundled license information: - -classnames/index.js: - (*! - Copyright (c) 2018 Jed Watson. - Licensed under the MIT License (MIT), see - http://jedwatson.github.io/classnames - *) - -lodash-es/lodash.js: - (** - * @license - * Lodash (Custom Build) - * Build: `lodash modularize exports="es" -o ./` - * Copyright OpenJS Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - *) -*/var jJ="Label",kR=y.forwardRef((e,t)=>i.jsx(rt.label,{...e,ref:t,onMouseDown:n=>{n.target.closest("button, input, select, textarea")||(e.onMouseDown?.(n),!n.defaultPrevented&&n.detail>1&&n.preventDefault())}}));kR.displayName=jJ;var jR=kR;const TJ=jh("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),TR=y.forwardRef(({className:e,...t},n)=>i.jsx(jR,{ref:n,className:Ie(TJ(),e),...t}));TR.displayName=jR.displayName;function NR(e){const t=y.useRef({value:e,previous:e});return y.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}var NJ="VisuallyHidden",MR=y.forwardRef((e,t)=>i.jsx(rt.span,{...e,ref:t,style:{position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal",...e.style}}));MR.displayName=NJ;var MJ=[" ","Enter","ArrowUp","ArrowDown"],_J=[" ","Enter"],jd="Select",[ng,rg,RJ]=Kb(jd),[hc]=us(jd,[RJ,Oh]),sg=Oh(),[PJ,Ia]=hc(jd),[OJ,IJ]=hc(jd),_R=e=>{const{__scopeSelect:t,children:n,open:r,defaultOpen:s,onOpenChange:o,value:l,defaultValue:u,onValueChange:d,dir:f,name:h,autoComplete:m,disabled:g,required:x}=e,b=sg(t),[w,C]=y.useState(null),[k,j]=y.useState(null),[M,_]=y.useState(!1),R=xd(f),[N=!1,O]=ya({prop:r,defaultProp:s,onChange:o}),[D,z]=ya({prop:l,defaultProp:u,onChange:d}),Q=y.useRef(null),pe=w?!!w.closest("form"):!0,[V,G]=y.useState(new Set),W=Array.from(V).map(ie=>ie.props.value).join(";");return i.jsx(ZT,{...b,children:i.jsxs(PJ,{required:x,scope:t,trigger:w,onTriggerChange:C,valueNode:k,onValueNodeChange:j,valueNodeHasChildren:M,onValueNodeHasChildrenChange:_,contentId:Es(),value:D,onValueChange:z,open:N,onOpenChange:O,dir:R,triggerPointerDownPosRef:Q,disabled:g,children:[i.jsx(ng.Provider,{scope:t,children:i.jsx(OJ,{scope:e.__scopeSelect,onNativeOptionAdd:y.useCallback(ie=>{G(re=>new Set(re).add(ie))},[]),onNativeOptionRemove:y.useCallback(ie=>{G(re=>{const Y=new Set(re);return Y.delete(ie),Y})},[]),children:n})}),pe?i.jsxs(tP,{"aria-hidden":!0,required:x,tabIndex:-1,name:h,autoComplete:m,value:D,onChange:ie=>z(ie.target.value),disabled:g,children:[D===void 0?i.jsx("option",{value:""}):null,Array.from(V)]},W):null]})})};_R.displayName=jd;var RR="SelectTrigger",PR=y.forwardRef((e,t)=>{const{__scopeSelect:n,disabled:r=!1,...s}=e,o=sg(n),l=Ia(RR,n),u=l.disabled||r,d=Rt(t,l.onTriggerChange),f=rg(n),[h,m,g]=nP(b=>{const w=f().filter(j=>!j.disabled),C=w.find(j=>j.value===l.value),k=rP(w,b,C);k!==void 0&&l.onValueChange(k.value)}),x=()=>{u||(l.onOpenChange(!0),g())};return i.jsx(YT,{asChild:!0,...o,children:i.jsx(rt.button,{type:"button",role:"combobox","aria-controls":l.contentId,"aria-expanded":l.open,"aria-required":l.required,"aria-autocomplete":"none",dir:l.dir,"data-state":l.open?"open":"closed",disabled:u,"data-disabled":u?"":void 0,"data-placeholder":eP(l.value)?"":void 0,...s,ref:d,onClick:Ue(s.onClick,b=>{b.currentTarget.focus()}),onPointerDown:Ue(s.onPointerDown,b=>{const w=b.target;w.hasPointerCapture(b.pointerId)&&w.releasePointerCapture(b.pointerId),b.button===0&&b.ctrlKey===!1&&(x(),l.triggerPointerDownPosRef.current={x:Math.round(b.pageX),y:Math.round(b.pageY)},b.preventDefault())}),onKeyDown:Ue(s.onKeyDown,b=>{const w=h.current!=="";!(b.ctrlKey||b.altKey||b.metaKey)&&b.key.length===1&&m(b.key),!(w&&b.key===" ")&&MJ.includes(b.key)&&(x(),b.preventDefault())})})})});PR.displayName=RR;var OR="SelectValue",IR=y.forwardRef((e,t)=>{const{__scopeSelect:n,className:r,style:s,children:o,placeholder:l="",...u}=e,d=Ia(OR,n),{onValueNodeHasChildrenChange:f}=d,h=o!==void 0,m=Rt(t,d.onValueNodeChange);return Ln(()=>{f(h)},[f,h]),i.jsx(rt.span,{...u,ref:m,style:{pointerEvents:"none"},children:eP(d.value)?i.jsx(i.Fragment,{children:l}):o})});IR.displayName=OR;var AJ="SelectIcon",AR=y.forwardRef((e,t)=>{const{__scopeSelect:n,children:r,...s}=e;return i.jsx(rt.span,{"aria-hidden":!0,...s,ref:t,children:r||"▼"})});AR.displayName=AJ;var DJ="SelectPortal",DR=e=>i.jsx(Ih,{asChild:!0,...e});DR.displayName=DJ;var _i="SelectContent",FR=y.forwardRef((e,t)=>{const n=Ia(_i,e.__scopeSelect),[r,s]=y.useState();if(Ln(()=>{s(new DocumentFragment)},[]),!n.open){const o=r;return o?Ma.createPortal(i.jsx(LR,{scope:e.__scopeSelect,children:i.jsx(ng.Slot,{scope:e.__scopeSelect,children:i.jsx("div",{children:e.children})})}),o):null}return i.jsx($R,{...e,ref:t})});FR.displayName=_i;var vo=10,[LR,Aa]=hc(_i),FJ="SelectContentImpl",$R=y.forwardRef((e,t)=>{const{__scopeSelect:n,position:r="item-aligned",onCloseAutoFocus:s,onEscapeKeyDown:o,onPointerDownOutside:l,side:u,sideOffset:d,align:f,alignOffset:h,arrowPadding:m,collisionBoundary:g,collisionPadding:x,sticky:b,hideWhenDetached:w,avoidCollisions:C,...k}=e,j=Ia(_i,n),[M,_]=y.useState(null),[R,N]=y.useState(null),O=Rt(t,Z=>_(Z)),[D,z]=y.useState(null),[Q,pe]=y.useState(null),V=rg(n),[G,W]=y.useState(!1),ie=y.useRef(!1);y.useEffect(()=>{if(M)return nx(M)},[M]),Wb();const re=y.useCallback(Z=>{const[ye,...Re]=V().map(Fe=>Fe.ref.current),[$e]=Re.slice(-1),Ye=document.activeElement;for(const Fe of Z)if(Fe===Ye||(Fe?.scrollIntoView({block:"nearest"}),Fe===ye&&R&&(R.scrollTop=0),Fe===$e&&R&&(R.scrollTop=R.scrollHeight),Fe?.focus(),document.activeElement!==Ye))return},[V,R]),Y=y.useCallback(()=>re([D,M]),[re,D,M]);y.useEffect(()=>{G&&Y()},[G,Y]);const{onOpenChange:H,triggerPointerDownPosRef:q}=j;y.useEffect(()=>{if(M){let Z={x:0,y:0};const ye=$e=>{Z={x:Math.abs(Math.round($e.pageX)-(q.current?.x??0)),y:Math.abs(Math.round($e.pageY)-(q.current?.y??0))}},Re=$e=>{Z.x<=10&&Z.y<=10?$e.preventDefault():M.contains($e.target)||H(!1),document.removeEventListener("pointermove",ye),q.current=null};return q.current!==null&&(document.addEventListener("pointermove",ye),document.addEventListener("pointerup",Re,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",ye),document.removeEventListener("pointerup",Re,{capture:!0})}}},[M,H,q]),y.useEffect(()=>{const Z=()=>H(!1);return window.addEventListener("blur",Z),window.addEventListener("resize",Z),()=>{window.removeEventListener("blur",Z),window.removeEventListener("resize",Z)}},[H]);const[he,A]=nP(Z=>{const ye=V().filter(Ye=>!Ye.disabled),Re=ye.find(Ye=>Ye.ref.current===document.activeElement),$e=rP(ye,Z,Re);$e&&setTimeout(()=>$e.ref.current.focus())}),F=y.useCallback((Z,ye,Re)=>{const $e=!ie.current&&!Re;(j.value!==void 0&&j.value===ye||$e)&&(z(Z),$e&&(ie.current=!0))},[j.value]),fe=y.useCallback(()=>M?.focus(),[M]),te=y.useCallback((Z,ye,Re)=>{const $e=!ie.current&&!Re;(j.value!==void 0&&j.value===ye||$e)&&pe(Z)},[j.value]),de=r==="popper"?cb:BR,ge=de===cb?{side:u,sideOffset:d,align:f,alignOffset:h,arrowPadding:m,collisionBoundary:g,collisionPadding:x,sticky:b,hideWhenDetached:w,avoidCollisions:C}:{};return i.jsx(LR,{scope:n,content:M,viewport:R,onViewportChange:N,itemRefCallback:F,selectedItem:D,onItemLeave:fe,itemTextRefCallback:te,focusSelectedItem:Y,selectedItemText:Q,position:r,isPositioned:G,searchRef:he,children:i.jsx(Lh,{as:No,allowPinchZoom:!0,children:i.jsx(_h,{asChild:!0,trapped:j.open,onMountAutoFocus:Z=>{Z.preventDefault()},onUnmountAutoFocus:Ue(s,Z=>{j.trigger?.focus({preventScroll:!0}),Z.preventDefault()}),children:i.jsx(Mh,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:o,onPointerDownOutside:l,onFocusOutside:Z=>Z.preventDefault(),onDismiss:()=>j.onOpenChange(!1),children:i.jsx(de,{role:"listbox",id:j.contentId,"data-state":j.open?"open":"closed",dir:j.dir,onContextMenu:Z=>Z.preventDefault(),...k,...ge,onPlaced:()=>W(!0),ref:O,style:{display:"flex",flexDirection:"column",outline:"none",...k.style},onKeyDown:Ue(k.onKeyDown,Z=>{const ye=Z.ctrlKey||Z.altKey||Z.metaKey;if(Z.key==="Tab"&&Z.preventDefault(),!ye&&Z.key.length===1&&A(Z.key),["ArrowUp","ArrowDown","Home","End"].includes(Z.key)){let $e=V().filter(Ye=>!Ye.disabled).map(Ye=>Ye.ref.current);if(["ArrowUp","End"].includes(Z.key)&&($e=$e.slice().reverse()),["ArrowUp","ArrowDown"].includes(Z.key)){const Ye=Z.target,Fe=$e.indexOf(Ye);$e=$e.slice(Fe+1)}setTimeout(()=>re($e)),Z.preventDefault()}})})})})})})});$R.displayName=FJ;var LJ="SelectItemAlignedPosition",BR=y.forwardRef((e,t)=>{const{__scopeSelect:n,onPlaced:r,...s}=e,o=Ia(_i,n),l=Aa(_i,n),[u,d]=y.useState(null),[f,h]=y.useState(null),m=Rt(t,O=>h(O)),g=rg(n),x=y.useRef(!1),b=y.useRef(!0),{viewport:w,selectedItem:C,selectedItemText:k,focusSelectedItem:j}=l,M=y.useCallback(()=>{if(o.trigger&&o.valueNode&&u&&f&&w&&C&&k){const O=o.trigger.getBoundingClientRect(),D=f.getBoundingClientRect(),z=o.valueNode.getBoundingClientRect(),Q=k.getBoundingClientRect();if(o.dir!=="rtl"){const Ye=Q.left-D.left,Fe=z.left-Ye,ft=O.left-Fe,ln=O.width+ft,Sn=Math.max(ln,D.width),vn=window.innerWidth-vo,Cn=Ky(Fe,[vo,vn-Sn]);u.style.minWidth=ln+"px",u.style.left=Cn+"px"}else{const Ye=D.right-Q.right,Fe=window.innerWidth-z.right-Ye,ft=window.innerWidth-O.right-Fe,ln=O.width+ft,Sn=Math.max(ln,D.width),vn=window.innerWidth-vo,Cn=Ky(Fe,[vo,vn-Sn]);u.style.minWidth=ln+"px",u.style.right=Cn+"px"}const pe=g(),V=window.innerHeight-vo*2,G=w.scrollHeight,W=window.getComputedStyle(f),ie=parseInt(W.borderTopWidth,10),re=parseInt(W.paddingTop,10),Y=parseInt(W.borderBottomWidth,10),H=parseInt(W.paddingBottom,10),q=ie+re+G+H+Y,he=Math.min(C.offsetHeight*5,q),A=window.getComputedStyle(w),F=parseInt(A.paddingTop,10),fe=parseInt(A.paddingBottom,10),te=O.top+O.height/2-vo,de=V-te,ge=C.offsetHeight/2,Z=C.offsetTop+ge,ye=ie+re+Z,Re=q-ye;if(ye<=te){const Ye=C===pe[pe.length-1].ref.current;u.style.bottom="0px";const Fe=f.clientHeight-w.offsetTop-w.offsetHeight,ft=Math.max(de,ge+(Ye?fe:0)+Fe+Y),ln=ye+ft;u.style.height=ln+"px"}else{const Ye=C===pe[0].ref.current;u.style.top="0px";const ft=Math.max(te,ie+w.offsetTop+(Ye?F:0)+ge)+Re;u.style.height=ft+"px",w.scrollTop=ye-te+w.offsetTop}u.style.margin=`${vo}px 0`,u.style.minHeight=he+"px",u.style.maxHeight=V+"px",r?.(),requestAnimationFrame(()=>x.current=!0)}},[g,o.trigger,o.valueNode,u,f,w,C,k,o.dir,r]);Ln(()=>M(),[M]);const[_,R]=y.useState();Ln(()=>{f&&R(window.getComputedStyle(f).zIndex)},[f]);const N=y.useCallback(O=>{O&&b.current===!0&&(M(),j?.(),b.current=!1)},[M,j]);return i.jsx(BJ,{scope:n,contentWrapper:u,shouldExpandOnScrollRef:x,onScrollButtonChange:N,children:i.jsx("div",{ref:d,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:_},children:i.jsx(rt.div,{...s,ref:m,style:{boxSizing:"border-box",maxHeight:"100%",...s.style}})})})});BR.displayName=LJ;var $J="SelectPopperPosition",cb=y.forwardRef((e,t)=>{const{__scopeSelect:n,align:r="start",collisionPadding:s=vo,...o}=e,l=sg(n);return i.jsx(XT,{...l,...o,ref:t,align:r,collisionPadding:s,style:{boxSizing:"border-box",...o.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});cb.displayName=$J;var[BJ,$x]=hc(_i,{}),ub="SelectViewport",zR=y.forwardRef((e,t)=>{const{__scopeSelect:n,nonce:r,...s}=e,o=Aa(ub,n),l=$x(ub,n),u=Rt(t,o.onViewportChange),d=y.useRef(0);return i.jsxs(i.Fragment,{children:[i.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:r}),i.jsx(ng.Slot,{scope:n,children:i.jsx(rt.div,{"data-radix-select-viewport":"",role:"presentation",...s,ref:u,style:{position:"relative",flex:1,overflow:"auto",...s.style},onScroll:Ue(s.onScroll,f=>{const h=f.currentTarget,{contentWrapper:m,shouldExpandOnScrollRef:g}=l;if(g?.current&&m){const x=Math.abs(d.current-h.scrollTop);if(x>0){const b=window.innerHeight-vo*2,w=parseFloat(m.style.minHeight),C=parseFloat(m.style.height),k=Math.max(w,C);if(k0?_:0,m.style.justifyContent="flex-end")}}}d.current=h.scrollTop})})})]})});zR.displayName=ub;var UR="SelectGroup",[zJ,UJ]=hc(UR),VJ=y.forwardRef((e,t)=>{const{__scopeSelect:n,...r}=e,s=Es();return i.jsx(zJ,{scope:n,id:s,children:i.jsx(rt.div,{role:"group","aria-labelledby":s,...r,ref:t})})});VJ.displayName=UR;var VR="SelectLabel",HR=y.forwardRef((e,t)=>{const{__scopeSelect:n,...r}=e,s=UJ(VR,n);return i.jsx(rt.div,{id:s.id,...r,ref:t})});HR.displayName=VR;var ih="SelectItem",[HJ,qR]=hc(ih),KR=y.forwardRef((e,t)=>{const{__scopeSelect:n,value:r,disabled:s=!1,textValue:o,...l}=e,u=Ia(ih,n),d=Aa(ih,n),f=u.value===r,[h,m]=y.useState(o??""),[g,x]=y.useState(!1),b=Rt(t,k=>d.itemRefCallback?.(k,r,s)),w=Es(),C=()=>{s||(u.onValueChange(r),u.onOpenChange(!1))};if(r==="")throw new Error("A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return i.jsx(HJ,{scope:n,value:r,disabled:s,textId:w,isSelected:f,onItemTextChange:y.useCallback(k=>{m(j=>j||(k?.textContent??"").trim())},[]),children:i.jsx(ng.ItemSlot,{scope:n,value:r,disabled:s,textValue:h,children:i.jsx(rt.div,{role:"option","aria-labelledby":w,"data-highlighted":g?"":void 0,"aria-selected":f&&g,"data-state":f?"checked":"unchecked","aria-disabled":s||void 0,"data-disabled":s?"":void 0,tabIndex:s?void 0:-1,...l,ref:b,onFocus:Ue(l.onFocus,()=>x(!0)),onBlur:Ue(l.onBlur,()=>x(!1)),onPointerUp:Ue(l.onPointerUp,C),onPointerMove:Ue(l.onPointerMove,k=>{s?d.onItemLeave?.():k.currentTarget.focus({preventScroll:!0})}),onPointerLeave:Ue(l.onPointerLeave,k=>{k.currentTarget===document.activeElement&&d.onItemLeave?.()}),onKeyDown:Ue(l.onKeyDown,k=>{d.searchRef?.current!==""&&k.key===" "||(_J.includes(k.key)&&C(),k.key===" "&&k.preventDefault())})})})})});KR.displayName=ih;var xu="SelectItemText",WR=y.forwardRef((e,t)=>{const{__scopeSelect:n,className:r,style:s,...o}=e,l=Ia(xu,n),u=Aa(xu,n),d=qR(xu,n),f=IJ(xu,n),[h,m]=y.useState(null),g=Rt(t,k=>m(k),d.onItemTextChange,k=>u.itemTextRefCallback?.(k,d.value,d.disabled)),x=h?.textContent,b=y.useMemo(()=>i.jsx("option",{value:d.value,disabled:d.disabled,children:x},d.value),[d.disabled,d.value,x]),{onNativeOptionAdd:w,onNativeOptionRemove:C}=f;return Ln(()=>(w(b),()=>C(b)),[w,C,b]),i.jsxs(i.Fragment,{children:[i.jsx(rt.span,{id:d.textId,...o,ref:g}),d.isSelected&&l.valueNode&&!l.valueNodeHasChildren?Ma.createPortal(o.children,l.valueNode):null]})});WR.displayName=xu;var GR="SelectItemIndicator",JR=y.forwardRef((e,t)=>{const{__scopeSelect:n,...r}=e;return qR(GR,n).isSelected?i.jsx(rt.span,{"aria-hidden":!0,...r,ref:t}):null});JR.displayName=GR;var db="SelectScrollUpButton",QR=y.forwardRef((e,t)=>{const n=Aa(db,e.__scopeSelect),r=$x(db,e.__scopeSelect),[s,o]=y.useState(!1),l=Rt(t,r.onScrollButtonChange);return Ln(()=>{if(n.viewport&&n.isPositioned){let u=function(){const f=d.scrollTop>0;o(f)};const d=n.viewport;return u(),d.addEventListener("scroll",u),()=>d.removeEventListener("scroll",u)}},[n.viewport,n.isPositioned]),s?i.jsx(YR,{...e,ref:l,onAutoScroll:()=>{const{viewport:u,selectedItem:d}=n;u&&d&&(u.scrollTop=u.scrollTop-d.offsetHeight)}}):null});QR.displayName=db;var fb="SelectScrollDownButton",ZR=y.forwardRef((e,t)=>{const n=Aa(fb,e.__scopeSelect),r=$x(fb,e.__scopeSelect),[s,o]=y.useState(!1),l=Rt(t,r.onScrollButtonChange);return Ln(()=>{if(n.viewport&&n.isPositioned){let u=function(){const f=d.scrollHeight-d.clientHeight,h=Math.ceil(d.scrollTop)d.removeEventListener("scroll",u)}},[n.viewport,n.isPositioned]),s?i.jsx(YR,{...e,ref:l,onAutoScroll:()=>{const{viewport:u,selectedItem:d}=n;u&&d&&(u.scrollTop=u.scrollTop+d.offsetHeight)}}):null});ZR.displayName=fb;var YR=y.forwardRef((e,t)=>{const{__scopeSelect:n,onAutoScroll:r,...s}=e,o=Aa("SelectScrollButton",n),l=y.useRef(null),u=rg(n),d=y.useCallback(()=>{l.current!==null&&(window.clearInterval(l.current),l.current=null)},[]);return y.useEffect(()=>()=>d(),[d]),Ln(()=>{u().find(h=>h.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:"nearest"})},[u]),i.jsx(rt.div,{"aria-hidden":!0,...s,ref:t,style:{flexShrink:0,...s.style},onPointerDown:Ue(s.onPointerDown,()=>{l.current===null&&(l.current=window.setInterval(r,50))}),onPointerMove:Ue(s.onPointerMove,()=>{o.onItemLeave?.(),l.current===null&&(l.current=window.setInterval(r,50))}),onPointerLeave:Ue(s.onPointerLeave,()=>{d()})})}),qJ="SelectSeparator",XR=y.forwardRef((e,t)=>{const{__scopeSelect:n,...r}=e;return i.jsx(rt.div,{"aria-hidden":!0,...r,ref:t})});XR.displayName=qJ;var pb="SelectArrow",KJ=y.forwardRef((e,t)=>{const{__scopeSelect:n,...r}=e,s=sg(n),o=Ia(pb,n),l=Aa(pb,n);return o.open&&l.position==="popper"?i.jsx(eN,{...s,...r,ref:t}):null});KJ.displayName=pb;function eP(e){return e===""||e===void 0}var tP=y.forwardRef((e,t)=>{const{value:n,...r}=e,s=y.useRef(null),o=Rt(t,s),l=NR(n);return y.useEffect(()=>{const u=s.current,d=window.HTMLSelectElement.prototype,h=Object.getOwnPropertyDescriptor(d,"value").set;if(l!==n&&h){const m=new Event("change",{bubbles:!0});h.call(u,n),u.dispatchEvent(m)}},[l,n]),i.jsx(MR,{asChild:!0,children:i.jsx("select",{...r,ref:o,defaultValue:n})})});tP.displayName="BubbleSelect";function nP(e){const t=Rn(e),n=y.useRef(""),r=y.useRef(0),s=y.useCallback(l=>{const u=n.current+l;t(u),(function d(f){n.current=f,window.clearTimeout(r.current),f!==""&&(r.current=window.setTimeout(()=>d(""),1e3))})(u)},[t]),o=y.useCallback(()=>{n.current="",window.clearTimeout(r.current)},[]);return y.useEffect(()=>()=>window.clearTimeout(r.current),[]),[n,s,o]}function rP(e,t,n){const s=t.length>1&&Array.from(t).every(f=>f===t[0])?t[0]:t,o=n?e.indexOf(n):-1;let l=WJ(e,Math.max(o,0));s.length===1&&(l=l.filter(f=>f!==n));const d=l.find(f=>f.textValue.toLowerCase().startsWith(s.toLowerCase()));return d!==n?d:void 0}function WJ(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var GJ=_R,sP=PR,JJ=IR,QJ=AR,ZJ=DR,oP=FR,YJ=zR,aP=HR,iP=KR,XJ=WR,eQ=JR,lP=QR,cP=ZR,uP=XR;const tQ=GJ,nQ=JJ,dP=y.forwardRef(({className:e,children:t,...n},r)=>i.jsxs(sP,{ref:r,className:Ie("flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-default disabled:opacity-50 [&>span]:line-clamp-1",e),...n,children:[t,i.jsx(QJ,{asChild:!0,children:i.jsx(Nh,{className:"h-4 w-4 opacity-50"})})]}));dP.displayName=sP.displayName;const fP=y.forwardRef(({className:e,...t},n)=>i.jsx(lP,{ref:n,className:Ie("flex cursor-default items-center justify-center py-1",e),...t,children:i.jsx(G$,{className:"h-4 w-4"})}));fP.displayName=lP.displayName;const pP=y.forwardRef(({className:e,...t},n)=>i.jsx(cP,{ref:n,className:Ie("flex cursor-default items-center justify-center py-1",e),...t,children:i.jsx(Nh,{className:"h-4 w-4"})}));pP.displayName=cP.displayName;const hP=y.forwardRef(({className:e,children:t,position:n="popper",...r},s)=>i.jsx(ZJ,{children:i.jsxs(oP,{ref:s,className:Ie("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",n==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:n,...r,children:[i.jsx(fP,{}),i.jsx(YJ,{className:Ie("p-1",n==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:t}),i.jsx(pP,{})]})}));hP.displayName=oP.displayName;const rQ=y.forwardRef(({className:e,...t},n)=>i.jsx(aP,{ref:n,className:Ie("py-1.5 pl-8 pr-2 text-sm font-semibold",e),...t}));rQ.displayName=aP.displayName;const gP=y.forwardRef(({className:e,children:t,...n},r)=>i.jsxs(iP,{ref:r,className:Ie("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),...n,children:[i.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:i.jsx(eQ,{children:i.jsx(fT,{className:"h-4 w-4"})})}),i.jsx(XJ,{children:t})]}));gP.displayName=iP.displayName;const sQ=y.forwardRef(({className:e,...t},n)=>i.jsx(uP,{ref:n,className:Ie("-mx-1 my-1 h-px bg-muted",e),...t}));sQ.displayName=uP.displayName;var Bx="Switch",[oQ]=us(Bx),[aQ,iQ]=oQ(Bx),mP=y.forwardRef((e,t)=>{const{__scopeSwitch:n,name:r,checked:s,defaultChecked:o,required:l,disabled:u,value:d="on",onCheckedChange:f,...h}=e,[m,g]=y.useState(null),x=Rt(t,j=>g(j)),b=y.useRef(!1),w=m?!!m.closest("form"):!0,[C=!1,k]=ya({prop:s,defaultProp:o,onChange:f});return i.jsxs(aQ,{scope:n,checked:C,disabled:u,children:[i.jsx(rt.button,{type:"button",role:"switch","aria-checked":C,"aria-required":l,"data-state":bP(C),"data-disabled":u?"":void 0,disabled:u,value:d,...h,ref:x,onClick:Ue(e.onClick,j=>{k(M=>!M),w&&(b.current=j.isPropagationStopped(),b.current||j.stopPropagation())})}),w&&i.jsx(lQ,{control:m,bubbles:!b.current,name:r,value:d,checked:C,required:l,disabled:u,style:{transform:"translateX(-100%)"}})]})});mP.displayName=Bx;var vP="SwitchThumb",yP=y.forwardRef((e,t)=>{const{__scopeSwitch:n,...r}=e,s=iQ(vP,n);return i.jsx(rt.span,{"data-state":bP(s.checked),"data-disabled":s.disabled?"":void 0,...r,ref:t})});yP.displayName=vP;var lQ=e=>{const{control:t,checked:n,bubbles:r=!0,...s}=e,o=y.useRef(null),l=NR(n),u=zT(t);return y.useEffect(()=>{const d=o.current,f=window.HTMLInputElement.prototype,m=Object.getOwnPropertyDescriptor(f,"checked").set;if(l!==n&&m){const g=new Event("click",{bubbles:r});m.call(d,n),d.dispatchEvent(g)}},[l,n,r]),i.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:n,...s,tabIndex:-1,ref:o,style:{...e.style,...u,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})};function bP(e){return e?"checked":"unchecked"}var xP=mP,cQ=yP;const gc=y.forwardRef(({className:e,...t},n)=>i.jsx(xP,{className:Ie("peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-slate-400",e),...t,ref:n,children:i.jsx(cQ,{className:Ie("pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0")})}));gc.displayName=xP.displayName;const Fo=Gn,wP=y.createContext({}),Lo=({...e})=>i.jsx(wP.Provider,{value:{name:e.name},children:i.jsx(r6,{...e})}),og=()=>{const e=y.useContext(wP),t=y.useContext(SP),{getFieldState:n,formState:r}=Kh(),s=n(e.name,r);if(!e)throw new Error("useFormField should be used within ");const{id:o}=t;return{id:o,name:e.name,formItemId:`${o}-form-item`,formDescriptionId:`${o}-form-item-description`,formMessageId:`${o}-form-item-message`,...s}},SP=y.createContext({}),no=y.forwardRef(({className:e,...t},n)=>{const r=y.useId();return i.jsx(SP.Provider,{value:{id:r},children:i.jsx("div",{ref:n,className:Ie("space-y-2",e),...t})})});no.displayName="FormItem";const Nr=y.forwardRef(({className:e,...t},n)=>{const{error:r,formItemId:s}=og();return i.jsx(TR,{ref:n,className:Ie(r&&"text-rose-600",e),htmlFor:s,...t})});Nr.displayName="FormLabel";const _s=y.forwardRef(({...e},t)=>{const{error:n,formItemId:r,formDescriptionId:s,formMessageId:o}=og();return i.jsx(No,{ref:t,id:r,"aria-describedby":n?`${s} ${o}`:`${s}`,"aria-invalid":!!n,...e})});_s.displayName="FormControl";const ag=y.forwardRef(({className:e,...t},n)=>{const{formDescriptionId:r}=og();return i.jsx("p",{ref:n,id:r,className:Ie("text-sm text-muted-foreground",e),...t})});ag.displayName="FormDescription";const Td=y.forwardRef(({className:e,children:t,...n},r)=>{const{error:s,formMessageId:o}=og(),l=s?String(s?.message):t;return l?i.jsx("p",{ref:r,id:o,className:Ie("text-sm font-medium text-rose-600",e),...n,children:l}):null});Td.displayName="FormMessage";const le=({name:e,label:t,children:n,required:r,readOnly:s,className:o,...l})=>i.jsx(Lo,{...l,name:e,render:({field:u})=>i.jsxs(no,{className:o,children:[t&&i.jsxs(Nr,{children:[t,r&&i.jsx("span",{className:"ml-2 text-rose-600",children:"*"})]}),i.jsx(_s,{children:y.isValidElement(n)&&y.cloneElement(n,{...u,value:u.value??"",required:r,readOnly:s,checked:u.value,onCheckedChange:u.onChange})}),i.jsx(Td,{})]})}),Pe=({name:e,label:t,required:n,className:r,helper:s,reverse:o,...l})=>i.jsx(Lo,{...l,name:e,render:({field:u})=>i.jsxs(no,{className:Ie("flex items-center gap-3",o&&"flex-row-reverse justify-end",r),children:[i.jsx("div",{className:"flex flex-col gap-2",children:t&&i.jsxs(Nr,{children:[i.jsxs("p",{className:"break-all",children:[t,n&&i.jsx("span",{className:"ml-2 text-rose-600",children:"*"})]}),s&&i.jsx(ag,{className:"mt-2",children:s})]})}),i.jsx(_s,{children:i.jsx(gc,{checked:u.value,onCheckedChange:u.onChange,required:n})}),i.jsx(Td,{})]})}),Jt=({name:e,label:t,helper:n,required:r,options:s,placeholder:o,disabled:l,...u})=>i.jsx(Lo,{...u,name:e,render:({field:d})=>i.jsxs(no,{children:[t&&i.jsxs(Nr,{children:[t,r&&i.jsx("span",{className:"ml-2 text-rose-600",children:"*"})]}),i.jsx(_s,{children:i.jsxs(tQ,{onValueChange:d.onChange,defaultValue:d.value,disabled:l,children:[i.jsx(_s,{children:i.jsx(dP,{children:i.jsx(nQ,{placeholder:o})})}),i.jsx(hP,{children:s.map(f=>i.jsx(gP,{value:f.value,children:f.label},f.value))})]})}),n&&i.jsx(ag,{children:n}),i.jsx(Td,{})]})}),Da=({name:e,label:t,helper:n,required:r,placeholder:s,...o})=>i.jsx(Lo,{...o,name:e,render:({field:l})=>{let u=[];return Array.isArray(l.value)&&(u=l.value),i.jsxs(no,{children:[t&&i.jsxs(Nr,{children:[t,r&&i.jsx("span",{className:"ml-2 text-rose-600",children:"*"})]}),i.jsx(_s,{children:i.jsx(kJ,{tags:u.map(d=>({id:d,text:d,className:""})),handleDelete:d=>l.onChange(u.filter((f,h)=>h!==d)),handleAddition:d=>l.onChange([...u,d.id]),inputFieldPosition:"bottom",placeholder:s,autoFocus:!1,allowDragDrop:!1,separators:[Vs.ENTER,Vs.TAB,Vs.COMMA],classNames:{tags:"tagsClass",tagInput:"tagInputClass",tagInputField:u_,selected:"my-2 flex flex-wrap gap-2",tag:"flex items-center gap-2 px-2 py-1 bg-primary/30 rounded-md text-xs",remove:"[&>svg]:fill-rose-600 hover:[&>svg]:fill-rose-700",suggestions:"suggestionsClass",activeSuggestion:"activeSuggestionClass",editTagInput:"editTagInputClass",editTagInputField:"editTagInputFieldClass",clearAll:"clearAllClass"}})}),n&&i.jsx(ag,{children:n}),i.jsx(Td,{})]})}}),Kv=P.string().optional().transform(e=>e===""?void 0:e),uQ=P.object({name:P.string(),token:Kv,number:Kv,businessId:Kv,integration:P.enum(["WHATSAPP-BUSINESS","WHATSAPP-BAILEYS","EVOLUTION"])});function dQ({resetTable:e}){const{t}=Ve(),{createInstance:n}=Hh(),[r,s]=y.useState(!1),o=[{value:"WHATSAPP-BAILEYS",label:t("instance.form.integration.baileys")},{value:"WHATSAPP-BUSINESS",label:t("instance.form.integration.whatsapp")},{value:"EVOLUTION",label:t("instance.form.integration.evolution")}],l=on({resolver:an(uQ),defaultValues:{name:"",integration:"WHATSAPP-BAILEYS",token:E1().replace("-","").toUpperCase(),number:"",businessId:""}}),u=l.watch("integration"),d=async h=>{try{const m={instanceName:h.name,integration:h.integration,token:h.token===""?null:h.token,number:h.number===""?null:h.number,businessId:h.businessId===""?null:h.businessId};await n(m),me.success(t("toast.instance.created")),s(!1),f(),e()}catch(m){console.error("Error:",m),me.error(`Error : ${m?.response?.data?.response?.message}`)}},f=()=>{l.reset({name:"",integration:"WHATSAPP-BAILEYS",token:E1().replace("-","").toLocaleUpperCase(),number:"",businessId:""})};return i.jsxs(Pt,{open:r,onOpenChange:s,children:[i.jsx(Bt,{asChild:!0,children:i.jsxs(se,{variant:"default",size:"sm",children:[t("instance.button.create")," ",i.jsx(cs,{size:"18"})]})}),i.jsxs(Nt,{className:"sm:max-w-[650px]",onCloseAutoFocus:f,children:[i.jsx(Mt,{children:i.jsx(zt,{children:t("instance.modal.title")})}),i.jsx(Gn,{...l,children:i.jsxs("form",{onSubmit:l.handleSubmit(d),className:"grid gap-4 py-4",children:[i.jsx(le,{required:!0,name:"name",label:t("instance.form.name"),children:i.jsx(ne,{})}),i.jsx(Jt,{name:"integration",label:t("instance.form.integration.label"),options:o}),i.jsx(le,{required:!0,name:"token",label:t("instance.form.token"),children:i.jsx(ne,{})}),i.jsx(le,{name:"number",label:t("instance.form.number"),children:i.jsx(ne,{type:"tel"})}),u==="WHATSAPP-BUSINESS"&&i.jsx(le,{required:!0,name:"businessId",label:t("instance.form.businessId"),children:i.jsx(ne,{})}),i.jsx(Yt,{children:i.jsx(se,{type:"submit",children:t("instance.button.save")})})]})})]})]})}function bo(e,t,{checkForDefaultPrevented:n=!0}={}){return function(s){if(e?.(s),n===!1||!s.defaultPrevented)return t?.(s)}}function IE(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function CP(...e){return t=>{let n=!1;const r=e.map(s=>{const o=IE(s,t);return!n&&typeof o=="function"&&(n=!0),o});if(n)return()=>{for(let s=0;s{const{scope:g,children:x,...b}=m,w=g?.[e]?.[d]||u,C=y.useMemo(()=>b,Object.values(b));return i.jsx(w.Provider,{value:C,children:x})};f.displayName=o+"Provider";function h(m,g){const x=g?.[e]?.[d]||u,b=y.useContext(x);if(b)return b;if(l!==void 0)return l;throw new Error(`\`${m}\` must be used within \`${o}\``)}return[f,h]}const s=()=>{const o=n.map(l=>y.createContext(l));return function(u){const d=u?.[e]||o;return y.useMemo(()=>({[`__scope${e}`]:{...u,[e]:d}}),[u,d])}};return s.scopeName=e,[r,fQ(s,...t)]}function fQ(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const r=e.map(s=>({useScope:s(),scopeName:s.scopeName}));return function(o){const l=r.reduce((u,{useScope:d,scopeName:f})=>{const m=d(o)[`__scope${f}`];return{...u,...m}},{});return y.useMemo(()=>({[`__scope${t.scopeName}`]:l}),[l])}};return n.scopeName=t.scopeName,n}function pQ(e){const t=hQ(e),n=y.forwardRef((r,s)=>{const{children:o,...l}=r,u=y.Children.toArray(o),d=u.find(mQ);if(d){const f=d.props.children,h=u.map(m=>m===d?y.Children.count(f)>1?y.Children.only(null):y.isValidElement(f)?f.props.children:null:m);return i.jsx(t,{...l,ref:s,children:y.isValidElement(f)?y.cloneElement(f,void 0,h):null})}return i.jsx(t,{...l,ref:s,children:o})});return n.displayName=`${e}.Slot`,n}function hQ(e){const t=y.forwardRef((n,r)=>{const{children:s,...o}=n;if(y.isValidElement(s)){const l=yQ(s),u=vQ(o,s.props);return s.type!==y.Fragment&&(u.ref=r?CP(r,l):l),y.cloneElement(s,u)}return y.Children.count(s)>1?y.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var kP=Symbol("radix.slottable");function gQ(e){const t=({children:n})=>i.jsx(i.Fragment,{children:n});return t.displayName=`${e}.Slottable`,t.__radixId=kP,t}function mQ(e){return y.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===kP}function vQ(e,t){const n={...t};for(const r in t){const s=e[r],o=t[r];/^on[A-Z]/.test(r)?s&&o?n[r]=(...u)=>{const d=o(...u);return s(...u),d}:s&&(n[r]=s):r==="style"?n[r]={...s,...o}:r==="className"&&(n[r]=[s,o].filter(Boolean).join(" "))}return{...e,...n}}function yQ(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var bQ=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Fa=bQ.reduce((e,t)=>{const n=pQ(`Primitive.${t}`),r=y.forwardRef((s,o)=>{const{asChild:l,...u}=s,d=l?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),i.jsx(d,{...u,ref:o})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function xQ(e,t){e&&Ma.flushSync(()=>e.dispatchEvent(t))}function ig(e){const t=y.useRef(e);return y.useEffect(()=>{t.current=e}),y.useMemo(()=>(...n)=>t.current?.(...n),[])}function wQ(e,t=globalThis?.document){const n=ig(e);y.useEffect(()=>{const r=s=>{s.key==="Escape"&&n(s)};return t.addEventListener("keydown",r,{capture:!0}),()=>t.removeEventListener("keydown",r,{capture:!0})},[n,t])}var SQ="DismissableLayer",hb="dismissableLayer.update",CQ="dismissableLayer.pointerDownOutside",EQ="dismissableLayer.focusOutside",AE,jP=y.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),TP=y.forwardRef((e,t)=>{const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:r,onPointerDownOutside:s,onFocusOutside:o,onInteractOutside:l,onDismiss:u,...d}=e,f=y.useContext(jP),[h,m]=y.useState(null),g=h?.ownerDocument??globalThis?.document,[,x]=y.useState({}),b=Ui(t,O=>m(O)),w=Array.from(f.layers),[C]=[...f.layersWithOutsidePointerEventsDisabled].slice(-1),k=w.indexOf(C),j=h?w.indexOf(h):-1,M=f.layersWithOutsidePointerEventsDisabled.size>0,_=j>=k,R=TQ(O=>{const D=O.target,z=[...f.branches].some(Q=>Q.contains(D));!_||z||(s?.(O),l?.(O),O.defaultPrevented||u?.())},g),N=NQ(O=>{const D=O.target;[...f.branches].some(Q=>Q.contains(D))||(o?.(O),l?.(O),O.defaultPrevented||u?.())},g);return wQ(O=>{j===f.layers.size-1&&(r?.(O),!O.defaultPrevented&&u&&(O.preventDefault(),u()))},g),y.useEffect(()=>{if(h)return n&&(f.layersWithOutsidePointerEventsDisabled.size===0&&(AE=g.body.style.pointerEvents,g.body.style.pointerEvents="none"),f.layersWithOutsidePointerEventsDisabled.add(h)),f.layers.add(h),DE(),()=>{n&&f.layersWithOutsidePointerEventsDisabled.size===1&&(g.body.style.pointerEvents=AE)}},[h,g,n,f]),y.useEffect(()=>()=>{h&&(f.layers.delete(h),f.layersWithOutsidePointerEventsDisabled.delete(h),DE())},[h,f]),y.useEffect(()=>{const O=()=>x({});return document.addEventListener(hb,O),()=>document.removeEventListener(hb,O)},[]),i.jsx(Fa.div,{...d,ref:b,style:{pointerEvents:M?_?"auto":"none":void 0,...e.style},onFocusCapture:bo(e.onFocusCapture,N.onFocusCapture),onBlurCapture:bo(e.onBlurCapture,N.onBlurCapture),onPointerDownCapture:bo(e.onPointerDownCapture,R.onPointerDownCapture)})});TP.displayName=SQ;var kQ="DismissableLayerBranch",jQ=y.forwardRef((e,t)=>{const n=y.useContext(jP),r=y.useRef(null),s=Ui(t,r);return y.useEffect(()=>{const o=r.current;if(o)return n.branches.add(o),()=>{n.branches.delete(o)}},[n.branches]),i.jsx(Fa.div,{...e,ref:s})});jQ.displayName=kQ;function TQ(e,t=globalThis?.document){const n=ig(e),r=y.useRef(!1),s=y.useRef(()=>{});return y.useEffect(()=>{const o=u=>{if(u.target&&!r.current){let d=function(){NP(CQ,n,f,{discrete:!0})};const f={originalEvent:u};u.pointerType==="touch"?(t.removeEventListener("click",s.current),s.current=d,t.addEventListener("click",s.current,{once:!0})):d()}else t.removeEventListener("click",s.current);r.current=!1},l=window.setTimeout(()=>{t.addEventListener("pointerdown",o)},0);return()=>{window.clearTimeout(l),t.removeEventListener("pointerdown",o),t.removeEventListener("click",s.current)}},[t,n]),{onPointerDownCapture:()=>r.current=!0}}function NQ(e,t=globalThis?.document){const n=ig(e),r=y.useRef(!1);return y.useEffect(()=>{const s=o=>{o.target&&!r.current&&NP(EQ,n,{originalEvent:o},{discrete:!1})};return t.addEventListener("focusin",s),()=>t.removeEventListener("focusin",s)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function DE(){const e=new CustomEvent(hb);document.dispatchEvent(e)}function NP(e,t,n,{discrete:r}){const s=n.originalEvent.target,o=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&s.addEventListener(e,t,{once:!0}),r?xQ(s,o):s.dispatchEvent(o)}var Ta=globalThis?.document?y.useLayoutEffect:()=>{},MQ=Yl[" useId ".trim().toString()]||(()=>{}),_Q=0;function RQ(e){const[t,n]=y.useState(MQ());return Ta(()=>{n(r=>r??String(_Q++))},[e]),t?`radix-${t}`:""}var PQ="Arrow",MP=y.forwardRef((e,t)=>{const{children:n,width:r=10,height:s=5,...o}=e;return i.jsx(Fa.svg,{...o,ref:t,width:r,height:s,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?n:i.jsx("polygon",{points:"0,0 30,0 15,10"})})});MP.displayName=PQ;var OQ=MP;function IQ(e){const[t,n]=y.useState(void 0);return Ta(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const r=new ResizeObserver(s=>{if(!Array.isArray(s)||!s.length)return;const o=s[0];let l,u;if("borderBoxSize"in o){const d=o.borderBoxSize,f=Array.isArray(d)?d[0]:d;l=f.inlineSize,u=f.blockSize}else l=e.offsetWidth,u=e.offsetHeight;n({width:l,height:u})});return r.observe(e,{box:"border-box"}),()=>r.unobserve(e)}else n(void 0)},[e]),t}var zx="Popper",[_P,RP]=EP(zx),[AQ,PP]=_P(zx),OP=e=>{const{__scopePopper:t,children:n}=e,[r,s]=y.useState(null);return i.jsx(AQ,{scope:t,anchor:r,onAnchorChange:s,children:n})};OP.displayName=zx;var IP="PopperAnchor",AP=y.forwardRef((e,t)=>{const{__scopePopper:n,virtualRef:r,...s}=e,o=PP(IP,n),l=y.useRef(null),u=Ui(t,l),d=y.useRef(null);return y.useEffect(()=>{const f=d.current;d.current=r?.current||l.current,f!==d.current&&o.onAnchorChange(d.current)}),r?null:i.jsx(Fa.div,{...s,ref:u})});AP.displayName=IP;var Ux="PopperContent",[DQ,FQ]=_P(Ux),DP=y.forwardRef((e,t)=>{const{__scopePopper:n,side:r="bottom",sideOffset:s=0,align:o="center",alignOffset:l=0,arrowPadding:u=0,avoidCollisions:d=!0,collisionBoundary:f=[],collisionPadding:h=0,sticky:m="partial",hideWhenDetached:g=!1,updatePositionStrategy:x="optimized",onPlaced:b,...w}=e,C=PP(Ux,n),[k,j]=y.useState(null),M=Ui(t,Z=>j(Z)),[_,R]=y.useState(null),N=IQ(_),O=N?.width??0,D=N?.height??0,z=r+(o!=="center"?"-"+o:""),Q=typeof h=="number"?h:{top:0,right:0,bottom:0,left:0,...h},pe=Array.isArray(f)?f:[f],V=pe.length>0,G={padding:Q,boundary:pe.filter($Q),altBoundary:V},{refs:W,floatingStyles:ie,placement:re,isPositioned:Y,middlewareData:H}=PT({strategy:"fixed",placement:z,whileElementsMounted:(...Z)=>_T(...Z,{animationFrame:x==="always"}),elements:{reference:C.anchor},middleware:[OT({mainAxis:s+D,alignmentAxis:l}),d&&IT({mainAxis:!0,crossAxis:!1,limiter:m==="partial"?AT():void 0,...G}),d&&DT({...G}),FT({...G,apply:({elements:Z,rects:ye,availableWidth:Re,availableHeight:$e})=>{const{width:Ye,height:Fe}=ye.reference,ft=Z.floating.style;ft.setProperty("--radix-popper-available-width",`${Re}px`),ft.setProperty("--radix-popper-available-height",`${$e}px`),ft.setProperty("--radix-popper-anchor-width",`${Ye}px`),ft.setProperty("--radix-popper-anchor-height",`${Fe}px`)}}),_&&$T({element:_,padding:u}),BQ({arrowWidth:O,arrowHeight:D}),g&<({strategy:"referenceHidden",...G})]}),[q,he]=$P(re),A=ig(b);Ta(()=>{Y&&A?.()},[Y,A]);const F=H.arrow?.x,fe=H.arrow?.y,te=H.arrow?.centerOffset!==0,[de,ge]=y.useState();return Ta(()=>{k&&ge(window.getComputedStyle(k).zIndex)},[k]),i.jsx("div",{ref:W.setFloating,"data-radix-popper-content-wrapper":"",style:{...ie,transform:Y?ie.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:de,"--radix-popper-transform-origin":[H.transformOrigin?.x,H.transformOrigin?.y].join(" "),...H.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:i.jsx(DQ,{scope:n,placedSide:q,onArrowChange:R,arrowX:F,arrowY:fe,shouldHideArrow:te,children:i.jsx(Fa.div,{"data-side":q,"data-align":he,...w,ref:M,style:{...w.style,animation:Y?void 0:"none"}})})})});DP.displayName=Ux;var FP="PopperArrow",LQ={top:"bottom",right:"left",bottom:"top",left:"right"},LP=y.forwardRef(function(t,n){const{__scopePopper:r,...s}=t,o=FQ(FP,r),l=LQ[o.placedSide];return i.jsx("span",{ref:o.onArrowChange,style:{position:"absolute",left:o.arrowX,top:o.arrowY,[l]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[o.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[o.placedSide],visibility:o.shouldHideArrow?"hidden":void 0},children:i.jsx(OQ,{...s,ref:n,style:{...s.style,display:"block"}})})});LP.displayName=FP;function $Q(e){return e!==null}var BQ=e=>({name:"transformOrigin",options:e,fn(t){const{placement:n,rects:r,middlewareData:s}=t,l=s.arrow?.centerOffset!==0,u=l?0:e.arrowWidth,d=l?0:e.arrowHeight,[f,h]=$P(n),m={start:"0%",center:"50%",end:"100%"}[h],g=(s.arrow?.x??0)+u/2,x=(s.arrow?.y??0)+d/2;let b="",w="";return f==="bottom"?(b=l?m:`${g}px`,w=`${-d}px`):f==="top"?(b=l?m:`${g}px`,w=`${r.floating.height+d}px`):f==="right"?(b=`${-d}px`,w=l?m:`${x}px`):f==="left"&&(b=`${r.floating.width+d}px`,w=l?m:`${x}px`),{data:{x:b,y:w}}}});function $P(e){const[t,n="center"]=e.split("-");return[t,n]}var zQ=OP,UQ=AP,VQ=DP,HQ=LP,qQ="Portal",BP=y.forwardRef((e,t)=>{const{container:n,...r}=e,[s,o]=y.useState(!1);Ta(()=>o(!0),[]);const l=n||s&&globalThis?.document?.body;return l?Ib.createPortal(i.jsx(Fa.div,{...r,ref:t}),l):null});BP.displayName=qQ;function KQ(e,t){return y.useReducer((n,r)=>t[n][r]??n,e)}var Vx=e=>{const{present:t,children:n}=e,r=WQ(t),s=typeof n=="function"?n({present:r.isPresent}):y.Children.only(n),o=Ui(r.ref,GQ(s));return typeof n=="function"||r.isPresent?y.cloneElement(s,{ref:o}):null};Vx.displayName="Presence";function WQ(e){const[t,n]=y.useState(),r=y.useRef(null),s=y.useRef(e),o=y.useRef("none"),l=e?"mounted":"unmounted",[u,d]=KQ(l,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return y.useEffect(()=>{const f=Xf(r.current);o.current=u==="mounted"?f:"none"},[u]),Ta(()=>{const f=r.current,h=s.current;if(h!==e){const g=o.current,x=Xf(f);e?d("MOUNT"):x==="none"||f?.display==="none"?d("UNMOUNT"):d(h&&g!==x?"ANIMATION_OUT":"UNMOUNT"),s.current=e}},[e,d]),Ta(()=>{if(t){let f;const h=t.ownerDocument.defaultView??window,m=x=>{const w=Xf(r.current).includes(CSS.escape(x.animationName));if(x.target===t&&w&&(d("ANIMATION_END"),!s.current)){const C=t.style.animationFillMode;t.style.animationFillMode="forwards",f=h.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=C)})}},g=x=>{x.target===t&&(o.current=Xf(r.current))};return t.addEventListener("animationstart",g),t.addEventListener("animationcancel",m),t.addEventListener("animationend",m),()=>{h.clearTimeout(f),t.removeEventListener("animationstart",g),t.removeEventListener("animationcancel",m),t.removeEventListener("animationend",m)}}else d("ANIMATION_END")},[t,d]),{isPresent:["mounted","unmountSuspended"].includes(u),ref:y.useCallback(f=>{r.current=f?getComputedStyle(f):null,n(f)},[])}}function Xf(e){return e?.animationName||"none"}function GQ(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var JQ=Yl[" useInsertionEffect ".trim().toString()]||Ta;function QQ({prop:e,defaultProp:t,onChange:n=()=>{},caller:r}){const[s,o,l]=ZQ({defaultProp:t,onChange:n}),u=e!==void 0,d=u?e:s;{const h=y.useRef(e!==void 0);y.useEffect(()=>{const m=h.current;m!==u&&console.warn(`${r} is changing from ${m?"controlled":"uncontrolled"} to ${u?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),h.current=u},[u,r])}const f=y.useCallback(h=>{if(u){const m=YQ(h)?h(e):h;m!==e&&l.current?.(m)}else o(h)},[u,e,o,l]);return[d,f]}function ZQ({defaultProp:e,onChange:t}){const[n,r]=y.useState(e),s=y.useRef(n),o=y.useRef(t);return JQ(()=>{o.current=t},[t]),y.useEffect(()=>{s.current!==n&&(o.current?.(n),s.current=n)},[n,s]),[n,r,o]}function YQ(e){return typeof e=="function"}var XQ=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),eZ="VisuallyHidden",zP=y.forwardRef((e,t)=>i.jsx(Fa.span,{...e,ref:t,style:{...XQ,...e.style}}));zP.displayName=eZ;var tZ=zP,[lg]=EP("Tooltip",[RP]),cg=RP(),UP="TooltipProvider",nZ=700,gb="tooltip.open",[rZ,Hx]=lg(UP),VP=e=>{const{__scopeTooltip:t,delayDuration:n=nZ,skipDelayDuration:r=300,disableHoverableContent:s=!1,children:o}=e,l=y.useRef(!0),u=y.useRef(!1),d=y.useRef(0);return y.useEffect(()=>{const f=d.current;return()=>window.clearTimeout(f)},[]),i.jsx(rZ,{scope:t,isOpenDelayedRef:l,delayDuration:n,onOpen:y.useCallback(()=>{window.clearTimeout(d.current),l.current=!1},[]),onClose:y.useCallback(()=>{window.clearTimeout(d.current),d.current=window.setTimeout(()=>l.current=!0,r)},[r]),isPointerInTransitRef:u,onPointerInTransitChange:y.useCallback(f=>{u.current=f},[]),disableHoverableContent:s,children:o})};VP.displayName=UP;var id="Tooltip",[sZ,Nd]=lg(id),HP=e=>{const{__scopeTooltip:t,children:n,open:r,defaultOpen:s,onOpenChange:o,disableHoverableContent:l,delayDuration:u}=e,d=Hx(id,e.__scopeTooltip),f=cg(t),[h,m]=y.useState(null),g=RQ(),x=y.useRef(0),b=l??d.disableHoverableContent,w=u??d.delayDuration,C=y.useRef(!1),[k,j]=QQ({prop:r,defaultProp:s??!1,onChange:O=>{O?(d.onOpen(),document.dispatchEvent(new CustomEvent(gb))):d.onClose(),o?.(O)},caller:id}),M=y.useMemo(()=>k?C.current?"delayed-open":"instant-open":"closed",[k]),_=y.useCallback(()=>{window.clearTimeout(x.current),x.current=0,C.current=!1,j(!0)},[j]),R=y.useCallback(()=>{window.clearTimeout(x.current),x.current=0,j(!1)},[j]),N=y.useCallback(()=>{window.clearTimeout(x.current),x.current=window.setTimeout(()=>{C.current=!0,j(!0),x.current=0},w)},[w,j]);return y.useEffect(()=>()=>{x.current&&(window.clearTimeout(x.current),x.current=0)},[]),i.jsx(zQ,{...f,children:i.jsx(sZ,{scope:t,contentId:g,open:k,stateAttribute:M,trigger:h,onTriggerChange:m,onTriggerEnter:y.useCallback(()=>{d.isOpenDelayedRef.current?N():_()},[d.isOpenDelayedRef,N,_]),onTriggerLeave:y.useCallback(()=>{b?R():(window.clearTimeout(x.current),x.current=0)},[R,b]),onOpen:_,onClose:R,disableHoverableContent:b,children:n})})};HP.displayName=id;var mb="TooltipTrigger",qP=y.forwardRef((e,t)=>{const{__scopeTooltip:n,...r}=e,s=Nd(mb,n),o=Hx(mb,n),l=cg(n),u=y.useRef(null),d=Ui(t,u,s.onTriggerChange),f=y.useRef(!1),h=y.useRef(!1),m=y.useCallback(()=>f.current=!1,[]);return y.useEffect(()=>()=>document.removeEventListener("pointerup",m),[m]),i.jsx(UQ,{asChild:!0,...l,children:i.jsx(Fa.button,{"aria-describedby":s.open?s.contentId:void 0,"data-state":s.stateAttribute,...r,ref:d,onPointerMove:bo(e.onPointerMove,g=>{g.pointerType!=="touch"&&!h.current&&!o.isPointerInTransitRef.current&&(s.onTriggerEnter(),h.current=!0)}),onPointerLeave:bo(e.onPointerLeave,()=>{s.onTriggerLeave(),h.current=!1}),onPointerDown:bo(e.onPointerDown,()=>{s.open&&s.onClose(),f.current=!0,document.addEventListener("pointerup",m,{once:!0})}),onFocus:bo(e.onFocus,()=>{f.current||s.onOpen()}),onBlur:bo(e.onBlur,s.onClose),onClick:bo(e.onClick,s.onClose)})})});qP.displayName=mb;var qx="TooltipPortal",[oZ,aZ]=lg(qx,{forceMount:void 0}),KP=e=>{const{__scopeTooltip:t,forceMount:n,children:r,container:s}=e,o=Nd(qx,t);return i.jsx(oZ,{scope:t,forceMount:n,children:i.jsx(Vx,{present:n||o.open,children:i.jsx(BP,{asChild:!0,container:s,children:r})})})};KP.displayName=qx;var Wl="TooltipContent",WP=y.forwardRef((e,t)=>{const n=aZ(Wl,e.__scopeTooltip),{forceMount:r=n.forceMount,side:s="top",...o}=e,l=Nd(Wl,e.__scopeTooltip);return i.jsx(Vx,{present:r||l.open,children:l.disableHoverableContent?i.jsx(GP,{side:s,...o,ref:t}):i.jsx(iZ,{side:s,...o,ref:t})})}),iZ=y.forwardRef((e,t)=>{const n=Nd(Wl,e.__scopeTooltip),r=Hx(Wl,e.__scopeTooltip),s=y.useRef(null),o=Ui(t,s),[l,u]=y.useState(null),{trigger:d,onClose:f}=n,h=s.current,{onPointerInTransitChange:m}=r,g=y.useCallback(()=>{u(null),m(!1)},[m]),x=y.useCallback((b,w)=>{const C=b.currentTarget,k={x:b.clientX,y:b.clientY},j=dZ(k,C.getBoundingClientRect()),M=fZ(k,j),_=pZ(w.getBoundingClientRect()),R=gZ([...M,..._]);u(R),m(!0)},[m]);return y.useEffect(()=>()=>g(),[g]),y.useEffect(()=>{if(d&&h){const b=C=>x(C,h),w=C=>x(C,d);return d.addEventListener("pointerleave",b),h.addEventListener("pointerleave",w),()=>{d.removeEventListener("pointerleave",b),h.removeEventListener("pointerleave",w)}}},[d,h,x,g]),y.useEffect(()=>{if(l){const b=w=>{const C=w.target,k={x:w.clientX,y:w.clientY},j=d?.contains(C)||h?.contains(C),M=!hZ(k,l);j?g():M&&(g(),f())};return document.addEventListener("pointermove",b),()=>document.removeEventListener("pointermove",b)}},[d,h,l,f,g]),i.jsx(GP,{...e,ref:o})}),[lZ,cZ]=lg(id,{isInside:!1}),uZ=gQ("TooltipContent"),GP=y.forwardRef((e,t)=>{const{__scopeTooltip:n,children:r,"aria-label":s,onEscapeKeyDown:o,onPointerDownOutside:l,...u}=e,d=Nd(Wl,n),f=cg(n),{onClose:h}=d;return y.useEffect(()=>(document.addEventListener(gb,h),()=>document.removeEventListener(gb,h)),[h]),y.useEffect(()=>{if(d.trigger){const m=g=>{g.target?.contains(d.trigger)&&h()};return window.addEventListener("scroll",m,{capture:!0}),()=>window.removeEventListener("scroll",m,{capture:!0})}},[d.trigger,h]),i.jsx(TP,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:o,onPointerDownOutside:l,onFocusOutside:m=>m.preventDefault(),onDismiss:h,children:i.jsxs(VQ,{"data-state":d.stateAttribute,...f,...u,ref:t,style:{...u.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[i.jsx(uZ,{children:r}),i.jsx(lZ,{scope:n,isInside:!0,children:i.jsx(tZ,{id:d.contentId,role:"tooltip",children:s||r})})]})})});WP.displayName=Wl;var JP="TooltipArrow",QP=y.forwardRef((e,t)=>{const{__scopeTooltip:n,...r}=e,s=cg(n);return cZ(JP,n).isInside?null:i.jsx(HQ,{...s,...r,ref:t})});QP.displayName=JP;function dZ(e,t){const n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),s=Math.abs(t.right-e.x),o=Math.abs(t.left-e.x);switch(Math.min(n,r,s,o)){case o:return"left";case s:return"right";case n:return"top";case r:return"bottom";default:throw new Error("unreachable")}}function fZ(e,t,n=5){const r=[];switch(t){case"top":r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case"bottom":r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case"left":r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case"right":r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return r}function pZ(e){const{top:t,right:n,bottom:r,left:s}=e;return[{x:s,y:t},{x:n,y:t},{x:n,y:r},{x:s,y:r}]}function hZ(e,t){const{x:n,y:r}=e;let s=!1;for(let o=0,l=t.length-1;or!=g>r&&n<(m-f)*(r-h)/(g-h)+f&&(s=!s)}return s}function gZ(e){const t=e.slice();return t.sort((n,r)=>n.xr.x?1:n.yr.y?1:0),mZ(t)}function mZ(e){if(e.length<=1)return e.slice();const t=[];for(let r=0;r=2;){const o=t[t.length-1],l=t[t.length-2];if((o.x-l.x)*(s.y-l.y)>=(o.y-l.y)*(s.x-l.x))t.pop();else break}t.push(s)}t.pop();const n=[];for(let r=e.length-1;r>=0;r--){const s=e[r];for(;n.length>=2;){const o=n[n.length-1],l=n[n.length-2];if((o.x-l.x)*(s.y-l.y)>=(o.y-l.y)*(s.x-l.x))n.pop();else break}n.push(s)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}var vZ=VP,yZ=HP,bZ=qP,xZ=KP,wZ=WP,SZ=QP;function FE({content:e,children:t,side:n="top"}){return i.jsx(vZ,{delayDuration:200,children:i.jsxs(yZ,{children:[i.jsx(bZ,{asChild:!0,children:t}),i.jsx(xZ,{children:i.jsxs(wZ,{side:n,className:` - rounded px-3 py-1.5 text-sm z-50 border shadow-lg - bg-gray-100 text-gray-900 border-gray-300 - dark:bg-gray-800 dark:text-gray-100 dark:border-gray-700 - `,children:[e,i.jsx(SZ,{className:"fill-gray-100 dark:fill-gray-800",width:18,height:9})]})})]})})}function CZ(){const{t:e}=Ve(),[t,n]=y.useState(null),{deleteInstance:r,logout:s}=Hh(),{data:o,refetch:l}=q5(),[u,d]=y.useState([]),[f,h]=y.useState("all"),[m,g]=y.useState(""),x=async()=>{await l()},b=async k=>{n(null),d([...u,k]);try{try{await s(k)}catch(j){console.error("Error logout:",j)}await r(k),await new Promise(j=>setTimeout(j,1e3)),x()}catch(j){console.error("Error instance delete:",j),me.error(`Error : ${j?.response?.data?.response?.message}`)}finally{d(u.filter(j=>j!==k))}},w=y.useMemo(()=>{let k=o?[...o]:[];return f!=="all"&&(k=k.filter(j=>j.connectionStatus===f)),m!==""&&(k=k.filter(j=>j.name.toLowerCase().includes(m.toLowerCase()))),k},[o,m,f]),C=[{value:"all",label:e("status.all")},{value:"close",label:e("status.closed")},{value:"connecting",label:e("status.connecting")},{value:"open",label:e("status.open")}];return i.jsxs("div",{className:"my-4 px-4",children:[i.jsxs("div",{className:"flex w-full items-center justify-between",children:[i.jsx("h2",{className:"text-lg",children:e("dashboard.title")}),i.jsxs("div",{className:"flex gap-2",children:[i.jsx(se,{variant:"outline",size:"icon",children:i.jsx(Ip,{onClick:x,size:"20"})}),i.jsx(dQ,{resetTable:x})]})]}),i.jsxs("div",{className:"my-4 flex items-center justify-between gap-3 px-4",children:[i.jsx("div",{className:"flex-1",children:i.jsx(ne,{placeholder:e("dashboard.search"),value:m,onChange:k=>g(k.target.value)})}),i.jsxs(Kr,{children:[i.jsx(Wr,{asChild:!0,children:i.jsxs(se,{variant:"secondary",children:[e("dashboard.status")," ",i.jsx(J$,{size:"15"})]})}),i.jsx(hr,{children:C.map(k=>i.jsx(aM,{checked:f===k.value,onCheckedChange:j=>{j&&h(k.value)},children:k.label},k.value))})]})]}),i.jsx("main",{className:"grid gap-6 sm:grid-cols-2 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4",children:w.length>0&&Array.isArray(w)?w.map(k=>i.jsxs(So,{children:[i.jsx(Co,{children:i.jsxs(Fu,{to:`/manager/instance/${k.id}/dashboard`,className:"flex w-full flex-row items-center justify-between gap-4",children:[i.jsx(FE,{content:k.name,side:"top",children:i.jsx("h3",{className:"text-wrap font-semibold truncate",children:k.name})}),i.jsx(FE,{content:e("dashboard.settings"),side:"top",children:i.jsx(se,{variant:"ghost",size:"icon",children:i.jsx(Oo,{className:"card-icon",size:"20"})})})]})}),i.jsxs(Eo,{className:"flex-1 space-y-6",children:[i.jsx(c_,{token:k.token}),i.jsxs("div",{className:"flex w-full flex-wrap",children:[i.jsx("div",{className:"flex flex-1 gap-2",children:k.profileName&&i.jsxs(i.Fragment,{children:[i.jsx(Ei,{children:i.jsx(ki,{src:k.profilePicUrl,alt:""})}),i.jsxs("div",{className:"space-y-1",children:[i.jsx("strong",{children:k.profileName}),i.jsx("p",{className:"text-sm text-muted-foreground",children:k.ownerJid&&k.ownerJid.split("@")[0]})]})]})}),i.jsxs("div",{className:"flex items-center justify-end gap-4 text-sm",children:[i.jsxs("div",{className:"flex flex-col items-center justify-center gap-1",children:[i.jsx(pT,{className:"text-muted-foreground",size:"20"}),i.jsx("span",{children:new Intl.NumberFormat("pt-BR").format(k?._count?.Contact||0)})]}),i.jsxs("div",{className:"flex flex-col items-center justify-center gap-1",children:[i.jsx(Bl,{className:"text-muted-foreground",size:"20"}),i.jsx("span",{children:new Intl.NumberFormat("pt-BR").format(k?._count?.Message||0)})]})]})]})]}),i.jsxs(Vh,{className:"justify-between",children:[i.jsx(l_,{status:k.connectionStatus}),i.jsx(se,{variant:"destructive",size:"sm",onClick:()=>n(k.name),disabled:u.includes(k.name),children:u.includes(k.name)?i.jsx("span",{children:e("button.deleting")}):i.jsx("span",{children:e("button.delete")})})]})]},k.id)):i.jsx("p",{children:e("dashboard.instancesNotFound")})}),!!t&&i.jsx(Pt,{onOpenChange:()=>n(null),open:!0,children:i.jsxs(Nt,{children:[i.jsx($M,{}),i.jsx(Mt,{children:e("modal.delete.title")}),i.jsx("p",{children:e("modal.delete.message",{instanceName:t})}),i.jsx(Yt,{children:i.jsxs("div",{className:"flex items-center gap-4",children:[i.jsx(se,{onClick:()=>n(null),size:"sm",variant:"outline",children:e("button.cancel")}),i.jsx(se,{onClick:()=>b(t),variant:"destructive",children:e("button.delete")})]})})]})})]})}const{createElement:Gl,createContext:EZ,forwardRef:ZP,useCallback:Fr,useContext:YP,useEffect:vi,useImperativeHandle:XP,useLayoutEffect:kZ,useMemo:jZ,useRef:kr,useState:Mu}=Yl,LE=Yl.useId,TZ=kZ,ug=EZ(null);ug.displayName="PanelGroupContext";const yi=TZ,NZ=typeof LE=="function"?LE:()=>null;let MZ=0;function Kx(e=null){const t=NZ(),n=kr(e||t||null);return n.current===null&&(n.current=""+MZ++),e??n.current}function eO({children:e,className:t="",collapsedSize:n,collapsible:r,defaultSize:s,forwardedRef:o,id:l,maxSize:u,minSize:d,onCollapse:f,onExpand:h,onResize:m,order:g,style:x,tagName:b="div",...w}){const C=YP(ug);if(C===null)throw Error("Panel components must be rendered within a PanelGroup container");const{collapsePanel:k,expandPanel:j,getPanelSize:M,getPanelStyle:_,groupId:R,isPanelCollapsed:N,reevaluatePanelConstraints:O,registerPanel:D,resizePanel:z,unregisterPanel:Q}=C,pe=Kx(l),V=kr({callbacks:{onCollapse:f,onExpand:h,onResize:m},constraints:{collapsedSize:n,collapsible:r,defaultSize:s,maxSize:u,minSize:d},id:pe,idIsFromProps:l!==void 0,order:g});kr({didLogMissingDefaultSizeWarning:!1}),yi(()=>{const{callbacks:W,constraints:ie}=V.current,re={...ie};V.current.id=pe,V.current.idIsFromProps=l!==void 0,V.current.order=g,W.onCollapse=f,W.onExpand=h,W.onResize=m,ie.collapsedSize=n,ie.collapsible=r,ie.defaultSize=s,ie.maxSize=u,ie.minSize=d,(re.collapsedSize!==ie.collapsedSize||re.collapsible!==ie.collapsible||re.maxSize!==ie.maxSize||re.minSize!==ie.minSize)&&O(V.current,re)}),yi(()=>{const W=V.current;return D(W),()=>{Q(W)}},[g,pe,D,Q]),XP(o,()=>({collapse:()=>{k(V.current)},expand:W=>{j(V.current,W)},getId(){return pe},getSize(){return M(V.current)},isCollapsed(){return N(V.current)},isExpanded(){return!N(V.current)},resize:W=>{z(V.current,W)}}),[k,j,M,N,pe,z]);const G=_(V.current,s);return Gl(b,{...w,children:e,className:t,id:l,style:{...G,...x},"data-panel":"","data-panel-collapsible":r||void 0,"data-panel-group-id":R,"data-panel-id":pe,"data-panel-size":parseFloat(""+G.flexGrow).toFixed(1)})}const tO=ZP((e,t)=>Gl(eO,{...e,forwardedRef:t}));eO.displayName="Panel";tO.displayName="forwardRef(Panel)";let vb=null,di=null;function _Z(e,t){if(t){const n=(t&aO)!==0,r=(t&iO)!==0,s=(t&lO)!==0,o=(t&cO)!==0;if(n)return s?"se-resize":o?"ne-resize":"e-resize";if(r)return s?"sw-resize":o?"nw-resize":"w-resize";if(s)return"s-resize";if(o)return"n-resize"}switch(e){case"horizontal":return"ew-resize";case"intersection":return"move";case"vertical":return"ns-resize"}}function RZ(){di!==null&&(document.head.removeChild(di),vb=null,di=null)}function Wv(e,t){const n=_Z(e,t);vb!==n&&(vb=n,di===null&&(di=document.createElement("style"),document.head.appendChild(di)),di.innerHTML=`*{cursor: ${n}!important;}`)}function nO(e){return e.type==="keydown"}function rO(e){return e.type.startsWith("pointer")}function sO(e){return e.type.startsWith("mouse")}function dg(e){if(rO(e)){if(e.isPrimary)return{x:e.clientX,y:e.clientY}}else if(sO(e))return{x:e.clientX,y:e.clientY};return{x:1/0,y:1/0}}function PZ(){if(typeof matchMedia=="function")return matchMedia("(pointer:coarse)").matches?"coarse":"fine"}function OZ(e,t,n){return e.xt.x&&e.yt.y}function IZ(e,t){if(e===t)throw new Error("Cannot compare node with itself");const n={a:zE(e),b:zE(t)};let r;for(;n.a.at(-1)===n.b.at(-1);)e=n.a.pop(),t=n.b.pop(),r=e;kt(r,"Stacking order can only be calculated for elements with a common ancestor");const s={a:BE($E(n.a)),b:BE($E(n.b))};if(s.a===s.b){const o=r.childNodes,l={a:n.a.at(-1),b:n.b.at(-1)};let u=o.length;for(;u--;){const d=o[u];if(d===l.a)return 1;if(d===l.b)return-1}}return Math.sign(s.a-s.b)}const AZ=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function DZ(e){var t;const n=getComputedStyle((t=oO(e))!==null&&t!==void 0?t:e).display;return n==="flex"||n==="inline-flex"}function FZ(e){const t=getComputedStyle(e);return!!(t.position==="fixed"||t.zIndex!=="auto"&&(t.position!=="static"||DZ(e))||+t.opacity<1||"transform"in t&&t.transform!=="none"||"webkitTransform"in t&&t.webkitTransform!=="none"||"mixBlendMode"in t&&t.mixBlendMode!=="normal"||"filter"in t&&t.filter!=="none"||"webkitFilter"in t&&t.webkitFilter!=="none"||"isolation"in t&&t.isolation==="isolate"||AZ.test(t.willChange)||t.webkitOverflowScrolling==="touch")}function $E(e){let t=e.length;for(;t--;){const n=e[t];if(kt(n,"Missing node"),FZ(n))return n}return null}function BE(e){return e&&Number(getComputedStyle(e).zIndex)||0}function zE(e){const t=[];for(;e;)t.push(e),e=oO(e);return t}function oO(e){const{parentNode:t}=e;return t&&t instanceof ShadowRoot?t.host:t}const aO=1,iO=2,lO=4,cO=8,LZ=PZ()==="coarse";let js=[],ld=!1,ha=new Map,fg=new Map;const cd=new Set;function $Z(e,t,n,r,s){var o;const{ownerDocument:l}=t,u={direction:n,element:t,hitAreaMargins:r,setResizeHandlerState:s},d=(o=ha.get(l))!==null&&o!==void 0?o:0;return ha.set(l,d+1),cd.add(u),lh(),function(){var h;fg.delete(e),cd.delete(u);const m=(h=ha.get(l))!==null&&h!==void 0?h:1;if(ha.set(l,m-1),lh(),m===1&&ha.delete(l),js.includes(u)){const g=js.indexOf(u);g>=0&&js.splice(g,1),Gx()}}}function UE(e){const{target:t}=e,{x:n,y:r}=dg(e);ld=!0,Wx({target:t,x:n,y:r}),lh(),js.length>0&&(ch("down",e),e.preventDefault(),e.stopPropagation())}function du(e){const{x:t,y:n}=dg(e);if(e.buttons===0&&(ld=!1,ch("up",e)),!ld){const{target:r}=e;Wx({target:r,x:t,y:n})}ch("move",e),Gx(),js.length>0&&e.preventDefault()}function bl(e){const{target:t}=e,{x:n,y:r}=dg(e);fg.clear(),ld=!1,js.length>0&&e.preventDefault(),ch("up",e),Wx({target:t,x:n,y:r}),Gx(),lh()}function Wx({target:e,x:t,y:n}){js.splice(0);let r=null;e instanceof HTMLElement&&(r=e),cd.forEach(s=>{const{element:o,hitAreaMargins:l}=s,u=o.getBoundingClientRect(),{bottom:d,left:f,right:h,top:m}=u,g=LZ?l.coarse:l.fine;if(t>=f-g&&t<=h+g&&n>=m-g&&n<=d+g){if(r!==null&&o!==r&&!o.contains(r)&&!r.contains(o)&&IZ(r,o)>0){let b=r,w=!1;for(;b&&!b.contains(o);){if(OZ(b.getBoundingClientRect(),u)){w=!0;break}b=b.parentElement}if(w)return}js.push(s)}})}function Gv(e,t){fg.set(e,t)}function Gx(){let e=!1,t=!1;js.forEach(r=>{const{direction:s}=r;s==="horizontal"?e=!0:t=!0});let n=0;fg.forEach(r=>{n|=r}),e&&t?Wv("intersection",n):e?Wv("horizontal",n):t?Wv("vertical",n):RZ()}function lh(){ha.forEach((e,t)=>{const{body:n}=t;n.removeEventListener("contextmenu",bl),n.removeEventListener("pointerdown",UE),n.removeEventListener("pointerleave",du),n.removeEventListener("pointermove",du)}),window.removeEventListener("pointerup",bl),window.removeEventListener("pointercancel",bl),cd.size>0&&(ld?(js.length>0&&ha.forEach((e,t)=>{const{body:n}=t;e>0&&(n.addEventListener("contextmenu",bl),n.addEventListener("pointerleave",du),n.addEventListener("pointermove",du))}),window.addEventListener("pointerup",bl),window.addEventListener("pointercancel",bl)):ha.forEach((e,t)=>{const{body:n}=t;e>0&&(n.addEventListener("pointerdown",UE,{capture:!0}),n.addEventListener("pointermove",du))}))}function ch(e,t){cd.forEach(n=>{const{setResizeHandlerState:r}=n,s=js.includes(n);r(e,s,t)})}function kt(e,t){if(!e)throw console.error(t),Error(t)}const Jx=10;function Ri(e,t,n=Jx){return e.toFixed(n)===t.toFixed(n)?0:e>t?1:-1}function xo(e,t,n=Jx){return Ri(e,t,n)===0}function $r(e,t,n){return Ri(e,t,n)===0}function BZ(e,t,n){if(e.length!==t.length)return!1;for(let r=0;r0&&(e=e<0?0-k:k)}}}{const m=e<0?u:d,g=n[m];kt(g,`No panel constraints found for index ${m}`);const{collapsedSize:x=0,collapsible:b,minSize:w=0}=g;if(b){const C=t[m];if(kt(C!=null,`Previous layout not found for panel index ${m}`),$r(C,w)){const k=C-x;Ri(k,Math.abs(e))>0&&(e=e<0?0-k:k)}}}}{const m=e<0?1:-1;let g=e<0?d:u,x=0;for(;;){const w=t[g];kt(w!=null,`Previous layout not found for panel index ${g}`);const k=Ml({panelConstraints:n,panelIndex:g,size:100})-w;if(x+=k,g+=m,g<0||g>=n.length)break}const b=Math.min(Math.abs(e),Math.abs(x));e=e<0?0-b:b}{let g=e<0?u:d;for(;g>=0&&g=0))break;e<0?g--:g++}}if(BZ(s,l))return s;{const m=e<0?d:u,g=t[m];kt(g!=null,`Previous layout not found for panel index ${m}`);const x=g+f,b=Ml({panelConstraints:n,panelIndex:m,size:x});if(l[m]=b,!$r(b,x)){let w=x-b,k=e<0?d:u;for(;k>=0&&k0?k--:k++}}}const h=l.reduce((m,g)=>g+m,0);return $r(h,100)?l:s}function zZ({layout:e,panelsArray:t,pivotIndices:n}){let r=0,s=100,o=0,l=0;const u=n[0];kt(u!=null,"No pivot index found"),t.forEach((m,g)=>{const{constraints:x}=m,{maxSize:b=100,minSize:w=0}=x;g===u?(r=w,s=b):(o+=w,l+=b)});const d=Math.min(s,100-o),f=Math.max(r,100-l),h=e[u];return{valueMax:d,valueMin:f,valueNow:h}}function ud(e,t=document){return Array.from(t.querySelectorAll(`[data-panel-resize-handle-id][data-panel-group-id="${e}"]`))}function uO(e,t,n=document){const s=ud(e,n).findIndex(o=>o.getAttribute("data-panel-resize-handle-id")===t);return s??null}function dO(e,t,n){const r=uO(e,t,n);return r!=null?[r,r+1]:[-1,-1]}function fO(e,t=document){var n;if(t instanceof HTMLElement&&(t==null||(n=t.dataset)===null||n===void 0?void 0:n.panelGroupId)==e)return t;const r=t.querySelector(`[data-panel-group][data-panel-group-id="${e}"]`);return r||null}function pg(e,t=document){const n=t.querySelector(`[data-panel-resize-handle-id="${e}"]`);return n||null}function UZ(e,t,n,r=document){var s,o,l,u;const d=pg(t,r),f=ud(e,r),h=d?f.indexOf(d):-1,m=(s=(o=n[h])===null||o===void 0?void 0:o.id)!==null&&s!==void 0?s:null,g=(l=(u=n[h+1])===null||u===void 0?void 0:u.id)!==null&&l!==void 0?l:null;return[m,g]}function VZ({committedValuesRef:e,eagerValuesRef:t,groupId:n,layout:r,panelDataArray:s,panelGroupElement:o,setLayout:l}){kr({didWarnAboutMissingResizeHandle:!1}),yi(()=>{if(!o)return;const u=ud(n,o);for(let d=0;d{u.forEach((d,f)=>{d.removeAttribute("aria-controls"),d.removeAttribute("aria-valuemax"),d.removeAttribute("aria-valuemin"),d.removeAttribute("aria-valuenow")})}},[n,r,s,o]),vi(()=>{if(!o)return;const u=t.current;kt(u,"Eager values not found");const{panelDataArray:d}=u,f=fO(n,o);kt(f!=null,`No group found for id "${n}"`);const h=ud(n,o);kt(h,`No resize handles found for group id "${n}"`);const m=h.map(g=>{const x=g.getAttribute("data-panel-resize-handle-id");kt(x,"Resize handle element has no handle id attribute");const[b,w]=UZ(n,x,d,o);if(b==null||w==null)return()=>{};const C=k=>{if(!k.defaultPrevented)switch(k.key){case"Enter":{k.preventDefault();const j=d.findIndex(M=>M.id===b);if(j>=0){const M=d[j];kt(M,`No panel data found for index ${j}`);const _=r[j],{collapsedSize:R=0,collapsible:N,minSize:O=0}=M.constraints;if(_!=null&&N){const D=wu({delta:$r(_,R)?O-R:R-_,initialLayout:r,panelConstraints:d.map(z=>z.constraints),pivotIndices:dO(n,x,o),prevLayout:r,trigger:"keyboard"});r!==D&&l(D)}}break}}};return g.addEventListener("keydown",C),()=>{g.removeEventListener("keydown",C)}});return()=>{m.forEach(g=>g())}},[o,e,t,n,r,s,l])}function VE(e,t){if(e.length!==t.length)return!1;for(let n=0;no.constraints);let r=0,s=100;for(let o=0;o{const o=e[s];kt(o,`Panel data not found for index ${s}`);const{callbacks:l,constraints:u,id:d}=o,{collapsedSize:f=0,collapsible:h}=u,m=n[d];if(m==null||r!==m){n[d]=r;const{onCollapse:g,onExpand:x,onResize:b}=l;b&&b(r,m),h&&(g||x)&&(x&&(m==null||xo(m,f))&&!xo(r,f)&&x(),g&&(m==null||!xo(m,f))&&xo(r,f)&&g())}})}function ep(e,t){if(e.length!==t.length)return!1;for(let n=0;n{n!==null&&clearTimeout(n),n=setTimeout(()=>{e(...s)},t)}}function HE(e){try{if(typeof localStorage<"u")e.getItem=t=>localStorage.getItem(t),e.setItem=(t,n)=>{localStorage.setItem(t,n)};else throw new Error("localStorage not supported in this environment")}catch(t){console.error(t),e.getItem=()=>null,e.setItem=()=>{}}}function hO(e){return`react-resizable-panels:${e}`}function gO(e){return e.map(t=>{const{constraints:n,id:r,idIsFromProps:s,order:o}=t;return s?r:o?`${o}:${JSON.stringify(n)}`:JSON.stringify(n)}).sort((t,n)=>t.localeCompare(n)).join(",")}function mO(e,t){try{const n=hO(e),r=t.getItem(n);if(r){const s=JSON.parse(r);if(typeof s=="object"&&s!=null)return s}}catch{}return null}function JZ(e,t,n){var r,s;const o=(r=mO(e,n))!==null&&r!==void 0?r:{},l=gO(t);return(s=o[l])!==null&&s!==void 0?s:null}function QZ(e,t,n,r,s){var o;const l=hO(e),u=gO(t),d=(o=mO(e,s))!==null&&o!==void 0?o:{};d[u]={expandToSizes:Object.fromEntries(n.entries()),layout:r};try{s.setItem(l,JSON.stringify(d))}catch(f){console.error(f)}}function qE({layout:e,panelConstraints:t}){const n=[...e],r=n.reduce((o,l)=>o+l,0);if(n.length!==t.length)throw Error(`Invalid ${t.length} panel layout: ${n.map(o=>`${o}%`).join(", ")}`);if(!$r(r,100))for(let o=0;o(HE(Su),Su.getItem(e)),setItem:(e,t)=>{HE(Su),Su.setItem(e,t)}},KE={};function vO({autoSaveId:e=null,children:t,className:n="",direction:r,forwardedRef:s,id:o=null,onLayout:l=null,keyboardResizeBy:u=null,storage:d=Su,style:f,tagName:h="div",...m}){const g=Kx(o),x=kr(null),[b,w]=Mu(null),[C,k]=Mu([]),j=kr({}),M=kr(new Map),_=kr(0),R=kr({autoSaveId:e,direction:r,dragState:b,id:g,keyboardResizeBy:u,onLayout:l,storage:d}),N=kr({layout:C,panelDataArray:[],panelDataArrayChanged:!1});kr({didLogIdAndOrderWarning:!1,didLogPanelConstraintsWarning:!1,prevPanelIds:[]}),XP(s,()=>({getId:()=>R.current.id,getLayout:()=>{const{layout:F}=N.current;return F},setLayout:F=>{const{onLayout:fe}=R.current,{layout:te,panelDataArray:de}=N.current,ge=qE({layout:F,panelConstraints:de.map(Z=>Z.constraints)});VE(te,ge)||(k(ge),N.current.layout=ge,fe&&fe(ge),xl(de,ge,j.current))}}),[]),yi(()=>{R.current.autoSaveId=e,R.current.direction=r,R.current.dragState=b,R.current.id=g,R.current.onLayout=l,R.current.storage=d}),VZ({committedValuesRef:R,eagerValuesRef:N,groupId:g,layout:C,panelDataArray:N.current.panelDataArray,setLayout:k,panelGroupElement:x.current}),vi(()=>{const{panelDataArray:F}=N.current;if(e){if(C.length===0||C.length!==F.length)return;let fe=KE[e];fe==null&&(fe=GZ(QZ,ZZ),KE[e]=fe);const te=[...F],de=new Map(M.current);fe(e,te,de,C,d)}},[e,C,d]),vi(()=>{});const O=Fr(F=>{const{onLayout:fe}=R.current,{layout:te,panelDataArray:de}=N.current;if(F.constraints.collapsible){const ge=de.map($e=>$e.constraints),{collapsedSize:Z=0,panelSize:ye,pivotIndices:Re}=ri(de,F,te);if(kt(ye!=null,`Panel size not found for panel "${F.id}"`),!xo(ye,Z)){M.current.set(F.id,ye);const Ye=kl(de,F)===de.length-1?ye-Z:Z-ye,Fe=wu({delta:Ye,initialLayout:te,panelConstraints:ge,pivotIndices:Re,prevLayout:te,trigger:"imperative-api"});ep(te,Fe)||(k(Fe),N.current.layout=Fe,fe&&fe(Fe),xl(de,Fe,j.current))}}},[]),D=Fr((F,fe)=>{const{onLayout:te}=R.current,{layout:de,panelDataArray:ge}=N.current;if(F.constraints.collapsible){const Z=ge.map(ft=>ft.constraints),{collapsedSize:ye=0,panelSize:Re=0,minSize:$e=0,pivotIndices:Ye}=ri(ge,F,de),Fe=fe??$e;if(xo(Re,ye)){const ft=M.current.get(F.id),ln=ft!=null&&ft>=Fe?ft:Fe,vn=kl(ge,F)===ge.length-1?Re-ln:ln-Re,Cn=wu({delta:vn,initialLayout:de,panelConstraints:Z,pivotIndices:Ye,prevLayout:de,trigger:"imperative-api"});ep(de,Cn)||(k(Cn),N.current.layout=Cn,te&&te(Cn),xl(ge,Cn,j.current))}}},[]),z=Fr(F=>{const{layout:fe,panelDataArray:te}=N.current,{panelSize:de}=ri(te,F,fe);return kt(de!=null,`Panel size not found for panel "${F.id}"`),de},[]),Q=Fr((F,fe)=>{const{panelDataArray:te}=N.current,de=kl(te,F);return WZ({defaultSize:fe,dragState:b,layout:C,panelData:te,panelIndex:de})},[b,C]),pe=Fr(F=>{const{layout:fe,panelDataArray:te}=N.current,{collapsedSize:de=0,collapsible:ge,panelSize:Z}=ri(te,F,fe);return kt(Z!=null,`Panel size not found for panel "${F.id}"`),ge===!0&&xo(Z,de)},[]),V=Fr(F=>{const{layout:fe,panelDataArray:te}=N.current,{collapsedSize:de=0,collapsible:ge,panelSize:Z}=ri(te,F,fe);return kt(Z!=null,`Panel size not found for panel "${F.id}"`),!ge||Ri(Z,de)>0},[]),G=Fr(F=>{const{panelDataArray:fe}=N.current;fe.push(F),fe.sort((te,de)=>{const ge=te.order,Z=de.order;return ge==null&&Z==null?0:ge==null?-1:Z==null?1:ge-Z}),N.current.panelDataArrayChanged=!0},[]);yi(()=>{if(N.current.panelDataArrayChanged){N.current.panelDataArrayChanged=!1;const{autoSaveId:F,onLayout:fe,storage:te}=R.current,{layout:de,panelDataArray:ge}=N.current;let Z=null;if(F){const Re=JZ(F,ge,te);Re&&(M.current=new Map(Object.entries(Re.expandToSizes)),Z=Re.layout)}Z==null&&(Z=KZ({panelDataArray:ge}));const ye=qE({layout:Z,panelConstraints:ge.map(Re=>Re.constraints)});VE(de,ye)||(k(ye),N.current.layout=ye,fe&&fe(ye),xl(ge,ye,j.current))}}),yi(()=>{const F=N.current;return()=>{F.layout=[]}},[]);const W=Fr(F=>function(te){te.preventDefault();const de=x.current;if(!de)return()=>null;const{direction:ge,dragState:Z,id:ye,keyboardResizeBy:Re,onLayout:$e}=R.current,{layout:Ye,panelDataArray:Fe}=N.current,{initialLayout:ft}=Z??{},ln=dO(ye,F,de);let Sn=qZ(te,F,ge,Z,Re,de);const vn=ge==="horizontal";document.dir==="rtl"&&vn&&(Sn=-Sn);const Cn=Fe.map(ue=>ue.constraints),L=wu({delta:Sn,initialLayout:ft??Ye,panelConstraints:Cn,pivotIndices:ln,prevLayout:Ye,trigger:nO(te)?"keyboard":"mouse-or-touch"}),X=!ep(Ye,L);(rO(te)||sO(te))&&_.current!=Sn&&(_.current=Sn,X?Gv(F,0):vn?Gv(F,Sn<0?aO:iO):Gv(F,Sn<0?lO:cO)),X&&(k(L),N.current.layout=L,$e&&$e(L),xl(Fe,L,j.current))},[]),ie=Fr((F,fe)=>{const{onLayout:te}=R.current,{layout:de,panelDataArray:ge}=N.current,Z=ge.map(ft=>ft.constraints),{panelSize:ye,pivotIndices:Re}=ri(ge,F,de);kt(ye!=null,`Panel size not found for panel "${F.id}"`);const Ye=kl(ge,F)===ge.length-1?ye-fe:fe-ye,Fe=wu({delta:Ye,initialLayout:de,panelConstraints:Z,pivotIndices:Re,prevLayout:de,trigger:"imperative-api"});ep(de,Fe)||(k(Fe),N.current.layout=Fe,te&&te(Fe),xl(ge,Fe,j.current))},[]),re=Fr((F,fe)=>{const{layout:te,panelDataArray:de}=N.current,{collapsedSize:ge=0,collapsible:Z}=fe,{collapsedSize:ye=0,collapsible:Re,maxSize:$e=100,minSize:Ye=0}=F.constraints,{panelSize:Fe}=ri(de,F,te);Fe!=null&&(Z&&Re&&xo(Fe,ge)?xo(ge,ye)||ie(F,ye):Fe$e&&ie(F,$e))},[ie]),Y=Fr((F,fe)=>{const{direction:te}=R.current,{layout:de}=N.current;if(!x.current)return;const ge=pg(F,x.current);kt(ge,`Drag handle element not found for id "${F}"`);const Z=pO(te,fe);w({dragHandleId:F,dragHandleRect:ge.getBoundingClientRect(),initialCursorPosition:Z,initialLayout:de})},[]),H=Fr(()=>{w(null)},[]),q=Fr(F=>{const{panelDataArray:fe}=N.current,te=kl(fe,F);te>=0&&(fe.splice(te,1),delete j.current[F.id],N.current.panelDataArrayChanged=!0)},[]),he=jZ(()=>({collapsePanel:O,direction:r,dragState:b,expandPanel:D,getPanelSize:z,getPanelStyle:Q,groupId:g,isPanelCollapsed:pe,isPanelExpanded:V,reevaluatePanelConstraints:re,registerPanel:G,registerResizeHandle:W,resizePanel:ie,startDragging:Y,stopDragging:H,unregisterPanel:q,panelGroupElement:x.current}),[O,b,r,D,z,Q,g,pe,V,re,G,W,ie,Y,H,q]),A={display:"flex",flexDirection:r==="horizontal"?"row":"column",height:"100%",overflow:"hidden",width:"100%"};return Gl(ug.Provider,{value:he},Gl(h,{...m,children:t,className:n,id:o,ref:x,style:{...A,...f},"data-panel-group":"","data-panel-group-direction":r,"data-panel-group-id":g}))}const yO=ZP((e,t)=>Gl(vO,{...e,forwardedRef:t}));vO.displayName="PanelGroup";yO.displayName="forwardRef(PanelGroup)";function kl(e,t){return e.findIndex(n=>n===t||n.id===t.id)}function ri(e,t,n){const r=kl(e,t),o=r===e.length-1?[r-1,r]:[r,r+1],l=n[r];return{...t.constraints,panelSize:l,pivotIndices:o}}function YZ({disabled:e,handleId:t,resizeHandler:n,panelGroupElement:r}){vi(()=>{if(e||n==null||r==null)return;const s=pg(t,r);if(s==null)return;const o=l=>{if(!l.defaultPrevented)switch(l.key){case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"ArrowUp":case"End":case"Home":{l.preventDefault(),n(l);break}case"F6":{l.preventDefault();const u=s.getAttribute("data-panel-group-id");kt(u,`No group element found for id "${u}"`);const d=ud(u,r),f=uO(u,t,r);kt(f!==null,`No resize element found for id "${t}"`);const h=l.shiftKey?f>0?f-1:d.length-1:f+1{s.removeEventListener("keydown",o)}},[r,e,t,n])}function bO({children:e=null,className:t="",disabled:n=!1,hitAreaMargins:r,id:s,onBlur:o,onDragging:l,onFocus:u,style:d={},tabIndex:f=0,tagName:h="div",...m}){var g,x;const b=kr(null),w=kr({onDragging:l});vi(()=>{w.current.onDragging=l});const C=YP(ug);if(C===null)throw Error("PanelResizeHandle components must be rendered within a PanelGroup container");const{direction:k,groupId:j,registerResizeHandle:M,startDragging:_,stopDragging:R,panelGroupElement:N}=C,O=Kx(s),[D,z]=Mu("inactive"),[Q,pe]=Mu(!1),[V,G]=Mu(null),W=kr({state:D});yi(()=>{W.current.state=D}),vi(()=>{if(n)G(null);else{const H=M(O);G(()=>H)}},[n,O,M]);const ie=(g=r?.coarse)!==null&&g!==void 0?g:15,re=(x=r?.fine)!==null&&x!==void 0?x:5;return vi(()=>{if(n||V==null)return;const H=b.current;return kt(H,"Element ref not attached"),$Z(O,H,k,{coarse:ie,fine:re},(he,A,F)=>{if(A)switch(he){case"down":{z("drag"),_(O,F);const{onDragging:fe}=w.current;fe&&fe(!0);break}case"move":{const{state:fe}=W.current;fe!=="drag"&&z("hover"),V(F);break}case"up":{z("hover"),R();const{onDragging:fe}=w.current;fe&&fe(!1);break}}else z("inactive")})},[ie,k,n,re,M,O,V,_,R]),YZ({disabled:n,handleId:O,resizeHandler:V,panelGroupElement:N}),Gl(h,{...m,children:e,className:t,id:s,onBlur:()=>{pe(!1),o?.()},onFocus:()=>{pe(!0),u?.()},ref:b,role:"separator",style:{...{touchAction:"none",userSelect:"none"},...d},tabIndex:f,"data-panel-group-direction":k,"data-panel-group-id":j,"data-resize-handle":"","data-resize-handle-active":D==="drag"?"pointer":Q?"keyboard":void 0,"data-resize-handle-state":D,"data-panel-resize-handle-enabled":!n,"data-panel-resize-handle-id":O})}bO.displayName="PanelResizeHandle";const $o=({className:e,...t})=>i.jsx(yO,{className:Ie("flex h-full w-full data-[panel-group-direction=vertical]:flex-col",e),...t}),Hn=tO,Bo=({withHandle:e,className:t,...n})=>i.jsx(bO,{className:Ie("relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 after:bg-border focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90",t),...n,children:e&&i.jsx("div",{className:"z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border",children:i.jsx(lB,{className:"h-2.5 w-2.5"})})});var Qx="Tabs",[XZ]=us(Qx,[Dh]),xO=Dh(),[eY,Zx]=XZ(Qx),wO=y.forwardRef((e,t)=>{const{__scopeTabs:n,value:r,onValueChange:s,defaultValue:o,orientation:l="horizontal",dir:u,activationMode:d="automatic",...f}=e,h=xd(u),[m,g]=ya({prop:r,onChange:s,defaultProp:o});return i.jsx(eY,{scope:n,baseId:Es(),value:m,onValueChange:g,orientation:l,dir:h,activationMode:d,children:i.jsx(rt.div,{dir:h,"data-orientation":l,...f,ref:t})})});wO.displayName=Qx;var SO="TabsList",CO=y.forwardRef((e,t)=>{const{__scopeTabs:n,loop:r=!0,...s}=e,o=Zx(SO,n),l=xO(n);return i.jsx(aN,{asChild:!0,...l,orientation:o.orientation,dir:o.dir,loop:r,children:i.jsx(rt.div,{role:"tablist","aria-orientation":o.orientation,...s,ref:t})})});CO.displayName=SO;var EO="TabsTrigger",kO=y.forwardRef((e,t)=>{const{__scopeTabs:n,value:r,disabled:s=!1,...o}=e,l=Zx(EO,n),u=xO(n),d=NO(l.baseId,r),f=MO(l.baseId,r),h=r===l.value;return i.jsx(iN,{asChild:!0,...u,focusable:!s,active:h,children:i.jsx(rt.button,{type:"button",role:"tab","aria-selected":h,"aria-controls":f,"data-state":h?"active":"inactive","data-disabled":s?"":void 0,disabled:s,id:d,...o,ref:t,onMouseDown:Ue(e.onMouseDown,m=>{!s&&m.button===0&&m.ctrlKey===!1?l.onValueChange(r):m.preventDefault()}),onKeyDown:Ue(e.onKeyDown,m=>{[" ","Enter"].includes(m.key)&&l.onValueChange(r)}),onFocus:Ue(e.onFocus,()=>{const m=l.activationMode!=="manual";!h&&!s&&m&&l.onValueChange(r)})})})});kO.displayName=EO;var jO="TabsContent",TO=y.forwardRef((e,t)=>{const{__scopeTabs:n,value:r,forceMount:s,children:o,...l}=e,u=Zx(jO,n),d=NO(u.baseId,r),f=MO(u.baseId,r),h=r===u.value,m=y.useRef(h);return y.useEffect(()=>{const g=requestAnimationFrame(()=>m.current=!1);return()=>cancelAnimationFrame(g)},[]),i.jsx(Mr,{present:s||h,children:({present:g})=>i.jsx(rt.div,{"data-state":h?"active":"inactive","data-orientation":u.orientation,role:"tabpanel","aria-labelledby":d,hidden:!g,id:f,tabIndex:0,...l,ref:t,style:{...e.style,animationDuration:m.current?"0s":void 0},children:g&&o})})});TO.displayName=jO;function NO(e,t){return`${e}-trigger-${t}`}function MO(e,t){return`${e}-content-${t}`}var tY=wO,_O=CO,RO=kO,PO=TO;const Yx=tY,hg=y.forwardRef(({className:e,...t},n)=>i.jsx(_O,{ref:n,className:Ie("inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",e),...t}));hg.displayName=_O.displayName;const Jl=y.forwardRef(({className:e,...t},n)=>i.jsx(RO,{ref:n,className:Ie("inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm",e),...t}));Jl.displayName=RO.displayName;const Ql=y.forwardRef(({className:e,...t},n)=>i.jsx(PO,{ref:n,className:Ie("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",e),...t}));Ql.displayName=PO.displayName;const nY=e=>["chats","findChats",JSON.stringify(e)],rY=async({instanceName:e})=>(await Ee.post(`/chat/findChats/${e}`,{where:{}})).data,sY=e=>{const{instanceName:t,...n}=e;return mt({...n,queryKey:nY({instanceName:t}),queryFn:()=>rY({instanceName:t}),enabled:!!t})};function zo(e){const t=o=>typeof window<"u"?window.matchMedia(o).matches:!1,[n,r]=y.useState(t(e));function s(){r(t(e))}return y.useEffect(()=>{const o=window.matchMedia(e);return s(),o.addListener?o.addListener(s):o.addEventListener("change",s),()=>{o.removeListener?o.removeListener(s):o.removeEventListener("change",s)}},[e]),n}const Ys=Object.create(null);Ys.open="0";Ys.close="1";Ys.ping="2";Ys.pong="3";Ys.message="4";Ys.upgrade="5";Ys.noop="6";const Cp=Object.create(null);Object.keys(Ys).forEach(e=>{Cp[Ys[e]]=e});const yb={type:"error",data:"parser error"},OO=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",IO=typeof ArrayBuffer=="function",AO=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,Xx=({type:e,data:t},n,r)=>OO&&t instanceof Blob?n?r(t):WE(t,r):IO&&(t instanceof ArrayBuffer||AO(t))?n?r(t):WE(new Blob([t]),r):r(Ys[e]+(t||"")),WE=(e,t)=>{const n=new FileReader;return n.onload=function(){const r=n.result.split(",")[1];t("b"+(r||""))},n.readAsDataURL(e)};function GE(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let Jv;function oY(e,t){if(OO&&e.data instanceof Blob)return e.data.arrayBuffer().then(GE).then(t);if(IO&&(e.data instanceof ArrayBuffer||AO(e.data)))return t(GE(e.data));Xx(e,!1,n=>{Jv||(Jv=new TextEncoder),t(Jv.encode(n))})}const JE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Cu=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let e=0;e{let t=e.length*.75,n=e.length,r,s=0,o,l,u,d;e[e.length-1]==="="&&(t--,e[e.length-2]==="="&&t--);const f=new ArrayBuffer(t),h=new Uint8Array(f);for(r=0;r>4,h[s++]=(l&15)<<4|u>>2,h[s++]=(u&3)<<6|d&63;return f},iY=typeof ArrayBuffer=="function",ew=(e,t)=>{if(typeof e!="string")return{type:"message",data:DO(e,t)};const n=e.charAt(0);return n==="b"?{type:"message",data:lY(e.substring(1),t)}:Cp[n]?e.length>1?{type:Cp[n],data:e.substring(1)}:{type:Cp[n]}:yb},lY=(e,t)=>{if(iY){const n=aY(e);return DO(n,t)}else return{base64:!0,data:e}},DO=(e,t)=>{switch(t){case"blob":return e instanceof Blob?e:new Blob([e]);case"arraybuffer":default:return e instanceof ArrayBuffer?e:e.buffer}},FO="",cY=(e,t)=>{const n=e.length,r=new Array(n);let s=0;e.forEach((o,l)=>{Xx(o,!1,u=>{r[l]=u,++s===n&&t(r.join(FO))})})},uY=(e,t)=>{const n=e.split(FO),r=[];for(let s=0;s{const r=n.length;let s;if(r<126)s=new Uint8Array(1),new DataView(s.buffer).setUint8(0,r);else if(r<65536){s=new Uint8Array(3);const o=new DataView(s.buffer);o.setUint8(0,126),o.setUint16(1,r)}else{s=new Uint8Array(9);const o=new DataView(s.buffer);o.setUint8(0,127),o.setBigUint64(1,BigInt(r))}e.data&&typeof e.data!="string"&&(s[0]|=128),t.enqueue(s),t.enqueue(n)})}})}let Qv;function tp(e){return e.reduce((t,n)=>t+n.length,0)}function np(e,t){if(e[0].length===t)return e.shift();const n=new Uint8Array(t);let r=0;for(let s=0;sMath.pow(2,21)-1){u.enqueue(yb);break}s=h*Math.pow(2,32)+f.getUint32(4),r=3}else{if(tp(n)e){u.enqueue(yb);break}}}})}const LO=4;function Pn(e){if(e)return pY(e)}function pY(e){for(var t in Pn.prototype)e[t]=Pn.prototype[t];return e}Pn.prototype.on=Pn.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this};Pn.prototype.once=function(e,t){function n(){this.off(e,n),t.apply(this,arguments)}return n.fn=t,this.on(e,n),this};Pn.prototype.off=Pn.prototype.removeListener=Pn.prototype.removeAllListeners=Pn.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var n=this._callbacks["$"+e];if(!n)return this;if(arguments.length==1)return delete this._callbacks["$"+e],this;for(var r,s=0;sPromise.resolve().then(t):(t,n)=>n(t,0),as=typeof self<"u"?self:typeof window<"u"?window:Function("return this")(),hY="arraybuffer";function $O(e,...t){return t.reduce((n,r)=>(e.hasOwnProperty(r)&&(n[r]=e[r]),n),{})}const gY=as.setTimeout,mY=as.clearTimeout;function mg(e,t){t.useNativeTimers?(e.setTimeoutFn=gY.bind(as),e.clearTimeoutFn=mY.bind(as)):(e.setTimeoutFn=as.setTimeout.bind(as),e.clearTimeoutFn=as.clearTimeout.bind(as))}const vY=1.33;function yY(e){return typeof e=="string"?bY(e):Math.ceil((e.byteLength||e.size)*vY)}function bY(e){let t=0,n=0;for(let r=0,s=e.length;r=57344?n+=3:(r++,n+=4);return n}function BO(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}function xY(e){let t="";for(let n in e)e.hasOwnProperty(n)&&(t.length&&(t+="&"),t+=encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t}function wY(e){let t={},n=e.split("&");for(let r=0,s=n.length;r{this.readyState="paused",t()};if(this._polling||!this.writable){let r=0;this._polling&&(r++,this.once("pollComplete",function(){--r||n()})),this.writable||(r++,this.once("drain",function(){--r||n()}))}else n()}_poll(){this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(t){const n=r=>{if(this.readyState==="opening"&&r.type==="open"&&this.onOpen(),r.type==="close")return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(r)};uY(t,this.socket.binaryType).forEach(n),this.readyState!=="closed"&&(this._polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"&&this._poll())}doClose(){const t=()=>{this.write([{type:"close"}])};this.readyState==="open"?t():this.once("open",t)}write(t){this.writable=!1,cY(t,n=>{this.doWrite(n,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){const t=this.opts.secure?"https":"http",n=this.query||{};return this.opts.timestampRequests!==!1&&(n[this.opts.timestampParam]=BO()),!this.supportsBinary&&!n.sid&&(n.b64=1),this.createUri(t,n)}}let zO=!1;try{zO=typeof XMLHttpRequest<"u"&&"withCredentials"in new XMLHttpRequest}catch{}const EY=zO;function kY(){}class jY extends CY{constructor(t){if(super(t),typeof location<"u"){const n=location.protocol==="https:";let r=location.port;r||(r=n?"443":"80"),this.xd=typeof location<"u"&&t.hostname!==location.hostname||r!==t.port}}doWrite(t,n){const r=this.request({method:"POST",data:t});r.on("success",n),r.on("error",(s,o)=>{this.onError("xhr post error",s,o)})}doPoll(){const t=this.request();t.on("data",this.onData.bind(this)),t.on("error",(n,r)=>{this.onError("xhr poll error",n,r)}),this.pollXhr=t}}let Dl=class Ep extends Pn{constructor(t,n,r){super(),this.createRequest=t,mg(this,r),this._opts=r,this._method=r.method||"GET",this._uri=n,this._data=r.data!==void 0?r.data:null,this._create()}_create(){var t;const n=$O(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");n.xdomain=!!this._opts.xd;const r=this._xhr=this.createRequest(n);try{r.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0);for(let s in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(s)&&r.setRequestHeader(s,this._opts.extraHeaders[s])}}catch{}if(this._method==="POST")try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{r.setRequestHeader("Accept","*/*")}catch{}(t=this._opts.cookieJar)===null||t===void 0||t.addCookies(r),"withCredentials"in r&&(r.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(r.timeout=this._opts.requestTimeout),r.onreadystatechange=()=>{var s;r.readyState===3&&((s=this._opts.cookieJar)===null||s===void 0||s.parseCookies(r.getResponseHeader("set-cookie"))),r.readyState===4&&(r.status===200||r.status===1223?this._onLoad():this.setTimeoutFn(()=>{this._onError(typeof r.status=="number"?r.status:0)},0))},r.send(this._data)}catch(s){this.setTimeoutFn(()=>{this._onError(s)},0);return}typeof document<"u"&&(this._index=Ep.requestsCount++,Ep.requests[this._index]=this)}_onError(t){this.emitReserved("error",t,this._xhr),this._cleanup(!0)}_cleanup(t){if(!(typeof this._xhr>"u"||this._xhr===null)){if(this._xhr.onreadystatechange=kY,t)try{this._xhr.abort()}catch{}typeof document<"u"&&delete Ep.requests[this._index],this._xhr=null}}_onLoad(){const t=this._xhr.responseText;t!==null&&(this.emitReserved("data",t),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}};Dl.requestsCount=0;Dl.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",QE);else if(typeof addEventListener=="function"){const e="onpagehide"in as?"pagehide":"unload";addEventListener(e,QE,!1)}}function QE(){for(let e in Dl.requests)Dl.requests.hasOwnProperty(e)&&Dl.requests[e].abort()}const TY=(function(){const e=UO({xdomain:!1});return e&&e.responseType!==null})();class NY extends jY{constructor(t){super(t);const n=t&&t.forceBase64;this.supportsBinary=TY&&!n}request(t={}){return Object.assign(t,{xd:this.xd},this.opts),new Dl(UO,this.uri(),t)}}function UO(e){const t=e.xdomain;try{if(typeof XMLHttpRequest<"u"&&(!t||EY))return new XMLHttpRequest}catch{}if(!t)try{return new as[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch{}}const VO=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class MY extends tw{get name(){return"websocket"}doOpen(){const t=this.uri(),n=this.opts.protocols,r=VO?{}:$O(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(t,n,r)}catch(s){return this.emitReserved("error",s)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=t=>this.onClose({description:"websocket connection closed",context:t}),this.ws.onmessage=t=>this.onData(t.data),this.ws.onerror=t=>this.onError("websocket error",t)}write(t){this.writable=!1;for(let n=0;n{try{this.doWrite(r,o)}catch{}s&&gg(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){const t=this.opts.secure?"wss":"ws",n=this.query||{};return this.opts.timestampRequests&&(n[this.opts.timestampParam]=BO()),this.supportsBinary||(n.b64=1),this.createUri(t,n)}}const Zv=as.WebSocket||as.MozWebSocket;class _Y extends MY{createSocket(t,n,r){return VO?new Zv(t,n,r):n?new Zv(t,n):new Zv(t)}doWrite(t,n){this.ws.send(n)}}class RY extends tw{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(t){return this.emitReserved("error",t)}this._transport.closed.then(()=>{this.onClose()}).catch(t=>{this.onError("webtransport error",t)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(t=>{const n=fY(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=t.readable.pipeThrough(n).getReader(),s=dY();s.readable.pipeTo(t.writable),this._writer=s.writable.getWriter();const o=()=>{r.read().then(({done:u,value:d})=>{u||(this.onPacket(d),o())}).catch(u=>{})};o();const l={type:"open"};this.query.sid&&(l.data=`{"sid":"${this.query.sid}"}`),this._writer.write(l).then(()=>this.onOpen())})})}write(t){this.writable=!1;for(let n=0;n{s&&gg(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var t;(t=this._transport)===null||t===void 0||t.close()}}const PY={websocket:_Y,webtransport:RY,polling:NY},OY=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,IY=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function bb(e){if(e.length>8e3)throw"URI too long";const t=e,n=e.indexOf("["),r=e.indexOf("]");n!=-1&&r!=-1&&(e=e.substring(0,n)+e.substring(n,r).replace(/:/g,";")+e.substring(r,e.length));let s=OY.exec(e||""),o={},l=14;for(;l--;)o[IY[l]]=s[l]||"";return n!=-1&&r!=-1&&(o.source=t,o.host=o.host.substring(1,o.host.length-1).replace(/;/g,":"),o.authority=o.authority.replace("[","").replace("]","").replace(/;/g,":"),o.ipv6uri=!0),o.pathNames=AY(o,o.path),o.queryKey=DY(o,o.query),o}function AY(e,t){const n=/\/{2,9}/g,r=t.replace(n,"/").split("/");return(t.slice(0,1)=="/"||t.length===0)&&r.splice(0,1),t.slice(-1)=="/"&&r.splice(r.length-1,1),r}function DY(e,t){const n={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(r,s,o){s&&(n[s]=o)}),n}const xb=typeof addEventListener=="function"&&typeof removeEventListener=="function",kp=[];xb&&addEventListener("offline",()=>{kp.forEach(e=>e())},!1);class va extends Pn{constructor(t,n){if(super(),this.binaryType=hY,this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,t&&typeof t=="object"&&(n=t,t=null),t){const r=bb(t);n.hostname=r.host,n.secure=r.protocol==="https"||r.protocol==="wss",n.port=r.port,r.query&&(n.query=r.query)}else n.host&&(n.hostname=bb(n.host).host);mg(this,n),this.secure=n.secure!=null?n.secure:typeof location<"u"&&location.protocol==="https:",n.hostname&&!n.port&&(n.port=this.secure?"443":"80"),this.hostname=n.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=n.port||(typeof location<"u"&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},n.transports.forEach(r=>{const s=r.prototype.name;this.transports.push(s),this._transportsByName[s]=r}),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},n),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),typeof this.opts.query=="string"&&(this.opts.query=wY(this.opts.query)),xb&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},kp.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=void 0),this._open()}createTransport(t){const n=Object.assign({},this.opts.query);n.EIO=LO,n.transport=t,this.id&&(n.sid=this.id);const r=Object.assign({},this.opts,{query:n,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[t]);return new this._transportsByName[t](r)}_open(){if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);return}const t=this.opts.rememberUpgrade&&va.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1?"websocket":this.transports[0];this.readyState="opening";const n=this.createTransport(t);n.open(),this.setTransport(n)}setTransport(t){this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",n=>this._onClose("transport close",n))}onOpen(){this.readyState="open",va.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush()}_onPacket(t){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")switch(this.emitReserved("packet",t),this.emitReserved("heartbeat"),t.type){case"open":this.onHandshake(JSON.parse(t.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":const n=new Error("server error");n.code=t.data,this._onError(n);break;case"message":this.emitReserved("data",t.data),this.emitReserved("message",t.data);break}}onHandshake(t){this.emitReserved("handshake",t),this.id=t.sid,this.transport.query.sid=t.sid,this._pingInterval=t.pingInterval,this._pingTimeout=t.pingTimeout,this._maxPayload=t.maxPayload,this.onOpen(),this.readyState!=="closed"&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);const t=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+t,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose("ping timeout")},t),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved("drain"):this.flush()}flush(){if(this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const t=this._getWritablePackets();this.transport.send(t),this._prevBufferLen=t.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&this.transport.name==="polling"&&this.writeBuffer.length>1))return this.writeBuffer;let n=1;for(let r=0;r0&&n>this._maxPayload)return this.writeBuffer.slice(0,r);n+=2}return this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;const t=Date.now()>this._pingTimeoutTime;return t&&(this._pingTimeoutTime=0,gg(()=>{this._onClose("ping timeout")},this.setTimeoutFn)),t}write(t,n,r){return this._sendPacket("message",t,n,r),this}send(t,n,r){return this._sendPacket("message",t,n,r),this}_sendPacket(t,n,r,s){if(typeof n=="function"&&(s=n,n=void 0),typeof r=="function"&&(s=r,r=null),this.readyState==="closing"||this.readyState==="closed")return;r=r||{},r.compress=r.compress!==!1;const o={type:t,data:n,options:r};this.emitReserved("packetCreate",o),this.writeBuffer.push(o),s&&this.once("flush",s),this.flush()}close(){const t=()=>{this._onClose("forced close"),this.transport.close()},n=()=>{this.off("upgrade",n),this.off("upgradeError",n),t()},r=()=>{this.once("upgrade",n),this.once("upgradeError",n)};return(this.readyState==="opening"||this.readyState==="open")&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?r():t()}):this.upgrading?r():t()),this}_onError(t){if(va.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&this.readyState==="opening")return this.transports.shift(),this._open();this.emitReserved("error",t),this._onClose("transport error",t)}_onClose(t,n){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing"){if(this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),xb&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){const r=kp.indexOf(this._offlineEventListener);r!==-1&&kp.splice(r,1)}this.readyState="closed",this.id=null,this.emitReserved("close",t,n),this.writeBuffer=[],this._prevBufferLen=0}}}va.protocol=LO;class FY extends va{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),this.readyState==="open"&&this.opts.upgrade)for(let t=0;t{r||(n.send([{type:"ping",data:"probe"}]),n.once("packet",m=>{if(!r)if(m.type==="pong"&&m.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",n),!n)return;va.priorWebsocketSuccess=n.name==="websocket",this.transport.pause(()=>{r||this.readyState!=="closed"&&(h(),this.setTransport(n),n.send([{type:"upgrade"}]),this.emitReserved("upgrade",n),n=null,this.upgrading=!1,this.flush())})}else{const g=new Error("probe error");g.transport=n.name,this.emitReserved("upgradeError",g)}}))};function o(){r||(r=!0,h(),n.close(),n=null)}const l=m=>{const g=new Error("probe error: "+m);g.transport=n.name,o(),this.emitReserved("upgradeError",g)};function u(){l("transport closed")}function d(){l("socket closed")}function f(m){n&&m.name!==n.name&&o()}const h=()=>{n.removeListener("open",s),n.removeListener("error",l),n.removeListener("close",u),this.off("close",d),this.off("upgrading",f)};n.once("open",s),n.once("error",l),n.once("close",u),this.once("close",d),this.once("upgrading",f),this._upgrades.indexOf("webtransport")!==-1&&t!=="webtransport"?this.setTimeoutFn(()=>{r||n.open()},200):n.open()}onHandshake(t){this._upgrades=this._filterUpgrades(t.upgrades),super.onHandshake(t)}_filterUpgrades(t){const n=[];for(let r=0;rPY[s]).filter(s=>!!s)),super(t,r)}};function $Y(e,t="",n){let r=e;n=n||typeof location<"u"&&location,e==null&&(e=n.protocol+"//"+n.host),typeof e=="string"&&(e.charAt(0)==="/"&&(e.charAt(1)==="/"?e=n.protocol+e:e=n.host+e),/^(https?|wss?):\/\//.test(e)||(typeof n<"u"?e=n.protocol+"//"+e:e="https://"+e),r=bb(e)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";const o=r.host.indexOf(":")!==-1?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+o+":"+r.port+t,r.href=r.protocol+"://"+o+(n&&n.port===r.port?"":":"+r.port),r}const BY=typeof ArrayBuffer=="function",zY=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,HO=Object.prototype.toString,UY=typeof Blob=="function"||typeof Blob<"u"&&HO.call(Blob)==="[object BlobConstructor]",VY=typeof File=="function"||typeof File<"u"&&HO.call(File)==="[object FileConstructor]";function nw(e){return BY&&(e instanceof ArrayBuffer||zY(e))||UY&&e instanceof Blob||VY&&e instanceof File}function jp(e,t){if(!e||typeof e!="object")return!1;if(Array.isArray(e)){for(let n=0,r=e.length;n=0&&e.num{delete this.acks[t];for(let u=0;u{this.io.clearTimeoutFn(o),n.apply(this,u)};l.withError=!0,this.acks[t]=l}emitWithAck(t,...n){return new Promise((r,s)=>{const o=(l,u)=>l?s(l):r(u);o.withError=!0,n.push(o),this.emit(t,...n)})}_addToQueue(t){let n;typeof t[t.length-1]=="function"&&(n=t.pop());const r={id:this._queueSeq++,tryCount:0,pending:!1,args:t,flags:Object.assign({fromQueue:!0},this.flags)};t.push((s,...o)=>r!==this._queue[0]?void 0:(s!==null?r.tryCount>this._opts.retries&&(this._queue.shift(),n&&n(s)):(this._queue.shift(),n&&n(null,...o)),r.pending=!1,this._drainQueue())),this._queue.push(r),this._drainQueue()}_drainQueue(t=!1){if(!this.connected||this._queue.length===0)return;const n=this._queue[0];n.pending&&!t||(n.pending=!0,n.tryCount++,this.flags=n.flags,this.emit.apply(this,n.args))}packet(t){t.nsp=this.nsp,this.io._packet(t)}onopen(){typeof this.auth=="function"?this.auth(t=>{this._sendConnectPacket(t)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(t){this.packet({type:_t.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},t):t})}onerror(t){this.connected||this.emitReserved("connect_error",t)}onclose(t,n){this.connected=!1,delete this.id,this.emitReserved("disconnect",t,n),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(t=>{if(!this.sendBuffer.some(r=>String(r.id)===t)){const r=this.acks[t];delete this.acks[t],r.withError&&r.call(this,new Error("socket has been disconnected"))}})}onpacket(t){if(t.nsp===this.nsp)switch(t.type){case _t.CONNECT:t.data&&t.data.sid?this.onconnect(t.data.sid,t.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case _t.EVENT:case _t.BINARY_EVENT:this.onevent(t);break;case _t.ACK:case _t.BINARY_ACK:this.onack(t);break;case _t.DISCONNECT:this.ondisconnect();break;case _t.CONNECT_ERROR:this.destroy();const r=new Error(t.data.message);r.data=t.data.data,this.emitReserved("connect_error",r);break}}onevent(t){const n=t.data||[];t.id!=null&&n.push(this.ack(t.id)),this.connected?this.emitEvent(n):this.receiveBuffer.push(Object.freeze(n))}emitEvent(t){if(this._anyListeners&&this._anyListeners.length){const n=this._anyListeners.slice();for(const r of n)r.apply(this,t)}super.emit.apply(this,t),this._pid&&t.length&&typeof t[t.length-1]=="string"&&(this._lastOffset=t[t.length-1])}ack(t){const n=this;let r=!1;return function(...s){r||(r=!0,n.packet({type:_t.ACK,id:t,data:s}))}}onack(t){const n=this.acks[t.id];typeof n=="function"&&(delete this.acks[t.id],n.withError&&t.data.unshift(null),n.apply(this,t.data))}onconnect(t,n){this.id=t,this.recovered=n&&this._pid===n,this._pid=n,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach(t=>this.emitEvent(t)),this.receiveBuffer=[],this.sendBuffer.forEach(t=>{this.notifyOutgoingListeners(t),this.packet(t)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(t=>t()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:_t.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(t){return this.flags.compress=t,this}get volatile(){return this.flags.volatile=!0,this}timeout(t){return this.flags.timeout=t,this}onAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(t),this}prependAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(t),this}offAny(t){if(!this._anyListeners)return this;if(t){const n=this._anyListeners;for(let r=0;r0&&e.jitter<=1?e.jitter:0,this.attempts=0}mc.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),n=Math.floor(t*this.jitter*e);e=(Math.floor(t*10)&1)==0?e-n:e+n}return Math.min(e,this.max)|0};mc.prototype.reset=function(){this.attempts=0};mc.prototype.setMin=function(e){this.ms=e};mc.prototype.setMax=function(e){this.max=e};mc.prototype.setJitter=function(e){this.jitter=e};class Cb extends Pn{constructor(t,n){var r;super(),this.nsps={},this.subs=[],t&&typeof t=="object"&&(n=t,t=void 0),n=n||{},n.path=n.path||"/socket.io",this.opts=n,mg(this,n),this.reconnection(n.reconnection!==!1),this.reconnectionAttempts(n.reconnectionAttempts||1/0),this.reconnectionDelay(n.reconnectionDelay||1e3),this.reconnectionDelayMax(n.reconnectionDelayMax||5e3),this.randomizationFactor((r=n.randomizationFactor)!==null&&r!==void 0?r:.5),this.backoff=new mc({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(n.timeout==null?2e4:n.timeout),this._readyState="closed",this.uri=t;const s=n.parser||QY;this.encoder=new s.Encoder,this.decoder=new s.Decoder,this._autoConnect=n.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(t){return arguments.length?(this._reconnection=!!t,t||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(t){return t===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=t,this)}reconnectionDelay(t){var n;return t===void 0?this._reconnectionDelay:(this._reconnectionDelay=t,(n=this.backoff)===null||n===void 0||n.setMin(t),this)}randomizationFactor(t){var n;return t===void 0?this._randomizationFactor:(this._randomizationFactor=t,(n=this.backoff)===null||n===void 0||n.setJitter(t),this)}reconnectionDelayMax(t){var n;return t===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=t,(n=this.backoff)===null||n===void 0||n.setMax(t),this)}timeout(t){return arguments.length?(this._timeout=t,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(t){if(~this._readyState.indexOf("open"))return this;this.engine=new LY(this.uri,this.opts);const n=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const s=xs(n,"open",function(){r.onopen(),t&&t()}),o=u=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",u),t?t(u):this.maybeReconnectOnOpen()},l=xs(n,"error",o);if(this._timeout!==!1){const u=this._timeout,d=this.setTimeoutFn(()=>{s(),o(new Error("timeout")),n.close()},u);this.opts.autoUnref&&d.unref(),this.subs.push(()=>{this.clearTimeoutFn(d)})}return this.subs.push(s),this.subs.push(l),this}connect(t){return this.open(t)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const t=this.engine;this.subs.push(xs(t,"ping",this.onping.bind(this)),xs(t,"data",this.ondata.bind(this)),xs(t,"error",this.onerror.bind(this)),xs(t,"close",this.onclose.bind(this)),xs(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(t){try{this.decoder.add(t)}catch(n){this.onclose("parse error",n)}}ondecoded(t){gg(()=>{this.emitReserved("packet",t)},this.setTimeoutFn)}onerror(t){this.emitReserved("error",t)}socket(t,n){let r=this.nsps[t];return r?this._autoConnect&&!r.active&&r.connect():(r=new qO(this,t,n),this.nsps[t]=r),r}_destroy(t){const n=Object.keys(this.nsps);for(const r of n)if(this.nsps[r].active)return;this._close()}_packet(t){const n=this.encoder.encode(t);for(let r=0;rt()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(t,n){var r;this.cleanup(),(r=this.engine)===null||r===void 0||r.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",t,n),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const t=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const n=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn(()=>{t.skipReconnect||(this.emitReserved("reconnect_attempt",t.backoff.attempts),!t.skipReconnect&&t.open(s=>{s?(t._reconnecting=!1,t.reconnect(),this.emitReserved("reconnect_error",s)):t.onreconnect()}))},n);this.opts.autoUnref&&r.unref(),this.subs.push(()=>{this.clearTimeoutFn(r)})}}onreconnect(){const t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}const fu={};function Tp(e,t){typeof e=="object"&&(t=e,e=void 0),t=t||{};const n=$Y(e,t.path||"/socket.io"),r=n.source,s=n.id,o=n.path,l=fu[s]&&o in fu[s].nsps,u=t.forceNew||t["force new connection"]||t.multiplex===!1||l;let d;return u?d=new Cb(r,t):(fu[s]||(fu[s]=new Cb(r,t)),d=fu[s]),n.query&&!t.query&&(t.query=n.queryKey),d.socket(n.path,t)}Object.assign(Tp,{Manager:Cb,Socket:qO,io:Tp,connect:Tp});const _u=new Map,sw=e=>{if(_u.has(e)){const n=_u.get(e);return YE(n)}const t=Tp(e,{transports:["websocket","polling"],autoConnect:!1,reconnection:!0,reconnectionAttempts:5,reconnectionDelay:1e3,timeout:2e4});return _u.set(e,t),t.on("connect",()=>{console.log(`✅ WebSocket connected to ${e}`)}),t.on("disconnect",n=>{console.log(`❌ WebSocket disconnected from ${e}:`,n)}),t.on("connect_error",n=>{console.error(`🚫 WebSocket connection error to ${e}:`,n)}),t.on("reconnect",n=>{console.log(`🔄 WebSocket reconnected to ${e} after ${n} attempts`)}),t.on("reconnect_error",n=>{console.error(`🔄❌ WebSocket reconnection error to ${e}:`,n)}),YE(t)},ow=e=>{for(const[t,n]of _u.entries())if(n===e||e._socket===n){console.log(`🔌 Disconnecting socket for ${t}`),n.disconnect(),_u.delete(t);break}},YE=e=>({on:(t,n)=>{e.on(t,n)},off:t=>{e.off(t)},connect:()=>{e.connected||e.connect()},disconnect:()=>{e.disconnect()}}),bi=y.forwardRef(({className:e,...t},n)=>i.jsx("textarea",{className:Ie("flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",e),ref:n,...t}));bi.displayName="Textarea";const YY=e=>["chats","findChats",JSON.stringify(e)],XY=async({instanceName:e,remoteJid:t})=>{const n=await Ee.post(`/chat/findChats/${e}`,{where:{remoteJid:t}});return Array.isArray(n.data)?n.data[0]:n.data},eX=e=>{const{instanceName:t,remoteJid:n,...r}=e;return mt({...r,queryKey:YY({instanceName:t,remoteJid:n}),queryFn:()=>XY({instanceName:t,remoteJid:n}),enabled:!!t&&!!n})},tX=e=>["chats","findMessages",JSON.stringify(e)],nX=async({instanceName:e,remoteJid:t})=>{const n=await Ee.post(`/chat/findMessages/${e}`,{where:{key:{remoteJid:t}}});return n.data?.messages?.records?n.data.messages.records:n.data},rX=e=>{const{instanceName:t,remoteJid:n,...r}=e;return mt({...r,queryKey:tX({instanceName:t,remoteJid:n}),queryFn:()=>nX({instanceName:t,remoteJid:n}),enabled:!!t&&!!n})},sX=async({instanceName:e,token:t,data:n})=>(await Ee.post(`/message/sendText/${e}`,n,{headers:{apikey:t,"content-type":"application/json"}})).data,oX=async({instanceName:e,token:t,data:n})=>{try{const r={number:n.number,mediatype:n.mediaMessage.mediatype,mimetype:n.mediaMessage.mimetype,caption:n.mediaMessage.caption,media:n.mediaMessage.media,fileName:n.mediaMessage.fileName};return(await Ee.post(`/message/sendMedia/${e}`,r,{headers:{apikey:t,"content-type":"application/json"}})).data}catch(r){throw console.error("Erro ao enviar mídia:",r),r}},aX=async({instanceName:e,token:t,data:n})=>{try{const r={number:n.number,audioMessage:{audio:n.audioMessage.audio},options:n.options};return(await Ee.post(`/message/sendWhatsAppAudio/${e}`,r,{headers:{apikey:t,"content-type":"application/json"}})).data}catch(r){throw console.error("Erro ao enviar áudio:",r),r}};function KO(){return{sendText:nt(sX,{invalidateKeys:[["chats","findMessages"],["chats","findChats"]]})}}function WO(){return{sendMedia:nt(oX)}}function iX(){return{sendAudio:nt(aX)}}const GO=y.createContext({backgroundColor:"",textForegroundColor:"",primaryColor:"",fromMeBubbleColor:"",fromMeForegroundColor:"",fromOtherBubbleColor:"",fromOtherForegroundColor:"",fromMeQuotedBubbleColor:"",fromOtherQuotedBubbleColor:"",inputBackgroundColor:"",inputTextForegroundColor:"",inputIconsMainColor:""});function lX({children:e}){const[t]=hd(),{theme:n}=tc(),r=t.get("backgroundColor"),s=t.get("textForegroundColor"),o=t.get("primaryColor"),l=t.get("fromMeBubbleColor"),u=t.get("fromMeForegroundColor"),d=t.get("fromOtherBubbleColor"),f=t.get("fromOtherForegroundColor"),h=t.get("fromMeQuotedBubbleColor"),m=t.get("fromOtherQuotedBubbleColor"),g=t.get("inputBackgroundColor"),x=t.get("inputTextForegroundColor"),b=t.get("inputIconsMainColor"),w=()=>n==="dark"?"#0f0f0f":"#faf9fa",C=()=>n==="dark"?"#faf9fa":"#020202",k=()=>n==="dark"?"#0b332a":"#e0f0f0",j=()=>n==="dark"?"#0b332a":"#c8fff2",M=()=>n==="dark"?"#ffffff":"#020202",_=()=>n==="dark"?"#1d2724":"#e0f0f0",R=()=>n==="dark"?"#ffffff":"#020202",N=()=>n==="dark"?"#161616":"#e0f0f0",O=()=>n==="dark"?"#faf9fa":"#020202",D=()=>n==="dark"?"#1f463d":"#aff7e6",z=()=>n==="dark"?"#0f1413":"#d2e2e2",Q=()=>n==="dark"?"#0e6451":"#0b332a";return i.jsx(GO.Provider,{value:{backgroundColor:r||w(),textForegroundColor:s||C(),primaryColor:o||k(),fromMeBubbleColor:l||j(),fromMeForegroundColor:u||M(),fromOtherBubbleColor:d||_(),fromOtherForegroundColor:f||R(),fromMeQuotedBubbleColor:h||D(),fromOtherQuotedBubbleColor:m||z(),inputBackgroundColor:g||N(),inputTextForegroundColor:x||O(),inputIconsMainColor:b||Q()},children:e})}const La=()=>y.useContext(GO),JO=({setSelectedMedia:e})=>{const{t}=Ve(),{inputIconsMainColor:n}=La(),r=y.useRef(null),s=y.useRef(null),[o,l]=y.useState(!1),u=m=>{const g=m.target.files?.[0];if(!g){e(null);return}const x=g.type.split("/")[0],b=g.size/(1024*1024);switch(x){case"audio":if(b>16){me.error(t("chat.media.errors.audioSize"));return}break;case"image":if(b>5){me.error(t("chat.media.errors.imageSize"));return}break;case"video":if(b>16){me.error(t("chat.media.errors.videoSize"));return}break;case"application":case"text":if(b>100){me.error(t("chat.media.errors.documentSize"));return}break;default:me.error(t("chat.media.errors.unsupportedType"));return}e(g)},d=m=>{m.preventDefault(),r.current&&r.current.click()},f=m=>{m.preventDefault(),s.current&&s.current.click()},h=["text/plain","application/pdf","application/msword","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.ms-excel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.ms-powerpoint","application/vnd.openxmlformats-officedocument.presentationml.presentation","application/zip","application/x-rar-compressed","application/x-7z-compressed"];return i.jsx(i.Fragment,{children:i.jsxs(Kr,{open:o,onOpenChange:l,children:[i.jsx(Wr,{asChild:!0,children:i.jsxs(se,{type:"button",variant:"ghost",size:"icon",className:"rounded-full p-2",children:[i.jsx(cs,{className:"h-6 w-6",style:{color:n}}),i.jsx("span",{className:"sr-only",children:t("chat.media.attach")})]})}),i.jsxs(hr,{align:"end",children:[i.jsx("input",{ref:s,type:"file",accept:h.join(", "),onChange:u,className:"hidden"}),i.jsxs(wt,{onClick:f,children:[i.jsx(rB,{className:"mr-2 h-4 w-4"}),t("chat.media.document")]}),i.jsx("input",{ref:r,type:"file",accept:"image/*, video/*",onChange:u,className:"hidden"}),i.jsxs(wt,{onClick:d,children:[i.jsx(uB,{className:"mr-2 h-4 w-4"}),t("chat.media.photosAndVideos")]})]})]})})},QO=({selectedMedia:e,setSelectedMedia:t})=>{const{t:n}=Ve(),r=()=>{t(null)},s=l=>l.type.includes("image")?i.jsx("img",{className:"w-80 rounded-lg",src:URL.createObjectURL(l),alt:n("chat.media.selectedMedia.imageAlt"),style:{maxHeight:"400px",objectFit:"contain"}}):l.type.includes("video")?i.jsx("div",{className:"flex items-center justify-center",children:i.jsx("video",{className:"w-80 rounded-lg object-cover",src:URL.createObjectURL(l),controls:!0})}):i.jsx("div",{className:"flex items-center justify-center",children:i.jsxs("span",{className:"flex items-center gap-2",children:[i.jsx(Hb,{className:"h-6 w-6"}),n("chat.media.selectedMedia.file")]})}),o=l=>{const u=["B","KB","MB","GB","TB"];let d=0;for(;l>1024;)l/=1024,d++;return`${l.toFixed(2)} ${u[d]}`};return i.jsxs("div",{className:"relative flex items-center rounded-lg bg-[#e0f0f0] dark:bg-[#1d2724] dark:text-white",children:[i.jsx("div",{className:"absolute h-full w-1 rounded-l-lg bg-blue-700 dark:bg-blue-300"}),i.jsxs("div",{className:"flex w-full flex-col items-center justify-center gap-6 p-4 pl-4",children:[e&&s(e),i.jsxs("div",{className:"flex flex-col items-center justify-center gap-2",children:[i.jsx("span",{className:"text-sm font-medium",children:e?.name||n("chat.media.selectedMedia.selectedFile")}),i.jsx("span",{className:"text-xs text-gray-500",children:o(e?.size||0)})]})]}),i.jsx(se,{size:"icon",variant:"ghost",className:"ml-auto h-10 w-10 rounded-full",onClick:r,children:i.jsx(qb,{className:"h-6 w-6"})})]})},XE=e=>{const t=new Date,n=new Date(t);n.setDate(n.getDate()-1);const r=new Date(e);return r.toDateString()===t.toDateString()?"Hoje":r.toDateString()===n.toDateString()?"Ontem":Math.floor((t.getTime()-r.getTime())/(1e3*60*60*24))<7?r.toLocaleDateString("pt-BR",{weekday:"long"}):r.toLocaleDateString("pt-BR",{day:"2-digit",month:"2-digit",year:"numeric"})},Yv=e=>{try{if(!e.messageTimestamp)return new Date;if(typeof e.messageTimestamp=="object"){const n=[e.messageTimestamp.low,e.messageTimestamp.seconds,e.messageTimestamp.timestamp,e.messageTimestamp.time,e.messageTimestamp.value].find(r=>typeof r=="number"&&!isNaN(r))||Date.now()/1e3;return new Date(n*1e3)}else if(isNaN(Number(e.messageTimestamp))){if(typeof e.messageTimestamp=="string"&&e.messageTimestamp.includes("T"))return new Date(e.messageTimestamp)}else{const t=Number(e.messageTimestamp);return t>1e12?new Date(t):new Date(t*1e3)}return new Date}catch{return new Date}},cX=({date:e})=>i.jsx("div",{className:"flex items-center justify-center py-4",children:i.jsx("div",{className:"rounded-full bg-muted px-3 py-1",children:i.jsx("span",{className:"text-sm font-medium text-muted-foreground",children:e})})}),uX=e=>{if(!e)return"";if(typeof e=="string")try{const t=JSON.parse(e);return t.conversation||t.text||e}catch{return e}return typeof e=="object"?e.conversation||e.text||"":String(e)},ek=({message:e})=>{const t=e.messageType;switch(t){case"conversation":if(e.message.contactMessage){const d=e.message.contactMessage;return i.jsxs("div",{className:"p-3 bg-muted rounded-lg max-w-xs",children:[i.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[i.jsx("div",{className:"text-xl",children:"👤"}),i.jsx("span",{className:"font-medium",children:"Contact"})]}),d.displayName&&i.jsx("p",{className:"text-sm font-medium",children:d.displayName}),d.vcard&&i.jsx("p",{className:"text-xs text-muted-foreground",children:"Contact card"})]})}if(e.message.locationMessage){const d=e.message.locationMessage;return i.jsxs("div",{className:"p-3 bg-muted rounded-lg max-w-xs",children:[i.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[i.jsx("div",{className:"text-xl",children:"📍"}),i.jsx("span",{className:"font-medium",children:"Location"})]}),d.name&&i.jsx("p",{className:"text-sm font-medium",children:d.name}),d.address&&i.jsx("p",{className:"text-xs text-muted-foreground",children:d.address}),d.degreesLatitude&&d.degreesLongitude&&i.jsx("a",{href:`https://maps.google.com/?q=${d.degreesLatitude},${d.degreesLongitude}`,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline text-sm mt-1 inline-block",children:"View on Maps"})]})}return i.jsx("span",{children:uX(e.message)});case"extendedTextMessage":return i.jsx("span",{children:e.message.conversation??e.message.extendedTextMessage?.text});case"imageMessage":const r=(e.message.base64?e.message.base64.startsWith("data:")?e.message.base64:`data:image/jpeg;base64,${e.message.base64}`:null)||e.message.mediaUrl;return i.jsxs("div",{className:"flex flex-col gap-2",children:[r?i.jsx("img",{src:r,alt:"Image",className:"rounded-lg max-w-full h-auto",style:{maxWidth:"400px",maxHeight:"400px",objectFit:"contain"},loading:"lazy"}):i.jsxs("div",{className:"rounded bg-muted p-4 max-w-xs",children:[i.jsx("p",{className:"text-center text-muted-foreground",children:"Image couldn't be loaded"}),i.jsx("p",{className:"text-center text-xs text-muted-foreground mt-1",children:"Missing base64 data and mediaUrl"})]}),e.message.imageMessage?.caption&&i.jsx("p",{className:"text-sm",children:e.message.imageMessage.caption})]});case"videoMessage":const o=(e.message.base64?e.message.base64.startsWith("data:")?e.message.base64:`data:video/mp4;base64,${e.message.base64}`:null)||e.message.mediaUrl;return i.jsxs("div",{className:"flex flex-col gap-2",children:[o?i.jsx("video",{src:o,controls:!0,className:"rounded-lg max-w-full h-auto",style:{maxWidth:"400px",maxHeight:"400px"}}):i.jsxs("div",{className:"rounded bg-muted p-4 max-w-xs",children:[i.jsx("p",{className:"text-center text-muted-foreground",children:"Video couldn't be loaded"}),i.jsx("p",{className:"text-center text-xs text-muted-foreground mt-1",children:"Missing base64 data and mediaUrl"})]}),e.message.videoMessage?.caption&&i.jsx("p",{className:"text-sm",children:e.message.videoMessage.caption})]});case"audioMessage":const u=(e.message.base64?e.message.base64.startsWith("data:")?e.message.base64:`data:audio/mpeg;base64,${e.message.base64}`:null)||e.message.mediaUrl;return u?i.jsxs("audio",{controls:!0,className:"w-full max-w-xs",children:[i.jsx("source",{src:u,type:"audio/mpeg"}),"Your browser does not support the audio element."]}):i.jsxs("div",{className:"rounded bg-muted p-4 max-w-xs",children:[i.jsx("p",{className:"text-center text-muted-foreground",children:"Audio couldn't be loaded"}),i.jsx("p",{className:"text-center text-xs text-muted-foreground mt-1",children:"Missing base64 data and mediaUrl"})]});case"documentMessage":return i.jsxs("div",{className:"flex items-center gap-2 p-3 bg-muted rounded-lg max-w-xs",children:[i.jsx("div",{className:"text-2xl",children:"📄"}),i.jsxs("div",{className:"flex-1 min-w-0",children:[i.jsx("p",{className:"font-medium truncate",children:e.message.documentMessage?.fileName||"Document"}),e.message.documentMessage?.fileLength&&i.jsxs("p",{className:"text-xs text-muted-foreground",children:[(e.message.documentMessage.fileLength/1024/1024).toFixed(2)," MB"]})]})]});case"stickerMessage":return i.jsx("img",{src:e.message.mediaUrl,alt:"Sticker",className:"max-w-32 max-h-32 object-contain"});default:return i.jsx("div",{className:"text-xs text-muted-foreground bg-muted p-2 rounded max-w-xs",children:i.jsxs("details",{children:[i.jsxs("summary",{children:["Unknown message type: ",t]}),i.jsx("pre",{className:"mt-2 whitespace-pre-wrap break-all text-xs",children:JSON.stringify(e.message,null,2)})]})})}};function ZO({textareaRef:e,handleTextareaChange:t,textareaHeight:n,lastMessageRef:r,scrollToBottom:s}){const{instance:o}=ct(),[l,u]=y.useState(""),[d,f]=y.useState(!1),[h,m]=y.useState(null),[g,x]=y.useState([]),{sendText:b}=KO(),{sendMedia:w}=WO(),{remoteJid:C}=ls(),k=async()=>{if(!(!l.trim()||!C||!o?.name||!o?.token||d))try{f(!0),await b({instanceName:o.name,token:o.token,data:{number:C,text:l.trim()}}),u(""),e.current&&(e.current.value="",t())}catch(G){console.error("Error sending message:",G)}finally{f(!1)}},j=async()=>{if(!(!h||!C||!o?.name||!o?.token||d))try{f(!0);const G=await new Promise((W,ie)=>{const re=new FileReader;re.readAsDataURL(h),re.onload=()=>{const H=re.result.split(",")[1];W(H)},re.onerror=ie});await w({instanceName:o.name,token:o.token,data:{number:C,mediaMessage:{mediatype:h.type.split("/")[0]==="application"?"document":h.type.split("/")[0],mimetype:h.type,caption:l.trim(),media:G,fileName:h.name}}}),m(null),u(""),e.current&&(e.current.value="",t())}catch(G){console.error("Error sending media:",G)}finally{f(!1)}},M=async()=>{h?await j():await k()},_=G=>{G.key==="Enter"&&!G.shiftKey&&(G.preventDefault(),M())},R=G=>{u(G.target.value),t()},{data:N}=eX({remoteJid:C,instanceName:o?.name}),{data:O,isSuccess:D}=rX({remoteJid:C,instanceName:o?.name}),z=y.useMemo(()=>{if(!O)return g;const G=new Map;return O.forEach(W=>G.set(W.key.id,W)),g.forEach(W=>{G.set(W.key.id,W)}),Array.from(G.values())},[O,g]);y.useEffect(()=>{if(!o?.name||!C)return;const G=dr(jn.API_URL);if(!G){console.error("API URL not found in localStorage");return}const W=sw(G),ie=(Y,H)=>{if(!o||H.instance!==o.name||H?.data?.key?.remoteJid!==C)return;const q=H.data;x(he=>{const A=he.findIndex(F=>F.key.id===q.key.id);if(A!==-1){const F=[...he];return F[A]=q,F}else return[...he,q]})},re=Y=>{o&&Y.instance===o.name&&console.log("Received message status update:",Y)};return W.on("messages.upsert",Y=>{ie("messages.upsert",Y)}),W.on("send.message",Y=>{ie("send.message",Y)}),W.on("messages.update",Y=>{re(Y)}),W.connect(),()=>{W.off("messages.upsert"),W.off("send.message"),W.off("messages.update"),ow(W)}},[o?.name,C]);const Q=y.useMemo(()=>{if(!z)return[];const G=[...z].sort((Y,H)=>{const q=Yv(Y).getTime(),he=Yv(H).getTime();return q-he}),W=[];let ie="",re=[];return G.forEach(Y=>{const q=Yv(Y).toDateString();q!==ie?(re.length>0&&W.push({date:XE(new Date(ie)),messages:re}),ie=q,re=[Y]):re.push(Y)}),re.length>0&&W.push({date:XE(new Date(ie)),messages:re}),W},[z]);y.useEffect(()=>{D&&z&&s()},[D,z,s]),y.useEffect(()=>{m(null),u(""),x([]),e.current&&(e.current.value="",t())},[C]);const pe=G=>i.jsx("div",{className:"bubble-right",children:i.jsx("div",{className:"flex items-start gap-4 self-end",children:i.jsx("div",{className:"grid gap-1",children:i.jsx("div",{className:"bubble",children:i.jsx(ek,{message:G})})})})},G.id),V=G=>i.jsx("div",{className:"bubble-left",children:i.jsx("div",{className:"flex items-start gap-4",children:i.jsx("div",{className:"grid gap-1",children:i.jsx("div",{className:"bubble",children:i.jsx(ek,{message:G})})})})},G.id);return i.jsxs("div",{className:"flex h-full flex-col",children:[i.jsx("div",{className:"sticky top-0 bg-background border-b border-border p-3",children:i.jsxs("div",{className:"flex items-center gap-3",children:[i.jsxs(Ei,{className:"h-10 w-10",children:[i.jsx(ki,{src:N?.profilePicUrl,alt:N?.pushName||N?.remoteJid?.split("@")[0]}),i.jsx(Up,{className:"bg-slate-700 text-slate-300 border border-slate-600",children:i.jsx(Ap,{className:"h-5 w-5"})})]}),i.jsxs("div",{className:"flex-1 min-w-0",children:[i.jsx("div",{className:"font-medium text-sm truncate",children:N?.pushName||N?.remoteJid?.split("@")[0]}),i.jsx("div",{className:"text-xs text-muted-foreground truncate",children:N?.remoteJid?.split("@")[0]})]}),i.jsxs(dx,{children:[i.jsx(fx,{asChild:!0,children:i.jsx(se,{variant:"ghost",size:"sm",className:"h-8 w-8 p-0",children:i.jsx(Nh,{className:"h-4 w-4"})})}),i.jsxs(hr,{align:"start",className:"max-w-[300px]",children:[i.jsxs(wt,{className:"items-start gap-2",children:[i.jsx(wB,{className:"mr-2 h-4 w-4 shrink-0 translate-y-1"}),i.jsxs("div",{children:[i.jsx("div",{className:"font-medium",children:"GPT-4"}),i.jsx("div",{className:"text-muted-foreground/80",children:"With DALL-E, browsing and analysis. Limit 40 messages / 3 hours"})]})]}),i.jsx(Xs,{}),i.jsxs(wt,{className:"items-start gap-2",children:[i.jsx(mT,{className:"mr-2 h-4 w-4 shrink-0 translate-y-1"}),i.jsxs("div",{children:[i.jsx("div",{className:"font-medium",children:"GPT-3"}),i.jsx("div",{className:"text-muted-foreground/80",children:"Great for everyday tasks"})]})]})]})]})]})}),i.jsxs("div",{className:"message-container mx-auto flex max-w-4xl flex-1 flex-col gap-2 overflow-y-auto px-2",children:[Q.map((G,W)=>i.jsxs("div",{children:[i.jsx(cX,{date:G.date}),i.jsx("div",{className:"flex flex-col gap-2",children:G.messages.map(ie=>ie.key.fromMe?pe(ie):V(ie))})]},W)),i.jsx("div",{ref:r})]}),i.jsxs("div",{className:"sticky bottom-0 mx-auto flex w-full max-w-2xl flex-col gap-1.5 bg-background px-2 py-2",children:[h&&i.jsx(QO,{selectedMedia:h,setSelectedMedia:m}),i.jsxs("div",{className:"flex items-center rounded-3xl border border-border bg-background px-2 py-1",children:[o&&i.jsx(JO,{instance:o,setSelectedMedia:m}),i.jsx(bi,{placeholder:"Enviar mensagem...",name:"message",id:"message",rows:1,ref:e,value:l,onChange:R,onKeyDown:_,disabled:d,style:{height:n},className:"min-h-0 w-full resize-none border-none p-3 focus-visible:outline-none focus-visible:ring-0 focus-visible:ring-transparent focus-visible:ring-offset-0 focus-visible:ring-offset-transparent"}),i.jsxs(se,{type:"button",size:"icon",onClick:M,disabled:!l.trim()&&!h||d,className:"rounded-full p-2 disabled:opacity-50",children:[i.jsx(Th,{className:"h-6 w-6"}),i.jsx("span",{className:"sr-only",children:"Enviar"})]})]})]})]})}const dX=e=>e.split("@")[0];function tk(){const e=zo("(min-width: 768px)"),t=y.useRef(null),[n]=y.useState("auto"),r=y.useRef(null),{instance:s}=ct(),[o,l]=y.useState([]),{data:u,isSuccess:d}=sY({instanceName:s?.name}),f=qe.useMemo(()=>{if(!u)return o;const C=new Map;return u.forEach(k=>C.set(k.remoteJid,k)),o.forEach(k=>{const j=C.get(k.remoteJid);j?C.set(k.remoteJid,{...j,...k}):C.set(k.remoteJid,k)}),Array.from(C.values())},[u,o]),{instanceId:h,remoteJid:m}=ls(),g=dn();y.useEffect(()=>{if(!s?.name)return;const C=dr(jn.API_URL);if(!C){console.error("API URL not found in localStorage");return}const k=sw(C),j=(M,_)=>{if(!s||_.instance!==s.name)return;const R=_?.data?.key?.remoteJid;R&&l(N=>{const O=N.findIndex(z=>z.remoteJid===R),D={id:R,remoteJid:R,pushName:_?.data?.pushName||dX(R),profilePicUrl:_?.data?.key?.profilePictureUrl||"",..._?.data};if(O!==-1){const z=[...N];return z[O]={...z[O],...D},z}else return[...N,D]})};return k.on("messages.upsert",M=>{j("messages.upsert",M)}),k.on("send.message",M=>{j("send.message",M)}),k.connect(),()=>{k.off("messages.upsert"),k.off("send.message"),ow(k)}},[s?.name]);const x=y.useCallback(()=>{t.current&&t.current.scrollIntoView({})},[]),b=()=>{if(r.current){r.current.style.height="auto";const C=r.current.scrollHeight,j=parseInt(getComputedStyle(r.current).lineHeight)*10;r.current.style.height=`${Math.min(C,j)}px`}};y.useEffect(()=>{d&&x()},[d,x]);const w=C=>{g(`/manager/instance/${h}/chat/${C}`)};return i.jsx("div",{className:"h-[calc(100vh-160px)] overflow-hidden",children:i.jsxs($o,{direction:e?"horizontal":"vertical",className:"h-full",children:[i.jsx(Hn,{defaultSize:20,children:i.jsxs("div",{className:"hidden h-full flex-col bg-background text-foreground md:flex",children:[i.jsx("div",{className:"flex-shrink-0 p-2",children:i.jsxs(se,{variant:"ghost",className:"w-full justify-start gap-2 px-2 text-left",children:[i.jsx("div",{className:"flex h-7 w-7 items-center justify-center rounded-full",children:i.jsx(Bl,{className:"h-4 w-4"})}),i.jsx("div",{className:"grow overflow-hidden text-ellipsis whitespace-nowrap text-sm",children:"Chat"}),i.jsx(cs,{className:"h-4 w-4"})]})}),i.jsxs(Yx,{defaultValue:"contacts",className:"flex flex-col flex-1 min-h-0",children:[i.jsxs(hg,{className:"tabs-chat flex-shrink-0",children:[i.jsx(Jl,{value:"contacts",children:"Contatos"}),i.jsx(Jl,{value:"groups",children:"Grupos"})]}),i.jsx(Ql,{value:"contacts",className:"flex-1 overflow-hidden",children:i.jsx("div",{className:"h-full overflow-auto",children:i.jsxs("div",{className:"grid gap-1 p-2 text-foreground",children:[i.jsx("div",{className:"px-2 text-xs font-medium text-muted-foreground",children:"Contatos"}),u?.map(C=>C.remoteJid.includes("@s.whatsapp.net")&&i.jsxs(Fu,{to:"#",onClick:()=>w(C.remoteJid),className:`chat-item flex items-center overflow-hidden truncate whitespace-nowrap rounded-md border-b border-gray-600/50 p-2 text-sm transition-colors hover:bg-muted/50 ${m===C.remoteJid?"active":""}`,children:[i.jsx("span",{className:"chat-avatar mr-2",children:i.jsxs(Ei,{className:"h-8 w-8",children:[i.jsx(ki,{src:C.profilePicUrl,alt:C.pushName||C.remoteJid.split("@")[0]}),i.jsx(Up,{className:"bg-slate-700 text-slate-300 border border-slate-600",children:i.jsx(Ap,{className:"h-5 w-5"})})]})}),i.jsxs("div",{className:"min-w-0 flex-1",children:[i.jsx("span",{className:"chat-title block font-medium",children:C.pushName||C.remoteJid.split("@")[0]}),i.jsx("span",{className:"chat-description block text-xs text-gray-500",children:C.remoteJid.split("@")[0]})]})]},C.id))]})})}),i.jsx(Ql,{value:"groups",className:"flex-1 overflow-hidden",children:i.jsx("div",{className:"h-full overflow-auto",children:i.jsx("div",{className:"grid gap-1 p-2 text-foreground",children:f?.map(C=>C.remoteJid.includes("@g.us")&&i.jsxs(Fu,{to:"#",onClick:()=>w(C.remoteJid),className:`chat-item flex items-center overflow-hidden truncate whitespace-nowrap rounded-md border-b border-gray-600/50 p-2 text-sm transition-colors hover:bg-muted/50 ${m===C.remoteJid?"active":""}`,children:[i.jsx("span",{className:"chat-avatar mr-2",children:i.jsxs(Ei,{className:"h-8 w-8",children:[i.jsx(ki,{src:C.profilePicUrl,alt:C.pushName||C.remoteJid.split("@")[0]}),i.jsx(Up,{className:"bg-slate-700 text-slate-300 border border-slate-600",children:i.jsx(Ap,{className:"h-5 w-5"})})]})}),i.jsxs("div",{className:"min-w-0 flex-1",children:[i.jsx("span",{className:"chat-title block font-medium",children:C.pushName||C.remoteJid.split("@")[0]}),i.jsx("span",{className:"chat-description block text-xs text-gray-500",children:C.remoteJid})]})]},C.id))})})})]})]})}),i.jsx(Bo,{withHandle:!0,className:"border border-black"}),i.jsx(Hn,{children:m&&i.jsx(ZO,{textareaRef:r,handleTextareaChange:b,textareaHeight:n,lastMessageRef:t,scrollToBottom:x})})]})})}const fX=e=>["chatwoot","fetchChatwoot",JSON.stringify(e)],pX=async({instanceName:e,token:t})=>(await Ee.get(`/chatwoot/find/${e}`,{headers:{apiKey:t}})).data,hX=e=>{const{instanceName:t,token:n,...r}=e;return mt({...r,queryKey:fX({instanceName:t,token:n}),queryFn:()=>pX({instanceName:t,token:n}),enabled:!!t})},gX=async({instanceName:e,token:t,data:n})=>(await Ee.post(`/chatwoot/set/${e}`,n,{headers:{apikey:t}})).data;function mX(){return{createChatwoot:nt(gX,{invalidateKeys:[["chatwoot","fetchChatwoot"]]})}}const rp=P.string().optional().transform(e=>e===""?void 0:e),vX=P.object({enabled:P.boolean(),accountId:P.string(),token:P.string(),url:P.string(),signMsg:P.boolean().optional(),signDelimiter:rp,nameInbox:rp,organization:rp,logo:rp,reopenConversation:P.boolean().optional(),conversationPending:P.boolean().optional(),mergeBrazilContacts:P.boolean().optional(),importContacts:P.boolean().optional(),importMessages:P.boolean().optional(),daysLimitImportMessages:P.coerce.number().optional(),autoCreate:P.boolean(),ignoreJids:P.array(P.string()).default([])});function yX(){const{t:e}=Ve(),{instance:t}=ct(),[,n]=y.useState(!1),{createChatwoot:r}=mX(),{data:s}=hX({instanceName:t?.name,token:t?.token}),o=on({resolver:an(vX),defaultValues:{enabled:!0,accountId:"",token:"",url:"",signMsg:!0,signDelimiter:"\\n",nameInbox:"",organization:"",logo:"",reopenConversation:!0,conversationPending:!1,mergeBrazilContacts:!0,importContacts:!1,importMessages:!1,daysLimitImportMessages:7,autoCreate:!0,ignoreJids:[]}});y.useEffect(()=>{if(s){o.setValue("ignoreJids",s.ignoreJids||[]);const u={enabled:s.enabled,accountId:s.accountId,token:s.token,url:s.url,signMsg:s.signMsg||!1,signDelimiter:s.signDelimiter||"\\n",nameInbox:s.nameInbox||"",organization:s.organization||"",logo:s.logo||"",reopenConversation:s.reopenConversation||!1,conversationPending:s.conversationPending||!1,mergeBrazilContacts:s.mergeBrazilContacts||!1,importContacts:s.importContacts||!1,importMessages:s.importMessages||!1,daysLimitImportMessages:s.daysLimitImportMessages||7,autoCreate:s.autoCreate||!1,ignoreJids:s.ignoreJids};o.reset(u)}},[s,o]);const l=async u=>{if(!t)return;n(!0);const d={enabled:u.enabled,accountId:u.accountId,token:u.token,url:u.url,signMsg:u.signMsg||!1,signDelimiter:u.signDelimiter||"\\n",nameInbox:u.nameInbox||"",organization:u.organization||"",logo:u.logo||"",reopenConversation:u.reopenConversation||!1,conversationPending:u.conversationPending||!1,mergeBrazilContacts:u.mergeBrazilContacts||!1,importContacts:u.importContacts||!1,importMessages:u.importMessages||!1,daysLimitImportMessages:u.daysLimitImportMessages||7,autoCreate:u.autoCreate,ignoreJids:u.ignoreJids};await r({instanceName:t.name,token:t.token,data:d},{onSuccess:()=>{me.success(e("chatwoot.toast.success"))},onError:f=>{console.error(e("chatwoot.toast.error"),f),rT(f)?me.error(`Error: ${f?.response?.data?.response?.message}`):me.error(e("chatwoot.toast.error"))},onSettled:()=>{n(!1)}})};return i.jsx(i.Fragment,{children:i.jsx(Fo,{...o,children:i.jsxs("form",{onSubmit:o.handleSubmit(l),className:"w-full space-y-6",children:[i.jsxs("div",{children:[i.jsx("h3",{className:"mb-1 text-lg font-medium",children:e("chatwoot.title")}),i.jsx(Oa,{className:"my-4"}),i.jsxs("div",{className:"mx-4 space-y-2 divide-y [&>*]:px-4 [&>*]:py-2",children:[i.jsx(Pe,{name:"enabled",label:e("chatwoot.form.enabled.label"),className:"w-full justify-between",helper:e("chatwoot.form.enabled.description")}),i.jsx(le,{name:"url",label:e("chatwoot.form.url.label"),children:i.jsx(ne,{})}),i.jsx(le,{name:"accountId",label:e("chatwoot.form.accountId.label"),children:i.jsx(ne,{})}),i.jsx(le,{name:"token",label:e("chatwoot.form.token.label"),children:i.jsx(ne,{type:"password"})}),i.jsx(Pe,{name:"signMsg",label:e("chatwoot.form.signMsg.label"),className:"w-full justify-between",helper:e("chatwoot.form.signMsg.description")}),i.jsx(le,{name:"signDelimiter",label:e("chatwoot.form.signDelimiter.label"),children:i.jsx(ne,{})}),i.jsx(le,{name:"nameInbox",label:e("chatwoot.form.nameInbox.label"),children:i.jsx(ne,{})}),i.jsx(le,{name:"organization",label:e("chatwoot.form.organization.label"),children:i.jsx(ne,{})}),i.jsx(le,{name:"logo",label:e("chatwoot.form.logo.label"),children:i.jsx(ne,{})}),i.jsx(Pe,{name:"conversationPending",label:e("chatwoot.form.conversationPending.label"),className:"w-full justify-between",helper:e("chatwoot.form.conversationPending.description")}),i.jsx(Pe,{name:"reopenConversation",label:e("chatwoot.form.reopenConversation.label"),className:"w-full justify-between",helper:e("chatwoot.form.reopenConversation.description")}),i.jsx(Pe,{name:"importContacts",label:e("chatwoot.form.importContacts.label"),className:"w-full justify-between",helper:e("chatwoot.form.importContacts.description")}),i.jsx(Pe,{name:"importMessages",label:e("chatwoot.form.importMessages.label"),className:"w-full justify-between",helper:e("chatwoot.form.importMessages.description")}),i.jsx(le,{name:"daysLimitImportMessages",label:e("chatwoot.form.daysLimitImportMessages.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(Da,{name:"ignoreJids",label:e("chatwoot.form.ignoreJids.label"),placeholder:e("chatwoot.form.ignoreJids.placeholder")}),i.jsx(Pe,{name:"autoCreate",label:e("chatwoot.form.autoCreate.label"),className:"w-full justify-between",helper:e("chatwoot.form.autoCreate.description")})]})]}),i.jsx("div",{className:"mx-4 flex justify-end",children:i.jsx(se,{type:"submit",children:e("chatwoot.button.save")})})]})})})}var wl={},Xv={exports:{}},ey,nk;function bX(){if(nk)return ey;nk=1;var e="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";return ey=e,ey}var ty,rk;function xX(){if(rk)return ty;rk=1;var e=bX();function t(){}function n(){}return n.resetWarningCache=t,ty=function(){function r(l,u,d,f,h,m){if(m!==e){var g=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw g.name="Invariant Violation",g}}r.isRequired=r;function s(){return r}var o={array:r,bigint:r,bool:r,func:r,number:r,object:r,string:r,symbol:r,any:r,arrayOf:s,element:r,elementType:r,instanceOf:s,node:r,objectOf:s,oneOf:s,oneOfType:s,shape:s,exact:s,checkPropTypes:n,resetWarningCache:t};return o.PropTypes=o,o},ty}var sk;function YO(){return sk||(sk=1,Xv.exports=xX()()),Xv.exports}var ny,ok;function XO(){return ok||(ok=1,ny={L:1,M:0,Q:3,H:2}),ny}var ry,ak;function eI(){return ak||(ak=1,ry={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8}),ry}var sy,ik;function wX(){if(ik)return sy;ik=1;var e=eI();function t(n){this.mode=e.MODE_8BIT_BYTE,this.data=n}return t.prototype={getLength:function(n){return this.data.length},write:function(n){for(var r=0;r>>7-t%8&1)==1},put:function(t,n){for(var r=0;r>>n-r-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(t){var n=Math.floor(this.length/8);this.buffer.length<=n&&this.buffer.push(0),t&&(this.buffer[n]|=128>>>this.length%8),this.length++}},ay=e,ay}var iy,uk;function tI(){if(uk)return iy;uk=1;for(var e={glog:function(n){if(n<1)throw new Error("glog("+n+")");return e.LOG_TABLE[n]},gexp:function(n){for(;n<0;)n+=255;for(;n>=256;)n-=255;return e.EXP_TABLE[n]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)},t=0;t<8;t++)e.EXP_TABLE[t]=1<=0;)l^=s.G15<=0;)l^=s.G18<>>=1;return l},getPatternPosition:function(o){return s.PATTERN_POSITION_TABLE[o-1]},getMask:function(o,l,u){switch(o){case r.PATTERN000:return(l+u)%2==0;case r.PATTERN001:return l%2==0;case r.PATTERN010:return u%3==0;case r.PATTERN011:return(l+u)%3==0;case r.PATTERN100:return(Math.floor(l/2)+Math.floor(u/3))%2==0;case r.PATTERN101:return l*u%2+l*u%3==0;case r.PATTERN110:return(l*u%2+l*u%3)%2==0;case r.PATTERN111:return(l*u%3+(l+u)%2)%2==0;default:throw new Error("bad maskPattern:"+o)}},getErrorCorrectPolynomial:function(o){for(var l=new t([1],0),u=0;u5&&(u+=3+h-5)}for(var d=0;d=7&&this.setupTypeNumber(u),this.dataCache==null&&(this.dataCache=o.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,d)},l.setupPositionProbePattern=function(u,d){for(var f=-1;f<=7;f++)if(!(u+f<=-1||this.moduleCount<=u+f))for(var h=-1;h<=7;h++)d+h<=-1||this.moduleCount<=d+h||(0<=f&&f<=6&&(h==0||h==6)||0<=h&&h<=6&&(f==0||f==6)||2<=f&&f<=4&&2<=h&&h<=4?this.modules[u+f][d+h]=!0:this.modules[u+f][d+h]=!1)},l.getBestMaskPattern=function(){for(var u=0,d=0,f=0;f<8;f++){this.makeImpl(!0,f);var h=r.getLostPoint(this);(f==0||u>h)&&(u=h,d=f)}return d},l.createMovieClip=function(u,d,f){var h=u.createEmptyMovieClip(d,f),m=1;this.make();for(var g=0;g>f&1)==1;this.modules[Math.floor(f/3)][f%3+this.moduleCount-8-3]=h}for(var f=0;f<18;f++){var h=!u&&(d>>f&1)==1;this.modules[f%3+this.moduleCount-8-3][Math.floor(f/3)]=h}},l.setupTypeInfo=function(u,d){for(var f=this.errorCorrectLevel<<3|d,h=r.getBCHTypeInfo(f),m=0;m<15;m++){var g=!u&&(h>>m&1)==1;m<6?this.modules[m][8]=g:m<8?this.modules[m+1][8]=g:this.modules[this.moduleCount-15+m][8]=g}for(var m=0;m<15;m++){var g=!u&&(h>>m&1)==1;m<8?this.modules[8][this.moduleCount-m-1]=g:m<9?this.modules[8][15-m-1+1]=g:this.modules[8][15-m-1]=g}this.modules[this.moduleCount-8][8]=!u},l.mapData=function(u,d){for(var f=-1,h=this.moduleCount-1,m=7,g=0,x=this.moduleCount-1;x>0;x-=2)for(x==6&&x--;;){for(var b=0;b<2;b++)if(this.modules[h][x-b]==null){var w=!1;g>>m&1)==1);var C=r.getMask(d,h,x-b);C&&(w=!w),this.modules[h][x-b]=w,m--,m==-1&&(g++,m=7)}if(h+=f,h<0||this.moduleCount<=h){h-=f,f=-f;break}}},o.PAD0=236,o.PAD1=17,o.createData=function(u,d,f){for(var h=t.getRSBlocks(u,d),m=new n,g=0;gb*8)throw new Error("code length overflow. ("+m.getLengthInBits()+">"+b*8+")");for(m.getLengthInBits()+4<=b*8&&m.put(0,4);m.getLengthInBits()%8!=0;)m.putBit(!1);for(;!(m.getLengthInBits()>=b*8||(m.put(o.PAD0,8),m.getLengthInBits()>=b*8));)m.put(o.PAD1,8);return o.createBytes(m,h)},o.createBytes=function(u,d){for(var f=0,h=0,m=0,g=new Array(d.length),x=new Array(d.length),b=0;b=0?_.get(R):0}}for(var N=0,k=0;k=0||Object.prototype.hasOwnProperty.call(f,g)&&(m[g]=f[g]);return m}var u={bgColor:n.default.oneOfType([n.default.object,n.default.string]).isRequired,bgD:n.default.string.isRequired,fgColor:n.default.oneOfType([n.default.object,n.default.string]).isRequired,fgD:n.default.string.isRequired,size:n.default.number.isRequired,title:n.default.string,viewBoxSize:n.default.number.isRequired,xmlns:n.default.string},d=(0,r.forwardRef)(function(f,h){var m=f.bgColor,g=f.bgD,x=f.fgD,b=f.fgColor,w=f.size,C=f.title,k=f.viewBoxSize,j=f.xmlns,M=j===void 0?"http://www.w3.org/2000/svg":j,_=l(f,["bgColor","bgD","fgD","fgColor","size","title","viewBoxSize","xmlns"]);return s.default.createElement("svg",e({},_,{height:w,ref:h,viewBox:"0 0 "+k+" "+k,width:w,xmlns:M}),C?s.default.createElement("title",null,C):null,s.default.createElement("path",{d:g,fill:m}),s.default.createElement("path",{d:x,fill:b}))});return d.displayName="QRCodeSvg",d.propTypes=u,sp.default=d,sp}var gk;function TX(){if(gk)return wl;gk=1,Object.defineProperty(wl,"__esModule",{value:!0}),wl.QRCode=void 0;var e=Object.assign||function(w){for(var C=1;C=0||Object.prototype.hasOwnProperty.call(w,j)&&(k[j]=w[j]);return k}var x={bgColor:n.default.oneOfType([n.default.object,n.default.string]),fgColor:n.default.oneOfType([n.default.object,n.default.string]),level:n.default.string,size:n.default.number,value:n.default.string.isRequired},b=(0,u.forwardRef)(function(w,C){var k=w.bgColor,j=k===void 0?"#FFFFFF":k,M=w.fgColor,_=M===void 0?"#000000":M,R=w.level,N=R===void 0?"L":R,O=w.size,D=O===void 0?256:O,z=w.value,Q=g(w,["bgColor","fgColor","level","size","value"]),pe=new l.default(-1,s.default[N]);pe.addData(z),pe.make();var V=pe.modules;return d.default.createElement(h.default,e({},Q,{bgColor:j,bgD:V.map(function(G,W){return G.map(function(ie,re){return ie?"":"M "+re+" "+W+" l 1 0 0 1 -1 0 Z"}).join(" ")}).join(" "),fgColor:_,fgD:V.map(function(G,W){return G.map(function(ie,re){return ie?"M "+re+" "+W+" l 1 0 0 1 -1 0 Z":""}).join(" ")}).join(" "),ref:C,size:D,viewBoxSize:V.length}))});return wl.QRCode=b,b.displayName="QRCode",b.propTypes=x,wl.default=b,wl}var NX=TX();const MX=fd(NX),_X=jh("relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7 space-y-1 [&_strong]:text-foreground",{variants:{variant:{default:"border-zinc-500/20 bg-zinc-50/50 dark:border-zinc-500/30 dark:bg-zinc-500/10 text-zinc-900 dark:text-zinc-300 [&>svg]:text-zinc-400 dark:[&>svg]:text-zinc-300",destructive:"border-red-500/20 bg-red-50/50 dark:border-red-500/30 dark:bg-red-500/10 text-red-900 dark:text-red-200 [&>svg]:text-red-600 dark:[&>svg]:text-red-400/80",warning:"border-amber-500/20 bg-amber-50/50 dark:border-amber-500/30 dark:bg-amber-500/10 text-amber-900 dark:text-amber-200 [&>svg]:text-amber-500",info:"border-sky-500/20 bg-sky-50/50 dark:border-sky-500/30 dark:bg-sky-500/10 text-sky-900 dark:text-sky-200 [&>svg]:text-sky-500",success:"border-emerald-500/20 bg-emerald-50/50 dark:border-emerald-500/30 dark:bg-emerald-500/10 text-emerald-900 dark:text-emerald-200 [&>svg]:text-emerald-600 dark:[&>svg]:text-emerald-400/80"}},defaultVariants:{variant:"default"}}),rI=y.forwardRef(({className:e,variant:t,...n},r)=>i.jsx("div",{ref:r,role:"alert",className:Ie(_X({variant:t}),e),...n}));rI.displayName="Alert";const sI=y.forwardRef(({className:e,...t},n)=>i.jsx("h5",{ref:n,className:Ie("font-medium leading-none tracking-tight",e),...t}));sI.displayName="AlertTitle";const RX=y.forwardRef(({className:e,...t},n)=>i.jsx("div",{ref:n,className:Ie("text-sm [&_p]:leading-relaxed",e),...t}));RX.displayName="AlertDescription";const On=({size:e=45,className:t,...n})=>i.jsx("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:i.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:e,height:e,...n,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:Ie("animate-spin",t),children:i.jsx("path",{d:"M21 12a9 9 0 1 1-6.219-8.56"})})});function PX(){const{t:e,i18n:t}=Ve(),n=new Intl.NumberFormat(t.language),[r,s]=y.useState(null),[o,l]=y.useState(""),u=dr(jn.TOKEN),{theme:d}=tc(),{connect:f,logout:h,restart:m}=Hh(),{instance:g,reloadInstance:x}=ct();y.useEffect(()=>{g&&(localStorage.setItem(jn.INSTANCE_ID,g.id),localStorage.setItem(jn.INSTANCE_NAME,g.name),localStorage.setItem(jn.INSTANCE_TOKEN,g.token))},[g]);const b=async()=>{await x()},w=async R=>{try{await m(R),await x()}catch(N){console.error("Error:",N)}},C=async R=>{try{await h(R),await x()}catch(N){console.error("Error:",N)}},k=async(R,N)=>{try{if(s(null),!u){console.error("Token not found.");return}if(N){const O=await f({instanceName:R,token:u,number:g?.number});l(O.pairingCode)}else{const O=await f({instanceName:R,token:u});s(O.code)}}catch(O){console.error("Error:",O)}},j=async()=>{s(null),l(""),await x()},M=y.useMemo(()=>g?{contacts:g._count?.Contact||0,chats:g._count?.Chat||0,messages:g._count?.Message||0}:{contacts:0,chats:0,messages:0},[g]),_=y.useMemo(()=>d==="dark"?"#fff":d==="light"?"#000":"#189d68",[d]);return g?i.jsxs("main",{className:"flex flex-col gap-8",children:[i.jsx("section",{children:i.jsxs(So,{children:[i.jsx(Co,{children:i.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-4",children:[i.jsx("h2",{className:"break-all text-lg font-semibold",children:g.name}),i.jsx(l_,{status:g.connectionStatus})]})}),i.jsxs(Eo,{className:"flex flex-col items-start space-y-6",children:[i.jsx("div",{className:"flex w-full flex-1",children:i.jsx(c_,{token:g.token})}),g.profileName&&i.jsxs("div",{className:"flex flex-1 gap-2",children:[i.jsx(Ei,{children:i.jsx(ki,{src:g.profilePicUrl,alt:""})}),i.jsxs("div",{className:"space-y-1",children:[i.jsx("strong",{children:g.profileName}),i.jsx("p",{className:"break-all text-sm text-muted-foreground",children:g.ownerJid})]})]}),g.connectionStatus!=="open"&&i.jsxs(rI,{variant:"warning",className:"flex flex-wrap items-center justify-between gap-3",children:[i.jsx(sI,{className:"text-lg font-bold tracking-wide",children:e("instance.dashboard.alert")}),i.jsxs(Pt,{children:[i.jsx(Bt,{onClick:()=>k(g.name,!1),asChild:!0,children:i.jsx(se,{variant:"warning",children:e("instance.dashboard.button.qrcode.label")})}),i.jsxs(Nt,{onCloseAutoFocus:j,children:[i.jsx(Mt,{children:e("instance.dashboard.button.qrcode.title")}),i.jsx("div",{className:"flex items-center justify-center",children:r&&i.jsx(MX,{value:r,size:256,bgColor:"transparent",fgColor:_,className:"rounded-sm"})})]})]}),g.number&&i.jsxs(Pt,{children:[i.jsx(Bt,{className:"connect-code-button",onClick:()=>k(g.name,!0),children:e("instance.dashboard.button.pairingCode.label")}),i.jsx(Nt,{onCloseAutoFocus:j,children:i.jsx(Mt,{children:i.jsx(eo,{children:o?i.jsxs("div",{className:"py-3",children:[i.jsx("p",{className:"text-center",children:i.jsx("strong",{children:e("instance.dashboard.button.pairingCode.title")})}),i.jsxs("p",{className:"pairing-code text-center",children:[o.substring(0,4),"-",o.substring(4,8)]})]}):i.jsx(On,{})})})})]})]})]}),i.jsxs(Vh,{className:"flex flex-wrap items-center justify-end gap-3",children:[i.jsx(se,{variant:"outline",className:"refresh-button",size:"icon",onClick:b,children:i.jsx(Ip,{size:"20"})}),i.jsx(se,{className:"action-button",variant:"secondary",onClick:()=>w(g.name),children:e("instance.dashboard.button.restart").toUpperCase()}),i.jsx(se,{variant:"destructive",onClick:()=>C(g.name),disabled:g.connectionStatus==="close",children:e("instance.dashboard.button.disconnect").toUpperCase()})]})]})}),i.jsxs("section",{className:"grid grid-cols-[repeat(auto-fit,_minmax(15rem,_1fr))] gap-6",children:[i.jsxs(So,{className:"instance-card",children:[i.jsx(Co,{children:i.jsxs(gi,{className:"flex items-center gap-2",children:[i.jsx(pT,{size:"20"}),e("instance.dashboard.contacts")]})}),i.jsx(Eo,{children:n.format(M.contacts)})]}),i.jsxs(So,{className:"instance-card",children:[i.jsx(Co,{children:i.jsxs(gi,{className:"flex items-center gap-2",children:[i.jsx(jB,{size:"20"}),e("instance.dashboard.chats")]})}),i.jsx(Eo,{children:n.format(M.chats)})]}),i.jsxs(So,{className:"instance-card",children:[i.jsx(Co,{children:i.jsxs(gi,{className:"flex items-center gap-2",children:[i.jsx(Bl,{size:"20"}),e("instance.dashboard.messages")]})}),i.jsx(Eo,{children:n.format(M.messages)})]})]})]}):i.jsx(On,{})}var OX="Separator",mk="horizontal",IX=["horizontal","vertical"],oI=y.forwardRef((e,t)=>{const{decorative:n,orientation:r=mk,...s}=e,o=AX(r)?r:mk,u=n?{role:"none"}:{"aria-orientation":o==="vertical"?o:void 0,role:"separator"};return i.jsx(rt.div,{"data-orientation":o,...u,...s,ref:t})});oI.displayName=OX;function AX(e){return IX.includes(e)}var aI=oI;const $t=y.forwardRef(({className:e,orientation:t="horizontal",decorative:n=!0,...r},s)=>i.jsx(aI,{ref:s,decorative:n,orientation:t,className:Ie("shrink-0 bg-border",t==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",e),...r}));$t.displayName=aI.displayName;const DX=e=>["dify","fetchDify",JSON.stringify(e)],FX=async({instanceName:e,token:t})=>(await Ee.get(`/dify/find/${e}`,{headers:{apikey:t}})).data,iI=e=>{const{instanceName:t,token:n,...r}=e;return mt({...r,queryKey:DX({instanceName:t,token:n}),queryFn:()=>FX({instanceName:t,token:n}),enabled:!!t&&(e.enabled??!0)})},LX=async({instanceName:e,token:t,data:n})=>(await Ee.post(`/dify/create/${e}`,n,{headers:{apikey:t}})).data,$X=async({instanceName:e,difyId:t,data:n})=>(await Ee.put(`/dify/update/${t}/${e}`,n)).data,BX=async({instanceName:e,difyId:t})=>(await Ee.delete(`/dify/delete/${t}/${e}`)).data,zX=async({instanceName:e,token:t,data:n})=>(await Ee.post(`/dify/settings/${e}`,n,{headers:{apikey:t}})).data,UX=async({instanceName:e,token:t,remoteJid:n,status:r})=>(await Ee.post(`/dify/changeStatus/${e}`,{remoteJid:n,status:r},{headers:{apikey:t}})).data;function vg(){const e=nt(zX,{invalidateKeys:[["dify","fetchDefaultSettings"]]}),t=nt(UX,{invalidateKeys:[["dify","getDify"],["dify","fetchSessions"]]}),n=nt(BX,{invalidateKeys:[["dify","getDify"],["dify","fetchDify"],["dify","fetchSessions"]]}),r=nt($X,{invalidateKeys:[["dify","getDify"],["dify","fetchDify"],["dify","fetchSessions"]]}),s=nt(LX,{invalidateKeys:[["dify","fetchDify"]]});return{setDefaultSettingsDify:e,changeStatusDify:t,deleteDify:n,updateDify:r,createDify:s}}const VX=e=>["dify","fetchDefaultSettings",JSON.stringify(e)],HX=async({instanceName:e,token:t})=>(await Ee.get(`/dify/fetchSettings/${e}`,{headers:{apikey:t}})).data,qX=e=>{const{instanceName:t,token:n,...r}=e;return mt({...r,queryKey:VX({instanceName:t,token:n}),queryFn:()=>HX({instanceName:t,token:n}),enabled:!!t})},KX=P.object({expire:P.string(),keywordFinish:P.string(),delayMessage:P.string(),unknownMessage:P.string(),listeningFromMe:P.boolean(),stopBotFromMe:P.boolean(),keepOpen:P.boolean(),debounceTime:P.string(),ignoreJids:P.array(P.string()).default([]),difyIdFallback:P.union([P.null(),P.string()]).optional(),splitMessages:P.boolean(),timePerChar:P.string()});function WX(){const{t:e}=Ve(),{instance:t}=ct(),{setDefaultSettingsDify:n}=vg(),[r,s]=y.useState(!1),{data:o,refetch:l}=iI({instanceName:t?.name,token:t?.token,enabled:r}),{data:u,refetch:d}=qX({instanceName:t?.name,token:t?.token}),f=on({resolver:an(KX),defaultValues:{expire:"0",keywordFinish:e("dify.form.examples.keywordFinish"),delayMessage:"1000",unknownMessage:e("dify.form.examples.unknownMessage"),listeningFromMe:!1,stopBotFromMe:!1,keepOpen:!1,debounceTime:"0",ignoreJids:[],difyIdFallback:void 0,splitMessages:!1,timePerChar:"0"}});y.useEffect(()=>{u&&f.reset({expire:u?.expire?u.expire.toString():"0",keywordFinish:u.keywordFinish,delayMessage:u.delayMessage?u.delayMessage.toString():"0",unknownMessage:u.unknownMessage,listeningFromMe:u.listeningFromMe,stopBotFromMe:u.stopBotFromMe,keepOpen:u.keepOpen,debounceTime:u.debounceTime?u.debounceTime.toString():"0",ignoreJids:u.ignoreJids,difyIdFallback:u.difyIdFallback,splitMessages:u.splitMessages,timePerChar:u.timePerChar?u.timePerChar.toString():"0"})},[u]);const h=async g=>{try{if(!t||!t.name)throw new Error("instance not found.");const x={expire:parseInt(g.expire),keywordFinish:g.keywordFinish,delayMessage:parseInt(g.delayMessage),unknownMessage:g.unknownMessage,listeningFromMe:g.listeningFromMe,stopBotFromMe:g.stopBotFromMe,keepOpen:g.keepOpen,debounceTime:parseInt(g.debounceTime),difyIdFallback:g.difyIdFallback||void 0,ignoreJids:g.ignoreJids,splitMessages:g.splitMessages,timePerChar:parseInt(g.timePerChar)};await n({instanceName:t.name,token:t.token,data:x}),me.success(e("dify.toast.defaultSettings.success"))}catch(x){console.error("Error:",x),me.error(`Error: ${x?.response?.data?.response?.message}`)}};function m(){d(),l()}return i.jsxs(Pt,{open:r,onOpenChange:s,children:[i.jsx(Bt,{asChild:!0,children:i.jsxs(se,{variant:"secondary",size:"sm",children:[i.jsx(Oo,{size:16,className:"mr-1"}),i.jsx("span",{className:"hidden sm:inline",children:e("dify.defaultSettings")})]})}),i.jsxs(Nt,{className:"overflow-y-auto sm:max-h-[600px] sm:max-w-[740px]",onCloseAutoFocus:m,children:[i.jsx(Mt,{children:i.jsx(zt,{children:e("dify.defaultSettings")})}),i.jsx(Gn,{...f,children:i.jsxs("form",{className:"w-full space-y-6",onSubmit:f.handleSubmit(h),children:[i.jsx("div",{children:i.jsxs("div",{className:"space-y-4",children:[i.jsx(Jt,{name:"difyIdFallback",label:e("dify.form.difyIdFallback.label"),options:o?.filter(g=>!!g.id).map(g=>({label:g.description,value:g.id}))??[]}),i.jsx(le,{name:"expire",label:e("dify.form.expire.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(le,{name:"keywordFinish",label:e("dify.form.keywordFinish.label"),children:i.jsx(ne,{})}),i.jsx(le,{name:"delayMessage",label:e("dify.form.delayMessage.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(le,{name:"unknownMessage",label:e("dify.form.unknownMessage.label"),children:i.jsx(ne,{})}),i.jsx(Pe,{name:"listeningFromMe",label:e("dify.form.listeningFromMe.label"),reverse:!0}),i.jsx(Pe,{name:"stopBotFromMe",label:e("dify.form.stopBotFromMe.label"),reverse:!0}),i.jsx(Pe,{name:"keepOpen",label:e("dify.form.keepOpen.label"),reverse:!0}),i.jsx(le,{name:"debounceTime",label:e("dify.form.debounceTime.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(Pe,{name:"splitMessages",label:e("dify.form.splitMessages.label"),reverse:!0}),i.jsx(le,{name:"timePerChar",label:e("dify.form.timePerChar.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(Da,{name:"ignoreJids",label:e("dify.form.ignoreJids.label"),placeholder:e("dify.form.ignoreJids.placeholder")})]})}),i.jsx(Yt,{children:i.jsx(se,{type:"submit",children:e("dify.button.save")})})]})})]})]})}/** - * table-core - * - * Copyright (c) TanStack - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */function ma(e,t){return typeof e=="function"?e(t):e}function qr(e,t){return n=>{t.setState(r=>({...r,[e]:ma(n,r[e])}))}}function yg(e){return e instanceof Function}function GX(e){return Array.isArray(e)&&e.every(t=>typeof t=="number")}function lI(e,t){const n=[],r=s=>{s.forEach(o=>{n.push(o);const l=t(o);l!=null&&l.length&&r(l)})};return r(e),n}function ot(e,t,n){let r=[],s;return o=>{let l;n.key&&n.debug&&(l=Date.now());const u=e(o);if(!(u.length!==r.length||u.some((h,m)=>r[m]!==h)))return s;r=u;let f;if(n.key&&n.debug&&(f=Date.now()),s=t(...u),n==null||n.onChange==null||n.onChange(s),n.key&&n.debug&&n!=null&&n.debug()){const h=Math.round((Date.now()-l)*100)/100,m=Math.round((Date.now()-f)*100)/100,g=m/16,x=(b,w)=>{for(b=String(b);b.length{var s;return(s=e?.debugAll)!=null?s:e[t]},key:!1,onChange:r}}function JX(e,t,n,r){const s=()=>{var l;return(l=o.getValue())!=null?l:e.options.renderFallbackValue},o={id:`${t.id}_${n.id}`,row:t,column:n,getValue:()=>t.getValue(r),renderValue:s,getContext:ot(()=>[e,n,t,o],(l,u,d,f)=>({table:l,column:u,row:d,cell:f,getValue:f.getValue,renderValue:f.renderValue}),at(e.options,"debugCells"))};return e._features.forEach(l=>{l.createCell==null||l.createCell(o,n,t,e)},{}),o}function QX(e,t,n,r){var s,o;const u={...e._getDefaultColumnDef(),...t},d=u.accessorKey;let f=(s=(o=u.id)!=null?o:d?typeof String.prototype.replaceAll=="function"?d.replaceAll(".","_"):d.replace(/\./g,"_"):void 0)!=null?s:typeof u.header=="string"?u.header:void 0,h;if(u.accessorFn?h=u.accessorFn:d&&(d.includes(".")?h=g=>{let x=g;for(const w of d.split(".")){var b;x=(b=x)==null?void 0:b[w]}return x}:h=g=>g[u.accessorKey]),!f)throw new Error;let m={id:`${String(f)}`,accessorFn:h,parent:r,depth:n,columnDef:u,columns:[],getFlatColumns:ot(()=>[!0],()=>{var g;return[m,...(g=m.columns)==null?void 0:g.flatMap(x=>x.getFlatColumns())]},at(e.options,"debugColumns")),getLeafColumns:ot(()=>[e._getOrderColumnsFn()],g=>{var x;if((x=m.columns)!=null&&x.length){let b=m.columns.flatMap(w=>w.getLeafColumns());return g(b)}return[m]},at(e.options,"debugColumns"))};for(const g of e._features)g.createColumn==null||g.createColumn(m,e);return m}const nr="debugHeaders";function vk(e,t,n){var r;let o={id:(r=n.id)!=null?r:t.id,column:t,index:n.index,isPlaceholder:!!n.isPlaceholder,placeholderId:n.placeholderId,depth:n.depth,subHeaders:[],colSpan:0,rowSpan:0,headerGroup:null,getLeafHeaders:()=>{const l=[],u=d=>{d.subHeaders&&d.subHeaders.length&&d.subHeaders.map(u),l.push(d)};return u(o),l},getContext:()=>({table:e,header:o,column:t})};return e._features.forEach(l=>{l.createHeader==null||l.createHeader(o,e)}),o}const ZX={createTable:e=>{e.getHeaderGroups=ot(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(t,n,r,s)=>{var o,l;const u=(o=r?.map(m=>n.find(g=>g.id===m)).filter(Boolean))!=null?o:[],d=(l=s?.map(m=>n.find(g=>g.id===m)).filter(Boolean))!=null?l:[],f=n.filter(m=>!(r!=null&&r.includes(m.id))&&!(s!=null&&s.includes(m.id)));return op(t,[...u,...f,...d],e)},at(e.options,nr)),e.getCenterHeaderGroups=ot(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(t,n,r,s)=>(n=n.filter(o=>!(r!=null&&r.includes(o.id))&&!(s!=null&&s.includes(o.id))),op(t,n,e,"center")),at(e.options,nr)),e.getLeftHeaderGroups=ot(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left],(t,n,r)=>{var s;const o=(s=r?.map(l=>n.find(u=>u.id===l)).filter(Boolean))!=null?s:[];return op(t,o,e,"left")},at(e.options,nr)),e.getRightHeaderGroups=ot(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.right],(t,n,r)=>{var s;const o=(s=r?.map(l=>n.find(u=>u.id===l)).filter(Boolean))!=null?s:[];return op(t,o,e,"right")},at(e.options,nr)),e.getFooterGroups=ot(()=>[e.getHeaderGroups()],t=>[...t].reverse(),at(e.options,nr)),e.getLeftFooterGroups=ot(()=>[e.getLeftHeaderGroups()],t=>[...t].reverse(),at(e.options,nr)),e.getCenterFooterGroups=ot(()=>[e.getCenterHeaderGroups()],t=>[...t].reverse(),at(e.options,nr)),e.getRightFooterGroups=ot(()=>[e.getRightHeaderGroups()],t=>[...t].reverse(),at(e.options,nr)),e.getFlatHeaders=ot(()=>[e.getHeaderGroups()],t=>t.map(n=>n.headers).flat(),at(e.options,nr)),e.getLeftFlatHeaders=ot(()=>[e.getLeftHeaderGroups()],t=>t.map(n=>n.headers).flat(),at(e.options,nr)),e.getCenterFlatHeaders=ot(()=>[e.getCenterHeaderGroups()],t=>t.map(n=>n.headers).flat(),at(e.options,nr)),e.getRightFlatHeaders=ot(()=>[e.getRightHeaderGroups()],t=>t.map(n=>n.headers).flat(),at(e.options,nr)),e.getCenterLeafHeaders=ot(()=>[e.getCenterFlatHeaders()],t=>t.filter(n=>{var r;return!((r=n.subHeaders)!=null&&r.length)}),at(e.options,nr)),e.getLeftLeafHeaders=ot(()=>[e.getLeftFlatHeaders()],t=>t.filter(n=>{var r;return!((r=n.subHeaders)!=null&&r.length)}),at(e.options,nr)),e.getRightLeafHeaders=ot(()=>[e.getRightFlatHeaders()],t=>t.filter(n=>{var r;return!((r=n.subHeaders)!=null&&r.length)}),at(e.options,nr)),e.getLeafHeaders=ot(()=>[e.getLeftHeaderGroups(),e.getCenterHeaderGroups(),e.getRightHeaderGroups()],(t,n,r)=>{var s,o,l,u,d,f;return[...(s=(o=t[0])==null?void 0:o.headers)!=null?s:[],...(l=(u=n[0])==null?void 0:u.headers)!=null?l:[],...(d=(f=r[0])==null?void 0:f.headers)!=null?d:[]].map(h=>h.getLeafHeaders()).flat()},at(e.options,nr))}};function op(e,t,n,r){var s,o;let l=0;const u=function(g,x){x===void 0&&(x=1),l=Math.max(l,x),g.filter(b=>b.getIsVisible()).forEach(b=>{var w;(w=b.columns)!=null&&w.length&&u(b.columns,x+1)},0)};u(e);let d=[];const f=(g,x)=>{const b={depth:x,id:[r,`${x}`].filter(Boolean).join("_"),headers:[]},w=[];g.forEach(C=>{const k=[...w].reverse()[0],j=C.column.depth===b.depth;let M,_=!1;if(j&&C.column.parent?M=C.column.parent:(M=C.column,_=!0),k&&k?.column===M)k.subHeaders.push(C);else{const R=vk(n,M,{id:[r,x,M.id,C?.id].filter(Boolean).join("_"),isPlaceholder:_,placeholderId:_?`${w.filter(N=>N.column===M).length}`:void 0,depth:x,index:w.length});R.subHeaders.push(C),w.push(R)}b.headers.push(C),C.headerGroup=b}),d.push(b),x>0&&f(w,x-1)},h=t.map((g,x)=>vk(n,g,{depth:l,index:x}));f(h,l-1),d.reverse();const m=g=>g.filter(b=>b.column.getIsVisible()).map(b=>{let w=0,C=0,k=[0];b.subHeaders&&b.subHeaders.length?(k=[],m(b.subHeaders).forEach(M=>{let{colSpan:_,rowSpan:R}=M;w+=_,k.push(R)})):w=1;const j=Math.min(...k);return C=C+j,b.colSpan=w,b.rowSpan=C,{colSpan:w,rowSpan:C}});return m((s=(o=d[0])==null?void 0:o.headers)!=null?s:[]),d}const bg=(e,t,n,r,s,o,l)=>{let u={id:t,index:r,original:n,depth:s,parentId:l,_valuesCache:{},_uniqueValuesCache:{},getValue:d=>{if(u._valuesCache.hasOwnProperty(d))return u._valuesCache[d];const f=e.getColumn(d);if(f!=null&&f.accessorFn)return u._valuesCache[d]=f.accessorFn(u.original,r),u._valuesCache[d]},getUniqueValues:d=>{if(u._uniqueValuesCache.hasOwnProperty(d))return u._uniqueValuesCache[d];const f=e.getColumn(d);if(f!=null&&f.accessorFn)return f.columnDef.getUniqueValues?(u._uniqueValuesCache[d]=f.columnDef.getUniqueValues(u.original,r),u._uniqueValuesCache[d]):(u._uniqueValuesCache[d]=[u.getValue(d)],u._uniqueValuesCache[d])},renderValue:d=>{var f;return(f=u.getValue(d))!=null?f:e.options.renderFallbackValue},subRows:o??[],getLeafRows:()=>lI(u.subRows,d=>d.subRows),getParentRow:()=>u.parentId?e.getRow(u.parentId,!0):void 0,getParentRows:()=>{let d=[],f=u;for(;;){const h=f.getParentRow();if(!h)break;d.push(h),f=h}return d.reverse()},getAllCells:ot(()=>[e.getAllLeafColumns()],d=>d.map(f=>JX(e,u,f,f.id)),at(e.options,"debugRows")),_getAllCellsByColumnId:ot(()=>[u.getAllCells()],d=>d.reduce((f,h)=>(f[h.column.id]=h,f),{}),at(e.options,"debugRows"))};for(let d=0;d{e._getFacetedRowModel=t.options.getFacetedRowModel&&t.options.getFacetedRowModel(t,e.id),e.getFacetedRowModel=()=>e._getFacetedRowModel?e._getFacetedRowModel():t.getPreFilteredRowModel(),e._getFacetedUniqueValues=t.options.getFacetedUniqueValues&&t.options.getFacetedUniqueValues(t,e.id),e.getFacetedUniqueValues=()=>e._getFacetedUniqueValues?e._getFacetedUniqueValues():new Map,e._getFacetedMinMaxValues=t.options.getFacetedMinMaxValues&&t.options.getFacetedMinMaxValues(t,e.id),e.getFacetedMinMaxValues=()=>{if(e._getFacetedMinMaxValues)return e._getFacetedMinMaxValues()}}},cI=(e,t,n)=>{var r;const s=n.toLowerCase();return!!(!((r=e.getValue(t))==null||(r=r.toString())==null||(r=r.toLowerCase())==null)&&r.includes(s))};cI.autoRemove=e=>Ts(e);const uI=(e,t,n)=>{var r;return!!(!((r=e.getValue(t))==null||(r=r.toString())==null)&&r.includes(n))};uI.autoRemove=e=>Ts(e);const dI=(e,t,n)=>{var r;return((r=e.getValue(t))==null||(r=r.toString())==null?void 0:r.toLowerCase())===n?.toLowerCase()};dI.autoRemove=e=>Ts(e);const fI=(e,t,n)=>{var r;return(r=e.getValue(t))==null?void 0:r.includes(n)};fI.autoRemove=e=>Ts(e)||!(e!=null&&e.length);const pI=(e,t,n)=>!n.some(r=>{var s;return!((s=e.getValue(t))!=null&&s.includes(r))});pI.autoRemove=e=>Ts(e)||!(e!=null&&e.length);const hI=(e,t,n)=>n.some(r=>{var s;return(s=e.getValue(t))==null?void 0:s.includes(r)});hI.autoRemove=e=>Ts(e)||!(e!=null&&e.length);const gI=(e,t,n)=>e.getValue(t)===n;gI.autoRemove=e=>Ts(e);const mI=(e,t,n)=>e.getValue(t)==n;mI.autoRemove=e=>Ts(e);const aw=(e,t,n)=>{let[r,s]=n;const o=e.getValue(t);return o>=r&&o<=s};aw.resolveFilterValue=e=>{let[t,n]=e,r=typeof t!="number"?parseFloat(t):t,s=typeof n!="number"?parseFloat(n):n,o=t===null||Number.isNaN(r)?-1/0:r,l=n===null||Number.isNaN(s)?1/0:s;if(o>l){const u=o;o=l,l=u}return[o,l]};aw.autoRemove=e=>Ts(e)||Ts(e[0])&&Ts(e[1]);const yo={includesString:cI,includesStringSensitive:uI,equalsString:dI,arrIncludes:fI,arrIncludesAll:pI,arrIncludesSome:hI,equals:gI,weakEquals:mI,inNumberRange:aw};function Ts(e){return e==null||e===""}const XX={getDefaultColumnDef:()=>({filterFn:"auto"}),getInitialState:e=>({columnFilters:[],...e}),getDefaultOptions:e=>({onColumnFiltersChange:qr("columnFilters",e),filterFromLeafRows:!1,maxLeafRowFilterDepth:100}),createColumn:(e,t)=>{e.getAutoFilterFn=()=>{const n=t.getCoreRowModel().flatRows[0],r=n?.getValue(e.id);return typeof r=="string"?yo.includesString:typeof r=="number"?yo.inNumberRange:typeof r=="boolean"||r!==null&&typeof r=="object"?yo.equals:Array.isArray(r)?yo.arrIncludes:yo.weakEquals},e.getFilterFn=()=>{var n,r;return yg(e.columnDef.filterFn)?e.columnDef.filterFn:e.columnDef.filterFn==="auto"?e.getAutoFilterFn():(n=(r=t.options.filterFns)==null?void 0:r[e.columnDef.filterFn])!=null?n:yo[e.columnDef.filterFn]},e.getCanFilter=()=>{var n,r,s;return((n=e.columnDef.enableColumnFilter)!=null?n:!0)&&((r=t.options.enableColumnFilters)!=null?r:!0)&&((s=t.options.enableFilters)!=null?s:!0)&&!!e.accessorFn},e.getIsFiltered=()=>e.getFilterIndex()>-1,e.getFilterValue=()=>{var n;return(n=t.getState().columnFilters)==null||(n=n.find(r=>r.id===e.id))==null?void 0:n.value},e.getFilterIndex=()=>{var n,r;return(n=(r=t.getState().columnFilters)==null?void 0:r.findIndex(s=>s.id===e.id))!=null?n:-1},e.setFilterValue=n=>{t.setColumnFilters(r=>{const s=e.getFilterFn(),o=r?.find(h=>h.id===e.id),l=ma(n,o?o.value:void 0);if(yk(s,l,e)){var u;return(u=r?.filter(h=>h.id!==e.id))!=null?u:[]}const d={id:e.id,value:l};if(o){var f;return(f=r?.map(h=>h.id===e.id?d:h))!=null?f:[]}return r!=null&&r.length?[...r,d]:[d]})}},createRow:(e,t)=>{e.columnFilters={},e.columnFiltersMeta={}},createTable:e=>{e.setColumnFilters=t=>{const n=e.getAllLeafColumns(),r=s=>{var o;return(o=ma(t,s))==null?void 0:o.filter(l=>{const u=n.find(d=>d.id===l.id);if(u){const d=u.getFilterFn();if(yk(d,l.value,u))return!1}return!0})};e.options.onColumnFiltersChange==null||e.options.onColumnFiltersChange(r)},e.resetColumnFilters=t=>{var n,r;e.setColumnFilters(t?[]:(n=(r=e.initialState)==null?void 0:r.columnFilters)!=null?n:[])},e.getPreFilteredRowModel=()=>e.getCoreRowModel(),e.getFilteredRowModel=()=>(!e._getFilteredRowModel&&e.options.getFilteredRowModel&&(e._getFilteredRowModel=e.options.getFilteredRowModel(e)),e.options.manualFiltering||!e._getFilteredRowModel?e.getPreFilteredRowModel():e._getFilteredRowModel())}};function yk(e,t,n){return(e&&e.autoRemove?e.autoRemove(t,n):!1)||typeof t>"u"||typeof t=="string"&&!t}const eee=(e,t,n)=>n.reduce((r,s)=>{const o=s.getValue(e);return r+(typeof o=="number"?o:0)},0),tee=(e,t,n)=>{let r;return n.forEach(s=>{const o=s.getValue(e);o!=null&&(r>o||r===void 0&&o>=o)&&(r=o)}),r},nee=(e,t,n)=>{let r;return n.forEach(s=>{const o=s.getValue(e);o!=null&&(r=o)&&(r=o)}),r},ree=(e,t,n)=>{let r,s;return n.forEach(o=>{const l=o.getValue(e);l!=null&&(r===void 0?l>=l&&(r=s=l):(r>l&&(r=l),s{let n=0,r=0;if(t.forEach(s=>{let o=s.getValue(e);o!=null&&(o=+o)>=o&&(++n,r+=o)}),n)return r/n},oee=(e,t)=>{if(!t.length)return;const n=t.map(o=>o.getValue(e));if(!GX(n))return;if(n.length===1)return n[0];const r=Math.floor(n.length/2),s=n.sort((o,l)=>o-l);return n.length%2!==0?s[r]:(s[r-1]+s[r])/2},aee=(e,t)=>Array.from(new Set(t.map(n=>n.getValue(e))).values()),iee=(e,t)=>new Set(t.map(n=>n.getValue(e))).size,lee=(e,t)=>t.length,dy={sum:eee,min:tee,max:nee,extent:ree,mean:see,median:oee,unique:aee,uniqueCount:iee,count:lee},cee={getDefaultColumnDef:()=>({aggregatedCell:e=>{var t,n;return(t=(n=e.getValue())==null||n.toString==null?void 0:n.toString())!=null?t:null},aggregationFn:"auto"}),getInitialState:e=>({grouping:[],...e}),getDefaultOptions:e=>({onGroupingChange:qr("grouping",e),groupedColumnMode:"reorder"}),createColumn:(e,t)=>{e.toggleGrouping=()=>{t.setGrouping(n=>n!=null&&n.includes(e.id)?n.filter(r=>r!==e.id):[...n??[],e.id])},e.getCanGroup=()=>{var n,r;return((n=e.columnDef.enableGrouping)!=null?n:!0)&&((r=t.options.enableGrouping)!=null?r:!0)&&(!!e.accessorFn||!!e.columnDef.getGroupingValue)},e.getIsGrouped=()=>{var n;return(n=t.getState().grouping)==null?void 0:n.includes(e.id)},e.getGroupedIndex=()=>{var n;return(n=t.getState().grouping)==null?void 0:n.indexOf(e.id)},e.getToggleGroupingHandler=()=>{const n=e.getCanGroup();return()=>{n&&e.toggleGrouping()}},e.getAutoAggregationFn=()=>{const n=t.getCoreRowModel().flatRows[0],r=n?.getValue(e.id);if(typeof r=="number")return dy.sum;if(Object.prototype.toString.call(r)==="[object Date]")return dy.extent},e.getAggregationFn=()=>{var n,r;if(!e)throw new Error;return yg(e.columnDef.aggregationFn)?e.columnDef.aggregationFn:e.columnDef.aggregationFn==="auto"?e.getAutoAggregationFn():(n=(r=t.options.aggregationFns)==null?void 0:r[e.columnDef.aggregationFn])!=null?n:dy[e.columnDef.aggregationFn]}},createTable:e=>{e.setGrouping=t=>e.options.onGroupingChange==null?void 0:e.options.onGroupingChange(t),e.resetGrouping=t=>{var n,r;e.setGrouping(t?[]:(n=(r=e.initialState)==null?void 0:r.grouping)!=null?n:[])},e.getPreGroupedRowModel=()=>e.getFilteredRowModel(),e.getGroupedRowModel=()=>(!e._getGroupedRowModel&&e.options.getGroupedRowModel&&(e._getGroupedRowModel=e.options.getGroupedRowModel(e)),e.options.manualGrouping||!e._getGroupedRowModel?e.getPreGroupedRowModel():e._getGroupedRowModel())},createRow:(e,t)=>{e.getIsGrouped=()=>!!e.groupingColumnId,e.getGroupingValue=n=>{if(e._groupingValuesCache.hasOwnProperty(n))return e._groupingValuesCache[n];const r=t.getColumn(n);return r!=null&&r.columnDef.getGroupingValue?(e._groupingValuesCache[n]=r.columnDef.getGroupingValue(e.original),e._groupingValuesCache[n]):e.getValue(n)},e._groupingValuesCache={}},createCell:(e,t,n,r)=>{e.getIsGrouped=()=>t.getIsGrouped()&&t.id===n.groupingColumnId,e.getIsPlaceholder=()=>!e.getIsGrouped()&&t.getIsGrouped(),e.getIsAggregated=()=>{var s;return!e.getIsGrouped()&&!e.getIsPlaceholder()&&!!((s=n.subRows)!=null&&s.length)}}};function uee(e,t,n){if(!(t!=null&&t.length)||!n)return e;const r=e.filter(o=>!t.includes(o.id));return n==="remove"?r:[...t.map(o=>e.find(l=>l.id===o)).filter(Boolean),...r]}const dee={getInitialState:e=>({columnOrder:[],...e}),getDefaultOptions:e=>({onColumnOrderChange:qr("columnOrder",e)}),createColumn:(e,t)=>{e.getIndex=ot(n=>[Ru(t,n)],n=>n.findIndex(r=>r.id===e.id),at(t.options,"debugColumns")),e.getIsFirstColumn=n=>{var r;return((r=Ru(t,n)[0])==null?void 0:r.id)===e.id},e.getIsLastColumn=n=>{var r;const s=Ru(t,n);return((r=s[s.length-1])==null?void 0:r.id)===e.id}},createTable:e=>{e.setColumnOrder=t=>e.options.onColumnOrderChange==null?void 0:e.options.onColumnOrderChange(t),e.resetColumnOrder=t=>{var n;e.setColumnOrder(t?[]:(n=e.initialState.columnOrder)!=null?n:[])},e._getOrderColumnsFn=ot(()=>[e.getState().columnOrder,e.getState().grouping,e.options.groupedColumnMode],(t,n,r)=>s=>{let o=[];if(!(t!=null&&t.length))o=s;else{const l=[...t],u=[...s];for(;u.length&&l.length;){const d=l.shift(),f=u.findIndex(h=>h.id===d);f>-1&&o.push(u.splice(f,1)[0])}o=[...o,...u]}return uee(o,n,r)},at(e.options,"debugTable"))}},fy=()=>({left:[],right:[]}),fee={getInitialState:e=>({columnPinning:fy(),...e}),getDefaultOptions:e=>({onColumnPinningChange:qr("columnPinning",e)}),createColumn:(e,t)=>{e.pin=n=>{const r=e.getLeafColumns().map(s=>s.id).filter(Boolean);t.setColumnPinning(s=>{var o,l;if(n==="right"){var u,d;return{left:((u=s?.left)!=null?u:[]).filter(m=>!(r!=null&&r.includes(m))),right:[...((d=s?.right)!=null?d:[]).filter(m=>!(r!=null&&r.includes(m))),...r]}}if(n==="left"){var f,h;return{left:[...((f=s?.left)!=null?f:[]).filter(m=>!(r!=null&&r.includes(m))),...r],right:((h=s?.right)!=null?h:[]).filter(m=>!(r!=null&&r.includes(m)))}}return{left:((o=s?.left)!=null?o:[]).filter(m=>!(r!=null&&r.includes(m))),right:((l=s?.right)!=null?l:[]).filter(m=>!(r!=null&&r.includes(m)))}})},e.getCanPin=()=>e.getLeafColumns().some(r=>{var s,o,l;return((s=r.columnDef.enablePinning)!=null?s:!0)&&((o=(l=t.options.enableColumnPinning)!=null?l:t.options.enablePinning)!=null?o:!0)}),e.getIsPinned=()=>{const n=e.getLeafColumns().map(u=>u.id),{left:r,right:s}=t.getState().columnPinning,o=n.some(u=>r?.includes(u)),l=n.some(u=>s?.includes(u));return o?"left":l?"right":!1},e.getPinnedIndex=()=>{var n,r;const s=e.getIsPinned();return s?(n=(r=t.getState().columnPinning)==null||(r=r[s])==null?void 0:r.indexOf(e.id))!=null?n:-1:0}},createRow:(e,t)=>{e.getCenterVisibleCells=ot(()=>[e._getAllVisibleCells(),t.getState().columnPinning.left,t.getState().columnPinning.right],(n,r,s)=>{const o=[...r??[],...s??[]];return n.filter(l=>!o.includes(l.column.id))},at(t.options,"debugRows")),e.getLeftVisibleCells=ot(()=>[e._getAllVisibleCells(),t.getState().columnPinning.left],(n,r)=>(r??[]).map(o=>n.find(l=>l.column.id===o)).filter(Boolean).map(o=>({...o,position:"left"})),at(t.options,"debugRows")),e.getRightVisibleCells=ot(()=>[e._getAllVisibleCells(),t.getState().columnPinning.right],(n,r)=>(r??[]).map(o=>n.find(l=>l.column.id===o)).filter(Boolean).map(o=>({...o,position:"right"})),at(t.options,"debugRows"))},createTable:e=>{e.setColumnPinning=t=>e.options.onColumnPinningChange==null?void 0:e.options.onColumnPinningChange(t),e.resetColumnPinning=t=>{var n,r;return e.setColumnPinning(t?fy():(n=(r=e.initialState)==null?void 0:r.columnPinning)!=null?n:fy())},e.getIsSomeColumnsPinned=t=>{var n;const r=e.getState().columnPinning;if(!t){var s,o;return!!((s=r.left)!=null&&s.length||(o=r.right)!=null&&o.length)}return!!((n=r[t])!=null&&n.length)},e.getLeftLeafColumns=ot(()=>[e.getAllLeafColumns(),e.getState().columnPinning.left],(t,n)=>(n??[]).map(r=>t.find(s=>s.id===r)).filter(Boolean),at(e.options,"debugColumns")),e.getRightLeafColumns=ot(()=>[e.getAllLeafColumns(),e.getState().columnPinning.right],(t,n)=>(n??[]).map(r=>t.find(s=>s.id===r)).filter(Boolean),at(e.options,"debugColumns")),e.getCenterLeafColumns=ot(()=>[e.getAllLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(t,n,r)=>{const s=[...n??[],...r??[]];return t.filter(o=>!s.includes(o.id))},at(e.options,"debugColumns"))}},ap={size:150,minSize:20,maxSize:Number.MAX_SAFE_INTEGER},py=()=>({startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,isResizingColumn:!1,columnSizingStart:[]}),pee={getDefaultColumnDef:()=>ap,getInitialState:e=>({columnSizing:{},columnSizingInfo:py(),...e}),getDefaultOptions:e=>({columnResizeMode:"onEnd",columnResizeDirection:"ltr",onColumnSizingChange:qr("columnSizing",e),onColumnSizingInfoChange:qr("columnSizingInfo",e)}),createColumn:(e,t)=>{e.getSize=()=>{var n,r,s;const o=t.getState().columnSizing[e.id];return Math.min(Math.max((n=e.columnDef.minSize)!=null?n:ap.minSize,(r=o??e.columnDef.size)!=null?r:ap.size),(s=e.columnDef.maxSize)!=null?s:ap.maxSize)},e.getStart=ot(n=>[n,Ru(t,n),t.getState().columnSizing],(n,r)=>r.slice(0,e.getIndex(n)).reduce((s,o)=>s+o.getSize(),0),at(t.options,"debugColumns")),e.getAfter=ot(n=>[n,Ru(t,n),t.getState().columnSizing],(n,r)=>r.slice(e.getIndex(n)+1).reduce((s,o)=>s+o.getSize(),0),at(t.options,"debugColumns")),e.resetSize=()=>{t.setColumnSizing(n=>{let{[e.id]:r,...s}=n;return s})},e.getCanResize=()=>{var n,r;return((n=e.columnDef.enableResizing)!=null?n:!0)&&((r=t.options.enableColumnResizing)!=null?r:!0)},e.getIsResizing=()=>t.getState().columnSizingInfo.isResizingColumn===e.id},createHeader:(e,t)=>{e.getSize=()=>{let n=0;const r=s=>{if(s.subHeaders.length)s.subHeaders.forEach(r);else{var o;n+=(o=s.column.getSize())!=null?o:0}};return r(e),n},e.getStart=()=>{if(e.index>0){const n=e.headerGroup.headers[e.index-1];return n.getStart()+n.getSize()}return 0},e.getResizeHandler=n=>{const r=t.getColumn(e.column.id),s=r?.getCanResize();return o=>{if(!r||!s||(o.persist==null||o.persist(),hy(o)&&o.touches&&o.touches.length>1))return;const l=e.getSize(),u=e?e.getLeafHeaders().map(k=>[k.column.id,k.column.getSize()]):[[r.id,r.getSize()]],d=hy(o)?Math.round(o.touches[0].clientX):o.clientX,f={},h=(k,j)=>{typeof j=="number"&&(t.setColumnSizingInfo(M=>{var _,R;const N=t.options.columnResizeDirection==="rtl"?-1:1,O=(j-((_=M?.startOffset)!=null?_:0))*N,D=Math.max(O/((R=M?.startSize)!=null?R:0),-.999999);return M.columnSizingStart.forEach(z=>{let[Q,pe]=z;f[Q]=Math.round(Math.max(pe+pe*D,0)*100)/100}),{...M,deltaOffset:O,deltaPercentage:D}}),(t.options.columnResizeMode==="onChange"||k==="end")&&t.setColumnSizing(M=>({...M,...f})))},m=k=>h("move",k),g=k=>{h("end",k),t.setColumnSizingInfo(j=>({...j,isResizingColumn:!1,startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,columnSizingStart:[]}))},x=n||typeof document<"u"?document:null,b={moveHandler:k=>m(k.clientX),upHandler:k=>{x?.removeEventListener("mousemove",b.moveHandler),x?.removeEventListener("mouseup",b.upHandler),g(k.clientX)}},w={moveHandler:k=>(k.cancelable&&(k.preventDefault(),k.stopPropagation()),m(k.touches[0].clientX),!1),upHandler:k=>{var j;x?.removeEventListener("touchmove",w.moveHandler),x?.removeEventListener("touchend",w.upHandler),k.cancelable&&(k.preventDefault(),k.stopPropagation()),g((j=k.touches[0])==null?void 0:j.clientX)}},C=hee()?{passive:!1}:!1;hy(o)?(x?.addEventListener("touchmove",w.moveHandler,C),x?.addEventListener("touchend",w.upHandler,C)):(x?.addEventListener("mousemove",b.moveHandler,C),x?.addEventListener("mouseup",b.upHandler,C)),t.setColumnSizingInfo(k=>({...k,startOffset:d,startSize:l,deltaOffset:0,deltaPercentage:0,columnSizingStart:u,isResizingColumn:r.id}))}}},createTable:e=>{e.setColumnSizing=t=>e.options.onColumnSizingChange==null?void 0:e.options.onColumnSizingChange(t),e.setColumnSizingInfo=t=>e.options.onColumnSizingInfoChange==null?void 0:e.options.onColumnSizingInfoChange(t),e.resetColumnSizing=t=>{var n;e.setColumnSizing(t?{}:(n=e.initialState.columnSizing)!=null?n:{})},e.resetHeaderSizeInfo=t=>{var n;e.setColumnSizingInfo(t?py():(n=e.initialState.columnSizingInfo)!=null?n:py())},e.getTotalSize=()=>{var t,n;return(t=(n=e.getHeaderGroups()[0])==null?void 0:n.headers.reduce((r,s)=>r+s.getSize(),0))!=null?t:0},e.getLeftTotalSize=()=>{var t,n;return(t=(n=e.getLeftHeaderGroups()[0])==null?void 0:n.headers.reduce((r,s)=>r+s.getSize(),0))!=null?t:0},e.getCenterTotalSize=()=>{var t,n;return(t=(n=e.getCenterHeaderGroups()[0])==null?void 0:n.headers.reduce((r,s)=>r+s.getSize(),0))!=null?t:0},e.getRightTotalSize=()=>{var t,n;return(t=(n=e.getRightHeaderGroups()[0])==null?void 0:n.headers.reduce((r,s)=>r+s.getSize(),0))!=null?t:0}}};let ip=null;function hee(){if(typeof ip=="boolean")return ip;let e=!1;try{const t={get passive(){return e=!0,!1}},n=()=>{};window.addEventListener("test",n,t),window.removeEventListener("test",n)}catch{e=!1}return ip=e,ip}function hy(e){return e.type==="touchstart"}const gee={getInitialState:e=>({columnVisibility:{},...e}),getDefaultOptions:e=>({onColumnVisibilityChange:qr("columnVisibility",e)}),createColumn:(e,t)=>{e.toggleVisibility=n=>{e.getCanHide()&&t.setColumnVisibility(r=>({...r,[e.id]:n??!e.getIsVisible()}))},e.getIsVisible=()=>{var n,r;const s=e.columns;return(n=s.length?s.some(o=>o.getIsVisible()):(r=t.getState().columnVisibility)==null?void 0:r[e.id])!=null?n:!0},e.getCanHide=()=>{var n,r;return((n=e.columnDef.enableHiding)!=null?n:!0)&&((r=t.options.enableHiding)!=null?r:!0)},e.getToggleVisibilityHandler=()=>n=>{e.toggleVisibility==null||e.toggleVisibility(n.target.checked)}},createRow:(e,t)=>{e._getAllVisibleCells=ot(()=>[e.getAllCells(),t.getState().columnVisibility],n=>n.filter(r=>r.column.getIsVisible()),at(t.options,"debugRows")),e.getVisibleCells=ot(()=>[e.getLeftVisibleCells(),e.getCenterVisibleCells(),e.getRightVisibleCells()],(n,r,s)=>[...n,...r,...s],at(t.options,"debugRows"))},createTable:e=>{const t=(n,r)=>ot(()=>[r(),r().filter(s=>s.getIsVisible()).map(s=>s.id).join("_")],s=>s.filter(o=>o.getIsVisible==null?void 0:o.getIsVisible()),at(e.options,"debugColumns"));e.getVisibleFlatColumns=t("getVisibleFlatColumns",()=>e.getAllFlatColumns()),e.getVisibleLeafColumns=t("getVisibleLeafColumns",()=>e.getAllLeafColumns()),e.getLeftVisibleLeafColumns=t("getLeftVisibleLeafColumns",()=>e.getLeftLeafColumns()),e.getRightVisibleLeafColumns=t("getRightVisibleLeafColumns",()=>e.getRightLeafColumns()),e.getCenterVisibleLeafColumns=t("getCenterVisibleLeafColumns",()=>e.getCenterLeafColumns()),e.setColumnVisibility=n=>e.options.onColumnVisibilityChange==null?void 0:e.options.onColumnVisibilityChange(n),e.resetColumnVisibility=n=>{var r;e.setColumnVisibility(n?{}:(r=e.initialState.columnVisibility)!=null?r:{})},e.toggleAllColumnsVisible=n=>{var r;n=(r=n)!=null?r:!e.getIsAllColumnsVisible(),e.setColumnVisibility(e.getAllLeafColumns().reduce((s,o)=>({...s,[o.id]:n||!(o.getCanHide!=null&&o.getCanHide())}),{}))},e.getIsAllColumnsVisible=()=>!e.getAllLeafColumns().some(n=>!(n.getIsVisible!=null&&n.getIsVisible())),e.getIsSomeColumnsVisible=()=>e.getAllLeafColumns().some(n=>n.getIsVisible==null?void 0:n.getIsVisible()),e.getToggleAllColumnsVisibilityHandler=()=>n=>{var r;e.toggleAllColumnsVisible((r=n.target)==null?void 0:r.checked)}}};function Ru(e,t){return t?t==="center"?e.getCenterVisibleLeafColumns():t==="left"?e.getLeftVisibleLeafColumns():e.getRightVisibleLeafColumns():e.getVisibleLeafColumns()}const mee={createTable:e=>{e._getGlobalFacetedRowModel=e.options.getFacetedRowModel&&e.options.getFacetedRowModel(e,"__global__"),e.getGlobalFacetedRowModel=()=>e.options.manualFiltering||!e._getGlobalFacetedRowModel?e.getPreFilteredRowModel():e._getGlobalFacetedRowModel(),e._getGlobalFacetedUniqueValues=e.options.getFacetedUniqueValues&&e.options.getFacetedUniqueValues(e,"__global__"),e.getGlobalFacetedUniqueValues=()=>e._getGlobalFacetedUniqueValues?e._getGlobalFacetedUniqueValues():new Map,e._getGlobalFacetedMinMaxValues=e.options.getFacetedMinMaxValues&&e.options.getFacetedMinMaxValues(e,"__global__"),e.getGlobalFacetedMinMaxValues=()=>{if(e._getGlobalFacetedMinMaxValues)return e._getGlobalFacetedMinMaxValues()}}},vee={getInitialState:e=>({globalFilter:void 0,...e}),getDefaultOptions:e=>({onGlobalFilterChange:qr("globalFilter",e),globalFilterFn:"auto",getColumnCanGlobalFilter:t=>{var n;const r=(n=e.getCoreRowModel().flatRows[0])==null||(n=n._getAllCellsByColumnId()[t.id])==null?void 0:n.getValue();return typeof r=="string"||typeof r=="number"}}),createColumn:(e,t)=>{e.getCanGlobalFilter=()=>{var n,r,s,o;return((n=e.columnDef.enableGlobalFilter)!=null?n:!0)&&((r=t.options.enableGlobalFilter)!=null?r:!0)&&((s=t.options.enableFilters)!=null?s:!0)&&((o=t.options.getColumnCanGlobalFilter==null?void 0:t.options.getColumnCanGlobalFilter(e))!=null?o:!0)&&!!e.accessorFn}},createTable:e=>{e.getGlobalAutoFilterFn=()=>yo.includesString,e.getGlobalFilterFn=()=>{var t,n;const{globalFilterFn:r}=e.options;return yg(r)?r:r==="auto"?e.getGlobalAutoFilterFn():(t=(n=e.options.filterFns)==null?void 0:n[r])!=null?t:yo[r]},e.setGlobalFilter=t=>{e.options.onGlobalFilterChange==null||e.options.onGlobalFilterChange(t)},e.resetGlobalFilter=t=>{e.setGlobalFilter(t?void 0:e.initialState.globalFilter)}}},yee={getInitialState:e=>({expanded:{},...e}),getDefaultOptions:e=>({onExpandedChange:qr("expanded",e),paginateExpandedRows:!0}),createTable:e=>{let t=!1,n=!1;e._autoResetExpanded=()=>{var r,s;if(!t){e._queue(()=>{t=!0});return}if((r=(s=e.options.autoResetAll)!=null?s:e.options.autoResetExpanded)!=null?r:!e.options.manualExpanding){if(n)return;n=!0,e._queue(()=>{e.resetExpanded(),n=!1})}},e.setExpanded=r=>e.options.onExpandedChange==null?void 0:e.options.onExpandedChange(r),e.toggleAllRowsExpanded=r=>{r??!e.getIsAllRowsExpanded()?e.setExpanded(!0):e.setExpanded({})},e.resetExpanded=r=>{var s,o;e.setExpanded(r?{}:(s=(o=e.initialState)==null?void 0:o.expanded)!=null?s:{})},e.getCanSomeRowsExpand=()=>e.getPrePaginationRowModel().flatRows.some(r=>r.getCanExpand()),e.getToggleAllRowsExpandedHandler=()=>r=>{r.persist==null||r.persist(),e.toggleAllRowsExpanded()},e.getIsSomeRowsExpanded=()=>{const r=e.getState().expanded;return r===!0||Object.values(r).some(Boolean)},e.getIsAllRowsExpanded=()=>{const r=e.getState().expanded;return typeof r=="boolean"?r===!0:!(!Object.keys(r).length||e.getRowModel().flatRows.some(s=>!s.getIsExpanded()))},e.getExpandedDepth=()=>{let r=0;return(e.getState().expanded===!0?Object.keys(e.getRowModel().rowsById):Object.keys(e.getState().expanded)).forEach(o=>{const l=o.split(".");r=Math.max(r,l.length)}),r},e.getPreExpandedRowModel=()=>e.getSortedRowModel(),e.getExpandedRowModel=()=>(!e._getExpandedRowModel&&e.options.getExpandedRowModel&&(e._getExpandedRowModel=e.options.getExpandedRowModel(e)),e.options.manualExpanding||!e._getExpandedRowModel?e.getPreExpandedRowModel():e._getExpandedRowModel())},createRow:(e,t)=>{e.toggleExpanded=n=>{t.setExpanded(r=>{var s;const o=r===!0?!0:!!(r!=null&&r[e.id]);let l={};if(r===!0?Object.keys(t.getRowModel().rowsById).forEach(u=>{l[u]=!0}):l=r,n=(s=n)!=null?s:!o,!o&&n)return{...l,[e.id]:!0};if(o&&!n){const{[e.id]:u,...d}=l;return d}return r})},e.getIsExpanded=()=>{var n;const r=t.getState().expanded;return!!((n=t.options.getIsRowExpanded==null?void 0:t.options.getIsRowExpanded(e))!=null?n:r===!0||r?.[e.id])},e.getCanExpand=()=>{var n,r,s;return(n=t.options.getRowCanExpand==null?void 0:t.options.getRowCanExpand(e))!=null?n:((r=t.options.enableExpanding)!=null?r:!0)&&!!((s=e.subRows)!=null&&s.length)},e.getIsAllParentsExpanded=()=>{let n=!0,r=e;for(;n&&r.parentId;)r=t.getRow(r.parentId,!0),n=r.getIsExpanded();return n},e.getToggleExpandedHandler=()=>{const n=e.getCanExpand();return()=>{n&&e.toggleExpanded()}}}},Eb=0,kb=10,gy=()=>({pageIndex:Eb,pageSize:kb}),bee={getInitialState:e=>({...e,pagination:{...gy(),...e?.pagination}}),getDefaultOptions:e=>({onPaginationChange:qr("pagination",e)}),createTable:e=>{let t=!1,n=!1;e._autoResetPageIndex=()=>{var r,s;if(!t){e._queue(()=>{t=!0});return}if((r=(s=e.options.autoResetAll)!=null?s:e.options.autoResetPageIndex)!=null?r:!e.options.manualPagination){if(n)return;n=!0,e._queue(()=>{e.resetPageIndex(),n=!1})}},e.setPagination=r=>{const s=o=>ma(r,o);return e.options.onPaginationChange==null?void 0:e.options.onPaginationChange(s)},e.resetPagination=r=>{var s;e.setPagination(r?gy():(s=e.initialState.pagination)!=null?s:gy())},e.setPageIndex=r=>{e.setPagination(s=>{let o=ma(r,s.pageIndex);const l=typeof e.options.pageCount>"u"||e.options.pageCount===-1?Number.MAX_SAFE_INTEGER:e.options.pageCount-1;return o=Math.max(0,Math.min(o,l)),{...s,pageIndex:o}})},e.resetPageIndex=r=>{var s,o;e.setPageIndex(r?Eb:(s=(o=e.initialState)==null||(o=o.pagination)==null?void 0:o.pageIndex)!=null?s:Eb)},e.resetPageSize=r=>{var s,o;e.setPageSize(r?kb:(s=(o=e.initialState)==null||(o=o.pagination)==null?void 0:o.pageSize)!=null?s:kb)},e.setPageSize=r=>{e.setPagination(s=>{const o=Math.max(1,ma(r,s.pageSize)),l=s.pageSize*s.pageIndex,u=Math.floor(l/o);return{...s,pageIndex:u,pageSize:o}})},e.setPageCount=r=>e.setPagination(s=>{var o;let l=ma(r,(o=e.options.pageCount)!=null?o:-1);return typeof l=="number"&&(l=Math.max(-1,l)),{...s,pageCount:l}}),e.getPageOptions=ot(()=>[e.getPageCount()],r=>{let s=[];return r&&r>0&&(s=[...new Array(r)].fill(null).map((o,l)=>l)),s},at(e.options,"debugTable")),e.getCanPreviousPage=()=>e.getState().pagination.pageIndex>0,e.getCanNextPage=()=>{const{pageIndex:r}=e.getState().pagination,s=e.getPageCount();return s===-1?!0:s===0?!1:re.setPageIndex(r=>r-1),e.nextPage=()=>e.setPageIndex(r=>r+1),e.firstPage=()=>e.setPageIndex(0),e.lastPage=()=>e.setPageIndex(e.getPageCount()-1),e.getPrePaginationRowModel=()=>e.getExpandedRowModel(),e.getPaginationRowModel=()=>(!e._getPaginationRowModel&&e.options.getPaginationRowModel&&(e._getPaginationRowModel=e.options.getPaginationRowModel(e)),e.options.manualPagination||!e._getPaginationRowModel?e.getPrePaginationRowModel():e._getPaginationRowModel()),e.getPageCount=()=>{var r;return(r=e.options.pageCount)!=null?r:Math.ceil(e.getRowCount()/e.getState().pagination.pageSize)},e.getRowCount=()=>{var r;return(r=e.options.rowCount)!=null?r:e.getPrePaginationRowModel().rows.length}}},my=()=>({top:[],bottom:[]}),xee={getInitialState:e=>({rowPinning:my(),...e}),getDefaultOptions:e=>({onRowPinningChange:qr("rowPinning",e)}),createRow:(e,t)=>{e.pin=(n,r,s)=>{const o=r?e.getLeafRows().map(d=>{let{id:f}=d;return f}):[],l=s?e.getParentRows().map(d=>{let{id:f}=d;return f}):[],u=new Set([...l,e.id,...o]);t.setRowPinning(d=>{var f,h;if(n==="bottom"){var m,g;return{top:((m=d?.top)!=null?m:[]).filter(w=>!(u!=null&&u.has(w))),bottom:[...((g=d?.bottom)!=null?g:[]).filter(w=>!(u!=null&&u.has(w))),...Array.from(u)]}}if(n==="top"){var x,b;return{top:[...((x=d?.top)!=null?x:[]).filter(w=>!(u!=null&&u.has(w))),...Array.from(u)],bottom:((b=d?.bottom)!=null?b:[]).filter(w=>!(u!=null&&u.has(w)))}}return{top:((f=d?.top)!=null?f:[]).filter(w=>!(u!=null&&u.has(w))),bottom:((h=d?.bottom)!=null?h:[]).filter(w=>!(u!=null&&u.has(w)))}})},e.getCanPin=()=>{var n;const{enableRowPinning:r,enablePinning:s}=t.options;return typeof r=="function"?r(e):(n=r??s)!=null?n:!0},e.getIsPinned=()=>{const n=[e.id],{top:r,bottom:s}=t.getState().rowPinning,o=n.some(u=>r?.includes(u)),l=n.some(u=>s?.includes(u));return o?"top":l?"bottom":!1},e.getPinnedIndex=()=>{var n,r;const s=e.getIsPinned();if(!s)return-1;const o=(n=s==="top"?t.getTopRows():t.getBottomRows())==null?void 0:n.map(l=>{let{id:u}=l;return u});return(r=o?.indexOf(e.id))!=null?r:-1}},createTable:e=>{e.setRowPinning=t=>e.options.onRowPinningChange==null?void 0:e.options.onRowPinningChange(t),e.resetRowPinning=t=>{var n,r;return e.setRowPinning(t?my():(n=(r=e.initialState)==null?void 0:r.rowPinning)!=null?n:my())},e.getIsSomeRowsPinned=t=>{var n;const r=e.getState().rowPinning;if(!t){var s,o;return!!((s=r.top)!=null&&s.length||(o=r.bottom)!=null&&o.length)}return!!((n=r[t])!=null&&n.length)},e._getPinnedRows=(t,n,r)=>{var s;return((s=e.options.keepPinnedRows)==null||s?(n??[]).map(l=>{const u=e.getRow(l,!0);return u.getIsAllParentsExpanded()?u:null}):(n??[]).map(l=>t.find(u=>u.id===l))).filter(Boolean).map(l=>({...l,position:r}))},e.getTopRows=ot(()=>[e.getRowModel().rows,e.getState().rowPinning.top],(t,n)=>e._getPinnedRows(t,n,"top"),at(e.options,"debugRows")),e.getBottomRows=ot(()=>[e.getRowModel().rows,e.getState().rowPinning.bottom],(t,n)=>e._getPinnedRows(t,n,"bottom"),at(e.options,"debugRows")),e.getCenterRows=ot(()=>[e.getRowModel().rows,e.getState().rowPinning.top,e.getState().rowPinning.bottom],(t,n,r)=>{const s=new Set([...n??[],...r??[]]);return t.filter(o=>!s.has(o.id))},at(e.options,"debugRows"))}},wee={getInitialState:e=>({rowSelection:{},...e}),getDefaultOptions:e=>({onRowSelectionChange:qr("rowSelection",e),enableRowSelection:!0,enableMultiRowSelection:!0,enableSubRowSelection:!0}),createTable:e=>{e.setRowSelection=t=>e.options.onRowSelectionChange==null?void 0:e.options.onRowSelectionChange(t),e.resetRowSelection=t=>{var n;return e.setRowSelection(t?{}:(n=e.initialState.rowSelection)!=null?n:{})},e.toggleAllRowsSelected=t=>{e.setRowSelection(n=>{t=typeof t<"u"?t:!e.getIsAllRowsSelected();const r={...n},s=e.getPreGroupedRowModel().flatRows;return t?s.forEach(o=>{o.getCanSelect()&&(r[o.id]=!0)}):s.forEach(o=>{delete r[o.id]}),r})},e.toggleAllPageRowsSelected=t=>e.setRowSelection(n=>{const r=typeof t<"u"?t:!e.getIsAllPageRowsSelected(),s={...n};return e.getRowModel().rows.forEach(o=>{jb(s,o.id,r,!0,e)}),s}),e.getPreSelectedRowModel=()=>e.getCoreRowModel(),e.getSelectedRowModel=ot(()=>[e.getState().rowSelection,e.getCoreRowModel()],(t,n)=>Object.keys(t).length?vy(e,n):{rows:[],flatRows:[],rowsById:{}},at(e.options,"debugTable")),e.getFilteredSelectedRowModel=ot(()=>[e.getState().rowSelection,e.getFilteredRowModel()],(t,n)=>Object.keys(t).length?vy(e,n):{rows:[],flatRows:[],rowsById:{}},at(e.options,"debugTable")),e.getGroupedSelectedRowModel=ot(()=>[e.getState().rowSelection,e.getSortedRowModel()],(t,n)=>Object.keys(t).length?vy(e,n):{rows:[],flatRows:[],rowsById:{}},at(e.options,"debugTable")),e.getIsAllRowsSelected=()=>{const t=e.getFilteredRowModel().flatRows,{rowSelection:n}=e.getState();let r=!!(t.length&&Object.keys(n).length);return r&&t.some(s=>s.getCanSelect()&&!n[s.id])&&(r=!1),r},e.getIsAllPageRowsSelected=()=>{const t=e.getPaginationRowModel().flatRows.filter(s=>s.getCanSelect()),{rowSelection:n}=e.getState();let r=!!t.length;return r&&t.some(s=>!n[s.id])&&(r=!1),r},e.getIsSomeRowsSelected=()=>{var t;const n=Object.keys((t=e.getState().rowSelection)!=null?t:{}).length;return n>0&&n{const t=e.getPaginationRowModel().flatRows;return e.getIsAllPageRowsSelected()?!1:t.filter(n=>n.getCanSelect()).some(n=>n.getIsSelected()||n.getIsSomeSelected())},e.getToggleAllRowsSelectedHandler=()=>t=>{e.toggleAllRowsSelected(t.target.checked)},e.getToggleAllPageRowsSelectedHandler=()=>t=>{e.toggleAllPageRowsSelected(t.target.checked)}},createRow:(e,t)=>{e.toggleSelected=(n,r)=>{const s=e.getIsSelected();t.setRowSelection(o=>{var l;if(n=typeof n<"u"?n:!s,e.getCanSelect()&&s===n)return o;const u={...o};return jb(u,e.id,n,(l=r?.selectChildren)!=null?l:!0,t),u})},e.getIsSelected=()=>{const{rowSelection:n}=t.getState();return iw(e,n)},e.getIsSomeSelected=()=>{const{rowSelection:n}=t.getState();return Tb(e,n)==="some"},e.getIsAllSubRowsSelected=()=>{const{rowSelection:n}=t.getState();return Tb(e,n)==="all"},e.getCanSelect=()=>{var n;return typeof t.options.enableRowSelection=="function"?t.options.enableRowSelection(e):(n=t.options.enableRowSelection)!=null?n:!0},e.getCanSelectSubRows=()=>{var n;return typeof t.options.enableSubRowSelection=="function"?t.options.enableSubRowSelection(e):(n=t.options.enableSubRowSelection)!=null?n:!0},e.getCanMultiSelect=()=>{var n;return typeof t.options.enableMultiRowSelection=="function"?t.options.enableMultiRowSelection(e):(n=t.options.enableMultiRowSelection)!=null?n:!0},e.getToggleSelectedHandler=()=>{const n=e.getCanSelect();return r=>{var s;n&&e.toggleSelected((s=r.target)==null?void 0:s.checked)}}}},jb=(e,t,n,r,s)=>{var o;const l=s.getRow(t,!0);n?(l.getCanMultiSelect()||Object.keys(e).forEach(u=>delete e[u]),l.getCanSelect()&&(e[t]=!0)):delete e[t],r&&(o=l.subRows)!=null&&o.length&&l.getCanSelectSubRows()&&l.subRows.forEach(u=>jb(e,u.id,n,r,s))};function vy(e,t){const n=e.getState().rowSelection,r=[],s={},o=function(l,u){return l.map(d=>{var f;const h=iw(d,n);if(h&&(r.push(d),s[d.id]=d),(f=d.subRows)!=null&&f.length&&(d={...d,subRows:o(d.subRows)}),h)return d}).filter(Boolean)};return{rows:o(t.rows),flatRows:r,rowsById:s}}function iw(e,t){var n;return(n=t[e.id])!=null?n:!1}function Tb(e,t,n){var r;if(!((r=e.subRows)!=null&&r.length))return!1;let s=!0,o=!1;return e.subRows.forEach(l=>{if(!(o&&!s)&&(l.getCanSelect()&&(iw(l,t)?o=!0:s=!1),l.subRows&&l.subRows.length)){const u=Tb(l,t);u==="all"?o=!0:(u==="some"&&(o=!0),s=!1)}}),s?"all":o?"some":!1}const Nb=/([0-9]+)/gm,See=(e,t,n)=>vI(Na(e.getValue(n)).toLowerCase(),Na(t.getValue(n)).toLowerCase()),Cee=(e,t,n)=>vI(Na(e.getValue(n)),Na(t.getValue(n))),Eee=(e,t,n)=>lw(Na(e.getValue(n)).toLowerCase(),Na(t.getValue(n)).toLowerCase()),kee=(e,t,n)=>lw(Na(e.getValue(n)),Na(t.getValue(n))),jee=(e,t,n)=>{const r=e.getValue(n),s=t.getValue(n);return r>s?1:rlw(e.getValue(n),t.getValue(n));function lw(e,t){return e===t?0:e>t?1:-1}function Na(e){return typeof e=="number"?isNaN(e)||e===1/0||e===-1/0?"":String(e):typeof e=="string"?e:""}function vI(e,t){const n=e.split(Nb).filter(Boolean),r=t.split(Nb).filter(Boolean);for(;n.length&&r.length;){const s=n.shift(),o=r.shift(),l=parseInt(s,10),u=parseInt(o,10),d=[l,u].sort();if(isNaN(d[0])){if(s>o)return 1;if(o>s)return-1;continue}if(isNaN(d[1]))return isNaN(l)?-1:1;if(l>u)return 1;if(u>l)return-1}return n.length-r.length}const pu={alphanumeric:See,alphanumericCaseSensitive:Cee,text:Eee,textCaseSensitive:kee,datetime:jee,basic:Tee},Nee={getInitialState:e=>({sorting:[],...e}),getDefaultColumnDef:()=>({sortingFn:"auto",sortUndefined:1}),getDefaultOptions:e=>({onSortingChange:qr("sorting",e),isMultiSortEvent:t=>t.shiftKey}),createColumn:(e,t)=>{e.getAutoSortingFn=()=>{const n=t.getFilteredRowModel().flatRows.slice(10);let r=!1;for(const s of n){const o=s?.getValue(e.id);if(Object.prototype.toString.call(o)==="[object Date]")return pu.datetime;if(typeof o=="string"&&(r=!0,o.split(Nb).length>1))return pu.alphanumeric}return r?pu.text:pu.basic},e.getAutoSortDir=()=>{const n=t.getFilteredRowModel().flatRows[0];return typeof n?.getValue(e.id)=="string"?"asc":"desc"},e.getSortingFn=()=>{var n,r;if(!e)throw new Error;return yg(e.columnDef.sortingFn)?e.columnDef.sortingFn:e.columnDef.sortingFn==="auto"?e.getAutoSortingFn():(n=(r=t.options.sortingFns)==null?void 0:r[e.columnDef.sortingFn])!=null?n:pu[e.columnDef.sortingFn]},e.toggleSorting=(n,r)=>{const s=e.getNextSortingOrder(),o=typeof n<"u"&&n!==null;t.setSorting(l=>{const u=l?.find(x=>x.id===e.id),d=l?.findIndex(x=>x.id===e.id);let f=[],h,m=o?n:s==="desc";if(l!=null&&l.length&&e.getCanMultiSort()&&r?u?h="toggle":h="add":l!=null&&l.length&&d!==l.length-1?h="replace":u?h="toggle":h="replace",h==="toggle"&&(o||s||(h="remove")),h==="add"){var g;f=[...l,{id:e.id,desc:m}],f.splice(0,f.length-((g=t.options.maxMultiSortColCount)!=null?g:Number.MAX_SAFE_INTEGER))}else h==="toggle"?f=l.map(x=>x.id===e.id?{...x,desc:m}:x):h==="remove"?f=l.filter(x=>x.id!==e.id):f=[{id:e.id,desc:m}];return f})},e.getFirstSortDir=()=>{var n,r;return((n=(r=e.columnDef.sortDescFirst)!=null?r:t.options.sortDescFirst)!=null?n:e.getAutoSortDir()==="desc")?"desc":"asc"},e.getNextSortingOrder=n=>{var r,s;const o=e.getFirstSortDir(),l=e.getIsSorted();return l?l!==o&&((r=t.options.enableSortingRemoval)==null||r)&&(!(n&&(s=t.options.enableMultiRemove)!=null)||s)?!1:l==="desc"?"asc":"desc":o},e.getCanSort=()=>{var n,r;return((n=e.columnDef.enableSorting)!=null?n:!0)&&((r=t.options.enableSorting)!=null?r:!0)&&!!e.accessorFn},e.getCanMultiSort=()=>{var n,r;return(n=(r=e.columnDef.enableMultiSort)!=null?r:t.options.enableMultiSort)!=null?n:!!e.accessorFn},e.getIsSorted=()=>{var n;const r=(n=t.getState().sorting)==null?void 0:n.find(s=>s.id===e.id);return r?r.desc?"desc":"asc":!1},e.getSortIndex=()=>{var n,r;return(n=(r=t.getState().sorting)==null?void 0:r.findIndex(s=>s.id===e.id))!=null?n:-1},e.clearSorting=()=>{t.setSorting(n=>n!=null&&n.length?n.filter(r=>r.id!==e.id):[])},e.getToggleSortingHandler=()=>{const n=e.getCanSort();return r=>{n&&(r.persist==null||r.persist(),e.toggleSorting==null||e.toggleSorting(void 0,e.getCanMultiSort()?t.options.isMultiSortEvent==null?void 0:t.options.isMultiSortEvent(r):!1))}}},createTable:e=>{e.setSorting=t=>e.options.onSortingChange==null?void 0:e.options.onSortingChange(t),e.resetSorting=t=>{var n,r;e.setSorting(t?[]:(n=(r=e.initialState)==null?void 0:r.sorting)!=null?n:[])},e.getPreSortedRowModel=()=>e.getGroupedRowModel(),e.getSortedRowModel=()=>(!e._getSortedRowModel&&e.options.getSortedRowModel&&(e._getSortedRowModel=e.options.getSortedRowModel(e)),e.options.manualSorting||!e._getSortedRowModel?e.getPreSortedRowModel():e._getSortedRowModel())}},Mee=[ZX,gee,dee,fee,YX,XX,mee,vee,Nee,cee,yee,bee,xee,wee,pee];function _ee(e){var t,n;const r=[...Mee,...(t=e._features)!=null?t:[]];let s={_features:r};const o=s._features.reduce((g,x)=>Object.assign(g,x.getDefaultOptions==null?void 0:x.getDefaultOptions(s)),{}),l=g=>s.options.mergeOptions?s.options.mergeOptions(o,g):{...o,...g};let d={...{},...(n=e.initialState)!=null?n:{}};s._features.forEach(g=>{var x;d=(x=g.getInitialState==null?void 0:g.getInitialState(d))!=null?x:d});const f=[];let h=!1;const m={_features:r,options:{...o,...e},initialState:d,_queue:g=>{f.push(g),h||(h=!0,Promise.resolve().then(()=>{for(;f.length;)f.shift()();h=!1}).catch(x=>setTimeout(()=>{throw x})))},reset:()=>{s.setState(s.initialState)},setOptions:g=>{const x=ma(g,s.options);s.options=l(x)},getState:()=>s.options.state,setState:g=>{s.options.onStateChange==null||s.options.onStateChange(g)},_getRowId:(g,x,b)=>{var w;return(w=s.options.getRowId==null?void 0:s.options.getRowId(g,x,b))!=null?w:`${b?[b.id,x].join("."):x}`},getCoreRowModel:()=>(s._getCoreRowModel||(s._getCoreRowModel=s.options.getCoreRowModel(s)),s._getCoreRowModel()),getRowModel:()=>s.getPaginationRowModel(),getRow:(g,x)=>{let b=(x?s.getPrePaginationRowModel():s.getRowModel()).rowsById[g];if(!b&&(b=s.getCoreRowModel().rowsById[g],!b))throw new Error;return b},_getDefaultColumnDef:ot(()=>[s.options.defaultColumn],g=>{var x;return g=(x=g)!=null?x:{},{header:b=>{const w=b.header.column.columnDef;return w.accessorKey?w.accessorKey:w.accessorFn?w.id:null},cell:b=>{var w,C;return(w=(C=b.renderValue())==null||C.toString==null?void 0:C.toString())!=null?w:null},...s._features.reduce((b,w)=>Object.assign(b,w.getDefaultColumnDef==null?void 0:w.getDefaultColumnDef()),{}),...g}},at(e,"debugColumns")),_getColumnDefs:()=>s.options.columns,getAllColumns:ot(()=>[s._getColumnDefs()],g=>{const x=function(b,w,C){return C===void 0&&(C=0),b.map(k=>{const j=QX(s,k,C,w),M=k;return j.columns=M.columns?x(M.columns,j,C+1):[],j})};return x(g)},at(e,"debugColumns")),getAllFlatColumns:ot(()=>[s.getAllColumns()],g=>g.flatMap(x=>x.getFlatColumns()),at(e,"debugColumns")),_getAllFlatColumnsById:ot(()=>[s.getAllFlatColumns()],g=>g.reduce((x,b)=>(x[b.id]=b,x),{}),at(e,"debugColumns")),getAllLeafColumns:ot(()=>[s.getAllColumns(),s._getOrderColumnsFn()],(g,x)=>{let b=g.flatMap(w=>w.getLeafColumns());return x(b)},at(e,"debugColumns")),getColumn:g=>s._getAllFlatColumnsById()[g]};Object.assign(s,m);for(let g=0;got(()=>[e.options.data],t=>{const n={rows:[],flatRows:[],rowsById:{}},r=function(s,o,l){o===void 0&&(o=0);const u=[];for(let f=0;fe._autoResetPageIndex()))}function Pee(e,t,n){return n.options.filterFromLeafRows?Oee(e,t,n):Iee(e,t,n)}function Oee(e,t,n){var r;const s=[],o={},l=(r=n.options.maxLeafRowFilterDepth)!=null?r:100,u=function(d,f){f===void 0&&(f=0);const h=[];for(let g=0;got(()=>[e.getPreFilteredRowModel(),e.getState().columnFilters,e.getState().globalFilter],(t,n,r)=>{if(!t.rows.length||!(n!=null&&n.length)&&!r){for(let g=0;g{var x;const b=e.getColumn(g.id);if(!b)return;const w=b.getFilterFn();w&&s.push({id:g.id,filterFn:w,resolvedValue:(x=w.resolveFilterValue==null?void 0:w.resolveFilterValue(g.value))!=null?x:g.value})});const l=(n??[]).map(g=>g.id),u=e.getGlobalFilterFn(),d=e.getAllLeafColumns().filter(g=>g.getCanGlobalFilter());r&&u&&d.length&&(l.push("__global__"),d.forEach(g=>{var x;o.push({id:g.id,filterFn:u,resolvedValue:(x=u.resolveFilterValue==null?void 0:u.resolveFilterValue(r))!=null?x:r})}));let f,h;for(let g=0;g{x.columnFiltersMeta[w]=C})}if(o.length){for(let b=0;b{x.columnFiltersMeta[w]=C})){x.columnFilters.__global__=!0;break}}x.columnFilters.__global__!==!0&&(x.columnFilters.__global__=!1)}}const m=g=>{for(let x=0;xe._autoResetPageIndex()))}function Dee(){return e=>ot(()=>[e.getState().grouping,e.getPreGroupedRowModel()],(t,n)=>{if(!n.rows.length||!t.length)return n.rows.forEach(d=>{d.depth=0,d.parentId=void 0}),n;const r=t.filter(d=>e.getColumn(d)),s=[],o={},l=function(d,f,h){if(f===void 0&&(f=0),f>=r.length)return d.map(b=>(b.depth=f,s.push(b),o[b.id]=b,b.subRows&&(b.subRows=l(b.subRows,f+1,b.id)),b));const m=r[f],g=Fee(d,m);return Array.from(g.entries()).map((b,w)=>{let[C,k]=b,j=`${m}:${C}`;j=h?`${h}>${j}`:j;const M=l(k,f+1,j);M.forEach(N=>{N.parentId=j});const _=f?lI(k,N=>N.subRows):k,R=bg(e,j,_[0].original,w,f,void 0,h);return Object.assign(R,{groupingColumnId:m,groupingValue:C,subRows:M,leafRows:_,getValue:N=>{if(r.includes(N)){if(R._valuesCache.hasOwnProperty(N))return R._valuesCache[N];if(k[0]){var O;R._valuesCache[N]=(O=k[0].getValue(N))!=null?O:void 0}return R._valuesCache[N]}if(R._groupingValuesCache.hasOwnProperty(N))return R._groupingValuesCache[N];const D=e.getColumn(N),z=D?.getAggregationFn();if(z)return R._groupingValuesCache[N]=z(N,_,k),R._groupingValuesCache[N]}}),M.forEach(N=>{s.push(N),o[N.id]=N}),R})},u=l(n.rows,0);return u.forEach(d=>{s.push(d),o[d.id]=d}),{rows:u,flatRows:s,rowsById:o}},at(e.options,"debugTable","getGroupedRowModel",()=>{e._queue(()=>{e._autoResetExpanded(),e._autoResetPageIndex()})}))}function Fee(e,t){const n=new Map;return e.reduce((r,s)=>{const o=`${s.getGroupingValue(t)}`,l=r.get(o);return l?l.push(s):r.set(o,[s]),r},n)}function Lee(){return e=>ot(()=>[e.getState().sorting,e.getPreSortedRowModel()],(t,n)=>{if(!n.rows.length||!(t!=null&&t.length))return n;const r=e.getState().sorting,s=[],o=r.filter(d=>{var f;return(f=e.getColumn(d.id))==null?void 0:f.getCanSort()}),l={};o.forEach(d=>{const f=e.getColumn(d.id);f&&(l[d.id]={sortUndefined:f.columnDef.sortUndefined,invertSorting:f.columnDef.invertSorting,sortingFn:f.getSortingFn()})});const u=d=>{const f=d.map(h=>({...h}));return f.sort((h,m)=>{for(let x=0;x{var m;s.push(h),(m=h.subRows)!=null&&m.length&&(h.subRows=u(h.subRows))}),f};return{rows:u(n.rows),flatRows:s,rowsById:n.rowsById}},at(e.options,"debugTable","getSortedRowModel",()=>e._autoResetPageIndex()))}/** - * react-table - * - * Copyright (c) TanStack - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */function bk(e,t){return e?$ee(e)?y.createElement(e,t):e:null}function $ee(e){return Bee(e)||typeof e=="function"||zee(e)}function Bee(e){return typeof e=="function"&&(()=>{const t=Object.getPrototypeOf(e);return t.prototype&&t.prototype.isReactComponent})()}function zee(e){return typeof e=="object"&&typeof e.$$typeof=="symbol"&&["react.memo","react.forward_ref"].includes(e.$$typeof.description)}function Uee(e){const t={state:{},onStateChange:()=>{},renderFallbackValue:null,...e},[n]=y.useState(()=>({current:_ee(t)})),[r,s]=y.useState(()=>n.current.initialState);return n.current.setOptions(o=>({...o,...e,state:{...r,...e.state},onStateChange:l=>{s(l),e.onStateChange==null||e.onStateChange(l)}})),n.current}const yI=y.forwardRef(({className:e,...t},n)=>i.jsx("div",{className:"relative w-full overflow-auto",children:i.jsx("table",{ref:n,className:Ie("w-full caption-bottom text-sm",e),...t})}));yI.displayName="Table";const bI=y.forwardRef(({className:e,...t},n)=>i.jsx("thead",{ref:n,className:Ie("[&_tr]:border-b",e),...t}));bI.displayName="TableHeader";const xI=y.forwardRef(({className:e,...t},n)=>i.jsx("tbody",{ref:n,className:Ie("[&_tr:last-child]:border-0",e),...t}));xI.displayName="TableBody";const Vee=y.forwardRef(({className:e,...t},n)=>i.jsx("tfoot",{ref:n,className:Ie("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",e),...t}));Vee.displayName="TableFooter";const Eu=y.forwardRef(({className:e,...t},n)=>i.jsx("tr",{ref:n,className:Ie("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",e),...t}));Eu.displayName="TableRow";const wI=y.forwardRef(({className:e,...t},n)=>i.jsx("th",{ref:n,className:Ie("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",e),...t}));wI.displayName="TableHead";const Np=y.forwardRef(({className:e,...t},n)=>i.jsx("td",{ref:n,className:Ie("p-4 align-middle [&:has([role=checkbox])]:pr-0",e),...t}));Np.displayName="TableCell";const Hee=y.forwardRef(({className:e,...t},n)=>i.jsx("caption",{ref:n,className:Ie("mt-4 text-sm text-muted-foreground",e),...t}));Hee.displayName="TableCaption";function $a({columns:e,data:t,isLoading:n,loadingMessage:r,noResultsMessage:s,enableHeaders:o=!0,className:l,highlightedRows:u,...d}){const f=Uee({...d,data:t,columns:e,getCoreRowModel:Ree(),getFilteredRowModel:Aee(),getGroupedRowModel:Dee(),getSortedRowModel:Lee()});return i.jsx("div",{className:Ie("rounded-md border",l),children:i.jsxs(yI,{children:[o&&i.jsx(bI,{children:f.getHeaderGroups().map(h=>i.jsx(Eu,{children:h.headers.map(m=>i.jsx(wI,{children:m.isPlaceholder?null:bk(m.column.columnDef.header,m.getContext())},m.id))},h.id))}),i.jsx(xI,{children:n?i.jsx(Eu,{children:i.jsx(Np,{colSpan:e.length,className:"h-24 text-center text-muted-foreground",children:r??"Carregando..."})}):i.jsx(i.Fragment,{children:f.getRowModel().rows?.length?f.getRowModel().rows.map(h=>i.jsx(Eu,{"data-state":h.getIsSelected()?"selected":u?.includes(h.id)?"highlighted":"",children:h.getVisibleCells().map(m=>i.jsx(Np,{children:bk(m.column.columnDef.cell,m.getContext())},m.id))},h.id)):i.jsx(Eu,{children:i.jsx(Np,{colSpan:e.length,className:"h-24 text-center",children:s??"Nenhum resultado encontrado!"})})})})]})})}const qee=e=>["dify","fetchSessions",JSON.stringify(e)],Kee=async({difyId:e,instanceName:t})=>(await Ee.get(`/dify/fetchSessions/${e}/${t}`)).data,Wee=e=>{const{difyId:t,instanceName:n,...r}=e;return mt({...r,queryKey:qee({difyId:t,instanceName:n}),queryFn:()=>Kee({difyId:t,instanceName:n}),enabled:!!n&&!!t&&(e.enabled??!0),staleTime:1e3*10})};function SI({difyId:e}){const{t}=Ve(),{instance:n}=ct(),{changeStatusDify:r}=vg(),[s,o]=y.useState([]),{data:l,refetch:u}=Wee({difyId:e,instanceName:n?.name}),[d,f]=y.useState(!1),[h,m]=y.useState("");function g(){u()}const x=async(w,C)=>{try{if(!n)return;await r({instanceName:n.name,token:n.token,remoteJid:w,status:C}),me.success(t("dify.toast.success.status")),g()}catch(k){console.error("Error:",k),me.error(`Error : ${k?.response?.data?.response?.message}`)}},b=[{accessorKey:"remoteJid",header:()=>i.jsx("div",{className:"text-center",children:t("dify.sessions.table.remoteJid")}),cell:({row:w})=>i.jsx("div",{children:w.getValue("remoteJid")})},{accessorKey:"pushName",header:()=>i.jsx("div",{className:"text-center",children:t("dify.sessions.table.pushName")}),cell:({row:w})=>i.jsx("div",{children:w.getValue("pushName")})},{accessorKey:"sessionId",header:()=>i.jsx("div",{className:"text-center",children:t("dify.sessions.table.sessionId")}),cell:({row:w})=>i.jsx("div",{children:w.getValue("sessionId")})},{accessorKey:"status",header:()=>i.jsx("div",{className:"text-center",children:t("dify.sessions.table.status")}),cell:({row:w})=>i.jsx("div",{children:w.getValue("status")})},{id:"actions",enableHiding:!1,cell:({row:w})=>{const C=w.original;return i.jsxs(Kr,{children:[i.jsx(Wr,{asChild:!0,children:i.jsxs(se,{variant:"ghost",className:"h-8 w-8 p-0",children:[i.jsx("span",{className:"sr-only",children:t("dify.sessions.table.actions.title")}),i.jsx(Pa,{className:"h-4 w-4"})]})}),i.jsxs(hr,{align:"end",children:[i.jsx(Ao,{children:t("dify.sessions.table.actions.title")}),i.jsx(Xs,{}),C.status!=="opened"&&i.jsxs(wt,{onClick:()=>x(C.remoteJid,"opened"),children:[i.jsx(Fi,{className:"mr-2 h-4 w-4"}),t("dify.sessions.table.actions.open")]}),C.status!=="paused"&&C.status!=="closed"&&i.jsxs(wt,{onClick:()=>x(C.remoteJid,"paused"),children:[i.jsx(Di,{className:"mr-2 h-4 w-4"}),t("dify.sessions.table.actions.pause")]}),C.status!=="closed"&&i.jsxs(wt,{onClick:()=>x(C.remoteJid,"closed"),children:[i.jsx(Oi,{className:"mr-2 h-4 w-4"}),t("dify.sessions.table.actions.close")]}),i.jsxs(wt,{onClick:()=>x(C.remoteJid,"delete"),children:[i.jsx(Ii,{className:"mr-2 h-4 w-4"}),t("dify.sessions.table.actions.delete")]})]})]})}}];return i.jsxs(Pt,{open:d,onOpenChange:f,children:[i.jsx(Bt,{asChild:!0,children:i.jsxs(se,{variant:"secondary",size:"sm",children:[i.jsx(Ai,{size:16,className:"mr-1"}),i.jsx("span",{className:"hidden sm:inline",children:t("dify.sessions.label")})]})}),i.jsxs(Nt,{className:"overflow-y-auto sm:max-w-[950px]",onCloseAutoFocus:g,children:[i.jsx(Mt,{children:i.jsx(zt,{children:t("dify.sessions.label")})}),i.jsxs("div",{children:[i.jsxs("div",{className:"flex items-center justify-between gap-6 p-5",children:[i.jsx(ne,{placeholder:t("dify.sessions.search"),value:h,onChange:w=>m(w.target.value)}),i.jsx(se,{variant:"outline",onClick:g,size:"icon",children:i.jsx(Li,{})})]}),i.jsx($a,{columns:b,data:l??[],onSortingChange:o,state:{sorting:s,globalFilter:h},onGlobalFilterChange:m,enableGlobalFilter:!0,noResultsMessage:t("dify.sessions.table.none")})]})]})]})}const Gee=P.object({enabled:P.boolean(),description:P.string(),botType:P.string(),apiUrl:P.string(),apiKey:P.string(),triggerType:P.string(),triggerOperator:P.string().optional(),triggerValue:P.string().optional(),expire:P.coerce.number().optional(),keywordFinish:P.string().optional(),delayMessage:P.coerce.number().optional(),unknownMessage:P.string().optional(),listeningFromMe:P.boolean().optional(),stopBotFromMe:P.boolean().optional(),keepOpen:P.boolean().optional(),debounceTime:P.coerce.number().optional(),splitMessages:P.boolean().optional(),timePerChar:P.coerce.number().optional()});function CI({initialData:e,onSubmit:t,handleDelete:n,difyId:r,isModal:s=!1,isLoading:o=!1,openDeletionDialog:l=!1,setOpenDeletionDialog:u=()=>{}}){const{t:d}=Ve(),f=on({resolver:an(Gee),defaultValues:e||{enabled:!0,description:"",botType:"chatBot",apiUrl:"",apiKey:"",triggerType:"keyword",triggerOperator:"contains",triggerValue:"",expire:0,keywordFinish:"",delayMessage:0,unknownMessage:"",listeningFromMe:!1,stopBotFromMe:!1,keepOpen:!1,debounceTime:0,splitMessages:!1,timePerChar:0}}),h=f.watch("triggerType");return i.jsx(Gn,{...f,children:i.jsxs("form",{onSubmit:f.handleSubmit(t),className:"w-full space-y-6",children:[i.jsxs("div",{className:"space-y-4",children:[i.jsx(Pe,{name:"enabled",label:d("dify.form.enabled.label"),reverse:!0}),i.jsx(le,{name:"description",label:d("dify.form.description.label"),required:!0,children:i.jsx(ne,{})}),i.jsxs("div",{className:"flex flex-col",children:[i.jsx("h3",{className:"my-4 text-lg font-medium",children:d("dify.form.difySettings.label")}),i.jsx($t,{})]}),i.jsx(Jt,{name:"botType",label:d("dify.form.botType.label"),options:[{label:d("dify.form.botType.chatBot"),value:"chatBot"},{label:d("dify.form.botType.textGenerator"),value:"textGenerator"},{label:d("dify.form.botType.agent"),value:"agent"},{label:d("dify.form.botType.workflow"),value:"workflow"}]}),i.jsx(le,{name:"apiUrl",label:d("dify.form.apiUrl.label"),required:!0,children:i.jsx(ne,{})}),i.jsx(le,{name:"apiKey",label:d("dify.form.apiKey.label"),required:!0,children:i.jsx(ne,{type:"password"})}),i.jsxs("div",{className:"flex flex-col",children:[i.jsx("h3",{className:"my-4 text-lg font-medium",children:d("dify.form.triggerSettings.label")}),i.jsx($t,{})]}),i.jsx(Jt,{name:"triggerType",label:d("dify.form.triggerType.label"),options:[{label:d("dify.form.triggerType.keyword"),value:"keyword"},{label:d("dify.form.triggerType.all"),value:"all"},{label:d("dify.form.triggerType.advanced"),value:"advanced"},{label:d("dify.form.triggerType.none"),value:"none"}]}),h==="keyword"&&i.jsxs(i.Fragment,{children:[i.jsx(Jt,{name:"triggerOperator",label:d("dify.form.triggerOperator.label"),options:[{label:d("dify.form.triggerOperator.contains"),value:"contains"},{label:d("dify.form.triggerOperator.equals"),value:"equals"},{label:d("dify.form.triggerOperator.startsWith"),value:"startsWith"},{label:d("dify.form.triggerOperator.endsWith"),value:"endsWith"},{label:d("dify.form.triggerOperator.regex"),value:"regex"}]}),i.jsx(le,{name:"triggerValue",label:d("dify.form.triggerValue.label"),children:i.jsx(ne,{})})]}),h==="advanced"&&i.jsx(le,{name:"triggerValue",label:d("dify.form.triggerConditions.label"),children:i.jsx(ne,{})}),i.jsxs("div",{className:"flex flex-col",children:[i.jsx("h3",{className:"my-4 text-lg font-medium",children:d("dify.form.generalSettings.label")}),i.jsx($t,{})]}),i.jsx(le,{name:"expire",label:d("dify.form.expire.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(le,{name:"keywordFinish",label:d("dify.form.keywordFinish.label"),children:i.jsx(ne,{})}),i.jsx(le,{name:"delayMessage",label:d("dify.form.delayMessage.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(le,{name:"unknownMessage",label:d("dify.form.unknownMessage.label"),children:i.jsx(ne,{})}),i.jsx(Pe,{name:"listeningFromMe",label:d("dify.form.listeningFromMe.label"),reverse:!0}),i.jsx(Pe,{name:"stopBotFromMe",label:d("dify.form.stopBotFromMe.label"),reverse:!0}),i.jsx(Pe,{name:"keepOpen",label:d("dify.form.keepOpen.label"),reverse:!0}),i.jsx(le,{name:"debounceTime",label:d("dify.form.debounceTime.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(Pe,{name:"splitMessages",label:d("dify.form.splitMessages.label"),reverse:!0}),f.watch("splitMessages")&&i.jsx(le,{name:"timePerChar",label:d("dify.form.timePerChar.label"),children:i.jsx(ne,{type:"number"})})]}),s&&i.jsx(Yt,{children:i.jsx(se,{disabled:o,type:"submit",children:d(o?"dify.button.saving":"dify.button.save")})}),!s&&i.jsxs("div",{children:[i.jsx(SI,{difyId:r}),i.jsxs("div",{className:"mt-5 flex items-center gap-3",children:[i.jsxs(Pt,{open:l,onOpenChange:u,children:[i.jsx(Bt,{asChild:!0,children:i.jsx(se,{variant:"destructive",size:"sm",children:d("dify.button.delete")})}),i.jsx(Nt,{children:i.jsxs(Mt,{children:[i.jsx(zt,{children:d("modal.delete.title")}),i.jsx(eo,{children:d("modal.delete.messageSingle")}),i.jsxs(Yt,{children:[i.jsx(se,{size:"sm",variant:"outline",onClick:()=>u(!1),children:d("button.cancel")}),i.jsx(se,{variant:"destructive",onClick:n,children:d("button.delete")})]})]})})]}),i.jsx(se,{disabled:o,type:"submit",children:d(o?"dify.button.saving":"dify.button.update")})]})]})]})})}function Jee({resetTable:e}){const{t}=Ve(),{instance:n}=ct(),[r,s]=y.useState(!1),[o,l]=y.useState(!1),{createDify:u}=vg(),d=async f=>{try{if(!n||!n.name)throw new Error("instance not found");s(!0);const h={enabled:f.enabled,description:f.description,botType:f.botType,apiUrl:f.apiUrl,apiKey:f.apiKey,triggerType:f.triggerType,triggerOperator:f.triggerOperator||"",triggerValue:f.triggerValue||"",expire:f.expire||0,keywordFinish:f.keywordFinish||"",delayMessage:f.delayMessage||0,unknownMessage:f.unknownMessage||"",listeningFromMe:f.listeningFromMe||!1,stopBotFromMe:f.stopBotFromMe||!1,keepOpen:f.keepOpen||!1,debounceTime:f.debounceTime||0,splitMessages:f.splitMessages||!1,timePerChar:f.timePerChar||0};await u({instanceName:n.name,token:n.token,data:h}),me.success(t("dify.toast.success.create")),l(!1),e()}catch(h){console.error("Error:",h),me.error(`Error: ${h?.response?.data?.response?.message}`)}finally{s(!1)}};return i.jsxs(Pt,{open:o,onOpenChange:l,children:[i.jsx(Bt,{asChild:!0,children:i.jsxs(se,{size:"sm",children:[i.jsx(cs,{size:16,className:"mr-1"}),i.jsx("span",{className:"hidden sm:inline",children:t("dify.button.create")})]})}),i.jsxs(Nt,{className:"overflow-y-auto sm:max-h-[600px] sm:max-w-[740px]",children:[i.jsx(Mt,{children:i.jsx(zt,{children:t("dify.form.title")})}),i.jsx(CI,{onSubmit:d,isModal:!0,isLoading:r})]})]})}const Qee=e=>["dify","getDify",JSON.stringify(e)],Zee=async({difyId:e,instanceName:t})=>(await Ee.get(`/dify/fetch/${e}/${t}`)).data,Yee=e=>{const{difyId:t,instanceName:n,...r}=e;return mt({...r,queryKey:Qee({difyId:t,instanceName:n}),queryFn:()=>Zee({difyId:t,instanceName:n}),enabled:!!n&&!!t&&(e.enabled??!0)})};function Xee({difyId:e,resetTable:t}){const{t:n}=Ve(),{instance:r}=ct(),s=dn(),[o,l]=y.useState(!1),{deleteDify:u,updateDify:d}=vg(),{data:f,isLoading:h}=Yee({difyId:e,instanceName:r?.name}),m=y.useMemo(()=>({enabled:!!f?.enabled,description:f?.description??"",botType:f?.botType??"",apiUrl:f?.apiUrl??"",apiKey:f?.apiKey??"",triggerType:f?.triggerType??"",triggerOperator:f?.triggerOperator??"",triggerValue:f?.triggerValue??"",expire:f?.expire??0,keywordFinish:f?.keywordFinish??"",delayMessage:f?.delayMessage??0,unknownMessage:f?.unknownMessage??"",listeningFromMe:!!f?.listeningFromMe,stopBotFromMe:!!f?.stopBotFromMe,keepOpen:!!f?.keepOpen,debounceTime:f?.debounceTime??0,splitMessages:f?.splitMessages??!1,timePerChar:f?.timePerChar??0}),[f?.apiKey,f?.apiUrl,f?.botType,f?.debounceTime,f?.delayMessage,f?.description,f?.enabled,f?.expire,f?.keepOpen,f?.keywordFinish,f?.listeningFromMe,f?.stopBotFromMe,f?.triggerOperator,f?.triggerType,f?.triggerValue,f?.unknownMessage,f?.splitMessages,f?.timePerChar]),g=async b=>{try{if(r&&r.name&&e){const w={enabled:b.enabled,description:b.description,botType:b.botType,apiUrl:b.apiUrl,apiKey:b.apiKey,triggerType:b.triggerType,triggerOperator:b.triggerOperator||"",triggerValue:b.triggerValue||"",expire:b.expire||0,keywordFinish:b.keywordFinish||"",delayMessage:b.delayMessage||1e3,unknownMessage:b.unknownMessage||"",listeningFromMe:b.listeningFromMe||!1,stopBotFromMe:b.stopBotFromMe||!1,keepOpen:b.keepOpen||!1,debounceTime:b.debounceTime||0,splitMessages:b.splitMessages||!1,timePerChar:b.timePerChar||0};await d({instanceName:r.name,difyId:e,data:w}),me.success(n("dify.toast.success.update")),t(),s(`/manager/instance/${r.id}/dify/${e}`)}else console.error("Token not found")}catch(w){console.error("Error:",w),me.error(`Error: ${w?.response?.data?.response?.message}`)}},x=async()=>{try{r&&r.name&&e?(await u({instanceName:r.name,difyId:e}),me.success(n("dify.toast.success.delete")),l(!1),t(),s(`/manager/instance/${r.id}/dify`)):console.error("instance not found")}catch(b){console.error("Erro ao excluir dify:",b)}};return h?i.jsx(On,{}):i.jsx("div",{className:"m-4",children:i.jsx(CI,{initialData:m,onSubmit:g,difyId:e,handleDelete:x,isModal:!1,isLoading:h,openDeletionDialog:o,setOpenDeletionDialog:l})})}function xk(){const{t:e}=Ve(),t=zo("(min-width: 768px)"),{instance:n}=ct(),{difyId:r}=ls(),{data:s,refetch:o,isLoading:l}=iI({instanceName:n?.name}),u=dn(),d=h=>{n&&u(`/manager/instance/${n.id}/dify/${h}`)},f=()=>{o()};return i.jsxs("main",{className:"pt-5",children:[i.jsxs("div",{className:"mb-1 flex items-center justify-between",children:[i.jsx("h3",{className:"text-lg font-medium",children:e("dify.title")}),i.jsxs("div",{className:"flex items-center justify-end gap-2",children:[i.jsx(SI,{}),i.jsx(WX,{}),i.jsx(Jee,{resetTable:f})]})]}),i.jsx($t,{className:"my-4"}),i.jsxs($o,{direction:t?"horizontal":"vertical",children:[i.jsx(Hn,{defaultSize:35,className:"pr-4",children:i.jsx("div",{className:"flex flex-col gap-3",children:l?i.jsx(On,{}):i.jsx(i.Fragment,{children:s&&s.length>0&&Array.isArray(s)?s.map(h=>i.jsxs(se,{className:"flex h-auto flex-col items-start justify-start",onClick:()=>d(`${h.id}`),variant:r===h.id?"secondary":"outline",children:[i.jsx("h4",{className:"text-base",children:h.description||h.id}),i.jsx("p",{className:"text-sm font-normal text-muted-foreground",children:h.botType})]},h.id)):i.jsx(se,{variant:"link",children:e("dify.table.none")})})})}),r&&i.jsxs(i.Fragment,{children:[i.jsx(Bo,{withHandle:!0,className:"border border-border"}),i.jsx(Hn,{children:i.jsx(Xee,{difyId:r,resetTable:f})})]})]})]})}const EI=y.createContext({instance:null,isLoading:!0,error:null});function ete({children:e}){const[t]=hd(),[n,r]=y.useState(null),[s,o]=y.useState(!0),[l,u]=y.useState(null);return y.useEffect(()=>{(async()=>{const f=t.get("token"),h=t.get("instanceName"),m=t.get("apiUrl");if(!f||!h||!m){u("Token, instanceName e apiUrl são obrigatórios"),o(!1);return}try{const g=m.endsWith("/")?m.slice(0,-1):m;localStorage.setItem(jn.API_URL,g),localStorage.setItem(jn.INSTANCE_TOKEN,f);const{data:x}=await sn.get(`${g}/instance/fetchInstances?instanceName=${h}`,{headers:{apikey:f}});console.log("API Response:",x),x&&Array.isArray(x)&&x.length>0?r(x[0]):u("Instância não encontrada")}catch{u("Erro ao validar token ou buscar instância")}finally{o(!1)}})()},[t]),i.jsx(EI.Provider,{value:{instance:n,isLoading:s,error:l},children:e})}const cw=()=>y.useContext(EI),uw=y.createContext({}),tte=({children:e})=>{const[t,n]=y.useState(null);return i.jsx(uw.Provider,{value:{replyingMessage:t,setReplyingMessage:n},children:e})},nte=e=>{const t=Math.floor(e/60),n=e%60,r=t<10?`${t}`:t,s=n<10?`0${n}`:n;return`${r}:${s}`},wk=200,rte=({imageMessage:e})=>i.jsxs("div",{className:"flex flex-col gap-2",children:[i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx("img",{src:e?.mediaUrl,alt:"Quoted message",width:100,height:100}),i.jsx(cB,{className:"mr-2 h-4 w-4 text-muted-foreground"})]}),i.jsx("span",{className:"inline-block max-w-40 overflow-hidden overflow-ellipsis whitespace-nowrap text-sm text-muted-foreground",children:e.caption})]}),ste=({videoMessage:e})=>i.jsxs("div",{className:"flex flex-col gap-2",children:[i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx("img",{src:e?.mediaUrl,alt:"Quoted message",width:100,height:100}),i.jsx(TB,{className:"mr-2 h-4 w-4 text-muted-foreground"})]}),i.jsx("span",{className:"inline-block max-w-40 overflow-hidden overflow-ellipsis whitespace-nowrap text-sm text-muted-foreground",children:e.caption})]}),ote=({audioMessage:e})=>i.jsxs("div",{className:"flex flex-col gap-2",children:[i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx(hT,{className:"h-6 w-6 text-muted-foreground"}),i.jsx("span",{className:"text-sm text-muted-foreground",children:nte(e.seconds)})]}),i.jsx("span",{className:"inline-block max-w-40 overflow-hidden overflow-ellipsis whitespace-nowrap text-sm text-muted-foreground",children:e.fileName})]}),ate=({stickerMessage:e})=>i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx("img",{src:e.mediaUrl,alt:"Sticker",width:100,height:100}),i.jsx(CB,{className:"h-6 w-6 text-muted-foreground"})]}),ite=({documentMessage:e})=>i.jsx("div",{className:"flex flex-col gap-2",children:i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx(Hb,{className:"h-6 w-6 text-muted-foreground"}),i.jsx("span",{className:"text-sm text-muted-foreground",children:e.fileName})]})}),lte=({documentMessage:e})=>i.jsxs("div",{className:"flex flex-col gap-2",children:[i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx(Hb,{className:"h-6 w-6 text-muted-foreground"}),i.jsx("span",{className:"text-sm text-muted-foreground",children:e.fileName})]}),i.jsx("span",{className:"inline-block max-w-40 overflow-hidden overflow-ellipsis whitespace-nowrap text-sm text-muted-foreground",children:e.caption})]}),cte=({contactMessage:e})=>i.jsx("div",{className:"flex flex-col gap-2",children:i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx(Ap,{className:"h-6 w-6 text-muted-foreground"}),i.jsx("span",{className:"text-sm text-muted-foreground",children:e.displayName})]})}),ute=({locationMessage:e})=>i.jsxs("div",{className:"flex flex-col gap-2",children:[i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx(yB,{className:"h-6 w-6 text-muted-foreground"}),i.jsx("span",{className:"text-sm text-muted-foreground",children:e.name})]}),i.jsx("span",{className:"inline-block max-w-40 text-sm text-muted-foreground",children:e.address})]}),dte=({conversation:e})=>i.jsx("span",{className:"overflow-hidden text-ellipsis whitespace-nowrap text-sm text-muted-foreground",children:e.length>wk?`${e.substring(0,wk)}...`:e}),fte=({chat:e})=>{const{replyingMessage:t,setReplyingMessage:n}=y.useContext(uw),r=()=>{n(null)},s=f=>f?.conversation?f.conversation:f?.viewOnceMessage?.message?.interactiveMessage?.body?.text?f.viewOnceMessage.message.interactiveMessage.body.text:"",o=()=>t?.key.fromMe?"Você":e?.pushName,l=()=>{if(t?.messageType==="imageMessage")return i.jsx(rte,{imageMessage:{caption:t?.message.imageMessage.caption,mediaUrl:t?.message.mediaUrl}});if(t?.messageType==="videoMessage")return i.jsx(ste,{videoMessage:{caption:t?.message.videoMessage.caption,mediaUrl:t?.message.mediaUrl}});if(t?.messageType==="audioMessage")return i.jsx(ote,{audioMessage:t?.message.audioMessage});if(t?.messageType==="stickerMessage")return i.jsx(ate,{stickerMessage:t?.message});if(t?.messageType==="documentMessage")return i.jsx(ite,{documentMessage:{name:t?.message.documentMessage.name,mediaUrl:t?.message.mediaUrl}});if(t?.messageType==="documentWithCaptionMessage")return i.jsx(lte,{documentMessage:{name:t?.message.documentWithCaptionMessage.message.documentMessage.name,caption:t?.message.documentWithCaptionMessage.message.documentMessage.caption,mediaUrl:t?.message.mediaUrl}});if(t?.messageType==="contactMessage")return i.jsx(cte,{contactMessage:t?.message.contactMessage});if(t?.messageType==="locationMessage")return i.jsx(ute,{locationMessage:t?.message.locationMessage});if(t?.messageType==="conversation"||t?.messageType==="interactiveMessage"||t?.messageType==="extendedTextMessage")return i.jsx(dte,{conversation:s(t?.message)})},{inputIconsMainColor:u,inputBackgroundColor:d}=La();return i.jsxs("div",{className:"relative flex items-center overflow-hidden rounded-lg dark:text-white",style:{backgroundColor:d},children:[i.jsx("div",{className:`absolute h-full w-1 rounded-l-lg ${t?.key.fromMe?"bg-blue-700 dark:bg-blue-300":"bg-blue-100"}`}),i.jsxs("div",{className:"flex min-w-0 flex-1 flex-col gap-2 p-2 pl-4",children:[i.jsx("span",{className:`text-sm font-bold ${t?.key.fromMe?"text-blue-700 dark:text-blue-300":"text-blue-600"}`,children:o()}),l()]}),i.jsx(se,{size:"icon",variant:"ghost",className:"ml-auto h-10 w-10 shrink-0 rounded-full",onClick:r,style:{backgroundColor:d,color:u},children:i.jsx(qb,{className:"h-6 w-6"})})]})},yy=[{name:"Smileys",icon:gT,emojis:["😀","😃","😄","😁","😆","😅","😂","🤣","😊","😇"]},{name:"Natureza",icon:HC,emojis:["🌿","🌱","🌳","🌴","🌵","🌷","🌸","🌹","🌺","🌻"]},{name:"Comida",icon:HC,emojis:["🍎","🍐","🍊","🍋","🍌","🍉","🍇","🍓","🍒","🍑"]},{name:"Atividades",icon:Y$,emojis:["⚽️","🏀","🏈","⚾️","🎾","🏐","🏉","🎱","🏓","🏸"]},{name:"Viagem",icon:K$,emojis:["🚗","🚕","🚙","🚌","🚎","🏎","🚓","🚑","🚒","🚐"]},{name:"Objetos",icon:gB,emojis:["💡","🔦","🕯","🧳","⌛️","⏳","🌡","🧪","🧬","🔬"]},{name:"Símbolos",icon:oB,emojis:["❤️","🧡","💛","💚","💙","💜","🖤","🤍","🤎","💔"]}];function pte({handleEmojiClick:e}){const{inputIconsMainColor:t}=La(),n=r=>yy.find(o=>o.name===r)?.emojis||[];return i.jsxs(Kr,{children:[i.jsx(Wr,{asChild:!0,children:i.jsxs(se,{type:"button",variant:"ghost",size:"icon",className:"rounded-full p-2",children:[i.jsx(gT,{className:"h-6 w-6",style:{color:t}}),i.jsx("span",{className:"sr-only",children:"Emojis"})]})}),i.jsx(hr,{className:"bg-background p-2",align:"end",children:i.jsxs(Yx,{defaultValue:"Smileys",className:"w-full",children:[i.jsx(hg,{className:"grid grid-cols-8 gap-2",children:yy.map(r=>i.jsx(Jl,{value:r.name,children:i.jsx(r.icon,{className:"h-5 w-5"})},r.name))}),yy.map(r=>i.jsx(Ql,{value:r.name,children:i.jsx("div",{className:"grid grid-cols-8 gap-2",children:n(r.name).map((s,o)=>i.jsx(se,{variant:"ghost",className:"h-12 p-2 text-2xl",onClick:()=>e(s),children:s},o))})},r.name))]})})]})}const hte=({isSendingMessage:e,isRecording:t,audioBlob:n,elapsedTime:r,startRecording:s,stopRecording:o,clearRecording:l,sendAudioMessage:u,disabled:d})=>{const{inputIconsMainColor:f}=La();return i.jsxs("div",{className:"flex items-center gap-2",children:[t&&i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx(se,{type:"button",size:"icon",variant:"ghost",className:"rounded-full p-2",onClick:o,children:i.jsx(SB,{className:"h-6 w-6 text-[#b03f3f]"})}),i.jsxs("span",{children:[r,"s"]})]}),n&&i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx(se,{type:"button",size:"icon",variant:"ghost",className:"rounded-full p-2",disabled:e,onClick:l,children:i.jsx(kB,{className:"h-6 w-6 text-[#b03f3f]"})}),i.jsx("audio",{controls:!0,src:URL.createObjectURL(n)})]}),i.jsx(se,{type:"button",size:"icon",variant:"ghost",className:"rounded-full p-2",disabled:e||t||d,onClick:n?u:s,children:e?i.jsx(On,{className:"h-6 w-6",style:{color:f}}):n?i.jsx(Th,{className:"h-6 w-6",style:{color:f}}):i.jsx(hT,{className:"h-6 w-6",style:{color:f}})})]})},gte=({isSendingMessage:e,sendMessage:t,disabled:n})=>{const{inputIconsMainColor:r}=La();return i.jsx(se,{type:"button",size:"icon",variant:"ghost",className:"rounded-full p-2",onClick:t,disabled:e||n,children:e?i.jsx(On,{className:"h-6 w-6",style:{color:r}}):i.jsx(Th,{className:"h-6 w-6",style:{color:r}})})},mte=({chat:e})=>{const[t]=hd(),{inputBackgroundColor:n,inputTextForegroundColor:r}=La(),s=t.get("remoteJid"),{instance:o}=cw(),{sendText:l}=KO(),{sendMedia:u}=WO(),{sendAudio:d}=iX(),{replyingMessage:f,setReplyingMessage:h}=y.useContext(uw),m=y.useRef(null),g=y.useRef(null),x=y.useRef(null),[b,w]=y.useState(""),[C,k]=y.useState(!1),[j,M]=y.useState(null),[_,R]=y.useState(!1),[N,O]=y.useState(null),[D,z]=y.useState(0),{t:Q}=Ve();y.useEffect(()=>{h(null),M(null)},[s,h,M]);const pe=te=>{if(w(te.target.value),m.current){m.current.style.height="auto";const de=m.current.scrollHeight,Z=parseInt(getComputedStyle(m.current).lineHeight)*10;m.current.style.height=`${Math.min(de,Z)}px`}},V=te=>{if(w(de=>de+te),m.current){m.current.style.height="auto";const de=m.current.scrollHeight,Z=parseInt(getComputedStyle(m.current).lineHeight)*10;m.current.style.height=`${Math.min(de,Z)}px`}},G=async()=>{try{R(!0);const te=await navigator.mediaDevices.getUserMedia({audio:{channelCount:1,sampleRate:44100,echoCancellation:!0,noiseSuppression:!0}});let de="";const ge=["audio/aac","audio/mp4","audio/mpeg","audio/amr","audio/ogg","audio/opus"];for(const Re of ge)if(MediaRecorder.isTypeSupported(Re)){de=Re;break}if(!de)throw new Error("Nenhum formato aceito pela Meta disponível");const Z=new MediaRecorder(te,{mimeType:de,audioBitsPerSecond:128e3});x.current=Z;const ye=[];Z.ondataavailable=Re=>{Re.data.size>0&&ye.push(Re.data)},Z.onstop=()=>{const Re=new Blob(ye,{type:de}),$e=new File([Re],`audio.${de.split("/")[1]}`,{type:de,lastModified:Date.now()});O($e)},Z.start(),g.current=setInterval(()=>{z(Re=>Re+1)},1e3)}catch(te){console.error("Erro ao iniciar gravação:",te),me.error(Q("chat.toast.recordingError")),R(!1)}},W=()=>{x.current&&(x.current.stop(),g.current&&clearInterval(g.current),R(!1))},ie=()=>{O(null),z(0)},re=te=>{console.error("Error to send message",te),me.error(rT(te)?`${Q("chat.toast.error")}: ${te?.response?.data?.response?.message}`:Q("chat.toast.sendError"))},Y=()=>{k(!1),h(null)},H=async()=>{if(!o?.name||!o?.token||!s)return;const te={instanceName:o.name,token:o.token,data:{number:s,text:b}};await l(te,{onSuccess:()=>{w(""),m.current&&(m.current.style.height="auto")},onError:re,onSettled:Y})},q=async()=>{if(!(!o?.name||!o?.token||!j||!s)){k(!0);try{const te=await new Promise((ge,Z)=>{const ye=new FileReader;ye.readAsDataURL(j),ye.onload=()=>{const $e=ye.result.split(",")[1];ge($e)},ye.onerror=Z}),de={instanceName:o.name,token:o.token,data:{number:s,mediaMessage:{mediatype:j.type.split("/")[0]==="application"?"document":j.type.split("/")[0],mimetype:j.type,caption:b,media:te,fileName:j.name}}};await u(de,{onSuccess:()=>{M(null),w(""),m.current&&(m.current.style.height="auto")},onError:re,onSettled:Y})}catch(te){console.error("Error converting media to base64:",te),re(te),k(!1)}}},he=async()=>{if(!(!o?.name||!o?.token||!N||!s)){k(!0);try{const te=await new Promise((ge,Z)=>{const ye=new FileReader;ye.readAsDataURL(N),ye.onload=()=>{const $e=ye.result.split(",")[1];ge($e)},ye.onerror=Z}),de={instanceName:o.name,token:o.token,data:{number:s,audioMessage:{audio:te}}};await d(de,{onSuccess:()=>{O(null),z(0)},onError:re,onSettled:Y})}catch(te){console.error("Error converting audio to base64:",te),re(te),k(!1)}}},A=async()=>{k(!0),j?await q():await H()},F=()=>!b&&!j?i.jsx(hte,{isSendingMessage:C,isRecording:_,audioBlob:N,elapsedTime:D,startRecording:G,stopRecording:W,clearRecording:ie,sendAudioMessage:he}):i.jsx(gte,{isSendingMessage:C,sendMessage:A}),fe=()=>_||N?F():i.jsxs(i.Fragment,{children:[i.jsx(pte,{handleEmojiClick:V}),i.jsx(JO,{instance:o,setSelectedMedia:M}),i.jsx(bi,{placeholder:Q("chat.message.placeholder"),name:"message",id:"message",rows:1,ref:m,value:b,onChange:pe,onKeyDown:te=>{!te.shiftKey&&te.key==="Enter"&&!C&&(te.preventDefault(),A())},className:"min-h-0 w-full resize-none rounded-lg border-none p-3 focus-visible:outline-none focus-visible:ring-0 focus-visible:ring-transparent focus-visible:ring-offset-0 focus-visible:ring-offset-transparent",style:{backgroundColor:n,color:r}}),F()]});return o?i.jsxs("div",{className:"input-container",children:[j&&i.jsx(QO,{selectedMedia:j,setSelectedMedia:M}),f&&i.jsx(fte,{chat:e}),i.jsx("div",{className:`flex items-end ${(_||N)&&"justify-end"} rounded-3xl px-4 py-1`,style:{backgroundColor:n,color:r},children:fe()})]}):i.jsx("div",{className:"flex h-full items-center justify-center",children:i.jsx("p",{className:"text-muted-foreground",children:Q("chat.noInstance")||"Nenhuma instância selecionada"})})},vte=P.object({remoteJid:P.string().min(1)});function yte({onSuccess:e}){const{t}=Ve(),{primaryColor:n}=La(),r=on({resolver:an(vte),defaultValues:{remoteJid:""}}),s=o=>{e(o)};return i.jsx(Fo,{...r,children:i.jsxs("form",{onSubmit:r.handleSubmit(s),children:[i.jsx(Lo,{control:r.control,name:"remoteJid",render:({field:o})=>i.jsxs(no,{children:[i.jsx(Nr,{children:t("chat.newChat.contact")}),i.jsx(_s,{children:i.jsx(ne,{type:"text",placeholder:t("chat.newChat.placeholder"),...o})})]})}),i.jsx("div",{className:"flex justify-end",children:i.jsx(se,{type:"submit",className:"mt-4",style:{backgroundColor:n},children:t("chat.newChat.submit")})})]})})}function bte({isOpen:e,setIsOpen:t}){const[n]=hd(),{t:r}=Ve(),s=dn(),o=l=>{const u=new URLSearchParams(n);u.set("remoteJid",l.remoteJid),s(`/manager/embed-chat?${u.toString()}`),t(!1)};return i.jsx(Pt,{open:e,onOpenChange:t,children:i.jsxs(Nt,{className:"max-w-2xl",children:[i.jsxs(Mt,{children:[i.jsx(zt,{children:r("chat.newChat.title")}),i.jsx(eo,{children:r("chat.newChat.description")})]}),i.jsx(yte,{onSuccess:o})]})})}const by=e=>e?e.replace("@s.whatsapp.net","").replace("@g.us",""):"";function xte(){const[e]=hd(),{backgroundColor:t,textForegroundColor:n,primaryColor:r}=La(),s=zo("(min-width: 768px)"),{t:o}=Ve(),l=dn(),u=e.get("token"),{remoteJid:d}=ls(),f=d||e.get("remoteJid"),[h,m]=y.useState([]),g=y.useRef(null),x=y.useRef(null),[b,w]=y.useState(null),[C,k]=y.useState(!1),{instance:j}=cw(),M=R=>{const N=new URLSearchParams(e);l(`/manager/embed-chat/${encodeURIComponent(R.remoteJid||R.id)}?${N.toString()}`)};y.useEffect(()=>{if(!j?.name)return;let R=!0;return(async()=>{try{const{data:O}=await Ee.post(`/chat/findChats/${j.name}`,{where:{}},{headers:{apikey:u||j.token}});R&&m(O||[])}catch(O){R&&(console.error("Erro ao buscar chats:",O),me.error("Erro ao buscar chats"))}})(),()=>{R=!1}},[j?.name,u]),y.useEffect(()=>{if(!j)return;const R=dr(jn.API_URL);if(!R){console.error("API URL not found in localStorage");return}const N=localStorage.getItem("accessToken");u&&localStorage.setItem("accessToken",u);const O=sw(R);function D(z,Q){j&&Q.instance===j.name&&m(pe=>{const V=Q?.data?.key?.remoteJid,G=pe.findIndex(re=>re.remoteJid&&re.remoteJid===V||re.id&&re.id===V),W=G!==-1?pe[G]:null,ie={id:V,remoteJid:V,pushName:W?.pushName||Q?.data?.pushName||by(V),profilePicUrl:W?.profilePicUrl||Q?.data?.key?.profilePictureUrl||"https://as2.ftcdn.net/jpg/05/89/93/27/1000_F_589932782_vQAEAZhHnq1QCGu5ikwrYaQD0Mmurm0N.jpg",updatedAt:new Date().toISOString(),labels:W?.labels||[],createdAt:W?.createdAt||new Date().toISOString(),instanceId:j.id};if(G!==-1){const re=[...pe];return re[G]={...W,updatedAt:ie.updatedAt},re}else return[...pe,ie]})}return O.on("messages.upsert",z=>{D("messages.upsert",z)}),O.on("send.message",z=>{D("send.message",z)}),O.on("messages.update",z=>{}),O.connect(),()=>{O.off("messages.upsert"),O.off("send.message"),O.off("messages.update"),ow(O),u?localStorage.setItem("accessToken",N||""):localStorage.removeItem("accessToken")}},[j,f,u]),y.useEffect(()=>{if(f){const R=h.find(N=>N.id===f);w(R||null)}},[f,h]);const _={backgroundColor:t,color:n};return i.jsx("div",{className:"relative h-full",style:_,children:i.jsxs($o,{direction:s?"horizontal":"vertical",children:[i.jsx(Hn,{defaultSize:30,minSize:20,maxSize:60,children:i.jsxs("div",{className:"hidden flex-col gap-2 text-foreground md:flex",style:_,children:[i.jsx("div",{className:"sticky top-0 p-2",children:i.jsxs(se,{variant:"ghost",className:"w-full justify-start gap-2 px-2 text-left",onClick:()=>k(!0),style:{backgroundColor:r,color:n},children:[i.jsx("div",{className:"flex h-7 w-7 items-center justify-center rounded-full",children:i.jsx(Bl,{className:"h-4 w-4"})}),i.jsx("div",{className:"grow overflow-hidden text-ellipsis whitespace-nowrap text-sm",children:o("chat.title")}),i.jsx(cs,{className:"h-4 w-4"})]})}),i.jsxs(Yx,{defaultValue:"contacts",children:[i.jsxs(hg,{className:"tabs-chat",children:[i.jsx(Jl,{value:"contacts",className:"data-[state=active]:bg-primary data-[state=active]:text-primary-foreground",style:{"--primary":r||"#e2e8f0","--primary-foreground":n||"#000000"},children:o("chat.contacts")}),i.jsx(Jl,{value:"groups",className:"data-[state=active]:bg-primary data-[state=active]:text-primary-foreground",style:{"--primary":r||"#e2e8f0","--primary-foreground":n||"#000000"},children:o("chat.groups")})]}),i.jsx(Ql,{value:"contacts",children:i.jsx("div",{className:"contacts-container",children:i.jsxs("div",{className:"grid gap-1 p-2 text-foreground",children:[i.jsx("div",{className:"px-2 text-xs font-medium text-muted-foreground",children:o("chat.contacts")}),h?.sort((R,N)=>new Date(N.lastMessage.messageTimestamp).getTime()-new Date(R.lastMessage.messageTimestamp).getTime()).map(R=>R?.id&&!R.id.includes("@g.us")&&i.jsxs("div",{onClick:()=>M(R),className:"chat-item flex cursor-pointer items-center overflow-hidden rounded-md p-2 text-sm transition-colors",style:{backgroundColor:f===R.id?r:""},children:[i.jsx("span",{className:"chat-avatar mr-2",children:i.jsx("img",{src:R.profilePicUrl||"https://as2.ftcdn.net/jpg/05/89/93/27/1000_F_589932782_vQAEAZhHnq1QCGu5ikwrYaQD0Mmurm0N.jpg",alt:"Avatar",className:"h-12 w-12 rounded-full"})}),i.jsxs("div",{className:"min-w-0 flex-1",children:[i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsx("span",{className:"chat-title font-medium",style:{color:n},children:R.pushName||by(R.id)}),i.jsx("span",{className:"text-xs",style:{color:n}})]}),i.jsxs("div",{className:"flex items-center gap-1",children:[i.jsxs("span",{className:"text-xs font-bold",style:{color:n},children:[o("chat.recent"),":"," "]}),i.jsx("span",{className:"block truncate text-xs",style:{color:n}})]})]})]},R.id))]})})}),i.jsx(Ql,{value:"groups",children:i.jsx("div",{className:"contacts-container",children:i.jsxs("div",{className:"grid gap-1 p-2 text-foreground",children:[i.jsx("div",{className:"px-2 text-xs font-medium text-muted-foreground",children:o("chat.groups")}),h?.sort((R,N)=>new Date(N.lastMessage.messageTimestamp).getTime()-new Date(R.lastMessage.messageTimestamp).getTime()).map(R=>R?.id&&R.id.includes("@g.us")&&i.jsxs("div",{onClick:()=>M(R),className:"chat-item flex cursor-pointer items-center overflow-hidden rounded-md p-2 text-sm transition-colors",style:{backgroundColor:f===R.id?r:""},children:[i.jsx("span",{className:"chat-avatar mr-2",children:i.jsx("img",{src:R.profilePicUrl||"https://as2.ftcdn.net/jpg/05/89/93/27/1000_F_589932782_vQAEAZhHnq1QCGu5ikwrYaQD0Mmurm0N.jpg",alt:"Avatar",className:"h-12 w-12 rounded-full"})}),i.jsxs("div",{className:"min-w-0 flex-1",children:[i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsx("span",{className:"chat-title font-medium",children:R.pushName}),i.jsx("span",{className:"text-xs text-gray-500 dark:text-gray-400"})]}),i.jsxs("div",{className:"flex items-center gap-1",children:[i.jsxs("span",{className:"text-xs font-bold text-gray-500 dark:text-gray-400",children:[o("chat.recent")," "]}),i.jsx("span",{className:"block truncate text-xs text-gray-500"})]})]})]},R.id))]})})})]})]})}),i.jsx(Bo,{withHandle:!0}),i.jsxs(Hn,{style:_,children:[f&&i.jsx(tte,{children:i.jsxs("div",{className:"flex h-full flex-col justify-between",style:_,children:[i.jsx("div",{className:"flex items-center gap-3 p-3",children:i.jsxs("div",{className:"flex flex-1 items-center gap-3",children:[i.jsx("img",{src:b?.profilePicUrl||"https://as2.ftcdn.net/jpg/05/89/93/27/1000_F_589932782_vQAEAZhHnq1QCGu5ikwrYaQD0Mmurm0N.jpg",alt:"Avatar",className:"h-10 w-10 rounded-full"}),i.jsx("div",{className:"flex flex-col",children:i.jsx("span",{className:"font-medium",children:b?.pushName||by(f)})})]})}),i.jsx(ZO,{textareaRef:g,handleTextareaChange:()=>{},textareaHeight:"auto",lastMessageRef:x,scrollToBottom:()=>{x.current&&x.current.scrollIntoView({behavior:"smooth"})}}),i.jsx(mte,{chat:b})]})}),i.jsx(bte,{isOpen:C,setIsOpen:k})]})]})})}function wte(){const{instance:e,isLoading:t,error:n}=cw();return t?i.jsx("div",{className:"flex h-screen items-center justify-center",children:i.jsx(On,{})}):n?i.jsx("div",{className:"flex h-screen items-center justify-center",children:i.jsx("div",{className:"rounded-md bg-red-50 p-4 dark:bg-red-900",children:i.jsx("span",{className:"text-red-800 dark:text-red-200",children:n})})}):e?i.jsx("div",{className:"h-screen",children:i.jsx(xte,{})}):null}function Sk(){return i.jsx(Yk,{client:_j,children:i.jsx(VM,{children:i.jsx(ete,{children:i.jsx(lX,{children:i.jsx(wte,{})})})})})}const Ste=e=>["evoai","fetchEvoai",JSON.stringify(e)],Cte=async({instanceName:e,token:t})=>(await Ee.get(`/evoai/find/${e}`,{headers:{apikey:t}})).data,kI=e=>{const{instanceName:t,token:n,...r}=e;return mt({...r,queryKey:Ste({instanceName:t,token:n}),queryFn:()=>Cte({instanceName:t,token:n}),enabled:!!t&&(e.enabled??!0)})},Ete=async({instanceName:e,token:t,data:n})=>(await Ee.post(`/evoai/create/${e}`,n,{headers:{apikey:t}})).data,kte=async({instanceName:e,evoaiId:t,data:n})=>(await Ee.put(`/evoai/update/${t}/${e}`,n)).data,jte=async({instanceName:e,evoaiId:t})=>(await Ee.delete(`/evoai/delete/${t}/${e}`)).data,Tte=async({instanceName:e,token:t,data:n})=>(await Ee.post(`/evoai/settings/${e}`,n,{headers:{apikey:t}})).data,Nte=async({instanceName:e,token:t,remoteJid:n,status:r})=>(await Ee.post(`/evoai/changeStatus/${e}`,{remoteJid:n,status:r},{headers:{apikey:t}})).data;function xg(){const e=nt(Tte,{invalidateKeys:[["evoai","fetchDefaultSettings"]]}),t=nt(Nte,{invalidateKeys:[["evoai","getEvoai"],["evoai","fetchSessions"]]}),n=nt(jte,{invalidateKeys:[["evoai","getEvoai"],["evoai","fetchEvoai"],["evoai","fetchSessions"]]}),r=nt(kte,{invalidateKeys:[["evoai","getEvoai"],["evoai","fetchEvoai"],["evoai","fetchSessions"]]}),s=nt(Ete,{invalidateKeys:[["evoai","fetchEvoai"]]});return{setDefaultSettingsEvoai:e,changeStatusEvoai:t,deleteEvoai:n,updateEvoai:r,createEvoai:s}}const Mte=e=>["evoai","fetchDefaultSettings",JSON.stringify(e)],_te=async({instanceName:e,token:t})=>(await Ee.get(`/evoai/fetchSettings/${e}`,{headers:{apikey:t}})).data,Rte=e=>{const{instanceName:t,token:n,...r}=e;return mt({...r,queryKey:Mte({instanceName:t,token:n}),queryFn:()=>_te({instanceName:t,token:n}),enabled:!!t})},Pte=P.object({expire:P.string(),keywordFinish:P.string(),delayMessage:P.string(),unknownMessage:P.string(),listeningFromMe:P.boolean(),stopBotFromMe:P.boolean(),keepOpen:P.boolean(),debounceTime:P.string(),ignoreJids:P.array(P.string()).default([]),evoaiIdFallback:P.union([P.null(),P.string()]).optional(),splitMessages:P.boolean(),timePerChar:P.string()});function Ote(){const{t:e}=Ve(),{instance:t}=ct(),{setDefaultSettingsEvoai:n}=xg(),[r,s]=y.useState(!1),{data:o,refetch:l}=kI({instanceName:t?.name,token:t?.token,enabled:r}),{data:u,refetch:d}=Rte({instanceName:t?.name,token:t?.token}),f=on({resolver:an(Pte),defaultValues:{expire:"0",keywordFinish:e("evoai.form.examples.keywordFinish"),delayMessage:"1000",unknownMessage:e("evoai.form.examples.unknownMessage"),listeningFromMe:!1,stopBotFromMe:!1,keepOpen:!1,debounceTime:"0",ignoreJids:[],evoaiIdFallback:void 0,splitMessages:!1,timePerChar:"0"}});y.useEffect(()=>{u&&f.reset({expire:u?.expire?u.expire.toString():"0",keywordFinish:u.keywordFinish,delayMessage:u.delayMessage?u.delayMessage.toString():"0",unknownMessage:u.unknownMessage,listeningFromMe:u.listeningFromMe,stopBotFromMe:u.stopBotFromMe,keepOpen:u.keepOpen,debounceTime:u.debounceTime?u.debounceTime.toString():"0",ignoreJids:u.ignoreJids,evoaiIdFallback:u.evoaiIdFallback,splitMessages:u.splitMessages,timePerChar:u.timePerChar?u.timePerChar.toString():"0"})},[u]);const h=async g=>{try{if(!t||!t.name)throw new Error("instance not found.");const x={expire:parseInt(g.expire),keywordFinish:g.keywordFinish,delayMessage:parseInt(g.delayMessage),unknownMessage:g.unknownMessage,listeningFromMe:g.listeningFromMe,stopBotFromMe:g.stopBotFromMe,keepOpen:g.keepOpen,debounceTime:parseInt(g.debounceTime),evoaiIdFallback:g.evoaiIdFallback||void 0,ignoreJids:g.ignoreJids,splitMessages:g.splitMessages,timePerChar:parseInt(g.timePerChar)};await n({instanceName:t.name,token:t.token,data:x}),me.success(e("evoai.toast.defaultSettings.success"))}catch(x){console.error("Error:",x),me.error(`Error: ${x?.response?.data?.response?.message}`)}};function m(){d(),l()}return i.jsxs(Pt,{open:r,onOpenChange:s,children:[i.jsx(Bt,{asChild:!0,children:i.jsxs(se,{variant:"secondary",size:"sm",children:[i.jsx(Oo,{size:16,className:"mr-1"}),i.jsx("span",{className:"hidden sm:inline",children:e("evoai.defaultSettings")})]})}),i.jsxs(Nt,{className:"overflow-y-auto sm:max-h-[600px] sm:max-w-[740px]",onCloseAutoFocus:m,children:[i.jsx(Mt,{children:i.jsx(zt,{children:e("evoai.defaultSettings")})}),i.jsx(Gn,{...f,children:i.jsxs("form",{className:"w-full space-y-6",onSubmit:f.handleSubmit(h),children:[i.jsx("div",{children:i.jsxs("div",{className:"space-y-4",children:[i.jsx(Jt,{name:"evoaiIdFallback",label:e("evoai.form.evoaiIdFallback.label"),options:o?.filter(g=>!!g.id).map(g=>({label:g.description,value:g.id}))??[]}),i.jsx(le,{name:"expire",label:e("evoai.form.expire.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(le,{name:"keywordFinish",label:e("evoai.form.keywordFinish.label"),children:i.jsx(ne,{})}),i.jsx(le,{name:"delayMessage",label:e("evoai.form.delayMessage.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(le,{name:"unknownMessage",label:e("evoai.form.unknownMessage.label"),children:i.jsx(ne,{})}),i.jsx(Pe,{name:"listeningFromMe",label:e("evoai.form.listeningFromMe.label"),reverse:!0}),i.jsx(Pe,{name:"stopBotFromMe",label:e("evoai.form.stopBotFromMe.label"),reverse:!0}),i.jsx(Pe,{name:"keepOpen",label:e("evoai.form.keepOpen.label"),reverse:!0}),i.jsx(le,{name:"debounceTime",label:e("evoai.form.debounceTime.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(Pe,{name:"splitMessages",label:e("evoai.form.splitMessages.label"),reverse:!0}),i.jsx(le,{name:"timePerChar",label:e("evoai.form.timePerChar.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(Da,{name:"ignoreJids",label:e("evoai.form.ignoreJids.label"),placeholder:e("evoai.form.ignoreJids.placeholder")})]})}),i.jsx(Yt,{children:i.jsx(se,{type:"submit",children:e("evoai.button.save")})})]})})]})]})}const Ite=e=>["evoai","fetchSessions",JSON.stringify(e)],Ate=async({evoaiId:e,instanceName:t})=>(await Ee.get(`/evoai/fetchSessions/${e}/${t}`)).data,Dte=e=>{const{evoaiId:t,instanceName:n,...r}=e;return mt({...r,queryKey:Ite({evoaiId:t,instanceName:n}),queryFn:()=>Ate({evoaiId:t,instanceName:n}),enabled:!!n&&!!t&&(e.enabled??!0),staleTime:1e3*10})};function jI({evoaiId:e}){const{t}=Ve(),{instance:n}=ct(),{changeStatusEvoai:r}=xg(),[s,o]=y.useState([]),{data:l,refetch:u}=Dte({evoaiId:e,instanceName:n?.name}),[d,f]=y.useState(!1),[h,m]=y.useState("");function g(){u()}const x=async(w,C)=>{try{if(!n)return;await r({instanceName:n.name,token:n.token,remoteJid:w,status:C}),me.success(t("evoai.toast.success.status")),g()}catch(k){console.error("Error:",k),me.error(`Error : ${k?.response?.data?.response?.message}`)}},b=[{accessorKey:"remoteJid",header:()=>i.jsx("div",{className:"text-center",children:t("evoai.sessions.table.remoteJid")}),cell:({row:w})=>i.jsx("div",{children:w.getValue("remoteJid")})},{accessorKey:"pushName",header:()=>i.jsx("div",{className:"text-center",children:t("evoai.sessions.table.pushName")}),cell:({row:w})=>i.jsx("div",{children:w.getValue("pushName")})},{accessorKey:"sessionId",header:()=>i.jsx("div",{className:"text-center",children:t("evoai.sessions.table.sessionId")}),cell:({row:w})=>i.jsx("div",{children:w.getValue("sessionId")})},{accessorKey:"status",header:()=>i.jsx("div",{className:"text-center",children:t("evoai.sessions.table.status")}),cell:({row:w})=>i.jsx("div",{children:w.getValue("status")})},{id:"actions",enableHiding:!1,cell:({row:w})=>{const C=w.original;return i.jsxs(Kr,{children:[i.jsx(Wr,{asChild:!0,children:i.jsxs(se,{variant:"ghost",className:"h-8 w-8 p-0",children:[i.jsx("span",{className:"sr-only",children:t("evoai.sessions.table.actions.title")}),i.jsx(Pa,{className:"h-4 w-4"})]})}),i.jsxs(hr,{align:"end",children:[i.jsx(Ao,{children:t("evoai.sessions.table.actions.title")}),i.jsx(Xs,{}),C.status!=="opened"&&i.jsxs(wt,{onClick:()=>x(C.remoteJid,"opened"),children:[i.jsx(Fi,{className:"mr-2 h-4 w-4"}),t("evoai.sessions.table.actions.open")]}),C.status!=="paused"&&C.status!=="closed"&&i.jsxs(wt,{onClick:()=>x(C.remoteJid,"paused"),children:[i.jsx(Di,{className:"mr-2 h-4 w-4"}),t("evoai.sessions.table.actions.pause")]}),C.status!=="closed"&&i.jsxs(wt,{onClick:()=>x(C.remoteJid,"closed"),children:[i.jsx(Oi,{className:"mr-2 h-4 w-4"}),t("evoai.sessions.table.actions.close")]}),i.jsxs(wt,{onClick:()=>x(C.remoteJid,"delete"),children:[i.jsx(Ii,{className:"mr-2 h-4 w-4"}),t("evoai.sessions.table.actions.delete")]})]})]})}}];return i.jsxs(Pt,{open:d,onOpenChange:f,children:[i.jsx(Bt,{asChild:!0,children:i.jsxs(se,{variant:"secondary",size:"sm",children:[i.jsx(Ai,{size:16,className:"mr-1"}),i.jsx("span",{className:"hidden sm:inline",children:t("evoai.sessions.label")})]})}),i.jsxs(Nt,{className:"overflow-y-auto sm:max-w-[950px]",onCloseAutoFocus:g,children:[i.jsx(Mt,{children:i.jsx(zt,{children:t("evoai.sessions.label")})}),i.jsxs("div",{children:[i.jsxs("div",{className:"flex items-center justify-between gap-6 p-5",children:[i.jsx(ne,{placeholder:t("evoai.sessions.search"),value:h,onChange:w=>m(w.target.value)}),i.jsx(se,{variant:"outline",onClick:g,size:"icon",children:i.jsx(Li,{})})]}),i.jsx($a,{columns:b,data:l??[],onSortingChange:o,state:{sorting:s,globalFilter:h},onGlobalFilterChange:m,enableGlobalFilter:!0,noResultsMessage:t("evoai.sessions.table.none")})]})]})]})}const Fte=P.object({enabled:P.boolean(),description:P.string(),agentUrl:P.string(),apiKey:P.string(),triggerType:P.string(),triggerOperator:P.string().optional(),triggerValue:P.string().optional(),expire:P.coerce.number().optional(),keywordFinish:P.string().optional(),delayMessage:P.coerce.number().optional(),unknownMessage:P.string().optional(),listeningFromMe:P.boolean().optional(),stopBotFromMe:P.boolean().optional(),keepOpen:P.boolean().optional(),debounceTime:P.coerce.number().optional(),splitMessages:P.boolean().optional(),timePerChar:P.coerce.number().optional()});function TI({initialData:e,onSubmit:t,handleDelete:n,evoaiId:r,isModal:s=!1,isLoading:o=!1,openDeletionDialog:l=!1,setOpenDeletionDialog:u=()=>{}}){const{t:d}=Ve(),f=on({resolver:an(Fte),defaultValues:e||{enabled:!0,description:"",agentUrl:"",apiKey:"",triggerType:"keyword",triggerOperator:"contains",triggerValue:"",expire:0,keywordFinish:"",delayMessage:0,unknownMessage:"",listeningFromMe:!1,stopBotFromMe:!1,keepOpen:!1,debounceTime:0,splitMessages:!1,timePerChar:0}}),h=f.watch("triggerType");return i.jsx(Gn,{...f,children:i.jsxs("form",{onSubmit:f.handleSubmit(t),className:"w-full space-y-6",children:[i.jsxs("div",{className:"space-y-4",children:[i.jsx(Pe,{name:"enabled",label:d("evoai.form.enabled.label"),reverse:!0}),i.jsx(le,{name:"description",label:d("evoai.form.description.label"),children:i.jsx(ne,{})}),i.jsxs("div",{className:"flex flex-col",children:[i.jsx("h3",{className:"my-4 text-lg font-medium",children:d("evoai.form.evoaiSettings.label")}),i.jsx($t,{})]}),i.jsx(le,{name:"agentUrl",label:d("evoai.form.agentUrl.label"),required:!0,children:i.jsx(ne,{})}),i.jsx(le,{name:"apiKey",label:d("evoai.form.apiKey.label"),className:"flex-1",children:i.jsx(ne,{type:"password"})}),i.jsxs("div",{className:"flex flex-col",children:[i.jsx("h3",{className:"my-4 text-lg font-medium",children:d("evoai.form.triggerSettings.label")}),i.jsx($t,{})]}),i.jsx(Jt,{name:"triggerType",label:d("evoai.form.triggerType.label"),options:[{label:d("evoai.form.triggerType.keyword"),value:"keyword"},{label:d("evoai.form.triggerType.all"),value:"all"},{label:d("evoai.form.triggerType.advanced"),value:"advanced"},{label:d("evoai.form.triggerType.none"),value:"none"}]}),h==="keyword"&&i.jsxs(i.Fragment,{children:[i.jsx(Jt,{name:"triggerOperator",label:d("evoai.form.triggerOperator.label"),options:[{label:d("evoai.form.triggerOperator.contains"),value:"contains"},{label:d("evoai.form.triggerOperator.equals"),value:"equals"},{label:d("evoai.form.triggerOperator.startsWith"),value:"startsWith"},{label:d("evoai.form.triggerOperator.endsWith"),value:"endsWith"},{label:d("evoai.form.triggerOperator.regex"),value:"regex"}]}),i.jsx(le,{name:"triggerValue",label:d("evoai.form.triggerValue.label"),children:i.jsx(ne,{})})]}),h==="advanced"&&i.jsx(le,{name:"triggerValue",label:d("evoai.form.triggerConditions.label"),children:i.jsx(ne,{})}),i.jsxs("div",{className:"flex flex-col",children:[i.jsx("h3",{className:"my-4 text-lg font-medium",children:d("evoai.form.generalSettings.label")}),i.jsx($t,{})]}),i.jsx(le,{name:"expire",label:d("evoai.form.expire.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(le,{name:"keywordFinish",label:d("evoai.form.keywordFinish.label"),children:i.jsx(ne,{})}),i.jsx(le,{name:"delayMessage",label:d("evoai.form.delayMessage.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(le,{name:"unknownMessage",label:d("evoai.form.unknownMessage.label"),children:i.jsx(ne,{})}),i.jsx(Pe,{name:"listeningFromMe",label:d("evoai.form.listeningFromMe.label"),reverse:!0}),i.jsx(Pe,{name:"stopBotFromMe",label:d("evoai.form.stopBotFromMe.label"),reverse:!0}),i.jsx(Pe,{name:"keepOpen",label:d("evoai.form.keepOpen.label"),reverse:!0}),i.jsx(le,{name:"debounceTime",label:d("evoai.form.debounceTime.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(Pe,{name:"splitMessages",label:d("evoai.form.splitMessages.label"),reverse:!0}),f.watch("splitMessages")&&i.jsx(le,{name:"timePerChar",label:d("evoai.form.timePerChar.label"),children:i.jsx(ne,{type:"number"})})]}),s&&i.jsx(Yt,{children:i.jsx(se,{disabled:o,type:"submit",children:d(o?"evoai.button.saving":"evoai.button.save")})}),!s&&i.jsxs("div",{children:[i.jsx(jI,{evoaiId:r}),i.jsxs("div",{className:"mt-5 flex items-center gap-3",children:[i.jsxs(Pt,{open:l,onOpenChange:u,children:[i.jsx(Bt,{asChild:!0,children:i.jsx(se,{variant:"destructive",size:"sm",children:d("evoai.button.delete")})}),i.jsx(Nt,{children:i.jsxs(Mt,{children:[i.jsx(zt,{children:d("modal.delete.title")}),i.jsx(eo,{children:d("modal.delete.messageSingle")}),i.jsxs(Yt,{children:[i.jsx(se,{size:"sm",variant:"outline",onClick:()=>u(!1),children:d("button.cancel")}),i.jsx(se,{variant:"destructive",onClick:n,children:d("button.delete")})]})]})})]}),i.jsx(se,{disabled:o,type:"submit",children:d(o?"evoai.button.saving":"evoai.button.update")})]})]})]})})}function Lte({resetTable:e}){const{t}=Ve(),{instance:n}=ct(),[r,s]=y.useState(!1),[o,l]=y.useState(!1),{createEvoai:u}=xg(),d=async f=>{try{if(!n||!n.name)throw new Error("instance not found");s(!0);const h={enabled:f.enabled,description:f.description,agentUrl:f.agentUrl,apiKey:f.apiKey,triggerType:f.triggerType,triggerOperator:f.triggerOperator||"",triggerValue:f.triggerValue||"",expire:f.expire||0,keywordFinish:f.keywordFinish||"",delayMessage:f.delayMessage||0,unknownMessage:f.unknownMessage||"",listeningFromMe:f.listeningFromMe||!1,stopBotFromMe:f.stopBotFromMe||!1,keepOpen:f.keepOpen||!1,debounceTime:f.debounceTime||0,splitMessages:f.splitMessages||!1,timePerChar:f.timePerChar||0};await u({instanceName:n.name,token:n.token,data:h}),me.success(t("evoai.toast.success.create")),l(!1),e()}catch(h){console.error("Error:",h),me.error(`Error: ${h?.response?.data?.response?.message}`)}finally{s(!1)}};return i.jsxs(Pt,{open:o,onOpenChange:l,children:[i.jsx(Bt,{asChild:!0,children:i.jsxs(se,{size:"sm",children:[i.jsx(cs,{size:16,className:"mr-1"}),i.jsx("span",{className:"hidden sm:inline",children:t("evoai.button.create")})]})}),i.jsxs(Nt,{className:"overflow-y-auto sm:max-h-[600px] sm:max-w-[740px]",children:[i.jsx(Mt,{children:i.jsx(zt,{children:t("evoai.form.title")})}),i.jsx(TI,{onSubmit:d,isModal:!0,isLoading:r})]})]})}const $te=e=>["evoai","getEvoai",JSON.stringify(e)],Bte=async({evoaiId:e,instanceName:t})=>(await Ee.get(`/evoai/fetch/${e}/${t}`)).data,zte=e=>{const{evoaiId:t,instanceName:n,...r}=e;return mt({...r,queryKey:$te({evoaiId:t,instanceName:n}),queryFn:()=>Bte({evoaiId:t,instanceName:n}),enabled:!!n&&!!t&&(e.enabled??!0)})};function Ute({evoaiId:e,resetTable:t}){const{t:n}=Ve(),{instance:r}=ct(),s=dn(),[o,l]=y.useState(!1),{deleteEvoai:u,updateEvoai:d}=xg(),{data:f,isLoading:h}=zte({evoaiId:e,instanceName:r?.name}),m=y.useMemo(()=>({enabled:!!f?.enabled,description:f?.description??"",agentUrl:f?.agentUrl??"",apiKey:f?.apiKey??"",triggerType:f?.triggerType??"",triggerOperator:f?.triggerOperator??"",triggerValue:f?.triggerValue??"",expire:f?.expire??0,keywordFinish:f?.keywordFinish??"",delayMessage:f?.delayMessage??0,unknownMessage:f?.unknownMessage??"",listeningFromMe:!!f?.listeningFromMe,stopBotFromMe:!!f?.stopBotFromMe,keepOpen:!!f?.keepOpen,debounceTime:f?.debounceTime??0,splitMessages:f?.splitMessages??!1,timePerChar:f?.timePerChar??0}),[f?.agentUrl,f?.apiKey,f?.debounceTime,f?.delayMessage,f?.description,f?.enabled,f?.expire,f?.keepOpen,f?.keywordFinish,f?.listeningFromMe,f?.stopBotFromMe,f?.triggerOperator,f?.triggerType,f?.triggerValue,f?.unknownMessage,f?.splitMessages,f?.timePerChar]),g=async b=>{try{if(r&&r.name&&e){const w={enabled:b.enabled,description:b.description,agentUrl:b.agentUrl,apiKey:b.apiKey,triggerType:b.triggerType,triggerOperator:b.triggerOperator||"",triggerValue:b.triggerValue||"",expire:b.expire||0,keywordFinish:b.keywordFinish||"",delayMessage:b.delayMessage||1e3,unknownMessage:b.unknownMessage||"",listeningFromMe:b.listeningFromMe||!1,stopBotFromMe:b.stopBotFromMe||!1,keepOpen:b.keepOpen||!1,debounceTime:b.debounceTime||0,splitMessages:b.splitMessages||!1,timePerChar:b.timePerChar||0};await d({instanceName:r.name,evoaiId:e,data:w}),me.success(n("evoai.toast.success.update")),t(),s(`/manager/instance/${r.id}/evoai/${e}`)}else console.error("Token not found")}catch(w){console.error("Error:",w),me.error(`Error: ${w?.response?.data?.response?.message}`)}},x=async()=>{try{r&&r.name&&e?(await u({instanceName:r.name,evoaiId:e}),me.success(n("evoai.toast.success.delete")),l(!1),t(),s(`/manager/instance/${r.id}/evoai`)):console.error("instance not found")}catch(b){console.error("Erro ao excluir evoai:",b)}};return h?i.jsx(On,{}):i.jsx("div",{className:"m-4",children:i.jsx(TI,{initialData:m,onSubmit:g,evoaiId:e,handleDelete:x,isModal:!1,isLoading:h,openDeletionDialog:o,setOpenDeletionDialog:l})})}function Ck(){const{t:e}=Ve(),t=zo("(min-width: 768px)"),{instance:n}=ct(),{evoaiId:r}=ls(),{data:s,refetch:o,isLoading:l}=kI({instanceName:n?.name}),u=dn(),d=h=>{n&&u(`/manager/instance/${n.id}/evoai/${h}`)},f=()=>{o()};return i.jsxs("main",{className:"pt-5",children:[i.jsxs("div",{className:"mb-1 flex items-center justify-between",children:[i.jsx("h3",{className:"text-lg font-medium",children:e("evoai.title")}),i.jsxs("div",{className:"flex items-center justify-end gap-2",children:[i.jsx(jI,{}),i.jsx(Ote,{}),i.jsx(Lte,{resetTable:f})]})]}),i.jsx($t,{className:"my-4"}),i.jsxs($o,{direction:t?"horizontal":"vertical",children:[i.jsx(Hn,{defaultSize:35,className:"pr-4",children:i.jsx("div",{className:"flex flex-col gap-3",children:l?i.jsx(On,{}):i.jsx(i.Fragment,{children:s&&s.length>0&&Array.isArray(s)?s.map(h=>i.jsx(se,{className:"flex h-auto flex-col items-start justify-start",onClick:()=>d(`${h.id}`),variant:r===h.id?"secondary":"outline",children:i.jsx("h4",{className:"text-base",children:h.description||h.id})},h.id)):i.jsx(se,{variant:"link",children:e("evoai.table.none")})})})}),r&&i.jsxs(i.Fragment,{children:[i.jsx(Bo,{withHandle:!0,className:"border border-border"}),i.jsx(Hn,{children:i.jsx(Ute,{evoaiId:r,resetTable:f})})]})]})]})}const Vte=e=>["evolutionBot","findEvolutionBot",JSON.stringify(e)],Hte=async({instanceName:e,token:t})=>(await Ee.get(`/evolutionBot/find/${e}`,{headers:{apiKey:t}})).data,NI=e=>{const{instanceName:t,token:n,...r}=e;return mt({...r,queryKey:Vte({instanceName:t}),queryFn:()=>Hte({instanceName:t,token:n}),enabled:!!t&&(e.enabled??!0)})},qte=e=>["evolutionBot","fetchDefaultSettings",JSON.stringify(e)],Kte=async({instanceName:e,token:t})=>{const n=await Ee.get(`/evolutionBot/fetchSettings/${e}`,{headers:{apiKey:t}});return Array.isArray(n.data)?n.data[0]:n.data},Wte=e=>{const{instanceName:t,token:n,...r}=e;return mt({...r,queryKey:qte({instanceName:t}),queryFn:()=>Kte({instanceName:t,token:n}),enabled:!!t&&(e.enabled??!0)})},Gte=async({instanceName:e,token:t,data:n})=>(await Ee.post(`/evolutionBot/create/${e}`,n,{headers:{apikey:t}})).data,Jte=async({instanceName:e,token:t,evolutionBotId:n,data:r})=>(await Ee.put(`/evolutionBot/update/${n}/${e}`,r,{headers:{apikey:t}})).data,Qte=async({instanceName:e,evolutionBotId:t})=>(await Ee.delete(`/evolutionBot/delete/${t}/${e}`)).data,Zte=async({instanceName:e,token:t,data:n})=>(await Ee.post(`/evolutionBot/settings/${e}`,n,{headers:{apikey:t}})).data,Yte=async({instanceName:e,token:t,remoteJid:n,status:r})=>(await Ee.post(`/evolutionBot/changeStatus/${e}`,{remoteJid:n,status:r},{headers:{apikey:t}})).data;function wg(){const e=nt(Zte,{invalidateKeys:[["evolutionBot","fetchDefaultSettings"]]}),t=nt(Yte,{invalidateKeys:[["evolutionBot","getEvolutionBot"],["evolutionBot","fetchSessions"]]}),n=nt(Qte,{invalidateKeys:[["evolutionBot","getEvolutionBot"],["evolutionBot","findEvolutionBot"],["evolutionBot","fetchSessions"]]}),r=nt(Jte,{invalidateKeys:[["evolutionBot","getEvolutionBot"],["evolutionBot","findEvolutionBot"],["evolutionBot","fetchSessions"]]}),s=nt(Gte,{invalidateKeys:[["evolutionBot","findEvolutionBot"]]});return{setDefaultSettingsEvolutionBot:e,changeStatusEvolutionBot:t,deleteEvolutionBot:n,updateEvolutionBot:r,createEvolutionBot:s}}const Xte=P.object({expire:P.string(),keywordFinish:P.string(),delayMessage:P.string(),unknownMessage:P.string(),listeningFromMe:P.boolean(),stopBotFromMe:P.boolean(),keepOpen:P.boolean(),debounceTime:P.string(),ignoreJids:P.array(P.string()).default([]),botIdFallback:P.union([P.null(),P.string()]).optional(),splitMessages:P.boolean(),timePerChar:P.string()});function ene(){const{t:e}=Ve(),{instance:t}=ct(),[n,r]=y.useState(!1),{data:s,refetch:o}=Wte({instanceName:t?.name,enabled:n}),{data:l,refetch:u}=NI({instanceName:t?.name,enabled:n}),{setDefaultSettingsEvolutionBot:d}=wg(),f=on({resolver:an(Xte),defaultValues:{expire:"0",keywordFinish:e("evolutionBot.form.examples.keywordFinish"),delayMessage:"1000",unknownMessage:e("evolutionBot.form.examples.unknownMessage"),listeningFromMe:!1,stopBotFromMe:!1,keepOpen:!1,debounceTime:"0",ignoreJids:[],botIdFallback:void 0,splitMessages:!1,timePerChar:"0"}});y.useEffect(()=>{s&&f.reset({expire:s?.expire?s.expire.toString():"0",keywordFinish:s.keywordFinish,delayMessage:s.delayMessage?s.delayMessage.toString():"0",unknownMessage:s.unknownMessage,listeningFromMe:s.listeningFromMe,stopBotFromMe:s.stopBotFromMe,keepOpen:s.keepOpen,debounceTime:s.debounceTime?s.debounceTime.toString():"0",ignoreJids:s.ignoreJids,botIdFallback:s.botIdFallback,splitMessages:s.splitMessages,timePerChar:s.timePerChar?s.timePerChar.toString():"0"})},[s]);const h=async g=>{try{if(!t||!t.name)throw new Error("instance not found.");const x={expire:parseInt(g.expire),keywordFinish:g.keywordFinish,delayMessage:parseInt(g.delayMessage),unknownMessage:g.unknownMessage,listeningFromMe:g.listeningFromMe,stopBotFromMe:g.stopBotFromMe,keepOpen:g.keepOpen,debounceTime:parseInt(g.debounceTime),botIdFallback:g.botIdFallback||void 0,ignoreJids:g.ignoreJids,splitMessages:g.splitMessages,timePerChar:parseInt(g.timePerChar)};await d({instanceName:t.name,token:t.token,data:x}),me.success(e("evolutionBot.toast.defaultSettings.success"))}catch(x){console.error("Error:",x),me.error(`Error: ${x?.response?.data?.response?.message}`)}};function m(){o(),u()}return i.jsxs(Pt,{open:n,onOpenChange:r,children:[i.jsx(Bt,{asChild:!0,children:i.jsxs(se,{variant:"secondary",size:"sm",children:[i.jsx(Oo,{size:16,className:"mr-1"}),i.jsx("span",{className:"hidden sm:inline",children:e("evolutionBot.defaultSettings")})]})}),i.jsxs(Nt,{className:"overflow-y-auto sm:max-h-[600px] sm:max-w-[740px]",onCloseAutoFocus:m,children:[i.jsx(Mt,{children:i.jsx(zt,{children:e("evolutionBot.defaultSettings")})}),i.jsx(Gn,{...f,children:i.jsxs("form",{className:"w-full space-y-6",onSubmit:f.handleSubmit(h),children:[i.jsx("div",{children:i.jsxs("div",{className:"space-y-4",children:[i.jsx(Jt,{name:"botIdFallback",label:e("evolutionBot.form.botIdFallback.label"),options:l?.filter(g=>!!g.id).map(g=>({label:g.description,value:g.id}))??[]}),i.jsx(le,{name:"expire",label:e("evolutionBot.form.expire.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(le,{name:"keywordFinish",label:e("evolutionBot.form.keywordFinish.label"),children:i.jsx(ne,{})}),i.jsx(le,{name:"delayMessage",label:e("evolutionBot.form.delayMessage.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(le,{name:"unknownMessage",label:e("evolutionBot.form.unknownMessage.label"),children:i.jsx(ne,{})}),i.jsx(Pe,{name:"listeningFromMe",label:e("evolutionBot.form.listeningFromMe.label"),reverse:!0}),i.jsx(Pe,{name:"stopBotFromMe",label:e("evolutionBot.form.stopBotFromMe.label"),reverse:!0}),i.jsx(Pe,{name:"keepOpen",label:e("evolutionBot.form.keepOpen.label"),reverse:!0}),i.jsx(le,{name:"debounceTime",label:e("evolutionBot.form.debounceTime.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(Pe,{name:"splitMessages",label:e("evolutionBot.form.splitMessages.label"),reverse:!0}),f.watch("splitMessages")&&i.jsx(le,{name:"timePerChar",label:e("evolutionBot.form.timePerChar.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(Da,{name:"ignoreJids",label:e("evolutionBot.form.ignoreJids.label"),placeholder:e("evolutionBot.form.ignoreJids.placeholder")})]})}),i.jsx(Yt,{children:i.jsx(se,{type:"submit",children:e("evolutionBot.button.save")})})]})})]})]})}const tne=e=>["evolutionBot","fetchSessions",JSON.stringify(e)],nne=async({instanceName:e,evolutionBotId:t,token:n})=>(await Ee.get(`/evolutionBot/fetchSessions/${t}/${e}`,{headers:{apiKey:n}})).data,rne=e=>{const{instanceName:t,token:n,evolutionBotId:r,...s}=e;return mt({...s,queryKey:tne({instanceName:t}),queryFn:()=>nne({instanceName:t,token:n,evolutionBotId:r}),enabled:!!t&&!!r&&(e.enabled??!0)})};function MI({evolutionBotId:e}){const{t}=Ve(),{instance:n}=ct(),[r,s]=y.useState([]),[o,l]=y.useState(!1),[u,d]=y.useState(""),{data:f,refetch:h}=rne({instanceName:n?.name,evolutionBotId:e,enabled:o}),{changeStatusEvolutionBot:m}=wg();function g(){h()}const x=async(w,C)=>{try{if(!n)return;await m({instanceName:n.name,token:n.token,remoteJid:w,status:C}),me.success(t("evolutionBot.toast.success.status")),g()}catch(k){console.error("Error:",k),me.error(`Error : ${k?.response?.data?.response?.message}`)}},b=[{accessorKey:"remoteJid",header:()=>i.jsx("div",{className:"text-center",children:t("evolutionBot.sessions.table.remoteJid")}),cell:({row:w})=>i.jsx("div",{children:w.getValue("remoteJid")})},{accessorKey:"pushName",header:()=>i.jsx("div",{className:"text-center",children:t("evolutionBot.sessions.table.pushName")}),cell:({row:w})=>i.jsx("div",{children:w.getValue("pushName")})},{accessorKey:"sessionId",header:()=>i.jsx("div",{className:"text-center",children:t("evolutionBot.sessions.table.sessionId")}),cell:({row:w})=>i.jsx("div",{children:w.getValue("sessionId")})},{accessorKey:"status",header:()=>i.jsx("div",{className:"text-center",children:t("evolutionBot.sessions.table.status")}),cell:({row:w})=>i.jsx("div",{children:w.getValue("status")})},{id:"actions",enableHiding:!1,cell:({row:w})=>{const C=w.original;return i.jsxs(Kr,{children:[i.jsx(Wr,{asChild:!0,children:i.jsxs(se,{variant:"ghost",className:"h-8 w-8 p-0",children:[i.jsx("span",{className:"sr-only",children:t("evolutionBot.sessions.table.actions.title")}),i.jsx(Pa,{className:"h-4 w-4"})]})}),i.jsxs(hr,{align:"end",children:[i.jsx(Ao,{children:t("evolutionBot.sessions.table.actions.title")}),i.jsx(Xs,{}),C.status!=="opened"&&i.jsxs(wt,{onClick:()=>x(C.remoteJid,"opened"),children:[i.jsx(Fi,{className:"mr-2 h-4 w-4"}),t("evolutionBot.sessions.table.actions.open")]}),C.status!=="paused"&&C.status!=="closed"&&i.jsxs(wt,{onClick:()=>x(C.remoteJid,"paused"),children:[i.jsx(Di,{className:"mr-2 h-4 w-4"}),t("evolutionBot.sessions.table.actions.pause")]}),C.status!=="closed"&&i.jsxs(wt,{onClick:()=>x(C.remoteJid,"closed"),children:[i.jsx(Oi,{className:"mr-2 h-4 w-4"}),t("evolutionBot.sessions.table.actions.close")]}),i.jsxs(wt,{onClick:()=>x(C.remoteJid,"delete"),children:[i.jsx(Ii,{className:"mr-2 h-4 w-4"}),t("evolutionBot.sessions.table.actions.delete")]})]})]})}}];return i.jsxs(Pt,{open:o,onOpenChange:l,children:[i.jsx(Bt,{asChild:!0,children:i.jsxs(se,{variant:"secondary",size:"sm",children:[i.jsx(Ai,{size:16,className:"mr-1"}),i.jsx("span",{className:"hidden sm:inline",children:t("evolutionBot.sessions.label")})]})}),i.jsxs(Nt,{className:"overflow-y-auto sm:max-w-[950px]",onCloseAutoFocus:g,children:[i.jsx(Mt,{children:i.jsx(zt,{children:t("evolutionBot.sessions.label")})}),i.jsxs("div",{children:[i.jsxs("div",{className:"flex items-center justify-between gap-6 p-5",children:[i.jsx(ne,{placeholder:t("evolutionBot.sessions.search"),value:u,onChange:w=>d(w.target.value)}),i.jsx(se,{variant:"outline",onClick:g,size:"icon",children:i.jsx(Li,{})})]}),i.jsx($a,{columns:b,data:f??[],onSortingChange:s,state:{sorting:r,globalFilter:u},onGlobalFilterChange:d,enableGlobalFilter:!0,noResultsMessage:t("evolutionBot.sessions.table.none")})]})]})]})}const sne=P.object({enabled:P.boolean(),description:P.string(),apiUrl:P.string(),apiKey:P.string().optional(),triggerType:P.string(),triggerOperator:P.string().optional(),triggerValue:P.string().optional(),expire:P.coerce.number().optional(),keywordFinish:P.string().optional(),delayMessage:P.coerce.number().optional(),unknownMessage:P.string().optional(),listeningFromMe:P.boolean().optional(),stopBotFromMe:P.boolean().optional(),keepOpen:P.boolean().optional(),debounceTime:P.coerce.number().optional(),splitMessages:P.boolean().optional(),timePerChar:P.coerce.number().optional()});function _I({initialData:e,onSubmit:t,handleDelete:n,evolutionBotId:r,isModal:s=!1,isLoading:o=!1,openDeletionDialog:l=!1,setOpenDeletionDialog:u=()=>{}}){const{t:d}=Ve(),f=on({resolver:an(sne),defaultValues:e||{enabled:!0,description:"",apiUrl:"",apiKey:"",triggerType:"keyword",triggerOperator:"contains",triggerValue:"",expire:0,keywordFinish:"",delayMessage:0,unknownMessage:"",listeningFromMe:!1,stopBotFromMe:!1,keepOpen:!1,debounceTime:0,splitMessages:!1,timePerChar:0}}),h=f.watch("triggerType");return i.jsx(Gn,{...f,children:i.jsxs("form",{onSubmit:f.handleSubmit(t),className:"w-full space-y-6",children:[i.jsxs("div",{className:"space-y-4",children:[i.jsx(Pe,{name:"enabled",label:d("evolutionBot.form.enabled.label"),reverse:!0}),i.jsx(le,{name:"description",label:d("evolutionBot.form.description.label"),required:!0,children:i.jsx(ne,{})}),i.jsxs("div",{className:"flex flex-col",children:[i.jsx("h3",{className:"my-4 text-lg font-medium",children:d("evolutionBot.form.evolutionBotSettings.label")}),i.jsx($t,{})]}),i.jsx(le,{name:"apiUrl",label:d("evolutionBot.form.apiUrl.label"),required:!0,children:i.jsx(ne,{})}),i.jsx(le,{name:"apiKey",label:d("evolutionBot.form.apiKey.label"),children:i.jsx(ne,{type:"password"})}),i.jsxs("div",{className:"flex flex-col",children:[i.jsx("h3",{className:"my-4 text-lg font-medium",children:d("evolutionBot.form.triggerSettings.label")}),i.jsx($t,{})]}),i.jsx(Jt,{name:"triggerType",label:d("evolutionBot.form.triggerType.label"),options:[{label:d("evolutionBot.form.triggerType.keyword"),value:"keyword"},{label:d("evolutionBot.form.triggerType.all"),value:"all"},{label:d("evolutionBot.form.triggerType.advanced"),value:"advanced"},{label:d("evolutionBot.form.triggerType.none"),value:"none"}]}),h==="keyword"&&i.jsxs(i.Fragment,{children:[i.jsx(Jt,{name:"triggerOperator",label:d("evolutionBot.form.triggerOperator.label"),options:[{label:d("evolutionBot.form.triggerOperator.contains"),value:"contains"},{label:d("evolutionBot.form.triggerOperator.equals"),value:"equals"},{label:d("evolutionBot.form.triggerOperator.startsWith"),value:"startsWith"},{label:d("evolutionBot.form.triggerOperator.endsWith"),value:"endsWith"},{label:d("evolutionBot.form.triggerOperator.regex"),value:"regex"}]}),i.jsx(le,{name:"triggerValue",label:d("evolutionBot.form.triggerValue.label"),children:i.jsx(ne,{})})]}),h==="advanced"&&i.jsx(le,{name:"triggerValue",label:d("evolutionBot.form.triggerConditions.label"),children:i.jsx(ne,{})}),i.jsxs("div",{className:"flex flex-col",children:[i.jsx("h3",{className:"my-4 text-lg font-medium",children:d("evolutionBot.form.generalSettings.label")}),i.jsx($t,{})]}),i.jsx(le,{name:"expire",label:d("evolutionBot.form.expire.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(le,{name:"keywordFinish",label:d("evolutionBot.form.keywordFinish.label"),children:i.jsx(ne,{})}),i.jsx(le,{name:"delayMessage",label:d("evolutionBot.form.delayMessage.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(le,{name:"unknownMessage",label:d("evolutionBot.form.unknownMessage.label"),children:i.jsx(ne,{})}),i.jsx(Pe,{name:"listeningFromMe",label:d("evolutionBot.form.listeningFromMe.label"),reverse:!0}),i.jsx(Pe,{name:"stopBotFromMe",label:d("evolutionBot.form.stopBotFromMe.label"),reverse:!0}),i.jsx(Pe,{name:"keepOpen",label:d("evolutionBot.form.keepOpen.label"),reverse:!0}),i.jsx(le,{name:"debounceTime",label:d("evolutionBot.form.debounceTime.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(Pe,{name:"splitMessages",label:d("evolutionBot.form.splitMessages.label"),reverse:!0}),f.watch("splitMessages")&&i.jsx(le,{name:"timePerChar",label:d("evolutionBot.form.timePerChar.label"),children:i.jsx(ne,{type:"number"})})]}),s&&i.jsx(Yt,{children:i.jsx(se,{disabled:o,type:"submit",children:d(o?"evolutionBot.button.saving":"evolutionBot.button.save")})}),!s&&i.jsxs("div",{children:[i.jsx(MI,{evolutionBotId:r}),i.jsxs("div",{className:"mt-5 flex items-center gap-3",children:[i.jsxs(Pt,{open:l,onOpenChange:u,children:[i.jsx(Bt,{asChild:!0,children:i.jsx(se,{variant:"destructive",size:"sm",children:d("dify.button.delete")})}),i.jsx(Nt,{children:i.jsxs(Mt,{children:[i.jsx(zt,{children:d("modal.delete.title")}),i.jsx(eo,{children:d("modal.delete.messageSingle")}),i.jsxs(Yt,{children:[i.jsx(se,{size:"sm",variant:"outline",onClick:()=>u(!1),children:d("button.cancel")}),i.jsx(se,{variant:"destructive",onClick:n,children:d("button.delete")})]})]})})]}),i.jsx(se,{disabled:o,type:"submit",children:d(o?"evolutionBot.button.saving":"evolutionBot.button.update")})]})]})]})})}function one({resetTable:e}){const{t}=Ve(),{instance:n}=ct(),[r,s]=y.useState(!1),[o,l]=y.useState(!1),{createEvolutionBot:u}=wg(),d=async f=>{try{if(!n||!n.name)throw new Error("instance not found");s(!0);const h={enabled:f.enabled,description:f.description,apiUrl:f.apiUrl,apiKey:f.apiKey,triggerType:f.triggerType,triggerOperator:f.triggerOperator||"",triggerValue:f.triggerValue||"",expire:f.expire||0,keywordFinish:f.keywordFinish||"",delayMessage:f.delayMessage||0,unknownMessage:f.unknownMessage||"",listeningFromMe:f.listeningFromMe||!1,stopBotFromMe:f.stopBotFromMe||!1,keepOpen:f.keepOpen||!1,debounceTime:f.debounceTime||0,splitMessages:f.splitMessages||!1,timePerChar:f.timePerChar?f.timePerChar:0};await u({instanceName:n.name,token:n.token,data:h}),me.success(t("evolutionBot.toast.success.create")),l(!1),e()}catch(h){console.error("Error:",h),me.error(`Error: ${h?.response?.data?.response?.message}`)}finally{s(!1)}};return i.jsxs(Pt,{open:o,onOpenChange:l,children:[i.jsx(Bt,{asChild:!0,children:i.jsxs(se,{size:"sm",children:[i.jsx(cs,{size:16,className:"mr-1"}),i.jsx("span",{className:"hidden sm:inline",children:t("evolutionBot.button.create")})]})}),i.jsxs(Nt,{className:"overflow-y-auto sm:max-h-[600px] sm:max-w-[740px]",children:[i.jsx(Mt,{children:i.jsx(zt,{children:t("evolutionBot.form.title")})}),i.jsx(_I,{onSubmit:d,isModal:!0,isLoading:r})]})]})}const ane=e=>["evolutionBot","getEvolutionBot",JSON.stringify(e)],ine=async({instanceName:e,token:t,evolutionBotId:n})=>{const r=await Ee.get(`/evolutionBot/fetch/${n}/${e}`,{headers:{apiKey:t}});return Array.isArray(r.data)?r.data[0]:r.data},lne=e=>{const{instanceName:t,token:n,evolutionBotId:r,...s}=e;return mt({...s,queryKey:ane({instanceName:t}),queryFn:()=>ine({instanceName:t,token:n,evolutionBotId:r}),enabled:!!t&&!!r&&(e.enabled??!0)})};function cne({evolutionBotId:e,resetTable:t}){const{t:n}=Ve(),{instance:r}=ct(),s=dn(),[o,l]=y.useState(!1),{deleteEvolutionBot:u,updateEvolutionBot:d}=wg(),{data:f,isLoading:h}=lne({instanceName:r?.name,evolutionBotId:e}),m=y.useMemo(()=>({enabled:f?.enabled??!0,description:f?.description??"",apiUrl:f?.apiUrl??"",apiKey:f?.apiKey??"",triggerType:f?.triggerType??"",triggerOperator:f?.triggerOperator??"",triggerValue:f?.triggerValue,expire:f?.expire??0,keywordFinish:f?.keywordFinish,delayMessage:f?.delayMessage??0,unknownMessage:f?.unknownMessage,listeningFromMe:f?.listeningFromMe,stopBotFromMe:!!f?.stopBotFromMe,keepOpen:!!f?.keepOpen,debounceTime:f?.debounceTime??0,splitMessages:f?.splitMessages??!1,timePerChar:f?.timePerChar?f?.timePerChar:0}),[f?.apiKey,f?.apiUrl,f?.debounceTime,f?.delayMessage,f?.description,f?.enabled,f?.expire,f?.keepOpen,f?.keywordFinish,f?.listeningFromMe,f?.stopBotFromMe,f?.triggerOperator,f?.triggerType,f?.triggerValue,f?.unknownMessage,f?.splitMessages,f?.timePerChar]),g=async b=>{try{if(r&&r.name&&e){const w={enabled:b.enabled,description:b.description,apiUrl:b.apiUrl,apiKey:b.apiKey,triggerType:b.triggerType,triggerOperator:b.triggerOperator||"",triggerValue:b.triggerValue||"",expire:b.expire||0,keywordFinish:b.keywordFinish||"",delayMessage:b.delayMessage||1e3,unknownMessage:b.unknownMessage||"",listeningFromMe:b.listeningFromMe||!1,stopBotFromMe:b.stopBotFromMe||!1,keepOpen:b.keepOpen||!1,debounceTime:b.debounceTime||0,splitMessages:b.splitMessages||!1,timePerChar:b.timePerChar?b.timePerChar:0};await d({instanceName:r.name,evolutionBotId:e,data:w}),me.success(n("evolutionBot.toast.success.update")),t(),s(`/manager/instance/${r.id}/evolutionBot/${e}`)}else console.error("Token not found")}catch(w){console.error("Error:",w),me.error(`Error: ${w?.response?.data?.response?.message}`)}},x=async()=>{try{r&&r.name&&e?(await u({instanceName:r.name,evolutionBotId:e}),me.success(n("evolutionBot.toast.success.delete")),l(!1),t(),s(`/manager/instance/${r.id}/evolutionBot`)):console.error("instance not found")}catch(b){console.error("Erro ao excluir evolutionBot:",b)}};return h?i.jsx(On,{}):i.jsx("div",{className:"m-4",children:i.jsx(_I,{initialData:m,onSubmit:g,evolutionBotId:e,handleDelete:x,isModal:!1,openDeletionDialog:o,setOpenDeletionDialog:l})})}function Ek(){const{t:e}=Ve(),t=zo("(min-width: 768px)"),{instance:n}=ct(),{evolutionBotId:r}=ls(),{data:s,isLoading:o,refetch:l}=NI({instanceName:n?.name}),u=dn(),d=h=>{n&&u(`/manager/instance/${n.id}/evolutionBot/${h}`)},f=()=>{l()};return i.jsxs("main",{className:"pt-5",children:[i.jsxs("div",{className:"mb-1 flex items-center justify-between",children:[i.jsx("h3",{className:"text-lg font-medium",children:e("evolutionBot.title")}),i.jsxs("div",{className:"flex items-center justify-end gap-2",children:[i.jsx(MI,{}),i.jsx(ene,{}),i.jsx(one,{resetTable:f})]})]}),i.jsx($t,{className:"my-4"}),i.jsxs($o,{direction:t?"horizontal":"vertical",children:[i.jsx(Hn,{defaultSize:35,className:"pr-4",children:i.jsx("div",{className:"flex flex-col gap-3",children:o?i.jsx(On,{}):i.jsx(i.Fragment,{children:s&&s.length>0&&Array.isArray(s)?s.map(h=>i.jsx(se,{className:"flex h-auto flex-col items-start justify-start",onClick:()=>d(`${h.id}`),variant:r===h.id?"secondary":"outline",children:i.jsx("h4",{className:"text-base",children:h.description||h.id})},h.id)):i.jsx(se,{variant:"link",children:e("evolutionBot.table.none")})})})}),r&&i.jsxs(i.Fragment,{children:[i.jsx(Bo,{withHandle:!0,className:"border border-border"}),i.jsx(Hn,{children:i.jsx(cne,{evolutionBotId:r,resetTable:f})})]})]})]})}const une=e=>["flowise","findFlowise",JSON.stringify(e)],dne=async({instanceName:e,token:t})=>(await Ee.get(`/flowise/find/${e}`,{headers:{apiKey:t}})).data,RI=e=>{const{instanceName:t,token:n,...r}=e;return mt({...r,queryKey:une({instanceName:t}),queryFn:()=>dne({instanceName:t,token:n}),enabled:!!t&&(e.enabled??!0)})},fne=e=>["flowise","fetchDefaultSettings",JSON.stringify(e)],pne=async({instanceName:e,token:t})=>{const n=await Ee.get(`/flowise/fetchSettings/${e}`,{headers:{apiKey:t}});return Array.isArray(n.data)?n.data[0]:n.data},hne=e=>{const{instanceName:t,token:n,...r}=e;return mt({...r,queryKey:fne({instanceName:t}),queryFn:()=>pne({instanceName:t,token:n}),enabled:!!t&&(e.enabled??!0)})},gne=async({instanceName:e,token:t,data:n})=>(await Ee.post(`/flowise/create/${e}`,n,{headers:{apikey:t}})).data,mne=async({instanceName:e,flowiseId:t,data:n})=>(await Ee.put(`/flowise/update/${t}/${e}`,n)).data,vne=async({instanceName:e,flowiseId:t})=>(await Ee.delete(`/flowise/delete/${t}/${e}`)).data,yne=async({instanceName:e,token:t,remoteJid:n,status:r})=>(await Ee.post(`/flowise/changeStatus/${e}`,{remoteJid:n,status:r},{headers:{apikey:t}})).data,bne=async({instanceName:e,token:t,data:n})=>(await Ee.post(`/flowise/settings/${e}`,n,{headers:{apikey:t}})).data;function Sg(){const e=nt(bne,{invalidateKeys:[["flowise","fetchDefaultSettings"]]}),t=nt(yne,{invalidateKeys:[["flowise","getFlowise"],["flowise","fetchSessions"]]}),n=nt(vne,{invalidateKeys:[["flowise","getFlowise"],["flowise","findFlowise"],["flowise","fetchSessions"]]}),r=nt(mne,{invalidateKeys:[["flowise","getFlowise"],["flowise","findFlowise"],["flowise","fetchSessions"]]}),s=nt(gne,{invalidateKeys:[["flowise","findFlowise"]]});return{setDefaultSettingsFlowise:e,changeStatusFlowise:t,deleteFlowise:n,updateFlowise:r,createFlowise:s}}const xne=P.object({expire:P.string(),keywordFinish:P.string(),delayMessage:P.string(),unknownMessage:P.string(),listeningFromMe:P.boolean(),stopBotFromMe:P.boolean(),keepOpen:P.boolean(),debounceTime:P.string(),ignoreJids:P.array(P.string()).default([]),flowiseIdFallback:P.union([P.null(),P.string()]).optional(),splitMessages:P.boolean(),timePerChar:P.string()});function wne(){const{t:e}=Ve(),{instance:t}=ct(),{setDefaultSettingsFlowise:n}=Sg(),[r,s]=y.useState(!1),{data:o,refetch:l}=hne({instanceName:t?.name,enabled:r}),{data:u,refetch:d}=RI({instanceName:t?.name,enabled:r}),f=on({resolver:an(xne),defaultValues:{expire:"0",keywordFinish:e("flowise.form.examples.keywordFinish"),delayMessage:"1000",unknownMessage:e("flowise.form.examples.unknownMessage"),listeningFromMe:!1,stopBotFromMe:!1,keepOpen:!1,debounceTime:"0",ignoreJids:[],flowiseIdFallback:void 0,splitMessages:!1,timePerChar:"0"}});y.useEffect(()=>{o&&f.reset({expire:o?.expire?o.expire.toString():"0",keywordFinish:o.keywordFinish,delayMessage:o.delayMessage?o.delayMessage.toString():"0",unknownMessage:o.unknownMessage,listeningFromMe:o.listeningFromMe,stopBotFromMe:o.stopBotFromMe,keepOpen:o.keepOpen,debounceTime:o.debounceTime?o.debounceTime.toString():"0",ignoreJids:o.ignoreJids,flowiseIdFallback:o.flowiseIdFallback,splitMessages:o.splitMessages,timePerChar:o.timePerChar?o.timePerChar.toString():"0"})},[o]);const h=async g=>{try{if(!t||!t.name)throw new Error("instance not found.");const x={expire:parseInt(g.expire),keywordFinish:g.keywordFinish,delayMessage:parseInt(g.delayMessage),unknownMessage:g.unknownMessage,listeningFromMe:g.listeningFromMe,stopBotFromMe:g.stopBotFromMe,keepOpen:g.keepOpen,debounceTime:parseInt(g.debounceTime),flowiseIdFallback:g.flowiseIdFallback||void 0,ignoreJids:g.ignoreJids,splitMessages:g.splitMessages,timePerChar:parseInt(g.timePerChar)};await n({instanceName:t.name,token:t.token,data:x}),me.success(e("flowise.toast.defaultSettings.success"))}catch(x){console.error("Error:",x),me.error(`Error: ${x?.response?.data?.response?.message}`)}};function m(){l(),d()}return i.jsxs(Pt,{open:r,onOpenChange:s,children:[i.jsx(Bt,{asChild:!0,children:i.jsxs(se,{variant:"secondary",size:"sm",children:[i.jsx(Oo,{size:16,className:"mr-1"}),i.jsx("span",{className:"hidden sm:inline",children:e("flowise.defaultSettings")})]})}),i.jsxs(Nt,{className:"overflow-y-auto sm:max-h-[600px] sm:max-w-[740px]",onCloseAutoFocus:m,children:[i.jsx(Mt,{children:i.jsx(zt,{children:e("flowise.defaultSettings")})}),i.jsx(Gn,{...f,children:i.jsxs("form",{className:"w-full space-y-6",onSubmit:f.handleSubmit(h),children:[i.jsx("div",{children:i.jsxs("div",{className:"space-y-4",children:[i.jsx(Jt,{name:"flowiseIdFallback",label:e("flowise.form.flowiseIdFallback.label"),options:u?.filter(g=>!!g.id).map(g=>({label:g.description,value:g.id}))??[]}),i.jsx(le,{name:"expire",label:e("flowise.form.expire.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(le,{name:"keywordFinish",label:e("flowise.form.keywordFinish.label"),children:i.jsx(ne,{})}),i.jsx(le,{name:"delayMessage",label:e("flowise.form.delayMessage.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(le,{name:"unknownMessage",label:e("flowise.form.unknownMessage.label"),children:i.jsx(ne,{})}),i.jsx(Pe,{name:"listeningFromMe",label:e("flowise.form.listeningFromMe.label"),reverse:!0}),i.jsx(Pe,{name:"stopBotFromMe",label:e("flowise.form.stopBotFromMe.label"),reverse:!0}),i.jsx(Pe,{name:"keepOpen",label:e("flowise.form.keepOpen.label"),reverse:!0}),i.jsx(le,{name:"debounceTime",label:e("flowise.form.debounceTime.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(Pe,{name:"splitMessages",label:e("flowise.form.splitMessages.label"),reverse:!0}),f.watch("splitMessages")&&i.jsx(le,{name:"timePerChar",label:e("flowise.form.timePerChar.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(Da,{name:"ignoreJids",label:e("flowise.form.ignoreJids.label"),placeholder:e("flowise.form.ignoreJids.placeholder")})]})}),i.jsx(Yt,{children:i.jsx(se,{type:"submit",children:e("flowise.button.save")})})]})})]})]})}const Sne=e=>["flowise","fetchSessions",JSON.stringify(e)],Cne=async({instanceName:e,flowiseId:t,token:n})=>(await Ee.get(`/flowise/fetchSessions/${t}/${e}`,{headers:{apiKey:n}})).data,Ene=e=>{const{instanceName:t,token:n,flowiseId:r,...s}=e;return mt({...s,queryKey:Sne({instanceName:t}),queryFn:()=>Cne({instanceName:t,token:n,flowiseId:r}),enabled:!!t&&!!r&&(e.enabled??!0)})};function PI({flowiseId:e}){const{t}=Ve(),{instance:n}=ct(),{changeStatusFlowise:r}=Sg(),[s,o]=y.useState([]),[l,u]=y.useState(!1),[d,f]=y.useState(""),{data:h,refetch:m}=Ene({instanceName:n?.name,flowiseId:e,enabled:l});function g(){m()}const x=async(w,C)=>{try{if(!n)return;await r({instanceName:n.name,token:n.token,remoteJid:w,status:C}),me.success(t("flowise.toast.success.status")),g()}catch(k){console.error("Error:",k),me.error(`Error : ${k?.response?.data?.response?.message}`)}},b=[{accessorKey:"remoteJid",header:()=>i.jsx("div",{className:"text-center",children:t("flowise.sessions.table.remoteJid")}),cell:({row:w})=>i.jsx("div",{children:w.getValue("remoteJid")})},{accessorKey:"pushName",header:()=>i.jsx("div",{className:"text-center",children:t("flowise.sessions.table.pushName")}),cell:({row:w})=>i.jsx("div",{children:w.getValue("pushName")})},{accessorKey:"sessionId",header:()=>i.jsx("div",{className:"text-center",children:t("flowise.sessions.table.sessionId")}),cell:({row:w})=>i.jsx("div",{children:w.getValue("sessionId")})},{accessorKey:"status",header:()=>i.jsx("div",{className:"text-center",children:t("flowise.sessions.table.status")}),cell:({row:w})=>i.jsx("div",{children:w.getValue("status")})},{id:"actions",enableHiding:!1,cell:({row:w})=>{const C=w.original;return i.jsxs(Kr,{children:[i.jsx(Wr,{asChild:!0,children:i.jsxs(se,{variant:"ghost",className:"h-8 w-8 p-0",children:[i.jsx("span",{className:"sr-only",children:t("flowise.sessions.table.actions.title")}),i.jsx(Pa,{className:"h-4 w-4"})]})}),i.jsxs(hr,{align:"end",children:[i.jsx(Ao,{children:t("flowise.sessions.table.actions.title")}),i.jsx(Xs,{}),C.status!=="opened"&&i.jsxs(wt,{onClick:()=>x(C.remoteJid,"opened"),children:[i.jsx(Fi,{className:"mr-2 h-4 w-4"}),t("flowise.sessions.table.actions.open")]}),C.status!=="paused"&&C.status!=="closed"&&i.jsxs(wt,{onClick:()=>x(C.remoteJid,"paused"),children:[i.jsx(Di,{className:"mr-2 h-4 w-4"}),t("flowise.sessions.table.actions.pause")]}),C.status!=="closed"&&i.jsxs(wt,{onClick:()=>x(C.remoteJid,"closed"),children:[i.jsx(Oi,{className:"mr-2 h-4 w-4"}),t("flowise.sessions.table.actions.close")]}),i.jsxs(wt,{onClick:()=>x(C.remoteJid,"delete"),children:[i.jsx(Ii,{className:"mr-2 h-4 w-4"}),t("flowise.sessions.table.actions.delete")]})]})]})}}];return i.jsxs(Pt,{open:l,onOpenChange:u,children:[i.jsx(Bt,{asChild:!0,children:i.jsxs(se,{variant:"secondary",size:"sm",children:[i.jsx(Ai,{size:16,className:"mr-1"}),i.jsx("span",{className:"hidden sm:inline",children:t("flowise.sessions.label")})]})}),i.jsxs(Nt,{className:"overflow-y-auto sm:max-w-[950px]",onCloseAutoFocus:g,children:[i.jsx(Mt,{children:i.jsx(zt,{children:t("flowise.sessions.label")})}),i.jsxs("div",{children:[i.jsxs("div",{className:"flex items-center justify-between gap-6 p-5",children:[i.jsx(ne,{placeholder:t("flowise.sessions.search"),value:d,onChange:w=>f(w.target.value)}),i.jsx(se,{variant:"outline",onClick:g,size:"icon",children:i.jsx(Li,{})})]}),i.jsx($a,{columns:b,data:h??[],onSortingChange:o,state:{sorting:s,globalFilter:d},onGlobalFilterChange:f,enableGlobalFilter:!0,noResultsMessage:t("flowise.sessions.table.none")})]})]})]})}const kne=P.object({enabled:P.boolean(),description:P.string(),apiUrl:P.string(),apiKey:P.string().optional(),triggerType:P.string(),triggerOperator:P.string().optional(),triggerValue:P.string().optional(),expire:P.coerce.number().optional(),keywordFinish:P.string().optional(),delayMessage:P.coerce.number().optional(),unknownMessage:P.string().optional(),listeningFromMe:P.boolean().optional(),stopBotFromMe:P.boolean().optional(),keepOpen:P.boolean().optional(),debounceTime:P.coerce.number().optional(),splitMessages:P.boolean().optional(),timePerChar:P.coerce.number().optional()});function OI({initialData:e,onSubmit:t,handleDelete:n,flowiseId:r,isModal:s=!1,isLoading:o=!1,openDeletionDialog:l=!1,setOpenDeletionDialog:u=()=>{}}){const{t:d}=Ve(),f=on({resolver:an(kne),defaultValues:e||{enabled:!0,description:"",apiUrl:"",apiKey:"",triggerType:"keyword",triggerOperator:"contains",triggerValue:"",expire:0,keywordFinish:"",delayMessage:0,unknownMessage:"",listeningFromMe:!1,stopBotFromMe:!1,keepOpen:!1,debounceTime:0,splitMessages:!1,timePerChar:0}}),h=f.watch("triggerType");return i.jsx(Gn,{...f,children:i.jsxs("form",{onSubmit:f.handleSubmit(t),className:"w-full space-y-6",children:[i.jsxs("div",{className:"space-y-4",children:[i.jsx(Pe,{name:"enabled",label:d("flowise.form.enabled.label"),reverse:!0}),i.jsx(le,{name:"description",label:d("flowise.form.description.label"),required:!0,children:i.jsx(ne,{})}),i.jsxs("div",{className:"flex flex-col",children:[i.jsx("h3",{className:"my-4 text-lg font-medium",children:d("flowise.form.flowiseSettings.label")}),i.jsx($t,{})]}),i.jsx(le,{name:"apiUrl",label:d("flowise.form.apiUrl.label"),required:!0,children:i.jsx(ne,{})}),i.jsx(le,{name:"apiKey",label:d("flowise.form.apiKey.label"),children:i.jsx(ne,{type:"password"})}),i.jsxs("div",{className:"flex flex-col",children:[i.jsx("h3",{className:"my-4 text-lg font-medium",children:d("flowise.form.triggerSettings.label")}),i.jsx($t,{})]}),i.jsx(Jt,{name:"triggerType",label:d("flowise.form.triggerType.label"),options:[{label:d("flowise.form.triggerType.keyword"),value:"keyword"},{label:d("flowise.form.triggerType.all"),value:"all"},{label:d("flowise.form.triggerType.advanced"),value:"advanced"},{label:d("flowise.form.triggerType.none"),value:"none"}]}),h==="keyword"&&i.jsxs(i.Fragment,{children:[i.jsx(Jt,{name:"triggerOperator",label:d("flowise.form.triggerOperator.label"),options:[{label:d("flowise.form.triggerOperator.contains"),value:"contains"},{label:d("flowise.form.triggerOperator.equals"),value:"equals"},{label:d("flowise.form.triggerOperator.startsWith"),value:"startsWith"},{label:d("flowise.form.triggerOperator.endsWith"),value:"endsWith"},{label:d("flowise.form.triggerOperator.regex"),value:"regex"}]}),i.jsx(le,{name:"triggerValue",label:d("flowise.form.triggerValue.label"),children:i.jsx(ne,{})})]}),h==="advanced"&&i.jsx(le,{name:"triggerValue",label:d("flowise.form.triggerConditions.label"),children:i.jsx(ne,{})}),i.jsxs("div",{className:"flex flex-col",children:[i.jsx("h3",{className:"my-4 text-lg font-medium",children:d("flowise.form.generalSettings.label")}),i.jsx($t,{})]}),i.jsx(le,{name:"expire",label:d("flowise.form.expire.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(le,{name:"keywordFinish",label:d("flowise.form.keywordFinish.label"),children:i.jsx(ne,{})}),i.jsx(le,{name:"delayMessage",label:d("flowise.form.delayMessage.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(le,{name:"unknownMessage",label:d("flowise.form.unknownMessage.label"),children:i.jsx(ne,{})}),i.jsx(Pe,{name:"listeningFromMe",label:d("flowise.form.listeningFromMe.label"),reverse:!0}),i.jsx(Pe,{name:"stopBotFromMe",label:d("flowise.form.stopBotFromMe.label"),reverse:!0}),i.jsx(Pe,{name:"keepOpen",label:d("flowise.form.keepOpen.label"),reverse:!0}),i.jsx(le,{name:"debounceTime",label:d("flowise.form.debounceTime.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(Pe,{name:"splitMessages",label:d("flowise.form.splitMessages.label"),reverse:!0}),f.watch("splitMessages")&&i.jsx(le,{name:"timePerChar",label:d("flowise.form.timePerChar.label"),children:i.jsx(ne,{type:"number"})})]}),s&&i.jsx(Yt,{children:i.jsx(se,{disabled:o,type:"submit",children:d(o?"flowise.button.saving":"flowise.button.save")})}),!s&&i.jsxs("div",{children:[i.jsx(PI,{flowiseId:r}),i.jsxs("div",{className:"mt-5 flex items-center gap-3",children:[i.jsxs(Pt,{open:l,onOpenChange:u,children:[i.jsx(Bt,{asChild:!0,children:i.jsx(se,{variant:"destructive",size:"sm",children:d("dify.button.delete")})}),i.jsx(Nt,{children:i.jsxs(Mt,{children:[i.jsx(zt,{children:d("modal.delete.title")}),i.jsx(eo,{children:d("modal.delete.messageSingle")}),i.jsxs(Yt,{children:[i.jsx(se,{size:"sm",variant:"outline",onClick:()=>u(!1),children:d("button.cancel")}),i.jsx(se,{variant:"destructive",onClick:n,children:d("button.delete")})]})]})})]}),i.jsx(se,{disabled:o,type:"submit",children:d(o?"flowise.button.saving":"flowise.button.update")})]})]})]})})}function jne({resetTable:e}){const{t}=Ve(),{instance:n}=ct(),{createFlowise:r}=Sg(),[s,o]=y.useState(!1),[l,u]=y.useState(!1),d=async f=>{try{if(!n||!n.name)throw new Error("instance not found");o(!0);const h={enabled:f.enabled,description:f.description,apiUrl:f.apiUrl,apiKey:f.apiKey,triggerType:f.triggerType,triggerOperator:f.triggerOperator||"",triggerValue:f.triggerValue||"",expire:f.expire||0,keywordFinish:f.keywordFinish||"",delayMessage:f.delayMessage||0,unknownMessage:f.unknownMessage||"",listeningFromMe:f.listeningFromMe||!1,stopBotFromMe:f.stopBotFromMe||!1,keepOpen:f.keepOpen||!1,debounceTime:f.debounceTime||0,splitMessages:f.splitMessages||!1,timePerChar:f.timePerChar||0};await r({instanceName:n.name,token:n.token,data:h}),me.success(t("flowise.toast.success.create")),u(!1),e()}catch(h){console.error("Error:",h),me.error(`Error: ${h?.response?.data?.response?.message}`)}finally{o(!1)}};return i.jsxs(Pt,{open:l,onOpenChange:u,children:[i.jsx(Bt,{asChild:!0,children:i.jsxs(se,{size:"sm",children:[i.jsx(cs,{size:16,className:"mr-1"}),i.jsx("span",{className:"hidden sm:inline",children:t("flowise.button.create")})]})}),i.jsxs(Nt,{className:"overflow-y-auto sm:max-h-[600px] sm:max-w-[740px]",children:[i.jsx(Mt,{children:i.jsx(zt,{children:t("flowise.form.title")})}),i.jsx(OI,{onSubmit:d,isModal:!0,isLoading:s})]})]})}const Tne=e=>["flowise","getFlowise",JSON.stringify(e)],Nne=async({instanceName:e,token:t,flowiseId:n})=>{const r=await Ee.get(`/flowise/fetch/${n}/${e}`,{headers:{apiKey:t}});return Array.isArray(r.data)?r.data[0]:r.data},Mne=e=>{const{instanceName:t,token:n,flowiseId:r,...s}=e;return mt({...s,queryKey:Tne({instanceName:t}),queryFn:()=>Nne({instanceName:t,token:n,flowiseId:r}),enabled:!!t&&!!r&&(e.enabled??!0)})};function _ne({flowiseId:e,resetTable:t}){const{t:n}=Ve(),{instance:r}=ct(),s=dn(),[o,l]=y.useState(!1),{deleteFlowise:u,updateFlowise:d}=Sg(),{data:f,isLoading:h}=Mne({instanceName:r?.name,flowiseId:e}),m=y.useMemo(()=>({enabled:f?.enabled??!0,description:f?.description??"",apiUrl:f?.apiUrl??"",apiKey:f?.apiKey??"",triggerType:f?.triggerType??"",triggerOperator:f?.triggerOperator??"",triggerValue:f?.triggerValue,expire:f?.expire??0,keywordFinish:f?.keywordFinish,delayMessage:f?.delayMessage??0,unknownMessage:f?.unknownMessage,listeningFromMe:f?.listeningFromMe,stopBotFromMe:f?.stopBotFromMe,keepOpen:f?.keepOpen,debounceTime:f?.debounceTime??0,splitMessages:f?.splitMessages??!1,timePerChar:f?.timePerChar??0}),[f?.apiKey,f?.apiUrl,f?.debounceTime,f?.delayMessage,f?.description,f?.enabled,f?.expire,f?.keepOpen,f?.keywordFinish,f?.listeningFromMe,f?.stopBotFromMe,f?.triggerOperator,f?.triggerType,f?.triggerValue,f?.unknownMessage,f?.splitMessages,f?.timePerChar]),g=async b=>{try{if(r&&r.name&&e){const w={enabled:b.enabled,description:b.description,apiUrl:b.apiUrl,apiKey:b.apiKey,triggerType:b.triggerType,triggerOperator:b.triggerOperator||"",triggerValue:b.triggerValue||"",expire:b.expire||0,keywordFinish:b.keywordFinish||"",delayMessage:b.delayMessage||1e3,unknownMessage:b.unknownMessage||"",listeningFromMe:b.listeningFromMe||!1,stopBotFromMe:b.stopBotFromMe||!1,keepOpen:b.keepOpen||!1,debounceTime:b.debounceTime||0,splitMessages:b.splitMessages||!1,timePerChar:b.timePerChar||0};await d({instanceName:r.name,flowiseId:e,data:w}),me.success(n("flowise.toast.success.update")),t(),s(`/manager/instance/${r.id}/flowise/${e}`)}else console.error("Token not found")}catch(w){console.error("Error:",w),me.error(`Error: ${w?.response?.data?.response?.message}`)}},x=async()=>{try{r&&r.name&&e?(await u({instanceName:r.name,flowiseId:e}),me.success(n("flowise.toast.success.delete")),l(!1),t(),s(`/manager/instance/${r.id}/flowise`)):console.error("instance not found")}catch(b){console.error("Erro ao excluir dify:",b)}};return h?i.jsx(On,{}):i.jsx("div",{className:"m-4",children:i.jsx(OI,{initialData:m,onSubmit:g,flowiseId:e,handleDelete:x,isModal:!1,isLoading:h,openDeletionDialog:o,setOpenDeletionDialog:l})})}function kk(){const{t:e}=Ve(),t=zo("(min-width: 768px)"),{instance:n}=ct(),{flowiseId:r}=ls(),{data:s,isLoading:o,refetch:l}=RI({instanceName:n?.name}),u=dn(),d=h=>{n&&u(`/manager/instance/${n.id}/flowise/${h}`)},f=()=>{l()};return i.jsxs("main",{className:"pt-5",children:[i.jsxs("div",{className:"mb-1 flex items-center justify-between",children:[i.jsx("h3",{className:"text-lg font-medium",children:e("flowise.title")}),i.jsxs("div",{className:"flex items-center justify-end gap-2",children:[i.jsx(PI,{}),i.jsx(wne,{}),i.jsx(jne,{resetTable:f})]})]}),i.jsx($t,{className:"my-4"}),i.jsxs($o,{direction:t?"horizontal":"vertical",children:[i.jsx(Hn,{defaultSize:35,className:"pr-4",children:i.jsx("div",{className:"flex flex-col gap-3",children:o?i.jsx(On,{}):i.jsx(i.Fragment,{children:s&&s.length>0&&Array.isArray(s)?s.map(h=>i.jsx(se,{className:"flex h-auto flex-col items-start justify-start",onClick:()=>d(`${h.id}`),variant:r===h.id?"secondary":"outline",children:i.jsx("h4",{className:"text-base",children:h.description||h.id})},h.id)):i.jsx(se,{variant:"link",children:e("flowise.table.none")})})})}),r&&i.jsxs(i.Fragment,{children:[i.jsx(Bo,{withHandle:!0,className:"border border-border"}),i.jsx(Hn,{children:i.jsx(_ne,{flowiseId:r,resetTable:f})})]})]})]})}const Rne=e=>["n8n","fetchN8n",JSON.stringify(e)],Pne=async({instanceName:e,token:t})=>(await Ee.get(`/n8n/find/${e}`,{headers:{apikey:t}})).data,II=e=>{const{instanceName:t,token:n,...r}=e;return mt({...r,queryKey:Rne({instanceName:t,token:n}),queryFn:()=>Pne({instanceName:t,token:n}),enabled:!!t&&(e.enabled??!0)})},One=async({instanceName:e,token:t,data:n})=>(await Ee.post(`/n8n/create/${e}`,n,{headers:{apikey:t}})).data,Ine=async({instanceName:e,n8nId:t,data:n})=>(await Ee.put(`/n8n/update/${t}/${e}`,n)).data,Ane=async({instanceName:e,n8nId:t})=>(await Ee.delete(`/n8n/delete/${t}/${e}`)).data,Dne=async({instanceName:e,token:t,data:n})=>(await Ee.post(`/n8n/settings/${e}`,n,{headers:{apikey:t}})).data,Fne=async({instanceName:e,token:t,remoteJid:n,status:r})=>(await Ee.post(`/n8n/changeStatus/${e}`,{remoteJid:n,status:r},{headers:{apikey:t}})).data;function Cg(){const e=nt(Dne,{invalidateKeys:[["n8n","fetchDefaultSettings"]]}),t=nt(Fne,{invalidateKeys:[["n8n","getN8n"],["n8n","fetchSessions"]]}),n=nt(Ane,{invalidateKeys:[["n8n","getN8n"],["n8n","fetchN8n"],["n8n","fetchSessions"]]}),r=nt(Ine,{invalidateKeys:[["n8n","getN8n"],["n8n","fetchN8n"],["n8n","fetchSessions"]]}),s=nt(One,{invalidateKeys:[["n8n","fetchN8n"]]});return{setDefaultSettingsN8n:e,changeStatusN8n:t,deleteN8n:n,updateN8n:r,createN8n:s}}const Lne=e=>["n8n","fetchDefaultSettings",JSON.stringify(e)],$ne=async({instanceName:e,token:t})=>(await Ee.get(`/n8n/fetchSettings/${e}`,{headers:{apikey:t}})).data,Bne=e=>{const{instanceName:t,token:n,...r}=e;return mt({...r,queryKey:Lne({instanceName:t,token:n}),queryFn:()=>$ne({instanceName:t,token:n}),enabled:!!t})},zne=P.object({expire:P.string(),keywordFinish:P.string(),delayMessage:P.string(),unknownMessage:P.string(),listeningFromMe:P.boolean(),stopBotFromMe:P.boolean(),keepOpen:P.boolean(),debounceTime:P.string(),ignoreJids:P.array(P.string()).default([]),n8nIdFallback:P.union([P.null(),P.string()]).optional(),splitMessages:P.boolean(),timePerChar:P.string()});function Une(){const{t:e}=Ve(),{instance:t}=ct(),{setDefaultSettingsN8n:n}=Cg(),[r,s]=y.useState(!1),{data:o,refetch:l}=II({instanceName:t?.name,token:t?.token,enabled:r}),{data:u,refetch:d}=Bne({instanceName:t?.name,token:t?.token}),f=on({resolver:an(zne),defaultValues:{expire:"0",keywordFinish:e("n8n.form.examples.keywordFinish"),delayMessage:"1000",unknownMessage:e("n8n.form.examples.unknownMessage"),listeningFromMe:!1,stopBotFromMe:!1,keepOpen:!1,debounceTime:"0",ignoreJids:[],n8nIdFallback:void 0,splitMessages:!1,timePerChar:"0"}});y.useEffect(()=>{u&&f.reset({expire:u?.expire?u.expire.toString():"0",keywordFinish:u.keywordFinish,delayMessage:u.delayMessage?u.delayMessage.toString():"0",unknownMessage:u.unknownMessage,listeningFromMe:u.listeningFromMe,stopBotFromMe:u.stopBotFromMe,keepOpen:u.keepOpen,debounceTime:u.debounceTime?u.debounceTime.toString():"0",ignoreJids:u.ignoreJids,n8nIdFallback:u.n8nIdFallback,splitMessages:u.splitMessages,timePerChar:u.timePerChar?u.timePerChar.toString():"0"})},[u]);const h=async g=>{try{if(!t||!t.name)throw new Error("instance not found.");const x={expire:parseInt(g.expire),keywordFinish:g.keywordFinish,delayMessage:parseInt(g.delayMessage),unknownMessage:g.unknownMessage,listeningFromMe:g.listeningFromMe,stopBotFromMe:g.stopBotFromMe,keepOpen:g.keepOpen,debounceTime:parseInt(g.debounceTime),n8nIdFallback:g.n8nIdFallback||void 0,ignoreJids:g.ignoreJids,splitMessages:g.splitMessages,timePerChar:parseInt(g.timePerChar)};await n({instanceName:t.name,token:t.token,data:x}),me.success(e("n8n.toast.defaultSettings.success"))}catch(x){console.error("Error:",x),me.error(`Error: ${x?.response?.data?.response?.message}`)}};function m(){d(),l()}return i.jsxs(Pt,{open:r,onOpenChange:s,children:[i.jsx(Bt,{asChild:!0,children:i.jsxs(se,{variant:"secondary",size:"sm",children:[i.jsx(Oo,{size:16,className:"mr-1"}),i.jsx("span",{className:"hidden sm:inline",children:e("n8n.defaultSettings")})]})}),i.jsxs(Nt,{className:"overflow-y-auto sm:max-h-[600px] sm:max-w-[740px]",onCloseAutoFocus:m,children:[i.jsx(Mt,{children:i.jsx(zt,{children:e("n8n.defaultSettings")})}),i.jsx(Gn,{...f,children:i.jsxs("form",{className:"w-full space-y-6",onSubmit:f.handleSubmit(h),children:[i.jsx("div",{children:i.jsxs("div",{className:"space-y-4",children:[i.jsx(Jt,{name:"n8nIdFallback",label:e("n8n.form.n8nIdFallback.label"),options:o?.filter(g=>!!g.id).map(g=>({label:g.description,value:g.id}))??[]}),i.jsx(le,{name:"expire",label:e("n8n.form.expire.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(le,{name:"keywordFinish",label:e("n8n.form.keywordFinish.label"),children:i.jsx(ne,{})}),i.jsx(le,{name:"delayMessage",label:e("n8n.form.delayMessage.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(le,{name:"unknownMessage",label:e("n8n.form.unknownMessage.label"),children:i.jsx(ne,{})}),i.jsx(Pe,{name:"listeningFromMe",label:e("n8n.form.listeningFromMe.label"),reverse:!0}),i.jsx(Pe,{name:"stopBotFromMe",label:e("n8n.form.stopBotFromMe.label"),reverse:!0}),i.jsx(Pe,{name:"keepOpen",label:e("n8n.form.keepOpen.label"),reverse:!0}),i.jsx(le,{name:"debounceTime",label:e("n8n.form.debounceTime.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(Pe,{name:"splitMessages",label:e("n8n.form.splitMessages.label"),reverse:!0}),i.jsx(le,{name:"timePerChar",label:e("n8n.form.timePerChar.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(Da,{name:"ignoreJids",label:e("n8n.form.ignoreJids.label"),placeholder:e("n8n.form.ignoreJids.placeholder")})]})}),i.jsx(Yt,{children:i.jsx(se,{type:"submit",children:e("n8n.button.save")})})]})})]})]})}const Vne=e=>["n8n","fetchSessions",JSON.stringify(e)],Hne=async({n8nId:e,instanceName:t})=>(await Ee.get(`/n8n/fetchSessions/${e}/${t}`)).data,qne=e=>{const{n8nId:t,instanceName:n,...r}=e;return mt({...r,queryKey:Vne({n8nId:t,instanceName:n}),queryFn:()=>Hne({n8nId:t,instanceName:n}),enabled:!!n&&!!t&&(e.enabled??!0),staleTime:1e3*10})};function AI({n8nId:e}){const{t}=Ve(),{instance:n}=ct(),{changeStatusN8n:r}=Cg(),[s,o]=y.useState([]),{data:l,refetch:u}=qne({n8nId:e,instanceName:n?.name}),[d,f]=y.useState(!1),[h,m]=y.useState("");function g(){u()}const x=async(w,C)=>{try{if(!n)return;await r({instanceName:n.name,token:n.token,remoteJid:w,status:C}),me.success(t("n8n.toast.success.status")),g()}catch(k){console.error("Error:",k),me.error(`Error : ${k?.response?.data?.response?.message}`)}},b=[{accessorKey:"remoteJid",header:()=>i.jsx("div",{className:"text-center",children:t("n8n.sessions.table.remoteJid")}),cell:({row:w})=>i.jsx("div",{children:w.getValue("remoteJid")})},{accessorKey:"pushName",header:()=>i.jsx("div",{className:"text-center",children:t("n8n.sessions.table.pushName")}),cell:({row:w})=>i.jsx("div",{children:w.getValue("pushName")})},{accessorKey:"sessionId",header:()=>i.jsx("div",{className:"text-center",children:t("n8n.sessions.table.sessionId")}),cell:({row:w})=>i.jsx("div",{children:w.getValue("sessionId")})},{accessorKey:"status",header:()=>i.jsx("div",{className:"text-center",children:t("n8n.sessions.table.status")}),cell:({row:w})=>i.jsx("div",{children:w.getValue("status")})},{id:"actions",enableHiding:!1,cell:({row:w})=>{const C=w.original;return i.jsxs(Kr,{children:[i.jsx(Wr,{asChild:!0,children:i.jsxs(se,{variant:"ghost",className:"h-8 w-8 p-0",children:[i.jsx("span",{className:"sr-only",children:t("n8n.sessions.table.actions.title")}),i.jsx(Pa,{className:"h-4 w-4"})]})}),i.jsxs(hr,{align:"end",children:[i.jsx(Ao,{children:t("n8n.sessions.table.actions.title")}),i.jsx(Xs,{}),C.status!=="opened"&&i.jsxs(wt,{onClick:()=>x(C.remoteJid,"opened"),children:[i.jsx(Fi,{className:"mr-2 h-4 w-4"}),t("n8n.sessions.table.actions.open")]}),C.status!=="paused"&&C.status!=="closed"&&i.jsxs(wt,{onClick:()=>x(C.remoteJid,"paused"),children:[i.jsx(Di,{className:"mr-2 h-4 w-4"}),t("n8n.sessions.table.actions.pause")]}),C.status!=="closed"&&i.jsxs(wt,{onClick:()=>x(C.remoteJid,"closed"),children:[i.jsx(Oi,{className:"mr-2 h-4 w-4"}),t("n8n.sessions.table.actions.close")]}),i.jsxs(wt,{onClick:()=>x(C.remoteJid,"delete"),children:[i.jsx(Ii,{className:"mr-2 h-4 w-4"}),t("n8n.sessions.table.actions.delete")]})]})]})}}];return i.jsxs(Pt,{open:d,onOpenChange:f,children:[i.jsx(Bt,{asChild:!0,children:i.jsxs(se,{variant:"secondary",size:"sm",children:[i.jsx(Ai,{size:16,className:"mr-1"}),i.jsx("span",{className:"hidden sm:inline",children:t("n8n.sessions.label")})]})}),i.jsxs(Nt,{className:"overflow-y-auto sm:max-w-[950px]",onCloseAutoFocus:g,children:[i.jsx(Mt,{children:i.jsx(zt,{children:t("n8n.sessions.label")})}),i.jsxs("div",{children:[i.jsxs("div",{className:"flex items-center justify-between gap-6 p-5",children:[i.jsx(ne,{placeholder:t("n8n.sessions.search"),value:h,onChange:w=>m(w.target.value)}),i.jsx(se,{variant:"outline",onClick:g,size:"icon",children:i.jsx(Li,{})})]}),i.jsx($a,{columns:b,data:l??[],onSortingChange:o,state:{sorting:s,globalFilter:h},onGlobalFilterChange:m,enableGlobalFilter:!0,noResultsMessage:t("n8n.sessions.table.none")})]})]})]})}const Kne=P.object({enabled:P.boolean(),description:P.string(),webhookUrl:P.string(),basicAuthUser:P.string(),basicAuthPass:P.string(),triggerType:P.string(),triggerOperator:P.string().optional(),triggerValue:P.string().optional(),expire:P.coerce.number().optional(),keywordFinish:P.string().optional(),delayMessage:P.coerce.number().optional(),unknownMessage:P.string().optional(),listeningFromMe:P.boolean().optional(),stopBotFromMe:P.boolean().optional(),keepOpen:P.boolean().optional(),debounceTime:P.coerce.number().optional(),splitMessages:P.boolean().optional(),timePerChar:P.coerce.number().optional()});function DI({initialData:e,onSubmit:t,handleDelete:n,n8nId:r,isModal:s=!1,isLoading:o=!1,openDeletionDialog:l=!1,setOpenDeletionDialog:u=()=>{}}){const{t:d}=Ve(),f=on({resolver:an(Kne),defaultValues:e||{enabled:!0,description:"",webhookUrl:"",basicAuthUser:"",basicAuthPass:"",triggerType:"keyword",triggerOperator:"contains",triggerValue:"",expire:0,keywordFinish:"",delayMessage:0,unknownMessage:"",listeningFromMe:!1,stopBotFromMe:!1,keepOpen:!1,debounceTime:0,splitMessages:!1,timePerChar:0}}),h=f.watch("triggerType");return i.jsx(Gn,{...f,children:i.jsxs("form",{onSubmit:f.handleSubmit(t),className:"w-full space-y-6",children:[i.jsxs("div",{className:"space-y-4",children:[i.jsx(Pe,{name:"enabled",label:d("n8n.form.enabled.label"),reverse:!0}),i.jsx(le,{name:"description",label:d("n8n.form.description.label"),children:i.jsx(ne,{})}),i.jsxs("div",{className:"flex flex-col",children:[i.jsx("h3",{className:"my-4 text-lg font-medium",children:d("n8n.form.n8nSettings.label")}),i.jsx($t,{})]}),i.jsx(le,{name:"webhookUrl",label:d("n8n.form.webhookUrl.label"),required:!0,children:i.jsx(ne,{})}),i.jsxs("div",{className:"flex flex-col",children:[i.jsx("h3",{className:"my-4 text-lg font-medium",children:d("n8n.form.basicAuth.label")}),i.jsx($t,{})]}),i.jsxs("div",{className:"flex w-full flex-row gap-4",children:[i.jsx(le,{name:"basicAuthUser",label:d("n8n.form.basicAuthUser.label"),className:"flex-1",children:i.jsx(ne,{})}),i.jsx(le,{name:"basicAuthPass",label:d("n8n.form.basicAuthPass.label"),className:"flex-1",children:i.jsx(ne,{type:"password"})})]}),i.jsxs("div",{className:"flex flex-col",children:[i.jsx("h3",{className:"my-4 text-lg font-medium",children:d("n8n.form.triggerSettings.label")}),i.jsx($t,{})]}),i.jsx(Jt,{name:"triggerType",label:d("n8n.form.triggerType.label"),options:[{label:d("n8n.form.triggerType.keyword"),value:"keyword"},{label:d("n8n.form.triggerType.all"),value:"all"},{label:d("n8n.form.triggerType.advanced"),value:"advanced"},{label:d("n8n.form.triggerType.none"),value:"none"}]}),h==="keyword"&&i.jsxs(i.Fragment,{children:[i.jsx(Jt,{name:"triggerOperator",label:d("n8n.form.triggerOperator.label"),options:[{label:d("n8n.form.triggerOperator.contains"),value:"contains"},{label:d("n8n.form.triggerOperator.equals"),value:"equals"},{label:d("n8n.form.triggerOperator.startsWith"),value:"startsWith"},{label:d("n8n.form.triggerOperator.endsWith"),value:"endsWith"},{label:d("n8n.form.triggerOperator.regex"),value:"regex"}]}),i.jsx(le,{name:"triggerValue",label:d("n8n.form.triggerValue.label"),children:i.jsx(ne,{})})]}),h==="advanced"&&i.jsx(le,{name:"triggerValue",label:d("n8n.form.triggerConditions.label"),children:i.jsx(ne,{})}),i.jsxs("div",{className:"flex flex-col",children:[i.jsx("h3",{className:"my-4 text-lg font-medium",children:d("n8n.form.generalSettings.label")}),i.jsx($t,{})]}),i.jsx(le,{name:"expire",label:d("n8n.form.expire.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(le,{name:"keywordFinish",label:d("n8n.form.keywordFinish.label"),children:i.jsx(ne,{})}),i.jsx(le,{name:"delayMessage",label:d("n8n.form.delayMessage.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(le,{name:"unknownMessage",label:d("n8n.form.unknownMessage.label"),children:i.jsx(ne,{})}),i.jsx(Pe,{name:"listeningFromMe",label:d("n8n.form.listeningFromMe.label"),reverse:!0}),i.jsx(Pe,{name:"stopBotFromMe",label:d("n8n.form.stopBotFromMe.label"),reverse:!0}),i.jsx(Pe,{name:"keepOpen",label:d("n8n.form.keepOpen.label"),reverse:!0}),i.jsx(le,{name:"debounceTime",label:d("n8n.form.debounceTime.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(Pe,{name:"splitMessages",label:d("n8n.form.splitMessages.label"),reverse:!0}),f.watch("splitMessages")&&i.jsx(le,{name:"timePerChar",label:d("n8n.form.timePerChar.label"),children:i.jsx(ne,{type:"number"})})]}),s&&i.jsx(Yt,{children:i.jsx(se,{disabled:o,type:"submit",children:d(o?"n8n.button.saving":"n8n.button.save")})}),!s&&i.jsxs("div",{children:[i.jsx(AI,{n8nId:r}),i.jsxs("div",{className:"mt-5 flex items-center gap-3",children:[i.jsxs(Pt,{open:l,onOpenChange:u,children:[i.jsx(Bt,{asChild:!0,children:i.jsx(se,{variant:"destructive",size:"sm",children:d("n8n.button.delete")})}),i.jsx(Nt,{children:i.jsxs(Mt,{children:[i.jsx(zt,{children:d("modal.delete.title")}),i.jsx(eo,{children:d("modal.delete.messageSingle")}),i.jsxs(Yt,{children:[i.jsx(se,{size:"sm",variant:"outline",onClick:()=>u(!1),children:d("button.cancel")}),i.jsx(se,{variant:"destructive",onClick:n,children:d("button.delete")})]})]})})]}),i.jsx(se,{disabled:o,type:"submit",children:d(o?"n8n.button.saving":"n8n.button.update")})]})]})]})})}function Wne({resetTable:e}){const{t}=Ve(),{instance:n}=ct(),[r,s]=y.useState(!1),[o,l]=y.useState(!1),{createN8n:u}=Cg(),d=async f=>{try{if(!n||!n.name)throw new Error("instance not found");s(!0);const h={enabled:f.enabled,description:f.description,webhookUrl:f.webhookUrl,basicAuthUser:f.basicAuthUser,basicAuthPass:f.basicAuthPass,triggerType:f.triggerType,triggerOperator:f.triggerOperator||"",triggerValue:f.triggerValue||"",expire:f.expire||0,keywordFinish:f.keywordFinish||"",delayMessage:f.delayMessage||0,unknownMessage:f.unknownMessage||"",listeningFromMe:f.listeningFromMe||!1,stopBotFromMe:f.stopBotFromMe||!1,keepOpen:f.keepOpen||!1,debounceTime:f.debounceTime||0,splitMessages:f.splitMessages||!1,timePerChar:f.timePerChar||0};await u({instanceName:n.name,token:n.token,data:h}),me.success(t("n8n.toast.success.create")),l(!1),e()}catch(h){console.error("Error:",h),me.error(`Error: ${h?.response?.data?.response?.message}`)}finally{s(!1)}};return i.jsxs(Pt,{open:o,onOpenChange:l,children:[i.jsx(Bt,{asChild:!0,children:i.jsxs(se,{size:"sm",children:[i.jsx(cs,{size:16,className:"mr-1"}),i.jsx("span",{className:"hidden sm:inline",children:t("n8n.button.create")})]})}),i.jsxs(Nt,{className:"overflow-y-auto sm:max-h-[600px] sm:max-w-[740px]",children:[i.jsx(Mt,{children:i.jsx(zt,{children:t("n8n.form.title")})}),i.jsx(DI,{onSubmit:d,isModal:!0,isLoading:r})]})]})}const Gne=e=>["n8n","getN8n",JSON.stringify(e)],Jne=async({n8nId:e,instanceName:t})=>(await Ee.get(`/n8n/fetch/${e}/${t}`)).data,Qne=e=>{const{n8nId:t,instanceName:n,...r}=e;return mt({...r,queryKey:Gne({n8nId:t,instanceName:n}),queryFn:()=>Jne({n8nId:t,instanceName:n}),enabled:!!n&&!!t&&(e.enabled??!0)})};function Zne({n8nId:e,resetTable:t}){const{t:n}=Ve(),{instance:r}=ct(),s=dn(),[o,l]=y.useState(!1),{deleteN8n:u,updateN8n:d}=Cg(),{data:f,isLoading:h}=Qne({n8nId:e,instanceName:r?.name}),m=y.useMemo(()=>({enabled:!!f?.enabled,description:f?.description??"",webhookUrl:f?.webhookUrl??"",basicAuthUser:f?.basicAuthUser??"",basicAuthPass:f?.basicAuthPass??"",triggerType:f?.triggerType??"",triggerOperator:f?.triggerOperator??"",triggerValue:f?.triggerValue??"",expire:f?.expire??0,keywordFinish:f?.keywordFinish??"",delayMessage:f?.delayMessage??0,unknownMessage:f?.unknownMessage??"",listeningFromMe:!!f?.listeningFromMe,stopBotFromMe:!!f?.stopBotFromMe,keepOpen:!!f?.keepOpen,debounceTime:f?.debounceTime??0,splitMessages:f?.splitMessages??!1,timePerChar:f?.timePerChar??0}),[f?.webhookUrl,f?.basicAuthUser,f?.basicAuthPass,f?.debounceTime,f?.delayMessage,f?.description,f?.enabled,f?.expire,f?.keepOpen,f?.keywordFinish,f?.listeningFromMe,f?.stopBotFromMe,f?.triggerOperator,f?.triggerType,f?.triggerValue,f?.unknownMessage,f?.splitMessages,f?.timePerChar]),g=async b=>{try{if(r&&r.name&&e){const w={enabled:b.enabled,description:b.description,webhookUrl:b.webhookUrl,basicAuthUser:b.basicAuthUser,basicAuthPass:b.basicAuthPass,triggerType:b.triggerType,triggerOperator:b.triggerOperator||"",triggerValue:b.triggerValue||"",expire:b.expire||0,keywordFinish:b.keywordFinish||"",delayMessage:b.delayMessage||1e3,unknownMessage:b.unknownMessage||"",listeningFromMe:b.listeningFromMe||!1,stopBotFromMe:b.stopBotFromMe||!1,keepOpen:b.keepOpen||!1,debounceTime:b.debounceTime||0,splitMessages:b.splitMessages||!1,timePerChar:b.timePerChar||0};await d({instanceName:r.name,n8nId:e,data:w}),me.success(n("n8n.toast.success.update")),t(),s(`/manager/instance/${r.id}/n8n/${e}`)}else console.error("Token not found")}catch(w){console.error("Error:",w),me.error(`Error: ${w?.response?.data?.response?.message}`)}},x=async()=>{try{r&&r.name&&e?(await u({instanceName:r.name,n8nId:e}),me.success(n("n8n.toast.success.delete")),l(!1),t(),s(`/manager/instance/${r.id}/n8n`)):console.error("instance not found")}catch(b){console.error("Erro ao excluir n8n:",b)}};return h?i.jsx(On,{}):i.jsx("div",{className:"m-4",children:i.jsx(DI,{initialData:m,onSubmit:g,n8nId:e,handleDelete:x,isModal:!1,isLoading:h,openDeletionDialog:o,setOpenDeletionDialog:l})})}function jk(){const{t:e}=Ve(),t=zo("(min-width: 768px)"),{instance:n}=ct(),{n8nId:r}=ls(),{data:s,refetch:o,isLoading:l}=II({instanceName:n?.name}),u=dn(),d=h=>{n&&u(`/manager/instance/${n.id}/n8n/${h}`)},f=()=>{o()};return i.jsxs("main",{className:"pt-5",children:[i.jsxs("div",{className:"mb-1 flex items-center justify-between",children:[i.jsx("h3",{className:"text-lg font-medium",children:e("n8n.title")}),i.jsxs("div",{className:"flex items-center justify-end gap-2",children:[i.jsx(AI,{}),i.jsx(Une,{}),i.jsx(Wne,{resetTable:f})]})]}),i.jsx($t,{className:"my-4"}),i.jsxs($o,{direction:t?"horizontal":"vertical",children:[i.jsx(Hn,{defaultSize:35,className:"pr-4",children:i.jsx("div",{className:"flex flex-col gap-3",children:l?i.jsx(On,{}):i.jsx(i.Fragment,{children:s&&s.length>0&&Array.isArray(s)?s.map(h=>i.jsx(se,{className:"flex h-auto flex-col items-start justify-start",onClick:()=>d(`${h.id}`),variant:r===h.id?"secondary":"outline",children:i.jsx("h4",{className:"text-base",children:h.description||h.id})},h.id)):i.jsx(se,{variant:"link",children:e("n8n.table.none")})})})}),r&&i.jsxs(i.Fragment,{children:[i.jsx(Bo,{withHandle:!0,className:"border border-border"}),i.jsx(Hn,{children:i.jsx(Zne,{n8nId:r,resetTable:f})})]})]})]})}const Yne=e=>["openai","findOpenai",JSON.stringify(e)],Xne=async({instanceName:e,token:t})=>(await Ee.get(`/openai/find/${e}`,{headers:{apiKey:t}})).data,FI=e=>{const{instanceName:t,token:n,...r}=e;return mt({...r,queryKey:Yne({instanceName:t}),queryFn:()=>Xne({instanceName:t,token:n}),enabled:!!t&&(e.enabled??!0)})},ere=e=>["openai","findOpenaiCreds",JSON.stringify(e)],tre=async({instanceName:e,token:t})=>(await Ee.get(`/openai/creds/${e}`,{headers:{apiKey:t}})).data,dw=e=>{const{instanceName:t,token:n,...r}=e;return mt({staleTime:1e3*60*60*6,...r,queryKey:ere({instanceName:t}),queryFn:()=>tre({instanceName:t,token:n}),enabled:!!t&&(e.enabled??!0)})},nre=async({instanceName:e,token:t,data:n})=>(await Ee.post(`/openai/creds/${e}`,n,{headers:{apikey:t}})).data,rre=async({openaiCredsId:e,instanceName:t})=>(await Ee.delete(`/openai/creds/${e}/${t}`)).data,sre=async({instanceName:e,token:t,data:n})=>(await Ee.post(`/openai/create/${e}`,n,{headers:{apikey:t}})).data,ore=async({instanceName:e,token:t,openaiId:n,data:r})=>(await Ee.put(`/openai/update/${n}/${e}`,r,{headers:{apikey:t}})).data,are=async({instanceName:e,token:t,openaiId:n})=>(await Ee.delete(`/openai/delete/${n}/${e}`,{headers:{apikey:t}})).data,ire=async({instanceName:e,token:t,data:n})=>(await Ee.post(`/openai/settings/${e}`,n,{headers:{apikey:t}})).data,lre=async({instanceName:e,token:t,remoteJid:n,status:r})=>(await Ee.post(`/openai/changeStatus/${e}`,{remoteJid:n,status:r},{headers:{apikey:t}})).data;function Md(){const e=nt(ire,{invalidateKeys:[["openai","fetchDefaultSettings"]]}),t=nt(lre,{invalidateKeys:[["openai","getOpenai"],["openai","fetchSessions"]]}),n=nt(are,{invalidateKeys:[["openai","getOpenai"],["openai","findOpenai"],["openai","fetchSessions"]]}),r=nt(ore,{invalidateKeys:[["openai","getOpenai"],["openai","findOpenai"],["openai","fetchSessions"]]}),s=nt(sre,{invalidateKeys:[["openai","findOpenai"]]}),o=nt(nre,{invalidateKeys:[["openai","findOpenaiCreds"]]}),l=nt(rre,{invalidateKeys:[["openai","findOpenaiCreds"]]});return{setDefaultSettingsOpenai:e,changeStatusOpenai:t,deleteOpenai:n,updateOpenai:r,createOpenai:s,createOpenaiCreds:o,deleteOpenaiCreds:l}}const cre=P.object({name:P.string(),apiKey:P.string()});function LI({onCredentialsUpdate:e,showText:t=!0}){const{t:n}=Ve(),{instance:r}=ct(),{createOpenaiCreds:s,deleteOpenaiCreds:o}=Md(),[l,u]=y.useState(!1),[d,f]=y.useState([]),{data:h}=dw({instanceName:r?.name,enabled:l}),m=on({resolver:an(cre),defaultValues:{name:"",apiKey:""}}),g=async w=>{try{if(!r||!r.name)throw new Error("instance not found.");const C={name:w.name,apiKey:w.apiKey};await s({instanceName:r.name,token:r.token,data:C}),me.success(n("openai.toast.success.credentialsCreate")),m.reset(),e&&e()}catch(C){console.error("Error:",C),me.error(`Error: ${C?.response?.data?.response?.message}`)}},x=async w=>{if(!r?.name){me.error("Instance not found.");return}try{await o({openaiCredsId:w,instanceName:r?.name}),me.success(n("openai.toast.success.credentialsDelete")),e&&e()}catch(C){console.error("Error:",C),me.error(`Error: ${C?.response?.data?.response?.message}`)}},b=[{accessorKey:"name",header:({column:w})=>i.jsxs(se,{variant:"ghost",onClick:()=>w.toggleSorting(w.getIsSorted()==="asc"),children:[n("openai.credentials.table.name"),i.jsx(q$,{className:"ml-2 h-4 w-4"})]}),cell:({row:w})=>i.jsx("div",{children:w.getValue("name")})},{accessorKey:"apiKey",header:()=>i.jsx("div",{className:"text-right",children:n("openai.credentials.table.apiKey")}),cell:({row:w})=>i.jsxs("div",{children:[`${w.getValue("apiKey")}`.slice(0,20),"..."]})},{id:"actions",enableHiding:!1,cell:({row:w})=>{const C=w.original;return i.jsxs(Kr,{children:[i.jsx(Wr,{asChild:!0,children:i.jsxs(se,{variant:"ghost",className:"h-8 w-8 p-0",children:[i.jsx("span",{className:"sr-only",children:n("openai.credentials.table.actions.title")}),i.jsx(Pa,{className:"h-4 w-4"})]})}),i.jsxs(hr,{align:"end",children:[i.jsx(Ao,{children:n("openai.credentials.table.actions.title")}),i.jsx(Xs,{}),i.jsx(wt,{onClick:()=>x(C.id),children:n("openai.credentials.table.actions.delete")})]})]})}}];return i.jsxs(Pt,{open:l,onOpenChange:u,children:[i.jsx(Bt,{asChild:!0,children:i.jsx(se,{variant:"secondary",size:"sm",type:"button",children:t?i.jsxs(i.Fragment,{children:[i.jsx(mB,{size:16,className:"mr-1"}),i.jsx("span",{className:"hidden md:inline",children:n("openai.credentials.title")})]}):i.jsx(cs,{size:16})})}),i.jsxs(Nt,{className:"overflow-y-auto sm:max-h-[600px] sm:max-w-[740px]",children:[i.jsx(Mt,{children:i.jsx(zt,{children:n("openai.credentials.title")})}),i.jsx(Gn,{...m,children:i.jsx("div",{onClick:w=>w.stopPropagation(),onSubmit:w=>w.stopPropagation(),onKeyDown:w=>w.stopPropagation(),children:i.jsxs("form",{onSubmit:w=>{w.preventDefault(),w.stopPropagation(),m.handleSubmit(g)(w)},className:"w-full space-y-6",children:[i.jsx("div",{children:i.jsxs("div",{className:"grid gap-3 md:grid-cols-2",children:[i.jsx(le,{name:"name",label:n("openai.credentials.table.name"),children:i.jsx(ne,{})}),i.jsx(le,{name:"apiKey",label:n("openai.credentials.table.apiKey"),children:i.jsx(ne,{type:"password"})})]})}),i.jsx(Yt,{children:i.jsx(se,{type:"submit",children:n("openai.button.save")})})]})})}),i.jsx($t,{}),i.jsx("div",{children:i.jsx($a,{columns:b,data:h??[],onSortingChange:f,state:{sorting:d},noResultsMessage:n("openai.credentials.table.none")})})]})]})}const ure=e=>["openai","fetchDefaultSettings",JSON.stringify(e)],dre=async({instanceName:e,token:t})=>{const n=await Ee.get(`/openai/fetchSettings/${e}`,{headers:{apiKey:t}});return Array.isArray(n.data)?n.data[0]:n.data},fre=e=>{const{instanceName:t,token:n,...r}=e;return mt({...r,queryKey:ure({instanceName:t}),queryFn:()=>dre({instanceName:t,token:n}),enabled:!!t&&(e.enabled??!0)})},pre=P.object({openaiCredsId:P.string(),expire:P.coerce.number(),keywordFinish:P.string(),delayMessage:P.coerce.number().default(0),unknownMessage:P.string(),listeningFromMe:P.boolean(),stopBotFromMe:P.boolean(),keepOpen:P.boolean(),debounceTime:P.coerce.number(),speechToText:P.boolean(),ignoreJids:P.array(P.string()).default([]),openaiIdFallback:P.union([P.null(),P.string()]).optional(),splitMessages:P.boolean().optional(),timePerChar:P.coerce.number().optional()});function hre(){const{t:e}=Ve(),{instance:t}=ct(),{setDefaultSettingsOpenai:n}=Md(),[r,s]=y.useState(!1),{data:o,refetch:l}=fre({instanceName:t?.name,enabled:r}),{data:u,refetch:d}=FI({instanceName:t?.name,enabled:r}),{data:f}=dw({instanceName:t?.name,enabled:r}),h=on({resolver:an(pre),defaultValues:{openaiCredsId:"",expire:0,keywordFinish:e("openai.form.examples.keywordFinish"),delayMessage:1e3,unknownMessage:e("openai.form.examples.unknownMessage"),listeningFromMe:!1,stopBotFromMe:!1,keepOpen:!1,debounceTime:0,speechToText:!1,ignoreJids:[],openaiIdFallback:void 0,splitMessages:!1,timePerChar:0}});y.useEffect(()=>{o&&h.reset({openaiCredsId:o.openaiCredsId,expire:o?.expire??0,keywordFinish:o.keywordFinish,delayMessage:o.delayMessage??0,unknownMessage:o.unknownMessage,listeningFromMe:o.listeningFromMe,stopBotFromMe:o.stopBotFromMe,keepOpen:o.keepOpen,debounceTime:o.debounceTime??0,speechToText:o.speechToText,ignoreJids:o.ignoreJids,openaiIdFallback:o.openaiIdFallback,splitMessages:o.splitMessages,timePerChar:o.timePerChar??0})},[o]);const m=async x=>{try{if(!t||!t.name)throw new Error("instance not found.");const b={openaiCredsId:x.openaiCredsId,expire:x.expire,keywordFinish:x.keywordFinish,delayMessage:x.delayMessage,unknownMessage:x.unknownMessage,listeningFromMe:x.listeningFromMe,stopBotFromMe:x.stopBotFromMe,keepOpen:x.keepOpen,debounceTime:x.debounceTime,speechToText:x.speechToText,openaiIdFallback:x.openaiIdFallback||void 0,ignoreJids:x.ignoreJids,splitMessages:x.splitMessages,timePerChar:x.timePerChar};await n({instanceName:t.name,token:t.token,data:b}),me.success(e("openai.toast.defaultSettings.success"))}catch(b){console.error("Error:",b),me.error(`Error: ${b?.response?.data?.response?.message}`)}};function g(){l(),d()}return i.jsxs(Pt,{open:r,onOpenChange:s,children:[i.jsx(Bt,{asChild:!0,children:i.jsxs(se,{variant:"secondary",size:"sm",children:[i.jsx(Oo,{size:16,className:"mr-1"}),i.jsx("span",{className:"hidden md:inline",children:e("openai.defaultSettings")})]})}),i.jsxs(Nt,{className:"overflow-y-auto sm:max-h-[600px] sm:max-w-[740px]",onCloseAutoFocus:g,children:[i.jsx(Mt,{children:i.jsx(zt,{children:e("openai.defaultSettings")})}),i.jsx(Gn,{...h,children:i.jsxs("form",{className:"w-full space-y-6",onSubmit:h.handleSubmit(m),children:[i.jsx("div",{children:i.jsxs("div",{className:"space-y-4",children:[i.jsx(Jt,{name:"openaiCredsId",label:e("openai.form.openaiCredsId.label"),options:f?.filter(x=>!!x.id).map(x=>({label:x.name?x.name:x.apiKey.substring(0,15)+"...",value:x.id}))||[]}),i.jsx(Jt,{name:"openaiIdFallback",label:e("openai.form.openaiIdFallback.label"),options:u?.filter(x=>!!x.id).map(x=>({label:x.description,value:x.id}))??[]}),i.jsx(le,{name:"expire",label:e("openai.form.expire.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(le,{name:"keywordFinish",label:e("openai.form.keywordFinish.label"),children:i.jsx(ne,{})}),i.jsx(le,{name:"delayMessage",label:e("openai.form.delayMessage.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(le,{name:"unknownMessage",label:e("openai.form.unknownMessage.label"),children:i.jsx(ne,{})}),i.jsx(Pe,{name:"listeningFromMe",label:e("openai.form.listeningFromMe.label"),reverse:!0}),i.jsx(Pe,{name:"stopBotFromMe",label:e("openai.form.stopBotFromMe.label"),reverse:!0}),i.jsx(Pe,{name:"keepOpen",label:e("openai.form.keepOpen.label"),reverse:!0}),i.jsx(Pe,{name:"speechToText",label:e("openai.form.speechToText.label"),reverse:!0}),i.jsx(le,{name:"debounceTime",label:e("openai.form.debounceTime.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(Pe,{name:"splitMessages",label:e("openai.form.splitMessages.label"),reverse:!0}),h.watch("splitMessages")&&i.jsx(le,{name:"timePerChar",label:e("openai.form.timePerChar.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(Da,{name:"ignoreJids",label:e("openai.form.ignoreJids.label"),placeholder:e("openai.form.ignoreJids.placeholder")})]})}),i.jsx(Yt,{children:i.jsx(se,{type:"submit",children:e("openai.button.save")})})]})})]})]})}const gre=e=>["openai","getModels",JSON.stringify(e)],mre=async({instanceName:e,openaiCredsId:t,token:n})=>{const r=t?{openaiCredsId:t}:{};return(await Ee.get(`/openai/getModels/${e}`,{headers:{apiKey:n},params:r})).data},vre=e=>{const{instanceName:t,openaiCredsId:n,token:r,...s}=e;return mt({staleTime:1e3*60*60*6,...s,queryKey:gre({instanceName:t,openaiCredsId:n}),queryFn:()=>mre({instanceName:t,openaiCredsId:n,token:r}),enabled:!!t&&!!n&&(e.enabled??!0)})},yre=e=>["openai","fetchSessions",JSON.stringify(e)],bre=async({instanceName:e,openaiId:t,token:n})=>(await Ee.get(`/openai/fetchSessions/${t}/${e}`,{headers:{apiKey:n}})).data,xre=e=>{const{instanceName:t,token:n,openaiId:r,...s}=e;return mt({...s,queryKey:yre({instanceName:t}),queryFn:()=>bre({instanceName:t,token:n,openaiId:r}),enabled:!!t&&!!r&&(e.enabled??!0)})};function $I({openaiId:e}){const{t}=Ve(),{instance:n}=ct(),{changeStatusOpenai:r}=Md(),[s,o]=y.useState([]),[l,u]=y.useState(!1),{data:d,refetch:f}=xre({instanceName:n?.name,openaiId:e,enabled:l}),[h,m]=y.useState("");function g(){f()}const x=async(w,C)=>{try{if(!n)return;await r({instanceName:n.name,token:n.token,remoteJid:w,status:C}),me.success(t("openai.toast.success.status")),g()}catch(k){console.error("Error:",k),me.error(`Error : ${k?.response?.data?.response?.message}`)}},b=[{accessorKey:"remoteJid",header:()=>i.jsx("div",{className:"text-center",children:t("openai.sessions.table.remoteJid")}),cell:({row:w})=>i.jsx("div",{children:w.getValue("remoteJid")})},{accessorKey:"pushName",header:()=>i.jsx("div",{className:"text-center",children:t("openai.sessions.table.pushName")}),cell:({row:w})=>i.jsx("div",{children:w.getValue("pushName")})},{accessorKey:"sessionId",header:()=>i.jsx("div",{className:"text-center",children:t("openai.sessions.table.sessionId")}),cell:({row:w})=>i.jsx("div",{children:w.getValue("sessionId")})},{accessorKey:"status",header:()=>i.jsx("div",{className:"text-center",children:t("openai.sessions.table.status")}),cell:({row:w})=>i.jsx("div",{children:w.getValue("status")})},{id:"actions",enableHiding:!1,cell:({row:w})=>{const C=w.original;return i.jsxs(Kr,{children:[i.jsx(Wr,{asChild:!0,children:i.jsxs(se,{variant:"ghost",size:"icon",children:[i.jsx("span",{className:"sr-only",children:t("openai.sessions.table.actions.title")}),i.jsx(Pa,{className:"h-4 w-4"})]})}),i.jsxs(hr,{align:"end",children:[i.jsx(Ao,{children:t("openai.sessions.table.actions.title")}),i.jsx(Xs,{}),C.status!=="opened"&&i.jsxs(wt,{onClick:()=>x(C.remoteJid,"opened"),children:[i.jsx(Fi,{className:"mr-2 h-4 w-4"}),t("openai.sessions.table.actions.open")]}),C.status!=="paused"&&C.status!=="closed"&&i.jsxs(wt,{onClick:()=>x(C.remoteJid,"paused"),children:[i.jsx(Di,{className:"mr-2 h-4 w-4"}),t("openai.sessions.table.actions.pause")]}),C.status!=="closed"&&i.jsxs(wt,{onClick:()=>x(C.remoteJid,"closed"),children:[i.jsx(Oi,{className:"mr-2 h-4 w-4"}),t("openai.sessions.table.actions.close")]}),i.jsxs(wt,{onClick:()=>x(C.remoteJid,"delete"),children:[i.jsx(Ii,{className:"mr-2 h-4 w-4"}),t("openai.sessions.table.actions.delete")]})]})]})}}];return i.jsxs(Pt,{open:l,onOpenChange:u,children:[i.jsx(Bt,{asChild:!0,children:i.jsxs(se,{variant:"secondary",size:"sm",children:[i.jsx(Ai,{size:16,className:"mr-1"}),i.jsx("span",{className:"hidden md:inline",children:t("openai.sessions.label")})]})}),i.jsxs(Nt,{className:"overflow-y-auto sm:max-w-[950px]",onCloseAutoFocus:g,children:[i.jsx(Mt,{children:i.jsx(zt,{children:t("openai.sessions.label")})}),i.jsxs("div",{children:[i.jsxs("div",{className:"flex items-center justify-between gap-6 p-5",children:[i.jsx(ne,{placeholder:t("openai.sessions.search"),value:h,onChange:w=>m(w.target.value)}),i.jsx(se,{variant:"outline",onClick:g,size:"icon",children:i.jsx(Li,{size:16})})]}),i.jsx($a,{columns:b,data:d??[],onSortingChange:o,state:{sorting:s,globalFilter:h},onGlobalFilterChange:m,enableGlobalFilter:!0,noResultsMessage:t("openai.sessions.table.none")})]})]})]})}const wre=P.object({enabled:P.boolean(),description:P.string(),openaiCredsId:P.string(),botType:P.string(),assistantId:P.string().optional(),functionUrl:P.string().optional(),model:P.string().optional(),systemMessages:P.string().optional(),assistantMessages:P.string().optional(),userMessages:P.string().optional(),maxTokens:P.coerce.number().optional(),triggerType:P.string(),triggerOperator:P.string().optional(),triggerValue:P.string().optional(),expire:P.coerce.number().optional(),keywordFinish:P.string().optional(),delayMessage:P.coerce.number().optional(),unknownMessage:P.string().optional(),listeningFromMe:P.boolean().optional(),stopBotFromMe:P.boolean().optional(),keepOpen:P.boolean().optional(),debounceTime:P.coerce.number().optional(),splitMessages:P.boolean().optional(),timePerChar:P.coerce.number().optional()});function BI({initialData:e,onSubmit:t,handleDelete:n,openaiId:r,isModal:s=!1,isLoading:o=!1,openDeletionDialog:l=!1,setOpenDeletionDialog:u=()=>{},open:d}){const{t:f}=Ve(),{instance:h}=ct(),[m,g]=y.useState(!1),{data:x,refetch:b}=dw({instanceName:h?.name,enabled:d}),w=on({resolver:an(wre),defaultValues:e||{enabled:!0,description:"",openaiCredsId:"",botType:"assistant",assistantId:"",functionUrl:"",model:"",systemMessages:"",assistantMessages:"",userMessages:"",maxTokens:0,triggerType:"keyword",triggerOperator:"contains",triggerValue:"",expire:0,keywordFinish:"",delayMessage:0,unknownMessage:"",listeningFromMe:!1,stopBotFromMe:!1,keepOpen:!1,debounceTime:0,splitMessages:!1,timePerChar:0}}),C=w.watch("botType"),k=w.watch("triggerType"),j=w.watch("openaiCredsId"),{data:M,isLoading:_,refetch:R}=vre({instanceName:h?.name,openaiCredsId:j,token:h?.token,enabled:m&&!!j}),N=()=>{j&&(g(!0),R())},O=()=>{b()};return i.jsx(Gn,{...w,children:i.jsxs("form",{onSubmit:w.handleSubmit(t),className:"w-full space-y-6",children:[i.jsxs("div",{className:"space-y-4",children:[i.jsx(Pe,{name:"enabled",label:f("openai.form.enabled.label"),reverse:!0}),i.jsx(le,{name:"description",label:f("openai.form.description.label"),required:!0,children:i.jsx(ne,{})}),i.jsx("div",{className:"space-y-2",children:i.jsxs("div",{className:"flex items-end gap-2",children:[i.jsx("div",{className:"flex-1",children:i.jsx(Jt,{name:"openaiCredsId",label:f("openai.form.openaiCredsId.label"),required:!0,options:x?.filter(D=>!!D.id).map(D=>({label:D.name?D.name:D.apiKey.substring(0,15)+"...",value:D.id}))??[]})}),i.jsx(LI,{onCredentialsUpdate:O,showText:!1})]})}),i.jsxs("div",{className:"flex flex-col",children:[i.jsx("h3",{className:"my-4 text-lg font-medium",children:f("openai.form.openaiSettings.label")}),i.jsx($t,{})]}),i.jsx(Jt,{name:"botType",label:f("openai.form.botType.label"),required:!0,options:[{label:f("openai.form.botType.assistant"),value:"assistant"},{label:f("openai.form.botType.chatCompletion"),value:"chatCompletion"}]}),C==="assistant"&&i.jsxs(i.Fragment,{children:[i.jsx(le,{name:"assistantId",label:f("openai.form.assistantId.label"),required:!0,children:i.jsx(ne,{})}),i.jsx(le,{name:"functionUrl",label:f("openai.form.functionUrl.label"),required:!0,children:i.jsx(ne,{})})]}),C==="chatCompletion"&&i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"space-y-2",children:i.jsxs("div",{className:"flex items-end gap-2",children:[i.jsx("div",{className:"flex-1",children:i.jsx(Jt,{name:"model",label:f("openai.form.model.label"),required:!0,disabled:!M||M.length===0,options:M?.map(D=>({label:D.id,value:D.id}))??[]})}),i.jsx(se,{type:"button",variant:"outline",size:"sm",disabled:!j||_,onClick:N,className:"mb-2",children:_?i.jsxs(i.Fragment,{children:[i.jsx(Ip,{className:"mr-2 h-4 w-4 animate-spin"}),f("openai.button.loading")]}):i.jsxs(i.Fragment,{children:[i.jsx(Ip,{className:"mr-2 h-4 w-4"}),f("openai.button.loadModels")]})})]})}),i.jsx(le,{name:"systemMessages",label:f("openai.form.systemMessages.label"),children:i.jsx(bi,{})}),i.jsx(le,{name:"assistantMessages",label:f("openai.form.assistantMessages.label"),children:i.jsx(bi,{})}),i.jsx(le,{name:"userMessages",label:f("openai.form.userMessages.label"),children:i.jsx(bi,{})}),i.jsx(le,{name:"maxTokens",label:f("openai.form.maxTokens.label"),children:i.jsx(ne,{type:"number"})})]}),i.jsxs("div",{className:"flex flex-col",children:[i.jsx("h3",{className:"my-4 text-lg font-medium",children:f("openai.form.triggerSettings.label")}),i.jsx($t,{})]}),i.jsx(Jt,{name:"triggerType",label:f("openai.form.triggerType.label"),required:!0,options:[{label:f("openai.form.triggerType.keyword"),value:"keyword"},{label:f("openai.form.triggerType.all"),value:"all"},{label:f("openai.form.triggerType.advanced"),value:"advanced"},{label:f("openai.form.triggerType.none"),value:"none"}]}),k==="keyword"&&i.jsxs(i.Fragment,{children:[i.jsx(Jt,{name:"triggerOperator",label:f("openai.form.triggerOperator.label"),required:!0,options:[{label:f("openai.form.triggerOperator.contains"),value:"contains"},{label:f("openai.form.triggerOperator.equals"),value:"equals"},{label:f("openai.form.triggerOperator.startsWith"),value:"startsWith"},{label:f("openai.form.triggerOperator.endsWith"),value:"endsWith"},{label:f("openai.form.triggerOperator.regex"),value:"regex"}]}),i.jsx(le,{name:"triggerValue",label:f("openai.form.triggerValue.label"),required:!0,children:i.jsx(ne,{})})]}),k==="advanced"&&i.jsx(le,{name:"triggerValue",label:f("openai.form.triggerConditions.label"),required:!0,children:i.jsx(ne,{})}),i.jsxs("div",{className:"flex flex-col",children:[i.jsx("h3",{className:"my-4 text-lg font-medium",children:f("openai.form.generalSettings.label")}),i.jsx($t,{})]}),i.jsx(le,{name:"expire",label:f("openai.form.expire.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(le,{name:"keywordFinish",label:f("openai.form.keywordFinish.label"),children:i.jsx(ne,{})}),i.jsx(le,{name:"delayMessage",label:f("openai.form.delayMessage.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(le,{name:"unknownMessage",label:f("openai.form.unknownMessage.label"),children:i.jsx(ne,{})}),i.jsx(Pe,{name:"listeningFromMe",label:f("openai.form.listeningFromMe.label"),reverse:!0}),i.jsx(Pe,{name:"stopBotFromMe",label:f("openai.form.stopBotFromMe.label"),reverse:!0}),i.jsx(Pe,{name:"keepOpen",label:f("openai.form.keepOpen.label"),reverse:!0}),i.jsx(le,{name:"debounceTime",label:f("openai.form.debounceTime.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(Pe,{name:"splitMessages",label:f("openai.form.splitMessages.label"),reverse:!0}),w.watch("splitMessages")&&i.jsx(le,{name:"timePerChar",label:f("openai.form.timePerChar.label"),children:i.jsx(ne,{type:"number"})})]}),s&&i.jsx(Yt,{children:i.jsx(se,{disabled:o,type:"submit",children:f(o?"openai.button.saving":"openai.button.save")})}),!s&&i.jsxs("div",{children:[i.jsx($I,{openaiId:r}),i.jsxs("div",{className:"mt-5 flex items-center gap-3",children:[i.jsxs(Pt,{open:l,onOpenChange:u,children:[i.jsx(Bt,{asChild:!0,children:i.jsx(se,{variant:"destructive",size:"sm",children:f("dify.button.delete")})}),i.jsx(Nt,{children:i.jsxs(Mt,{children:[i.jsx(zt,{children:f("modal.delete.title")}),i.jsx(eo,{children:f("modal.delete.messageSingle")}),i.jsxs(Yt,{children:[i.jsx(se,{size:"sm",variant:"outline",onClick:()=>u(!1),children:f("button.cancel")}),i.jsx(se,{variant:"destructive",onClick:n,children:f("button.delete")})]})]})})]}),i.jsx(se,{disabled:o,type:"submit",children:f(o?"openai.button.saving":"openai.button.update")})]})]})]})})}function Sre({resetTable:e}){const{t}=Ve(),{instance:n}=ct(),{createOpenai:r}=Md(),[s,o]=y.useState(!1),[l,u]=y.useState(!1),d=async f=>{try{if(!n||!n.name)throw new Error("instance not found");o(!0);const h={enabled:f.enabled,description:f.description,openaiCredsId:f.openaiCredsId,botType:f.botType,assistantId:f.assistantId||"",functionUrl:f.functionUrl||"",model:f.model||"",systemMessages:[f.systemMessages||""],assistantMessages:[f.assistantMessages||""],userMessages:[f.userMessages||""],maxTokens:f.maxTokens||0,triggerType:f.triggerType,triggerOperator:f.triggerOperator||"",triggerValue:f.triggerValue||"",expire:f.expire||0,keywordFinish:f.keywordFinish||"",delayMessage:f.delayMessage||0,unknownMessage:f.unknownMessage||"",listeningFromMe:f.listeningFromMe||!1,stopBotFromMe:f.stopBotFromMe||!1,keepOpen:f.keepOpen||!1,debounceTime:f.debounceTime||0,splitMessages:f.splitMessages||!1,timePerChar:f.timePerChar||0};await r({instanceName:n.name,token:n.token,data:h}),me.success(t("openai.toast.success.create")),u(!1),e()}catch(h){console.error("Error:",h),me.error(`Error: ${h?.response?.data?.response?.message}`)}finally{o(!1)}};return i.jsxs(Pt,{open:l,onOpenChange:u,children:[i.jsx(Bt,{asChild:!0,children:i.jsxs(se,{size:"sm",children:[i.jsx(cs,{size:16,className:"mr-1"}),i.jsx("span",{className:"hidden sm:inline",children:t("openai.button.create")})]})}),i.jsxs(Nt,{className:"overflow-y-auto sm:max-h-[600px] sm:max-w-[740px]",children:[i.jsx(Mt,{children:i.jsx(zt,{children:t("openai.form.title")})}),i.jsx(BI,{onSubmit:d,isModal:!0,isLoading:s,open:l})]})]})}const Cre=e=>["openai","getOpenai",JSON.stringify(e)],Ere=async({instanceName:e,token:t,openaiId:n})=>{const r=await Ee.get(`/openai/fetch/${n}/${e}`,{headers:{apiKey:t}});return Array.isArray(r.data)?r.data[0]:r.data},kre=e=>{const{instanceName:t,token:n,openaiId:r,...s}=e;return mt({...s,queryKey:Cre({instanceName:t}),queryFn:()=>Ere({instanceName:t,token:n,openaiId:r}),enabled:!!t&&!!r&&(e.enabled??!0)})};function jre({openaiId:e,resetTable:t}){const{t:n}=Ve(),{instance:r}=ct(),s=dn(),[o,l]=y.useState(!1),{deleteOpenai:u,updateOpenai:d}=Md(),{data:f,isLoading:h}=kre({instanceName:r?.name,openaiId:e}),m=y.useMemo(()=>({enabled:f?.enabled??!0,description:f?.description??"",openaiCredsId:f?.openaiCredsId??"",botType:f?.botType??"",assistantId:f?.assistantId||"",functionUrl:f?.functionUrl||"",model:f?.model||"",systemMessages:Array.isArray(f?.systemMessages)?f?.systemMessages.join(", "):f?.systemMessages||"",assistantMessages:Array.isArray(f?.assistantMessages)?f?.assistantMessages.join(", "):f?.assistantMessages||"",userMessages:Array.isArray(f?.userMessages)?f?.userMessages.join(", "):f?.userMessages||"",maxTokens:f?.maxTokens||0,triggerType:f?.triggerType||"",triggerOperator:f?.triggerOperator||"",triggerValue:f?.triggerValue,expire:f?.expire||0,keywordFinish:f?.keywordFinish,delayMessage:f?.delayMessage||0,unknownMessage:f?.unknownMessage,listeningFromMe:f?.listeningFromMe,stopBotFromMe:f?.stopBotFromMe,keepOpen:f?.keepOpen,debounceTime:f?.debounceTime||0,splitMessages:f?.splitMessages||!1,timePerChar:f?.timePerChar||0}),[f?.assistantId,f?.assistantMessages,f?.botType,f?.debounceTime,f?.delayMessage,f?.description,f?.enabled,f?.expire,f?.functionUrl,f?.keepOpen,f?.keywordFinish,f?.listeningFromMe,f?.maxTokens,f?.model,f?.openaiCredsId,f?.stopBotFromMe,f?.systemMessages,f?.triggerOperator,f?.triggerType,f?.triggerValue,f?.unknownMessage,f?.userMessages,f?.splitMessages,f?.timePerChar]),g=async b=>{try{if(r&&r.name&&e){const w={enabled:b.enabled,description:b.description,openaiCredsId:b.openaiCredsId,botType:b.botType,assistantId:b.assistantId||"",functionUrl:b.functionUrl||"",model:b.model||"",systemMessages:[b.systemMessages||""],assistantMessages:[b.assistantMessages||""],userMessages:[b.userMessages||""],maxTokens:b.maxTokens||0,triggerType:b.triggerType,triggerOperator:b.triggerOperator||"",triggerValue:b.triggerValue||"",expire:b.expire||0,keywordFinish:b.keywordFinish||"",delayMessage:b.delayMessage||1e3,unknownMessage:b.unknownMessage||"",listeningFromMe:b.listeningFromMe||!1,stopBotFromMe:b.stopBotFromMe||!1,keepOpen:b.keepOpen||!1,debounceTime:b.debounceTime||0,splitMessages:b.splitMessages||!1,timePerChar:b.timePerChar||0};await d({instanceName:r.name,openaiId:e,data:w}),me.success(n("openai.toast.success.update")),t(),s(`/manager/instance/${r.id}/openai/${e}`)}else console.error("Token not found")}catch(w){console.error("Error:",w),me.error(`Error: ${w?.response?.data?.response?.message}`)}},x=async()=>{try{r&&r.name&&e?(await u({instanceName:r.name,openaiId:e}),me.success(n("openai.toast.success.delete")),l(!1),t(),s(`/manager/instance/${r.id}/openai`)):console.error("instance not found")}catch(b){console.error("Erro ao excluir dify:",b)}};return h?i.jsx(On,{}):i.jsx("div",{className:"m-4",children:i.jsx(BI,{initialData:m,onSubmit:g,openaiId:e,handleDelete:x,isModal:!1,isLoading:h,openDeletionDialog:o,setOpenDeletionDialog:l})})}function Tk(){const{t:e}=Ve(),t=zo("(min-width: 768px)"),{instance:n}=ct(),{botId:r}=ls(),{data:s,isLoading:o,refetch:l}=FI({instanceName:n?.name}),u=dn(),d=h=>{n&&u(`/manager/instance/${n.id}/openai/${h}`)},f=()=>{l()};return i.jsxs("main",{className:"pt-5",children:[i.jsxs("div",{className:"mb-1 flex items-center justify-between",children:[i.jsx("h3",{className:"text-lg font-medium",children:e("openai.title")}),i.jsxs("div",{className:"flex items-center justify-end gap-2",children:[i.jsx($I,{}),i.jsx(hre,{}),i.jsx(LI,{}),i.jsx(Sre,{resetTable:f})]})]}),i.jsx($t,{className:"my-4"}),i.jsxs($o,{direction:t?"horizontal":"vertical",children:[i.jsx(Hn,{defaultSize:35,className:"pr-4",children:i.jsx("div",{className:"flex flex-col gap-3",children:o?i.jsx(On,{}):i.jsx(i.Fragment,{children:s&&s.length>0&&Array.isArray(s)?s.map(h=>i.jsxs(se,{className:"flex h-auto flex-col items-start justify-start",onClick:()=>d(`${h.id}`),variant:r===h.id?"secondary":"outline",children:[i.jsx("h4",{className:"text-base",children:h.description||h.id}),i.jsx("p",{className:"text-sm font-normal text-muted-foreground",children:h.botType})]},h.id)):i.jsx(se,{variant:"link",children:e("openai.table.none")})})})}),r&&i.jsxs(i.Fragment,{children:[i.jsx(Bo,{withHandle:!0,className:"border border-border"}),i.jsx(Hn,{children:i.jsx(jre,{openaiId:r,resetTable:f})})]})]})]})}const Tre=e=>["proxy","fetchProxy",JSON.stringify(e)],Nre=async({instanceName:e,token:t})=>(await Ee.get(`/proxy/find/${e}`,{headers:{apiKey:t}})).data,Mre=e=>{const{instanceName:t,token:n,...r}=e;return mt({...r,queryKey:Tre({instanceName:t,token:n}),queryFn:()=>Nre({instanceName:t,token:n}),enabled:!!t})},_re=async({instanceName:e,token:t,data:n})=>(await Ee.post(`/proxy/set/${e}`,n,{headers:{apikey:t}})).data;function Rre(){return{createProxy:nt(_re,{invalidateKeys:[["proxy","fetchProxy"]]})}}const Pre=P.object({enabled:P.boolean(),host:P.string(),port:P.string(),protocol:P.string(),username:P.string(),password:P.string()});function Ore(){const{t:e}=Ve(),{instance:t}=ct(),[n,r]=y.useState(!1),{createProxy:s}=Rre(),{data:o}=Mre({instanceName:t?.name}),l=on({resolver:an(Pre),defaultValues:{enabled:!1,host:"",port:"",protocol:"http",username:"",password:""}});y.useEffect(()=>{o&&l.reset({enabled:o.enabled,host:o.host,port:o.port,protocol:o.protocol,username:o.username,password:o.password})},[o]);const u=async d=>{if(t){r(!0);try{const f={enabled:d.enabled,host:d.host,port:d.port,protocol:d.protocol,username:d.username,password:d.password};await s({instanceName:t.name,token:t.token,data:f}),me.success(e("proxy.toast.success"))}catch(f){console.error(e("proxy.toast.error"),f),me.error(`Error : ${f?.response?.data?.response?.message}`)}finally{r(!1)}}};return i.jsx(i.Fragment,{children:i.jsx(Fo,{...l,children:i.jsx("form",{onSubmit:l.handleSubmit(u),className:"w-full space-y-6",children:i.jsxs("div",{children:[i.jsx("h3",{className:"mb-1 text-lg font-medium",children:e("proxy.title")}),i.jsx(Oa,{className:"my-4"}),i.jsxs("div",{className:"mx-4 space-y-2 divide-y [&>*]:p-4",children:[i.jsx(Pe,{name:"enabled",label:e("proxy.form.enabled.label"),className:"w-full justify-between",helper:e("proxy.form.enabled.description")}),i.jsxs("div",{className:"grid gap-4 sm:grid-cols-[10rem_1fr_10rem] md:gap-8",children:[i.jsx(le,{name:"protocol",label:e("proxy.form.protocol.label"),children:i.jsx(ne,{})}),i.jsx(le,{name:"host",label:e("proxy.form.host.label"),children:i.jsx(ne,{})}),i.jsx(le,{name:"port",label:e("proxy.form.port.label"),children:i.jsx(ne,{type:"number"})})]}),i.jsxs("div",{className:"grid gap-4 sm:grid-cols-2 md:gap-8",children:[i.jsx(le,{name:"username",label:e("proxy.form.username.label"),children:i.jsx(ne,{})}),i.jsx(le,{name:"password",label:e("proxy.form.password.label"),children:i.jsx(ne,{type:"password"})})]}),i.jsx("div",{className:"flex justify-end px-4 pt-6",children:i.jsx(se,{type:"submit",disabled:n,children:e(n?"proxy.button.saving":"proxy.button.save")})})]})]})})})})}const Ire=e=>["rabbitmq","fetchRabbitmq",JSON.stringify(e)],Are=async({instanceName:e,token:t})=>(await Ee.get(`/rabbitmq/find/${e}`,{headers:{apiKey:t}})).data,Dre=e=>{const{instanceName:t,token:n,...r}=e;return mt({...r,queryKey:Ire({instanceName:t,token:n}),queryFn:()=>Are({instanceName:t,token:n}),enabled:!!t})},Fre=async({instanceName:e,token:t,data:n})=>(await Ee.post(`/rabbitmq/set/${e}`,{rabbitmq:n},{headers:{apikey:t}})).data;function Lre(){return{createRabbitmq:nt(Fre,{invalidateKeys:[["rabbitmq","fetchRabbitmq"]]})}}const $re=P.object({enabled:P.boolean(),events:P.array(P.string())});function Bre(){const{t:e}=Ve(),{instance:t}=ct(),[n,r]=y.useState(!1),{createRabbitmq:s}=Lre(),{data:o}=Dre({instanceName:t?.name,token:t?.token}),l=on({resolver:an($re),defaultValues:{enabled:!1,events:[]}});y.useEffect(()=>{o&&l.reset({enabled:o.enabled,events:o.events})},[o]);const u=async m=>{if(t){r(!0);try{const g={enabled:m.enabled,events:m.events};await s({instanceName:t.name,token:t.token,data:g}),me.success(e("rabbitmq.toast.success"))}catch(g){console.error(e("rabbitmq.toast.error"),g),me.error(`Error: ${g?.response?.data?.response?.message}`)}finally{r(!1)}}},d=["APPLICATION_STARTUP","QRCODE_UPDATED","MESSAGES_SET","MESSAGES_UPSERT","MESSAGES_UPDATE","MESSAGES_DELETE","SEND_MESSAGE","CONTACTS_SET","CONTACTS_UPSERT","CONTACTS_UPDATE","PRESENCE_UPDATE","CHATS_SET","CHATS_UPSERT","CHATS_UPDATE","CHATS_DELETE","GROUPS_UPSERT","GROUP_UPDATE","GROUP_PARTICIPANTS_UPDATE","CONNECTION_UPDATE","REMOVE_INSTANCE","LOGOUT_INSTANCE","LABELS_EDIT","LABELS_ASSOCIATION","CALL","TYPEBOT_START","TYPEBOT_CHANGE_STATUS"],f=()=>{l.setValue("events",d)},h=()=>{l.setValue("events",[])};return i.jsx(i.Fragment,{children:i.jsx(Fo,{...l,children:i.jsx("form",{onSubmit:l.handleSubmit(u),className:"w-full space-y-6",children:i.jsxs("div",{children:[i.jsx("h3",{className:"mb-1 text-lg font-medium",children:e("rabbitmq.title")}),i.jsx(Oa,{className:"my-4"}),i.jsxs("div",{className:"mx-4 space-y-2 divide-y [&>*]:p-4",children:[i.jsx(Pe,{name:"enabled",label:e("rabbitmq.form.enabled.label"),className:"w-full justify-between",helper:e("rabbitmq.form.enabled.description")}),i.jsxs("div",{className:"mb-4 flex justify-between",children:[i.jsx(se,{variant:"outline",type:"button",onClick:f,children:e("button.markAll")}),i.jsx(se,{variant:"outline",type:"button",onClick:h,children:e("button.unMarkAll")})]}),i.jsx(Lo,{control:l.control,name:"events",render:({field:m})=>i.jsxs(no,{className:"flex flex-col",children:[i.jsx(Nr,{className:"my-2 text-lg",children:e("rabbitmq.form.events.label")}),i.jsx(_s,{children:i.jsx("div",{className:"flex flex-col gap-2 space-y-1 divide-y",children:d.sort((g,x)=>g.localeCompare(x)).map(g=>i.jsxs("div",{className:"flex items-center justify-between gap-3 pt-3",children:[i.jsx(Nr,{className:Ie("break-all",m.value.includes(g)?"text-foreground":"text-muted-foreground"),children:g}),i.jsx(gc,{checked:m.value.includes(g),onCheckedChange:x=>{x?m.onChange([...m.value,g]):m.onChange(m.value.filter(b=>b!==g))}})]},g))})})]})})]}),i.jsx("div",{className:"mx-4 flex justify-end pt-6",children:i.jsx(se,{type:"submit",disabled:n,children:e(n?"rabbitmq.button.saving":"rabbitmq.button.save")})})]})})})})}const zre=e=>["instance","fetchSettings",JSON.stringify(e)],Ure=async({instanceName:e,token:t})=>(await Ee.get(`/settings/find/${e}`,{headers:{apikey:t}})).data,Vre=e=>{const{instanceName:t,token:n,...r}=e;return mt({...r,queryKey:zre({instanceName:t,token:n}),queryFn:()=>Ure({instanceName:t,token:n}),enabled:!!t})},Hre=P.object({rejectCall:P.boolean(),msgCall:P.string().optional(),groupsIgnore:P.boolean(),alwaysOnline:P.boolean(),readMessages:P.boolean(),syncFullHistory:P.boolean(),readStatus:P.boolean()});function qre(){const{t:e}=Ve(),[t,n]=y.useState(!1),{instance:r}=ct(),{updateSettings:s}=Hh(),{data:o,isLoading:l}=Vre({instanceName:r?.name,token:r?.token}),u=on({resolver:an(Hre),defaultValues:{rejectCall:!1,msgCall:"",groupsIgnore:!1,alwaysOnline:!1,readMessages:!1,syncFullHistory:!1,readStatus:!1}});y.useEffect(()=>{o&&u.reset({rejectCall:o.rejectCall,msgCall:o.msgCall||"",groupsIgnore:o.groupsIgnore,alwaysOnline:o.alwaysOnline,readMessages:o.readMessages,syncFullHistory:o.syncFullHistory,readStatus:o.readStatus})},[u,o]);const d=async m=>{try{if(!r||!r.name)throw new Error("instance not found");n(!0);const g={rejectCall:m.rejectCall,msgCall:m.msgCall,groupsIgnore:m.groupsIgnore,alwaysOnline:m.alwaysOnline,readMessages:m.readMessages,syncFullHistory:m.syncFullHistory,readStatus:m.readStatus};await s({instanceName:r.name,token:r.token,data:g}),me.success(e("settings.toast.success"))}catch(g){console.error(e("settings.toast.success"),g),me.error(e("settings.toast.error"))}finally{n(!1)}},f=[{name:"groupsIgnore",label:e("settings.form.groupsIgnore.label"),description:e("settings.form.groupsIgnore.description")},{name:"alwaysOnline",label:e("settings.form.alwaysOnline.label"),description:e("settings.form.alwaysOnline.description")},{name:"readMessages",label:e("settings.form.readMessages.label"),description:e("settings.form.readMessages.description")},{name:"syncFullHistory",label:e("settings.form.syncFullHistory.label"),description:e("settings.form.syncFullHistory.description")},{name:"readStatus",label:e("settings.form.readStatus.label"),description:e("settings.form.readStatus.description")}],h=u.watch("rejectCall");return l?i.jsx(On,{}):i.jsx(i.Fragment,{children:i.jsx(Fo,{...u,children:i.jsx("form",{onSubmit:u.handleSubmit(d),className:"w-full space-y-6",children:i.jsxs("div",{children:[i.jsx("h3",{className:"mb-1 text-lg font-medium",children:e("settings.title")}),i.jsx($t,{className:"my-4"}),i.jsxs("div",{className:"mx-4 space-y-2 divide-y",children:[i.jsxs("div",{className:"flex flex-col p-4",children:[i.jsx(Pe,{name:"rejectCall",label:e("settings.form.rejectCall.label"),className:"w-full justify-between",helper:e("settings.form.rejectCall.description")}),h&&i.jsx("div",{className:"mr-16 mt-2",children:i.jsx(le,{name:"msgCall",children:i.jsx(bi,{placeholder:e("settings.form.msgCall.description")})})})]}),f.map(m=>i.jsx("div",{className:"flex p-4",children:i.jsx(Pe,{name:m.name,label:m.label,className:"w-full justify-between",helper:m.description})},m.name)),i.jsx("div",{className:"flex justify-end pt-6",children:i.jsx(se,{type:"submit",disabled:t,children:e(t?"settings.button.saving":"settings.button.save")})})]})]})})})})}const Kre=e=>["sqs","fetchSqs",JSON.stringify(e)],Wre=async({instanceName:e,token:t})=>(await Ee.get(`/sqs/find/${e}`,{headers:{apiKey:t}})).data,Gre=e=>{const{instanceName:t,token:n,...r}=e;return mt({...r,queryKey:Kre({instanceName:t,token:n}),queryFn:()=>Wre({instanceName:t,token:n}),enabled:!!t})},Jre=async({instanceName:e,token:t,data:n})=>(await Ee.post(`/sqs/set/${e}`,{sqs:n},{headers:{apikey:t}})).data;function Qre(){return{createSqs:nt(Jre,{invalidateKeys:[["sqs","fetchSqs"]]})}}const Zre=P.object({enabled:P.boolean(),events:P.array(P.string())});function Yre(){const{t:e}=Ve(),{instance:t}=ct(),[n,r]=y.useState(!1),{createSqs:s}=Qre(),{data:o}=Gre({instanceName:t?.name,token:t?.token}),l=on({resolver:an(Zre),defaultValues:{enabled:!1,events:[]}});y.useEffect(()=>{o&&l.reset({enabled:o.enabled,events:o.events})},[o]);const u=async m=>{if(t){r(!0);try{const g={enabled:m.enabled,events:m.events};await s({instanceName:t.name,token:t.token,data:g}),me.success(e("sqs.toast.success"))}catch(g){console.error(e("sqs.toast.error"),g),me.error(`Error: ${g?.response?.data?.response?.message}`)}finally{r(!1)}}},d=["APPLICATION_STARTUP","QRCODE_UPDATED","MESSAGES_SET","MESSAGES_UPSERT","MESSAGES_UPDATE","MESSAGES_DELETE","SEND_MESSAGE","CONTACTS_SET","CONTACTS_UPSERT","CONTACTS_UPDATE","PRESENCE_UPDATE","CHATS_SET","CHATS_UPSERT","CHATS_UPDATE","CHATS_DELETE","GROUPS_UPSERT","GROUP_UPDATE","GROUP_PARTICIPANTS_UPDATE","CONNECTION_UPDATE","REMOVE_INSTANCE","LOGOUT_INSTANCE","LABELS_EDIT","LABELS_ASSOCIATION","CALL","TYPEBOT_START","TYPEBOT_CHANGE_STATUS"],f=()=>{l.setValue("events",d)},h=()=>{l.setValue("events",[])};return i.jsx(i.Fragment,{children:i.jsx(Fo,{...l,children:i.jsx("form",{onSubmit:l.handleSubmit(u),className:"w-full space-y-6",children:i.jsxs("div",{children:[i.jsx("h3",{className:"mb-1 text-lg font-medium",children:e("sqs.title")}),i.jsx(Oa,{className:"my-4"}),i.jsxs("div",{className:"mx-4 space-y-2 divide-y [&>*]:p-4",children:[i.jsx(Pe,{name:"enabled",label:e("sqs.form.enabled.label"),className:"w-full justify-between",helper:e("sqs.form.enabled.description")}),i.jsxs("div",{className:"mb-4 flex justify-between",children:[i.jsx(se,{variant:"outline",type:"button",onClick:f,children:e("button.markAll")}),i.jsx(se,{variant:"outline",type:"button",onClick:h,children:e("button.unMarkAll")})]}),i.jsx(Lo,{control:l.control,name:"events",render:({field:m})=>i.jsxs(no,{className:"flex flex-col",children:[i.jsx(Nr,{className:"my-2 text-lg",children:e("sqs.form.events.label")}),i.jsx(_s,{children:i.jsx("div",{className:"flex flex-col gap-2 space-y-1 divide-y",children:d.sort((g,x)=>g.localeCompare(x)).map(g=>i.jsxs("div",{className:"flex items-center justify-between gap-3 pt-3",children:[i.jsx(Nr,{className:Ie("break-all",m.value.includes(g)?"text-foreground":"text-muted-foreground"),children:g}),i.jsx(gc,{checked:m.value.includes(g),onCheckedChange:x=>{x?m.onChange([...m.value,g]):m.onChange(m.value.filter(b=>b!==g))}})]},g))})})]})})]}),i.jsx("div",{className:"mx-4 flex justify-end pt-6",children:i.jsx(se,{type:"submit",disabled:n,children:e(n?"sqs.button.saving":"sqs.button.save")})})]})})})})}const Xre=e=>["typebot","findTypebot",JSON.stringify(e)],ese=async({instanceName:e,token:t})=>(await Ee.get(`/typebot/find/${e}`,{headers:{apiKey:t}})).data,zI=e=>{const{instanceName:t,token:n,...r}=e;return mt({...r,queryKey:Xre({instanceName:t}),queryFn:()=>ese({instanceName:t,token:n}),enabled:!!t&&(e.enabled??!0)})},tse=e=>["typebot","fetchDefaultSettings",JSON.stringify(e)],nse=async({instanceName:e,token:t})=>{const n=await Ee.get(`/typebot/fetchSettings/${e}`,{headers:{apiKey:t}});return Array.isArray(n.data)?n.data[0]:n.data},rse=e=>{const{instanceName:t,token:n,...r}=e;return mt({...r,queryKey:tse({instanceName:t}),queryFn:()=>nse({instanceName:t,token:n}),enabled:!!t&&(e.enabled??!0)})},sse=async({instanceName:e,token:t,data:n})=>(await Ee.post(`/typebot/create/${e}`,n,{headers:{apikey:t}})).data,ose=async({instanceName:e,token:t,typebotId:n,data:r})=>(await Ee.put(`/typebot/update/${n}/${e}`,r,{headers:{apikey:t}})).data,ase=async({instanceName:e,typebotId:t})=>(await Ee.delete(`/typebot/delete/${t}/${e}`)).data,ise=async({instanceName:e,token:t,data:n})=>(await Ee.post(`/typebot/settings/${e}`,n,{headers:{apikey:t}})).data,lse=async({instanceName:e,token:t,remoteJid:n,status:r})=>(await Ee.post(`/typebot/changeStatus/${e}`,{remoteJid:n,status:r},{headers:{apikey:t}})).data;function Eg(){const e=nt(ise,{invalidateKeys:[["typebot","fetchDefaultSettings"]]}),t=nt(lse,{invalidateKeys:[["typebot","getTypebot"],["typebot","fetchSessions"]]}),n=nt(ase,{invalidateKeys:[["typebot","getTypebot"],["typebot","findTypebot"],["typebot","fetchSessions"]]}),r=nt(ose,{invalidateKeys:[["typebot","getTypebot"],["typebot","findTypebot"],["typebot","fetchSessions"]]}),s=nt(sse,{invalidateKeys:[["typebot","findTypebot"]]});return{setDefaultSettingsTypebot:e,changeStatusTypebot:t,deleteTypebot:n,updateTypebot:r,createTypebot:s}}const cse=P.object({expire:P.coerce.number(),keywordFinish:P.string(),delayMessage:P.coerce.number(),unknownMessage:P.string(),listeningFromMe:P.boolean(),stopBotFromMe:P.boolean(),keepOpen:P.boolean(),debounceTime:P.coerce.number()});function use(){const{t:e}=Ve(),{instance:t}=ct(),[n,r]=y.useState(!1),{setDefaultSettingsTypebot:s}=Eg(),{data:o,refetch:l}=rse({instanceName:t?.name,token:t?.token,enabled:n}),{data:u,refetch:d}=zI({instanceName:t?.name,token:t?.token,enabled:n}),f=on({resolver:an(cse),defaultValues:{expire:0,keywordFinish:e("typebot.form.examples.keywordFinish"),delayMessage:1e3,unknownMessage:e("typebot.form.examples.unknownMessage"),listeningFromMe:!1,stopBotFromMe:!1,keepOpen:!1,debounceTime:0}});y.useEffect(()=>{o&&f.reset({expire:o?.expire??0,keywordFinish:o.keywordFinish,delayMessage:o.delayMessage??0,unknownMessage:o.unknownMessage,listeningFromMe:o.listeningFromMe,stopBotFromMe:o.stopBotFromMe,keepOpen:o.keepOpen,debounceTime:o.debounceTime??0})},[o]);const h=async g=>{try{if(!t||!t.name)throw new Error("instance not found.");const x={expire:g.expire,keywordFinish:g.keywordFinish,delayMessage:g.delayMessage,unknownMessage:g.unknownMessage,listeningFromMe:g.listeningFromMe,stopBotFromMe:g.stopBotFromMe,keepOpen:g.keepOpen,debounceTime:g.debounceTime};await s({instanceName:t.name,token:t.token,data:x}),me.success(e("typebot.toast.defaultSettings.success"))}catch(x){console.error(e("typebot.toast.defaultSettings.error"),x),me.error(`Error: ${x?.response?.data?.response?.message}`)}};function m(){l(),d()}return i.jsxs(Pt,{open:n,onOpenChange:r,children:[i.jsx(Bt,{asChild:!0,children:i.jsxs(se,{variant:"secondary",size:"sm",children:[i.jsx(Oo,{size:16,className:"mr-1"}),i.jsx("span",{className:"hidden sm:inline",children:e("typebot.button.defaultSettings")})]})}),i.jsxs(Nt,{className:"overflow-y-auto sm:max-h-[600px] sm:max-w-[740px]",onCloseAutoFocus:m,children:[i.jsx(Mt,{children:i.jsx(zt,{children:e("typebot.modal.defaultSettings.title")})}),i.jsx(Gn,{...f,children:i.jsxs("form",{className:"w-full space-y-6",onSubmit:f.handleSubmit(h),children:[i.jsx("div",{children:i.jsxs("div",{className:"space-y-4",children:[i.jsx(Jt,{name:"typebotIdFallback",label:e("typebot.form.typebotIdFallback.label"),options:u?.filter(g=>!!g.id).map(g=>({label:g.typebot,value:g.description}))??[]}),i.jsx(le,{name:"expire",label:e("typebot.form.expire.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(le,{name:"keywordFinish",label:e("typebot.form.keywordFinish.label"),children:i.jsx(ne,{})}),i.jsx(le,{name:"delayMessage",label:e("typebot.form.delayMessage.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(le,{name:"unknownMessage",label:e("typebot.form.unknownMessage.label"),children:i.jsx(ne,{})}),i.jsx(Pe,{name:"listeningFromMe",label:e("typebot.form.listeningFromMe.label"),reverse:!0}),i.jsx(Pe,{name:"stopBotFromMe",label:e("typebot.form.stopBotFromMe.label"),reverse:!0}),i.jsx(Pe,{name:"keepOpen",label:e("typebot.form.keepOpen.label"),reverse:!0}),i.jsx(le,{name:"debounceTime",label:e("typebot.form.debounceTime.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(Da,{name:"ignoreJids",label:e("typebot.form.ignoreJids.label"),placeholder:e("typebot.form.ignoreJids.placeholder")})]})}),i.jsx(Yt,{children:i.jsx(se,{type:"submit",children:e("typebot.button.save")})})]})})]})]})}const dse=e=>["typebot","fetchSessions",JSON.stringify(e)],fse=async({instanceName:e,typebotId:t,token:n})=>(await Ee.get(`/typebot/fetchSessions/${t}/${e}`,{headers:{apiKey:n}})).data,pse=e=>{const{instanceName:t,token:n,typebotId:r,...s}=e;return mt({...s,queryKey:dse({instanceName:t}),queryFn:()=>fse({instanceName:t,token:n,typebotId:r}),enabled:!!t&&!!r&&(e.enabled??!0)})};function UI({typebotId:e}){const{t}=Ve(),{instance:n}=ct(),[r,s]=y.useState([]),[o,l]=y.useState(!1),[u,d]=y.useState(""),{changeStatusTypebot:f}=Eg(),{data:h,refetch:m}=pse({instanceName:n?.name,token:n?.token,typebotId:e});function g(){m()}const x=async(w,C)=>{try{if(!n)return;await f({instanceName:n.name,token:n.token,remoteJid:w,status:C}),me.success(t("typebot.toast.success.status")),g()}catch(k){console.error("Error:",k),me.error(`Error : ${k?.response?.data?.response?.message}`)}},b=[{accessorKey:"remoteJid",header:()=>i.jsx("div",{className:"text-center",children:t("typebot.sessions.table.remoteJid")}),cell:({row:w})=>i.jsx("div",{children:w.getValue("remoteJid")})},{accessorKey:"pushName",header:()=>i.jsx("div",{className:"text-center",children:t("typebot.sessions.table.pushName")}),cell:({row:w})=>i.jsx("div",{children:w.getValue("pushName")})},{accessorKey:"sessionId",header:()=>i.jsx("div",{className:"text-center",children:t("typebot.sessions.table.sessionId")}),cell:({row:w})=>i.jsx("div",{children:w.getValue("sessionId")})},{accessorKey:"status",header:()=>i.jsx("div",{className:"text-center",children:t("typebot.sessions.table.status")}),cell:({row:w})=>i.jsx("div",{children:w.getValue("status")})},{id:"actions",enableHiding:!1,cell:({row:w})=>{const C=w.original;return i.jsxs(Kr,{children:[i.jsx(Wr,{asChild:!0,children:i.jsxs(se,{variant:"ghost",className:"h-8 w-8 p-0",children:[i.jsx("span",{className:"sr-only",children:t("typebot.sessions.table.actions.title")}),i.jsx(Pa,{className:"h-4 w-4"})]})}),i.jsxs(hr,{align:"end",children:[i.jsx(Ao,{children:"Actions"}),i.jsx(Xs,{}),C.status!=="opened"&&i.jsxs(wt,{onClick:()=>x(C.remoteJid,"opened"),children:[i.jsx(Fi,{className:"mr-2 h-4 w-4"}),t("typebot.sessions.table.actions.open")]}),C.status!=="paused"&&C.status!=="closed"&&i.jsxs(wt,{onClick:()=>x(C.remoteJid,"paused"),children:[i.jsx(Di,{className:"mr-2 h-4 w-4"}),t("typebot.sessions.table.actions.pause")]}),C.status!=="closed"&&i.jsxs(wt,{onClick:()=>x(C.remoteJid,"closed"),children:[i.jsx(Oi,{className:"mr-2 h-4 w-4"}),t("typebot.sessions.table.actions.close")]}),i.jsxs(wt,{onClick:()=>x(C.remoteJid,"delete"),children:[i.jsx(Ii,{className:"mr-2 h-4 w-4"}),t("typebot.sessions.table.actions.delete")]})]})]})}}];return i.jsxs(Pt,{open:o,onOpenChange:l,children:[i.jsx(Bt,{asChild:!0,children:i.jsxs(se,{variant:"secondary",size:"sm",children:[i.jsx(Ai,{size:16,className:"mr-1"})," ",i.jsx("span",{className:"hidden sm:inline",children:t("typebot.sessions.label")})]})}),i.jsxs(Nt,{className:"overflow-y-auto sm:max-w-[950px]",onCloseAutoFocus:g,children:[i.jsx(Mt,{children:i.jsx(zt,{children:t("typebot.sessions.label")})}),i.jsxs("div",{children:[i.jsxs("div",{className:"flex items-center justify-between gap-6 p-5",children:[i.jsx(ne,{placeholder:t("typebot.sessions.search"),value:u,onChange:w=>d(w.target.value)}),i.jsx(se,{variant:"outline",onClick:g,size:"icon",children:i.jsx(Li,{size:16})})]}),i.jsx($a,{columns:b,data:h??[],onSortingChange:s,state:{sorting:r,globalFilter:u},onGlobalFilterChange:d,enableGlobalFilter:!0,noResultsMessage:t("typebot.sessions.table.none")})]})]})]})}const hse=P.object({enabled:P.boolean(),description:P.string(),url:P.string(),typebot:P.string().optional(),triggerType:P.string(),triggerOperator:P.string().optional(),triggerValue:P.string().optional(),expire:P.coerce.number().optional(),keywordFinish:P.string().optional(),delayMessage:P.coerce.number().optional(),unknownMessage:P.string().optional(),listeningFromMe:P.boolean().optional(),stopBotFromMe:P.boolean().optional(),keepOpen:P.boolean().optional(),debounceTime:P.coerce.number().optional()});function VI({initialData:e,onSubmit:t,handleDelete:n,typebotId:r,isModal:s=!1,isLoading:o=!1,openDeletionDialog:l=!1,setOpenDeletionDialog:u=()=>{}}){const{t:d}=Ve(),f=on({resolver:an(hse),defaultValues:e||{enabled:!0,description:"",url:"",typebot:"",triggerType:"keyword",triggerOperator:"contains",triggerValue:"",expire:0,keywordFinish:"",delayMessage:0,unknownMessage:"",listeningFromMe:!1,stopBotFromMe:!1,keepOpen:!1,debounceTime:0}}),h=f.watch("triggerType");return i.jsx(Gn,{...f,children:i.jsxs("form",{onSubmit:f.handleSubmit(t),className:"w-full space-y-6",children:[i.jsxs("div",{className:"space-y-4",children:[i.jsx(Pe,{name:"enabled",label:d("typebot.form.enabled.label"),reverse:!0}),i.jsx(le,{name:"description",label:d("typebot.form.description.label"),required:!0,children:i.jsx(ne,{})}),i.jsxs("div",{className:"flex flex-col",children:[i.jsx("h3",{className:"my-4 text-lg font-medium",children:d("typebot.form.typebotSettings.label")}),i.jsx($t,{})]}),i.jsx(le,{name:"url",label:d("typebot.form.url.label"),required:!0,children:i.jsx(ne,{})}),i.jsx(le,{name:"typebot",label:d("typebot.form.typebot.label"),children:i.jsx(ne,{})}),i.jsxs("div",{className:"flex flex-col",children:[i.jsx("h3",{className:"my-4 text-lg font-medium",children:d("typebot.form.triggerSettings.label")}),i.jsx($t,{})]}),i.jsx(Jt,{name:"triggerType",label:d("typebot.form.triggerType.label"),options:[{label:d("typebot.form.triggerType.keyword"),value:"keyword"},{label:d("typebot.form.triggerType.all"),value:"all"},{label:d("typebot.form.triggerType.advanced"),value:"advanced"},{label:d("typebot.form.triggerType.none"),value:"none"}]}),h==="keyword"&&i.jsxs(i.Fragment,{children:[i.jsx(Jt,{name:"triggerOperator",label:d("typebot.form.triggerOperator.label"),options:[{label:d("typebot.form.triggerOperator.contains"),value:"contains"},{label:d("typebot.form.triggerOperator.equals"),value:"equals"},{label:d("typebot.form.triggerOperator.startsWith"),value:"startsWith"},{label:d("typebot.form.triggerOperator.endsWith"),value:"endsWith"},{label:d("typebot.form.triggerOperator.regex"),value:"regex"}]}),i.jsx(le,{name:"triggerValue",label:d("typebot.form.triggerValue.label"),children:i.jsx(ne,{})})]}),h==="advanced"&&i.jsx(le,{name:"triggerValue",label:d("typebot.form.triggerConditions.label"),children:i.jsx(ne,{})}),i.jsxs("div",{className:"flex flex-col",children:[i.jsx("h3",{className:"my-4 text-lg font-medium",children:d("typebot.form.generalSettings.label")}),i.jsx($t,{})]}),i.jsx(le,{name:"expire",label:d("typebot.form.expire.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(le,{name:"keywordFinish",label:d("typebot.form.keywordFinish.label"),children:i.jsx(ne,{})}),i.jsx(le,{name:"delayMessage",label:d("typebot.form.delayMessage.label"),children:i.jsx(ne,{type:"number"})}),i.jsx(le,{name:"unknownMessage",label:d("typebot.form.unknownMessage.label"),children:i.jsx(ne,{})}),i.jsx(Pe,{name:"listeningFromMe",label:d("typebot.form.listeningFromMe.label"),reverse:!0}),i.jsx(Pe,{name:"stopBotFromMe",label:d("typebot.form.stopBotFromMe.label"),reverse:!0}),i.jsx(Pe,{name:"keepOpen",label:d("typebot.form.keepOpen.label"),reverse:!0}),i.jsx(le,{name:"debounceTime",label:d("typebot.form.debounceTime.label"),children:i.jsx(ne,{type:"number"})})]}),s&&i.jsx(Yt,{children:i.jsx(se,{disabled:o,type:"submit",children:d(o?"typebot.button.saving":"typebot.button.save")})}),!s&&i.jsxs("div",{children:[i.jsx(UI,{typebotId:r}),i.jsxs("div",{className:"mt-5 flex items-center gap-3",children:[i.jsxs(Pt,{open:l,onOpenChange:u,children:[i.jsx(Bt,{asChild:!0,children:i.jsx(se,{variant:"destructive",size:"sm",children:d("dify.button.delete")})}),i.jsx(Nt,{children:i.jsxs(Mt,{children:[i.jsx(zt,{children:d("modal.delete.title")}),i.jsx(eo,{children:d("modal.delete.messageSingle")}),i.jsxs(Yt,{children:[i.jsx(se,{size:"sm",variant:"outline",onClick:()=>u(!1),children:d("button.cancel")}),i.jsx(se,{variant:"destructive",onClick:n,children:d("button.delete")})]})]})})]}),i.jsx(se,{disabled:o,type:"submit",children:d(o?"typebot.button.saving":"typebot.button.update")})]})]})]})})}function gse({resetTable:e}){const{t}=Ve(),{instance:n}=ct(),{createTypebot:r}=Eg(),[s,o]=y.useState(!1),[l,u]=y.useState(!1),d=async f=>{try{if(!n||!n.name)throw new Error("instance not found");o(!0);const h={enabled:f.enabled,description:f.description,url:f.url,typebot:f.typebot||"",triggerType:f.triggerType,triggerOperator:f.triggerOperator||"",triggerValue:f.triggerValue||"",expire:f.expire||0,keywordFinish:f.keywordFinish||"",delayMessage:f.delayMessage||0,unknownMessage:f.unknownMessage||"",listeningFromMe:f.listeningFromMe||!1,stopBotFromMe:f.stopBotFromMe||!1,keepOpen:f.keepOpen||!1,debounceTime:f.debounceTime||0};await r({instanceName:n.name,token:n.token,data:h}),me.success(t("typebot.toast.success.create")),u(!1),e()}catch(h){console.error("Error:",h),me.error(`Error: ${h?.response?.data?.response?.message}`)}finally{o(!1)}};return i.jsxs(Pt,{open:l,onOpenChange:u,children:[i.jsx(Bt,{asChild:!0,children:i.jsxs(se,{size:"sm",children:[i.jsx(cs,{size:16,className:"mr-1"}),i.jsx("span",{className:"hidden sm:inline",children:t("typebot.button.create")})]})}),i.jsxs(Nt,{className:"overflow-y-auto sm:max-h-[600px] sm:max-w-[740px]",children:[i.jsx(Mt,{children:i.jsx(zt,{children:t("typebot.form.title")})}),i.jsx(VI,{onSubmit:d,isModal:!0,isLoading:s})]})]})}const mse=e=>["typebot","getTypebot",JSON.stringify(e)],vse=async({instanceName:e,token:t,typebotId:n})=>{const r=await Ee.get(`/typebot/fetch/${n}/${e}`,{headers:{apiKey:t}});return Array.isArray(r.data)?r.data[0]:r.data},yse=e=>{const{instanceName:t,token:n,typebotId:r,...s}=e;return mt({...s,queryKey:mse({instanceName:t}),queryFn:()=>vse({instanceName:t,token:n,typebotId:r}),enabled:!!t&&!!r&&(e.enabled??!0)})};function bse({typebotId:e,resetTable:t}){const{t:n}=Ve(),{instance:r}=ct(),s=dn(),[o,l]=y.useState(!1),{deleteTypebot:u,updateTypebot:d}=Eg(),{data:f,isLoading:h}=yse({instanceName:r?.name,typebotId:e}),m=y.useMemo(()=>({enabled:!!f?.enabled,description:f?.description??"",url:f?.url??"",typebot:f?.typebot??"",triggerType:f?.triggerType??"",triggerOperator:f?.triggerOperator??"",triggerValue:f?.triggerValue,expire:f?.expire??0,keywordFinish:f?.keywordFinish,delayMessage:f?.delayMessage??0,unknownMessage:f?.unknownMessage,listeningFromMe:!!f?.listeningFromMe,stopBotFromMe:!!f?.stopBotFromMe,keepOpen:!!f?.keepOpen,debounceTime:f?.debounceTime??0}),[f?.debounceTime,f?.delayMessage,f?.description,f?.enabled,f?.expire,f?.keepOpen,f?.keywordFinish,f?.listeningFromMe,f?.stopBotFromMe,f?.triggerOperator,f?.triggerType,f?.triggerValue,f?.typebot,f?.unknownMessage,f?.url]),g=async b=>{try{if(r&&r.name&&e){const w={enabled:b.enabled,description:b.description,url:b.url,typebot:b.typebot||"",triggerType:b.triggerType,triggerOperator:b.triggerOperator||"",triggerValue:b.triggerValue||"",expire:b.expire||0,keywordFinish:b.keywordFinish||"",delayMessage:b.delayMessage||1e3,unknownMessage:b.unknownMessage||"",listeningFromMe:b.listeningFromMe||!1,stopBotFromMe:b.stopBotFromMe||!1,keepOpen:b.keepOpen||!1,debounceTime:b.debounceTime||0};await d({instanceName:r.name,typebotId:e,data:w}),me.success(n("typebot.toast.success.update")),t(),s(`/manager/instance/${r.id}/typebot/${e}`)}else console.error("Token not found")}catch(w){console.error("Error:",w),me.error(`Error: ${w?.response?.data?.response?.message}`)}},x=async()=>{try{r&&r.name&&e?(await u({instanceName:r.name,typebotId:e}),me.success(n("typebot.toast.success.delete")),l(!1),t(),s(`/manager/instance/${r.id}/typebot`)):console.error("instance not found")}catch(b){console.error("Erro ao excluir dify:",b)}};return h?i.jsx(On,{}):i.jsx("div",{className:"m-4",children:i.jsx(VI,{initialData:m,onSubmit:g,typebotId:e,handleDelete:x,isModal:!1,isLoading:h,openDeletionDialog:o,setOpenDeletionDialog:l})})}function Nk(){const{t:e}=Ve(),t=zo("(min-width: 768px)"),{instance:n}=ct(),{typebotId:r}=ls(),{data:s,isLoading:o,refetch:l}=zI({instanceName:n?.name,token:n?.token}),u=dn(),d=h=>{n&&u(`/manager/instance/${n.id}/typebot/${h}`)},f=()=>{l()};return i.jsxs("main",{className:"pt-5",children:[i.jsxs("div",{className:"mb-1 flex items-center justify-between",children:[i.jsx("h3",{className:"text-lg font-medium",children:e("typebot.title")}),i.jsxs("div",{className:"flex flex-wrap items-center justify-end gap-2",children:[i.jsx(UI,{}),i.jsx(use,{}),i.jsx(gse,{resetTable:f})]})]}),i.jsx($t,{className:"my-4"}),i.jsxs($o,{direction:t?"horizontal":"vertical",children:[i.jsx(Hn,{defaultSize:35,className:"pr-4",children:i.jsx("div",{className:"flex flex-col gap-3",children:o?i.jsx(On,{}):i.jsx(i.Fragment,{children:s&&s.length>0&&Array.isArray(s)?s.map(h=>i.jsx(se,{className:"flex h-auto flex-col items-start justify-start",onClick:()=>d(`${h.id}`),variant:r===h.id?"secondary":"outline",children:h.description?i.jsxs(i.Fragment,{children:[i.jsx("h4",{className:"text-base",children:h.description}),i.jsxs("p",{className:"text-wrap text-sm font-normal text-muted-foreground",children:[h.url," - ",h.typebot]})]}):i.jsxs(i.Fragment,{children:[i.jsx("h4",{className:"text-base",children:h.url}),i.jsx("p",{className:"text-wrap text-sm font-normal text-muted-foreground",children:h.typebot})]})},h.id)):i.jsx(se,{variant:"link",children:e("typebot.table.none")})})})}),r&&i.jsxs(i.Fragment,{children:[i.jsx(Bo,{withHandle:!0,className:"border border-black"}),i.jsx(Hn,{children:i.jsx(bse,{typebotId:r,resetTable:f})})]})]})]})}const xse=e=>["webhook","fetchWebhook",JSON.stringify(e)],wse=async({instanceName:e,token:t})=>(await Ee.get(`/webhook/find/${e}`,{headers:{apiKey:t}})).data,Sse=e=>{const{instanceName:t,token:n,...r}=e;return mt({...r,queryKey:xse({instanceName:t,token:n}),queryFn:()=>wse({instanceName:t,token:n}),enabled:!!t})},Cse=async({instanceName:e,token:t,data:n})=>(await Ee.post(`/webhook/set/${e}`,{webhook:n},{headers:{apikey:t}})).data;function Ese(){return{createWebhook:nt(Cse,{invalidateKeys:[["webhook","fetchWebhook"]]})}}const kse=P.object({enabled:P.boolean(),url:P.string().url("Invalid URL format"),events:P.array(P.string()),base64:P.boolean(),byEvents:P.boolean()});function jse(){const{t:e}=Ve(),{instance:t}=ct(),[n,r]=y.useState(!1),{createWebhook:s}=Ese(),{data:o}=Sse({instanceName:t?.name,token:t?.token}),l=on({resolver:an(kse),defaultValues:{enabled:!1,url:"",events:[],base64:!1,byEvents:!1}});y.useEffect(()=>{o&&l.reset({enabled:o.enabled,url:o.url,events:o.events,base64:o.webhookBase64,byEvents:o.webhookByEvents})},[o]);const u=async m=>{if(t){r(!0);try{const g={enabled:m.enabled,url:m.url,events:m.events,base64:m.base64,byEvents:m.byEvents};await s({instanceName:t.name,token:t.token,data:g}),me.success(e("webhook.toast.success"))}catch(g){console.error(e("webhook.toast.error"),g),me.error(`Error: ${g?.response?.data?.response?.message}`)}finally{r(!1)}}},d=["APPLICATION_STARTUP","QRCODE_UPDATED","MESSAGES_SET","MESSAGES_UPSERT","MESSAGES_UPDATE","MESSAGES_DELETE","SEND_MESSAGE","CONTACTS_SET","CONTACTS_UPSERT","CONTACTS_UPDATE","PRESENCE_UPDATE","CHATS_SET","CHATS_UPSERT","CHATS_UPDATE","CHATS_DELETE","GROUPS_UPSERT","GROUP_UPDATE","GROUP_PARTICIPANTS_UPDATE","CONNECTION_UPDATE","REMOVE_INSTANCE","LOGOUT_INSTANCE","LABELS_EDIT","LABELS_ASSOCIATION","CALL","TYPEBOT_START","TYPEBOT_CHANGE_STATUS"],f=()=>{l.setValue("events",d)},h=()=>{l.setValue("events",[])};return i.jsx(i.Fragment,{children:i.jsx(Fo,{...l,children:i.jsx("form",{onSubmit:l.handleSubmit(u),className:"w-full space-y-6",children:i.jsxs("div",{children:[i.jsx("h3",{className:"mb-1 text-lg font-medium",children:e("webhook.title")}),i.jsx(Oa,{className:"my-4"}),i.jsxs("div",{className:"mx-4 space-y-2 divide-y [&>*]:p-4",children:[i.jsx(Pe,{name:"enabled",label:e("webhook.form.enabled.label"),className:"w-full justify-between",helper:e("webhook.form.enabled.description")}),i.jsx(le,{name:"url",label:"URL",children:i.jsx(ne,{})}),i.jsx(Pe,{name:"byEvents",label:e("webhook.form.byEvents.label"),className:"w-full justify-between",helper:e("webhook.form.byEvents.description")}),i.jsx(Pe,{name:"base64",label:e("webhook.form.base64.label"),className:"w-full justify-between",helper:e("webhook.form.base64.description")}),i.jsxs("div",{className:"mb-4 flex justify-between",children:[i.jsx(se,{variant:"outline",type:"button",onClick:f,children:e("button.markAll")}),i.jsx(se,{variant:"outline",type:"button",onClick:h,children:e("button.unMarkAll")})]}),i.jsx(Lo,{control:l.control,name:"events",render:({field:m})=>i.jsxs(no,{className:"flex flex-col",children:[i.jsx(Nr,{className:"my-2 text-lg",children:e("webhook.form.events.label")}),i.jsx(_s,{children:i.jsx("div",{className:"flex flex-col gap-2 space-y-1 divide-y",children:d.sort((g,x)=>g.localeCompare(x)).map(g=>i.jsxs("div",{className:"flex items-center justify-between gap-3 pt-3",children:[i.jsx(Nr,{className:Ie("break-all",m.value.includes(g)?"text-foreground":"text-muted-foreground"),children:g}),i.jsx(gc,{checked:m.value.includes(g),onCheckedChange:x=>{x?m.onChange([...m.value,g]):m.onChange(m.value.filter(b=>b!==g))}})]},g))})})]})})]}),i.jsx("div",{className:"mx-4 flex justify-end pt-6",children:i.jsx(se,{type:"submit",disabled:n,children:e(n?"webhook.button.saving":"webhook.button.save")})})]})})})})}const Tse=e=>["websocket","fetchWebsocket",JSON.stringify(e)],Nse=async({instanceName:e,token:t})=>(await Ee.get(`/websocket/find/${e}`,{headers:{apiKey:t}})).data,Mse=e=>{const{instanceName:t,token:n,...r}=e;return mt({...r,queryKey:Tse({instanceName:t,token:n}),queryFn:()=>Nse({instanceName:t,token:n}),enabled:!!t})},_se=async({instanceName:e,token:t,data:n})=>(await Ee.post(`/websocket/set/${e}`,{websocket:n},{headers:{apikey:t}})).data;function Rse(){return{createWebsocket:nt(_se,{invalidateKeys:[["websocket","fetchWebsocket"]]})}}const Pse=P.object({enabled:P.boolean(),events:P.array(P.string())});function Ose(){const{t:e}=Ve(),{instance:t}=ct(),[n,r]=y.useState(!1),{createWebsocket:s}=Rse(),{data:o}=Mse({instanceName:t?.name,token:t?.token}),l=on({resolver:an(Pse),defaultValues:{enabled:!1,events:[]}});y.useEffect(()=>{o&&l.reset({enabled:o.enabled,events:o.events})},[o]);const u=async m=>{if(t){r(!0);try{const g={enabled:m.enabled,events:m.events};await s({instanceName:t.name,token:t.token,data:g}),me.success(e("websocket.toast.success"))}catch(g){console.error(e("websocket.toast.error"),g),me.error(`Error: ${g?.response?.data?.response?.message}`)}finally{r(!1)}}},d=["APPLICATION_STARTUP","QRCODE_UPDATED","MESSAGES_SET","MESSAGES_UPSERT","MESSAGES_UPDATE","MESSAGES_DELETE","SEND_MESSAGE","CONTACTS_SET","CONTACTS_UPSERT","CONTACTS_UPDATE","PRESENCE_UPDATE","CHATS_SET","CHATS_UPSERT","CHATS_UPDATE","CHATS_DELETE","GROUPS_UPSERT","GROUP_UPDATE","GROUP_PARTICIPANTS_UPDATE","CONNECTION_UPDATE","REMOVE_INSTANCE","LOGOUT_INSTANCE","LABELS_EDIT","LABELS_ASSOCIATION","CALL","TYPEBOT_START","TYPEBOT_CHANGE_STATUS"],f=()=>{l.setValue("events",d)},h=()=>{l.setValue("events",[])};return i.jsx(i.Fragment,{children:i.jsx(Fo,{...l,children:i.jsx("form",{onSubmit:l.handleSubmit(u),className:"w-full space-y-6",children:i.jsxs("div",{children:[i.jsx("h3",{className:"mb-1 text-lg font-medium",children:e("websocket.title")}),i.jsx(Oa,{className:"my-4"}),i.jsxs("div",{className:"mx-4 space-y-2 divide-y [&>*]:p-4",children:[i.jsx(Pe,{name:"enabled",label:e("websocket.form.enabled.label"),className:"w-full justify-between",helper:e("websocket.form.enabled.description")}),i.jsxs("div",{className:"mb-4 flex justify-between",children:[i.jsx(se,{variant:"outline",type:"button",onClick:f,children:e("button.markAll")}),i.jsx(se,{variant:"outline",type:"button",onClick:h,children:e("button.unMarkAll")})]}),i.jsx(Lo,{control:l.control,name:"events",render:({field:m})=>i.jsxs(no,{className:"flex flex-col",children:[i.jsx(Nr,{className:"my-2 text-lg",children:e("websocket.form.events.label")}),i.jsx(_s,{children:i.jsx("div",{className:"flex flex-col gap-2 space-y-1 divide-y",children:d.sort((g,x)=>g.localeCompare(x)).map(g=>i.jsxs("div",{className:"flex items-center justify-between gap-3 pt-3",children:[i.jsx(Nr,{className:Ie("break-all",m.value.includes(g)?"text-foreground":"text-muted-foreground"),children:g}),i.jsx(gc,{checked:m.value.includes(g),onCheckedChange:x=>{x?m.onChange([...m.value,g]):m.onChange(m.value.filter(b=>b!==g))}})]},g))})})]})})]}),i.jsx("div",{className:"mx-4 flex justify-end pt-6",children:i.jsx(se,{type:"submit",disabled:n,children:e(n?"websocket.button.saving":"websocket.button.save")})})]})})})})}const Ise=async({url:e,token:t})=>{try{const{data:n}=await sn.post(`${e}/verify-creds`,{},{headers:{apikey:t}});return Rj({facebookAppId:n.facebookAppId,facebookConfigId:n.facebookConfigId,facebookUserToken:n.facebookUserToken}),n}catch{return null}},Ase=P.object({serverUrl:P.string({required_error:"serverUrl is required"}).url("URL inválida"),apiKey:P.string({required_error:"ApiKey is required"})});function Dse(){const{t:e}=Ve(),t=dn(),{theme:n}=tc(),r=on({resolver:an(Ase),defaultValues:{serverUrl:window.location.protocol+"//"+window.location.host,apiKey:""}}),s=async o=>{const l=await sT({url:o.serverUrl});if(!l||!l.version){Pj(),r.setError("serverUrl",{type:"manual",message:e("login.message.invalidServer")});return}if(!await Ise({token:o.apiKey,url:o.serverUrl})){r.setError("apiKey",{type:"manual",message:e("login.message.invalidCredentials")});return}Rj({version:l.version,clientName:l.clientName,url:o.serverUrl,token:o.apiKey}),t("/manager/")};return i.jsxs("div",{className:"flex min-h-screen flex-col",children:[i.jsx("div",{className:"flex items-center justify-center pt-2",children:i.jsx("img",{className:"h-10",src:n==="dark"?"https://evolution-api.com/files/evo/evolution-logo-white.svg":"https://evolution-api.com/files/evo/evolution-logo.svg",alt:"logo"})}),i.jsx("div",{className:"flex flex-1 items-center justify-center p-8",children:i.jsxs(So,{className:"b-none w-[350px] shadow-none",children:[i.jsxs(Co,{children:[i.jsx(gi,{className:"text-center",children:e("login.title")}),i.jsx(Kp,{className:"text-center",children:e("login.description")})]}),i.jsx(Fo,{...r,children:i.jsxs("form",{onSubmit:r.handleSubmit(s),children:[i.jsx(Eo,{children:i.jsxs("div",{className:"grid w-full items-center gap-4",children:[i.jsx(le,{required:!0,name:"serverUrl",label:e("login.form.serverUrl"),children:i.jsx(ne,{})}),i.jsx(le,{required:!0,name:"apiKey",label:e("login.form.apiKey"),children:i.jsx(ne,{type:"password"})})]})}),i.jsx(Vh,{className:"flex justify-center",children:i.jsx(se,{className:"w-full",type:"submit",children:e("login.button.login")})})]})})]})}),i.jsx(Vb,{})]})}function Fse(){const e=dn(),{theme:t}=tc(),n=()=>{e("/manager")};return i.jsxs("div",{className:"min-h-screen bg-background",children:[i.jsxs("header",{className:"flex items-center justify-between px-4 py-2",children:[i.jsx("div",{className:"flex items-center",children:i.jsx("img",{src:t==="dark"?"https://evolution-api.com/files/evo/evolution-logo-white.svg":"https://evolution-api.com/files/evo/evolution-logo.svg",alt:"Evolution API Logo",className:"h-8"})}),i.jsxs("div",{className:"flex items-center gap-4",children:[i.jsx(iM,{}),i.jsx(lM,{})]})]}),i.jsx("div",{className:"container mx-auto px-4 py-16",children:i.jsxs("div",{className:"max-w-4xl mx-auto",children:[i.jsxs("div",{className:"text-center mb-12",children:[i.jsx("div",{className:"flex items-center justify-center mb-6",children:i.jsx("img",{src:t==="dark"?"https://evolution-api.com/files/evo/evolution-logo-white.svg":"https://evolution-api.com/files/evo/evolution-logo.svg",alt:"Evolution Manager Logo",className:"h-10"})}),i.jsx("h1",{className:"text-4xl font-bold text-foreground mb-4",children:"Evolution Manager v2"}),i.jsx("p",{className:"text-xl text-muted-foreground mb-6",children:"Modern web interface for Evolution API management"}),i.jsx(vu,{variant:"secondary",className:"text-sm px-3 py-1",children:"Version 2.0.0"})]}),i.jsxs(So,{className:"mb-8",children:[i.jsxs(Co,{children:[i.jsxs(gi,{className:"flex items-center gap-2",children:[i.jsx(xB,{className:"w-5 h-5 text-primary"}),"Welcome to Evolution Manager"]}),i.jsx(Kp,{children:"A powerful, modern dashboard for managing your WhatsApp API instances with Evolution API"})]}),i.jsx(Eo,{className:"space-y-6",children:i.jsx("div",{className:"pt-6 border-t border-border",children:i.jsx("div",{className:"flex flex-col sm:flex-row gap-4 justify-center items-center",children:i.jsxs(se,{onClick:n,size:"lg",className:"px-8 py-3",children:["Access Manager Dashboard",i.jsx(Th,{className:"w-4 h-4 ml-2"})]})})})})]}),i.jsxs(So,{children:[i.jsxs(Co,{children:[i.jsx(gi,{children:"Resources & Support"}),i.jsx(Kp,{children:"Get help, contribute, or learn more about Evolution API"})]}),i.jsx(Eo,{children:i.jsxs("div",{className:"grid md:grid-cols-3 gap-4",children:[i.jsxs("a",{href:"https://github.com/EvolutionAPI/evolution-manager-v2",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-4 rounded-lg border border-border hover:bg-accent transition-colors",children:[i.jsx(aB,{className:"w-5 h-5 text-muted-foreground"}),i.jsxs("div",{children:[i.jsx("div",{className:"font-medium text-foreground",children:"GitHub"}),i.jsx("div",{className:"text-sm text-muted-foreground",children:"Source code"})]})]}),i.jsxs("a",{href:"https://evolution-api.com",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-4 rounded-lg border border-border hover:bg-accent transition-colors",children:[i.jsx(iB,{className:"w-5 h-5 text-muted-foreground"}),i.jsxs("div",{children:[i.jsx("div",{className:"font-medium text-foreground",children:"Website"}),i.jsx("div",{className:"text-sm text-muted-foreground",children:"Official site"})]})]}),i.jsxs("a",{href:"mailto:contato@evolution-api.com",className:"flex items-center gap-3 p-4 rounded-lg border border-border hover:bg-accent transition-colors",children:[i.jsx(vB,{className:"w-5 h-5 text-muted-foreground"}),i.jsxs("div",{children:[i.jsx("div",{className:"font-medium text-foreground",children:"Contact"}),i.jsx("div",{className:"text-sm text-muted-foreground",children:"Get support"})]})]})]})})]}),i.jsx("div",{className:"text-center mt-12 text-sm text-muted-foreground",children:i.jsx("p",{children:"© 2025 Evolution API. Licensed under Apache 2.0 with Evolution API custom conditions."})})]})})]})}const Lse=Z2([{path:"/",element:i.jsx(Fse,{})},{path:"/manager/login",element:i.jsx(jL,{children:i.jsx(Dse,{})})},{path:"/manager/",element:i.jsx(tn,{children:i.jsx(B5,{children:i.jsx(CZ,{})})})},{path:"/manager/instance/:instanceId/dashboard",element:i.jsx(tn,{children:i.jsx(un,{children:i.jsx(PX,{})})})},{path:"/manager/instance/:instanceId/chat",element:i.jsx(tn,{children:i.jsx(un,{children:i.jsx(tk,{})})})},{path:"/manager/instance/:instanceId/chat/:remoteJid",element:i.jsx(tn,{children:i.jsx(un,{children:i.jsx(tk,{})})})},{path:"/manager/instance/:instanceId/settings",element:i.jsx(tn,{children:i.jsx(un,{children:i.jsx(qre,{})})})},{path:"/manager/instance/:instanceId/openai",element:i.jsx(tn,{children:i.jsx(un,{children:i.jsx(Tk,{})})})},{path:"/manager/instance/:instanceId/openai/:botId",element:i.jsx(tn,{children:i.jsx(un,{children:i.jsx(Tk,{})})})},{path:"/manager/instance/:instanceId/webhook",element:i.jsx(tn,{children:i.jsx(un,{children:i.jsx(jse,{})})})},{path:"/manager/instance/:instanceId/websocket",element:i.jsx(tn,{children:i.jsx(un,{children:i.jsx(Ose,{})})})},{path:"/manager/instance/:instanceId/rabbitmq",element:i.jsx(tn,{children:i.jsx(un,{children:i.jsx(Bre,{})})})},{path:"/manager/instance/:instanceId/sqs",element:i.jsx(tn,{children:i.jsx(un,{children:i.jsx(Yre,{})})})},{path:"/manager/instance/:instanceId/chatwoot",element:i.jsx(tn,{children:i.jsx(un,{children:i.jsx(yX,{})})})},{path:"/manager/instance/:instanceId/typebot",element:i.jsx(tn,{children:i.jsx(un,{children:i.jsx(Nk,{})})})},{path:"/manager/instance/:instanceId/typebot/:typebotId",element:i.jsx(tn,{children:i.jsx(un,{children:i.jsx(Nk,{})})})},{path:"/manager/instance/:instanceId/dify",element:i.jsx(tn,{children:i.jsx(un,{children:i.jsx(xk,{})})})},{path:"/manager/instance/:instanceId/dify/:difyId",element:i.jsx(tn,{children:i.jsx(un,{children:i.jsx(xk,{})})})},{path:"/manager/instance/:instanceId/n8n",element:i.jsx(tn,{children:i.jsx(un,{children:i.jsx(jk,{})})})},{path:"/manager/instance/:instanceId/n8n/:n8nId",element:i.jsx(tn,{children:i.jsx(un,{children:i.jsx(jk,{})})})},{path:"/manager/instance/:instanceId/evoai",element:i.jsx(tn,{children:i.jsx(un,{children:i.jsx(Ck,{})})})},{path:"/manager/instance/:instanceId/evoai/:evoaiId",element:i.jsx(tn,{children:i.jsx(un,{children:i.jsx(Ck,{})})})},{path:"/manager/instance/:instanceId/evolutionBot",element:i.jsx(tn,{children:i.jsx(un,{children:i.jsx(Ek,{})})})},{path:"/manager/instance/:instanceId/evolutionBot/:evolutionBotId",element:i.jsx(tn,{children:i.jsx(un,{children:i.jsx(Ek,{})})})},{path:"/manager/instance/:instanceId/flowise",element:i.jsx(tn,{children:i.jsx(un,{children:i.jsx(kk,{})})})},{path:"/manager/instance/:instanceId/flowise/:flowiseId",element:i.jsx(tn,{children:i.jsx(un,{children:i.jsx(kk,{})})})},{path:"/manager/instance/:instanceId/proxy",element:i.jsx(tn,{children:i.jsx(un,{children:i.jsx(Ore,{})})})},{path:"/manager/embed-chat",element:i.jsx(Sk,{})},{path:"/manager/embed-chat/:remoteJid",element:i.jsx(Sk,{})}]),$se={type:"logger",log(e){this.output("log",e)},warn(e){this.output("warn",e)},error(e){this.output("error",e)},output(e,t){console&&console[e]&&console[e].apply(console,t)}};class uh{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.init(t,n)}init(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.prefix=n.prefix||"i18next:",this.logger=t||$se,this.options=n,this.debug=n.debug}log(){for(var t=arguments.length,n=new Array(t),r=0;r{this.observers[r]||(this.observers[r]=new Map);const s=this.observers[r].get(n)||0;this.observers[r].set(n,s+1)}),this}off(t,n){if(this.observers[t]){if(!n){delete this.observers[t];return}this.observers[t].delete(n)}}emit(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),s=1;s{let[u,d]=l;for(let f=0;f{let[u,d]=l;for(let f=0;f{let e,t;const n=new Promise((r,s)=>{e=r,t=s});return n.resolve=e,n.reject=t,n},Mk=e=>e==null?"":""+e,Bse=(e,t,n)=>{e.forEach(r=>{t[r]&&(n[r]=t[r])})},zse=/###/g,_k=e=>e&&e.indexOf("###")>-1?e.replace(zse,"."):e,Rk=e=>!e||typeof e=="string",Pu=(e,t,n)=>{const r=typeof t!="string"?t:t.split(".");let s=0;for(;s{const{obj:r,k:s}=Pu(e,t,Object);if(r!==void 0||t.length===1){r[s]=n;return}let o=t[t.length-1],l=t.slice(0,t.length-1),u=Pu(e,l,Object);for(;u.obj===void 0&&l.length;)o=`${l[l.length-1]}.${o}`,l=l.slice(0,l.length-1),u=Pu(e,l,Object),u&&u.obj&&typeof u.obj[`${u.k}.${o}`]<"u"&&(u.obj=void 0);u.obj[`${u.k}.${o}`]=n},Use=(e,t,n,r)=>{const{obj:s,k:o}=Pu(e,t,Object);s[o]=s[o]||[],s[o].push(n)},dh=(e,t)=>{const{obj:n,k:r}=Pu(e,t);if(n)return n[r]},Vse=(e,t,n)=>{const r=dh(e,n);return r!==void 0?r:dh(t,n)},HI=(e,t,n)=>{for(const r in t)r!=="__proto__"&&r!=="constructor"&&(r in e?typeof e[r]=="string"||e[r]instanceof String||typeof t[r]=="string"||t[r]instanceof String?n&&(e[r]=t[r]):HI(e[r],t[r],n):e[r]=t[r]);return e},Sl=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var Hse={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};const qse=e=>typeof e=="string"?e.replace(/[&<>"'\/]/g,t=>Hse[t]):e;class Kse{constructor(t){this.capacity=t,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(t){const n=this.regExpMap.get(t);if(n!==void 0)return n;const r=new RegExp(t);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(t,r),this.regExpQueue.push(t),r}}const Wse=[" ",",","?","!",";"],Gse=new Kse(20),Jse=(e,t,n)=>{t=t||"",n=n||"";const r=Wse.filter(l=>t.indexOf(l)<0&&n.indexOf(l)<0);if(r.length===0)return!0;const s=Gse.getRegExp(`(${r.map(l=>l==="?"?"\\?":l).join("|")})`);let o=!s.test(e);if(!o){const l=e.indexOf(n);l>0&&!s.test(e.substring(0,l))&&(o=!0)}return o},Mb=function(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:".";if(!e)return;if(e[t])return e[t];const r=t.split(n);let s=e;for(let o=0;o-1&&de&&e.indexOf("_")>0?e.replace("_","-"):e;class Ok extends kg{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{ns:["translation"],defaultNS:"translation"};super(),this.data=t||{},this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(t){this.options.ns.indexOf(t)<0&&this.options.ns.push(t)}removeNamespaces(t){const n=this.options.ns.indexOf(t);n>-1&&this.options.ns.splice(n,1)}getResource(t,n,r){let s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};const o=s.keySeparator!==void 0?s.keySeparator:this.options.keySeparator,l=s.ignoreJSONStructure!==void 0?s.ignoreJSONStructure:this.options.ignoreJSONStructure;let u;t.indexOf(".")>-1?u=t.split("."):(u=[t,n],r&&(Array.isArray(r)?u.push(...r):typeof r=="string"&&o?u.push(...r.split(o)):u.push(r)));const d=dh(this.data,u);return!d&&!n&&!r&&t.indexOf(".")>-1&&(t=u[0],n=u[1],r=u.slice(2).join(".")),d||!l||typeof r!="string"?d:Mb(this.data&&this.data[t]&&this.data[t][n],r,o)}addResource(t,n,r,s){let o=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{silent:!1};const l=o.keySeparator!==void 0?o.keySeparator:this.options.keySeparator;let u=[t,n];r&&(u=u.concat(l?r.split(l):r)),t.indexOf(".")>-1&&(u=t.split("."),s=n,n=u[1]),this.addNamespaces(n),Pk(this.data,u,s),o.silent||this.emit("added",t,n,r,s)}addResources(t,n,r){let s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{silent:!1};for(const o in r)(typeof r[o]=="string"||Array.isArray(r[o]))&&this.addResource(t,n,o,r[o],{silent:!0});s.silent||this.emit("added",t,n,r)}addResourceBundle(t,n,r,s,o){let l=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{silent:!1,skipCopy:!1},u=[t,n];t.indexOf(".")>-1&&(u=t.split("."),s=r,r=n,n=u[1]),this.addNamespaces(n);let d=dh(this.data,u)||{};l.skipCopy||(r=JSON.parse(JSON.stringify(r))),s?HI(d,r,o):d={...d,...r},Pk(this.data,u,d),l.silent||this.emit("added",t,n,r)}removeResourceBundle(t,n){this.hasResourceBundle(t,n)&&delete this.data[t][n],this.removeNamespaces(n),this.emit("removed",t,n)}hasResourceBundle(t,n){return this.getResource(t,n)!==void 0}getResourceBundle(t,n){return n||(n=this.options.defaultNS),this.options.compatibilityAPI==="v1"?{...this.getResource(t,n)}:this.getResource(t,n)}getDataByLanguage(t){return this.data[t]}hasLanguageSomeTranslations(t){const n=this.getDataByLanguage(t);return!!(n&&Object.keys(n)||[]).find(s=>n[s]&&Object.keys(n[s]).length>0)}toJSON(){return this.data}}var qI={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,n,r,s){return e.forEach(o=>{this.processors[o]&&(t=this.processors[o].process(t,n,r,s))}),t}};const Ik={};class ph extends kg{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(),Bse(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],t,this),this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=Ks.create("translator")}changeLanguage(t){t&&(this.language=t)}exists(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}};if(t==null)return!1;const r=this.resolve(t,n);return r&&r.res!==void 0}extractFromKey(t,n){let r=n.nsSeparator!==void 0?n.nsSeparator:this.options.nsSeparator;r===void 0&&(r=":");const s=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator;let o=n.ns||this.options.defaultNS||[];const l=r&&t.indexOf(r)>-1,u=!this.options.userDefinedKeySeparator&&!n.keySeparator&&!this.options.userDefinedNsSeparator&&!n.nsSeparator&&!Jse(t,r,s);if(l&&!u){const d=t.match(this.interpolator.nestingRegexp);if(d&&d.length>0)return{key:t,namespaces:o};const f=t.split(r);(r!==s||r===s&&this.options.ns.indexOf(f[0])>-1)&&(o=f.shift()),t=f.join(s)}return typeof o=="string"&&(o=[o]),{key:t,namespaces:o}}translate(t,n,r){if(typeof n!="object"&&this.options.overloadTranslationOptionHandler&&(n=this.options.overloadTranslationOptionHandler(arguments)),typeof n=="object"&&(n={...n}),n||(n={}),t==null)return"";Array.isArray(t)||(t=[String(t)]);const s=n.returnDetails!==void 0?n.returnDetails:this.options.returnDetails,o=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator,{key:l,namespaces:u}=this.extractFromKey(t[t.length-1],n),d=u[u.length-1],f=n.lng||this.language,h=n.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(f&&f.toLowerCase()==="cimode"){if(h){const _=n.nsSeparator||this.options.nsSeparator;return s?{res:`${d}${_}${l}`,usedKey:l,exactUsedKey:l,usedLng:f,usedNS:d,usedParams:this.getUsedParamsDetails(n)}:`${d}${_}${l}`}return s?{res:l,usedKey:l,exactUsedKey:l,usedLng:f,usedNS:d,usedParams:this.getUsedParamsDetails(n)}:l}const m=this.resolve(t,n);let g=m&&m.res;const x=m&&m.usedKey||l,b=m&&m.exactUsedKey||l,w=Object.prototype.toString.apply(g),C=["[object Number]","[object Function]","[object RegExp]"],k=n.joinArrays!==void 0?n.joinArrays:this.options.joinArrays,j=!this.i18nFormat||this.i18nFormat.handleAsObject;if(j&&g&&(typeof g!="string"&&typeof g!="boolean"&&typeof g!="number")&&C.indexOf(w)<0&&!(typeof k=="string"&&Array.isArray(g))){if(!n.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const _=this.options.returnedObjectHandler?this.options.returnedObjectHandler(x,g,{...n,ns:u}):`key '${l} (${this.language})' returned an object instead of string.`;return s?(m.res=_,m.usedParams=this.getUsedParamsDetails(n),m):_}if(o){const _=Array.isArray(g),R=_?[]:{},N=_?b:x;for(const O in g)if(Object.prototype.hasOwnProperty.call(g,O)){const D=`${N}${o}${O}`;R[O]=this.translate(D,{...n,joinArrays:!1,ns:u}),R[O]===D&&(R[O]=g[O])}g=R}}else if(j&&typeof k=="string"&&Array.isArray(g))g=g.join(k),g&&(g=this.extendTranslation(g,t,n,r));else{let _=!1,R=!1;const N=n.count!==void 0&&typeof n.count!="string",O=ph.hasDefaultValue(n),D=N?this.pluralResolver.getSuffix(f,n.count,n):"",z=n.ordinal&&N?this.pluralResolver.getSuffix(f,n.count,{ordinal:!1}):"",Q=N&&!n.ordinal&&n.count===0&&this.pluralResolver.shouldUseIntlApi(),pe=Q&&n[`defaultValue${this.options.pluralSeparator}zero`]||n[`defaultValue${D}`]||n[`defaultValue${z}`]||n.defaultValue;!this.isValidLookup(g)&&O&&(_=!0,g=pe),this.isValidLookup(g)||(R=!0,g=l);const G=(n.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&R?void 0:g,W=O&&pe!==g&&this.options.updateMissing;if(R||_||W){if(this.logger.log(W?"updateKey":"missingKey",f,d,l,W?pe:g),o){const H=this.resolve(l,{...n,keySeparator:!1});H&&H.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let ie=[];const re=this.languageUtils.getFallbackCodes(this.options.fallbackLng,n.lng||this.language);if(this.options.saveMissingTo==="fallback"&&re&&re[0])for(let H=0;H{const A=O&&he!==g?he:G;this.options.missingKeyHandler?this.options.missingKeyHandler(H,d,q,A,W,n):this.backendConnector&&this.backendConnector.saveMissing&&this.backendConnector.saveMissing(H,d,q,A,W,n),this.emit("missingKey",H,d,q,g)};this.options.saveMissing&&(this.options.saveMissingPlurals&&N?ie.forEach(H=>{const q=this.pluralResolver.getSuffixes(H,n);Q&&n[`defaultValue${this.options.pluralSeparator}zero`]&&q.indexOf(`${this.options.pluralSeparator}zero`)<0&&q.push(`${this.options.pluralSeparator}zero`),q.forEach(he=>{Y([H],l+he,n[`defaultValue${he}`]||pe)})}):Y(ie,l,pe))}g=this.extendTranslation(g,t,n,m,r),R&&g===l&&this.options.appendNamespaceToMissingKey&&(g=`${d}:${l}`),(R||_)&&this.options.parseMissingKeyHandler&&(this.options.compatibilityAPI!=="v1"?g=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${d}:${l}`:l,_?g:void 0):g=this.options.parseMissingKeyHandler(g))}return s?(m.res=g,m.usedParams=this.getUsedParamsDetails(n),m):g}extendTranslation(t,n,r,s,o){var l=this;if(this.i18nFormat&&this.i18nFormat.parse)t=this.i18nFormat.parse(t,{...this.options.interpolation.defaultVariables,...r},r.lng||this.language||s.usedLng,s.usedNS,s.usedKey,{resolved:s});else if(!r.skipInterpolation){r.interpolation&&this.interpolator.init({...r,interpolation:{...this.options.interpolation,...r.interpolation}});const f=typeof t=="string"&&(r&&r.interpolation&&r.interpolation.skipOnVariables!==void 0?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let h;if(f){const g=t.match(this.interpolator.nestingRegexp);h=g&&g.length}let m=r.replace&&typeof r.replace!="string"?r.replace:r;if(this.options.interpolation.defaultVariables&&(m={...this.options.interpolation.defaultVariables,...m}),t=this.interpolator.interpolate(t,m,r.lng||this.language||s.usedLng,r),f){const g=t.match(this.interpolator.nestingRegexp),x=g&&g.length;h1&&arguments[1]!==void 0?arguments[1]:{},r,s,o,l,u;return typeof t=="string"&&(t=[t]),t.forEach(d=>{if(this.isValidLookup(r))return;const f=this.extractFromKey(d,n),h=f.key;s=h;let m=f.namespaces;this.options.fallbackNS&&(m=m.concat(this.options.fallbackNS));const g=n.count!==void 0&&typeof n.count!="string",x=g&&!n.ordinal&&n.count===0&&this.pluralResolver.shouldUseIntlApi(),b=n.context!==void 0&&(typeof n.context=="string"||typeof n.context=="number")&&n.context!=="",w=n.lngs?n.lngs:this.languageUtils.toResolveHierarchy(n.lng||this.language,n.fallbackLng);m.forEach(C=>{this.isValidLookup(r)||(u=C,!Ik[`${w[0]}-${C}`]&&this.utils&&this.utils.hasLoadedNamespace&&!this.utils.hasLoadedNamespace(u)&&(Ik[`${w[0]}-${C}`]=!0,this.logger.warn(`key "${s}" for languages "${w.join(", ")}" won't get resolved as namespace "${u}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),w.forEach(k=>{if(this.isValidLookup(r))return;l=k;const j=[h];if(this.i18nFormat&&this.i18nFormat.addLookupKeys)this.i18nFormat.addLookupKeys(j,h,k,C,n);else{let _;g&&(_=this.pluralResolver.getSuffix(k,n.count,n));const R=`${this.options.pluralSeparator}zero`,N=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(g&&(j.push(h+_),n.ordinal&&_.indexOf(N)===0&&j.push(h+_.replace(N,this.options.pluralSeparator)),x&&j.push(h+R)),b){const O=`${h}${this.options.contextSeparator}${n.context}`;j.push(O),g&&(j.push(O+_),n.ordinal&&_.indexOf(N)===0&&j.push(O+_.replace(N,this.options.pluralSeparator)),x&&j.push(O+R))}}let M;for(;M=j.pop();)this.isValidLookup(r)||(o=M,r=this.getResource(k,C,M,n))}))})}),{res:r,usedKey:s,exactUsedKey:o,usedLng:l,usedNS:u}}isValidLookup(t){return t!==void 0&&!(!this.options.returnNull&&t===null)&&!(!this.options.returnEmptyString&&t==="")}getResource(t,n,r){let s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(t,n,r,s):this.resourceStore.getResource(t,n,r,s)}getUsedParamsDetails(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const n=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],r=t.replace&&typeof t.replace!="string";let s=r?t.replace:t;if(r&&typeof t.count<"u"&&(s.count=t.count),this.options.interpolation.defaultVariables&&(s={...this.options.interpolation.defaultVariables,...s}),!r){s={...s};for(const o of n)delete s[o]}return s}static hasDefaultValue(t){const n="defaultValue";for(const r in t)if(Object.prototype.hasOwnProperty.call(t,r)&&n===r.substring(0,n.length)&&t[r]!==void 0)return!0;return!1}}const xy=e=>e.charAt(0).toUpperCase()+e.slice(1);class Ak{constructor(t){this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=Ks.create("languageUtils")}getScriptPartFromCode(t){if(t=fh(t),!t||t.indexOf("-")<0)return null;const n=t.split("-");return n.length===2||(n.pop(),n[n.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(n.join("-"))}getLanguagePartFromCode(t){if(t=fh(t),!t||t.indexOf("-")<0)return t;const n=t.split("-");return this.formatLanguageCode(n[0])}formatLanguageCode(t){if(typeof t=="string"&&t.indexOf("-")>-1){const n=["hans","hant","latn","cyrl","cans","mong","arab"];let r=t.split("-");return this.options.lowerCaseLng?r=r.map(s=>s.toLowerCase()):r.length===2?(r[0]=r[0].toLowerCase(),r[1]=r[1].toUpperCase(),n.indexOf(r[1].toLowerCase())>-1&&(r[1]=xy(r[1].toLowerCase()))):r.length===3&&(r[0]=r[0].toLowerCase(),r[1].length===2&&(r[1]=r[1].toUpperCase()),r[0]!=="sgn"&&r[2].length===2&&(r[2]=r[2].toUpperCase()),n.indexOf(r[1].toLowerCase())>-1&&(r[1]=xy(r[1].toLowerCase())),n.indexOf(r[2].toLowerCase())>-1&&(r[2]=xy(r[2].toLowerCase()))),r.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?t.toLowerCase():t}isSupportedCode(t){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(t=this.getLanguagePartFromCode(t)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(t)>-1}getBestMatchFromCodes(t){if(!t)return null;let n;return t.forEach(r=>{if(n)return;const s=this.formatLanguageCode(r);(!this.options.supportedLngs||this.isSupportedCode(s))&&(n=s)}),!n&&this.options.supportedLngs&&t.forEach(r=>{if(n)return;const s=this.getLanguagePartFromCode(r);if(this.isSupportedCode(s))return n=s;n=this.options.supportedLngs.find(o=>{if(o===s)return o;if(!(o.indexOf("-")<0&&s.indexOf("-")<0)&&(o.indexOf("-")>0&&s.indexOf("-")<0&&o.substring(0,o.indexOf("-"))===s||o.indexOf(s)===0&&s.length>1))return o})}),n||(n=this.getFallbackCodes(this.options.fallbackLng)[0]),n}getFallbackCodes(t,n){if(!t)return[];if(typeof t=="function"&&(t=t(n)),typeof t=="string"&&(t=[t]),Array.isArray(t))return t;if(!n)return t.default||[];let r=t[n];return r||(r=t[this.getScriptPartFromCode(n)]),r||(r=t[this.formatLanguageCode(n)]),r||(r=t[this.getLanguagePartFromCode(n)]),r||(r=t.default),r||[]}toResolveHierarchy(t,n){const r=this.getFallbackCodes(n||this.options.fallbackLng||[],t),s=[],o=l=>{l&&(this.isSupportedCode(l)?s.push(l):this.logger.warn(`rejecting language code not found in supportedLngs: ${l}`))};return typeof t=="string"&&(t.indexOf("-")>-1||t.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&o(this.formatLanguageCode(t)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&o(this.getScriptPartFromCode(t)),this.options.load!=="currentOnly"&&o(this.getLanguagePartFromCode(t))):typeof t=="string"&&o(this.formatLanguageCode(t)),r.forEach(l=>{s.indexOf(l)<0&&o(this.formatLanguageCode(l))}),s}}let Qse=[{lngs:["ach","ak","am","arn","br","fil","gun","ln","mfe","mg","mi","oc","pt","pt-BR","tg","tl","ti","tr","uz","wa"],nr:[1,2],fc:1},{lngs:["af","an","ast","az","bg","bn","ca","da","de","dev","el","en","eo","es","et","eu","fi","fo","fur","fy","gl","gu","ha","hi","hu","hy","ia","it","kk","kn","ku","lb","mai","ml","mn","mr","nah","nap","nb","ne","nl","nn","no","nso","pa","pap","pms","ps","pt-PT","rm","sco","se","si","so","son","sq","sv","sw","ta","te","tk","ur","yo"],nr:[1,2],fc:2},{lngs:["ay","bo","cgg","fa","ht","id","ja","jbo","ka","km","ko","ky","lo","ms","sah","su","th","tt","ug","vi","wo","zh"],nr:[1],fc:3},{lngs:["be","bs","cnr","dz","hr","ru","sr","uk"],nr:[1,2,5],fc:4},{lngs:["ar"],nr:[0,1,2,3,11,100],fc:5},{lngs:["cs","sk"],nr:[1,2,5],fc:6},{lngs:["csb","pl"],nr:[1,2,5],fc:7},{lngs:["cy"],nr:[1,2,3,8],fc:8},{lngs:["fr"],nr:[1,2],fc:9},{lngs:["ga"],nr:[1,2,3,7,11],fc:10},{lngs:["gd"],nr:[1,2,3,20],fc:11},{lngs:["is"],nr:[1,2],fc:12},{lngs:["jv"],nr:[0,1],fc:13},{lngs:["kw"],nr:[1,2,3,4],fc:14},{lngs:["lt"],nr:[1,2,10],fc:15},{lngs:["lv"],nr:[1,2,0],fc:16},{lngs:["mk"],nr:[1,2],fc:17},{lngs:["mnk"],nr:[0,1,2],fc:18},{lngs:["mt"],nr:[1,2,11,20],fc:19},{lngs:["or"],nr:[2,1],fc:2},{lngs:["ro"],nr:[1,2,20],fc:20},{lngs:["sl"],nr:[5,1,2,3],fc:21},{lngs:["he","iw"],nr:[1,2,20,21],fc:22}],Zse={1:e=>+(e>1),2:e=>+(e!=1),3:e=>0,4:e=>e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2,5:e=>e==0?0:e==1?1:e==2?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5,6:e=>e==1?0:e>=2&&e<=4?1:2,7:e=>e==1?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2,8:e=>e==1?0:e==2?1:e!=8&&e!=11?2:3,9:e=>+(e>=2),10:e=>e==1?0:e==2?1:e<7?2:e<11?3:4,11:e=>e==1||e==11?0:e==2||e==12?1:e>2&&e<20?2:3,12:e=>+(e%10!=1||e%100==11),13:e=>+(e!==0),14:e=>e==1?0:e==2?1:e==3?2:3,15:e=>e%10==1&&e%100!=11?0:e%10>=2&&(e%100<10||e%100>=20)?1:2,16:e=>e%10==1&&e%100!=11?0:e!==0?1:2,17:e=>e==1||e%10==1&&e%100!=11?0:1,18:e=>e==0?0:e==1?1:2,19:e=>e==1?0:e==0||e%100>1&&e%100<11?1:e%100>10&&e%100<20?2:3,20:e=>e==1?0:e==0||e%100>0&&e%100<20?1:2,21:e=>e%100==1?1:e%100==2?2:e%100==3||e%100==4?3:0,22:e=>e==1?0:e==2?1:(e<0||e>10)&&e%10==0?2:3};const Yse=["v1","v2","v3"],Xse=["v4"],Dk={zero:0,one:1,two:2,few:3,many:4,other:5},eoe=()=>{const e={};return Qse.forEach(t=>{t.lngs.forEach(n=>{e[n]={numbers:t.nr,plurals:Zse[t.fc]}})}),e};class toe{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.languageUtils=t,this.options=n,this.logger=Ks.create("pluralResolver"),(!this.options.compatibilityJSON||Xse.includes(this.options.compatibilityJSON))&&(typeof Intl>"u"||!Intl.PluralRules)&&(this.options.compatibilityJSON="v3",this.logger.error("Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.")),this.rules=eoe(),this.pluralRulesCache={}}addRule(t,n){this.rules[t]=n}clearCache(){this.pluralRulesCache={}}getRule(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(this.shouldUseIntlApi())try{const r=fh(t==="dev"?"en":t),s=n.ordinal?"ordinal":"cardinal",o=JSON.stringify({cleanedCode:r,type:s});if(o in this.pluralRulesCache)return this.pluralRulesCache[o];const l=new Intl.PluralRules(r,{type:s});return this.pluralRulesCache[o]=l,l}catch{return}return this.rules[t]||this.rules[this.languageUtils.getLanguagePartFromCode(t)]}needsPlural(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const r=this.getRule(t,n);return this.shouldUseIntlApi()?r&&r.resolvedOptions().pluralCategories.length>1:r&&r.numbers.length>1}getPluralFormsOfKey(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return this.getSuffixes(t,r).map(s=>`${n}${s}`)}getSuffixes(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const r=this.getRule(t,n);return r?this.shouldUseIntlApi()?r.resolvedOptions().pluralCategories.sort((s,o)=>Dk[s]-Dk[o]).map(s=>`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:""}${s}`):r.numbers.map(s=>this.getSuffix(t,s,n)):[]}getSuffix(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const s=this.getRule(t,r);return s?this.shouldUseIntlApi()?`${this.options.prepend}${r.ordinal?`ordinal${this.options.prepend}`:""}${s.select(n)}`:this.getSuffixRetroCompatible(s,n):(this.logger.warn(`no plural rule found for: ${t}`),"")}getSuffixRetroCompatible(t,n){const r=t.noAbs?t.plurals(n):t.plurals(Math.abs(n));let s=t.numbers[r];this.options.simplifyPluralSuffix&&t.numbers.length===2&&t.numbers[0]===1&&(s===2?s="plural":s===1&&(s=""));const o=()=>this.options.prepend&&s.toString()?this.options.prepend+s.toString():s.toString();return this.options.compatibilityJSON==="v1"?s===1?"":typeof s=="number"?`_plural_${s.toString()}`:o():this.options.compatibilityJSON==="v2"||this.options.simplifyPluralSuffix&&t.numbers.length===2&&t.numbers[0]===1?o():this.options.prepend&&r.toString()?this.options.prepend+r.toString():r.toString()}shouldUseIntlApi(){return!Yse.includes(this.options.compatibilityJSON)}}const Fk=function(e,t,n){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:".",s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,o=Vse(e,t,n);return!o&&s&&typeof n=="string"&&(o=Mb(e,n,r),o===void 0&&(o=Mb(t,n,r))),o},wy=e=>e.replace(/\$/g,"$$$$");class noe{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=Ks.create("interpolator"),this.options=t,this.format=t.interpolation&&t.interpolation.format||(n=>n),this.init(t)}init(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};t.interpolation||(t.interpolation={escapeValue:!0});const{escape:n,escapeValue:r,useRawValueToEscape:s,prefix:o,prefixEscaped:l,suffix:u,suffixEscaped:d,formatSeparator:f,unescapeSuffix:h,unescapePrefix:m,nestingPrefix:g,nestingPrefixEscaped:x,nestingSuffix:b,nestingSuffixEscaped:w,nestingOptionsSeparator:C,maxReplaces:k,alwaysFormat:j}=t.interpolation;this.escape=n!==void 0?n:qse,this.escapeValue=r!==void 0?r:!0,this.useRawValueToEscape=s!==void 0?s:!1,this.prefix=o?Sl(o):l||"{{",this.suffix=u?Sl(u):d||"}}",this.formatSeparator=f||",",this.unescapePrefix=h?"":m||"-",this.unescapeSuffix=this.unescapePrefix?"":h||"",this.nestingPrefix=g?Sl(g):x||Sl("$t("),this.nestingSuffix=b?Sl(b):w||Sl(")"),this.nestingOptionsSeparator=C||",",this.maxReplaces=k||1e3,this.alwaysFormat=j!==void 0?j:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const t=(n,r)=>n&&n.source===r?(n.lastIndex=0,n):new RegExp(r,"g");this.regexp=t(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=t(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=t(this.nestingRegexp,`${this.nestingPrefix}(.+?)${this.nestingSuffix}`)}interpolate(t,n,r,s){let o,l,u;const d=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},f=x=>{if(x.indexOf(this.formatSeparator)<0){const k=Fk(n,d,x,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(k,void 0,r,{...s,...n,interpolationkey:x}):k}const b=x.split(this.formatSeparator),w=b.shift().trim(),C=b.join(this.formatSeparator).trim();return this.format(Fk(n,d,w,this.options.keySeparator,this.options.ignoreJSONStructure),C,r,{...s,...n,interpolationkey:w})};this.resetRegExp();const h=s&&s.missingInterpolationHandler||this.options.missingInterpolationHandler,m=s&&s.interpolation&&s.interpolation.skipOnVariables!==void 0?s.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:x=>wy(x)},{regex:this.regexp,safeValue:x=>this.escapeValue?wy(this.escape(x)):wy(x)}].forEach(x=>{for(u=0;o=x.regex.exec(t);){const b=o[1].trim();if(l=f(b),l===void 0)if(typeof h=="function"){const C=h(t,o,s);l=typeof C=="string"?C:""}else if(s&&Object.prototype.hasOwnProperty.call(s,b))l="";else if(m){l=o[0];continue}else this.logger.warn(`missed to pass in variable ${b} for interpolating ${t}`),l="";else typeof l!="string"&&!this.useRawValueToEscape&&(l=Mk(l));const w=x.safeValue(l);if(t=t.replace(o[0],w),m?(x.regex.lastIndex+=l.length,x.regex.lastIndex-=o[0].length):x.regex.lastIndex=0,u++,u>=this.maxReplaces)break}}),t}nest(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},s,o,l;const u=(d,f)=>{const h=this.nestingOptionsSeparator;if(d.indexOf(h)<0)return d;const m=d.split(new RegExp(`${h}[ ]*{`));let g=`{${m[1]}`;d=m[0],g=this.interpolate(g,l);const x=g.match(/'/g),b=g.match(/"/g);(x&&x.length%2===0&&!b||b.length%2!==0)&&(g=g.replace(/'/g,'"'));try{l=JSON.parse(g),f&&(l={...f,...l})}catch(w){return this.logger.warn(`failed parsing options string in nesting for key ${d}`,w),`${d}${h}${g}`}return l.defaultValue&&l.defaultValue.indexOf(this.prefix)>-1&&delete l.defaultValue,d};for(;s=this.nestingRegexp.exec(t);){let d=[];l={...r},l=l.replace&&typeof l.replace!="string"?l.replace:l,l.applyPostProcessor=!1,delete l.defaultValue;let f=!1;if(s[0].indexOf(this.formatSeparator)!==-1&&!/{.*}/.test(s[1])){const h=s[1].split(this.formatSeparator).map(m=>m.trim());s[1]=h.shift(),d=h,f=!0}if(o=n(u.call(this,s[1].trim(),l),l),o&&s[0]===t&&typeof o!="string")return o;typeof o!="string"&&(o=Mk(o)),o||(this.logger.warn(`missed to resolve ${s[1]} for nesting ${t}`),o=""),f&&(o=d.reduce((h,m)=>this.format(h,m,r.lng,{...r,interpolationkey:s[1].trim()}),o.trim())),t=t.replace(s[0],o),this.regexp.lastIndex=0}return t}}const roe=e=>{let t=e.toLowerCase().trim();const n={};if(e.indexOf("(")>-1){const r=e.split("(");t=r[0].toLowerCase().trim();const s=r[1].substring(0,r[1].length-1);t==="currency"&&s.indexOf(":")<0?n.currency||(n.currency=s.trim()):t==="relativetime"&&s.indexOf(":")<0?n.range||(n.range=s.trim()):s.split(";").forEach(l=>{if(l){const[u,...d]=l.split(":"),f=d.join(":").trim().replace(/^'+|'+$/g,""),h=u.trim();n[h]||(n[h]=f),f==="false"&&(n[h]=!1),f==="true"&&(n[h]=!0),isNaN(f)||(n[h]=parseInt(f,10))}})}return{formatName:t,formatOptions:n}},Cl=e=>{const t={};return(n,r,s)=>{let o=s;s&&s.interpolationkey&&s.formatParams&&s.formatParams[s.interpolationkey]&&s[s.interpolationkey]&&(o={...o,[s.interpolationkey]:void 0});const l=r+JSON.stringify(o);let u=t[l];return u||(u=e(fh(r),s),t[l]=u),u(n)}};class soe{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=Ks.create("formatter"),this.options=t,this.formats={number:Cl((n,r)=>{const s=new Intl.NumberFormat(n,{...r});return o=>s.format(o)}),currency:Cl((n,r)=>{const s=new Intl.NumberFormat(n,{...r,style:"currency"});return o=>s.format(o)}),datetime:Cl((n,r)=>{const s=new Intl.DateTimeFormat(n,{...r});return o=>s.format(o)}),relativetime:Cl((n,r)=>{const s=new Intl.RelativeTimeFormat(n,{...r});return o=>s.format(o,r.range||"day")}),list:Cl((n,r)=>{const s=new Intl.ListFormat(n,{...r});return o=>s.format(o)})},this.init(t)}init(t){const r=(arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}}).interpolation;this.formatSeparator=r.formatSeparator?r.formatSeparator:r.formatSeparator||","}add(t,n){this.formats[t.toLowerCase().trim()]=n}addCached(t,n){this.formats[t.toLowerCase().trim()]=Cl(n)}format(t,n,r){let s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};const o=n.split(this.formatSeparator);if(o.length>1&&o[0].indexOf("(")>1&&o[0].indexOf(")")<0&&o.find(u=>u.indexOf(")")>-1)){const u=o.findIndex(d=>d.indexOf(")")>-1);o[0]=[o[0],...o.splice(1,u)].join(this.formatSeparator)}return o.reduce((u,d)=>{const{formatName:f,formatOptions:h}=roe(d);if(this.formats[f]){let m=u;try{const g=s&&s.formatParams&&s.formatParams[s.interpolationkey]||{},x=g.locale||g.lng||s.locale||s.lng||r;m=this.formats[f](u,x,{...h,...s,...g})}catch(g){this.logger.warn(g)}return m}else this.logger.warn(`there was no format function for ${f}`);return u},t)}}const ooe=(e,t)=>{e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)};class aoe extends kg{constructor(t,n,r){let s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};super(),this.backend=t,this.store=n,this.services=r,this.languageUtils=r.languageUtils,this.options=s,this.logger=Ks.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=s.maxParallelReads||10,this.readingCalls=0,this.maxRetries=s.maxRetries>=0?s.maxRetries:5,this.retryTimeout=s.retryTimeout>=1?s.retryTimeout:350,this.state={},this.queue=[],this.backend&&this.backend.init&&this.backend.init(r,s.backend,s)}queueLoad(t,n,r,s){const o={},l={},u={},d={};return t.forEach(f=>{let h=!0;n.forEach(m=>{const g=`${f}|${m}`;!r.reload&&this.store.hasResourceBundle(f,m)?this.state[g]=2:this.state[g]<0||(this.state[g]===1?l[g]===void 0&&(l[g]=!0):(this.state[g]=1,h=!1,l[g]===void 0&&(l[g]=!0),o[g]===void 0&&(o[g]=!0),d[m]===void 0&&(d[m]=!0)))}),h||(u[f]=!0)}),(Object.keys(o).length||Object.keys(l).length)&&this.queue.push({pending:l,pendingCount:Object.keys(l).length,loaded:{},errors:[],callback:s}),{toLoad:Object.keys(o),pending:Object.keys(l),toLoadLanguages:Object.keys(u),toLoadNamespaces:Object.keys(d)}}loaded(t,n,r){const s=t.split("|"),o=s[0],l=s[1];n&&this.emit("failedLoading",o,l,n),!n&&r&&this.store.addResourceBundle(o,l,r,void 0,void 0,{skipCopy:!0}),this.state[t]=n?-1:2,n&&r&&(this.state[t]=0);const u={};this.queue.forEach(d=>{Use(d.loaded,[o],l),ooe(d,t),n&&d.errors.push(n),d.pendingCount===0&&!d.done&&(Object.keys(d.loaded).forEach(f=>{u[f]||(u[f]={});const h=d.loaded[f];h.length&&h.forEach(m=>{u[f][m]===void 0&&(u[f][m]=!0)})}),d.done=!0,d.errors.length?d.callback(d.errors):d.callback())}),this.emit("loaded",u),this.queue=this.queue.filter(d=>!d.done)}read(t,n,r){let s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,o=arguments.length>4&&arguments[4]!==void 0?arguments[4]:this.retryTimeout,l=arguments.length>5?arguments[5]:void 0;if(!t.length)return l(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:t,ns:n,fcName:r,tried:s,wait:o,callback:l});return}this.readingCalls++;const u=(f,h)=>{if(this.readingCalls--,this.waitingReads.length>0){const m=this.waitingReads.shift();this.read(m.lng,m.ns,m.fcName,m.tried,m.wait,m.callback)}if(f&&h&&s{this.read.call(this,t,n,r,s+1,o*2,l)},o);return}l(f,h)},d=this.backend[r].bind(this.backend);if(d.length===2){try{const f=d(t,n);f&&typeof f.then=="function"?f.then(h=>u(null,h)).catch(u):u(null,f)}catch(f){u(f)}return}return d(t,n,u)}prepareLoading(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},s=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),s&&s();typeof t=="string"&&(t=this.languageUtils.toResolveHierarchy(t)),typeof n=="string"&&(n=[n]);const o=this.queueLoad(t,n,r,s);if(!o.toLoad.length)return o.pending.length||s(),null;o.toLoad.forEach(l=>{this.loadOne(l)})}load(t,n,r){this.prepareLoading(t,n,{},r)}reload(t,n,r){this.prepareLoading(t,n,{reload:!0},r)}loadOne(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";const r=t.split("|"),s=r[0],o=r[1];this.read(s,o,"read",void 0,void 0,(l,u)=>{l&&this.logger.warn(`${n}loading namespace ${o} for language ${s} failed`,l),!l&&u&&this.logger.log(`${n}loaded namespace ${o} for language ${s}`,u),this.loaded(t,l,u)})}saveMissing(t,n,r,s,o){let l=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{},u=arguments.length>6&&arguments[6]!==void 0?arguments[6]:()=>{};if(this.services.utils&&this.services.utils.hasLoadedNamespace&&!this.services.utils.hasLoadedNamespace(n)){this.logger.warn(`did not save key "${r}" as the namespace "${n}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(r==null||r==="")){if(this.backend&&this.backend.create){const d={...l,isUpdate:o},f=this.backend.create.bind(this.backend);if(f.length<6)try{let h;f.length===5?h=f(t,n,r,s,d):h=f(t,n,r,s),h&&typeof h.then=="function"?h.then(m=>u(null,m)).catch(u):u(null,h)}catch(h){u(h)}else f(t,n,r,s,u,d)}!t||!t[0]||this.store.addResource(t[0],n,r,s)}}}const Lk=()=>({debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if(typeof e[1]=="object"&&(t=e[1]),typeof e[1]=="string"&&(t.defaultValue=e[1]),typeof e[2]=="string"&&(t.tDescription=e[2]),typeof e[2]=="object"||typeof e[3]=="object"){const n=e[3]||e[2];Object.keys(n).forEach(r=>{t[r]=n[r]})}return t},interpolation:{escapeValue:!0,format:e=>e,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0}}),$k=e=>(typeof e.ns=="string"&&(e.ns=[e.ns]),typeof e.fallbackLng=="string"&&(e.fallbackLng=[e.fallbackLng]),typeof e.fallbackNS=="string"&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&e.supportedLngs.indexOf("cimode")<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),e),lp=()=>{},ioe=e=>{Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(n=>{typeof e[n]=="function"&&(e[n]=e[n].bind(e))})};class dd extends kg{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;if(super(),this.options=$k(t),this.services={},this.logger=Ks,this.modules={external:[]},ioe(this),n&&!this.isInitialized&&!t.isClone){if(!this.options.initImmediate)return this.init(t,n),this;setTimeout(()=>{this.init(t,n)},0)}}init(){var t=this;let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=arguments.length>1?arguments[1]:void 0;this.isInitializing=!0,typeof n=="function"&&(r=n,n={}),!n.defaultNS&&n.defaultNS!==!1&&n.ns&&(typeof n.ns=="string"?n.defaultNS=n.ns:n.ns.indexOf("translation")<0&&(n.defaultNS=n.ns[0]));const s=Lk();this.options={...s,...this.options,...$k(n)},this.options.compatibilityAPI!=="v1"&&(this.options.interpolation={...s.interpolation,...this.options.interpolation}),n.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=n.keySeparator),n.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=n.nsSeparator);const o=h=>h?typeof h=="function"?new h:h:null;if(!this.options.isClone){this.modules.logger?Ks.init(o(this.modules.logger),this.options):Ks.init(null,this.options);let h;this.modules.formatter?h=this.modules.formatter:typeof Intl<"u"&&(h=soe);const m=new Ak(this.options);this.store=new Ok(this.options.resources,this.options);const g=this.services;g.logger=Ks,g.resourceStore=this.store,g.languageUtils=m,g.pluralResolver=new toe(m,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),h&&(!this.options.interpolation.format||this.options.interpolation.format===s.interpolation.format)&&(g.formatter=o(h),g.formatter.init(g,this.options),this.options.interpolation.format=g.formatter.format.bind(g.formatter)),g.interpolator=new noe(this.options),g.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},g.backendConnector=new aoe(o(this.modules.backend),g.resourceStore,g,this.options),g.backendConnector.on("*",function(x){for(var b=arguments.length,w=new Array(b>1?b-1:0),C=1;C1?b-1:0),C=1;C{x.init&&x.init(this)})}if(this.format=this.options.interpolation.format,r||(r=lp),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const h=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);h.length>0&&h[0]!=="dev"&&(this.options.lng=h[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(h=>{this[h]=function(){return t.store[h](...arguments)}}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(h=>{this[h]=function(){return t.store[h](...arguments),t}});const d=hu(),f=()=>{const h=(m,g)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),d.resolve(g),r(m,g)};if(this.languages&&this.options.compatibilityAPI!=="v1"&&!this.isInitialized)return h(null,this.t.bind(this));this.changeLanguage(this.options.lng,h)};return this.options.resources||!this.options.initImmediate?f():setTimeout(f,0),d}loadResources(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:lp;const s=typeof t=="string"?t:this.language;if(typeof t=="function"&&(r=t),!this.options.resources||this.options.partialBundledLanguages){if(s&&s.toLowerCase()==="cimode"&&(!this.options.preload||this.options.preload.length===0))return r();const o=[],l=u=>{if(!u||u==="cimode")return;this.services.languageUtils.toResolveHierarchy(u).forEach(f=>{f!=="cimode"&&o.indexOf(f)<0&&o.push(f)})};s?l(s):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(d=>l(d)),this.options.preload&&this.options.preload.forEach(u=>l(u)),this.services.backendConnector.load(o,this.options.ns,u=>{!u&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),r(u)})}else r(null)}reloadResources(t,n,r){const s=hu();return typeof t=="function"&&(r=t,t=void 0),typeof n=="function"&&(r=n,n=void 0),t||(t=this.languages),n||(n=this.options.ns),r||(r=lp),this.services.backendConnector.reload(t,n,o=>{s.resolve(),r(o)}),s}use(t){if(!t)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!t.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return t.type==="backend"&&(this.modules.backend=t),(t.type==="logger"||t.log&&t.warn&&t.error)&&(this.modules.logger=t),t.type==="languageDetector"&&(this.modules.languageDetector=t),t.type==="i18nFormat"&&(this.modules.i18nFormat=t),t.type==="postProcessor"&&qI.addPostProcessor(t),t.type==="formatter"&&(this.modules.formatter=t),t.type==="3rdParty"&&this.modules.external.push(t),this}setResolvedLanguage(t){if(!(!t||!this.languages)&&!(["cimode","dev"].indexOf(t)>-1))for(let n=0;n-1)&&this.store.hasLanguageSomeTranslations(r)){this.resolvedLanguage=r;break}}}changeLanguage(t,n){var r=this;this.isLanguageChangingTo=t;const s=hu();this.emit("languageChanging",t);const o=d=>{this.language=d,this.languages=this.services.languageUtils.toResolveHierarchy(d),this.resolvedLanguage=void 0,this.setResolvedLanguage(d)},l=(d,f)=>{f?(o(f),this.translator.changeLanguage(f),this.isLanguageChangingTo=void 0,this.emit("languageChanged",f),this.logger.log("languageChanged",f)):this.isLanguageChangingTo=void 0,s.resolve(function(){return r.t(...arguments)}),n&&n(d,function(){return r.t(...arguments)})},u=d=>{!t&&!d&&this.services.languageDetector&&(d=[]);const f=typeof d=="string"?d:this.services.languageUtils.getBestMatchFromCodes(d);f&&(this.language||o(f),this.translator.language||this.translator.changeLanguage(f),this.services.languageDetector&&this.services.languageDetector.cacheUserLanguage&&this.services.languageDetector.cacheUserLanguage(f)),this.loadResources(f,h=>{l(h,f)})};return!t&&this.services.languageDetector&&!this.services.languageDetector.async?u(this.services.languageDetector.detect()):!t&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(u):this.services.languageDetector.detect(u):u(t),s}getFixedT(t,n,r){var s=this;const o=function(l,u){let d;if(typeof u!="object"){for(var f=arguments.length,h=new Array(f>2?f-2:0),m=2;m`${d.keyPrefix}${g}${b}`):x=d.keyPrefix?`${d.keyPrefix}${g}${l}`:l,s.t(x,d)};return typeof t=="string"?o.lng=t:o.lngs=t,o.ns=n,o.keyPrefix=r,o}t(){return this.translator&&this.translator.translate(...arguments)}exists(){return this.translator&&this.translator.exists(...arguments)}setDefaultNamespace(t){this.options.defaultNS=t}hasLoadedNamespace(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const r=n.lng||this.resolvedLanguage||this.languages[0],s=this.options?this.options.fallbackLng:!1,o=this.languages[this.languages.length-1];if(r.toLowerCase()==="cimode")return!0;const l=(u,d)=>{const f=this.services.backendConnector.state[`${u}|${d}`];return f===-1||f===0||f===2};if(n.precheck){const u=n.precheck(this,l);if(u!==void 0)return u}return!!(this.hasResourceBundle(r,t)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||l(r,t)&&(!s||l(o,t)))}loadNamespaces(t,n){const r=hu();return this.options.ns?(typeof t=="string"&&(t=[t]),t.forEach(s=>{this.options.ns.indexOf(s)<0&&this.options.ns.push(s)}),this.loadResources(s=>{r.resolve(),n&&n(s)}),r):(n&&n(),Promise.resolve())}loadLanguages(t,n){const r=hu();typeof t=="string"&&(t=[t]);const s=this.options.preload||[],o=t.filter(l=>s.indexOf(l)<0&&this.services.languageUtils.isSupportedCode(l));return o.length?(this.options.preload=s.concat(o),this.loadResources(l=>{r.resolve(),n&&n(l)}),r):(n&&n(),Promise.resolve())}dir(t){if(t||(t=this.resolvedLanguage||(this.languages&&this.languages.length>0?this.languages[0]:this.language)),!t)return"rtl";const n=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],r=this.services&&this.services.languageUtils||new Ak(Lk());return n.indexOf(r.getLanguagePartFromCode(t))>-1||t.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;return new dd(t,n)}cloneInstance(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:lp;const r=t.forkResourceStore;r&&delete t.forkResourceStore;const s={...this.options,...t,isClone:!0},o=new dd(s);return(t.debug!==void 0||t.prefix!==void 0)&&(o.logger=o.logger.clone(t)),["store","services","language"].forEach(u=>{o[u]=this[u]}),o.services={...this.services},o.services.utils={hasLoadedNamespace:o.hasLoadedNamespace.bind(o)},r&&(o.store=new Ok(this.store.data,s),o.services.resourceStore=o.store),o.translator=new ph(o.services,s),o.translator.on("*",function(u){for(var d=arguments.length,f=new Array(d>1?d-1:0),h=1;h:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse: 0;border-right-width:calc(1px * var(--tw-divide-x-reverse));border-left-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.self-end{align-self:flex-end}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-ellipsis,.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-wrap{text-wrap:wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-3xl{border-radius:1.5rem}.rounded-\[16px\]{border-radius:16px}.rounded-\[2px\]{border-radius:2px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.rounded-l-lg{border-top-left-radius:var(--radius);border-bottom-left-radius:var(--radius)}.border{border-width:1px}.border-2{border-width:2px}.border-\[1\.5px\]{border-width:1.5px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-\[--color-border\]{border-color:var(--color-border)}.border-amber-500\/20{border-color:#f59e0b33}.border-black{--tw-border-opacity: 1;border-color:rgb(0 0 0 / var(--tw-border-opacity))}.border-black\/10{border-color:#0000001a}.border-border{border-color:hsl(var(--border))}.border-border\/50{border-color:hsl(var(--border) / .5)}.border-emerald-500\/20{border-color:#10b98133}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.border-gray-600\/50{border-color:#4b556380}.border-input{border-color:hsl(var(--input))}.border-muted{border-color:hsl(var(--muted))}.border-red-500\/20{border-color:#ef444433}.border-sky-500\/20{border-color:#0ea5e933}.border-slate-600{--tw-border-opacity: 1;border-color:rgb(71 85 105 / var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-zinc-500\/20{border-color:#71717a33}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-\[\#b2ece0\]{--tw-bg-opacity: 1;background-color:rgb(178 236 224 / var(--tw-bg-opacity))}.bg-\[\#c8fff2\]{--tw-bg-opacity: 1;background-color:rgb(200 255 242 / var(--tw-bg-opacity))}.bg-\[\#d2e2e2\]{--tw-bg-opacity: 1;background-color:rgb(210 226 226 / var(--tw-bg-opacity))}.bg-\[\#e0f0f0\]{--tw-bg-opacity: 1;background-color:rgb(224 240 240 / var(--tw-bg-opacity))}.bg-\[--color-bg\]{background-color:var(--color-bg)}.bg-amber-50\/50{background-color:#fffbeb80}.bg-amber-600{--tw-bg-opacity: 1;background-color:rgb(217 119 6 / var(--tw-bg-opacity))}.bg-background{background-color:hsl(var(--background))}.bg-background\/80{background-color:hsl(var(--background) / .8)}.bg-black\/10{background-color:#0000001a}.bg-black\/5{background-color:#0000000d}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity))}.bg-blue-700{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity))}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-destructive{background-color:hsl(var(--destructive))}.bg-emerald-50\/50{background-color:#ecfdf580}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/20{background-color:hsl(var(--primary) / .2)}.bg-primary\/30{background-color:hsl(var(--primary) / .3)}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity))}.bg-red-50\/50{background-color:#fef2f280}.bg-secondary{background-color:hsl(var(--secondary))}.bg-sky-50\/50{background-color:#f0f9ff80}.bg-slate-700{--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity))}.bg-zinc-50\/50{background-color:#fafafa80}.fill-current{fill:currentColor}.fill-gray-100{fill:#f3f4f6}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[0\.375rem_1rem_0_1rem\]{padding:.375rem 1rem 0}.p-\[1px\]{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pb-3{padding-bottom:.75rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-8{padding-left:2rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pt-0{padding-top:0}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-widest{letter-spacing:.1em}.text-\[\#008069\]{--tw-text-opacity: 1;color:rgb(0 128 105 / var(--tw-text-opacity))}.text-\[\#b03f3f\]{--tw-text-opacity: 1;color:rgb(176 63 63 / var(--tw-text-opacity))}.text-amber-100{--tw-text-opacity: 1;color:rgb(254 243 199 / var(--tw-text-opacity))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-emerald-900{--tw-text-opacity: 1;color:rgb(6 78 59 / var(--tw-text-opacity))}.text-foreground{color:hsl(var(--foreground))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/80{color:hsl(var(--muted-foreground) / .8)}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.text-red-800{--tw-text-opacity: 1;color:rgb(153 27 27 / var(--tw-text-opacity))}.text-red-900{--tw-text-opacity: 1;color:rgb(127 29 29 / var(--tw-text-opacity))}.text-rose-600{--tw-text-opacity: 1;color:rgb(225 29 72 / var(--tw-text-opacity))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-sky-900{--tw-text-opacity: 1;color:rgb(12 74 110 / var(--tw-text-opacity))}.text-slate-300{--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity))}.text-zinc-900{--tw-text-opacity: 1;color:rgb(24 24 27 / var(--tw-text-opacity))}.underline-offset-4{text-underline-offset:4px}.caret-transparent{caret-color:transparent}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-muted-foreground{--tw-ring-color: hsl(var(--muted-foreground))}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}@keyframes enter{0%{opacity:var(--tw-enter-opacity, 1);transform:translate3d(var(--tw-enter-translate-x, 0),var(--tw-enter-translate-y, 0),0) scale3d(var(--tw-enter-scale, 1),var(--tw-enter-scale, 1),var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity, 1);transform:translate3d(var(--tw-exit-translate-x, 0),var(--tw-exit-translate-y, 0),0) scale3d(var(--tw-exit-scale, 1),var(--tw-exit-scale, 1),var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))}}.duration-200{animation-duration:.2s}.duration-300{animation-duration:.3s}.paused{animation-play-state:paused}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:inset-y-0:after{content:var(--tw-content);top:0;bottom:0}.after\:bottom-\[12px\]:after{content:var(--tw-content);bottom:12px}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:w-1:after{content:var(--tw-content);width:.25rem}.after\:-translate-x-1\/2:after{content:var(--tw-content);--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.after\:border-\[8px\]:after{content:var(--tw-content);border-width:8px}.after\:border-solid:after{content:var(--tw-content);border-style:solid}.after\:bg-border:after{content:var(--tw-content);background-color:hsl(var(--border))}.hover\:bg-\[\#a4ecde\]:hover{--tw-bg-opacity: 1;background-color:rgb(164 236 222 / var(--tw-bg-opacity))}.hover\:bg-\[\#b2ece0\]:hover{--tw-bg-opacity: 1;background-color:rgb(178 236 224 / var(--tw-bg-opacity))}.hover\:bg-\[\#c2d2d2\]:hover{--tw-bg-opacity: 1;background-color:rgb(194 210 210 / var(--tw-bg-opacity))}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-amber-600\/80:hover{background-color:#d97706cc}.hover\:bg-amber-600\/90:hover{background-color:#d97706e6}.hover\:bg-black\/10:hover{background-color:#0000001a}.hover\:bg-destructive\/80:hover{background-color:hsl(var(--destructive) / .8)}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-primary\/80:hover{background-color:hsl(var(--primary) / .8)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:stroke-destructive:hover{stroke:hsl(var(--destructive))}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-0:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-transparent:focus-visible{--tw-ring-color: transparent}.focus-visible\:ring-offset-0:focus-visible{--tw-ring-offset-width: 0px}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width: 1px}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color: hsl(var(--background))}.focus-visible\:ring-offset-transparent:focus-visible{--tw-ring-offset-color: transparent}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-default:disabled{cursor:default}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:visible{visibility:visible}.group:hover .group-hover\:opacity-100{opacity:1}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.aria-selected\:bg-accent[aria-selected=true]{background-color:hsl(var(--accent))}.aria-selected\:text-accent-foreground[aria-selected=true]{color:hsl(var(--accent-foreground))}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[panel-group-direction\=vertical\]\:h-px[data-panel-group-direction=vertical]{height:1px}.data-\[panel-group-direction\=vertical\]\:w-full[data-panel-group-direction=vertical]{width:100%}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=checked\]\:translate-x-5[data-state=checked]{--tw-translate-x: 1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[panel-group-direction\=vertical\]\:flex-col[data-panel-group-direction=vertical]{flex-direction:column}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=active\]\:bg-primary[data-state=active],.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[state\=unchecked\]\:bg-slate-400[data-state=unchecked]{--tw-bg-opacity: 1;background-color:rgb(148 163 184 / var(--tw-bg-opacity))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=active\]\:text-primary-foreground[data-state=active]{color:hsl(var(--primary-foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[state\=open\]\:animate-in[data-state=open]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity: initial;--tw-exit-scale: initial;--tw-exit-rotate: initial;--tw-exit-translate-x: initial;--tw-exit-translate-y: initial}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity: 0}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity: 0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale: .95}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale: .95}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y: -.5rem}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x: .5rem}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x: -.5rem}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y: .5rem}.data-\[state\=closed\]\:slide-out-to-left-1\/2[data-state=closed]{--tw-exit-translate-x: -50%}.data-\[state\=closed\]\:slide-out-to-top-\[48\%\][data-state=closed]{--tw-exit-translate-y: -48%}.data-\[state\=open\]\:slide-in-from-left-1\/2[data-state=open]{--tw-enter-translate-x: -50%}.data-\[state\=open\]\:slide-in-from-top-\[48\%\][data-state=open]{--tw-enter-translate-y: -48%}.data-\[panel-group-direction\=vertical\]\:after\:left-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);left:0}.data-\[panel-group-direction\=vertical\]\:after\:h-1[data-panel-group-direction=vertical]:after{content:var(--tw-content);height:.25rem}.data-\[panel-group-direction\=vertical\]\:after\:w-full[data-panel-group-direction=vertical]:after{content:var(--tw-content);width:100%}.data-\[panel-group-direction\=vertical\]\:after\:-translate-y-1\/2[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[panel-group-direction\=vertical\]\:after\:translate-x-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:-rotate-90:is(.dark *){--tw-rotate: -90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:rotate-0:is(.dark *){--tw-rotate: 0deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:scale-0:is(.dark *){--tw-scale-x: 0;--tw-scale-y: 0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:scale-100:is(.dark *){--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:border-amber-500\/30:is(.dark *){border-color:#f59e0b4d}.dark\:border-emerald-500\/30:is(.dark *){border-color:#10b9814d}.dark\:border-gray-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity))}.dark\:border-red-500\/30:is(.dark *){border-color:#ef44444d}.dark\:border-sky-500\/30:is(.dark *){border-color:#0ea5e94d}.dark\:border-white\/10:is(.dark *){border-color:#ffffff1a}.dark\:border-zinc-500\/30:is(.dark *){border-color:#71717a4d}.dark\:bg-\[\#082720\]:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(8 39 32 / var(--tw-bg-opacity))}.dark\:bg-\[\#0b332a\]:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(11 51 42 / var(--tw-bg-opacity))}.dark\:bg-\[\#0f1413\]:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(15 20 19 / var(--tw-bg-opacity))}.dark\:bg-\[\#1d2724\]:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(29 39 36 / var(--tw-bg-opacity))}.dark\:bg-amber-500\/10:is(.dark *){background-color:#f59e0b1a}.dark\:bg-blue-300:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(147 197 253 / var(--tw-bg-opacity))}.dark\:bg-emerald-500\/10:is(.dark *){background-color:#10b9811a}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity))}.dark\:bg-red-500\/10:is(.dark *){background-color:#ef44441a}.dark\:bg-red-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity))}.dark\:bg-sky-500\/10:is(.dark *){background-color:#0ea5e91a}.dark\:bg-white\/10:is(.dark *){background-color:#ffffff1a}.dark\:bg-white\/5:is(.dark *){background-color:#ffffff0d}.dark\:bg-yellow-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(66 32 6 / var(--tw-bg-opacity))}.dark\:bg-zinc-500\/10:is(.dark *){background-color:#71717a1a}.dark\:fill-gray-800:is(.dark *){fill:#1f2937}.dark\:text-\[\#00a884\]:is(.dark *){--tw-text-opacity: 1;color:rgb(0 168 132 / var(--tw-text-opacity))}.dark\:text-amber-200:is(.dark *){--tw-text-opacity: 1;color:rgb(253 230 138 / var(--tw-text-opacity))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity))}.dark\:text-emerald-200:is(.dark *){--tw-text-opacity: 1;color:rgb(167 243 208 / var(--tw-text-opacity))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.dark\:text-red-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity))}.dark\:text-sky-200:is(.dark *){--tw-text-opacity: 1;color:rgb(186 230 253 / var(--tw-text-opacity))}.dark\:text-white:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.dark\:text-zinc-300:is(.dark *){--tw-text-opacity: 1;color:rgb(212 212 216 / var(--tw-text-opacity))}.dark\:hover\:bg-\[\#071f19\]:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(7 31 25 / var(--tw-bg-opacity))}.dark\:hover\:bg-\[\#082720\]:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(8 39 32 / var(--tw-bg-opacity))}.dark\:hover\:bg-\[\#141a18\]:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(20 26 24 / var(--tw-bg-opacity))}.dark\:hover\:bg-white\/10:hover:is(.dark *){background-color:#ffffff1a}@media (min-width: 640px){.sm\:m-4{margin:1rem}.sm\:inline{display:inline}.sm\:max-h-\[600px\]{max-height:600px}.sm\:max-w-\[650px\]{max-width:650px}.sm\:max-w-\[740px\]{max-width:740px}.sm\:max-w-\[950px\]{max-width:950px}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-\[10rem_1fr_10rem\]{grid-template-columns:10rem 1fr 10rem}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:text-left{text-align:left}}@media (min-width: 768px){.md\:inline{display:inline}.md\:flex{display:flex}.md\:w-64{width:16rem}.md\:w-full{width:100%}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:gap-8{gap:2rem}}@media (min-width: 1024px){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width: 1280px){.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\>\*\]\:p-4>*{padding:1rem}.\[\&\>\*\]\:px-4>*{padding-left:1rem;padding-right:1rem}.\[\&\>\*\]\:py-2>*{padding-top:.5rem;padding-bottom:.5rem}.\[\&\>div\[style\]\]\:\!block>div[style]{display:block!important}.\[\&\>div\[style\]\]\:h-full>div[style]{height:100%}.\[\&\>span\]\:line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\[\&\>svg\+div\]\:translate-y-\[-3px\]>svg+div{--tw-translate-y: -3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>svg\]\:absolute>svg{position:absolute}.\[\&\>svg\]\:left-4>svg{left:1rem}.\[\&\>svg\]\:top-4>svg{top:1rem}.\[\&\>svg\]\:h-2\.5>svg{height:.625rem}.\[\&\>svg\]\:h-3>svg{height:.75rem}.\[\&\>svg\]\:w-2\.5>svg{width:.625rem}.\[\&\>svg\]\:w-3>svg{width:.75rem}.\[\&\>svg\]\:fill-rose-600>svg{fill:#e11d48}.\[\&\>svg\]\:text-amber-500>svg{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity))}.\[\&\>svg\]\:text-emerald-600>svg{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity))}.\[\&\>svg\]\:text-foreground>svg{color:hsl(var(--foreground))}.\[\&\>svg\]\:text-muted-foreground>svg{color:hsl(var(--muted-foreground))}.\[\&\>svg\]\:text-red-600>svg{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity))}.\[\&\>svg\]\:text-sky-500>svg{--tw-text-opacity: 1;color:rgb(14 165 233 / var(--tw-text-opacity))}.\[\&\>svg\]\:text-zinc-400>svg{--tw-text-opacity: 1;color:rgb(161 161 170 / var(--tw-text-opacity))}.hover\:\[\&\>svg\]\:fill-rose-700>svg:hover{fill:#be123c}.dark\:\[\&\>svg\]\:text-emerald-400\/80>svg:is(.dark *){color:#34d399cc}.dark\:\[\&\>svg\]\:text-red-400\/80>svg:is(.dark *){color:#f87171cc}.dark\:\[\&\>svg\]\:text-zinc-300>svg:is(.dark *){--tw-text-opacity: 1;color:rgb(212 212 216 / var(--tw-text-opacity))}.\[\&\>svg\~\*\]\:pl-7>svg~*{padding-left:1.75rem}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0px}.\[\&\[data-panel-group-direction\=vertical\]\>div\]\:rotate-90[data-panel-group-direction=vertical]>div{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&_\.recharts-cartesian-axis-tick_text\]\:fill-muted-foreground .recharts-cartesian-axis-tick text{fill:hsl(var(--muted-foreground))}.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke="#ccc"]{stroke:hsl(var(--border) / .5)}.\[\&_\.recharts-curve\.recharts-tooltip-cursor\]\:stroke-border .recharts-curve.recharts-tooltip-cursor{stroke:hsl(var(--border))}.\[\&_\.recharts-dot\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-dot[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-layer\]\:outline-none .recharts-layer{outline:2px solid transparent;outline-offset:2px}.\[\&_\.recharts-polar-grid_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-polar-grid [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-radial-bar-background-sector\]\:fill-muted .recharts-radial-bar-background-sector,.\[\&_\.recharts-rectangle\.recharts-tooltip-cursor\]\:fill-muted .recharts-rectangle.recharts-tooltip-cursor{fill:hsl(var(--muted))}.\[\&_\.recharts-reference-line_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-reference-line [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-sector\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-sector[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-sector\]\:outline-none .recharts-sector,.\[\&_\.recharts-surface\]\:outline-none .recharts-surface{outline:2px solid transparent;outline-offset:2px}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-top:.375rem;padding-bottom:.375rem}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{font-weight:500}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:hsl(var(--muted-foreground))}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:3rem}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-top:.75rem;padding-bottom:.75rem}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:1.25rem}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:1.25rem}.\[\&_p\]\:leading-relaxed p{line-height:1.625}.\[\&_strong\]\:text-foreground strong{color:hsl(var(--foreground))}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0px}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}:root{--toastify-color-light: #fff;--toastify-color-dark: #121212;--toastify-color-info: #3498db;--toastify-color-success: #07bc0c;--toastify-color-warning: #f1c40f;--toastify-color-error: #e74c3c;--toastify-color-transparent: rgba(255, 255, 255, .7);--toastify-icon-color-info: var(--toastify-color-info);--toastify-icon-color-success: var(--toastify-color-success);--toastify-icon-color-warning: var(--toastify-color-warning);--toastify-icon-color-error: var(--toastify-color-error);--toastify-toast-width: 320px;--toastify-toast-offset: 16px;--toastify-toast-top: max(var(--toastify-toast-offset), env(safe-area-inset-top));--toastify-toast-right: max(var(--toastify-toast-offset), env(safe-area-inset-right));--toastify-toast-left: max(var(--toastify-toast-offset), env(safe-area-inset-left));--toastify-toast-bottom: max(var(--toastify-toast-offset), env(safe-area-inset-bottom));--toastify-toast-background: #fff;--toastify-toast-min-height: 64px;--toastify-toast-max-height: 800px;--toastify-toast-bd-radius: 6px;--toastify-font-family: sans-serif;--toastify-z-index: 9999;--toastify-text-color-light: #757575;--toastify-text-color-dark: #fff;--toastify-text-color-info: #fff;--toastify-text-color-success: #fff;--toastify-text-color-warning: #fff;--toastify-text-color-error: #fff;--toastify-spinner-color: #616161;--toastify-spinner-color-empty-area: #e0e0e0;--toastify-color-progress-light: linear-gradient( to right, #4cd964, #5ac8fa, #007aff, #34aadc, #5856d6, #ff2d55 );--toastify-color-progress-dark: #bb86fc;--toastify-color-progress-info: var(--toastify-color-info);--toastify-color-progress-success: var(--toastify-color-success);--toastify-color-progress-warning: var(--toastify-color-warning);--toastify-color-progress-error: var(--toastify-color-error);--toastify-color-progress-bgo: .2}.Toastify__toast-container{z-index:var(--toastify-z-index);-webkit-transform:translate3d(0,0,var(--toastify-z-index));position:fixed;padding:4px;width:var(--toastify-toast-width);box-sizing:border-box;color:#fff}.Toastify__toast-container--top-left{top:var(--toastify-toast-top);left:var(--toastify-toast-left)}.Toastify__toast-container--top-center{top:var(--toastify-toast-top);left:50%;transform:translate(-50%)}.Toastify__toast-container--top-right{top:var(--toastify-toast-top);right:var(--toastify-toast-right)}.Toastify__toast-container--bottom-left{bottom:var(--toastify-toast-bottom);left:var(--toastify-toast-left)}.Toastify__toast-container--bottom-center{bottom:var(--toastify-toast-bottom);left:50%;transform:translate(-50%)}.Toastify__toast-container--bottom-right{bottom:var(--toastify-toast-bottom);right:var(--toastify-toast-right)}@media only screen and (max-width : 480px){.Toastify__toast-container{width:100vw;padding:0;left:env(safe-area-inset-left);margin:0}.Toastify__toast-container--top-left,.Toastify__toast-container--top-center,.Toastify__toast-container--top-right{top:env(safe-area-inset-top);transform:translate(0)}.Toastify__toast-container--bottom-left,.Toastify__toast-container--bottom-center,.Toastify__toast-container--bottom-right{bottom:env(safe-area-inset-bottom);transform:translate(0)}.Toastify__toast-container--rtl{right:env(safe-area-inset-right);left:initial}}.Toastify__toast{--y: 0;position:relative;touch-action:none;min-height:var(--toastify-toast-min-height);box-sizing:border-box;margin-bottom:1rem;padding:8px;border-radius:var(--toastify-toast-bd-radius);box-shadow:0 4px 12px #0000001a;display:flex;justify-content:space-between;max-height:var(--toastify-toast-max-height);font-family:var(--toastify-font-family);cursor:default;direction:ltr;z-index:0;overflow:hidden}.Toastify__toast--stacked{position:absolute;width:100%;transform:translate3d(0,var(--y),0) scale(var(--s));transition:transform .3s}.Toastify__toast--stacked[data-collapsed] .Toastify__toast-body,.Toastify__toast--stacked[data-collapsed] .Toastify__close-button{transition:opacity .1s}.Toastify__toast--stacked[data-collapsed=false]{overflow:visible}.Toastify__toast--stacked[data-collapsed=true]:not(:last-child)>*{opacity:0}.Toastify__toast--stacked:after{content:"";position:absolute;left:0;right:0;height:calc(var(--g) * 1px);bottom:100%}.Toastify__toast--stacked[data-pos=top]{top:0}.Toastify__toast--stacked[data-pos=bot]{bottom:0}.Toastify__toast--stacked[data-pos=bot].Toastify__toast--stacked:before{transform-origin:top}.Toastify__toast--stacked[data-pos=top].Toastify__toast--stacked:before{transform-origin:bottom}.Toastify__toast--stacked:before{content:"";position:absolute;left:0;right:0;bottom:0;height:100%;transform:scaleY(3);z-index:-1}.Toastify__toast--rtl{direction:rtl}.Toastify__toast--close-on-click{cursor:pointer}.Toastify__toast-body{margin:auto 0;flex:1 1 auto;padding:6px;display:flex;align-items:center}.Toastify__toast-body>div:last-child{word-break:break-word;flex:1}.Toastify__toast-icon{margin-inline-end:10px;width:20px;flex-shrink:0;display:flex}.Toastify--animate{animation-fill-mode:both;animation-duration:.5s}.Toastify--animate-icon{animation-fill-mode:both;animation-duration:.3s}@media only screen and (max-width : 480px){.Toastify__toast{margin-bottom:0;border-radius:0}}.Toastify__toast-theme--dark{background:var(--toastify-color-dark);color:var(--toastify-text-color-dark)}.Toastify__toast-theme--light,.Toastify__toast-theme--colored.Toastify__toast--default{background:var(--toastify-color-light);color:var(--toastify-text-color-light)}.Toastify__toast-theme--colored.Toastify__toast--info{color:var(--toastify-text-color-info);background:var(--toastify-color-info)}.Toastify__toast-theme--colored.Toastify__toast--success{color:var(--toastify-text-color-success);background:var(--toastify-color-success)}.Toastify__toast-theme--colored.Toastify__toast--warning{color:var(--toastify-text-color-warning);background:var(--toastify-color-warning)}.Toastify__toast-theme--colored.Toastify__toast--error{color:var(--toastify-text-color-error);background:var(--toastify-color-error)}.Toastify__progress-bar-theme--light{background:var(--toastify-color-progress-light)}.Toastify__progress-bar-theme--dark{background:var(--toastify-color-progress-dark)}.Toastify__progress-bar--info{background:var(--toastify-color-progress-info)}.Toastify__progress-bar--success{background:var(--toastify-color-progress-success)}.Toastify__progress-bar--warning{background:var(--toastify-color-progress-warning)}.Toastify__progress-bar--error{background:var(--toastify-color-progress-error)}.Toastify__progress-bar-theme--colored.Toastify__progress-bar--info,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--success,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--warning,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--error{background:var(--toastify-color-transparent)}.Toastify__close-button{color:#fff;background:transparent;outline:none;border:none;padding:0;cursor:pointer;opacity:.7;transition:.3s ease;align-self:flex-start;z-index:1}.Toastify__close-button--light{color:#000;opacity:.3}.Toastify__close-button>svg{fill:currentColor;height:16px;width:14px}.Toastify__close-button:hover,.Toastify__close-button:focus{opacity:1}@keyframes Toastify__trackProgress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.Toastify__progress-bar{position:absolute;bottom:0;left:0;width:100%;height:100%;z-index:var(--toastify-z-index);opacity:.7;transform-origin:left;border-bottom-left-radius:var(--toastify-toast-bd-radius)}.Toastify__progress-bar--animated{animation:Toastify__trackProgress linear 1 forwards}.Toastify__progress-bar--controlled{transition:transform .2s}.Toastify__progress-bar--rtl{right:0;left:initial;transform-origin:right;border-bottom-left-radius:initial;border-bottom-right-radius:var(--toastify-toast-bd-radius)}.Toastify__progress-bar--wrp{position:absolute;bottom:0;left:0;width:100%;height:5px;border-bottom-left-radius:var(--toastify-toast-bd-radius)}.Toastify__progress-bar--wrp[data-hidden=true]{opacity:0}.Toastify__progress-bar--bg{opacity:var(--toastify-color-progress-bgo);width:100%;height:100%}.Toastify__spinner{width:20px;height:20px;box-sizing:border-box;border:2px solid;border-radius:100%;border-color:var(--toastify-spinner-color-empty-area);border-right-color:var(--toastify-spinner-color);animation:Toastify__spin .65s linear infinite}@keyframes Toastify__bounceInRight{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutRight{20%{opacity:1;transform:translate3d(-20px,var(--y),0)}to{opacity:0;transform:translate3d(2000px,var(--y),0)}}@keyframes Toastify__bounceInLeft{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(-3000px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutLeft{20%{opacity:1;transform:translate3d(20px,var(--y),0)}to{opacity:0;transform:translate3d(-2000px,var(--y),0)}}@keyframes Toastify__bounceInUp{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,3000px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes Toastify__bounceOutUp{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes Toastify__bounceInDown{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes Toastify__bounceOutDown{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translate3d(0,2000px,0)}}.Toastify__bounce-enter--top-left,.Toastify__bounce-enter--bottom-left{animation-name:Toastify__bounceInLeft}.Toastify__bounce-enter--top-right,.Toastify__bounce-enter--bottom-right{animation-name:Toastify__bounceInRight}.Toastify__bounce-enter--top-center{animation-name:Toastify__bounceInDown}.Toastify__bounce-enter--bottom-center{animation-name:Toastify__bounceInUp}.Toastify__bounce-exit--top-left,.Toastify__bounce-exit--bottom-left{animation-name:Toastify__bounceOutLeft}.Toastify__bounce-exit--top-right,.Toastify__bounce-exit--bottom-right{animation-name:Toastify__bounceOutRight}.Toastify__bounce-exit--top-center{animation-name:Toastify__bounceOutUp}.Toastify__bounce-exit--bottom-center{animation-name:Toastify__bounceOutDown}@keyframes Toastify__zoomIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes Toastify__zoomOut{0%{opacity:1}50%{opacity:0;transform:translate3d(0,var(--y),0) scale3d(.3,.3,.3)}to{opacity:0}}.Toastify__zoom-enter{animation-name:Toastify__zoomIn}.Toastify__zoom-exit{animation-name:Toastify__zoomOut}@keyframes Toastify__flipIn{0%{transform:perspective(400px) rotateX(90deg);animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotateX(-20deg);animation-timing-function:ease-in}60%{transform:perspective(400px) rotateX(10deg);opacity:1}80%{transform:perspective(400px) rotateX(-5deg)}to{transform:perspective(400px)}}@keyframes Toastify__flipOut{0%{transform:translate3d(0,var(--y),0) perspective(400px)}30%{transform:translate3d(0,var(--y),0) perspective(400px) rotateX(-20deg);opacity:1}to{transform:translate3d(0,var(--y),0) perspective(400px) rotateX(90deg);opacity:0}}.Toastify__flip-enter{animation-name:Toastify__flipIn}.Toastify__flip-exit{animation-name:Toastify__flipOut}@keyframes Toastify__slideInRight{0%{transform:translate3d(110%,0,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInLeft{0%{transform:translate3d(-110%,0,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInUp{0%{transform:translate3d(0,110%,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInDown{0%{transform:translate3d(0,-110%,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideOutRight{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(110%,var(--y),0)}}@keyframes Toastify__slideOutLeft{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(-110%,var(--y),0)}}@keyframes Toastify__slideOutDown{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(0,500px,0)}}@keyframes Toastify__slideOutUp{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(0,-500px,0)}}.Toastify__slide-enter--top-left,.Toastify__slide-enter--bottom-left{animation-name:Toastify__slideInLeft}.Toastify__slide-enter--top-right,.Toastify__slide-enter--bottom-right{animation-name:Toastify__slideInRight}.Toastify__slide-enter--top-center{animation-name:Toastify__slideInDown}.Toastify__slide-enter--bottom-center{animation-name:Toastify__slideInUp}.Toastify__slide-exit--top-left,.Toastify__slide-exit--bottom-left{animation-name:Toastify__slideOutLeft;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--top-right,.Toastify__slide-exit--bottom-right{animation-name:Toastify__slideOutRight;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--top-center{animation-name:Toastify__slideOutUp;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--bottom-center{animation-name:Toastify__slideOutDown;animation-timing-function:ease-in;animation-duration:.3s}@keyframes Toastify__spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.chat-item{display:flex;padding:10px;cursor:pointer;background-color:hsl(var(--background))}.chat-item:hover,.chat-item.active{background-color:#2f2f2f}.bubble{border-radius:16px;padding:12px;word-wrap:break-word;max-width:100%;overflow:hidden}.bubble-right .bubble{background-color:#0a0a0a;max-width:100%}.bubble-right .bubble>span{text-align:right;display:block}.bubble-left .bubble{background-color:#1b1b1b;max-width:100%}.bubble-right{align-self:flex-end;display:flex;justify-content:flex-end;width:80%}.bubble-left{align-self:flex-start;display:flex;justify-content:flex-start;width:80%}.input-message textarea{background-color:#2f2f2f;padding-left:48px}.input-message textarea:focus{outline:none;border:none;box-shadow:none}.message-container{flex:1;overflow-y:auto;max-height:calc(100vh - 110px);padding-top:50px}.tabs-chat{background-color:transparent;width:100%;border-radius:0}.contacts-container{height:calc(100vh - 180px);overflow-y:auto;display:flex;flex-direction:column}.chat-item{display:flex;padding:10px;cursor:pointer}.custom-scrollbar{scrollbar-width:none}.custom-scrollbar::-webkit-scrollbar{display:none}.input-container{position:sticky;bottom:0;display:flex;flex-direction:column;gap:.375rem;background-color:transparent;padding:.375rem 1rem;width:100%;max-width:48rem;margin:0 auto;box-sizing:border-box}.formatted-message{white-space:pre-wrap}.formatted-message p{margin-bottom:1em}.formatted-message strong{font-weight:700}.formatted-message em{font-style:italic}.formatted-message del{text-decoration:line-through}.formatted-message a{color:#170c96!important;text-decoration:underline!important}.highlight-quoted{animation:highlight 2s ease-out}@keyframes highlight{0%{background-color:#3b82f633}to{background-color:transparent}} diff --git a/manager/dist/assets/index-pLdnG_0T.js b/manager/dist/assets/index-pLdnG_0T.js new file mode 100644 index 0000000000..a93d465aa6 --- /dev/null +++ b/manager/dist/assets/index-pLdnG_0T.js @@ -0,0 +1,584 @@ +var VA=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Yle=VA((Da,Fa)=>{function wE(e,t){for(var n=0;nr[s]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const o of s)if(o.type==="childList")for(const l of o.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&r(l)}).observe(document,{childList:!0,subtree:!0});function n(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerPolicy&&(o.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?o.credentials="include":s.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(s){if(s.ep)return;s.ep=!0;const o=n(s);fetch(s.href,o)}})();function pd(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var cv={exports:{}},vu={},uv={exports:{}},Lt={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var K0;function qA(){if(K0)return Lt;K0=1;var e=Symbol.for("react.element"),t=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),o=Symbol.for("react.provider"),l=Symbol.for("react.context"),u=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),f=Symbol.for("react.memo"),h=Symbol.for("react.lazy"),m=Symbol.iterator;function g(D){return D===null||typeof D!="object"?null:(D=m&&D[m]||D["@@iterator"],typeof D=="function"?D:null)}var x={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},b=Object.assign,w={};function C(D,J,ae){this.props=D,this.context=J,this.refs=w,this.updater=ae||x}C.prototype.isReactComponent={},C.prototype.setState=function(D,J){if(typeof D!="object"&&typeof D!="function"&&D!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,D,J,"setState")},C.prototype.forceUpdate=function(D){this.updater.enqueueForceUpdate(this,D,"forceUpdate")};function k(){}k.prototype=C.prototype;function N(D,J,ae){this.props=D,this.context=J,this.refs=w,this.updater=ae||x}var T=N.prototype=new k;T.constructor=N,b(T,C.prototype),T.isPureReactComponent=!0;var _=Array.isArray,I=Object.prototype.hasOwnProperty,M={current:null},A={key:!0,ref:!0,__self:!0,__source:!0};function O(D,J,ae){var ee,ie={},ue=null,j=null;if(J!=null)for(ee in J.ref!==void 0&&(j=J.ref),J.key!==void 0&&(ue=""+J.key),J)I.call(J,ee)&&!A.hasOwnProperty(ee)&&(ie[ee]=J[ee]);var P=arguments.length-2;if(P===1)ie.children=ae;else if(1{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},Xl=typeof window>"u"||"Deno"in globalThis;function Es(){}function WA(e,t){return typeof e=="function"?e(t):e}function Ry(e){return typeof e=="number"&&e>=0&&e!==1/0}function SE(e,t){return Math.max(e+(t||0)-Date.now(),0)}function Hl(e,t){return typeof e=="function"?e(t):e}function Vs(e,t){return typeof e=="function"?e(t):e}function Q0(e,t){const{type:n="all",exact:r,fetchStatus:s,predicate:o,queryKey:l,stale:u}=e;if(l){if(r){if(t.queryHash!==qb(l,t.options))return!1}else if(!Yu(t.queryKey,l))return!1}if(n!=="all"){const d=t.isActive();if(n==="active"&&!d||n==="inactive"&&d)return!1}return!(typeof u=="boolean"&&t.isStale()!==u||s&&s!==t.state.fetchStatus||o&&!o(t))}function Y0(e,t){const{exact:n,status:r,predicate:s,mutationKey:o}=e;if(o){if(!t.options.mutationKey)return!1;if(n){if(Di(t.options.mutationKey)!==Di(o))return!1}else if(!Yu(t.options.mutationKey,o))return!1}return!(r&&t.state.status!==r||s&&!s(t))}function qb(e,t){return(t?.queryKeyHashFn||Di)(e)}function Di(e){return JSON.stringify(e,(t,n)=>Py(n)?Object.keys(n).sort().reduce((r,s)=>(r[s]=n[s],r),{}):n)}function Yu(e,t){return e===t?!0:typeof e!=typeof t?!1:e&&t&&typeof e=="object"&&typeof t=="object"?!Object.keys(t).some(n=>!Yu(e[n],t[n])):!1}function CE(e,t){if(e===t)return e;const n=Z0(e)&&Z0(t);if(n||Py(e)&&Py(t)){const r=n?e:Object.keys(e),s=r.length,o=n?t:Object.keys(t),l=o.length,u=n?[]:{};let d=0;for(let f=0;f{setTimeout(t,e)})}function Iy(e,t,n){return typeof n.structuralSharing=="function"?n.structuralSharing(e,t):n.structuralSharing!==!1?CE(e,t):t}function JA(e,t,n=0){const r=[...e,t];return n&&r.length>n?r.slice(1):r}function QA(e,t,n=0){const r=[t,...e];return n&&r.length>n?r.slice(0,-1):r}var jE=Symbol();function kE(e,t){return!e.queryFn&&t?.initialPromise?()=>t.initialPromise:!e.queryFn||e.queryFn===jE?()=>Promise.reject(new Error(`Missing queryFn: '${e.queryHash}'`)):e.queryFn}var YA=class extends hc{#e;#t;#r;constructor(){super(),this.#r=e=>{if(!Xl&&window.addEventListener){const t=()=>e();return window.addEventListener("visibilitychange",t,!1),()=>{window.removeEventListener("visibilitychange",t)}}}}onSubscribe(){this.#t||this.setEventListener(this.#r)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#r=e,this.#t?.(),this.#t=e(t=>{typeof t=="boolean"?this.setFocused(t):this.onFocus()})}setFocused(e){this.#e!==e&&(this.#e=e,this.onFocus())}onFocus(){const e=this.isFocused();this.listeners.forEach(t=>{t(e)})}isFocused(){return typeof this.#e=="boolean"?this.#e:globalThis.document?.visibilityState!=="hidden"}},Hb=new YA,ZA=class extends hc{#e=!0;#t;#r;constructor(){super(),this.#r=e=>{if(!Xl&&window.addEventListener){const t=()=>e(!0),n=()=>e(!1);return window.addEventListener("online",t,!1),window.addEventListener("offline",n,!1),()=>{window.removeEventListener("online",t),window.removeEventListener("offline",n)}}}}onSubscribe(){this.#t||this.setEventListener(this.#r)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#r=e,this.#t?.(),this.#t=e(this.setOnline.bind(this))}setOnline(e){this.#e!==e&&(this.#e=e,this.listeners.forEach(n=>{n(e)}))}isOnline(){return this.#e}},Ap=new ZA;function XA(e){return Math.min(1e3*2**e,3e4)}function EE(e){return(e??"online")==="online"?Ap.isOnline():!0}var NE=class extends Error{constructor(e){super("CancelledError"),this.revert=e?.revert,this.silent=e?.silent}};function dv(e){return e instanceof NE}function TE(e){let t=!1,n=0,r=!1,s,o,l;const u=new Promise((k,N)=>{o=k,l=N}),d=k=>{r||(b(new NE(k)),e.abort?.())},f=()=>{t=!0},h=()=>{t=!1},m=()=>Hb.isFocused()&&(e.networkMode==="always"||Ap.isOnline())&&e.canRun(),g=()=>EE(e.networkMode)&&e.canRun(),x=k=>{r||(r=!0,e.onSuccess?.(k),s?.(),o(k))},b=k=>{r||(r=!0,e.onError?.(k),s?.(),l(k))},w=()=>new Promise(k=>{s=N=>{(r||m())&&k(N)},e.onPause?.()}).then(()=>{s=void 0,r||e.onContinue?.()}),C=()=>{if(r)return;let k;const N=n===0?e.initialPromise:void 0;try{k=N??e.fn()}catch(T){k=Promise.reject(T)}Promise.resolve(k).then(x).catch(T=>{if(r)return;const _=e.retry??(Xl?0:3),I=e.retryDelay??XA,M=typeof I=="function"?I(n,T):I,A=_===!0||typeof _=="number"&&n<_||typeof _=="function"&&_(n,T);if(t||!A){b(T);return}n++,e.onFail?.(n,T),GA(M).then(()=>m()?void 0:w()).then(()=>{t?b(T):C()})})};return{promise:u,cancel:d,continue:()=>(s?.(),u),cancelRetry:f,continueRetry:h,canStart:g,start:()=>(g()?C():w().then(C),u)}}function eD(){let e=[],t=0,n=g=>{g()},r=g=>{g()},s=g=>setTimeout(g,0);const o=g=>{s=g},l=g=>{let x;t++;try{x=g()}finally{t--,t||f()}return x},u=g=>{t?e.push(g):s(()=>{n(g)})},d=g=>(...x)=>{u(()=>{g(...x)})},f=()=>{const g=e;e=[],g.length&&s(()=>{r(()=>{g.forEach(x=>{n(x)})})})};return{batch:l,batchCalls:d,schedule:u,setNotifyFunction:g=>{n=g},setBatchNotifyFunction:g=>{r=g},setScheduler:o}}var ar=eD(),ME=class{#e;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),Ry(this.gcTime)&&(this.#e=setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(Xl?1/0:300*1e3))}clearGcTimeout(){this.#e&&(clearTimeout(this.#e),this.#e=void 0)}},tD=class extends ME{#e;#t;#r;#n;#o;#a;constructor(e){super(),this.#a=!1,this.#o=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.#r=e.cache,this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#e=nD(this.options),this.state=e.state??this.#e,this.scheduleGc()}get meta(){return this.options.meta}get promise(){return this.#n?.promise}setOptions(e){this.options={...this.#o,...e},this.updateGcTime(this.options.gcTime)}optionalRemove(){!this.observers.length&&this.state.fetchStatus==="idle"&&this.#r.remove(this)}setData(e,t){const n=Iy(this.state.data,e,this.options);return this.#s({data:n,type:"success",dataUpdatedAt:t?.updatedAt,manual:t?.manual}),n}setState(e,t){this.#s({type:"setState",state:e,setStateOptions:t})}cancel(e){const t=this.#n?.promise;return this.#n?.cancel(e),t?t.then(Es).catch(Es):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(this.#e)}isActive(){return this.observers.some(e=>Vs(e.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0&&!this.isActive()}isStale(){return this.state.isInvalidated?!0:this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):this.state.data===void 0}isStaleByTime(e=0){return this.state.isInvalidated||this.state.data===void 0||!SE(this.state.dataUpdatedAt,e)}onFocus(){this.observers.find(t=>t.shouldFetchOnWindowFocus())?.refetch({cancelRefetch:!1}),this.#n?.continue()}onOnline(){this.observers.find(t=>t.shouldFetchOnReconnect())?.refetch({cancelRefetch:!1}),this.#n?.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.#r.notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter(t=>t!==e),this.observers.length||(this.#n&&(this.#a?this.#n.cancel({revert:!0}):this.#n.cancelRetry()),this.scheduleGc()),this.#r.notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||this.#s({type:"invalidate"})}fetch(e,t){if(this.state.fetchStatus!=="idle"){if(this.state.data!==void 0&&t?.cancelRefetch)this.cancel({silent:!0});else if(this.#n)return this.#n.continueRetry(),this.#n.promise}if(e&&this.setOptions(e),!this.options.queryFn){const u=this.observers.find(d=>d.options.queryFn);u&&this.setOptions(u.options)}const n=new AbortController,r=u=>{Object.defineProperty(u,"signal",{enumerable:!0,get:()=>(this.#a=!0,n.signal)})},s=()=>{const u=kE(this.options,t),d={queryKey:this.queryKey,meta:this.meta};return r(d),this.#a=!1,this.options.persister?this.options.persister(u,d,this):u(d)},o={fetchOptions:t,options:this.options,queryKey:this.queryKey,state:this.state,fetchFn:s};r(o),this.options.behavior?.onFetch(o,this),this.#t=this.state,(this.state.fetchStatus==="idle"||this.state.fetchMeta!==o.fetchOptions?.meta)&&this.#s({type:"fetch",meta:o.fetchOptions?.meta});const l=u=>{dv(u)&&u.silent||this.#s({type:"error",error:u}),dv(u)||(this.#r.config.onError?.(u,this),this.#r.config.onSettled?.(this.state.data,u,this)),this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1};return this.#n=TE({initialPromise:t?.initialPromise,fn:o.fetchFn,abort:n.abort.bind(n),onSuccess:u=>{if(u===void 0){l(new Error(`${this.queryHash} data is undefined`));return}try{this.setData(u)}catch(d){l(d);return}this.#r.config.onSuccess?.(u,this),this.#r.config.onSettled?.(u,this.state.error,this),this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1},onError:l,onFail:(u,d)=>{this.#s({type:"failed",failureCount:u,error:d})},onPause:()=>{this.#s({type:"pause"})},onContinue:()=>{this.#s({type:"continue"})},retry:o.options.retry,retryDelay:o.options.retryDelay,networkMode:o.options.networkMode,canRun:()=>!0}),this.#n.start()}#s(e){const t=n=>{switch(e.type){case"failed":return{...n,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...n,fetchStatus:"paused"};case"continue":return{...n,fetchStatus:"fetching"};case"fetch":return{...n,..._E(n.data,this.options),fetchMeta:e.meta??null};case"success":return{...n,data:e.data,dataUpdateCount:n.dataUpdateCount+1,dataUpdatedAt:e.dataUpdatedAt??Date.now(),error:null,isInvalidated:!1,status:"success",...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};case"error":const r=e.error;return dv(r)&&r.revert&&this.#t?{...this.#t,fetchStatus:"idle"}:{...n,error:r,errorUpdateCount:n.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:n.fetchFailureCount+1,fetchFailureReason:r,fetchStatus:"idle",status:"error"};case"invalidate":return{...n,isInvalidated:!0};case"setState":return{...n,...e.state}}};this.state=t(this.state),ar.batch(()=>{this.observers.forEach(n=>{n.onQueryUpdate()}),this.#r.notify({query:this,type:"updated",action:e})})}};function _E(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:EE(t.networkMode)?"fetching":"paused",...e===void 0&&{error:null,status:"pending"}}}function nD(e){const t=typeof e.initialData=="function"?e.initialData():e.initialData,n=t!==void 0,r=n?typeof e.initialDataUpdatedAt=="function"?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:n?r??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?"success":"pending",fetchStatus:"idle"}}var rD=class extends hc{constructor(e={}){super(),this.config=e,this.#e=new Map}#e;build(e,t,n){const r=t.queryKey,s=t.queryHash??qb(r,t);let o=this.get(s);return o||(o=new tD({cache:this,queryKey:r,queryHash:s,options:e.defaultQueryOptions(t),state:n,defaultOptions:e.getQueryDefaults(r)}),this.add(o)),o}add(e){this.#e.has(e.queryHash)||(this.#e.set(e.queryHash,e),this.notify({type:"added",query:e}))}remove(e){const t=this.#e.get(e.queryHash);t&&(e.destroy(),t===e&&this.#e.delete(e.queryHash),this.notify({type:"removed",query:e}))}clear(){ar.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#e.get(e)}getAll(){return[...this.#e.values()]}find(e){const t={exact:!0,...e};return this.getAll().find(n=>Q0(t,n))}findAll(e={}){const t=this.getAll();return Object.keys(e).length>0?t.filter(n=>Q0(e,n)):t}notify(e){ar.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){ar.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){ar.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},sD=class extends ME{#e;#t;#r;constructor(e){super(),this.mutationId=e.mutationId,this.#t=e.mutationCache,this.#e=[],this.state=e.state||RE(),this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#e.includes(e)||(this.#e.push(e),this.clearGcTimeout(),this.#t.notify({type:"observerAdded",mutation:this,observer:e}))}removeObserver(e){this.#e=this.#e.filter(t=>t!==e),this.scheduleGc(),this.#t.notify({type:"observerRemoved",mutation:this,observer:e})}optionalRemove(){this.#e.length||(this.state.status==="pending"?this.scheduleGc():this.#t.remove(this))}continue(){return this.#r?.continue()??this.execute(this.state.variables)}async execute(e){this.#r=TE({fn:()=>this.options.mutationFn?this.options.mutationFn(e):Promise.reject(new Error("No mutationFn found")),onFail:(r,s)=>{this.#n({type:"failed",failureCount:r,error:s})},onPause:()=>{this.#n({type:"pause"})},onContinue:()=>{this.#n({type:"continue"})},retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#t.canRun(this)});const t=this.state.status==="pending",n=!this.#r.canStart();try{if(!t){this.#n({type:"pending",variables:e,isPaused:n}),await this.#t.config.onMutate?.(e,this);const s=await this.options.onMutate?.(e);s!==this.state.context&&this.#n({type:"pending",context:s,variables:e,isPaused:n})}const r=await this.#r.start();return await this.#t.config.onSuccess?.(r,e,this.state.context,this),await this.options.onSuccess?.(r,e,this.state.context),await this.#t.config.onSettled?.(r,null,this.state.variables,this.state.context,this),await this.options.onSettled?.(r,null,e,this.state.context),this.#n({type:"success",data:r}),r}catch(r){try{throw await this.#t.config.onError?.(r,e,this.state.context,this),await this.options.onError?.(r,e,this.state.context),await this.#t.config.onSettled?.(void 0,r,this.state.variables,this.state.context,this),await this.options.onSettled?.(void 0,r,e,this.state.context),r}finally{this.#n({type:"error",error:r})}}finally{this.#t.runNext(this)}}#n(e){const t=n=>{switch(e.type){case"failed":return{...n,failureCount:e.failureCount,failureReason:e.error};case"pause":return{...n,isPaused:!0};case"continue":return{...n,isPaused:!1};case"pending":return{...n,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:"pending",variables:e.variables,submittedAt:Date.now()};case"success":return{...n,data:e.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...n,data:void 0,error:e.error,failureCount:n.failureCount+1,failureReason:e.error,isPaused:!1,status:"error"}}};this.state=t(this.state),ar.batch(()=>{this.#e.forEach(n=>{n.onMutationUpdate(e)}),this.#t.notify({mutation:this,type:"updated",action:e})})}};function RE(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}var aD=class extends hc{constructor(e={}){super(),this.config=e,this.#e=new Map,this.#t=Date.now()}#e;#t;build(e,t,n){const r=new sD({mutationCache:this,mutationId:++this.#t,options:e.defaultMutationOptions(t),state:n});return this.add(r),r}add(e){const t=If(e),n=this.#e.get(t)??[];n.push(e),this.#e.set(t,n),this.notify({type:"added",mutation:e})}remove(e){const t=If(e);if(this.#e.has(t)){const n=this.#e.get(t)?.filter(r=>r!==e);n&&(n.length===0?this.#e.delete(t):this.#e.set(t,n))}this.notify({type:"removed",mutation:e})}canRun(e){const t=this.#e.get(If(e))?.find(n=>n.state.status==="pending");return!t||t===e}runNext(e){return this.#e.get(If(e))?.find(n=>n!==e&&n.state.isPaused)?.continue()??Promise.resolve()}clear(){ar.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}getAll(){return[...this.#e.values()].flat()}find(e){const t={exact:!0,...e};return this.getAll().find(n=>Y0(t,n))}findAll(e={}){return this.getAll().filter(t=>Y0(e,t))}notify(e){ar.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){const e=this.getAll().filter(t=>t.state.isPaused);return ar.batch(()=>Promise.all(e.map(t=>t.continue().catch(Es))))}};function If(e){return e.options.scope?.id??String(e.mutationId)}function oD(e){return{onFetch:(t,n)=>{const r=async()=>{const s=t.options,o=t.fetchOptions?.meta?.fetchMore?.direction,l=t.state.data?.pages||[],u=t.state.data?.pageParams||[],d={pages:[],pageParams:[]};let f=!1;const h=b=>{Object.defineProperty(b,"signal",{enumerable:!0,get:()=>(t.signal.aborted?f=!0:t.signal.addEventListener("abort",()=>{f=!0}),t.signal)})},m=kE(t.options,t.fetchOptions),g=async(b,w,C)=>{if(f)return Promise.reject();if(w==null&&b.pages.length)return Promise.resolve(b);const k={queryKey:t.queryKey,pageParam:w,direction:C?"backward":"forward",meta:t.options.meta};h(k);const N=await m(k),{maxPages:T}=t.options,_=C?QA:JA;return{pages:_(b.pages,N,T),pageParams:_(b.pageParams,w,T)}};let x;if(o&&l.length){const b=o==="backward",w=b?iD:eC,C={pages:l,pageParams:u},k=w(s,C);x=await g(C,k,b)}else{x=await g(d,u[0]??s.initialPageParam);const b=e??l.length;for(let w=1;wt.options.persister?.(r,{queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},n):t.fetchFn=r}}}function eC(e,{pages:t,pageParams:n}){const r=t.length-1;return t.length>0?e.getNextPageParam(t[r],t,n[r],n):void 0}function iD(e,{pages:t,pageParams:n}){return t.length>0?e.getPreviousPageParam?.(t[0],t,n[0],n):void 0}var lD=class{#e;#t;#r;#n;#o;#a;#s;#i;constructor(e={}){this.#e=e.queryCache||new rD,this.#t=e.mutationCache||new aD,this.#r=e.defaultOptions||{},this.#n=new Map,this.#o=new Map,this.#a=0}mount(){this.#a++,this.#a===1&&(this.#s=Hb.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onFocus())}),this.#i=Ap.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onOnline())}))}unmount(){this.#a--,this.#a===0&&(this.#s?.(),this.#s=void 0,this.#i?.(),this.#i=void 0)}isFetching(e){return this.#e.findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return this.#t.findAll({...e,status:"pending"}).length}getQueryData(e){const t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state.data}ensureQueryData(e){const t=this.getQueryData(e.queryKey);if(t===void 0)return this.fetchQuery(e);{const n=this.defaultQueryOptions(e),r=this.#e.build(this,n);return e.revalidateIfStale&&r.isStaleByTime(Hl(n.staleTime,r))&&this.prefetchQuery(n),Promise.resolve(t)}}getQueriesData(e){return this.#e.findAll(e).map(({queryKey:t,state:n})=>{const r=n.data;return[t,r]})}setQueryData(e,t,n){const r=this.defaultQueryOptions({queryKey:e}),o=this.#e.get(r.queryHash)?.state.data,l=WA(t,o);if(l!==void 0)return this.#e.build(this,r).setData(l,{...n,manual:!0})}setQueriesData(e,t,n){return ar.batch(()=>this.#e.findAll(e).map(({queryKey:r})=>[r,this.setQueryData(r,t,n)]))}getQueryState(e){const t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state}removeQueries(e){const t=this.#e;ar.batch(()=>{t.findAll(e).forEach(n=>{t.remove(n)})})}resetQueries(e,t){const n=this.#e,r={type:"active",...e};return ar.batch(()=>(n.findAll(e).forEach(s=>{s.reset()}),this.refetchQueries(r,t)))}cancelQueries(e={},t={}){const n={revert:!0,...t},r=ar.batch(()=>this.#e.findAll(e).map(s=>s.cancel(n)));return Promise.all(r).then(Es).catch(Es)}invalidateQueries(e={},t={}){return ar.batch(()=>{if(this.#e.findAll(e).forEach(r=>{r.invalidate()}),e.refetchType==="none")return Promise.resolve();const n={...e,type:e.refetchType??e.type??"active"};return this.refetchQueries(n,t)})}refetchQueries(e={},t){const n={...t,cancelRefetch:t?.cancelRefetch??!0},r=ar.batch(()=>this.#e.findAll(e).filter(s=>!s.isDisabled()).map(s=>{let o=s.fetch(void 0,n);return n.throwOnError||(o=o.catch(Es)),s.state.fetchStatus==="paused"?Promise.resolve():o}));return Promise.all(r).then(Es)}fetchQuery(e){const t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);const n=this.#e.build(this,t);return n.isStaleByTime(Hl(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(Es).catch(Es)}fetchInfiniteQuery(e){return e.behavior=oD(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(Es).catch(Es)}resumePausedMutations(){return Ap.isOnline()?this.#t.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#e}getMutationCache(){return this.#t}getDefaultOptions(){return this.#r}setDefaultOptions(e){this.#r=e}setQueryDefaults(e,t){this.#n.set(Di(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){const t=[...this.#n.values()];let n={};return t.forEach(r=>{Yu(e,r.queryKey)&&(n={...n,...r.defaultOptions})}),n}setMutationDefaults(e,t){this.#o.set(Di(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){const t=[...this.#o.values()];let n={};return t.forEach(r=>{Yu(e,r.mutationKey)&&(n={...n,...r.defaultOptions})}),n}defaultQueryOptions(e){if(e._defaulted)return e;const t={...this.#r.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||(t.queryHash=qb(t.queryKey,t)),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!=="always"),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode="offlineFirst"),t.enabled!==!0&&t.queryFn===jE&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#r.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#e.clear(),this.#t.clear()}},cD=class extends hc{constructor(e,t){super(),this.options=t,this.#e=e,this.#s=null,this.bindMethods(),this.setOptions(t)}#e;#t=void 0;#r=void 0;#n=void 0;#o;#a;#s;#i;#f;#p;#c;#u;#l;#h=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#t.addObserver(this),tC(this.#t,this.options)?this.#d():this.updateResult(),this.#y())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return Oy(this.#t,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return Oy(this.#t,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#b(),this.#x(),this.#t.removeObserver(this)}setOptions(e,t){const n=this.options,r=this.#t;if(this.options=this.#e.defaultQueryOptions(e),this.options.enabled!==void 0&&typeof this.options.enabled!="boolean"&&typeof this.options.enabled!="function"&&typeof Vs(this.options.enabled,this.#t)!="boolean")throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");this.#w(),this.#t.setOptions(this.options),n._defaulted&&!Op(this.options,n)&&this.#e.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#t,observer:this});const s=this.hasListeners();s&&nC(this.#t,r,this.options,n)&&this.#d(),this.updateResult(t),s&&(this.#t!==r||Vs(this.options.enabled,this.#t)!==Vs(n.enabled,this.#t)||Hl(this.options.staleTime,this.#t)!==Hl(n.staleTime,this.#t))&&this.#m();const o=this.#g();s&&(this.#t!==r||Vs(this.options.enabled,this.#t)!==Vs(n.enabled,this.#t)||o!==this.#l)&&this.#v(o)}getOptimisticResult(e){const t=this.#e.getQueryCache().build(this.#e,e),n=this.createResult(t,e);return dD(this,n)&&(this.#n=n,this.#a=this.options,this.#o=this.#t.state),n}getCurrentResult(){return this.#n}trackResult(e,t){const n={};return Object.keys(e).forEach(r=>{Object.defineProperty(n,r,{configurable:!1,enumerable:!0,get:()=>(this.trackProp(r),t?.(r),e[r])})}),n}trackProp(e){this.#h.add(e)}getCurrentQuery(){return this.#t}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){const t=this.#e.defaultQueryOptions(e),n=this.#e.getQueryCache().build(this.#e,t);return n.isFetchingOptimistic=!0,n.fetch().then(()=>this.createResult(n,t))}fetch(e){return this.#d({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#n))}#d(e){this.#w();let t=this.#t.fetch(this.options,e);return e?.throwOnError||(t=t.catch(Es)),t}#m(){this.#b();const e=Hl(this.options.staleTime,this.#t);if(Xl||this.#n.isStale||!Ry(e))return;const n=SE(this.#n.dataUpdatedAt,e)+1;this.#c=setTimeout(()=>{this.#n.isStale||this.updateResult()},n)}#g(){return(typeof this.options.refetchInterval=="function"?this.options.refetchInterval(this.#t):this.options.refetchInterval)??!1}#v(e){this.#x(),this.#l=e,!(Xl||Vs(this.options.enabled,this.#t)===!1||!Ry(this.#l)||this.#l===0)&&(this.#u=setInterval(()=>{(this.options.refetchIntervalInBackground||Hb.isFocused())&&this.#d()},this.#l))}#y(){this.#m(),this.#v(this.#g())}#b(){this.#c&&(clearTimeout(this.#c),this.#c=void 0)}#x(){this.#u&&(clearInterval(this.#u),this.#u=void 0)}createResult(e,t){const n=this.#t,r=this.options,s=this.#n,o=this.#o,l=this.#a,d=e!==n?e.state:this.#r,{state:f}=e;let h={...f},m=!1,g;if(t._optimisticResults){const M=this.hasListeners(),A=!M&&tC(e,t),O=M&&nC(e,n,t,r);(A||O)&&(h={...h,..._E(f.data,e.options)}),t._optimisticResults==="isRestoring"&&(h.fetchStatus="idle")}let{error:x,errorUpdatedAt:b,status:w}=h;if(t.select&&h.data!==void 0)if(s&&h.data===o?.data&&t.select===this.#i)g=this.#f;else try{this.#i=t.select,g=t.select(h.data),g=Iy(s?.data,g,t),this.#f=g,this.#s=null}catch(M){this.#s=M}else g=h.data;if(t.placeholderData!==void 0&&g===void 0&&w==="pending"){let M;if(s?.isPlaceholderData&&t.placeholderData===l?.placeholderData)M=s.data;else if(M=typeof t.placeholderData=="function"?t.placeholderData(this.#p?.state.data,this.#p):t.placeholderData,t.select&&M!==void 0)try{M=t.select(M),this.#s=null}catch(A){this.#s=A}M!==void 0&&(w="success",g=Iy(s?.data,M,t),m=!0)}this.#s&&(x=this.#s,g=this.#f,b=Date.now(),w="error");const C=h.fetchStatus==="fetching",k=w==="pending",N=w==="error",T=k&&C,_=g!==void 0;return{status:w,fetchStatus:h.fetchStatus,isPending:k,isSuccess:w==="success",isError:N,isInitialLoading:T,isLoading:T,data:g,dataUpdatedAt:h.dataUpdatedAt,error:x,errorUpdatedAt:b,failureCount:h.fetchFailureCount,failureReason:h.fetchFailureReason,errorUpdateCount:h.errorUpdateCount,isFetched:h.dataUpdateCount>0||h.errorUpdateCount>0,isFetchedAfterMount:h.dataUpdateCount>d.dataUpdateCount||h.errorUpdateCount>d.errorUpdateCount,isFetching:C,isRefetching:C&&!k,isLoadingError:N&&!_,isPaused:h.fetchStatus==="paused",isPlaceholderData:m,isRefetchError:N&&_,isStale:Kb(e,t),refetch:this.refetch}}updateResult(e){const t=this.#n,n=this.createResult(this.#t,this.options);if(this.#o=this.#t.state,this.#a=this.options,this.#o.data!==void 0&&(this.#p=this.#t),Op(n,t))return;this.#n=n;const r={},s=()=>{if(!t)return!0;const{notifyOnChangeProps:o}=this.options,l=typeof o=="function"?o():o;if(l==="all"||!l&&!this.#h.size)return!0;const u=new Set(l??this.#h);return this.options.throwOnError&&u.add("error"),Object.keys(this.#n).some(d=>{const f=d;return this.#n[f]!==t[f]&&u.has(f)})};e?.listeners!==!1&&s()&&(r.listeners=!0),this.#S({...r,...e})}#w(){const e=this.#e.getQueryCache().build(this.#e,this.options);if(e===this.#t)return;const t=this.#t;this.#t=e,this.#r=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#y()}#S(e){ar.batch(()=>{e.listeners&&this.listeners.forEach(t=>{t(this.#n)}),this.#e.getQueryCache().notify({query:this.#t,type:"observerResultsUpdated"})})}};function uD(e,t){return Vs(t.enabled,e)!==!1&&e.state.data===void 0&&!(e.state.status==="error"&&t.retryOnMount===!1)}function tC(e,t){return uD(e,t)||e.state.data!==void 0&&Oy(e,t,t.refetchOnMount)}function Oy(e,t,n){if(Vs(t.enabled,e)!==!1){const r=typeof n=="function"?n(e):n;return r==="always"||r!==!1&&Kb(e,t)}return!1}function nC(e,t,n,r){return(e!==t||Vs(r.enabled,e)===!1)&&(!n.suspense||e.state.status!=="error")&&Kb(e,n)}function Kb(e,t){return Vs(t.enabled,e)!==!1&&e.isStaleByTime(Hl(t.staleTime,e))}function dD(e,t){return!Op(e.getCurrentResult(),t)}var fD=class extends hc{#e;#t=void 0;#r;#n;constructor(t,n){super(),this.#e=t,this.setOptions(n),this.bindMethods(),this.#o()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(t){const n=this.options;this.options=this.#e.defaultMutationOptions(t),Op(this.options,n)||this.#e.getMutationCache().notify({type:"observerOptionsUpdated",mutation:this.#r,observer:this}),n?.mutationKey&&this.options.mutationKey&&Di(n.mutationKey)!==Di(this.options.mutationKey)?this.reset():this.#r?.state.status==="pending"&&this.#r.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#r?.removeObserver(this)}onMutationUpdate(t){this.#o(),this.#a(t)}getCurrentResult(){return this.#t}reset(){this.#r?.removeObserver(this),this.#r=void 0,this.#o(),this.#a()}mutate(t,n){return this.#n=n,this.#r?.removeObserver(this),this.#r=this.#e.getMutationCache().build(this.#e,this.options),this.#r.addObserver(this),this.#r.execute(t)}#o(){const t=this.#r?.state??RE();this.#t={...t,isPending:t.status==="pending",isSuccess:t.status==="success",isError:t.status==="error",isIdle:t.status==="idle",mutate:this.mutate,reset:this.reset}}#a(t){ar.batch(()=>{if(this.#n&&this.hasListeners()){const n=this.#t.variables,r=this.#t.context;t?.type==="success"?(this.#n.onSuccess?.(t.data,n,r),this.#n.onSettled?.(t.data,null,n,r)):t?.type==="error"&&(this.#n.onError?.(t.error,n,r),this.#n.onSettled?.(void 0,t.error,n,r))}this.listeners.forEach(n=>{n(this.#t)})})}},y=pc();const Oe=pd(y),Vo=wE({__proto__:null,default:Oe},[y]);var PE=y.createContext(void 0),qa=e=>{const t=y.useContext(PE);if(!t)throw new Error("No QueryClient set, use QueryClientProvider to set one");return t},IE=({client:e,children:t})=>(y.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),a.jsx(PE.Provider,{value:e,children:t})),OE=y.createContext(!1),pD=()=>y.useContext(OE);OE.Provider;function hD(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var mD=y.createContext(hD()),gD=()=>y.useContext(mD);function AE(e,t){return typeof e=="function"?e(...t):!!e}function vD(){}var yD=(e,t)=>{(e.suspense||e.throwOnError)&&(t.isReset()||(e.retryOnMount=!1))},bD=e=>{y.useEffect(()=>{e.clearReset()},[e])},xD=({result:e,errorResetBoundary:t,throwOnError:n,query:r})=>e.isError&&!t.isReset()&&!e.isFetching&&r&&AE(n,[e.error,r]),wD=e=>{e.suspense&&(typeof e.staleTime!="number"&&(e.staleTime=1e3),typeof e.gcTime=="number"&&(e.gcTime=Math.max(e.gcTime,1e3)))},SD=(e,t)=>e?.suspense&&t.isPending,CD=(e,t,n)=>t.fetchOptimistic(e).catch(()=>{n.clearReset()});function jD(e,t,n){const r=qa(),s=pD(),o=gD(),l=r.defaultQueryOptions(e);r.getDefaultOptions().queries?._experimental_beforeQuery?.(l),l._optimisticResults=s?"isRestoring":"optimistic",wD(l),yD(l,o),bD(o);const[u]=y.useState(()=>new t(r,l)),d=u.getOptimisticResult(l);if(y.useSyncExternalStore(y.useCallback(f=>{const h=s?()=>{}:u.subscribe(ar.batchCalls(f));return u.updateResult(),h},[u,s]),()=>u.getCurrentResult(),()=>u.getCurrentResult()),y.useEffect(()=>{u.setOptions(l,{listeners:!1})},[l,u]),SD(l,d))throw CD(l,u,o);if(xD({result:d,errorResetBoundary:o,throwOnError:l.throwOnError,query:r.getQueryCache().get(l.queryHash)}))throw d.error;return r.getDefaultOptions().queries?._experimental_afterQuery?.(l,d),l.notifyOnChangeProps?d:u.trackResult(d)}function vt(e,t){return jD(e,cD)}function kD(e,t){const n=qa(),[r]=y.useState(()=>new fD(n,e));y.useEffect(()=>{r.setOptions(e)},[r,e]);const s=y.useSyncExternalStore(y.useCallback(l=>r.subscribe(ar.batchCalls(l)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),o=y.useCallback((l,u)=>{r.mutate(l,u).catch(vD)},[r]);if(s.error&&AE(r.options.throwOnError,[s.error]))throw s.error;return{...s,mutate:o,mutateAsync:s.mutate}}var Of={},fv={exports:{}},Wr={},pv={exports:{}},hv={};/** + * @license React + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var rC;function ED(){return rC||(rC=1,(function(e){function t(V,K){var U=V.length;V.push(K);e:for(;0>>1,J=V[D];if(0>>1;Ds(ie,U))ues(j,ie)?(V[D]=j,V[ue]=U,D=ue):(V[D]=ie,V[ee]=U,D=ee);else if(ues(j,U))V[D]=j,V[ue]=U,D=ue;else break e}}return K}function s(V,K){var U=V.sortIndex-K.sortIndex;return U!==0?U:V.id-K.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var l=Date,u=l.now();e.unstable_now=function(){return l.now()-u}}var d=[],f=[],h=1,m=null,g=3,x=!1,b=!1,w=!1,C=typeof setTimeout=="function"?setTimeout:null,k=typeof clearTimeout=="function"?clearTimeout:null,N=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function T(V){for(var K=n(f);K!==null;){if(K.callback===null)r(f);else if(K.startTime<=V)r(f),K.sortIndex=K.expirationTime,t(d,K);else break;K=n(f)}}function _(V){if(w=!1,T(V),!b)if(n(d)!==null)b=!0,Q(I);else{var K=n(f);K!==null&&ne(_,K.startTime-V)}}function I(V,K){b=!1,w&&(w=!1,k(O),O=-1),x=!0;var U=g;try{for(T(K),m=n(d);m!==null&&(!(m.expirationTime>K)||V&&!Z());){var D=m.callback;if(typeof D=="function"){m.callback=null,g=m.priorityLevel;var J=D(m.expirationTime<=K);K=e.unstable_now(),typeof J=="function"?m.callback=J:m===n(d)&&r(d),T(K)}else r(d);m=n(d)}if(m!==null)var ae=!0;else{var ee=n(f);ee!==null&&ne(_,ee.startTime-K),ae=!1}return ae}finally{m=null,g=U,x=!1}}var M=!1,A=null,O=-1,F=5,z=-1;function Z(){return!(e.unstable_now()-zV||125D?(V.sortIndex=U,t(f,V),n(d)===null&&V===n(f)&&(w?(k(O),O=-1):w=!0,ne(_,U-D))):(V.sortIndex=J,t(d,V),b||x||(b=!0,Q(I))),V},e.unstable_shouldYield=Z,e.unstable_wrapCallback=function(V){var K=g;return function(){var U=g;g=K;try{return V.apply(this,arguments)}finally{g=U}}}})(hv)),hv}var sC;function ND(){return sC||(sC=1,pv.exports=ED()),pv.exports}/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var aC;function TD(){if(aC)return Wr;aC=1;var e=pc(),t=ND();function n(i){for(var c="https://reactjs.org/docs/error-decoder.html?invariant="+i,p=1;p"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),d=Object.prototype.hasOwnProperty,f=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,h={},m={};function g(i){return d.call(m,i)?!0:d.call(h,i)?!1:f.test(i)?m[i]=!0:(h[i]=!0,!1)}function x(i,c,p,v){if(p!==null&&p.type===0)return!1;switch(typeof c){case"function":case"symbol":return!0;case"boolean":return v?!1:p!==null?!p.acceptsBooleans:(i=i.toLowerCase().slice(0,5),i!=="data-"&&i!=="aria-");default:return!1}}function b(i,c,p,v){if(c===null||typeof c>"u"||x(i,c,p,v))return!0;if(v)return!1;if(p!==null)switch(p.type){case 3:return!c;case 4:return c===!1;case 5:return isNaN(c);case 6:return isNaN(c)||1>c}return!1}function w(i,c,p,v,S,E,R){this.acceptsBooleans=c===2||c===3||c===4,this.attributeName=v,this.attributeNamespace=S,this.mustUseProperty=p,this.propertyName=i,this.type=c,this.sanitizeURL=E,this.removeEmptyString=R}var C={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(i){C[i]=new w(i,0,!1,i,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(i){var c=i[0];C[c]=new w(c,1,!1,i[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(i){C[i]=new w(i,2,!1,i.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(i){C[i]=new w(i,2,!1,i,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(i){C[i]=new w(i,3,!1,i.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(i){C[i]=new w(i,3,!0,i,null,!1,!1)}),["capture","download"].forEach(function(i){C[i]=new w(i,4,!1,i,null,!1,!1)}),["cols","rows","size","span"].forEach(function(i){C[i]=new w(i,6,!1,i,null,!1,!1)}),["rowSpan","start"].forEach(function(i){C[i]=new w(i,5,!1,i.toLowerCase(),null,!1,!1)});var k=/[\-:]([a-z])/g;function N(i){return i[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(i){var c=i.replace(k,N);C[c]=new w(c,1,!1,i,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(i){var c=i.replace(k,N);C[c]=new w(c,1,!1,i,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(i){var c=i.replace(k,N);C[c]=new w(c,1,!1,i,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(i){C[i]=new w(i,1,!1,i.toLowerCase(),null,!1,!1)}),C.xlinkHref=new w("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(i){C[i]=new w(i,1,!1,i.toLowerCase(),null,!0,!0)});function T(i,c,p,v){var S=C.hasOwnProperty(c)?C[c]:null;(S!==null?S.type!==0:v||!(2L||S[R]!==E[L]){var W=` +`+S[R].replace(" at new "," at ");return i.displayName&&W.includes("")&&(W=W.replace("",i.displayName)),W}while(1<=R&&0<=L);break}}}finally{ae=!1,Error.prepareStackTrace=p}return(i=i?i.displayName||i.name:"")?J(i):""}function ie(i){switch(i.tag){case 5:return J(i.type);case 16:return J("Lazy");case 13:return J("Suspense");case 19:return J("SuspenseList");case 0:case 2:case 15:return i=ee(i.type,!1),i;case 11:return i=ee(i.type.render,!1),i;case 1:return i=ee(i.type,!0),i;default:return""}}function ue(i){if(i==null)return null;if(typeof i=="function")return i.displayName||i.name||null;if(typeof i=="string")return i;switch(i){case A:return"Fragment";case M:return"Portal";case F:return"Profiler";case O:return"StrictMode";case ce:return"Suspense";case H:return"SuspenseList"}if(typeof i=="object")switch(i.$$typeof){case Z:return(i.displayName||"Context")+".Consumer";case z:return(i._context.displayName||"Context")+".Provider";case B:var c=i.render;return i=i.displayName,i||(i=c.displayName||c.name||"",i=i!==""?"ForwardRef("+i+")":"ForwardRef"),i;case oe:return c=i.displayName||null,c!==null?c:ue(i.type)||"Memo";case Q:c=i._payload,i=i._init;try{return ue(i(c))}catch{}}return null}function j(i){var c=i.type;switch(i.tag){case 24:return"Cache";case 9:return(c.displayName||"Context")+".Consumer";case 10:return(c._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return i=c.render,i=i.displayName||i.name||"",c.displayName||(i!==""?"ForwardRef("+i+")":"ForwardRef");case 7:return"Fragment";case 5:return c;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return ue(c);case 8:return c===O?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof c=="function")return c.displayName||c.name||null;if(typeof c=="string")return c}return null}function P(i){switch(typeof i){case"boolean":case"number":case"string":case"undefined":return i;case"object":return i;default:return""}}function pe(i){var c=i.type;return(i=i.nodeName)&&i.toLowerCase()==="input"&&(c==="checkbox"||c==="radio")}function xe(i){var c=pe(i)?"checked":"value",p=Object.getOwnPropertyDescriptor(i.constructor.prototype,c),v=""+i[c];if(!i.hasOwnProperty(c)&&typeof p<"u"&&typeof p.get=="function"&&typeof p.set=="function"){var S=p.get,E=p.set;return Object.defineProperty(i,c,{configurable:!0,get:function(){return S.call(this)},set:function(R){v=""+R,E.call(this,R)}}),Object.defineProperty(i,c,{enumerable:p.enumerable}),{getValue:function(){return v},setValue:function(R){v=""+R},stopTracking:function(){i._valueTracker=null,delete i[c]}}}}function rt(i){i._valueTracker||(i._valueTracker=xe(i))}function Je(i){if(!i)return!1;var c=i._valueTracker;if(!c)return!0;var p=c.getValue(),v="";return i&&(v=pe(i)?i.checked?"true":"false":i.value),i=v,i!==p?(c.setValue(i),!0):!1}function nt(i){if(i=i||(typeof document<"u"?document:void 0),typeof i>"u")return null;try{return i.activeElement||i.body}catch{return i.body}}function qt(i,c){var p=c.checked;return U({},c,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:p??i._wrapperState.initialChecked})}function qn(i,c){var p=c.defaultValue==null?"":c.defaultValue,v=c.checked!=null?c.checked:c.defaultChecked;p=P(c.value!=null?c.value:p),i._wrapperState={initialChecked:v,initialValue:p,controlled:c.type==="checkbox"||c.type==="radio"?c.checked!=null:c.value!=null}}function Mn(i,c){c=c.checked,c!=null&&T(i,"checked",c,!1)}function tr(i,c){Mn(i,c);var p=P(c.value),v=c.type;if(p!=null)v==="number"?(p===0&&i.value===""||i.value!=p)&&(i.value=""+p):i.value!==""+p&&(i.value=""+p);else if(v==="submit"||v==="reset"){i.removeAttribute("value");return}c.hasOwnProperty("value")?$r(i,c.type,p):c.hasOwnProperty("defaultValue")&&$r(i,c.type,P(c.defaultValue)),c.checked==null&&c.defaultChecked!=null&&(i.defaultChecked=!!c.defaultChecked)}function yn(i,c,p){if(c.hasOwnProperty("value")||c.hasOwnProperty("defaultValue")){var v=c.type;if(!(v!=="submit"&&v!=="reset"||c.value!==void 0&&c.value!==null))return;c=""+i._wrapperState.initialValue,p||c===i.value||(i.value=c),i.defaultValue=c}p=i.name,p!==""&&(i.name=""),i.defaultChecked=!!i._wrapperState.initialChecked,p!==""&&(i.name=p)}function $r(i,c,p){(c!=="number"||nt(i.ownerDocument)!==i)&&(p==null?i.defaultValue=""+i._wrapperState.initialValue:i.defaultValue!==""+p&&(i.defaultValue=""+p))}var Br=Array.isArray;function or(i,c,p,v){if(i=i.options,c){c={};for(var S=0;S"+c.valueOf().toString()+"",c=Ne.firstChild;i.firstChild;)i.removeChild(i.firstChild);for(;c.firstChild;)i.appendChild(c.firstChild)}});function ft(i,c){if(c){var p=i.firstChild;if(p&&p===i.lastChild&&p.nodeType===3){p.nodeValue=c;return}}i.textContent=c}var Et={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},_n=["Webkit","ms","Moz","O"];Object.keys(Et).forEach(function(i){_n.forEach(function(c){c=c+i.charAt(0).toUpperCase()+i.substring(1),Et[c]=Et[i]})});function mn(i,c,p){return c==null||typeof c=="boolean"||c===""?"":p||typeof c!="number"||c===0||Et.hasOwnProperty(i)&&Et[i]?(""+c).trim():c+"px"}function ke(i,c){i=i.style;for(var p in c)if(c.hasOwnProperty(p)){var v=p.indexOf("--")===0,S=mn(p,c[p],v);p==="float"&&(p="cssFloat"),v?i.setProperty(p,S):i[p]=S}}var yt=U({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Bt(i,c){if(c){if(yt[i]&&(c.children!=null||c.dangerouslySetInnerHTML!=null))throw Error(n(137,i));if(c.dangerouslySetInnerHTML!=null){if(c.children!=null)throw Error(n(60));if(typeof c.dangerouslySetInnerHTML!="object"||!("__html"in c.dangerouslySetInnerHTML))throw Error(n(61))}if(c.style!=null&&typeof c.style!="object")throw Error(n(62))}}function kn(i,c){if(i.indexOf("-")===-1)return typeof c.is=="string";switch(i){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var gr=null;function ur(i){return i=i.target||i.srcElement||window,i.correspondingUseElement&&(i=i.correspondingUseElement),i.nodeType===3?i.parentNode:i}var zr=null,Tr=null,es=null;function ts(i){if(i=nu(i)){if(typeof zr!="function")throw Error(n(280));var c=i.stateNode;c&&(c=Wd(c),zr(i.stateNode,i.type,c))}}function Za(i){Tr?es?es.push(i):es=[i]:Tr=i}function Ac(){if(Tr){var i=Tr,c=es;if(es=Tr=null,ts(i),c)for(i=0;i>>=0,i===0?32:31-(Ps(i)/Td|0)|0}var Md=64,_d=4194304;function Lc(i){switch(i&-i){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return i&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return i&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return i}}function Rd(i,c){var p=i.pendingLanes;if(p===0)return 0;var v=0,S=i.suspendedLanes,E=i.pingedLanes,R=p&268435455;if(R!==0){var L=R&~S;L!==0?v=Lc(L):(E&=R,E!==0&&(v=Lc(E)))}else R=p&~S,R!==0?v=Lc(R):E!==0&&(v=Lc(E));if(v===0)return 0;if(c!==0&&c!==v&&(c&S)===0&&(S=v&-v,E=c&-c,S>=E||S===16&&(E&4194240)!==0))return c;if((v&4)!==0&&(v|=p&16),c=i.entangledLanes,c!==0)for(i=i.entanglements,c&=v;0p;p++)c.push(i);return c}function $c(i,c,p){i.pendingLanes|=c,c!==536870912&&(i.suspendedLanes=0,i.pingedLanes=0),i=i.eventTimes,c=31-Ut(c),i[c]=p}function uO(i,c){var p=i.pendingLanes&~c;i.pendingLanes=c,i.suspendedLanes=0,i.pingedLanes=0,i.expiredLanes&=c,i.mutableReadLanes&=c,i.entangledLanes&=c,c=i.entanglements;var v=i.eventTimes;for(i=i.expirationTimes;0=Wc),$w=" ",Bw=!1;function zw(i,c){switch(i){case"keyup":return LO.indexOf(c.keyCode)!==-1;case"keydown":return c.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Uw(i){return i=i.detail,typeof i=="object"&&"data"in i?i.data:null}var ul=!1;function BO(i,c){switch(i){case"compositionend":return Uw(c);case"keypress":return c.which!==32?null:(Bw=!0,$w);case"textInput":return i=c.data,i===$w&&Bw?null:i;default:return null}}function zO(i,c){if(ul)return i==="compositionend"||!Vm&&zw(i,c)?(i=Iw(),Dd=Fm=so=null,ul=!1,i):null;switch(i){case"paste":return null;case"keypress":if(!(c.ctrlKey||c.altKey||c.metaKey)||c.ctrlKey&&c.altKey){if(c.char&&1=c)return{node:p,offset:c-i};i=v}e:{for(;p;){if(p.nextSibling){p=p.nextSibling;break e}p=p.parentNode}p=void 0}p=Jw(p)}}function Yw(i,c){return i&&c?i===c?!0:i&&i.nodeType===3?!1:c&&c.nodeType===3?Yw(i,c.parentNode):"contains"in i?i.contains(c):i.compareDocumentPosition?!!(i.compareDocumentPosition(c)&16):!1:!1}function Zw(){for(var i=window,c=nt();c instanceof i.HTMLIFrameElement;){try{var p=typeof c.contentWindow.location.href=="string"}catch{p=!1}if(p)i=c.contentWindow;else break;c=nt(i.document)}return c}function Km(i){var c=i&&i.nodeName&&i.nodeName.toLowerCase();return c&&(c==="input"&&(i.type==="text"||i.type==="search"||i.type==="tel"||i.type==="url"||i.type==="password")||c==="textarea"||i.contentEditable==="true")}function QO(i){var c=Zw(),p=i.focusedElem,v=i.selectionRange;if(c!==p&&p&&p.ownerDocument&&Yw(p.ownerDocument.documentElement,p)){if(v!==null&&Km(p)){if(c=v.start,i=v.end,i===void 0&&(i=c),"selectionStart"in p)p.selectionStart=c,p.selectionEnd=Math.min(i,p.value.length);else if(i=(c=p.ownerDocument||document)&&c.defaultView||window,i.getSelection){i=i.getSelection();var S=p.textContent.length,E=Math.min(v.start,S);v=v.end===void 0?E:Math.min(v.end,S),!i.extend&&E>v&&(S=v,v=E,E=S),S=Qw(p,E);var R=Qw(p,v);S&&R&&(i.rangeCount!==1||i.anchorNode!==S.node||i.anchorOffset!==S.offset||i.focusNode!==R.node||i.focusOffset!==R.offset)&&(c=c.createRange(),c.setStart(S.node,S.offset),i.removeAllRanges(),E>v?(i.addRange(c),i.extend(R.node,R.offset)):(c.setEnd(R.node,R.offset),i.addRange(c)))}}for(c=[],i=p;i=i.parentNode;)i.nodeType===1&&c.push({element:i,left:i.scrollLeft,top:i.scrollTop});for(typeof p.focus=="function"&&p.focus(),p=0;p=document.documentMode,dl=null,Wm=null,Yc=null,Gm=!1;function Xw(i,c,p){var v=p.window===p?p.document:p.nodeType===9?p:p.ownerDocument;Gm||dl==null||dl!==nt(v)||(v=dl,"selectionStart"in v&&Km(v)?v={start:v.selectionStart,end:v.selectionEnd}:(v=(v.ownerDocument&&v.ownerDocument.defaultView||window).getSelection(),v={anchorNode:v.anchorNode,anchorOffset:v.anchorOffset,focusNode:v.focusNode,focusOffset:v.focusOffset}),Yc&&Qc(Yc,v)||(Yc=v,v=qd(Wm,"onSelect"),0gl||(i.current=og[gl],og[gl]=null,gl--)}function gn(i,c){gl++,og[gl]=i.current,i.current=c}var lo={},vr=io(lo),Ur=io(!1),fi=lo;function vl(i,c){var p=i.type.contextTypes;if(!p)return lo;var v=i.stateNode;if(v&&v.__reactInternalMemoizedUnmaskedChildContext===c)return v.__reactInternalMemoizedMaskedChildContext;var S={},E;for(E in p)S[E]=c[E];return v&&(i=i.stateNode,i.__reactInternalMemoizedUnmaskedChildContext=c,i.__reactInternalMemoizedMaskedChildContext=S),S}function Vr(i){return i=i.childContextTypes,i!=null}function Gd(){xn(Ur),xn(vr)}function hS(i,c,p){if(vr.current!==lo)throw Error(n(168));gn(vr,c),gn(Ur,p)}function mS(i,c,p){var v=i.stateNode;if(c=c.childContextTypes,typeof v.getChildContext!="function")return p;v=v.getChildContext();for(var S in v)if(!(S in c))throw Error(n(108,j(i)||"Unknown",S));return U({},p,v)}function Jd(i){return i=(i=i.stateNode)&&i.__reactInternalMemoizedMergedChildContext||lo,fi=vr.current,gn(vr,i),gn(Ur,Ur.current),!0}function gS(i,c,p){var v=i.stateNode;if(!v)throw Error(n(169));p?(i=mS(i,c,fi),v.__reactInternalMemoizedMergedChildContext=i,xn(Ur),xn(vr),gn(vr,i)):xn(Ur),gn(Ur,p)}var ja=null,Qd=!1,ig=!1;function vS(i){ja===null?ja=[i]:ja.push(i)}function lA(i){Qd=!0,vS(i)}function co(){if(!ig&&ja!==null){ig=!0;var i=0,c=on;try{var p=ja;for(on=1;i>=R,S-=R,ka=1<<32-Ut(c)+S|p<mt?(cr=ot,ot=null):cr=ot.sibling;var Yt=Se(le,ot,de[mt],Te);if(Yt===null){ot===null&&(ot=cr);break}i&&ot&&Yt.alternate===null&&c(le,ot),Y=E(Yt,Y,mt),at===null?et=Yt:at.sibling=Yt,at=Yt,ot=cr}if(mt===de.length)return p(le,ot),En&&hi(le,mt),et;if(ot===null){for(;mtmt?(cr=ot,ot=null):cr=ot.sibling;var bo=Se(le,ot,Yt.value,Te);if(bo===null){ot===null&&(ot=cr);break}i&&ot&&bo.alternate===null&&c(le,ot),Y=E(bo,Y,mt),at===null?et=bo:at.sibling=bo,at=bo,ot=cr}if(Yt.done)return p(le,ot),En&&hi(le,mt),et;if(ot===null){for(;!Yt.done;mt++,Yt=de.next())Yt=Ee(le,Yt.value,Te),Yt!==null&&(Y=E(Yt,Y,mt),at===null?et=Yt:at.sibling=Yt,at=Yt);return En&&hi(le,mt),et}for(ot=v(le,ot);!Yt.done;mt++,Yt=de.next())Yt=Be(ot,le,mt,Yt.value,Te),Yt!==null&&(i&&Yt.alternate!==null&&ot.delete(Yt.key===null?mt:Yt.key),Y=E(Yt,Y,mt),at===null?et=Yt:at.sibling=Yt,at=Yt);return i&&ot.forEach(function(UA){return c(le,UA)}),En&&hi(le,mt),et}function $n(le,Y,de,Te){if(typeof de=="object"&&de!==null&&de.type===A&&de.key===null&&(de=de.props.children),typeof de=="object"&&de!==null){switch(de.$$typeof){case I:e:{for(var et=de.key,at=Y;at!==null;){if(at.key===et){if(et=de.type,et===A){if(at.tag===7){p(le,at.sibling),Y=S(at,de.props.children),Y.return=le,le=Y;break e}}else if(at.elementType===et||typeof et=="object"&&et!==null&&et.$$typeof===Q&&CS(et)===at.type){p(le,at.sibling),Y=S(at,de.props),Y.ref=ru(le,at,de),Y.return=le,le=Y;break e}p(le,at);break}else c(le,at);at=at.sibling}de.type===A?(Y=Si(de.props.children,le.mode,Te,de.key),Y.return=le,le=Y):(Te=kf(de.type,de.key,de.props,null,le.mode,Te),Te.ref=ru(le,Y,de),Te.return=le,le=Te)}return R(le);case M:e:{for(at=de.key;Y!==null;){if(Y.key===at)if(Y.tag===4&&Y.stateNode.containerInfo===de.containerInfo&&Y.stateNode.implementation===de.implementation){p(le,Y.sibling),Y=S(Y,de.children||[]),Y.return=le,le=Y;break e}else{p(le,Y);break}else c(le,Y);Y=Y.sibling}Y=sv(de,le.mode,Te),Y.return=le,le=Y}return R(le);case Q:return at=de._init,$n(le,Y,at(de._payload),Te)}if(Br(de))return He(le,Y,de,Te);if(K(de))return Qe(le,Y,de,Te);ef(le,de)}return typeof de=="string"&&de!==""||typeof de=="number"?(de=""+de,Y!==null&&Y.tag===6?(p(le,Y.sibling),Y=S(Y,de),Y.return=le,le=Y):(p(le,Y),Y=rv(de,le.mode,Te),Y.return=le,le=Y),R(le)):p(le,Y)}return $n}var wl=jS(!0),kS=jS(!1),tf=io(null),nf=null,Sl=null,pg=null;function hg(){pg=Sl=nf=null}function mg(i){var c=tf.current;xn(tf),i._currentValue=c}function gg(i,c,p){for(;i!==null;){var v=i.alternate;if((i.childLanes&c)!==c?(i.childLanes|=c,v!==null&&(v.childLanes|=c)):v!==null&&(v.childLanes&c)!==c&&(v.childLanes|=c),i===p)break;i=i.return}}function Cl(i,c){nf=i,pg=Sl=null,i=i.dependencies,i!==null&&i.firstContext!==null&&((i.lanes&c)!==0&&(qr=!0),i.firstContext=null)}function xs(i){var c=i._currentValue;if(pg!==i)if(i={context:i,memoizedValue:c,next:null},Sl===null){if(nf===null)throw Error(n(308));Sl=i,nf.dependencies={lanes:0,firstContext:i}}else Sl=Sl.next=i;return c}var mi=null;function vg(i){mi===null?mi=[i]:mi.push(i)}function ES(i,c,p,v){var S=c.interleaved;return S===null?(p.next=p,vg(c)):(p.next=S.next,S.next=p),c.interleaved=p,Na(i,v)}function Na(i,c){i.lanes|=c;var p=i.alternate;for(p!==null&&(p.lanes|=c),p=i,i=i.return;i!==null;)i.childLanes|=c,p=i.alternate,p!==null&&(p.childLanes|=c),p=i,i=i.return;return p.tag===3?p.stateNode:null}var uo=!1;function yg(i){i.updateQueue={baseState:i.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function NS(i,c){i=i.updateQueue,c.updateQueue===i&&(c.updateQueue={baseState:i.baseState,firstBaseUpdate:i.firstBaseUpdate,lastBaseUpdate:i.lastBaseUpdate,shared:i.shared,effects:i.effects})}function Ta(i,c){return{eventTime:i,lane:c,tag:0,payload:null,callback:null,next:null}}function fo(i,c,p){var v=i.updateQueue;if(v===null)return null;if(v=v.shared,(Jt&2)!==0){var S=v.pending;return S===null?c.next=c:(c.next=S.next,S.next=c),v.pending=c,Na(i,p)}return S=v.interleaved,S===null?(c.next=c,vg(v)):(c.next=S.next,S.next=c),v.interleaved=c,Na(i,p)}function rf(i,c,p){if(c=c.updateQueue,c!==null&&(c=c.shared,(p&4194240)!==0)){var v=c.lanes;v&=i.pendingLanes,p|=v,c.lanes=p,Pm(i,p)}}function TS(i,c){var p=i.updateQueue,v=i.alternate;if(v!==null&&(v=v.updateQueue,p===v)){var S=null,E=null;if(p=p.firstBaseUpdate,p!==null){do{var R={eventTime:p.eventTime,lane:p.lane,tag:p.tag,payload:p.payload,callback:p.callback,next:null};E===null?S=E=R:E=E.next=R,p=p.next}while(p!==null);E===null?S=E=c:E=E.next=c}else S=E=c;p={baseState:v.baseState,firstBaseUpdate:S,lastBaseUpdate:E,shared:v.shared,effects:v.effects},i.updateQueue=p;return}i=p.lastBaseUpdate,i===null?p.firstBaseUpdate=c:i.next=c,p.lastBaseUpdate=c}function sf(i,c,p,v){var S=i.updateQueue;uo=!1;var E=S.firstBaseUpdate,R=S.lastBaseUpdate,L=S.shared.pending;if(L!==null){S.shared.pending=null;var W=L,me=W.next;W.next=null,R===null?E=me:R.next=me,R=W;var Ce=i.alternate;Ce!==null&&(Ce=Ce.updateQueue,L=Ce.lastBaseUpdate,L!==R&&(L===null?Ce.firstBaseUpdate=me:L.next=me,Ce.lastBaseUpdate=W))}if(E!==null){var Ee=S.baseState;R=0,Ce=me=W=null,L=E;do{var Se=L.lane,Be=L.eventTime;if((v&Se)===Se){Ce!==null&&(Ce=Ce.next={eventTime:Be,lane:0,tag:L.tag,payload:L.payload,callback:L.callback,next:null});e:{var He=i,Qe=L;switch(Se=c,Be=p,Qe.tag){case 1:if(He=Qe.payload,typeof He=="function"){Ee=He.call(Be,Ee,Se);break e}Ee=He;break e;case 3:He.flags=He.flags&-65537|128;case 0:if(He=Qe.payload,Se=typeof He=="function"?He.call(Be,Ee,Se):He,Se==null)break e;Ee=U({},Ee,Se);break e;case 2:uo=!0}}L.callback!==null&&L.lane!==0&&(i.flags|=64,Se=S.effects,Se===null?S.effects=[L]:Se.push(L))}else Be={eventTime:Be,lane:Se,tag:L.tag,payload:L.payload,callback:L.callback,next:null},Ce===null?(me=Ce=Be,W=Ee):Ce=Ce.next=Be,R|=Se;if(L=L.next,L===null){if(L=S.shared.pending,L===null)break;Se=L,L=Se.next,Se.next=null,S.lastBaseUpdate=Se,S.shared.pending=null}}while(!0);if(Ce===null&&(W=Ee),S.baseState=W,S.firstBaseUpdate=me,S.lastBaseUpdate=Ce,c=S.shared.interleaved,c!==null){S=c;do R|=S.lane,S=S.next;while(S!==c)}else E===null&&(S.shared.lanes=0);yi|=R,i.lanes=R,i.memoizedState=Ee}}function MS(i,c,p){if(i=c.effects,c.effects=null,i!==null)for(c=0;cp?p:4,i(!0);var v=Cg.transition;Cg.transition={};try{i(!1),c()}finally{on=p,Cg.transition=v}}function GS(){return ws().memoizedState}function fA(i,c,p){var v=go(i);if(p={lane:v,action:p,hasEagerState:!1,eagerState:null,next:null},JS(i))QS(c,p);else if(p=ES(i,c,p,v),p!==null){var S=Rr();Ls(p,i,v,S),YS(p,c,v)}}function pA(i,c,p){var v=go(i),S={lane:v,action:p,hasEagerState:!1,eagerState:null,next:null};if(JS(i))QS(c,S);else{var E=i.alternate;if(i.lanes===0&&(E===null||E.lanes===0)&&(E=c.lastRenderedReducer,E!==null))try{var R=c.lastRenderedState,L=E(R,p);if(S.hasEagerState=!0,S.eagerState=L,Is(L,R)){var W=c.interleaved;W===null?(S.next=S,vg(c)):(S.next=W.next,W.next=S),c.interleaved=S;return}}catch{}finally{}p=ES(i,c,S,v),p!==null&&(S=Rr(),Ls(p,i,v,S),YS(p,c,v))}}function JS(i){var c=i.alternate;return i===In||c!==null&&c===In}function QS(i,c){iu=lf=!0;var p=i.pending;p===null?c.next=c:(c.next=p.next,p.next=c),i.pending=c}function YS(i,c,p){if((p&4194240)!==0){var v=c.lanes;v&=i.pendingLanes,p|=v,c.lanes=p,Pm(i,p)}}var df={readContext:xs,useCallback:yr,useContext:yr,useEffect:yr,useImperativeHandle:yr,useInsertionEffect:yr,useLayoutEffect:yr,useMemo:yr,useReducer:yr,useRef:yr,useState:yr,useDebugValue:yr,useDeferredValue:yr,useTransition:yr,useMutableSource:yr,useSyncExternalStore:yr,useId:yr,unstable_isNewReconciler:!1},hA={readContext:xs,useCallback:function(i,c){return ca().memoizedState=[i,c===void 0?null:c],i},useContext:xs,useEffect:BS,useImperativeHandle:function(i,c,p){return p=p!=null?p.concat([i]):null,cf(4194308,4,VS.bind(null,c,i),p)},useLayoutEffect:function(i,c){return cf(4194308,4,i,c)},useInsertionEffect:function(i,c){return cf(4,2,i,c)},useMemo:function(i,c){var p=ca();return c=c===void 0?null:c,i=i(),p.memoizedState=[i,c],i},useReducer:function(i,c,p){var v=ca();return c=p!==void 0?p(c):c,v.memoizedState=v.baseState=c,i={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:i,lastRenderedState:c},v.queue=i,i=i.dispatch=fA.bind(null,In,i),[v.memoizedState,i]},useRef:function(i){var c=ca();return i={current:i},c.memoizedState=i},useState:LS,useDebugValue:_g,useDeferredValue:function(i){return ca().memoizedState=i},useTransition:function(){var i=LS(!1),c=i[0];return i=dA.bind(null,i[1]),ca().memoizedState=i,[c,i]},useMutableSource:function(){},useSyncExternalStore:function(i,c,p){var v=In,S=ca();if(En){if(p===void 0)throw Error(n(407));p=p()}else{if(p=c(),lr===null)throw Error(n(349));(vi&30)!==0||IS(v,c,p)}S.memoizedState=p;var E={value:p,getSnapshot:c};return S.queue=E,BS(AS.bind(null,v,E,i),[i]),v.flags|=2048,uu(9,OS.bind(null,v,E,p,c),void 0,null),p},useId:function(){var i=ca(),c=lr.identifierPrefix;if(En){var p=Ea,v=ka;p=(v&~(1<<32-Ut(v)-1)).toString(32)+p,c=":"+c+"R"+p,p=lu++,0<\/script>",i=i.removeChild(i.firstChild)):typeof v.is=="string"?i=R.createElement(p,{is:v.is}):(i=R.createElement(p),p==="select"&&(R=i,v.multiple?R.multiple=!0:v.size&&(R.size=v.size))):i=R.createElementNS(i,p),i[ia]=c,i[tu]=v,v0(i,c,!1,!1),c.stateNode=i;e:{switch(R=kn(p,v),p){case"dialog":bn("cancel",i),bn("close",i),S=v;break;case"iframe":case"object":case"embed":bn("load",i),S=v;break;case"video":case"audio":for(S=0;STl&&(c.flags|=128,v=!0,du(E,!1),c.lanes=4194304)}else{if(!v)if(i=af(R),i!==null){if(c.flags|=128,v=!0,p=i.updateQueue,p!==null&&(c.updateQueue=p,c.flags|=4),du(E,!0),E.tail===null&&E.tailMode==="hidden"&&!R.alternate&&!En)return br(c),null}else 2*un()-E.renderingStartTime>Tl&&p!==1073741824&&(c.flags|=128,v=!0,du(E,!1),c.lanes=4194304);E.isBackwards?(R.sibling=c.child,c.child=R):(p=E.last,p!==null?p.sibling=R:c.child=R,E.last=R)}return E.tail!==null?(c=E.tail,E.rendering=c,E.tail=c.sibling,E.renderingStartTime=un(),c.sibling=null,p=Pn.current,gn(Pn,v?p&1|2:p&1),c):(br(c),null);case 22:case 23:return ev(),v=c.memoizedState!==null,i!==null&&i.memoizedState!==null!==v&&(c.flags|=8192),v&&(c.mode&1)!==0?(os&1073741824)!==0&&(br(c),c.subtreeFlags&6&&(c.flags|=8192)):br(c),null;case 24:return null;case 25:return null}throw Error(n(156,c.tag))}function SA(i,c){switch(cg(c),c.tag){case 1:return Vr(c.type)&&Gd(),i=c.flags,i&65536?(c.flags=i&-65537|128,c):null;case 3:return jl(),xn(Ur),xn(vr),Sg(),i=c.flags,(i&65536)!==0&&(i&128)===0?(c.flags=i&-65537|128,c):null;case 5:return xg(c),null;case 13:if(xn(Pn),i=c.memoizedState,i!==null&&i.dehydrated!==null){if(c.alternate===null)throw Error(n(340));xl()}return i=c.flags,i&65536?(c.flags=i&-65537|128,c):null;case 19:return xn(Pn),null;case 4:return jl(),null;case 10:return mg(c.type._context),null;case 22:case 23:return ev(),null;case 24:return null;default:return null}}var mf=!1,xr=!1,CA=typeof WeakSet=="function"?WeakSet:Set,qe=null;function El(i,c){var p=i.ref;if(p!==null)if(typeof p=="function")try{p(null)}catch(v){An(i,c,v)}else p.current=null}function Ug(i,c,p){try{p()}catch(v){An(i,c,v)}}var x0=!1;function jA(i,c){if(eg=Od,i=Zw(),Km(i)){if("selectionStart"in i)var p={start:i.selectionStart,end:i.selectionEnd};else e:{p=(p=i.ownerDocument)&&p.defaultView||window;var v=p.getSelection&&p.getSelection();if(v&&v.rangeCount!==0){p=v.anchorNode;var S=v.anchorOffset,E=v.focusNode;v=v.focusOffset;try{p.nodeType,E.nodeType}catch{p=null;break e}var R=0,L=-1,W=-1,me=0,Ce=0,Ee=i,Se=null;t:for(;;){for(var Be;Ee!==p||S!==0&&Ee.nodeType!==3||(L=R+S),Ee!==E||v!==0&&Ee.nodeType!==3||(W=R+v),Ee.nodeType===3&&(R+=Ee.nodeValue.length),(Be=Ee.firstChild)!==null;)Se=Ee,Ee=Be;for(;;){if(Ee===i)break t;if(Se===p&&++me===S&&(L=R),Se===E&&++Ce===v&&(W=R),(Be=Ee.nextSibling)!==null)break;Ee=Se,Se=Ee.parentNode}Ee=Be}p=L===-1||W===-1?null:{start:L,end:W}}else p=null}p=p||{start:0,end:0}}else p=null;for(tg={focusedElem:i,selectionRange:p},Od=!1,qe=c;qe!==null;)if(c=qe,i=c.child,(c.subtreeFlags&1028)!==0&&i!==null)i.return=c,qe=i;else for(;qe!==null;){c=qe;try{var He=c.alternate;if((c.flags&1024)!==0)switch(c.tag){case 0:case 11:case 15:break;case 1:if(He!==null){var Qe=He.memoizedProps,$n=He.memoizedState,le=c.stateNode,Y=le.getSnapshotBeforeUpdate(c.elementType===c.type?Qe:As(c.type,Qe),$n);le.__reactInternalSnapshotBeforeUpdate=Y}break;case 3:var de=c.stateNode.containerInfo;de.nodeType===1?de.textContent="":de.nodeType===9&&de.documentElement&&de.removeChild(de.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(n(163))}}catch(Te){An(c,c.return,Te)}if(i=c.sibling,i!==null){i.return=c.return,qe=i;break}qe=c.return}return He=x0,x0=!1,He}function fu(i,c,p){var v=c.updateQueue;if(v=v!==null?v.lastEffect:null,v!==null){var S=v=v.next;do{if((S.tag&i)===i){var E=S.destroy;S.destroy=void 0,E!==void 0&&Ug(c,p,E)}S=S.next}while(S!==v)}}function gf(i,c){if(c=c.updateQueue,c=c!==null?c.lastEffect:null,c!==null){var p=c=c.next;do{if((p.tag&i)===i){var v=p.create;p.destroy=v()}p=p.next}while(p!==c)}}function Vg(i){var c=i.ref;if(c!==null){var p=i.stateNode;switch(i.tag){case 5:i=p;break;default:i=p}typeof c=="function"?c(i):c.current=i}}function w0(i){var c=i.alternate;c!==null&&(i.alternate=null,w0(c)),i.child=null,i.deletions=null,i.sibling=null,i.tag===5&&(c=i.stateNode,c!==null&&(delete c[ia],delete c[tu],delete c[ag],delete c[oA],delete c[iA])),i.stateNode=null,i.return=null,i.dependencies=null,i.memoizedProps=null,i.memoizedState=null,i.pendingProps=null,i.stateNode=null,i.updateQueue=null}function S0(i){return i.tag===5||i.tag===3||i.tag===4}function C0(i){e:for(;;){for(;i.sibling===null;){if(i.return===null||S0(i.return))return null;i=i.return}for(i.sibling.return=i.return,i=i.sibling;i.tag!==5&&i.tag!==6&&i.tag!==18;){if(i.flags&2||i.child===null||i.tag===4)continue e;i.child.return=i,i=i.child}if(!(i.flags&2))return i.stateNode}}function qg(i,c,p){var v=i.tag;if(v===5||v===6)i=i.stateNode,c?p.nodeType===8?p.parentNode.insertBefore(i,c):p.insertBefore(i,c):(p.nodeType===8?(c=p.parentNode,c.insertBefore(i,p)):(c=p,c.appendChild(i)),p=p._reactRootContainer,p!=null||c.onclick!==null||(c.onclick=Kd));else if(v!==4&&(i=i.child,i!==null))for(qg(i,c,p),i=i.sibling;i!==null;)qg(i,c,p),i=i.sibling}function Hg(i,c,p){var v=i.tag;if(v===5||v===6)i=i.stateNode,c?p.insertBefore(i,c):p.appendChild(i);else if(v!==4&&(i=i.child,i!==null))for(Hg(i,c,p),i=i.sibling;i!==null;)Hg(i,c,p),i=i.sibling}var dr=null,Ds=!1;function po(i,c,p){for(p=p.child;p!==null;)j0(i,c,p),p=p.sibling}function j0(i,c,p){if(Gt&&typeof Gt.onCommitFiberUnmount=="function")try{Gt.onCommitFiberUnmount(wt,p)}catch{}switch(p.tag){case 5:xr||El(p,c);case 6:var v=dr,S=Ds;dr=null,po(i,c,p),dr=v,Ds=S,dr!==null&&(Ds?(i=dr,p=p.stateNode,i.nodeType===8?i.parentNode.removeChild(p):i.removeChild(p)):dr.removeChild(p.stateNode));break;case 18:dr!==null&&(Ds?(i=dr,p=p.stateNode,i.nodeType===8?sg(i.parentNode,p):i.nodeType===1&&sg(i,p),qc(i)):sg(dr,p.stateNode));break;case 4:v=dr,S=Ds,dr=p.stateNode.containerInfo,Ds=!0,po(i,c,p),dr=v,Ds=S;break;case 0:case 11:case 14:case 15:if(!xr&&(v=p.updateQueue,v!==null&&(v=v.lastEffect,v!==null))){S=v=v.next;do{var E=S,R=E.destroy;E=E.tag,R!==void 0&&((E&2)!==0||(E&4)!==0)&&Ug(p,c,R),S=S.next}while(S!==v)}po(i,c,p);break;case 1:if(!xr&&(El(p,c),v=p.stateNode,typeof v.componentWillUnmount=="function"))try{v.props=p.memoizedProps,v.state=p.memoizedState,v.componentWillUnmount()}catch(L){An(p,c,L)}po(i,c,p);break;case 21:po(i,c,p);break;case 22:p.mode&1?(xr=(v=xr)||p.memoizedState!==null,po(i,c,p),xr=v):po(i,c,p);break;default:po(i,c,p)}}function k0(i){var c=i.updateQueue;if(c!==null){i.updateQueue=null;var p=i.stateNode;p===null&&(p=i.stateNode=new CA),c.forEach(function(v){var S=IA.bind(null,i,v);p.has(v)||(p.add(v),v.then(S,S))})}}function Fs(i,c){var p=c.deletions;if(p!==null)for(var v=0;vS&&(S=R),v&=~E}if(v=S,v=un()-v,v=(120>v?120:480>v?480:1080>v?1080:1920>v?1920:3e3>v?3e3:4320>v?4320:1960*EA(v/1960))-v,10i?16:i,mo===null)var v=!1;else{if(i=mo,mo=null,wf=0,(Jt&6)!==0)throw Error(n(331));var S=Jt;for(Jt|=4,qe=i.current;qe!==null;){var E=qe,R=E.child;if((qe.flags&16)!==0){var L=E.deletions;if(L!==null){for(var W=0;Wun()-Gg?xi(i,0):Wg|=p),Kr(i,c)}function L0(i,c){c===0&&((i.mode&1)===0?c=1:(c=_d,_d<<=1,(_d&130023424)===0&&(_d=4194304)));var p=Rr();i=Na(i,c),i!==null&&($c(i,c,p),Kr(i,p))}function PA(i){var c=i.memoizedState,p=0;c!==null&&(p=c.retryLane),L0(i,p)}function IA(i,c){var p=0;switch(i.tag){case 13:var v=i.stateNode,S=i.memoizedState;S!==null&&(p=S.retryLane);break;case 19:v=i.stateNode;break;default:throw Error(n(314))}v!==null&&v.delete(c),L0(i,p)}var $0;$0=function(i,c,p){if(i!==null)if(i.memoizedProps!==c.pendingProps||Ur.current)qr=!0;else{if((i.lanes&p)===0&&(c.flags&128)===0)return qr=!1,xA(i,c,p);qr=(i.flags&131072)!==0}else qr=!1,En&&(c.flags&1048576)!==0&&yS(c,Zd,c.index);switch(c.lanes=0,c.tag){case 2:var v=c.type;hf(i,c),i=c.pendingProps;var S=vl(c,vr.current);Cl(c,p),S=kg(null,c,v,i,S,p);var E=Eg();return c.flags|=1,typeof S=="object"&&S!==null&&typeof S.render=="function"&&S.$$typeof===void 0?(c.tag=1,c.memoizedState=null,c.updateQueue=null,Vr(v)?(E=!0,Jd(c)):E=!1,c.memoizedState=S.state!==null&&S.state!==void 0?S.state:null,yg(c),S.updater=ff,c.stateNode=S,S._reactInternals=c,Pg(c,v,i,p),c=Dg(null,c,v,!0,E,p)):(c.tag=0,En&&E&&lg(c),_r(null,c,S,p),c=c.child),c;case 16:v=c.elementType;e:{switch(hf(i,c),i=c.pendingProps,S=v._init,v=S(v._payload),c.type=v,S=c.tag=AA(v),i=As(v,i),S){case 0:c=Ag(null,c,v,i,p);break e;case 1:c=d0(null,c,v,i,p);break e;case 11:c=o0(null,c,v,i,p);break e;case 14:c=i0(null,c,v,As(v.type,i),p);break e}throw Error(n(306,v,""))}return c;case 0:return v=c.type,S=c.pendingProps,S=c.elementType===v?S:As(v,S),Ag(i,c,v,S,p);case 1:return v=c.type,S=c.pendingProps,S=c.elementType===v?S:As(v,S),d0(i,c,v,S,p);case 3:e:{if(f0(c),i===null)throw Error(n(387));v=c.pendingProps,E=c.memoizedState,S=E.element,NS(i,c),sf(c,v,null,p);var R=c.memoizedState;if(v=R.element,E.isDehydrated)if(E={element:v,isDehydrated:!1,cache:R.cache,pendingSuspenseBoundaries:R.pendingSuspenseBoundaries,transitions:R.transitions},c.updateQueue.baseState=E,c.memoizedState=E,c.flags&256){S=kl(Error(n(423)),c),c=p0(i,c,v,p,S);break e}else if(v!==S){S=kl(Error(n(424)),c),c=p0(i,c,v,p,S);break e}else for(as=oo(c.stateNode.containerInfo.firstChild),ss=c,En=!0,Os=null,p=kS(c,null,v,p),c.child=p;p;)p.flags=p.flags&-3|4096,p=p.sibling;else{if(xl(),v===S){c=Ma(i,c,p);break e}_r(i,c,v,p)}c=c.child}return c;case 5:return _S(c),i===null&&dg(c),v=c.type,S=c.pendingProps,E=i!==null?i.memoizedProps:null,R=S.children,ng(v,S)?R=null:E!==null&&ng(v,E)&&(c.flags|=32),u0(i,c),_r(i,c,R,p),c.child;case 6:return i===null&&dg(c),null;case 13:return h0(i,c,p);case 4:return bg(c,c.stateNode.containerInfo),v=c.pendingProps,i===null?c.child=wl(c,null,v,p):_r(i,c,v,p),c.child;case 11:return v=c.type,S=c.pendingProps,S=c.elementType===v?S:As(v,S),o0(i,c,v,S,p);case 7:return _r(i,c,c.pendingProps,p),c.child;case 8:return _r(i,c,c.pendingProps.children,p),c.child;case 12:return _r(i,c,c.pendingProps.children,p),c.child;case 10:e:{if(v=c.type._context,S=c.pendingProps,E=c.memoizedProps,R=S.value,gn(tf,v._currentValue),v._currentValue=R,E!==null)if(Is(E.value,R)){if(E.children===S.children&&!Ur.current){c=Ma(i,c,p);break e}}else for(E=c.child,E!==null&&(E.return=c);E!==null;){var L=E.dependencies;if(L!==null){R=E.child;for(var W=L.firstContext;W!==null;){if(W.context===v){if(E.tag===1){W=Ta(-1,p&-p),W.tag=2;var me=E.updateQueue;if(me!==null){me=me.shared;var Ce=me.pending;Ce===null?W.next=W:(W.next=Ce.next,Ce.next=W),me.pending=W}}E.lanes|=p,W=E.alternate,W!==null&&(W.lanes|=p),gg(E.return,p,c),L.lanes|=p;break}W=W.next}}else if(E.tag===10)R=E.type===c.type?null:E.child;else if(E.tag===18){if(R=E.return,R===null)throw Error(n(341));R.lanes|=p,L=R.alternate,L!==null&&(L.lanes|=p),gg(R,p,c),R=E.sibling}else R=E.child;if(R!==null)R.return=E;else for(R=E;R!==null;){if(R===c){R=null;break}if(E=R.sibling,E!==null){E.return=R.return,R=E;break}R=R.return}E=R}_r(i,c,S.children,p),c=c.child}return c;case 9:return S=c.type,v=c.pendingProps.children,Cl(c,p),S=xs(S),v=v(S),c.flags|=1,_r(i,c,v,p),c.child;case 14:return v=c.type,S=As(v,c.pendingProps),S=As(v.type,S),i0(i,c,v,S,p);case 15:return l0(i,c,c.type,c.pendingProps,p);case 17:return v=c.type,S=c.pendingProps,S=c.elementType===v?S:As(v,S),hf(i,c),c.tag=1,Vr(v)?(i=!0,Jd(c)):i=!1,Cl(c,p),XS(c,v,S),Pg(c,v,S,p),Dg(null,c,v,!0,i,p);case 19:return g0(i,c,p);case 22:return c0(i,c,p)}throw Error(n(156,c.tag))};function B0(i,c){return Hn(i,c)}function OA(i,c,p,v){this.tag=i,this.key=p,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=c,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=v,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Cs(i,c,p,v){return new OA(i,c,p,v)}function nv(i){return i=i.prototype,!(!i||!i.isReactComponent)}function AA(i){if(typeof i=="function")return nv(i)?1:0;if(i!=null){if(i=i.$$typeof,i===B)return 11;if(i===oe)return 14}return 2}function yo(i,c){var p=i.alternate;return p===null?(p=Cs(i.tag,c,i.key,i.mode),p.elementType=i.elementType,p.type=i.type,p.stateNode=i.stateNode,p.alternate=i,i.alternate=p):(p.pendingProps=c,p.type=i.type,p.flags=0,p.subtreeFlags=0,p.deletions=null),p.flags=i.flags&14680064,p.childLanes=i.childLanes,p.lanes=i.lanes,p.child=i.child,p.memoizedProps=i.memoizedProps,p.memoizedState=i.memoizedState,p.updateQueue=i.updateQueue,c=i.dependencies,p.dependencies=c===null?null:{lanes:c.lanes,firstContext:c.firstContext},p.sibling=i.sibling,p.index=i.index,p.ref=i.ref,p}function kf(i,c,p,v,S,E){var R=2;if(v=i,typeof i=="function")nv(i)&&(R=1);else if(typeof i=="string")R=5;else e:switch(i){case A:return Si(p.children,S,E,c);case O:R=8,S|=8;break;case F:return i=Cs(12,p,c,S|2),i.elementType=F,i.lanes=E,i;case ce:return i=Cs(13,p,c,S),i.elementType=ce,i.lanes=E,i;case H:return i=Cs(19,p,c,S),i.elementType=H,i.lanes=E,i;case ne:return Ef(p,S,E,c);default:if(typeof i=="object"&&i!==null)switch(i.$$typeof){case z:R=10;break e;case Z:R=9;break e;case B:R=11;break e;case oe:R=14;break e;case Q:R=16,v=null;break e}throw Error(n(130,i==null?i:typeof i,""))}return c=Cs(R,p,c,S),c.elementType=i,c.type=v,c.lanes=E,c}function Si(i,c,p,v){return i=Cs(7,i,v,c),i.lanes=p,i}function Ef(i,c,p,v){return i=Cs(22,i,v,c),i.elementType=ne,i.lanes=p,i.stateNode={isHidden:!1},i}function rv(i,c,p){return i=Cs(6,i,null,c),i.lanes=p,i}function sv(i,c,p){return c=Cs(4,i.children!==null?i.children:[],i.key,c),c.lanes=p,c.stateNode={containerInfo:i.containerInfo,pendingChildren:null,implementation:i.implementation},c}function DA(i,c,p,v,S){this.tag=c,this.containerInfo=i,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Rm(0),this.expirationTimes=Rm(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Rm(0),this.identifierPrefix=v,this.onRecoverableError=S,this.mutableSourceEagerHydrationData=null}function av(i,c,p,v,S,E,R,L,W){return i=new DA(i,c,p,L,W),c===1?(c=1,E===!0&&(c|=8)):c=0,E=Cs(3,null,null,c),i.current=E,E.stateNode=i,E.memoizedState={element:v,isDehydrated:p,cache:null,transitions:null,pendingSuspenseBoundaries:null},yg(E),i}function FA(i,c,p){var v=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}return e(),fv.exports=TD(),fv.exports}var iC;function MD(){if(iC)return Of;iC=1;var e=DE();return Of.createRoot=e.createRoot,Of.hydrateRoot=e.hydrateRoot,Of}var _D=MD();const RD=pd(_D),PD=(...e)=>{console?.warn&&(Pi(e[0])&&(e[0]=`react-i18next:: ${e[0]}`),console.warn(...e))},lC={},Ay=(...e)=>{Pi(e[0])&&lC[e[0]]||(Pi(e[0])&&(lC[e[0]]=new Date),PD(...e))},FE=(e,t)=>()=>{if(e.isInitialized)t();else{const n=()=>{setTimeout(()=>{e.off("initialized",n)},0),t()};e.on("initialized",n)}},cC=(e,t,n)=>{e.loadNamespaces(t,FE(e,n))},uC=(e,t,n,r)=>{Pi(n)&&(n=[n]),n.forEach(s=>{e.options.ns.indexOf(s)<0&&e.options.ns.push(s)}),e.loadLanguages(t,FE(e,r))},ID=(e,t,n={})=>!t.languages||!t.languages.length?(Ay("i18n.languages were undefined or empty",t.languages),!0):t.hasLoadedNamespace(e,{lng:n.lng,precheck:(r,s)=>{if(n.bindI18n?.indexOf("languageChanging")>-1&&r.services.backendConnector.backend&&r.isLanguageChangingTo&&!s(r.isLanguageChangingTo,e))return!1}}),Pi=e=>typeof e=="string",OD=e=>typeof e=="object"&&e!==null,AD=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,DD={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"},FD=e=>DD[e],LD=e=>e.replace(AD,FD);let Dy={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:LD};const $D=(e={})=>{Dy={...Dy,...e}},BD=()=>Dy;let LE;const zD=e=>{LE=e},UD=()=>LE,VD={type:"3rdParty",init(e){$D(e.options.react),zD(e)}},$E=y.createContext();class qD{constructor(){this.usedNamespaces={}}addUsedNamespaces(t){t.forEach(n=>{this.usedNamespaces[n]??=!0})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}const HD=(e,t)=>{const n=y.useRef();return y.useEffect(()=>{n.current=e},[e,t]),n.current},BE=(e,t,n,r)=>e.getFixedT(t,n,r),KD=(e,t,n,r)=>y.useCallback(BE(e,t,n,r),[e,t,n,r]),Fe=(e,t={})=>{const{i18n:n}=t,{i18n:r,defaultNS:s}=y.useContext($E)||{},o=n||r||UD();if(o&&!o.reportNamespaces&&(o.reportNamespaces=new qD),!o){Ay("You will need to pass in an i18next instance by using initReactI18next");const _=(M,A)=>Pi(A)?A:OD(A)&&Pi(A.defaultValue)?A.defaultValue:Array.isArray(M)?M[M.length-1]:M,I=[_,{},!1];return I.t=_,I.i18n={},I.ready=!1,I}o.options.react?.wait&&Ay("It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");const l={...BD(),...o.options.react,...t},{useSuspense:u,keyPrefix:d}=l;let f=s||o.options?.defaultNS;f=Pi(f)?[f]:f||["translation"],o.reportNamespaces.addUsedNamespaces?.(f);const h=(o.isInitialized||o.initializedStoreOnce)&&f.every(_=>ID(_,o,l)),m=KD(o,t.lng||null,l.nsMode==="fallback"?f:f[0],d),g=()=>m,x=()=>BE(o,t.lng||null,l.nsMode==="fallback"?f:f[0],d),[b,w]=y.useState(g);let C=f.join();t.lng&&(C=`${t.lng}${C}`);const k=HD(C),N=y.useRef(!0);y.useEffect(()=>{const{bindI18n:_,bindI18nStore:I}=l;N.current=!0,!h&&!u&&(t.lng?uC(o,t.lng,f,()=>{N.current&&w(x)}):cC(o,f,()=>{N.current&&w(x)})),h&&k&&k!==C&&N.current&&w(x);const M=()=>{N.current&&w(x)};return _&&o?.on(_,M),I&&o?.store.on(I,M),()=>{N.current=!1,o&&_?.split(" ").forEach(A=>o.off(A,M)),I&&o&&I.split(" ").forEach(A=>o.store.off(A,M))}},[o,C]),y.useEffect(()=>{N.current&&h&&w(g)},[o,d,h]);const T=[b,o,h];if(T.t=b,T.i18n=o,T.ready=h,h||!h&&!u)return T;throw new Promise(_=>{t.lng?uC(o,t.lng,f,()=>_()):cC(o,f,()=>_())})};function WD({i18n:e,defaultNS:t,children:n}){const r=y.useMemo(()=>({i18n:e,defaultNS:t}),[e,t]);return y.createElement($E.Provider,{value:r},n)}var mc=DE();const zE=pd(mc),GD=wE({__proto__:null,default:zE},[mc]);/** + * @remix-run/router v1.18.0 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function On(){return On=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u")throw new Error(t)}function ec(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function QD(){return Math.random().toString(36).substr(2,8)}function fC(e,t){return{usr:e.state,key:e.key,idx:t}}function Zu(e,t,n,r){return n===void 0&&(n=null),On({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof t=="string"?qo(t):t,{state:n,key:t&&t.key||r||QD()})}function Fi(e){let{pathname:t="/",search:n="",hash:r=""}=e;return n&&n!=="?"&&(t+=n.charAt(0)==="?"?n:"?"+n),r&&r!=="#"&&(t+=r.charAt(0)==="#"?r:"#"+r),t}function qo(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substr(n),e=e.substr(0,n));let r=e.indexOf("?");r>=0&&(t.search=e.substr(r),e=e.substr(0,r)),e&&(t.pathname=e)}return t}function YD(e,t,n,r){r===void 0&&(r={});let{window:s=document.defaultView,v5Compat:o=!1}=r,l=s.history,u=Jn.Pop,d=null,f=h();f==null&&(f=0,l.replaceState(On({},l.state,{idx:f}),""));function h(){return(l.state||{idx:null}).idx}function m(){u=Jn.Pop;let C=h(),k=C==null?null:C-f;f=C,d&&d({action:u,location:w.location,delta:k})}function g(C,k){u=Jn.Push;let N=Zu(w.location,C,k);f=h()+1;let T=fC(N,f),_=w.createHref(N);try{l.pushState(T,"",_)}catch(I){if(I instanceof DOMException&&I.name==="DataCloneError")throw I;s.location.assign(_)}o&&d&&d({action:u,location:w.location,delta:1})}function x(C,k){u=Jn.Replace;let N=Zu(w.location,C,k);f=h();let T=fC(N,f),_=w.createHref(N);l.replaceState(T,"",_),o&&d&&d({action:u,location:w.location,delta:0})}function b(C){let k=s.location.origin!=="null"?s.location.origin:s.location.href,N=typeof C=="string"?C:Fi(C);return N=N.replace(/ $/,"%20"),At(k,"No window.location.(origin|href) available to create URL for href: "+N),new URL(N,k)}let w={get action(){return u},get location(){return e(s,l)},listen(C){if(d)throw new Error("A history only accepts one active listener");return s.addEventListener(dC,m),d=C,()=>{s.removeEventListener(dC,m),d=null}},createHref(C){return t(s,C)},createURL:b,encodeLocation(C){let k=b(C);return{pathname:k.pathname,search:k.search,hash:k.hash}},push:g,replace:x,go(C){return l.go(C)}};return w}var vn;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(vn||(vn={}));const ZD=new Set(["lazy","caseSensitive","path","id","index","children"]);function XD(e){return e.index===!0}function Xu(e,t,n,r){return n===void 0&&(n=[]),r===void 0&&(r={}),e.map((s,o)=>{let l=[...n,String(o)],u=typeof s.id=="string"?s.id:l.join("-");if(At(s.index!==!0||!s.children,"Cannot specify children on an index route"),At(!r[u],'Found a route id collision on id "'+u+`". Route id's must be globally unique within Data Router usages`),XD(s)){let d=On({},s,t(s),{id:u});return r[u]=d,d}else{let d=On({},s,t(s),{id:u,children:void 0});return r[u]=d,s.children&&(d.children=Xu(s.children,t,l,r)),d}})}function Ei(e,t,n){return n===void 0&&(n="/"),hp(e,t,n,!1)}function hp(e,t,n,r){let s=typeof t=="string"?qo(t):t,o=$a(s.pathname||"/",n);if(o==null)return null;let l=UE(e);t2(l);let u=null;for(let d=0;u==null&&d{let d={relativePath:u===void 0?o.path||"":u,caseSensitive:o.caseSensitive===!0,childrenIndex:l,route:o};d.relativePath.startsWith("/")&&(At(d.relativePath.startsWith(r),'Absolute route path "'+d.relativePath+'" nested under path '+('"'+r+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),d.relativePath=d.relativePath.slice(r.length));let f=La([r,d.relativePath]),h=n.concat(d);o.children&&o.children.length>0&&(At(o.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+f+'".')),UE(o.children,t,h,f)),!(o.path==null&&!o.index)&&t.push({path:f,score:l2(f,o.index),routesMeta:h})};return e.forEach((o,l)=>{var u;if(o.path===""||!((u=o.path)!=null&&u.includes("?")))s(o,l);else for(let d of VE(o.path))s(o,l,d)}),t}function VE(e){let t=e.split("/");if(t.length===0)return[];let[n,...r]=t,s=n.endsWith("?"),o=n.replace(/\?$/,"");if(r.length===0)return s?[o,""]:[o];let l=VE(r.join("/")),u=[];return u.push(...l.map(d=>d===""?o:[o,d].join("/"))),s&&u.push(...l),u.map(d=>e.startsWith("/")&&d===""?"/":d)}function t2(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:c2(t.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}const n2=/^:[\w-]+$/,r2=3,s2=2,a2=1,o2=10,i2=-2,pC=e=>e==="*";function l2(e,t){let n=e.split("/"),r=n.length;return n.some(pC)&&(r+=i2),t&&(r+=s2),n.filter(s=>!pC(s)).reduce((s,o)=>s+(n2.test(o)?r2:o===""?a2:o2),r)}function c2(e,t){return e.length===t.length&&e.slice(0,-1).every((r,s)=>r===t[s])?e[e.length-1]-t[t.length-1]:0}function u2(e,t,n){n===void 0&&(n=!1);let{routesMeta:r}=e,s={},o="/",l=[];for(let u=0;u{let{paramName:g,isOptional:x}=h;if(g==="*"){let w=u[m]||"";l=o.slice(0,o.length-w.length).replace(/(.)\/+$/,"$1")}const b=u[m];return x&&!b?f[g]=void 0:f[g]=(b||"").replace(/%2F/g,"/"),f},{}),pathname:o,pathnameBase:l,pattern:e}}function d2(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!0),ec(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let r=[],s="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(l,u,d)=>(r.push({paramName:u,isOptional:d!=null}),d?"/?([^\\/]+)?":"/([^\\/]+)"));return e.endsWith("*")?(r.push({paramName:"*"}),s+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?s+="\\/*$":e!==""&&e!=="/"&&(s+="(?:(?=\\/|$))"),[new RegExp(s,t?void 0:"i"),r]}function f2(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return ec(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+t+").")),e}}function $a(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,r=e.charAt(n);return r&&r!=="/"?null:e.slice(n)||"/"}function p2(e,t){t===void 0&&(t="/");let{pathname:n,search:r="",hash:s=""}=typeof e=="string"?qo(e):e;return{pathname:n?n.startsWith("/")?n:h2(n,t):t,search:g2(r),hash:v2(s)}}function h2(e,t){let n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(s=>{s===".."?n.length>1&&n.pop():s!=="."&&n.push(s)}),n.length>1?n.join("/"):"/"}function mv(e,t,n,r){return"Cannot include a '"+e+"' character in a manually specified "+("`to."+t+"` field ["+JSON.stringify(r)+"]. Please separate it out to the ")+("`to."+n+"` field. Alternatively you may provide the full path as ")+'a string in and the router will parse it for you.'}function qE(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function bh(e,t){let n=qE(e);return t?n.map((r,s)=>s===n.length-1?r.pathname:r.pathnameBase):n.map(r=>r.pathnameBase)}function xh(e,t,n,r){r===void 0&&(r=!1);let s;typeof e=="string"?s=qo(e):(s=On({},e),At(!s.pathname||!s.pathname.includes("?"),mv("?","pathname","search",s)),At(!s.pathname||!s.pathname.includes("#"),mv("#","pathname","hash",s)),At(!s.search||!s.search.includes("#"),mv("#","search","hash",s)));let o=e===""||s.pathname==="",l=o?"/":s.pathname,u;if(l==null)u=n;else{let m=t.length-1;if(!r&&l.startsWith("..")){let g=l.split("/");for(;g[0]==="..";)g.shift(),m-=1;s.pathname=g.join("/")}u=m>=0?t[m]:"/"}let d=p2(s,u),f=l&&l!=="/"&&l.endsWith("/"),h=(o||l===".")&&n.endsWith("/");return!d.pathname.endsWith("/")&&(f||h)&&(d.pathname+="/"),d}const La=e=>e.join("/").replace(/\/\/+/g,"/"),m2=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),g2=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,v2=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;class Wb{constructor(t,n,r,s){s===void 0&&(s=!1),this.status=t,this.statusText=n||"",this.internal=s,r instanceof Error?(this.data=r.toString(),this.error=r):this.data=r}}function wh(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const HE=["post","put","patch","delete"],y2=new Set(HE),b2=["get",...HE],x2=new Set(b2),w2=new Set([301,302,303,307,308]),S2=new Set([307,308]),gv={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},C2={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},yu={state:"unblocked",proceed:void 0,reset:void 0,location:void 0},Gb=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,j2=e=>({hasErrorBoundary:!!e.hasErrorBoundary}),KE="remix-router-transitions";function k2(e){const t=e.window?e.window:typeof window<"u"?window:void 0,n=typeof t<"u"&&typeof t.document<"u"&&typeof t.document.createElement<"u",r=!n;At(e.routes.length>0,"You must provide a non-empty routes array to createRouter");let s;if(e.mapRouteProperties)s=e.mapRouteProperties;else if(e.detectErrorBoundary){let G=e.detectErrorBoundary;s=te=>({hasErrorBoundary:G(te)})}else s=j2;let o={},l=Xu(e.routes,s,void 0,o),u,d=e.basename||"/",f=e.unstable_dataStrategy||_2,h=e.unstable_patchRoutesOnMiss,m=On({v7_fetcherPersist:!1,v7_normalizeFormMethod:!1,v7_partialHydration:!1,v7_prependBasename:!1,v7_relativeSplatPath:!1,v7_skipActionErrorRevalidation:!1},e.future),g=null,x=new Set,b=null,w=null,C=null,k=e.hydrationData!=null,N=Ei(l,e.history.location,d),T=null;if(N==null&&!h){let G=Pr(404,{pathname:e.history.location.pathname}),{matches:te,route:he}=CC(l);N=te,T={[he.id]:G}}N&&h&&!e.hydrationData&&oi(N,l,e.history.location.pathname).active&&(N=null);let _;if(!N)_=!1,N=[];else if(N.some(G=>G.route.lazy))_=!1;else if(!N.some(G=>G.route.loader))_=!0;else if(m.v7_partialHydration){let G=e.hydrationData?e.hydrationData.loaderData:null,te=e.hydrationData?e.hydrationData.errors:null,he=be=>be.route.loader?typeof be.route.loader=="function"&&be.route.loader.hydrate===!0?!1:G&&G[be.route.id]!==void 0||te&&te[be.route.id]!==void 0:!0;if(te){let be=N.findIndex($e=>te[$e.route.id]!==void 0);_=N.slice(0,be+1).every(he)}else _=N.every(he)}else _=e.hydrationData!=null;let I,M={historyAction:e.history.action,location:e.history.location,matches:N,initialized:_,navigation:gv,restoreScrollPosition:e.hydrationData!=null?!1:null,preventScrollReset:!1,revalidation:"idle",loaderData:e.hydrationData&&e.hydrationData.loaderData||{},actionData:e.hydrationData&&e.hydrationData.actionData||null,errors:e.hydrationData&&e.hydrationData.errors||T,fetchers:new Map,blockers:new Map},A=Jn.Pop,O=!1,F,z=!1,Z=new Map,B=null,ce=!1,H=!1,oe=[],Q=[],ne=new Map,V=0,K=-1,U=new Map,D=new Set,J=new Map,ae=new Map,ee=new Set,ie=new Map,ue=new Map,j=new Map,P=!1;function pe(){if(g=e.history.listen(G=>{let{action:te,location:he,delta:be}=G;if(P){P=!1;return}ec(ue.size===0||be!=null,"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.");let $e=zr({currentLocation:M.location,nextLocation:he,historyAction:te});if($e&&be!=null){P=!0,e.history.go(be*-1),ur($e,{state:"blocked",location:he,proceed(){ur($e,{state:"proceeding",proceed:void 0,reset:void 0,location:he}),e.history.go(be)},reset(){let Ze=new Map(M.blockers);Ze.set($e,yu),Je({blockers:Ze})}});return}return Mn(te,he)}),n){V2(t,Z);let G=()=>q2(t,Z);t.addEventListener("pagehide",G),B=()=>t.removeEventListener("pagehide",G)}return M.initialized||Mn(Jn.Pop,M.location,{initialHydration:!0}),I}function xe(){g&&g(),B&&B(),x.clear(),F&&F.abort(),M.fetchers.forEach((G,te)=>Et(te)),M.blockers.forEach((G,te)=>gr(te))}function rt(G){return x.add(G),()=>x.delete(G)}function Je(G,te){te===void 0&&(te={}),M=On({},M,G);let he=[],be=[];m.v7_fetcherPersist&&M.fetchers.forEach(($e,Ze)=>{$e.state==="idle"&&(ee.has(Ze)?be.push(Ze):he.push(Ze))}),[...x].forEach($e=>$e(M,{deletedFetchers:be,unstable_viewTransitionOpts:te.viewTransitionOpts,unstable_flushSync:te.flushSync===!0})),m.v7_fetcherPersist&&(he.forEach($e=>M.fetchers.delete($e)),be.forEach($e=>Et($e)))}function nt(G,te,he){var be,$e;let{flushSync:Ze}=he===void 0?{}:he,lt=M.actionData!=null&&M.navigation.formMethod!=null&&zs(M.navigation.formMethod)&&M.navigation.state==="loading"&&((be=G.state)==null?void 0:be._isRedirect)!==!0,Ae;te.actionData?Object.keys(te.actionData).length>0?Ae=te.actionData:Ae=null:lt?Ae=M.actionData:Ae=null;let Nt=te.loaderData?wC(M.loaderData,te.loaderData,te.matches||[],te.errors):M.loaderData,Xe=M.blockers;Xe.size>0&&(Xe=new Map(Xe),Xe.forEach((tn,sn)=>Xe.set(sn,yu)));let st=O===!0||M.navigation.formMethod!=null&&zs(M.navigation.formMethod)&&(($e=G.state)==null?void 0:$e._isRedirect)!==!0;u&&(l=u,u=void 0),ce||A===Jn.Pop||(A===Jn.Push?e.history.push(G,G.state):A===Jn.Replace&&e.history.replace(G,G.state));let en;if(A===Jn.Pop){let tn=Z.get(M.location.pathname);tn&&tn.has(G.pathname)?en={currentLocation:M.location,nextLocation:G}:Z.has(G.pathname)&&(en={currentLocation:G,nextLocation:M.location})}else if(z){let tn=Z.get(M.location.pathname);tn?tn.add(G.pathname):(tn=new Set([G.pathname]),Z.set(M.location.pathname,tn)),en={currentLocation:M.location,nextLocation:G}}Je(On({},te,{actionData:Ae,loaderData:Nt,historyAction:A,location:G,initialized:!0,navigation:gv,revalidation:"idle",restoreScrollPosition:Dc(G,te.matches||M.matches),preventScrollReset:st,blockers:Xe}),{viewTransitionOpts:en,flushSync:Ze===!0}),A=Jn.Pop,O=!1,z=!1,ce=!1,H=!1,oe=[],Q=[]}async function qt(G,te){if(typeof G=="number"){e.history.go(G);return}let he=Fy(M.location,M.matches,d,m.v7_prependBasename,G,m.v7_relativeSplatPath,te?.fromRouteId,te?.relative),{path:be,submission:$e,error:Ze}=hC(m.v7_normalizeFormMethod,!1,he,te),lt=M.location,Ae=Zu(M.location,be,te&&te.state);Ae=On({},Ae,e.history.encodeLocation(Ae));let Nt=te&&te.replace!=null?te.replace:void 0,Xe=Jn.Push;Nt===!0?Xe=Jn.Replace:Nt===!1||$e!=null&&zs($e.formMethod)&&$e.formAction===M.location.pathname+M.location.search&&(Xe=Jn.Replace);let st=te&&"preventScrollReset"in te?te.preventScrollReset===!0:void 0,en=(te&&te.unstable_flushSync)===!0,tn=zr({currentLocation:lt,nextLocation:Ae,historyAction:Xe});if(tn){ur(tn,{state:"blocked",location:Ae,proceed(){ur(tn,{state:"proceeding",proceed:void 0,reset:void 0,location:Ae}),qt(G,te)},reset(){let sn=new Map(M.blockers);sn.set(tn,yu),Je({blockers:sn})}});return}return await Mn(Xe,Ae,{submission:$e,pendingError:Ze,preventScrollReset:st,replace:te&&te.replace,enableViewTransition:te&&te.unstable_viewTransition,flushSync:en})}function qn(){if(_e(),Je({revalidation:"loading"}),M.navigation.state!=="submitting"){if(M.navigation.state==="idle"){Mn(M.historyAction,M.location,{startUninterruptedRevalidation:!0});return}Mn(A||M.historyAction,M.navigation.location,{overrideNavigation:M.navigation})}}async function Mn(G,te,he){F&&F.abort(),F=null,A=G,ce=(he&&he.startUninterruptedRevalidation)===!0,Nd(M.location,M.matches),O=(he&&he.preventScrollReset)===!0,z=(he&&he.enableViewTransition)===!0;let be=u||l,$e=he&&he.overrideNavigation,Ze=Ei(be,te,d),lt=(he&&he.flushSync)===!0,Ae=oi(Ze,be,te.pathname);if(Ae.active&&Ae.matches&&(Ze=Ae.matches),!Ze){let{error:Wt,notFoundMatches:Hn,route:Rn}=Tr(te.pathname);nt(te,{matches:Hn,loaderData:{},errors:{[Rn.id]:Wt}},{flushSync:lt});return}if(M.initialized&&!H&&D2(M.location,te)&&!(he&&he.submission&&zs(he.submission.formMethod))){nt(te,{matches:Ze},{flushSync:lt});return}F=new AbortController;let Nt=_l(e.history,te,F.signal,he&&he.submission),Xe;if(he&&he.pendingError)Xe=[Vl(Ze).route.id,{type:vn.error,error:he.pendingError}];else if(he&&he.submission&&zs(he.submission.formMethod)){let Wt=await tr(Nt,te,he.submission,Ze,Ae.active,{replace:he.replace,flushSync:lt});if(Wt.shortCircuited)return;if(Wt.pendingActionResult){let[Hn,Rn]=Wt.pendingActionResult;if(ls(Rn)&&wh(Rn.error)&&Rn.error.status===404){F=null,nt(te,{matches:Wt.matches,loaderData:{},errors:{[Hn]:Rn.error}});return}}Ze=Wt.matches||Ze,Xe=Wt.pendingActionResult,$e=vv(te,he.submission),lt=!1,Ae.active=!1,Nt=_l(e.history,Nt.url,Nt.signal)}let{shortCircuited:st,matches:en,loaderData:tn,errors:sn}=await yn(Nt,te,Ze,Ae.active,$e,he&&he.submission,he&&he.fetcherSubmission,he&&he.replace,he&&he.initialHydration===!0,lt,Xe);st||(F=null,nt(te,On({matches:en||Ze},SC(Xe),{loaderData:tn,errors:sn})))}async function tr(G,te,he,be,$e,Ze){Ze===void 0&&(Ze={}),_e();let lt=z2(te,he);if(Je({navigation:lt},{flushSync:Ze.flushSync===!0}),$e){let Xe=await ii(be,te.pathname,G.signal);if(Xe.type==="aborted")return{shortCircuited:!0};if(Xe.type==="error"){let{boundaryId:st,error:en}=es(te.pathname,Xe);return{matches:Xe.partialMatches,pendingActionResult:[st,{type:vn.error,error:en}]}}else if(Xe.matches)be=Xe.matches;else{let{notFoundMatches:st,error:en,route:tn}=Tr(te.pathname);return{matches:st,pendingActionResult:[tn.id,{type:vn.error,error:en}]}}}let Ae,Nt=Du(be,te);if(!Nt.route.action&&!Nt.route.lazy)Ae={type:vn.error,error:Pr(405,{method:G.method,pathname:te.pathname,routeId:Nt.route.id})};else if(Ae=(await fe("action",G,[Nt],be))[0],G.signal.aborted)return{shortCircuited:!0};if(Ti(Ae)){let Xe;return Ze&&Ze.replace!=null?Xe=Ze.replace:Xe=yC(Ae.response.headers.get("Location"),new URL(G.url),d)===M.location.pathname+M.location.search,await se(G,Ae,{submission:he,replace:Xe}),{shortCircuited:!0}}if(Ni(Ae))throw Pr(400,{type:"defer-action"});if(ls(Ae)){let Xe=Vl(be,Nt.route.id);return(Ze&&Ze.replace)!==!0&&(A=Jn.Push),{matches:be,pendingActionResult:[Xe.route.id,Ae]}}return{matches:be,pendingActionResult:[Nt.route.id,Ae]}}async function yn(G,te,he,be,$e,Ze,lt,Ae,Nt,Xe,st){let en=$e||vv(te,Ze),tn=Ze||lt||EC(en),sn=!ce&&(!m.v7_partialHydration||!Nt);if(be){if(sn){let Gt=$r(st);Je(On({navigation:en},Gt!==void 0?{actionData:Gt}:{}),{flushSync:Xe})}let wt=await ii(he,te.pathname,G.signal);if(wt.type==="aborted")return{shortCircuited:!0};if(wt.type==="error"){let{boundaryId:Gt,error:Mr}=es(te.pathname,wt);return{matches:wt.partialMatches,loaderData:{},errors:{[Gt]:Mr}}}else if(wt.matches)he=wt.matches;else{let{error:Gt,notFoundMatches:Mr,route:Ut}=Tr(te.pathname);return{matches:Mr,loaderData:{},errors:{[Ut.id]:Gt}}}}let Wt=u||l,[Hn,Rn]=mC(e.history,M,he,tn,te,m.v7_partialHydration&&Nt===!0,m.v7_skipActionErrorRevalidation,H,oe,Q,ee,J,D,Wt,d,st);if(ts(wt=>!(he&&he.some(Gt=>Gt.route.id===wt))||Hn&&Hn.some(Gt=>Gt.route.id===wt)),K=++V,Hn.length===0&&Rn.length===0){let wt=yt();return nt(te,On({matches:he,loaderData:{},errors:st&&ls(st[1])?{[st[0]]:st[1].error}:null},SC(st),wt?{fetchers:new Map(M.fetchers)}:{}),{flushSync:Xe}),{shortCircuited:!0}}if(sn){let wt={};if(!be){wt.navigation=en;let Gt=$r(st);Gt!==void 0&&(wt.actionData=Gt)}Rn.length>0&&(wt.fetchers=Br(Rn)),Je(wt,{flushSync:Xe})}Rn.forEach(wt=>{ne.has(wt.key)&&mn(wt.key),wt.controller&&ne.set(wt.key,wt.controller)});let ci=()=>Rn.forEach(wt=>mn(wt.key));F&&F.signal.addEventListener("abort",ci);let{loaderResults:aa,fetcherResults:un}=await Pe(M.matches,he,Hn,Rn,G);if(G.signal.aborted)return{shortCircuited:!0};F&&F.signal.removeEventListener("abort",ci),Rn.forEach(wt=>ne.delete(wt.key));let Xa=jC([...aa,...un]);if(Xa){if(Xa.idx>=Hn.length){let wt=Rn[Xa.idx-Hn.length].key;D.add(wt)}return await se(G,Xa.result,{replace:Ae}),{shortCircuited:!0}}let{loaderData:oa,errors:ns}=xC(M,he,Hn,aa,st,Rn,un,ie);ie.forEach((wt,Gt)=>{wt.subscribe(Mr=>{(Mr||wt.done)&&ie.delete(Gt)})}),m.v7_partialHydration&&Nt&&M.errors&&Object.entries(M.errors).filter(wt=>{let[Gt]=wt;return!Hn.some(Mr=>Mr.route.id===Gt)}).forEach(wt=>{let[Gt,Mr]=wt;ns=Object.assign(ns||{},{[Gt]:Mr})});let Sa=yt(),il=Bt(K),ui=Sa||il||Rn.length>0;return On({matches:he,loaderData:oa,errors:ns},ui?{fetchers:new Map(M.fetchers)}:{})}function $r(G){if(G&&!ls(G[1]))return{[G[0]]:G[1].data};if(M.actionData)return Object.keys(M.actionData).length===0?null:M.actionData}function Br(G){return G.forEach(te=>{let he=M.fetchers.get(te.key),be=bu(void 0,he?he.data:void 0);M.fetchers.set(te.key,be)}),new Map(M.fetchers)}function or(G,te,he,be){if(r)throw new Error("router.fetch() was called during the server render, but it shouldn't be. You are likely calling a useFetcher() method in the body of your component. Try moving it to a useEffect or a callback.");ne.has(G)&&mn(G);let $e=(be&&be.unstable_flushSync)===!0,Ze=u||l,lt=Fy(M.location,M.matches,d,m.v7_prependBasename,he,m.v7_relativeSplatPath,te,be?.relative),Ae=Ei(Ze,lt,d),Nt=oi(Ae,Ze,lt);if(Nt.active&&Nt.matches&&(Ae=Nt.matches),!Ae){Ie(G,te,Pr(404,{pathname:lt}),{flushSync:$e});return}let{path:Xe,submission:st,error:en}=hC(m.v7_normalizeFormMethod,!0,lt,be);if(en){Ie(G,te,en,{flushSync:$e});return}let tn=Du(Ae,Xe);if(O=(be&&be.preventScrollReset)===!0,st&&zs(st.formMethod)){Nr(G,te,Xe,tn,Ae,Nt.active,$e,st);return}J.set(G,{routeId:te,path:Xe}),$(G,te,Xe,tn,Ae,Nt.active,$e,st)}async function Nr(G,te,he,be,$e,Ze,lt,Ae){_e(),J.delete(G);function Nt(Ut){if(!Ut.route.action&&!Ut.route.lazy){let Ps=Pr(405,{method:Ae.formMethod,pathname:he,routeId:te});return Ie(G,te,Ps,{flushSync:lt}),!0}return!1}if(!Ze&&Nt(be))return;let Xe=M.fetchers.get(G);Ne(G,U2(Ae,Xe),{flushSync:lt});let st=new AbortController,en=_l(e.history,he,st.signal,Ae);if(Ze){let Ut=await ii($e,he,en.signal);if(Ut.type==="aborted")return;if(Ut.type==="error"){let{error:Ps}=es(he,Ut);Ie(G,te,Ps,{flushSync:lt});return}else if(Ut.matches){if($e=Ut.matches,be=Du($e,he),Nt(be))return}else{Ie(G,te,Pr(404,{pathname:he}),{flushSync:lt});return}}ne.set(G,st);let tn=V,Wt=(await fe("action",en,[be],$e))[0];if(en.signal.aborted){ne.get(G)===st&&ne.delete(G);return}if(m.v7_fetcherPersist&&ee.has(G)){if(Ti(Wt)||ls(Wt)){Ne(G,jo(void 0));return}}else{if(Ti(Wt))if(ne.delete(G),K>tn){Ne(G,jo(void 0));return}else return D.add(G),Ne(G,bu(Ae)),se(en,Wt,{fetcherSubmission:Ae});if(ls(Wt)){Ie(G,te,Wt.error);return}}if(Ni(Wt))throw Pr(400,{type:"defer-action"});let Hn=M.navigation.location||M.location,Rn=_l(e.history,Hn,st.signal),ci=u||l,aa=M.navigation.state!=="idle"?Ei(ci,M.navigation.location,d):M.matches;At(aa,"Didn't find any matches after fetcher action");let un=++V;U.set(G,un);let Xa=bu(Ae,Wt.data);M.fetchers.set(G,Xa);let[oa,ns]=mC(e.history,M,aa,Ae,Hn,!1,m.v7_skipActionErrorRevalidation,H,oe,Q,ee,J,D,ci,d,[be.route.id,Wt]);ns.filter(Ut=>Ut.key!==G).forEach(Ut=>{let Ps=Ut.key,Td=M.fetchers.get(Ps),Mm=bu(void 0,Td?Td.data:void 0);M.fetchers.set(Ps,Mm),ne.has(Ps)&&mn(Ps),Ut.controller&&ne.set(Ps,Ut.controller)}),Je({fetchers:new Map(M.fetchers)});let Sa=()=>ns.forEach(Ut=>mn(Ut.key));st.signal.addEventListener("abort",Sa);let{loaderResults:il,fetcherResults:ui}=await Pe(M.matches,aa,oa,ns,Rn);if(st.signal.aborted)return;st.signal.removeEventListener("abort",Sa),U.delete(G),ne.delete(G),ns.forEach(Ut=>ne.delete(Ut.key));let wt=jC([...il,...ui]);if(wt){if(wt.idx>=oa.length){let Ut=ns[wt.idx-oa.length].key;D.add(Ut)}return se(Rn,wt.result)}let{loaderData:Gt,errors:Mr}=xC(M,M.matches,oa,il,void 0,ns,ui,ie);if(M.fetchers.has(G)){let Ut=jo(Wt.data);M.fetchers.set(G,Ut)}Bt(un),M.navigation.state==="loading"&&un>K?(At(A,"Expected pending action"),F&&F.abort(),nt(M.navigation.location,{matches:aa,loaderData:Gt,errors:Mr,fetchers:new Map(M.fetchers)})):(Je({errors:Mr,loaderData:wC(M.loaderData,Gt,aa,Mr),fetchers:new Map(M.fetchers)}),H=!1)}async function $(G,te,he,be,$e,Ze,lt,Ae){let Nt=M.fetchers.get(G);Ne(G,bu(Ae,Nt?Nt.data:void 0),{flushSync:lt});let Xe=new AbortController,st=_l(e.history,he,Xe.signal);if(Ze){let Wt=await ii($e,he,st.signal);if(Wt.type==="aborted")return;if(Wt.type==="error"){let{error:Hn}=es(he,Wt);Ie(G,te,Hn,{flushSync:lt});return}else if(Wt.matches)$e=Wt.matches,be=Du($e,he);else{Ie(G,te,Pr(404,{pathname:he}),{flushSync:lt});return}}ne.set(G,Xe);let en=V,sn=(await fe("loader",st,[be],$e))[0];if(Ni(sn)&&(sn=await YE(sn,st.signal,!0)||sn),ne.get(G)===Xe&&ne.delete(G),!st.signal.aborted){if(ee.has(G)){Ne(G,jo(void 0));return}if(Ti(sn))if(K>en){Ne(G,jo(void 0));return}else{D.add(G),await se(st,sn);return}if(ls(sn)){Ie(G,te,sn.error);return}At(!Ni(sn),"Unhandled fetcher deferred data"),Ne(G,jo(sn.data))}}async function se(G,te,he){let{submission:be,fetcherSubmission:$e,replace:Ze}=he===void 0?{}:he;te.response.headers.has("X-Remix-Revalidate")&&(H=!0);let lt=te.response.headers.get("Location");At(lt,"Expected a Location header on the redirect Response"),lt=yC(lt,new URL(G.url),d);let Ae=Zu(M.location,lt,{_isRedirect:!0});if(n){let sn=!1;if(te.response.headers.has("X-Remix-Reload-Document"))sn=!0;else if(Gb.test(lt)){const Wt=e.history.createURL(lt);sn=Wt.origin!==t.location.origin||$a(Wt.pathname,d)==null}if(sn){Ze?t.location.replace(lt):t.location.assign(lt);return}}F=null;let Nt=Ze===!0?Jn.Replace:Jn.Push,{formMethod:Xe,formAction:st,formEncType:en}=M.navigation;!be&&!$e&&Xe&&st&&en&&(be=EC(M.navigation));let tn=be||$e;if(S2.has(te.response.status)&&tn&&zs(tn.formMethod))await Mn(Nt,Ae,{submission:On({},tn,{formAction:lt}),preventScrollReset:O});else{let sn=vv(Ae,be);await Mn(Nt,Ae,{overrideNavigation:sn,fetcherSubmission:$e,preventScrollReset:O})}}async function fe(G,te,he,be){try{let $e=await R2(f,G,te,he,be,o,s);return await Promise.all($e.map((Ze,lt)=>{if(L2(Ze)){let Ae=Ze.result;return{type:vn.redirect,response:O2(Ae,te,he[lt].route.id,be,d,m.v7_relativeSplatPath)}}return I2(Ze)}))}catch($e){return he.map(()=>({type:vn.error,error:$e}))}}async function Pe(G,te,he,be,$e){let[Ze,...lt]=await Promise.all([he.length?fe("loader",$e,he,te):[],...be.map(Ae=>{if(Ae.matches&&Ae.match&&Ae.controller){let Nt=_l(e.history,Ae.path,Ae.controller.signal);return fe("loader",Nt,[Ae.match],Ae.matches).then(Xe=>Xe[0])}else return Promise.resolve({type:vn.error,error:Pr(404,{pathname:Ae.path})})})]);return await Promise.all([kC(G,he,Ze,Ze.map(()=>$e.signal),!1,M.loaderData),kC(G,be.map(Ae=>Ae.match),lt,be.map(Ae=>Ae.controller?Ae.controller.signal:null),!0)]),{loaderResults:Ze,fetcherResults:lt}}function _e(){H=!0,oe.push(...ts()),J.forEach((G,te)=>{ne.has(te)&&(Q.push(te),mn(te))})}function Ne(G,te,he){he===void 0&&(he={}),M.fetchers.set(G,te),Je({fetchers:new Map(M.fetchers)},{flushSync:(he&&he.flushSync)===!0})}function Ie(G,te,he,be){be===void 0&&(be={});let $e=Vl(M.matches,te);Et(G),Je({errors:{[$e.route.id]:he},fetchers:new Map(M.fetchers)},{flushSync:(be&&be.flushSync)===!0})}function ft(G){return m.v7_fetcherPersist&&(ae.set(G,(ae.get(G)||0)+1),ee.has(G)&&ee.delete(G)),M.fetchers.get(G)||C2}function Et(G){let te=M.fetchers.get(G);ne.has(G)&&!(te&&te.state==="loading"&&U.has(G))&&mn(G),J.delete(G),U.delete(G),D.delete(G),ee.delete(G),M.fetchers.delete(G)}function _n(G){if(m.v7_fetcherPersist){let te=(ae.get(G)||0)-1;te<=0?(ae.delete(G),ee.add(G)):ae.set(G,te)}else Et(G);Je({fetchers:new Map(M.fetchers)})}function mn(G){let te=ne.get(G);At(te,"Expected fetch controller: "+G),te.abort(),ne.delete(G)}function ke(G){for(let te of G){let he=ft(te),be=jo(he.data);M.fetchers.set(te,be)}}function yt(){let G=[],te=!1;for(let he of D){let be=M.fetchers.get(he);At(be,"Expected fetcher: "+he),be.state==="loading"&&(D.delete(he),G.push(he),te=!0)}return ke(G),te}function Bt(G){let te=[];for(let[he,be]of U)if(be0}function kn(G,te){let he=M.blockers.get(G)||yu;return ue.get(G)!==te&&ue.set(G,te),he}function gr(G){M.blockers.delete(G),ue.delete(G)}function ur(G,te){let he=M.blockers.get(G)||yu;At(he.state==="unblocked"&&te.state==="blocked"||he.state==="blocked"&&te.state==="blocked"||he.state==="blocked"&&te.state==="proceeding"||he.state==="blocked"&&te.state==="unblocked"||he.state==="proceeding"&&te.state==="unblocked","Invalid blocker state transition: "+he.state+" -> "+te.state);let be=new Map(M.blockers);be.set(G,te),Je({blockers:be})}function zr(G){let{currentLocation:te,nextLocation:he,historyAction:be}=G;if(ue.size===0)return;ue.size>1&&ec(!1,"A router only supports one blocker at a time");let $e=Array.from(ue.entries()),[Ze,lt]=$e[$e.length-1],Ae=M.blockers.get(Ze);if(!(Ae&&Ae.state==="proceeding")&<({currentLocation:te,nextLocation:he,historyAction:be}))return Ze}function Tr(G){let te=Pr(404,{pathname:G}),he=u||l,{matches:be,route:$e}=CC(he);return ts(),{notFoundMatches:be,route:$e,error:te}}function es(G,te){return{boundaryId:Vl(te.partialMatches).route.id,error:Pr(400,{type:"route-discovery",pathname:G,message:te.error!=null&&"message"in te.error?te.error:String(te.error)})}}function ts(G){let te=[];return ie.forEach((he,be)=>{(!G||G(be))&&(he.cancel(),te.push(be),ie.delete(be))}),te}function Za(G,te,he){if(b=G,C=te,w=he||null,!k&&M.navigation===gv){k=!0;let be=Dc(M.location,M.matches);be!=null&&Je({restoreScrollPosition:be})}return()=>{b=null,C=null,w=null}}function Ac(G,te){return w&&w(G,te.map(be=>e2(be,M.loaderData)))||G.key}function Nd(G,te){if(b&&C){let he=Ac(G,te);b[he]=C()}}function Dc(G,te){if(b){let he=Ac(G,te),be=b[he];if(typeof be=="number")return be}return null}function oi(G,te,he){if(h)if(G){let be=G[G.length-1].route;if(be.path&&(be.path==="*"||be.path.endsWith("/*")))return{active:!0,matches:hp(te,he,d,!0)}}else return{active:!0,matches:hp(te,he,d,!0)||[]};return{active:!1,matches:null}}async function ii(G,te,he){let be=G,$e=be.length>0?be[be.length-1].route:null;for(;;){let Ze=u==null,lt=u||l;try{await M2(h,te,be,lt,o,s,j,he)}catch(st){return{type:"error",error:st,partialMatches:be}}finally{Ze&&(l=[...l])}if(he.aborted)return{type:"aborted"};let Ae=Ei(lt,te,d),Nt=!1;if(Ae){let st=Ae[Ae.length-1].route;if(st.index)return{type:"success",matches:Ae};if(st.path&&st.path.length>0)if(st.path==="*")Nt=!0;else return{type:"success",matches:Ae}}let Xe=hp(lt,te,d,!0);if(!Xe||be.map(st=>st.route.id).join("-")===Xe.map(st=>st.route.id).join("-"))return{type:"success",matches:Nt?Ae:null};if(be=Xe,$e=be[be.length-1].route,$e.path==="*")return{type:"success",matches:be}}}function li(G){o={},u=Xu(G,s,void 0,o)}function Fc(G,te){let he=u==null;GE(G,te,u||l,o,s),he&&(l=[...l],Je({}))}return I={get basename(){return d},get future(){return m},get state(){return M},get routes(){return l},get window(){return t},initialize:pe,subscribe:rt,enableScrollRestoration:Za,navigate:qt,fetch:or,revalidate:qn,createHref:G=>e.history.createHref(G),encodeLocation:G=>e.history.encodeLocation(G),getFetcher:ft,deleteFetcher:_n,dispose:xe,getBlocker:kn,deleteBlocker:gr,patchRoutes:Fc,_internalFetchControllers:ne,_internalActiveDeferreds:ie,_internalSetRoutes:li},I}function E2(e){return e!=null&&("formData"in e&&e.formData!=null||"body"in e&&e.body!==void 0)}function Fy(e,t,n,r,s,o,l,u){let d,f;if(l){d=[];for(let m of t)if(d.push(m),m.route.id===l){f=m;break}}else d=t,f=t[t.length-1];let h=xh(s||".",bh(d,o),$a(e.pathname,n)||e.pathname,u==="path");return s==null&&(h.search=e.search,h.hash=e.hash),(s==null||s===""||s===".")&&f&&f.route.index&&!Jb(h.search)&&(h.search=h.search?h.search.replace(/^\?/,"?index&"):"?index"),r&&n!=="/"&&(h.pathname=h.pathname==="/"?n:La([n,h.pathname])),Fi(h)}function hC(e,t,n,r){if(!r||!E2(r))return{path:n};if(r.formMethod&&!B2(r.formMethod))return{path:n,error:Pr(405,{method:r.formMethod})};let s=()=>({path:n,error:Pr(400,{type:"invalid-body"})}),o=r.formMethod||"get",l=e?o.toUpperCase():o.toLowerCase(),u=JE(n);if(r.body!==void 0){if(r.formEncType==="text/plain"){if(!zs(l))return s();let g=typeof r.body=="string"?r.body:r.body instanceof FormData||r.body instanceof URLSearchParams?Array.from(r.body.entries()).reduce((x,b)=>{let[w,C]=b;return""+x+w+"="+C+` +`},""):String(r.body);return{path:n,submission:{formMethod:l,formAction:u,formEncType:r.formEncType,formData:void 0,json:void 0,text:g}}}else if(r.formEncType==="application/json"){if(!zs(l))return s();try{let g=typeof r.body=="string"?JSON.parse(r.body):r.body;return{path:n,submission:{formMethod:l,formAction:u,formEncType:r.formEncType,formData:void 0,json:g,text:void 0}}}catch{return s()}}}At(typeof FormData=="function","FormData is not available in this environment");let d,f;if(r.formData)d=Ly(r.formData),f=r.formData;else if(r.body instanceof FormData)d=Ly(r.body),f=r.body;else if(r.body instanceof URLSearchParams)d=r.body,f=bC(d);else if(r.body==null)d=new URLSearchParams,f=new FormData;else try{d=new URLSearchParams(r.body),f=bC(d)}catch{return s()}let h={formMethod:l,formAction:u,formEncType:r&&r.formEncType||"application/x-www-form-urlencoded",formData:f,json:void 0,text:void 0};if(zs(h.formMethod))return{path:n,submission:h};let m=qo(n);return t&&m.search&&Jb(m.search)&&d.append("index",""),m.search="?"+d,{path:Fi(m),submission:h}}function N2(e,t){let n=e;if(t){let r=e.findIndex(s=>s.route.id===t);r>=0&&(n=e.slice(0,r))}return n}function mC(e,t,n,r,s,o,l,u,d,f,h,m,g,x,b,w){let C=w?ls(w[1])?w[1].error:w[1].data:void 0,k=e.createURL(t.location),N=e.createURL(s),T=w&&ls(w[1])?w[0]:void 0,_=T?N2(n,T):n,I=w?w[1].statusCode:void 0,M=l&&I&&I>=400,A=_.filter((F,z)=>{let{route:Z}=F;if(Z.lazy)return!0;if(Z.loader==null)return!1;if(o)return typeof Z.loader!="function"||Z.loader.hydrate?!0:t.loaderData[Z.id]===void 0&&(!t.errors||t.errors[Z.id]===void 0);if(T2(t.loaderData,t.matches[z],F)||d.some(H=>H===F.route.id))return!0;let B=t.matches[z],ce=F;return gC(F,On({currentUrl:k,currentParams:B.params,nextUrl:N,nextParams:ce.params},r,{actionResult:C,actionStatus:I,defaultShouldRevalidate:M?!1:u||k.pathname+k.search===N.pathname+N.search||k.search!==N.search||WE(B,ce)}))}),O=[];return m.forEach((F,z)=>{if(o||!n.some(oe=>oe.route.id===F.routeId)||h.has(z))return;let Z=Ei(x,F.path,b);if(!Z){O.push({key:z,routeId:F.routeId,path:F.path,matches:null,match:null,controller:null});return}let B=t.fetchers.get(z),ce=Du(Z,F.path),H=!1;g.has(z)?H=!1:f.includes(z)?H=!0:B&&B.state!=="idle"&&B.data===void 0?H=u:H=gC(ce,On({currentUrl:k,currentParams:t.matches[t.matches.length-1].params,nextUrl:N,nextParams:n[n.length-1].params},r,{actionResult:C,actionStatus:I,defaultShouldRevalidate:M?!1:u})),H&&O.push({key:z,routeId:F.routeId,path:F.path,matches:Z,match:ce,controller:new AbortController})}),[A,O]}function T2(e,t,n){let r=!t||n.route.id!==t.route.id,s=e[n.route.id]===void 0;return r||s}function WE(e,t){let n=e.route.path;return e.pathname!==t.pathname||n!=null&&n.endsWith("*")&&e.params["*"]!==t.params["*"]}function gC(e,t){if(e.route.shouldRevalidate){let n=e.route.shouldRevalidate(t);if(typeof n=="boolean")return n}return t.defaultShouldRevalidate}async function M2(e,t,n,r,s,o,l,u){let d=[t,...n.map(f=>f.route.id)].join("-");try{let f=l.get(d);f||(f=e({path:t,matches:n,patch:(h,m)=>{u.aborted||GE(h,m,r,s,o)}}),l.set(d,f)),f&&F2(f)&&await f}finally{l.delete(d)}}function GE(e,t,n,r,s){if(e){var o;let l=r[e];At(l,"No route found to patch children into: routeId = "+e);let u=Xu(t,s,[e,"patch",String(((o=l.children)==null?void 0:o.length)||"0")],r);l.children?l.children.push(...u):l.children=u}else{let l=Xu(t,s,["patch",String(n.length||"0")],r);n.push(...l)}}async function vC(e,t,n){if(!e.lazy)return;let r=await e.lazy();if(!e.lazy)return;let s=n[e.id];At(s,"No route found in manifest");let o={};for(let l in r){let d=s[l]!==void 0&&l!=="hasErrorBoundary";ec(!d,'Route "'+s.id+'" has a static property "'+l+'" defined but its lazy function is also returning a value for this property. '+('The lazy route property "'+l+'" will be ignored.')),!d&&!ZD.has(l)&&(o[l]=r[l])}Object.assign(s,o),Object.assign(s,On({},t(s),{lazy:void 0}))}function _2(e){return Promise.all(e.matches.map(t=>t.resolve()))}async function R2(e,t,n,r,s,o,l,u){let d=r.reduce((m,g)=>m.add(g.route.id),new Set),f=new Set,h=await e({matches:s.map(m=>{let g=d.has(m.route.id);return On({},m,{shouldLoad:g,resolve:b=>(f.add(m.route.id),g?P2(t,n,m,o,l,b,u):Promise.resolve({type:vn.data,result:void 0}))})}),request:n,params:s[0].params,context:u});return s.forEach(m=>At(f.has(m.route.id),'`match.resolve()` was not called for route id "'+m.route.id+'". You must call `match.resolve()` on every match passed to `dataStrategy` to ensure all routes are properly loaded.')),h.filter((m,g)=>d.has(s[g].route.id))}async function P2(e,t,n,r,s,o,l){let u,d,f=h=>{let m,g=new Promise((w,C)=>m=C);d=()=>m(),t.signal.addEventListener("abort",d);let x=w=>typeof h!="function"?Promise.reject(new Error("You cannot call the handler for a route which defines a boolean "+('"'+e+'" [routeId: '+n.route.id+"]"))):h({request:t,params:n.params,context:l},...w!==void 0?[w]:[]),b;return o?b=o(w=>x(w)):b=(async()=>{try{return{type:"data",result:await x()}}catch(w){return{type:"error",result:w}}})(),Promise.race([b,g])};try{let h=n.route[e];if(n.route.lazy)if(h){let m,[g]=await Promise.all([f(h).catch(x=>{m=x}),vC(n.route,s,r)]);if(m!==void 0)throw m;u=g}else if(await vC(n.route,s,r),h=n.route[e],h)u=await f(h);else if(e==="action"){let m=new URL(t.url),g=m.pathname+m.search;throw Pr(405,{method:t.method,pathname:g,routeId:n.route.id})}else return{type:vn.data,result:void 0};else if(h)u=await f(h);else{let m=new URL(t.url),g=m.pathname+m.search;throw Pr(404,{pathname:g})}At(u.result!==void 0,"You defined "+(e==="action"?"an action":"a loader")+" for route "+('"'+n.route.id+"\" but didn't return anything from your `"+e+"` ")+"function. Please return a value or `null`.")}catch(h){return{type:vn.error,result:h}}finally{d&&t.signal.removeEventListener("abort",d)}return u}async function I2(e){let{result:t,type:n,status:r}=e;if(QE(t)){let l;try{let u=t.headers.get("Content-Type");u&&/\bapplication\/json\b/.test(u)?t.body==null?l=null:l=await t.json():l=await t.text()}catch(u){return{type:vn.error,error:u}}return n===vn.error?{type:vn.error,error:new Wb(t.status,t.statusText,l),statusCode:t.status,headers:t.headers}:{type:vn.data,data:l,statusCode:t.status,headers:t.headers}}if(n===vn.error)return{type:vn.error,error:t,statusCode:wh(t)?t.status:r};if($2(t)){var s,o;return{type:vn.deferred,deferredData:t,statusCode:(s=t.init)==null?void 0:s.status,headers:((o=t.init)==null?void 0:o.headers)&&new Headers(t.init.headers)}}return{type:vn.data,data:t,statusCode:r}}function O2(e,t,n,r,s,o){let l=e.headers.get("Location");if(At(l,"Redirects returned/thrown from loaders/actions must have a Location header"),!Gb.test(l)){let u=r.slice(0,r.findIndex(d=>d.route.id===n)+1);l=Fy(new URL(t.url),u,s,!0,l,o),e.headers.set("Location",l)}return e}function yC(e,t,n){if(Gb.test(e)){let r=e,s=r.startsWith("//")?new URL(t.protocol+r):new URL(r),o=$a(s.pathname,n)!=null;if(s.origin===t.origin&&o)return s.pathname+s.search+s.hash}return e}function _l(e,t,n,r){let s=e.createURL(JE(t)).toString(),o={signal:n};if(r&&zs(r.formMethod)){let{formMethod:l,formEncType:u}=r;o.method=l.toUpperCase(),u==="application/json"?(o.headers=new Headers({"Content-Type":u}),o.body=JSON.stringify(r.json)):u==="text/plain"?o.body=r.text:u==="application/x-www-form-urlencoded"&&r.formData?o.body=Ly(r.formData):o.body=r.formData}return new Request(s,o)}function Ly(e){let t=new URLSearchParams;for(let[n,r]of e.entries())t.append(n,typeof r=="string"?r:r.name);return t}function bC(e){let t=new FormData;for(let[n,r]of e.entries())t.append(n,r);return t}function A2(e,t,n,r,s,o){let l={},u=null,d,f=!1,h={},m=r&&ls(r[1])?r[1].error:void 0;return n.forEach((g,x)=>{let b=t[x].route.id;if(At(!Ti(g),"Cannot handle redirect results in processLoaderData"),ls(g)){let w=g.error;m!==void 0&&(w=m,m=void 0),u=u||{};{let C=Vl(e,b);u[C.route.id]==null&&(u[C.route.id]=w)}l[b]=void 0,f||(f=!0,d=wh(g.error)?g.error.status:500),g.headers&&(h[b]=g.headers)}else Ni(g)?(s.set(b,g.deferredData),l[b]=g.deferredData.data,g.statusCode!=null&&g.statusCode!==200&&!f&&(d=g.statusCode),g.headers&&(h[b]=g.headers)):(l[b]=g.data,g.statusCode&&g.statusCode!==200&&!f&&(d=g.statusCode),g.headers&&(h[b]=g.headers))}),m!==void 0&&r&&(u={[r[0]]:m},l[r[0]]=void 0),{loaderData:l,errors:u,statusCode:d||200,loaderHeaders:h}}function xC(e,t,n,r,s,o,l,u){let{loaderData:d,errors:f}=A2(t,n,r,s,u);for(let h=0;hr.route.id===t)+1):[...e]).reverse().find(r=>r.route.hasErrorBoundary===!0)||e[0]}function CC(e){let t=e.length===1?e[0]:e.find(n=>n.index||!n.path||n.path==="/")||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:t}],route:t}}function Pr(e,t){let{pathname:n,routeId:r,method:s,type:o,message:l}=t===void 0?{}:t,u="Unknown Server Error",d="Unknown @remix-run/router error";return e===400?(u="Bad Request",o==="route-discovery"?d='Unable to match URL "'+n+'" - the `unstable_patchRoutesOnMiss()` '+(`function threw the following error: +`+l):s&&n&&r?d="You made a "+s+' request to "'+n+'" but '+('did not provide a `loader` for route "'+r+'", ')+"so there is no way to handle the request.":o==="defer-action"?d="defer() is not supported in actions":o==="invalid-body"&&(d="Unable to encode submission body")):e===403?(u="Forbidden",d='Route "'+r+'" does not match URL "'+n+'"'):e===404?(u="Not Found",d='No route matches URL "'+n+'"'):e===405&&(u="Method Not Allowed",s&&n&&r?d="You made a "+s.toUpperCase()+' request to "'+n+'" but '+('did not provide an `action` for route "'+r+'", ')+"so there is no way to handle the request.":s&&(d='Invalid request method "'+s.toUpperCase()+'"')),new Wb(e||500,u,new Error(d),!0)}function jC(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(Ti(n))return{result:n,idx:t}}}function JE(e){let t=typeof e=="string"?qo(e):e;return Fi(On({},t,{hash:""}))}function D2(e,t){return e.pathname!==t.pathname||e.search!==t.search?!1:e.hash===""?t.hash!=="":e.hash===t.hash?!0:t.hash!==""}function F2(e){return typeof e=="object"&&e!=null&&"then"in e}function L2(e){return QE(e.result)&&w2.has(e.result.status)}function Ni(e){return e.type===vn.deferred}function ls(e){return e.type===vn.error}function Ti(e){return(e&&e.type)===vn.redirect}function $2(e){let t=e;return t&&typeof t=="object"&&typeof t.data=="object"&&typeof t.subscribe=="function"&&typeof t.cancel=="function"&&typeof t.resolveData=="function"}function QE(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.headers=="object"&&typeof e.body<"u"}function B2(e){return x2.has(e.toLowerCase())}function zs(e){return y2.has(e.toLowerCase())}async function kC(e,t,n,r,s,o){for(let l=0;lm.route.id===d.route.id),h=f!=null&&!WE(f,d)&&(o&&o[d.route.id])!==void 0;if(Ni(u)&&(s||h)){let m=r[l];At(m,"Expected an AbortSignal for revalidating fetcher deferred result"),await YE(u,m,s).then(g=>{g&&(n[l]=g||n[l])})}}}async function YE(e,t,n){if(n===void 0&&(n=!1),!await e.deferredData.resolveData(t)){if(n)try{return{type:vn.data,data:e.deferredData.unwrappedData}}catch(s){return{type:vn.error,error:s}}return{type:vn.data,data:e.deferredData.data}}}function Jb(e){return new URLSearchParams(e).getAll("index").some(t=>t==="")}function Du(e,t){let n=typeof t=="string"?qo(t).search:t.search;if(e[e.length-1].route.index&&Jb(n||""))return e[e.length-1];let r=qE(e);return r[r.length-1]}function EC(e){let{formMethod:t,formAction:n,formEncType:r,text:s,formData:o,json:l}=e;if(!(!t||!n||!r)){if(s!=null)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:void 0,text:s};if(o!=null)return{formMethod:t,formAction:n,formEncType:r,formData:o,json:void 0,text:void 0};if(l!==void 0)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:l,text:void 0}}}function vv(e,t){return t?{state:"loading",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}:{state:"loading",location:e,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function z2(e,t){return{state:"submitting",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}}function bu(e,t){return e?{state:"loading",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t}:{state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:t}}function U2(e,t){return{state:"submitting",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t?t.data:void 0}}function jo(e){return{state:"idle",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:e}}function V2(e,t){try{let n=e.sessionStorage.getItem(KE);if(n){let r=JSON.parse(n);for(let[s,o]of Object.entries(r||{}))o&&Array.isArray(o)&&t.set(s,new Set(o||[]))}}catch{}}function q2(e,t){if(t.size>0){let n={};for(let[r,s]of t)n[r]=[...s];try{e.sessionStorage.setItem(KE,JSON.stringify(n))}catch(r){ec(!1,"Failed to save applied view transitions in sessionStorage ("+r+").")}}}/** + * React Router v6.25.1 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function Fp(){return Fp=Object.assign?Object.assign.bind():function(e){for(var t=1;t{u.current=!0}),y.useCallback(function(f,h){if(h===void 0&&(h={}),!u.current)return;if(typeof f=="number"){r.go(f);return}let m=xh(f,JSON.parse(l),o,h.relative==="path");e==null&&t!=="/"&&(m.pathname=m.pathname==="/"?t:La([t,m.pathname])),(h.replace?r.replace:r.push)(m,h.state,h)},[t,r,l,o,e])}function _s(){let{matches:e}=y.useContext(Ka),t=e[e.length-1];return t?t.params:{}}function Sh(e,t){let{relative:n}=t===void 0?{}:t,{future:r}=y.useContext(Ha),{matches:s}=y.useContext(Ka),{pathname:o}=Ho(),l=JSON.stringify(bh(s,r.v7_relativeSplatPath));return y.useMemo(()=>xh(e,JSON.parse(l),o,n==="path"),[e,l,o,n])}function W2(e,t,n,r){gc()||At(!1);let{navigator:s}=y.useContext(Ha),{matches:o}=y.useContext(Ka),l=o[o.length-1],u=l?l.params:{};l&&l.pathname;let d=l?l.pathnameBase:"/";l&&l.route;let f=Ho(),h;h=f;let m=h.pathname||"/",g=m;if(d!=="/"){let w=d.replace(/^\//,"").split("/");g="/"+m.replace(/^\//,"").split("/").slice(w.length).join("/")}let x=Ei(e,{pathname:g});return Z2(x&&x.map(w=>Object.assign({},w,{params:Object.assign({},u,w.params),pathname:La([d,s.encodeLocation?s.encodeLocation(w.pathname).pathname:w.pathname]),pathnameBase:w.pathnameBase==="/"?d:La([d,s.encodeLocation?s.encodeLocation(w.pathnameBase).pathname:w.pathnameBase])})),o,n,r)}function G2(){let e=nF(),t=wh(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,s={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return y.createElement(y.Fragment,null,y.createElement("h2",null,"Unexpected Application Error!"),y.createElement("h3",{style:{fontStyle:"italic"}},t),n?y.createElement("pre",{style:s},n):null,null)}const J2=y.createElement(G2,null);class Q2 extends y.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,n){return n.location!==t.location||n.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:n.error,location:n.location,revalidation:t.revalidation||n.revalidation}}componentDidCatch(t,n){console.error("React Router caught the following error during render",t,n)}render(){return this.state.error!==void 0?y.createElement(Ka.Provider,{value:this.props.routeContext},y.createElement(ZE.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function Y2(e){let{routeContext:t,match:n,children:r}=e,s=y.useContext(hd);return s&&s.static&&s.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(s.staticContext._deepestRenderedBoundaryId=n.route.id),y.createElement(Ka.Provider,{value:t},r)}function Z2(e,t,n,r){var s;if(t===void 0&&(t=[]),n===void 0&&(n=null),r===void 0&&(r=null),e==null){var o;if((o=n)!=null&&o.errors)e=n.matches;else return null}let l=e,u=(s=n)==null?void 0:s.errors;if(u!=null){let h=l.findIndex(m=>m.route.id&&u?.[m.route.id]!==void 0);h>=0||At(!1),l=l.slice(0,Math.min(l.length,h+1))}let d=!1,f=-1;if(n&&r&&r.v7_partialHydration)for(let h=0;h=0?l=l.slice(0,f+1):l=[l[0]];break}}}return l.reduceRight((h,m,g)=>{let x,b=!1,w=null,C=null;n&&(x=u&&m.route.id?u[m.route.id]:void 0,w=m.route.errorElement||J2,d&&(f<0&&g===0?(sF("route-fallback"),b=!0,C=null):f===g&&(b=!0,C=m.route.hydrateFallbackElement||null)));let k=t.concat(l.slice(0,g+1)),N=()=>{let T;return x?T=w:b?T=C:m.route.Component?T=y.createElement(m.route.Component,null):m.route.element?T=m.route.element:T=h,y.createElement(Y2,{match:m,routeContext:{outlet:h,matches:k,isDataRoute:n!=null},children:T})};return n&&(m.route.ErrorBoundary||m.route.errorElement||g===0)?y.createElement(Q2,{location:n.location,revalidation:n.revalidation,component:w,error:x,children:N(),routeContext:{outlet:null,matches:k,isDataRoute:!0}}):N()},null)}var eN=(function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e})(eN||{}),tN=(function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e})(tN||{});function X2(e){let t=y.useContext(hd);return t||At(!1),t}function eF(e){let t=y.useContext(Qb);return t||At(!1),t}function tF(e){let t=y.useContext(Ka);return t||At(!1),t}function nN(e){let t=tF(),n=t.matches[t.matches.length-1];return n.route.id||At(!1),n.route.id}function nF(){var e;let t=y.useContext(ZE),n=eF(tN.UseRouteError),r=nN();return t!==void 0?t:(e=n.errors)==null?void 0:e[r]}function rF(){let{router:e}=X2(eN.UseNavigateStable),t=nN(),n=y.useRef(!1);return XE(()=>{n.current=!0}),y.useCallback(function(s,o){o===void 0&&(o={}),n.current&&(typeof s=="number"?e.navigate(s):e.navigate(s,Fp({fromRouteId:t},o)))},[e,t])}const NC={};function sF(e,t,n){NC[e]||(NC[e]=!0)}function $y(e){let{to:t,replace:n,state:r,relative:s}=e;gc()||At(!1);let{future:o,static:l}=y.useContext(Ha),{matches:u}=y.useContext(Ka),{pathname:d}=Ho(),f=jn(),h=xh(t,bh(u,o.v7_relativeSplatPath),d,s==="path"),m=JSON.stringify(h);return y.useEffect(()=>f(JSON.parse(m),{replace:n,state:r,relative:s}),[f,m,s,n,r]),null}function aF(e){let{basename:t="/",children:n=null,location:r,navigationType:s=Jn.Pop,navigator:o,static:l=!1,future:u}=e;gc()&&At(!1);let d=t.replace(/^\/*/,"/"),f=y.useMemo(()=>({basename:d,navigator:o,static:l,future:Fp({v7_relativeSplatPath:!1},u)}),[d,u,o,l]);typeof r=="string"&&(r=qo(r));let{pathname:h="/",search:m="",hash:g="",state:x=null,key:b="default"}=r,w=y.useMemo(()=>{let C=$a(h,d);return C==null?null:{location:{pathname:C,search:m,hash:g,state:x,key:b},navigationType:s}},[d,h,m,g,x,b,s]);return w==null?null:y.createElement(Ha.Provider,{value:f},y.createElement(Yb.Provider,{children:n,value:w}))}new Promise(()=>{});function oF(e){let t={hasErrorBoundary:e.ErrorBoundary!=null||e.errorElement!=null};return e.Component&&Object.assign(t,{element:y.createElement(e.Component),Component:void 0}),e.HydrateFallback&&Object.assign(t,{hydrateFallbackElement:y.createElement(e.HydrateFallback),HydrateFallback:void 0}),e.ErrorBoundary&&Object.assign(t,{errorElement:y.createElement(e.ErrorBoundary),ErrorBoundary:void 0}),t}/** + * React Router DOM v6.25.1 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function tc(){return tc=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&(n[s]=e[s]);return n}function iF(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function lF(e,t){return e.button===0&&(!t||t==="_self")&&!iF(e)}function By(e){return e===void 0&&(e=""),new URLSearchParams(typeof e=="string"||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,n)=>{let r=e[n];return t.concat(Array.isArray(r)?r.map(s=>[n,s]):[[n,r]])},[]))}function cF(e,t){let n=By(e);return t&&t.forEach((r,s)=>{n.has(s)||t.getAll(s).forEach(o=>{n.append(s,o)})}),n}const uF=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","unstable_viewTransition"],dF=["aria-current","caseSensitive","className","end","style","to","unstable_viewTransition","children"],fF="6";try{window.__reactRouterVersion=fF}catch{}function pF(e,t){return k2({basename:void 0,future:tc({},void 0,{v7_prependBasename:!0}),history:JD({window:void 0}),hydrationData:hF(),routes:e,mapRouteProperties:oF,unstable_dataStrategy:void 0,unstable_patchRoutesOnMiss:void 0,window:void 0}).initialize()}function hF(){var e;let t=(e=window)==null?void 0:e.__staticRouterHydrationData;return t&&t.errors&&(t=tc({},t,{errors:mF(t.errors)})),t}function mF(e){if(!e)return null;let t=Object.entries(e),n={};for(let[r,s]of t)if(s&&s.__type==="RouteErrorResponse")n[r]=new Wb(s.status,s.statusText,s.data,s.internal===!0);else if(s&&s.__type==="Error"){if(s.__subType){let o=window[s.__subType];if(typeof o=="function")try{let l=new o(s.message);l.stack="",n[r]=l}catch{}}if(n[r]==null){let o=new Error(s.message);o.stack="",n[r]=o}}else n[r]=s;return n}const sN=y.createContext({isTransitioning:!1}),gF=y.createContext(new Map),vF="startTransition",TC=Vo[vF],yF="flushSync",MC=GD[yF];function bF(e){TC?TC(e):e()}function xu(e){MC?MC(e):e()}class xF{constructor(){this.status="pending",this.promise=new Promise((t,n)=>{this.resolve=r=>{this.status==="pending"&&(this.status="resolved",t(r))},this.reject=r=>{this.status==="pending"&&(this.status="rejected",n(r))}})}}function wF(e){let{fallbackElement:t,router:n,future:r}=e,[s,o]=y.useState(n.state),[l,u]=y.useState(),[d,f]=y.useState({isTransitioning:!1}),[h,m]=y.useState(),[g,x]=y.useState(),[b,w]=y.useState(),C=y.useRef(new Map),{v7_startTransition:k}=r||{},N=y.useCallback(O=>{k?bF(O):O()},[k]),T=y.useCallback((O,F)=>{let{deletedFetchers:z,unstable_flushSync:Z,unstable_viewTransitionOpts:B}=F;z.forEach(H=>C.current.delete(H)),O.fetchers.forEach((H,oe)=>{H.data!==void 0&&C.current.set(oe,H.data)});let ce=n.window==null||n.window.document==null||typeof n.window.document.startViewTransition!="function";if(!B||ce){Z?xu(()=>o(O)):N(()=>o(O));return}if(Z){xu(()=>{g&&(h&&h.resolve(),g.skipTransition()),f({isTransitioning:!0,flushSync:!0,currentLocation:B.currentLocation,nextLocation:B.nextLocation})});let H=n.window.document.startViewTransition(()=>{xu(()=>o(O))});H.finished.finally(()=>{xu(()=>{m(void 0),x(void 0),u(void 0),f({isTransitioning:!1})})}),xu(()=>x(H));return}g?(h&&h.resolve(),g.skipTransition(),w({state:O,currentLocation:B.currentLocation,nextLocation:B.nextLocation})):(u(O),f({isTransitioning:!0,flushSync:!1,currentLocation:B.currentLocation,nextLocation:B.nextLocation}))},[n.window,g,h,C,N]);y.useLayoutEffect(()=>n.subscribe(T),[n,T]),y.useEffect(()=>{d.isTransitioning&&!d.flushSync&&m(new xF)},[d]),y.useEffect(()=>{if(h&&l&&n.window){let O=l,F=h.promise,z=n.window.document.startViewTransition(async()=>{N(()=>o(O)),await F});z.finished.finally(()=>{m(void 0),x(void 0),u(void 0),f({isTransitioning:!1})}),x(z)}},[N,l,h,n.window]),y.useEffect(()=>{h&&l&&s.location.key===l.location.key&&h.resolve()},[h,g,s.location,l]),y.useEffect(()=>{!d.isTransitioning&&b&&(u(b.state),f({isTransitioning:!0,flushSync:!1,currentLocation:b.currentLocation,nextLocation:b.nextLocation}),w(void 0))},[d.isTransitioning,b]),y.useEffect(()=>{},[]);let _=y.useMemo(()=>({createHref:n.createHref,encodeLocation:n.encodeLocation,go:O=>n.navigate(O),push:(O,F,z)=>n.navigate(O,{state:F,preventScrollReset:z?.preventScrollReset}),replace:(O,F,z)=>n.navigate(O,{replace:!0,state:F,preventScrollReset:z?.preventScrollReset})}),[n]),I=n.basename||"/",M=y.useMemo(()=>({router:n,navigator:_,static:!1,basename:I}),[n,_,I]),A=y.useMemo(()=>({v7_relativeSplatPath:n.future.v7_relativeSplatPath}),[n.future.v7_relativeSplatPath]);return y.createElement(y.Fragment,null,y.createElement(hd.Provider,{value:M},y.createElement(Qb.Provider,{value:s},y.createElement(gF.Provider,{value:C.current},y.createElement(sN.Provider,{value:d},y.createElement(aF,{basename:I,location:s.location,navigationType:s.historyAction,navigator:_,future:A},s.initialized||n.future.v7_partialHydration?y.createElement(SF,{routes:n.routes,future:n.future,state:s}):t))))),null)}const SF=y.memo(CF);function CF(e){let{routes:t,future:n,state:r}=e;return W2(t,void 0,r,n)}const jF=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",kF=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,EF=y.forwardRef(function(t,n){let{onClick:r,relative:s,reloadDocument:o,replace:l,state:u,target:d,to:f,preventScrollReset:h,unstable_viewTransition:m}=t,g=rN(t,uF),{basename:x}=y.useContext(Ha),b,w=!1;if(typeof f=="string"&&kF.test(f)&&(b=f,jF))try{let T=new URL(window.location.href),_=f.startsWith("//")?new URL(T.protocol+f):new URL(f),I=$a(_.pathname,x);_.origin===T.origin&&I!=null?f=I+_.search+_.hash:w=!0}catch{}let C=H2(f,{relative:s}),k=TF(f,{replace:l,state:u,target:d,preventScrollReset:h,relative:s,unstable_viewTransition:m});function N(T){r&&r(T),T.defaultPrevented||k(T)}return y.createElement("a",tc({},g,{href:b||C,onClick:w||o?r:N,ref:n,target:d}))}),aN=y.forwardRef(function(t,n){let{"aria-current":r="page",caseSensitive:s=!1,className:o="",end:l=!1,style:u,to:d,unstable_viewTransition:f,children:h}=t,m=rN(t,dF),g=Sh(d,{relative:m.relative}),x=Ho(),b=y.useContext(Qb),{navigator:w,basename:C}=y.useContext(Ha),k=b!=null&&MF(g)&&f===!0,N=w.encodeLocation?w.encodeLocation(g).pathname:g.pathname,T=x.pathname,_=b&&b.navigation&&b.navigation.location?b.navigation.location.pathname:null;s||(T=T.toLowerCase(),_=_?_.toLowerCase():null,N=N.toLowerCase()),_&&C&&(_=$a(_,C)||_);const I=N!=="/"&&N.endsWith("/")?N.length-1:N.length;let M=T===N||!l&&T.startsWith(N)&&T.charAt(I)==="/",A=_!=null&&(_===N||!l&&_.startsWith(N)&&_.charAt(N.length)==="/"),O={isActive:M,isPending:A,isTransitioning:k},F=M?r:void 0,z;typeof o=="function"?z=o(O):z=[o,M?"active":null,A?"pending":null,k?"transitioning":null].filter(Boolean).join(" ");let Z=typeof u=="function"?u(O):u;return y.createElement(EF,tc({},m,{"aria-current":F,className:z,ref:n,style:Z,to:d,unstable_viewTransition:f}),typeof h=="function"?h(O):h)});var zy;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(zy||(zy={}));var _C;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(_C||(_C={}));function NF(e){let t=y.useContext(hd);return t||At(!1),t}function TF(e,t){let{target:n,replace:r,state:s,preventScrollReset:o,relative:l,unstable_viewTransition:u}=t===void 0?{}:t,d=jn(),f=Ho(),h=Sh(e,{relative:l});return y.useCallback(m=>{if(lF(m,n)){m.preventDefault();let g=r!==void 0?r:Fi(f)===Fi(h);d(e,{replace:g,state:s,preventScrollReset:o,relative:l,unstable_viewTransition:u})}},[f,d,h,r,s,n,e,o,l,u])}function vc(e){let t=y.useRef(By(e)),n=y.useRef(!1),r=Ho(),s=y.useMemo(()=>cF(r.search,n.current?null:t.current),[r.search]),o=jn(),l=y.useCallback((u,d)=>{const f=By(typeof u=="function"?u(s):u);n.current=!0,o("?"+f,d)},[o,s]);return[s,l]}function MF(e,t){t===void 0&&(t={});let n=y.useContext(sN);n==null&&At(!1);let{basename:r}=NF(zy.useViewTransitionState),s=Sh(e,{relative:t.relative});if(!n.isTransitioning)return!1;let o=$a(n.currentLocation.pathname,r)||n.currentLocation.pathname,l=$a(n.nextLocation.pathname,r)||n.nextLocation.pathname;return Dp(s.pathname,l)!=null||Dp(s.pathname,o)!=null}function oN(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var s=e.length;for(t=0;ttypeof e=="number"&&!isNaN(e),Ii=e=>typeof e=="string",ds=e=>typeof e=="function",mp=e=>Ii(e)||ds(e)?e:null,Uy=e=>y.isValidElement(e)||Ii(e)||ds(e)||ed(e);function _F(e,t,n){n===void 0&&(n=300);const{scrollHeight:r,style:s}=e;requestAnimationFrame(()=>{s.minHeight="initial",s.height=r+"px",s.transition=`all ${n}ms`,requestAnimationFrame(()=>{s.height="0",s.padding="0",s.margin="0",setTimeout(t,n)})})}function Ch(e){let{enter:t,exit:n,appendPosition:r=!1,collapse:s=!0,collapseDuration:o=300}=e;return function(l){let{children:u,position:d,preventExitTransition:f,done:h,nodeRef:m,isIn:g,playToast:x}=l;const b=r?`${t}--${d}`:t,w=r?`${n}--${d}`:n,C=y.useRef(0);return y.useLayoutEffect(()=>{const k=m.current,N=b.split(" "),T=_=>{_.target===m.current&&(x(),k.removeEventListener("animationend",T),k.removeEventListener("animationcancel",T),C.current===0&&_.type!=="animationcancel"&&k.classList.remove(...N))};k.classList.add(...N),k.addEventListener("animationend",T),k.addEventListener("animationcancel",T)},[]),y.useEffect(()=>{const k=m.current,N=()=>{k.removeEventListener("animationend",N),s?_F(k,h,o):h()};g||(f?N():(C.current=1,k.className+=` ${w}`,k.addEventListener("animationend",N)))},[g]),Oe.createElement(Oe.Fragment,null,u)}}function RC(e,t){return e!=null?{content:e.content,containerId:e.props.containerId,id:e.props.toastId,theme:e.props.theme,type:e.props.type,data:e.props.data||{},isLoading:e.props.isLoading,icon:e.props.icon,status:t}:{}}const Or=new Map;let td=[];const Vy=new Set,RF=e=>Vy.forEach(t=>t(e)),iN=()=>Or.size>0;function lN(e,t){var n;if(t)return!((n=Or.get(t))==null||!n.isToastActive(e));let r=!1;return Or.forEach(s=>{s.isToastActive(e)&&(r=!0)}),r}function cN(e,t){Uy(e)&&(iN()||td.push({content:e,options:t}),Or.forEach(n=>{n.buildToast(e,t)}))}function PC(e,t){Or.forEach(n=>{t!=null&&t!=null&&t.containerId?t?.containerId===n.id&&n.toggle(e,t?.id):n.toggle(e,t?.id)})}function PF(e){const{subscribe:t,getSnapshot:n,setProps:r}=y.useRef((function(o){const l=o.containerId||1;return{subscribe(u){const d=(function(h,m,g){let x=1,b=0,w=[],C=[],k=[],N=m;const T=new Map,_=new Set,I=()=>{k=Array.from(T.values()),_.forEach(O=>O())},M=O=>{C=O==null?[]:C.filter(F=>F!==O),I()},A=O=>{const{toastId:F,onOpen:z,updateId:Z,children:B}=O.props,ce=Z==null;O.staleId&&T.delete(O.staleId),T.set(F,O),C=[...C,O.props.toastId].filter(H=>H!==O.staleId),I(),g(RC(O,ce?"added":"updated")),ce&&ds(z)&&z(y.isValidElement(B)&&B.props)};return{id:h,props:N,observe:O=>(_.add(O),()=>_.delete(O)),toggle:(O,F)=>{T.forEach(z=>{F!=null&&F!==z.props.toastId||ds(z.toggle)&&z.toggle(O)})},removeToast:M,toasts:T,clearQueue:()=>{b-=w.length,w=[]},buildToast:(O,F)=>{if((J=>{let{containerId:ae,toastId:ee,updateId:ie}=J;const ue=ae?ae!==h:h!==1,j=T.has(ee)&&ie==null;return ue||j})(F))return;const{toastId:z,updateId:Z,data:B,staleId:ce,delay:H}=F,oe=()=>{M(z)},Q=Z==null;Q&&b++;const ne={...N,style:N.toastStyle,key:x++,...Object.fromEntries(Object.entries(F).filter(J=>{let[ae,ee]=J;return ee!=null})),toastId:z,updateId:Z,data:B,closeToast:oe,isIn:!1,className:mp(F.className||N.toastClassName),bodyClassName:mp(F.bodyClassName||N.bodyClassName),progressClassName:mp(F.progressClassName||N.progressClassName),autoClose:!F.isLoading&&(V=F.autoClose,K=N.autoClose,V===!1||ed(V)&&V>0?V:K),deleteToast(){const J=T.get(z),{onClose:ae,children:ee}=J.props;ds(ae)&&ae(y.isValidElement(ee)&&ee.props),g(RC(J,"removed")),T.delete(z),b--,b<0&&(b=0),w.length>0?A(w.shift()):I()}};var V,K;ne.closeButton=N.closeButton,F.closeButton===!1||Uy(F.closeButton)?ne.closeButton=F.closeButton:F.closeButton===!0&&(ne.closeButton=!Uy(N.closeButton)||N.closeButton);let U=O;y.isValidElement(O)&&!Ii(O.type)?U=y.cloneElement(O,{closeToast:oe,toastProps:ne,data:B}):ds(O)&&(U=O({closeToast:oe,toastProps:ne,data:B}));const D={content:U,props:ne,staleId:ce};N.limit&&N.limit>0&&b>N.limit&&Q?w.push(D):ed(H)?setTimeout(()=>{A(D)},H):A(D)},setProps(O){N=O},setToggle:(O,F)=>{T.get(O).toggle=F},isToastActive:O=>C.some(F=>F===O),getSnapshot:()=>N.newestOnTop?k.reverse():k}})(l,o,RF);Or.set(l,d);const f=d.observe(u);return td.forEach(h=>cN(h.content,h.options)),td=[],()=>{f(),Or.delete(l)}},setProps(u){var d;(d=Or.get(l))==null||d.setProps(u)},getSnapshot(){var u;return(u=Or.get(l))==null?void 0:u.getSnapshot()}}})(e)).current;r(e);const s=y.useSyncExternalStore(t,n,n);return{getToastToRender:function(o){if(!s)return[];const l=new Map;return s.forEach(u=>{const{position:d}=u.props;l.has(d)||l.set(d,[]),l.get(d).push(u)}),Array.from(l,u=>o(u[0],u[1]))},isToastActive:lN,count:s?.length}}function IF(e){const[t,n]=y.useState(!1),[r,s]=y.useState(!1),o=y.useRef(null),l=y.useRef({start:0,delta:0,removalDistance:0,canCloseOnClick:!0,canDrag:!1,didMove:!1}).current,{autoClose:u,pauseOnHover:d,closeToast:f,onClick:h,closeOnClick:m}=e;var g,x;function b(){n(!0)}function w(){n(!1)}function C(T){const _=o.current;l.canDrag&&_&&(l.didMove=!0,t&&w(),l.delta=e.draggableDirection==="x"?T.clientX-l.start:T.clientY-l.start,l.start!==T.clientX&&(l.canCloseOnClick=!1),_.style.transform=`translate3d(${e.draggableDirection==="x"?`${l.delta}px, var(--y)`:`0, calc(${l.delta}px + var(--y))`},0)`,_.style.opacity=""+(1-Math.abs(l.delta/l.removalDistance)))}function k(){document.removeEventListener("pointermove",C),document.removeEventListener("pointerup",k);const T=o.current;if(l.canDrag&&l.didMove&&T){if(l.canDrag=!1,Math.abs(l.delta)>l.removalDistance)return s(!0),e.closeToast(),void e.collapseAll();T.style.transition="transform 0.2s, opacity 0.2s",T.style.removeProperty("transform"),T.style.removeProperty("opacity")}}(x=Or.get((g={id:e.toastId,containerId:e.containerId,fn:n}).containerId||1))==null||x.setToggle(g.id,g.fn),y.useEffect(()=>{if(e.pauseOnFocusLoss)return document.hasFocus()||w(),window.addEventListener("focus",b),window.addEventListener("blur",w),()=>{window.removeEventListener("focus",b),window.removeEventListener("blur",w)}},[e.pauseOnFocusLoss]);const N={onPointerDown:function(T){if(e.draggable===!0||e.draggable===T.pointerType){l.didMove=!1,document.addEventListener("pointermove",C),document.addEventListener("pointerup",k);const _=o.current;l.canCloseOnClick=!0,l.canDrag=!0,_.style.transition="none",e.draggableDirection==="x"?(l.start=T.clientX,l.removalDistance=_.offsetWidth*(e.draggablePercent/100)):(l.start=T.clientY,l.removalDistance=_.offsetHeight*(e.draggablePercent===80?1.5*e.draggablePercent:e.draggablePercent)/100)}},onPointerUp:function(T){const{top:_,bottom:I,left:M,right:A}=o.current.getBoundingClientRect();T.nativeEvent.type!=="touchend"&&e.pauseOnHover&&T.clientX>=M&&T.clientX<=A&&T.clientY>=_&&T.clientY<=I?w():b()}};return u&&d&&(N.onMouseEnter=w,e.stacked||(N.onMouseLeave=b)),m&&(N.onClick=T=>{h&&h(T),l.canCloseOnClick&&f()}),{playToast:b,pauseToast:w,isRunning:t,preventExitTransition:r,toastRef:o,eventHandlers:N}}function OF(e){let{delay:t,isRunning:n,closeToast:r,type:s="default",hide:o,className:l,style:u,controlledProgress:d,progress:f,rtl:h,isIn:m,theme:g}=e;const x=o||d&&f===0,b={...u,animationDuration:`${t}ms`,animationPlayState:n?"running":"paused"};d&&(b.transform=`scaleX(${f})`);const w=Ks("Toastify__progress-bar",d?"Toastify__progress-bar--controlled":"Toastify__progress-bar--animated",`Toastify__progress-bar-theme--${g}`,`Toastify__progress-bar--${s}`,{"Toastify__progress-bar--rtl":h}),C=ds(l)?l({rtl:h,type:s,defaultClassName:w}):Ks(w,l),k={[d&&f>=1?"onTransitionEnd":"onAnimationEnd"]:d&&f<1?null:()=>{m&&r()}};return Oe.createElement("div",{className:"Toastify__progress-bar--wrp","data-hidden":x},Oe.createElement("div",{className:`Toastify__progress-bar--bg Toastify__progress-bar-theme--${g} Toastify__progress-bar--${s}`}),Oe.createElement("div",{role:"progressbar","aria-hidden":x?"true":"false","aria-label":"notification timer",className:C,style:b,...k}))}let AF=1;const uN=()=>""+AF++;function DF(e){return e&&(Ii(e.toastId)||ed(e.toastId))?e.toastId:uN()}function qu(e,t){return cN(e,t),t.toastId}function Lp(e,t){return{...t,type:t&&t.type||e,toastId:DF(t)}}function Af(e){return(t,n)=>qu(t,Lp(e,n))}function re(e,t){return qu(e,Lp("default",t))}re.loading=(e,t)=>qu(e,Lp("default",{isLoading:!0,autoClose:!1,closeOnClick:!1,closeButton:!1,draggable:!1,...t})),re.promise=function(e,t,n){let r,{pending:s,error:o,success:l}=t;s&&(r=Ii(s)?re.loading(s,n):re.loading(s.render,{...n,...s}));const u={isLoading:null,autoClose:null,closeOnClick:null,closeButton:null,draggable:null},d=(h,m,g)=>{if(m==null)return void re.dismiss(r);const x={type:h,...u,...n,data:g},b=Ii(m)?{render:m}:m;return r?re.update(r,{...x,...b}):re(b.render,{...x,...b}),g},f=ds(e)?e():e;return f.then(h=>d("success",l,h)).catch(h=>d("error",o,h)),f},re.success=Af("success"),re.info=Af("info"),re.error=Af("error"),re.warning=Af("warning"),re.warn=re.warning,re.dark=(e,t)=>qu(e,Lp("default",{theme:"dark",...t})),re.dismiss=function(e){(function(t){var n;if(iN()){if(t==null||Ii(n=t)||ed(n))Or.forEach(r=>{r.removeToast(t)});else if(t&&("containerId"in t||"id"in t)){const r=Or.get(t.containerId);r?r.removeToast(t.id):Or.forEach(s=>{s.removeToast(t.id)})}}else td=td.filter(r=>t!=null&&r.options.toastId!==t)})(e)},re.clearWaitingQueue=function(e){e===void 0&&(e={}),Or.forEach(t=>{!t.props.limit||e.containerId&&t.id!==e.containerId||t.clearQueue()})},re.isActive=lN,re.update=function(e,t){t===void 0&&(t={});const n=((r,s)=>{var o;let{containerId:l}=s;return(o=Or.get(l||1))==null?void 0:o.toasts.get(r)})(e,t);if(n){const{props:r,content:s}=n,o={delay:100,...r,...t,toastId:t.toastId||e,updateId:uN()};o.toastId!==e&&(o.staleId=e);const l=o.render||s;delete o.render,qu(l,o)}},re.done=e=>{re.update(e,{progress:1})},re.onChange=function(e){return Vy.add(e),()=>{Vy.delete(e)}},re.play=e=>PC(!0,e),re.pause=e=>PC(!1,e);const FF=typeof window<"u"?y.useLayoutEffect:y.useEffect,Df=e=>{let{theme:t,type:n,isLoading:r,...s}=e;return Oe.createElement("svg",{viewBox:"0 0 24 24",width:"100%",height:"100%",fill:t==="colored"?"currentColor":`var(--toastify-icon-color-${n})`,...s})},yv={info:function(e){return Oe.createElement(Df,{...e},Oe.createElement("path",{d:"M12 0a12 12 0 1012 12A12.013 12.013 0 0012 0zm.25 5a1.5 1.5 0 11-1.5 1.5 1.5 1.5 0 011.5-1.5zm2.25 13.5h-4a1 1 0 010-2h.75a.25.25 0 00.25-.25v-4.5a.25.25 0 00-.25-.25h-.75a1 1 0 010-2h1a2 2 0 012 2v4.75a.25.25 0 00.25.25h.75a1 1 0 110 2z"}))},warning:function(e){return Oe.createElement(Df,{...e},Oe.createElement("path",{d:"M23.32 17.191L15.438 2.184C14.728.833 13.416 0 11.996 0c-1.42 0-2.733.833-3.443 2.184L.533 17.448a4.744 4.744 0 000 4.368C1.243 23.167 2.555 24 3.975 24h16.05C22.22 24 24 22.044 24 19.632c0-.904-.251-1.746-.68-2.44zm-9.622 1.46c0 1.033-.724 1.823-1.698 1.823s-1.698-.79-1.698-1.822v-.043c0-1.028.724-1.822 1.698-1.822s1.698.79 1.698 1.822v.043zm.039-12.285l-.84 8.06c-.057.581-.408.943-.897.943-.49 0-.84-.367-.896-.942l-.84-8.065c-.057-.624.25-1.095.779-1.095h1.91c.528.005.84.476.784 1.1z"}))},success:function(e){return Oe.createElement(Df,{...e},Oe.createElement("path",{d:"M12 0a12 12 0 1012 12A12.014 12.014 0 0012 0zm6.927 8.2l-6.845 9.289a1.011 1.011 0 01-1.43.188l-4.888-3.908a1 1 0 111.25-1.562l4.076 3.261 6.227-8.451a1 1 0 111.61 1.183z"}))},error:function(e){return Oe.createElement(Df,{...e},Oe.createElement("path",{d:"M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"}))},spinner:function(){return Oe.createElement("div",{className:"Toastify__spinner"})}},LF=e=>{const{isRunning:t,preventExitTransition:n,toastRef:r,eventHandlers:s,playToast:o}=IF(e),{closeButton:l,children:u,autoClose:d,onClick:f,type:h,hideProgressBar:m,closeToast:g,transition:x,position:b,className:w,style:C,bodyClassName:k,bodyStyle:N,progressClassName:T,progressStyle:_,updateId:I,role:M,progress:A,rtl:O,toastId:F,deleteToast:z,isIn:Z,isLoading:B,closeOnClick:ce,theme:H}=e,oe=Ks("Toastify__toast",`Toastify__toast-theme--${H}`,`Toastify__toast--${h}`,{"Toastify__toast--rtl":O},{"Toastify__toast--close-on-click":ce}),Q=ds(w)?w({rtl:O,position:b,type:h,defaultClassName:oe}):Ks(oe,w),ne=(function(D){let{theme:J,type:ae,isLoading:ee,icon:ie}=D,ue=null;const j={theme:J,type:ae};return ie===!1||(ds(ie)?ue=ie({...j,isLoading:ee}):y.isValidElement(ie)?ue=y.cloneElement(ie,j):ee?ue=yv.spinner():(P=>P in yv)(ae)&&(ue=yv[ae](j))),ue})(e),V=!!A||!d,K={closeToast:g,type:h,theme:H};let U=null;return l===!1||(U=ds(l)?l(K):y.isValidElement(l)?y.cloneElement(l,K):(function(D){let{closeToast:J,theme:ae,ariaLabel:ee="close"}=D;return Oe.createElement("button",{className:`Toastify__close-button Toastify__close-button--${ae}`,type:"button",onClick:ie=>{ie.stopPropagation(),J(ie)},"aria-label":ee},Oe.createElement("svg",{"aria-hidden":"true",viewBox:"0 0 14 16"},Oe.createElement("path",{fillRule:"evenodd",d:"M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"})))})(K)),Oe.createElement(x,{isIn:Z,done:z,position:b,preventExitTransition:n,nodeRef:r,playToast:o},Oe.createElement("div",{id:F,onClick:f,"data-in":Z,className:Q,...s,style:C,ref:r},Oe.createElement("div",{...Z&&{role:M},className:ds(k)?k({type:h}):Ks("Toastify__toast-body",k),style:N},ne!=null&&Oe.createElement("div",{className:Ks("Toastify__toast-icon",{"Toastify--animate-icon Toastify__zoom-enter":!B})},ne),Oe.createElement("div",null,u)),U,Oe.createElement(OF,{...I&&!V?{key:`pb-${I}`}:{},rtl:O,theme:H,delay:d,isRunning:t,isIn:Z,closeToast:g,hide:m,type:h,style:_,className:T,controlledProgress:V,progress:A||0})))},jh=function(e,t){return t===void 0&&(t=!1),{enter:`Toastify--animate Toastify__${e}-enter`,exit:`Toastify--animate Toastify__${e}-exit`,appendPosition:t}},$F=Ch(jh("bounce",!0));Ch(jh("slide",!0));Ch(jh("zoom"));Ch(jh("flip"));const BF={position:"top-right",transition:$F,autoClose:5e3,closeButton:!0,pauseOnHover:!0,pauseOnFocusLoss:!0,draggable:"touch",draggablePercent:80,draggableDirection:"x",role:"alert",theme:"light"};function zF(e){let t={...BF,...e};const n=e.stacked,[r,s]=y.useState(!0),o=y.useRef(null),{getToastToRender:l,isToastActive:u,count:d}=PF(t),{className:f,style:h,rtl:m,containerId:g}=t;function x(w){const C=Ks("Toastify__toast-container",`Toastify__toast-container--${w}`,{"Toastify__toast-container--rtl":m});return ds(f)?f({position:w,rtl:m,defaultClassName:C}):Ks(C,mp(f))}function b(){n&&(s(!0),re.play())}return FF(()=>{if(n){var w;const C=o.current.querySelectorAll('[data-in="true"]'),k=12,N=(w=t.position)==null?void 0:w.includes("top");let T=0,_=0;Array.from(C).reverse().forEach((I,M)=>{const A=I;A.classList.add("Toastify__toast--stacked"),M>0&&(A.dataset.collapsed=`${r}`),A.dataset.pos||(A.dataset.pos=N?"top":"bot");const O=T*(r?.2:1)+(r?0:k*M);A.style.setProperty("--y",`${N?O:-1*O}px`),A.style.setProperty("--g",`${k}`),A.style.setProperty("--s",""+(1-(r?_:0))),T+=A.offsetHeight,_+=.025})}},[r,d,n]),Oe.createElement("div",{ref:o,className:"Toastify",id:g,onMouseEnter:()=>{n&&(s(!1),re.pause())},onMouseLeave:b},l((w,C)=>{const k=C.length?{...h}:{...h,pointerEvents:"none"};return Oe.createElement("div",{className:x(w),style:k,key:`container-${w}`},C.map(N=>{let{content:T,props:_}=N;return Oe.createElement(LF,{..._,stacked:n,collapseAll:b,isIn:u(_.toastId,_.containerId),style:_.style,key:`toast-${_.key}`},T)}))}))}const UF={theme:"system",setTheme:()=>null},dN=y.createContext(UF);function VF({children:e,defaultTheme:t="system",storageKey:n="vite-ui-theme",...r}){const[s,o]=y.useState(()=>localStorage.getItem(n)||t);y.useEffect(()=>{const u=window.document.documentElement;if(u.classList.remove("light","dark"),s==="system"){const d=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";u.classList.add(d);return}u.classList.add(s)},[s]);const l={theme:s,setTheme:u=>{localStorage.setItem(n,u),o(u)}};return a.jsx(dN.Provider,{...r,value:l,children:e})}const Gi=()=>{const e=y.useContext(dN);if(e===void 0)throw new Error("useTheme must be used within a ThemeProvider");return e};function fN(e,t){return function(){return e.apply(t,arguments)}}const{toString:qF}=Object.prototype,{getPrototypeOf:Zb}=Object,{iterator:kh,toStringTag:pN}=Symbol,Eh=(e=>t=>{const n=qF.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),Xs=e=>(e=e.toLowerCase(),t=>Eh(t)===e),Nh=e=>t=>typeof t===e,{isArray:yc}=Array,nc=Nh("undefined");function md(e){return e!==null&&!nc(e)&&e.constructor!==null&&!nc(e.constructor)&&Jr(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const hN=Xs("ArrayBuffer");function HF(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&hN(e.buffer),t}const KF=Nh("string"),Jr=Nh("function"),mN=Nh("number"),gd=e=>e!==null&&typeof e=="object",WF=e=>e===!0||e===!1,gp=e=>{if(Eh(e)!=="object")return!1;const t=Zb(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(pN in e)&&!(kh in e)},GF=e=>{if(!gd(e)||md(e))return!1;try{return Object.keys(e).length===0&&Object.getPrototypeOf(e)===Object.prototype}catch{return!1}},JF=Xs("Date"),QF=Xs("File"),YF=Xs("Blob"),ZF=Xs("FileList"),XF=e=>gd(e)&&Jr(e.pipe),e4=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||Jr(e.append)&&((t=Eh(e))==="formdata"||t==="object"&&Jr(e.toString)&&e.toString()==="[object FormData]"))},t4=Xs("URLSearchParams"),[n4,r4,s4,a4]=["ReadableStream","Request","Response","Headers"].map(Xs),o4=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function vd(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let r,s;if(typeof e!="object"&&(e=[e]),yc(e))for(r=0,s=e.length;r0;)if(s=n[r],t===s.toLowerCase())return s;return null}const Mi=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,vN=e=>!nc(e)&&e!==Mi;function qy(){const{caseless:e,skipUndefined:t}=vN(this)&&this||{},n={},r=(s,o)=>{const l=e&&gN(n,o)||o;gp(n[l])&&gp(s)?n[l]=qy(n[l],s):gp(s)?n[l]=qy({},s):yc(s)?n[l]=s.slice():(!t||!nc(s))&&(n[l]=s)};for(let s=0,o=arguments.length;s(vd(t,(s,o)=>{n&&Jr(s)?e[o]=fN(s,n):e[o]=s},{allOwnKeys:r}),e),l4=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),c4=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},u4=(e,t,n,r)=>{let s,o,l;const u={};if(t=t||{},e==null)return t;do{for(s=Object.getOwnPropertyNames(e),o=s.length;o-- >0;)l=s[o],(!r||r(l,e,t))&&!u[l]&&(t[l]=e[l],u[l]=!0);e=n!==!1&&Zb(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},d4=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return r!==-1&&r===n},f4=e=>{if(!e)return null;if(yc(e))return e;let t=e.length;if(!mN(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},p4=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&Zb(Uint8Array)),h4=(e,t)=>{const r=(e&&e[kh]).call(e);let s;for(;(s=r.next())&&!s.done;){const o=s.value;t.call(e,o[0],o[1])}},m4=(e,t)=>{let n;const r=[];for(;(n=e.exec(t))!==null;)r.push(n);return r},g4=Xs("HTMLFormElement"),v4=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,s){return r.toUpperCase()+s}),IC=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),y4=Xs("RegExp"),yN=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};vd(n,(s,o)=>{let l;(l=t(s,o,e))!==!1&&(r[o]=l||s)}),Object.defineProperties(e,r)},b4=e=>{yN(e,(t,n)=>{if(Jr(e)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=e[n];if(Jr(r)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},x4=(e,t)=>{const n={},r=s=>{s.forEach(o=>{n[o]=!0})};return yc(e)?r(e):r(String(e).split(t)),n},w4=()=>{},S4=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t;function C4(e){return!!(e&&Jr(e.append)&&e[pN]==="FormData"&&e[kh])}const j4=e=>{const t=new Array(10),n=(r,s)=>{if(gd(r)){if(t.indexOf(r)>=0)return;if(md(r))return r;if(!("toJSON"in r)){t[s]=r;const o=yc(r)?[]:{};return vd(r,(l,u)=>{const d=n(l,s+1);!nc(d)&&(o[u]=d)}),t[s]=void 0,o}}return r};return n(e,0)},k4=Xs("AsyncFunction"),E4=e=>e&&(gd(e)||Jr(e))&&Jr(e.then)&&Jr(e.catch),bN=((e,t)=>e?setImmediate:t?((n,r)=>(Mi.addEventListener("message",({source:s,data:o})=>{s===Mi&&o===n&&r.length&&r.shift()()},!1),s=>{r.push(s),Mi.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",Jr(Mi.postMessage)),N4=typeof queueMicrotask<"u"?queueMicrotask.bind(Mi):typeof process<"u"&&process.nextTick||bN,T4=e=>e!=null&&Jr(e[kh]),ve={isArray:yc,isArrayBuffer:hN,isBuffer:md,isFormData:e4,isArrayBufferView:HF,isString:KF,isNumber:mN,isBoolean:WF,isObject:gd,isPlainObject:gp,isEmptyObject:GF,isReadableStream:n4,isRequest:r4,isResponse:s4,isHeaders:a4,isUndefined:nc,isDate:JF,isFile:QF,isBlob:YF,isRegExp:y4,isFunction:Jr,isStream:XF,isURLSearchParams:t4,isTypedArray:p4,isFileList:ZF,forEach:vd,merge:qy,extend:i4,trim:o4,stripBOM:l4,inherits:c4,toFlatObject:u4,kindOf:Eh,kindOfTest:Xs,endsWith:d4,toArray:f4,forEachEntry:h4,matchAll:m4,isHTMLForm:g4,hasOwnProperty:IC,hasOwnProp:IC,reduceDescriptors:yN,freezeMethods:b4,toObjectSet:x4,toCamelCase:v4,noop:w4,toFiniteNumber:S4,findKey:gN,global:Mi,isContextDefined:vN,isSpecCompliantForm:C4,toJSONObject:j4,isAsyncFn:k4,isThenable:E4,setImmediate:bN,asap:N4,isIterable:T4};function It(e,t,n,r,s){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),s&&(this.response=s,this.status=s.status?s.status:null)}ve.inherits(It,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:ve.toJSONObject(this.config),code:this.code,status:this.status}}});const xN=It.prototype,wN={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{wN[e]={value:e}});Object.defineProperties(It,wN);Object.defineProperty(xN,"isAxiosError",{value:!0});It.from=(e,t,n,r,s,o)=>{const l=Object.create(xN);ve.toFlatObject(e,l,function(h){return h!==Error.prototype},f=>f!=="isAxiosError");const u=e&&e.message?e.message:"Error",d=t==null&&e?e.code:t;return It.call(l,u,d,n,r,s),e&&l.cause==null&&Object.defineProperty(l,"cause",{value:e,configurable:!0}),l.name=e&&e.name||"Error",o&&Object.assign(l,o),l};const M4=null;function Hy(e){return ve.isPlainObject(e)||ve.isArray(e)}function SN(e){return ve.endsWith(e,"[]")?e.slice(0,-2):e}function OC(e,t,n){return e?e.concat(t).map(function(s,o){return s=SN(s),!n&&o?"["+s+"]":s}).join(n?".":""):t}function _4(e){return ve.isArray(e)&&!e.some(Hy)}const R4=ve.toFlatObject(ve,{},null,function(t){return/^is[A-Z]/.test(t)});function Th(e,t,n){if(!ve.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=ve.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(w,C){return!ve.isUndefined(C[w])});const r=n.metaTokens,s=n.visitor||h,o=n.dots,l=n.indexes,d=(n.Blob||typeof Blob<"u"&&Blob)&&ve.isSpecCompliantForm(t);if(!ve.isFunction(s))throw new TypeError("visitor must be a function");function f(b){if(b===null)return"";if(ve.isDate(b))return b.toISOString();if(ve.isBoolean(b))return b.toString();if(!d&&ve.isBlob(b))throw new It("Blob is not supported. Use a Buffer instead.");return ve.isArrayBuffer(b)||ve.isTypedArray(b)?d&&typeof Blob=="function"?new Blob([b]):Buffer.from(b):b}function h(b,w,C){let k=b;if(b&&!C&&typeof b=="object"){if(ve.endsWith(w,"{}"))w=r?w:w.slice(0,-2),b=JSON.stringify(b);else if(ve.isArray(b)&&_4(b)||(ve.isFileList(b)||ve.endsWith(w,"[]"))&&(k=ve.toArray(b)))return w=SN(w),k.forEach(function(T,_){!(ve.isUndefined(T)||T===null)&&t.append(l===!0?OC([w],_,o):l===null?w:w+"[]",f(T))}),!1}return Hy(b)?!0:(t.append(OC(C,w,o),f(b)),!1)}const m=[],g=Object.assign(R4,{defaultVisitor:h,convertValue:f,isVisitable:Hy});function x(b,w){if(!ve.isUndefined(b)){if(m.indexOf(b)!==-1)throw Error("Circular reference detected in "+w.join("."));m.push(b),ve.forEach(b,function(k,N){(!(ve.isUndefined(k)||k===null)&&s.call(t,k,ve.isString(N)?N.trim():N,w,g))===!0&&x(k,w?w.concat(N):[N])}),m.pop()}}if(!ve.isObject(e))throw new TypeError("data must be an object");return x(e),t}function AC(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(r){return t[r]})}function Xb(e,t){this._pairs=[],e&&Th(e,this,t)}const CN=Xb.prototype;CN.append=function(t,n){this._pairs.push([t,n])};CN.toString=function(t){const n=t?function(r){return t.call(this,r,AC)}:AC;return this._pairs.map(function(s){return n(s[0])+"="+n(s[1])},"").join("&")};function P4(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function jN(e,t,n){if(!t)return e;const r=n&&n.encode||P4;ve.isFunction(n)&&(n={serialize:n});const s=n&&n.serialize;let o;if(s?o=s(t,n):o=ve.isURLSearchParams(t)?t.toString():new Xb(t,n).toString(r),o){const l=e.indexOf("#");l!==-1&&(e=e.slice(0,l)),e+=(e.indexOf("?")===-1?"?":"&")+o}return e}class DC{constructor(){this.handlers=[]}use(t,n,r){return this.handlers.push({fulfilled:t,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){ve.forEach(this.handlers,function(r){r!==null&&t(r)})}}const kN={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},I4=typeof URLSearchParams<"u"?URLSearchParams:Xb,O4=typeof FormData<"u"?FormData:null,A4=typeof Blob<"u"?Blob:null,D4={isBrowser:!0,classes:{URLSearchParams:I4,FormData:O4,Blob:A4},protocols:["http","https","file","blob","url","data"]},ex=typeof window<"u"&&typeof document<"u",Ky=typeof navigator=="object"&&navigator||void 0,F4=ex&&(!Ky||["ReactNative","NativeScript","NS"].indexOf(Ky.product)<0),L4=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",$4=ex&&window.location.href||"http://localhost",B4=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:ex,hasStandardBrowserEnv:F4,hasStandardBrowserWebWorkerEnv:L4,navigator:Ky,origin:$4},Symbol.toStringTag,{value:"Module"})),Cr={...B4,...D4};function z4(e,t){return Th(e,new Cr.classes.URLSearchParams,{visitor:function(n,r,s,o){return Cr.isNode&&ve.isBuffer(n)?(this.append(r,n.toString("base64")),!1):o.defaultVisitor.apply(this,arguments)},...t})}function U4(e){return ve.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function V4(e){const t={},n=Object.keys(e);let r;const s=n.length;let o;for(r=0;r=n.length;return l=!l&&ve.isArray(s)?s.length:l,d?(ve.hasOwnProp(s,l)?s[l]=[s[l],r]:s[l]=r,!u):((!s[l]||!ve.isObject(s[l]))&&(s[l]=[]),t(n,r,s[l],o)&&ve.isArray(s[l])&&(s[l]=V4(s[l])),!u)}if(ve.isFormData(e)&&ve.isFunction(e.entries)){const n={};return ve.forEachEntry(e,(r,s)=>{t(U4(r),s,n,0)}),n}return null}function q4(e,t,n){if(ve.isString(e))try{return(t||JSON.parse)(e),ve.trim(e)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(e)}const yd={transitional:kN,adapter:["xhr","http","fetch"],transformRequest:[function(t,n){const r=n.getContentType()||"",s=r.indexOf("application/json")>-1,o=ve.isObject(t);if(o&&ve.isHTMLForm(t)&&(t=new FormData(t)),ve.isFormData(t))return s?JSON.stringify(EN(t)):t;if(ve.isArrayBuffer(t)||ve.isBuffer(t)||ve.isStream(t)||ve.isFile(t)||ve.isBlob(t)||ve.isReadableStream(t))return t;if(ve.isArrayBufferView(t))return t.buffer;if(ve.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let u;if(o){if(r.indexOf("application/x-www-form-urlencoded")>-1)return z4(t,this.formSerializer).toString();if((u=ve.isFileList(t))||r.indexOf("multipart/form-data")>-1){const d=this.env&&this.env.FormData;return Th(u?{"files[]":t}:t,d&&new d,this.formSerializer)}}return o||s?(n.setContentType("application/json",!1),q4(t)):t}],transformResponse:[function(t){const n=this.transitional||yd.transitional,r=n&&n.forcedJSONParsing,s=this.responseType==="json";if(ve.isResponse(t)||ve.isReadableStream(t))return t;if(t&&ve.isString(t)&&(r&&!this.responseType||s)){const l=!(n&&n.silentJSONParsing)&&s;try{return JSON.parse(t,this.parseReviver)}catch(u){if(l)throw u.name==="SyntaxError"?It.from(u,It.ERR_BAD_RESPONSE,this,null,this.response):u}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Cr.classes.FormData,Blob:Cr.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};ve.forEach(["delete","get","head","post","put","patch"],e=>{yd.headers[e]={}});const H4=ve.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),K4=e=>{const t={};let n,r,s;return e&&e.split(` +`).forEach(function(l){s=l.indexOf(":"),n=l.substring(0,s).trim().toLowerCase(),r=l.substring(s+1).trim(),!(!n||t[n]&&H4[n])&&(n==="set-cookie"?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t},FC=Symbol("internals");function wu(e){return e&&String(e).trim().toLowerCase()}function vp(e){return e===!1||e==null?e:ve.isArray(e)?e.map(vp):String(e)}function W4(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}const G4=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function bv(e,t,n,r,s){if(ve.isFunction(r))return r.call(this,t,n);if(s&&(t=n),!!ve.isString(t)){if(ve.isString(r))return t.indexOf(r)!==-1;if(ve.isRegExp(r))return r.test(t)}}function J4(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,r)=>n.toUpperCase()+r)}function Q4(e,t){const n=ve.toCamelCase(" "+t);["get","set","has"].forEach(r=>{Object.defineProperty(e,r+n,{value:function(s,o,l){return this[r].call(this,t,s,o,l)},configurable:!0})})}let Qr=class{constructor(t){t&&this.set(t)}set(t,n,r){const s=this;function o(u,d,f){const h=wu(d);if(!h)throw new Error("header name must be a non-empty string");const m=ve.findKey(s,h);(!m||s[m]===void 0||f===!0||f===void 0&&s[m]!==!1)&&(s[m||d]=vp(u))}const l=(u,d)=>ve.forEach(u,(f,h)=>o(f,h,d));if(ve.isPlainObject(t)||t instanceof this.constructor)l(t,n);else if(ve.isString(t)&&(t=t.trim())&&!G4(t))l(K4(t),n);else if(ve.isObject(t)&&ve.isIterable(t)){let u={},d,f;for(const h of t){if(!ve.isArray(h))throw TypeError("Object iterator must return a key-value pair");u[f=h[0]]=(d=u[f])?ve.isArray(d)?[...d,h[1]]:[d,h[1]]:h[1]}l(u,n)}else t!=null&&o(n,t,r);return this}get(t,n){if(t=wu(t),t){const r=ve.findKey(this,t);if(r){const s=this[r];if(!n)return s;if(n===!0)return W4(s);if(ve.isFunction(n))return n.call(this,s,r);if(ve.isRegExp(n))return n.exec(s);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=wu(t),t){const r=ve.findKey(this,t);return!!(r&&this[r]!==void 0&&(!n||bv(this,this[r],r,n)))}return!1}delete(t,n){const r=this;let s=!1;function o(l){if(l=wu(l),l){const u=ve.findKey(r,l);u&&(!n||bv(r,r[u],u,n))&&(delete r[u],s=!0)}}return ve.isArray(t)?t.forEach(o):o(t),s}clear(t){const n=Object.keys(this);let r=n.length,s=!1;for(;r--;){const o=n[r];(!t||bv(this,this[o],o,t,!0))&&(delete this[o],s=!0)}return s}normalize(t){const n=this,r={};return ve.forEach(this,(s,o)=>{const l=ve.findKey(r,o);if(l){n[l]=vp(s),delete n[o];return}const u=t?J4(o):String(o).trim();u!==o&&delete n[o],n[u]=vp(s),r[u]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return ve.forEach(this,(r,s)=>{r!=null&&r!==!1&&(n[s]=t&&ve.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(` +`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const r=new this(t);return n.forEach(s=>r.set(s)),r}static accessor(t){const r=(this[FC]=this[FC]={accessors:{}}).accessors,s=this.prototype;function o(l){const u=wu(l);r[u]||(Q4(s,l),r[u]=!0)}return ve.isArray(t)?t.forEach(o):o(t),this}};Qr.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);ve.reduceDescriptors(Qr.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(r){this[n]=r}}});ve.freezeMethods(Qr);function xv(e,t){const n=this||yd,r=t||n,s=Qr.from(r.headers);let o=r.data;return ve.forEach(e,function(u){o=u.call(n,o,s.normalize(),t?t.status:void 0)}),s.normalize(),o}function NN(e){return!!(e&&e.__CANCEL__)}function bc(e,t,n){It.call(this,e??"canceled",It.ERR_CANCELED,t,n),this.name="CanceledError"}ve.inherits(bc,It,{__CANCEL__:!0});function TN(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new It("Request failed with status code "+n.status,[It.ERR_BAD_REQUEST,It.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function Y4(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function Z4(e,t){e=e||10;const n=new Array(e),r=new Array(e);let s=0,o=0,l;return t=t!==void 0?t:1e3,function(d){const f=Date.now(),h=r[o];l||(l=f),n[s]=d,r[s]=f;let m=o,g=0;for(;m!==s;)g+=n[m++],m=m%e;if(s=(s+1)%e,s===o&&(o=(o+1)%e),f-l{n=h,s=null,o&&(clearTimeout(o),o=null),e(...f)};return[(...f)=>{const h=Date.now(),m=h-n;m>=r?l(f,h):(s=f,o||(o=setTimeout(()=>{o=null,l(s)},r-m)))},()=>s&&l(s)]}const $p=(e,t,n=3)=>{let r=0;const s=Z4(50,250);return X4(o=>{const l=o.loaded,u=o.lengthComputable?o.total:void 0,d=l-r,f=s(d),h=l<=u;r=l;const m={loaded:l,total:u,progress:u?l/u:void 0,bytes:d,rate:f||void 0,estimated:f&&u&&h?(u-l)/f:void 0,event:o,lengthComputable:u!=null,[t?"download":"upload"]:!0};e(m)},n)},LC=(e,t)=>{const n=e!=null;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},$C=e=>(...t)=>ve.asap(()=>e(...t)),eL=Cr.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,Cr.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(Cr.origin),Cr.navigator&&/(msie|trident)/i.test(Cr.navigator.userAgent)):()=>!0,tL=Cr.hasStandardBrowserEnv?{write(e,t,n,r,s,o){const l=[e+"="+encodeURIComponent(t)];ve.isNumber(n)&&l.push("expires="+new Date(n).toGMTString()),ve.isString(r)&&l.push("path="+r),ve.isString(s)&&l.push("domain="+s),o===!0&&l.push("secure"),document.cookie=l.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function nL(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function rL(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function MN(e,t,n){let r=!nL(t);return e&&(r||n==!1)?rL(e,t):t}const BC=e=>e instanceof Qr?{...e}:e;function Li(e,t){t=t||{};const n={};function r(f,h,m,g){return ve.isPlainObject(f)&&ve.isPlainObject(h)?ve.merge.call({caseless:g},f,h):ve.isPlainObject(h)?ve.merge({},h):ve.isArray(h)?h.slice():h}function s(f,h,m,g){if(ve.isUndefined(h)){if(!ve.isUndefined(f))return r(void 0,f,m,g)}else return r(f,h,m,g)}function o(f,h){if(!ve.isUndefined(h))return r(void 0,h)}function l(f,h){if(ve.isUndefined(h)){if(!ve.isUndefined(f))return r(void 0,f)}else return r(void 0,h)}function u(f,h,m){if(m in t)return r(f,h);if(m in e)return r(void 0,f)}const d={url:o,method:o,data:o,baseURL:l,transformRequest:l,transformResponse:l,paramsSerializer:l,timeout:l,timeoutMessage:l,withCredentials:l,withXSRFToken:l,adapter:l,responseType:l,xsrfCookieName:l,xsrfHeaderName:l,onUploadProgress:l,onDownloadProgress:l,decompress:l,maxContentLength:l,maxBodyLength:l,beforeRedirect:l,transport:l,httpAgent:l,httpsAgent:l,cancelToken:l,socketPath:l,responseEncoding:l,validateStatus:u,headers:(f,h,m)=>s(BC(f),BC(h),m,!0)};return ve.forEach(Object.keys({...e,...t}),function(h){const m=d[h]||s,g=m(e[h],t[h],h);ve.isUndefined(g)&&m!==u||(n[h]=g)}),n}const _N=e=>{const t=Li({},e);let{data:n,withXSRFToken:r,xsrfHeaderName:s,xsrfCookieName:o,headers:l,auth:u}=t;if(t.headers=l=Qr.from(l),t.url=jN(MN(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),u&&l.set("Authorization","Basic "+btoa((u.username||"")+":"+(u.password?unescape(encodeURIComponent(u.password)):""))),ve.isFormData(n)){if(Cr.hasStandardBrowserEnv||Cr.hasStandardBrowserWebWorkerEnv)l.setContentType(void 0);else if(ve.isFunction(n.getHeaders)){const d=n.getHeaders(),f=["content-type","content-length"];Object.entries(d).forEach(([h,m])=>{f.includes(h.toLowerCase())&&l.set(h,m)})}}if(Cr.hasStandardBrowserEnv&&(r&&ve.isFunction(r)&&(r=r(t)),r||r!==!1&&eL(t.url))){const d=s&&o&&tL.read(o);d&&l.set(s,d)}return t},sL=typeof XMLHttpRequest<"u",aL=sL&&function(e){return new Promise(function(n,r){const s=_N(e);let o=s.data;const l=Qr.from(s.headers).normalize();let{responseType:u,onUploadProgress:d,onDownloadProgress:f}=s,h,m,g,x,b;function w(){x&&x(),b&&b(),s.cancelToken&&s.cancelToken.unsubscribe(h),s.signal&&s.signal.removeEventListener("abort",h)}let C=new XMLHttpRequest;C.open(s.method.toUpperCase(),s.url,!0),C.timeout=s.timeout;function k(){if(!C)return;const T=Qr.from("getAllResponseHeaders"in C&&C.getAllResponseHeaders()),I={data:!u||u==="text"||u==="json"?C.responseText:C.response,status:C.status,statusText:C.statusText,headers:T,config:e,request:C};TN(function(A){n(A),w()},function(A){r(A),w()},I),C=null}"onloadend"in C?C.onloadend=k:C.onreadystatechange=function(){!C||C.readyState!==4||C.status===0&&!(C.responseURL&&C.responseURL.indexOf("file:")===0)||setTimeout(k)},C.onabort=function(){C&&(r(new It("Request aborted",It.ECONNABORTED,e,C)),C=null)},C.onerror=function(_){const I=_&&_.message?_.message:"Network Error",M=new It(I,It.ERR_NETWORK,e,C);M.event=_||null,r(M),C=null},C.ontimeout=function(){let _=s.timeout?"timeout of "+s.timeout+"ms exceeded":"timeout exceeded";const I=s.transitional||kN;s.timeoutErrorMessage&&(_=s.timeoutErrorMessage),r(new It(_,I.clarifyTimeoutError?It.ETIMEDOUT:It.ECONNABORTED,e,C)),C=null},o===void 0&&l.setContentType(null),"setRequestHeader"in C&&ve.forEach(l.toJSON(),function(_,I){C.setRequestHeader(I,_)}),ve.isUndefined(s.withCredentials)||(C.withCredentials=!!s.withCredentials),u&&u!=="json"&&(C.responseType=s.responseType),f&&([g,b]=$p(f,!0),C.addEventListener("progress",g)),d&&C.upload&&([m,x]=$p(d),C.upload.addEventListener("progress",m),C.upload.addEventListener("loadend",x)),(s.cancelToken||s.signal)&&(h=T=>{C&&(r(!T||T.type?new bc(null,e,C):T),C.abort(),C=null)},s.cancelToken&&s.cancelToken.subscribe(h),s.signal&&(s.signal.aborted?h():s.signal.addEventListener("abort",h)));const N=Y4(s.url);if(N&&Cr.protocols.indexOf(N)===-1){r(new It("Unsupported protocol "+N+":",It.ERR_BAD_REQUEST,e));return}C.send(o||null)})},oL=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let r=new AbortController,s;const o=function(f){if(!s){s=!0,u();const h=f instanceof Error?f:this.reason;r.abort(h instanceof It?h:new bc(h instanceof Error?h.message:h))}};let l=t&&setTimeout(()=>{l=null,o(new It(`timeout ${t} of ms exceeded`,It.ETIMEDOUT))},t);const u=()=>{e&&(l&&clearTimeout(l),l=null,e.forEach(f=>{f.unsubscribe?f.unsubscribe(o):f.removeEventListener("abort",o)}),e=null)};e.forEach(f=>f.addEventListener("abort",o));const{signal:d}=r;return d.unsubscribe=()=>ve.asap(u),d}},iL=function*(e,t){let n=e.byteLength;if(n{const s=lL(e,t);let o=0,l,u=d=>{l||(l=!0,r&&r(d))};return new ReadableStream({async pull(d){try{const{done:f,value:h}=await s.next();if(f){u(),d.close();return}let m=h.byteLength;if(n){let g=o+=m;n(g)}d.enqueue(new Uint8Array(h))}catch(f){throw u(f),f}},cancel(d){return u(d),s.return()}},{highWaterMark:2})},UC=64*1024,{isFunction:Ff}=ve,uL=(({Request:e,Response:t})=>({Request:e,Response:t}))(ve.global),{ReadableStream:VC,TextEncoder:qC}=ve.global,HC=(e,...t)=>{try{return!!e(...t)}catch{return!1}},dL=e=>{e=ve.merge.call({skipUndefined:!0},uL,e);const{fetch:t,Request:n,Response:r}=e,s=t?Ff(t):typeof fetch=="function",o=Ff(n),l=Ff(r);if(!s)return!1;const u=s&&Ff(VC),d=s&&(typeof qC=="function"?(b=>w=>b.encode(w))(new qC):async b=>new Uint8Array(await new n(b).arrayBuffer())),f=o&&u&&HC(()=>{let b=!1;const w=new n(Cr.origin,{body:new VC,method:"POST",get duplex(){return b=!0,"half"}}).headers.has("Content-Type");return b&&!w}),h=l&&u&&HC(()=>ve.isReadableStream(new r("").body)),m={stream:h&&(b=>b.body)};s&&["text","arrayBuffer","blob","formData","stream"].forEach(b=>{!m[b]&&(m[b]=(w,C)=>{let k=w&&w[b];if(k)return k.call(w);throw new It(`Response type '${b}' is not supported`,It.ERR_NOT_SUPPORT,C)})});const g=async b=>{if(b==null)return 0;if(ve.isBlob(b))return b.size;if(ve.isSpecCompliantForm(b))return(await new n(Cr.origin,{method:"POST",body:b}).arrayBuffer()).byteLength;if(ve.isArrayBufferView(b)||ve.isArrayBuffer(b))return b.byteLength;if(ve.isURLSearchParams(b)&&(b=b+""),ve.isString(b))return(await d(b)).byteLength},x=async(b,w)=>{const C=ve.toFiniteNumber(b.getContentLength());return C??g(w)};return async b=>{let{url:w,method:C,data:k,signal:N,cancelToken:T,timeout:_,onDownloadProgress:I,onUploadProgress:M,responseType:A,headers:O,withCredentials:F="same-origin",fetchOptions:z}=_N(b),Z=t||fetch;A=A?(A+"").toLowerCase():"text";let B=oL([N,T&&T.toAbortSignal()],_),ce=null;const H=B&&B.unsubscribe&&(()=>{B.unsubscribe()});let oe;try{if(M&&f&&C!=="get"&&C!=="head"&&(oe=await x(O,k))!==0){let D=new n(w,{method:"POST",body:k,duplex:"half"}),J;if(ve.isFormData(k)&&(J=D.headers.get("content-type"))&&O.setContentType(J),D.body){const[ae,ee]=LC(oe,$p($C(M)));k=zC(D.body,UC,ae,ee)}}ve.isString(F)||(F=F?"include":"omit");const Q=o&&"credentials"in n.prototype,ne={...z,signal:B,method:C.toUpperCase(),headers:O.normalize().toJSON(),body:k,duplex:"half",credentials:Q?F:void 0};ce=o&&new n(w,ne);let V=await(o?Z(ce,z):Z(w,ne));const K=h&&(A==="stream"||A==="response");if(h&&(I||K&&H)){const D={};["status","statusText","headers"].forEach(ie=>{D[ie]=V[ie]});const J=ve.toFiniteNumber(V.headers.get("content-length")),[ae,ee]=I&&LC(J,$p($C(I),!0))||[];V=new r(zC(V.body,UC,ae,()=>{ee&&ee(),H&&H()}),D)}A=A||"text";let U=await m[ve.findKey(m,A)||"text"](V,b);return!K&&H&&H(),await new Promise((D,J)=>{TN(D,J,{data:U,headers:Qr.from(V.headers),status:V.status,statusText:V.statusText,config:b,request:ce})})}catch(Q){throw H&&H(),Q&&Q.name==="TypeError"&&/Load failed|fetch/i.test(Q.message)?Object.assign(new It("Network Error",It.ERR_NETWORK,b,ce),{cause:Q.cause||Q}):It.from(Q,Q&&Q.code,b,ce)}}},fL=new Map,RN=e=>{let t=e?e.env:{};const{fetch:n,Request:r,Response:s}=t,o=[r,s,n];let l=o.length,u=l,d,f,h=fL;for(;u--;)d=o[u],f=h.get(d),f===void 0&&h.set(d,f=u?new Map:dL(t)),h=f;return f};RN();const Wy={http:M4,xhr:aL,fetch:{get:RN}};ve.forEach(Wy,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const KC=e=>`- ${e}`,pL=e=>ve.isFunction(e)||e===null||e===!1,PN={getAdapter:(e,t)=>{e=ve.isArray(e)?e:[e];const{length:n}=e;let r,s;const o={};for(let l=0;l`adapter ${d} `+(f===!1?"is not supported by the environment":"is not available in the build"));let u=n?l.length>1?`since : +`+l.map(KC).join(` +`):" "+KC(l[0]):"as no adapter specified";throw new It("There is no suitable adapter to dispatch the request "+u,"ERR_NOT_SUPPORT")}return s},adapters:Wy};function wv(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new bc(null,e)}function WC(e){return wv(e),e.headers=Qr.from(e.headers),e.data=xv.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),PN.getAdapter(e.adapter||yd.adapter,e)(e).then(function(r){return wv(e),r.data=xv.call(e,e.transformResponse,r),r.headers=Qr.from(r.headers),r},function(r){return NN(r)||(wv(e),r&&r.response&&(r.response.data=xv.call(e,e.transformResponse,r.response),r.response.headers=Qr.from(r.response.headers))),Promise.reject(r)})}const IN="1.12.2",Mh={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{Mh[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const GC={};Mh.transitional=function(t,n,r){function s(o,l){return"[Axios v"+IN+"] Transitional option '"+o+"'"+l+(r?". "+r:"")}return(o,l,u)=>{if(t===!1)throw new It(s(l," has been removed"+(n?" in "+n:"")),It.ERR_DEPRECATED);return n&&!GC[l]&&(GC[l]=!0,console.warn(s(l," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(o,l,u):!0}};Mh.spelling=function(t){return(n,r)=>(console.warn(`${r} is likely a misspelling of ${t}`),!0)};function hL(e,t,n){if(typeof e!="object")throw new It("options must be an object",It.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let s=r.length;for(;s-- >0;){const o=r[s],l=t[o];if(l){const u=e[o],d=u===void 0||l(u,o,e);if(d!==!0)throw new It("option "+o+" must be "+d,It.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new It("Unknown option "+o,It.ERR_BAD_OPTION)}}const yp={assertOptions:hL,validators:Mh},da=yp.validators;let Oi=class{constructor(t){this.defaults=t||{},this.interceptors={request:new DC,response:new DC}}async request(t,n){try{return await this._request(t,n)}catch(r){if(r instanceof Error){let s={};Error.captureStackTrace?Error.captureStackTrace(s):s=new Error;const o=s.stack?s.stack.replace(/^.+\n/,""):"";try{r.stack?o&&!String(r.stack).endsWith(o.replace(/^.+\n.+\n/,""))&&(r.stack+=` +`+o):r.stack=o}catch{}}throw r}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=Li(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:o}=n;r!==void 0&&yp.assertOptions(r,{silentJSONParsing:da.transitional(da.boolean),forcedJSONParsing:da.transitional(da.boolean),clarifyTimeoutError:da.transitional(da.boolean)},!1),s!=null&&(ve.isFunction(s)?n.paramsSerializer={serialize:s}:yp.assertOptions(s,{encode:da.function,serialize:da.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),yp.assertOptions(n,{baseUrl:da.spelling("baseURL"),withXsrfToken:da.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let l=o&&ve.merge(o.common,o[n.method]);o&&ve.forEach(["delete","get","head","post","put","patch","common"],b=>{delete o[b]}),n.headers=Qr.concat(l,o);const u=[];let d=!0;this.interceptors.request.forEach(function(w){typeof w.runWhen=="function"&&w.runWhen(n)===!1||(d=d&&w.synchronous,u.unshift(w.fulfilled,w.rejected))});const f=[];this.interceptors.response.forEach(function(w){f.push(w.fulfilled,w.rejected)});let h,m=0,g;if(!d){const b=[WC.bind(this),void 0];for(b.unshift(...u),b.push(...f),g=b.length,h=Promise.resolve(n);m{if(!r._listeners)return;let o=r._listeners.length;for(;o-- >0;)r._listeners[o](s);r._listeners=null}),this.promise.then=s=>{let o;const l=new Promise(u=>{r.subscribe(u),o=u}).then(s);return l.cancel=function(){r.unsubscribe(o)},l},t(function(o,l,u){r.reason||(r.reason=new bc(o,l,u),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=r=>{t.abort(r)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new ON(function(s){t=s}),cancel:t}}};function gL(e){return function(n){return e.apply(null,n)}}function vL(e){return ve.isObject(e)&&e.isAxiosError===!0}const Gy={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Gy).forEach(([e,t])=>{Gy[t]=e});function AN(e){const t=new Oi(e),n=fN(Oi.prototype.request,t);return ve.extend(n,Oi.prototype,t,{allOwnKeys:!0}),ve.extend(n,t,null,{allOwnKeys:!0}),n.create=function(s){return AN(Li(e,s))},n}const cn=AN(yd);cn.Axios=Oi;cn.CanceledError=bc;cn.CancelToken=mL;cn.isCancel=NN;cn.VERSION=IN;cn.toFormData=Th;cn.AxiosError=It;cn.Cancel=cn.CanceledError;cn.all=function(t){return Promise.all(t)};cn.spread=gL;cn.isAxiosError=vL;cn.mergeConfig=Li;cn.AxiosHeaders=Qr;cn.formToJSON=e=>EN(ve.isHTMLForm(e)?new FormData(e):e);cn.getAdapter=PN.getAdapter;cn.HttpStatusCode=Gy;cn.default=cn;const{Axios:nce,AxiosError:yL,CanceledError:rce,isCancel:sce,CancelToken:ace,VERSION:oce,all:ice,Cancel:lce,isAxiosError:DN,spread:cce,toFormData:uce,AxiosHeaders:dce,HttpStatusCode:fce,formToJSON:pce,getAdapter:hce,mergeConfig:mce}=cn;let Sv=!1;const FN=new lD({defaultOptions:{queries:{staleTime:1e3*60*5,retry(e,t){if(t instanceof yL){const n=t.response?.status;if(n&&n>=400&&n<500)return!1}return e>=3?(Sv===!1&&(Sv=!0,re.error("The application is taking longer than expected to load, please try again in a few minutes.",{onClose:()=>{Sv=!1}})),!1):!0}}}}),tx="api";var Ln=(e=>(e.API_URL="apiUrl",e.TOKEN="token",e.INSTANCE_ID="instanceId",e.INSTANCE_NAME="instanceName",e.INSTANCE_TOKEN="instanceToken",e.VERSION="version",e.FACEBOOK_APP_ID="facebookAppId",e.FACEBOOK_CONFIG_ID="facebookConfigId",e.FACEBOOK_USER_TOKEN="facebookUserToken",e.CLIENT_NAME="clientName",e.PROVIDER="provider",e))(Ln||{});const bp=async e=>{if(e.url){const t=e.url.endsWith("/")?e.url.slice(0,-1):e.url;localStorage.setItem("apiUrl",t)}e.token&&localStorage.setItem("token",e.token),e.version&&localStorage.setItem("version",e.version),e.facebookAppId&&localStorage.setItem("facebookAppId",e.facebookAppId),e.facebookConfigId&&localStorage.setItem("facebookConfigId",e.facebookConfigId),e.facebookUserToken&&localStorage.setItem("facebookUserToken",e.facebookUserToken),e.clientName&&localStorage.setItem("clientName",e.clientName),e.provider&&localStorage.setItem("provider",e.provider)},Jy=()=>{localStorage.removeItem("apiUrl"),localStorage.removeItem("token"),localStorage.removeItem("version"),localStorage.removeItem("facebookAppId"),localStorage.removeItem("facebookConfigId"),localStorage.removeItem("facebookUserToken"),localStorage.removeItem("clientName"),localStorage.removeItem("provider")},jr=e=>localStorage.getItem(e),Fr=()=>localStorage.getItem("provider")==="go"?"go":tx,LN={dashboard:{api:!0,go:!0},chat:{api:!0,go:!1},settings:{api:!0,go:!0},proxy:{api:!0,go:!0},webhook:{api:!0,go:!0},websocket:{api:!0,go:!1},rabbitmq:{api:!0,go:!1},sqs:{api:!0,go:!1},evoai:{api:!0,go:!1},n8n:{api:!0,go:!1},evolutionBot:{api:!0,go:!1},chatwoot:{api:!0,go:!1},typebot:{api:!0,go:!1},openai:{api:!0,go:!1},dify:{api:!0,go:!1},flowise:{api:!0,go:!1}},$N=(e,t)=>{const n=Fr();return LN[e][n]},wn=({children:e,feature:t})=>{const n=jr(Ln.API_URL),r=jr(Ln.TOKEN),s=jr(Ln.VERSION);return(Fr()==="go"?!!n&&!!r:!!n&&!!r&&!!s)?t&&!$N(t)?a.jsx($y,{to:"/manager/"}):e:a.jsx($y,{to:"/manager/login"})},bL=({children:e})=>{const t=jr(Ln.API_URL),n=jr(Ln.TOKEN),r=jr(Ln.VERSION);return(Fr()==="go"?!!t&&!!n:!!t&&!!n&&!!r)?a.jsx($y,{to:"/"}):e},xL=(e,t)=>{const n=new Array(e.length+t.length);for(let r=0;r({classGroupId:e,validator:t}),BN=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),Bp="-",JC=[],SL="arbitrary..",CL=e=>{const t=kL(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:l=>{if(l.startsWith("[")&&l.endsWith("]"))return jL(l);const u=l.split(Bp),d=u[0]===""&&u.length>1?1:0;return zN(u,d,t)},getConflictingClassGroupIds:(l,u)=>{if(u){const d=r[l],f=n[l];return d?f?xL(f,d):d:f||JC}return n[l]||JC}}},zN=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;const s=e[t],o=n.nextPart.get(s);if(o){const f=zN(e,t+1,o);if(f)return f}const l=n.validators;if(l===null)return;const u=t===0?e.join(Bp):e.slice(t).join(Bp),d=l.length;for(let f=0;fe.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const t=e.slice(1,-1),n=t.indexOf(":"),r=t.slice(0,n);return r?SL+r:void 0})(),kL=e=>{const{theme:t,classGroups:n}=e;return EL(n,t)},EL=(e,t)=>{const n=BN();for(const r in e){const s=e[r];nx(s,n,r,t)}return n},nx=(e,t,n,r)=>{const s=e.length;for(let o=0;o{if(typeof e=="string"){TL(e,t,n);return}if(typeof e=="function"){ML(e,t,n,r);return}_L(e,t,n,r)},TL=(e,t,n)=>{const r=e===""?t:UN(t,e);r.classGroupId=n},ML=(e,t,n,r)=>{if(RL(e)){nx(e(r),t,n,r);return}t.validators===null&&(t.validators=[]),t.validators.push(wL(n,e))},_L=(e,t,n,r)=>{const s=Object.entries(e),o=s.length;for(let l=0;l{let n=e;const r=t.split(Bp),s=r.length;for(let o=0;o"isThemeGetter"in e&&e.isThemeGetter===!0,PL=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,n=Object.create(null),r=Object.create(null);const s=(o,l)=>{n[o]=l,t++,t>e&&(t=0,r=n,n=Object.create(null))};return{get(o){let l=n[o];if(l!==void 0)return l;if((l=r[o])!==void 0)return s(o,l),l},set(o,l){o in n?n[o]=l:s(o,l)}}},Qy="!",QC=":",IL=[],YC=(e,t,n,r,s)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:r,isExternal:s}),OL=e=>{const{prefix:t,experimentalParseClassName:n}=e;let r=s=>{const o=[];let l=0,u=0,d=0,f;const h=s.length;for(let w=0;wd?f-d:void 0;return YC(o,x,g,b)};if(t){const s=t+QC,o=r;r=l=>l.startsWith(s)?o(l.slice(s.length)):YC(IL,!1,l,void 0,!0)}if(n){const s=r;r=o=>n({className:o,parseClassName:s})}return r},AL=e=>{const t=new Map;return e.orderSensitiveModifiers.forEach((n,r)=>{t.set(n,1e6+r)}),n=>{const r=[];let s=[];for(let o=0;o0&&(s.sort(),r.push(...s),s=[]),r.push(l)):s.push(l)}return s.length>0&&(s.sort(),r.push(...s)),r}},DL=e=>({cache:PL(e.cacheSize),parseClassName:OL(e),sortModifiers:AL(e),...CL(e)}),FL=/\s+/,LL=(e,t)=>{const{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:s,sortModifiers:o}=t,l=[],u=e.trim().split(FL);let d="";for(let f=u.length-1;f>=0;f-=1){const h=u[f],{isExternal:m,modifiers:g,hasImportantModifier:x,baseClassName:b,maybePostfixModifierPosition:w}=n(h);if(m){d=h+(d.length>0?" "+d:d);continue}let C=!!w,k=r(C?b.substring(0,w):b);if(!k){if(!C){d=h+(d.length>0?" "+d:d);continue}if(k=r(b),!k){d=h+(d.length>0?" "+d:d);continue}C=!1}const N=g.length===0?"":g.length===1?g[0]:o(g).join(":"),T=x?N+Qy:N,_=T+k;if(l.indexOf(_)>-1)continue;l.push(_);const I=s(k,C);for(let M=0;M0?" "+d:d)}return d},$L=(...e)=>{let t=0,n,r,s="";for(;t{if(typeof e=="string")return e;let t,n="";for(let r=0;r{let n,r,s,o;const l=d=>{const f=t.reduce((h,m)=>m(h),e());return n=DL(f),r=n.cache.get,s=n.cache.set,o=u,u(d)},u=d=>{const f=r(d);if(f)return f;const h=LL(d,n);return s(d,h),h};return o=l,(...d)=>o($L(...d))},zL=[],sr=e=>{const t=n=>n[e]||zL;return t.isThemeGetter=!0,t},qN=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,HN=/^\((?:(\w[\w-]*):)?(.+)\)$/i,UL=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,VL=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,qL=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,HL=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,KL=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,WL=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,xo=e=>UL.test(e),Ft=e=>!!e&&!Number.isNaN(Number(e)),wo=e=>!!e&&Number.isInteger(Number(e)),Cv=e=>e.endsWith("%")&&Ft(e.slice(0,-1)),Ra=e=>VL.test(e),KN=()=>!0,GL=e=>qL.test(e)&&!HL.test(e),rx=()=>!1,JL=e=>KL.test(e),QL=e=>WL.test(e),YL=e=>!Ke(e)&&!We(e),ZL=e=>Ko(e,JN,rx),Ke=e=>qN.test(e),Ci=e=>Ko(e,QN,GL),ZC=e=>Ko(e,o$,Ft),XL=e=>Ko(e,ZN,KN),e$=e=>Ko(e,YN,rx),XC=e=>Ko(e,WN,rx),t$=e=>Ko(e,GN,QL),Lf=e=>Ko(e,XN,JL),We=e=>HN.test(e),Su=e=>Ji(e,QN),n$=e=>Ji(e,YN),e1=e=>Ji(e,WN),r$=e=>Ji(e,JN),s$=e=>Ji(e,GN),$f=e=>Ji(e,XN,!0),a$=e=>Ji(e,ZN,!0),Ko=(e,t,n)=>{const r=qN.exec(e);return r?r[1]?t(r[1]):n(r[2]):!1},Ji=(e,t,n=!1)=>{const r=HN.exec(e);return r?r[1]?t(r[1]):n:!1},WN=e=>e==="position"||e==="percentage",GN=e=>e==="image"||e==="url",JN=e=>e==="length"||e==="size"||e==="bg-size",QN=e=>e==="length",o$=e=>e==="number",YN=e=>e==="family-name",ZN=e=>e==="number"||e==="weight",XN=e=>e==="shadow",i$=()=>{const e=sr("color"),t=sr("font"),n=sr("text"),r=sr("font-weight"),s=sr("tracking"),o=sr("leading"),l=sr("breakpoint"),u=sr("container"),d=sr("spacing"),f=sr("radius"),h=sr("shadow"),m=sr("inset-shadow"),g=sr("text-shadow"),x=sr("drop-shadow"),b=sr("blur"),w=sr("perspective"),C=sr("aspect"),k=sr("ease"),N=sr("animate"),T=()=>["auto","avoid","all","avoid-page","page","left","right","column"],_=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],I=()=>[..._(),We,Ke],M=()=>["auto","hidden","clip","visible","scroll"],A=()=>["auto","contain","none"],O=()=>[We,Ke,d],F=()=>[xo,"full","auto",...O()],z=()=>[wo,"none","subgrid",We,Ke],Z=()=>["auto",{span:["full",wo,We,Ke]},wo,We,Ke],B=()=>[wo,"auto",We,Ke],ce=()=>["auto","min","max","fr",We,Ke],H=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],oe=()=>["start","end","center","stretch","center-safe","end-safe"],Q=()=>["auto",...O()],ne=()=>[xo,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...O()],V=()=>[xo,"screen","full","dvw","lvw","svw","min","max","fit",...O()],K=()=>[xo,"screen","full","lh","dvh","lvh","svh","min","max","fit",...O()],U=()=>[e,We,Ke],D=()=>[..._(),e1,XC,{position:[We,Ke]}],J=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ae=()=>["auto","cover","contain",r$,ZL,{size:[We,Ke]}],ee=()=>[Cv,Su,Ci],ie=()=>["","none","full",f,We,Ke],ue=()=>["",Ft,Su,Ci],j=()=>["solid","dashed","dotted","double"],P=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],pe=()=>[Ft,Cv,e1,XC],xe=()=>["","none",b,We,Ke],rt=()=>["none",Ft,We,Ke],Je=()=>["none",Ft,We,Ke],nt=()=>[Ft,We,Ke],qt=()=>[xo,"full",...O()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Ra],breakpoint:[Ra],color:[KN],container:[Ra],"drop-shadow":[Ra],ease:["in","out","in-out"],font:[YL],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Ra],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Ra],shadow:[Ra],spacing:["px",Ft],text:[Ra],"text-shadow":[Ra],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",xo,Ke,We,C]}],container:["container"],columns:[{columns:[Ft,Ke,We,u]}],"break-after":[{"break-after":T()}],"break-before":[{"break-before":T()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:I()}],overflow:[{overflow:M()}],"overflow-x":[{"overflow-x":M()}],"overflow-y":[{"overflow-y":M()}],overscroll:[{overscroll:A()}],"overscroll-x":[{"overscroll-x":A()}],"overscroll-y":[{"overscroll-y":A()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:F()}],"inset-x":[{"inset-x":F()}],"inset-y":[{"inset-y":F()}],start:[{"inset-s":F(),start:F()}],end:[{"inset-e":F(),end:F()}],"inset-bs":[{"inset-bs":F()}],"inset-be":[{"inset-be":F()}],top:[{top:F()}],right:[{right:F()}],bottom:[{bottom:F()}],left:[{left:F()}],visibility:["visible","invisible","collapse"],z:[{z:[wo,"auto",We,Ke]}],basis:[{basis:[xo,"full","auto",u,...O()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Ft,xo,"auto","initial","none",Ke]}],grow:[{grow:["",Ft,We,Ke]}],shrink:[{shrink:["",Ft,We,Ke]}],order:[{order:[wo,"first","last","none",We,Ke]}],"grid-cols":[{"grid-cols":z()}],"col-start-end":[{col:Z()}],"col-start":[{"col-start":B()}],"col-end":[{"col-end":B()}],"grid-rows":[{"grid-rows":z()}],"row-start-end":[{row:Z()}],"row-start":[{"row-start":B()}],"row-end":[{"row-end":B()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":ce()}],"auto-rows":[{"auto-rows":ce()}],gap:[{gap:O()}],"gap-x":[{"gap-x":O()}],"gap-y":[{"gap-y":O()}],"justify-content":[{justify:[...H(),"normal"]}],"justify-items":[{"justify-items":[...oe(),"normal"]}],"justify-self":[{"justify-self":["auto",...oe()]}],"align-content":[{content:["normal",...H()]}],"align-items":[{items:[...oe(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...oe(),{baseline:["","last"]}]}],"place-content":[{"place-content":H()}],"place-items":[{"place-items":[...oe(),"baseline"]}],"place-self":[{"place-self":["auto",...oe()]}],p:[{p:O()}],px:[{px:O()}],py:[{py:O()}],ps:[{ps:O()}],pe:[{pe:O()}],pbs:[{pbs:O()}],pbe:[{pbe:O()}],pt:[{pt:O()}],pr:[{pr:O()}],pb:[{pb:O()}],pl:[{pl:O()}],m:[{m:Q()}],mx:[{mx:Q()}],my:[{my:Q()}],ms:[{ms:Q()}],me:[{me:Q()}],mbs:[{mbs:Q()}],mbe:[{mbe:Q()}],mt:[{mt:Q()}],mr:[{mr:Q()}],mb:[{mb:Q()}],ml:[{ml:Q()}],"space-x":[{"space-x":O()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":O()}],"space-y-reverse":["space-y-reverse"],size:[{size:ne()}],"inline-size":[{inline:["auto",...V()]}],"min-inline-size":[{"min-inline":["auto",...V()]}],"max-inline-size":[{"max-inline":["none",...V()]}],"block-size":[{block:["auto",...K()]}],"min-block-size":[{"min-block":["auto",...K()]}],"max-block-size":[{"max-block":["none",...K()]}],w:[{w:[u,"screen",...ne()]}],"min-w":[{"min-w":[u,"screen","none",...ne()]}],"max-w":[{"max-w":[u,"screen","none","prose",{screen:[l]},...ne()]}],h:[{h:["screen","lh",...ne()]}],"min-h":[{"min-h":["screen","lh","none",...ne()]}],"max-h":[{"max-h":["screen","lh",...ne()]}],"font-size":[{text:["base",n,Su,Ci]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,a$,XL]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",Cv,Ke]}],"font-family":[{font:[n$,e$,t]}],"font-features":[{"font-features":[Ke]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[s,We,Ke]}],"line-clamp":[{"line-clamp":[Ft,"none",We,ZC]}],leading:[{leading:[o,...O()]}],"list-image":[{"list-image":["none",We,Ke]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",We,Ke]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:U()}],"text-color":[{text:U()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...j(),"wavy"]}],"text-decoration-thickness":[{decoration:[Ft,"from-font","auto",We,Ci]}],"text-decoration-color":[{decoration:U()}],"underline-offset":[{"underline-offset":[Ft,"auto",We,Ke]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:O()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",We,Ke]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",We,Ke]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:D()}],"bg-repeat":[{bg:J()}],"bg-size":[{bg:ae()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},wo,We,Ke],radial:["",We,Ke],conic:[wo,We,Ke]},s$,t$]}],"bg-color":[{bg:U()}],"gradient-from-pos":[{from:ee()}],"gradient-via-pos":[{via:ee()}],"gradient-to-pos":[{to:ee()}],"gradient-from":[{from:U()}],"gradient-via":[{via:U()}],"gradient-to":[{to:U()}],rounded:[{rounded:ie()}],"rounded-s":[{"rounded-s":ie()}],"rounded-e":[{"rounded-e":ie()}],"rounded-t":[{"rounded-t":ie()}],"rounded-r":[{"rounded-r":ie()}],"rounded-b":[{"rounded-b":ie()}],"rounded-l":[{"rounded-l":ie()}],"rounded-ss":[{"rounded-ss":ie()}],"rounded-se":[{"rounded-se":ie()}],"rounded-ee":[{"rounded-ee":ie()}],"rounded-es":[{"rounded-es":ie()}],"rounded-tl":[{"rounded-tl":ie()}],"rounded-tr":[{"rounded-tr":ie()}],"rounded-br":[{"rounded-br":ie()}],"rounded-bl":[{"rounded-bl":ie()}],"border-w":[{border:ue()}],"border-w-x":[{"border-x":ue()}],"border-w-y":[{"border-y":ue()}],"border-w-s":[{"border-s":ue()}],"border-w-e":[{"border-e":ue()}],"border-w-bs":[{"border-bs":ue()}],"border-w-be":[{"border-be":ue()}],"border-w-t":[{"border-t":ue()}],"border-w-r":[{"border-r":ue()}],"border-w-b":[{"border-b":ue()}],"border-w-l":[{"border-l":ue()}],"divide-x":[{"divide-x":ue()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":ue()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...j(),"hidden","none"]}],"divide-style":[{divide:[...j(),"hidden","none"]}],"border-color":[{border:U()}],"border-color-x":[{"border-x":U()}],"border-color-y":[{"border-y":U()}],"border-color-s":[{"border-s":U()}],"border-color-e":[{"border-e":U()}],"border-color-bs":[{"border-bs":U()}],"border-color-be":[{"border-be":U()}],"border-color-t":[{"border-t":U()}],"border-color-r":[{"border-r":U()}],"border-color-b":[{"border-b":U()}],"border-color-l":[{"border-l":U()}],"divide-color":[{divide:U()}],"outline-style":[{outline:[...j(),"none","hidden"]}],"outline-offset":[{"outline-offset":[Ft,We,Ke]}],"outline-w":[{outline:["",Ft,Su,Ci]}],"outline-color":[{outline:U()}],shadow:[{shadow:["","none",h,$f,Lf]}],"shadow-color":[{shadow:U()}],"inset-shadow":[{"inset-shadow":["none",m,$f,Lf]}],"inset-shadow-color":[{"inset-shadow":U()}],"ring-w":[{ring:ue()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:U()}],"ring-offset-w":[{"ring-offset":[Ft,Ci]}],"ring-offset-color":[{"ring-offset":U()}],"inset-ring-w":[{"inset-ring":ue()}],"inset-ring-color":[{"inset-ring":U()}],"text-shadow":[{"text-shadow":["none",g,$f,Lf]}],"text-shadow-color":[{"text-shadow":U()}],opacity:[{opacity:[Ft,We,Ke]}],"mix-blend":[{"mix-blend":[...P(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":P()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[Ft]}],"mask-image-linear-from-pos":[{"mask-linear-from":pe()}],"mask-image-linear-to-pos":[{"mask-linear-to":pe()}],"mask-image-linear-from-color":[{"mask-linear-from":U()}],"mask-image-linear-to-color":[{"mask-linear-to":U()}],"mask-image-t-from-pos":[{"mask-t-from":pe()}],"mask-image-t-to-pos":[{"mask-t-to":pe()}],"mask-image-t-from-color":[{"mask-t-from":U()}],"mask-image-t-to-color":[{"mask-t-to":U()}],"mask-image-r-from-pos":[{"mask-r-from":pe()}],"mask-image-r-to-pos":[{"mask-r-to":pe()}],"mask-image-r-from-color":[{"mask-r-from":U()}],"mask-image-r-to-color":[{"mask-r-to":U()}],"mask-image-b-from-pos":[{"mask-b-from":pe()}],"mask-image-b-to-pos":[{"mask-b-to":pe()}],"mask-image-b-from-color":[{"mask-b-from":U()}],"mask-image-b-to-color":[{"mask-b-to":U()}],"mask-image-l-from-pos":[{"mask-l-from":pe()}],"mask-image-l-to-pos":[{"mask-l-to":pe()}],"mask-image-l-from-color":[{"mask-l-from":U()}],"mask-image-l-to-color":[{"mask-l-to":U()}],"mask-image-x-from-pos":[{"mask-x-from":pe()}],"mask-image-x-to-pos":[{"mask-x-to":pe()}],"mask-image-x-from-color":[{"mask-x-from":U()}],"mask-image-x-to-color":[{"mask-x-to":U()}],"mask-image-y-from-pos":[{"mask-y-from":pe()}],"mask-image-y-to-pos":[{"mask-y-to":pe()}],"mask-image-y-from-color":[{"mask-y-from":U()}],"mask-image-y-to-color":[{"mask-y-to":U()}],"mask-image-radial":[{"mask-radial":[We,Ke]}],"mask-image-radial-from-pos":[{"mask-radial-from":pe()}],"mask-image-radial-to-pos":[{"mask-radial-to":pe()}],"mask-image-radial-from-color":[{"mask-radial-from":U()}],"mask-image-radial-to-color":[{"mask-radial-to":U()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":_()}],"mask-image-conic-pos":[{"mask-conic":[Ft]}],"mask-image-conic-from-pos":[{"mask-conic-from":pe()}],"mask-image-conic-to-pos":[{"mask-conic-to":pe()}],"mask-image-conic-from-color":[{"mask-conic-from":U()}],"mask-image-conic-to-color":[{"mask-conic-to":U()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:D()}],"mask-repeat":[{mask:J()}],"mask-size":[{mask:ae()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",We,Ke]}],filter:[{filter:["","none",We,Ke]}],blur:[{blur:xe()}],brightness:[{brightness:[Ft,We,Ke]}],contrast:[{contrast:[Ft,We,Ke]}],"drop-shadow":[{"drop-shadow":["","none",x,$f,Lf]}],"drop-shadow-color":[{"drop-shadow":U()}],grayscale:[{grayscale:["",Ft,We,Ke]}],"hue-rotate":[{"hue-rotate":[Ft,We,Ke]}],invert:[{invert:["",Ft,We,Ke]}],saturate:[{saturate:[Ft,We,Ke]}],sepia:[{sepia:["",Ft,We,Ke]}],"backdrop-filter":[{"backdrop-filter":["","none",We,Ke]}],"backdrop-blur":[{"backdrop-blur":xe()}],"backdrop-brightness":[{"backdrop-brightness":[Ft,We,Ke]}],"backdrop-contrast":[{"backdrop-contrast":[Ft,We,Ke]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Ft,We,Ke]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Ft,We,Ke]}],"backdrop-invert":[{"backdrop-invert":["",Ft,We,Ke]}],"backdrop-opacity":[{"backdrop-opacity":[Ft,We,Ke]}],"backdrop-saturate":[{"backdrop-saturate":[Ft,We,Ke]}],"backdrop-sepia":[{"backdrop-sepia":["",Ft,We,Ke]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":O()}],"border-spacing-x":[{"border-spacing-x":O()}],"border-spacing-y":[{"border-spacing-y":O()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",We,Ke]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[Ft,"initial",We,Ke]}],ease:[{ease:["linear","initial",k,We,Ke]}],delay:[{delay:[Ft,We,Ke]}],animate:[{animate:["none",N,We,Ke]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[w,We,Ke]}],"perspective-origin":[{"perspective-origin":I()}],rotate:[{rotate:rt()}],"rotate-x":[{"rotate-x":rt()}],"rotate-y":[{"rotate-y":rt()}],"rotate-z":[{"rotate-z":rt()}],scale:[{scale:Je()}],"scale-x":[{"scale-x":Je()}],"scale-y":[{"scale-y":Je()}],"scale-z":[{"scale-z":Je()}],"scale-3d":["scale-3d"],skew:[{skew:nt()}],"skew-x":[{"skew-x":nt()}],"skew-y":[{"skew-y":nt()}],transform:[{transform:[We,Ke,"","none","gpu","cpu"]}],"transform-origin":[{origin:I()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:qt()}],"translate-x":[{"translate-x":qt()}],"translate-y":[{"translate-y":qt()}],"translate-z":[{"translate-z":qt()}],"translate-none":["translate-none"],accent:[{accent:U()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:U()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",We,Ke]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":O()}],"scroll-mx":[{"scroll-mx":O()}],"scroll-my":[{"scroll-my":O()}],"scroll-ms":[{"scroll-ms":O()}],"scroll-me":[{"scroll-me":O()}],"scroll-mbs":[{"scroll-mbs":O()}],"scroll-mbe":[{"scroll-mbe":O()}],"scroll-mt":[{"scroll-mt":O()}],"scroll-mr":[{"scroll-mr":O()}],"scroll-mb":[{"scroll-mb":O()}],"scroll-ml":[{"scroll-ml":O()}],"scroll-p":[{"scroll-p":O()}],"scroll-px":[{"scroll-px":O()}],"scroll-py":[{"scroll-py":O()}],"scroll-ps":[{"scroll-ps":O()}],"scroll-pe":[{"scroll-pe":O()}],"scroll-pbs":[{"scroll-pbs":O()}],"scroll-pbe":[{"scroll-pbe":O()}],"scroll-pt":[{"scroll-pt":O()}],"scroll-pr":[{"scroll-pr":O()}],"scroll-pb":[{"scroll-pb":O()}],"scroll-pl":[{"scroll-pl":O()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",We,Ke]}],fill:[{fill:["none",...U()]}],"stroke-w":[{stroke:[Ft,Su,Ci,ZC]}],stroke:[{stroke:["none",...U()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},l$=BL(i$);function kt(...e){return l$(Ks(e))}function c$(e,t=[]){let n=[];function r(o,l){const u=y.createContext(l);u.displayName=o+"Context";const d=n.length;n=[...n,l];const f=m=>{const{scope:g,children:x,...b}=m,w=g?.[e]?.[d]||u,C=y.useMemo(()=>b,Object.values(b));return a.jsx(w.Provider,{value:C,children:x})};f.displayName=o+"Provider";function h(m,g){const x=g?.[e]?.[d]||u,b=y.useContext(x);if(b)return b;if(l!==void 0)return l;throw new Error(`\`${m}\` must be used within \`${o}\``)}return[f,h]}const s=()=>{const o=n.map(l=>y.createContext(l));return function(u){const d=u?.[e]||o;return y.useMemo(()=>({[`__scope${e}`]:{...u,[e]:d}}),[u,d])}};return s.scopeName=e,[r,u$(s,...t)]}function u$(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const r=e.map(s=>({useScope:s(),scopeName:s.scopeName}));return function(o){const l=r.reduce((u,{useScope:d,scopeName:f})=>{const m=d(o)[`__scope${f}`];return{...u,...m}},{});return y.useMemo(()=>({[`__scope${t.scopeName}`]:l}),[l])}};return n.scopeName=t.scopeName,n}function Qs(e){const t=y.useRef(e);return y.useEffect(()=>{t.current=e}),y.useMemo(()=>(...n)=>t.current?.(...n),[])}var er=globalThis?.document?y.useLayoutEffect:()=>{};function t1(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function Wo(...e){return t=>{let n=!1;const r=e.map(s=>{const o=t1(s,t);return!n&&typeof o=="function"&&(n=!0),o});if(n)return()=>{for(let s=0;s{let{children:o,...l}=r;eT(o)&&typeof zp=="function"&&(o=zp(o._payload));const u=y.Children.toArray(o),d=u.find(g$);if(d){const f=d.props.children,h=u.map(m=>m===d?y.Children.count(f)>1?y.Children.only(null):y.isValidElement(f)?f.props.children:null:m);return a.jsx(t,{...l,ref:s,children:y.isValidElement(f)?y.cloneElement(f,void 0,h):null})}return a.jsx(t,{...l,ref:s,children:o})});return n.displayName=`${e}.Slot`,n}function h$(e){const t=y.forwardRef((n,r)=>{let{children:s,...o}=n;if(eT(s)&&typeof zp=="function"&&(s=zp(s._payload)),y.isValidElement(s)){const l=y$(s),u=v$(o,s.props);return s.type!==y.Fragment&&(u.ref=r?Wo(r,l):l),y.cloneElement(s,u)}return y.Children.count(s)>1?y.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var m$=Symbol("radix.slottable");function g$(e){return y.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===m$}function v$(e,t){const n={...t};for(const r in t){const s=e[r],o=t[r];/^on[A-Z]/.test(r)?s&&o?n[r]=(...u)=>{const d=o(...u);return s(...u),d}:s&&(n[r]=s):r==="style"?n[r]={...s,...o}:r==="className"&&(n[r]=[s,o].filter(Boolean).join(" "))}return{...e,...n}}function y$(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var b$=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],sx=b$.reduce((e,t)=>{const n=p$(`Primitive.${t}`),r=y.forwardRef((s,o)=>{const{asChild:l,...u}=s,d=l?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),a.jsx(d,{...u,ref:o})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{}),jv={exports:{}},kv={};/** + * @license React + * use-sync-external-store-shim.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var n1;function x$(){if(n1)return kv;n1=1;var e=pc();function t(m,g){return m===g&&(m!==0||1/m===1/g)||m!==m&&g!==g}var n=typeof Object.is=="function"?Object.is:t,r=e.useState,s=e.useEffect,o=e.useLayoutEffect,l=e.useDebugValue;function u(m,g){var x=g(),b=r({inst:{value:x,getSnapshot:g}}),w=b[0].inst,C=b[1];return o(function(){w.value=x,w.getSnapshot=g,d(w)&&C({inst:w})},[m,x,g]),s(function(){return d(w)&&C({inst:w}),m(function(){d(w)&&C({inst:w})})},[m]),l(x),x}function d(m){var g=m.getSnapshot;m=m.value;try{var x=g();return!n(m,x)}catch{return!0}}function f(m,g){return g()}var h=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?f:u;return kv.useSyncExternalStore=e.useSyncExternalStore!==void 0?e.useSyncExternalStore:h,kv}var r1;function w$(){return r1||(r1=1,jv.exports=x$()),jv.exports}var S$=w$();function C$(){return S$.useSyncExternalStore(j$,()=>!0,()=>!1)}function j$(){return()=>{}}var ax="Avatar",[k$]=c$(ax),[E$,tT]=k$(ax),nT=y.forwardRef((e,t)=>{const{__scopeAvatar:n,...r}=e,[s,o]=y.useState("idle");return a.jsx(E$,{scope:n,imageLoadingStatus:s,onImageLoadingStatusChange:o,children:a.jsx(sx.span,{...r,ref:t})})});nT.displayName=ax;var rT="AvatarImage",sT=y.forwardRef((e,t)=>{const{__scopeAvatar:n,src:r,onLoadingStatusChange:s=()=>{},...o}=e,l=tT(rT,n),u=N$(r,o),d=Qs(f=>{s(f),l.onImageLoadingStatusChange(f)});return er(()=>{u!=="idle"&&d(u)},[u,d]),u==="loaded"?a.jsx(sx.img,{...o,ref:t,src:r}):null});sT.displayName=rT;var aT="AvatarFallback",oT=y.forwardRef((e,t)=>{const{__scopeAvatar:n,delayMs:r,...s}=e,o=tT(aT,n),[l,u]=y.useState(r===void 0);return y.useEffect(()=>{if(r!==void 0){const d=window.setTimeout(()=>u(!0),r);return()=>window.clearTimeout(d)}},[r]),l&&o.imageLoadingStatus!=="loaded"?a.jsx(sx.span,{...s,ref:t}):null});oT.displayName=aT;function s1(e,t){return e?t?(e.src!==t&&(e.src=t),e.complete&&e.naturalWidth>0?"loaded":"loading"):"error":"idle"}function N$(e,{referrerPolicy:t,crossOrigin:n}){const r=C$(),s=y.useRef(null),o=r?(s.current||(s.current=new window.Image),s.current):null,[l,u]=y.useState(()=>s1(o,e));return er(()=>{u(s1(o,e))},[o,e]),er(()=>{const d=m=>()=>{u(m)};if(!o)return;const f=d("loaded"),h=d("error");return o.addEventListener("load",f),o.addEventListener("error",h),t&&(o.referrerPolicy=t),typeof n=="string"&&(o.crossOrigin=n),()=>{o.removeEventListener("load",f),o.removeEventListener("error",h)}},[o,n,t]),l}var T$=nT,M$=sT,_$=oT;function _h({className:e,...t}){return a.jsx(T$,{"data-slot":"avatar",className:kt("relative flex size-8 shrink-0 overflow-hidden rounded-full",e),...t})}function Rh({className:e,...t}){return a.jsx(M$,{"data-slot":"avatar-image",className:kt("aspect-square size-full",e),...t})}function iT({className:e,...t}){return a.jsx(_$,{"data-slot":"avatar-fallback",className:kt("bg-muted flex size-full items-center justify-center rounded-full",e),...t})}var R$=Symbol.for("react.lazy"),Up=Vo[" use ".trim().toString()];function P$(e){return typeof e=="object"&&e!==null&&"then"in e}function lT(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===R$&&"_payload"in e&&P$(e._payload)}function I$(e){const t=O$(e),n=y.forwardRef((r,s)=>{let{children:o,...l}=r;lT(o)&&typeof Up=="function"&&(o=Up(o._payload));const u=y.Children.toArray(o),d=u.find(D$);if(d){const f=d.props.children,h=u.map(m=>m===d?y.Children.count(f)>1?y.Children.only(null):y.isValidElement(f)?f.props.children:null:m);return a.jsx(t,{...l,ref:s,children:y.isValidElement(f)?y.cloneElement(f,void 0,h):null})}return a.jsx(t,{...l,ref:s,children:o})});return n.displayName=`${e}.Slot`,n}var cT=I$("Slot");function O$(e){const t=y.forwardRef((n,r)=>{let{children:s,...o}=n;if(lT(s)&&typeof Up=="function"&&(s=Up(s._payload)),y.isValidElement(s)){const l=L$(s),u=F$(o,s.props);return s.type!==y.Fragment&&(u.ref=r?Wo(r,l):l),y.cloneElement(s,u)}return y.Children.count(s)>1?y.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var A$=Symbol("radix.slottable");function D$(e){return y.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===A$}function F$(e,t){const n={...t};for(const r in t){const s=e[r],o=t[r];/^on[A-Z]/.test(r)?s&&o?n[r]=(...u)=>{const d=o(...u);return s(...u),d}:s&&(n[r]=s):r==="style"?n[r]={...s,...o}:r==="className"&&(n[r]=[s,o].filter(Boolean).join(" "))}return{...e,...n}}function L$(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}const a1=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,o1=Ks,ox=(e,t)=>n=>{var r;if(t?.variants==null)return o1(e,n?.class,n?.className);const{variants:s,defaultVariants:o}=t,l=Object.keys(s).map(f=>{const h=n?.[f],m=o?.[f];if(h===null)return null;const g=a1(h)||a1(m);return s[f][g]}),u=n&&Object.entries(n).reduce((f,h)=>{let[m,g]=h;return g===void 0||(f[m]=g),f},{}),d=t==null||(r=t.compoundVariants)===null||r===void 0?void 0:r.reduce((f,h)=>{let{class:m,className:g,...x}=h;return Object.entries(x).every(b=>{let[w,C]=b;return Array.isArray(C)?C.includes({...o,...u}[w]):{...o,...u}[w]===C})?[...f,m,g]:f},[]);return o1(e,l,d,n?.class,n?.className)};var $$=ox("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9"}},defaultVariants:{variant:"default",size:"default"}}),q=y.forwardRef(({className:e,variant:t,size:n,asChild:r=!1,...s},o)=>{const l=r?cT:"button";return a.jsx(l,{className:kt($$({variant:t,size:n,className:e})),ref:o,...s})});q.displayName="Button";function Ge(e,t,{checkForDefaultPrevented:n=!0}={}){return function(s){if(e?.(s),n===!1||!s.defaultPrevented)return t?.(s)}}function B$(e,t){const n=y.createContext(t),r=o=>{const{children:l,...u}=o,d=y.useMemo(()=>u,Object.values(u));return a.jsx(n.Provider,{value:d,children:l})};r.displayName=e+"Provider";function s(o){const l=y.useContext(n);if(l)return l;if(t!==void 0)return t;throw new Error(`\`${o}\` must be used within \`${e}\``)}return[r,s]}function ea(e,t=[]){let n=[];function r(o,l){const u=y.createContext(l),d=n.length;n=[...n,l];const f=m=>{const{scope:g,children:x,...b}=m,w=g?.[e]?.[d]||u,C=y.useMemo(()=>b,Object.values(b));return a.jsx(w.Provider,{value:C,children:x})};f.displayName=o+"Provider";function h(m,g){const x=g?.[e]?.[d]||u,b=y.useContext(x);if(b)return b;if(l!==void 0)return l;throw new Error(`\`${m}\` must be used within \`${o}\``)}return[f,h]}const s=()=>{const o=n.map(l=>y.createContext(l));return function(u){const d=u?.[e]||o;return y.useMemo(()=>({[`__scope${e}`]:{...u,[e]:d}}),[u,d])}};return s.scopeName=e,[r,z$(s,...t)]}function z$(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const r=e.map(s=>({useScope:s(),scopeName:s.scopeName}));return function(o){const l=r.reduce((u,{useScope:d,scopeName:f})=>{const m=d(o)[`__scope${f}`];return{...u,...m}},{});return y.useMemo(()=>({[`__scope${t.scopeName}`]:l}),[l])}};return n.scopeName=t.scopeName,n}var U$=Vo[" useId ".trim().toString()]||(()=>{}),V$=0;function Ws(e){const[t,n]=y.useState(U$());return er(()=>{n(r=>r??String(V$++))},[e]),e||(t?`radix-${t}`:"")}var q$=Vo[" useInsertionEffect ".trim().toString()]||er;function Ba({prop:e,defaultProp:t,onChange:n=()=>{},caller:r}){const[s,o,l]=H$({defaultProp:t,onChange:n}),u=e!==void 0,d=u?e:s;{const h=y.useRef(e!==void 0);y.useEffect(()=>{const m=h.current;m!==u&&console.warn(`${r} is changing from ${m?"controlled":"uncontrolled"} to ${u?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),h.current=u},[u,r])}const f=y.useCallback(h=>{if(u){const m=K$(h)?h(e):h;m!==e&&l.current?.(m)}else o(h)},[u,e,o,l]);return[d,f]}function H$({defaultProp:e,onChange:t}){const[n,r]=y.useState(e),s=y.useRef(n),o=y.useRef(t);return q$(()=>{o.current=t},[t]),y.useEffect(()=>{s.current!==n&&(o.current?.(n),s.current=n)},[n,s]),[n,r,o]}function K$(e){return typeof e=="function"}function rc(e){const t=W$(e),n=y.forwardRef((r,s)=>{const{children:o,...l}=r,u=y.Children.toArray(o),d=u.find(J$);if(d){const f=d.props.children,h=u.map(m=>m===d?y.Children.count(f)>1?y.Children.only(null):y.isValidElement(f)?f.props.children:null:m);return a.jsx(t,{...l,ref:s,children:y.isValidElement(f)?y.cloneElement(f,void 0,h):null})}return a.jsx(t,{...l,ref:s,children:o})});return n.displayName=`${e}.Slot`,n}function W$(e){const t=y.forwardRef((n,r)=>{const{children:s,...o}=n;if(y.isValidElement(s)){const l=Y$(s),u=Q$(o,s.props);return s.type!==y.Fragment&&(u.ref=r?Wo(r,l):l),y.cloneElement(s,u)}return y.Children.count(s)>1?y.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var G$=Symbol("radix.slottable");function J$(e){return y.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===G$}function Q$(e,t){const n={...t};for(const r in t){const s=e[r],o=t[r];/^on[A-Z]/.test(r)?s&&o?n[r]=(...u)=>{const d=o(...u);return s(...u),d}:s&&(n[r]=s):r==="style"?n[r]={...s,...o}:r==="className"&&(n[r]=[s,o].filter(Boolean).join(" "))}return{...e,...n}}function Y$(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var Z$=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],xt=Z$.reduce((e,t)=>{const n=rc(`Primitive.${t}`),r=y.forwardRef((s,o)=>{const{asChild:l,...u}=s,d=l?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),a.jsx(d,{...u,ref:o})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function uT(e,t){e&&mc.flushSync(()=>e.dispatchEvent(t))}function X$(e,t=globalThis?.document){const n=Qs(e);y.useEffect(()=>{const r=s=>{s.key==="Escape"&&n(s)};return t.addEventListener("keydown",r,{capture:!0}),()=>t.removeEventListener("keydown",r,{capture:!0})},[n,t])}var e3="DismissableLayer",Yy="dismissableLayer.update",t3="dismissableLayer.pointerDownOutside",n3="dismissableLayer.focusOutside",i1,dT=y.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Ph=y.forwardRef((e,t)=>{const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:r,onPointerDownOutside:s,onFocusOutside:o,onInteractOutside:l,onDismiss:u,...d}=e,f=y.useContext(dT),[h,m]=y.useState(null),g=h?.ownerDocument??globalThis?.document,[,x]=y.useState({}),b=Xt(t,A=>m(A)),w=Array.from(f.layers),[C]=[...f.layersWithOutsidePointerEventsDisabled].slice(-1),k=w.indexOf(C),N=h?w.indexOf(h):-1,T=f.layersWithOutsidePointerEventsDisabled.size>0,_=N>=k,I=a3(A=>{const O=A.target,F=[...f.branches].some(z=>z.contains(O));!_||F||(s?.(A),l?.(A),A.defaultPrevented||u?.())},g),M=o3(A=>{const O=A.target;[...f.branches].some(z=>z.contains(O))||(o?.(A),l?.(A),A.defaultPrevented||u?.())},g);return X$(A=>{N===f.layers.size-1&&(r?.(A),!A.defaultPrevented&&u&&(A.preventDefault(),u()))},g),y.useEffect(()=>{if(h)return n&&(f.layersWithOutsidePointerEventsDisabled.size===0&&(i1=g.body.style.pointerEvents,g.body.style.pointerEvents="none"),f.layersWithOutsidePointerEventsDisabled.add(h)),f.layers.add(h),l1(),()=>{n&&f.layersWithOutsidePointerEventsDisabled.size===1&&(g.body.style.pointerEvents=i1)}},[h,g,n,f]),y.useEffect(()=>()=>{h&&(f.layers.delete(h),f.layersWithOutsidePointerEventsDisabled.delete(h),l1())},[h,f]),y.useEffect(()=>{const A=()=>x({});return document.addEventListener(Yy,A),()=>document.removeEventListener(Yy,A)},[]),a.jsx(xt.div,{...d,ref:b,style:{pointerEvents:T?_?"auto":"none":void 0,...e.style},onFocusCapture:Ge(e.onFocusCapture,M.onFocusCapture),onBlurCapture:Ge(e.onBlurCapture,M.onBlurCapture),onPointerDownCapture:Ge(e.onPointerDownCapture,I.onPointerDownCapture)})});Ph.displayName=e3;var r3="DismissableLayerBranch",s3=y.forwardRef((e,t)=>{const n=y.useContext(dT),r=y.useRef(null),s=Xt(t,r);return y.useEffect(()=>{const o=r.current;if(o)return n.branches.add(o),()=>{n.branches.delete(o)}},[n.branches]),a.jsx(xt.div,{...e,ref:s})});s3.displayName=r3;function a3(e,t=globalThis?.document){const n=Qs(e),r=y.useRef(!1),s=y.useRef(()=>{});return y.useEffect(()=>{const o=u=>{if(u.target&&!r.current){let d=function(){fT(t3,n,f,{discrete:!0})};const f={originalEvent:u};u.pointerType==="touch"?(t.removeEventListener("click",s.current),s.current=d,t.addEventListener("click",s.current,{once:!0})):d()}else t.removeEventListener("click",s.current);r.current=!1},l=window.setTimeout(()=>{t.addEventListener("pointerdown",o)},0);return()=>{window.clearTimeout(l),t.removeEventListener("pointerdown",o),t.removeEventListener("click",s.current)}},[t,n]),{onPointerDownCapture:()=>r.current=!0}}function o3(e,t=globalThis?.document){const n=Qs(e),r=y.useRef(!1);return y.useEffect(()=>{const s=o=>{o.target&&!r.current&&fT(n3,n,{originalEvent:o},{discrete:!1})};return t.addEventListener("focusin",s),()=>t.removeEventListener("focusin",s)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function l1(){const e=new CustomEvent(Yy);document.dispatchEvent(e)}function fT(e,t,n,{discrete:r}){const s=n.originalEvent.target,o=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&s.addEventListener(e,t,{once:!0}),r?uT(s,o):s.dispatchEvent(o)}var Ev="focusScope.autoFocusOnMount",Nv="focusScope.autoFocusOnUnmount",c1={bubbles:!1,cancelable:!0},i3="FocusScope",Ih=y.forwardRef((e,t)=>{const{loop:n=!1,trapped:r=!1,onMountAutoFocus:s,onUnmountAutoFocus:o,...l}=e,[u,d]=y.useState(null),f=Qs(s),h=Qs(o),m=y.useRef(null),g=Xt(t,w=>d(w)),x=y.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;y.useEffect(()=>{if(r){let w=function(T){if(x.paused||!u)return;const _=T.target;u.contains(_)?m.current=_:ko(m.current,{select:!0})},C=function(T){if(x.paused||!u)return;const _=T.relatedTarget;_!==null&&(u.contains(_)||ko(m.current,{select:!0}))},k=function(T){if(document.activeElement===document.body)for(const I of T)I.removedNodes.length>0&&ko(u)};document.addEventListener("focusin",w),document.addEventListener("focusout",C);const N=new MutationObserver(k);return u&&N.observe(u,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",w),document.removeEventListener("focusout",C),N.disconnect()}}},[r,u,x.paused]),y.useEffect(()=>{if(u){d1.add(x);const w=document.activeElement;if(!u.contains(w)){const k=new CustomEvent(Ev,c1);u.addEventListener(Ev,f),u.dispatchEvent(k),k.defaultPrevented||(l3(p3(pT(u)),{select:!0}),document.activeElement===w&&ko(u))}return()=>{u.removeEventListener(Ev,f),setTimeout(()=>{const k=new CustomEvent(Nv,c1);u.addEventListener(Nv,h),u.dispatchEvent(k),k.defaultPrevented||ko(w??document.body,{select:!0}),u.removeEventListener(Nv,h),d1.remove(x)},0)}}},[u,f,h,x]);const b=y.useCallback(w=>{if(!n&&!r||x.paused)return;const C=w.key==="Tab"&&!w.altKey&&!w.ctrlKey&&!w.metaKey,k=document.activeElement;if(C&&k){const N=w.currentTarget,[T,_]=c3(N);T&&_?!w.shiftKey&&k===_?(w.preventDefault(),n&&ko(T,{select:!0})):w.shiftKey&&k===T&&(w.preventDefault(),n&&ko(_,{select:!0})):k===N&&w.preventDefault()}},[n,r,x.paused]);return a.jsx(xt.div,{tabIndex:-1,...l,ref:g,onKeyDown:b})});Ih.displayName=i3;function l3(e,{select:t=!1}={}){const n=document.activeElement;for(const r of e)if(ko(r,{select:t}),document.activeElement!==n)return}function c3(e){const t=pT(e),n=u1(t,e),r=u1(t.reverse(),e);return[n,r]}function pT(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const s=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||s?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function u1(e,t){for(const n of e)if(!u3(n,{upTo:t}))return n}function u3(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function d3(e){return e instanceof HTMLInputElement&&"select"in e}function ko(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&d3(e)&&t&&e.select()}}var d1=f3();function f3(){let e=[];return{add(t){const n=e[0];t!==n&&n?.pause(),e=f1(e,t),e.unshift(t)},remove(t){e=f1(e,t),e[0]?.resume()}}}function f1(e,t){const n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function p3(e){return e.filter(t=>t.tagName!=="A")}var h3="Portal",Oh=y.forwardRef((e,t)=>{const{container:n,...r}=e,[s,o]=y.useState(!1);er(()=>o(!0),[]);const l=n||s&&globalThis?.document?.body;return l?zE.createPortal(a.jsx(xt.div,{...r,ref:t}),l):null});Oh.displayName=h3;function m3(e,t){return y.useReducer((n,r)=>t[n][r]??n,e)}var ta=e=>{const{present:t,children:n}=e,r=g3(t),s=typeof n=="function"?n({present:r.isPresent}):y.Children.only(n),o=Xt(r.ref,v3(s));return typeof n=="function"||r.isPresent?y.cloneElement(s,{ref:o}):null};ta.displayName="Presence";function g3(e){const[t,n]=y.useState(),r=y.useRef(null),s=y.useRef(e),o=y.useRef("none"),l=e?"mounted":"unmounted",[u,d]=m3(l,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return y.useEffect(()=>{const f=Bf(r.current);o.current=u==="mounted"?f:"none"},[u]),er(()=>{const f=r.current,h=s.current;if(h!==e){const g=o.current,x=Bf(f);e?d("MOUNT"):x==="none"||f?.display==="none"?d("UNMOUNT"):d(h&&g!==x?"ANIMATION_OUT":"UNMOUNT"),s.current=e}},[e,d]),er(()=>{if(t){let f;const h=t.ownerDocument.defaultView??window,m=x=>{const w=Bf(r.current).includes(CSS.escape(x.animationName));if(x.target===t&&w&&(d("ANIMATION_END"),!s.current)){const C=t.style.animationFillMode;t.style.animationFillMode="forwards",f=h.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=C)})}},g=x=>{x.target===t&&(o.current=Bf(r.current))};return t.addEventListener("animationstart",g),t.addEventListener("animationcancel",m),t.addEventListener("animationend",m),()=>{h.clearTimeout(f),t.removeEventListener("animationstart",g),t.removeEventListener("animationcancel",m),t.removeEventListener("animationend",m)}}else d("ANIMATION_END")},[t,d]),{isPresent:["mounted","unmountSuspended"].includes(u),ref:y.useCallback(f=>{r.current=f?getComputedStyle(f):null,n(f)},[])}}function Bf(e){return e?.animationName||"none"}function v3(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var Tv=0;function ix(){y.useEffect(()=>{const e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??p1()),document.body.insertAdjacentElement("beforeend",e[1]??p1()),Tv++,()=>{Tv===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(t=>t.remove()),Tv--}},[])}function p1(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}var pa=function(){return pa=Object.assign||function(t){for(var n,r=1,s=arguments.length;r"u")return O3;var t=A3(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},F3=vT(),Kl="data-scroll-locked",L3=function(e,t,n,r){var s=e.left,o=e.top,l=e.right,u=e.gap;return n===void 0&&(n="margin"),` + .`.concat(b3,` { + overflow: hidden `).concat(r,`; + padding-right: `).concat(u,"px ").concat(r,`; + } + body[`).concat(Kl,`] { + overflow: hidden `).concat(r,`; + overscroll-behavior: contain; + `).concat([t&&"position: relative ".concat(r,";"),n==="margin"&&` + padding-left: `.concat(s,`px; + padding-top: `).concat(o,`px; + padding-right: `).concat(l,`px; + margin-left:0; + margin-top:0; + margin-right: `).concat(u,"px ").concat(r,`; + `),n==="padding"&&"padding-right: ".concat(u,"px ").concat(r,";")].filter(Boolean).join(""),` + } + + .`).concat(xp,` { + right: `).concat(u,"px ").concat(r,`; + } + + .`).concat(wp,` { + margin-right: `).concat(u,"px ").concat(r,`; + } + + .`).concat(xp," .").concat(xp,` { + right: 0 `).concat(r,`; + } + + .`).concat(wp," .").concat(wp,` { + margin-right: 0 `).concat(r,`; + } + + body[`).concat(Kl,`] { + `).concat(x3,": ").concat(u,`px; + } +`)},m1=function(){var e=parseInt(document.body.getAttribute(Kl)||"0",10);return isFinite(e)?e:0},$3=function(){y.useEffect(function(){return document.body.setAttribute(Kl,(m1()+1).toString()),function(){var e=m1()-1;e<=0?document.body.removeAttribute(Kl):document.body.setAttribute(Kl,e.toString())}},[])},B3=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,s=r===void 0?"margin":r;$3();var o=y.useMemo(function(){return D3(s)},[s]);return y.createElement(F3,{styles:L3(o,!t,s,n?"":"!important")})},Zy=!1;if(typeof window<"u")try{var zf=Object.defineProperty({},"passive",{get:function(){return Zy=!0,!0}});window.addEventListener("test",zf,zf),window.removeEventListener("test",zf,zf)}catch{Zy=!1}var Rl=Zy?{passive:!1}:!1,z3=function(e){return e.tagName==="TEXTAREA"},yT=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!=="hidden"&&!(n.overflowY===n.overflowX&&!z3(e)&&n[t]==="visible")},U3=function(e){return yT(e,"overflowY")},V3=function(e){return yT(e,"overflowX")},g1=function(e,t){var n=t.ownerDocument,r=t;do{typeof ShadowRoot<"u"&&r instanceof ShadowRoot&&(r=r.host);var s=bT(e,r);if(s){var o=xT(e,r),l=o[1],u=o[2];if(l>u)return!0}r=r.parentNode}while(r&&r!==n.body);return!1},q3=function(e){var t=e.scrollTop,n=e.scrollHeight,r=e.clientHeight;return[t,n,r]},H3=function(e){var t=e.scrollLeft,n=e.scrollWidth,r=e.clientWidth;return[t,n,r]},bT=function(e,t){return e==="v"?U3(t):V3(t)},xT=function(e,t){return e==="v"?q3(t):H3(t)},K3=function(e,t){return e==="h"&&t==="rtl"?-1:1},W3=function(e,t,n,r,s){var o=K3(e,window.getComputedStyle(t).direction),l=o*r,u=n.target,d=t.contains(u),f=!1,h=l>0,m=0,g=0;do{if(!u)break;var x=xT(e,u),b=x[0],w=x[1],C=x[2],k=w-C-o*b;(b||k)&&bT(e,u)&&(m+=k,g+=b);var N=u.parentNode;u=N&&N.nodeType===Node.DOCUMENT_FRAGMENT_NODE?N.host:N}while(!d&&u!==document.body||d&&(t.contains(u)||t===u));return(h&&Math.abs(m)<1||!h&&Math.abs(g)<1)&&(f=!0),f},Uf=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},v1=function(e){return[e.deltaX,e.deltaY]},y1=function(e){return e&&"current"in e?e.current:e},G3=function(e,t){return e[0]===t[0]&&e[1]===t[1]},J3=function(e){return` + .block-interactivity-`.concat(e,` {pointer-events: none;} + .allow-interactivity-`).concat(e,` {pointer-events: all;} +`)},Q3=0,Pl=[];function Y3(e){var t=y.useRef([]),n=y.useRef([0,0]),r=y.useRef(),s=y.useState(Q3++)[0],o=y.useState(vT)[0],l=y.useRef(e);y.useEffect(function(){l.current=e},[e]),y.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(s));var w=y3([e.lockRef.current],(e.shards||[]).map(y1),!0).filter(Boolean);return w.forEach(function(C){return C.classList.add("allow-interactivity-".concat(s))}),function(){document.body.classList.remove("block-interactivity-".concat(s)),w.forEach(function(C){return C.classList.remove("allow-interactivity-".concat(s))})}}},[e.inert,e.lockRef.current,e.shards]);var u=y.useCallback(function(w,C){if("touches"in w&&w.touches.length===2||w.type==="wheel"&&w.ctrlKey)return!l.current.allowPinchZoom;var k=Uf(w),N=n.current,T="deltaX"in w?w.deltaX:N[0]-k[0],_="deltaY"in w?w.deltaY:N[1]-k[1],I,M=w.target,A=Math.abs(T)>Math.abs(_)?"h":"v";if("touches"in w&&A==="h"&&M.type==="range")return!1;var O=window.getSelection(),F=O&&O.anchorNode,z=F?F===M||F.contains(M):!1;if(z)return!1;var Z=g1(A,M);if(!Z)return!0;if(Z?I=A:(I=A==="v"?"h":"v",Z=g1(A,M)),!Z)return!1;if(!r.current&&"changedTouches"in w&&(T||_)&&(r.current=I),!I)return!0;var B=r.current||I;return W3(B,C,w,B==="h"?T:_)},[]),d=y.useCallback(function(w){var C=w;if(!(!Pl.length||Pl[Pl.length-1]!==o)){var k="deltaY"in C?v1(C):Uf(C),N=t.current.filter(function(I){return I.name===C.type&&(I.target===C.target||C.target===I.shadowParent)&&G3(I.delta,k)})[0];if(N&&N.should){C.cancelable&&C.preventDefault();return}if(!N){var T=(l.current.shards||[]).map(y1).filter(Boolean).filter(function(I){return I.contains(C.target)}),_=T.length>0?u(C,T[0]):!l.current.noIsolation;_&&C.cancelable&&C.preventDefault()}}},[]),f=y.useCallback(function(w,C,k,N){var T={name:w,delta:C,target:k,should:N,shadowParent:Z3(k)};t.current.push(T),setTimeout(function(){t.current=t.current.filter(function(_){return _!==T})},1)},[]),h=y.useCallback(function(w){n.current=Uf(w),r.current=void 0},[]),m=y.useCallback(function(w){f(w.type,v1(w),w.target,u(w,e.lockRef.current))},[]),g=y.useCallback(function(w){f(w.type,Uf(w),w.target,u(w,e.lockRef.current))},[]);y.useEffect(function(){return Pl.push(o),e.setCallbacks({onScrollCapture:m,onWheelCapture:m,onTouchMoveCapture:g}),document.addEventListener("wheel",d,Rl),document.addEventListener("touchmove",d,Rl),document.addEventListener("touchstart",h,Rl),function(){Pl=Pl.filter(function(w){return w!==o}),document.removeEventListener("wheel",d,Rl),document.removeEventListener("touchmove",d,Rl),document.removeEventListener("touchstart",h,Rl)}},[]);var x=e.removeScrollBar,b=e.inert;return y.createElement(y.Fragment,null,b?y.createElement(o,{styles:J3(s)}):null,x?y.createElement(B3,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function Z3(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}const X3=N3(gT,Y3);var Dh=y.forwardRef(function(e,t){return y.createElement(Ah,pa({},e,{ref:t,sideCar:X3}))});Dh.classNames=Ah.classNames;var eB=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},Il=new WeakMap,Vf=new WeakMap,qf={},Pv=0,wT=function(e){return e&&(e.host||wT(e.parentNode))},tB=function(e,t){return t.map(function(n){if(e.contains(n))return n;var r=wT(n);return r&&e.contains(r)?r:(console.error("aria-hidden",n,"in not contained inside",e,". Doing nothing"),null)}).filter(function(n){return!!n})},nB=function(e,t,n,r){var s=tB(t,Array.isArray(e)?e:[e]);qf[n]||(qf[n]=new WeakMap);var o=qf[n],l=[],u=new Set,d=new Set(s),f=function(m){!m||u.has(m)||(u.add(m),f(m.parentNode))};s.forEach(f);var h=function(m){!m||d.has(m)||Array.prototype.forEach.call(m.children,function(g){if(u.has(g))h(g);else try{var x=g.getAttribute(r),b=x!==null&&x!=="false",w=(Il.get(g)||0)+1,C=(o.get(g)||0)+1;Il.set(g,w),o.set(g,C),l.push(g),w===1&&b&&Vf.set(g,!0),C===1&&g.setAttribute(n,"true"),b||g.setAttribute(r,"true")}catch(k){console.error("aria-hidden: cannot operate on ",g,k)}})};return h(t),u.clear(),Pv++,function(){l.forEach(function(m){var g=Il.get(m)-1,x=o.get(m)-1;Il.set(m,g),o.set(m,x),g||(Vf.has(m)||m.removeAttribute(r),Vf.delete(m)),x||m.removeAttribute(n)}),Pv--,Pv||(Il=new WeakMap,Il=new WeakMap,Vf=new WeakMap,qf={})}},lx=function(e,t,n){n===void 0&&(n="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),s=eB(e);return s?(r.push.apply(r,Array.from(s.querySelectorAll("[aria-live]"))),nB(r,s,n,"aria-hidden")):function(){return null}},Fh="Dialog",[ST]=ea(Fh),[rB,na]=ST(Fh),CT=e=>{const{__scopeDialog:t,children:n,open:r,defaultOpen:s,onOpenChange:o,modal:l=!0}=e,u=y.useRef(null),d=y.useRef(null),[f,h]=Ba({prop:r,defaultProp:s??!1,onChange:o,caller:Fh});return a.jsx(rB,{scope:t,triggerRef:u,contentRef:d,contentId:Ws(),titleId:Ws(),descriptionId:Ws(),open:f,onOpenChange:h,onOpenToggle:y.useCallback(()=>h(m=>!m),[h]),modal:l,children:n})};CT.displayName=Fh;var jT="DialogTrigger",kT=y.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,s=na(jT,n),o=Xt(t,s.triggerRef);return a.jsx(xt.button,{type:"button","aria-haspopup":"dialog","aria-expanded":s.open,"aria-controls":s.contentId,"data-state":dx(s.open),...r,ref:o,onClick:Ge(e.onClick,s.onOpenToggle)})});kT.displayName=jT;var cx="DialogPortal",[sB,ET]=ST(cx,{forceMount:void 0}),NT=e=>{const{__scopeDialog:t,forceMount:n,children:r,container:s}=e,o=na(cx,t);return a.jsx(sB,{scope:t,forceMount:n,children:y.Children.map(r,l=>a.jsx(ta,{present:n||o.open,children:a.jsx(Oh,{asChild:!0,container:s,children:l})}))})};NT.displayName=cx;var Vp="DialogOverlay",TT=y.forwardRef((e,t)=>{const n=ET(Vp,e.__scopeDialog),{forceMount:r=n.forceMount,...s}=e,o=na(Vp,e.__scopeDialog);return o.modal?a.jsx(ta,{present:r||o.open,children:a.jsx(oB,{...s,ref:t})}):null});TT.displayName=Vp;var aB=rc("DialogOverlay.RemoveScroll"),oB=y.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,s=na(Vp,n);return a.jsx(Dh,{as:aB,allowPinchZoom:!0,shards:[s.contentRef],children:a.jsx(xt.div,{"data-state":dx(s.open),...r,ref:t,style:{pointerEvents:"auto",...r.style}})})}),$i="DialogContent",MT=y.forwardRef((e,t)=>{const n=ET($i,e.__scopeDialog),{forceMount:r=n.forceMount,...s}=e,o=na($i,e.__scopeDialog);return a.jsx(ta,{present:r||o.open,children:o.modal?a.jsx(iB,{...s,ref:t}):a.jsx(lB,{...s,ref:t})})});MT.displayName=$i;var iB=y.forwardRef((e,t)=>{const n=na($i,e.__scopeDialog),r=y.useRef(null),s=Xt(t,n.contentRef,r);return y.useEffect(()=>{const o=r.current;if(o)return lx(o)},[]),a.jsx(_T,{...e,ref:s,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:Ge(e.onCloseAutoFocus,o=>{o.preventDefault(),n.triggerRef.current?.focus()}),onPointerDownOutside:Ge(e.onPointerDownOutside,o=>{const l=o.detail.originalEvent,u=l.button===0&&l.ctrlKey===!0;(l.button===2||u)&&o.preventDefault()}),onFocusOutside:Ge(e.onFocusOutside,o=>o.preventDefault())})}),lB=y.forwardRef((e,t)=>{const n=na($i,e.__scopeDialog),r=y.useRef(!1),s=y.useRef(!1);return a.jsx(_T,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:o=>{e.onCloseAutoFocus?.(o),o.defaultPrevented||(r.current||n.triggerRef.current?.focus(),o.preventDefault()),r.current=!1,s.current=!1},onInteractOutside:o=>{e.onInteractOutside?.(o),o.defaultPrevented||(r.current=!0,o.detail.originalEvent.type==="pointerdown"&&(s.current=!0));const l=o.target;n.triggerRef.current?.contains(l)&&o.preventDefault(),o.detail.originalEvent.type==="focusin"&&s.current&&o.preventDefault()}})}),_T=y.forwardRef((e,t)=>{const{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:s,onCloseAutoFocus:o,...l}=e,u=na($i,n),d=y.useRef(null),f=Xt(t,d);return ix(),a.jsxs(a.Fragment,{children:[a.jsx(Ih,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:s,onUnmountAutoFocus:o,children:a.jsx(Ph,{role:"dialog",id:u.contentId,"aria-describedby":u.descriptionId,"aria-labelledby":u.titleId,"data-state":dx(u.open),...l,ref:f,onDismiss:()=>u.onOpenChange(!1)})}),a.jsxs(a.Fragment,{children:[a.jsx(cB,{titleId:u.titleId}),a.jsx(dB,{contentRef:d,descriptionId:u.descriptionId})]})]})}),ux="DialogTitle",RT=y.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,s=na(ux,n);return a.jsx(xt.h2,{id:s.titleId,...r,ref:t})});RT.displayName=ux;var PT="DialogDescription",IT=y.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,s=na(PT,n);return a.jsx(xt.p,{id:s.descriptionId,...r,ref:t})});IT.displayName=PT;var OT="DialogClose",AT=y.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,s=na(OT,n);return a.jsx(xt.button,{type:"button",...r,ref:t,onClick:Ge(e.onClick,()=>s.onOpenChange(!1))})});AT.displayName=OT;function dx(e){return e?"open":"closed"}var DT="DialogTitleWarning",[gce,FT]=B$(DT,{contentName:$i,titleName:ux,docsSlug:"dialog"}),cB=({titleId:e})=>{const t=FT(DT),n=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users. + +If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component. + +For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return y.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},uB="DialogDescriptionWarning",dB=({contentRef:e,descriptionId:t})=>{const r=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${FT(uB).contentName}}.`;return y.useEffect(()=>{const s=e.current?.getAttribute("aria-describedby");t&&s&&(document.getElementById(t)||console.warn(r))},[r,e,t]),null},fB=CT,pB=kT,hB=NT,mB=TT,gB=MT,vB=RT,yB=IT,bB=AT;/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const xB=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),LT=(...e)=>e.filter((t,n,r)=>!!t&&r.indexOf(t)===n).join(" ");/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */var wB={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const SB=y.forwardRef(({color:e="currentColor",size:t=24,strokeWidth:n=2,absoluteStrokeWidth:r,className:s="",children:o,iconNode:l,...u},d)=>y.createElement("svg",{ref:d,...wB,width:t,height:t,stroke:e,strokeWidth:r?Number(n)*24/Number(t):n,className:LT("lucide",s),...u},[...l.map(([f,h])=>y.createElement(f,h)),...Array.isArray(o)?o:[o]]));/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ve=(e,t)=>{const n=y.forwardRef(({className:r,...s},o)=>y.createElement(SB,{ref:o,iconNode:t,className:LT(`lucide-${xB(e)}`,r),...s}));return n.displayName=`${e}`,n};/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const b1=Ve("Apple",[["path",{d:"M12 20.94c1.5 0 2.75 1.06 4 1.06 3 0 6-8 6-12.22A4.91 4.91 0 0 0 17 5c-2.22 0-4 1.44-5 2-1-.56-2.78-2-5-2a4.9 4.9 0 0 0-5 4.78C2 14 5 22 8 22c1.25 0 2.5-1.06 4-1.06Z",key:"3s7exb"}],["path",{d:"M10 2c1 .5 2 2 2 5",key:"fcco2y"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const CB=Ve("ArrowLeft",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const fx=Ve("ArrowRight",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const jB=Ve("ArrowUpDown",[["path",{d:"m21 16-4 4-4-4",key:"f6ql7i"}],["path",{d:"M17 20V4",key:"1ejh1v"}],["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const kB=Ve("Car",[["path",{d:"M19 17h2c.6 0 1-.4 1-1v-3c0-.9-.7-1.7-1.5-1.9C18.7 10.6 16 10 16 10s-1.3-1.4-2.2-2.3c-.5-.4-1.1-.7-1.8-.7H5c-.6 0-1.1.4-1.4.9l-1.4 2.9A3.7 3.7 0 0 0 2 12v4c0 .6.4 1 1 1h2",key:"5owen"}],["circle",{cx:"7",cy:"17",r:"2",key:"u2ysq9"}],["path",{d:"M9 17h6",key:"r8uit2"}],["circle",{cx:"17",cy:"17",r:"2",key:"axvx0g"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $T=Ve("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const EB=Ve("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const NB=Ve("ChevronsUpDown",[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const BT=Ve("CircleAlert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const TB=Ve("CircleCheckBig",[["path",{d:"M22 11.08V12a10 10 0 1 1-5.93-9.14",key:"g774vq"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const x1=Ve("CircleCheck",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const MB=Ve("CircleHelp",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Qi=Ve("CircleStop",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["rect",{width:"6",height:"6",x:"9",y:"9",key:"1wrtvo"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _B=Ve("CircleUser",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}],["path",{d:"M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662",key:"154egf"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const RB=Ve("CircleX",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const PB=Ve("Club",[["path",{d:"M17.28 9.05a5.5 5.5 0 1 0-10.56 0A5.5 5.5 0 1 0 12 17.66a5.5 5.5 0 1 0 5.28-8.6Z",key:"27yuqz"}],["path",{d:"M12 17.66L12 22",key:"ogfahf"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Go=Ve("Cog",[["path",{d:"M12 20a8 8 0 1 0 0-16 8 8 0 0 0 0 16Z",key:"sobvz5"}],["path",{d:"M12 14a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z",key:"11i496"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 22v-2",key:"1osdcq"}],["path",{d:"m17 20.66-1-1.73",key:"eq3orb"}],["path",{d:"M11 10.27 7 3.34",key:"16pf9h"}],["path",{d:"m20.66 17-1.73-1",key:"sg0v6f"}],["path",{d:"m3.34 7 1.73 1",key:"1ulond"}],["path",{d:"M14 12h8",key:"4f43i9"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"m20.66 7-1.73 1",key:"1ow05n"}],["path",{d:"m3.34 17 1.73-1",key:"nuk764"}],["path",{d:"m17 3.34-1 1.73",key:"2wel8s"}],["path",{d:"m11 13.73-4 6.93",key:"794ttg"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const IB=Ve("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Yi=Ve("Delete",[["path",{d:"M10 5a2 2 0 0 0-1.344.519l-6.328 5.74a1 1 0 0 0 0 1.481l6.328 5.741A2 2 0 0 0 10 19h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2z",key:"1yo7s0"}],["path",{d:"m12 9 6 6",key:"anjzzh"}],["path",{d:"m18 9-6 6",key:"1fp51s"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Jo=Ve("Ellipsis",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const OB=Ve("EyeOff",[["path",{d:"M9.88 9.88a3 3 0 1 0 4.24 4.24",key:"1jxqfv"}],["path",{d:"M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68",key:"9wicm4"}],["path",{d:"M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61",key:"1jreej"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const AB=Ve("Eye",[["path",{d:"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z",key:"rwhkz3"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const DB=Ve("FilePlus",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M9 15h6",key:"cctwl0"}],["path",{d:"M12 18v-6",key:"17g6i2"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const FB=Ve("FileQuestion",[["path",{d:"M12 17h.01",key:"p32p05"}],["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z",key:"1mlx9k"}],["path",{d:"M9.1 9a3 3 0 0 1 5.82 1c0 2-3 3-3 3",key:"mhlwft"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const px=Ve("File",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const LB=Ve("Flag",[["path",{d:"M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z",key:"i9b6wo"}],["line",{x1:"4",x2:"4",y1:"22",y2:"15",key:"1cm3nv"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $B=Ve("FlaskConical",[["path",{d:"M10 2v7.527a2 2 0 0 1-.211.896L4.72 20.55a1 1 0 0 0 .9 1.45h12.76a1 1 0 0 0 .9-1.45l-5.069-10.127A2 2 0 0 1 14 9.527V2",key:"pzvekw"}],["path",{d:"M8.5 2h7",key:"csnxdl"}],["path",{d:"M7 16h10",key:"wp8him"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const BB=Ve("Github",[["path",{d:"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4",key:"tonef"}],["path",{d:"M9 18c-4.51 2-5-2-7-2",key:"9comsn"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const zB=Ve("Globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const UB=Ve("Image",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const VB=Ve("Images",[["path",{d:"M18 22H4a2 2 0 0 1-2-2V6",key:"pblm9e"}],["path",{d:"m22 13-1.296-1.296a2.41 2.41 0 0 0-3.408 0L11 18",key:"nf6bnh"}],["circle",{cx:"12",cy:"8",r:"2",key:"1822b1"}],["rect",{width:"16",height:"16",x:"6",y:"2",rx:"2",key:"12espp"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const qB=Ve("IterationCcw",[["path",{d:"M20 10c0-4.4-3.6-8-8-8s-8 3.6-8 8 3.6 8 8 8h8",key:"4znkd0"}],["polyline",{points:"16 14 20 18 16 22",key:"11njsm"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const HB=Ve("KeyRound",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const KB=Ve("Languages",[["path",{d:"m5 8 6 6",key:"1wu5hv"}],["path",{d:"m4 14 6-6 2-3",key:"1k1g8d"}],["path",{d:"M2 5h12",key:"or177f"}],["path",{d:"M7 2h1",key:"1t2jsx"}],["path",{d:"m22 22-5-10-5 10",key:"don7ne"}],["path",{d:"M14 18h6",key:"1m8k6r"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const WB=Ve("Layers",[["path",{d:"m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z",key:"8b97xw"}],["path",{d:"m22 17.65-9.17 4.16a2 2 0 0 1-1.66 0L2 17.65",key:"dd6zsq"}],["path",{d:"m22 12.65-9.17 4.16a2 2 0 0 1-1.66 0L2 12.65",key:"ep9fru"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Xy=Ve("LayoutDashboard",[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const GB=Ve("Lightbulb",[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Zi=Ve("ListCollapse",[["path",{d:"m3 10 2.5-2.5L3 5",key:"i6eama"}],["path",{d:"m3 19 2.5-2.5L3 14",key:"w2gmor"}],["path",{d:"M10 6h11",key:"c7qv1k"}],["path",{d:"M10 12h11",key:"6m4ad9"}],["path",{d:"M10 18h11",key:"11hvi2"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Lh=Ve("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const JB=Ve("Lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const zT=Ve("LogOut",[["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}],["polyline",{points:"16 17 21 12 16 7",key:"1gabdz"}],["line",{x1:"21",x2:"9",y1:"12",y2:"12",key:"1uyos4"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const QB=Ve("Mail",[["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const YB=Ve("MapPin",[["path",{d:"M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0Z",key:"2oe9fu"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const sc=Ve("MessageCircle",[["path",{d:"M7.9 20A9 9 0 1 0 4 16.1L2 22Z",key:"vv11sd"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Xi=Ve("MessageSquare",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const UT=Ve("Mic",[["path",{d:"M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z",key:"131961"}],["path",{d:"M19 10v2a7 7 0 0 1-14 0v-2",key:"1vc78b"}],["line",{x1:"12",x2:"12",y1:"19",y2:"22",key:"x3vr5v"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ZB=Ve("Moon",[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const el=Ve("Pause",[["rect",{x:"14",y:"4",width:"4",height:"16",rx:"1",key:"zuxfzm"}],["rect",{x:"6",y:"4",width:"4",height:"16",rx:"1",key:"1okwgv"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const tl=Ve("Play",[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Yr=Ve("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const XB=Ve("Power",[["path",{d:"M12 2v10",key:"mnfbl"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04",key:"obofu9"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const qp=Ve("QrCode",[["rect",{width:"5",height:"5",x:"3",y:"3",rx:"1",key:"1tu5fj"}],["rect",{width:"5",height:"5",x:"16",y:"3",rx:"1",key:"1v8r4q"}],["rect",{width:"5",height:"5",x:"3",y:"16",rx:"1",key:"1x03jg"}],["path",{d:"M21 16h-3a2 2 0 0 0-2 2v3",key:"177gqh"}],["path",{d:"M21 21v.01",key:"ents32"}],["path",{d:"M12 7v3a2 2 0 0 1-2 2H7",key:"8crl2c"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M12 3h.01",key:"n36tog"}],["path",{d:"M12 16v.01",key:"133mhm"}],["path",{d:"M16 12h1",key:"1slzba"}],["path",{d:"M21 12v.01",key:"1lwtk9"}],["path",{d:"M12 21v-1",key:"1880an"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ac=Ve("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const nl=Ve("RotateCcw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const VT=Ve("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Hp=Ve("Send",[["path",{d:"m22 2-7 20-4-9-9-4Z",key:"1q3vgg"}],["path",{d:"M22 2 11 13",key:"nzbqef"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ez=Ve("Settings",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const tz=Ve("Shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const qT=Ve("Smile",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 14s1.5 2 4 2 4-2 4-2",key:"1y1vjs"}],["line",{x1:"9",x2:"9.01",y1:"9",y2:"9",key:"yxxnd0"}],["line",{x1:"15",x2:"15.01",y1:"9",y2:"9",key:"1p4y9e"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const nz=Ve("Square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const rz=Ve("Sticker",[["path",{d:"M15.5 3H5a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h14a2 2 0 0 0 2-2V8.5L15.5 3Z",key:"1wis1t"}],["path",{d:"M14 3v4a2 2 0 0 0 2 2h4",key:"36rjfy"}],["path",{d:"M8 13h.01",key:"1sbv64"}],["path",{d:"M16 13h.01",key:"wip0gl"}],["path",{d:"M10 16s.8 1 2 1c1.3 0 2-1 2-1",key:"1vvgv3"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const sz=Ve("Sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const HT=Ve("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const az=Ve("Trash",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Kp=Ve("User",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const oz=Ve("UsersRound",[["path",{d:"M18 21a8 8 0 0 0-16 0",key:"3ypg7q"}],["circle",{cx:"10",cy:"8",r:"5",key:"o932ke"}],["path",{d:"M22 20c0-3.37-2-6.5-4-8a5 5 0 0 0-.45-8.3",key:"10s06x"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const w1=Ve("Users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["path",{d:"M16 3.13a4 4 0 0 1 0 7.75",key:"1da9ce"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const iz=Ve("Video",[["path",{d:"m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5",key:"ftymec"}],["rect",{x:"2",y:"6",width:"14",height:"12",rx:"2",key:"158x01"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $h=Ve("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);/** + * @license lucide-react v0.408.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const lz=Ve("Zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]),hx="-";function cz(e){const t=dz(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;function s(l){const u=l.split(hx);return u[0]===""&&u.length!==1&&u.shift(),KT(u,t)||uz(l)}function o(l,u){const d=n[l]||[];return u&&r[l]?[...d,...r[l]]:d}return{getClassGroupId:s,getConflictingClassGroupIds:o}}function KT(e,t){if(e.length===0)return t.classGroupId;const n=e[0],r=t.nextPart.get(n),s=r?KT(e.slice(1),r):void 0;if(s)return s;if(t.validators.length===0)return;const o=e.join(hx);return t.validators.find(({validator:l})=>l(o))?.classGroupId}const S1=/^\[(.+)\]$/;function uz(e){if(S1.test(e)){const t=S1.exec(e)[1],n=t?.substring(0,t.indexOf(":"));if(n)return"arbitrary.."+n}}function dz(e){const{theme:t,prefix:n}=e,r={nextPart:new Map,validators:[]};return pz(Object.entries(e.classGroups),n).forEach(([o,l])=>{eb(l,r,o,t)}),r}function eb(e,t,n,r){e.forEach(s=>{if(typeof s=="string"){const o=s===""?t:C1(t,s);o.classGroupId=n;return}if(typeof s=="function"){if(fz(s)){eb(s(r),t,n,r);return}t.validators.push({validator:s,classGroupId:n});return}Object.entries(s).forEach(([o,l])=>{eb(l,C1(t,o),n,r)})})}function C1(e,t){let n=e;return t.split(hx).forEach(r=>{n.nextPart.has(r)||n.nextPart.set(r,{nextPart:new Map,validators:[]}),n=n.nextPart.get(r)}),n}function fz(e){return e.isThemeGetter}function pz(e,t){return t?e.map(([n,r])=>{const s=r.map(o=>typeof o=="string"?t+o:typeof o=="object"?Object.fromEntries(Object.entries(o).map(([l,u])=>[t+l,u])):o);return[n,s]}):e}function hz(e){if(e<1)return{get:()=>{},set:()=>{}};let t=0,n=new Map,r=new Map;function s(o,l){n.set(o,l),t++,t>e&&(t=0,r=n,n=new Map)}return{get(o){let l=n.get(o);if(l!==void 0)return l;if((l=r.get(o))!==void 0)return s(o,l),l},set(o,l){n.has(o)?n.set(o,l):s(o,l)}}}const WT="!";function mz(e){const{separator:t,experimentalParseClassName:n}=e,r=t.length===1,s=t[0],o=t.length;function l(u){const d=[];let f=0,h=0,m;for(let C=0;Ch?m-h:void 0;return{modifiers:d,hasImportantModifier:x,baseClassName:b,maybePostfixModifierPosition:w}}return n?function(d){return n({className:d,parseClassName:l})}:l}function gz(e){if(e.length<=1)return e;const t=[];let n=[];return e.forEach(r=>{r[0]==="["?(t.push(...n.sort(),r),n=[]):n.push(r)}),t.push(...n.sort()),t}function vz(e){return{cache:hz(e.cacheSize),parseClassName:mz(e),...cz(e)}}const yz=/\s+/;function bz(e,t){const{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:s}=t,o=new Set;return e.trim().split(yz).map(l=>{const{modifiers:u,hasImportantModifier:d,baseClassName:f,maybePostfixModifierPosition:h}=n(l);let m=!!h,g=r(m?f.substring(0,h):f);if(!g){if(!m)return{isTailwindClass:!1,originalClassName:l};if(g=r(f),!g)return{isTailwindClass:!1,originalClassName:l};m=!1}const x=gz(u).join(":");return{isTailwindClass:!0,modifierId:d?x+WT:x,classGroupId:g,originalClassName:l,hasPostfixModifier:m}}).reverse().filter(l=>{if(!l.isTailwindClass)return!0;const{modifierId:u,classGroupId:d,hasPostfixModifier:f}=l,h=u+d;return o.has(h)?!1:(o.add(h),s(d,f).forEach(m=>o.add(u+m)),!0)}).reverse().map(l=>l.originalClassName).join(" ")}function xz(){let e=0,t,n,r="";for(;em(h),e());return n=vz(f),r=n.cache.get,s=n.cache.set,o=u,u(d)}function u(d){const f=r(d);if(f)return f;const h=bz(d,n);return s(d,h),h}return function(){return o(xz.apply(null,arguments))}}function Sn(e){const t=n=>n[e]||[];return t.isThemeGetter=!0,t}const JT=/^\[(?:([a-z-]+):)?(.+)\]$/i,Sz=/^\d+\/\d+$/,Cz=new Set(["px","full","screen"]),jz=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,kz=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Ez=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,Nz=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Tz=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/;function Pa(e){return _i(e)||Cz.has(e)||Sz.test(e)}function So(e){return xc(e,"length",Dz)}function _i(e){return!!e&&!Number.isNaN(Number(e))}function Hf(e){return xc(e,"number",_i)}function Cu(e){return!!e&&Number.isInteger(Number(e))}function Mz(e){return e.endsWith("%")&&_i(e.slice(0,-1))}function Ot(e){return JT.test(e)}function Co(e){return jz.test(e)}const _z=new Set(["length","size","percentage"]);function Rz(e){return xc(e,_z,QT)}function Pz(e){return xc(e,"position",QT)}const Iz=new Set(["image","url"]);function Oz(e){return xc(e,Iz,Lz)}function Az(e){return xc(e,"",Fz)}function ju(){return!0}function xc(e,t,n){const r=JT.exec(e);return r?r[1]?typeof t=="string"?r[1]===t:t.has(r[1]):n(r[2]):!1}function Dz(e){return kz.test(e)&&!Ez.test(e)}function QT(){return!1}function Fz(e){return Nz.test(e)}function Lz(e){return Tz.test(e)}function $z(){const e=Sn("colors"),t=Sn("spacing"),n=Sn("blur"),r=Sn("brightness"),s=Sn("borderColor"),o=Sn("borderRadius"),l=Sn("borderSpacing"),u=Sn("borderWidth"),d=Sn("contrast"),f=Sn("grayscale"),h=Sn("hueRotate"),m=Sn("invert"),g=Sn("gap"),x=Sn("gradientColorStops"),b=Sn("gradientColorStopPositions"),w=Sn("inset"),C=Sn("margin"),k=Sn("opacity"),N=Sn("padding"),T=Sn("saturate"),_=Sn("scale"),I=Sn("sepia"),M=Sn("skew"),A=Sn("space"),O=Sn("translate"),F=()=>["auto","contain","none"],z=()=>["auto","hidden","clip","visible","scroll"],Z=()=>["auto",Ot,t],B=()=>[Ot,t],ce=()=>["",Pa,So],H=()=>["auto",_i,Ot],oe=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],Q=()=>["solid","dashed","dotted","double","none"],ne=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],V=()=>["start","end","center","between","around","evenly","stretch"],K=()=>["","0",Ot],U=()=>["auto","avoid","all","avoid-page","page","left","right","column"],D=()=>[_i,Hf],J=()=>[_i,Ot];return{cacheSize:500,separator:":",theme:{colors:[ju],spacing:[Pa,So],blur:["none","",Co,Ot],brightness:D(),borderColor:[e],borderRadius:["none","","full",Co,Ot],borderSpacing:B(),borderWidth:ce(),contrast:D(),grayscale:K(),hueRotate:J(),invert:K(),gap:B(),gradientColorStops:[e],gradientColorStopPositions:[Mz,So],inset:Z(),margin:Z(),opacity:D(),padding:B(),saturate:D(),scale:D(),sepia:K(),skew:J(),space:B(),translate:B()},classGroups:{aspect:[{aspect:["auto","square","video",Ot]}],container:["container"],columns:[{columns:[Co]}],"break-after":[{"break-after":U()}],"break-before":[{"break-before":U()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...oe(),Ot]}],overflow:[{overflow:z()}],"overflow-x":[{"overflow-x":z()}],"overflow-y":[{"overflow-y":z()}],overscroll:[{overscroll:F()}],"overscroll-x":[{"overscroll-x":F()}],"overscroll-y":[{"overscroll-y":F()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[w]}],"inset-x":[{"inset-x":[w]}],"inset-y":[{"inset-y":[w]}],start:[{start:[w]}],end:[{end:[w]}],top:[{top:[w]}],right:[{right:[w]}],bottom:[{bottom:[w]}],left:[{left:[w]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",Cu,Ot]}],basis:[{basis:Z()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",Ot]}],grow:[{grow:K()}],shrink:[{shrink:K()}],order:[{order:["first","last","none",Cu,Ot]}],"grid-cols":[{"grid-cols":[ju]}],"col-start-end":[{col:["auto",{span:["full",Cu,Ot]},Ot]}],"col-start":[{"col-start":H()}],"col-end":[{"col-end":H()}],"grid-rows":[{"grid-rows":[ju]}],"row-start-end":[{row:["auto",{span:[Cu,Ot]},Ot]}],"row-start":[{"row-start":H()}],"row-end":[{"row-end":H()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",Ot]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",Ot]}],gap:[{gap:[g]}],"gap-x":[{"gap-x":[g]}],"gap-y":[{"gap-y":[g]}],"justify-content":[{justify:["normal",...V()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...V(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...V(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[N]}],px:[{px:[N]}],py:[{py:[N]}],ps:[{ps:[N]}],pe:[{pe:[N]}],pt:[{pt:[N]}],pr:[{pr:[N]}],pb:[{pb:[N]}],pl:[{pl:[N]}],m:[{m:[C]}],mx:[{mx:[C]}],my:[{my:[C]}],ms:[{ms:[C]}],me:[{me:[C]}],mt:[{mt:[C]}],mr:[{mr:[C]}],mb:[{mb:[C]}],ml:[{ml:[C]}],"space-x":[{"space-x":[A]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[A]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",Ot,t]}],"min-w":[{"min-w":[Ot,t,"min","max","fit"]}],"max-w":[{"max-w":[Ot,t,"none","full","min","max","fit","prose",{screen:[Co]},Co]}],h:[{h:[Ot,t,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[Ot,t,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[Ot,t,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[Ot,t,"auto","min","max","fit"]}],"font-size":[{text:["base",Co,So]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",Hf]}],"font-family":[{font:[ju]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractons"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",Ot]}],"line-clamp":[{"line-clamp":["none",_i,Hf]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",Pa,Ot]}],"list-image":[{"list-image":["none",Ot]}],"list-style-type":[{list:["none","disc","decimal",Ot]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[k]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[k]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...Q(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",Pa,So]}],"underline-offset":[{"underline-offset":["auto",Pa,Ot]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:B()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Ot]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",Ot]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[k]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...oe(),Pz]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",Rz]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},Oz]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[b]}],"gradient-via-pos":[{via:[b]}],"gradient-to-pos":[{to:[b]}],"gradient-from":[{from:[x]}],"gradient-via":[{via:[x]}],"gradient-to":[{to:[x]}],rounded:[{rounded:[o]}],"rounded-s":[{"rounded-s":[o]}],"rounded-e":[{"rounded-e":[o]}],"rounded-t":[{"rounded-t":[o]}],"rounded-r":[{"rounded-r":[o]}],"rounded-b":[{"rounded-b":[o]}],"rounded-l":[{"rounded-l":[o]}],"rounded-ss":[{"rounded-ss":[o]}],"rounded-se":[{"rounded-se":[o]}],"rounded-ee":[{"rounded-ee":[o]}],"rounded-es":[{"rounded-es":[o]}],"rounded-tl":[{"rounded-tl":[o]}],"rounded-tr":[{"rounded-tr":[o]}],"rounded-br":[{"rounded-br":[o]}],"rounded-bl":[{"rounded-bl":[o]}],"border-w":[{border:[u]}],"border-w-x":[{"border-x":[u]}],"border-w-y":[{"border-y":[u]}],"border-w-s":[{"border-s":[u]}],"border-w-e":[{"border-e":[u]}],"border-w-t":[{"border-t":[u]}],"border-w-r":[{"border-r":[u]}],"border-w-b":[{"border-b":[u]}],"border-w-l":[{"border-l":[u]}],"border-opacity":[{"border-opacity":[k]}],"border-style":[{border:[...Q(),"hidden"]}],"divide-x":[{"divide-x":[u]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[u]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[k]}],"divide-style":[{divide:Q()}],"border-color":[{border:[s]}],"border-color-x":[{"border-x":[s]}],"border-color-y":[{"border-y":[s]}],"border-color-t":[{"border-t":[s]}],"border-color-r":[{"border-r":[s]}],"border-color-b":[{"border-b":[s]}],"border-color-l":[{"border-l":[s]}],"divide-color":[{divide:[s]}],"outline-style":[{outline:["",...Q()]}],"outline-offset":[{"outline-offset":[Pa,Ot]}],"outline-w":[{outline:[Pa,So]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:ce()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[k]}],"ring-offset-w":[{"ring-offset":[Pa,So]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",Co,Az]}],"shadow-color":[{shadow:[ju]}],opacity:[{opacity:[k]}],"mix-blend":[{"mix-blend":[...ne(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":ne()}],filter:[{filter:["","none"]}],blur:[{blur:[n]}],brightness:[{brightness:[r]}],contrast:[{contrast:[d]}],"drop-shadow":[{"drop-shadow":["","none",Co,Ot]}],grayscale:[{grayscale:[f]}],"hue-rotate":[{"hue-rotate":[h]}],invert:[{invert:[m]}],saturate:[{saturate:[T]}],sepia:[{sepia:[I]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[n]}],"backdrop-brightness":[{"backdrop-brightness":[r]}],"backdrop-contrast":[{"backdrop-contrast":[d]}],"backdrop-grayscale":[{"backdrop-grayscale":[f]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[h]}],"backdrop-invert":[{"backdrop-invert":[m]}],"backdrop-opacity":[{"backdrop-opacity":[k]}],"backdrop-saturate":[{"backdrop-saturate":[T]}],"backdrop-sepia":[{"backdrop-sepia":[I]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[l]}],"border-spacing-x":[{"border-spacing-x":[l]}],"border-spacing-y":[{"border-spacing-y":[l]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",Ot]}],duration:[{duration:J()}],ease:[{ease:["linear","in","out","in-out",Ot]}],delay:[{delay:J()}],animate:[{animate:["none","spin","ping","pulse","bounce",Ot]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[_]}],"scale-x":[{"scale-x":[_]}],"scale-y":[{"scale-y":[_]}],rotate:[{rotate:[Cu,Ot]}],"translate-x":[{"translate-x":[O]}],"translate-y":[{"translate-y":[O]}],"skew-x":[{"skew-x":[M]}],"skew-y":[{"skew-y":[M]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",Ot]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",Ot]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":B()}],"scroll-mx":[{"scroll-mx":B()}],"scroll-my":[{"scroll-my":B()}],"scroll-ms":[{"scroll-ms":B()}],"scroll-me":[{"scroll-me":B()}],"scroll-mt":[{"scroll-mt":B()}],"scroll-mr":[{"scroll-mr":B()}],"scroll-mb":[{"scroll-mb":B()}],"scroll-ml":[{"scroll-ml":B()}],"scroll-p":[{"scroll-p":B()}],"scroll-px":[{"scroll-px":B()}],"scroll-py":[{"scroll-py":B()}],"scroll-ps":[{"scroll-ps":B()}],"scroll-pe":[{"scroll-pe":B()}],"scroll-pt":[{"scroll-pt":B()}],"scroll-pr":[{"scroll-pr":B()}],"scroll-pb":[{"scroll-pb":B()}],"scroll-pl":[{"scroll-pl":B()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",Ot]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[Pa,So,Hf]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}}const Bz=wz($z);function ln(...e){return Bz(Ks(e))}const gt=fB,rn=pB,zz=hB,YT=y.forwardRef(({className:e,...t},n)=>a.jsx(mB,{ref:n,"data-slot":"dialog-overlay",className:ln("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",e),...t}));YT.displayName="DialogOverlay";const pt=y.forwardRef(({className:e,children:t,showCloseButton:n=!0,...r},s)=>a.jsxs(zz,{children:[a.jsx(YT,{}),a.jsxs(gB,{ref:s,"data-slot":"dialog-content",className:ln("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",e),...r,children:[t,n&&a.jsxs(bB,{"data-slot":"dialog-close",className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",children:[a.jsx($h,{}),a.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));pt.displayName="DialogContent";const ht=({className:e,...t})=>a.jsx("div",{"data-slot":"dialog-header",className:ln("flex flex-col gap-2 text-center sm:text-left",e),...t});ht.displayName="DialogHeader";const Kt=({className:e,...t})=>a.jsx("div",{"data-slot":"dialog-footer",className:ln("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",e),...t});Kt.displayName="DialogFooter";const bt=y.forwardRef(({className:e,...t},n)=>a.jsx(vB,{ref:n,"data-slot":"dialog-title",className:ln("text-lg leading-none font-semibold",e),...t}));bt.displayName="DialogTitle";const kr=y.forwardRef(({className:e,...t},n)=>a.jsx(yB,{ref:n,"data-slot":"dialog-description",className:ln("text-muted-foreground text-sm",e),...t}));kr.displayName="DialogDescription";const je=cn.create({timeout:3e4});je.interceptors.request.use(async e=>{const t=jr(Ln.API_URL);if(t&&(e.baseURL=t.toString()),!e.headers.has("apikey")){const n=jr(Ln.INSTANCE_TOKEN);n&&e.headers.set("apikey",n)}return e},e=>Promise.reject(e));const Dn=cn.create({timeout:3e4});Dn.interceptors.request.use(async e=>{const t=jr(Ln.API_URL);if(t&&(e.baseURL=t.toString()),!e.headers.has("apikey")){const n=jr(Ln.TOKEN);n&&e.headers.set("apikey",n)}return e},e=>Promise.reject(e));const ZT=e=>({id:e.id,name:e.name,connectionStatus:e.connected?"open":"close",ownerJid:e.jid,profileName:"",profilePicUrl:"",integration:"EVOLUTION_GO",number:e.jid?e.jid.split("@")[0].split(":")[0]:"",businessId:"",token:e.token,clientName:e.client_name,createdAt:e.createdAt,updatedAt:e.createdAt,Setting:{rejectCall:e.rejectCall,msgCall:e.msgRejectCall,groupsIgnore:e.ignoreGroups,alwaysOnline:e.alwaysOnline,readMessages:e.readMessages,readStatus:!e.ignoreStatus,syncFullHistory:!1},_count:{Contact:0,Chat:0,Message:0}}),Uz=e=>["instance","fetchInstance","go",JSON.stringify(e)],Vz=async({instanceId:e})=>{const t=await Dn.get(`/instance/info/${e}`);return ZT(t.data.data)},qz=e=>{const{instanceId:t,enabled:n,...r}=e;return vt({...r,queryKey:Uz({instanceId:t}),queryFn:()=>Vz({instanceId:t}),enabled:!!t&&(n??!0)})},Hz=e=>["instance","fetchInstance",JSON.stringify(e)],Kz=async({instanceId:e})=>{const t=await Dn.get("/instance/fetchInstances",{params:{instanceId:e}});return Array.isArray(t.data)?t.data[0]:t.data},Wz=e=>{const{instanceId:t,enabled:n,...r}=e;return vt({...r,queryKey:Hz({instanceId:t}),queryFn:()=>Kz({instanceId:t}),enabled:!!t&&(n??!0)})},XT=e=>{const t=Fr(),n=Wz({...e,enabled:(e.enabled??!0)&&t==="api"}),r=qz({...e,enabled:(e.enabled??!0)&&t==="go"});return t==="go"?r:n};function mx(e){const t=e+"CollectionProvider",[n,r]=ea(t),[s,o]=n(t,{collectionRef:{current:null},itemMap:new Map}),l=w=>{const{scope:C,children:k}=w,N=Oe.useRef(null),T=Oe.useRef(new Map).current;return a.jsx(s,{scope:C,itemMap:T,collectionRef:N,children:k})};l.displayName=t;const u=e+"CollectionSlot",d=rc(u),f=Oe.forwardRef((w,C)=>{const{scope:k,children:N}=w,T=o(u,k),_=Xt(C,T.collectionRef);return a.jsx(d,{ref:_,children:N})});f.displayName=u;const h=e+"CollectionItemSlot",m="data-radix-collection-item",g=rc(h),x=Oe.forwardRef((w,C)=>{const{scope:k,children:N,...T}=w,_=Oe.useRef(null),I=Xt(C,_),M=o(h,k);return Oe.useEffect(()=>(M.itemMap.set(_,{ref:_,...T}),()=>void M.itemMap.delete(_))),a.jsx(g,{[m]:"",ref:I,children:N})});x.displayName=h;function b(w){const C=o(e+"CollectionConsumer",w);return Oe.useCallback(()=>{const N=C.collectionRef.current;if(!N)return[];const T=Array.from(N.querySelectorAll(`[${m}]`));return Array.from(C.itemMap.values()).sort((M,A)=>T.indexOf(M.ref.current)-T.indexOf(A.ref.current))},[C.collectionRef,C.itemMap])}return[{Provider:l,Slot:f,ItemSlot:x},b,r]}var Gz=y.createContext(void 0);function Bh(e){const t=y.useContext(Gz);return e||t||"ltr"}const Jz=["top","right","bottom","left"],ma=Math.min,us=Math.max,Wp=Math.round,Kf=Math.floor,Do=e=>({x:e,y:e}),Qz={left:"right",right:"left",bottom:"top",top:"bottom"},Yz={start:"end",end:"start"};function tb(e,t,n){return us(e,ma(t,n))}function za(e,t){return typeof e=="function"?e(t):e}function Ua(e){return e.split("-")[0]}function wc(e){return e.split("-")[1]}function gx(e){return e==="x"?"y":"x"}function vx(e){return e==="y"?"height":"width"}function Fo(e){return["top","bottom"].includes(Ua(e))?"y":"x"}function yx(e){return gx(Fo(e))}function Zz(e,t,n){n===void 0&&(n=!1);const r=wc(e),s=yx(e),o=vx(s);let l=s==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[o]>t.floating[o]&&(l=Gp(l)),[l,Gp(l)]}function Xz(e){const t=Gp(e);return[nb(e),t,nb(t)]}function nb(e){return e.replace(/start|end/g,t=>Yz[t])}function e5(e,t,n){const r=["left","right"],s=["right","left"],o=["top","bottom"],l=["bottom","top"];switch(e){case"top":case"bottom":return n?t?s:r:t?r:s;case"left":case"right":return t?o:l;default:return[]}}function t5(e,t,n,r){const s=wc(e);let o=e5(Ua(e),n==="start",r);return s&&(o=o.map(l=>l+"-"+s),t&&(o=o.concat(o.map(nb)))),o}function Gp(e){return e.replace(/left|right|bottom|top/g,t=>Qz[t])}function n5(e){return{top:0,right:0,bottom:0,left:0,...e}}function eM(e){return typeof e!="number"?n5(e):{top:e,right:e,bottom:e,left:e}}function Jp(e){const{x:t,y:n,width:r,height:s}=e;return{width:r,height:s,top:n,left:t,right:t+r,bottom:n+s,x:t,y:n}}function j1(e,t,n){let{reference:r,floating:s}=e;const o=Fo(t),l=yx(t),u=vx(l),d=Ua(t),f=o==="y",h=r.x+r.width/2-s.width/2,m=r.y+r.height/2-s.height/2,g=r[u]/2-s[u]/2;let x;switch(d){case"top":x={x:h,y:r.y-s.height};break;case"bottom":x={x:h,y:r.y+r.height};break;case"right":x={x:r.x+r.width,y:m};break;case"left":x={x:r.x-s.width,y:m};break;default:x={x:r.x,y:r.y}}switch(wc(t)){case"start":x[l]-=g*(n&&f?-1:1);break;case"end":x[l]+=g*(n&&f?-1:1);break}return x}const r5=async(e,t,n)=>{const{placement:r="bottom",strategy:s="absolute",middleware:o=[],platform:l}=n,u=o.filter(Boolean),d=await(l.isRTL==null?void 0:l.isRTL(t));let f=await l.getElementRects({reference:e,floating:t,strategy:s}),{x:h,y:m}=j1(f,r,d),g=r,x={},b=0;for(let w=0;w({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:s,rects:o,platform:l,elements:u,middlewareData:d}=t,{element:f,padding:h=0}=za(e,t)||{};if(f==null)return{};const m=eM(h),g={x:n,y:r},x=yx(s),b=vx(x),w=await l.getDimensions(f),C=x==="y",k=C?"top":"left",N=C?"bottom":"right",T=C?"clientHeight":"clientWidth",_=o.reference[b]+o.reference[x]-g[x]-o.floating[b],I=g[x]-o.reference[x],M=await(l.getOffsetParent==null?void 0:l.getOffsetParent(f));let A=M?M[T]:0;(!A||!await(l.isElement==null?void 0:l.isElement(M)))&&(A=u.floating[T]||o.floating[b]);const O=_/2-I/2,F=A/2-w[b]/2-1,z=ma(m[k],F),Z=ma(m[N],F),B=z,ce=A-w[b]-Z,H=A/2-w[b]/2+O,oe=tb(B,H,ce),Q=!d.arrow&&wc(s)!=null&&H!==oe&&o.reference[b]/2-(HH<=0)){var Z,B;const H=(((Z=o.flip)==null?void 0:Z.index)||0)+1,oe=A[H];if(oe)return{data:{index:H,overflows:z},reset:{placement:oe}};let Q=(B=z.filter(ne=>ne.overflows[0]<=0).sort((ne,V)=>ne.overflows[1]-V.overflows[1])[0])==null?void 0:B.placement;if(!Q)switch(x){case"bestFit":{var ce;const ne=(ce=z.filter(V=>{if(M){const K=Fo(V.placement);return K===N||K==="y"}return!0}).map(V=>[V.placement,V.overflows.filter(K=>K>0).reduce((K,U)=>K+U,0)]).sort((V,K)=>V[1]-K[1])[0])==null?void 0:ce[0];ne&&(Q=ne);break}case"initialPlacement":Q=u;break}if(s!==Q)return{reset:{placement:Q}}}return{}}}};function k1(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function E1(e){return Jz.some(t=>e[t]>=0)}const o5=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n}=t,{strategy:r="referenceHidden",...s}=za(e,t);switch(r){case"referenceHidden":{const o=await nd(t,{...s,elementContext:"reference"}),l=k1(o,n.reference);return{data:{referenceHiddenOffsets:l,referenceHidden:E1(l)}}}case"escaped":{const o=await nd(t,{...s,altBoundary:!0}),l=k1(o,n.floating);return{data:{escapedOffsets:l,escaped:E1(l)}}}default:return{}}}}};async function i5(e,t){const{placement:n,platform:r,elements:s}=e,o=await(r.isRTL==null?void 0:r.isRTL(s.floating)),l=Ua(n),u=wc(n),d=Fo(n)==="y",f=["left","top"].includes(l)?-1:1,h=o&&d?-1:1,m=za(t,e);let{mainAxis:g,crossAxis:x,alignmentAxis:b}=typeof m=="number"?{mainAxis:m,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...m};return u&&typeof b=="number"&&(x=u==="end"?b*-1:b),d?{x:x*h,y:g*f}:{x:g*f,y:x*h}}const l5=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,r;const{x:s,y:o,placement:l,middlewareData:u}=t,d=await i5(t,e);return l===((n=u.offset)==null?void 0:n.placement)&&(r=u.arrow)!=null&&r.alignmentOffset?{}:{x:s+d.x,y:o+d.y,data:{...d,placement:l}}}}},c5=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:s}=t,{mainAxis:o=!0,crossAxis:l=!1,limiter:u={fn:C=>{let{x:k,y:N}=C;return{x:k,y:N}}},...d}=za(e,t),f={x:n,y:r},h=await nd(t,d),m=Fo(Ua(s)),g=gx(m);let x=f[g],b=f[m];if(o){const C=g==="y"?"top":"left",k=g==="y"?"bottom":"right",N=x+h[C],T=x-h[k];x=tb(N,x,T)}if(l){const C=m==="y"?"top":"left",k=m==="y"?"bottom":"right",N=b+h[C],T=b-h[k];b=tb(N,b,T)}const w=u.fn({...t,[g]:x,[m]:b});return{...w,data:{x:w.x-n,y:w.y-r}}}}},u5=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:n,y:r,placement:s,rects:o,middlewareData:l}=t,{offset:u=0,mainAxis:d=!0,crossAxis:f=!0}=za(e,t),h={x:n,y:r},m=Fo(s),g=gx(m);let x=h[g],b=h[m];const w=za(u,t),C=typeof w=="number"?{mainAxis:w,crossAxis:0}:{mainAxis:0,crossAxis:0,...w};if(d){const T=g==="y"?"height":"width",_=o.reference[g]-o.floating[T]+C.mainAxis,I=o.reference[g]+o.reference[T]-C.mainAxis;x<_?x=_:x>I&&(x=I)}if(f){var k,N;const T=g==="y"?"width":"height",_=["top","left"].includes(Ua(s)),I=o.reference[m]-o.floating[T]+(_&&((k=l.offset)==null?void 0:k[m])||0)+(_?0:C.crossAxis),M=o.reference[m]+o.reference[T]+(_?0:((N=l.offset)==null?void 0:N[m])||0)-(_?C.crossAxis:0);bM&&(b=M)}return{[g]:x,[m]:b}}}},d5=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){const{placement:n,rects:r,platform:s,elements:o}=t,{apply:l=()=>{},...u}=za(e,t),d=await nd(t,u),f=Ua(n),h=wc(n),m=Fo(n)==="y",{width:g,height:x}=r.floating;let b,w;f==="top"||f==="bottom"?(b=f,w=h===(await(s.isRTL==null?void 0:s.isRTL(o.floating))?"start":"end")?"left":"right"):(w=f,b=h==="end"?"top":"bottom");const C=x-d.top-d.bottom,k=g-d.left-d.right,N=ma(x-d[b],C),T=ma(g-d[w],k),_=!t.middlewareData.shift;let I=N,M=T;if(m?M=h||_?ma(T,k):k:I=h||_?ma(N,C):C,_&&!h){const O=us(d.left,0),F=us(d.right,0),z=us(d.top,0),Z=us(d.bottom,0);m?M=g-2*(O!==0||F!==0?O+F:us(d.left,d.right)):I=x-2*(z!==0||Z!==0?z+Z:us(d.top,d.bottom))}await l({...t,availableWidth:M,availableHeight:I});const A=await s.getDimensions(o.floating);return g!==A.width||x!==A.height?{reset:{rects:!0}}:{}}}};function Sc(e){return tM(e)?(e.nodeName||"").toLowerCase():"#document"}function fs(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Wa(e){var t;return(t=(tM(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function tM(e){return e instanceof Node||e instanceof fs(e).Node}function ya(e){return e instanceof Element||e instanceof fs(e).Element}function ba(e){return e instanceof HTMLElement||e instanceof fs(e).HTMLElement}function N1(e){return typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof fs(e).ShadowRoot}function bd(e){const{overflow:t,overflowX:n,overflowY:r,display:s}=Ys(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(s)}function f5(e){return["table","td","th"].includes(Sc(e))}function zh(e){return[":popover-open",":modal"].some(t=>{try{return e.matches(t)}catch{return!1}})}function bx(e){const t=xx(),n=Ys(e);return n.transform!=="none"||n.perspective!=="none"||(n.containerType?n.containerType!=="normal":!1)||!t&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!t&&(n.filter?n.filter!=="none":!1)||["transform","perspective","filter"].some(r=>(n.willChange||"").includes(r))||["paint","layout","strict","content"].some(r=>(n.contain||"").includes(r))}function p5(e){let t=Lo(e);for(;ba(t)&&!oc(t);){if(zh(t))return null;if(bx(t))return t;t=Lo(t)}return null}function xx(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function oc(e){return["html","body","#document"].includes(Sc(e))}function Ys(e){return fs(e).getComputedStyle(e)}function Uh(e){return ya(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Lo(e){if(Sc(e)==="html")return e;const t=e.assignedSlot||e.parentNode||N1(e)&&e.host||Wa(e);return N1(t)?t.host:t}function nM(e){const t=Lo(e);return oc(t)?e.ownerDocument?e.ownerDocument.body:e.body:ba(t)&&bd(t)?t:nM(t)}function rd(e,t,n){var r;t===void 0&&(t=[]),n===void 0&&(n=!0);const s=nM(e),o=s===((r=e.ownerDocument)==null?void 0:r.body),l=fs(s);return o?t.concat(l,l.visualViewport||[],bd(s)?s:[],l.frameElement&&n?rd(l.frameElement):[]):t.concat(s,rd(s,[],n))}function rM(e){const t=Ys(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const s=ba(e),o=s?e.offsetWidth:n,l=s?e.offsetHeight:r,u=Wp(n)!==o||Wp(r)!==l;return u&&(n=o,r=l),{width:n,height:r,$:u}}function wx(e){return ya(e)?e:e.contextElement}function Wl(e){const t=wx(e);if(!ba(t))return Do(1);const n=t.getBoundingClientRect(),{width:r,height:s,$:o}=rM(t);let l=(o?Wp(n.width):n.width)/r,u=(o?Wp(n.height):n.height)/s;return(!l||!Number.isFinite(l))&&(l=1),(!u||!Number.isFinite(u))&&(u=1),{x:l,y:u}}const h5=Do(0);function sM(e){const t=fs(e);return!xx()||!t.visualViewport?h5:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function m5(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==fs(e)?!1:t}function Bi(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);const s=e.getBoundingClientRect(),o=wx(e);let l=Do(1);t&&(r?ya(r)&&(l=Wl(r)):l=Wl(e));const u=m5(o,n,r)?sM(o):Do(0);let d=(s.left+u.x)/l.x,f=(s.top+u.y)/l.y,h=s.width/l.x,m=s.height/l.y;if(o){const g=fs(o),x=r&&ya(r)?fs(r):r;let b=g,w=b.frameElement;for(;w&&r&&x!==b;){const C=Wl(w),k=w.getBoundingClientRect(),N=Ys(w),T=k.left+(w.clientLeft+parseFloat(N.paddingLeft))*C.x,_=k.top+(w.clientTop+parseFloat(N.paddingTop))*C.y;d*=C.x,f*=C.y,h*=C.x,m*=C.y,d+=T,f+=_,b=fs(w),w=b.frameElement}}return Jp({width:h,height:m,x:d,y:f})}function g5(e){let{elements:t,rect:n,offsetParent:r,strategy:s}=e;const o=s==="fixed",l=Wa(r),u=t?zh(t.floating):!1;if(r===l||u&&o)return n;let d={scrollLeft:0,scrollTop:0},f=Do(1);const h=Do(0),m=ba(r);if((m||!m&&!o)&&((Sc(r)!=="body"||bd(l))&&(d=Uh(r)),ba(r))){const g=Bi(r);f=Wl(r),h.x=g.x+r.clientLeft,h.y=g.y+r.clientTop}return{width:n.width*f.x,height:n.height*f.y,x:n.x*f.x-d.scrollLeft*f.x+h.x,y:n.y*f.y-d.scrollTop*f.y+h.y}}function v5(e){return Array.from(e.getClientRects())}function aM(e){return Bi(Wa(e)).left+Uh(e).scrollLeft}function y5(e){const t=Wa(e),n=Uh(e),r=e.ownerDocument.body,s=us(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),o=us(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let l=-n.scrollLeft+aM(e);const u=-n.scrollTop;return Ys(r).direction==="rtl"&&(l+=us(t.clientWidth,r.clientWidth)-s),{width:s,height:o,x:l,y:u}}function b5(e,t){const n=fs(e),r=Wa(e),s=n.visualViewport;let o=r.clientWidth,l=r.clientHeight,u=0,d=0;if(s){o=s.width,l=s.height;const f=xx();(!f||f&&t==="fixed")&&(u=s.offsetLeft,d=s.offsetTop)}return{width:o,height:l,x:u,y:d}}function x5(e,t){const n=Bi(e,!0,t==="fixed"),r=n.top+e.clientTop,s=n.left+e.clientLeft,o=ba(e)?Wl(e):Do(1),l=e.clientWidth*o.x,u=e.clientHeight*o.y,d=s*o.x,f=r*o.y;return{width:l,height:u,x:d,y:f}}function T1(e,t,n){let r;if(t==="viewport")r=b5(e,n);else if(t==="document")r=y5(Wa(e));else if(ya(t))r=x5(t,n);else{const s=sM(e);r={...t,x:t.x-s.x,y:t.y-s.y}}return Jp(r)}function oM(e,t){const n=Lo(e);return n===t||!ya(n)||oc(n)?!1:Ys(n).position==="fixed"||oM(n,t)}function w5(e,t){const n=t.get(e);if(n)return n;let r=rd(e,[],!1).filter(u=>ya(u)&&Sc(u)!=="body"),s=null;const o=Ys(e).position==="fixed";let l=o?Lo(e):e;for(;ya(l)&&!oc(l);){const u=Ys(l),d=bx(l);!d&&u.position==="fixed"&&(s=null),(o?!d&&!s:!d&&u.position==="static"&&!!s&&["absolute","fixed"].includes(s.position)||bd(l)&&!d&&oM(e,l))?r=r.filter(h=>h!==l):s=u,l=Lo(l)}return t.set(e,r),r}function S5(e){let{element:t,boundary:n,rootBoundary:r,strategy:s}=e;const l=[...n==="clippingAncestors"?zh(t)?[]:w5(t,this._c):[].concat(n),r],u=l[0],d=l.reduce((f,h)=>{const m=T1(t,h,s);return f.top=us(m.top,f.top),f.right=ma(m.right,f.right),f.bottom=ma(m.bottom,f.bottom),f.left=us(m.left,f.left),f},T1(t,u,s));return{width:d.right-d.left,height:d.bottom-d.top,x:d.left,y:d.top}}function C5(e){const{width:t,height:n}=rM(e);return{width:t,height:n}}function j5(e,t,n){const r=ba(t),s=Wa(t),o=n==="fixed",l=Bi(e,!0,o,t);let u={scrollLeft:0,scrollTop:0};const d=Do(0);if(r||!r&&!o)if((Sc(t)!=="body"||bd(s))&&(u=Uh(t)),r){const m=Bi(t,!0,o,t);d.x=m.x+t.clientLeft,d.y=m.y+t.clientTop}else s&&(d.x=aM(s));const f=l.left+u.scrollLeft-d.x,h=l.top+u.scrollTop-d.y;return{x:f,y:h,width:l.width,height:l.height}}function Iv(e){return Ys(e).position==="static"}function M1(e,t){return!ba(e)||Ys(e).position==="fixed"?null:t?t(e):e.offsetParent}function iM(e,t){const n=fs(e);if(zh(e))return n;if(!ba(e)){let s=Lo(e);for(;s&&!oc(s);){if(ya(s)&&!Iv(s))return s;s=Lo(s)}return n}let r=M1(e,t);for(;r&&f5(r)&&Iv(r);)r=M1(r,t);return r&&oc(r)&&Iv(r)&&!bx(r)?n:r||p5(e)||n}const k5=async function(e){const t=this.getOffsetParent||iM,n=this.getDimensions,r=await n(e.floating);return{reference:j5(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function E5(e){return Ys(e).direction==="rtl"}const N5={convertOffsetParentRelativeRectToViewportRelativeRect:g5,getDocumentElement:Wa,getClippingRect:S5,getOffsetParent:iM,getElementRects:k5,getClientRects:v5,getDimensions:C5,getScale:Wl,isElement:ya,isRTL:E5};function T5(e,t){let n=null,r;const s=Wa(e);function o(){var u;clearTimeout(r),(u=n)==null||u.disconnect(),n=null}function l(u,d){u===void 0&&(u=!1),d===void 0&&(d=1),o();const{left:f,top:h,width:m,height:g}=e.getBoundingClientRect();if(u||t(),!m||!g)return;const x=Kf(h),b=Kf(s.clientWidth-(f+m)),w=Kf(s.clientHeight-(h+g)),C=Kf(f),N={rootMargin:-x+"px "+-b+"px "+-w+"px "+-C+"px",threshold:us(0,ma(1,d))||1};let T=!0;function _(I){const M=I[0].intersectionRatio;if(M!==d){if(!T)return l();M?l(!1,M):r=setTimeout(()=>{l(!1,1e-7)},1e3)}T=!1}try{n=new IntersectionObserver(_,{...N,root:s.ownerDocument})}catch{n=new IntersectionObserver(_,N)}n.observe(e)}return l(!0),o}function M5(e,t,n,r){r===void 0&&(r={});const{ancestorScroll:s=!0,ancestorResize:o=!0,elementResize:l=typeof ResizeObserver=="function",layoutShift:u=typeof IntersectionObserver=="function",animationFrame:d=!1}=r,f=wx(e),h=s||o?[...f?rd(f):[],...rd(t)]:[];h.forEach(k=>{s&&k.addEventListener("scroll",n,{passive:!0}),o&&k.addEventListener("resize",n)});const m=f&&u?T5(f,n):null;let g=-1,x=null;l&&(x=new ResizeObserver(k=>{let[N]=k;N&&N.target===f&&x&&(x.unobserve(t),cancelAnimationFrame(g),g=requestAnimationFrame(()=>{var T;(T=x)==null||T.observe(t)})),n()}),f&&!d&&x.observe(f),x.observe(t));let b,w=d?Bi(e):null;d&&C();function C(){const k=Bi(e);w&&(k.x!==w.x||k.y!==w.y||k.width!==w.width||k.height!==w.height)&&n(),w=k,b=requestAnimationFrame(C)}return n(),()=>{var k;h.forEach(N=>{s&&N.removeEventListener("scroll",n),o&&N.removeEventListener("resize",n)}),m?.(),(k=x)==null||k.disconnect(),x=null,d&&cancelAnimationFrame(b)}}const _5=l5,R5=c5,P5=a5,I5=d5,O5=o5,_1=s5,A5=u5,D5=(e,t,n)=>{const r=new Map,s={platform:N5,...n},o={...s.platform,_c:r};return r5(e,t,{...s,platform:o})};var Sp=typeof document<"u"?y.useLayoutEffect:y.useEffect;function Qp(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let n,r,s;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(!Qp(e[r],t[r]))return!1;return!0}if(s=Object.keys(e),n=s.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(t,s[r]))return!1;for(r=n;r--!==0;){const o=s[r];if(!(o==="_owner"&&e.$$typeof)&&!Qp(e[o],t[o]))return!1}return!0}return e!==e&&t!==t}function lM(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function R1(e,t){const n=lM(e);return Math.round(t*n)/n}function P1(e){const t=y.useRef(e);return Sp(()=>{t.current=e}),t}function F5(e){e===void 0&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:r=[],platform:s,elements:{reference:o,floating:l}={},transform:u=!0,whileElementsMounted:d,open:f}=e,[h,m]=y.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[g,x]=y.useState(r);Qp(g,r)||x(r);const[b,w]=y.useState(null),[C,k]=y.useState(null),N=y.useCallback(ne=>{ne!==M.current&&(M.current=ne,w(ne))},[]),T=y.useCallback(ne=>{ne!==A.current&&(A.current=ne,k(ne))},[]),_=o||b,I=l||C,M=y.useRef(null),A=y.useRef(null),O=y.useRef(h),F=d!=null,z=P1(d),Z=P1(s),B=y.useCallback(()=>{if(!M.current||!A.current)return;const ne={placement:t,strategy:n,middleware:g};Z.current&&(ne.platform=Z.current),D5(M.current,A.current,ne).then(V=>{const K={...V,isPositioned:!0};ce.current&&!Qp(O.current,K)&&(O.current=K,mc.flushSync(()=>{m(K)}))})},[g,t,n,Z]);Sp(()=>{f===!1&&O.current.isPositioned&&(O.current.isPositioned=!1,m(ne=>({...ne,isPositioned:!1})))},[f]);const ce=y.useRef(!1);Sp(()=>(ce.current=!0,()=>{ce.current=!1}),[]),Sp(()=>{if(_&&(M.current=_),I&&(A.current=I),_&&I){if(z.current)return z.current(_,I,B);B()}},[_,I,B,z,F]);const H=y.useMemo(()=>({reference:M,floating:A,setReference:N,setFloating:T}),[N,T]),oe=y.useMemo(()=>({reference:_,floating:I}),[_,I]),Q=y.useMemo(()=>{const ne={position:n,left:0,top:0};if(!oe.floating)return ne;const V=R1(oe.floating,h.x),K=R1(oe.floating,h.y);return u?{...ne,transform:"translate("+V+"px, "+K+"px)",...lM(oe.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:V,top:K}},[n,u,oe.floating,h.x,h.y]);return y.useMemo(()=>({...h,update:B,refs:H,elements:oe,floatingStyles:Q}),[h,B,H,oe,Q])}const L5=e=>{function t(n){return{}.hasOwnProperty.call(n,"current")}return{name:"arrow",options:e,fn(n){const{element:r,padding:s}=typeof e=="function"?e(n):e;return r&&t(r)?r.current!=null?_1({element:r.current,padding:s}).fn(n):{}:r?_1({element:r,padding:s}).fn(n):{}}}},$5=(e,t)=>({..._5(e),options:[e,t]}),B5=(e,t)=>({...R5(e),options:[e,t]}),z5=(e,t)=>({...A5(e),options:[e,t]}),U5=(e,t)=>({...P5(e),options:[e,t]}),V5=(e,t)=>({...I5(e),options:[e,t]}),q5=(e,t)=>({...O5(e),options:[e,t]}),H5=(e,t)=>({...L5(e),options:[e,t]});var K5="Arrow",cM=y.forwardRef((e,t)=>{const{children:n,width:r=10,height:s=5,...o}=e;return a.jsx(xt.svg,{...o,ref:t,width:r,height:s,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?n:a.jsx("polygon",{points:"0,0 30,0 15,10"})})});cM.displayName=K5;var W5=cM;function Sx(e){const[t,n]=y.useState(void 0);return er(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const r=new ResizeObserver(s=>{if(!Array.isArray(s)||!s.length)return;const o=s[0];let l,u;if("borderBoxSize"in o){const d=o.borderBoxSize,f=Array.isArray(d)?d[0]:d;l=f.inlineSize,u=f.blockSize}else l=e.offsetWidth,u=e.offsetHeight;n({width:l,height:u})});return r.observe(e,{box:"border-box"}),()=>r.unobserve(e)}else n(void 0)},[e]),t}var Cx="Popper",[uM,Vh]=ea(Cx),[G5,dM]=uM(Cx),fM=e=>{const{__scopePopper:t,children:n}=e,[r,s]=y.useState(null);return a.jsx(G5,{scope:t,anchor:r,onAnchorChange:s,children:n})};fM.displayName=Cx;var pM="PopperAnchor",hM=y.forwardRef((e,t)=>{const{__scopePopper:n,virtualRef:r,...s}=e,o=dM(pM,n),l=y.useRef(null),u=Xt(t,l),d=y.useRef(null);return y.useEffect(()=>{const f=d.current;d.current=r?.current||l.current,f!==d.current&&o.onAnchorChange(d.current)}),r?null:a.jsx(xt.div,{...s,ref:u})});hM.displayName=pM;var jx="PopperContent",[J5,Q5]=uM(jx),mM=y.forwardRef((e,t)=>{const{__scopePopper:n,side:r="bottom",sideOffset:s=0,align:o="center",alignOffset:l=0,arrowPadding:u=0,avoidCollisions:d=!0,collisionBoundary:f=[],collisionPadding:h=0,sticky:m="partial",hideWhenDetached:g=!1,updatePositionStrategy:x="optimized",onPlaced:b,...w}=e,C=dM(jx,n),[k,N]=y.useState(null),T=Xt(t,j=>N(j)),[_,I]=y.useState(null),M=Sx(_),A=M?.width??0,O=M?.height??0,F=r+(o!=="center"?"-"+o:""),z=typeof h=="number"?h:{top:0,right:0,bottom:0,left:0,...h},Z=Array.isArray(f)?f:[f],B=Z.length>0,ce={padding:z,boundary:Z.filter(Z5),altBoundary:B},{refs:H,floatingStyles:oe,placement:Q,isPositioned:ne,middlewareData:V}=F5({strategy:"fixed",placement:F,whileElementsMounted:(...j)=>M5(...j,{animationFrame:x==="always"}),elements:{reference:C.anchor},middleware:[$5({mainAxis:s+O,alignmentAxis:l}),d&&B5({mainAxis:!0,crossAxis:!1,limiter:m==="partial"?z5():void 0,...ce}),d&&U5({...ce}),V5({...ce,apply:({elements:j,rects:P,availableWidth:pe,availableHeight:xe})=>{const{width:rt,height:Je}=P.reference,nt=j.floating.style;nt.setProperty("--radix-popper-available-width",`${pe}px`),nt.setProperty("--radix-popper-available-height",`${xe}px`),nt.setProperty("--radix-popper-anchor-width",`${rt}px`),nt.setProperty("--radix-popper-anchor-height",`${Je}px`)}}),_&&H5({element:_,padding:u}),X5({arrowWidth:A,arrowHeight:O}),g&&q5({strategy:"referenceHidden",...ce})]}),[K,U]=yM(Q),D=Qs(b);er(()=>{ne&&D?.()},[ne,D]);const J=V.arrow?.x,ae=V.arrow?.y,ee=V.arrow?.centerOffset!==0,[ie,ue]=y.useState();return er(()=>{k&&ue(window.getComputedStyle(k).zIndex)},[k]),a.jsx("div",{ref:H.setFloating,"data-radix-popper-content-wrapper":"",style:{...oe,transform:ne?oe.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:ie,"--radix-popper-transform-origin":[V.transformOrigin?.x,V.transformOrigin?.y].join(" "),...V.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:a.jsx(J5,{scope:n,placedSide:K,onArrowChange:I,arrowX:J,arrowY:ae,shouldHideArrow:ee,children:a.jsx(xt.div,{"data-side":K,"data-align":U,...w,ref:T,style:{...w.style,animation:ne?void 0:"none"}})})})});mM.displayName=jx;var gM="PopperArrow",Y5={top:"bottom",right:"left",bottom:"top",left:"right"},vM=y.forwardRef(function(t,n){const{__scopePopper:r,...s}=t,o=Q5(gM,r),l=Y5[o.placedSide];return a.jsx("span",{ref:o.onArrowChange,style:{position:"absolute",left:o.arrowX,top:o.arrowY,[l]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[o.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[o.placedSide],visibility:o.shouldHideArrow?"hidden":void 0},children:a.jsx(W5,{...s,ref:n,style:{...s.style,display:"block"}})})});vM.displayName=gM;function Z5(e){return e!==null}var X5=e=>({name:"transformOrigin",options:e,fn(t){const{placement:n,rects:r,middlewareData:s}=t,l=s.arrow?.centerOffset!==0,u=l?0:e.arrowWidth,d=l?0:e.arrowHeight,[f,h]=yM(n),m={start:"0%",center:"50%",end:"100%"}[h],g=(s.arrow?.x??0)+u/2,x=(s.arrow?.y??0)+d/2;let b="",w="";return f==="bottom"?(b=l?m:`${g}px`,w=`${-d}px`):f==="top"?(b=l?m:`${g}px`,w=`${r.floating.height+d}px`):f==="right"?(b=`${-d}px`,w=l?m:`${x}px`):f==="left"&&(b=`${r.floating.width+d}px`,w=l?m:`${x}px`),{data:{x:b,y:w}}}});function yM(e){const[t,n="center"]=e.split("-");return[t,n]}var bM=fM,xM=hM,wM=mM,SM=vM,Ov="rovingFocusGroup.onEntryFocus",eU={bubbles:!1,cancelable:!0},xd="RovingFocusGroup",[rb,CM,tU]=mx(xd),[nU,qh]=ea(xd,[tU]),[rU,sU]=nU(xd),jM=y.forwardRef((e,t)=>a.jsx(rb.Provider,{scope:e.__scopeRovingFocusGroup,children:a.jsx(rb.Slot,{scope:e.__scopeRovingFocusGroup,children:a.jsx(aU,{...e,ref:t})})}));jM.displayName=xd;var aU=y.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,orientation:r,loop:s=!1,dir:o,currentTabStopId:l,defaultCurrentTabStopId:u,onCurrentTabStopIdChange:d,onEntryFocus:f,preventScrollOnEntryFocus:h=!1,...m}=e,g=y.useRef(null),x=Xt(t,g),b=Bh(o),[w,C]=Ba({prop:l,defaultProp:u??null,onChange:d,caller:xd}),[k,N]=y.useState(!1),T=Qs(f),_=CM(n),I=y.useRef(!1),[M,A]=y.useState(0);return y.useEffect(()=>{const O=g.current;if(O)return O.addEventListener(Ov,T),()=>O.removeEventListener(Ov,T)},[T]),a.jsx(rU,{scope:n,orientation:r,dir:b,loop:s,currentTabStopId:w,onItemFocus:y.useCallback(O=>C(O),[C]),onItemShiftTab:y.useCallback(()=>N(!0),[]),onFocusableItemAdd:y.useCallback(()=>A(O=>O+1),[]),onFocusableItemRemove:y.useCallback(()=>A(O=>O-1),[]),children:a.jsx(xt.div,{tabIndex:k||M===0?-1:0,"data-orientation":r,...m,ref:x,style:{outline:"none",...e.style},onMouseDown:Ge(e.onMouseDown,()=>{I.current=!0}),onFocus:Ge(e.onFocus,O=>{const F=!I.current;if(O.target===O.currentTarget&&F&&!k){const z=new CustomEvent(Ov,eU);if(O.currentTarget.dispatchEvent(z),!z.defaultPrevented){const Z=_().filter(Q=>Q.focusable),B=Z.find(Q=>Q.active),ce=Z.find(Q=>Q.id===w),oe=[B,ce,...Z].filter(Boolean).map(Q=>Q.ref.current);NM(oe,h)}}I.current=!1}),onBlur:Ge(e.onBlur,()=>N(!1))})})}),kM="RovingFocusGroupItem",EM=y.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,focusable:r=!0,active:s=!1,tabStopId:o,children:l,...u}=e,d=Ws(),f=o||d,h=sU(kM,n),m=h.currentTabStopId===f,g=CM(n),{onFocusableItemAdd:x,onFocusableItemRemove:b,currentTabStopId:w}=h;return y.useEffect(()=>{if(r)return x(),()=>b()},[r,x,b]),a.jsx(rb.ItemSlot,{scope:n,id:f,focusable:r,active:s,children:a.jsx(xt.span,{tabIndex:m?0:-1,"data-orientation":h.orientation,...u,ref:t,onMouseDown:Ge(e.onMouseDown,C=>{r?h.onItemFocus(f):C.preventDefault()}),onFocus:Ge(e.onFocus,()=>h.onItemFocus(f)),onKeyDown:Ge(e.onKeyDown,C=>{if(C.key==="Tab"&&C.shiftKey){h.onItemShiftTab();return}if(C.target!==C.currentTarget)return;const k=lU(C,h.orientation,h.dir);if(k!==void 0){if(C.metaKey||C.ctrlKey||C.altKey||C.shiftKey)return;C.preventDefault();let T=g().filter(_=>_.focusable).map(_=>_.ref.current);if(k==="last")T.reverse();else if(k==="prev"||k==="next"){k==="prev"&&T.reverse();const _=T.indexOf(C.currentTarget);T=h.loop?cU(T,_+1):T.slice(_+1)}setTimeout(()=>NM(T))}}),children:typeof l=="function"?l({isCurrentTabStop:m,hasTabStop:w!=null}):l})})});EM.displayName=kM;var oU={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function iU(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function lU(e,t,n){const r=iU(e.key,n);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return oU[r]}function NM(e,t=!1){const n=document.activeElement;for(const r of e)if(r===n||(r.focus({preventScroll:t}),document.activeElement!==n))return}function cU(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var TM=jM,MM=EM,sb=["Enter"," "],uU=["ArrowDown","PageUp","Home"],_M=["ArrowUp","PageDown","End"],dU=[...uU,..._M],fU={ltr:[...sb,"ArrowRight"],rtl:[...sb,"ArrowLeft"]},pU={ltr:["ArrowLeft"],rtl:["ArrowRight"]},wd="Menu",[sd,hU,mU]=mx(wd),[rl,RM]=ea(wd,[mU,Vh,qh]),Hh=Vh(),PM=qh(),[gU,sl]=rl(wd),[vU,Sd]=rl(wd),IM=e=>{const{__scopeMenu:t,open:n=!1,children:r,dir:s,onOpenChange:o,modal:l=!0}=e,u=Hh(t),[d,f]=y.useState(null),h=y.useRef(!1),m=Qs(o),g=Bh(s);return y.useEffect(()=>{const x=()=>{h.current=!0,document.addEventListener("pointerdown",b,{capture:!0,once:!0}),document.addEventListener("pointermove",b,{capture:!0,once:!0})},b=()=>h.current=!1;return document.addEventListener("keydown",x,{capture:!0}),()=>{document.removeEventListener("keydown",x,{capture:!0}),document.removeEventListener("pointerdown",b,{capture:!0}),document.removeEventListener("pointermove",b,{capture:!0})}},[]),a.jsx(bM,{...u,children:a.jsx(gU,{scope:t,open:n,onOpenChange:m,content:d,onContentChange:f,children:a.jsx(vU,{scope:t,onClose:y.useCallback(()=>m(!1),[m]),isUsingKeyboardRef:h,dir:g,modal:l,children:r})})})};IM.displayName=wd;var yU="MenuAnchor",kx=y.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e,s=Hh(n);return a.jsx(xM,{...s,...r,ref:t})});kx.displayName=yU;var Ex="MenuPortal",[bU,OM]=rl(Ex,{forceMount:void 0}),AM=e=>{const{__scopeMenu:t,forceMount:n,children:r,container:s}=e,o=sl(Ex,t);return a.jsx(bU,{scope:t,forceMount:n,children:a.jsx(ta,{present:n||o.open,children:a.jsx(Oh,{asChild:!0,container:s,children:r})})})};AM.displayName=Ex;var Ms="MenuContent",[xU,Nx]=rl(Ms),DM=y.forwardRef((e,t)=>{const n=OM(Ms,e.__scopeMenu),{forceMount:r=n.forceMount,...s}=e,o=sl(Ms,e.__scopeMenu),l=Sd(Ms,e.__scopeMenu);return a.jsx(sd.Provider,{scope:e.__scopeMenu,children:a.jsx(ta,{present:r||o.open,children:a.jsx(sd.Slot,{scope:e.__scopeMenu,children:l.modal?a.jsx(wU,{...s,ref:t}):a.jsx(SU,{...s,ref:t})})})})}),wU=y.forwardRef((e,t)=>{const n=sl(Ms,e.__scopeMenu),r=y.useRef(null),s=Xt(t,r);return y.useEffect(()=>{const o=r.current;if(o)return lx(o)},[]),a.jsx(Tx,{...e,ref:s,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:Ge(e.onFocusOutside,o=>o.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),SU=y.forwardRef((e,t)=>{const n=sl(Ms,e.__scopeMenu);return a.jsx(Tx,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),CU=rc("MenuContent.ScrollLock"),Tx=y.forwardRef((e,t)=>{const{__scopeMenu:n,loop:r=!1,trapFocus:s,onOpenAutoFocus:o,onCloseAutoFocus:l,disableOutsidePointerEvents:u,onEntryFocus:d,onEscapeKeyDown:f,onPointerDownOutside:h,onFocusOutside:m,onInteractOutside:g,onDismiss:x,disableOutsideScroll:b,...w}=e,C=sl(Ms,n),k=Sd(Ms,n),N=Hh(n),T=PM(n),_=hU(n),[I,M]=y.useState(null),A=y.useRef(null),O=Xt(t,A,C.onContentChange),F=y.useRef(0),z=y.useRef(""),Z=y.useRef(0),B=y.useRef(null),ce=y.useRef("right"),H=y.useRef(0),oe=b?Dh:y.Fragment,Q=b?{as:CU,allowPinchZoom:!0}:void 0,ne=K=>{const U=z.current+K,D=_().filter(j=>!j.disabled),J=document.activeElement,ae=D.find(j=>j.ref.current===J)?.textValue,ee=D.map(j=>j.textValue),ie=AU(ee,U,ae),ue=D.find(j=>j.textValue===ie)?.ref.current;(function j(P){z.current=P,window.clearTimeout(F.current),P!==""&&(F.current=window.setTimeout(()=>j(""),1e3))})(U),ue&&setTimeout(()=>ue.focus())};y.useEffect(()=>()=>window.clearTimeout(F.current),[]),ix();const V=y.useCallback(K=>ce.current===B.current?.side&&FU(K,B.current?.area),[]);return a.jsx(xU,{scope:n,searchRef:z,onItemEnter:y.useCallback(K=>{V(K)&&K.preventDefault()},[V]),onItemLeave:y.useCallback(K=>{V(K)||(A.current?.focus(),M(null))},[V]),onTriggerLeave:y.useCallback(K=>{V(K)&&K.preventDefault()},[V]),pointerGraceTimerRef:Z,onPointerGraceIntentChange:y.useCallback(K=>{B.current=K},[]),children:a.jsx(oe,{...Q,children:a.jsx(Ih,{asChild:!0,trapped:s,onMountAutoFocus:Ge(o,K=>{K.preventDefault(),A.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:l,children:a.jsx(Ph,{asChild:!0,disableOutsidePointerEvents:u,onEscapeKeyDown:f,onPointerDownOutside:h,onFocusOutside:m,onInteractOutside:g,onDismiss:x,children:a.jsx(TM,{asChild:!0,...T,dir:k.dir,orientation:"vertical",loop:r,currentTabStopId:I,onCurrentTabStopIdChange:M,onEntryFocus:Ge(d,K=>{k.isUsingKeyboardRef.current||K.preventDefault()}),preventScrollOnEntryFocus:!0,children:a.jsx(wM,{role:"menu","aria-orientation":"vertical","data-state":ZM(C.open),"data-radix-menu-content":"",dir:k.dir,...N,...w,ref:O,style:{outline:"none",...w.style},onKeyDown:Ge(w.onKeyDown,K=>{const D=K.target.closest("[data-radix-menu-content]")===K.currentTarget,J=K.ctrlKey||K.altKey||K.metaKey,ae=K.key.length===1;D&&(K.key==="Tab"&&K.preventDefault(),!J&&ae&&ne(K.key));const ee=A.current;if(K.target!==ee||!dU.includes(K.key))return;K.preventDefault();const ue=_().filter(j=>!j.disabled).map(j=>j.ref.current);_M.includes(K.key)&&ue.reverse(),IU(ue)}),onBlur:Ge(e.onBlur,K=>{K.currentTarget.contains(K.target)||(window.clearTimeout(F.current),z.current="")}),onPointerMove:Ge(e.onPointerMove,ad(K=>{const U=K.target,D=H.current!==K.clientX;if(K.currentTarget.contains(U)&&D){const J=K.clientX>H.current?"right":"left";ce.current=J,H.current=K.clientX}}))})})})})})})});DM.displayName=Ms;var jU="MenuGroup",Mx=y.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return a.jsx(xt.div,{role:"group",...r,ref:t})});Mx.displayName=jU;var kU="MenuLabel",FM=y.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return a.jsx(xt.div,{...r,ref:t})});FM.displayName=kU;var Yp="MenuItem",I1="menu.itemSelect",Kh=y.forwardRef((e,t)=>{const{disabled:n=!1,onSelect:r,...s}=e,o=y.useRef(null),l=Sd(Yp,e.__scopeMenu),u=Nx(Yp,e.__scopeMenu),d=Xt(t,o),f=y.useRef(!1),h=()=>{const m=o.current;if(!n&&m){const g=new CustomEvent(I1,{bubbles:!0,cancelable:!0});m.addEventListener(I1,x=>r?.(x),{once:!0}),uT(m,g),g.defaultPrevented?f.current=!1:l.onClose()}};return a.jsx(LM,{...s,ref:d,disabled:n,onClick:Ge(e.onClick,h),onPointerDown:m=>{e.onPointerDown?.(m),f.current=!0},onPointerUp:Ge(e.onPointerUp,m=>{f.current||m.currentTarget?.click()}),onKeyDown:Ge(e.onKeyDown,m=>{const g=u.searchRef.current!=="";n||g&&m.key===" "||sb.includes(m.key)&&(m.currentTarget.click(),m.preventDefault())})})});Kh.displayName=Yp;var LM=y.forwardRef((e,t)=>{const{__scopeMenu:n,disabled:r=!1,textValue:s,...o}=e,l=Nx(Yp,n),u=PM(n),d=y.useRef(null),f=Xt(t,d),[h,m]=y.useState(!1),[g,x]=y.useState("");return y.useEffect(()=>{const b=d.current;b&&x((b.textContent??"").trim())},[o.children]),a.jsx(sd.ItemSlot,{scope:n,disabled:r,textValue:s??g,children:a.jsx(MM,{asChild:!0,...u,focusable:!r,children:a.jsx(xt.div,{role:"menuitem","data-highlighted":h?"":void 0,"aria-disabled":r||void 0,"data-disabled":r?"":void 0,...o,ref:f,onPointerMove:Ge(e.onPointerMove,ad(b=>{r?l.onItemLeave(b):(l.onItemEnter(b),b.defaultPrevented||b.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:Ge(e.onPointerLeave,ad(b=>l.onItemLeave(b))),onFocus:Ge(e.onFocus,()=>m(!0)),onBlur:Ge(e.onBlur,()=>m(!1))})})})}),EU="MenuCheckboxItem",$M=y.forwardRef((e,t)=>{const{checked:n=!1,onCheckedChange:r,...s}=e;return a.jsx(qM,{scope:e.__scopeMenu,checked:n,children:a.jsx(Kh,{role:"menuitemcheckbox","aria-checked":Zp(n)?"mixed":n,...s,ref:t,"data-state":Rx(n),onSelect:Ge(s.onSelect,()=>r?.(Zp(n)?!0:!n),{checkForDefaultPrevented:!1})})})});$M.displayName=EU;var BM="MenuRadioGroup",[NU,TU]=rl(BM,{value:void 0,onValueChange:()=>{}}),zM=y.forwardRef((e,t)=>{const{value:n,onValueChange:r,...s}=e,o=Qs(r);return a.jsx(NU,{scope:e.__scopeMenu,value:n,onValueChange:o,children:a.jsx(Mx,{...s,ref:t})})});zM.displayName=BM;var UM="MenuRadioItem",VM=y.forwardRef((e,t)=>{const{value:n,...r}=e,s=TU(UM,e.__scopeMenu),o=n===s.value;return a.jsx(qM,{scope:e.__scopeMenu,checked:o,children:a.jsx(Kh,{role:"menuitemradio","aria-checked":o,...r,ref:t,"data-state":Rx(o),onSelect:Ge(r.onSelect,()=>s.onValueChange?.(n),{checkForDefaultPrevented:!1})})})});VM.displayName=UM;var _x="MenuItemIndicator",[qM,MU]=rl(_x,{checked:!1}),HM=y.forwardRef((e,t)=>{const{__scopeMenu:n,forceMount:r,...s}=e,o=MU(_x,n);return a.jsx(ta,{present:r||Zp(o.checked)||o.checked===!0,children:a.jsx(xt.span,{...s,ref:t,"data-state":Rx(o.checked)})})});HM.displayName=_x;var _U="MenuSeparator",KM=y.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return a.jsx(xt.div,{role:"separator","aria-orientation":"horizontal",...r,ref:t})});KM.displayName=_U;var RU="MenuArrow",WM=y.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e,s=Hh(n);return a.jsx(SM,{...s,...r,ref:t})});WM.displayName=RU;var PU="MenuSub",[vce,GM]=rl(PU),Fu="MenuSubTrigger",JM=y.forwardRef((e,t)=>{const n=sl(Fu,e.__scopeMenu),r=Sd(Fu,e.__scopeMenu),s=GM(Fu,e.__scopeMenu),o=Nx(Fu,e.__scopeMenu),l=y.useRef(null),{pointerGraceTimerRef:u,onPointerGraceIntentChange:d}=o,f={__scopeMenu:e.__scopeMenu},h=y.useCallback(()=>{l.current&&window.clearTimeout(l.current),l.current=null},[]);return y.useEffect(()=>h,[h]),y.useEffect(()=>{const m=u.current;return()=>{window.clearTimeout(m),d(null)}},[u,d]),a.jsx(kx,{asChild:!0,...f,children:a.jsx(LM,{id:s.triggerId,"aria-haspopup":"menu","aria-expanded":n.open,"aria-controls":s.contentId,"data-state":ZM(n.open),...e,ref:Wo(t,s.onTriggerChange),onClick:m=>{e.onClick?.(m),!(e.disabled||m.defaultPrevented)&&(m.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:Ge(e.onPointerMove,ad(m=>{o.onItemEnter(m),!m.defaultPrevented&&!e.disabled&&!n.open&&!l.current&&(o.onPointerGraceIntentChange(null),l.current=window.setTimeout(()=>{n.onOpenChange(!0),h()},100))})),onPointerLeave:Ge(e.onPointerLeave,ad(m=>{h();const g=n.content?.getBoundingClientRect();if(g){const x=n.content?.dataset.side,b=x==="right",w=b?-5:5,C=g[b?"left":"right"],k=g[b?"right":"left"];o.onPointerGraceIntentChange({area:[{x:m.clientX+w,y:m.clientY},{x:C,y:g.top},{x:k,y:g.top},{x:k,y:g.bottom},{x:C,y:g.bottom}],side:x}),window.clearTimeout(u.current),u.current=window.setTimeout(()=>o.onPointerGraceIntentChange(null),300)}else{if(o.onTriggerLeave(m),m.defaultPrevented)return;o.onPointerGraceIntentChange(null)}})),onKeyDown:Ge(e.onKeyDown,m=>{const g=o.searchRef.current!=="";e.disabled||g&&m.key===" "||fU[r.dir].includes(m.key)&&(n.onOpenChange(!0),n.content?.focus(),m.preventDefault())})})})});JM.displayName=Fu;var QM="MenuSubContent",YM=y.forwardRef((e,t)=>{const n=OM(Ms,e.__scopeMenu),{forceMount:r=n.forceMount,...s}=e,o=sl(Ms,e.__scopeMenu),l=Sd(Ms,e.__scopeMenu),u=GM(QM,e.__scopeMenu),d=y.useRef(null),f=Xt(t,d);return a.jsx(sd.Provider,{scope:e.__scopeMenu,children:a.jsx(ta,{present:r||o.open,children:a.jsx(sd.Slot,{scope:e.__scopeMenu,children:a.jsx(Tx,{id:u.contentId,"aria-labelledby":u.triggerId,...s,ref:f,align:"start",side:l.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:h=>{l.isUsingKeyboardRef.current&&d.current?.focus(),h.preventDefault()},onCloseAutoFocus:h=>h.preventDefault(),onFocusOutside:Ge(e.onFocusOutside,h=>{h.target!==u.trigger&&o.onOpenChange(!1)}),onEscapeKeyDown:Ge(e.onEscapeKeyDown,h=>{l.onClose(),h.preventDefault()}),onKeyDown:Ge(e.onKeyDown,h=>{const m=h.currentTarget.contains(h.target),g=pU[l.dir].includes(h.key);m&&g&&(o.onOpenChange(!1),u.trigger?.focus(),h.preventDefault())})})})})})});YM.displayName=QM;function ZM(e){return e?"open":"closed"}function Zp(e){return e==="indeterminate"}function Rx(e){return Zp(e)?"indeterminate":e?"checked":"unchecked"}function IU(e){const t=document.activeElement;for(const n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function OU(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function AU(e,t,n){const s=t.length>1&&Array.from(t).every(f=>f===t[0])?t[0]:t,o=n?e.indexOf(n):-1;let l=OU(e,Math.max(o,0));s.length===1&&(l=l.filter(f=>f!==n));const d=l.find(f=>f.toLowerCase().startsWith(s.toLowerCase()));return d!==n?d:void 0}function DU(e,t){const{x:n,y:r}=e;let s=!1;for(let o=0,l=t.length-1;or!=g>r&&n<(m-f)*(r-h)/(g-h)+f&&(s=!s)}return s}function FU(e,t){if(!t)return!1;const n={x:e.clientX,y:e.clientY};return DU(n,t)}function ad(e){return t=>t.pointerType==="mouse"?e(t):void 0}var LU=IM,$U=kx,BU=AM,zU=DM,UU=Mx,VU=FM,qU=Kh,HU=$M,KU=zM,WU=VM,GU=HM,JU=KM,QU=WM,YU=JM,ZU=YM,Wh="DropdownMenu",[XU]=ea(Wh,[RM]),Lr=RM(),[eV,XM]=XU(Wh),e_=e=>{const{__scopeDropdownMenu:t,children:n,dir:r,open:s,defaultOpen:o,onOpenChange:l,modal:u=!0}=e,d=Lr(t),f=y.useRef(null),[h,m]=Ba({prop:s,defaultProp:o??!1,onChange:l,caller:Wh});return a.jsx(eV,{scope:t,triggerId:Ws(),triggerRef:f,contentId:Ws(),open:h,onOpenChange:m,onOpenToggle:y.useCallback(()=>m(g=>!g),[m]),modal:u,children:a.jsx(LU,{...d,open:h,onOpenChange:m,dir:r,modal:u,children:n})})};e_.displayName=Wh;var t_="DropdownMenuTrigger",n_=y.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,disabled:r=!1,...s}=e,o=XM(t_,n),l=Lr(n);return a.jsx($U,{asChild:!0,...l,children:a.jsx(xt.button,{type:"button",id:o.triggerId,"aria-haspopup":"menu","aria-expanded":o.open,"aria-controls":o.open?o.contentId:void 0,"data-state":o.open?"open":"closed","data-disabled":r?"":void 0,disabled:r,...s,ref:Wo(t,o.triggerRef),onPointerDown:Ge(e.onPointerDown,u=>{!r&&u.button===0&&u.ctrlKey===!1&&(o.onOpenToggle(),o.open||u.preventDefault())}),onKeyDown:Ge(e.onKeyDown,u=>{r||(["Enter"," "].includes(u.key)&&o.onOpenToggle(),u.key==="ArrowDown"&&o.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(u.key)&&u.preventDefault())})})})});n_.displayName=t_;var tV="DropdownMenuPortal",r_=e=>{const{__scopeDropdownMenu:t,...n}=e,r=Lr(t);return a.jsx(BU,{...r,...n})};r_.displayName=tV;var s_="DropdownMenuContent",a_=y.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,s=XM(s_,n),o=Lr(n),l=y.useRef(!1);return a.jsx(zU,{id:s.contentId,"aria-labelledby":s.triggerId,...o,...r,ref:t,onCloseAutoFocus:Ge(e.onCloseAutoFocus,u=>{l.current||s.triggerRef.current?.focus(),l.current=!1,u.preventDefault()}),onInteractOutside:Ge(e.onInteractOutside,u=>{const d=u.detail.originalEvent,f=d.button===0&&d.ctrlKey===!0,h=d.button===2||f;(!s.modal||h)&&(l.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});a_.displayName=s_;var nV="DropdownMenuGroup",rV=y.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,s=Lr(n);return a.jsx(UU,{...s,...r,ref:t})});rV.displayName=nV;var sV="DropdownMenuLabel",o_=y.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,s=Lr(n);return a.jsx(VU,{...s,...r,ref:t})});o_.displayName=sV;var aV="DropdownMenuItem",i_=y.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,s=Lr(n);return a.jsx(qU,{...s,...r,ref:t})});i_.displayName=aV;var oV="DropdownMenuCheckboxItem",l_=y.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,s=Lr(n);return a.jsx(HU,{...s,...r,ref:t})});l_.displayName=oV;var iV="DropdownMenuRadioGroup",lV=y.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,s=Lr(n);return a.jsx(KU,{...s,...r,ref:t})});lV.displayName=iV;var cV="DropdownMenuRadioItem",uV=y.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,s=Lr(n);return a.jsx(WU,{...s,...r,ref:t})});uV.displayName=cV;var dV="DropdownMenuItemIndicator",c_=y.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,s=Lr(n);return a.jsx(GU,{...s,...r,ref:t})});c_.displayName=dV;var fV="DropdownMenuSeparator",u_=y.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,s=Lr(n);return a.jsx(JU,{...s,...r,ref:t})});u_.displayName=fV;var pV="DropdownMenuArrow",hV=y.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,s=Lr(n);return a.jsx(QU,{...s,...r,ref:t})});hV.displayName=pV;var mV="DropdownMenuSubTrigger",gV=y.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,s=Lr(n);return a.jsx(YU,{...s,...r,ref:t})});gV.displayName=mV;var vV="DropdownMenuSubContent",yV=y.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,s=Lr(n);return a.jsx(ZU,{...s,...r,ref:t,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});yV.displayName=vV;var bV=e_,xV=n_,wV=r_,SV=a_,CV=o_,jV=i_,kV=l_,EV=c_,al=u_;/** + * @license lucide-react v0.522.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const NV=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),TV=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(t,n,r)=>r?r.toUpperCase():n.toLowerCase()),O1=e=>{const t=TV(e);return t.charAt(0).toUpperCase()+t.slice(1)},d_=(...e)=>e.filter((t,n,r)=>!!t&&t.trim()!==""&&r.indexOf(t)===n).join(" ").trim(),MV=e=>{for(const t in e)if(t.startsWith("aria-")||t==="role"||t==="title")return!0};/** + * @license lucide-react v0.522.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */var _V={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** + * @license lucide-react v0.522.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const RV=y.forwardRef(({color:e="currentColor",size:t=24,strokeWidth:n=2,absoluteStrokeWidth:r,className:s="",children:o,iconNode:l,...u},d)=>y.createElement("svg",{ref:d,..._V,width:t,height:t,stroke:e,strokeWidth:r?Number(n)*24/Number(t):n,className:d_("lucide",s),...!o&&!MV(u)&&{"aria-hidden":"true"},...u},[...l.map(([f,h])=>y.createElement(f,h)),...Array.isArray(o)?o:[o]]));/** + * @license lucide-react v0.522.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Gh=(e,t)=>{const n=y.forwardRef(({className:r,...s},o)=>y.createElement(RV,{ref:o,iconNode:t,className:d_(`lucide-${NV(O1(e))}`,`lucide-${e}`,r),...s}));return n.displayName=O1(e),n};/** + * @license lucide-react v0.522.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const PV=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],Px=Gh("check",PV);/** + * @license lucide-react v0.522.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const IV=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],f_=Gh("chevron-down",IV);/** + * @license lucide-react v0.522.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const OV=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],AV=Gh("chevron-up",OV);/** + * @license lucide-react v0.522.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const DV=[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]],FV=Gh("grip-vertical",DV);function ms({...e}){return a.jsx(bV,{"data-slot":"dropdown-menu",...e})}function gs({...e}){return a.jsx(xV,{"data-slot":"dropdown-menu-trigger",...e})}function vs({className:e,sideOffset:t=4,...n}){return a.jsx(wV,{children:a.jsx(SV,{"data-slot":"dropdown-menu-content",sideOffset:t,className:kt("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md",e),...n})})}function St({className:e,inset:t,variant:n="default",...r}){return a.jsx(jV,{"data-slot":"dropdown-menu-item","data-inset":t,"data-variant":n,className:kt("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...r})}function LV({className:e,children:t,checked:n,...r}){return a.jsxs(kV,{"data-slot":"dropdown-menu-checkbox-item",className:kt("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),checked:n,...r,children:[a.jsx("span",{className:"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center",children:a.jsx(EV,{children:a.jsx(Px,{className:"size-4"})})}),t]})}function Qo({className:e,inset:t,...n}){return a.jsx(CV,{"data-slot":"dropdown-menu-label","data-inset":t,className:kt("px-2 py-1.5 text-sm font-medium data-[inset]:pl-8",e),...n})}function Yo({className:e,...t}){return a.jsx(al,{"data-slot":"dropdown-menu-separator",className:kt("bg-border -mx-1 my-1 h-px",e),...t})}function p_(){const{t:e,i18n:t}=Fe(),n=r=>{t.changeLanguage(r),localStorage.setItem("i18nextLng",r),window.location.reload()};return a.jsxs(ms,{children:[a.jsx(gs,{asChild:!0,children:a.jsxs(q,{variant:"outline",size:"icon",children:[a.jsx(KB,{className:"h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all"}),a.jsx("span",{className:"sr-only",children:e("header.theme.label")})]})}),a.jsxs(vs,{align:"end",children:[a.jsx(St,{className:t.language==="pt-BR"?"font-bold":"",onClick:()=>n("pt-BR"),children:e("header.language.portuguese")}),a.jsx(St,{className:t.language==="en-US"?"font-bold":"",onClick:()=>n("en-US"),children:e("header.language.english")}),a.jsx(St,{className:t.language==="es-ES"?"font-bold":"",onClick:()=>n("es-ES"),children:e("header.language.spanish")}),a.jsx(St,{className:t.language==="fr-FR"?"font-bold":"",onClick:()=>n("fr-FR"),children:e("header.language.french")})]})]})}function h_(){const{t:e}=Fe(),{setTheme:t}=Gi();return a.jsxs(ms,{children:[a.jsx(gs,{asChild:!0,children:a.jsxs(q,{variant:"outline",size:"icon",children:[a.jsx(sz,{className:"h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0"}),a.jsx(ZB,{className:"absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100"}),a.jsx("span",{className:"sr-only",children:e("header.theme.label")})]})}),a.jsxs(vs,{align:"end",children:[a.jsx(St,{onClick:()=>t("light"),children:e("header.theme.light")}),a.jsx(St,{onClick:()=>t("dark"),children:e("header.theme.dark")}),a.jsx(St,{onClick:()=>t("system"),children:e("header.theme.system")})]})]})}function m_({instanceId:e}){const{t}=Fe(),[n,r]=y.useState(!1),s=jn(),o=()=>{Jy(),s("/manager/login")},{data:l}=XT({instanceId:e});return a.jsxs("header",{className:"flex h-16 items-center justify-end border-b border-sidebar-border bg-sidebar px-4 shadow-sm",children:[a.jsxs("div",{className:"flex items-center gap-2",children:[e&&l&&a.jsxs("div",{className:"mr-2 flex items-center gap-2 rounded-md bg-sidebar-accent/50 px-3 py-1.5",children:[a.jsx(_h,{className:"h-6 w-6",children:a.jsx(Rh,{src:l.profilePicUrl||"/assets/images/evolution-logo.png",alt:l.name})}),a.jsx("span",{className:"text-sm font-medium text-sidebar-foreground",children:l.profileName||l.name})]}),a.jsx(p_,{}),a.jsx(h_,{}),a.jsxs(q,{onClick:()=>r(!0),variant:"ghost",size:"sm",className:"gap-2 text-sidebar-foreground hover:bg-sidebar-accent",children:[a.jsx(zT,{className:"h-4 w-4"}),t("header.logout.action")]})]}),a.jsx(gt,{onOpenChange:r,open:n,children:a.jsxs(pt,{children:[a.jsxs(ht,{children:[a.jsx(bt,{children:t("header.logout.title")}),a.jsx(kr,{children:t("header.logout.description")})]}),a.jsx(Kt,{children:a.jsxs("div",{className:"flex items-center gap-4",children:[a.jsx(q,{onClick:()=>r(!1),size:"sm",variant:"outline",children:t("button.cancel")}),a.jsx(q,{onClick:o,variant:"destructive",children:t("header.logout.action")})]})})]})})]})}var Jh="Collapsible",[$V]=ea(Jh),[BV,Ix]=$V(Jh),g_=y.forwardRef((e,t)=>{const{__scopeCollapsible:n,open:r,defaultOpen:s,disabled:o,onOpenChange:l,...u}=e,[d,f]=Ba({prop:r,defaultProp:s??!1,onChange:l,caller:Jh});return a.jsx(BV,{scope:n,disabled:o,contentId:Ws(),open:d,onOpenToggle:y.useCallback(()=>f(h=>!h),[f]),children:a.jsx(xt.div,{"data-state":Ax(d),"data-disabled":o?"":void 0,...u,ref:t})})});g_.displayName=Jh;var v_="CollapsibleTrigger",y_=y.forwardRef((e,t)=>{const{__scopeCollapsible:n,...r}=e,s=Ix(v_,n);return a.jsx(xt.button,{type:"button","aria-controls":s.contentId,"aria-expanded":s.open||!1,"data-state":Ax(s.open),"data-disabled":s.disabled?"":void 0,disabled:s.disabled,...r,ref:t,onClick:Ge(e.onClick,s.onOpenToggle)})});y_.displayName=v_;var Ox="CollapsibleContent",b_=y.forwardRef((e,t)=>{const{forceMount:n,...r}=e,s=Ix(Ox,e.__scopeCollapsible);return a.jsx(ta,{present:n||s.open,children:({present:o})=>a.jsx(zV,{...r,ref:t,present:o})})});b_.displayName=Ox;var zV=y.forwardRef((e,t)=>{const{__scopeCollapsible:n,present:r,children:s,...o}=e,l=Ix(Ox,n),[u,d]=y.useState(r),f=y.useRef(null),h=Xt(t,f),m=y.useRef(0),g=m.current,x=y.useRef(0),b=x.current,w=l.open||u,C=y.useRef(w),k=y.useRef(void 0);return y.useEffect(()=>{const N=requestAnimationFrame(()=>C.current=!1);return()=>cancelAnimationFrame(N)},[]),er(()=>{const N=f.current;if(N){k.current=k.current||{transitionDuration:N.style.transitionDuration,animationName:N.style.animationName},N.style.transitionDuration="0s",N.style.animationName="none";const T=N.getBoundingClientRect();m.current=T.height,x.current=T.width,C.current||(N.style.transitionDuration=k.current.transitionDuration,N.style.animationName=k.current.animationName),d(r)}},[l.open,r]),a.jsx(xt.div,{"data-state":Ax(l.open),"data-disabled":l.disabled?"":void 0,id:l.contentId,hidden:!w,...o,ref:h,style:{"--radix-collapsible-content-height":g?`${g}px`:void 0,"--radix-collapsible-content-width":b?`${b}px`:void 0,...e.style},children:w&&s})});function Ax(e){return e?"open":"closed"}var UV=g_;function x_({...e}){return a.jsx(UV,{"data-slot":"collapsible",...e})}function w_({...e}){return a.jsx(y_,{"data-slot":"collapsible-trigger",...e})}function S_({...e}){return a.jsx(b_,{"data-slot":"collapsible-content",...e})}const C_=y.createContext(null),dt=()=>{const e=y.useContext(C_);if(!e)throw new Error("useInstance must be used within an InstanceProvider");return e},j_=({children:e})=>{const t=_s(),[n,r]=y.useState(null),{data:s,refetch:o}=XT({instanceId:n});return y.useEffect(()=>{t.instanceId?r(t.instanceId):r(null)},[t]),a.jsx(C_.Provider,{value:{instance:s??null,reloadInstance:async()=>{await o()}},children:e})},VV=new Set(Object.keys(LN)),qV=e=>VV.has(e),A1=e=>!e||!qV(e)||$N(e);function k_({children:e,footer:t}){const n=new Date().getFullYear(),{theme:r}=Gi(),s=r==="dark"?"https://evolution-api.com/files/evo/evolution-logo-white.svg":"https://evolution-api.com/files/evo/evolution-logo.svg";return a.jsxs("aside",{className:"hidden md:flex bg-sidebar text-sidebar-foreground flex-col w-56 border-r border-sidebar-border",children:[a.jsx("div",{className:"h-16 flex items-center px-4 border-b border-sidebar-border",children:a.jsx("img",{src:s,alt:"Evolution API",className:"h-7"})}),a.jsx("nav",{className:"flex-1 overflow-y-auto px-2 py-4 space-y-1",children:e}),t&&a.jsx("div",{className:"border-t border-sidebar-border px-2 py-3 space-y-1",children:t}),a.jsxs("div",{className:"p-4 border-t border-sidebar-border",children:[a.jsx("div",{className:"text-sm font-medium text-primary",children:"Evolution Manager"}),a.jsxs("div",{className:"mt-1 text-xs text-muted-foreground",children:["© ",n," All rights reserved"]})]})]})}function Gl({to:e,icon:t,label:n,isExternal:r}){return r?a.jsxs("a",{href:e,target:"_blank",rel:"noreferrer",className:"flex items-center gap-3 rounded-md px-3 py-2.5 text-sm font-medium text-muted-foreground transition-all hover:bg-accent hover:text-foreground",children:[t&&a.jsx(t,{className:"h-5 w-5 flex-shrink-0"}),a.jsx("span",{children:n})]}):a.jsx(aN,{to:e,className:({isActive:s})=>ln("flex items-center gap-3 rounded-md px-3 py-2.5 text-sm font-medium transition-all",s?"bg-primary/10 text-primary":"text-muted-foreground hover:bg-accent hover:text-foreground"),children:({isActive:s})=>a.jsxs(a.Fragment,{children:[t&&a.jsx(t,{className:ln("h-5 w-5 flex-shrink-0",s&&"text-primary")}),a.jsx("span",{children:n})]})})}function E_(){const{t:e}=Fe();return a.jsxs(a.Fragment,{children:[a.jsx(Gl,{to:"https://docs.evolutionfoundation.com.br/",icon:FB,label:e("sidebar.documentation"),isExternal:!0}),a.jsx(Gl,{to:"https://evolution-api.com/postman",icon:MB,label:e("sidebar.postman"),isExternal:!0}),a.jsx(Gl,{to:"https://evolution-api.com/discord",icon:sc,label:e("sidebar.discord"),isExternal:!0})]})}function HV(){const{t:e}=Fe();return a.jsx(k_,{footer:a.jsx(E_,{}),children:a.jsx(Gl,{to:"/manager",icon:Xy,label:e("sidebar.dashboard")})})}function KV(){const{t:e}=Fe(),{instance:t}=dt(),{pathname:n}=Ho(),r=t?`/manager/instance/${t.id}`:"",s=y.useMemo(()=>[{id:"dashboard",title:e("sidebar.dashboard"),icon:Xy,path:"dashboard"},{id:"chat",title:e("sidebar.chat"),icon:sc,path:"chat"},{title:e("sidebar.configurations"),icon:Go,children:[{id:"settings",title:e("sidebar.settings"),path:"settings"},{id:"proxy",title:e("sidebar.proxy"),path:"proxy"}]},{title:e("sidebar.events"),icon:qB,children:[{id:"webhook",title:e("sidebar.webhook"),path:"webhook"},{id:"websocket",title:e("sidebar.websocket"),path:"websocket"},{id:"rabbitmq",title:e("sidebar.rabbitmq"),path:"rabbitmq"},{id:"sqs",title:e("sidebar.sqs"),path:"sqs"}]},{title:e("sidebar.integrations"),icon:lz,children:[{id:"evoai",title:e("sidebar.evoai"),path:"evoai"},{id:"n8n",title:e("sidebar.n8n"),path:"n8n"},{id:"evolutionBot",title:e("sidebar.evolutionBot"),path:"evolutionBot"},{id:"chatwoot",title:e("sidebar.chatwoot"),path:"chatwoot"},{id:"typebot",title:e("sidebar.typebot"),path:"typebot"},{id:"openai",title:e("sidebar.openai"),path:"openai"},{id:"dify",title:e("sidebar.dify"),path:"dify"},{id:"flowise",title:e("sidebar.flowise"),path:"flowise"}]}],[e]),o=y.useMemo(()=>s.map(l=>"children"in l?{...l,children:l.children.filter(u=>A1(u.id))}:l).filter(l=>"children"in l?l.children.length>0:A1(l.id)),[s]);return a.jsxs(k_,{footer:a.jsx(E_,{}),children:[a.jsx(Gl,{to:"/manager",icon:Xy,label:`← ${e("dashboard.title")}`}),a.jsx("div",{className:"my-2 border-t border-sidebar-border"}),o.map(l=>{if("children"in l){const u=l.children.some(d=>d.path&&n.includes(d.path));return a.jsxs(x_,{defaultOpen:u,children:[a.jsxs(w_,{className:ln("flex w-full items-center gap-3 rounded-md px-3 py-2.5 text-sm font-medium transition-all",u?"bg-primary/10 text-primary":"text-muted-foreground hover:bg-accent hover:text-foreground"),children:[a.jsx(l.icon,{className:ln("h-5 w-5 flex-shrink-0",u&&"text-primary")}),a.jsx("span",{children:l.title}),a.jsx($T,{className:"ml-auto h-4 w-4 transition-transform data-[state=open]:rotate-180"})]}),a.jsx(S_,{className:"ml-7 mt-1 flex flex-col gap-1 border-l border-sidebar-border pl-3",children:l.children.map(d=>a.jsx(aN,{to:`${r}/${d.path}`,className:({isActive:f})=>ln("rounded-md px-3 py-1.5 text-sm transition-all",f?"text-primary font-medium":"text-muted-foreground hover:text-foreground"),children:d.title},d.id))})]},l.title)}return a.jsx(Gl,{to:`${r}/${l.path}`,icon:l.icon,label:l.title},l.id)})]})}function Nn({children:e}){const{instanceId:t}=_s();return a.jsx(j_,{children:a.jsxs("div",{className:"flex h-screen bg-background",children:[a.jsx(KV,{}),a.jsxs("div",{className:"flex min-w-0 flex-1 flex-col overflow-hidden",children:[a.jsx(m_,{instanceId:t}),a.jsx("main",{className:"min-h-0 flex-1 overflow-y-auto p-6",children:e})]})]})})}function WV({children:e}){return a.jsxs("div",{className:"flex h-screen bg-background",children:[a.jsx(HV,{}),a.jsxs("div",{className:"flex min-w-0 flex-1 flex-col overflow-hidden",children:[a.jsx(m_,{}),a.jsx("main",{className:"min-h-0 flex-1 overflow-y-auto p-6",children:e})]})]})}const GV="file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",X=y.forwardRef(({className:e,type:t,...n},r)=>a.jsx("input",{ref:r,type:t,"data-slot":"input",className:ln(GV,e),...n}));X.displayName="Input";function JV({className:e,...t}){return a.jsx("div",{"data-slot":"skeleton",className:kt("bg-accent animate-pulse rounded-md",e),...t})}function N_({title:e,subtitle:t,searchValue:n,onSearchChange:r,searchPlaceholder:s,primaryAction:o,secondaryActions:l=[],className:u,children:d}){const{t:f}=Fe(),h=s??f("common.search");return a.jsxs("div",{className:ln("mb-6 space-y-6",u),children:[a.jsxs("div",{className:"flex flex-col gap-4 md:flex-row md:items-start md:justify-between",children:[a.jsxs("div",{className:"flex-1",children:[a.jsx("h1",{className:"mb-1 text-2xl font-bold tracking-tight text-foreground",children:e}),t&&a.jsx("p",{className:"text-sm text-muted-foreground",children:t})]}),o&&a.jsx("div",{className:"flex-shrink-0",children:a.jsxs(q,{onClick:o.onClick,variant:o.variant||"default",className:o.className,children:[o.icon&&a.jsx("span",{className:"mr-2 inline-flex",children:o.icon}),o.label]})})]}),(r||l.length>0)&&a.jsxs("div",{className:"flex flex-col gap-3 md:flex-row md:items-center md:justify-between",children:[r&&a.jsxs("div",{className:"relative max-w-md flex-1",children:[a.jsx(VT,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),a.jsx(X,{type:"search",placeholder:h,value:n??"",onChange:m=>r(m.target.value),className:"pl-9"})]}),l.length>0&&a.jsx("div",{className:"flex items-center gap-2",children:l.map((m,g)=>a.jsxs(q,{variant:m.variant||"outline",size:"sm",onClick:m.onClick,className:m.className,children:[m.icon&&a.jsx("span",{className:"mr-2 inline-flex",children:m.icon}),m.label]},g))})]}),d]})}var QV=ox("inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"}},defaultVariants:{variant:"default"}});function _o({className:e,variant:t,asChild:n=!1,...r}){const s=n?cT:"span";return a.jsx(s,{"data-slot":"badge",className:kt(QV({variant:t}),e),...r})}function Bn({className:e,...t}){return a.jsx("div",{"data-slot":"card",className:kt("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",e),...t})}function Yn({className:e,...t}){return a.jsx("div",{"data-slot":"card-header",className:kt("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",e),...t})}function Zn({className:e,...t}){return a.jsx("div",{"data-slot":"card-title",className:kt("leading-none font-semibold",e),...t})}function D1({className:e,...t}){return a.jsx("div",{"data-slot":"card-description",className:kt("text-muted-foreground text-sm",e),...t})}function zn({className:e,...t}){return a.jsx("div",{"data-slot":"card-content",className:kt("px-6",e),...t})}function YV({className:e,...t}){return a.jsx("div",{"data-slot":"card-footer",className:kt("flex items-center px-6 [.border-t]:pt-6",e),...t})}var ZV=Symbol.for("react.lazy"),Xp=Vo[" use ".trim().toString()];function XV(e){return typeof e=="object"&&e!==null&&"then"in e}function T_(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===ZV&&"_payload"in e&&XV(e._payload)}function e6(e){const t=t6(e),n=y.forwardRef((r,s)=>{let{children:o,...l}=r;T_(o)&&typeof Xp=="function"&&(o=Xp(o._payload));const u=y.Children.toArray(o),d=u.find(r6);if(d){const f=d.props.children,h=u.map(m=>m===d?y.Children.count(f)>1?y.Children.only(null):y.isValidElement(f)?f.props.children:null:m);return a.jsx(t,{...l,ref:s,children:y.isValidElement(f)?y.cloneElement(f,void 0,h):null})}return a.jsx(t,{...l,ref:s,children:o})});return n.displayName=`${e}.Slot`,n}function t6(e){const t=y.forwardRef((n,r)=>{let{children:s,...o}=n;if(T_(s)&&typeof Xp=="function"&&(s=Xp(s._payload)),y.isValidElement(s)){const l=a6(s),u=s6(o,s.props);return s.type!==y.Fragment&&(u.ref=r?Wo(r,l):l),y.cloneElement(s,u)}return y.Children.count(s)>1?y.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var n6=Symbol("radix.slottable");function r6(e){return y.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===n6}function s6(e,t){const n={...t};for(const r in t){const s=e[r],o=t[r];/^on[A-Z]/.test(r)?s&&o?n[r]=(...u)=>{const d=o(...u);return s(...u),d}:s&&(n[r]=s):r==="style"?n[r]={...s,...o}:r==="className"&&(n[r]=[s,o].filter(Boolean).join(" "))}return{...e,...n}}function a6(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var o6=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],i6=o6.reduce((e,t)=>{const n=e6(`Primitive.${t}`),r=y.forwardRef((s,o)=>{const{asChild:l,...u}=s,d=l?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),a.jsx(d,{...u,ref:o})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{}),l6="Label",M_=y.forwardRef((e,t)=>a.jsx(i6.label,{...e,ref:t,onMouseDown:n=>{n.target.closest("button, input, select, textarea")||(e.onMouseDown?.(n),!n.defaultPrevented&&n.detail>1&&n.preventDefault())}}));M_.displayName=l6;var c6=M_;function Ue({className:e,...t}){return a.jsx(c6,{"data-slot":"label",className:kt("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",e),...t})}var Qh="Tabs",[u6]=ea(Qh,[qh]),__=qh(),[d6,Dx]=u6(Qh),R_=y.forwardRef((e,t)=>{const{__scopeTabs:n,value:r,onValueChange:s,defaultValue:o,orientation:l="horizontal",dir:u,activationMode:d="automatic",...f}=e,h=Bh(u),[m,g]=Ba({prop:r,onChange:s,defaultProp:o??"",caller:Qh});return a.jsx(d6,{scope:n,baseId:Ws(),value:m,onValueChange:g,orientation:l,dir:h,activationMode:d,children:a.jsx(xt.div,{dir:h,"data-orientation":l,...f,ref:t})})});R_.displayName=Qh;var P_="TabsList",I_=y.forwardRef((e,t)=>{const{__scopeTabs:n,loop:r=!0,...s}=e,o=Dx(P_,n),l=__(n);return a.jsx(TM,{asChild:!0,...l,orientation:o.orientation,dir:o.dir,loop:r,children:a.jsx(xt.div,{role:"tablist","aria-orientation":o.orientation,...s,ref:t})})});I_.displayName=P_;var O_="TabsTrigger",A_=y.forwardRef((e,t)=>{const{__scopeTabs:n,value:r,disabled:s=!1,...o}=e,l=Dx(O_,n),u=__(n),d=L_(l.baseId,r),f=$_(l.baseId,r),h=r===l.value;return a.jsx(MM,{asChild:!0,...u,focusable:!s,active:h,children:a.jsx(xt.button,{type:"button",role:"tab","aria-selected":h,"aria-controls":f,"data-state":h?"active":"inactive","data-disabled":s?"":void 0,disabled:s,id:d,...o,ref:t,onMouseDown:Ge(e.onMouseDown,m=>{!s&&m.button===0&&m.ctrlKey===!1?l.onValueChange(r):m.preventDefault()}),onKeyDown:Ge(e.onKeyDown,m=>{[" ","Enter"].includes(m.key)&&l.onValueChange(r)}),onFocus:Ge(e.onFocus,()=>{const m=l.activationMode!=="manual";!h&&!s&&m&&l.onValueChange(r)})})})});A_.displayName=O_;var D_="TabsContent",F_=y.forwardRef((e,t)=>{const{__scopeTabs:n,value:r,forceMount:s,children:o,...l}=e,u=Dx(D_,n),d=L_(u.baseId,r),f=$_(u.baseId,r),h=r===u.value,m=y.useRef(h);return y.useEffect(()=>{const g=requestAnimationFrame(()=>m.current=!1);return()=>cancelAnimationFrame(g)},[]),a.jsx(ta,{present:s||h,children:({present:g})=>a.jsx(xt.div,{"data-state":h?"active":"inactive","data-orientation":u.orientation,role:"tabpanel","aria-labelledby":d,hidden:!g,id:f,tabIndex:0,...l,ref:t,style:{...e.style,animationDuration:m.current?"0s":void 0},children:g&&o})})});F_.displayName=D_;function L_(e,t){return`${e}-trigger-${t}`}function $_(e,t){return`${e}-content-${t}`}var f6=R_,p6=I_,h6=A_,m6=F_;function Fx({className:e,...t}){return a.jsx(f6,{"data-slot":"tabs",className:kt("flex flex-col gap-2",e),...t})}function Lx({className:e,...t}){return a.jsx(p6,{"data-slot":"tabs-list",className:kt("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",e),...t})}function eh({className:e,...t}){return a.jsx(h6,{"data-slot":"tabs-trigger",className:kt("data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...t})}function th({className:e,...t}){return a.jsx(m6,{"data-slot":"tabs-content",className:kt("flex-1 outline-none",e),...t})}function Zo({className:e,...t}){return a.jsx("textarea",{"data-slot":"textarea",className:kt("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",e),...t})}const g6={reply:"sendButtons",cta:"sendButtons",pix:"sendButtons",list:"sendList",carousel:"sendCarousel"},ku={reply:{title:"Resposta Rápida",description:"Escolha uma das opções abaixo:",footer:"Evolution API",buttons:[{type:"reply",displayText:"✅ Confirmar",id:"opt_confirm"},{type:"reply",displayText:"❌ Cancelar",id:"opt_cancel"},{type:"reply",displayText:"🤔 Talvez",id:"opt_maybe"}]},cta:{title:"Botões CTA",description:"Botões de URL e copia-código (cta_url + cta_copy):",footer:"Máx. 2 botões CTA por mensagem",buttons:[{type:"url",displayText:"🌐 Abrir site",url:"https://example.com"},{type:"copy",displayText:"📋 Copiar PIX",copyCode:"00020126580014BR.GOV.BCB.PIX0136abc12345-6789-0000-aaaa-bbbbccccdddd5204000053039865802BR5913FULANO DE TAL6009SAO PAULO62070503***6304ABCD"}]},pix:{title:"Pagamento via PIX",description:"Toque para pagar via PIX (payment_info)",footer:"WhatsApp Pay",buttons:[{type:"pix",currency:"BRL",name:"Empresa Exemplo",keyType:"random",key:"abc12345-6789-0000-aaaa-bbbbccccdddd"}]},list:{title:"Cardápio de Teste",description:"Escolha um item abaixo",footerText:"Validade hoje",buttonText:"Ver opções",sections:[{title:"Bebidas",rows:[{title:"Coca-Cola",description:"Lata 350ml",rowId:"coca"},{title:"Suco de Laranja",description:"300ml natural",rowId:"suco"}]},{title:"Lanches",rows:[{title:"X-Burger",description:"Pão, carne 150g, queijo",rowId:"xburger"}]}]},carousel:{body:"Catálogo da semana",cards:[{body:"Produto A",footer:"R$ 99,90",imageUrl:"https://picsum.photos/seed/a/600/400",buttons:[{type:"url",displayText:"Comprar",url:"https://exemplo.com/a"}]},{body:"Produto B",footer:"R$ 149,90",imageUrl:"https://picsum.photos/seed/b/600/400",buttons:[{type:"url",displayText:"Comprar",url:"https://exemplo.com/b"}]},{body:"Produto C",footer:"R$ 199,90",imageUrl:"https://picsum.photos/seed/c/600/400",buttons:[{type:"reply",displayText:"Quero!",id:"prod_c"}]}]}};function v6({instance:e,open:t,onOpenChange:n}){const{t:r}=Fe(),[s,o]=y.useState("reply"),[l,u]=y.useState(""),[d,f]=y.useState(()=>({reply:JSON.stringify(ku.reply,null,2),cta:JSON.stringify(ku.cta,null,2),pix:JSON.stringify(ku.pix,null,2),list:JSON.stringify(ku.list,null,2),carousel:JSON.stringify(ku.carousel,null,2)})),[h,m]=y.useState(!1);y.useEffect(()=>{t||m(!1)},[t]);const g=y.useMemo(()=>`/message/${g6[s]}/${e.name}`,[s,e.name]),x=async()=>{const w=l.replace(/\D/g,"");if(!w){re.error(r("testInteractive.errors.missingNumber"));return}let C;try{C=JSON.parse(d[s])}catch(k){re.error(r("testInteractive.errors.invalidJson",{message:k.message}));return}C.number=w;try{m(!0);const k=await je.post(g,C,{headers:{apikey:e.token}}),N=k.data?.key?.id||k.data?.messageId||"ok";re.success(r("testInteractive.success",{id:N})),n(!1)}catch(k){const N=k?.response?.data?.response?.message||k?.response?.data?.message||k?.message||r("testInteractive.errors.unknown");re.error(Array.isArray(N)?N.join("; "):N)}finally{m(!1)}},b=[{key:"reply",label:r("testInteractive.tabs.reply")},{key:"cta",label:r("testInteractive.tabs.cta")},{key:"pix",label:r("testInteractive.tabs.pix")},{key:"list",label:r("testInteractive.tabs.list")},{key:"carousel",label:r("testInteractive.tabs.carousel")}];return a.jsx(gt,{open:t,onOpenChange:w=>!h&&n(w),children:a.jsxs(pt,{className:"max-w-2xl",children:[a.jsx(ht,{children:a.jsx(bt,{children:r("testInteractive.title")})}),a.jsxs("div",{className:"space-y-4",children:[a.jsxs("p",{className:"text-xs text-muted-foreground",children:[r("testInteractive.subtitle",{instance:e.name})," ",a.jsxs("code",{className:"rounded bg-muted px-1 py-0.5 text-[11px]",children:["POST ",g]})]}),a.jsxs(Fx,{value:s,onValueChange:w=>o(w),children:[a.jsx(Lx,{className:"grid w-full grid-cols-5",children:b.map(w=>a.jsx(eh,{value:w.key,children:w.label},w.key))}),b.map(w=>a.jsxs(th,{value:w.key,className:"space-y-3",children:[a.jsxs("div",{className:"space-y-1",children:[a.jsx(Ue,{htmlFor:"ti-number",children:r("testInteractive.number")}),a.jsx(X,{id:"ti-number",placeholder:"5511999999999",value:l,onChange:C=>u(C.target.value)}),a.jsx("p",{className:"text-[11px] text-muted-foreground",children:r("testInteractive.numberHint")})]}),a.jsxs("div",{className:"space-y-1",children:[a.jsx(Ue,{htmlFor:"ti-payload",children:r("testInteractive.payload")}),a.jsx(Zo,{id:"ti-payload",rows:12,className:"font-mono text-xs",value:d[w.key],onChange:C=>f(k=>({...k,[w.key]:C.target.value}))})]})]},w.key))]}),a.jsxs("div",{className:"flex justify-end gap-2 pt-2",children:[a.jsx(q,{variant:"outline",onClick:()=>n(!1),disabled:h,children:r("button.cancel")}),a.jsx(q,{onClick:x,disabled:h,children:r(h?"testInteractive.sending":"testInteractive.send")})]})]})]})})}const y6=({status:e})=>{const{t}=Fe();return e==="open"?a.jsx(_o,{className:"bg-green-500/10 text-green-500 hover:bg-green-500/20",children:t("status.open")}):e==="connecting"?a.jsx(_o,{className:"bg-yellow-500/10 text-yellow-500 hover:bg-yellow-500/20",children:t("status.connecting")}):a.jsx(_o,{className:"bg-red-500/10 text-red-500 hover:bg-red-500/20",children:t("status.closed")})};function b6({instance:e,isDeleting:t,onDelete:n}){const{t:r,i18n:s}=Fe(),o=jn(),[l,u]=y.useState(!1),d=new Intl.NumberFormat(s.language),f=e.profileName||e.name,h=()=>o(`/manager/instance/${e.id}/dashboard`),m=e.connectionStatus==="open";return a.jsxs(Bn,{className:"group relative overflow-hidden border-sidebar-border bg-sidebar transition-all duration-300 hover:bg-sidebar-accent/30 hover:shadow-lg hover:shadow-black/10",children:[a.jsxs(zn,{className:"p-0",children:[a.jsxs("button",{type:"button",onClick:h,className:"flex w-full items-center gap-3 border-b border-sidebar-border p-4 text-left",children:[e.profilePicUrl?a.jsx("div",{className:"flex-shrink-0",children:a.jsx("div",{className:"flex h-14 w-14 items-center justify-center overflow-hidden rounded-lg bg-muted",children:a.jsx("img",{src:e.profilePicUrl,alt:f,className:"h-12 w-12 rounded-lg object-cover",onError:g=>{g.target.style.display="none"}})})}):a.jsx("div",{className:"flex h-14 w-14 flex-shrink-0 items-center justify-center rounded-lg bg-muted text-lg font-semibold text-muted-foreground",children:f.slice(0,2).toUpperCase()}),a.jsxs("div",{className:"min-w-0 flex-1",children:[a.jsx("h3",{className:"truncate text-base font-semibold text-sidebar-foreground",children:f}),a.jsx("p",{className:"truncate text-xs text-sidebar-foreground/60",children:e.name})]}),a.jsx("div",{className:"flex-shrink-0",children:a.jsx(y6,{status:e.connectionStatus})})]}),a.jsxs("div",{className:"space-y-1 px-4 py-3 text-xs text-sidebar-foreground/70",children:[e.ownerJid&&a.jsxs("div",{className:"flex items-center justify-between",children:[a.jsx("span",{children:r("dashboard.card.phone",{defaultValue:"Número"})}),a.jsx("span",{className:"ml-2 truncate font-mono",children:e.ownerJid.split("@")[0]})]}),a.jsxs("div",{className:"flex items-center justify-between",children:[a.jsx("span",{children:r("instance.dashboard.contacts")}),a.jsx("span",{className:"font-mono",children:d.format(e._count?.Contact||0)})]}),a.jsxs("div",{className:"flex items-center justify-between",children:[a.jsx("span",{children:r("instance.dashboard.messages")}),a.jsx("span",{className:"font-mono",children:d.format(e._count?.Message||0)})]})]}),a.jsxs("div",{className:"flex border-t border-sidebar-border opacity-0 transition-opacity duration-200 group-hover:opacity-100",children:[a.jsxs(q,{variant:"ghost",className:"h-12 flex-1 rounded-none text-muted-foreground hover:bg-accent hover:text-foreground",onClick:h,children:[a.jsx(ez,{className:"mr-2 h-4 w-4"}),r("dashboard.settings")]}),a.jsx("div",{className:"w-px bg-sidebar-border"}),a.jsx(q,{variant:"ghost",className:"h-12 rounded-none px-4 text-muted-foreground hover:bg-accent hover:text-foreground disabled:opacity-40",disabled:!m,title:r(m?"testInteractive.title":"testInteractive.requiresOpen"),onClick:()=>u(!0),children:a.jsx($B,{className:"h-4 w-4"})}),a.jsx("div",{className:"w-px bg-sidebar-border"}),a.jsx(q,{variant:"ghost",className:"h-12 rounded-none px-4 text-red-500 hover:bg-red-500/10 hover:text-red-400",disabled:t,onClick:()=>n(e),children:a.jsx(HT,{className:"h-4 w-4"})})]})]}),a.jsx(v6,{instance:e,open:l,onOpenChange:u})]})}const x6=["instance","fetchInstances","go"],w6=async()=>((await Dn.get("/instance/all")).data?.data??[]).map(ZT),S6=e=>vt({refetchInterval:5e3,...e,queryKey:x6,queryFn:()=>w6()}),C6=["instance","fetchInstances"],j6=async()=>(await Dn.get("/instance/fetchInstances")).data,k6=e=>vt({...e,queryKey:C6,queryFn:()=>j6()}),E6=e=>{const t=Fr(),n=k6({...e,enabled:t==="api"}),r=S6({...e,enabled:t==="go"});return t==="go"?r:n},N6=e=>({rejectCall:e.rejectCall,msgCall:e.msgRejectCall,groupsIgnore:e.ignoreGroups,alwaysOnline:e.alwaysOnline,readMessages:e.readMessages,readStatus:!e.ignoreStatus,syncFullHistory:!1}),T6=e=>({alwaysOnline:e.alwaysOnline,rejectCall:e.rejectCall,msgRejectCall:e.msgCall??"",readMessages:e.readMessages,ignoreGroups:e.groupsIgnore,ignoreStatus:!e.readStatus}),M6=e=>["instance","fetchSettings","go",JSON.stringify(e)],_6=(e,t)=>{const r=e.getQueryData(["instance","fetchInstances","go"])?.find(o=>o.name===t);if(r)return r.id;const s=e.getQueriesData({queryKey:["instance","fetchInstance","go"]});for(const[,o]of s)if(o?.name===t)return o.id},R6=e=>{const t=qa(),{instanceName:n,token:r,enabled:s,...o}=e;return vt({...o,queryKey:M6({instanceName:n,token:r}),queryFn:async()=>{const l=_6(t,n);if(!l)throw new Error(`Instance "${n}" not found in cache`);const u=await Dn.get(`/instance/${l}/advanced-settings`,{headers:{apikey:r}}),d=u.data?.data??u.data;return N6(d)},enabled:!!n&&(s??!0),retry:!1})},Eu=(e,t)=>{const r=e.getQueryData(["instance","fetchInstances","go"])?.find(o=>o.name===t);if(r)return r;const s=e.getQueriesData({queryKey:["instance","fetchInstance","go"]});for(const[,o]of s)if(o?.name===t)return o},P6=e=>({createInstance:async u=>{const d={name:u.instanceName,token:u.token??void 0};return u.proxy?.host&&u.proxy?.port&&(d.proxy={host:u.proxy.host,port:u.proxy.port,username:u.proxy.username??"",password:u.proxy.password??""}),(await Dn.post("/instance/create",d)).data},restart:async u=>{const d=Eu(e,u);if(!d)throw new Error(`Instance "${u}" not found in cache`);return(await Dn.post("/instance/reconnect",{},{headers:{apikey:d.token}})).data},logout:async u=>{const d=Eu(e,u);if(!d)throw new Error(`Instance "${u}" not found in cache`);return(await Dn.delete("/instance/logout",{headers:{apikey:d.token}})).data},deleteInstance:async u=>{const d=Eu(e,u);if(!d)throw new Error(`Instance "${u}" not found in cache`);return(await Dn.delete(`/instance/delete/${d.id}`)).data},connect:async({instanceName:u,token:d,number:f})=>{const m=Eu(e,u)?.token??d;if(!m)throw new Error(`Instance "${u}" not found in cache`);const g={webhookUrl:"",subscribe:[],rabbitmqEnable:"",websocketEnable:"",natsEnable:""};try{await Dn.post("/instance/connect",g,{headers:{apikey:m}})}catch{}await new Promise(C=>setTimeout(C,1e3));const x=C=>C?C.startsWith("data:")?C:`data:image/png;base64,${C}`:"",b=async()=>{try{const C=await Dn.get("/instance/qr",{headers:{apikey:m}}),k=C.data?.data??C.data;return{code:k?.Code??k?.code??"",base64:x(k?.Qrcode??k?.qrcode??"")}}catch{return{code:"",base64:""}}};if(f){let C=f.trim();C.startsWith("+")||(C=`+${C}`);const k=await Dn.post("/instance/pair",{subscribe:[],phone:C},{headers:{apikey:m}}),N=k.data?.data??k.data,T=N?.PairingCode??N?.pairingCode??"";return{...await b(),pairingCode:T}}return{...await b(),pairingCode:""}},updateSettings:async({instanceName:u,token:d,data:f})=>{const h=Eu(e,u);if(!h)throw new Error(`Instance "${u}" not found in cache`);return(await Dn.put(`/instance/${h.id}/advanced-settings`,T6(f),{headers:{apikey:d}})).data}});function it(e,t){const n=qa(),r=kD({mutationFn:e});return(s,o)=>r.mutateAsync(s,{onSuccess:async(l,u,d)=>{t?.invalidateKeys&&await Promise.all(t.invalidateKeys.map(f=>n.invalidateQueries({queryKey:f}))),o?.onSuccess?.(l,u,d)},onError(l,u,d){o?.onError?.(l,u,d)},onSettled(l,u,d,f){o?.onSettled?.(l,u,d,f)}})}const I6=async e=>(await Dn.post("/instance/create",e)).data,O6=async e=>(await je.post(`/instance/restart/${e}`)).data,A6=async e=>(await je.delete(`/instance/logout/${e}`)).data,D6=async e=>(await Dn.delete(`/instance/delete/${e}`)).data,F6=async({instanceName:e,token:t,number:n})=>(await je.get(`/instance/connect/${e}`,{headers:{apikey:t},params:{number:n}})).data,L6=async({instanceName:e,token:t,data:n})=>(await je.post(`/settings/set/${e}`,n,{headers:{apikey:t}})).data;function Cc(){const e=qa(),n=Fr()==="go"?P6(e):null,r=it(n?n.connect:F6,{invalidateKeys:[["instance","fetchInstance"],["instance","fetchInstances"]]}),s=it(n?n.updateSettings:L6,{invalidateKeys:[["instance","fetchSettings"]]}),o=it(n?n.deleteInstance:D6,{invalidateKeys:[["instance","fetchInstance"],["instance","fetchInstances"]]}),l=it(n?n.logout:A6,{invalidateKeys:[["instance","fetchInstance"],["instance","fetchInstances"]]}),u=it(n?n.restart:O6,{invalidateKeys:[["instance","fetchInstance"],["instance","fetchInstances"]]}),d=it(n?n.createInstance:I6,{invalidateKeys:[["instance","fetchInstances"]]});return{connect:r,updateSettings:s,deleteInstance:o,logout:l,restart:u,createInstance:d}}var Cd=e=>e.type==="checkbox",Ri=e=>e instanceof Date,Gr=e=>e==null;const B_=e=>typeof e=="object";var Un=e=>!Gr(e)&&!Array.isArray(e)&&B_(e)&&!Ri(e),z_=e=>Un(e)&&e.target?Cd(e.target)?e.target.checked:e.target.value:e,U_=(e,t)=>t.split(".").some((n,r,s)=>!isNaN(Number(n))&&e.has(s.slice(0,r).join("."))),$6=e=>{const t=e.constructor&&e.constructor.prototype;return Un(t)&&t.hasOwnProperty("isPrototypeOf")},$x=typeof window<"u"&&typeof window.HTMLElement<"u"&&typeof document<"u";function Wn(e){if(e instanceof Date)return new Date(e);const t=typeof FileList<"u"&&e instanceof FileList;if($x&&(e instanceof Blob||t))return e;const n=Array.isArray(e);if(!n&&!(Un(e)&&$6(e)))return e;const r=n?[]:Object.create(Object.getPrototypeOf(e));for(const s in e)Object.prototype.hasOwnProperty.call(e,s)&&(r[s]=Wn(e[s]));return r}var Yh=e=>/^\w*$/.test(e),Tn=e=>e===void 0,Bx=e=>Array.isArray(e)?e.filter(Boolean):[],zx=e=>Bx(e.replace(/["|']|\]/g,"").split(/\.|\[/)),Le=(e,t,n)=>{if(!t||!Un(e))return n;const r=(Yh(t)?[t]:zx(t)).reduce((s,o)=>Gr(s)?s:s[o],e);return Tn(r)||r===e?Tn(e[t])?n:e[t]:r},cs=e=>typeof e=="boolean",Ar=e=>typeof e=="function",an=(e,t,n)=>{let r=-1;const s=Yh(t)?[t]:zx(t),o=s.length,l=o-1;for(;++rOe.useContext(Ux);var q_=(e,t,n,r=!0)=>{const s={defaultValues:t._defaultValues};for(const o in e)Object.defineProperty(s,o,{get:()=>{const l=o;return t._proxyFormState[l]!==qs.all&&(t._proxyFormState[l]=!r||qs.all),n&&(n[l]=!0),e[l]}});return s};const qx=typeof window<"u"?Oe.useLayoutEffect:Oe.useEffect;function B6(e){const t=Vx(),{control:n=t,disabled:r,name:s,exact:o}=e||{},[l,u]=Oe.useState(n._formState),d=Oe.useRef({isDirty:!1,isLoading:!1,dirtyFields:!1,touchedFields:!1,validatingFields:!1,isValidating:!1,isValid:!1,errors:!1});return qx(()=>n._subscribe({name:s,formState:d.current,exact:o,callback:f=>{!r&&u({...n._formState,...f})}}),[s,r,o]),Oe.useEffect(()=>{d.current.isValid&&n._setValid(!0)},[n]),Oe.useMemo(()=>q_(l,n,d.current,!1),[l,n])}var Dr=e=>typeof e=="string",ab=(e,t,n,r,s)=>Dr(e)?(r&&t.watch.add(e),Le(n,e,s)):Array.isArray(e)?e.map(o=>(r&&t.watch.add(o),Le(n,o))):(r&&(t.watchAll=!0),n),ob=e=>Gr(e)||!B_(e);function Hs(e,t,n=new WeakSet){if(ob(e)||ob(t))return Object.is(e,t);if(Ri(e)&&Ri(t))return Object.is(e.getTime(),t.getTime());const r=Object.keys(e),s=Object.keys(t);if(r.length!==s.length)return!1;if(n.has(e)||n.has(t))return!0;n.add(e),n.add(t);for(const o of r){const l=e[o];if(!s.includes(o))return!1;if(o!=="ref"){const u=t[o];if(Ri(l)&&Ri(u)||(Un(l)||Array.isArray(l))&&(Un(u)||Array.isArray(u))?!Hs(l,u,n):!Object.is(l,u))return!1}}return!0}function z6(e){const t=Vx(),{control:n=t,name:r,defaultValue:s,disabled:o,exact:l,compute:u}=e||{},d=Oe.useRef(s),f=Oe.useRef(u),h=Oe.useRef(void 0),m=Oe.useRef(n),g=Oe.useRef(r);f.current=u;const[x,b]=Oe.useState(()=>{const _=n._getWatch(r,d.current);return f.current?f.current(_):_}),w=Oe.useCallback(_=>{const I=ab(r,n._names,_||n._formValues,!1,d.current);return f.current?f.current(I):I},[n._formValues,n._names,r]),C=Oe.useCallback(_=>{if(!o){const I=ab(r,n._names,_||n._formValues,!1,d.current);if(f.current){const M=f.current(I);Hs(M,h.current)||(b(M),h.current=M)}else b(I)}},[n._formValues,n._names,o,r]);qx(()=>((m.current!==n||!Hs(g.current,r))&&(m.current=n,g.current=r,C()),n._subscribe({name:r,formState:{values:!0},exact:l,callback:_=>{C(_.values)}})),[n,l,r,C]),Oe.useEffect(()=>n._removeUnmounted());const k=m.current!==n,N=g.current,T=Oe.useMemo(()=>{if(o)return null;const _=!k&&!Hs(N,r);return k||_?w():null},[o,k,r,N,w]);return T!==null?T:x}function U6(e){const t=Vx(),{name:n,disabled:r,control:s=t,shouldUnregister:o,defaultValue:l,exact:u=!0}=e,d=U_(s._names.array,n),f=Oe.useMemo(()=>Le(s._formValues,n,Le(s._defaultValues,n,l)),[s,n,l]),h=z6({control:s,name:n,defaultValue:f,exact:u}),m=B6({control:s,name:n,exact:u}),g=Oe.useRef(e),x=Oe.useRef(void 0),b=Oe.useRef(s.register(n,{...e.rules,value:h,...cs(e.disabled)?{disabled:e.disabled}:{}}));g.current=e;const w=Oe.useMemo(()=>Object.defineProperties({},{invalid:{enumerable:!0,get:()=>!!Le(m.errors,n)},isDirty:{enumerable:!0,get:()=>!!Le(m.dirtyFields,n)},isTouched:{enumerable:!0,get:()=>!!Le(m.touchedFields,n)},isValidating:{enumerable:!0,get:()=>!!Le(m.validatingFields,n)},error:{enumerable:!0,get:()=>Le(m.errors,n)}}),[m,n]),C=Oe.useCallback(_=>b.current.onChange({target:{value:z_(_),name:n},type:Eo.CHANGE}),[n]),k=Oe.useCallback(()=>b.current.onBlur({target:{value:Le(s._formValues,n),name:n},type:Eo.BLUR}),[n,s._formValues]),N=Oe.useCallback(_=>{const I=Le(s._fields,n);I&&I._f&&_&&(I._f.ref={focus:()=>Ar(_.focus)&&_.focus(),select:()=>Ar(_.select)&&_.select(),setCustomValidity:M=>Ar(_.setCustomValidity)&&_.setCustomValidity(M),reportValidity:()=>Ar(_.reportValidity)&&_.reportValidity()})},[s._fields,n]),T=Oe.useMemo(()=>({name:n,value:h,...cs(r)||m.disabled?{disabled:m.disabled||r}:{},onChange:C,onBlur:k,ref:N}),[n,r,m.disabled,C,k,N,h]);return Oe.useEffect(()=>{const _=s._options.shouldUnregister||o,I=x.current;I&&I!==n&&!d&&s.unregister(I),s.register(n,{...g.current.rules,...cs(g.current.disabled)?{disabled:g.current.disabled}:{}});const M=(A,O)=>{const F=Le(s._fields,A);F&&F._f&&(F._f.mount=O)};if(M(n,!0),_){const A=Wn(Le(s._options.defaultValues,n,g.current.defaultValue));an(s._defaultValues,n,A),Tn(Le(s._formValues,n))&&an(s._formValues,n,A)}return!d&&s.register(n),x.current=n,()=>{(d?_&&!s._state.action:_)?s.unregister(n):M(n,!1)}},[n,s,d,o]),Oe.useEffect(()=>{s._setDisabledField({disabled:r,name:n})},[r,n,s]),Oe.useMemo(()=>({field:T,formState:m,fieldState:w}),[T,m,w])}const V6=e=>e.render(U6(e)),Hx=Oe.createContext(null);Hx.displayName="HookFormContext";const q6=()=>Oe.useContext(Hx),hr=e=>{const{children:t,watch:n,getValues:r,getFieldState:s,setError:o,clearErrors:l,setValue:u,trigger:d,formState:f,resetField:h,reset:m,handleSubmit:g,unregister:x,control:b,register:w,setFocus:C,subscribe:k}=e,N=Oe.useMemo(()=>({watch:n,getValues:r,getFieldState:s,setError:o,clearErrors:l,setValue:u,trigger:d,formState:f,resetField:h,reset:m,handleSubmit:g,unregister:x,control:b,register:w,setFocus:C,subscribe:k}),[l,b,f,s,r,g,w,m,h,o,C,u,k,d,x,n]);return Oe.createElement(Hx.Provider,{value:N},Oe.createElement(Ux.Provider,{value:N.control},t))};var H_=(e,t,n,r,s)=>t?{...n[e],types:{...n[e]&&n[e].types?n[e].types:{},[r]:s||!0}}:{},Hu=e=>Array.isArray(e)?e:[e],F1=()=>{let e=[];return{get observers(){return e},next:s=>{for(const o of e)o.next&&o.next(s)},subscribe:s=>(e.push(s),{unsubscribe:()=>{e=e.filter(o=>o!==s)}}),unsubscribe:()=>{e=[]}}};function K_(e,t){const n={};for(const r in e)if(e.hasOwnProperty(r)){const s=e[r],o=t[r];if(s&&Un(s)&&o){const l=K_(s,o);Un(l)&&(n[r]=l)}else e[r]&&(n[r]=o)}return n}var Ir=e=>Un(e)&&!Object.keys(e).length,Kx=e=>e.type==="file",nh=e=>{if(!$x)return!1;const t=e?e.ownerDocument:0;return e instanceof(t&&t.defaultView?t.defaultView.HTMLElement:HTMLElement)},W_=e=>e.type==="select-multiple",Wx=e=>e.type==="radio",H6=e=>Wx(e)||Cd(e),Dv=e=>nh(e)&&e.isConnected;function K6(e,t){const n=t.slice(0,-1).length;let r=0;for(;r{for(const t in e)if(Ar(e[t]))return!0;return!1};function G_(e){return Array.isArray(e)||Un(e)&&!G6(e)}function ib(e,t={}){for(const n in e){const r=e[n];G_(r)?(t[n]=Array.isArray(r)?[]:{},ib(r,t[n])):Tn(r)||(t[n]=!0)}return t}function Lu(e,t,n){n||(n=ib(t));for(const r in e){const s=e[r];if(G_(s))Tn(t)||ob(n[r])?n[r]=ib(s,Array.isArray(s)?[]:{}):Lu(s,Gr(t)?{}:t[r],n[r]);else{const o=t[r];n[r]=!Hs(s,o)}}return n}const L1={value:!1,isValid:!1},$1={value:!0,isValid:!0};var J_=e=>{if(Array.isArray(e)){if(e.length>1){const t=e.filter(n=>n&&n.checked&&!n.disabled).map(n=>n.value);return{value:t,isValid:!!t.length}}return e[0].checked&&!e[0].disabled?e[0].attributes&&!Tn(e[0].attributes.value)?Tn(e[0].value)||e[0].value===""?$1:{value:e[0].value,isValid:!0}:$1:L1}return L1},Q_=(e,{valueAsNumber:t,valueAsDate:n,setValueAs:r})=>Tn(e)?e:t?e===""?NaN:e&&+e:n&&Dr(e)?new Date(e):r?r(e):e;const B1={isValid:!1,value:null};var Y_=e=>Array.isArray(e)?e.reduce((t,n)=>n&&n.checked&&!n.disabled?{isValid:!0,value:n.value}:t,B1):B1;function z1(e){const t=e.ref;return Kx(t)?t.files:Wx(t)?Y_(e.refs).value:W_(t)?[...t.selectedOptions].map(({value:n})=>n):Cd(t)?J_(e.refs).value:Q_(Tn(t.value)?e.ref.value:t.value,e)}var J6=e=>e.substring(0,e.search(/\.\d+(\.|$)/))||e,Q6=(e,t,n,r)=>{const s={};for(const o of e){const l=Le(t,o);l&&an(s,o,l._f)}return{criteriaMode:n,names:[...e],fields:s,shouldUseNativeValidation:r}},rh=e=>e instanceof RegExp,Nu=e=>Tn(e)?e:rh(e)?e.source:Un(e)?rh(e.value)?e.value.source:e.value:e,U1=e=>({isOnSubmit:!e||e===qs.onSubmit,isOnBlur:e===qs.onBlur,isOnChange:e===qs.onChange,isOnAll:e===qs.all,isOnTouch:e===qs.onTouched});const V1="AsyncFunction";var Y6=e=>!!e&&!!e.validate&&!!(Ar(e.validate)&&e.validate.constructor.name===V1||Un(e.validate)&&Object.values(e.validate).find(t=>t.constructor.name===V1)),Z6=e=>e.mount&&(e.required||e.min||e.max||e.maxLength||e.minLength||e.pattern||e.validate),q1=(e,t,n)=>!n&&(t.watchAll||t.watch.has(e)||[...t.watch].some(r=>e.startsWith(r)&&/^\.\w+/.test(e.slice(r.length))));const Ku=(e,t,n,r)=>{for(const s of n||Object.keys(e)){const o=Le(e,s);if(o){const{_f:l,...u}=o;if(l){if(l.refs&&l.refs[0]&&t(l.refs[0],s)&&!r)return!0;if(l.ref&&t(l.ref,l.name)&&!r)return!0;if(Ku(u,t))break}else if(Un(u)&&Ku(u,t))break}}};function H1(e,t,n){const r=Le(e,n);if(r||Yh(n))return{error:r,name:n};const s=n.split(".");for(;s.length;){const o=s.join("."),l=Le(t,o),u=Le(e,o);if(l&&!Array.isArray(l)&&n!==o)return{name:n};if(u&&u.type)return{name:o,error:u};if(u&&u.root&&u.root.type)return{name:`${o}.root`,error:u.root};s.pop()}return{name:n}}var X6=(e,t,n,r)=>{n(e);const{name:s,...o}=e;return Ir(o)||Object.keys(o).length>=Object.keys(t).length||Object.keys(o).find(l=>t[l]===(!r||qs.all))},e8=(e,t,n)=>!e||!t||e===t||Hu(e).some(r=>r&&(n?r===t:r.startsWith(t)||t.startsWith(r))),t8=(e,t,n,r,s)=>s.isOnAll?!1:!n&&s.isOnTouch?!(t||e):(n?r.isOnBlur:s.isOnBlur)?!e:(n?r.isOnChange:s.isOnChange)?e:!0,n8=(e,t)=>!Bx(Le(e,t)).length&&Gn(e,t),r8=(e,t,n)=>{const r=Hu(Le(e,n));return an(r,V_,t[n]),an(e,n,r),e};function K1(e,t,n="validate"){if(Dr(e)||Array.isArray(e)&&e.every(Dr)||cs(e)&&!e)return{type:n,message:Dr(e)?e:"",ref:t}}var Ol=e=>Un(e)&&!rh(e)?e:{value:e,message:""},W1=async(e,t,n,r,s,o)=>{const{ref:l,refs:u,required:d,maxLength:f,minLength:h,min:m,max:g,pattern:x,validate:b,name:w,valueAsNumber:C,mount:k}=e._f,N=Le(n,w);if(!k||t.has(w))return{};const T=u?u[0]:l,_=B=>{s&&T.reportValidity&&(T.setCustomValidity(cs(B)?"":B||""),T.reportValidity())},I={},M=Wx(l),A=Cd(l),O=M||A,F=(C||Kx(l))&&Tn(l.value)&&Tn(N)||nh(l)&&l.value===""||N===""||Array.isArray(N)&&!N.length,z=H_.bind(null,w,r,I),Z=(B,ce,H,oe=$s.maxLength,Q=$s.minLength)=>{const ne=B?ce:H;I[w]={type:B?oe:Q,message:ne,ref:l,...z(B?oe:Q,ne)}};if(o?!Array.isArray(N)||!N.length:d&&(!O&&(F||Gr(N))||cs(N)&&!N||A&&!J_(u).isValid||M&&!Y_(u).isValid)){const{value:B,message:ce}=Dr(d)?{value:!!d,message:d}:Ol(d);if(B&&(I[w]={type:$s.required,message:ce,ref:T,...z($s.required,ce)},!r))return _(ce),I}if(!F&&(!Gr(m)||!Gr(g))){let B,ce;const H=Ol(g),oe=Ol(m);if(!Gr(N)&&!isNaN(N)){const Q=l.valueAsNumber||N&&+N;Gr(H.value)||(B=Q>H.value),Gr(oe.value)||(ce=Qnew Date(new Date().toDateString()+" "+U),V=l.type=="time",K=l.type=="week";Dr(H.value)&&N&&(B=V?ne(N)>ne(H.value):K?N>H.value:Q>new Date(H.value)),Dr(oe.value)&&N&&(ce=V?ne(N)+B.value,oe=!Gr(ce.value)&&N.length<+ce.value;if((H||oe)&&(Z(H,B.message,ce.message),!r))return _(I[w].message),I}if(x&&!F&&Dr(N)){const{value:B,message:ce}=Ol(x);if(rh(B)&&!N.match(B)&&(I[w]={type:$s.pattern,message:ce,ref:l,...z($s.pattern,ce)},!r))return _(ce),I}if(b){if(Ar(b)){const B=await b(N,n),ce=K1(B,T);if(ce&&(I[w]={...ce,...z($s.validate,ce.message)},!r))return _(ce.message),I}else if(Un(b)){let B={};for(const ce in b){if(!Ir(B)&&!r)break;const H=K1(await b[ce](N,n),T,ce);H&&(B={...H,...z(ce,H.message)},_(H.message),r&&(I[w]=B))}if(!Ir(B)&&(I[w]={ref:T,...B},!r))return I}}return _(!0),I};const s8={mode:qs.onSubmit,reValidateMode:qs.onChange,shouldFocusError:!0};function a8(e={}){let t={...s8,...e},n={submitCount:0,isDirty:!1,isReady:!1,isLoading:Ar(t.defaultValues),isValidating:!1,isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,touchedFields:{},dirtyFields:{},validatingFields:{},errors:t.errors||{},disabled:t.disabled||!1},r={},s=Un(t.defaultValues)||Un(t.values)?Wn(t.defaultValues||t.values)||{}:{},o=t.shouldUnregister?{}:Wn(s),l={action:!1,mount:!1,watch:!1,keepIsValid:!1},u={mount:new Set,disabled:new Set,unMount:new Set,array:new Set,watch:new Set,registerName:new Set},d,f=0;const h={isDirty:!1,dirtyFields:!1,validatingFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1},m={...h};let g={...m};const x={array:F1(),state:F1()},b=t.criteriaMode===qs.all,w=$=>se=>{clearTimeout(f),f=setTimeout($,se)},C=async $=>{if(!l.keepIsValid&&!t.disabled&&(m.isValid||g.isValid||$)){let se;t.resolver?(se=Ir((await F()).errors),k()):se=await B({fields:r,onlyCheckValid:!0,eventType:Eo.VALID}),se!==n.isValid&&x.state.next({isValid:se})}},k=($,se)=>{!t.disabled&&(m.isValidating||m.validatingFields||g.isValidating||g.validatingFields)&&(($||Array.from(u.mount)).forEach(fe=>{fe&&(se?an(n.validatingFields,fe,se):Gn(n.validatingFields,fe))}),x.state.next({validatingFields:n.validatingFields,isValidating:!Ir(n.validatingFields)}))},N=$=>{const se=Lu(s,o),fe=J6($);an(n.dirtyFields,fe,Le(se,fe))},T=($,se=[],fe,Pe,_e=!0,Ne=!0)=>{if(Pe&&fe&&!t.disabled){if(l.action=!0,Ne&&Array.isArray(Le(r,$))){const Ie=fe(Le(r,$),Pe.argA,Pe.argB);_e&&an(r,$,Ie)}if(Ne&&Array.isArray(Le(n.errors,$))){const Ie=fe(Le(n.errors,$),Pe.argA,Pe.argB);_e&&an(n.errors,$,Ie),n8(n.errors,$)}if((m.touchedFields||g.touchedFields)&&Ne&&Array.isArray(Le(n.touchedFields,$))){const Ie=fe(Le(n.touchedFields,$),Pe.argA,Pe.argB);_e&&an(n.touchedFields,$,Ie)}(m.dirtyFields||g.dirtyFields)&&N($),x.state.next({name:$,isDirty:H($,se),dirtyFields:n.dirtyFields,errors:n.errors,isValid:n.isValid})}else an(o,$,se)},_=($,se)=>{an(n.errors,$,se),x.state.next({errors:n.errors})},I=$=>{n.errors=$,x.state.next({errors:n.errors,isValid:!1})},M=($,se,fe,Pe)=>{const _e=Le(r,$);if(_e){const Ne=Le(o,$,Tn(fe)?Le(s,$):fe);Tn(Ne)||Pe&&Pe.defaultChecked||se?an(o,$,se?Ne:z1(_e._f)):ne($,Ne),l.mount&&!l.action&&C()}},A=($,se,fe,Pe,_e)=>{let Ne=!1,Ie=!1;const ft={name:$};if(!t.disabled){if(!fe||Pe){(m.isDirty||g.isDirty)&&(Ie=n.isDirty,n.isDirty=ft.isDirty=H(),Ne=Ie!==ft.isDirty);const Et=Hs(Le(s,$),se);Ie=!!Le(n.dirtyFields,$),Et?Gn(n.dirtyFields,$):an(n.dirtyFields,$,!0),ft.dirtyFields=n.dirtyFields,Ne=Ne||(m.dirtyFields||g.dirtyFields)&&Ie!==!Et}if(fe){const Et=Le(n.touchedFields,$);Et||(an(n.touchedFields,$,fe),ft.touchedFields=n.touchedFields,Ne=Ne||(m.touchedFields||g.touchedFields)&&Et!==fe)}Ne&&_e&&x.state.next(ft)}return Ne?ft:{}},O=($,se,fe,Pe)=>{const _e=Le(n.errors,$),Ne=(m.isValid||g.isValid)&&cs(se)&&n.isValid!==se;if(t.delayError&&fe?(d=w(()=>_($,fe)),d(t.delayError)):(clearTimeout(f),d=null,fe?an(n.errors,$,fe):Gn(n.errors,$)),(fe?!Hs(_e,fe):_e)||!Ir(Pe)||Ne){const Ie={...Pe,...Ne&&cs(se)?{isValid:se}:{},errors:n.errors,name:$};n={...n,...Ie},x.state.next(Ie)}},F=async $=>(k($,!0),await t.resolver(o,t.context,Q6($||u.mount,r,t.criteriaMode,t.shouldUseNativeValidation))),z=async $=>{const{errors:se}=await F($);if(k($),$)for(const fe of $){const Pe=Le(se,fe);Pe?an(n.errors,fe,Pe):Gn(n.errors,fe)}else n.errors=se;return se},Z=async({name:$,eventType:se})=>{if(e.validate){const fe=await e.validate({formValues:o,formState:n,name:$,eventType:se});if(Un(fe))for(const Pe in fe)fe[Pe]&&ue(`${Av}.${Pe}`,{message:Dr(fe.message)?fe.message:"",type:$s.validate});else Dr(fe)||!fe?ue(Av,{message:fe||"",type:$s.validate}):ie(Av);return fe}return!0},B=async({fields:$,onlyCheckValid:se,name:fe,eventType:Pe,context:_e={valid:!0,runRootValidation:!1}})=>{if(e.validate&&(_e.runRootValidation=!0,!await Z({name:fe,eventType:Pe})&&(_e.valid=!1,se)))return _e.valid;for(const Ne in $){const Ie=$[Ne];if(Ie){const{_f:ft,...Et}=Ie;if(ft){const _n=u.array.has(ft.name),mn=Ie._f&&Y6(Ie._f);mn&&m.validatingFields&&k([ft.name],!0);const ke=await W1(Ie,u.disabled,o,b,t.shouldUseNativeValidation&&!se,_n);if(mn&&m.validatingFields&&k([ft.name]),ke[ft.name]&&(_e.valid=!1,se)||(!se&&(Le(ke,ft.name)?_n?r8(n.errors,ke,ft.name):an(n.errors,ft.name,ke[ft.name]):Gn(n.errors,ft.name)),e.shouldUseNativeValidation&&ke[ft.name]))break}!Ir(Et)&&await B({context:_e,onlyCheckValid:se,fields:Et,name:Ne,eventType:Pe})}}return _e.valid},ce=()=>{for(const $ of u.unMount){const se=Le(r,$);se&&(se._f.refs?se._f.refs.every(fe=>!Dv(fe)):!Dv(se._f.ref))&&xe($)}u.unMount=new Set},H=($,se)=>!t.disabled&&($&&se&&an(o,$,se),!Hs(ae(),s)),oe=($,se,fe)=>ab($,u,{...l.mount?o:Tn(se)?s:Dr($)?{[$]:se}:se},fe,se),Q=$=>Bx(Le(l.mount?o:s,$,t.shouldUnregister?Le(s,$,[]):[])),ne=($,se,fe={})=>{const Pe=Le(r,$);let _e=se;if(Pe){const Ne=Pe._f;Ne&&(!Ne.disabled&&an(o,$,Q_(se,Ne)),_e=nh(Ne.ref)&&Gr(se)?"":se,W_(Ne.ref)?[...Ne.ref.options].forEach(Ie=>Ie.selected=_e.includes(Ie.value)):Ne.refs?Cd(Ne.ref)?Ne.refs.forEach(Ie=>{(!Ie.defaultChecked||!Ie.disabled)&&(Array.isArray(_e)?Ie.checked=!!_e.find(ft=>ft===Ie.value):Ie.checked=_e===Ie.value||!!_e)}):Ne.refs.forEach(Ie=>Ie.checked=Ie.value===_e):Kx(Ne.ref)?Ne.ref.value="":(Ne.ref.value=_e,Ne.ref.type||x.state.next({name:$,values:Wn(o)})))}(fe.shouldDirty||fe.shouldTouch)&&A($,_e,fe.shouldTouch,fe.shouldDirty,!0),fe.shouldValidate&&J($)},V=($,se,fe)=>{for(const Pe in se){if(!se.hasOwnProperty(Pe))return;const _e=se[Pe],Ne=$+"."+Pe,Ie=Le(r,Ne);(u.array.has($)||Un(_e)||Ie&&!Ie._f)&&!Ri(_e)?V(Ne,_e,fe):ne(Ne,_e,fe)}},K=($,se,fe={})=>{const Pe=Le(r,$),_e=u.array.has($),Ne=Wn(se);an(o,$,Ne),_e?(x.array.next({name:$,values:Wn(o)}),(m.isDirty||m.dirtyFields||g.isDirty||g.dirtyFields)&&fe.shouldDirty&&(N($),x.state.next({name:$,dirtyFields:n.dirtyFields,isDirty:H($,Ne)}))):Pe&&!Pe._f&&!Gr(Ne)?V($,Ne,fe):ne($,Ne,fe),q1($,u)?x.state.next({...n,name:$,values:Wn(o)}):x.state.next({name:l.mount?$:void 0,values:Wn(o)})},U=async $=>{l.mount=!0;const se=$.target;let fe=se.name,Pe=!0;const _e=Le(r,fe),Ne=Et=>{Pe=Number.isNaN(Et)||Ri(Et)&&isNaN(Et.getTime())||Hs(Et,Le(o,fe,Et))},Ie=U1(t.mode),ft=U1(t.reValidateMode);if(_e){let Et,_n;const mn=se.type?z1(_e._f):z_($),ke=$.type===Eo.BLUR||$.type===Eo.FOCUS_OUT,yt=!Z6(_e._f)&&!e.validate&&!t.resolver&&!Le(n.errors,fe)&&!_e._f.deps||t8(ke,Le(n.touchedFields,fe),n.isSubmitted,ft,Ie),Bt=q1(fe,u,ke);an(o,fe,mn),ke?(!se||!se.readOnly)&&(_e._f.onBlur&&_e._f.onBlur($),d&&d(0)):_e._f.onChange&&_e._f.onChange($);const kn=A(fe,mn,ke),gr=!Ir(kn)||Bt;if(!ke&&x.state.next({name:fe,type:$.type,values:Wn(o)}),yt)return(m.isValid||g.isValid)&&(t.mode==="onBlur"?ke&&C():ke||C()),gr&&x.state.next({name:fe,...Bt?{}:kn});if(!t.resolver&&e.validate&&await Z({name:fe,eventType:$.type}),!ke&&Bt&&x.state.next({...n}),t.resolver){const{errors:ur}=await F([fe]);if(k([fe]),Ne(mn),Pe){const zr=H1(n.errors,r,fe),Tr=H1(ur,r,zr.name||fe);Et=Tr.error,fe=Tr.name,_n=Ir(ur)}}else k([fe],!0),Et=(await W1(_e,u.disabled,o,b,t.shouldUseNativeValidation))[fe],k([fe]),Ne(mn),Pe&&(Et?_n=!1:(m.isValid||g.isValid)&&(_n=await B({fields:r,onlyCheckValid:!0,name:fe,eventType:$.type})));Pe&&(_e._f.deps&&(!Array.isArray(_e._f.deps)||_e._f.deps.length>0)&&J(_e._f.deps),O(fe,_n,Et,kn))}},D=($,se)=>{if(Le(n.errors,se)&&$.focus)return $.focus(),1},J=async($,se={})=>{let fe,Pe;const _e=Hu($);if(t.resolver){const Ne=await z(Tn($)?$:_e);fe=Ir(Ne),Pe=$?!_e.some(Ie=>Le(Ne,Ie)):fe}else $?(Pe=(await Promise.all(_e.map(async Ne=>{const Ie=Le(r,Ne);return await B({fields:Ie&&Ie._f?{[Ne]:Ie}:Ie,eventType:Eo.TRIGGER})}))).every(Boolean),!(!Pe&&!n.isValid)&&C()):Pe=fe=await B({fields:r,name:$,eventType:Eo.TRIGGER});return x.state.next({...!Dr($)||(m.isValid||g.isValid)&&fe!==n.isValid?{}:{name:$},...t.resolver||!$?{isValid:fe}:{},errors:n.errors}),se.shouldFocus&&!Pe&&Ku(r,D,$?_e:u.mount),Pe},ae=($,se)=>{let fe={...l.mount?o:s};return se&&(fe=K_(se.dirtyFields?n.dirtyFields:n.touchedFields,fe)),Tn($)?fe:Dr($)?Le(fe,$):$.map(Pe=>Le(fe,Pe))},ee=($,se)=>({invalid:!!Le((se||n).errors,$),isDirty:!!Le((se||n).dirtyFields,$),error:Le((se||n).errors,$),isValidating:!!Le(n.validatingFields,$),isTouched:!!Le((se||n).touchedFields,$)}),ie=$=>{const se=$?Hu($):void 0;se?.forEach(fe=>Gn(n.errors,fe)),se?se.forEach(fe=>{x.state.next({name:fe,errors:n.errors})}):x.state.next({errors:{}})},ue=($,se,fe)=>{const Pe=(Le(r,$,{_f:{}})._f||{}).ref,_e=Le(n.errors,$)||{},{ref:Ne,message:Ie,type:ft,...Et}=_e;an(n.errors,$,{...Et,...se,ref:Pe}),x.state.next({name:$,errors:n.errors,isValid:!1}),fe&&fe.shouldFocus&&Pe&&Pe.focus&&Pe.focus()},j=($,se)=>Ar($)?x.state.subscribe({next:fe=>"values"in fe&&$(oe(void 0,se),fe)}):oe($,se,!0),P=$=>x.state.subscribe({next:se=>{e8($.name,se.name,$.exact)&&X6(se,$.formState||m,Br,$.reRenderRoot)&&$.callback({values:{...o},...n,...se,defaultValues:s})}}).unsubscribe,pe=$=>(l.mount=!0,g={...g,...$.formState},P({...$,formState:{...h,...$.formState}})),xe=($,se={})=>{for(const fe of $?Hu($):u.mount)u.mount.delete(fe),u.array.delete(fe),se.keepValue||(Gn(r,fe),Gn(o,fe)),!se.keepError&&Gn(n.errors,fe),!se.keepDirty&&Gn(n.dirtyFields,fe),!se.keepTouched&&Gn(n.touchedFields,fe),!se.keepIsValidating&&Gn(n.validatingFields,fe),!t.shouldUnregister&&!se.keepDefaultValue&&Gn(s,fe);x.state.next({values:Wn(o)}),x.state.next({...n,...se.keepDirty?{isDirty:H()}:{}}),!se.keepIsValid&&C()},rt=({disabled:$,name:se})=>{if(cs($)&&l.mount||$||u.disabled.has(se)){const _e=u.disabled.has(se)!==!!$;$?u.disabled.add(se):u.disabled.delete(se),_e&&l.mount&&!l.action&&C()}},Je=($,se={})=>{let fe=Le(r,$);const Pe=cs(se.disabled)||cs(t.disabled),_e=!u.registerName.has($)&&fe&&!fe._f.mount;return an(r,$,{...fe||{},_f:{...fe&&fe._f?fe._f:{ref:{name:$}},name:$,mount:!0,...se}}),u.mount.add($),fe&&!_e?rt({disabled:cs(se.disabled)?se.disabled:t.disabled,name:$}):M($,!0,se.value),{...Pe?{disabled:se.disabled||t.disabled}:{},...t.progressive?{required:!!se.required,min:Nu(se.min),max:Nu(se.max),minLength:Nu(se.minLength),maxLength:Nu(se.maxLength),pattern:Nu(se.pattern)}:{},name:$,onChange:U,onBlur:U,ref:Ne=>{if(Ne){u.registerName.add($),Je($,se),u.registerName.delete($),fe=Le(r,$);const Ie=Tn(Ne.value)&&Ne.querySelectorAll&&Ne.querySelectorAll("input,select,textarea")[0]||Ne,ft=H6(Ie),Et=fe._f.refs||[];if(ft?Et.find(_n=>_n===Ie):Ie===fe._f.ref)return;an(r,$,{_f:{...fe._f,...ft?{refs:[...Et.filter(Dv),Ie,...Array.isArray(Le(s,$))?[{}]:[]],ref:{type:Ie.type,name:$}}:{ref:Ie}}}),M($,!1,void 0,Ie)}else fe=Le(r,$,{}),fe._f&&(fe._f.mount=!1),(t.shouldUnregister||se.shouldUnregister)&&!(U_(u.array,$)&&l.action)&&u.unMount.add($)}}},nt=()=>t.shouldFocusError&&Ku(r,D,u.mount),qt=$=>{cs($)&&(x.state.next({disabled:$}),Ku(r,(se,fe)=>{const Pe=Le(r,fe);Pe&&(se.disabled=Pe._f.disabled||$,Array.isArray(Pe._f.refs)&&Pe._f.refs.forEach(_e=>{_e.disabled=Pe._f.disabled||$}))},0,!1))},qn=($,se)=>async fe=>{let Pe;fe&&(fe.preventDefault&&fe.preventDefault(),fe.persist&&fe.persist());let _e=Wn(o);if(x.state.next({isSubmitting:!0}),t.resolver){const{errors:Ne,values:Ie}=await F();k(),n.errors=Ne,_e=Wn(Ie)}else await B({fields:r,eventType:Eo.SUBMIT});if(u.disabled.size)for(const Ne of u.disabled)Gn(_e,Ne);if(Gn(n.errors,V_),Ir(n.errors)){x.state.next({errors:{}});try{await $(_e,fe)}catch(Ne){Pe=Ne}}else se&&await se({...n.errors},fe),nt(),setTimeout(nt);if(x.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:Ir(n.errors)&&!Pe,submitCount:n.submitCount+1,errors:n.errors}),Pe)throw Pe},Mn=($,se={})=>{Le(r,$)&&(Tn(se.defaultValue)?K($,Wn(Le(s,$))):(K($,se.defaultValue),an(s,$,Wn(se.defaultValue))),se.keepTouched||Gn(n.touchedFields,$),se.keepDirty||(Gn(n.dirtyFields,$),n.isDirty=se.defaultValue?H($,Wn(Le(s,$))):H()),se.keepError||(Gn(n.errors,$),m.isValid&&C()),x.state.next({...n}))},tr=($,se={})=>{const fe=$?Wn($):s,Pe=Wn(fe),_e=Ir($),Ne=_e?s:Pe;if(se.keepDefaultValues||(s=fe),!se.keepValues){if(se.keepDirtyValues){const Ie=new Set([...u.mount,...Object.keys(Lu(s,o))]);for(const ft of Array.from(Ie)){const Et=Le(n.dirtyFields,ft),_n=Le(o,ft),mn=Le(Ne,ft);Et&&!Tn(_n)?an(Ne,ft,_n):!Et&&!Tn(mn)&&K(ft,mn)}}else{if($x&&Tn($))for(const Ie of u.mount){const ft=Le(r,Ie);if(ft&&ft._f){const Et=Array.isArray(ft._f.refs)?ft._f.refs[0]:ft._f.ref;if(nh(Et)){const _n=Et.closest("form");if(_n){_n.reset();break}}}}if(se.keepFieldsRef)for(const Ie of u.mount)K(Ie,Le(Ne,Ie));else r={}}o=t.shouldUnregister?se.keepDefaultValues?Wn(s):{}:Wn(Ne),x.array.next({values:{...Ne}}),x.state.next({values:{...Ne}})}u={mount:se.keepDirtyValues?u.mount:new Set,unMount:new Set,array:new Set,registerName:new Set,disabled:new Set,watch:new Set,watchAll:!1,focus:""},l.mount=!m.isValid||!!se.keepIsValid||!!se.keepDirtyValues||!t.shouldUnregister&&!Ir(Ne),l.watch=!!t.shouldUnregister,l.keepIsValid=!!se.keepIsValid,l.action=!1,se.keepErrors||(n.errors={}),x.state.next({submitCount:se.keepSubmitCount?n.submitCount:0,isDirty:_e?!1:se.keepDirty?n.isDirty:!!(se.keepDefaultValues&&!Hs($,s)),isSubmitted:se.keepIsSubmitted?n.isSubmitted:!1,dirtyFields:_e?{}:se.keepDirtyValues?se.keepDefaultValues&&o?Lu(s,o):n.dirtyFields:se.keepDefaultValues&&$?Lu(s,$):se.keepDirty?n.dirtyFields:{},touchedFields:se.keepTouched?n.touchedFields:{},errors:se.keepErrors?n.errors:{},isSubmitSuccessful:se.keepIsSubmitSuccessful?n.isSubmitSuccessful:!1,isSubmitting:!1,defaultValues:s})},yn=($,se)=>tr(Ar($)?$(o):$,{...t.resetOptions,...se}),$r=($,se={})=>{const fe=Le(r,$),Pe=fe&&fe._f;if(Pe){const _e=Pe.refs?Pe.refs[0]:Pe.ref;_e.focus&&setTimeout(()=>{_e.focus(),se.shouldSelect&&Ar(_e.select)&&_e.select()})}},Br=$=>{n={...n,...$}},Nr={control:{register:Je,unregister:xe,getFieldState:ee,handleSubmit:qn,setError:ue,_subscribe:P,_runSchema:F,_updateIsValidating:k,_focusError:nt,_getWatch:oe,_getDirty:H,_setValid:C,_setFieldArray:T,_setDisabledField:rt,_setErrors:I,_getFieldArray:Q,_reset:tr,_resetDefaultValues:()=>Ar(t.defaultValues)&&t.defaultValues().then($=>{yn($,t.resetOptions),x.state.next({isLoading:!1})}),_removeUnmounted:ce,_disableForm:qt,_subjects:x,_proxyFormState:m,get _fields(){return r},get _formValues(){return o},get _state(){return l},set _state($){l=$},get _defaultValues(){return s},get _names(){return u},set _names($){u=$},get _formState(){return n},get _options(){return t},set _options($){t={...t,...$}}},subscribe:pe,trigger:J,register:Je,handleSubmit:qn,watch:j,setValue:K,getValues:ae,reset:yn,resetField:Mn,clearErrors:ie,unregister:xe,setError:ue,setFocus:$r,getFieldState:ee};return{...Nr,formControl:Nr}}function fn(e={}){const t=Oe.useRef(void 0),n=Oe.useRef(void 0),[r,s]=Oe.useState({isDirty:!1,isValidating:!1,isLoading:Ar(e.defaultValues),isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,submitCount:0,dirtyFields:{},touchedFields:{},validatingFields:{},errors:e.errors||{},disabled:e.disabled||!1,isReady:!1,defaultValues:Ar(e.defaultValues)?void 0:e.defaultValues});if(!t.current)if(e.formControl)t.current={...e.formControl,formState:r},e.defaultValues&&!Ar(e.defaultValues)&&e.formControl.reset(e.defaultValues,e.resetOptions);else{const{formControl:l,...u}=a8(e);t.current={...u,formState:r}}const o=t.current.control;return o._options=e,qx(()=>{const l=o._subscribe({formState:o._proxyFormState,callback:()=>s({...o._formState}),reRenderRoot:!0});return s(u=>({...u,isReady:!0})),o._formState.isReady=!0,l},[o]),Oe.useEffect(()=>o._disableForm(e.disabled),[o,e.disabled]),Oe.useEffect(()=>{e.mode&&(o._options.mode=e.mode),e.reValidateMode&&(o._options.reValidateMode=e.reValidateMode)},[o,e.mode,e.reValidateMode]),Oe.useEffect(()=>{e.errors&&(o._setErrors(e.errors),o._focusError())},[o,e.errors]),Oe.useEffect(()=>{e.shouldUnregister&&o._subjects.state.next({values:o._getWatch()})},[o,e.shouldUnregister]),Oe.useEffect(()=>{if(o._proxyFormState.isDirty){const l=o._getDirty();l!==r.isDirty&&o._subjects.state.next({isDirty:l})}},[o,r.isDirty]),Oe.useEffect(()=>{var l;e.values&&!Hs(e.values,n.current)?(o._reset(e.values,{keepFieldsRef:!0,...o._options.resetOptions}),!((l=o._options.resetOptions)===null||l===void 0)&&l.keepIsValid||o._setValid(),n.current=e.values,s(u=>({...u}))):o._resetDefaultValues()},[o,e.values]),Oe.useEffect(()=>{o._state.mount||(o._setValid(),o._state.mount=!0),o._state.watch&&(o._state.watch=!1,o._subjects.state.next({...o._formState})),o._removeUnmounted()}),t.current.formState=Oe.useMemo(()=>q_(r,o),[o,r]),t.current}const G1=(e,t,n)=>{if(e&&"reportValidity"in e){const r=Le(n,t);e.setCustomValidity(r&&r.message||""),e.reportValidity()}},Z_=(e,t)=>{for(const n in t.fields){const r=t.fields[n];r&&r.ref&&"reportValidity"in r.ref?G1(r.ref,n,e):r.refs&&r.refs.forEach(s=>G1(s,n,e))}},o8=(e,t)=>{t.shouldUseNativeValidation&&Z_(e,t);const n={};for(const r in e){const s=Le(t.fields,r),o=Object.assign(e[r]||{},{ref:s&&s.ref});if(i8(t.names||Object.keys(e),r)){const l=Object.assign({},Le(n,r));an(l,"root",o),an(n,r,l)}else an(n,r,o)}return n},i8=(e,t)=>e.some(n=>n.startsWith(t+"."));var l8=function(e,t){for(var n={};e.length;){var r=e[0],s=r.code,o=r.message,l=r.path.join(".");if(!n[l])if("unionErrors"in r){var u=r.unionErrors[0].errors[0];n[l]={message:u.message,type:u.code}}else n[l]={message:o,type:s};if("unionErrors"in r&&r.unionErrors.forEach(function(h){return h.errors.forEach(function(m){return e.push(m)})}),t){var d=n[l].types,f=d&&d[r.code];n[l]=H_(l,t,n,s,f?[].concat(f,r.message):r.message)}e.shift()}return n},pn=function(e,t,n){return n===void 0&&(n={}),function(r,s,o){try{return Promise.resolve((function(l,u){try{var d=Promise.resolve(e[n.mode==="sync"?"parse":"parseAsync"](r,t)).then(function(f){return o.shouldUseNativeValidation&&Z_({},o),{errors:{},values:n.raw?r:f}})}catch(f){return u(f)}return d&&d.then?d.then(void 0,u):d})(0,function(l){if((function(u){return Array.isArray(u?.errors)})(l))return{values:{},errors:o8(l8(l.errors,!o.shouldUseNativeValidation&&o.criteriaMode==="all"),o)};throw l}))}catch(l){return Promise.reject(l)}}},pr=[];for(var Fv=0;Fv<256;++Fv)pr.push((Fv+256).toString(16).slice(1));function c8(e,t=0){return(pr[e[t+0]]+pr[e[t+1]]+pr[e[t+2]]+pr[e[t+3]]+"-"+pr[e[t+4]]+pr[e[t+5]]+"-"+pr[e[t+6]]+pr[e[t+7]]+"-"+pr[e[t+8]]+pr[e[t+9]]+"-"+pr[e[t+10]]+pr[e[t+11]]+pr[e[t+12]]+pr[e[t+13]]+pr[e[t+14]]+pr[e[t+15]]).toLowerCase()}var Wf,u8=new Uint8Array(16);function d8(){if(!Wf&&(Wf=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Wf))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Wf(u8)}var f8=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto);const J1={randomUUID:f8};function lb(e,t,n){if(J1.randomUUID&&!e)return J1.randomUUID();e=e||{};var r=e.random||(e.rng||d8)();return r[6]=r[6]&15|64,r[8]=r[8]&63|128,c8(r)}var Zt;(function(e){e.assertEqual=s=>{};function t(s){}e.assertIs=t;function n(s){throw new Error}e.assertNever=n,e.arrayToEnum=s=>{const o={};for(const l of s)o[l]=l;return o},e.getValidEnumValues=s=>{const o=e.objectKeys(s).filter(u=>typeof s[s[u]]!="number"),l={};for(const u of o)l[u]=s[u];return e.objectValues(l)},e.objectValues=s=>e.objectKeys(s).map(function(o){return s[o]}),e.objectKeys=typeof Object.keys=="function"?s=>Object.keys(s):s=>{const o=[];for(const l in s)Object.prototype.hasOwnProperty.call(s,l)&&o.push(l);return o},e.find=(s,o)=>{for(const l of s)if(o(l))return l},e.isInteger=typeof Number.isInteger=="function"?s=>Number.isInteger(s):s=>typeof s=="number"&&Number.isFinite(s)&&Math.floor(s)===s;function r(s,o=" | "){return s.map(l=>typeof l=="string"?`'${l}'`:l).join(o)}e.joinValues=r,e.jsonStringifyReplacer=(s,o)=>typeof o=="bigint"?o.toString():o})(Zt||(Zt={}));var Q1;(function(e){e.mergeShapes=(t,n)=>({...t,...n})})(Q1||(Q1={}));const Ye=Zt.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),No=e=>{switch(typeof e){case"undefined":return Ye.undefined;case"string":return Ye.string;case"number":return Number.isNaN(e)?Ye.nan:Ye.number;case"boolean":return Ye.boolean;case"function":return Ye.function;case"bigint":return Ye.bigint;case"symbol":return Ye.symbol;case"object":return Array.isArray(e)?Ye.array:e===null?Ye.null:e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?Ye.promise:typeof Map<"u"&&e instanceof Map?Ye.map:typeof Set<"u"&&e instanceof Set?Ye.set:typeof Date<"u"&&e instanceof Date?Ye.date:Ye.object;default:return Ye.unknown}},Me=Zt.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);class Va extends Error{get errors(){return this.issues}constructor(t){super(),this.issues=[],this.addIssue=r=>{this.issues=[...this.issues,r]},this.addIssues=(r=[])=>{this.issues=[...this.issues,...r]};const n=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,n):this.__proto__=n,this.name="ZodError",this.issues=t}format(t){const n=t||function(o){return o.message},r={_errors:[]},s=o=>{for(const l of o.issues)if(l.code==="invalid_union")l.unionErrors.map(s);else if(l.code==="invalid_return_type")s(l.returnTypeError);else if(l.code==="invalid_arguments")s(l.argumentsError);else if(l.path.length===0)r._errors.push(n(l));else{let u=r,d=0;for(;dn.message){const n={},r=[];for(const s of this.issues)if(s.path.length>0){const o=s.path[0];n[o]=n[o]||[],n[o].push(t(s))}else r.push(t(s));return{formErrors:r,fieldErrors:n}}get formErrors(){return this.flatten()}}Va.create=e=>new Va(e);const cb=(e,t)=>{let n;switch(e.code){case Me.invalid_type:e.received===Ye.undefined?n="Required":n=`Expected ${e.expected}, received ${e.received}`;break;case Me.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,Zt.jsonStringifyReplacer)}`;break;case Me.unrecognized_keys:n=`Unrecognized key(s) in object: ${Zt.joinValues(e.keys,", ")}`;break;case Me.invalid_union:n="Invalid input";break;case Me.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${Zt.joinValues(e.options)}`;break;case Me.invalid_enum_value:n=`Invalid enum value. Expected ${Zt.joinValues(e.options)}, received '${e.received}'`;break;case Me.invalid_arguments:n="Invalid function arguments";break;case Me.invalid_return_type:n="Invalid function return type";break;case Me.invalid_date:n="Invalid date";break;case Me.invalid_string:typeof e.validation=="object"?"includes"in e.validation?(n=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position=="number"&&(n=`${n} at one or more positions greater than or equal to ${e.validation.position}`)):"startsWith"in e.validation?n=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?n=`Invalid input: must end with "${e.validation.endsWith}"`:Zt.assertNever(e.validation):e.validation!=="regex"?n=`Invalid ${e.validation}`:n="Invalid";break;case Me.too_small:e.type==="array"?n=`Array must contain ${e.exact?"exactly":e.inclusive?"at least":"more than"} ${e.minimum} element(s)`:e.type==="string"?n=`String must contain ${e.exact?"exactly":e.inclusive?"at least":"over"} ${e.minimum} character(s)`:e.type==="number"?n=`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:e.type==="bigint"?n=`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:e.type==="date"?n=`Date must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(e.minimum))}`:n="Invalid input";break;case Me.too_big:e.type==="array"?n=`Array must contain ${e.exact?"exactly":e.inclusive?"at most":"less than"} ${e.maximum} element(s)`:e.type==="string"?n=`String must contain ${e.exact?"exactly":e.inclusive?"at most":"under"} ${e.maximum} character(s)`:e.type==="number"?n=`Number must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="bigint"?n=`BigInt must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="date"?n=`Date must be ${e.exact?"exactly":e.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(e.maximum))}`:n="Invalid input";break;case Me.custom:n="Invalid input";break;case Me.invalid_intersection_types:n="Intersection results could not be merged";break;case Me.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case Me.not_finite:n="Number must be finite";break;default:n=t.defaultError,Zt.assertNever(e)}return{message:n}};let p8=cb;function h8(){return p8}const m8=e=>{const{data:t,path:n,errorMaps:r,issueData:s}=e,o=[...n,...s.path||[]],l={...s,path:o};if(s.message!==void 0)return{...s,path:o,message:s.message};let u="";const d=r.filter(f=>!!f).slice().reverse();for(const f of d)u=f(l,{data:t,defaultError:u}).message;return{...s,path:o,message:u}};function ze(e,t){const n=h8(),r=m8({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,n,n===cb?void 0:cb].filter(s=>!!s)});e.common.issues.push(r)}class ps{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(t,n){const r=[];for(const s of n){if(s.status==="aborted")return Ct;s.status==="dirty"&&t.dirty(),r.push(s.value)}return{status:t.value,value:r}}static async mergeObjectAsync(t,n){const r=[];for(const s of n){const o=await s.key,l=await s.value;r.push({key:o,value:l})}return ps.mergeObjectSync(t,r)}static mergeObjectSync(t,n){const r={};for(const s of n){const{key:o,value:l}=s;if(o.status==="aborted"||l.status==="aborted")return Ct;o.status==="dirty"&&t.dirty(),l.status==="dirty"&&t.dirty(),o.value!=="__proto__"&&(typeof l.value<"u"||s.alwaysSet)&&(r[o.value]=l.value)}return{status:t.value,value:r}}}const Ct=Object.freeze({status:"aborted"}),$u=e=>({status:"dirty",value:e}),Rs=e=>({status:"valid",value:e}),Y1=e=>e.status==="aborted",Z1=e=>e.status==="dirty",ic=e=>e.status==="valid",sh=e=>typeof Promise<"u"&&e instanceof Promise;var tt;(function(e){e.errToObj=t=>typeof t=="string"?{message:t}:t||{},e.toString=t=>typeof t=="string"?t:t?.message})(tt||(tt={}));class $o{constructor(t,n,r,s){this._cachedPath=[],this.parent=t,this.data=n,this._path=r,this._key=s}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const X1=(e,t)=>{if(ic(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const n=new Va(e.common.issues);return this._error=n,this._error}}};function $t(e){if(!e)return{};const{errorMap:t,invalid_type_error:n,required_error:r,description:s}=e;if(t&&(n||r))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:s}:{errorMap:(l,u)=>{const{message:d}=e;return l.code==="invalid_enum_value"?{message:d??u.defaultError}:typeof u.data>"u"?{message:d??r??u.defaultError}:l.code!=="invalid_type"?{message:u.defaultError}:{message:d??n??u.defaultError}},description:s}}class Qt{get description(){return this._def.description}_getType(t){return No(t.data)}_getOrReturnCtx(t,n){return n||{common:t.parent.common,data:t.data,parsedType:No(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}_processInputParams(t){return{status:new ps,ctx:{common:t.parent.common,data:t.data,parsedType:No(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}}_parseSync(t){const n=this._parse(t);if(sh(n))throw new Error("Synchronous parse encountered promise.");return n}_parseAsync(t){const n=this._parse(t);return Promise.resolve(n)}parse(t,n){const r=this.safeParse(t,n);if(r.success)return r.data;throw r.error}safeParse(t,n){const r={common:{issues:[],async:n?.async??!1,contextualErrorMap:n?.errorMap},path:n?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:No(t)},s=this._parseSync({data:t,path:r.path,parent:r});return X1(r,s)}"~validate"(t){const n={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:No(t)};if(!this["~standard"].async)try{const r=this._parseSync({data:t,path:[],parent:n});return ic(r)?{value:r.value}:{issues:n.common.issues}}catch(r){r?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),n.common={issues:[],async:!0}}return this._parseAsync({data:t,path:[],parent:n}).then(r=>ic(r)?{value:r.value}:{issues:n.common.issues})}async parseAsync(t,n){const r=await this.safeParseAsync(t,n);if(r.success)return r.data;throw r.error}async safeParseAsync(t,n){const r={common:{issues:[],contextualErrorMap:n?.errorMap,async:!0},path:n?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:No(t)},s=this._parse({data:t,path:r.path,parent:r}),o=await(sh(s)?s:Promise.resolve(s));return X1(r,o)}refine(t,n){const r=s=>typeof n=="string"||typeof n>"u"?{message:n}:typeof n=="function"?n(s):n;return this._refinement((s,o)=>{const l=t(s),u=()=>o.addIssue({code:Me.custom,...r(s)});return typeof Promise<"u"&&l instanceof Promise?l.then(d=>d?!0:(u(),!1)):l?!0:(u(),!1)})}refinement(t,n){return this._refinement((r,s)=>t(r)?!0:(s.addIssue(typeof n=="function"?n(r,s):n),!1))}_refinement(t){return new uc({schema:this,typeName:jt.ZodEffects,effect:{type:"refinement",refinement:t}})}superRefine(t){return this._refinement(t)}constructor(t){this.spa=this.safeParseAsync,this._def=t,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:n=>this["~validate"](n)}}optional(){return Po.create(this,this._def)}nullable(){return dc.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return va.create(this)}promise(){return lh.create(this,this._def)}or(t){return oh.create([this,t],this._def)}and(t){return ih.create(this,t,this._def)}transform(t){return new uc({...$t(this._def),schema:this,typeName:jt.ZodEffects,effect:{type:"transform",transform:t}})}default(t){const n=typeof t=="function"?t:()=>t;return new fb({...$t(this._def),innerType:this,defaultValue:n,typeName:jt.ZodDefault})}brand(){return new L8({typeName:jt.ZodBranded,type:this,...$t(this._def)})}catch(t){const n=typeof t=="function"?t:()=>t;return new pb({...$t(this._def),innerType:this,catchValue:n,typeName:jt.ZodCatch})}describe(t){const n=this.constructor;return new n({...this._def,description:t})}pipe(t){return Gx.create(this,t)}readonly(){return hb.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const g8=/^c[^\s-]{8,}$/i,v8=/^[0-9a-z]+$/,y8=/^[0-9A-HJKMNP-TV-Z]{26}$/i,b8=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,x8=/^[a-z0-9_-]{21}$/i,w8=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,S8=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,C8=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,j8="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";let Lv;const k8=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,E8=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,N8=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,T8=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,M8=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,_8=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,X_="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",R8=new RegExp(`^${X_}$`);function eR(e){let t="[0-5]\\d";e.precision?t=`${t}\\.\\d{${e.precision}}`:e.precision==null&&(t=`${t}(\\.\\d+)?`);const n=e.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${n}`}function P8(e){return new RegExp(`^${eR(e)}$`)}function I8(e){let t=`${X_}T${eR(e)}`;const n=[];return n.push(e.local?"Z?":"Z"),e.offset&&n.push("([+-]\\d{2}:?\\d{2})"),t=`${t}(${n.join("|")})`,new RegExp(`^${t}$`)}function O8(e,t){return!!((t==="v4"||!t)&&k8.test(e)||(t==="v6"||!t)&&N8.test(e))}function A8(e,t){if(!w8.test(e))return!1;try{const[n]=e.split(".");if(!n)return!1;const r=n.replace(/-/g,"+").replace(/_/g,"/").padEnd(n.length+(4-n.length%4)%4,"="),s=JSON.parse(atob(r));return!(typeof s!="object"||s===null||"typ"in s&&s?.typ!=="JWT"||!s.alg||t&&s.alg!==t)}catch{return!1}}function D8(e,t){return!!((t==="v4"||!t)&&E8.test(e)||(t==="v6"||!t)&&T8.test(e))}class Aa extends Qt{_parse(t){if(this._def.coerce&&(t.data=String(t.data)),this._getType(t)!==Ye.string){const o=this._getOrReturnCtx(t);return ze(o,{code:Me.invalid_type,expected:Ye.string,received:o.parsedType}),Ct}const r=new ps;let s;for(const o of this._def.checks)if(o.kind==="min")t.data.lengtho.value&&(s=this._getOrReturnCtx(t,s),ze(s,{code:Me.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),r.dirty());else if(o.kind==="length"){const l=t.data.length>o.value,u=t.data.lengtht.test(s),{validation:n,code:Me.invalid_string,...tt.errToObj(r)})}_addCheck(t){return new Aa({...this._def,checks:[...this._def.checks,t]})}email(t){return this._addCheck({kind:"email",...tt.errToObj(t)})}url(t){return this._addCheck({kind:"url",...tt.errToObj(t)})}emoji(t){return this._addCheck({kind:"emoji",...tt.errToObj(t)})}uuid(t){return this._addCheck({kind:"uuid",...tt.errToObj(t)})}nanoid(t){return this._addCheck({kind:"nanoid",...tt.errToObj(t)})}cuid(t){return this._addCheck({kind:"cuid",...tt.errToObj(t)})}cuid2(t){return this._addCheck({kind:"cuid2",...tt.errToObj(t)})}ulid(t){return this._addCheck({kind:"ulid",...tt.errToObj(t)})}base64(t){return this._addCheck({kind:"base64",...tt.errToObj(t)})}base64url(t){return this._addCheck({kind:"base64url",...tt.errToObj(t)})}jwt(t){return this._addCheck({kind:"jwt",...tt.errToObj(t)})}ip(t){return this._addCheck({kind:"ip",...tt.errToObj(t)})}cidr(t){return this._addCheck({kind:"cidr",...tt.errToObj(t)})}datetime(t){return typeof t=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:t}):this._addCheck({kind:"datetime",precision:typeof t?.precision>"u"?null:t?.precision,offset:t?.offset??!1,local:t?.local??!1,...tt.errToObj(t?.message)})}date(t){return this._addCheck({kind:"date",message:t})}time(t){return typeof t=="string"?this._addCheck({kind:"time",precision:null,message:t}):this._addCheck({kind:"time",precision:typeof t?.precision>"u"?null:t?.precision,...tt.errToObj(t?.message)})}duration(t){return this._addCheck({kind:"duration",...tt.errToObj(t)})}regex(t,n){return this._addCheck({kind:"regex",regex:t,...tt.errToObj(n)})}includes(t,n){return this._addCheck({kind:"includes",value:t,position:n?.position,...tt.errToObj(n?.message)})}startsWith(t,n){return this._addCheck({kind:"startsWith",value:t,...tt.errToObj(n)})}endsWith(t,n){return this._addCheck({kind:"endsWith",value:t,...tt.errToObj(n)})}min(t,n){return this._addCheck({kind:"min",value:t,...tt.errToObj(n)})}max(t,n){return this._addCheck({kind:"max",value:t,...tt.errToObj(n)})}length(t,n){return this._addCheck({kind:"length",value:t,...tt.errToObj(n)})}nonempty(t){return this.min(1,tt.errToObj(t))}trim(){return new Aa({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new Aa({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new Aa({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(t=>t.kind==="datetime")}get isDate(){return!!this._def.checks.find(t=>t.kind==="date")}get isTime(){return!!this._def.checks.find(t=>t.kind==="time")}get isDuration(){return!!this._def.checks.find(t=>t.kind==="duration")}get isEmail(){return!!this._def.checks.find(t=>t.kind==="email")}get isURL(){return!!this._def.checks.find(t=>t.kind==="url")}get isEmoji(){return!!this._def.checks.find(t=>t.kind==="emoji")}get isUUID(){return!!this._def.checks.find(t=>t.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(t=>t.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(t=>t.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(t=>t.kind==="cuid2")}get isULID(){return!!this._def.checks.find(t=>t.kind==="ulid")}get isIP(){return!!this._def.checks.find(t=>t.kind==="ip")}get isCIDR(){return!!this._def.checks.find(t=>t.kind==="cidr")}get isBase64(){return!!this._def.checks.find(t=>t.kind==="base64")}get isBase64url(){return!!this._def.checks.find(t=>t.kind==="base64url")}get minLength(){let t=null;for(const n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t}get maxLength(){let t=null;for(const n of this._def.checks)n.kind==="max"&&(t===null||n.valuenew Aa({checks:[],typeName:jt.ZodString,coerce:e?.coerce??!1,...$t(e)});function F8(e,t){const n=(e.toString().split(".")[1]||"").length,r=(t.toString().split(".")[1]||"").length,s=n>r?n:r,o=Number.parseInt(e.toFixed(s).replace(".","")),l=Number.parseInt(t.toFixed(s).replace(".",""));return o%l/10**s}class zi extends Qt{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(t){if(this._def.coerce&&(t.data=Number(t.data)),this._getType(t)!==Ye.number){const o=this._getOrReturnCtx(t);return ze(o,{code:Me.invalid_type,expected:Ye.number,received:o.parsedType}),Ct}let r;const s=new ps;for(const o of this._def.checks)o.kind==="int"?Zt.isInteger(t.data)||(r=this._getOrReturnCtx(t,r),ze(r,{code:Me.invalid_type,expected:"integer",received:"float",message:o.message}),s.dirty()):o.kind==="min"?(o.inclusive?t.datao.value:t.data>=o.value)&&(r=this._getOrReturnCtx(t,r),ze(r,{code:Me.too_big,maximum:o.value,type:"number",inclusive:o.inclusive,exact:!1,message:o.message}),s.dirty()):o.kind==="multipleOf"?F8(t.data,o.value)!==0&&(r=this._getOrReturnCtx(t,r),ze(r,{code:Me.not_multiple_of,multipleOf:o.value,message:o.message}),s.dirty()):o.kind==="finite"?Number.isFinite(t.data)||(r=this._getOrReturnCtx(t,r),ze(r,{code:Me.not_finite,message:o.message}),s.dirty()):Zt.assertNever(o);return{status:s.value,value:t.data}}gte(t,n){return this.setLimit("min",t,!0,tt.toString(n))}gt(t,n){return this.setLimit("min",t,!1,tt.toString(n))}lte(t,n){return this.setLimit("max",t,!0,tt.toString(n))}lt(t,n){return this.setLimit("max",t,!1,tt.toString(n))}setLimit(t,n,r,s){return new zi({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:tt.toString(s)}]})}_addCheck(t){return new zi({...this._def,checks:[...this._def.checks,t]})}int(t){return this._addCheck({kind:"int",message:tt.toString(t)})}positive(t){return this._addCheck({kind:"min",value:0,inclusive:!1,message:tt.toString(t)})}negative(t){return this._addCheck({kind:"max",value:0,inclusive:!1,message:tt.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:0,inclusive:!0,message:tt.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:0,inclusive:!0,message:tt.toString(t)})}multipleOf(t,n){return this._addCheck({kind:"multipleOf",value:t,message:tt.toString(n)})}finite(t){return this._addCheck({kind:"finite",message:tt.toString(t)})}safe(t){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:tt.toString(t)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:tt.toString(t)})}get minValue(){let t=null;for(const n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t}get maxValue(){let t=null;for(const n of this._def.checks)n.kind==="max"&&(t===null||n.valuet.kind==="int"||t.kind==="multipleOf"&&Zt.isInteger(t.value))}get isFinite(){let t=null,n=null;for(const r of this._def.checks){if(r.kind==="finite"||r.kind==="int"||r.kind==="multipleOf")return!0;r.kind==="min"?(n===null||r.value>n)&&(n=r.value):r.kind==="max"&&(t===null||r.valuenew zi({checks:[],typeName:jt.ZodNumber,coerce:e?.coerce||!1,...$t(e)});class Ui extends Qt{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(t){if(this._def.coerce)try{t.data=BigInt(t.data)}catch{return this._getInvalidInput(t)}if(this._getType(t)!==Ye.bigint)return this._getInvalidInput(t);let r;const s=new ps;for(const o of this._def.checks)o.kind==="min"?(o.inclusive?t.datao.value:t.data>=o.value)&&(r=this._getOrReturnCtx(t,r),ze(r,{code:Me.too_big,type:"bigint",maximum:o.value,inclusive:o.inclusive,message:o.message}),s.dirty()):o.kind==="multipleOf"?t.data%o.value!==BigInt(0)&&(r=this._getOrReturnCtx(t,r),ze(r,{code:Me.not_multiple_of,multipleOf:o.value,message:o.message}),s.dirty()):Zt.assertNever(o);return{status:s.value,value:t.data}}_getInvalidInput(t){const n=this._getOrReturnCtx(t);return ze(n,{code:Me.invalid_type,expected:Ye.bigint,received:n.parsedType}),Ct}gte(t,n){return this.setLimit("min",t,!0,tt.toString(n))}gt(t,n){return this.setLimit("min",t,!1,tt.toString(n))}lte(t,n){return this.setLimit("max",t,!0,tt.toString(n))}lt(t,n){return this.setLimit("max",t,!1,tt.toString(n))}setLimit(t,n,r,s){return new Ui({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:tt.toString(s)}]})}_addCheck(t){return new Ui({...this._def,checks:[...this._def.checks,t]})}positive(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:tt.toString(t)})}negative(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:tt.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:tt.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:tt.toString(t)})}multipleOf(t,n){return this._addCheck({kind:"multipleOf",value:t,message:tt.toString(n)})}get minValue(){let t=null;for(const n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t}get maxValue(){let t=null;for(const n of this._def.checks)n.kind==="max"&&(t===null||n.valuenew Ui({checks:[],typeName:jt.ZodBigInt,coerce:e?.coerce??!1,...$t(e)});class ah extends Qt{_parse(t){if(this._def.coerce&&(t.data=!!t.data),this._getType(t)!==Ye.boolean){const r=this._getOrReturnCtx(t);return ze(r,{code:Me.invalid_type,expected:Ye.boolean,received:r.parsedType}),Ct}return Rs(t.data)}}ah.create=e=>new ah({typeName:jt.ZodBoolean,coerce:e?.coerce||!1,...$t(e)});class lc extends Qt{_parse(t){if(this._def.coerce&&(t.data=new Date(t.data)),this._getType(t)!==Ye.date){const o=this._getOrReturnCtx(t);return ze(o,{code:Me.invalid_type,expected:Ye.date,received:o.parsedType}),Ct}if(Number.isNaN(t.data.getTime())){const o=this._getOrReturnCtx(t);return ze(o,{code:Me.invalid_date}),Ct}const r=new ps;let s;for(const o of this._def.checks)o.kind==="min"?t.data.getTime()o.value&&(s=this._getOrReturnCtx(t,s),ze(s,{code:Me.too_big,message:o.message,inclusive:!0,exact:!1,maximum:o.value,type:"date"}),r.dirty()):Zt.assertNever(o);return{status:r.value,value:new Date(t.data.getTime())}}_addCheck(t){return new lc({...this._def,checks:[...this._def.checks,t]})}min(t,n){return this._addCheck({kind:"min",value:t.getTime(),message:tt.toString(n)})}max(t,n){return this._addCheck({kind:"max",value:t.getTime(),message:tt.toString(n)})}get minDate(){let t=null;for(const n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t!=null?new Date(t):null}get maxDate(){let t=null;for(const n of this._def.checks)n.kind==="max"&&(t===null||n.valuenew lc({checks:[],coerce:e?.coerce||!1,typeName:jt.ZodDate,...$t(e)});class ej extends Qt{_parse(t){if(this._getType(t)!==Ye.symbol){const r=this._getOrReturnCtx(t);return ze(r,{code:Me.invalid_type,expected:Ye.symbol,received:r.parsedType}),Ct}return Rs(t.data)}}ej.create=e=>new ej({typeName:jt.ZodSymbol,...$t(e)});class tj extends Qt{_parse(t){if(this._getType(t)!==Ye.undefined){const r=this._getOrReturnCtx(t);return ze(r,{code:Me.invalid_type,expected:Ye.undefined,received:r.parsedType}),Ct}return Rs(t.data)}}tj.create=e=>new tj({typeName:jt.ZodUndefined,...$t(e)});class ub extends Qt{_parse(t){if(this._getType(t)!==Ye.null){const r=this._getOrReturnCtx(t);return ze(r,{code:Me.invalid_type,expected:Ye.null,received:r.parsedType}),Ct}return Rs(t.data)}}ub.create=e=>new ub({typeName:jt.ZodNull,...$t(e)});class nj extends Qt{constructor(){super(...arguments),this._any=!0}_parse(t){return Rs(t.data)}}nj.create=e=>new nj({typeName:jt.ZodAny,...$t(e)});class rj extends Qt{constructor(){super(...arguments),this._unknown=!0}_parse(t){return Rs(t.data)}}rj.create=e=>new rj({typeName:jt.ZodUnknown,...$t(e)});class Bo extends Qt{_parse(t){const n=this._getOrReturnCtx(t);return ze(n,{code:Me.invalid_type,expected:Ye.never,received:n.parsedType}),Ct}}Bo.create=e=>new Bo({typeName:jt.ZodNever,...$t(e)});class sj extends Qt{_parse(t){if(this._getType(t)!==Ye.undefined){const r=this._getOrReturnCtx(t);return ze(r,{code:Me.invalid_type,expected:Ye.void,received:r.parsedType}),Ct}return Rs(t.data)}}sj.create=e=>new sj({typeName:jt.ZodVoid,...$t(e)});class va extends Qt{_parse(t){const{ctx:n,status:r}=this._processInputParams(t),s=this._def;if(n.parsedType!==Ye.array)return ze(n,{code:Me.invalid_type,expected:Ye.array,received:n.parsedType}),Ct;if(s.exactLength!==null){const l=n.data.length>s.exactLength.value,u=n.data.lengths.maxLength.value&&(ze(n,{code:Me.too_big,maximum:s.maxLength.value,type:"array",inclusive:!0,exact:!1,message:s.maxLength.message}),r.dirty()),n.common.async)return Promise.all([...n.data].map((l,u)=>s.type._parseAsync(new $o(n,l,n.path,u)))).then(l=>ps.mergeArray(r,l));const o=[...n.data].map((l,u)=>s.type._parseSync(new $o(n,l,n.path,u)));return ps.mergeArray(r,o)}get element(){return this._def.type}min(t,n){return new va({...this._def,minLength:{value:t,message:tt.toString(n)}})}max(t,n){return new va({...this._def,maxLength:{value:t,message:tt.toString(n)}})}length(t,n){return new va({...this._def,exactLength:{value:t,message:tt.toString(n)}})}nonempty(t){return this.min(1,t)}}va.create=(e,t)=>new va({type:e,minLength:null,maxLength:null,exactLength:null,typeName:jt.ZodArray,...$t(t)});function zl(e){if(e instanceof Qn){const t={};for(const n in e.shape){const r=e.shape[n];t[n]=Po.create(zl(r))}return new Qn({...e._def,shape:()=>t})}else return e instanceof va?new va({...e._def,type:zl(e.element)}):e instanceof Po?Po.create(zl(e.unwrap())):e instanceof dc?dc.create(zl(e.unwrap())):e instanceof Vi?Vi.create(e.items.map(t=>zl(t))):e}class Qn extends Qt{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const t=this._def.shape(),n=Zt.objectKeys(t);return this._cached={shape:t,keys:n},this._cached}_parse(t){if(this._getType(t)!==Ye.object){const f=this._getOrReturnCtx(t);return ze(f,{code:Me.invalid_type,expected:Ye.object,received:f.parsedType}),Ct}const{status:r,ctx:s}=this._processInputParams(t),{shape:o,keys:l}=this._getCached(),u=[];if(!(this._def.catchall instanceof Bo&&this._def.unknownKeys==="strip"))for(const f in s.data)l.includes(f)||u.push(f);const d=[];for(const f of l){const h=o[f],m=s.data[f];d.push({key:{status:"valid",value:f},value:h._parse(new $o(s,m,s.path,f)),alwaysSet:f in s.data})}if(this._def.catchall instanceof Bo){const f=this._def.unknownKeys;if(f==="passthrough")for(const h of u)d.push({key:{status:"valid",value:h},value:{status:"valid",value:s.data[h]}});else if(f==="strict")u.length>0&&(ze(s,{code:Me.unrecognized_keys,keys:u}),r.dirty());else if(f!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const f=this._def.catchall;for(const h of u){const m=s.data[h];d.push({key:{status:"valid",value:h},value:f._parse(new $o(s,m,s.path,h)),alwaysSet:h in s.data})}}return s.common.async?Promise.resolve().then(async()=>{const f=[];for(const h of d){const m=await h.key,g=await h.value;f.push({key:m,value:g,alwaysSet:h.alwaysSet})}return f}).then(f=>ps.mergeObjectSync(r,f)):ps.mergeObjectSync(r,d)}get shape(){return this._def.shape()}strict(t){return tt.errToObj,new Qn({...this._def,unknownKeys:"strict",...t!==void 0?{errorMap:(n,r)=>{const s=this._def.errorMap?.(n,r).message??r.defaultError;return n.code==="unrecognized_keys"?{message:tt.errToObj(t).message??s}:{message:s}}}:{}})}strip(){return new Qn({...this._def,unknownKeys:"strip"})}passthrough(){return new Qn({...this._def,unknownKeys:"passthrough"})}extend(t){return new Qn({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new Qn({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:jt.ZodObject})}setKey(t,n){return this.augment({[t]:n})}catchall(t){return new Qn({...this._def,catchall:t})}pick(t){const n={};for(const r of Zt.objectKeys(t))t[r]&&this.shape[r]&&(n[r]=this.shape[r]);return new Qn({...this._def,shape:()=>n})}omit(t){const n={};for(const r of Zt.objectKeys(this.shape))t[r]||(n[r]=this.shape[r]);return new Qn({...this._def,shape:()=>n})}deepPartial(){return zl(this)}partial(t){const n={};for(const r of Zt.objectKeys(this.shape)){const s=this.shape[r];t&&!t[r]?n[r]=s:n[r]=s.optional()}return new Qn({...this._def,shape:()=>n})}required(t){const n={};for(const r of Zt.objectKeys(this.shape))if(t&&!t[r])n[r]=this.shape[r];else{let o=this.shape[r];for(;o instanceof Po;)o=o._def.innerType;n[r]=o}return new Qn({...this._def,shape:()=>n})}keyof(){return tR(Zt.objectKeys(this.shape))}}Qn.create=(e,t)=>new Qn({shape:()=>e,unknownKeys:"strip",catchall:Bo.create(),typeName:jt.ZodObject,...$t(t)});Qn.strictCreate=(e,t)=>new Qn({shape:()=>e,unknownKeys:"strict",catchall:Bo.create(),typeName:jt.ZodObject,...$t(t)});Qn.lazycreate=(e,t)=>new Qn({shape:e,unknownKeys:"strip",catchall:Bo.create(),typeName:jt.ZodObject,...$t(t)});class oh extends Qt{_parse(t){const{ctx:n}=this._processInputParams(t),r=this._def.options;function s(o){for(const u of o)if(u.result.status==="valid")return u.result;for(const u of o)if(u.result.status==="dirty")return n.common.issues.push(...u.ctx.common.issues),u.result;const l=o.map(u=>new Va(u.ctx.common.issues));return ze(n,{code:Me.invalid_union,unionErrors:l}),Ct}if(n.common.async)return Promise.all(r.map(async o=>{const l={...n,common:{...n.common,issues:[]},parent:null};return{result:await o._parseAsync({data:n.data,path:n.path,parent:l}),ctx:l}})).then(s);{let o;const l=[];for(const d of r){const f={...n,common:{...n.common,issues:[]},parent:null},h=d._parseSync({data:n.data,path:n.path,parent:f});if(h.status==="valid")return h;h.status==="dirty"&&!o&&(o={result:h,ctx:f}),f.common.issues.length&&l.push(f.common.issues)}if(o)return n.common.issues.push(...o.ctx.common.issues),o.result;const u=l.map(d=>new Va(d));return ze(n,{code:Me.invalid_union,unionErrors:u}),Ct}}get options(){return this._def.options}}oh.create=(e,t)=>new oh({options:e,typeName:jt.ZodUnion,...$t(t)});function db(e,t){const n=No(e),r=No(t);if(e===t)return{valid:!0,data:e};if(n===Ye.object&&r===Ye.object){const s=Zt.objectKeys(t),o=Zt.objectKeys(e).filter(u=>s.indexOf(u)!==-1),l={...e,...t};for(const u of o){const d=db(e[u],t[u]);if(!d.valid)return{valid:!1};l[u]=d.data}return{valid:!0,data:l}}else if(n===Ye.array&&r===Ye.array){if(e.length!==t.length)return{valid:!1};const s=[];for(let o=0;o{if(Y1(o)||Y1(l))return Ct;const u=db(o.value,l.value);return u.valid?((Z1(o)||Z1(l))&&n.dirty(),{status:n.value,value:u.data}):(ze(r,{code:Me.invalid_intersection_types}),Ct)};return r.common.async?Promise.all([this._def.left._parseAsync({data:r.data,path:r.path,parent:r}),this._def.right._parseAsync({data:r.data,path:r.path,parent:r})]).then(([o,l])=>s(o,l)):s(this._def.left._parseSync({data:r.data,path:r.path,parent:r}),this._def.right._parseSync({data:r.data,path:r.path,parent:r}))}}ih.create=(e,t,n)=>new ih({left:e,right:t,typeName:jt.ZodIntersection,...$t(n)});class Vi extends Qt{_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==Ye.array)return ze(r,{code:Me.invalid_type,expected:Ye.array,received:r.parsedType}),Ct;if(r.data.lengththis._def.items.length&&(ze(r,{code:Me.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),n.dirty());const o=[...r.data].map((l,u)=>{const d=this._def.items[u]||this._def.rest;return d?d._parse(new $o(r,l,r.path,u)):null}).filter(l=>!!l);return r.common.async?Promise.all(o).then(l=>ps.mergeArray(n,l)):ps.mergeArray(n,o)}get items(){return this._def.items}rest(t){return new Vi({...this._def,rest:t})}}Vi.create=(e,t)=>{if(!Array.isArray(e))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new Vi({items:e,typeName:jt.ZodTuple,rest:null,...$t(t)})};class aj extends Qt{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==Ye.map)return ze(r,{code:Me.invalid_type,expected:Ye.map,received:r.parsedType}),Ct;const s=this._def.keyType,o=this._def.valueType,l=[...r.data.entries()].map(([u,d],f)=>({key:s._parse(new $o(r,u,r.path,[f,"key"])),value:o._parse(new $o(r,d,r.path,[f,"value"]))}));if(r.common.async){const u=new Map;return Promise.resolve().then(async()=>{for(const d of l){const f=await d.key,h=await d.value;if(f.status==="aborted"||h.status==="aborted")return Ct;(f.status==="dirty"||h.status==="dirty")&&n.dirty(),u.set(f.value,h.value)}return{status:n.value,value:u}})}else{const u=new Map;for(const d of l){const f=d.key,h=d.value;if(f.status==="aborted"||h.status==="aborted")return Ct;(f.status==="dirty"||h.status==="dirty")&&n.dirty(),u.set(f.value,h.value)}return{status:n.value,value:u}}}}aj.create=(e,t,n)=>new aj({valueType:t,keyType:e,typeName:jt.ZodMap,...$t(n)});class od extends Qt{_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==Ye.set)return ze(r,{code:Me.invalid_type,expected:Ye.set,received:r.parsedType}),Ct;const s=this._def;s.minSize!==null&&r.data.sizes.maxSize.value&&(ze(r,{code:Me.too_big,maximum:s.maxSize.value,type:"set",inclusive:!0,exact:!1,message:s.maxSize.message}),n.dirty());const o=this._def.valueType;function l(d){const f=new Set;for(const h of d){if(h.status==="aborted")return Ct;h.status==="dirty"&&n.dirty(),f.add(h.value)}return{status:n.value,value:f}}const u=[...r.data.values()].map((d,f)=>o._parse(new $o(r,d,r.path,f)));return r.common.async?Promise.all(u).then(d=>l(d)):l(u)}min(t,n){return new od({...this._def,minSize:{value:t,message:tt.toString(n)}})}max(t,n){return new od({...this._def,maxSize:{value:t,message:tt.toString(n)}})}size(t,n){return this.min(t,n).max(t,n)}nonempty(t){return this.min(1,t)}}od.create=(e,t)=>new od({valueType:e,minSize:null,maxSize:null,typeName:jt.ZodSet,...$t(t)});class oj extends Qt{get schema(){return this._def.getter()}_parse(t){const{ctx:n}=this._processInputParams(t);return this._def.getter()._parse({data:n.data,path:n.path,parent:n})}}oj.create=(e,t)=>new oj({getter:e,typeName:jt.ZodLazy,...$t(t)});class ij extends Qt{_parse(t){if(t.data!==this._def.value){const n=this._getOrReturnCtx(t);return ze(n,{received:n.data,code:Me.invalid_literal,expected:this._def.value}),Ct}return{status:"valid",value:t.data}}get value(){return this._def.value}}ij.create=(e,t)=>new ij({value:e,typeName:jt.ZodLiteral,...$t(t)});function tR(e,t){return new cc({values:e,typeName:jt.ZodEnum,...$t(t)})}class cc extends Qt{_parse(t){if(typeof t.data!="string"){const n=this._getOrReturnCtx(t),r=this._def.values;return ze(n,{expected:Zt.joinValues(r),received:n.parsedType,code:Me.invalid_type}),Ct}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(t.data)){const n=this._getOrReturnCtx(t),r=this._def.values;return ze(n,{received:n.data,code:Me.invalid_enum_value,options:r}),Ct}return Rs(t.data)}get options(){return this._def.values}get enum(){const t={};for(const n of this._def.values)t[n]=n;return t}get Values(){const t={};for(const n of this._def.values)t[n]=n;return t}get Enum(){const t={};for(const n of this._def.values)t[n]=n;return t}extract(t,n=this._def){return cc.create(t,{...this._def,...n})}exclude(t,n=this._def){return cc.create(this.options.filter(r=>!t.includes(r)),{...this._def,...n})}}cc.create=tR;class lj extends Qt{_parse(t){const n=Zt.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(t);if(r.parsedType!==Ye.string&&r.parsedType!==Ye.number){const s=Zt.objectValues(n);return ze(r,{expected:Zt.joinValues(s),received:r.parsedType,code:Me.invalid_type}),Ct}if(this._cache||(this._cache=new Set(Zt.getValidEnumValues(this._def.values))),!this._cache.has(t.data)){const s=Zt.objectValues(n);return ze(r,{received:r.data,code:Me.invalid_enum_value,options:s}),Ct}return Rs(t.data)}get enum(){return this._def.values}}lj.create=(e,t)=>new lj({values:e,typeName:jt.ZodNativeEnum,...$t(t)});class lh extends Qt{unwrap(){return this._def.type}_parse(t){const{ctx:n}=this._processInputParams(t);if(n.parsedType!==Ye.promise&&n.common.async===!1)return ze(n,{code:Me.invalid_type,expected:Ye.promise,received:n.parsedType}),Ct;const r=n.parsedType===Ye.promise?n.data:Promise.resolve(n.data);return Rs(r.then(s=>this._def.type.parseAsync(s,{path:n.path,errorMap:n.common.contextualErrorMap})))}}lh.create=(e,t)=>new lh({type:e,typeName:jt.ZodPromise,...$t(t)});class uc extends Qt{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===jt.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(t){const{status:n,ctx:r}=this._processInputParams(t),s=this._def.effect||null,o={addIssue:l=>{ze(r,l),l.fatal?n.abort():n.dirty()},get path(){return r.path}};if(o.addIssue=o.addIssue.bind(o),s.type==="preprocess"){const l=s.transform(r.data,o);if(r.common.async)return Promise.resolve(l).then(async u=>{if(n.value==="aborted")return Ct;const d=await this._def.schema._parseAsync({data:u,path:r.path,parent:r});return d.status==="aborted"?Ct:d.status==="dirty"||n.value==="dirty"?$u(d.value):d});{if(n.value==="aborted")return Ct;const u=this._def.schema._parseSync({data:l,path:r.path,parent:r});return u.status==="aborted"?Ct:u.status==="dirty"||n.value==="dirty"?$u(u.value):u}}if(s.type==="refinement"){const l=u=>{const d=s.refinement(u,o);if(r.common.async)return Promise.resolve(d);if(d instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return u};if(r.common.async===!1){const u=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});return u.status==="aborted"?Ct:(u.status==="dirty"&&n.dirty(),l(u.value),{status:n.value,value:u.value})}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(u=>u.status==="aborted"?Ct:(u.status==="dirty"&&n.dirty(),l(u.value).then(()=>({status:n.value,value:u.value}))))}if(s.type==="transform")if(r.common.async===!1){const l=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if(!ic(l))return Ct;const u=s.transform(l.value,o);if(u instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:n.value,value:u}}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(l=>ic(l)?Promise.resolve(s.transform(l.value,o)).then(u=>({status:n.value,value:u})):Ct);Zt.assertNever(s)}}uc.create=(e,t,n)=>new uc({schema:e,typeName:jt.ZodEffects,effect:t,...$t(n)});uc.createWithPreprocess=(e,t,n)=>new uc({schema:t,effect:{type:"preprocess",transform:e},typeName:jt.ZodEffects,...$t(n)});class Po extends Qt{_parse(t){return this._getType(t)===Ye.undefined?Rs(void 0):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}}Po.create=(e,t)=>new Po({innerType:e,typeName:jt.ZodOptional,...$t(t)});class dc extends Qt{_parse(t){return this._getType(t)===Ye.null?Rs(null):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}}dc.create=(e,t)=>new dc({innerType:e,typeName:jt.ZodNullable,...$t(t)});class fb extends Qt{_parse(t){const{ctx:n}=this._processInputParams(t);let r=n.data;return n.parsedType===Ye.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:n.path,parent:n})}removeDefault(){return this._def.innerType}}fb.create=(e,t)=>new fb({innerType:e,typeName:jt.ZodDefault,defaultValue:typeof t.default=="function"?t.default:()=>t.default,...$t(t)});class pb extends Qt{_parse(t){const{ctx:n}=this._processInputParams(t),r={...n,common:{...n.common,issues:[]}},s=this._def.innerType._parse({data:r.data,path:r.path,parent:{...r}});return sh(s)?s.then(o=>({status:"valid",value:o.status==="valid"?o.value:this._def.catchValue({get error(){return new Va(r.common.issues)},input:r.data})})):{status:"valid",value:s.status==="valid"?s.value:this._def.catchValue({get error(){return new Va(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}}pb.create=(e,t)=>new pb({innerType:e,typeName:jt.ZodCatch,catchValue:typeof t.catch=="function"?t.catch:()=>t.catch,...$t(t)});class cj extends Qt{_parse(t){if(this._getType(t)!==Ye.nan){const r=this._getOrReturnCtx(t);return ze(r,{code:Me.invalid_type,expected:Ye.nan,received:r.parsedType}),Ct}return{status:"valid",value:t.data}}}cj.create=e=>new cj({typeName:jt.ZodNaN,...$t(e)});class L8 extends Qt{_parse(t){const{ctx:n}=this._processInputParams(t),r=n.data;return this._def.type._parse({data:r,path:n.path,parent:n})}unwrap(){return this._def.type}}class Gx extends Qt{_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.common.async)return(async()=>{const o=await this._def.in._parseAsync({data:r.data,path:r.path,parent:r});return o.status==="aborted"?Ct:o.status==="dirty"?(n.dirty(),$u(o.value)):this._def.out._parseAsync({data:o.value,path:r.path,parent:r})})();{const s=this._def.in._parseSync({data:r.data,path:r.path,parent:r});return s.status==="aborted"?Ct:s.status==="dirty"?(n.dirty(),{status:"dirty",value:s.value}):this._def.out._parseSync({data:s.value,path:r.path,parent:r})}}static create(t,n){return new Gx({in:t,out:n,typeName:jt.ZodPipeline})}}class hb extends Qt{_parse(t){const n=this._def.innerType._parse(t),r=s=>(ic(s)&&(s.value=Object.freeze(s.value)),s);return sh(n)?n.then(s=>r(s)):r(n)}unwrap(){return this._def.innerType}}hb.create=(e,t)=>new hb({innerType:e,typeName:jt.ZodReadonly,...$t(t)});var jt;(function(e){e.ZodString="ZodString",e.ZodNumber="ZodNumber",e.ZodNaN="ZodNaN",e.ZodBigInt="ZodBigInt",e.ZodBoolean="ZodBoolean",e.ZodDate="ZodDate",e.ZodSymbol="ZodSymbol",e.ZodUndefined="ZodUndefined",e.ZodNull="ZodNull",e.ZodAny="ZodAny",e.ZodUnknown="ZodUnknown",e.ZodNever="ZodNever",e.ZodVoid="ZodVoid",e.ZodArray="ZodArray",e.ZodObject="ZodObject",e.ZodUnion="ZodUnion",e.ZodDiscriminatedUnion="ZodDiscriminatedUnion",e.ZodIntersection="ZodIntersection",e.ZodTuple="ZodTuple",e.ZodRecord="ZodRecord",e.ZodMap="ZodMap",e.ZodSet="ZodSet",e.ZodFunction="ZodFunction",e.ZodLazy="ZodLazy",e.ZodLiteral="ZodLiteral",e.ZodEnum="ZodEnum",e.ZodEffects="ZodEffects",e.ZodNativeEnum="ZodNativeEnum",e.ZodOptional="ZodOptional",e.ZodNullable="ZodNullable",e.ZodDefault="ZodDefault",e.ZodCatch="ZodCatch",e.ZodPromise="ZodPromise",e.ZodBranded="ZodBranded",e.ZodPipeline="ZodPipeline",e.ZodReadonly="ZodReadonly"})(jt||(jt={}));const ye=Aa.create;zi.create;Ui.create;const Re=ah.create;lc.create;const jc=ub.create;Bo.create;const ra=va.create,hn=Qn.create,kc=oh.create;ih.create;Vi.create;const nR=cc.create;lh.create;Po.create;dc.create;const Vt={string:(e=>Aa.create({...e,coerce:!0})),number:(e=>zi.create({...e,coerce:!0})),boolean:(e=>ah.create({...e,coerce:!0})),bigint:(e=>Ui.create({...e,coerce:!0})),date:(e=>lc.create({...e,coerce:!0}))};function uj(e,[t,n]){return Math.min(n,Math.max(t,e))}function Jx(e){const t=y.useRef({value:e,previous:e});return y.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}var rR=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),$8="VisuallyHidden",B8=y.forwardRef((e,t)=>a.jsx(xt.span,{...e,ref:t,style:{...rR,...e.style}}));B8.displayName=$8;var z8=[" ","Enter","ArrowUp","ArrowDown"],U8=[" ","Enter"],qi="Select",[Zh,Xh,V8]=mx(qi),[Ec]=ea(qi,[V8,Vh]),em=Vh(),[q8,Xo]=Ec(qi),[H8,K8]=Ec(qi),sR=e=>{const{__scopeSelect:t,children:n,open:r,defaultOpen:s,onOpenChange:o,value:l,defaultValue:u,onValueChange:d,dir:f,name:h,autoComplete:m,disabled:g,required:x,form:b}=e,w=em(t),[C,k]=y.useState(null),[N,T]=y.useState(null),[_,I]=y.useState(!1),M=Bh(f),[A,O]=Ba({prop:r,defaultProp:s??!1,onChange:o,caller:qi}),[F,z]=Ba({prop:l,defaultProp:u,onChange:d,caller:qi}),Z=y.useRef(null),B=C?b||!!C.closest("form"):!0,[ce,H]=y.useState(new Set),oe=Array.from(ce).map(Q=>Q.props.value).join(";");return a.jsx(bM,{...w,children:a.jsxs(q8,{required:x,scope:t,trigger:C,onTriggerChange:k,valueNode:N,onValueNodeChange:T,valueNodeHasChildren:_,onValueNodeHasChildrenChange:I,contentId:Ws(),value:F,onValueChange:z,open:A,onOpenChange:O,dir:M,triggerPointerDownPosRef:Z,disabled:g,children:[a.jsx(Zh.Provider,{scope:t,children:a.jsx(H8,{scope:e.__scopeSelect,onNativeOptionAdd:y.useCallback(Q=>{H(ne=>new Set(ne).add(Q))},[]),onNativeOptionRemove:y.useCallback(Q=>{H(ne=>{const V=new Set(ne);return V.delete(Q),V})},[]),children:n})}),B?a.jsxs(ER,{"aria-hidden":!0,required:x,tabIndex:-1,name:h,autoComplete:m,value:F,onChange:Q=>z(Q.target.value),disabled:g,form:b,children:[F===void 0?a.jsx("option",{value:""}):null,Array.from(ce)]},oe):null]})})};sR.displayName=qi;var aR="SelectTrigger",oR=y.forwardRef((e,t)=>{const{__scopeSelect:n,disabled:r=!1,...s}=e,o=em(n),l=Xo(aR,n),u=l.disabled||r,d=Xt(t,l.onTriggerChange),f=Xh(n),h=y.useRef("touch"),[m,g,x]=TR(w=>{const C=f().filter(T=>!T.disabled),k=C.find(T=>T.value===l.value),N=MR(C,w,k);N!==void 0&&l.onValueChange(N.value)}),b=w=>{u||(l.onOpenChange(!0),x()),w&&(l.triggerPointerDownPosRef.current={x:Math.round(w.pageX),y:Math.round(w.pageY)})};return a.jsx(xM,{asChild:!0,...o,children:a.jsx(xt.button,{type:"button",role:"combobox","aria-controls":l.contentId,"aria-expanded":l.open,"aria-required":l.required,"aria-autocomplete":"none",dir:l.dir,"data-state":l.open?"open":"closed",disabled:u,"data-disabled":u?"":void 0,"data-placeholder":NR(l.value)?"":void 0,...s,ref:d,onClick:Ge(s.onClick,w=>{w.currentTarget.focus(),h.current!=="mouse"&&b(w)}),onPointerDown:Ge(s.onPointerDown,w=>{h.current=w.pointerType;const C=w.target;C.hasPointerCapture(w.pointerId)&&C.releasePointerCapture(w.pointerId),w.button===0&&w.ctrlKey===!1&&w.pointerType==="mouse"&&(b(w),w.preventDefault())}),onKeyDown:Ge(s.onKeyDown,w=>{const C=m.current!=="";!(w.ctrlKey||w.altKey||w.metaKey)&&w.key.length===1&&g(w.key),!(C&&w.key===" ")&&z8.includes(w.key)&&(b(),w.preventDefault())})})})});oR.displayName=aR;var iR="SelectValue",lR=y.forwardRef((e,t)=>{const{__scopeSelect:n,className:r,style:s,children:o,placeholder:l="",...u}=e,d=Xo(iR,n),{onValueNodeHasChildrenChange:f}=d,h=o!==void 0,m=Xt(t,d.onValueNodeChange);return er(()=>{f(h)},[f,h]),a.jsx(xt.span,{...u,ref:m,style:{pointerEvents:"none"},children:NR(d.value)?a.jsx(a.Fragment,{children:l}):o})});lR.displayName=iR;var W8="SelectIcon",cR=y.forwardRef((e,t)=>{const{__scopeSelect:n,children:r,...s}=e;return a.jsx(xt.span,{"aria-hidden":!0,...s,ref:t,children:r||"▼"})});cR.displayName=W8;var G8="SelectPortal",uR=e=>a.jsx(Oh,{asChild:!0,...e});uR.displayName=G8;var Hi="SelectContent",dR=y.forwardRef((e,t)=>{const n=Xo(Hi,e.__scopeSelect),[r,s]=y.useState();if(er(()=>{s(new DocumentFragment)},[]),!n.open){const o=r;return o?mc.createPortal(a.jsx(fR,{scope:e.__scopeSelect,children:a.jsx(Zh.Slot,{scope:e.__scopeSelect,children:a.jsx("div",{children:e.children})})}),o):null}return a.jsx(pR,{...e,ref:t})});dR.displayName=Hi;var Bs=10,[fR,ei]=Ec(Hi),J8="SelectContentImpl",Q8=rc("SelectContent.RemoveScroll"),pR=y.forwardRef((e,t)=>{const{__scopeSelect:n,position:r="item-aligned",onCloseAutoFocus:s,onEscapeKeyDown:o,onPointerDownOutside:l,side:u,sideOffset:d,align:f,alignOffset:h,arrowPadding:m,collisionBoundary:g,collisionPadding:x,sticky:b,hideWhenDetached:w,avoidCollisions:C,...k}=e,N=Xo(Hi,n),[T,_]=y.useState(null),[I,M]=y.useState(null),A=Xt(t,j=>_(j)),[O,F]=y.useState(null),[z,Z]=y.useState(null),B=Xh(n),[ce,H]=y.useState(!1),oe=y.useRef(!1);y.useEffect(()=>{if(T)return lx(T)},[T]),ix();const Q=y.useCallback(j=>{const[P,...pe]=B().map(Je=>Je.ref.current),[xe]=pe.slice(-1),rt=document.activeElement;for(const Je of j)if(Je===rt||(Je?.scrollIntoView({block:"nearest"}),Je===P&&I&&(I.scrollTop=0),Je===xe&&I&&(I.scrollTop=I.scrollHeight),Je?.focus(),document.activeElement!==rt))return},[B,I]),ne=y.useCallback(()=>Q([O,T]),[Q,O,T]);y.useEffect(()=>{ce&&ne()},[ce,ne]);const{onOpenChange:V,triggerPointerDownPosRef:K}=N;y.useEffect(()=>{if(T){let j={x:0,y:0};const P=xe=>{j={x:Math.abs(Math.round(xe.pageX)-(K.current?.x??0)),y:Math.abs(Math.round(xe.pageY)-(K.current?.y??0))}},pe=xe=>{j.x<=10&&j.y<=10?xe.preventDefault():T.contains(xe.target)||V(!1),document.removeEventListener("pointermove",P),K.current=null};return K.current!==null&&(document.addEventListener("pointermove",P),document.addEventListener("pointerup",pe,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",P),document.removeEventListener("pointerup",pe,{capture:!0})}}},[T,V,K]),y.useEffect(()=>{const j=()=>V(!1);return window.addEventListener("blur",j),window.addEventListener("resize",j),()=>{window.removeEventListener("blur",j),window.removeEventListener("resize",j)}},[V]);const[U,D]=TR(j=>{const P=B().filter(rt=>!rt.disabled),pe=P.find(rt=>rt.ref.current===document.activeElement),xe=MR(P,j,pe);xe&&setTimeout(()=>xe.ref.current.focus())}),J=y.useCallback((j,P,pe)=>{const xe=!oe.current&&!pe;(N.value!==void 0&&N.value===P||xe)&&(F(j),xe&&(oe.current=!0))},[N.value]),ae=y.useCallback(()=>T?.focus(),[T]),ee=y.useCallback((j,P,pe)=>{const xe=!oe.current&&!pe;(N.value!==void 0&&N.value===P||xe)&&Z(j)},[N.value]),ie=r==="popper"?mb:hR,ue=ie===mb?{side:u,sideOffset:d,align:f,alignOffset:h,arrowPadding:m,collisionBoundary:g,collisionPadding:x,sticky:b,hideWhenDetached:w,avoidCollisions:C}:{};return a.jsx(fR,{scope:n,content:T,viewport:I,onViewportChange:M,itemRefCallback:J,selectedItem:O,onItemLeave:ae,itemTextRefCallback:ee,focusSelectedItem:ne,selectedItemText:z,position:r,isPositioned:ce,searchRef:U,children:a.jsx(Dh,{as:Q8,allowPinchZoom:!0,children:a.jsx(Ih,{asChild:!0,trapped:N.open,onMountAutoFocus:j=>{j.preventDefault()},onUnmountAutoFocus:Ge(s,j=>{N.trigger?.focus({preventScroll:!0}),j.preventDefault()}),children:a.jsx(Ph,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:o,onPointerDownOutside:l,onFocusOutside:j=>j.preventDefault(),onDismiss:()=>N.onOpenChange(!1),children:a.jsx(ie,{role:"listbox",id:N.contentId,"data-state":N.open?"open":"closed",dir:N.dir,onContextMenu:j=>j.preventDefault(),...k,...ue,onPlaced:()=>H(!0),ref:A,style:{display:"flex",flexDirection:"column",outline:"none",...k.style},onKeyDown:Ge(k.onKeyDown,j=>{const P=j.ctrlKey||j.altKey||j.metaKey;if(j.key==="Tab"&&j.preventDefault(),!P&&j.key.length===1&&D(j.key),["ArrowUp","ArrowDown","Home","End"].includes(j.key)){let xe=B().filter(rt=>!rt.disabled).map(rt=>rt.ref.current);if(["ArrowUp","End"].includes(j.key)&&(xe=xe.slice().reverse()),["ArrowUp","ArrowDown"].includes(j.key)){const rt=j.target,Je=xe.indexOf(rt);xe=xe.slice(Je+1)}setTimeout(()=>Q(xe)),j.preventDefault()}})})})})})})});pR.displayName=J8;var Y8="SelectItemAlignedPosition",hR=y.forwardRef((e,t)=>{const{__scopeSelect:n,onPlaced:r,...s}=e,o=Xo(Hi,n),l=ei(Hi,n),[u,d]=y.useState(null),[f,h]=y.useState(null),m=Xt(t,A=>h(A)),g=Xh(n),x=y.useRef(!1),b=y.useRef(!0),{viewport:w,selectedItem:C,selectedItemText:k,focusSelectedItem:N}=l,T=y.useCallback(()=>{if(o.trigger&&o.valueNode&&u&&f&&w&&C&&k){const A=o.trigger.getBoundingClientRect(),O=f.getBoundingClientRect(),F=o.valueNode.getBoundingClientRect(),z=k.getBoundingClientRect();if(o.dir!=="rtl"){const rt=z.left-O.left,Je=F.left-rt,nt=A.left-Je,qt=A.width+nt,qn=Math.max(qt,O.width),Mn=window.innerWidth-Bs,tr=uj(Je,[Bs,Math.max(Bs,Mn-qn)]);u.style.minWidth=qt+"px",u.style.left=tr+"px"}else{const rt=O.right-z.right,Je=window.innerWidth-F.right-rt,nt=window.innerWidth-A.right-Je,qt=A.width+nt,qn=Math.max(qt,O.width),Mn=window.innerWidth-Bs,tr=uj(Je,[Bs,Math.max(Bs,Mn-qn)]);u.style.minWidth=qt+"px",u.style.right=tr+"px"}const Z=g(),B=window.innerHeight-Bs*2,ce=w.scrollHeight,H=window.getComputedStyle(f),oe=parseInt(H.borderTopWidth,10),Q=parseInt(H.paddingTop,10),ne=parseInt(H.borderBottomWidth,10),V=parseInt(H.paddingBottom,10),K=oe+Q+ce+V+ne,U=Math.min(C.offsetHeight*5,K),D=window.getComputedStyle(w),J=parseInt(D.paddingTop,10),ae=parseInt(D.paddingBottom,10),ee=A.top+A.height/2-Bs,ie=B-ee,ue=C.offsetHeight/2,j=C.offsetTop+ue,P=oe+Q+j,pe=K-P;if(P<=ee){const rt=Z.length>0&&C===Z[Z.length-1].ref.current;u.style.bottom="0px";const Je=f.clientHeight-w.offsetTop-w.offsetHeight,nt=Math.max(ie,ue+(rt?ae:0)+Je+ne),qt=P+nt;u.style.height=qt+"px"}else{const rt=Z.length>0&&C===Z[0].ref.current;u.style.top="0px";const nt=Math.max(ee,oe+w.offsetTop+(rt?J:0)+ue)+pe;u.style.height=nt+"px",w.scrollTop=P-ee+w.offsetTop}u.style.margin=`${Bs}px 0`,u.style.minHeight=U+"px",u.style.maxHeight=B+"px",r?.(),requestAnimationFrame(()=>x.current=!0)}},[g,o.trigger,o.valueNode,u,f,w,C,k,o.dir,r]);er(()=>T(),[T]);const[_,I]=y.useState();er(()=>{f&&I(window.getComputedStyle(f).zIndex)},[f]);const M=y.useCallback(A=>{A&&b.current===!0&&(T(),N?.(),b.current=!1)},[T,N]);return a.jsx(X8,{scope:n,contentWrapper:u,shouldExpandOnScrollRef:x,onScrollButtonChange:M,children:a.jsx("div",{ref:d,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:_},children:a.jsx(xt.div,{...s,ref:m,style:{boxSizing:"border-box",maxHeight:"100%",...s.style}})})})});hR.displayName=Y8;var Z8="SelectPopperPosition",mb=y.forwardRef((e,t)=>{const{__scopeSelect:n,align:r="start",collisionPadding:s=Bs,...o}=e,l=em(n);return a.jsx(wM,{...l,...o,ref:t,align:r,collisionPadding:s,style:{boxSizing:"border-box",...o.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});mb.displayName=Z8;var[X8,Qx]=Ec(Hi,{}),gb="SelectViewport",mR=y.forwardRef((e,t)=>{const{__scopeSelect:n,nonce:r,...s}=e,o=ei(gb,n),l=Qx(gb,n),u=Xt(t,o.onViewportChange),d=y.useRef(0);return a.jsxs(a.Fragment,{children:[a.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:r}),a.jsx(Zh.Slot,{scope:n,children:a.jsx(xt.div,{"data-radix-select-viewport":"",role:"presentation",...s,ref:u,style:{position:"relative",flex:1,overflow:"hidden auto",...s.style},onScroll:Ge(s.onScroll,f=>{const h=f.currentTarget,{contentWrapper:m,shouldExpandOnScrollRef:g}=l;if(g?.current&&m){const x=Math.abs(d.current-h.scrollTop);if(x>0){const b=window.innerHeight-Bs*2,w=parseFloat(m.style.minHeight),C=parseFloat(m.style.height),k=Math.max(w,C);if(k0?_:0,m.style.justifyContent="flex-end")}}}d.current=h.scrollTop})})})]})});mR.displayName=gb;var gR="SelectGroup",[eq,tq]=Ec(gR),nq=y.forwardRef((e,t)=>{const{__scopeSelect:n,...r}=e,s=Ws();return a.jsx(eq,{scope:n,id:s,children:a.jsx(xt.div,{role:"group","aria-labelledby":s,...r,ref:t})})});nq.displayName=gR;var vR="SelectLabel",rq=y.forwardRef((e,t)=>{const{__scopeSelect:n,...r}=e,s=tq(vR,n);return a.jsx(xt.div,{id:s.id,...r,ref:t})});rq.displayName=vR;var ch="SelectItem",[sq,yR]=Ec(ch),bR=y.forwardRef((e,t)=>{const{__scopeSelect:n,value:r,disabled:s=!1,textValue:o,...l}=e,u=Xo(ch,n),d=ei(ch,n),f=u.value===r,[h,m]=y.useState(o??""),[g,x]=y.useState(!1),b=Xt(t,N=>d.itemRefCallback?.(N,r,s)),w=Ws(),C=y.useRef("touch"),k=()=>{s||(u.onValueChange(r),u.onOpenChange(!1))};if(r==="")throw new Error("A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return a.jsx(sq,{scope:n,value:r,disabled:s,textId:w,isSelected:f,onItemTextChange:y.useCallback(N=>{m(T=>T||(N?.textContent??"").trim())},[]),children:a.jsx(Zh.ItemSlot,{scope:n,value:r,disabled:s,textValue:h,children:a.jsx(xt.div,{role:"option","aria-labelledby":w,"data-highlighted":g?"":void 0,"aria-selected":f&&g,"data-state":f?"checked":"unchecked","aria-disabled":s||void 0,"data-disabled":s?"":void 0,tabIndex:s?void 0:-1,...l,ref:b,onFocus:Ge(l.onFocus,()=>x(!0)),onBlur:Ge(l.onBlur,()=>x(!1)),onClick:Ge(l.onClick,()=>{C.current!=="mouse"&&k()}),onPointerUp:Ge(l.onPointerUp,()=>{C.current==="mouse"&&k()}),onPointerDown:Ge(l.onPointerDown,N=>{C.current=N.pointerType}),onPointerMove:Ge(l.onPointerMove,N=>{C.current=N.pointerType,s?d.onItemLeave?.():C.current==="mouse"&&N.currentTarget.focus({preventScroll:!0})}),onPointerLeave:Ge(l.onPointerLeave,N=>{N.currentTarget===document.activeElement&&d.onItemLeave?.()}),onKeyDown:Ge(l.onKeyDown,N=>{d.searchRef?.current!==""&&N.key===" "||(U8.includes(N.key)&&k(),N.key===" "&&N.preventDefault())})})})})});bR.displayName=ch;var Bu="SelectItemText",xR=y.forwardRef((e,t)=>{const{__scopeSelect:n,className:r,style:s,...o}=e,l=Xo(Bu,n),u=ei(Bu,n),d=yR(Bu,n),f=K8(Bu,n),[h,m]=y.useState(null),g=Xt(t,k=>m(k),d.onItemTextChange,k=>u.itemTextRefCallback?.(k,d.value,d.disabled)),x=h?.textContent,b=y.useMemo(()=>a.jsx("option",{value:d.value,disabled:d.disabled,children:x},d.value),[d.disabled,d.value,x]),{onNativeOptionAdd:w,onNativeOptionRemove:C}=f;return er(()=>(w(b),()=>C(b)),[w,C,b]),a.jsxs(a.Fragment,{children:[a.jsx(xt.span,{id:d.textId,...o,ref:g}),d.isSelected&&l.valueNode&&!l.valueNodeHasChildren?mc.createPortal(o.children,l.valueNode):null]})});xR.displayName=Bu;var wR="SelectItemIndicator",SR=y.forwardRef((e,t)=>{const{__scopeSelect:n,...r}=e;return yR(wR,n).isSelected?a.jsx(xt.span,{"aria-hidden":!0,...r,ref:t}):null});SR.displayName=wR;var vb="SelectScrollUpButton",CR=y.forwardRef((e,t)=>{const n=ei(vb,e.__scopeSelect),r=Qx(vb,e.__scopeSelect),[s,o]=y.useState(!1),l=Xt(t,r.onScrollButtonChange);return er(()=>{if(n.viewport&&n.isPositioned){let u=function(){const f=d.scrollTop>0;o(f)};const d=n.viewport;return u(),d.addEventListener("scroll",u),()=>d.removeEventListener("scroll",u)}},[n.viewport,n.isPositioned]),s?a.jsx(kR,{...e,ref:l,onAutoScroll:()=>{const{viewport:u,selectedItem:d}=n;u&&d&&(u.scrollTop=u.scrollTop-d.offsetHeight)}}):null});CR.displayName=vb;var yb="SelectScrollDownButton",jR=y.forwardRef((e,t)=>{const n=ei(yb,e.__scopeSelect),r=Qx(yb,e.__scopeSelect),[s,o]=y.useState(!1),l=Xt(t,r.onScrollButtonChange);return er(()=>{if(n.viewport&&n.isPositioned){let u=function(){const f=d.scrollHeight-d.clientHeight,h=Math.ceil(d.scrollTop)d.removeEventListener("scroll",u)}},[n.viewport,n.isPositioned]),s?a.jsx(kR,{...e,ref:l,onAutoScroll:()=>{const{viewport:u,selectedItem:d}=n;u&&d&&(u.scrollTop=u.scrollTop+d.offsetHeight)}}):null});jR.displayName=yb;var kR=y.forwardRef((e,t)=>{const{__scopeSelect:n,onAutoScroll:r,...s}=e,o=ei("SelectScrollButton",n),l=y.useRef(null),u=Xh(n),d=y.useCallback(()=>{l.current!==null&&(window.clearInterval(l.current),l.current=null)},[]);return y.useEffect(()=>()=>d(),[d]),er(()=>{u().find(h=>h.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:"nearest"})},[u]),a.jsx(xt.div,{"aria-hidden":!0,...s,ref:t,style:{flexShrink:0,...s.style},onPointerDown:Ge(s.onPointerDown,()=>{l.current===null&&(l.current=window.setInterval(r,50))}),onPointerMove:Ge(s.onPointerMove,()=>{o.onItemLeave?.(),l.current===null&&(l.current=window.setInterval(r,50))}),onPointerLeave:Ge(s.onPointerLeave,()=>{d()})})}),aq="SelectSeparator",oq=y.forwardRef((e,t)=>{const{__scopeSelect:n,...r}=e;return a.jsx(xt.div,{"aria-hidden":!0,...r,ref:t})});oq.displayName=aq;var bb="SelectArrow",iq=y.forwardRef((e,t)=>{const{__scopeSelect:n,...r}=e,s=em(n),o=Xo(bb,n),l=ei(bb,n);return o.open&&l.position==="popper"?a.jsx(SM,{...s,...r,ref:t}):null});iq.displayName=bb;var lq="SelectBubbleInput",ER=y.forwardRef(({__scopeSelect:e,value:t,...n},r)=>{const s=y.useRef(null),o=Xt(r,s),l=Jx(t);return y.useEffect(()=>{const u=s.current;if(!u)return;const d=window.HTMLSelectElement.prototype,h=Object.getOwnPropertyDescriptor(d,"value").set;if(l!==t&&h){const m=new Event("change",{bubbles:!0});h.call(u,t),u.dispatchEvent(m)}},[l,t]),a.jsx(xt.select,{...n,style:{...rR,...n.style},ref:o,defaultValue:t})});ER.displayName=lq;function NR(e){return e===""||e===void 0}function TR(e){const t=Qs(e),n=y.useRef(""),r=y.useRef(0),s=y.useCallback(l=>{const u=n.current+l;t(u),(function d(f){n.current=f,window.clearTimeout(r.current),f!==""&&(r.current=window.setTimeout(()=>d(""),1e3))})(u)},[t]),o=y.useCallback(()=>{n.current="",window.clearTimeout(r.current)},[]);return y.useEffect(()=>()=>window.clearTimeout(r.current),[]),[n,s,o]}function MR(e,t,n){const s=t.length>1&&Array.from(t).every(f=>f===t[0])?t[0]:t,o=n?e.indexOf(n):-1;let l=cq(e,Math.max(o,0));s.length===1&&(l=l.filter(f=>f!==n));const d=l.find(f=>f.textValue.toLowerCase().startsWith(s.toLowerCase()));return d!==n?d:void 0}function cq(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var uq=sR,dq=oR,fq=lR,pq=cR,hq=uR,mq=dR,gq=mR,vq=bR,yq=xR,bq=SR,xq=CR,wq=jR;function Mt({...e}){return a.jsx(uq,{"data-slot":"select",...e})}function _t({...e}){return a.jsx(fq,{"data-slot":"select-value",...e})}function Rt({className:e,size:t="default",children:n,...r}){return a.jsxs(dq,{"data-slot":"select-trigger","data-size":t,className:kt("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...r,children:[n,a.jsx(pq,{asChild:!0,children:a.jsx(f_,{className:"size-4 opacity-50"})})]})}function Pt({className:e,children:t,position:n="popper",...r}){return a.jsx(hq,{children:a.jsxs(mq,{"data-slot":"select-content",className:kt("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md",n==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:n,...r,children:[a.jsx(Sq,{}),a.jsx(gq,{className:kt("p-1",n==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:t}),a.jsx(Cq,{})]})})}function we({className:e,children:t,...n}){return a.jsxs(vq,{"data-slot":"select-item",className:kt("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",e),...n,children:[a.jsx("span",{className:"absolute right-2 flex size-3.5 items-center justify-center",children:a.jsx(bq,{children:a.jsx(Px,{className:"size-4"})})}),a.jsx(yq,{children:t})]})}function Sq({className:e,...t}){return a.jsx(xq,{"data-slot":"select-scroll-up-button",className:kt("flex cursor-default items-center justify-center py-1",e),...t,children:a.jsx(AV,{className:"size-4"})})}function Cq({className:e,...t}){return a.jsx(wq,{"data-slot":"select-scroll-down-button",className:kt("flex cursor-default items-center justify-center py-1",e),...t,children:a.jsx(f_,{className:"size-4"})})}var tm="Switch",[jq]=ea(tm),[kq,Eq]=jq(tm),_R=y.forwardRef((e,t)=>{const{__scopeSwitch:n,name:r,checked:s,defaultChecked:o,required:l,disabled:u,value:d="on",onCheckedChange:f,form:h,...m}=e,[g,x]=y.useState(null),b=Xt(t,T=>x(T)),w=y.useRef(!1),C=g?h||!!g.closest("form"):!0,[k,N]=Ba({prop:s,defaultProp:o??!1,onChange:f,caller:tm});return a.jsxs(kq,{scope:n,checked:k,disabled:u,children:[a.jsx(xt.button,{type:"button",role:"switch","aria-checked":k,"aria-required":l,"data-state":OR(k),"data-disabled":u?"":void 0,disabled:u,value:d,...m,ref:b,onClick:Ge(e.onClick,T=>{N(_=>!_),C&&(w.current=T.isPropagationStopped(),w.current||T.stopPropagation())})}),C&&a.jsx(IR,{control:g,bubbles:!w.current,name:r,value:d,checked:k,required:l,disabled:u,form:h,style:{transform:"translateX(-100%)"}})]})});_R.displayName=tm;var RR="SwitchThumb",PR=y.forwardRef((e,t)=>{const{__scopeSwitch:n,...r}=e,s=Eq(RR,n);return a.jsx(xt.span,{"data-state":OR(s.checked),"data-disabled":s.disabled?"":void 0,...r,ref:t})});PR.displayName=RR;var Nq="SwitchBubbleInput",IR=y.forwardRef(({__scopeSwitch:e,control:t,checked:n,bubbles:r=!0,...s},o)=>{const l=y.useRef(null),u=Xt(l,o),d=Jx(n),f=Sx(t);return y.useEffect(()=>{const h=l.current;if(!h)return;const m=window.HTMLInputElement.prototype,x=Object.getOwnPropertyDescriptor(m,"checked").set;if(d!==n&&x){const b=new Event("click",{bubbles:r});x.call(h,n),h.dispatchEvent(b)}},[d,n,r]),a.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:n,...s,tabIndex:-1,ref:u,style:{...s.style,...f,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});IR.displayName=Nq;function OR(e){return e?"checked":"unchecked"}var Tq=_R,Mq=PR;function jd({className:e,...t}){return a.jsx(Tq,{"data-slot":"switch",className:kt("peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",e),...t,children:a.jsx(Mq,{"data-slot":"switch-thumb",className:kt("bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0")})})}var AR=y.createContext({dragDropManager:void 0}),Ns;(function(e){e.SOURCE="SOURCE",e.TARGET="TARGET"})(Ns||(Ns={}));function Tt(e,t){for(var n=arguments.length,r=new Array(n>2?n-2:0),s=2;s-1})}var Oq={type:Yx,payload:{clientOffset:null,sourceClientOffset:null}};function Aq(e){return function(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{publishSource:!0},s=r.publishSource,o=s===void 0?!0:s,l=r.clientOffset,u=r.getSourceClientOffset,d=e.getMonitor(),f=e.getRegistry();e.dispatch(dj(l)),Dq(n,d,f);var h=$q(n,d);if(h===null){e.dispatch(Oq);return}var m=null;if(l){if(!u)throw new Error("getSourceClientOffset must be defined");Fq(u),m=u(h)}e.dispatch(dj(l,m));var g=f.getSource(h),x=g.beginDrag(d,h);if(x!=null){Lq(x),f.pinSource(h);var b=f.getSourceType(h);return{type:nm,payload:{itemType:b,item:x,sourceId:h,clientOffset:l||null,sourceClientOffset:m||null,isSourcePublic:!!o}}}}}function Dq(e,t,n){Tt(!t.isDragging(),"Cannot call beginDrag while dragging."),e.forEach(function(r){Tt(n.getSource(r),"Expected sourceIds to be registered.")})}function Fq(e){Tt(typeof e=="function","When clientOffset is provided, getSourceClientOffset must be a function.")}function Lq(e){Tt(DR(e),"Item must be an object.")}function $q(e,t){for(var n=null,r=e.length-1;r>=0;r--)if(t.canDragSource(e[r])){n=e[r];break}return n}function Bq(e){return function(){var n=e.getMonitor();if(n.isDragging())return{type:Zx}}}function xb(e,t){return t===null?e===null:Array.isArray(e)?e.some(function(n){return n===t}):e===t}function zq(e){return function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s=r.clientOffset;Uq(n);var o=n.slice(0),l=e.getMonitor(),u=e.getRegistry();Vq(o,l,u);var d=l.getItemType();return qq(o,u,d),Hq(o,l,u),{type:rm,payload:{targetIds:o,clientOffset:s||null}}}}function Uq(e){Tt(Array.isArray(e),"Expected targetIds to be an array.")}function Vq(e,t,n){Tt(t.isDragging(),"Cannot call hover while not dragging."),Tt(!t.didDrop(),"Cannot call hover after drop.");for(var r=0;r=0;r--){var s=e[r],o=t.getTargetType(s);xb(o,n)||e.splice(r,1)}}function Hq(e,t,n){e.forEach(function(r){var s=n.getTarget(r);s.hover(t,r)})}function fj(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,r)}return n}function pj(e){for(var t=1;t0&&arguments[0]!==void 0?arguments[0]:{},r=e.getMonitor(),s=e.getRegistry();Gq(r);var o=Yq(r);o.forEach(function(l,u){var d=Jq(l,u,s,r),f={type:sm,payload:{dropResult:pj(pj({},n),d)}};e.dispatch(f)})}}function Gq(e){Tt(e.isDragging(),"Cannot call drop while not dragging."),Tt(!e.didDrop(),"Cannot call drop twice during one drag operation.")}function Jq(e,t,n,r){var s=n.getTarget(e),o=s?s.drop(r,e):void 0;return Qq(o),typeof o>"u"&&(o=t===0?{}:r.getDropResult()),o}function Qq(e){Tt(typeof e>"u"||DR(e),"Drop result must either be an object or undefined.")}function Yq(e){var t=e.getTargetIds().filter(e.canDropOnTarget,e);return t.reverse(),t}function Zq(e){return function(){var n=e.getMonitor(),r=e.getRegistry();Xq(n);var s=n.getSourceId();if(s!=null){var o=r.getSource(s,!0);o.endDrag(n,s),r.unpinSource()}return{type:am}}}function Xq(e){Tt(e.isDragging(),"Cannot call endDrag while not dragging.")}function eH(e){return{beginDrag:Aq(e),publishDragSource:Bq(e),hover:zq(e),drop:Wq(e),endDrag:Zq(e)}}function tH(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function nH(e,t){for(var n=0;n0;r.backend&&(s&&!r.isSetUp?(r.backend.setup(),r.isSetUp=!0):!s&&r.isSetUp&&(r.backend.teardown(),r.isSetUp=!1))}),this.store=t,this.monitor=n,t.subscribe(this.handleRefCountChange)}return rH(e,[{key:"receiveBackend",value:function(n){this.backend=n}},{key:"getMonitor",value:function(){return this.monitor}},{key:"getBackend",value:function(){return this.backend}},{key:"getRegistry",value:function(){return this.monitor.registry}},{key:"getActions",value:function(){var n=this,r=this.store.dispatch;function s(l){return function(){for(var u=arguments.length,d=new Array(u),f=0;f"u"&&(n=t,t=void 0),typeof n<"u"){if(typeof n!="function")throw new Error(js(1));return n(FR)(e,t)}if(typeof e!="function")throw new Error(js(2));var s=e,o=t,l=[],u=l,d=!1;function f(){u===l&&(u=l.slice())}function h(){if(d)throw new Error(js(3));return o}function m(w){if(typeof w!="function")throw new Error(js(4));if(d)throw new Error(js(5));var C=!0;return f(),u.push(w),function(){if(C){if(d)throw new Error(js(6));C=!1,f();var N=u.indexOf(w);u.splice(N,1),l=null}}}function g(w){if(!aH(w))throw new Error(js(7));if(typeof w.type>"u")throw new Error(js(8));if(d)throw new Error(js(9));try{d=!0,o=s(o,w)}finally{d=!1}for(var C=l=u,k=0;k2&&arguments[2]!==void 0?arguments[2]:oH;if(e.length!==t.length)return!1;for(var r=0;r0&&arguments[0]!==void 0?arguments[0]:bj,t=arguments.length>1?arguments[1]:void 0,n=t.payload;switch(t.type){case Yx:case nm:return{initialSourceClientOffset:n.sourceClientOffset,initialClientOffset:n.clientOffset,clientOffset:n.clientOffset};case rm:return iH(e.clientOffset,n.clientOffset)?e:yj(yj({},e),{},{clientOffset:n.clientOffset});case am:case sm:return bj;default:return e}}var Xx="dnd-core/ADD_SOURCE",ew="dnd-core/ADD_TARGET",tw="dnd-core/REMOVE_SOURCE",om="dnd-core/REMOVE_TARGET";function dH(e){return{type:Xx,payload:{sourceId:e}}}function fH(e){return{type:ew,payload:{targetId:e}}}function pH(e){return{type:tw,payload:{sourceId:e}}}function hH(e){return{type:om,payload:{targetId:e}}}function xj(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,r)}return n}function ks(e){for(var t=1;t0&&arguments[0]!==void 0?arguments[0]:gH,t=arguments.length>1?arguments[1]:void 0,n=t.payload;switch(t.type){case nm:return ks(ks({},e),{},{itemType:n.itemType,item:n.item,sourceId:n.sourceId,isSourcePublic:n.isSourcePublic,dropResult:null,didDrop:!1});case Zx:return ks(ks({},e),{},{isSourcePublic:!0});case rm:return ks(ks({},e),{},{targetIds:n.targetIds});case om:return e.targetIds.indexOf(n.targetId)===-1?e:ks(ks({},e),{},{targetIds:Rq(e.targetIds,n.targetId)});case sm:return ks(ks({},e),{},{dropResult:n.dropResult,didDrop:!0,targetIds:[]});case am:return ks(ks({},e),{},{itemType:null,item:null,sourceId:null,dropResult:null,didDrop:!1,isSourcePublic:null,targetIds:[]});default:return e}}function yH(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case Xx:case ew:return e+1;case tw:case om:return e-1;default:return e}}var uh=[],nw=[];uh.__IS_NONE__=!0;nw.__IS_ALL__=!0;function bH(e,t){if(e===uh)return!1;if(e===nw||typeof t>"u")return!0;var n=Iq(t,e);return n.length>0}function xH(){var e=arguments.length>1?arguments[1]:void 0;switch(e.type){case rm:break;case Xx:case ew:case om:case tw:return uh;case nm:case Zx:case am:case sm:default:return nw}var t=e.payload,n=t.targetIds,r=n===void 0?[]:n,s=t.prevTargetIds,o=s===void 0?[]:s,l=Pq(r,o),u=l.length>0||!lH(r,o);if(!u)return uh;var d=o[o.length-1],f=r[r.length-1];return d!==f&&(d&&l.push(d),f&&l.push(f)),l}function wH(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e+1}function wj(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,r)}return n}function Sj(e){for(var t=1;t0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;return{dirtyHandlerIds:xH(e.dirtyHandlerIds,{type:t.type,payload:Sj(Sj({},t.payload),{},{prevTargetIds:_q(e,"dragOperation.targetIds",[])})}),dragOffset:uH(e.dragOffset,t),refCount:yH(e.refCount,t),dragOperation:vH(e.dragOperation,t),stateId:wH(e.stateId)}}function jH(e,t){return{x:e.x+t.x,y:e.y+t.y}}function LR(e,t){return{x:e.x-t.x,y:e.y-t.y}}function kH(e){var t=e.clientOffset,n=e.initialClientOffset,r=e.initialSourceClientOffset;return!t||!n||!r?null:LR(jH(t,r),n)}function EH(e){var t=e.clientOffset,n=e.initialClientOffset;return!t||!n?null:LR(t,n)}function NH(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function TH(e,t){for(var n=0;n1&&arguments[1]!==void 0?arguments[1]:{handlerIds:void 0},o=s.handlerIds;Tt(typeof n=="function","listener must be a function."),Tt(typeof o>"u"||Array.isArray(o),"handlerIds, when specified, must be an array of strings.");var l=this.store.getState().stateId,u=function(){var f=r.store.getState(),h=f.stateId;try{var m=h===l||h===l+1&&!bH(f.dirtyHandlerIds,o);m||n()}finally{l=h}};return this.store.subscribe(u)}},{key:"subscribeToOffsetChange",value:function(n){var r=this;Tt(typeof n=="function","listener must be a function.");var s=this.store.getState().dragOffset,o=function(){var u=r.store.getState().dragOffset;u!==s&&(s=u,n())};return this.store.subscribe(o)}},{key:"canDragSource",value:function(n){if(!n)return!1;var r=this.registry.getSource(n);return Tt(r,"Expected to find a valid source. sourceId=".concat(n)),this.isDragging()?!1:r.canDrag(this,n)}},{key:"canDropOnTarget",value:function(n){if(!n)return!1;var r=this.registry.getTarget(n);if(Tt(r,"Expected to find a valid target. targetId=".concat(n)),!this.isDragging()||this.didDrop())return!1;var s=this.registry.getTargetType(n),o=this.getItemType();return xb(s,o)&&r.canDrop(this,n)}},{key:"isDragging",value:function(){return!!this.getItemType()}},{key:"isDraggingSource",value:function(n){if(!n)return!1;var r=this.registry.getSource(n,!0);if(Tt(r,"Expected to find a valid source. sourceId=".concat(n)),!this.isDragging()||!this.isSourcePublic())return!1;var s=this.registry.getSourceType(n),o=this.getItemType();return s!==o?!1:r.isDragging(this,n)}},{key:"isOverTarget",value:function(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{shallow:!1};if(!n)return!1;var s=r.shallow;if(!this.isDragging())return!1;var o=this.registry.getTargetType(n),l=this.getItemType();if(l&&!xb(o,l))return!1;var u=this.getTargetIds();if(!u.length)return!1;var d=u.indexOf(n);return s?d===u.length-1:d>-1}},{key:"getItemType",value:function(){return this.store.getState().dragOperation.itemType}},{key:"getItem",value:function(){return this.store.getState().dragOperation.item}},{key:"getSourceId",value:function(){return this.store.getState().dragOperation.sourceId}},{key:"getTargetIds",value:function(){return this.store.getState().dragOperation.targetIds}},{key:"getDropResult",value:function(){return this.store.getState().dragOperation.dropResult}},{key:"didDrop",value:function(){return this.store.getState().dragOperation.didDrop}},{key:"isSourcePublic",value:function(){return!!this.store.getState().dragOperation.isSourcePublic}},{key:"getInitialClientOffset",value:function(){return this.store.getState().dragOffset.initialClientOffset}},{key:"getInitialSourceClientOffset",value:function(){return this.store.getState().dragOffset.initialSourceClientOffset}},{key:"getClientOffset",value:function(){return this.store.getState().dragOffset.clientOffset}},{key:"getSourceClientOffset",value:function(){return kH(this.store.getState().dragOffset)}},{key:"getDifferenceFromInitialOffset",value:function(){return EH(this.store.getState().dragOffset)}}]),e})(),RH=0;function PH(){return RH++}function jp(e){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?jp=function(n){return typeof n}:jp=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},jp(e)}function IH(e){Tt(typeof e.canDrag=="function","Expected canDrag to be a function."),Tt(typeof e.beginDrag=="function","Expected beginDrag to be a function."),Tt(typeof e.endDrag=="function","Expected endDrag to be a function.")}function OH(e){Tt(typeof e.canDrop=="function","Expected canDrop to be a function."),Tt(typeof e.hover=="function","Expected hover to be a function."),Tt(typeof e.drop=="function","Expected beginDrag to be a function.")}function wb(e,t){if(t&&Array.isArray(e)){e.forEach(function(n){return wb(n,!1)});return}Tt(typeof e=="string"||jp(e)==="symbol",t?"Type can only be a string, a symbol, or an array of either.":"Type can only be a string or a symbol.")}const jj=typeof global<"u"?global:self,$R=jj.MutationObserver||jj.WebKitMutationObserver;function BR(e){return function(){const n=setTimeout(s,0),r=setInterval(s,50);function s(){clearTimeout(n),clearInterval(r),e()}}}function AH(e){let t=1;const n=new $R(e),r=document.createTextNode("");return n.observe(r,{characterData:!0}),function(){t=-t,r.data=t}}const DH=typeof $R=="function"?AH:BR;class FH{enqueueTask(t){const{queue:n,requestFlush:r}=this;n.length||(r(),this.flushing=!0),n[n.length]=t}constructor(){this.queue=[],this.pendingErrors=[],this.flushing=!1,this.index=0,this.capacity=1024,this.flush=()=>{const{queue:t}=this;for(;this.indexthis.capacity){for(let r=0,s=t.length-this.index;r{this.pendingErrors.push(t),this.requestErrorThrow()},this.requestFlush=DH(this.flush),this.requestErrorThrow=BR(()=>{if(this.pendingErrors.length)throw this.pendingErrors.shift()})}}class LH{call(){try{this.task&&this.task()}catch(t){this.onError(t)}finally{this.task=null,this.release(this)}}constructor(t,n){this.onError=t,this.release=n,this.task=null}}class $H{create(t){const n=this.freeTasks,r=n.length?n.pop():new LH(this.onError,s=>n[n.length]=s);return r.task=t,r}constructor(t){this.onError=t,this.freeTasks=[]}}const zR=new FH,BH=new $H(zR.registerPendingError);function zH(e){zR.enqueueTask(BH.create(e))}function UH(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function VH(e,t){for(var n=0;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n1&&arguments[1]!==void 0?arguments[1]:!1;Tt(this.isSourceId(n),"Expected a valid source ID.");var s=r&&n===this.pinnedSourceId,o=s?this.pinnedSource:this.dragSources.get(n);return o}},{key:"getTarget",value:function(n){return Tt(this.isTargetId(n),"Expected a valid target ID."),this.dropTargets.get(n)}},{key:"getSourceType",value:function(n){return Tt(this.isSourceId(n),"Expected a valid source ID."),this.types.get(n)}},{key:"getTargetType",value:function(n){return Tt(this.isTargetId(n),"Expected a valid target ID."),this.types.get(n)}},{key:"isSourceId",value:function(n){var r=Ej(n);return r===Ns.SOURCE}},{key:"isTargetId",value:function(n){var r=Ej(n);return r===Ns.TARGET}},{key:"removeSource",value:function(n){var r=this;Tt(this.getSource(n),"Expected an existing source."),this.store.dispatch(pH(n)),zH(function(){r.dragSources.delete(n),r.types.delete(n)})}},{key:"removeTarget",value:function(n){Tt(this.getTarget(n),"Expected an existing target."),this.store.dispatch(hH(n)),this.dropTargets.delete(n),this.types.delete(n)}},{key:"pinSource",value:function(n){var r=this.getSource(n);Tt(r,"Expected an existing source."),this.pinnedSourceId=n,this.pinnedSource=r}},{key:"unpinSource",value:function(){Tt(this.pinnedSource,"No source is pinned at the time."),this.pinnedSourceId=null,this.pinnedSource=null}},{key:"addHandler",value:function(n,r,s){var o=QH(n);return this.types.set(o,r),n===Ns.SOURCE?this.dragSources.set(o,s):n===Ns.TARGET&&this.dropTargets.set(o,s),o}}]),e})();function ZH(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:void 0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,s=XH(r),o=new _H(s,new YH(s)),l=new sH(s,o),u=e(l,t,n);return l.receiveBackend(u),l}function XH(e){var t=typeof window<"u"&&window.__REDUX_DEVTOOLS_EXTENSION__;return FR(CH,e&&t&&t({name:"dnd-core",instanceId:"dnd-core"}))}var e9=["children"];function t9(e,t){return a9(e)||s9(e,t)||r9(e,t)||n9()}function n9(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function r9(e,t){if(e){if(typeof e=="string")return Tj(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Tj(e,t)}}function Tj(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function i9(e,t){if(e==null)return{};var n={},r=Object.keys(e),s,o;for(o=0;o=0)&&(n[s]=e[s]);return n}var Mj=0,kp=Symbol.for("__REACT_DND_CONTEXT_INSTANCE__"),l9=y.memo(function(t){var n=t.children,r=o9(t,e9),s=c9(r),o=t9(s,2),l=o[0],u=o[1];return y.useEffect(function(){if(u){var d=UR();return++Mj,function(){--Mj===0&&(d[kp]=null)}}},[]),a.jsx(AR.Provider,Object.assign({value:l},{children:n}),void 0)});function c9(e){if("manager"in e){var t={dragDropManager:e.manager};return[t,!1]}var n=u9(e.backend,e.context,e.options,e.debugMode),r=!e.context;return[n,r]}function u9(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:UR(),n=arguments.length>2?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0,s=t;return s[kp]||(s[kp]={dragDropManager:ZH(e,t,n,r)}),s[kp]}function UR(){return typeof global<"u"?global:window}function d9(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function f9(e,t){for(var n=0;n, or turn it into a ")+"drag source or a drop target itself.")}}function x9(e){return function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(!y.isValidElement(t)){var r=t;return e(r,n),r}var s=t;b9(s);var o=n?function(l){return e(l,n)}:e;return w9(s,o)}}function VR(e){var t={};return Object.keys(e).forEach(function(n){var r=e[n];if(n.endsWith("Ref"))t[n]=e[n];else{var s=x9(r);t[n]=function(){return s}}}),t}function Pj(e,t){typeof e=="function"?e(t):e.current=t}function w9(e,t){var n=e.ref;return Tt(typeof n!="string","Cannot connect React DnD to an element with an existing string ref. Please convert it to use a callback ref instead, or wrap it into a or
. Read more: https://reactjs.org/docs/refs-and-the-dom.html#callback-refs"),n?y.cloneElement(e,{ref:function(s){Pj(n,s),Pj(t,s)}}):y.cloneElement(e,{ref:t})}function Ep(e){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Ep=function(n){return typeof n}:Ep=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},Ep(e)}function Sb(e){return e!==null&&Ep(e)==="object"&&Object.prototype.hasOwnProperty.call(e,"current")}function Cb(e,t,n,r){var s=void 0;if(s!==void 0)return!!s;if(e===t)return!0;if(typeof e!="object"||!e||typeof t!="object"||!t)return!1;var o=Object.keys(e),l=Object.keys(t);if(o.length!==l.length)return!1;for(var u=Object.prototype.hasOwnProperty.bind(t),d=0;de.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n0}},{key:"leave",value:function(n){var r=this.entered.length;return this.entered=R7(this.entered.filter(this.isNodeInDocument),n),r>0&&this.entered.length===0}},{key:"reset",value:function(){this.entered=[]}}]),e})(),F7=KR(function(){return/firefox/i.test(navigator.userAgent)}),WR=KR(function(){return!!window.safari});function L7(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function $7(e,t){for(var n=0;nn)h=m-1;else return s[m]}d=Math.max(0,h);var x=n-r[d],b=x*x;return s[d]+o[d]*x+l[d]*b+u[d]*x*b}}]),e})(),z7=1;function GR(e){var t=e.nodeType===z7?e:e.parentElement;if(!t)return null;var n=t.getBoundingClientRect(),r=n.top,s=n.left;return{x:s,y:r}}function Gf(e){return{x:e.clientX,y:e.clientY}}function U7(e){var t;return e.nodeName==="IMG"&&(F7()||!((t=document.documentElement)!==null&&t!==void 0&&t.contains(e)))}function V7(e,t,n,r){var s=e?t.width:n,o=e?t.height:r;return WR()&&e&&(o/=window.devicePixelRatio,s/=window.devicePixelRatio),{dragPreviewWidth:s,dragPreviewHeight:o}}function q7(e,t,n,r,s){var o=U7(t),l=o?e:t,u=GR(l),d={x:n.x-u.x,y:n.y-u.y},f=e.offsetWidth,h=e.offsetHeight,m=r.anchorX,g=r.anchorY,x=V7(o,t,f,h),b=x.dragPreviewWidth,w=x.dragPreviewHeight,C=function(){var A=new Bj([0,.5,1],[d.y,d.y/h*w,d.y+w-h]),O=A.interpolate(g);return WR()&&o&&(O+=(window.devicePixelRatio-1)*w),O},k=function(){var A=new Bj([0,.5,1],[d.x,d.x/f*b,d.x+b-f]);return A.interpolate(m)},N=s.offsetX,T=s.offsetY,_=N===0||N,I=T===0||T;return{x:_?N:k(),y:I?T:C()}}var JR="__NATIVE_FILE__",QR="__NATIVE_URL__",YR="__NATIVE_TEXT__",ZR="__NATIVE_HTML__";const zj=Object.freeze(Object.defineProperty({__proto__:null,FILE:JR,HTML:ZR,TEXT:YR,URL:QR},Symbol.toStringTag,{value:"Module"}));function qv(e,t,n){var r=t.reduce(function(s,o){return s||e.getData(o)},"");return r??n}var Dl;function Jf(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var kb=(Dl={},Jf(Dl,JR,{exposeProperties:{files:function(t){return Array.prototype.slice.call(t.files)},items:function(t){return t.items},dataTransfer:function(t){return t}},matchesTypes:["Files"]}),Jf(Dl,ZR,{exposeProperties:{html:function(t,n){return qv(t,n,"")},dataTransfer:function(t){return t}},matchesTypes:["Html","text/html"]}),Jf(Dl,QR,{exposeProperties:{urls:function(t,n){return qv(t,n,"").split(` +`)},dataTransfer:function(t){return t}},matchesTypes:["Url","text/uri-list"]}),Jf(Dl,YR,{exposeProperties:{text:function(t,n){return qv(t,n,"")},dataTransfer:function(t){return t}},matchesTypes:["Text","text/plain"]}),Dl);function H7(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function K7(e,t){for(var n=0;n-1})})[0]||null}function Q7(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Y7(e,t){for(var n=0;n0&&s.actions.hover(l,{clientOffset:Gf(o)});var u=l.some(function(d){return s.monitor.canDropOnTarget(d)});u&&(o.preventDefault(),o.dataTransfer&&(o.dataTransfer.dropEffect=s.getCurrentDropEffect()))}}),zt(this,"handleTopDragOverCapture",function(){s.dragOverTargetIds=[]}),zt(this,"handleTopDragOver",function(o){var l=s.dragOverTargetIds;if(s.dragOverTargetIds=[],!s.monitor.isDragging()){o.preventDefault(),o.dataTransfer&&(o.dataTransfer.dropEffect="none");return}s.altKeyPressed=o.altKey,s.lastClientOffset=Gf(o),s.hoverRafId===null&&typeof requestAnimationFrame<"u"&&(s.hoverRafId=requestAnimationFrame(function(){s.monitor.isDragging()&&s.actions.hover(l||[],{clientOffset:s.lastClientOffset}),s.hoverRafId=null}));var u=(l||[]).some(function(d){return s.monitor.canDropOnTarget(d)});u?(o.preventDefault(),o.dataTransfer&&(o.dataTransfer.dropEffect=s.getCurrentDropEffect())):s.isDraggingNativeItem()?o.preventDefault():(o.preventDefault(),o.dataTransfer&&(o.dataTransfer.dropEffect="none"))}),zt(this,"handleTopDragLeaveCapture",function(o){s.isDraggingNativeItem()&&o.preventDefault();var l=s.enterLeaveCounter.leave(o.target);l&&s.isDraggingNativeItem()&&setTimeout(function(){return s.endDragNativeItem()},0)}),zt(this,"handleTopDropCapture",function(o){if(s.dropTargetIds=[],s.isDraggingNativeItem()){var l;o.preventDefault(),(l=s.currentNativeSource)===null||l===void 0||l.loadDataTransfer(o.dataTransfer)}else Hv(o.dataTransfer)&&o.preventDefault();s.enterLeaveCounter.reset()}),zt(this,"handleTopDrop",function(o){var l=s.dropTargetIds;s.dropTargetIds=[],s.actions.hover(l,{clientOffset:Gf(o)}),s.actions.drop({dropEffect:s.getCurrentDropEffect()}),s.isDraggingNativeItem()?s.endDragNativeItem():s.monitor.isDragging()&&s.actions.endDrag()}),zt(this,"handleSelectStart",function(o){var l=o.target;typeof l.dragDrop=="function"&&(l.tagName==="INPUT"||l.tagName==="SELECT"||l.tagName==="TEXTAREA"||l.isContentEditable||(o.preventDefault(),l.dragDrop()))}),this.options=new X7(n,r),this.actions=t.getActions(),this.monitor=t.getMonitor(),this.registry=t.getRegistry(),this.enterLeaveCounter=new D7(this.isNodeInDocument)}return nK(e,[{key:"profile",value:function(){var n,r;return{sourcePreviewNodes:this.sourcePreviewNodes.size,sourcePreviewNodeOptions:this.sourcePreviewNodeOptions.size,sourceNodeOptions:this.sourceNodeOptions.size,sourceNodes:this.sourceNodes.size,dragStartSourceIds:((n=this.dragStartSourceIds)===null||n===void 0?void 0:n.length)||0,dropTargetIds:this.dropTargetIds.length,dragEnterTargetIds:this.dragEnterTargetIds.length,dragOverTargetIds:((r=this.dragOverTargetIds)===null||r===void 0?void 0:r.length)||0}}},{key:"window",get:function(){return this.options.window}},{key:"document",get:function(){return this.options.document}},{key:"rootElement",get:function(){return this.options.rootElement}},{key:"setup",value:function(){var n=this.rootElement;if(n!==void 0){if(n.__isReactDndBackendSetUp)throw new Error("Cannot have two HTML5 backends at the same time.");n.__isReactDndBackendSetUp=!0,this.addEventListeners(n)}}},{key:"teardown",value:function(){var n=this.rootElement;if(n!==void 0&&(n.__isReactDndBackendSetUp=!1,this.removeEventListeners(this.rootElement),this.clearCurrentDragSourceNode(),this.asyncEndDragFrameId)){var r;(r=this.window)===null||r===void 0||r.cancelAnimationFrame(this.asyncEndDragFrameId)}}},{key:"connectDragPreview",value:function(n,r,s){var o=this;return this.sourcePreviewNodeOptions.set(n,s),this.sourcePreviewNodes.set(n,r),function(){o.sourcePreviewNodes.delete(n),o.sourcePreviewNodeOptions.delete(n)}}},{key:"connectDragSource",value:function(n,r,s){var o=this;this.sourceNodes.set(n,r),this.sourceNodeOptions.set(n,s);var l=function(f){return o.handleDragStart(f,n)},u=function(f){return o.handleSelectStart(f)};return r.setAttribute("draggable","true"),r.addEventListener("dragstart",l),r.addEventListener("selectstart",u),function(){o.sourceNodes.delete(n),o.sourceNodeOptions.delete(n),r.removeEventListener("dragstart",l),r.removeEventListener("selectstart",u),r.setAttribute("draggable","false")}}},{key:"connectDropTarget",value:function(n,r){var s=this,o=function(f){return s.handleDragEnter(f,n)},l=function(f){return s.handleDragOver(f,n)},u=function(f){return s.handleDrop(f,n)};return r.addEventListener("dragenter",o),r.addEventListener("dragover",l),r.addEventListener("drop",u),function(){r.removeEventListener("dragenter",o),r.removeEventListener("dragover",l),r.removeEventListener("drop",u)}}},{key:"addEventListeners",value:function(n){n.addEventListener&&(n.addEventListener("dragstart",this.handleTopDragStart),n.addEventListener("dragstart",this.handleTopDragStartCapture,!0),n.addEventListener("dragend",this.handleTopDragEndCapture,!0),n.addEventListener("dragenter",this.handleTopDragEnter),n.addEventListener("dragenter",this.handleTopDragEnterCapture,!0),n.addEventListener("dragleave",this.handleTopDragLeaveCapture,!0),n.addEventListener("dragover",this.handleTopDragOver),n.addEventListener("dragover",this.handleTopDragOverCapture,!0),n.addEventListener("drop",this.handleTopDrop),n.addEventListener("drop",this.handleTopDropCapture,!0))}},{key:"removeEventListeners",value:function(n){n.removeEventListener&&(n.removeEventListener("dragstart",this.handleTopDragStart),n.removeEventListener("dragstart",this.handleTopDragStartCapture,!0),n.removeEventListener("dragend",this.handleTopDragEndCapture,!0),n.removeEventListener("dragenter",this.handleTopDragEnter),n.removeEventListener("dragenter",this.handleTopDragEnterCapture,!0),n.removeEventListener("dragleave",this.handleTopDragLeaveCapture,!0),n.removeEventListener("dragover",this.handleTopDragOver),n.removeEventListener("dragover",this.handleTopDragOverCapture,!0),n.removeEventListener("drop",this.handleTopDrop),n.removeEventListener("drop",this.handleTopDropCapture,!0))}},{key:"getCurrentSourceNodeOptions",value:function(){var n=this.monitor.getSourceId(),r=this.sourceNodeOptions.get(n);return qj({dropEffect:this.altKeyPressed?"copy":"move"},r||{})}},{key:"getCurrentDropEffect",value:function(){return this.isDraggingNativeItem()?"copy":this.getCurrentSourceNodeOptions().dropEffect}},{key:"getCurrentSourcePreviewNodeOptions",value:function(){var n=this.monitor.getSourceId(),r=this.sourcePreviewNodeOptions.get(n);return qj({anchorX:.5,anchorY:.5,captureDraggingState:!1},r||{})}},{key:"isDraggingNativeItem",value:function(){var n=this.monitor.getItemType();return Object.keys(zj).some(function(r){return zj[r]===n})}},{key:"beginDragNativeItem",value:function(n,r){this.clearCurrentDragSourceNode(),this.currentNativeSource=J7(n,r),this.currentNativeHandle=this.registry.addSource(n,this.currentNativeSource),this.actions.beginDrag([this.currentNativeHandle])}},{key:"setCurrentDragSourceNode",value:function(n){var r=this;this.clearCurrentDragSourceNode(),this.currentDragSourceNode=n;var s=1e3;this.mouseMoveTimeoutTimer=setTimeout(function(){var o;return(o=r.rootElement)===null||o===void 0?void 0:o.addEventListener("mousemove",r.endDragIfSourceWasRemovedFromDOM,!0)},s)}},{key:"clearCurrentDragSourceNode",value:function(){if(this.currentDragSourceNode){if(this.currentDragSourceNode=null,this.rootElement){var n;(n=this.window)===null||n===void 0||n.clearTimeout(this.mouseMoveTimeoutTimer||void 0),this.rootElement.removeEventListener("mousemove",this.endDragIfSourceWasRemovedFromDOM,!0)}return this.mouseMoveTimeoutTimer=null,!0}return!1}},{key:"handleDragStart",value:function(n,r){n.defaultPrevented||(this.dragStartSourceIds||(this.dragStartSourceIds=[]),this.dragStartSourceIds.unshift(r))}},{key:"handleDragEnter",value:function(n,r){this.dragEnterTargetIds.unshift(r)}},{key:"handleDragOver",value:function(n,r){this.dragOverTargetIds===null&&(this.dragOverTargetIds=[]),this.dragOverTargetIds.unshift(r)}},{key:"handleDrop",value:function(n,r){this.dropTargetIds.unshift(r)}}]),e})(),sK=function(t,n,r){return new rK(t,n,r)},aK=Object.create,XR=Object.defineProperty,oK=Object.getOwnPropertyDescriptor,eP=Object.getOwnPropertyNames,iK=Object.getPrototypeOf,lK=Object.prototype.hasOwnProperty,cK=(e,t)=>function(){return t||(0,e[eP(e)[0]])((t={exports:{}}).exports,t),t.exports},uK=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of eP(t))!lK.call(e,s)&&s!==n&&XR(e,s,{get:()=>t[s],enumerable:!(r=oK(t,s))||r.enumerable});return e},tP=(e,t,n)=>(n=e!=null?aK(iK(e)):{},uK(XR(n,"default",{value:e,enumerable:!0}),e)),nP=cK({"node_modules/classnames/index.js"(e,t){(function(){var n={}.hasOwnProperty;function r(){for(var s=[],o=0;o-1}var yW=vW,bW=9007199254740991,xW=/^(?:0|[1-9]\d*)$/;function wW(e,t){var n=typeof e;return t=t??bW,!!t&&(n=="number"||n!="symbol"&&xW.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=jW}var cP=kW;function EW(e){return e!=null&&cP(e.length)&&!iP(e)}var NW=EW,TW=Object.prototype;function MW(e){var t=e&&e.constructor,n=typeof t=="function"&&t.prototype||TW;return e===n}var _W=MW;function RW(e,t){for(var n=-1,r=Array(e);++n-1}var lJ=iJ;function cJ(e,t){var n=this.__data__,r=im(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}var uJ=cJ;function Rc(e){var t=-1,n=e==null?0:e.length;for(this.clear();++tu))return!1;var f=o.get(e),h=o.get(t);if(f&&h)return f==t&&h==e;var m=-1,g=!0,x=n&vQ?new gP:void 0;for(o.set(e,t),o.set(t,e);++m":">",'"':""","'":"'"},QQ=MJ(JQ),YQ=QQ,xP=/[&<>"']/g,ZQ=RegExp(xP.source);function XQ(e){return e=mP(e),e&&ZQ.test(e)?e.replace(xP,YQ):e}var eY=XQ,wP=/[\\^$.*+?()[\]{}|]/g,tY=RegExp(wP.source);function nY(e){return e=mP(e),e&&tY.test(e)?e.replace(wP,"\\$&"):e}var rY=nY;function sY(e,t){return KQ(e,t)}var aY=sY,oY=1/0,iY=Ql&&1/rw(new Ql([,-0]))[1]==oY?function(e){return new Ql(e)}:lW,lY=iY,cY=200;function uY(e,t,n){var r=-1,s=yW,o=e.length,l=!0,u=[],d=u;if(n)l=!1,s=GQ;else if(o>=cY){var f=t?null:lY(e);if(f)return rw(f);l=!1,s=vP,d=new gP}else d=t?[]:u;e:for(;++ra.jsx("button",{className:e.classNames.clearAll,onClick:e.onClick,children:"Clear all"}),mY=hY,gY=(e,t)=>{const n=t.offsetHeight,r=e.offsetHeight,s=e.offsetTop-t.scrollTop;s+r>=n?t.scrollTop+=s-n+r:s<0&&(t.scrollTop+=s)},_b=(e,t,n,r)=>typeof r=="function"?r(e):e.length>=t&&n,vY=e=>{const t=y.createRef(),{labelField:n,minQueryLength:r,isFocused:s,classNames:o,selectedIndex:l,query:u}=e;y.useEffect(()=>{if(!t.current)return;const m=t.current.querySelector(`.${o.activeSuggestion}`);m&&gY(m,t.current)},[l]);const d=(m,g)=>{const x=g.trim().replace(/[-\\^$*+?.()|[\]{}]/g,"\\$&"),{[n]:b}=m;return{__html:b.replace(RegExp(x,"gi"),w=>`${eY(w)}`)}},f=(m,g)=>typeof e.renderSuggestion=="function"?e.renderSuggestion(m,g):a.jsx("span",{dangerouslySetInnerHTML:d(m,g)}),h=e.suggestions.map((m,g)=>a.jsx("li",{onMouseDown:e.handleClick.bind(null,g),onTouchStart:e.handleClick.bind(null,g),onMouseOver:e.handleHover.bind(null,g),className:g===e.selectedIndex?e.classNames.activeSuggestion:"",children:f(m,e.query)},g));return h.length===0||!_b(u,r||2,s,e.shouldRenderSuggestions)?null:a.jsx("div",{ref:t,className:o.suggestions,"data-testid":"suggestions",children:a.jsxs("ul",{children:[" ",h," "]})})},yY=(e,t)=>{const{query:n,minQueryLength:r=2,isFocused:s,suggestions:o}=t;return!!(e.isFocused===s&&aY(e.suggestions,o)&&_b(n,r,s,t.shouldRenderSuggestions)===_b(e.query,e.minQueryLength??2,e.isFocused,e.shouldRenderSuggestions)&&e.selectedIndex===t.selectedIndex)},bY=y.memo(vY,yY),xY=bY,wY=tP(nP()),SY=tP(nP());function CY(e){const t=e.map(r=>{const s=r-48*Math.floor(r/48);return String.fromCharCode(96<=r?s:r)}).join(""),n=rY(t);return new RegExp(`[${n}]+`)}function jY(e){switch(e){case ha.ENTER:return[10,13];case ha.TAB:return 9;case ha.COMMA:return 188;case ha.SPACE:return 32;case ha.SEMICOLON:return 186;default:return 0}}function gk(e){const{moveTag:t,readOnly:n,allowDragDrop:r}=e;return t!==void 0&&!n&&r}function kY(e){const{readOnly:t,allowDragDrop:n}=e;return!t&&n}var EY=e=>{const{readOnly:t,removeComponent:n,onRemove:r,className:s,tag:o,index:l}=e,u=f=>{if(Jl.ENTER.includes(f.keyCode)||f.keyCode===Jl.SPACE){f.preventDefault(),f.stopPropagation();return}f.keyCode===Jl.BACKSPACE&&r(f)};if(t)return a.jsx("span",{});const d=`Tag at index ${l} with value ${o.id} focussed. Press backspace to remove`;if(n){const f=n;return a.jsx(f,{"data-testid":"remove",onRemove:r,onKeyDown:u,className:s,"aria-label":d,tag:o,index:l})}return a.jsx("button",{"data-testid":"remove",onClick:r,onKeyDown:u,className:s,type:"button","aria-label":d,children:a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",height:"12",width:"12",fill:"#fff",children:a.jsx("path",{d:"M376.6 84.5c11.3-13.6 9.5-33.8-4.1-45.1s-33.8-9.5-45.1 4.1L192 206 56.6 43.5C45.3 29.9 25.1 28.1 11.5 39.4S-3.9 70.9 7.4 84.5L150.3 256 7.4 427.5c-11.3 13.6-9.5 33.8 4.1 45.1s33.8 9.5 45.1-4.1L192 306 327.4 468.5c11.3 13.6 31.5 15.4 45.1 4.1s15.4-31.5 4.1-45.1L233.7 256 376.6 84.5z"})})})},NY=EY,vk={TAG:"tag"},TY=e=>{const t=y.useRef(null),{readOnly:n=!1,tag:r,classNames:s,index:o,moveTag:l,allowDragDrop:u=!0,labelField:d="text",tags:f}=e,[{isDragging:h},m]=h7(()=>({type:vk.TAG,collect:C=>({isDragging:!!C.isDragging()}),item:e,canDrag:()=>gk({moveTag:l,readOnly:n,allowDragDrop:u})}),[f]),[,g]=_7(()=>({accept:vk.TAG,drop:C=>{const k=C.index,N=o;k!==N&&e?.moveTag?.(k,N)},canDrop:C=>kY(C)}),[f]);m(g(t));const x=e.tag[d],{className:b=""}=r,w=h?0:1;return a.jsxs("span",{ref:t,className:(0,SY.default)("tag-wrapper",s.tag,b),style:{opacity:w,cursor:gk({moveTag:l,readOnly:n,allowDragDrop:u})?"move":"auto"},"data-testid":"tag",onClick:e.onTagClicked,onTouchStart:e.onTagClicked,children:[x,a.jsx(NY,{tag:e.tag,className:s.remove,removeComponent:e.removeComponent,onRemove:e.onDelete,readOnly:n,index:o})]})},MY=e=>{const{autofocus:t,autoFocus:n,readOnly:r,labelField:s,allowDeleteFromEmptyInput:o,allowAdditionFromPaste:l,allowDragDrop:u,minQueryLength:d,shouldRenderSuggestions:f,removeComponent:h,autocomplete:m,inline:g,maxTags:x,allowUnique:b,editable:w,placeholder:C,delimiters:k,separators:N,tags:T,inputFieldPosition:_,inputProps:I,classNames:M,maxLength:A,inputValue:O,clearAll:F}=e,[z,Z]=y.useState(e.suggestions),[B,ce]=y.useState(""),[H,oe]=y.useState(!1),[Q,ne]=y.useState(-1),[V,K]=y.useState(!1),[U,D]=y.useState(""),[J,ae]=y.useState(-1),[ee,ie]=y.useState(""),ue=y.createRef(),j=y.useRef(null),P=y.useRef(null);y.useEffect(()=>{k.length&&console.warn("[Deprecation] The delimiters prop is deprecated and will be removed in v7.x.x, please use separators instead. If you have any concerns regarding this, please share your thoughts in https://github.com/react-tags/react-tags/issues/960")},[]),y.useEffect(()=>{typeof g<"u"&&console.warn("[Deprecation] The inline attribute is deprecated and will be removed in v7.x.x, please use inputFieldPosition instead.")},[g]),y.useEffect(()=>{typeof t<"u"&&console.warn("[Deprecated] autofocus prop will be removed in 7.x so please migrate to autoFocus prop."),(t||n&&t!==!1)&&!r&&rt()},[n,n,r]),y.useEffect(()=>{Mn()},[B,e.suggestions]);const pe=ke=>{let yt=e.suggestions.slice();if(b){const gr=T.map(ur=>ur.id.trim().toLowerCase());yt=yt.filter(ur=>!gr.includes(ur.id.toLowerCase()))}if(e.handleFilterSuggestions)return e.handleFilterSuggestions(ke,yt);const Bt=yt.filter(gr=>xe(ke,gr)===0),kn=yt.filter(gr=>xe(ke,gr)>0);return Bt.concat(kn)},xe=(ke,yt)=>yt[s].toLowerCase().indexOf(ke.toLowerCase()),rt=()=>{ce(""),j.current&&(j.current.value="",j.current.focus())},Je=(ke,yt)=>{yt.preventDefault(),yt.stopPropagation();const Bt=T.slice();Bt.length!==0&&(ie(""),e?.handleDelete?.(ke,yt),nt(ke,Bt))},nt=(ke,yt)=>{if(!ue?.current)return;const Bt=ue.current.querySelectorAll(".ReactTags__remove");let kn="";ke===0&&yt.length>1?(kn=`Tag at index ${ke} with value ${yt[ke].id} deleted. Tag at index 0 with value ${yt[1].id} focussed. Press backspace to remove`,Bt[0].focus()):ke>0?(kn=`Tag at index ${ke} with value ${yt[ke].id} deleted. Tag at index ${ke-1} with value ${yt[ke-1].id} focussed. Press backspace to remove`,Bt[ke-1].focus()):(kn=`Tag at index ${ke} with value ${yt[ke].id} deleted. Input focussed. Press enter to add a new tag`,j.current?.focus()),D(kn)},qt=(ke,yt,Bt)=>{r||(w&&(ae(ke),ce(yt[s]),P.current?.focus()),e.handleTagClick?.(ke,Bt))},qn=ke=>{e.handleInputChange&&e.handleInputChange(ke.target.value,ke);const yt=ke.target.value.trim();ce(yt)},Mn=()=>{const ke=pe(B);Z(ke),ne(Q>=ke.length?ke.length-1:Q)},tr=ke=>{const yt=ke.target.value;e.handleInputFocus&&e.handleInputFocus(yt,ke),oe(!0)},yn=ke=>{const yt=ke.target.value;e.handleInputBlur&&(e.handleInputBlur(yt,ke),j.current&&(j.current.value="")),oe(!1),ae(-1)},$r=ke=>{if(ke.key==="Escape"&&(ke.preventDefault(),ke.stopPropagation(),ne(-1),K(!1),Z([]),ae(-1)),(N.indexOf(ke.key)!==-1||k.indexOf(ke.keyCode)!==-1)&&!ke.shiftKey){(ke.keyCode!==Jl.TAB||B!=="")&&ke.preventDefault();const yt=V&&Q!==-1?z[Q]:{id:B.trim(),[s]:B.trim(),className:""};Object.keys(yt)&&Nr(yt)}ke.key==="Backspace"&&B===""&&(o||_===_u.INLINE)&&Je(T.length-1,ke),ke.keyCode===Jl.UP_ARROW&&(ke.preventDefault(),ne(Q<=0?z.length-1:Q-1),K(!0)),ke.keyCode===Jl.DOWN_ARROW&&(ke.preventDefault(),K(!0),z.length===0?ne(-1):ne((Q+1)%z.length))},Br=()=>x&&T.length>=x,or=ke=>{if(!l)return;if(Br()){ie(Kj.TAG_LIMIT),rt();return}ie(""),ke.preventDefault();const yt=ke.clipboardData||window.clipboardData,Bt=yt.getData("text"),{maxLength:kn=Bt.length}=e,gr=Math.min(kn,Bt.length),ur=yt.getData("text").substr(0,gr);let zr=k;N.length&&(zr=[],N.forEach(ts=>{const Za=jY(ts);Array.isArray(Za)?zr=[...zr,...Za]:zr.push(Za)}));const Tr=CY(zr),es=ur.split(Tr).map(ts=>ts.trim());pY(es).forEach(ts=>Nr({id:ts.trim(),[s]:ts.trim(),className:""}))},Nr=ke=>{if(!ke.id||!ke[s])return;if(J===-1){if(Br()){ie(Kj.TAG_LIMIT),rt();return}ie("")}const yt=T.map(Bt=>Bt.id.toLowerCase());if(!(b&&yt.indexOf(ke.id.trim().toLowerCase())>=0)){if(m){const Bt=pe(ke[s]);console.warn("[Deprecation] The autocomplete prop will be removed in 7.x to simplify the integration and make it more intutive. If you have any concerns regarding this, please share your thoughts in https://github.com/react-tags/react-tags/issues/949"),(m===1&&Bt.length===1||m===!0&&Bt.length)&&(ke=Bt[0])}J!==-1&&e.onTagUpdate?e.onTagUpdate(J,ke):e?.handleAddition?.(ke),ce(""),K(!1),ne(-1),ae(-1),rt()}},$=ke=>{Nr(z[ke])},se=()=>{e.onClearAll&&e.onClearAll(),ie(""),rt()},fe=ke=>{ne(ke),K(!0)},Pe=(ke,yt)=>{const Bt=T[ke];e?.handleDrag?.(Bt,ke,yt)},Ne=(()=>{const ke={...Hj,...e.classNames};return T.map((yt,Bt)=>a.jsx(y.Fragment,{children:J===Bt?a.jsx("div",{className:ke.editTagInput,children:a.jsx("input",{ref:kn=>{P.current=kn},onFocus:tr,value:B,onChange:qn,onKeyDown:$r,onBlur:yn,className:ke.editTagInputField,onPaste:or,"data-testid":"tag-edit"})}):a.jsx(TY,{index:Bt,tag:yt,tags:T,labelField:s,onDelete:kn=>Je(Bt,kn),moveTag:u?Pe:void 0,removeComponent:h,onTagClicked:kn=>qt(Bt,yt,kn),readOnly:r,classNames:ke,allowDragDrop:u})},Bt))})(),Ie={...Hj,...M},{name:ft,id:Et}=e,_n=g===!1?_u.BOTTOM:_,mn=r?null:a.jsxs("div",{className:Ie.tagInput,children:[a.jsx("input",{...I,ref:ke=>{j.current=ke},className:Ie.tagInputField,type:"text",placeholder:C,"aria-label":C,onFocus:tr,onBlur:yn,onChange:qn,onKeyDown:$r,onPaste:or,name:ft,id:Et,maxLength:A,value:O,"data-automation":"input","data-testid":"input"}),a.jsx(xY,{query:B.trim(),suggestions:z,labelField:s,selectedIndex:Q,handleClick:$,handleHover:fe,minQueryLength:d,shouldRenderSuggestions:f,isFocused:H,classNames:Ie,renderSuggestion:e.renderSuggestion}),F&&T.length>0&&a.jsx(mY,{classNames:Ie,onClick:se}),ee&&a.jsxs("div",{"data-testid":"error",className:"ReactTags__error",children:[a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",height:"24",width:"24",fill:"#e03131",children:a.jsx("path",{d:"M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24V296c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"})}),ee]})]});return a.jsxs("div",{className:(0,wY.default)(Ie.tags,"react-tags-wrapper"),ref:ue,children:[a.jsx("p",{role:"alert",className:"sr-only",style:{position:"absolute",overflow:"hidden",clip:"rect(0 0 0 0)",margin:"-1px",padding:0,width:"1px",height:"1px",border:0},children:U}),_n===_u.TOP&&mn,a.jsxs("div",{className:Ie.selected,children:[Ne,_n===_u.INLINE&&mn]}),_n===_u.BOTTOM&&mn]})},_Y=MY,RY=e=>{const{placeholder:t=dK,labelField:n=fK,suggestions:r=[],delimiters:s=[],separators:o=e.delimiters?.length?[]:[ha.ENTER,ha.TAB],autofocus:l,autoFocus:u=!0,inline:d,inputFieldPosition:f="inline",allowDeleteFromEmptyInput:h=!1,allowAdditionFromPaste:m=!0,autocomplete:g=!1,readOnly:x=!1,allowUnique:b=!0,allowDragDrop:w=!0,tags:C=[],inputProps:k={},editable:N=!1,clearAll:T=!1,handleDelete:_,handleAddition:I,onTagUpdate:M,handleDrag:A,handleFilterSuggestions:O,handleTagClick:F,handleInputChange:z,handleInputFocus:Z,handleInputBlur:B,minQueryLength:ce,shouldRenderSuggestions:H,removeComponent:oe,onClearAll:Q,classNames:ne,name:V,id:K,maxLength:U,inputValue:D,maxTags:J,renderSuggestion:ae}=e;return a.jsx(_Y,{placeholder:t,labelField:n,suggestions:r,delimiters:s,separators:o,autofocus:l,autoFocus:u,inline:d,inputFieldPosition:f,allowDeleteFromEmptyInput:h,allowAdditionFromPaste:m,autocomplete:g,readOnly:x,allowUnique:b,allowDragDrop:w,tags:C,inputProps:k,editable:N,clearAll:T,handleDelete:_,handleAddition:I,onTagUpdate:M,handleDrag:A,handleFilterSuggestions:O,handleTagClick:F,handleInputChange:z,handleInputFocus:Z,handleInputBlur:B,minQueryLength:ce,shouldRenderSuggestions:H,removeComponent:oe,onClearAll:Q,classNames:ne,name:V,id:K,maxLength:U,inputValue:D,maxTags:J,renderSuggestion:ae})},PY=({...e})=>a.jsx(l9,{backend:sK,children:a.jsx(RY,{...e})});/*! Bundled license information: + +classnames/index.js: + (*! + Copyright (c) 2018 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames + *) + +lodash-es/lodash.js: + (** + * @license + * Lodash (Custom Build) + * Build: `lodash modularize exports="es" -o ./` + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + *) +*/const IY="flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",Ja=hr,SP=y.createContext({}),Qa=({...e})=>a.jsx(SP.Provider,{value:{name:e.name},children:a.jsx(V6,{...e})}),um=()=>{const e=y.useContext(SP),t=y.useContext(CP),{getFieldState:n,formState:r}=q6(),s=n(e.name,r);if(!e)throw new Error("useFormField should be used within ");const{id:o}=t;return{id:o,name:e.name,formItemId:`${o}-form-item`,formDescriptionId:`${o}-form-item-description`,formMessageId:`${o}-form-item-message`,...s}},CP=y.createContext({}),wa=y.forwardRef(({className:e,...t},n)=>{const r=y.useId();return a.jsx(CP.Provider,{value:{id:r},children:a.jsx("div",{ref:n,className:ln("space-y-2",e),...t})})});wa.displayName="FormItem";const Zr=y.forwardRef(({className:e,...t},n)=>{const{error:r,formItemId:s}=um();return a.jsx(Ue,{ref:n,className:ln(r&&"text-rose-600",e),htmlFor:s,...t})});Zr.displayName="FormLabel";const Zs=({children:e})=>{const{error:t,formItemId:n,formDescriptionId:r,formMessageId:s}=um();return y.isValidElement(e)?y.cloneElement(e,{id:n,"aria-describedby":t?`${r} ${s}`:`${r}`,"aria-invalid":!!t}):null};Zs.displayName="FormControl";const dm=y.forwardRef(({className:e,...t},n)=>{const{formDescriptionId:r}=um();return a.jsx("p",{ref:n,id:r,className:ln("text-sm text-muted-foreground",e),...t})});dm.displayName="FormDescription";const kd=y.forwardRef(({className:e,children:t,...n},r)=>{const{error:s,formMessageId:o}=um(),l=s?String(s?.message):t;return l?a.jsx("p",{ref:r,id:o,className:ln("text-sm font-medium text-rose-600",e),...n,children:l}):null});kd.displayName="FormMessage";const ge=({name:e,label:t,children:n,required:r,readOnly:s,className:o,...l})=>a.jsx(Qa,{...l,name:e,render:({field:u})=>a.jsxs(wa,{className:o,children:[t&&a.jsxs(Zr,{children:[t,r&&a.jsx("span",{className:"ml-2 text-rose-600",children:"*"})]}),a.jsx(Zs,{children:y.isValidElement(n)&&y.cloneElement(n,{name:u.name,value:u.value??"",onChange:u.onChange,onBlur:u.onBlur,required:r,readOnly:s})}),a.jsx(kd,{})]})}),De=({name:e,label:t,required:n,className:r,helper:s,reverse:o,...l})=>a.jsx(Qa,{...l,name:e,render:({field:u})=>a.jsxs(wa,{className:ln("flex items-center gap-3",o&&"flex-row-reverse justify-end",r),children:[a.jsxs("div",{className:"flex flex-1 flex-col gap-1",children:[t&&a.jsxs(Zr,{className:"break-all",children:[t,n&&a.jsx("span",{className:"ml-2 text-rose-600",children:"*"})]}),s&&a.jsx(dm,{className:"text-xs",children:s})]}),a.jsx(Zs,{children:a.jsx(jd,{checked:u.value,onCheckedChange:u.onChange,required:n})}),a.jsx(kd,{})]})}),dn=({name:e,label:t,helper:n,required:r,options:s,placeholder:o,disabled:l,...u})=>a.jsx(Qa,{...u,name:e,render:({field:d})=>a.jsxs(wa,{children:[t&&a.jsxs(Zr,{children:[t,r&&a.jsx("span",{className:"ml-2 text-rose-600",children:"*"})]}),a.jsx(Zs,{children:a.jsxs(Mt,{onValueChange:d.onChange,defaultValue:d.value,disabled:l,children:[a.jsx(Zs,{children:a.jsx(Rt,{children:a.jsx(_t,{placeholder:o})})}),a.jsx(Pt,{children:s.map(f=>a.jsx(we,{value:f.value,children:f.label},f.value))})]})}),n&&a.jsx(dm,{children:n}),a.jsx(kd,{})]})}),ti=({name:e,label:t,helper:n,required:r,placeholder:s,...o})=>a.jsx(Qa,{...o,name:e,render:({field:l})=>{let u=[];return Array.isArray(l.value)&&(u=l.value),a.jsxs(wa,{children:[t&&a.jsxs(Zr,{children:[t,r&&a.jsx("span",{className:"ml-2 text-rose-600",children:"*"})]}),a.jsx(Zs,{children:a.jsx(PY,{tags:u.map(d=>({id:d,text:d,className:""})),handleDelete:d=>l.onChange(u.filter((f,h)=>h!==d)),handleAddition:d=>l.onChange([...u,d.id]),inputFieldPosition:"bottom",placeholder:s,autoFocus:!1,allowDragDrop:!1,separators:[ha.ENTER,ha.TAB,ha.COMMA],classNames:{tags:"tagsClass",tagInput:"tagInputClass",tagInputField:IY,selected:"my-2 flex flex-wrap gap-2",tag:"flex items-center gap-2 px-2 py-1 bg-primary/30 rounded-md text-xs",remove:"[&>svg]:fill-rose-600 hover:[&>svg]:fill-rose-700",suggestions:"suggestionsClass",activeSuggestion:"activeSuggestionClass",editTagInput:"editTagInputClass",editTagInputField:"editTagInputFieldClass",clearAll:"clearAllClass"}})}),n&&a.jsx(dm,{children:n}),a.jsx(kd,{})]})}});function OY({resetTable:e,open:t,onOpenChange:n}){const{t:r}=Fe(),{createInstance:s}=Cc(),o=n,[l,u]=y.useState(!1),[d,f]=y.useState(!1),h=hn({instanceName:ye().min(3,r("newInstance.validation.nameMin")).max(50,r("newInstance.validation.nameMax")).regex(/^[a-zA-Z0-9-_]+$/,r("newInstance.validation.nameFormat")),token:ye().optional(),proxyHost:ye().optional(),proxyPort:ye().optional(),proxyUsername:ye().optional(),proxyPassword:ye().optional()}),{register:m,handleSubmit:g,reset:x,formState:{errors:b}}=fn({resolver:pn(h),defaultValues:{instanceName:"",token:"",proxyHost:"",proxyPort:"",proxyUsername:"",proxyPassword:""}}),w=async k=>{f(!0);try{const N={instanceName:k.instanceName,integration:"EVOLUTION_GO",token:k.token&&k.token.trim()!==""?k.token:lb(),number:null,businessId:null,...k.proxyHost&&k.proxyPort?{proxy:{host:k.proxyHost,port:k.proxyPort,username:k.proxyUsername,password:k.proxyPassword}}:{}};await s(N),re.success(r("toast.instance.created")),o(!1),x(),u(!1),e()}catch(N){console.error("Error:",N);const T=N instanceof Error?N.message:r("toast.instance.error");re.error(T)}finally{f(!1)}},C=k=>{d||(o(k),k||(x(),u(!1)))};return a.jsx(gt,{open:t,onOpenChange:C,children:a.jsxs(pt,{className:"sm:max-w-md",children:[a.jsxs(ht,{children:[a.jsxs(bt,{className:"flex items-center gap-2",children:[a.jsx(Yr,{className:"h-5 w-5 text-primary"}),r("newInstance.title")]}),a.jsx(kr,{children:r("newInstance.description")})]}),a.jsxs("form",{onSubmit:g(w),className:"space-y-4",children:[a.jsxs("div",{className:"space-y-2",children:[a.jsxs(Ue,{htmlFor:"instanceName",children:[r("newInstance.form.name.label")," ",a.jsx("span",{className:"text-rose-600",children:"*"})]}),a.jsx(X,{id:"instanceName",type:"text",placeholder:r("newInstance.form.name.placeholder"),disabled:d,...m("instanceName")}),b.instanceName&&a.jsx("p",{className:"text-sm text-rose-600",children:b.instanceName.message}),a.jsx("p",{className:"text-xs text-muted-foreground",children:r("newInstance.form.name.hint")})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{htmlFor:"token",children:r("newInstance.form.token.label")}),a.jsx(X,{id:"token",type:"text",placeholder:r("newInstance.form.token.placeholder"),disabled:d,...m("token")}),b.token&&a.jsx("p",{className:"text-sm text-rose-600",children:b.token.message}),a.jsx("p",{className:"text-xs text-muted-foreground",children:r("newInstance.form.token.hint")})]}),a.jsxs(x_,{open:l,onOpenChange:u,className:"space-y-2",children:[a.jsx(w_,{asChild:!0,children:a.jsxs(q,{type:"button",variant:"outline",disabled:d,className:"w-full justify-between",children:[a.jsx("span",{children:r("newInstance.proxy.title")}),l?a.jsx(EB,{className:"h-4 w-4"}):a.jsx($T,{className:"h-4 w-4"})]})}),a.jsxs(S_,{className:"space-y-4 border-t border-border pt-2",children:[a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{htmlFor:"proxyHost",children:r("newInstance.proxy.host.label")}),a.jsx(X,{id:"proxyHost",type:"text",placeholder:r("newInstance.proxy.host.placeholder"),disabled:d,...m("proxyHost")})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{htmlFor:"proxyPort",children:r("newInstance.proxy.port.label")}),a.jsx(X,{id:"proxyPort",type:"text",placeholder:"8080",disabled:d,...m("proxyPort")})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{htmlFor:"proxyUsername",children:r("newInstance.proxy.username.label")}),a.jsx(X,{id:"proxyUsername",type:"text",placeholder:r("newInstance.proxy.username.placeholder"),disabled:d,...m("proxyUsername")})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{htmlFor:"proxyPassword",children:r("newInstance.proxy.password.label")}),a.jsx(X,{id:"proxyPassword",type:"password",placeholder:r("newInstance.proxy.password.placeholder"),disabled:d,...m("proxyPassword")})]})]})]}),a.jsxs(Kt,{className:"flex gap-2 sm:gap-0",children:[a.jsx(q,{type:"button",variant:"outline",onClick:()=>C(!1),disabled:d,children:r("button.cancel")}),a.jsx(q,{type:"submit",disabled:d,children:d?a.jsxs(a.Fragment,{children:[a.jsx(Lh,{className:"mr-2 h-4 w-4 animate-spin"}),r("newInstance.button.creating")]}):a.jsxs(a.Fragment,{children:[a.jsx(Yr,{className:"mr-2 h-4 w-4"}),r("newInstance.button.create")]})})]})]})]})})}const Yv=ye().optional().transform(e=>e===""?void 0:e),AY=hn({name:ye(),token:Yv,number:Yv,businessId:Yv,integration:nR(["WHATSAPP-BUSINESS","WHATSAPP-BAILEYS","EVOLUTION"])});function DY({resetTable:e,open:t,onOpenChange:n}){const{t:r}=Fe(),{createInstance:s}=Cc(),o=n,l=[{value:"WHATSAPP-BAILEYS",label:r("instance.form.integration.baileys")},{value:"WHATSAPP-BUSINESS",label:r("instance.form.integration.whatsapp")},{value:"EVOLUTION",label:r("instance.form.integration.evolution")}],u=fn({resolver:pn(AY),defaultValues:{name:"",integration:"WHATSAPP-BAILEYS",token:lb().replace("-","").toUpperCase(),number:"",businessId:""}}),d=u.watch("integration"),f=async m=>{try{const g={instanceName:m.name,integration:m.integration,token:m.token===""?null:m.token,number:m.number===""?null:m.number,businessId:m.businessId===""?null:m.businessId};await s(g),re.success(r("toast.instance.created")),o(!1),h(),e()}catch(g){console.error("Error:",g),re.error(`Error : ${g?.response?.data?.response?.message}`)}},h=()=>{u.reset({name:"",integration:"WHATSAPP-BAILEYS",token:lb().replace("-","").toLocaleUpperCase(),number:"",businessId:""})};return Fr()==="go"?a.jsx(OY,{resetTable:e,open:t,onOpenChange:n}):a.jsx(gt,{open:t,onOpenChange:o,children:a.jsxs(pt,{className:"sm:max-w-[650px]",onCloseAutoFocus:h,children:[a.jsx(ht,{children:a.jsx(bt,{children:r("instance.modal.title")})}),a.jsx(hr,{...u,children:a.jsxs("form",{onSubmit:u.handleSubmit(f),className:"grid gap-4 py-4",children:[a.jsx(ge,{required:!0,name:"name",label:r("instance.form.name"),children:a.jsx(X,{})}),a.jsx(dn,{name:"integration",label:r("instance.form.integration.label"),options:l}),a.jsx(ge,{required:!0,name:"token",label:r("instance.form.token"),children:a.jsx(X,{})}),a.jsx(ge,{name:"number",label:r("instance.form.number"),children:a.jsx(X,{type:"tel"})}),d==="WHATSAPP-BUSINESS"&&a.jsx(ge,{required:!0,name:"businessId",label:r("instance.form.businessId"),children:a.jsx(X,{})}),a.jsx(Kt,{children:a.jsx(q,{type:"submit",children:r("instance.button.save")})})]})})]})})}function FY(){const{t:e}=Fe(),[t,n]=y.useState(!1),[r,s]=y.useState(null),[o,l]=y.useState(""),[u,d]=y.useState(null),[f,h]=y.useState(""),[m,g]=y.useState("all"),{deleteInstance:x,logout:b}=Cc(),{data:w,isLoading:C,refetch:k}=E6(),N=async()=>{await k()},T=()=>{s(null),l("")},_=async()=>{if(!r)return;const F=r.name;d(F);try{try{await b(F)}catch(z){console.error("Error logout:",z)}await x(F),await new Promise(z=>setTimeout(z,1e3)),await N(),re.success(e("toast.instance.deleted",{defaultValue:"Instância removida com sucesso!"})),T()}catch(z){console.error("Error instance delete:",z);const Z=z instanceof Error?z.message:"Erro ao remover instância";re.error(Z)}finally{d(null)}},I=y.useMemo(()=>{let F=w??[];m!=="all"&&(F=F.filter(Z=>Z.connectionStatus===m));const z=f.trim().toLowerCase();return z?F.filter(Z=>Z.name.toLowerCase().includes(z)||Z.profileName&&Z.profileName.toLowerCase().includes(z)):F},[w,f,m]),M=[{value:"all",label:e("status.all")},{value:"close",label:e("status.closed")},{value:"connecting",label:e("status.connecting")},{value:"open",label:e("status.open")}],A=I.length,O=o===r?.name;return a.jsxs("div",{className:"flex h-full flex-col",children:[a.jsx(N_,{title:e("dashboard.title"),subtitle:e("dashboard.subtitle",{defaultValue:"Gerencie suas instâncias WhatsApp"}),searchValue:f,onSearchChange:h,searchPlaceholder:e("dashboard.search"),primaryAction:{label:e("instance.button.create"),icon:a.jsx(Yr,{className:"h-4 w-4"}),onClick:()=>n(!0)},secondaryActions:[{label:e("button.refresh",{defaultValue:"Atualizar"}),icon:a.jsx(ac,{className:"h-4 w-4"}),onClick:N}],children:a.jsx("div",{className:"flex items-center justify-end",children:a.jsxs(ms,{children:[a.jsx(gs,{asChild:!0,children:a.jsxs(q,{variant:"secondary",size:"sm",children:[e("dashboard.status"),a.jsx(NB,{className:"ml-2 h-4 w-4"})]})}),a.jsx(vs,{align:"end",children:M.map(F=>a.jsx(LV,{checked:m===F.value,onCheckedChange:z=>{z&&g(F.value)},children:F.label},F.value))})]})})}),a.jsx("div",{className:"flex-1",children:C?a.jsx("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4",children:Array.from({length:6}).map((F,z)=>a.jsx(JV,{className:"h-56 rounded-lg"},z))}):A===0?a.jsxs("div",{className:"flex min-h-[40vh] flex-col items-center justify-center gap-3 rounded-lg border border-dashed border-sidebar-border p-8 text-center",children:[a.jsx(WB,{className:"h-10 w-10 text-muted-foreground"}),a.jsxs("div",{children:[a.jsx("h3",{className:"text-lg font-semibold",children:e("dashboard.empty.title",{defaultValue:"Nenhuma instância encontrada"})}),a.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:e("dashboard.empty.description",{defaultValue:"Crie sua primeira instância para começar"})})]}),a.jsxs(q,{onClick:()=>n(!0),className:"mt-2",children:[a.jsx(Yr,{className:"mr-2 h-4 w-4"}),e("instance.button.create")]})]}):a.jsx("div",{className:"grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4",children:I.map(F=>a.jsx(b6,{instance:F,isDeleting:u===F.name,onDelete:z=>s(z)},F.id))})}),a.jsx(DY,{resetTable:N,open:t,onOpenChange:n}),a.jsx(gt,{open:!!r,onOpenChange:F=>!F&&T(),children:a.jsxs(pt,{className:"sm:max-w-md",children:[a.jsxs(ht,{children:[a.jsxs(bt,{className:"flex items-center gap-2 text-red-500",children:[a.jsx(HT,{className:"h-5 w-5"}),e("modal.delete.title")]}),a.jsx(kr,{children:e("modal.delete.message",{instanceName:r?.name??""})})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx("label",{className:"text-sm font-medium",children:e("modal.delete.confirm",{defaultValue:"Digite o nome da instância para confirmar:"})}),a.jsx(X,{placeholder:r?.name,value:o,onChange:F=>l(F.target.value)})]}),a.jsxs(Kt,{className:"flex gap-2",children:[a.jsx(q,{variant:"outline",onClick:T,children:e("button.cancel")}),a.jsx(q,{variant:"destructive",onClick:_,disabled:!O||u===r?.name,children:u===r?.name?e("button.deleting"):e("button.delete")})]})]})})]})}const LY=e=>["chats","findChats",JSON.stringify(e)],$Y=async({instanceName:e})=>(await je.post(`/chat/findChats/${e}`,{where:{}})).data,BY=e=>{const{instanceName:t,...n}=e;return vt({...n,queryKey:LY({instanceName:t}),queryFn:()=>$Y({instanceName:t}),enabled:!!t})},xa=Object.create(null);xa.open="0";xa.close="1";xa.ping="2";xa.pong="3";xa.message="4";xa.upgrade="5";xa.noop="6";const Tp=Object.create(null);Object.keys(xa).forEach(e=>{Tp[xa[e]]=e});const Rb={type:"error",data:"parser error"},jP=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",kP=typeof ArrayBuffer=="function",EP=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,sw=({type:e,data:t},n,r)=>jP&&t instanceof Blob?n?r(t):yk(t,r):kP&&(t instanceof ArrayBuffer||EP(t))?n?r(t):yk(new Blob([t]),r):r(xa[e]+(t||"")),yk=(e,t)=>{const n=new FileReader;return n.onload=function(){const r=n.result.split(",")[1];t("b"+(r||""))},n.readAsDataURL(e)};function bk(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let Zv;function zY(e,t){if(jP&&e.data instanceof Blob)return e.data.arrayBuffer().then(bk).then(t);if(kP&&(e.data instanceof ArrayBuffer||EP(e.data)))return t(bk(e.data));sw(e,!1,n=>{Zv||(Zv=new TextEncoder),t(Zv.encode(n))})}const xk="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",zu=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let e=0;e{let t=e.length*.75,n=e.length,r,s=0,o,l,u,d;e[e.length-1]==="="&&(t--,e[e.length-2]==="="&&t--);const f=new ArrayBuffer(t),h=new Uint8Array(f);for(r=0;r>4,h[s++]=(l&15)<<4|u>>2,h[s++]=(u&3)<<6|d&63;return f},VY=typeof ArrayBuffer=="function",aw=(e,t)=>{if(typeof e!="string")return{type:"message",data:NP(e,t)};const n=e.charAt(0);return n==="b"?{type:"message",data:qY(e.substring(1),t)}:Tp[n]?e.length>1?{type:Tp[n],data:e.substring(1)}:{type:Tp[n]}:Rb},qY=(e,t)=>{if(VY){const n=UY(e);return NP(n,t)}else return{base64:!0,data:e}},NP=(e,t)=>{switch(t){case"blob":return e instanceof Blob?e:new Blob([e]);case"arraybuffer":default:return e instanceof ArrayBuffer?e:e.buffer}},TP="",HY=(e,t)=>{const n=e.length,r=new Array(n);let s=0;e.forEach((o,l)=>{sw(o,!1,u=>{r[l]=u,++s===n&&t(r.join(TP))})})},KY=(e,t)=>{const n=e.split(TP),r=[];for(let s=0;s{const r=n.length;let s;if(r<126)s=new Uint8Array(1),new DataView(s.buffer).setUint8(0,r);else if(r<65536){s=new Uint8Array(3);const o=new DataView(s.buffer);o.setUint8(0,126),o.setUint16(1,r)}else{s=new Uint8Array(9);const o=new DataView(s.buffer);o.setUint8(0,127),o.setBigUint64(1,BigInt(r))}e.data&&typeof e.data!="string"&&(s[0]|=128),t.enqueue(s),t.enqueue(n)})}})}let Xv;function Yf(e){return e.reduce((t,n)=>t+n.length,0)}function Zf(e,t){if(e[0].length===t)return e.shift();const n=new Uint8Array(t);let r=0;for(let s=0;sMath.pow(2,21)-1){u.enqueue(Rb);break}s=h*Math.pow(2,32)+f.getUint32(4),r=3}else{if(Yf(n)e){u.enqueue(Rb);break}}}})}const MP=4;function Xn(e){if(e)return JY(e)}function JY(e){for(var t in Xn.prototype)e[t]=Xn.prototype[t];return e}Xn.prototype.on=Xn.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this};Xn.prototype.once=function(e,t){function n(){this.off(e,n),t.apply(this,arguments)}return n.fn=t,this.on(e,n),this};Xn.prototype.off=Xn.prototype.removeListener=Xn.prototype.removeAllListeners=Xn.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var n=this._callbacks["$"+e];if(!n)return this;if(arguments.length==1)return delete this._callbacks["$"+e],this;for(var r,s=0;sPromise.resolve().then(t):(t,n)=>n(t,0),Ts=typeof self<"u"?self:typeof window<"u"?window:Function("return this")(),QY="arraybuffer";function _P(e,...t){return t.reduce((n,r)=>(e.hasOwnProperty(r)&&(n[r]=e[r]),n),{})}const YY=Ts.setTimeout,ZY=Ts.clearTimeout;function pm(e,t){t.useNativeTimers?(e.setTimeoutFn=YY.bind(Ts),e.clearTimeoutFn=ZY.bind(Ts)):(e.setTimeoutFn=Ts.setTimeout.bind(Ts),e.clearTimeoutFn=Ts.clearTimeout.bind(Ts))}const XY=1.33;function eZ(e){return typeof e=="string"?tZ(e):Math.ceil((e.byteLength||e.size)*XY)}function tZ(e){let t=0,n=0;for(let r=0,s=e.length;r=57344?n+=3:(r++,n+=4);return n}function RP(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}function nZ(e){let t="";for(let n in e)e.hasOwnProperty(n)&&(t.length&&(t+="&"),t+=encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t}function rZ(e){let t={},n=e.split("&");for(let r=0,s=n.length;r{this.readyState="paused",t()};if(this._polling||!this.writable){let r=0;this._polling&&(r++,this.once("pollComplete",function(){--r||n()})),this.writable||(r++,this.once("drain",function(){--r||n()}))}else n()}_poll(){this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(t){const n=r=>{if(this.readyState==="opening"&&r.type==="open"&&this.onOpen(),r.type==="close")return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(r)};KY(t,this.socket.binaryType).forEach(n),this.readyState!=="closed"&&(this._polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"&&this._poll())}doClose(){const t=()=>{this.write([{type:"close"}])};this.readyState==="open"?t():this.once("open",t)}write(t){this.writable=!1,HY(t,n=>{this.doWrite(n,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){const t=this.opts.secure?"https":"http",n=this.query||{};return this.opts.timestampRequests!==!1&&(n[this.opts.timestampParam]=RP()),!this.supportsBinary&&!n.sid&&(n.b64=1),this.createUri(t,n)}}let PP=!1;try{PP=typeof XMLHttpRequest<"u"&&"withCredentials"in new XMLHttpRequest}catch{}const oZ=PP;function iZ(){}class lZ extends aZ{constructor(t){if(super(t),typeof location<"u"){const n=location.protocol==="https:";let r=location.port;r||(r=n?"443":"80"),this.xd=typeof location<"u"&&t.hostname!==location.hostname||r!==t.port}}doWrite(t,n){const r=this.request({method:"POST",data:t});r.on("success",n),r.on("error",(s,o)=>{this.onError("xhr post error",s,o)})}doPoll(){const t=this.request();t.on("data",this.onData.bind(this)),t.on("error",(n,r)=>{this.onError("xhr poll error",n,r)}),this.pollXhr=t}}let Yl=class Mp extends Xn{constructor(t,n,r){super(),this.createRequest=t,pm(this,r),this._opts=r,this._method=r.method||"GET",this._uri=n,this._data=r.data!==void 0?r.data:null,this._create()}_create(){var t;const n=_P(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");n.xdomain=!!this._opts.xd;const r=this._xhr=this.createRequest(n);try{r.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0);for(let s in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(s)&&r.setRequestHeader(s,this._opts.extraHeaders[s])}}catch{}if(this._method==="POST")try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{r.setRequestHeader("Accept","*/*")}catch{}(t=this._opts.cookieJar)===null||t===void 0||t.addCookies(r),"withCredentials"in r&&(r.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(r.timeout=this._opts.requestTimeout),r.onreadystatechange=()=>{var s;r.readyState===3&&((s=this._opts.cookieJar)===null||s===void 0||s.parseCookies(r.getResponseHeader("set-cookie"))),r.readyState===4&&(r.status===200||r.status===1223?this._onLoad():this.setTimeoutFn(()=>{this._onError(typeof r.status=="number"?r.status:0)},0))},r.send(this._data)}catch(s){this.setTimeoutFn(()=>{this._onError(s)},0);return}typeof document<"u"&&(this._index=Mp.requestsCount++,Mp.requests[this._index]=this)}_onError(t){this.emitReserved("error",t,this._xhr),this._cleanup(!0)}_cleanup(t){if(!(typeof this._xhr>"u"||this._xhr===null)){if(this._xhr.onreadystatechange=iZ,t)try{this._xhr.abort()}catch{}typeof document<"u"&&delete Mp.requests[this._index],this._xhr=null}}_onLoad(){const t=this._xhr.responseText;t!==null&&(this.emitReserved("data",t),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}};Yl.requestsCount=0;Yl.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",wk);else if(typeof addEventListener=="function"){const e="onpagehide"in Ts?"pagehide":"unload";addEventListener(e,wk,!1)}}function wk(){for(let e in Yl.requests)Yl.requests.hasOwnProperty(e)&&Yl.requests[e].abort()}const cZ=(function(){const e=IP({xdomain:!1});return e&&e.responseType!==null})();class uZ extends lZ{constructor(t){super(t);const n=t&&t.forceBase64;this.supportsBinary=cZ&&!n}request(t={}){return Object.assign(t,{xd:this.xd},this.opts),new Yl(IP,this.uri(),t)}}function IP(e){const t=e.xdomain;try{if(typeof XMLHttpRequest<"u"&&(!t||oZ))return new XMLHttpRequest}catch{}if(!t)try{return new Ts[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch{}}const OP=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class dZ extends ow{get name(){return"websocket"}doOpen(){const t=this.uri(),n=this.opts.protocols,r=OP?{}:_P(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(t,n,r)}catch(s){return this.emitReserved("error",s)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=t=>this.onClose({description:"websocket connection closed",context:t}),this.ws.onmessage=t=>this.onData(t.data),this.ws.onerror=t=>this.onError("websocket error",t)}write(t){this.writable=!1;for(let n=0;n{try{this.doWrite(r,o)}catch{}s&&fm(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){const t=this.opts.secure?"wss":"ws",n=this.query||{};return this.opts.timestampRequests&&(n[this.opts.timestampParam]=RP()),this.supportsBinary||(n.b64=1),this.createUri(t,n)}}const ey=Ts.WebSocket||Ts.MozWebSocket;class fZ extends dZ{createSocket(t,n,r){return OP?new ey(t,n,r):n?new ey(t,n):new ey(t)}doWrite(t,n){this.ws.send(n)}}class pZ extends ow{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(t){return this.emitReserved("error",t)}this._transport.closed.then(()=>{this.onClose()}).catch(t=>{this.onError("webtransport error",t)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(t=>{const n=GY(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=t.readable.pipeThrough(n).getReader(),s=WY();s.readable.pipeTo(t.writable),this._writer=s.writable.getWriter();const o=()=>{r.read().then(({done:u,value:d})=>{u||(this.onPacket(d),o())}).catch(u=>{})};o();const l={type:"open"};this.query.sid&&(l.data=`{"sid":"${this.query.sid}"}`),this._writer.write(l).then(()=>this.onOpen())})})}write(t){this.writable=!1;for(let n=0;n{s&&fm(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var t;(t=this._transport)===null||t===void 0||t.close()}}const hZ={websocket:fZ,webtransport:pZ,polling:uZ},mZ=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,gZ=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function Pb(e){if(e.length>8e3)throw"URI too long";const t=e,n=e.indexOf("["),r=e.indexOf("]");n!=-1&&r!=-1&&(e=e.substring(0,n)+e.substring(n,r).replace(/:/g,";")+e.substring(r,e.length));let s=mZ.exec(e||""),o={},l=14;for(;l--;)o[gZ[l]]=s[l]||"";return n!=-1&&r!=-1&&(o.source=t,o.host=o.host.substring(1,o.host.length-1).replace(/;/g,":"),o.authority=o.authority.replace("[","").replace("]","").replace(/;/g,":"),o.ipv6uri=!0),o.pathNames=vZ(o,o.path),o.queryKey=yZ(o,o.query),o}function vZ(e,t){const n=/\/{2,9}/g,r=t.replace(n,"/").split("/");return(t.slice(0,1)=="/"||t.length===0)&&r.splice(0,1),t.slice(-1)=="/"&&r.splice(r.length-1,1),r}function yZ(e,t){const n={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(r,s,o){s&&(n[s]=o)}),n}const Ib=typeof addEventListener=="function"&&typeof removeEventListener=="function",_p=[];Ib&&addEventListener("offline",()=>{_p.forEach(e=>e())},!1);class Io extends Xn{constructor(t,n){if(super(),this.binaryType=QY,this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,t&&typeof t=="object"&&(n=t,t=null),t){const r=Pb(t);n.hostname=r.host,n.secure=r.protocol==="https"||r.protocol==="wss",n.port=r.port,r.query&&(n.query=r.query)}else n.host&&(n.hostname=Pb(n.host).host);pm(this,n),this.secure=n.secure!=null?n.secure:typeof location<"u"&&location.protocol==="https:",n.hostname&&!n.port&&(n.port=this.secure?"443":"80"),this.hostname=n.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=n.port||(typeof location<"u"&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},n.transports.forEach(r=>{const s=r.prototype.name;this.transports.push(s),this._transportsByName[s]=r}),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},n),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),typeof this.opts.query=="string"&&(this.opts.query=rZ(this.opts.query)),Ib&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},_p.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=void 0),this._open()}createTransport(t){const n=Object.assign({},this.opts.query);n.EIO=MP,n.transport=t,this.id&&(n.sid=this.id);const r=Object.assign({},this.opts,{query:n,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[t]);return new this._transportsByName[t](r)}_open(){if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);return}const t=this.opts.rememberUpgrade&&Io.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1?"websocket":this.transports[0];this.readyState="opening";const n=this.createTransport(t);n.open(),this.setTransport(n)}setTransport(t){this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",n=>this._onClose("transport close",n))}onOpen(){this.readyState="open",Io.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush()}_onPacket(t){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")switch(this.emitReserved("packet",t),this.emitReserved("heartbeat"),t.type){case"open":this.onHandshake(JSON.parse(t.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":const n=new Error("server error");n.code=t.data,this._onError(n);break;case"message":this.emitReserved("data",t.data),this.emitReserved("message",t.data);break}}onHandshake(t){this.emitReserved("handshake",t),this.id=t.sid,this.transport.query.sid=t.sid,this._pingInterval=t.pingInterval,this._pingTimeout=t.pingTimeout,this._maxPayload=t.maxPayload,this.onOpen(),this.readyState!=="closed"&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);const t=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+t,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose("ping timeout")},t),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved("drain"):this.flush()}flush(){if(this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const t=this._getWritablePackets();this.transport.send(t),this._prevBufferLen=t.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&this.transport.name==="polling"&&this.writeBuffer.length>1))return this.writeBuffer;let n=1;for(let r=0;r0&&n>this._maxPayload)return this.writeBuffer.slice(0,r);n+=2}return this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;const t=Date.now()>this._pingTimeoutTime;return t&&(this._pingTimeoutTime=0,fm(()=>{this._onClose("ping timeout")},this.setTimeoutFn)),t}write(t,n,r){return this._sendPacket("message",t,n,r),this}send(t,n,r){return this._sendPacket("message",t,n,r),this}_sendPacket(t,n,r,s){if(typeof n=="function"&&(s=n,n=void 0),typeof r=="function"&&(s=r,r=null),this.readyState==="closing"||this.readyState==="closed")return;r=r||{},r.compress=r.compress!==!1;const o={type:t,data:n,options:r};this.emitReserved("packetCreate",o),this.writeBuffer.push(o),s&&this.once("flush",s),this.flush()}close(){const t=()=>{this._onClose("forced close"),this.transport.close()},n=()=>{this.off("upgrade",n),this.off("upgradeError",n),t()},r=()=>{this.once("upgrade",n),this.once("upgradeError",n)};return(this.readyState==="opening"||this.readyState==="open")&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?r():t()}):this.upgrading?r():t()),this}_onError(t){if(Io.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&this.readyState==="opening")return this.transports.shift(),this._open();this.emitReserved("error",t),this._onClose("transport error",t)}_onClose(t,n){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing"){if(this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),Ib&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){const r=_p.indexOf(this._offlineEventListener);r!==-1&&_p.splice(r,1)}this.readyState="closed",this.id=null,this.emitReserved("close",t,n),this.writeBuffer=[],this._prevBufferLen=0}}}Io.protocol=MP;class bZ extends Io{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),this.readyState==="open"&&this.opts.upgrade)for(let t=0;t{r||(n.send([{type:"ping",data:"probe"}]),n.once("packet",m=>{if(!r)if(m.type==="pong"&&m.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",n),!n)return;Io.priorWebsocketSuccess=n.name==="websocket",this.transport.pause(()=>{r||this.readyState!=="closed"&&(h(),this.setTransport(n),n.send([{type:"upgrade"}]),this.emitReserved("upgrade",n),n=null,this.upgrading=!1,this.flush())})}else{const g=new Error("probe error");g.transport=n.name,this.emitReserved("upgradeError",g)}}))};function o(){r||(r=!0,h(),n.close(),n=null)}const l=m=>{const g=new Error("probe error: "+m);g.transport=n.name,o(),this.emitReserved("upgradeError",g)};function u(){l("transport closed")}function d(){l("socket closed")}function f(m){n&&m.name!==n.name&&o()}const h=()=>{n.removeListener("open",s),n.removeListener("error",l),n.removeListener("close",u),this.off("close",d),this.off("upgrading",f)};n.once("open",s),n.once("error",l),n.once("close",u),this.once("close",d),this.once("upgrading",f),this._upgrades.indexOf("webtransport")!==-1&&t!=="webtransport"?this.setTimeoutFn(()=>{r||n.open()},200):n.open()}onHandshake(t){this._upgrades=this._filterUpgrades(t.upgrades),super.onHandshake(t)}_filterUpgrades(t){const n=[];for(let r=0;rhZ[s]).filter(s=>!!s)),super(t,r)}};function wZ(e,t="",n){let r=e;n=n||typeof location<"u"&&location,e==null&&(e=n.protocol+"//"+n.host),typeof e=="string"&&(e.charAt(0)==="/"&&(e.charAt(1)==="/"?e=n.protocol+e:e=n.host+e),/^(https?|wss?):\/\//.test(e)||(typeof n<"u"?e=n.protocol+"//"+e:e="https://"+e),r=Pb(e)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";const o=r.host.indexOf(":")!==-1?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+o+":"+r.port+t,r.href=r.protocol+"://"+o+(n&&n.port===r.port?"":":"+r.port),r}const SZ=typeof ArrayBuffer=="function",CZ=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,AP=Object.prototype.toString,jZ=typeof Blob=="function"||typeof Blob<"u"&&AP.call(Blob)==="[object BlobConstructor]",kZ=typeof File=="function"||typeof File<"u"&&AP.call(File)==="[object FileConstructor]";function iw(e){return SZ&&(e instanceof ArrayBuffer||CZ(e))||jZ&&e instanceof Blob||kZ&&e instanceof File}function Rp(e,t){if(!e||typeof e!="object")return!1;if(Array.isArray(e)){for(let n=0,r=e.length;n=0&&e.num{delete this.acks[t];for(let u=0;u{this.io.clearTimeoutFn(o),n.apply(this,u)};l.withError=!0,this.acks[t]=l}emitWithAck(t,...n){return new Promise((r,s)=>{const o=(l,u)=>l?s(l):r(u);o.withError=!0,n.push(o),this.emit(t,...n)})}_addToQueue(t){let n;typeof t[t.length-1]=="function"&&(n=t.pop());const r={id:this._queueSeq++,tryCount:0,pending:!1,args:t,flags:Object.assign({fromQueue:!0},this.flags)};t.push((s,...o)=>r!==this._queue[0]?void 0:(s!==null?r.tryCount>this._opts.retries&&(this._queue.shift(),n&&n(s)):(this._queue.shift(),n&&n(null,...o)),r.pending=!1,this._drainQueue())),this._queue.push(r),this._drainQueue()}_drainQueue(t=!1){if(!this.connected||this._queue.length===0)return;const n=this._queue[0];n.pending&&!t||(n.pending=!0,n.tryCount++,this.flags=n.flags,this.emit.apply(this,n.args))}packet(t){t.nsp=this.nsp,this.io._packet(t)}onopen(){typeof this.auth=="function"?this.auth(t=>{this._sendConnectPacket(t)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(t){this.packet({type:Ht.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},t):t})}onerror(t){this.connected||this.emitReserved("connect_error",t)}onclose(t,n){this.connected=!1,delete this.id,this.emitReserved("disconnect",t,n),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(t=>{if(!this.sendBuffer.some(r=>String(r.id)===t)){const r=this.acks[t];delete this.acks[t],r.withError&&r.call(this,new Error("socket has been disconnected"))}})}onpacket(t){if(t.nsp===this.nsp)switch(t.type){case Ht.CONNECT:t.data&&t.data.sid?this.onconnect(t.data.sid,t.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case Ht.EVENT:case Ht.BINARY_EVENT:this.onevent(t);break;case Ht.ACK:case Ht.BINARY_ACK:this.onack(t);break;case Ht.DISCONNECT:this.ondisconnect();break;case Ht.CONNECT_ERROR:this.destroy();const r=new Error(t.data.message);r.data=t.data.data,this.emitReserved("connect_error",r);break}}onevent(t){const n=t.data||[];t.id!=null&&n.push(this.ack(t.id)),this.connected?this.emitEvent(n):this.receiveBuffer.push(Object.freeze(n))}emitEvent(t){if(this._anyListeners&&this._anyListeners.length){const n=this._anyListeners.slice();for(const r of n)r.apply(this,t)}super.emit.apply(this,t),this._pid&&t.length&&typeof t[t.length-1]=="string"&&(this._lastOffset=t[t.length-1])}ack(t){const n=this;let r=!1;return function(...s){r||(r=!0,n.packet({type:Ht.ACK,id:t,data:s}))}}onack(t){const n=this.acks[t.id];typeof n=="function"&&(delete this.acks[t.id],n.withError&&t.data.unshift(null),n.apply(this,t.data))}onconnect(t,n){this.id=t,this.recovered=n&&this._pid===n,this._pid=n,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach(t=>this.emitEvent(t)),this.receiveBuffer=[],this.sendBuffer.forEach(t=>{this.notifyOutgoingListeners(t),this.packet(t)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(t=>t()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:Ht.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(t){return this.flags.compress=t,this}get volatile(){return this.flags.volatile=!0,this}timeout(t){return this.flags.timeout=t,this}onAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(t),this}prependAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(t),this}offAny(t){if(!this._anyListeners)return this;if(t){const n=this._anyListeners;for(let r=0;r0&&e.jitter<=1?e.jitter:0,this.attempts=0}Oc.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),n=Math.floor(t*this.jitter*e);e=(Math.floor(t*10)&1)==0?e-n:e+n}return Math.min(e,this.max)|0};Oc.prototype.reset=function(){this.attempts=0};Oc.prototype.setMin=function(e){this.ms=e};Oc.prototype.setMax=function(e){this.max=e};Oc.prototype.setJitter=function(e){this.jitter=e};class Db extends Xn{constructor(t,n){var r;super(),this.nsps={},this.subs=[],t&&typeof t=="object"&&(n=t,t=void 0),n=n||{},n.path=n.path||"/socket.io",this.opts=n,pm(this,n),this.reconnection(n.reconnection!==!1),this.reconnectionAttempts(n.reconnectionAttempts||1/0),this.reconnectionDelay(n.reconnectionDelay||1e3),this.reconnectionDelayMax(n.reconnectionDelayMax||5e3),this.randomizationFactor((r=n.randomizationFactor)!==null&&r!==void 0?r:.5),this.backoff=new Oc({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(n.timeout==null?2e4:n.timeout),this._readyState="closed",this.uri=t;const s=n.parser||PZ;this.encoder=new s.Encoder,this.decoder=new s.Decoder,this._autoConnect=n.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(t){return arguments.length?(this._reconnection=!!t,t||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(t){return t===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=t,this)}reconnectionDelay(t){var n;return t===void 0?this._reconnectionDelay:(this._reconnectionDelay=t,(n=this.backoff)===null||n===void 0||n.setMin(t),this)}randomizationFactor(t){var n;return t===void 0?this._randomizationFactor:(this._randomizationFactor=t,(n=this.backoff)===null||n===void 0||n.setJitter(t),this)}reconnectionDelayMax(t){var n;return t===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=t,(n=this.backoff)===null||n===void 0||n.setMax(t),this)}timeout(t){return arguments.length?(this._timeout=t,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(t){if(~this._readyState.indexOf("open"))return this;this.engine=new xZ(this.uri,this.opts);const n=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const s=Us(n,"open",function(){r.onopen(),t&&t()}),o=u=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",u),t?t(u):this.maybeReconnectOnOpen()},l=Us(n,"error",o);if(this._timeout!==!1){const u=this._timeout,d=this.setTimeoutFn(()=>{s(),o(new Error("timeout")),n.close()},u);this.opts.autoUnref&&d.unref(),this.subs.push(()=>{this.clearTimeoutFn(d)})}return this.subs.push(s),this.subs.push(l),this}connect(t){return this.open(t)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const t=this.engine;this.subs.push(Us(t,"ping",this.onping.bind(this)),Us(t,"data",this.ondata.bind(this)),Us(t,"error",this.onerror.bind(this)),Us(t,"close",this.onclose.bind(this)),Us(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(t){try{this.decoder.add(t)}catch(n){this.onclose("parse error",n)}}ondecoded(t){fm(()=>{this.emitReserved("packet",t)},this.setTimeoutFn)}onerror(t){this.emitReserved("error",t)}socket(t,n){let r=this.nsps[t];return r?this._autoConnect&&!r.active&&r.connect():(r=new DP(this,t,n),this.nsps[t]=r),r}_destroy(t){const n=Object.keys(this.nsps);for(const r of n)if(this.nsps[r].active)return;this._close()}_packet(t){const n=this.encoder.encode(t);for(let r=0;rt()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(t,n){var r;this.cleanup(),(r=this.engine)===null||r===void 0||r.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",t,n),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const t=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const n=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn(()=>{t.skipReconnect||(this.emitReserved("reconnect_attempt",t.backoff.attempts),!t.skipReconnect&&t.open(s=>{s?(t._reconnecting=!1,t.reconnect(),this.emitReserved("reconnect_error",s)):t.onreconnect()}))},n);this.opts.autoUnref&&r.unref(),this.subs.push(()=>{this.clearTimeoutFn(r)})}}onreconnect(){const t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}const Pu={};function Pp(e,t){typeof e=="object"&&(t=e,e=void 0),t=t||{};const n=wZ(e,t.path||"/socket.io"),r=n.source,s=n.id,o=n.path,l=Pu[s]&&o in Pu[s].nsps,u=t.forceNew||t["force new connection"]||t.multiplex===!1||l;let d;return u?d=new Db(r,t):(Pu[s]||(Pu[s]=new Db(r,t)),d=Pu[s]),n.query&&!t.query&&(t.query=n.queryKey),d.socket(n.path,t)}Object.assign(Pp,{Manager:Db,Socket:DP,io:Pp,connect:Pp});const Gu=new Map,cw=e=>{if(Gu.has(e)){const n=Gu.get(e);return Ck(n)}const t=Pp(e,{transports:["websocket","polling"],autoConnect:!1,reconnection:!0,reconnectionAttempts:5,reconnectionDelay:1e3,timeout:2e4});return Gu.set(e,t),t.on("connect",()=>{console.log(`✅ WebSocket connected to ${e}`)}),t.on("disconnect",n=>{console.log(`❌ WebSocket disconnected from ${e}:`,n)}),t.on("connect_error",n=>{console.error(`🚫 WebSocket connection error to ${e}:`,n)}),t.on("reconnect",n=>{console.log(`🔄 WebSocket reconnected to ${e} after ${n} attempts`)}),t.on("reconnect_error",n=>{console.error(`🔄❌ WebSocket reconnection error to ${e}:`,n)}),Ck(t)},uw=e=>{for(const[t,n]of Gu.entries())if(n===e||e._socket===n){console.log(`🔌 Disconnecting socket for ${t}`),n.disconnect(),Gu.delete(t);break}},Ck=e=>({on:(t,n)=>{e.on(t,n)},off:t=>{e.off(t)},connect:()=>{e.connected||e.connect()},disconnect:()=>{e.disconnect()}});function Ya(e){const t=o=>typeof window<"u"?window.matchMedia(o).matches:!1,[n,r]=y.useState(t(e));function s(){r(t(e))}return y.useEffect(()=>{const o=window.matchMedia(e);return s(),o.addListener?o.addListener(s):o.addEventListener("change",s),()=>{o.removeListener?o.removeListener(s):o.removeEventListener("change",s)}},[e]),n}const OZ="border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",Oo=y.forwardRef(({className:e,...t},n)=>a.jsx("textarea",{ref:n,"data-slot":"textarea",className:ln(OZ,e),...t}));Oo.displayName="Textarea";const AZ=e=>["chats","findChats",JSON.stringify(e)],DZ=async({instanceName:e,remoteJid:t})=>{const n=await je.post(`/chat/findChats/${e}`,{where:{remoteJid:t}});return Array.isArray(n.data)?n.data[0]:n.data},FZ=e=>{const{instanceName:t,remoteJid:n,...r}=e;return vt({...r,queryKey:AZ({instanceName:t,remoteJid:n}),queryFn:()=>DZ({instanceName:t,remoteJid:n}),enabled:!!t&&!!n})},LZ=e=>["chats","findMessages",JSON.stringify(e)],$Z=async({instanceName:e,remoteJid:t})=>{const n=await je.post(`/chat/findMessages/${e}`,{where:{key:{remoteJid:t}}});return n.data?.messages?.records?n.data.messages.records:n.data},BZ=e=>{const{instanceName:t,remoteJid:n,...r}=e;return vt({...r,queryKey:LZ({instanceName:t,remoteJid:n}),queryFn:()=>$Z({instanceName:t,remoteJid:n}),enabled:!!t&&!!n})},zZ=async({instanceName:e,token:t,data:n})=>(await je.post(`/message/sendText/${e}`,n,{headers:{apikey:t,"content-type":"application/json"}})).data,UZ=async({instanceName:e,token:t,data:n})=>{try{const r={number:n.number,mediatype:n.mediaMessage.mediatype,mimetype:n.mediaMessage.mimetype,caption:n.mediaMessage.caption,media:n.mediaMessage.media,fileName:n.mediaMessage.fileName};return(await je.post(`/message/sendMedia/${e}`,r,{headers:{apikey:t,"content-type":"application/json"}})).data}catch(r){throw console.error("Erro ao enviar mídia:",r),r}},VZ=async({instanceName:e,token:t,data:n})=>{try{const r={number:n.number,audioMessage:{audio:n.audioMessage.audio},options:n.options};return(await je.post(`/message/sendWhatsAppAudio/${e}`,r,{headers:{apikey:t,"content-type":"application/json"}})).data}catch(r){throw console.error("Erro ao enviar áudio:",r),r}};function FP(){return{sendText:it(zZ,{invalidateKeys:[["chats","findMessages"],["chats","findChats"]]})}}function LP(){return{sendMedia:it(UZ)}}function qZ(){return{sendAudio:it(VZ)}}const $P=y.createContext({backgroundColor:"",textForegroundColor:"",primaryColor:"",fromMeBubbleColor:"",fromMeForegroundColor:"",fromOtherBubbleColor:"",fromOtherForegroundColor:"",fromMeQuotedBubbleColor:"",fromOtherQuotedBubbleColor:"",inputBackgroundColor:"",inputTextForegroundColor:"",inputIconsMainColor:""});function HZ({children:e}){const[t]=vc(),{theme:n}=Gi(),r=t.get("backgroundColor"),s=t.get("textForegroundColor"),o=t.get("primaryColor"),l=t.get("fromMeBubbleColor"),u=t.get("fromMeForegroundColor"),d=t.get("fromOtherBubbleColor"),f=t.get("fromOtherForegroundColor"),h=t.get("fromMeQuotedBubbleColor"),m=t.get("fromOtherQuotedBubbleColor"),g=t.get("inputBackgroundColor"),x=t.get("inputTextForegroundColor"),b=t.get("inputIconsMainColor"),w=()=>n==="dark"?"#0f0f0f":"#faf9fa",C=()=>n==="dark"?"#faf9fa":"#020202",k=()=>n==="dark"?"#0b332a":"#e0f0f0",N=()=>n==="dark"?"#0b332a":"#c8fff2",T=()=>n==="dark"?"#ffffff":"#020202",_=()=>n==="dark"?"#1d2724":"#e0f0f0",I=()=>n==="dark"?"#ffffff":"#020202",M=()=>n==="dark"?"#161616":"#e0f0f0",A=()=>n==="dark"?"#faf9fa":"#020202",O=()=>n==="dark"?"#1f463d":"#aff7e6",F=()=>n==="dark"?"#0f1413":"#d2e2e2",z=()=>n==="dark"?"#0e6451":"#0b332a";return a.jsx($P.Provider,{value:{backgroundColor:r||w(),textForegroundColor:s||C(),primaryColor:o||k(),fromMeBubbleColor:l||N(),fromMeForegroundColor:u||T(),fromOtherBubbleColor:d||_(),fromOtherForegroundColor:f||I(),fromMeQuotedBubbleColor:h||O(),fromOtherQuotedBubbleColor:m||F(),inputBackgroundColor:g||M(),inputTextForegroundColor:x||A(),inputIconsMainColor:b||z()},children:e})}const ni=()=>y.useContext($P),BP=({setSelectedMedia:e})=>{const{t}=Fe(),{inputIconsMainColor:n}=ni(),r=y.useRef(null),s=y.useRef(null),[o,l]=y.useState(!1),u=m=>{const g=m.target.files?.[0];if(!g){e(null);return}const x=g.type.split("/")[0],b=g.size/(1024*1024);switch(x){case"audio":if(b>16){re.error(t("chat.media.errors.audioSize"));return}break;case"image":if(b>5){re.error(t("chat.media.errors.imageSize"));return}break;case"video":if(b>16){re.error(t("chat.media.errors.videoSize"));return}break;case"application":case"text":if(b>100){re.error(t("chat.media.errors.documentSize"));return}break;default:re.error(t("chat.media.errors.unsupportedType"));return}e(g)},d=m=>{m.preventDefault(),r.current&&r.current.click()},f=m=>{m.preventDefault(),s.current&&s.current.click()},h=["text/plain","application/pdf","application/msword","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.ms-excel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.ms-powerpoint","application/vnd.openxmlformats-officedocument.presentationml.presentation","application/zip","application/x-rar-compressed","application/x-7z-compressed"];return a.jsx(a.Fragment,{children:a.jsxs(ms,{open:o,onOpenChange:l,children:[a.jsx(gs,{asChild:!0,children:a.jsxs(q,{type:"button",variant:"ghost",size:"icon",className:"rounded-full p-2",children:[a.jsx(Yr,{className:"h-6 w-6",style:{color:n}}),a.jsx("span",{className:"sr-only",children:t("chat.media.attach")})]})}),a.jsxs(vs,{align:"end",children:[a.jsx("input",{ref:s,type:"file",accept:h.join(", "),onChange:u,className:"hidden"}),a.jsxs(St,{onClick:f,children:[a.jsx(DB,{className:"mr-2 h-4 w-4"}),t("chat.media.document")]}),a.jsx("input",{ref:r,type:"file",accept:"image/*, video/*",onChange:u,className:"hidden"}),a.jsxs(St,{onClick:d,children:[a.jsx(VB,{className:"mr-2 h-4 w-4"}),t("chat.media.photosAndVideos")]})]})]})})},zP=({selectedMedia:e,setSelectedMedia:t})=>{const{t:n}=Fe(),r=()=>{t(null)},s=l=>l.type.includes("image")?a.jsx("img",{className:"w-80 rounded-lg",src:URL.createObjectURL(l),alt:n("chat.media.selectedMedia.imageAlt"),style:{maxHeight:"400px",objectFit:"contain"}}):l.type.includes("video")?a.jsx("div",{className:"flex items-center justify-center",children:a.jsx("video",{className:"w-80 rounded-lg object-cover",src:URL.createObjectURL(l),controls:!0})}):a.jsx("div",{className:"flex items-center justify-center",children:a.jsxs("span",{className:"flex items-center gap-2",children:[a.jsx(px,{className:"h-6 w-6"}),n("chat.media.selectedMedia.file")]})}),o=l=>{const u=["B","KB","MB","GB","TB"];let d=0;for(;l>1024;)l/=1024,d++;return`${l.toFixed(2)} ${u[d]}`};return a.jsxs("div",{className:"relative flex items-center rounded-lg bg-[#e0f0f0] dark:bg-[#1d2724] dark:text-white",children:[a.jsx("div",{className:"absolute h-full w-1 rounded-l-lg bg-blue-700 dark:bg-blue-300"}),a.jsxs("div",{className:"flex w-full flex-col items-center justify-center gap-6 p-4 pl-4",children:[e&&s(e),a.jsxs("div",{className:"flex flex-col items-center justify-center gap-2",children:[a.jsx("span",{className:"text-sm font-medium",children:e?.name||n("chat.media.selectedMedia.selectedFile")}),a.jsx("span",{className:"text-xs text-gray-500",children:o(e?.size||0)})]})]}),a.jsx(q,{size:"icon",variant:"ghost",className:"ml-auto h-10 w-10 rounded-full",onClick:r,children:a.jsx($h,{className:"h-6 w-6"})})]})},jk=(e,t,n)=>{const r=new Date,s=new Date(r);s.setDate(s.getDate()-1);const o=new Date(e);return o.toDateString()===r.toDateString()?t("chat.date.today",{defaultValue:"Hoje"}):o.toDateString()===s.toDateString()?t("chat.date.yesterday",{defaultValue:"Ontem"}):Math.floor((r.getTime()-o.getTime())/(1e3*60*60*24))<7?o.toLocaleDateString(n,{weekday:"long"}):o.toLocaleDateString(n,{day:"2-digit",month:"2-digit",year:"numeric"})},Iu=e=>{try{if(!e.messageTimestamp)return new Date;if(typeof e.messageTimestamp=="object"){const n=[e.messageTimestamp.low,e.messageTimestamp.seconds,e.messageTimestamp.timestamp,e.messageTimestamp.time,e.messageTimestamp.value].find(r=>typeof r=="number"&&!isNaN(r))||Date.now()/1e3;return new Date(n*1e3)}else if(isNaN(Number(e.messageTimestamp))){if(typeof e.messageTimestamp=="string"&&e.messageTimestamp.includes("T"))return new Date(e.messageTimestamp)}else{const t=Number(e.messageTimestamp);return t>1e12?new Date(t):new Date(t*1e3)}return new Date}catch{return new Date}},KZ=({date:e})=>a.jsx("div",{className:"flex items-center justify-center py-3",children:a.jsx("div",{className:"rounded-full bg-muted/50 px-3 py-1",children:a.jsx("span",{className:"text-xs font-medium text-muted-foreground",children:e})})}),kk=(e,t)=>e.toLocaleTimeString(t,{hour:"2-digit",minute:"2-digit"}),Ek=["#e91e63","#9c27b0","#3f51b5","#2196f3","#00bcd4","#009688","#4caf50","#ff9800","#f44336","#795548"],WZ=e=>{let t=0;for(let n=0;n{if(!e)return"";if(typeof e=="string")try{const t=JSON.parse(e);return t.conversation||t.text||e}catch{return e}return typeof e=="object"?e.conversation||e.text||"":String(e)},Nk=({message:e})=>{const t=e.messageType;switch(t){case"conversation":if(e.message.contactMessage){const d=e.message.contactMessage;return a.jsxs("div",{className:"p-3 bg-muted rounded-lg max-w-xs",children:[a.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[a.jsx("div",{className:"text-xl",children:"👤"}),a.jsx("span",{className:"font-medium",children:"Contact"})]}),d.displayName&&a.jsx("p",{className:"text-sm font-medium",children:d.displayName}),d.vcard&&a.jsx("p",{className:"text-xs text-muted-foreground",children:"Contact card"})]})}if(e.message.locationMessage){const d=e.message.locationMessage;return a.jsxs("div",{className:"p-3 bg-muted rounded-lg max-w-xs",children:[a.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[a.jsx("div",{className:"text-xl",children:"📍"}),a.jsx("span",{className:"font-medium",children:"Location"})]}),d.name&&a.jsx("p",{className:"text-sm font-medium",children:d.name}),d.address&&a.jsx("p",{className:"text-xs text-muted-foreground",children:d.address}),d.degreesLatitude&&d.degreesLongitude&&a.jsx("a",{href:`https://maps.google.com/?q=${d.degreesLatitude},${d.degreesLongitude}`,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline text-sm mt-1 inline-block",children:"View on Maps"})]})}return a.jsx("span",{children:GZ(e.message)});case"extendedTextMessage":return a.jsx("span",{children:e.message.conversation??e.message.extendedTextMessage?.text});case"imageMessage":const r=(e.message.base64?e.message.base64.startsWith("data:")?e.message.base64:`data:image/jpeg;base64,${e.message.base64}`:null)||e.message.mediaUrl;return a.jsxs("div",{className:"flex flex-col gap-2",children:[r?a.jsx("img",{src:r,alt:"Image",className:"rounded-lg max-w-full h-auto",style:{maxWidth:"400px",maxHeight:"400px",objectFit:"contain"},loading:"lazy"}):a.jsxs("div",{className:"rounded bg-muted p-4 max-w-xs",children:[a.jsx("p",{className:"text-center text-muted-foreground",children:"Image couldn't be loaded"}),a.jsx("p",{className:"text-center text-xs text-muted-foreground mt-1",children:"Missing base64 data and mediaUrl"})]}),e.message.imageMessage?.caption&&a.jsx("p",{className:"text-sm",children:e.message.imageMessage.caption})]});case"videoMessage":const o=(e.message.base64?e.message.base64.startsWith("data:")?e.message.base64:`data:video/mp4;base64,${e.message.base64}`:null)||e.message.mediaUrl;return a.jsxs("div",{className:"flex flex-col gap-2",children:[o?a.jsx("video",{src:o,controls:!0,className:"rounded-lg max-w-full h-auto",style:{maxWidth:"400px",maxHeight:"400px"}}):a.jsxs("div",{className:"rounded bg-muted p-4 max-w-xs",children:[a.jsx("p",{className:"text-center text-muted-foreground",children:"Video couldn't be loaded"}),a.jsx("p",{className:"text-center text-xs text-muted-foreground mt-1",children:"Missing base64 data and mediaUrl"})]}),e.message.videoMessage?.caption&&a.jsx("p",{className:"text-sm",children:e.message.videoMessage.caption})]});case"audioMessage":const u=(e.message.base64?e.message.base64.startsWith("data:")?e.message.base64:`data:audio/mpeg;base64,${e.message.base64}`:null)||e.message.mediaUrl;return u?a.jsxs("audio",{controls:!0,className:"w-full max-w-xs",children:[a.jsx("source",{src:u,type:"audio/mpeg"}),"Your browser does not support the audio element."]}):a.jsxs("div",{className:"rounded bg-muted p-4 max-w-xs",children:[a.jsx("p",{className:"text-center text-muted-foreground",children:"Audio couldn't be loaded"}),a.jsx("p",{className:"text-center text-xs text-muted-foreground mt-1",children:"Missing base64 data and mediaUrl"})]});case"documentMessage":return a.jsxs("div",{className:"flex items-center gap-2 p-3 bg-muted rounded-lg max-w-xs",children:[a.jsx("div",{className:"text-2xl",children:"📄"}),a.jsxs("div",{className:"flex-1 min-w-0",children:[a.jsx("p",{className:"font-medium truncate",children:e.message.documentMessage?.fileName||"Document"}),e.message.documentMessage?.fileLength&&a.jsxs("p",{className:"text-xs text-muted-foreground",children:[(e.message.documentMessage.fileLength/1024/1024).toFixed(2)," MB"]})]})]});case"stickerMessage":return a.jsx("img",{src:e.message.mediaUrl,alt:"Sticker",className:"max-w-32 max-h-32 object-contain"});default:return a.jsx("div",{className:"text-xs text-muted-foreground bg-muted p-2 rounded max-w-xs",children:a.jsxs("details",{children:[a.jsxs("summary",{children:["Unknown message type: ",t]}),a.jsx("pre",{className:"mt-2 whitespace-pre-wrap break-all text-xs",children:JSON.stringify(e.message,null,2)})]})})}};function UP({textareaRef:e,handleTextareaChange:t,textareaHeight:n,lastMessageRef:r,scrollToBottom:s}){const{t:o,i18n:l}=Fe(),u=l.language,{instance:d}=dt(),[f,h]=y.useState(""),[m,g]=y.useState(!1),[x,b]=y.useState(null),[w,C]=y.useState([]),{sendText:k}=FP(),{sendMedia:N}=LP(),{remoteJid:T}=_s(),_=async()=>{if(!(!f.trim()||!T||!d?.name||!d?.token||m))try{g(!0),await k({instanceName:d.name,token:d.token,data:{number:T,text:f.trim()}}),h(""),e.current&&(e.current.value="",t())}catch(V){console.error("Error sending message:",V)}finally{g(!1)}},I=async()=>{if(!(!x||!T||!d?.name||!d?.token||m))try{g(!0);const V=await new Promise((K,U)=>{const D=new FileReader;D.readAsDataURL(x),D.onload=()=>{const ae=D.result.split(",")[1];K(ae)},D.onerror=U});await N({instanceName:d.name,token:d.token,data:{number:T,mediaMessage:{mediatype:x.type.split("/")[0]==="application"?"document":x.type.split("/")[0],mimetype:x.type,caption:f.trim(),media:V,fileName:x.name}}}),b(null),h(""),e.current&&(e.current.value="",t())}catch(V){console.error("Error sending media:",V)}finally{g(!1)}},M=async()=>{x?await I():await _()},A=V=>{V.key==="Enter"&&!V.shiftKey&&(V.preventDefault(),M())},O=V=>{h(V.target.value),t()},{data:F}=FZ({remoteJid:T,instanceName:d?.name}),{data:z,isSuccess:Z}=BZ({remoteJid:T,instanceName:d?.name}),B=y.useMemo(()=>{if(!z)return w;const V=new Map;return z.forEach(K=>V.set(K.key.id,K)),w.forEach(K=>{V.set(K.key.id,K)}),Array.from(V.values())},[z,w]);y.useEffect(()=>{if(!d?.name||!T)return;const V=jr(Ln.API_URL);if(!V){console.error("API URL not found in localStorage");return}const K=cw(V),U=(J,ae)=>{if(!d||ae.instance!==d.name||ae?.data?.key?.remoteJid!==T)return;const ee=ae.data;C(ie=>{const ue=ie.findIndex(j=>j.key.id===ee.key.id);if(ue!==-1){const j=[...ie];return j[ue]=ee,j}else return[...ie,ee]})},D=J=>{d&&J.instance===d.name&&console.log("Received message status update:",J)};return K.on("messages.upsert",J=>{U("messages.upsert",J)}),K.on("send.message",J=>{U("send.message",J)}),K.on("messages.update",J=>{D(J)}),K.connect(),()=>{K.off("messages.upsert"),K.off("send.message"),K.off("messages.update"),uw(K)}},[d?.name,T]);const ce=y.useMemo(()=>{if(!B)return[];const V=[...B].sort((J,ae)=>{const ee=Iu(J).getTime(),ie=Iu(ae).getTime();return ee-ie}),K=[];let U="",D=[];return V.forEach(J=>{const ee=Iu(J).toDateString();ee!==U?(D.length>0&&K.push({date:jk(new Date(U),o,u),messages:D}),U=ee,D=[J]):D.push(J)}),D.length>0&&K.push({date:jk(new Date(U),o,u),messages:D}),K},[B,o,u]);y.useEffect(()=>{Z&&B&&s()},[Z,B,s]),y.useEffect(()=>{b(null),h(""),C([]),e.current&&(e.current.value="",t())},[T]);const H=V=>a.jsx("div",{className:"mb-4 flex justify-end",children:a.jsxs("div",{className:"max-w-[70%]",children:[a.jsx("div",{className:"rounded-lg bg-primary px-3 py-2 text-sm text-primary-foreground",children:a.jsx(Nk,{message:V})}),a.jsx("span",{className:"mt-0.5 block px-1 text-right text-[11px] text-muted-foreground",children:kk(Iu(V),u)})]})},V.id),oe=V=>{const K=!!T?.endsWith("@g.us"),U=V.key.participant,D=U||V.pushName||"",J=V.pushName||(U?U.split("@")[0]:"");return a.jsx("div",{className:"mb-4 flex justify-start",children:a.jsxs("div",{className:"max-w-[70%]",children:[K&&J&&a.jsx("div",{className:"mb-1 text-xs font-semibold",style:{color:WZ(D)},children:J}),a.jsx("div",{className:"rounded-lg border bg-muted px-3 py-2 text-sm text-foreground",children:a.jsx(Nk,{message:V})}),a.jsx("span",{className:"mt-0.5 block px-1 text-[11px] text-muted-foreground",children:kk(Iu(V),u)})]})},V.id)},Q=F?.pushName||F?.remoteJid?.split("@")[0],ne=F?.remoteJid?.split("@")[0];return a.jsxs("div",{className:"flex h-full flex-col bg-muted/10",children:[a.jsx("div",{className:"flex-shrink-0 border-b bg-background/95 p-4 backdrop-blur-sm",children:a.jsxs("div",{className:"flex items-center gap-3",children:[a.jsxs(_h,{className:"h-10 w-10",children:[a.jsx(Rh,{src:F?.profilePicUrl,alt:Q}),a.jsx(iT,{className:"bg-muted text-muted-foreground",children:a.jsx(Kp,{className:"h-5 w-5"})})]}),a.jsxs("div",{className:"min-w-0 flex-1",children:[a.jsx("h3",{className:"truncate font-semibold",children:Q}),a.jsx("p",{className:"truncate text-xs text-muted-foreground",children:ne})]})]})}),a.jsxs("div",{className:"flex w-full flex-1 flex-col overflow-y-auto px-4 py-4",children:[ce.map((V,K)=>a.jsxs("div",{children:[a.jsx(KZ,{date:V.date}),V.messages.map(U=>U.key.fromMe?H(U):oe(U))]},K)),a.jsx("div",{ref:r})]}),a.jsx("div",{className:"flex-shrink-0 border-t bg-background p-3",children:a.jsxs("div",{className:"rounded-lg border border-border bg-card shadow-sm",children:[x&&a.jsx("div",{className:"border-b border-border bg-muted/30 px-3 py-2",children:a.jsx(zP,{selectedMedia:x,setSelectedMedia:b})}),a.jsxs("div",{className:"flex items-center gap-2 px-2 py-1.5",children:[a.jsx("div",{className:"flex flex-shrink-0 items-center",children:d&&a.jsx(BP,{instance:d,setSelectedMedia:b})}),a.jsx(Oo,{placeholder:o("chat.input.placeholder",{defaultValue:"Digite uma mensagem..."}),name:"message",id:"message",rows:1,ref:e,value:f,onChange:O,onKeyDown:A,disabled:m,style:{height:n},className:"min-h-9 flex-1 resize-none border-none bg-transparent px-2 py-1.5 text-sm shadow-none focus-visible:outline-none focus-visible:ring-0 focus-visible:ring-offset-0"}),a.jsxs(q,{type:"button",size:"icon",onClick:M,disabled:!f.trim()&&!x||m,className:"h-9 w-9 flex-shrink-0 bg-primary text-primary-foreground hover:bg-primary/85 disabled:bg-muted disabled:text-muted-foreground disabled:opacity-50",children:[a.jsx(Hp,{className:"h-4 w-4"}),a.jsx("span",{className:"sr-only",children:o("chat.input.send")})]})]})]})})]})}const ty=e=>e.split("@")[0];function Tk(){const{t:e}=Fe(),t=Ya("(min-width: 768px)"),n=y.useRef(null),[r]=y.useState("auto"),s=y.useRef(null),{instance:o}=dt(),[l,u]=y.useState([]),[d,f]=y.useState(""),[h,m]=y.useState("contacts"),{data:g}=BY({instanceName:o?.name}),x=y.useMemo(()=>{if(!g)return l;const O=new Map;return g.forEach(F=>O.set(F.remoteJid,F)),l.forEach(F=>{const z=O.get(F.remoteJid);O.set(F.remoteJid,z?{...z,...F}:F)}),Array.from(O.values())},[g,l]),{instanceId:b,remoteJid:w}=_s(),C=jn();y.useEffect(()=>{if(!o?.name)return;const O=jr(Ln.API_URL);if(!O)return;const F=cw(O),z=Z=>{if(!o||Z.instance!==o.name)return;const B=Z?.data?.key?.remoteJid;B&&u(ce=>{const H=ce.findIndex(Q=>Q.remoteJid===B),oe={id:B,remoteJid:B,pushName:Z?.data?.pushName||ty(B),profilePicUrl:Z?.data?.key?.profilePictureUrl||"",...Z?.data,labels:Z?.data?.labels??null};if(H!==-1){const Q=[...ce];return Q[H]={...Q[H],...oe},Q}return[...ce,oe]})};return F.on("messages.upsert",z),F.on("send.message",z),F.connect(),()=>{F.off("messages.upsert"),F.off("send.message"),uw(F)}},[o,o?.name]);const k=y.useCallback(()=>{n.current?.scrollIntoView({})},[]),N=()=>{if(!s.current)return;s.current.style.height="auto";const O=s.current.scrollHeight,z=parseInt(getComputedStyle(s.current).lineHeight)*10;s.current.style.height=`${Math.min(O,z)}px`},T=O=>C(`/manager/instance/${b}/chat/${O}`),_=()=>C(`/manager/instance/${b}/chat`),I=y.useMemo(()=>{const O=h==="contacts",F=x.filter(Z=>O?Z.remoteJid.includes("@s.whatsapp.net"):Z.remoteJid.includes("@g.us"));if(!d.trim())return F;const z=d.toLowerCase();return F.filter(Z=>Z.pushName&&Z.pushName.toLowerCase().includes(z)||Z.remoteJid.toLowerCase().includes(z))},[x,h,d]),M=!w||t,A=!!w;return a.jsxs("div",{className:"flex h-full w-full overflow-hidden rounded-lg border",children:[a.jsxs("aside",{className:ln("flex w-full flex-col border-r bg-card/50 md:w-80 md:flex-shrink-0",M?"flex":"hidden md:flex"),children:[a.jsxs("div",{className:"space-y-3 border-b p-4",children:[a.jsxs("div",{className:"relative",children:[a.jsx(VT,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),a.jsx(X,{type:"search",placeholder:e("chat.search"),value:d,onChange:O=>f(O.target.value),className:"pl-9"})]}),a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsxs(q,{type:"button",size:"sm",variant:h==="contacts"?"secondary":"ghost",className:"h-8",onClick:()=>m("contacts"),children:[a.jsx(Kp,{className:"mr-1 h-4 w-4"}),e("chat.tabs.contacts")]}),a.jsxs(q,{type:"button",size:"sm",variant:h==="groups"?"secondary":"ghost",className:"h-8",onClick:()=>m("groups"),children:[a.jsx(w1,{className:"mr-1 h-4 w-4"}),e("chat.tabs.groups")]})]}),a.jsx("div",{className:"flex items-center justify-between",children:a.jsx("span",{className:"text-xs text-muted-foreground",children:e("chat.count",{count:I.length})})})]}),a.jsx("div",{className:"flex-1 overflow-y-auto",children:I.length===0?a.jsxs("div",{className:"flex h-full flex-col items-center justify-center p-6 text-center",children:[a.jsx(sc,{className:"mb-3 h-10 w-10 text-muted-foreground/50"}),a.jsx("p",{className:"text-sm font-medium text-muted-foreground",children:e(d?"chat.empty.search":"chat.empty.default")}),d&&a.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:e("chat.empty.tryAnother")})]}):I.map(O=>{const F=w===O.remoteJid,z=O.pushName||ty(O.remoteJid);return a.jsx("button",{type:"button",onClick:()=>T(O.remoteJid),className:ln("block w-full cursor-pointer p-4 text-left transition-colors",F?"border-l-2 border-l-primary bg-primary/10":"border-b border-border/50 hover:bg-accent"),children:a.jsxs("div",{className:"flex items-start gap-3",children:[a.jsxs(_h,{className:"h-10 w-10 flex-shrink-0",children:[a.jsx(Rh,{src:O.profilePicUrl,alt:z}),a.jsx(iT,{className:"bg-muted text-muted-foreground",children:h==="groups"?a.jsx(w1,{className:"h-5 w-5"}):a.jsx(Kp,{className:"h-5 w-5"})})]}),a.jsxs("div",{className:"min-w-0 flex-1",children:[a.jsx("div",{className:"mb-0.5 flex items-center justify-between gap-2",children:a.jsx("p",{className:"truncate font-medium",children:z})}),a.jsx("p",{className:"truncate text-sm text-muted-foreground",children:ty(O.remoteJid)})]})]})},O.remoteJid)})})]}),a.jsx("main",{className:ln("flex h-full min-h-0 flex-1 flex-col overflow-hidden",A?"flex":"hidden md:flex"),children:w?a.jsxs(a.Fragment,{children:[!t&&a.jsx("div",{className:"flex items-center border-b bg-background/95 p-2 backdrop-blur-sm",children:a.jsxs(q,{variant:"ghost",size:"sm",onClick:_,children:[a.jsx(CB,{className:"mr-1 h-4 w-4"}),e("chat.back")]})}),a.jsx(UP,{textareaRef:s,handleTextareaChange:N,textareaHeight:r,lastMessageRef:n,scrollToBottom:k})]}):a.jsx("div",{className:"flex h-full flex-1 items-center justify-center p-8",children:a.jsxs("div",{className:"text-center",children:[a.jsx("div",{className:"mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-muted",children:a.jsx(sc,{className:"h-8 w-8 text-muted-foreground"})}),a.jsx("h3",{className:"mb-1 text-lg font-semibold",children:e("chat.empty.selectTitle")}),a.jsx("p",{className:"text-sm text-muted-foreground",children:e("chat.empty.selectDescription")})]})})})]})}function JZ({name:e,envVar:t}){return a.jsxs("div",{className:"flex min-h-[40vh] flex-col items-center justify-center rounded-lg border border-dashed border-border p-8 text-center",children:[a.jsx("div",{className:"mb-4 flex h-14 w-14 items-center justify-center rounded-full bg-muted",children:a.jsx(BT,{className:"h-7 w-7 text-muted-foreground"})}),a.jsxs("h3",{className:"mb-2 text-lg font-semibold",children:["Integração ",e," desabilitada"]}),a.jsxs("p",{className:"max-w-md text-sm text-muted-foreground",children:["Esta integração está desativada no servidor. Para habilitá-la, defina"," ",a.jsxs("code",{className:"rounded bg-muted px-1.5 py-0.5 font-mono text-xs",children:[t,"=true"]})," ","no arquivo ",a.jsx("code",{className:"rounded bg-muted px-1.5 py-0.5 font-mono text-xs",children:".env"})," ","do evolution-api e reinicie o serviço."]})]})}function QZ(e){if(!e)return!1;const n=e?.response?.data?.response?.message;return Array.isArray(n)?n.some(r=>typeof r=="string"&&/is disabled/i.test(r)):typeof n=="string"?/is disabled/i.test(n):!1}function sa({error:e,name:t,envVar:n,children:r}){return QZ(e)?a.jsx(JZ,{name:t,envVar:n}):a.jsx(a.Fragment,{children:r})}const YZ=e=>["chatwoot","fetchChatwoot",JSON.stringify(e)],ZZ=async({instanceName:e,token:t})=>(await je.get(`/chatwoot/find/${e}`,{headers:{apiKey:t}})).data,XZ=e=>{const{instanceName:t,token:n,...r}=e;return vt({...r,queryKey:YZ({instanceName:t,token:n}),queryFn:()=>ZZ({instanceName:t,token:n}),enabled:!!t})},eX=async({instanceName:e,token:t,data:n})=>(await je.post(`/chatwoot/set/${e}`,n,{headers:{apikey:t}})).data;function tX(){return{createChatwoot:it(eX,{invalidateKeys:[["chatwoot","fetchChatwoot"]]})}}const Xf=ye().optional().transform(e=>e===""?void 0:e),nX=hn({enabled:Re(),accountId:ye(),token:ye(),url:ye(),signMsg:Re().optional(),signDelimiter:Xf,nameInbox:Xf,organization:Xf,logo:Xf,reopenConversation:Re().optional(),conversationPending:Re().optional(),mergeBrazilContacts:Re().optional(),importContacts:Re().optional(),importMessages:Re().optional(),daysLimitImportMessages:Vt.number().optional(),autoCreate:Re(),ignoreJids:ra(ye()).default([])});function rX(){const{t:e}=Fe(),{instance:t}=dt(),[,n]=y.useState(!1),{createChatwoot:r}=tX(),{data:s,error:o}=XZ({instanceName:t?.name,token:t?.token}),l=fn({resolver:pn(nX),defaultValues:{enabled:!0,accountId:"",token:"",url:"",signMsg:!0,signDelimiter:"\\n",nameInbox:"",organization:"",logo:"",reopenConversation:!0,conversationPending:!1,mergeBrazilContacts:!0,importContacts:!1,importMessages:!1,daysLimitImportMessages:7,autoCreate:!0,ignoreJids:[]}});y.useEffect(()=>{if(s){l.setValue("ignoreJids",s.ignoreJids||[]);const d={enabled:s.enabled,accountId:s.accountId,token:s.token,url:s.url,signMsg:s.signMsg||!1,signDelimiter:s.signDelimiter||"\\n",nameInbox:s.nameInbox||"",organization:s.organization||"",logo:s.logo||"",reopenConversation:s.reopenConversation||!1,conversationPending:s.conversationPending||!1,mergeBrazilContacts:s.mergeBrazilContacts||!1,importContacts:s.importContacts||!1,importMessages:s.importMessages||!1,daysLimitImportMessages:s.daysLimitImportMessages||7,autoCreate:s.autoCreate||!1,ignoreJids:s.ignoreJids};l.reset(d)}},[s,l]);const u=async d=>{if(!t)return;n(!0);const f={enabled:d.enabled,accountId:d.accountId,token:d.token,url:d.url,signMsg:d.signMsg||!1,signDelimiter:d.signDelimiter||"\\n",nameInbox:d.nameInbox||"",organization:d.organization||"",logo:d.logo||"",reopenConversation:d.reopenConversation||!1,conversationPending:d.conversationPending||!1,mergeBrazilContacts:d.mergeBrazilContacts||!1,importContacts:d.importContacts||!1,importMessages:d.importMessages||!1,daysLimitImportMessages:d.daysLimitImportMessages||7,autoCreate:d.autoCreate,ignoreJids:d.ignoreJids};await r({instanceName:t.name,token:t.token,data:f},{onSuccess:()=>{re.success(e("chatwoot.toast.success"))},onError:h=>{console.error(e("chatwoot.toast.error"),h),DN(h)?re.error(`Error: ${h?.response?.data?.response?.message}`):re.error(e("chatwoot.toast.error"))},onSettled:()=>{n(!1)}})};return a.jsx(sa,{error:o,name:"Chatwoot",envVar:"CHATWOOT_ENABLED",children:a.jsx(Ja,{...l,children:a.jsxs("form",{onSubmit:l.handleSubmit(u),className:"w-full space-y-6",children:[a.jsxs("div",{children:[a.jsx("h3",{className:"mb-1 text-lg font-medium",children:e("chatwoot.title")}),a.jsx(al,{className:"my-4"}),a.jsxs("div",{className:"mx-4 space-y-2 divide-y [&>*]:px-4 [&>*]:py-2",children:[a.jsx(De,{name:"enabled",label:e("chatwoot.form.enabled.label"),className:"w-full justify-between",helper:e("chatwoot.form.enabled.description")}),a.jsx(ge,{name:"url",label:e("chatwoot.form.url.label"),children:a.jsx(X,{})}),a.jsx(ge,{name:"accountId",label:e("chatwoot.form.accountId.label"),children:a.jsx(X,{})}),a.jsx(ge,{name:"token",label:e("chatwoot.form.token.label"),children:a.jsx(X,{type:"password"})}),a.jsx(De,{name:"signMsg",label:e("chatwoot.form.signMsg.label"),className:"w-full justify-between",helper:e("chatwoot.form.signMsg.description")}),a.jsx(ge,{name:"signDelimiter",label:e("chatwoot.form.signDelimiter.label"),children:a.jsx(X,{})}),a.jsx(ge,{name:"nameInbox",label:e("chatwoot.form.nameInbox.label"),children:a.jsx(X,{})}),a.jsx(ge,{name:"organization",label:e("chatwoot.form.organization.label"),children:a.jsx(X,{})}),a.jsx(ge,{name:"logo",label:e("chatwoot.form.logo.label"),children:a.jsx(X,{})}),a.jsx(De,{name:"conversationPending",label:e("chatwoot.form.conversationPending.label"),className:"w-full justify-between",helper:e("chatwoot.form.conversationPending.description")}),a.jsx(De,{name:"reopenConversation",label:e("chatwoot.form.reopenConversation.label"),className:"w-full justify-between",helper:e("chatwoot.form.reopenConversation.description")}),a.jsx(De,{name:"importContacts",label:e("chatwoot.form.importContacts.label"),className:"w-full justify-between",helper:e("chatwoot.form.importContacts.description")}),a.jsx(De,{name:"importMessages",label:e("chatwoot.form.importMessages.label"),className:"w-full justify-between",helper:e("chatwoot.form.importMessages.description")}),a.jsx(ge,{name:"daysLimitImportMessages",label:e("chatwoot.form.daysLimitImportMessages.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ti,{name:"ignoreJids",label:e("chatwoot.form.ignoreJids.label"),placeholder:e("chatwoot.form.ignoreJids.placeholder")}),a.jsx(De,{name:"autoCreate",label:e("chatwoot.form.autoCreate.label"),className:"w-full justify-between",helper:e("chatwoot.form.autoCreate.description")})]})]}),a.jsx("div",{className:"mx-4 flex justify-end",children:a.jsx(q,{type:"submit",children:e("chatwoot.button.save")})})]})})})}var sX=ox("relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",{variants:{variant:{default:"bg-card text-card-foreground",destructive:"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90"}},defaultVariants:{variant:"default"}});function VP({className:e,variant:t,...n}){return a.jsx("div",{"data-slot":"alert",role:"alert",className:kt(sX({variant:t}),e),...n})}function qP({className:e,...t}){return a.jsx("div",{"data-slot":"alert-title",className:kt("col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight",e),...t})}function aX({className:e,...t}){return a.jsx("div",{"data-slot":"alert-description",className:kt("text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed",e),...t})}var Fl={},ny={exports:{}},ry,Mk;function oX(){if(Mk)return ry;Mk=1;var e="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";return ry=e,ry}var sy,_k;function iX(){if(_k)return sy;_k=1;var e=oX();function t(){}function n(){}return n.resetWarningCache=t,sy=function(){function r(l,u,d,f,h,m){if(m!==e){var g=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw g.name="Invariant Violation",g}}r.isRequired=r;function s(){return r}var o={array:r,bigint:r,bool:r,func:r,number:r,object:r,string:r,symbol:r,any:r,arrayOf:s,element:r,elementType:r,instanceOf:s,node:r,objectOf:s,oneOf:s,oneOfType:s,shape:s,exact:s,checkPropTypes:n,resetWarningCache:t};return o.PropTypes=o,o},sy}var Rk;function HP(){return Rk||(Rk=1,ny.exports=iX()()),ny.exports}var ay,Pk;function KP(){return Pk||(Pk=1,ay={L:1,M:0,Q:3,H:2}),ay}var oy,Ik;function WP(){return Ik||(Ik=1,oy={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8}),oy}var iy,Ok;function lX(){if(Ok)return iy;Ok=1;var e=WP();function t(n){this.mode=e.MODE_8BIT_BYTE,this.data=n}return t.prototype={getLength:function(n){return this.data.length},write:function(n){for(var r=0;r>>7-t%8&1)==1},put:function(t,n){for(var r=0;r>>n-r-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(t){var n=Math.floor(this.length/8);this.buffer.length<=n&&this.buffer.push(0),t&&(this.buffer[n]|=128>>>this.length%8),this.length++}},cy=e,cy}var uy,Fk;function GP(){if(Fk)return uy;Fk=1;for(var e={glog:function(n){if(n<1)throw new Error("glog("+n+")");return e.LOG_TABLE[n]},gexp:function(n){for(;n<0;)n+=255;for(;n>=256;)n-=255;return e.EXP_TABLE[n]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)},t=0;t<8;t++)e.EXP_TABLE[t]=1<=0;)l^=s.G15<=0;)l^=s.G18<>>=1;return l},getPatternPosition:function(o){return s.PATTERN_POSITION_TABLE[o-1]},getMask:function(o,l,u){switch(o){case r.PATTERN000:return(l+u)%2==0;case r.PATTERN001:return l%2==0;case r.PATTERN010:return u%3==0;case r.PATTERN011:return(l+u)%3==0;case r.PATTERN100:return(Math.floor(l/2)+Math.floor(u/3))%2==0;case r.PATTERN101:return l*u%2+l*u%3==0;case r.PATTERN110:return(l*u%2+l*u%3)%2==0;case r.PATTERN111:return(l*u%3+(l+u)%2)%2==0;default:throw new Error("bad maskPattern:"+o)}},getErrorCorrectPolynomial:function(o){for(var l=new t([1],0),u=0;u5&&(u+=3+h-5)}for(var d=0;d=7&&this.setupTypeNumber(u),this.dataCache==null&&(this.dataCache=o.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,d)},l.setupPositionProbePattern=function(u,d){for(var f=-1;f<=7;f++)if(!(u+f<=-1||this.moduleCount<=u+f))for(var h=-1;h<=7;h++)d+h<=-1||this.moduleCount<=d+h||(0<=f&&f<=6&&(h==0||h==6)||0<=h&&h<=6&&(f==0||f==6)||2<=f&&f<=4&&2<=h&&h<=4?this.modules[u+f][d+h]=!0:this.modules[u+f][d+h]=!1)},l.getBestMaskPattern=function(){for(var u=0,d=0,f=0;f<8;f++){this.makeImpl(!0,f);var h=r.getLostPoint(this);(f==0||u>h)&&(u=h,d=f)}return d},l.createMovieClip=function(u,d,f){var h=u.createEmptyMovieClip(d,f),m=1;this.make();for(var g=0;g>f&1)==1;this.modules[Math.floor(f/3)][f%3+this.moduleCount-8-3]=h}for(var f=0;f<18;f++){var h=!u&&(d>>f&1)==1;this.modules[f%3+this.moduleCount-8-3][Math.floor(f/3)]=h}},l.setupTypeInfo=function(u,d){for(var f=this.errorCorrectLevel<<3|d,h=r.getBCHTypeInfo(f),m=0;m<15;m++){var g=!u&&(h>>m&1)==1;m<6?this.modules[m][8]=g:m<8?this.modules[m+1][8]=g:this.modules[this.moduleCount-15+m][8]=g}for(var m=0;m<15;m++){var g=!u&&(h>>m&1)==1;m<8?this.modules[8][this.moduleCount-m-1]=g:m<9?this.modules[8][15-m-1+1]=g:this.modules[8][15-m-1]=g}this.modules[this.moduleCount-8][8]=!u},l.mapData=function(u,d){for(var f=-1,h=this.moduleCount-1,m=7,g=0,x=this.moduleCount-1;x>0;x-=2)for(x==6&&x--;;){for(var b=0;b<2;b++)if(this.modules[h][x-b]==null){var w=!1;g>>m&1)==1);var C=r.getMask(d,h,x-b);C&&(w=!w),this.modules[h][x-b]=w,m--,m==-1&&(g++,m=7)}if(h+=f,h<0||this.moduleCount<=h){h-=f,f=-f;break}}},o.PAD0=236,o.PAD1=17,o.createData=function(u,d,f){for(var h=t.getRSBlocks(u,d),m=new n,g=0;gb*8)throw new Error("code length overflow. ("+m.getLengthInBits()+">"+b*8+")");for(m.getLengthInBits()+4<=b*8&&m.put(0,4);m.getLengthInBits()%8!=0;)m.putBit(!1);for(;!(m.getLengthInBits()>=b*8||(m.put(o.PAD0,8),m.getLengthInBits()>=b*8));)m.put(o.PAD1,8);return o.createBytes(m,h)},o.createBytes=function(u,d){for(var f=0,h=0,m=0,g=new Array(d.length),x=new Array(d.length),b=0;b=0?_.get(I):0}}for(var M=0,k=0;k=0||Object.prototype.hasOwnProperty.call(f,g)&&(m[g]=f[g]);return m}var u={bgColor:n.default.oneOfType([n.default.object,n.default.string]).isRequired,bgD:n.default.string.isRequired,fgColor:n.default.oneOfType([n.default.object,n.default.string]).isRequired,fgD:n.default.string.isRequired,size:n.default.number.isRequired,title:n.default.string,viewBoxSize:n.default.number.isRequired,xmlns:n.default.string},d=(0,r.forwardRef)(function(f,h){var m=f.bgColor,g=f.bgD,x=f.fgD,b=f.fgColor,w=f.size,C=f.title,k=f.viewBoxSize,N=f.xmlns,T=N===void 0?"http://www.w3.org/2000/svg":N,_=l(f,["bgColor","bgD","fgD","fgColor","size","title","viewBoxSize","xmlns"]);return s.default.createElement("svg",e({},_,{height:w,ref:h,viewBox:"0 0 "+k+" "+k,width:w,xmlns:T}),C?s.default.createElement("title",null,C):null,s.default.createElement("path",{d:g,fill:m}),s.default.createElement("path",{d:x,fill:b}))});return d.displayName="QRCodeSvg",d.propTypes=u,ep.default=d,ep}var Uk;function hX(){if(Uk)return Fl;Uk=1,Object.defineProperty(Fl,"__esModule",{value:!0}),Fl.QRCode=void 0;var e=Object.assign||function(w){for(var C=1;C=0||Object.prototype.hasOwnProperty.call(w,N)&&(k[N]=w[N]);return k}var x={bgColor:n.default.oneOfType([n.default.object,n.default.string]),fgColor:n.default.oneOfType([n.default.object,n.default.string]),level:n.default.string,size:n.default.number,value:n.default.string.isRequired},b=(0,u.forwardRef)(function(w,C){var k=w.bgColor,N=k===void 0?"#FFFFFF":k,T=w.fgColor,_=T===void 0?"#000000":T,I=w.level,M=I===void 0?"L":I,A=w.size,O=A===void 0?256:A,F=w.value,z=g(w,["bgColor","fgColor","level","size","value"]),Z=new l.default(-1,s.default[M]);Z.addData(F),Z.make();var B=Z.modules;return d.default.createElement(h.default,e({},z,{bgColor:N,bgD:B.map(function(ce,H){return ce.map(function(oe,Q){return oe?"":"M "+Q+" "+H+" l 1 0 0 1 -1 0 Z"}).join(" ")}).join(" "),fgColor:_,fgD:B.map(function(ce,H){return ce.map(function(oe,Q){return oe?"M "+Q+" "+H+" l 1 0 0 1 -1 0 Z":""}).join(" ")}).join(" "),ref:C,size:O,viewBoxSize:B.length}))});return Fl.QRCode=b,b.displayName="QRCode",b.propTypes=x,Fl.default=b,Fl}var mX=hX();const gX=pd(mX);function vX({status:e}){const{t}=Fe();return e?e==="open"?a.jsx(_o,{children:t("status.open")}):e==="connecting"?a.jsx(_o,{variant:"warning",children:t("status.connecting")}):e==="close"||e==="closed"?a.jsx(_o,{variant:"destructive",children:t("status.closed")}):a.jsx(_o,{variant:"secondary",children:e}):null}const yX=e=>{navigator.clipboard.writeText(e),re.success("Copiado para a área de transferência")};function bX({token:e,className:t}){const[n,r]=y.useState(!1);return a.jsxs("div",{className:ln("flex items-center gap-3 truncate rounded-sm bg-primary/20 px-2 py-1",t),children:[a.jsx("pre",{className:"block truncate text-xs",children:n?e:e?.replace(/\w/g,"*")}),a.jsx(q,{variant:"ghost",size:"icon",onClick:()=>{yX(e)},children:a.jsx(IB,{size:"15"})}),a.jsx(q,{variant:"ghost",size:"icon",onClick:()=>{r(s=>!s)},children:n?a.jsx(OB,{size:"15"}):a.jsx(AB,{size:"15"})})]})}const Vn=({size:e=45,className:t,...n})=>a.jsx("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:a.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:e,height:e,...n,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:ln("animate-spin",t),children:a.jsx("path",{d:"M21 12a9 9 0 1 1-6.219-8.56"})})});function xX({open:e,onOpenChange:t}){const{t:n}=Fe(),{instance:r,reloadInstance:s}=dt(),{connect:o}=Cc(),[l,u]=y.useState(""),[d,f]=y.useState(""),[h,m]=y.useState(!1),[g,x]=y.useState(""),[b,w]=y.useState(!1),C=r?.connectionStatus==="open",k=y.useCallback(async()=>{if(r){m(!0);try{const M=await o({instanceName:r.name,token:r.token});u(M?.base64??""),f(M?.pairingCode??""),await s()}catch{}finally{m(!1)}}},[o,r,s]),N=y.useCallback(async()=>{if(!(!r||!g.trim())){w(!0);try{const M=await o({instanceName:r.name,token:r.token,number:g.trim()});u(M?.base64??""),f(M?.pairingCode??""),await s(),re.success(n("qrCode.toast.pairingSuccess"))}catch(M){console.error("Pairing error:",M),re.error(n("qrCode.toast.pairingError"))}finally{w(!1)}}},[o,r,g,s,n]),T=y.useCallback(async()=>{await s()},[s]);y.useEffect(()=>{!e||C||k()},[e]),y.useEffect(()=>{if(!e||C)return;const M=setInterval(()=>{T().catch(A=>console.error("Poll failed:",A))},3e3);return()=>clearInterval(M)},[e,C,T]);const _=async()=>{try{await k(),re.success(n("qrCode.toast.refreshSuccess"))}catch{re.error(n("qrCode.toast.refreshError"))}},I=()=>{u(""),f(""),x(""),t(!1)};return r?C?a.jsx(gt,{open:e,onOpenChange:t,children:a.jsxs(pt,{className:"sm:max-w-md",children:[a.jsxs(ht,{children:[a.jsxs(bt,{className:"flex items-center gap-2 text-green-500",children:[a.jsx(x1,{className:"h-5 w-5"}),n("qrCode.connected.title")]}),a.jsx(kr,{children:n("qrCode.connected.description",{instanceName:r.name})})]}),a.jsxs("div",{className:"flex flex-col items-center gap-4 py-6",children:[a.jsx("div",{className:"rounded-full bg-green-500/10 p-4",children:a.jsx(x1,{className:"h-12 w-12 text-green-500"})}),r.profileName&&a.jsxs("div",{className:"text-center",children:[a.jsx("p",{className:"text-sm text-muted-foreground",children:n("qrCode.connected.connectedAs")}),a.jsx("p",{className:"text-lg font-semibold",children:r.profileName})]})]}),a.jsx("div",{className:"flex justify-end",children:a.jsx(q,{onClick:I,className:"w-full sm:w-auto",children:n("qrCode.button.close")})})]})}):a.jsx(gt,{open:e,onOpenChange:t,children:a.jsxs(pt,{className:"sm:max-w-md",children:[a.jsxs(ht,{children:[a.jsxs(bt,{className:"flex items-center gap-2",children:[a.jsx(qp,{className:"h-5 w-5 text-primary"}),n("qrCode.title")]}),a.jsxs(kr,{children:[n("qrCode.description")," ",a.jsx("strong",{children:r.name})]})]}),a.jsxs("div",{className:"space-y-4",children:[a.jsxs("div",{className:"flex flex-col items-center gap-4",children:[l?a.jsx("div",{className:"rounded-lg border-2 border-border bg-white p-4",children:a.jsx("img",{src:l,alt:"QR Code",className:"h-64 w-64"})}):a.jsx("div",{className:"flex h-64 w-64 items-center justify-center rounded-lg border-2 border-dashed border-border",children:a.jsxs("div",{className:"text-center",children:[a.jsx(qp,{className:"mx-auto h-12 w-12 text-muted-foreground/40"}),a.jsx("p",{className:"mt-2 text-sm text-muted-foreground",children:n(h?"qrCode.generating":"qrCode.waiting")})]})}),d&&a.jsxs("div",{className:"w-full rounded-lg bg-muted p-3 text-center",children:[a.jsx("p",{className:"text-xs text-muted-foreground",children:n("qrCode.pairingCode.label")}),a.jsx("p",{className:"mt-1 font-mono text-lg font-semibold tracking-widest",children:d})]})]}),a.jsxs("div",{className:"rounded-lg bg-muted p-4",children:[a.jsx("p",{className:"text-sm font-medium",children:n("qrCode.howTo.title")}),a.jsxs("ol",{className:"mt-2 space-y-1 text-sm text-muted-foreground",children:[a.jsxs("li",{children:["1. ",n("qrCode.howTo.step1")]}),a.jsxs("li",{children:["2. ",n("qrCode.howTo.step2")]}),a.jsxs("li",{children:["3. ",n("qrCode.howTo.step3")]}),a.jsxs("li",{children:["4. ",n("qrCode.howTo.step4")]}),a.jsxs("li",{children:["5. ",n("qrCode.howTo.step5")]})]})]}),a.jsxs("div",{className:"space-y-2 border-t border-border pt-4",children:[a.jsxs(Ue,{htmlFor:"pairing-phone",className:"flex items-center gap-2 text-sm",children:[a.jsx(HB,{className:"h-4 w-4"}),n("qrCode.pairingCode.title")]}),a.jsxs("div",{className:"flex gap-2",children:[a.jsx(X,{id:"pairing-phone",type:"tel",placeholder:"5511999999999",value:g,onChange:M=>x(M.target.value),disabled:b}),a.jsx(q,{type:"button",variant:"outline",onClick:N,disabled:!g.trim()||b,children:n(b?"qrCode.pairingCode.generating":"qrCode.pairingCode.generate")})]}),a.jsx("p",{className:"text-xs text-muted-foreground",children:n("qrCode.pairingCode.hint")})]}),a.jsxs("div",{className:"flex gap-2",children:[a.jsx(q,{variant:"outline",onClick:_,disabled:h,className:"flex-1",children:h?a.jsxs(a.Fragment,{children:[a.jsx(ac,{className:"mr-2 h-4 w-4 animate-spin"}),n("qrCode.button.refreshing")]}):a.jsxs(a.Fragment,{children:[a.jsx(ac,{className:"mr-2 h-4 w-4"}),n("qrCode.button.refresh")]})}),a.jsx(q,{variant:"outline",onClick:I,children:a.jsx($h,{className:"h-4 w-4"})})]})]})]})}):null}const wX=async({instanceToken:e,number:t,text:n})=>(await Dn.post("/send/text",{number:t,text:n},{headers:{apikey:e}})).data;function SX({open:e,onOpenChange:t}){const{t:n}=Fe(),{instance:r}=dt(),s=hn({number:ye().min(1,n("sendMessage.validation.numberRequired")),message:ye().min(1,n("sendMessage.validation.messageRequired"))}),{register:o,handleSubmit:l,reset:u,formState:{errors:d,isSubmitting:f}}=fn({resolver:pn(s),defaultValues:{number:"",message:""}}),h=async g=>{if(!r?.token){re.error(n("sendMessage.toast.noToken"));return}try{await wX({instanceToken:r.token,number:g.number,text:g.message}),re.success(n("sendMessage.toast.success")),u(),t(!1)}catch(x){console.error("Send message error:",x),re.error(n("sendMessage.toast.error"))}},m=()=>{u(),t(!1)};return r?a.jsx(gt,{open:e,onOpenChange:g=>g?t(!0):m(),children:a.jsxs(pt,{className:"sm:max-w-md",children:[a.jsxs(ht,{children:[a.jsxs(bt,{className:"flex items-center gap-2",children:[a.jsx(Hp,{className:"h-5 w-5 text-primary"}),n("sendMessage.title")]}),a.jsxs(kr,{children:[n("sendMessage.description")," ",a.jsx("strong",{children:r.name})]})]}),a.jsxs("form",{onSubmit:l(h),className:"space-y-4",children:[a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{htmlFor:"number",children:n("sendMessage.form.number.label")}),a.jsx(X,{id:"number",type:"text",placeholder:"5511999999999",disabled:f,...o("number")}),d.number&&a.jsx("p",{className:"text-sm text-rose-600",children:d.number.message})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{htmlFor:"message",children:n("sendMessage.form.message.label")}),a.jsx(Oo,{id:"message",rows:4,placeholder:n("sendMessage.form.message.placeholder"),disabled:f,...o("message")}),d.message&&a.jsx("p",{className:"text-sm text-rose-600",children:d.message.message})]}),a.jsxs(Kt,{className:"flex gap-2 sm:gap-0",children:[a.jsx(q,{type:"button",variant:"outline",onClick:m,disabled:f,children:n("button.cancel")}),a.jsx(q,{type:"submit",disabled:f,children:f?a.jsxs(a.Fragment,{children:[a.jsx(Lh,{className:"mr-2 h-4 w-4 animate-spin"}),n("sendMessage.button.sending")]}):a.jsxs(a.Fragment,{children:[a.jsx(Hp,{className:"mr-2 h-4 w-4"}),n("sendMessage.button.send")]})})]})]})]})}):null}function CX(){const{t:e,i18n:t}=Fe(),n=new Intl.NumberFormat(t.language),[r,s]=y.useState(null),[o,l]=y.useState(""),[u,d]=y.useState(!1),[f,h]=y.useState(!1),m=jr(Ln.TOKEN),g=Fr()==="go",{theme:x}=Gi(),{connect:b,logout:w,restart:C}=Cc(),{instance:k,reloadInstance:N}=dt();y.useEffect(()=>{k&&(localStorage.setItem(Ln.INSTANCE_ID,k.id),localStorage.setItem(Ln.INSTANCE_NAME,k.name),localStorage.setItem(Ln.INSTANCE_TOKEN,k.token))},[k]);const T=async()=>{await N()},_=async Z=>{try{await C(Z),await N()}catch(B){console.error("Error:",B)}},I=async Z=>{try{await w(Z),await N()}catch(B){console.error("Error:",B)}},M=async(Z,B)=>{try{if(s(null),!m)return console.error("Token not found.");if(B){const ce=await b({instanceName:Z,token:m,number:k?.number});l(ce.pairingCode)}else{const ce=await b({instanceName:Z,token:m});s(ce.code)}}catch(ce){console.error("Error:",ce)}},A=async()=>{s(null),l(""),await N()},O=y.useMemo(()=>({contacts:k?._count?.Contact||0,chats:k?._count?.Chat||0,messages:k?._count?.Message||0}),[k]),F=y.useMemo(()=>x==="dark"?"#fff":x==="light"?"#000":"#189d68",[x]);if(!k)return a.jsx(Vn,{});const z=k.connectionStatus==="open";return a.jsxs("div",{className:"flex flex-col",children:[a.jsx(N_,{title:k.name,subtitle:k.profileName||e("instance.dashboard.subtitle",{defaultValue:"Gerencie sua instância"}),secondaryActions:[{label:e("button.refresh",{defaultValue:"Atualizar"}),icon:a.jsx(ac,{className:"h-4 w-4"}),onClick:T},{label:e("instance.dashboard.button.restart",{defaultValue:"Reiniciar"}),icon:a.jsx(XB,{className:"h-4 w-4"}),onClick:()=>_(k.name)},...z?[{label:e("instance.dashboard.button.disconnect",{defaultValue:"Desconectar"}),icon:a.jsx(zT,{className:"h-4 w-4"}),onClick:()=>I(k.name),variant:"destructive"}]:[],...g&&z?[{label:e("instance.dashboard.button.sendMessage",{defaultValue:"Enviar mensagem"}),icon:a.jsx(Hp,{className:"h-4 w-4"}),onClick:()=>h(!0),variant:"default"}]:[]]}),a.jsxs("div",{className:"flex flex-col gap-6",children:[a.jsxs(Bn,{className:"border-sidebar-border bg-sidebar",children:[a.jsx(Yn,{children:a.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-4",children:[a.jsxs("div",{className:"flex items-center gap-3",children:[k.profilePicUrl&&a.jsx(_h,{className:"h-12 w-12",children:a.jsx(Rh,{src:k.profilePicUrl,alt:k.name})}),a.jsxs("div",{children:[a.jsx(Zn,{className:"break-all",children:k.profileName||k.name}),k.ownerJid&&a.jsx("p",{className:"mt-1 break-all text-xs text-muted-foreground",children:k.ownerJid.split("@")[0]})]})]}),a.jsx(vX,{status:k.connectionStatus})]})}),a.jsxs(zn,{className:"flex flex-col items-start space-y-4",children:[a.jsx("div",{className:"w-full",children:a.jsx(bX,{token:k.token})}),!z&&a.jsxs(VP,{variant:"warning",className:"flex flex-wrap items-center justify-between gap-3",children:[a.jsx(qP,{className:"text-lg font-bold tracking-wide",children:e("instance.dashboard.alert")}),g?a.jsxs(a.Fragment,{children:[a.jsxs(q,{onClick:()=>d(!0),children:[a.jsx(qp,{className:"mr-2 h-4 w-4"}),e("instance.dashboard.button.qrcode.label")]}),a.jsx(xX,{open:u,onOpenChange:d})]}):a.jsxs("div",{className:"flex flex-wrap gap-2",children:[a.jsxs(gt,{children:[a.jsx(rn,{onClick:()=>M(k.name,!1),asChild:!0,children:a.jsxs(q,{children:[a.jsx(qp,{className:"mr-2 h-4 w-4"}),e("instance.dashboard.button.qrcode.label")]})}),a.jsxs(pt,{onCloseAutoFocus:A,children:[a.jsx(ht,{children:e("instance.dashboard.button.qrcode.title")}),a.jsx("div",{className:"flex items-center justify-center py-4",children:r?a.jsx(gX,{value:r,size:256,bgColor:"transparent",fgColor:F,className:"rounded-sm"}):a.jsx(Vn,{})})]})]}),k.number&&a.jsxs(gt,{children:[a.jsx(rn,{asChild:!0,children:a.jsx(q,{variant:"outline",onClick:()=>M(k.name,!0),children:e("instance.dashboard.button.pairingCode.label")})}),a.jsx(pt,{onCloseAutoFocus:A,children:a.jsx(ht,{children:a.jsx(kr,{children:o?a.jsxs("div",{className:"py-3",children:[a.jsx("p",{className:"text-center font-semibold",children:e("instance.dashboard.button.pairingCode.title")}),a.jsxs("p",{className:"mt-2 text-center font-mono text-2xl tracking-widest",children:[o.substring(0,4),"-",o.substring(4,8)]})]}):a.jsx(Vn,{})})})})]})]})]})]}),a.jsx(YV,{})]}),g&&a.jsx(SX,{open:f,onOpenChange:h}),a.jsxs("section",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3",children:[a.jsxs(Bn,{className:"border-sidebar-border bg-sidebar",children:[a.jsx(Yn,{children:a.jsxs(Zn,{className:"flex items-center gap-2 text-sm font-medium text-muted-foreground",children:[a.jsx(_B,{size:"18"}),e("instance.dashboard.contacts")]})}),a.jsx(zn,{className:"text-3xl font-bold",children:n.format(O.contacts)})]}),a.jsxs(Bn,{className:"border-sidebar-border bg-sidebar",children:[a.jsx(Yn,{children:a.jsxs(Zn,{className:"flex items-center gap-2 text-sm font-medium text-muted-foreground",children:[a.jsx(oz,{size:"18"}),e("instance.dashboard.chats")]})}),a.jsx(zn,{className:"text-3xl font-bold",children:n.format(O.chats)})]}),a.jsxs(Bn,{className:"border-sidebar-border bg-sidebar",children:[a.jsx(Yn,{children:a.jsxs(Zn,{className:"flex items-center gap-2 text-sm font-medium text-muted-foreground",children:[a.jsx(sc,{size:"18"}),e("instance.dashboard.messages")]})}),a.jsx(zn,{className:"text-3xl font-bold",children:n.format(O.messages)})]})]})]})]})}const hm=y.createContext(null);hm.displayName="PanelGroupContext";const Fn={group:"data-panel-group",groupDirection:"data-panel-group-direction",groupId:"data-panel-group-id",panel:"data-panel",panelCollapsible:"data-panel-collapsible",panelId:"data-panel-id",panelSize:"data-panel-size",resizeHandle:"data-resize-handle",resizeHandleActive:"data-resize-handle-active",resizeHandleEnabled:"data-panel-resize-handle-enabled",resizeHandleId:"data-panel-resize-handle-id",resizeHandleState:"data-resize-handle-state"},dw=10,Ai=y.useLayoutEffect,Vk=Vo.useId,jX=typeof Vk=="function"?Vk:()=>null;let kX=0;function fw(e=null){const t=jX(),n=y.useRef(e||t||null);return n.current===null&&(n.current=""+kX++),e??n.current}function QP({children:e,className:t="",collapsedSize:n,collapsible:r,defaultSize:s,forwardedRef:o,id:l,maxSize:u,minSize:d,onCollapse:f,onExpand:h,onResize:m,order:g,style:x,tagName:b="div",...w}){const C=y.useContext(hm);if(C===null)throw Error("Panel components must be rendered within a PanelGroup container");const{collapsePanel:k,expandPanel:N,getPanelSize:T,getPanelStyle:_,groupId:I,isPanelCollapsed:M,reevaluatePanelConstraints:A,registerPanel:O,resizePanel:F,unregisterPanel:z}=C,Z=fw(l),B=y.useRef({callbacks:{onCollapse:f,onExpand:h,onResize:m},constraints:{collapsedSize:n,collapsible:r,defaultSize:s,maxSize:u,minSize:d},id:Z,idIsFromProps:l!==void 0,order:g});y.useRef({didLogMissingDefaultSizeWarning:!1}),Ai(()=>{const{callbacks:H,constraints:oe}=B.current,Q={...oe};B.current.id=Z,B.current.idIsFromProps=l!==void 0,B.current.order=g,H.onCollapse=f,H.onExpand=h,H.onResize=m,oe.collapsedSize=n,oe.collapsible=r,oe.defaultSize=s,oe.maxSize=u,oe.minSize=d,(Q.collapsedSize!==oe.collapsedSize||Q.collapsible!==oe.collapsible||Q.maxSize!==oe.maxSize||Q.minSize!==oe.minSize)&&A(B.current,Q)}),Ai(()=>{const H=B.current;return O(H),()=>{z(H)}},[g,Z,O,z]),y.useImperativeHandle(o,()=>({collapse:()=>{k(B.current)},expand:H=>{N(B.current,H)},getId(){return Z},getSize(){return T(B.current)},isCollapsed(){return M(B.current)},isExpanded(){return!M(B.current)},resize:H=>{F(B.current,H)}}),[k,N,T,M,Z,F]);const ce=_(B.current,s);return y.createElement(b,{...w,children:e,className:t,id:Z,style:{...ce,...x},[Fn.groupId]:I,[Fn.panel]:"",[Fn.panelCollapsible]:r||void 0,[Fn.panelId]:Z,[Fn.panelSize]:parseFloat(""+ce.flexGrow).toFixed(1)})}const YP=y.forwardRef((e,t)=>y.createElement(QP,{...e,forwardedRef:t}));QP.displayName="Panel";YP.displayName="forwardRef(Panel)";let Fb=null,Ip=-1,To=null;function EX(e,t,n){const r=(t&nI)!==0,s=(t&rI)!==0,o=(t&sI)!==0,l=(t&aI)!==0;if(t){if(r)return o?"se-resize":l?"ne-resize":"e-resize";if(s)return o?"sw-resize":l?"nw-resize":"w-resize";if(o)return"s-resize";if(l)return"n-resize"}switch(e){case"horizontal":return"ew-resize";case"intersection":return"move";case"vertical":return"ns-resize"}}function NX(){To!==null&&(document.head.removeChild(To),Fb=null,To=null,Ip=-1)}function hy(e,t,n){var r,s;const o=EX(e,t);if(Fb!==o){if(Fb=o,To===null&&(To=document.createElement("style"),document.head.appendChild(To)),Ip>=0){var l;(l=To.sheet)===null||l===void 0||l.removeRule(Ip)}Ip=(r=(s=To.sheet)===null||s===void 0?void 0:s.insertRule(`*{cursor: ${o} !important;}`))!==null&&r!==void 0?r:-1}}function ZP(e){return e.type==="keydown"}function XP(e){return e.type.startsWith("pointer")}function eI(e){return e.type.startsWith("mouse")}function mm(e){if(XP(e)){if(e.isPrimary)return{x:e.clientX,y:e.clientY}}else if(eI(e))return{x:e.clientX,y:e.clientY};return{x:1/0,y:1/0}}function TX(){if(typeof matchMedia=="function")return matchMedia("(pointer:coarse)").matches?"coarse":"fine"}function MX(e,t,n){return e.xt.x&&e.yt.y}function _X(e,t){if(e===t)throw new Error("Cannot compare node with itself");const n={a:Kk(e),b:Kk(t)};let r;for(;n.a.at(-1)===n.b.at(-1);)e=n.a.pop(),t=n.b.pop(),r=e;Dt(r,"Stacking order can only be calculated for elements with a common ancestor");const s={a:Hk(qk(n.a)),b:Hk(qk(n.b))};if(s.a===s.b){const o=r.childNodes,l={a:n.a.at(-1),b:n.b.at(-1)};let u=o.length;for(;u--;){const d=o[u];if(d===l.a)return 1;if(d===l.b)return-1}}return Math.sign(s.a-s.b)}const RX=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function PX(e){var t;const n=getComputedStyle((t=tI(e))!==null&&t!==void 0?t:e).display;return n==="flex"||n==="inline-flex"}function IX(e){const t=getComputedStyle(e);return!!(t.position==="fixed"||t.zIndex!=="auto"&&(t.position!=="static"||PX(e))||+t.opacity<1||"transform"in t&&t.transform!=="none"||"webkitTransform"in t&&t.webkitTransform!=="none"||"mixBlendMode"in t&&t.mixBlendMode!=="normal"||"filter"in t&&t.filter!=="none"||"webkitFilter"in t&&t.webkitFilter!=="none"||"isolation"in t&&t.isolation==="isolate"||RX.test(t.willChange)||t.webkitOverflowScrolling==="touch")}function qk(e){let t=e.length;for(;t--;){const n=e[t];if(Dt(n,"Missing node"),IX(n))return n}return null}function Hk(e){return e&&Number(getComputedStyle(e).zIndex)||0}function Kk(e){const t=[];for(;e;)t.push(e),e=tI(e);return t}function tI(e){const{parentNode:t}=e;return t&&t instanceof ShadowRoot?t.host:t}const nI=1,rI=2,sI=4,aI=8,OX=TX()==="coarse";let Gs=[],Zl=!1,Mo=new Map,gm=new Map;const ud=new Set;function AX(e,t,n,r,s){var o;const{ownerDocument:l}=t,u={direction:n,element:t,hitAreaMargins:r,setResizeHandlerState:s},d=(o=Mo.get(l))!==null&&o!==void 0?o:0;return Mo.set(l,d+1),ud.add(u),fh(),function(){var h;gm.delete(e),ud.delete(u);const m=(h=Mo.get(l))!==null&&h!==void 0?h:1;if(Mo.set(l,m-1),fh(),m===1&&Mo.delete(l),Gs.includes(u)){const g=Gs.indexOf(u);g>=0&&Gs.splice(g,1),vm(),s("up",!0,null)}}}function DX(e){const{target:t}=e,{x:n,y:r}=mm(e);Zl=!0,pw({target:t,x:n,y:r}),fh(),Gs.length>0&&(ph("down",e),vm(),e.preventDefault(),oI(t)||e.stopImmediatePropagation())}function my(e){const{x:t,y:n}=mm(e);if(Zl&&e.type!=="pointerleave"&&e.buttons===0&&(Zl=!1,ph("up",e)),!Zl){const{target:r}=e;pw({target:r,x:t,y:n})}ph("move",e),vm(),Gs.length>0&&e.preventDefault()}function gy(e){const{target:t}=e,{x:n,y:r}=mm(e);gm.clear(),Zl=!1,Gs.length>0&&(e.preventDefault(),oI(t)||e.stopImmediatePropagation()),ph("up",e),pw({target:t,x:n,y:r}),vm(),fh()}function oI(e){let t=e;for(;t;){if(t.hasAttribute(Fn.resizeHandle))return!0;t=t.parentElement}return!1}function pw({target:e,x:t,y:n}){Gs.splice(0);let r=null;(e instanceof HTMLElement||e instanceof SVGElement)&&(r=e),ud.forEach(s=>{const{element:o,hitAreaMargins:l}=s,u=o.getBoundingClientRect(),{bottom:d,left:f,right:h,top:m}=u,g=OX?l.coarse:l.fine;if(t>=f-g&&t<=h+g&&n>=m-g&&n<=d+g){if(r!==null&&document.contains(r)&&o!==r&&!o.contains(r)&&!r.contains(o)&&_X(r,o)>0){let b=r,w=!1;for(;b&&!b.contains(o);){if(MX(b.getBoundingClientRect(),u)){w=!0;break}b=b.parentElement}if(w)return}Gs.push(s)}})}function vy(e,t){gm.set(e,t)}function vm(){let e=!1,t=!1;Gs.forEach(r=>{const{direction:s}=r;s==="horizontal"?e=!0:t=!0});let n=0;gm.forEach(r=>{n|=r}),e&&t?hy("intersection",n):e?hy("horizontal",n):t?hy("vertical",n):NX()}let yy;function fh(){var e;(e=yy)===null||e===void 0||e.abort(),yy=new AbortController;const t={capture:!0,signal:yy.signal};ud.size&&(Zl?(Gs.length>0&&Mo.forEach((n,r)=>{const{body:s}=r;n>0&&(s.addEventListener("contextmenu",gy,t),s.addEventListener("pointerleave",my,t),s.addEventListener("pointermove",my,t))}),Mo.forEach((n,r)=>{const{body:s}=r;s.addEventListener("pointerup",gy,t),s.addEventListener("pointercancel",gy,t)})):Mo.forEach((n,r)=>{const{body:s}=r;n>0&&(s.addEventListener("pointerdown",DX,t),s.addEventListener("pointermove",my,t))}))}function ph(e,t){ud.forEach(n=>{const{setResizeHandlerState:r}=n,s=Gs.includes(n);r(e,s,t)})}function FX(){const[e,t]=y.useState(0);return y.useCallback(()=>t(n=>n+1),[])}function Dt(e,t){if(!e)throw console.error(t),Error(t)}function Wi(e,t,n=dw){return e.toFixed(n)===t.toFixed(n)?0:e>t?1:-1}function Oa(e,t,n=dw){return Wi(e,t,n)===0}function is(e,t,n){return Wi(e,t,n)===0}function LX(e,t,n){if(e.length!==t.length)return!1;for(let r=0;r0&&(e=e<0?0-k:k)}}}{const m=e<0?u:d,g=n[m];Dt(g,`No panel constraints found for index ${m}`);const{collapsedSize:x=0,collapsible:b,minSize:w=0}=g;if(b){const C=t[m];if(Dt(C!=null,`Previous layout not found for panel index ${m}`),is(C,w)){const k=C-x;Wi(k,Math.abs(e))>0&&(e=e<0?0-k:k)}}}}{const m=e<0?1:-1;let g=e<0?d:u,x=0;for(;;){const w=t[g];Dt(w!=null,`Previous layout not found for panel index ${g}`);const k=ql({panelConstraints:n,panelIndex:g,size:100})-w;if(x+=k,g+=m,g<0||g>=n.length)break}const b=Math.min(Math.abs(e),Math.abs(x));e=e<0?0-b:b}{let g=e<0?u:d;for(;g>=0&&g=0))break;e<0?g--:g++}}if(LX(s,l))return s;{const m=e<0?d:u,g=t[m];Dt(g!=null,`Previous layout not found for panel index ${m}`);const x=g+f,b=ql({panelConstraints:n,panelIndex:m,size:x});if(l[m]=b,!is(b,x)){let w=x-b,k=e<0?d:u;for(;k>=0&&k0?k--:k++}}}const h=l.reduce((m,g)=>g+m,0);return is(h,100)?l:s}function $X({layout:e,panelsArray:t,pivotIndices:n}){let r=0,s=100,o=0,l=0;const u=n[0];Dt(u!=null,"No pivot index found"),t.forEach((m,g)=>{const{constraints:x}=m,{maxSize:b=100,minSize:w=0}=x;g===u?(r=w,s=b):(o+=w,l+=b)});const d=Math.min(s,100-o),f=Math.max(r,100-l),h=e[u];return{valueMax:d,valueMin:f,valueNow:h}}function dd(e,t=document){return Array.from(t.querySelectorAll(`[${Fn.resizeHandleId}][data-panel-group-id="${e}"]`))}function iI(e,t,n=document){const s=dd(e,n).findIndex(o=>o.getAttribute(Fn.resizeHandleId)===t);return s??null}function lI(e,t,n){const r=iI(e,t,n);return r!=null?[r,r+1]:[-1,-1]}function BX(e){return e instanceof HTMLElement?!0:typeof e=="object"&&e!==null&&"tagName"in e&&"getAttribute"in e}function cI(e,t=document){if(BX(t)&&t.dataset.panelGroupId==e)return t;const n=t.querySelector(`[data-panel-group][data-panel-group-id="${e}"]`);return n||null}function ym(e,t=document){const n=t.querySelector(`[${Fn.resizeHandleId}="${e}"]`);return n||null}function zX(e,t,n,r=document){var s,o,l,u;const d=ym(t,r),f=dd(e,r),h=d?f.indexOf(d):-1,m=(s=(o=n[h])===null||o===void 0?void 0:o.id)!==null&&s!==void 0?s:null,g=(l=(u=n[h+1])===null||u===void 0?void 0:u.id)!==null&&l!==void 0?l:null;return[m,g]}function UX({committedValuesRef:e,eagerValuesRef:t,groupId:n,layout:r,panelDataArray:s,panelGroupElement:o,setLayout:l}){y.useRef({didWarnAboutMissingResizeHandle:!1}),Ai(()=>{if(!o)return;const u=dd(n,o);for(let d=0;d{u.forEach((d,f)=>{d.removeAttribute("aria-controls"),d.removeAttribute("aria-valuemax"),d.removeAttribute("aria-valuemin"),d.removeAttribute("aria-valuenow")})}},[n,r,s,o]),y.useEffect(()=>{if(!o)return;const u=t.current;Dt(u,"Eager values not found");const{panelDataArray:d}=u,f=cI(n,o);Dt(f!=null,`No group found for id "${n}"`);const h=dd(n,o);Dt(h,`No resize handles found for group id "${n}"`);const m=h.map(g=>{const x=g.getAttribute(Fn.resizeHandleId);Dt(x,"Resize handle element has no handle id attribute");const[b,w]=zX(n,x,d,o);if(b==null||w==null)return()=>{};const C=k=>{if(!k.defaultPrevented)switch(k.key){case"Enter":{k.preventDefault();const N=d.findIndex(T=>T.id===b);if(N>=0){const T=d[N];Dt(T,`No panel data found for index ${N}`);const _=r[N],{collapsedSize:I=0,collapsible:M,minSize:A=0}=T.constraints;if(_!=null&&M){const O=Uu({delta:is(_,I)?A-I:I-_,initialLayout:r,panelConstraints:d.map(F=>F.constraints),pivotIndices:lI(n,x,o),prevLayout:r,trigger:"keyboard"});r!==O&&l(O)}}break}}};return g.addEventListener("keydown",C),()=>{g.removeEventListener("keydown",C)}});return()=>{m.forEach(g=>g())}},[o,e,t,n,r,s,l])}function Wk(e,t){if(e.length!==t.length)return!1;for(let n=0;no.constraints);let r=0,s=100;for(let o=0;o{const o=e[s];Dt(o,`Panel data not found for index ${s}`);const{callbacks:l,constraints:u,id:d}=o,{collapsedSize:f=0,collapsible:h}=u,m=n[d];if(m==null||r!==m){n[d]=r;const{onCollapse:g,onExpand:x,onResize:b}=l;b&&b(r,m),h&&(g||x)&&(x&&(m==null||Oa(m,f))&&!Oa(r,f)&&x(),g&&(m==null||!Oa(m,f))&&Oa(r,f)&&g())}})}function tp(e,t){if(e.length!==t.length)return!1;for(let n=0;n{n!==null&&clearTimeout(n),n=setTimeout(()=>{e(...s)},t)}}function Gk(e){try{if(typeof localStorage<"u")e.getItem=t=>localStorage.getItem(t),e.setItem=(t,n)=>{localStorage.setItem(t,n)};else throw new Error("localStorage not supported in this environment")}catch(t){console.error(t),e.getItem=()=>null,e.setItem=()=>{}}}function dI(e){return`react-resizable-panels:${e}`}function fI(e){return e.map(t=>{const{constraints:n,id:r,idIsFromProps:s,order:o}=t;return s?r:o?`${o}:${JSON.stringify(n)}`:JSON.stringify(n)}).sort((t,n)=>t.localeCompare(n)).join(",")}function pI(e,t){try{const n=dI(e),r=t.getItem(n);if(r){const s=JSON.parse(r);if(typeof s=="object"&&s!=null)return s}}catch{}return null}function GX(e,t,n){var r,s;const o=(r=pI(e,n))!==null&&r!==void 0?r:{},l=fI(t);return(s=o[l])!==null&&s!==void 0?s:null}function JX(e,t,n,r,s){var o;const l=dI(e),u=fI(t),d=(o=pI(e,s))!==null&&o!==void 0?o:{};d[u]={expandToSizes:Object.fromEntries(n.entries()),layout:r};try{s.setItem(l,JSON.stringify(d))}catch(f){console.error(f)}}function Jk({layout:e,panelConstraints:t}){const n=[...e],r=n.reduce((o,l)=>o+l,0);if(n.length!==t.length)throw Error(`Invalid ${t.length} panel layout: ${n.map(o=>`${o}%`).join(", ")}`);if(!is(r,100)&&n.length>0)for(let o=0;o(Gk(Vu),Vu.getItem(e)),setItem:(e,t)=>{Gk(Vu),Vu.setItem(e,t)}},Qk={};function hI({autoSaveId:e=null,children:t,className:n="",direction:r,forwardedRef:s,id:o=null,onLayout:l=null,keyboardResizeBy:u=null,storage:d=Vu,style:f,tagName:h="div",...m}){const g=fw(o),x=y.useRef(null),[b,w]=y.useState(null),[C,k]=y.useState([]),N=FX(),T=y.useRef({}),_=y.useRef(new Map),I=y.useRef(0),M=y.useRef({autoSaveId:e,direction:r,dragState:b,id:g,keyboardResizeBy:u,onLayout:l,storage:d}),A=y.useRef({layout:C,panelDataArray:[],panelDataArrayChanged:!1});y.useRef({didLogIdAndOrderWarning:!1,didLogPanelConstraintsWarning:!1,prevPanelIds:[]}),y.useImperativeHandle(s,()=>({getId:()=>M.current.id,getLayout:()=>{const{layout:ae}=A.current;return ae},setLayout:ae=>{const{onLayout:ee}=M.current,{layout:ie,panelDataArray:ue}=A.current,j=Jk({layout:ae,panelConstraints:ue.map(P=>P.constraints)});Wk(ie,j)||(k(j),A.current.layout=j,ee&&ee(j),Ll(ue,j,T.current))}}),[]),Ai(()=>{M.current.autoSaveId=e,M.current.direction=r,M.current.dragState=b,M.current.id=g,M.current.onLayout=l,M.current.storage=d}),UX({committedValuesRef:M,eagerValuesRef:A,groupId:g,layout:C,panelDataArray:A.current.panelDataArray,setLayout:k,panelGroupElement:x.current}),y.useEffect(()=>{const{panelDataArray:ae}=A.current;if(e){if(C.length===0||C.length!==ae.length)return;let ee=Qk[e];ee==null&&(ee=WX(JX,QX),Qk[e]=ee);const ie=[...ae],ue=new Map(_.current);ee(e,ie,ue,C,d)}},[e,C,d]),y.useEffect(()=>{});const O=y.useCallback(ae=>{const{onLayout:ee}=M.current,{layout:ie,panelDataArray:ue}=A.current;if(ae.constraints.collapsible){const j=ue.map(rt=>rt.constraints),{collapsedSize:P=0,panelSize:pe,pivotIndices:xe}=ji(ue,ae,ie);if(Dt(pe!=null,`Panel size not found for panel "${ae.id}"`),!Oa(pe,P)){_.current.set(ae.id,pe);const Je=Ul(ue,ae)===ue.length-1?pe-P:P-pe,nt=Uu({delta:Je,initialLayout:ie,panelConstraints:j,pivotIndices:xe,prevLayout:ie,trigger:"imperative-api"});tp(ie,nt)||(k(nt),A.current.layout=nt,ee&&ee(nt),Ll(ue,nt,T.current))}}},[]),F=y.useCallback((ae,ee)=>{const{onLayout:ie}=M.current,{layout:ue,panelDataArray:j}=A.current;if(ae.constraints.collapsible){const P=j.map(qt=>qt.constraints),{collapsedSize:pe=0,panelSize:xe=0,minSize:rt=0,pivotIndices:Je}=ji(j,ae,ue),nt=ee??rt;if(Oa(xe,pe)){const qt=_.current.get(ae.id),qn=qt!=null&&qt>=nt?qt:nt,tr=Ul(j,ae)===j.length-1?xe-qn:qn-xe,yn=Uu({delta:tr,initialLayout:ue,panelConstraints:P,pivotIndices:Je,prevLayout:ue,trigger:"imperative-api"});tp(ue,yn)||(k(yn),A.current.layout=yn,ie&&ie(yn),Ll(j,yn,T.current))}}},[]),z=y.useCallback(ae=>{const{layout:ee,panelDataArray:ie}=A.current,{panelSize:ue}=ji(ie,ae,ee);return Dt(ue!=null,`Panel size not found for panel "${ae.id}"`),ue},[]),Z=y.useCallback((ae,ee)=>{const{panelDataArray:ie}=A.current,ue=Ul(ie,ae);return KX({defaultSize:ee,dragState:b,layout:C,panelData:ie,panelIndex:ue})},[b,C]),B=y.useCallback(ae=>{const{layout:ee,panelDataArray:ie}=A.current,{collapsedSize:ue=0,collapsible:j,panelSize:P}=ji(ie,ae,ee);return Dt(P!=null,`Panel size not found for panel "${ae.id}"`),j===!0&&Oa(P,ue)},[]),ce=y.useCallback(ae=>{const{layout:ee,panelDataArray:ie}=A.current,{collapsedSize:ue=0,collapsible:j,panelSize:P}=ji(ie,ae,ee);return Dt(P!=null,`Panel size not found for panel "${ae.id}"`),!j||Wi(P,ue)>0},[]),H=y.useCallback(ae=>{const{panelDataArray:ee}=A.current;ee.push(ae),ee.sort((ie,ue)=>{const j=ie.order,P=ue.order;return j==null&&P==null?0:j==null?-1:P==null?1:j-P}),A.current.panelDataArrayChanged=!0,N()},[N]);Ai(()=>{if(A.current.panelDataArrayChanged){A.current.panelDataArrayChanged=!1;const{autoSaveId:ae,onLayout:ee,storage:ie}=M.current,{layout:ue,panelDataArray:j}=A.current;let P=null;if(ae){const xe=GX(ae,j,ie);xe&&(_.current=new Map(Object.entries(xe.expandToSizes)),P=xe.layout)}P==null&&(P=HX({panelDataArray:j}));const pe=Jk({layout:P,panelConstraints:j.map(xe=>xe.constraints)});Wk(ue,pe)||(k(pe),A.current.layout=pe,ee&&ee(pe),Ll(j,pe,T.current))}}),Ai(()=>{const ae=A.current;return()=>{ae.layout=[]}},[]);const oe=y.useCallback(ae=>{let ee=!1;const ie=x.current;return ie&&window.getComputedStyle(ie,null).getPropertyValue("direction")==="rtl"&&(ee=!0),function(j){j.preventDefault();const P=x.current;if(!P)return()=>null;const{direction:pe,dragState:xe,id:rt,keyboardResizeBy:Je,onLayout:nt}=M.current,{layout:qt,panelDataArray:qn}=A.current,{initialLayout:Mn}=xe??{},tr=lI(rt,ae,P);let yn=qX(j,ae,pe,xe,Je,P);const $r=pe==="horizontal";$r&&ee&&(yn=-yn);const Br=qn.map($=>$.constraints),or=Uu({delta:yn,initialLayout:Mn??qt,panelConstraints:Br,pivotIndices:tr,prevLayout:qt,trigger:ZP(j)?"keyboard":"mouse-or-touch"}),Nr=!tp(qt,or);(XP(j)||eI(j))&&I.current!=yn&&(I.current=yn,!Nr&&yn!==0?$r?vy(ae,yn<0?nI:rI):vy(ae,yn<0?sI:aI):vy(ae,0)),Nr&&(k(or),A.current.layout=or,nt&&nt(or),Ll(qn,or,T.current))}},[]),Q=y.useCallback((ae,ee)=>{const{onLayout:ie}=M.current,{layout:ue,panelDataArray:j}=A.current,P=j.map(qt=>qt.constraints),{panelSize:pe,pivotIndices:xe}=ji(j,ae,ue);Dt(pe!=null,`Panel size not found for panel "${ae.id}"`);const Je=Ul(j,ae)===j.length-1?pe-ee:ee-pe,nt=Uu({delta:Je,initialLayout:ue,panelConstraints:P,pivotIndices:xe,prevLayout:ue,trigger:"imperative-api"});tp(ue,nt)||(k(nt),A.current.layout=nt,ie&&ie(nt),Ll(j,nt,T.current))},[]),ne=y.useCallback((ae,ee)=>{const{layout:ie,panelDataArray:ue}=A.current,{collapsedSize:j=0,collapsible:P}=ee,{collapsedSize:pe=0,collapsible:xe,maxSize:rt=100,minSize:Je=0}=ae.constraints,{panelSize:nt}=ji(ue,ae,ie);nt!=null&&(P&&xe&&Oa(nt,j)?Oa(j,pe)||Q(ae,pe):ntrt&&Q(ae,rt))},[Q]),V=y.useCallback((ae,ee)=>{const{direction:ie}=M.current,{layout:ue}=A.current;if(!x.current)return;const j=ym(ae,x.current);Dt(j,`Drag handle element not found for id "${ae}"`);const P=uI(ie,ee);w({dragHandleId:ae,dragHandleRect:j.getBoundingClientRect(),initialCursorPosition:P,initialLayout:ue})},[]),K=y.useCallback(()=>{w(null)},[]),U=y.useCallback(ae=>{const{panelDataArray:ee}=A.current,ie=Ul(ee,ae);ie>=0&&(ee.splice(ie,1),delete T.current[ae.id],A.current.panelDataArrayChanged=!0,N())},[N]),D=y.useMemo(()=>({collapsePanel:O,direction:r,dragState:b,expandPanel:F,getPanelSize:z,getPanelStyle:Z,groupId:g,isPanelCollapsed:B,isPanelExpanded:ce,reevaluatePanelConstraints:ne,registerPanel:H,registerResizeHandle:oe,resizePanel:Q,startDragging:V,stopDragging:K,unregisterPanel:U,panelGroupElement:x.current}),[O,b,r,F,z,Z,g,B,ce,ne,H,oe,Q,V,K,U]),J={display:"flex",flexDirection:r==="horizontal"?"row":"column",height:"100%",overflow:"hidden",width:"100%"};return y.createElement(hm.Provider,{value:D},y.createElement(h,{...m,children:t,className:n,id:o,ref:x,style:{...J,...f},[Fn.group]:"",[Fn.groupDirection]:r,[Fn.groupId]:g}))}const mI=y.forwardRef((e,t)=>y.createElement(hI,{...e,forwardedRef:t}));hI.displayName="PanelGroup";mI.displayName="forwardRef(PanelGroup)";function Ul(e,t){return e.findIndex(n=>n===t||n.id===t.id)}function ji(e,t,n){const r=Ul(e,t),o=r===e.length-1?[r-1,r]:[r,r+1],l=n[r];return{...t.constraints,panelSize:l,pivotIndices:o}}function YX({disabled:e,handleId:t,resizeHandler:n,panelGroupElement:r}){y.useEffect(()=>{if(e||n==null||r==null)return;const s=ym(t,r);if(s==null)return;const o=l=>{if(!l.defaultPrevented)switch(l.key){case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"ArrowUp":case"End":case"Home":{l.preventDefault(),n(l);break}case"F6":{l.preventDefault();const u=s.getAttribute(Fn.groupId);Dt(u,`No group element found for id "${u}"`);const d=dd(u,r),f=iI(u,t,r);Dt(f!==null,`No resize element found for id "${t}"`);const h=l.shiftKey?f>0?f-1:d.length-1:f+1{s.removeEventListener("keydown",o)}},[r,e,t,n])}function gI({children:e=null,className:t="",disabled:n=!1,hitAreaMargins:r,id:s,onBlur:o,onClick:l,onDragging:u,onFocus:d,onPointerDown:f,onPointerUp:h,style:m={},tabIndex:g=0,tagName:x="div",...b}){var w,C;const k=y.useRef(null),N=y.useRef({onClick:l,onDragging:u,onPointerDown:f,onPointerUp:h});y.useEffect(()=>{N.current.onClick=l,N.current.onDragging=u,N.current.onPointerDown=f,N.current.onPointerUp=h});const T=y.useContext(hm);if(T===null)throw Error("PanelResizeHandle components must be rendered within a PanelGroup container");const{direction:_,groupId:I,registerResizeHandle:M,startDragging:A,stopDragging:O,panelGroupElement:F}=T,z=fw(s),[Z,B]=y.useState("inactive"),[ce,H]=y.useState(!1),[oe,Q]=y.useState(null),ne=y.useRef({state:Z});Ai(()=>{ne.current.state=Z}),y.useEffect(()=>{if(n)Q(null);else{const D=M(z);Q(()=>D)}},[n,z,M]);const V=(w=r?.coarse)!==null&&w!==void 0?w:15,K=(C=r?.fine)!==null&&C!==void 0?C:5;y.useEffect(()=>{if(n||oe==null)return;const D=k.current;Dt(D,"Element ref not attached");let J=!1;return AX(z,D,_,{coarse:V,fine:K},(ee,ie,ue)=>{if(!ie){B("inactive");return}switch(ee){case"down":{B("drag"),J=!1,Dt(ue,'Expected event to be defined for "down" action'),A(z,ue);const{onDragging:j,onPointerDown:P}=N.current;j?.(!0),P?.();break}case"move":{const{state:j}=ne.current;J=!0,j!=="drag"&&B("hover"),Dt(ue,'Expected event to be defined for "move" action'),oe(ue);break}case"up":{B("hover"),O();const{onClick:j,onDragging:P,onPointerUp:pe}=N.current;P?.(!1),pe?.(),J||j?.();break}}})},[V,_,n,K,M,z,oe,A,O]),YX({disabled:n,handleId:z,resizeHandler:oe,panelGroupElement:F});const U={touchAction:"none",userSelect:"none"};return y.createElement(x,{...b,children:e,className:t,id:s,onBlur:()=>{H(!1),o?.()},onFocus:()=>{H(!0),d?.()},ref:k,role:"separator",style:{...U,...m},tabIndex:g,[Fn.groupDirection]:_,[Fn.groupId]:I,[Fn.resizeHandle]:"",[Fn.resizeHandleActive]:Z==="drag"?"pointer":ce?"keyboard":void 0,[Fn.resizeHandleEnabled]:!n,[Fn.resizeHandleId]:z,[Fn.resizeHandleState]:Z})}gI.displayName="PanelResizeHandle";function ri({className:e,...t}){return a.jsx(mI,{"data-slot":"resizable-panel-group",className:kt("flex h-full w-full data-[panel-group-direction=vertical]:flex-col",e),...t})}function Er({...e}){return a.jsx(YP,{"data-slot":"resizable-panel",...e})}function si({withHandle:e,className:t,...n}){return a.jsx(gI,{"data-slot":"resizable-handle",className:kt("bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:translate-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90",t),...n,children:e&&a.jsx("div",{className:"bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border",children:a.jsx(FV,{className:"size-2.5"})})})}var ZX=Symbol.for("react.lazy"),hh=Vo[" use ".trim().toString()];function XX(e){return typeof e=="object"&&e!==null&&"then"in e}function vI(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===ZX&&"_payload"in e&&XX(e._payload)}function eee(e){const t=tee(e),n=y.forwardRef((r,s)=>{let{children:o,...l}=r;vI(o)&&typeof hh=="function"&&(o=hh(o._payload));const u=y.Children.toArray(o),d=u.find(ree);if(d){const f=d.props.children,h=u.map(m=>m===d?y.Children.count(f)>1?y.Children.only(null):y.isValidElement(f)?f.props.children:null:m);return a.jsx(t,{...l,ref:s,children:y.isValidElement(f)?y.cloneElement(f,void 0,h):null})}return a.jsx(t,{...l,ref:s,children:o})});return n.displayName=`${e}.Slot`,n}function tee(e){const t=y.forwardRef((n,r)=>{let{children:s,...o}=n;if(vI(s)&&typeof hh=="function"&&(s=hh(s._payload)),y.isValidElement(s)){const l=aee(s),u=see(o,s.props);return s.type!==y.Fragment&&(u.ref=r?Wo(r,l):l),y.cloneElement(s,u)}return y.Children.count(s)>1?y.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var nee=Symbol("radix.slottable");function ree(e){return y.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===nee}function see(e,t){const n={...t};for(const r in t){const s=e[r],o=t[r];/^on[A-Z]/.test(r)?s&&o?n[r]=(...u)=>{const d=o(...u);return s(...u),d}:s&&(n[r]=s):r==="style"?n[r]={...s,...o}:r==="className"&&(n[r]=[s,o].filter(Boolean).join(" "))}return{...e,...n}}function aee(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var oee=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],iee=oee.reduce((e,t)=>{const n=eee(`Primitive.${t}`),r=y.forwardRef((s,o)=>{const{asChild:l,...u}=s,d=l?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),a.jsx(d,{...u,ref:o})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{}),lee="Separator",Yk="horizontal",cee=["horizontal","vertical"],yI=y.forwardRef((e,t)=>{const{decorative:n,orientation:r=Yk,...s}=e,o=uee(r)?r:Yk,u=n?{role:"none"}:{"aria-orientation":o==="vertical"?o:void 0,role:"separator"};return a.jsx(iee.div,{"data-orientation":o,...u,...s,ref:t})});yI.displayName=lee;function uee(e){return cee.includes(e)}var dee=yI;function nn({className:e,orientation:t="horizontal",decorative:n=!0,...r}){return a.jsx(dee,{"data-slot":"separator",decorative:n,orientation:t,className:kt("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",e),...r})}const fee=e=>["dify","fetchDify",JSON.stringify(e)],pee=async({instanceName:e,token:t})=>(await je.get(`/dify/find/${e}`,{headers:{apikey:t}})).data,bI=e=>{const{instanceName:t,token:n,...r}=e;return vt({...r,queryKey:fee({instanceName:t,token:n}),queryFn:()=>pee({instanceName:t,token:n}),enabled:!!t&&(e.enabled??!0)})},hee=async({instanceName:e,token:t,data:n})=>(await je.post(`/dify/create/${e}`,n,{headers:{apikey:t}})).data,mee=async({instanceName:e,difyId:t,data:n})=>(await je.put(`/dify/update/${t}/${e}`,n)).data,gee=async({instanceName:e,difyId:t})=>(await je.delete(`/dify/delete/${t}/${e}`)).data,vee=async({instanceName:e,token:t,data:n})=>(await je.post(`/dify/settings/${e}`,n,{headers:{apikey:t}})).data,yee=async({instanceName:e,token:t,remoteJid:n,status:r})=>(await je.post(`/dify/changeStatus/${e}`,{remoteJid:n,status:r},{headers:{apikey:t}})).data;function bm(){const e=it(vee,{invalidateKeys:[["dify","fetchDefaultSettings"]]}),t=it(yee,{invalidateKeys:[["dify","getDify"],["dify","fetchSessions"]]}),n=it(gee,{invalidateKeys:[["dify","getDify"],["dify","fetchDify"],["dify","fetchSessions"]]}),r=it(mee,{invalidateKeys:[["dify","getDify"],["dify","fetchDify"],["dify","fetchSessions"]]}),s=it(hee,{invalidateKeys:[["dify","fetchDify"]]});return{setDefaultSettingsDify:e,changeStatusDify:t,deleteDify:n,updateDify:r,createDify:s}}const bee=e=>["dify","fetchDefaultSettings",JSON.stringify(e)],xee=async({instanceName:e,token:t})=>(await je.get(`/dify/fetchSettings/${e}`,{headers:{apikey:t}})).data,wee=e=>{const{instanceName:t,token:n,...r}=e;return vt({...r,queryKey:bee({instanceName:t,token:n}),queryFn:()=>xee({instanceName:t,token:n}),enabled:!!t})},See=hn({expire:ye(),keywordFinish:ye(),delayMessage:ye(),unknownMessage:ye(),listeningFromMe:Re(),stopBotFromMe:Re(),keepOpen:Re(),debounceTime:ye(),ignoreJids:ra(ye()).default([]),difyIdFallback:kc([jc(),ye()]).optional(),splitMessages:Re(),timePerChar:ye()});function Cee(){const{t:e}=Fe(),{instance:t}=dt(),{setDefaultSettingsDify:n}=bm(),[r,s]=y.useState(!1),{data:o,refetch:l}=bI({instanceName:t?.name,token:t?.token,enabled:r}),{data:u,refetch:d}=wee({instanceName:t?.name,token:t?.token}),f=fn({resolver:pn(See),defaultValues:{expire:"0",keywordFinish:e("dify.form.examples.keywordFinish"),delayMessage:"1000",unknownMessage:e("dify.form.examples.unknownMessage"),listeningFromMe:!1,stopBotFromMe:!1,keepOpen:!1,debounceTime:"0",ignoreJids:[],difyIdFallback:void 0,splitMessages:!1,timePerChar:"0"}});y.useEffect(()=>{u&&f.reset({expire:u?.expire?u.expire.toString():"0",keywordFinish:u.keywordFinish,delayMessage:u.delayMessage?u.delayMessage.toString():"0",unknownMessage:u.unknownMessage,listeningFromMe:u.listeningFromMe,stopBotFromMe:u.stopBotFromMe,keepOpen:u.keepOpen,debounceTime:u.debounceTime?u.debounceTime.toString():"0",ignoreJids:u.ignoreJids,difyIdFallback:u.difyIdFallback,splitMessages:u.splitMessages,timePerChar:u.timePerChar?u.timePerChar.toString():"0"})},[u]);const h=async g=>{try{if(!t||!t.name)throw new Error("instance not found.");const x={expire:parseInt(g.expire),keywordFinish:g.keywordFinish,delayMessage:parseInt(g.delayMessage),unknownMessage:g.unknownMessage,listeningFromMe:g.listeningFromMe,stopBotFromMe:g.stopBotFromMe,keepOpen:g.keepOpen,debounceTime:parseInt(g.debounceTime),difyIdFallback:g.difyIdFallback||void 0,ignoreJids:g.ignoreJids,splitMessages:g.splitMessages,timePerChar:parseInt(g.timePerChar)};await n({instanceName:t.name,token:t.token,data:x}),re.success(e("dify.toast.defaultSettings.success"))}catch(x){console.error("Error:",x),re.error(`Error: ${x?.response?.data?.response?.message}`)}};function m(){d(),l()}return a.jsxs(gt,{open:r,onOpenChange:s,children:[a.jsx(rn,{asChild:!0,children:a.jsxs(q,{variant:"secondary",size:"sm",children:[a.jsx(Go,{size:16,className:"mr-1"}),a.jsx("span",{className:"hidden sm:inline",children:e("dify.defaultSettings")})]})}),a.jsxs(pt,{className:"overflow-y-auto sm:max-h-[600px] sm:max-w-[740px]",onCloseAutoFocus:m,children:[a.jsx(ht,{children:a.jsx(bt,{children:e("dify.defaultSettings")})}),a.jsx(hr,{...f,children:a.jsxs("form",{className:"w-full space-y-6",onSubmit:f.handleSubmit(h),children:[a.jsx("div",{children:a.jsxs("div",{className:"space-y-4",children:[a.jsx(dn,{name:"difyIdFallback",label:e("dify.form.difyIdFallback.label"),options:o?.filter(g=>!!g.id).map(g=>({label:g.description,value:g.id}))??[]}),a.jsx(ge,{name:"expire",label:e("dify.form.expire.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ge,{name:"keywordFinish",label:e("dify.form.keywordFinish.label"),children:a.jsx(X,{})}),a.jsx(ge,{name:"delayMessage",label:e("dify.form.delayMessage.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ge,{name:"unknownMessage",label:e("dify.form.unknownMessage.label"),children:a.jsx(X,{})}),a.jsx(De,{name:"listeningFromMe",label:e("dify.form.listeningFromMe.label"),reverse:!0}),a.jsx(De,{name:"stopBotFromMe",label:e("dify.form.stopBotFromMe.label"),reverse:!0}),a.jsx(De,{name:"keepOpen",label:e("dify.form.keepOpen.label"),reverse:!0}),a.jsx(ge,{name:"debounceTime",label:e("dify.form.debounceTime.label"),children:a.jsx(X,{type:"number"})}),a.jsx(De,{name:"splitMessages",label:e("dify.form.splitMessages.label"),reverse:!0}),a.jsx(ge,{name:"timePerChar",label:e("dify.form.timePerChar.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ti,{name:"ignoreJids",label:e("dify.form.ignoreJids.label"),placeholder:e("dify.form.ignoreJids.placeholder")})]})}),a.jsx(Kt,{children:a.jsx(q,{type:"submit",children:e("dify.button.save")})})]})})]})]})}var xm="Checkbox",[jee]=ea(xm),[kee,hw]=jee(xm);function Eee(e){const{__scopeCheckbox:t,checked:n,children:r,defaultChecked:s,disabled:o,form:l,name:u,onCheckedChange:d,required:f,value:h="on",internal_do_not_use_render:m}=e,[g,x]=Ba({prop:n,defaultProp:s??!1,onChange:d,caller:xm}),[b,w]=y.useState(null),[C,k]=y.useState(null),N=y.useRef(!1),T=b?!!l||!!b.closest("form"):!0,_={checked:g,disabled:o,setChecked:x,control:b,setControl:w,name:u,form:l,value:h,hasConsumerStoppedPropagationRef:N,required:f,defaultChecked:Ao(s)?!1:s,isFormControl:T,bubbleInput:C,setBubbleInput:k};return a.jsx(kee,{scope:t,..._,children:Nee(m)?m(_):r})}var xI="CheckboxTrigger",wI=y.forwardRef(({__scopeCheckbox:e,onKeyDown:t,onClick:n,...r},s)=>{const{control:o,value:l,disabled:u,checked:d,required:f,setControl:h,setChecked:m,hasConsumerStoppedPropagationRef:g,isFormControl:x,bubbleInput:b}=hw(xI,e),w=Xt(s,h),C=y.useRef(d);return y.useEffect(()=>{const k=o?.form;if(k){const N=()=>m(C.current);return k.addEventListener("reset",N),()=>k.removeEventListener("reset",N)}},[o,m]),a.jsx(xt.button,{type:"button",role:"checkbox","aria-checked":Ao(d)?"mixed":d,"aria-required":f,"data-state":NI(d),"data-disabled":u?"":void 0,disabled:u,value:l,...r,ref:w,onKeyDown:Ge(t,k=>{k.key==="Enter"&&k.preventDefault()}),onClick:Ge(n,k=>{m(N=>Ao(N)?!0:!N),b&&x&&(g.current=k.isPropagationStopped(),g.current||k.stopPropagation())})})});wI.displayName=xI;var SI=y.forwardRef((e,t)=>{const{__scopeCheckbox:n,name:r,checked:s,defaultChecked:o,required:l,disabled:u,value:d,onCheckedChange:f,form:h,...m}=e;return a.jsx(Eee,{__scopeCheckbox:n,checked:s,defaultChecked:o,disabled:u,required:l,onCheckedChange:f,name:r,form:h,value:d,internal_do_not_use_render:({isFormControl:g})=>a.jsxs(a.Fragment,{children:[a.jsx(wI,{...m,ref:t,__scopeCheckbox:n}),g&&a.jsx(EI,{__scopeCheckbox:n})]})})});SI.displayName=xm;var CI="CheckboxIndicator",jI=y.forwardRef((e,t)=>{const{__scopeCheckbox:n,forceMount:r,...s}=e,o=hw(CI,n);return a.jsx(ta,{present:r||Ao(o.checked)||o.checked===!0,children:a.jsx(xt.span,{"data-state":NI(o.checked),"data-disabled":o.disabled?"":void 0,...s,ref:t,style:{pointerEvents:"none",...e.style}})})});jI.displayName=CI;var kI="CheckboxBubbleInput",EI=y.forwardRef(({__scopeCheckbox:e,...t},n)=>{const{control:r,hasConsumerStoppedPropagationRef:s,checked:o,defaultChecked:l,required:u,disabled:d,name:f,value:h,form:m,bubbleInput:g,setBubbleInput:x}=hw(kI,e),b=Xt(n,x),w=Jx(o),C=Sx(r);y.useEffect(()=>{const N=g;if(!N)return;const T=window.HTMLInputElement.prototype,I=Object.getOwnPropertyDescriptor(T,"checked").set,M=!s.current;if(w!==o&&I){const A=new Event("click",{bubbles:M});N.indeterminate=Ao(o),I.call(N,Ao(o)?!1:o),N.dispatchEvent(A)}},[g,w,o,s]);const k=y.useRef(Ao(o)?!1:o);return a.jsx(xt.input,{type:"checkbox","aria-hidden":!0,defaultChecked:l??k.current,required:u,disabled:d,name:f,value:h,form:m,...t,tabIndex:-1,ref:b,style:{...t.style,...C,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});EI.displayName=kI;function Nee(e){return typeof e=="function"}function Ao(e){return e==="indeterminate"}function NI(e){return Ao(e)?"indeterminate":e?"checked":"unchecked"}function Xr({className:e,...t}){return a.jsx(SI,{"data-slot":"checkbox",className:kt("peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",e),...t,children:a.jsx(jI,{"data-slot":"checkbox-indicator",className:"flex items-center justify-center text-current transition-none",children:a.jsx(Px,{className:"size-3.5"})})})}/** + * table-core + * + * Copyright (c) TanStack + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function Ro(e,t){return typeof e=="function"?e(t):e}function hs(e,t){return n=>{t.setState(r=>({...r,[e]:Ro(n,r[e])}))}}function wm(e){return e instanceof Function}function Tee(e){return Array.isArray(e)&&e.every(t=>typeof t=="number")}function TI(e,t){const n=[],r=s=>{s.forEach(o=>{n.push(o);const l=t(o);l!=null&&l.length&&r(l)})};return r(e),n}function ct(e,t,n){let r=[],s;return o=>{let l;n.key&&n.debug&&(l=Date.now());const u=e(o);if(!(u.length!==r.length||u.some((h,m)=>r[m]!==h)))return s;r=u;let f;if(n.key&&n.debug&&(f=Date.now()),s=t(...u),n==null||n.onChange==null||n.onChange(s),n.key&&n.debug&&n!=null&&n.debug()){const h=Math.round((Date.now()-l)*100)/100,m=Math.round((Date.now()-f)*100)/100,g=m/16,x=(b,w)=>{for(b=String(b);b.length{var s;return(s=e?.debugAll)!=null?s:e[t]},key:!1,onChange:r}}function Mee(e,t,n,r){const s=()=>{var l;return(l=o.getValue())!=null?l:e.options.renderFallbackValue},o={id:`${t.id}_${n.id}`,row:t,column:n,getValue:()=>t.getValue(r),renderValue:s,getContext:ct(()=>[e,n,t,o],(l,u,d,f)=>({table:l,column:u,row:d,cell:f,getValue:f.getValue,renderValue:f.renderValue}),ut(e.options,"debugCells"))};return e._features.forEach(l=>{l.createCell==null||l.createCell(o,n,t,e)},{}),o}function _ee(e,t,n,r){var s,o;const u={...e._getDefaultColumnDef(),...t},d=u.accessorKey;let f=(s=(o=u.id)!=null?o:d?typeof String.prototype.replaceAll=="function"?d.replaceAll(".","_"):d.replace(/\./g,"_"):void 0)!=null?s:typeof u.header=="string"?u.header:void 0,h;if(u.accessorFn?h=u.accessorFn:d&&(d.includes(".")?h=g=>{let x=g;for(const w of d.split(".")){var b;x=(b=x)==null?void 0:b[w]}return x}:h=g=>g[u.accessorKey]),!f)throw new Error;let m={id:`${String(f)}`,accessorFn:h,parent:r,depth:n,columnDef:u,columns:[],getFlatColumns:ct(()=>[!0],()=>{var g;return[m,...(g=m.columns)==null?void 0:g.flatMap(x=>x.getFlatColumns())]},ut(e.options,"debugColumns")),getLeafColumns:ct(()=>[e._getOrderColumnsFn()],g=>{var x;if((x=m.columns)!=null&&x.length){let b=m.columns.flatMap(w=>w.getLeafColumns());return g(b)}return[m]},ut(e.options,"debugColumns"))};for(const g of e._features)g.createColumn==null||g.createColumn(m,e);return m}const Sr="debugHeaders";function Zk(e,t,n){var r;let o={id:(r=n.id)!=null?r:t.id,column:t,index:n.index,isPlaceholder:!!n.isPlaceholder,placeholderId:n.placeholderId,depth:n.depth,subHeaders:[],colSpan:0,rowSpan:0,headerGroup:null,getLeafHeaders:()=>{const l=[],u=d=>{d.subHeaders&&d.subHeaders.length&&d.subHeaders.map(u),l.push(d)};return u(o),l},getContext:()=>({table:e,header:o,column:t})};return e._features.forEach(l=>{l.createHeader==null||l.createHeader(o,e)}),o}const Ree={createTable:e=>{e.getHeaderGroups=ct(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(t,n,r,s)=>{var o,l;const u=(o=r?.map(m=>n.find(g=>g.id===m)).filter(Boolean))!=null?o:[],d=(l=s?.map(m=>n.find(g=>g.id===m)).filter(Boolean))!=null?l:[],f=n.filter(m=>!(r!=null&&r.includes(m.id))&&!(s!=null&&s.includes(m.id)));return np(t,[...u,...f,...d],e)},ut(e.options,Sr)),e.getCenterHeaderGroups=ct(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(t,n,r,s)=>(n=n.filter(o=>!(r!=null&&r.includes(o.id))&&!(s!=null&&s.includes(o.id))),np(t,n,e,"center")),ut(e.options,Sr)),e.getLeftHeaderGroups=ct(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left],(t,n,r)=>{var s;const o=(s=r?.map(l=>n.find(u=>u.id===l)).filter(Boolean))!=null?s:[];return np(t,o,e,"left")},ut(e.options,Sr)),e.getRightHeaderGroups=ct(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.right],(t,n,r)=>{var s;const o=(s=r?.map(l=>n.find(u=>u.id===l)).filter(Boolean))!=null?s:[];return np(t,o,e,"right")},ut(e.options,Sr)),e.getFooterGroups=ct(()=>[e.getHeaderGroups()],t=>[...t].reverse(),ut(e.options,Sr)),e.getLeftFooterGroups=ct(()=>[e.getLeftHeaderGroups()],t=>[...t].reverse(),ut(e.options,Sr)),e.getCenterFooterGroups=ct(()=>[e.getCenterHeaderGroups()],t=>[...t].reverse(),ut(e.options,Sr)),e.getRightFooterGroups=ct(()=>[e.getRightHeaderGroups()],t=>[...t].reverse(),ut(e.options,Sr)),e.getFlatHeaders=ct(()=>[e.getHeaderGroups()],t=>t.map(n=>n.headers).flat(),ut(e.options,Sr)),e.getLeftFlatHeaders=ct(()=>[e.getLeftHeaderGroups()],t=>t.map(n=>n.headers).flat(),ut(e.options,Sr)),e.getCenterFlatHeaders=ct(()=>[e.getCenterHeaderGroups()],t=>t.map(n=>n.headers).flat(),ut(e.options,Sr)),e.getRightFlatHeaders=ct(()=>[e.getRightHeaderGroups()],t=>t.map(n=>n.headers).flat(),ut(e.options,Sr)),e.getCenterLeafHeaders=ct(()=>[e.getCenterFlatHeaders()],t=>t.filter(n=>{var r;return!((r=n.subHeaders)!=null&&r.length)}),ut(e.options,Sr)),e.getLeftLeafHeaders=ct(()=>[e.getLeftFlatHeaders()],t=>t.filter(n=>{var r;return!((r=n.subHeaders)!=null&&r.length)}),ut(e.options,Sr)),e.getRightLeafHeaders=ct(()=>[e.getRightFlatHeaders()],t=>t.filter(n=>{var r;return!((r=n.subHeaders)!=null&&r.length)}),ut(e.options,Sr)),e.getLeafHeaders=ct(()=>[e.getLeftHeaderGroups(),e.getCenterHeaderGroups(),e.getRightHeaderGroups()],(t,n,r)=>{var s,o,l,u,d,f;return[...(s=(o=t[0])==null?void 0:o.headers)!=null?s:[],...(l=(u=n[0])==null?void 0:u.headers)!=null?l:[],...(d=(f=r[0])==null?void 0:f.headers)!=null?d:[]].map(h=>h.getLeafHeaders()).flat()},ut(e.options,Sr))}};function np(e,t,n,r){var s,o;let l=0;const u=function(g,x){x===void 0&&(x=1),l=Math.max(l,x),g.filter(b=>b.getIsVisible()).forEach(b=>{var w;(w=b.columns)!=null&&w.length&&u(b.columns,x+1)},0)};u(e);let d=[];const f=(g,x)=>{const b={depth:x,id:[r,`${x}`].filter(Boolean).join("_"),headers:[]},w=[];g.forEach(C=>{const k=[...w].reverse()[0],N=C.column.depth===b.depth;let T,_=!1;if(N&&C.column.parent?T=C.column.parent:(T=C.column,_=!0),k&&k?.column===T)k.subHeaders.push(C);else{const I=Zk(n,T,{id:[r,x,T.id,C?.id].filter(Boolean).join("_"),isPlaceholder:_,placeholderId:_?`${w.filter(M=>M.column===T).length}`:void 0,depth:x,index:w.length});I.subHeaders.push(C),w.push(I)}b.headers.push(C),C.headerGroup=b}),d.push(b),x>0&&f(w,x-1)},h=t.map((g,x)=>Zk(n,g,{depth:l,index:x}));f(h,l-1),d.reverse();const m=g=>g.filter(b=>b.column.getIsVisible()).map(b=>{let w=0,C=0,k=[0];b.subHeaders&&b.subHeaders.length?(k=[],m(b.subHeaders).forEach(T=>{let{colSpan:_,rowSpan:I}=T;w+=_,k.push(I)})):w=1;const N=Math.min(...k);return C=C+N,b.colSpan=w,b.rowSpan=C,{colSpan:w,rowSpan:C}});return m((s=(o=d[0])==null?void 0:o.headers)!=null?s:[]),d}const Sm=(e,t,n,r,s,o,l)=>{let u={id:t,index:r,original:n,depth:s,parentId:l,_valuesCache:{},_uniqueValuesCache:{},getValue:d=>{if(u._valuesCache.hasOwnProperty(d))return u._valuesCache[d];const f=e.getColumn(d);if(f!=null&&f.accessorFn)return u._valuesCache[d]=f.accessorFn(u.original,r),u._valuesCache[d]},getUniqueValues:d=>{if(u._uniqueValuesCache.hasOwnProperty(d))return u._uniqueValuesCache[d];const f=e.getColumn(d);if(f!=null&&f.accessorFn)return f.columnDef.getUniqueValues?(u._uniqueValuesCache[d]=f.columnDef.getUniqueValues(u.original,r),u._uniqueValuesCache[d]):(u._uniqueValuesCache[d]=[u.getValue(d)],u._uniqueValuesCache[d])},renderValue:d=>{var f;return(f=u.getValue(d))!=null?f:e.options.renderFallbackValue},subRows:o??[],getLeafRows:()=>TI(u.subRows,d=>d.subRows),getParentRow:()=>u.parentId?e.getRow(u.parentId,!0):void 0,getParentRows:()=>{let d=[],f=u;for(;;){const h=f.getParentRow();if(!h)break;d.push(h),f=h}return d.reverse()},getAllCells:ct(()=>[e.getAllLeafColumns()],d=>d.map(f=>Mee(e,u,f,f.id)),ut(e.options,"debugRows")),_getAllCellsByColumnId:ct(()=>[u.getAllCells()],d=>d.reduce((f,h)=>(f[h.column.id]=h,f),{}),ut(e.options,"debugRows"))};for(let d=0;d{e._getFacetedRowModel=t.options.getFacetedRowModel&&t.options.getFacetedRowModel(t,e.id),e.getFacetedRowModel=()=>e._getFacetedRowModel?e._getFacetedRowModel():t.getPreFilteredRowModel(),e._getFacetedUniqueValues=t.options.getFacetedUniqueValues&&t.options.getFacetedUniqueValues(t,e.id),e.getFacetedUniqueValues=()=>e._getFacetedUniqueValues?e._getFacetedUniqueValues():new Map,e._getFacetedMinMaxValues=t.options.getFacetedMinMaxValues&&t.options.getFacetedMinMaxValues(t,e.id),e.getFacetedMinMaxValues=()=>{if(e._getFacetedMinMaxValues)return e._getFacetedMinMaxValues()}}},MI=(e,t,n)=>{var r;const s=n.toLowerCase();return!!(!((r=e.getValue(t))==null||(r=r.toString())==null||(r=r.toLowerCase())==null)&&r.includes(s))};MI.autoRemove=e=>Js(e);const _I=(e,t,n)=>{var r;return!!(!((r=e.getValue(t))==null||(r=r.toString())==null)&&r.includes(n))};_I.autoRemove=e=>Js(e);const RI=(e,t,n)=>{var r;return((r=e.getValue(t))==null||(r=r.toString())==null?void 0:r.toLowerCase())===n?.toLowerCase()};RI.autoRemove=e=>Js(e);const PI=(e,t,n)=>{var r;return(r=e.getValue(t))==null?void 0:r.includes(n)};PI.autoRemove=e=>Js(e)||!(e!=null&&e.length);const II=(e,t,n)=>!n.some(r=>{var s;return!((s=e.getValue(t))!=null&&s.includes(r))});II.autoRemove=e=>Js(e)||!(e!=null&&e.length);const OI=(e,t,n)=>n.some(r=>{var s;return(s=e.getValue(t))==null?void 0:s.includes(r)});OI.autoRemove=e=>Js(e)||!(e!=null&&e.length);const AI=(e,t,n)=>e.getValue(t)===n;AI.autoRemove=e=>Js(e);const DI=(e,t,n)=>e.getValue(t)==n;DI.autoRemove=e=>Js(e);const mw=(e,t,n)=>{let[r,s]=n;const o=e.getValue(t);return o>=r&&o<=s};mw.resolveFilterValue=e=>{let[t,n]=e,r=typeof t!="number"?parseFloat(t):t,s=typeof n!="number"?parseFloat(n):n,o=t===null||Number.isNaN(r)?-1/0:r,l=n===null||Number.isNaN(s)?1/0:s;if(o>l){const u=o;o=l,l=u}return[o,l]};mw.autoRemove=e=>Js(e)||Js(e[0])&&Js(e[1]);const Ia={includesString:MI,includesStringSensitive:_I,equalsString:RI,arrIncludes:PI,arrIncludesAll:II,arrIncludesSome:OI,equals:AI,weakEquals:DI,inNumberRange:mw};function Js(e){return e==null||e===""}const Iee={getDefaultColumnDef:()=>({filterFn:"auto"}),getInitialState:e=>({columnFilters:[],...e}),getDefaultOptions:e=>({onColumnFiltersChange:hs("columnFilters",e),filterFromLeafRows:!1,maxLeafRowFilterDepth:100}),createColumn:(e,t)=>{e.getAutoFilterFn=()=>{const n=t.getCoreRowModel().flatRows[0],r=n?.getValue(e.id);return typeof r=="string"?Ia.includesString:typeof r=="number"?Ia.inNumberRange:typeof r=="boolean"||r!==null&&typeof r=="object"?Ia.equals:Array.isArray(r)?Ia.arrIncludes:Ia.weakEquals},e.getFilterFn=()=>{var n,r;return wm(e.columnDef.filterFn)?e.columnDef.filterFn:e.columnDef.filterFn==="auto"?e.getAutoFilterFn():(n=(r=t.options.filterFns)==null?void 0:r[e.columnDef.filterFn])!=null?n:Ia[e.columnDef.filterFn]},e.getCanFilter=()=>{var n,r,s;return((n=e.columnDef.enableColumnFilter)!=null?n:!0)&&((r=t.options.enableColumnFilters)!=null?r:!0)&&((s=t.options.enableFilters)!=null?s:!0)&&!!e.accessorFn},e.getIsFiltered=()=>e.getFilterIndex()>-1,e.getFilterValue=()=>{var n;return(n=t.getState().columnFilters)==null||(n=n.find(r=>r.id===e.id))==null?void 0:n.value},e.getFilterIndex=()=>{var n,r;return(n=(r=t.getState().columnFilters)==null?void 0:r.findIndex(s=>s.id===e.id))!=null?n:-1},e.setFilterValue=n=>{t.setColumnFilters(r=>{const s=e.getFilterFn(),o=r?.find(h=>h.id===e.id),l=Ro(n,o?o.value:void 0);if(Xk(s,l,e)){var u;return(u=r?.filter(h=>h.id!==e.id))!=null?u:[]}const d={id:e.id,value:l};if(o){var f;return(f=r?.map(h=>h.id===e.id?d:h))!=null?f:[]}return r!=null&&r.length?[...r,d]:[d]})}},createRow:(e,t)=>{e.columnFilters={},e.columnFiltersMeta={}},createTable:e=>{e.setColumnFilters=t=>{const n=e.getAllLeafColumns(),r=s=>{var o;return(o=Ro(t,s))==null?void 0:o.filter(l=>{const u=n.find(d=>d.id===l.id);if(u){const d=u.getFilterFn();if(Xk(d,l.value,u))return!1}return!0})};e.options.onColumnFiltersChange==null||e.options.onColumnFiltersChange(r)},e.resetColumnFilters=t=>{var n,r;e.setColumnFilters(t?[]:(n=(r=e.initialState)==null?void 0:r.columnFilters)!=null?n:[])},e.getPreFilteredRowModel=()=>e.getCoreRowModel(),e.getFilteredRowModel=()=>(!e._getFilteredRowModel&&e.options.getFilteredRowModel&&(e._getFilteredRowModel=e.options.getFilteredRowModel(e)),e.options.manualFiltering||!e._getFilteredRowModel?e.getPreFilteredRowModel():e._getFilteredRowModel())}};function Xk(e,t,n){return(e&&e.autoRemove?e.autoRemove(t,n):!1)||typeof t>"u"||typeof t=="string"&&!t}const Oee=(e,t,n)=>n.reduce((r,s)=>{const o=s.getValue(e);return r+(typeof o=="number"?o:0)},0),Aee=(e,t,n)=>{let r;return n.forEach(s=>{const o=s.getValue(e);o!=null&&(r>o||r===void 0&&o>=o)&&(r=o)}),r},Dee=(e,t,n)=>{let r;return n.forEach(s=>{const o=s.getValue(e);o!=null&&(r=o)&&(r=o)}),r},Fee=(e,t,n)=>{let r,s;return n.forEach(o=>{const l=o.getValue(e);l!=null&&(r===void 0?l>=l&&(r=s=l):(r>l&&(r=l),s{let n=0,r=0;if(t.forEach(s=>{let o=s.getValue(e);o!=null&&(o=+o)>=o&&(++n,r+=o)}),n)return r/n},$ee=(e,t)=>{if(!t.length)return;const n=t.map(o=>o.getValue(e));if(!Tee(n))return;if(n.length===1)return n[0];const r=Math.floor(n.length/2),s=n.sort((o,l)=>o-l);return n.length%2!==0?s[r]:(s[r-1]+s[r])/2},Bee=(e,t)=>Array.from(new Set(t.map(n=>n.getValue(e))).values()),zee=(e,t)=>new Set(t.map(n=>n.getValue(e))).size,Uee=(e,t)=>t.length,by={sum:Oee,min:Aee,max:Dee,extent:Fee,mean:Lee,median:$ee,unique:Bee,uniqueCount:zee,count:Uee},Vee={getDefaultColumnDef:()=>({aggregatedCell:e=>{var t,n;return(t=(n=e.getValue())==null||n.toString==null?void 0:n.toString())!=null?t:null},aggregationFn:"auto"}),getInitialState:e=>({grouping:[],...e}),getDefaultOptions:e=>({onGroupingChange:hs("grouping",e),groupedColumnMode:"reorder"}),createColumn:(e,t)=>{e.toggleGrouping=()=>{t.setGrouping(n=>n!=null&&n.includes(e.id)?n.filter(r=>r!==e.id):[...n??[],e.id])},e.getCanGroup=()=>{var n,r;return((n=e.columnDef.enableGrouping)!=null?n:!0)&&((r=t.options.enableGrouping)!=null?r:!0)&&(!!e.accessorFn||!!e.columnDef.getGroupingValue)},e.getIsGrouped=()=>{var n;return(n=t.getState().grouping)==null?void 0:n.includes(e.id)},e.getGroupedIndex=()=>{var n;return(n=t.getState().grouping)==null?void 0:n.indexOf(e.id)},e.getToggleGroupingHandler=()=>{const n=e.getCanGroup();return()=>{n&&e.toggleGrouping()}},e.getAutoAggregationFn=()=>{const n=t.getCoreRowModel().flatRows[0],r=n?.getValue(e.id);if(typeof r=="number")return by.sum;if(Object.prototype.toString.call(r)==="[object Date]")return by.extent},e.getAggregationFn=()=>{var n,r;if(!e)throw new Error;return wm(e.columnDef.aggregationFn)?e.columnDef.aggregationFn:e.columnDef.aggregationFn==="auto"?e.getAutoAggregationFn():(n=(r=t.options.aggregationFns)==null?void 0:r[e.columnDef.aggregationFn])!=null?n:by[e.columnDef.aggregationFn]}},createTable:e=>{e.setGrouping=t=>e.options.onGroupingChange==null?void 0:e.options.onGroupingChange(t),e.resetGrouping=t=>{var n,r;e.setGrouping(t?[]:(n=(r=e.initialState)==null?void 0:r.grouping)!=null?n:[])},e.getPreGroupedRowModel=()=>e.getFilteredRowModel(),e.getGroupedRowModel=()=>(!e._getGroupedRowModel&&e.options.getGroupedRowModel&&(e._getGroupedRowModel=e.options.getGroupedRowModel(e)),e.options.manualGrouping||!e._getGroupedRowModel?e.getPreGroupedRowModel():e._getGroupedRowModel())},createRow:(e,t)=>{e.getIsGrouped=()=>!!e.groupingColumnId,e.getGroupingValue=n=>{if(e._groupingValuesCache.hasOwnProperty(n))return e._groupingValuesCache[n];const r=t.getColumn(n);return r!=null&&r.columnDef.getGroupingValue?(e._groupingValuesCache[n]=r.columnDef.getGroupingValue(e.original),e._groupingValuesCache[n]):e.getValue(n)},e._groupingValuesCache={}},createCell:(e,t,n,r)=>{e.getIsGrouped=()=>t.getIsGrouped()&&t.id===n.groupingColumnId,e.getIsPlaceholder=()=>!e.getIsGrouped()&&t.getIsGrouped(),e.getIsAggregated=()=>{var s;return!e.getIsGrouped()&&!e.getIsPlaceholder()&&!!((s=n.subRows)!=null&&s.length)}}};function qee(e,t,n){if(!(t!=null&&t.length)||!n)return e;const r=e.filter(o=>!t.includes(o.id));return n==="remove"?r:[...t.map(o=>e.find(l=>l.id===o)).filter(Boolean),...r]}const Hee={getInitialState:e=>({columnOrder:[],...e}),getDefaultOptions:e=>({onColumnOrderChange:hs("columnOrder",e)}),createColumn:(e,t)=>{e.getIndex=ct(n=>[Ju(t,n)],n=>n.findIndex(r=>r.id===e.id),ut(t.options,"debugColumns")),e.getIsFirstColumn=n=>{var r;return((r=Ju(t,n)[0])==null?void 0:r.id)===e.id},e.getIsLastColumn=n=>{var r;const s=Ju(t,n);return((r=s[s.length-1])==null?void 0:r.id)===e.id}},createTable:e=>{e.setColumnOrder=t=>e.options.onColumnOrderChange==null?void 0:e.options.onColumnOrderChange(t),e.resetColumnOrder=t=>{var n;e.setColumnOrder(t?[]:(n=e.initialState.columnOrder)!=null?n:[])},e._getOrderColumnsFn=ct(()=>[e.getState().columnOrder,e.getState().grouping,e.options.groupedColumnMode],(t,n,r)=>s=>{let o=[];if(!(t!=null&&t.length))o=s;else{const l=[...t],u=[...s];for(;u.length&&l.length;){const d=l.shift(),f=u.findIndex(h=>h.id===d);f>-1&&o.push(u.splice(f,1)[0])}o=[...o,...u]}return qee(o,n,r)},ut(e.options,"debugTable"))}},xy=()=>({left:[],right:[]}),Kee={getInitialState:e=>({columnPinning:xy(),...e}),getDefaultOptions:e=>({onColumnPinningChange:hs("columnPinning",e)}),createColumn:(e,t)=>{e.pin=n=>{const r=e.getLeafColumns().map(s=>s.id).filter(Boolean);t.setColumnPinning(s=>{var o,l;if(n==="right"){var u,d;return{left:((u=s?.left)!=null?u:[]).filter(m=>!(r!=null&&r.includes(m))),right:[...((d=s?.right)!=null?d:[]).filter(m=>!(r!=null&&r.includes(m))),...r]}}if(n==="left"){var f,h;return{left:[...((f=s?.left)!=null?f:[]).filter(m=>!(r!=null&&r.includes(m))),...r],right:((h=s?.right)!=null?h:[]).filter(m=>!(r!=null&&r.includes(m)))}}return{left:((o=s?.left)!=null?o:[]).filter(m=>!(r!=null&&r.includes(m))),right:((l=s?.right)!=null?l:[]).filter(m=>!(r!=null&&r.includes(m)))}})},e.getCanPin=()=>e.getLeafColumns().some(r=>{var s,o,l;return((s=r.columnDef.enablePinning)!=null?s:!0)&&((o=(l=t.options.enableColumnPinning)!=null?l:t.options.enablePinning)!=null?o:!0)}),e.getIsPinned=()=>{const n=e.getLeafColumns().map(u=>u.id),{left:r,right:s}=t.getState().columnPinning,o=n.some(u=>r?.includes(u)),l=n.some(u=>s?.includes(u));return o?"left":l?"right":!1},e.getPinnedIndex=()=>{var n,r;const s=e.getIsPinned();return s?(n=(r=t.getState().columnPinning)==null||(r=r[s])==null?void 0:r.indexOf(e.id))!=null?n:-1:0}},createRow:(e,t)=>{e.getCenterVisibleCells=ct(()=>[e._getAllVisibleCells(),t.getState().columnPinning.left,t.getState().columnPinning.right],(n,r,s)=>{const o=[...r??[],...s??[]];return n.filter(l=>!o.includes(l.column.id))},ut(t.options,"debugRows")),e.getLeftVisibleCells=ct(()=>[e._getAllVisibleCells(),t.getState().columnPinning.left],(n,r)=>(r??[]).map(o=>n.find(l=>l.column.id===o)).filter(Boolean).map(o=>({...o,position:"left"})),ut(t.options,"debugRows")),e.getRightVisibleCells=ct(()=>[e._getAllVisibleCells(),t.getState().columnPinning.right],(n,r)=>(r??[]).map(o=>n.find(l=>l.column.id===o)).filter(Boolean).map(o=>({...o,position:"right"})),ut(t.options,"debugRows"))},createTable:e=>{e.setColumnPinning=t=>e.options.onColumnPinningChange==null?void 0:e.options.onColumnPinningChange(t),e.resetColumnPinning=t=>{var n,r;return e.setColumnPinning(t?xy():(n=(r=e.initialState)==null?void 0:r.columnPinning)!=null?n:xy())},e.getIsSomeColumnsPinned=t=>{var n;const r=e.getState().columnPinning;if(!t){var s,o;return!!((s=r.left)!=null&&s.length||(o=r.right)!=null&&o.length)}return!!((n=r[t])!=null&&n.length)},e.getLeftLeafColumns=ct(()=>[e.getAllLeafColumns(),e.getState().columnPinning.left],(t,n)=>(n??[]).map(r=>t.find(s=>s.id===r)).filter(Boolean),ut(e.options,"debugColumns")),e.getRightLeafColumns=ct(()=>[e.getAllLeafColumns(),e.getState().columnPinning.right],(t,n)=>(n??[]).map(r=>t.find(s=>s.id===r)).filter(Boolean),ut(e.options,"debugColumns")),e.getCenterLeafColumns=ct(()=>[e.getAllLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(t,n,r)=>{const s=[...n??[],...r??[]];return t.filter(o=>!s.includes(o.id))},ut(e.options,"debugColumns"))}},rp={size:150,minSize:20,maxSize:Number.MAX_SAFE_INTEGER},wy=()=>({startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,isResizingColumn:!1,columnSizingStart:[]}),Wee={getDefaultColumnDef:()=>rp,getInitialState:e=>({columnSizing:{},columnSizingInfo:wy(),...e}),getDefaultOptions:e=>({columnResizeMode:"onEnd",columnResizeDirection:"ltr",onColumnSizingChange:hs("columnSizing",e),onColumnSizingInfoChange:hs("columnSizingInfo",e)}),createColumn:(e,t)=>{e.getSize=()=>{var n,r,s;const o=t.getState().columnSizing[e.id];return Math.min(Math.max((n=e.columnDef.minSize)!=null?n:rp.minSize,(r=o??e.columnDef.size)!=null?r:rp.size),(s=e.columnDef.maxSize)!=null?s:rp.maxSize)},e.getStart=ct(n=>[n,Ju(t,n),t.getState().columnSizing],(n,r)=>r.slice(0,e.getIndex(n)).reduce((s,o)=>s+o.getSize(),0),ut(t.options,"debugColumns")),e.getAfter=ct(n=>[n,Ju(t,n),t.getState().columnSizing],(n,r)=>r.slice(e.getIndex(n)+1).reduce((s,o)=>s+o.getSize(),0),ut(t.options,"debugColumns")),e.resetSize=()=>{t.setColumnSizing(n=>{let{[e.id]:r,...s}=n;return s})},e.getCanResize=()=>{var n,r;return((n=e.columnDef.enableResizing)!=null?n:!0)&&((r=t.options.enableColumnResizing)!=null?r:!0)},e.getIsResizing=()=>t.getState().columnSizingInfo.isResizingColumn===e.id},createHeader:(e,t)=>{e.getSize=()=>{let n=0;const r=s=>{if(s.subHeaders.length)s.subHeaders.forEach(r);else{var o;n+=(o=s.column.getSize())!=null?o:0}};return r(e),n},e.getStart=()=>{if(e.index>0){const n=e.headerGroup.headers[e.index-1];return n.getStart()+n.getSize()}return 0},e.getResizeHandler=n=>{const r=t.getColumn(e.column.id),s=r?.getCanResize();return o=>{if(!r||!s||(o.persist==null||o.persist(),Sy(o)&&o.touches&&o.touches.length>1))return;const l=e.getSize(),u=e?e.getLeafHeaders().map(k=>[k.column.id,k.column.getSize()]):[[r.id,r.getSize()]],d=Sy(o)?Math.round(o.touches[0].clientX):o.clientX,f={},h=(k,N)=>{typeof N=="number"&&(t.setColumnSizingInfo(T=>{var _,I;const M=t.options.columnResizeDirection==="rtl"?-1:1,A=(N-((_=T?.startOffset)!=null?_:0))*M,O=Math.max(A/((I=T?.startSize)!=null?I:0),-.999999);return T.columnSizingStart.forEach(F=>{let[z,Z]=F;f[z]=Math.round(Math.max(Z+Z*O,0)*100)/100}),{...T,deltaOffset:A,deltaPercentage:O}}),(t.options.columnResizeMode==="onChange"||k==="end")&&t.setColumnSizing(T=>({...T,...f})))},m=k=>h("move",k),g=k=>{h("end",k),t.setColumnSizingInfo(N=>({...N,isResizingColumn:!1,startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,columnSizingStart:[]}))},x=n||typeof document<"u"?document:null,b={moveHandler:k=>m(k.clientX),upHandler:k=>{x?.removeEventListener("mousemove",b.moveHandler),x?.removeEventListener("mouseup",b.upHandler),g(k.clientX)}},w={moveHandler:k=>(k.cancelable&&(k.preventDefault(),k.stopPropagation()),m(k.touches[0].clientX),!1),upHandler:k=>{var N;x?.removeEventListener("touchmove",w.moveHandler),x?.removeEventListener("touchend",w.upHandler),k.cancelable&&(k.preventDefault(),k.stopPropagation()),g((N=k.touches[0])==null?void 0:N.clientX)}},C=Gee()?{passive:!1}:!1;Sy(o)?(x?.addEventListener("touchmove",w.moveHandler,C),x?.addEventListener("touchend",w.upHandler,C)):(x?.addEventListener("mousemove",b.moveHandler,C),x?.addEventListener("mouseup",b.upHandler,C)),t.setColumnSizingInfo(k=>({...k,startOffset:d,startSize:l,deltaOffset:0,deltaPercentage:0,columnSizingStart:u,isResizingColumn:r.id}))}}},createTable:e=>{e.setColumnSizing=t=>e.options.onColumnSizingChange==null?void 0:e.options.onColumnSizingChange(t),e.setColumnSizingInfo=t=>e.options.onColumnSizingInfoChange==null?void 0:e.options.onColumnSizingInfoChange(t),e.resetColumnSizing=t=>{var n;e.setColumnSizing(t?{}:(n=e.initialState.columnSizing)!=null?n:{})},e.resetHeaderSizeInfo=t=>{var n;e.setColumnSizingInfo(t?wy():(n=e.initialState.columnSizingInfo)!=null?n:wy())},e.getTotalSize=()=>{var t,n;return(t=(n=e.getHeaderGroups()[0])==null?void 0:n.headers.reduce((r,s)=>r+s.getSize(),0))!=null?t:0},e.getLeftTotalSize=()=>{var t,n;return(t=(n=e.getLeftHeaderGroups()[0])==null?void 0:n.headers.reduce((r,s)=>r+s.getSize(),0))!=null?t:0},e.getCenterTotalSize=()=>{var t,n;return(t=(n=e.getCenterHeaderGroups()[0])==null?void 0:n.headers.reduce((r,s)=>r+s.getSize(),0))!=null?t:0},e.getRightTotalSize=()=>{var t,n;return(t=(n=e.getRightHeaderGroups()[0])==null?void 0:n.headers.reduce((r,s)=>r+s.getSize(),0))!=null?t:0}}};let sp=null;function Gee(){if(typeof sp=="boolean")return sp;let e=!1;try{const t={get passive(){return e=!0,!1}},n=()=>{};window.addEventListener("test",n,t),window.removeEventListener("test",n)}catch{e=!1}return sp=e,sp}function Sy(e){return e.type==="touchstart"}const Jee={getInitialState:e=>({columnVisibility:{},...e}),getDefaultOptions:e=>({onColumnVisibilityChange:hs("columnVisibility",e)}),createColumn:(e,t)=>{e.toggleVisibility=n=>{e.getCanHide()&&t.setColumnVisibility(r=>({...r,[e.id]:n??!e.getIsVisible()}))},e.getIsVisible=()=>{var n,r;const s=e.columns;return(n=s.length?s.some(o=>o.getIsVisible()):(r=t.getState().columnVisibility)==null?void 0:r[e.id])!=null?n:!0},e.getCanHide=()=>{var n,r;return((n=e.columnDef.enableHiding)!=null?n:!0)&&((r=t.options.enableHiding)!=null?r:!0)},e.getToggleVisibilityHandler=()=>n=>{e.toggleVisibility==null||e.toggleVisibility(n.target.checked)}},createRow:(e,t)=>{e._getAllVisibleCells=ct(()=>[e.getAllCells(),t.getState().columnVisibility],n=>n.filter(r=>r.column.getIsVisible()),ut(t.options,"debugRows")),e.getVisibleCells=ct(()=>[e.getLeftVisibleCells(),e.getCenterVisibleCells(),e.getRightVisibleCells()],(n,r,s)=>[...n,...r,...s],ut(t.options,"debugRows"))},createTable:e=>{const t=(n,r)=>ct(()=>[r(),r().filter(s=>s.getIsVisible()).map(s=>s.id).join("_")],s=>s.filter(o=>o.getIsVisible==null?void 0:o.getIsVisible()),ut(e.options,"debugColumns"));e.getVisibleFlatColumns=t("getVisibleFlatColumns",()=>e.getAllFlatColumns()),e.getVisibleLeafColumns=t("getVisibleLeafColumns",()=>e.getAllLeafColumns()),e.getLeftVisibleLeafColumns=t("getLeftVisibleLeafColumns",()=>e.getLeftLeafColumns()),e.getRightVisibleLeafColumns=t("getRightVisibleLeafColumns",()=>e.getRightLeafColumns()),e.getCenterVisibleLeafColumns=t("getCenterVisibleLeafColumns",()=>e.getCenterLeafColumns()),e.setColumnVisibility=n=>e.options.onColumnVisibilityChange==null?void 0:e.options.onColumnVisibilityChange(n),e.resetColumnVisibility=n=>{var r;e.setColumnVisibility(n?{}:(r=e.initialState.columnVisibility)!=null?r:{})},e.toggleAllColumnsVisible=n=>{var r;n=(r=n)!=null?r:!e.getIsAllColumnsVisible(),e.setColumnVisibility(e.getAllLeafColumns().reduce((s,o)=>({...s,[o.id]:n||!(o.getCanHide!=null&&o.getCanHide())}),{}))},e.getIsAllColumnsVisible=()=>!e.getAllLeafColumns().some(n=>!(n.getIsVisible!=null&&n.getIsVisible())),e.getIsSomeColumnsVisible=()=>e.getAllLeafColumns().some(n=>n.getIsVisible==null?void 0:n.getIsVisible()),e.getToggleAllColumnsVisibilityHandler=()=>n=>{var r;e.toggleAllColumnsVisible((r=n.target)==null?void 0:r.checked)}}};function Ju(e,t){return t?t==="center"?e.getCenterVisibleLeafColumns():t==="left"?e.getLeftVisibleLeafColumns():e.getRightVisibleLeafColumns():e.getVisibleLeafColumns()}const Qee={createTable:e=>{e._getGlobalFacetedRowModel=e.options.getFacetedRowModel&&e.options.getFacetedRowModel(e,"__global__"),e.getGlobalFacetedRowModel=()=>e.options.manualFiltering||!e._getGlobalFacetedRowModel?e.getPreFilteredRowModel():e._getGlobalFacetedRowModel(),e._getGlobalFacetedUniqueValues=e.options.getFacetedUniqueValues&&e.options.getFacetedUniqueValues(e,"__global__"),e.getGlobalFacetedUniqueValues=()=>e._getGlobalFacetedUniqueValues?e._getGlobalFacetedUniqueValues():new Map,e._getGlobalFacetedMinMaxValues=e.options.getFacetedMinMaxValues&&e.options.getFacetedMinMaxValues(e,"__global__"),e.getGlobalFacetedMinMaxValues=()=>{if(e._getGlobalFacetedMinMaxValues)return e._getGlobalFacetedMinMaxValues()}}},Yee={getInitialState:e=>({globalFilter:void 0,...e}),getDefaultOptions:e=>({onGlobalFilterChange:hs("globalFilter",e),globalFilterFn:"auto",getColumnCanGlobalFilter:t=>{var n;const r=(n=e.getCoreRowModel().flatRows[0])==null||(n=n._getAllCellsByColumnId()[t.id])==null?void 0:n.getValue();return typeof r=="string"||typeof r=="number"}}),createColumn:(e,t)=>{e.getCanGlobalFilter=()=>{var n,r,s,o;return((n=e.columnDef.enableGlobalFilter)!=null?n:!0)&&((r=t.options.enableGlobalFilter)!=null?r:!0)&&((s=t.options.enableFilters)!=null?s:!0)&&((o=t.options.getColumnCanGlobalFilter==null?void 0:t.options.getColumnCanGlobalFilter(e))!=null?o:!0)&&!!e.accessorFn}},createTable:e=>{e.getGlobalAutoFilterFn=()=>Ia.includesString,e.getGlobalFilterFn=()=>{var t,n;const{globalFilterFn:r}=e.options;return wm(r)?r:r==="auto"?e.getGlobalAutoFilterFn():(t=(n=e.options.filterFns)==null?void 0:n[r])!=null?t:Ia[r]},e.setGlobalFilter=t=>{e.options.onGlobalFilterChange==null||e.options.onGlobalFilterChange(t)},e.resetGlobalFilter=t=>{e.setGlobalFilter(t?void 0:e.initialState.globalFilter)}}},Zee={getInitialState:e=>({expanded:{},...e}),getDefaultOptions:e=>({onExpandedChange:hs("expanded",e),paginateExpandedRows:!0}),createTable:e=>{let t=!1,n=!1;e._autoResetExpanded=()=>{var r,s;if(!t){e._queue(()=>{t=!0});return}if((r=(s=e.options.autoResetAll)!=null?s:e.options.autoResetExpanded)!=null?r:!e.options.manualExpanding){if(n)return;n=!0,e._queue(()=>{e.resetExpanded(),n=!1})}},e.setExpanded=r=>e.options.onExpandedChange==null?void 0:e.options.onExpandedChange(r),e.toggleAllRowsExpanded=r=>{r??!e.getIsAllRowsExpanded()?e.setExpanded(!0):e.setExpanded({})},e.resetExpanded=r=>{var s,o;e.setExpanded(r?{}:(s=(o=e.initialState)==null?void 0:o.expanded)!=null?s:{})},e.getCanSomeRowsExpand=()=>e.getPrePaginationRowModel().flatRows.some(r=>r.getCanExpand()),e.getToggleAllRowsExpandedHandler=()=>r=>{r.persist==null||r.persist(),e.toggleAllRowsExpanded()},e.getIsSomeRowsExpanded=()=>{const r=e.getState().expanded;return r===!0||Object.values(r).some(Boolean)},e.getIsAllRowsExpanded=()=>{const r=e.getState().expanded;return typeof r=="boolean"?r===!0:!(!Object.keys(r).length||e.getRowModel().flatRows.some(s=>!s.getIsExpanded()))},e.getExpandedDepth=()=>{let r=0;return(e.getState().expanded===!0?Object.keys(e.getRowModel().rowsById):Object.keys(e.getState().expanded)).forEach(o=>{const l=o.split(".");r=Math.max(r,l.length)}),r},e.getPreExpandedRowModel=()=>e.getSortedRowModel(),e.getExpandedRowModel=()=>(!e._getExpandedRowModel&&e.options.getExpandedRowModel&&(e._getExpandedRowModel=e.options.getExpandedRowModel(e)),e.options.manualExpanding||!e._getExpandedRowModel?e.getPreExpandedRowModel():e._getExpandedRowModel())},createRow:(e,t)=>{e.toggleExpanded=n=>{t.setExpanded(r=>{var s;const o=r===!0?!0:!!(r!=null&&r[e.id]);let l={};if(r===!0?Object.keys(t.getRowModel().rowsById).forEach(u=>{l[u]=!0}):l=r,n=(s=n)!=null?s:!o,!o&&n)return{...l,[e.id]:!0};if(o&&!n){const{[e.id]:u,...d}=l;return d}return r})},e.getIsExpanded=()=>{var n;const r=t.getState().expanded;return!!((n=t.options.getIsRowExpanded==null?void 0:t.options.getIsRowExpanded(e))!=null?n:r===!0||r?.[e.id])},e.getCanExpand=()=>{var n,r,s;return(n=t.options.getRowCanExpand==null?void 0:t.options.getRowCanExpand(e))!=null?n:((r=t.options.enableExpanding)!=null?r:!0)&&!!((s=e.subRows)!=null&&s.length)},e.getIsAllParentsExpanded=()=>{let n=!0,r=e;for(;n&&r.parentId;)r=t.getRow(r.parentId,!0),n=r.getIsExpanded();return n},e.getToggleExpandedHandler=()=>{const n=e.getCanExpand();return()=>{n&&e.toggleExpanded()}}}},Lb=0,$b=10,Cy=()=>({pageIndex:Lb,pageSize:$b}),Xee={getInitialState:e=>({...e,pagination:{...Cy(),...e?.pagination}}),getDefaultOptions:e=>({onPaginationChange:hs("pagination",e)}),createTable:e=>{let t=!1,n=!1;e._autoResetPageIndex=()=>{var r,s;if(!t){e._queue(()=>{t=!0});return}if((r=(s=e.options.autoResetAll)!=null?s:e.options.autoResetPageIndex)!=null?r:!e.options.manualPagination){if(n)return;n=!0,e._queue(()=>{e.resetPageIndex(),n=!1})}},e.setPagination=r=>{const s=o=>Ro(r,o);return e.options.onPaginationChange==null?void 0:e.options.onPaginationChange(s)},e.resetPagination=r=>{var s;e.setPagination(r?Cy():(s=e.initialState.pagination)!=null?s:Cy())},e.setPageIndex=r=>{e.setPagination(s=>{let o=Ro(r,s.pageIndex);const l=typeof e.options.pageCount>"u"||e.options.pageCount===-1?Number.MAX_SAFE_INTEGER:e.options.pageCount-1;return o=Math.max(0,Math.min(o,l)),{...s,pageIndex:o}})},e.resetPageIndex=r=>{var s,o;e.setPageIndex(r?Lb:(s=(o=e.initialState)==null||(o=o.pagination)==null?void 0:o.pageIndex)!=null?s:Lb)},e.resetPageSize=r=>{var s,o;e.setPageSize(r?$b:(s=(o=e.initialState)==null||(o=o.pagination)==null?void 0:o.pageSize)!=null?s:$b)},e.setPageSize=r=>{e.setPagination(s=>{const o=Math.max(1,Ro(r,s.pageSize)),l=s.pageSize*s.pageIndex,u=Math.floor(l/o);return{...s,pageIndex:u,pageSize:o}})},e.setPageCount=r=>e.setPagination(s=>{var o;let l=Ro(r,(o=e.options.pageCount)!=null?o:-1);return typeof l=="number"&&(l=Math.max(-1,l)),{...s,pageCount:l}}),e.getPageOptions=ct(()=>[e.getPageCount()],r=>{let s=[];return r&&r>0&&(s=[...new Array(r)].fill(null).map((o,l)=>l)),s},ut(e.options,"debugTable")),e.getCanPreviousPage=()=>e.getState().pagination.pageIndex>0,e.getCanNextPage=()=>{const{pageIndex:r}=e.getState().pagination,s=e.getPageCount();return s===-1?!0:s===0?!1:re.setPageIndex(r=>r-1),e.nextPage=()=>e.setPageIndex(r=>r+1),e.firstPage=()=>e.setPageIndex(0),e.lastPage=()=>e.setPageIndex(e.getPageCount()-1),e.getPrePaginationRowModel=()=>e.getExpandedRowModel(),e.getPaginationRowModel=()=>(!e._getPaginationRowModel&&e.options.getPaginationRowModel&&(e._getPaginationRowModel=e.options.getPaginationRowModel(e)),e.options.manualPagination||!e._getPaginationRowModel?e.getPrePaginationRowModel():e._getPaginationRowModel()),e.getPageCount=()=>{var r;return(r=e.options.pageCount)!=null?r:Math.ceil(e.getRowCount()/e.getState().pagination.pageSize)},e.getRowCount=()=>{var r;return(r=e.options.rowCount)!=null?r:e.getPrePaginationRowModel().rows.length}}},jy=()=>({top:[],bottom:[]}),ete={getInitialState:e=>({rowPinning:jy(),...e}),getDefaultOptions:e=>({onRowPinningChange:hs("rowPinning",e)}),createRow:(e,t)=>{e.pin=(n,r,s)=>{const o=r?e.getLeafRows().map(d=>{let{id:f}=d;return f}):[],l=s?e.getParentRows().map(d=>{let{id:f}=d;return f}):[],u=new Set([...l,e.id,...o]);t.setRowPinning(d=>{var f,h;if(n==="bottom"){var m,g;return{top:((m=d?.top)!=null?m:[]).filter(w=>!(u!=null&&u.has(w))),bottom:[...((g=d?.bottom)!=null?g:[]).filter(w=>!(u!=null&&u.has(w))),...Array.from(u)]}}if(n==="top"){var x,b;return{top:[...((x=d?.top)!=null?x:[]).filter(w=>!(u!=null&&u.has(w))),...Array.from(u)],bottom:((b=d?.bottom)!=null?b:[]).filter(w=>!(u!=null&&u.has(w)))}}return{top:((f=d?.top)!=null?f:[]).filter(w=>!(u!=null&&u.has(w))),bottom:((h=d?.bottom)!=null?h:[]).filter(w=>!(u!=null&&u.has(w)))}})},e.getCanPin=()=>{var n;const{enableRowPinning:r,enablePinning:s}=t.options;return typeof r=="function"?r(e):(n=r??s)!=null?n:!0},e.getIsPinned=()=>{const n=[e.id],{top:r,bottom:s}=t.getState().rowPinning,o=n.some(u=>r?.includes(u)),l=n.some(u=>s?.includes(u));return o?"top":l?"bottom":!1},e.getPinnedIndex=()=>{var n,r;const s=e.getIsPinned();if(!s)return-1;const o=(n=s==="top"?t.getTopRows():t.getBottomRows())==null?void 0:n.map(l=>{let{id:u}=l;return u});return(r=o?.indexOf(e.id))!=null?r:-1}},createTable:e=>{e.setRowPinning=t=>e.options.onRowPinningChange==null?void 0:e.options.onRowPinningChange(t),e.resetRowPinning=t=>{var n,r;return e.setRowPinning(t?jy():(n=(r=e.initialState)==null?void 0:r.rowPinning)!=null?n:jy())},e.getIsSomeRowsPinned=t=>{var n;const r=e.getState().rowPinning;if(!t){var s,o;return!!((s=r.top)!=null&&s.length||(o=r.bottom)!=null&&o.length)}return!!((n=r[t])!=null&&n.length)},e._getPinnedRows=(t,n,r)=>{var s;return((s=e.options.keepPinnedRows)==null||s?(n??[]).map(l=>{const u=e.getRow(l,!0);return u.getIsAllParentsExpanded()?u:null}):(n??[]).map(l=>t.find(u=>u.id===l))).filter(Boolean).map(l=>({...l,position:r}))},e.getTopRows=ct(()=>[e.getRowModel().rows,e.getState().rowPinning.top],(t,n)=>e._getPinnedRows(t,n,"top"),ut(e.options,"debugRows")),e.getBottomRows=ct(()=>[e.getRowModel().rows,e.getState().rowPinning.bottom],(t,n)=>e._getPinnedRows(t,n,"bottom"),ut(e.options,"debugRows")),e.getCenterRows=ct(()=>[e.getRowModel().rows,e.getState().rowPinning.top,e.getState().rowPinning.bottom],(t,n,r)=>{const s=new Set([...n??[],...r??[]]);return t.filter(o=>!s.has(o.id))},ut(e.options,"debugRows"))}},tte={getInitialState:e=>({rowSelection:{},...e}),getDefaultOptions:e=>({onRowSelectionChange:hs("rowSelection",e),enableRowSelection:!0,enableMultiRowSelection:!0,enableSubRowSelection:!0}),createTable:e=>{e.setRowSelection=t=>e.options.onRowSelectionChange==null?void 0:e.options.onRowSelectionChange(t),e.resetRowSelection=t=>{var n;return e.setRowSelection(t?{}:(n=e.initialState.rowSelection)!=null?n:{})},e.toggleAllRowsSelected=t=>{e.setRowSelection(n=>{t=typeof t<"u"?t:!e.getIsAllRowsSelected();const r={...n},s=e.getPreGroupedRowModel().flatRows;return t?s.forEach(o=>{o.getCanSelect()&&(r[o.id]=!0)}):s.forEach(o=>{delete r[o.id]}),r})},e.toggleAllPageRowsSelected=t=>e.setRowSelection(n=>{const r=typeof t<"u"?t:!e.getIsAllPageRowsSelected(),s={...n};return e.getRowModel().rows.forEach(o=>{Bb(s,o.id,r,!0,e)}),s}),e.getPreSelectedRowModel=()=>e.getCoreRowModel(),e.getSelectedRowModel=ct(()=>[e.getState().rowSelection,e.getCoreRowModel()],(t,n)=>Object.keys(t).length?ky(e,n):{rows:[],flatRows:[],rowsById:{}},ut(e.options,"debugTable")),e.getFilteredSelectedRowModel=ct(()=>[e.getState().rowSelection,e.getFilteredRowModel()],(t,n)=>Object.keys(t).length?ky(e,n):{rows:[],flatRows:[],rowsById:{}},ut(e.options,"debugTable")),e.getGroupedSelectedRowModel=ct(()=>[e.getState().rowSelection,e.getSortedRowModel()],(t,n)=>Object.keys(t).length?ky(e,n):{rows:[],flatRows:[],rowsById:{}},ut(e.options,"debugTable")),e.getIsAllRowsSelected=()=>{const t=e.getFilteredRowModel().flatRows,{rowSelection:n}=e.getState();let r=!!(t.length&&Object.keys(n).length);return r&&t.some(s=>s.getCanSelect()&&!n[s.id])&&(r=!1),r},e.getIsAllPageRowsSelected=()=>{const t=e.getPaginationRowModel().flatRows.filter(s=>s.getCanSelect()),{rowSelection:n}=e.getState();let r=!!t.length;return r&&t.some(s=>!n[s.id])&&(r=!1),r},e.getIsSomeRowsSelected=()=>{var t;const n=Object.keys((t=e.getState().rowSelection)!=null?t:{}).length;return n>0&&n{const t=e.getPaginationRowModel().flatRows;return e.getIsAllPageRowsSelected()?!1:t.filter(n=>n.getCanSelect()).some(n=>n.getIsSelected()||n.getIsSomeSelected())},e.getToggleAllRowsSelectedHandler=()=>t=>{e.toggleAllRowsSelected(t.target.checked)},e.getToggleAllPageRowsSelectedHandler=()=>t=>{e.toggleAllPageRowsSelected(t.target.checked)}},createRow:(e,t)=>{e.toggleSelected=(n,r)=>{const s=e.getIsSelected();t.setRowSelection(o=>{var l;if(n=typeof n<"u"?n:!s,e.getCanSelect()&&s===n)return o;const u={...o};return Bb(u,e.id,n,(l=r?.selectChildren)!=null?l:!0,t),u})},e.getIsSelected=()=>{const{rowSelection:n}=t.getState();return gw(e,n)},e.getIsSomeSelected=()=>{const{rowSelection:n}=t.getState();return zb(e,n)==="some"},e.getIsAllSubRowsSelected=()=>{const{rowSelection:n}=t.getState();return zb(e,n)==="all"},e.getCanSelect=()=>{var n;return typeof t.options.enableRowSelection=="function"?t.options.enableRowSelection(e):(n=t.options.enableRowSelection)!=null?n:!0},e.getCanSelectSubRows=()=>{var n;return typeof t.options.enableSubRowSelection=="function"?t.options.enableSubRowSelection(e):(n=t.options.enableSubRowSelection)!=null?n:!0},e.getCanMultiSelect=()=>{var n;return typeof t.options.enableMultiRowSelection=="function"?t.options.enableMultiRowSelection(e):(n=t.options.enableMultiRowSelection)!=null?n:!0},e.getToggleSelectedHandler=()=>{const n=e.getCanSelect();return r=>{var s;n&&e.toggleSelected((s=r.target)==null?void 0:s.checked)}}}},Bb=(e,t,n,r,s)=>{var o;const l=s.getRow(t,!0);n?(l.getCanMultiSelect()||Object.keys(e).forEach(u=>delete e[u]),l.getCanSelect()&&(e[t]=!0)):delete e[t],r&&(o=l.subRows)!=null&&o.length&&l.getCanSelectSubRows()&&l.subRows.forEach(u=>Bb(e,u.id,n,r,s))};function ky(e,t){const n=e.getState().rowSelection,r=[],s={},o=function(l,u){return l.map(d=>{var f;const h=gw(d,n);if(h&&(r.push(d),s[d.id]=d),(f=d.subRows)!=null&&f.length&&(d={...d,subRows:o(d.subRows)}),h)return d}).filter(Boolean)};return{rows:o(t.rows),flatRows:r,rowsById:s}}function gw(e,t){var n;return(n=t[e.id])!=null?n:!1}function zb(e,t,n){var r;if(!((r=e.subRows)!=null&&r.length))return!1;let s=!0,o=!1;return e.subRows.forEach(l=>{if(!(o&&!s)&&(l.getCanSelect()&&(gw(l,t)?o=!0:s=!1),l.subRows&&l.subRows.length)){const u=zb(l,t);u==="all"?o=!0:(u==="some"&&(o=!0),s=!1)}}),s?"all":o?"some":!1}const Ub=/([0-9]+)/gm,nte=(e,t,n)=>FI(Uo(e.getValue(n)).toLowerCase(),Uo(t.getValue(n)).toLowerCase()),rte=(e,t,n)=>FI(Uo(e.getValue(n)),Uo(t.getValue(n))),ste=(e,t,n)=>vw(Uo(e.getValue(n)).toLowerCase(),Uo(t.getValue(n)).toLowerCase()),ate=(e,t,n)=>vw(Uo(e.getValue(n)),Uo(t.getValue(n))),ote=(e,t,n)=>{const r=e.getValue(n),s=t.getValue(n);return r>s?1:rvw(e.getValue(n),t.getValue(n));function vw(e,t){return e===t?0:e>t?1:-1}function Uo(e){return typeof e=="number"?isNaN(e)||e===1/0||e===-1/0?"":String(e):typeof e=="string"?e:""}function FI(e,t){const n=e.split(Ub).filter(Boolean),r=t.split(Ub).filter(Boolean);for(;n.length&&r.length;){const s=n.shift(),o=r.shift(),l=parseInt(s,10),u=parseInt(o,10),d=[l,u].sort();if(isNaN(d[0])){if(s>o)return 1;if(o>s)return-1;continue}if(isNaN(d[1]))return isNaN(l)?-1:1;if(l>u)return 1;if(u>l)return-1}return n.length-r.length}const Ou={alphanumeric:nte,alphanumericCaseSensitive:rte,text:ste,textCaseSensitive:ate,datetime:ote,basic:ite},lte={getInitialState:e=>({sorting:[],...e}),getDefaultColumnDef:()=>({sortingFn:"auto",sortUndefined:1}),getDefaultOptions:e=>({onSortingChange:hs("sorting",e),isMultiSortEvent:t=>t.shiftKey}),createColumn:(e,t)=>{e.getAutoSortingFn=()=>{const n=t.getFilteredRowModel().flatRows.slice(10);let r=!1;for(const s of n){const o=s?.getValue(e.id);if(Object.prototype.toString.call(o)==="[object Date]")return Ou.datetime;if(typeof o=="string"&&(r=!0,o.split(Ub).length>1))return Ou.alphanumeric}return r?Ou.text:Ou.basic},e.getAutoSortDir=()=>{const n=t.getFilteredRowModel().flatRows[0];return typeof n?.getValue(e.id)=="string"?"asc":"desc"},e.getSortingFn=()=>{var n,r;if(!e)throw new Error;return wm(e.columnDef.sortingFn)?e.columnDef.sortingFn:e.columnDef.sortingFn==="auto"?e.getAutoSortingFn():(n=(r=t.options.sortingFns)==null?void 0:r[e.columnDef.sortingFn])!=null?n:Ou[e.columnDef.sortingFn]},e.toggleSorting=(n,r)=>{const s=e.getNextSortingOrder(),o=typeof n<"u"&&n!==null;t.setSorting(l=>{const u=l?.find(x=>x.id===e.id),d=l?.findIndex(x=>x.id===e.id);let f=[],h,m=o?n:s==="desc";if(l!=null&&l.length&&e.getCanMultiSort()&&r?u?h="toggle":h="add":l!=null&&l.length&&d!==l.length-1?h="replace":u?h="toggle":h="replace",h==="toggle"&&(o||s||(h="remove")),h==="add"){var g;f=[...l,{id:e.id,desc:m}],f.splice(0,f.length-((g=t.options.maxMultiSortColCount)!=null?g:Number.MAX_SAFE_INTEGER))}else h==="toggle"?f=l.map(x=>x.id===e.id?{...x,desc:m}:x):h==="remove"?f=l.filter(x=>x.id!==e.id):f=[{id:e.id,desc:m}];return f})},e.getFirstSortDir=()=>{var n,r;return((n=(r=e.columnDef.sortDescFirst)!=null?r:t.options.sortDescFirst)!=null?n:e.getAutoSortDir()==="desc")?"desc":"asc"},e.getNextSortingOrder=n=>{var r,s;const o=e.getFirstSortDir(),l=e.getIsSorted();return l?l!==o&&((r=t.options.enableSortingRemoval)==null||r)&&(!(n&&(s=t.options.enableMultiRemove)!=null)||s)?!1:l==="desc"?"asc":"desc":o},e.getCanSort=()=>{var n,r;return((n=e.columnDef.enableSorting)!=null?n:!0)&&((r=t.options.enableSorting)!=null?r:!0)&&!!e.accessorFn},e.getCanMultiSort=()=>{var n,r;return(n=(r=e.columnDef.enableMultiSort)!=null?r:t.options.enableMultiSort)!=null?n:!!e.accessorFn},e.getIsSorted=()=>{var n;const r=(n=t.getState().sorting)==null?void 0:n.find(s=>s.id===e.id);return r?r.desc?"desc":"asc":!1},e.getSortIndex=()=>{var n,r;return(n=(r=t.getState().sorting)==null?void 0:r.findIndex(s=>s.id===e.id))!=null?n:-1},e.clearSorting=()=>{t.setSorting(n=>n!=null&&n.length?n.filter(r=>r.id!==e.id):[])},e.getToggleSortingHandler=()=>{const n=e.getCanSort();return r=>{n&&(r.persist==null||r.persist(),e.toggleSorting==null||e.toggleSorting(void 0,e.getCanMultiSort()?t.options.isMultiSortEvent==null?void 0:t.options.isMultiSortEvent(r):!1))}}},createTable:e=>{e.setSorting=t=>e.options.onSortingChange==null?void 0:e.options.onSortingChange(t),e.resetSorting=t=>{var n,r;e.setSorting(t?[]:(n=(r=e.initialState)==null?void 0:r.sorting)!=null?n:[])},e.getPreSortedRowModel=()=>e.getGroupedRowModel(),e.getSortedRowModel=()=>(!e._getSortedRowModel&&e.options.getSortedRowModel&&(e._getSortedRowModel=e.options.getSortedRowModel(e)),e.options.manualSorting||!e._getSortedRowModel?e.getPreSortedRowModel():e._getSortedRowModel())}},cte=[Ree,Jee,Hee,Kee,Pee,Iee,Qee,Yee,lte,Vee,Zee,Xee,ete,tte,Wee];function ute(e){var t,n;const r=[...cte,...(t=e._features)!=null?t:[]];let s={_features:r};const o=s._features.reduce((g,x)=>Object.assign(g,x.getDefaultOptions==null?void 0:x.getDefaultOptions(s)),{}),l=g=>s.options.mergeOptions?s.options.mergeOptions(o,g):{...o,...g};let d={...{},...(n=e.initialState)!=null?n:{}};s._features.forEach(g=>{var x;d=(x=g.getInitialState==null?void 0:g.getInitialState(d))!=null?x:d});const f=[];let h=!1;const m={_features:r,options:{...o,...e},initialState:d,_queue:g=>{f.push(g),h||(h=!0,Promise.resolve().then(()=>{for(;f.length;)f.shift()();h=!1}).catch(x=>setTimeout(()=>{throw x})))},reset:()=>{s.setState(s.initialState)},setOptions:g=>{const x=Ro(g,s.options);s.options=l(x)},getState:()=>s.options.state,setState:g=>{s.options.onStateChange==null||s.options.onStateChange(g)},_getRowId:(g,x,b)=>{var w;return(w=s.options.getRowId==null?void 0:s.options.getRowId(g,x,b))!=null?w:`${b?[b.id,x].join("."):x}`},getCoreRowModel:()=>(s._getCoreRowModel||(s._getCoreRowModel=s.options.getCoreRowModel(s)),s._getCoreRowModel()),getRowModel:()=>s.getPaginationRowModel(),getRow:(g,x)=>{let b=(x?s.getPrePaginationRowModel():s.getRowModel()).rowsById[g];if(!b&&(b=s.getCoreRowModel().rowsById[g],!b))throw new Error;return b},_getDefaultColumnDef:ct(()=>[s.options.defaultColumn],g=>{var x;return g=(x=g)!=null?x:{},{header:b=>{const w=b.header.column.columnDef;return w.accessorKey?w.accessorKey:w.accessorFn?w.id:null},cell:b=>{var w,C;return(w=(C=b.renderValue())==null||C.toString==null?void 0:C.toString())!=null?w:null},...s._features.reduce((b,w)=>Object.assign(b,w.getDefaultColumnDef==null?void 0:w.getDefaultColumnDef()),{}),...g}},ut(e,"debugColumns")),_getColumnDefs:()=>s.options.columns,getAllColumns:ct(()=>[s._getColumnDefs()],g=>{const x=function(b,w,C){return C===void 0&&(C=0),b.map(k=>{const N=_ee(s,k,C,w),T=k;return N.columns=T.columns?x(T.columns,N,C+1):[],N})};return x(g)},ut(e,"debugColumns")),getAllFlatColumns:ct(()=>[s.getAllColumns()],g=>g.flatMap(x=>x.getFlatColumns()),ut(e,"debugColumns")),_getAllFlatColumnsById:ct(()=>[s.getAllFlatColumns()],g=>g.reduce((x,b)=>(x[b.id]=b,x),{}),ut(e,"debugColumns")),getAllLeafColumns:ct(()=>[s.getAllColumns(),s._getOrderColumnsFn()],(g,x)=>{let b=g.flatMap(w=>w.getLeafColumns());return x(b)},ut(e,"debugColumns")),getColumn:g=>s._getAllFlatColumnsById()[g]};Object.assign(s,m);for(let g=0;gct(()=>[e.options.data],t=>{const n={rows:[],flatRows:[],rowsById:{}},r=function(s,o,l){o===void 0&&(o=0);const u=[];for(let f=0;fe._autoResetPageIndex()))}function fte(e,t,n){return n.options.filterFromLeafRows?pte(e,t,n):hte(e,t,n)}function pte(e,t,n){var r;const s=[],o={},l=(r=n.options.maxLeafRowFilterDepth)!=null?r:100,u=function(d,f){f===void 0&&(f=0);const h=[];for(let g=0;gct(()=>[e.getPreFilteredRowModel(),e.getState().columnFilters,e.getState().globalFilter],(t,n,r)=>{if(!t.rows.length||!(n!=null&&n.length)&&!r){for(let g=0;g{var x;const b=e.getColumn(g.id);if(!b)return;const w=b.getFilterFn();w&&s.push({id:g.id,filterFn:w,resolvedValue:(x=w.resolveFilterValue==null?void 0:w.resolveFilterValue(g.value))!=null?x:g.value})});const l=(n??[]).map(g=>g.id),u=e.getGlobalFilterFn(),d=e.getAllLeafColumns().filter(g=>g.getCanGlobalFilter());r&&u&&d.length&&(l.push("__global__"),d.forEach(g=>{var x;o.push({id:g.id,filterFn:u,resolvedValue:(x=u.resolveFilterValue==null?void 0:u.resolveFilterValue(r))!=null?x:r})}));let f,h;for(let g=0;g{x.columnFiltersMeta[w]=C})}if(o.length){for(let b=0;b{x.columnFiltersMeta[w]=C})){x.columnFilters.__global__=!0;break}}x.columnFilters.__global__!==!0&&(x.columnFilters.__global__=!1)}}const m=g=>{for(let x=0;xe._autoResetPageIndex()))}function gte(){return e=>ct(()=>[e.getState().grouping,e.getPreGroupedRowModel()],(t,n)=>{if(!n.rows.length||!t.length)return n.rows.forEach(d=>{d.depth=0,d.parentId=void 0}),n;const r=t.filter(d=>e.getColumn(d)),s=[],o={},l=function(d,f,h){if(f===void 0&&(f=0),f>=r.length)return d.map(b=>(b.depth=f,s.push(b),o[b.id]=b,b.subRows&&(b.subRows=l(b.subRows,f+1,b.id)),b));const m=r[f],g=vte(d,m);return Array.from(g.entries()).map((b,w)=>{let[C,k]=b,N=`${m}:${C}`;N=h?`${h}>${N}`:N;const T=l(k,f+1,N);T.forEach(M=>{M.parentId=N});const _=f?TI(k,M=>M.subRows):k,I=Sm(e,N,_[0].original,w,f,void 0,h);return Object.assign(I,{groupingColumnId:m,groupingValue:C,subRows:T,leafRows:_,getValue:M=>{if(r.includes(M)){if(I._valuesCache.hasOwnProperty(M))return I._valuesCache[M];if(k[0]){var A;I._valuesCache[M]=(A=k[0].getValue(M))!=null?A:void 0}return I._valuesCache[M]}if(I._groupingValuesCache.hasOwnProperty(M))return I._groupingValuesCache[M];const O=e.getColumn(M),F=O?.getAggregationFn();if(F)return I._groupingValuesCache[M]=F(M,_,k),I._groupingValuesCache[M]}}),T.forEach(M=>{s.push(M),o[M.id]=M}),I})},u=l(n.rows,0);return u.forEach(d=>{s.push(d),o[d.id]=d}),{rows:u,flatRows:s,rowsById:o}},ut(e.options,"debugTable","getGroupedRowModel",()=>{e._queue(()=>{e._autoResetExpanded(),e._autoResetPageIndex()})}))}function vte(e,t){const n=new Map;return e.reduce((r,s)=>{const o=`${s.getGroupingValue(t)}`,l=r.get(o);return l?l.push(s):r.set(o,[s]),r},n)}function yte(){return e=>ct(()=>[e.getState().sorting,e.getPreSortedRowModel()],(t,n)=>{if(!n.rows.length||!(t!=null&&t.length))return n;const r=e.getState().sorting,s=[],o=r.filter(d=>{var f;return(f=e.getColumn(d.id))==null?void 0:f.getCanSort()}),l={};o.forEach(d=>{const f=e.getColumn(d.id);f&&(l[d.id]={sortUndefined:f.columnDef.sortUndefined,invertSorting:f.columnDef.invertSorting,sortingFn:f.getSortingFn()})});const u=d=>{const f=d.map(h=>({...h}));return f.sort((h,m)=>{for(let x=0;x{var m;s.push(h),(m=h.subRows)!=null&&m.length&&(h.subRows=u(h.subRows))}),f};return{rows:u(n.rows),flatRows:s,rowsById:n.rowsById}},ut(e.options,"debugTable","getSortedRowModel",()=>e._autoResetPageIndex()))}/** + * react-table + * + * Copyright (c) TanStack + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function eE(e,t){return e?bte(e)?y.createElement(e,t):e:null}function bte(e){return xte(e)||typeof e=="function"||wte(e)}function xte(e){return typeof e=="function"&&(()=>{const t=Object.getPrototypeOf(e);return t.prototype&&t.prototype.isReactComponent})()}function wte(e){return typeof e=="object"&&typeof e.$$typeof=="symbol"&&["react.memo","react.forward_ref"].includes(e.$$typeof.description)}function Ste(e){const t={state:{},onStateChange:()=>{},renderFallbackValue:null,...e},[n]=y.useState(()=>({current:ute(t)})),[r,s]=y.useState(()=>n.current.initialState);return n.current.setOptions(o=>({...o,...e,state:{...r,...e.state},onStateChange:l=>{s(l),e.onStateChange==null||e.onStateChange(l)}})),n.current}function Cte({className:e,...t}){return a.jsx("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:a.jsx("table",{"data-slot":"table",className:kt("w-full caption-bottom text-sm",e),...t})})}function jte({className:e,...t}){return a.jsx("thead",{"data-slot":"table-header",className:kt("[&_tr]:border-b",e),...t})}function kte({className:e,...t}){return a.jsx("tbody",{"data-slot":"table-body",className:kt("[&_tr:last-child]:border-0",e),...t})}function ap({className:e,...t}){return a.jsx("tr",{"data-slot":"table-row",className:kt("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",e),...t})}function Ete({className:e,...t}){return a.jsx("th",{"data-slot":"table-head",className:kt("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",e),...t})}function Ey({className:e,...t}){return a.jsx("td",{"data-slot":"table-cell",className:kt("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",e),...t})}function ai({columns:e,data:t,isLoading:n,loadingMessage:r,noResultsMessage:s,enableHeaders:o=!0,className:l,highlightedRows:u,...d}){const{t:f}=Fe(),h=Ste({...d,data:t,columns:e,getCoreRowModel:dte(),getFilteredRowModel:mte(),getGroupedRowModel:gte(),getSortedRowModel:yte()});return a.jsx("div",{className:ln("rounded-md border",l),children:a.jsxs(Cte,{children:[o&&a.jsx(jte,{children:h.getHeaderGroups().map(m=>a.jsx(ap,{children:m.headers.map(g=>a.jsx(Ete,{children:g.isPlaceholder?null:eE(g.column.columnDef.header,g.getContext())},g.id))},m.id))}),a.jsx(kte,{children:n?a.jsx(ap,{children:a.jsx(Ey,{colSpan:e.length,className:"h-24 text-center text-muted-foreground",children:r??f("table.loading")})}):a.jsx(a.Fragment,{children:h.getRowModel().rows?.length?h.getRowModel().rows.map(m=>a.jsx(ap,{"data-state":m.getIsSelected()?"selected":u?.includes(m.id)?"highlighted":"",children:m.getVisibleCells().map(g=>a.jsx(Ey,{children:eE(g.column.columnDef.cell,g.getContext())},g.id))},m.id)):a.jsx(ap,{children:a.jsx(Ey,{colSpan:e.length,className:"h-24 text-center",children:s??f("table.noResults")})})})})]})})}const Nte=e=>["dify","fetchSessions",JSON.stringify(e)],Tte=async({difyId:e,instanceName:t})=>(await je.get(`/dify/fetchSessions/${e}/${t}`)).data,Mte=e=>{const{difyId:t,instanceName:n,...r}=e;return vt({...r,queryKey:Nte({difyId:t,instanceName:n}),queryFn:()=>Tte({difyId:t,instanceName:n}),enabled:!!n&&!!t&&(e.enabled??!0),staleTime:1e3*10})},op={name:"",number:"",status:"all",time:"all",customCondition:"more",customValue:"",customUnit:"minutes"};function _te(e,t){const n=parseInt(e);return!n||isNaN(n)||n<=0?null:t==="hours"?n*60:t==="days"?n*1440:n}function Rte(e,t){if(t.time==="all")return!0;const n=(Date.now()-new Date(e).getTime())/6e4;if(t.time==="custom"){const r=_te(t.customValue,t.customUnit);return r===null?!0:t.customCondition==="more"?n>r:n<=r}if(t.time.startsWith(">")){const r=parseInt(t.time.slice(1));return n>r}return n<=parseInt(t.time)}function LI({difyId:e}){const{t}=Fe(),{instance:n}=dt(),{changeStatusDify:r}=bm(),[s,o]=y.useState(!1),[l,u]=y.useState([]),[d,f]=y.useState({}),[h,m]=y.useState(op),[g,x]=y.useState(op),[b,w]=y.useState(9),[C,k]=y.useState(9),[N,T]=y.useState("opened"),[_,I]=y.useState(!1),[M,A]=y.useState(""),[O,F]=y.useState(""),[z,Z]=y.useState(!1),{data:B,refetch:ce}=Mte({instanceName:n?.name,difyId:e,enabled:s}),H=y.useMemo(()=>{const j=B??[],P=g.name.trim().toLowerCase(),pe=g.number.trim();return j.filter(xe=>!(P&&!xe.pushName?.toLowerCase().includes(P)||pe&&!xe.remoteJid.includes(pe)||g.status!=="all"&&xe.status!==g.status||!Rte(xe.updatedAt,g)))},[B,g]),oe=H.slice(0,C),Q=y.useMemo(()=>Object.keys(d).filter(j=>d[j]).map(j=>oe[Number(j)]?.remoteJid).filter(Boolean),[d,oe]);y.useEffect(()=>{k(b),f({})},[g,b]);const ne=()=>{ce()},V=()=>{x(h)},K=()=>{m(op),x(op)},U=async(j,P)=>{try{if(!n)return;await r({instanceName:n.name,token:n.token,remoteJid:j,status:P}),re.success(t("dify.toast.success.status")),ne()}catch(pe){console.error("Error:",pe),re.error(`Error : ${pe?.response?.data?.response?.message}`)}},D=async()=>{if(Q.length===0){re.error(t("sessions.mass.noneSelected"));return}try{if(!n)return;await Promise.all(Q.map(j=>r({instanceName:n.name,token:n.token,remoteJid:j,status:N}))),re.success(t("sessions.mass.success")),f({}),ne()}catch(j){console.error(j),re.error(j?.response?.data?.response?.message??t("sessions.mass.error"))}},J=j=>{A(j),F(""),I(!0)},ae=async()=>{if(!O.trim()){re.error(t("sessions.send.empty"));return}try{if(!n)return;Z(!0),await je.post(`/message/sendText/${n.name}`,{number:M,text:O},{headers:{apikey:n.token}}),re.success(t("sessions.send.success")),I(!1),F(""),A("")}catch(j){console.error("Error:",j),re.error(j?.response?.data?.response?.message??j?.message??t("sessions.send.error"))}finally{Z(!1)}},ee=[{id:"select",header:({table:j})=>a.jsx(Xr,{checked:j.getIsAllPageRowsSelected()||j.getIsSomePageRowsSelected()&&"indeterminate",onCheckedChange:P=>j.toggleAllPageRowsSelected(!!P),"aria-label":t("sessions.mass.selectAll")}),cell:({row:j})=>a.jsx(Xr,{checked:j.getIsSelected(),onCheckedChange:P=>j.toggleSelected(!!P),"aria-label":t("sessions.mass.selectAll")}),enableSorting:!1},{accessorKey:"remoteJid",header:()=>a.jsx("div",{className:"text-center",children:t("dify.sessions.table.remoteJid")}),cell:({row:j})=>a.jsx("div",{children:j.getValue("remoteJid")})},{accessorKey:"pushName",header:()=>a.jsx("div",{className:"text-center",children:t("dify.sessions.table.pushName")}),cell:({row:j})=>a.jsx("div",{children:j.getValue("pushName")})},{accessorKey:"sessionId",header:()=>a.jsx("div",{className:"text-center",children:t("dify.sessions.table.sessionId")}),cell:({row:j})=>a.jsx("div",{children:j.getValue("sessionId")})},{accessorKey:"status",header:()=>a.jsx("div",{className:"text-center",children:t("dify.sessions.table.status")}),cell:({row:j})=>a.jsx("div",{children:j.getValue("status")})},{id:"actions",enableHiding:!1,cell:({row:j})=>{const P=j.original;return a.jsxs(ms,{children:[a.jsx(gs,{asChild:!0,children:a.jsxs(q,{variant:"ghost",size:"icon",children:[a.jsx("span",{className:"sr-only",children:t("dify.sessions.table.actions.title")}),a.jsx(Jo,{className:"h-4 w-4"})]})}),a.jsxs(vs,{align:"end",children:[a.jsx(Qo,{children:t("dify.sessions.table.actions.title")}),a.jsx(Yo,{}),P.status!=="opened"&&a.jsxs(St,{onClick:()=>U(P.remoteJid,"opened"),children:[a.jsx(tl,{className:"mr-2 h-4 w-4"}),t("dify.sessions.table.actions.open")]}),P.status!=="paused"&&P.status!=="closed"&&a.jsxs(St,{onClick:()=>U(P.remoteJid,"paused"),children:[a.jsx(el,{className:"mr-2 h-4 w-4"}),t("dify.sessions.table.actions.pause")]}),P.status!=="closed"&&a.jsxs(St,{onClick:()=>U(P.remoteJid,"closed"),children:[a.jsx(Qi,{className:"mr-2 h-4 w-4"}),t("dify.sessions.table.actions.close")]}),a.jsxs(St,{onClick:()=>J(P.remoteJid),children:[a.jsx(Xi,{className:"mr-2 h-4 w-4"}),t("sessions.actions.sendMessage")]}),a.jsxs(St,{onClick:()=>U(P.remoteJid,"delete"),children:[a.jsx(Yi,{className:"mr-2 h-4 w-4"}),t("dify.sessions.table.actions.delete")]})]})]})}}],ie=["all","5","10","15","20","30","60",">60",">120",">300",">1440","custom"],ue=["all","opened","paused","closed"];return a.jsxs(gt,{open:s,onOpenChange:o,children:[a.jsx(rn,{asChild:!0,children:a.jsxs(q,{variant:"secondary",size:"sm",children:[a.jsx(Zi,{size:16,className:"mr-1"}),a.jsx("span",{className:"hidden md:inline",children:t("dify.sessions.label")})]})}),a.jsxs(pt,{className:"max-w-7xl h-[85vh] flex flex-col overflow-hidden",children:[a.jsx(ht,{children:a.jsx(bt,{children:t("dify.sessions.label")})}),a.jsxs("div",{className:"flex-1 space-y-4 overflow-y-auto pr-2",children:[a.jsxs(Bn,{children:[a.jsx(Yn,{children:a.jsx(Zn,{className:"text-base",children:t("sessions.filters.title")})}),a.jsxs(zn,{className:"space-y-4",children:[a.jsxs("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-4",children:[a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{children:t("sessions.filters.name")}),a.jsx(X,{placeholder:t("sessions.filters.namePlaceholder"),value:h.name,onChange:j=>m(P=>({...P,name:j.target.value}))})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{children:t("sessions.filters.number")}),a.jsx(X,{placeholder:t("sessions.filters.numberPlaceholder"),value:h.number,onChange:j=>m(P=>({...P,number:j.target.value}))})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{children:t("sessions.filters.status")}),a.jsxs(Mt,{value:h.status,onValueChange:j=>m(P=>({...P,status:j})),children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsx(Pt,{children:ue.map(j=>a.jsx(we,{value:j,children:t(`sessions.filters.statusOptions.${j}`)},j))})]})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{children:t("sessions.filters.time")}),a.jsxs(Mt,{value:h.time,onValueChange:j=>m(P=>({...P,time:j})),children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsx(Pt,{children:ie.map(j=>a.jsx(we,{value:j,children:t(`sessions.filters.timeOptions.${j}`)},j))})]})]})]}),h.time==="custom"&&a.jsxs("div",{className:"grid grid-cols-1 gap-2 md:grid-cols-3",children:[a.jsxs(Mt,{value:h.customCondition,onValueChange:j=>m(P=>({...P,customCondition:j})),children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsxs(Pt,{children:[a.jsx(we,{value:"more",children:t("sessions.filters.custom.more")}),a.jsx(we,{value:"less",children:t("sessions.filters.custom.less")})]})]}),a.jsx(X,{type:"number",min:1,placeholder:t("sessions.filters.custom.valuePlaceholder"),value:h.customValue,onChange:j=>m(P=>({...P,customValue:j.target.value}))}),a.jsxs(Mt,{value:h.customUnit,onValueChange:j=>m(P=>({...P,customUnit:j})),children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsxs(Pt,{children:[a.jsx(we,{value:"minutes",children:t("sessions.filters.custom.minutes")}),a.jsx(we,{value:"hours",children:t("sessions.filters.custom.hours")}),a.jsx(we,{value:"days",children:t("sessions.filters.custom.days")})]})]})]}),a.jsxs("div",{className:"flex flex-wrap gap-2",children:[a.jsx(q,{onClick:V,size:"sm",children:t("sessions.filters.apply")}),a.jsx(q,{onClick:K,size:"sm",variant:"outline",children:t("sessions.filters.clear")}),a.jsxs(q,{onClick:ne,size:"sm",variant:"outline",children:[a.jsx(nl,{size:14,className:"mr-1"}),t("button.refresh")]})]})]})]}),Q.length>0&&a.jsxs(Bn,{children:[a.jsx(Yn,{children:a.jsx(Zn,{className:"text-base",children:t("sessions.mass.title")})}),a.jsx(zn,{children:a.jsxs("div",{className:"flex flex-wrap items-end gap-3",children:[a.jsx("div",{className:"text-sm text-muted-foreground",children:t("sessions.mass.selected",{count:Q.length})}),a.jsxs("div",{className:"flex-1 min-w-[180px] space-y-1",children:[a.jsx(Ue,{children:t("sessions.mass.newStatus")}),a.jsxs(Mt,{value:N,onValueChange:T,children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsxs(Pt,{children:[a.jsx(we,{value:"opened",children:t("dify.sessions.table.actions.open")}),a.jsx(we,{value:"paused",children:t("dify.sessions.table.actions.pause")}),a.jsx(we,{value:"closed",children:t("dify.sessions.table.actions.close")}),a.jsx(we,{value:"delete",children:t("dify.sessions.table.actions.delete")})]})]})]}),a.jsx(q,{onClick:D,size:"sm",children:t("sessions.mass.apply")})]})})]}),a.jsx(ai,{columns:ee,data:oe,onSortingChange:u,state:{sorting:l,rowSelection:d},onRowSelectionChange:f,enableRowSelection:!0,getRowId:(j,P)=>String(P),noResultsMessage:t("sessions.empty")}),a.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3 px-1 text-sm text-muted-foreground",children:[a.jsx("span",{children:t("sessions.pagination.showing",{shown:oe.length,total:H.length})}),a.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[a.jsx(Ue,{htmlFor:"per-page",className:"text-xs",children:t("sessions.pagination.perPage")}),a.jsxs(Mt,{value:String(b),onValueChange:j=>w(parseInt(j)),children:[a.jsx(Rt,{id:"per-page",className:"h-8 w-20",children:a.jsx(_t,{})}),a.jsxs(Pt,{children:[a.jsx(we,{value:"9",children:"9"}),a.jsx(we,{value:"25",children:"25"}),a.jsx(we,{value:"50",children:"50"}),a.jsx(we,{value:"100",children:"100"})]})]}),Ck(j=>Math.min(j+b,H.length)),children:t("sessions.pagination.showMore")}),Ck(H.length),children:t("sessions.pagination.showAll")}),C>b&&a.jsx(q,{size:"sm",variant:"outline",onClick:()=>k(b),children:t("sessions.pagination.showLess")})]})]})]}),a.jsx(gt,{open:_,onOpenChange:j=>!z&&I(j),children:a.jsxs(pt,{className:"sm:max-w-md",children:[a.jsx(ht,{children:a.jsx(bt,{children:t("sessions.send.title")})}),a.jsxs("div",{className:"space-y-3",children:[a.jsxs("div",{className:"space-y-1",children:[a.jsx(Ue,{children:t("sessions.send.to")}),a.jsx(X,{value:M,disabled:!0})]}),a.jsxs("div",{className:"space-y-1",children:[a.jsx(Ue,{children:t("sessions.send.messagePlaceholder")}),a.jsx(Zo,{rows:4,placeholder:t("sessions.send.messagePlaceholder"),value:O,onChange:j=>F(j.target.value)})]})]}),a.jsxs(Kt,{children:[a.jsx(q,{variant:"outline",onClick:()=>I(!1),disabled:z,children:t("button.cancel")}),a.jsx(q,{onClick:ae,disabled:z,children:t(z?"sessions.send.sending":"sessions.send.send")})]})]})})]})]})}const Pte=hn({enabled:Re(),description:ye(),botType:ye(),apiUrl:ye(),apiKey:ye(),triggerType:ye(),triggerOperator:ye().optional(),triggerValue:ye().optional(),expire:Vt.number().optional(),keywordFinish:ye().optional(),delayMessage:Vt.number().optional(),unknownMessage:ye().optional(),listeningFromMe:Re().optional(),stopBotFromMe:Re().optional(),keepOpen:Re().optional(),debounceTime:Vt.number().optional(),splitMessages:Re().optional(),timePerChar:Vt.number().optional()});function $I({initialData:e,onSubmit:t,handleDelete:n,difyId:r,isModal:s=!1,isLoading:o=!1,openDeletionDialog:l=!1,setOpenDeletionDialog:u=()=>{}}){const{t:d}=Fe(),f=fn({resolver:pn(Pte),defaultValues:e||{enabled:!0,description:"",botType:"chatBot",apiUrl:"",apiKey:"",triggerType:"keyword",triggerOperator:"contains",triggerValue:"",expire:0,keywordFinish:"",delayMessage:0,unknownMessage:"",listeningFromMe:!1,stopBotFromMe:!1,keepOpen:!1,debounceTime:0,splitMessages:!1,timePerChar:0}}),h=f.watch("triggerType");return a.jsx(hr,{...f,children:a.jsxs("form",{onSubmit:f.handleSubmit(t),className:"w-full space-y-6",children:[a.jsxs("div",{className:"space-y-4",children:[a.jsx(De,{name:"enabled",label:d("dify.form.enabled.label"),reverse:!0}),a.jsx(ge,{name:"description",label:d("dify.form.description.label"),required:!0,children:a.jsx(X,{})}),a.jsxs("div",{className:"flex flex-col",children:[a.jsx("h3",{className:"my-4 text-lg font-medium",children:d("dify.form.difySettings.label")}),a.jsx(nn,{})]}),a.jsx(dn,{name:"botType",label:d("dify.form.botType.label"),options:[{label:d("dify.form.botType.chatBot"),value:"chatBot"},{label:d("dify.form.botType.textGenerator"),value:"textGenerator"},{label:d("dify.form.botType.agent"),value:"agent"},{label:d("dify.form.botType.workflow"),value:"workflow"}]}),a.jsx(ge,{name:"apiUrl",label:d("dify.form.apiUrl.label"),required:!0,children:a.jsx(X,{})}),a.jsx(ge,{name:"apiKey",label:d("dify.form.apiKey.label"),required:!0,children:a.jsx(X,{type:"password"})}),a.jsxs("div",{className:"flex flex-col",children:[a.jsx("h3",{className:"my-4 text-lg font-medium",children:d("dify.form.triggerSettings.label")}),a.jsx(nn,{})]}),a.jsx(dn,{name:"triggerType",label:d("dify.form.triggerType.label"),options:[{label:d("dify.form.triggerType.keyword"),value:"keyword"},{label:d("dify.form.triggerType.all"),value:"all"},{label:d("dify.form.triggerType.advanced"),value:"advanced"},{label:d("dify.form.triggerType.none"),value:"none"}]}),h==="keyword"&&a.jsxs(a.Fragment,{children:[a.jsx(dn,{name:"triggerOperator",label:d("dify.form.triggerOperator.label"),options:[{label:d("dify.form.triggerOperator.contains"),value:"contains"},{label:d("dify.form.triggerOperator.equals"),value:"equals"},{label:d("dify.form.triggerOperator.startsWith"),value:"startsWith"},{label:d("dify.form.triggerOperator.endsWith"),value:"endsWith"},{label:d("dify.form.triggerOperator.regex"),value:"regex"}]}),a.jsx(ge,{name:"triggerValue",label:d("dify.form.triggerValue.label"),children:a.jsx(X,{})})]}),h==="advanced"&&a.jsx(ge,{name:"triggerValue",label:d("dify.form.triggerConditions.label"),children:a.jsx(X,{})}),a.jsxs("div",{className:"flex flex-col",children:[a.jsx("h3",{className:"my-4 text-lg font-medium",children:d("dify.form.generalSettings.label")}),a.jsx(nn,{})]}),a.jsx(ge,{name:"expire",label:d("dify.form.expire.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ge,{name:"keywordFinish",label:d("dify.form.keywordFinish.label"),children:a.jsx(X,{})}),a.jsx(ge,{name:"delayMessage",label:d("dify.form.delayMessage.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ge,{name:"unknownMessage",label:d("dify.form.unknownMessage.label"),children:a.jsx(X,{})}),a.jsx(De,{name:"listeningFromMe",label:d("dify.form.listeningFromMe.label"),reverse:!0}),a.jsx(De,{name:"stopBotFromMe",label:d("dify.form.stopBotFromMe.label"),reverse:!0}),a.jsx(De,{name:"keepOpen",label:d("dify.form.keepOpen.label"),reverse:!0}),a.jsx(ge,{name:"debounceTime",label:d("dify.form.debounceTime.label"),children:a.jsx(X,{type:"number"})}),a.jsx(De,{name:"splitMessages",label:d("dify.form.splitMessages.label"),reverse:!0}),f.watch("splitMessages")&&a.jsx(ge,{name:"timePerChar",label:d("dify.form.timePerChar.label"),children:a.jsx(X,{type:"number"})})]}),s&&a.jsx(Kt,{children:a.jsx(q,{disabled:o,type:"submit",children:d(o?"dify.button.saving":"dify.button.save")})}),!s&&a.jsxs("div",{children:[a.jsx(LI,{difyId:r}),a.jsxs("div",{className:"mt-5 flex items-center gap-3",children:[a.jsxs(gt,{open:l,onOpenChange:u,children:[a.jsx(rn,{asChild:!0,children:a.jsx(q,{variant:"destructive",size:"sm",children:d("dify.button.delete")})}),a.jsx(pt,{children:a.jsxs(ht,{children:[a.jsx(bt,{children:d("modal.delete.title")}),a.jsx(kr,{children:d("modal.delete.messageSingle")}),a.jsxs(Kt,{children:[a.jsx(q,{size:"sm",variant:"outline",onClick:()=>u(!1),children:d("button.cancel")}),a.jsx(q,{variant:"destructive",onClick:n,children:d("button.delete")})]})]})})]}),a.jsx(q,{disabled:o,type:"submit",children:d(o?"dify.button.saving":"dify.button.update")})]})]})]})})}function Ite({resetTable:e}){const{t}=Fe(),{instance:n}=dt(),[r,s]=y.useState(!1),[o,l]=y.useState(!1),{createDify:u}=bm(),d=async f=>{try{if(!n||!n.name)throw new Error("instance not found");s(!0);const h={enabled:f.enabled,description:f.description,botType:f.botType,apiUrl:f.apiUrl,apiKey:f.apiKey,triggerType:f.triggerType,triggerOperator:f.triggerOperator||"",triggerValue:f.triggerValue||"",expire:f.expire||0,keywordFinish:f.keywordFinish||"",delayMessage:f.delayMessage||0,unknownMessage:f.unknownMessage||"",listeningFromMe:f.listeningFromMe||!1,stopBotFromMe:f.stopBotFromMe||!1,keepOpen:f.keepOpen||!1,debounceTime:f.debounceTime||0,splitMessages:f.splitMessages||!1,timePerChar:f.timePerChar||0};await u({instanceName:n.name,token:n.token,data:h}),re.success(t("dify.toast.success.create")),l(!1),e()}catch(h){console.error("Error:",h),re.error(`Error: ${h?.response?.data?.response?.message}`)}finally{s(!1)}};return a.jsxs(gt,{open:o,onOpenChange:l,children:[a.jsx(rn,{asChild:!0,children:a.jsxs(q,{size:"sm",children:[a.jsx(Yr,{size:16,className:"mr-1"}),a.jsx("span",{className:"hidden sm:inline",children:t("dify.button.create")})]})}),a.jsxs(pt,{className:"overflow-y-auto sm:max-h-[600px] sm:max-w-[740px]",children:[a.jsx(ht,{children:a.jsx(bt,{children:t("dify.form.title")})}),a.jsx($I,{onSubmit:d,isModal:!0,isLoading:r})]})]})}const Ote=e=>["dify","getDify",JSON.stringify(e)],Ate=async({difyId:e,instanceName:t})=>(await je.get(`/dify/fetch/${e}/${t}`)).data,Dte=e=>{const{difyId:t,instanceName:n,...r}=e;return vt({...r,queryKey:Ote({difyId:t,instanceName:n}),queryFn:()=>Ate({difyId:t,instanceName:n}),enabled:!!n&&!!t&&(e.enabled??!0)})};function Fte({difyId:e,resetTable:t}){const{t:n}=Fe(),{instance:r}=dt(),s=jn(),[o,l]=y.useState(!1),{deleteDify:u,updateDify:d}=bm(),{data:f,isLoading:h}=Dte({difyId:e,instanceName:r?.name}),m=y.useMemo(()=>({enabled:!!f?.enabled,description:f?.description??"",botType:f?.botType??"",apiUrl:f?.apiUrl??"",apiKey:f?.apiKey??"",triggerType:f?.triggerType??"",triggerOperator:f?.triggerOperator??"",triggerValue:f?.triggerValue??"",expire:f?.expire??0,keywordFinish:f?.keywordFinish??"",delayMessage:f?.delayMessage??0,unknownMessage:f?.unknownMessage??"",listeningFromMe:!!f?.listeningFromMe,stopBotFromMe:!!f?.stopBotFromMe,keepOpen:!!f?.keepOpen,debounceTime:f?.debounceTime??0,splitMessages:f?.splitMessages??!1,timePerChar:f?.timePerChar??0}),[f?.apiKey,f?.apiUrl,f?.botType,f?.debounceTime,f?.delayMessage,f?.description,f?.enabled,f?.expire,f?.keepOpen,f?.keywordFinish,f?.listeningFromMe,f?.stopBotFromMe,f?.triggerOperator,f?.triggerType,f?.triggerValue,f?.unknownMessage,f?.splitMessages,f?.timePerChar]),g=async b=>{try{if(r&&r.name&&e){const w={enabled:b.enabled,description:b.description,botType:b.botType,apiUrl:b.apiUrl,apiKey:b.apiKey,triggerType:b.triggerType,triggerOperator:b.triggerOperator||"",triggerValue:b.triggerValue||"",expire:b.expire||0,keywordFinish:b.keywordFinish||"",delayMessage:b.delayMessage||1e3,unknownMessage:b.unknownMessage||"",listeningFromMe:b.listeningFromMe||!1,stopBotFromMe:b.stopBotFromMe||!1,keepOpen:b.keepOpen||!1,debounceTime:b.debounceTime||0,splitMessages:b.splitMessages||!1,timePerChar:b.timePerChar||0};await d({instanceName:r.name,difyId:e,data:w}),re.success(n("dify.toast.success.update")),t(),s(`/manager/instance/${r.id}/dify/${e}`)}else console.error("Token not found")}catch(w){console.error("Error:",w),re.error(`Error: ${w?.response?.data?.response?.message}`)}},x=async()=>{try{r&&r.name&&e?(await u({instanceName:r.name,difyId:e}),re.success(n("dify.toast.success.delete")),l(!1),t(),s(`/manager/instance/${r.id}/dify`)):console.error("instance not found")}catch(b){console.error("Erro ao excluir dify:",b)}};return h?a.jsx(Vn,{}):a.jsx("div",{className:"m-4",children:a.jsx($I,{initialData:m,onSubmit:g,difyId:e,handleDelete:x,isModal:!1,isLoading:h,openDeletionDialog:o,setOpenDeletionDialog:l})})}function tE(){const{t:e}=Fe(),t=Ya("(min-width: 768px)"),{instance:n}=dt(),{difyId:r}=_s(),{data:s,refetch:o,isLoading:l,error:u}=bI({instanceName:n?.name}),d=jn(),f=m=>{n&&d(`/manager/instance/${n.id}/dify/${m}`)},h=()=>{o()};return a.jsx("main",{className:"pt-5",children:a.jsxs(sa,{error:u,name:"Dify",envVar:"DIFY_ENABLED",children:[a.jsxs("div",{className:"mb-1 flex items-center justify-between",children:[a.jsx("h3",{className:"text-lg font-medium",children:e("dify.title")}),a.jsxs("div",{className:"flex items-center justify-end gap-2",children:[a.jsx(LI,{}),a.jsx(Cee,{}),a.jsx(Ite,{resetTable:h})]})]}),a.jsx(nn,{className:"my-4"}),a.jsxs(ri,{direction:t?"horizontal":"vertical",children:[a.jsx(Er,{defaultSize:r?35:100,className:"pr-4",children:a.jsx("div",{className:"flex flex-col gap-3",children:l?a.jsx(Vn,{}):a.jsx(a.Fragment,{children:s&&s.length>0&&Array.isArray(s)?s.map(m=>a.jsxs(q,{className:"flex h-auto flex-col items-start justify-start",onClick:()=>f(`${m.id}`),variant:r===m.id?"secondary":"outline",children:[a.jsx("h4",{className:"text-base",children:m.description||m.id}),a.jsx("p",{className:"text-sm font-normal text-muted-foreground",children:m.botType})]},m.id)):a.jsx(q,{variant:"link",children:e("dify.table.none")})})})}),r&&a.jsxs(a.Fragment,{children:[a.jsx(si,{withHandle:!0,className:"border border-border"}),a.jsx(Er,{children:a.jsx(Fte,{difyId:r,resetTable:h})})]})]})]})})}const BI=y.createContext({instance:null,isLoading:!0,error:null});function Lte({children:e}){const[t]=vc(),[n,r]=y.useState(null),[s,o]=y.useState(!0),[l,u]=y.useState(null);return y.useEffect(()=>{(async()=>{const f=t.get("token"),h=t.get("instanceName"),m=t.get("apiUrl");if(!f||!h||!m){u("Token, instanceName e apiUrl são obrigatórios"),o(!1);return}try{const g=m.endsWith("/")?m.slice(0,-1):m;localStorage.setItem(Ln.API_URL,g),localStorage.setItem(Ln.INSTANCE_TOKEN,f);const{data:x}=await cn.get(`${g}/instance/fetchInstances?instanceName=${h}`,{headers:{apikey:f}});console.log("API Response:",x),x&&Array.isArray(x)&&x.length>0?r(x[0]):u("Instância não encontrada")}catch{u("Erro ao validar token ou buscar instância")}finally{o(!1)}})()},[t]),a.jsx(BI.Provider,{value:{instance:n,isLoading:s,error:l},children:e})}const yw=()=>y.useContext(BI),bw=y.createContext({}),$te=({children:e})=>{const[t,n]=y.useState(null);return a.jsx(bw.Provider,{value:{replyingMessage:t,setReplyingMessage:n},children:e})},Bte=e=>{const t=Math.floor(e/60),n=e%60,r=t<10?`${t}`:t,s=n<10?`0${n}`:n;return`${r}:${s}`},nE=200,zte=({imageMessage:e})=>a.jsxs("div",{className:"flex flex-col gap-2",children:[a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx("img",{src:e?.mediaUrl,alt:"Quoted message",width:100,height:100}),a.jsx(UB,{className:"mr-2 h-4 w-4 text-muted-foreground"})]}),a.jsx("span",{className:"inline-block max-w-40 overflow-hidden overflow-ellipsis whitespace-nowrap text-sm text-muted-foreground",children:e.caption})]}),Ute=({videoMessage:e})=>a.jsxs("div",{className:"flex flex-col gap-2",children:[a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx("img",{src:e?.mediaUrl,alt:"Quoted message",width:100,height:100}),a.jsx(iz,{className:"mr-2 h-4 w-4 text-muted-foreground"})]}),a.jsx("span",{className:"inline-block max-w-40 overflow-hidden overflow-ellipsis whitespace-nowrap text-sm text-muted-foreground",children:e.caption})]}),Vte=({audioMessage:e})=>a.jsxs("div",{className:"flex flex-col gap-2",children:[a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(UT,{className:"h-6 w-6 text-muted-foreground"}),a.jsx("span",{className:"text-sm text-muted-foreground",children:Bte(e.seconds)})]}),a.jsx("span",{className:"inline-block max-w-40 overflow-hidden overflow-ellipsis whitespace-nowrap text-sm text-muted-foreground",children:e.fileName})]}),qte=({stickerMessage:e})=>a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx("img",{src:e.mediaUrl,alt:"Sticker",width:100,height:100}),a.jsx(rz,{className:"h-6 w-6 text-muted-foreground"})]}),Hte=({documentMessage:e})=>a.jsx("div",{className:"flex flex-col gap-2",children:a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(px,{className:"h-6 w-6 text-muted-foreground"}),a.jsx("span",{className:"text-sm text-muted-foreground",children:e.fileName})]})}),Kte=({documentMessage:e})=>a.jsxs("div",{className:"flex flex-col gap-2",children:[a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(px,{className:"h-6 w-6 text-muted-foreground"}),a.jsx("span",{className:"text-sm text-muted-foreground",children:e.fileName})]}),a.jsx("span",{className:"inline-block max-w-40 overflow-hidden overflow-ellipsis whitespace-nowrap text-sm text-muted-foreground",children:e.caption})]}),Wte=({contactMessage:e})=>a.jsx("div",{className:"flex flex-col gap-2",children:a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(Kp,{className:"h-6 w-6 text-muted-foreground"}),a.jsx("span",{className:"text-sm text-muted-foreground",children:e.displayName})]})}),Gte=({locationMessage:e})=>a.jsxs("div",{className:"flex flex-col gap-2",children:[a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(YB,{className:"h-6 w-6 text-muted-foreground"}),a.jsx("span",{className:"text-sm text-muted-foreground",children:e.name})]}),a.jsx("span",{className:"inline-block max-w-40 text-sm text-muted-foreground",children:e.address})]}),Jte=({conversation:e})=>a.jsx("span",{className:"overflow-hidden text-ellipsis whitespace-nowrap text-sm text-muted-foreground",children:e.length>nE?`${e.substring(0,nE)}...`:e}),Qte=({chat:e})=>{const{replyingMessage:t,setReplyingMessage:n}=y.useContext(bw),r=()=>{n(null)},s=f=>f?.conversation?f.conversation:f?.viewOnceMessage?.message?.interactiveMessage?.body?.text?f.viewOnceMessage.message.interactiveMessage.body.text:"",o=()=>t?.key.fromMe?"Você":e?.pushName,l=()=>{if(t?.messageType==="imageMessage")return a.jsx(zte,{imageMessage:{caption:t?.message.imageMessage.caption,mediaUrl:t?.message.mediaUrl}});if(t?.messageType==="videoMessage")return a.jsx(Ute,{videoMessage:{caption:t?.message.videoMessage.caption,mediaUrl:t?.message.mediaUrl}});if(t?.messageType==="audioMessage")return a.jsx(Vte,{audioMessage:t?.message.audioMessage});if(t?.messageType==="stickerMessage")return a.jsx(qte,{stickerMessage:t?.message});if(t?.messageType==="documentMessage")return a.jsx(Hte,{documentMessage:{name:t?.message.documentMessage.name,mediaUrl:t?.message.mediaUrl}});if(t?.messageType==="documentWithCaptionMessage")return a.jsx(Kte,{documentMessage:{name:t?.message.documentWithCaptionMessage.message.documentMessage.name,caption:t?.message.documentWithCaptionMessage.message.documentMessage.caption,mediaUrl:t?.message.mediaUrl}});if(t?.messageType==="contactMessage")return a.jsx(Wte,{contactMessage:t?.message.contactMessage});if(t?.messageType==="locationMessage")return a.jsx(Gte,{locationMessage:t?.message.locationMessage});if(t?.messageType==="conversation"||t?.messageType==="interactiveMessage"||t?.messageType==="extendedTextMessage")return a.jsx(Jte,{conversation:s(t?.message)})},{inputIconsMainColor:u,inputBackgroundColor:d}=ni();return a.jsxs("div",{className:"relative flex items-center overflow-hidden rounded-lg dark:text-white",style:{backgroundColor:d},children:[a.jsx("div",{className:`absolute h-full w-1 rounded-l-lg ${t?.key.fromMe?"bg-blue-700 dark:bg-blue-300":"bg-blue-100"}`}),a.jsxs("div",{className:"flex min-w-0 flex-1 flex-col gap-2 p-2 pl-4",children:[a.jsx("span",{className:`text-sm font-bold ${t?.key.fromMe?"text-blue-700 dark:text-blue-300":"text-blue-600"}`,children:o()}),l()]}),a.jsx(q,{size:"icon",variant:"ghost",className:"ml-auto h-10 w-10 shrink-0 rounded-full",onClick:r,style:{backgroundColor:d,color:u},children:a.jsx($h,{className:"h-6 w-6"})})]})},Ny=[{name:"Smileys",icon:qT,emojis:["😀","😃","😄","😁","😆","😅","😂","🤣","😊","😇"]},{name:"Natureza",icon:b1,emojis:["🌿","🌱","🌳","🌴","🌵","🌷","🌸","🌹","🌺","🌻"]},{name:"Comida",icon:b1,emojis:["🍎","🍐","🍊","🍋","🍌","🍉","🍇","🍓","🍒","🍑"]},{name:"Atividades",icon:PB,emojis:["⚽️","🏀","🏈","⚾️","🎾","🏐","🏉","🎱","🏓","🏸"]},{name:"Viagem",icon:kB,emojis:["🚗","🚕","🚙","🚌","🚎","🏎","🚓","🚑","🚒","🚐"]},{name:"Objetos",icon:GB,emojis:["💡","🔦","🕯","🧳","⌛️","⏳","🌡","🧪","🧬","🔬"]},{name:"Símbolos",icon:LB,emojis:["❤️","🧡","💛","💚","💙","💜","🖤","🤍","🤎","💔"]}];function Yte({handleEmojiClick:e}){const{inputIconsMainColor:t}=ni(),n=r=>Ny.find(o=>o.name===r)?.emojis||[];return a.jsxs(ms,{children:[a.jsx(gs,{asChild:!0,children:a.jsxs(q,{type:"button",variant:"ghost",size:"icon",className:"rounded-full p-2",children:[a.jsx(qT,{className:"h-6 w-6",style:{color:t}}),a.jsx("span",{className:"sr-only",children:"Emojis"})]})}),a.jsx(vs,{className:"bg-background p-2",align:"end",children:a.jsxs(Fx,{defaultValue:"Smileys",className:"w-full",children:[a.jsx(Lx,{className:"grid grid-cols-8 gap-2",children:Ny.map(r=>a.jsx(eh,{value:r.name,children:a.jsx(r.icon,{className:"h-5 w-5"})},r.name))}),Ny.map(r=>a.jsx(th,{value:r.name,children:a.jsx("div",{className:"grid grid-cols-8 gap-2",children:n(r.name).map((s,o)=>a.jsx(q,{variant:"ghost",className:"h-12 p-2 text-2xl",onClick:()=>e(s),children:s},o))})},r.name))]})})]})}const Zte=({isSendingMessage:e,isRecording:t,audioBlob:n,elapsedTime:r,startRecording:s,stopRecording:o,clearRecording:l,sendAudioMessage:u,disabled:d})=>{const{inputIconsMainColor:f}=ni();return a.jsxs("div",{className:"flex items-center gap-2",children:[t&&a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(q,{type:"button",size:"icon",variant:"ghost",className:"rounded-full p-2",onClick:o,children:a.jsx(nz,{className:"h-6 w-6 text-[#b03f3f]"})}),a.jsxs("span",{children:[r,"s"]})]}),n&&a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(q,{type:"button",size:"icon",variant:"ghost",className:"rounded-full p-2",disabled:e,onClick:l,children:a.jsx(az,{className:"h-6 w-6 text-[#b03f3f]"})}),a.jsx("audio",{controls:!0,src:URL.createObjectURL(n)})]}),a.jsx(q,{type:"button",size:"icon",variant:"ghost",className:"rounded-full p-2",disabled:e||t||d,onClick:n?u:s,children:e?a.jsx(Vn,{className:"h-6 w-6",style:{color:f}}):n?a.jsx(fx,{className:"h-6 w-6",style:{color:f}}):a.jsx(UT,{className:"h-6 w-6",style:{color:f}})})]})},Xte=({isSendingMessage:e,sendMessage:t,disabled:n})=>{const{inputIconsMainColor:r}=ni();return a.jsx(q,{type:"button",size:"icon",variant:"ghost",className:"rounded-full p-2",onClick:t,disabled:e||n,children:e?a.jsx(Vn,{className:"h-6 w-6",style:{color:r}}):a.jsx(fx,{className:"h-6 w-6",style:{color:r}})})},ene=({chat:e})=>{const[t]=vc(),{inputBackgroundColor:n,inputTextForegroundColor:r}=ni(),s=t.get("remoteJid"),{instance:o}=yw(),{sendText:l}=FP(),{sendMedia:u}=LP(),{sendAudio:d}=qZ(),{replyingMessage:f,setReplyingMessage:h}=y.useContext(bw),m=y.useRef(null),g=y.useRef(null),x=y.useRef(null),[b,w]=y.useState(""),[C,k]=y.useState(!1),[N,T]=y.useState(null),[_,I]=y.useState(!1),[M,A]=y.useState(null),[O,F]=y.useState(0),{t:z}=Fe();y.useEffect(()=>{h(null),T(null)},[s,h,T]);const Z=ee=>{if(w(ee.target.value),m.current){m.current.style.height="auto";const ie=m.current.scrollHeight,j=parseInt(getComputedStyle(m.current).lineHeight)*10;m.current.style.height=`${Math.min(ie,j)}px`}},B=ee=>{if(w(ie=>ie+ee),m.current){m.current.style.height="auto";const ie=m.current.scrollHeight,j=parseInt(getComputedStyle(m.current).lineHeight)*10;m.current.style.height=`${Math.min(ie,j)}px`}},ce=async()=>{try{I(!0);const ee=await navigator.mediaDevices.getUserMedia({audio:{channelCount:1,sampleRate:44100,echoCancellation:!0,noiseSuppression:!0}});let ie="";const ue=["audio/aac","audio/mp4","audio/mpeg","audio/amr","audio/ogg","audio/opus"];for(const pe of ue)if(MediaRecorder.isTypeSupported(pe)){ie=pe;break}if(!ie)throw new Error("Nenhum formato aceito pela Meta disponível");const j=new MediaRecorder(ee,{mimeType:ie,audioBitsPerSecond:128e3});x.current=j;const P=[];j.ondataavailable=pe=>{pe.data.size>0&&P.push(pe.data)},j.onstop=()=>{const pe=new Blob(P,{type:ie}),xe=new File([pe],`audio.${ie.split("/")[1]}`,{type:ie,lastModified:Date.now()});A(xe)},j.start(),g.current=setInterval(()=>{F(pe=>pe+1)},1e3)}catch(ee){console.error("Erro ao iniciar gravação:",ee),re.error(z("chat.toast.recordingError")),I(!1)}},H=()=>{x.current&&(x.current.stop(),g.current&&clearInterval(g.current),I(!1))},oe=()=>{A(null),F(0)},Q=ee=>{console.error("Error to send message",ee),re.error(DN(ee)?`${z("chat.toast.error")}: ${ee?.response?.data?.response?.message}`:z("chat.toast.sendError"))},ne=()=>{k(!1),h(null)},V=async()=>{if(!o?.name||!o?.token||!s)return;const ee={instanceName:o.name,token:o.token,data:{number:s,text:b}};await l(ee,{onSuccess:()=>{w(""),m.current&&(m.current.style.height="auto")},onError:Q,onSettled:ne})},K=async()=>{if(!(!o?.name||!o?.token||!N||!s)){k(!0);try{const ee=await new Promise((ue,j)=>{const P=new FileReader;P.readAsDataURL(N),P.onload=()=>{const xe=P.result.split(",")[1];ue(xe)},P.onerror=j}),ie={instanceName:o.name,token:o.token,data:{number:s,mediaMessage:{mediatype:N.type.split("/")[0]==="application"?"document":N.type.split("/")[0],mimetype:N.type,caption:b,media:ee,fileName:N.name}}};await u(ie,{onSuccess:()=>{T(null),w(""),m.current&&(m.current.style.height="auto")},onError:Q,onSettled:ne})}catch(ee){console.error("Error converting media to base64:",ee),Q(ee),k(!1)}}},U=async()=>{if(!(!o?.name||!o?.token||!M||!s)){k(!0);try{const ee=await new Promise((ue,j)=>{const P=new FileReader;P.readAsDataURL(M),P.onload=()=>{const xe=P.result.split(",")[1];ue(xe)},P.onerror=j}),ie={instanceName:o.name,token:o.token,data:{number:s,audioMessage:{audio:ee}}};await d(ie,{onSuccess:()=>{A(null),F(0)},onError:Q,onSettled:ne})}catch(ee){console.error("Error converting audio to base64:",ee),Q(ee),k(!1)}}},D=async()=>{k(!0),N?await K():await V()},J=()=>!b&&!N?a.jsx(Zte,{isSendingMessage:C,isRecording:_,audioBlob:M,elapsedTime:O,startRecording:ce,stopRecording:H,clearRecording:oe,sendAudioMessage:U}):a.jsx(Xte,{isSendingMessage:C,sendMessage:D}),ae=()=>_||M?J():a.jsxs(a.Fragment,{children:[a.jsx(Yte,{handleEmojiClick:B}),a.jsx(BP,{instance:o,setSelectedMedia:T}),a.jsx(Oo,{placeholder:z("chat.message.placeholder"),name:"message",id:"message",rows:1,ref:m,value:b,onChange:Z,onKeyDown:ee=>{!ee.shiftKey&&ee.key==="Enter"&&!C&&(ee.preventDefault(),D())},className:"min-h-0 w-full resize-none rounded-lg border-none p-3 focus-visible:outline-none focus-visible:ring-0 focus-visible:ring-transparent focus-visible:ring-offset-0 focus-visible:ring-offset-transparent",style:{backgroundColor:n,color:r}}),J()]});return o?a.jsxs("div",{className:"input-container",children:[N&&a.jsx(zP,{selectedMedia:N,setSelectedMedia:T}),f&&a.jsx(Qte,{chat:e}),a.jsx("div",{className:`flex items-end ${(_||M)&&"justify-end"} rounded-3xl px-4 py-1`,style:{backgroundColor:n,color:r},children:ae()})]}):a.jsx("div",{className:"flex h-full items-center justify-center",children:a.jsx("p",{className:"text-muted-foreground",children:z("chat.noInstance")||"Nenhuma instância selecionada"})})},tne=hn({remoteJid:ye().min(1)});function nne({onSuccess:e}){const{t}=Fe(),{primaryColor:n}=ni(),r=fn({resolver:pn(tne),defaultValues:{remoteJid:""}}),s=o=>{e(o)};return a.jsx(Ja,{...r,children:a.jsxs("form",{onSubmit:r.handleSubmit(s),children:[a.jsx(Qa,{control:r.control,name:"remoteJid",render:({field:o})=>a.jsxs(wa,{children:[a.jsx(Zr,{children:t("chat.newChat.contact")}),a.jsx(Zs,{children:a.jsx(X,{type:"text",placeholder:t("chat.newChat.placeholder"),...o})})]})}),a.jsx("div",{className:"flex justify-end",children:a.jsx(q,{type:"submit",className:"mt-4",style:{backgroundColor:n},children:t("chat.newChat.submit")})})]})})}function rne({isOpen:e,setIsOpen:t}){const[n]=vc(),{t:r}=Fe(),s=jn(),o=l=>{const u=new URLSearchParams(n);u.set("remoteJid",l.remoteJid),s(`/manager/embed-chat?${u.toString()}`),t(!1)};return a.jsx(gt,{open:e,onOpenChange:t,children:a.jsxs(pt,{className:"max-w-2xl",children:[a.jsxs(ht,{children:[a.jsx(bt,{children:r("chat.newChat.title")}),a.jsx(kr,{children:r("chat.newChat.description")})]}),a.jsx(nne,{onSuccess:o})]})})}const Ty=e=>e?e.replace("@s.whatsapp.net","").replace("@g.us",""):"";function sne(){const[e]=vc(),{backgroundColor:t,textForegroundColor:n,primaryColor:r}=ni(),s=Ya("(min-width: 768px)"),{t:o}=Fe(),l=jn(),u=e.get("token"),{remoteJid:d}=_s(),f=d||e.get("remoteJid"),[h,m]=y.useState([]),g=y.useRef(null),x=y.useRef(null),[b,w]=y.useState(null),[C,k]=y.useState(!1),{instance:N}=yw(),T=I=>{const M=new URLSearchParams(e);l(`/manager/embed-chat/${encodeURIComponent(I.remoteJid||I.id)}?${M.toString()}`)};y.useEffect(()=>{if(!N?.name)return;let I=!0;return(async()=>{try{const{data:A}=await je.post(`/chat/findChats/${N.name}`,{where:{}},{headers:{apikey:u||N.token}});I&&m(A||[])}catch(A){I&&(console.error("Erro ao buscar chats:",A),re.error("Erro ao buscar chats"))}})(),()=>{I=!1}},[N?.name,u]),y.useEffect(()=>{if(!N)return;const I=jr(Ln.API_URL);if(!I){console.error("API URL not found in localStorage");return}const M=localStorage.getItem("accessToken");u&&localStorage.setItem("accessToken",u);const A=cw(I);function O(F,z){N&&z.instance===N.name&&m(Z=>{const B=z?.data?.key?.remoteJid,ce=Z.findIndex(Q=>Q.remoteJid&&Q.remoteJid===B||Q.id&&Q.id===B),H=ce!==-1?Z[ce]:null,oe={id:B,remoteJid:B,pushName:H?.pushName||z?.data?.pushName||Ty(B),profilePicUrl:H?.profilePicUrl||z?.data?.key?.profilePictureUrl||"https://as2.ftcdn.net/jpg/05/89/93/27/1000_F_589932782_vQAEAZhHnq1QCGu5ikwrYaQD0Mmurm0N.jpg",updatedAt:new Date().toISOString(),labels:H?.labels||[],createdAt:H?.createdAt||new Date().toISOString(),instanceId:N.id};if(ce!==-1){const Q=[...Z];return Q[ce]={...H,updatedAt:oe.updatedAt},Q}else return[...Z,oe]})}return A.on("messages.upsert",F=>{O("messages.upsert",F)}),A.on("send.message",F=>{O("send.message",F)}),A.on("messages.update",F=>{}),A.connect(),()=>{A.off("messages.upsert"),A.off("send.message"),A.off("messages.update"),uw(A),u?localStorage.setItem("accessToken",M||""):localStorage.removeItem("accessToken")}},[N,f,u]),y.useEffect(()=>{if(f){const I=h.find(M=>M.id===f);w(I||null)}},[f,h]);const _={backgroundColor:t,color:n};return a.jsx("div",{className:"relative h-full",style:_,children:a.jsxs(ri,{direction:s?"horizontal":"vertical",children:[a.jsx(Er,{defaultSize:30,minSize:20,maxSize:60,children:a.jsxs("div",{className:"hidden flex-col gap-2 text-foreground md:flex",style:_,children:[a.jsx("div",{className:"sticky top-0 p-2",children:a.jsxs(q,{variant:"ghost",className:"w-full justify-start gap-2 px-2 text-left",onClick:()=>k(!0),style:{backgroundColor:r,color:n},children:[a.jsx("div",{className:"flex h-7 w-7 items-center justify-center rounded-full",children:a.jsx(sc,{className:"h-4 w-4"})}),a.jsx("div",{className:"grow overflow-hidden text-ellipsis whitespace-nowrap text-sm",children:o("chat.title")}),a.jsx(Yr,{className:"h-4 w-4"})]})}),a.jsxs(Fx,{defaultValue:"contacts",children:[a.jsxs(Lx,{className:"tabs-chat",children:[a.jsx(eh,{value:"contacts",className:"data-[state=active]:bg-primary data-[state=active]:text-primary-foreground",style:{"--primary":r||"#e2e8f0","--primary-foreground":n||"#000000"},children:o("chat.contacts")}),a.jsx(eh,{value:"groups",className:"data-[state=active]:bg-primary data-[state=active]:text-primary-foreground",style:{"--primary":r||"#e2e8f0","--primary-foreground":n||"#000000"},children:o("chat.groups")})]}),a.jsx(th,{value:"contacts",children:a.jsx("div",{className:"contacts-container",children:a.jsxs("div",{className:"grid gap-1 p-2 text-foreground",children:[a.jsx("div",{className:"px-2 text-xs font-medium text-muted-foreground",children:o("chat.contacts")}),h?.sort((I,M)=>new Date(M.lastMessage.messageTimestamp).getTime()-new Date(I.lastMessage.messageTimestamp).getTime()).map(I=>I?.id&&!I.id.includes("@g.us")&&a.jsxs("div",{onClick:()=>T(I),className:"chat-item flex cursor-pointer items-center overflow-hidden rounded-md p-2 text-sm transition-colors",style:{backgroundColor:f===I.id?r:""},children:[a.jsx("span",{className:"chat-avatar mr-2",children:a.jsx("img",{src:I.profilePicUrl||"https://as2.ftcdn.net/jpg/05/89/93/27/1000_F_589932782_vQAEAZhHnq1QCGu5ikwrYaQD0Mmurm0N.jpg",alt:"Avatar",className:"h-12 w-12 rounded-full"})}),a.jsxs("div",{className:"min-w-0 flex-1",children:[a.jsxs("div",{className:"flex items-center justify-between",children:[a.jsx("span",{className:"chat-title font-medium",style:{color:n},children:I.pushName||Ty(I.id)}),a.jsx("span",{className:"text-xs",style:{color:n}})]}),a.jsxs("div",{className:"flex items-center gap-1",children:[a.jsxs("span",{className:"text-xs font-bold",style:{color:n},children:[o("chat.recent"),":"," "]}),a.jsx("span",{className:"block truncate text-xs",style:{color:n}})]})]})]},I.id))]})})}),a.jsx(th,{value:"groups",children:a.jsx("div",{className:"contacts-container",children:a.jsxs("div",{className:"grid gap-1 p-2 text-foreground",children:[a.jsx("div",{className:"px-2 text-xs font-medium text-muted-foreground",children:o("chat.groups")}),h?.sort((I,M)=>new Date(M.lastMessage.messageTimestamp).getTime()-new Date(I.lastMessage.messageTimestamp).getTime()).map(I=>I?.id&&I.id.includes("@g.us")&&a.jsxs("div",{onClick:()=>T(I),className:"chat-item flex cursor-pointer items-center overflow-hidden rounded-md p-2 text-sm transition-colors",style:{backgroundColor:f===I.id?r:""},children:[a.jsx("span",{className:"chat-avatar mr-2",children:a.jsx("img",{src:I.profilePicUrl||"https://as2.ftcdn.net/jpg/05/89/93/27/1000_F_589932782_vQAEAZhHnq1QCGu5ikwrYaQD0Mmurm0N.jpg",alt:"Avatar",className:"h-12 w-12 rounded-full"})}),a.jsxs("div",{className:"min-w-0 flex-1",children:[a.jsxs("div",{className:"flex items-center justify-between",children:[a.jsx("span",{className:"chat-title font-medium",children:I.pushName}),a.jsx("span",{className:"text-xs text-gray-500 dark:text-gray-400"})]}),a.jsxs("div",{className:"flex items-center gap-1",children:[a.jsxs("span",{className:"text-xs font-bold text-gray-500 dark:text-gray-400",children:[o("chat.recent")," "]}),a.jsx("span",{className:"block truncate text-xs text-gray-500"})]})]})]},I.id))]})})})]})]})}),a.jsx(si,{withHandle:!0}),a.jsxs(Er,{style:_,children:[f&&a.jsx($te,{children:a.jsxs("div",{className:"flex h-full flex-col justify-between",style:_,children:[a.jsx("div",{className:"flex items-center gap-3 p-3",children:a.jsxs("div",{className:"flex flex-1 items-center gap-3",children:[a.jsx("img",{src:b?.profilePicUrl||"https://as2.ftcdn.net/jpg/05/89/93/27/1000_F_589932782_vQAEAZhHnq1QCGu5ikwrYaQD0Mmurm0N.jpg",alt:"Avatar",className:"h-10 w-10 rounded-full"}),a.jsx("div",{className:"flex flex-col",children:a.jsx("span",{className:"font-medium",children:b?.pushName||Ty(f)})})]})}),a.jsx(UP,{textareaRef:g,handleTextareaChange:()=>{},textareaHeight:"auto",lastMessageRef:x,scrollToBottom:()=>{x.current&&x.current.scrollIntoView({behavior:"smooth"})}}),a.jsx(ene,{chat:b})]})}),a.jsx(rne,{isOpen:C,setIsOpen:k})]})]})})}function ane(){const{instance:e,isLoading:t,error:n}=yw();return t?a.jsx("div",{className:"flex h-screen items-center justify-center",children:a.jsx(Vn,{})}):n?a.jsx("div",{className:"flex h-screen items-center justify-center",children:a.jsx("div",{className:"rounded-md bg-red-50 p-4 dark:bg-red-900",children:a.jsx("span",{className:"text-red-800 dark:text-red-200",children:n})})}):e?a.jsx("div",{className:"h-screen",children:a.jsx(sne,{})}):null}function rE(){return a.jsx(IE,{client:FN,children:a.jsx(j_,{children:a.jsx(Lte,{children:a.jsx(HZ,{children:a.jsx(ane,{})})})})})}const one=e=>["evoai","fetchEvoai",JSON.stringify(e)],ine=async({instanceName:e,token:t})=>(await je.get(`/evoai/find/${e}`,{headers:{apikey:t}})).data,zI=e=>{const{instanceName:t,token:n,...r}=e;return vt({...r,queryKey:one({instanceName:t,token:n}),queryFn:()=>ine({instanceName:t,token:n}),enabled:!!t&&(e.enabled??!0)})},lne=async({instanceName:e,token:t,data:n})=>(await je.post(`/evoai/create/${e}`,n,{headers:{apikey:t}})).data,cne=async({instanceName:e,evoaiId:t,data:n})=>(await je.put(`/evoai/update/${t}/${e}`,n)).data,une=async({instanceName:e,evoaiId:t})=>(await je.delete(`/evoai/delete/${t}/${e}`)).data,dne=async({instanceName:e,token:t,data:n})=>(await je.post(`/evoai/settings/${e}`,n,{headers:{apikey:t}})).data,fne=async({instanceName:e,token:t,remoteJid:n,status:r})=>(await je.post(`/evoai/changeStatus/${e}`,{remoteJid:n,status:r},{headers:{apikey:t}})).data;function Cm(){const e=it(dne,{invalidateKeys:[["evoai","fetchDefaultSettings"]]}),t=it(fne,{invalidateKeys:[["evoai","getEvoai"],["evoai","fetchSessions"]]}),n=it(une,{invalidateKeys:[["evoai","getEvoai"],["evoai","fetchEvoai"],["evoai","fetchSessions"]]}),r=it(cne,{invalidateKeys:[["evoai","getEvoai"],["evoai","fetchEvoai"],["evoai","fetchSessions"]]}),s=it(lne,{invalidateKeys:[["evoai","fetchEvoai"]]});return{setDefaultSettingsEvoai:e,changeStatusEvoai:t,deleteEvoai:n,updateEvoai:r,createEvoai:s}}const pne=e=>["evoai","fetchDefaultSettings",JSON.stringify(e)],hne=async({instanceName:e,token:t})=>(await je.get(`/evoai/fetchSettings/${e}`,{headers:{apikey:t}})).data,mne=e=>{const{instanceName:t,token:n,...r}=e;return vt({...r,queryKey:pne({instanceName:t,token:n}),queryFn:()=>hne({instanceName:t,token:n}),enabled:!!t})},gne=hn({expire:ye(),keywordFinish:ye(),delayMessage:ye(),unknownMessage:ye(),listeningFromMe:Re(),stopBotFromMe:Re(),keepOpen:Re(),debounceTime:ye(),ignoreJids:ra(ye()).default([]),evoaiIdFallback:kc([jc(),ye()]).optional(),splitMessages:Re(),timePerChar:ye()});function vne(){const{t:e}=Fe(),{instance:t}=dt(),{setDefaultSettingsEvoai:n}=Cm(),[r,s]=y.useState(!1),{data:o,refetch:l}=zI({instanceName:t?.name,token:t?.token,enabled:r}),{data:u,refetch:d}=mne({instanceName:t?.name,token:t?.token}),f=fn({resolver:pn(gne),defaultValues:{expire:"0",keywordFinish:e("evoai.form.examples.keywordFinish"),delayMessage:"1000",unknownMessage:e("evoai.form.examples.unknownMessage"),listeningFromMe:!1,stopBotFromMe:!1,keepOpen:!1,debounceTime:"0",ignoreJids:[],evoaiIdFallback:void 0,splitMessages:!1,timePerChar:"0"}});y.useEffect(()=>{u&&f.reset({expire:u?.expire?u.expire.toString():"0",keywordFinish:u.keywordFinish,delayMessage:u.delayMessage?u.delayMessage.toString():"0",unknownMessage:u.unknownMessage,listeningFromMe:u.listeningFromMe,stopBotFromMe:u.stopBotFromMe,keepOpen:u.keepOpen,debounceTime:u.debounceTime?u.debounceTime.toString():"0",ignoreJids:u.ignoreJids,evoaiIdFallback:u.evoaiIdFallback,splitMessages:u.splitMessages,timePerChar:u.timePerChar?u.timePerChar.toString():"0"})},[u]);const h=async g=>{try{if(!t||!t.name)throw new Error("instance not found.");const x={expire:parseInt(g.expire),keywordFinish:g.keywordFinish,delayMessage:parseInt(g.delayMessage),unknownMessage:g.unknownMessage,listeningFromMe:g.listeningFromMe,stopBotFromMe:g.stopBotFromMe,keepOpen:g.keepOpen,debounceTime:parseInt(g.debounceTime),evoaiIdFallback:g.evoaiIdFallback||void 0,ignoreJids:g.ignoreJids,splitMessages:g.splitMessages,timePerChar:parseInt(g.timePerChar)};await n({instanceName:t.name,token:t.token,data:x}),re.success(e("evoai.toast.defaultSettings.success"))}catch(x){console.error("Error:",x),re.error(`Error: ${x?.response?.data?.response?.message}`)}};function m(){d(),l()}return a.jsxs(gt,{open:r,onOpenChange:s,children:[a.jsx(rn,{asChild:!0,children:a.jsxs(q,{variant:"secondary",size:"sm",children:[a.jsx(Go,{size:16,className:"mr-1"}),a.jsx("span",{className:"hidden sm:inline",children:e("evoai.defaultSettings")})]})}),a.jsxs(pt,{className:"overflow-y-auto sm:max-h-[600px] sm:max-w-[740px]",onCloseAutoFocus:m,children:[a.jsx(ht,{children:a.jsx(bt,{children:e("evoai.defaultSettings")})}),a.jsx(hr,{...f,children:a.jsxs("form",{className:"w-full space-y-6",onSubmit:f.handleSubmit(h),children:[a.jsx("div",{children:a.jsxs("div",{className:"space-y-4",children:[a.jsx(dn,{name:"evoaiIdFallback",label:e("evoai.form.evoaiIdFallback.label"),options:o?.filter(g=>!!g.id).map(g=>({label:g.description,value:g.id}))??[]}),a.jsx(ge,{name:"expire",label:e("evoai.form.expire.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ge,{name:"keywordFinish",label:e("evoai.form.keywordFinish.label"),children:a.jsx(X,{})}),a.jsx(ge,{name:"delayMessage",label:e("evoai.form.delayMessage.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ge,{name:"unknownMessage",label:e("evoai.form.unknownMessage.label"),children:a.jsx(X,{})}),a.jsx(De,{name:"listeningFromMe",label:e("evoai.form.listeningFromMe.label"),reverse:!0}),a.jsx(De,{name:"stopBotFromMe",label:e("evoai.form.stopBotFromMe.label"),reverse:!0}),a.jsx(De,{name:"keepOpen",label:e("evoai.form.keepOpen.label"),reverse:!0}),a.jsx(ge,{name:"debounceTime",label:e("evoai.form.debounceTime.label"),children:a.jsx(X,{type:"number"})}),a.jsx(De,{name:"splitMessages",label:e("evoai.form.splitMessages.label"),reverse:!0}),a.jsx(ge,{name:"timePerChar",label:e("evoai.form.timePerChar.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ti,{name:"ignoreJids",label:e("evoai.form.ignoreJids.label"),placeholder:e("evoai.form.ignoreJids.placeholder")})]})}),a.jsx(Kt,{children:a.jsx(q,{type:"submit",children:e("evoai.button.save")})})]})})]})]})}const yne=e=>["evoai","fetchSessions",JSON.stringify(e)],bne=async({evoaiId:e,instanceName:t})=>(await je.get(`/evoai/fetchSessions/${e}/${t}`)).data,xne=e=>{const{evoaiId:t,instanceName:n,...r}=e;return vt({...r,queryKey:yne({evoaiId:t,instanceName:n}),queryFn:()=>bne({evoaiId:t,instanceName:n}),enabled:!!n&&!!t&&(e.enabled??!0),staleTime:1e3*10})},ip={name:"",number:"",status:"all",time:"all",customCondition:"more",customValue:"",customUnit:"minutes"};function wne(e,t){const n=parseInt(e);return!n||isNaN(n)||n<=0?null:t==="hours"?n*60:t==="days"?n*1440:n}function Sne(e,t){if(t.time==="all")return!0;const n=(Date.now()-new Date(e).getTime())/6e4;if(t.time==="custom"){const r=wne(t.customValue,t.customUnit);return r===null?!0:t.customCondition==="more"?n>r:n<=r}if(t.time.startsWith(">")){const r=parseInt(t.time.slice(1));return n>r}return n<=parseInt(t.time)}function UI({evoaiId:e}){const{t}=Fe(),{instance:n}=dt(),{changeStatusEvoai:r}=Cm(),[s,o]=y.useState(!1),[l,u]=y.useState([]),[d,f]=y.useState({}),[h,m]=y.useState(ip),[g,x]=y.useState(ip),[b,w]=y.useState(9),[C,k]=y.useState(9),[N,T]=y.useState("opened"),[_,I]=y.useState(!1),[M,A]=y.useState(""),[O,F]=y.useState(""),[z,Z]=y.useState(!1),{data:B,refetch:ce}=xne({instanceName:n?.name,evoaiId:e,enabled:s}),H=y.useMemo(()=>{const j=B??[],P=g.name.trim().toLowerCase(),pe=g.number.trim();return j.filter(xe=>!(P&&!xe.pushName?.toLowerCase().includes(P)||pe&&!xe.remoteJid.includes(pe)||g.status!=="all"&&xe.status!==g.status||!Sne(xe.updatedAt,g)))},[B,g]),oe=H.slice(0,C),Q=y.useMemo(()=>Object.keys(d).filter(j=>d[j]).map(j=>oe[Number(j)]?.remoteJid).filter(Boolean),[d,oe]);y.useEffect(()=>{k(b),f({})},[g,b]);const ne=()=>{ce()},V=()=>{x(h)},K=()=>{m(ip),x(ip)},U=async(j,P)=>{try{if(!n)return;await r({instanceName:n.name,token:n.token,remoteJid:j,status:P}),re.success(t("evoai.toast.success.status")),ne()}catch(pe){console.error("Error:",pe),re.error(`Error : ${pe?.response?.data?.response?.message}`)}},D=async()=>{if(Q.length===0){re.error(t("sessions.mass.noneSelected"));return}try{if(!n)return;await Promise.all(Q.map(j=>r({instanceName:n.name,token:n.token,remoteJid:j,status:N}))),re.success(t("sessions.mass.success")),f({}),ne()}catch(j){console.error(j),re.error(j?.response?.data?.response?.message??t("sessions.mass.error"))}},J=j=>{A(j),F(""),I(!0)},ae=async()=>{if(!O.trim()){re.error(t("sessions.send.empty"));return}try{if(!n)return;Z(!0),await je.post(`/message/sendText/${n.name}`,{number:M,text:O},{headers:{apikey:n.token}}),re.success(t("sessions.send.success")),I(!1),F(""),A("")}catch(j){console.error("Error:",j),re.error(j?.response?.data?.response?.message??j?.message??t("sessions.send.error"))}finally{Z(!1)}},ee=[{id:"select",header:({table:j})=>a.jsx(Xr,{checked:j.getIsAllPageRowsSelected()||j.getIsSomePageRowsSelected()&&"indeterminate",onCheckedChange:P=>j.toggleAllPageRowsSelected(!!P),"aria-label":t("sessions.mass.selectAll")}),cell:({row:j})=>a.jsx(Xr,{checked:j.getIsSelected(),onCheckedChange:P=>j.toggleSelected(!!P),"aria-label":t("sessions.mass.selectAll")}),enableSorting:!1},{accessorKey:"remoteJid",header:()=>a.jsx("div",{className:"text-center",children:t("evoai.sessions.table.remoteJid")}),cell:({row:j})=>a.jsx("div",{children:j.getValue("remoteJid")})},{accessorKey:"pushName",header:()=>a.jsx("div",{className:"text-center",children:t("evoai.sessions.table.pushName")}),cell:({row:j})=>a.jsx("div",{children:j.getValue("pushName")})},{accessorKey:"sessionId",header:()=>a.jsx("div",{className:"text-center",children:t("evoai.sessions.table.sessionId")}),cell:({row:j})=>a.jsx("div",{children:j.getValue("sessionId")})},{accessorKey:"status",header:()=>a.jsx("div",{className:"text-center",children:t("evoai.sessions.table.status")}),cell:({row:j})=>a.jsx("div",{children:j.getValue("status")})},{id:"actions",enableHiding:!1,cell:({row:j})=>{const P=j.original;return a.jsxs(ms,{children:[a.jsx(gs,{asChild:!0,children:a.jsxs(q,{variant:"ghost",size:"icon",children:[a.jsx("span",{className:"sr-only",children:t("evoai.sessions.table.actions.title")}),a.jsx(Jo,{className:"h-4 w-4"})]})}),a.jsxs(vs,{align:"end",children:[a.jsx(Qo,{children:t("evoai.sessions.table.actions.title")}),a.jsx(Yo,{}),P.status!=="opened"&&a.jsxs(St,{onClick:()=>U(P.remoteJid,"opened"),children:[a.jsx(tl,{className:"mr-2 h-4 w-4"}),t("evoai.sessions.table.actions.open")]}),P.status!=="paused"&&P.status!=="closed"&&a.jsxs(St,{onClick:()=>U(P.remoteJid,"paused"),children:[a.jsx(el,{className:"mr-2 h-4 w-4"}),t("evoai.sessions.table.actions.pause")]}),P.status!=="closed"&&a.jsxs(St,{onClick:()=>U(P.remoteJid,"closed"),children:[a.jsx(Qi,{className:"mr-2 h-4 w-4"}),t("evoai.sessions.table.actions.close")]}),a.jsxs(St,{onClick:()=>J(P.remoteJid),children:[a.jsx(Xi,{className:"mr-2 h-4 w-4"}),t("sessions.actions.sendMessage")]}),a.jsxs(St,{onClick:()=>U(P.remoteJid,"delete"),children:[a.jsx(Yi,{className:"mr-2 h-4 w-4"}),t("evoai.sessions.table.actions.delete")]})]})]})}}],ie=["all","5","10","15","20","30","60",">60",">120",">300",">1440","custom"],ue=["all","opened","paused","closed"];return a.jsxs(gt,{open:s,onOpenChange:o,children:[a.jsx(rn,{asChild:!0,children:a.jsxs(q,{variant:"secondary",size:"sm",children:[a.jsx(Zi,{size:16,className:"mr-1"}),a.jsx("span",{className:"hidden md:inline",children:t("evoai.sessions.label")})]})}),a.jsxs(pt,{className:"max-w-7xl h-[85vh] flex flex-col overflow-hidden",children:[a.jsx(ht,{children:a.jsx(bt,{children:t("evoai.sessions.label")})}),a.jsxs("div",{className:"flex-1 space-y-4 overflow-y-auto pr-2",children:[a.jsxs(Bn,{children:[a.jsx(Yn,{children:a.jsx(Zn,{className:"text-base",children:t("sessions.filters.title")})}),a.jsxs(zn,{className:"space-y-4",children:[a.jsxs("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-4",children:[a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{children:t("sessions.filters.name")}),a.jsx(X,{placeholder:t("sessions.filters.namePlaceholder"),value:h.name,onChange:j=>m(P=>({...P,name:j.target.value}))})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{children:t("sessions.filters.number")}),a.jsx(X,{placeholder:t("sessions.filters.numberPlaceholder"),value:h.number,onChange:j=>m(P=>({...P,number:j.target.value}))})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{children:t("sessions.filters.status")}),a.jsxs(Mt,{value:h.status,onValueChange:j=>m(P=>({...P,status:j})),children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsx(Pt,{children:ue.map(j=>a.jsx(we,{value:j,children:t(`sessions.filters.statusOptions.${j}`)},j))})]})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{children:t("sessions.filters.time")}),a.jsxs(Mt,{value:h.time,onValueChange:j=>m(P=>({...P,time:j})),children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsx(Pt,{children:ie.map(j=>a.jsx(we,{value:j,children:t(`sessions.filters.timeOptions.${j}`)},j))})]})]})]}),h.time==="custom"&&a.jsxs("div",{className:"grid grid-cols-1 gap-2 md:grid-cols-3",children:[a.jsxs(Mt,{value:h.customCondition,onValueChange:j=>m(P=>({...P,customCondition:j})),children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsxs(Pt,{children:[a.jsx(we,{value:"more",children:t("sessions.filters.custom.more")}),a.jsx(we,{value:"less",children:t("sessions.filters.custom.less")})]})]}),a.jsx(X,{type:"number",min:1,placeholder:t("sessions.filters.custom.valuePlaceholder"),value:h.customValue,onChange:j=>m(P=>({...P,customValue:j.target.value}))}),a.jsxs(Mt,{value:h.customUnit,onValueChange:j=>m(P=>({...P,customUnit:j})),children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsxs(Pt,{children:[a.jsx(we,{value:"minutes",children:t("sessions.filters.custom.minutes")}),a.jsx(we,{value:"hours",children:t("sessions.filters.custom.hours")}),a.jsx(we,{value:"days",children:t("sessions.filters.custom.days")})]})]})]}),a.jsxs("div",{className:"flex flex-wrap gap-2",children:[a.jsx(q,{onClick:V,size:"sm",children:t("sessions.filters.apply")}),a.jsx(q,{onClick:K,size:"sm",variant:"outline",children:t("sessions.filters.clear")}),a.jsxs(q,{onClick:ne,size:"sm",variant:"outline",children:[a.jsx(nl,{size:14,className:"mr-1"}),t("button.refresh")]})]})]})]}),Q.length>0&&a.jsxs(Bn,{children:[a.jsx(Yn,{children:a.jsx(Zn,{className:"text-base",children:t("sessions.mass.title")})}),a.jsx(zn,{children:a.jsxs("div",{className:"flex flex-wrap items-end gap-3",children:[a.jsx("div",{className:"text-sm text-muted-foreground",children:t("sessions.mass.selected",{count:Q.length})}),a.jsxs("div",{className:"flex-1 min-w-[180px] space-y-1",children:[a.jsx(Ue,{children:t("sessions.mass.newStatus")}),a.jsxs(Mt,{value:N,onValueChange:T,children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsxs(Pt,{children:[a.jsx(we,{value:"opened",children:t("evoai.sessions.table.actions.open")}),a.jsx(we,{value:"paused",children:t("evoai.sessions.table.actions.pause")}),a.jsx(we,{value:"closed",children:t("evoai.sessions.table.actions.close")}),a.jsx(we,{value:"delete",children:t("evoai.sessions.table.actions.delete")})]})]})]}),a.jsx(q,{onClick:D,size:"sm",children:t("sessions.mass.apply")})]})})]}),a.jsx(ai,{columns:ee,data:oe,onSortingChange:u,state:{sorting:l,rowSelection:d},onRowSelectionChange:f,enableRowSelection:!0,getRowId:(j,P)=>String(P),noResultsMessage:t("sessions.empty")}),a.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3 px-1 text-sm text-muted-foreground",children:[a.jsx("span",{children:t("sessions.pagination.showing",{shown:oe.length,total:H.length})}),a.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[a.jsx(Ue,{htmlFor:"per-page",className:"text-xs",children:t("sessions.pagination.perPage")}),a.jsxs(Mt,{value:String(b),onValueChange:j=>w(parseInt(j)),children:[a.jsx(Rt,{id:"per-page",className:"h-8 w-20",children:a.jsx(_t,{})}),a.jsxs(Pt,{children:[a.jsx(we,{value:"9",children:"9"}),a.jsx(we,{value:"25",children:"25"}),a.jsx(we,{value:"50",children:"50"}),a.jsx(we,{value:"100",children:"100"})]})]}),Ck(j=>Math.min(j+b,H.length)),children:t("sessions.pagination.showMore")}),Ck(H.length),children:t("sessions.pagination.showAll")}),C>b&&a.jsx(q,{size:"sm",variant:"outline",onClick:()=>k(b),children:t("sessions.pagination.showLess")})]})]})]}),a.jsx(gt,{open:_,onOpenChange:j=>!z&&I(j),children:a.jsxs(pt,{className:"sm:max-w-md",children:[a.jsx(ht,{children:a.jsx(bt,{children:t("sessions.send.title")})}),a.jsxs("div",{className:"space-y-3",children:[a.jsxs("div",{className:"space-y-1",children:[a.jsx(Ue,{children:t("sessions.send.to")}),a.jsx(X,{value:M,disabled:!0})]}),a.jsxs("div",{className:"space-y-1",children:[a.jsx(Ue,{children:t("sessions.send.messagePlaceholder")}),a.jsx(Zo,{rows:4,placeholder:t("sessions.send.messagePlaceholder"),value:O,onChange:j=>F(j.target.value)})]})]}),a.jsxs(Kt,{children:[a.jsx(q,{variant:"outline",onClick:()=>I(!1),disabled:z,children:t("button.cancel")}),a.jsx(q,{onClick:ae,disabled:z,children:t(z?"sessions.send.sending":"sessions.send.send")})]})]})})]})]})}const Cne=hn({enabled:Re(),description:ye(),agentUrl:ye(),apiKey:ye(),triggerType:ye(),triggerOperator:ye().optional(),triggerValue:ye().optional(),expire:Vt.number().optional(),keywordFinish:ye().optional(),delayMessage:Vt.number().optional(),unknownMessage:ye().optional(),listeningFromMe:Re().optional(),stopBotFromMe:Re().optional(),keepOpen:Re().optional(),debounceTime:Vt.number().optional(),splitMessages:Re().optional(),timePerChar:Vt.number().optional()});function VI({initialData:e,onSubmit:t,handleDelete:n,evoaiId:r,isModal:s=!1,isLoading:o=!1,openDeletionDialog:l=!1,setOpenDeletionDialog:u=()=>{}}){const{t:d}=Fe(),f=fn({resolver:pn(Cne),defaultValues:e||{enabled:!0,description:"",agentUrl:"",apiKey:"",triggerType:"keyword",triggerOperator:"contains",triggerValue:"",expire:0,keywordFinish:"",delayMessage:0,unknownMessage:"",listeningFromMe:!1,stopBotFromMe:!1,keepOpen:!1,debounceTime:0,splitMessages:!1,timePerChar:0}}),h=f.watch("triggerType");return a.jsx(hr,{...f,children:a.jsxs("form",{onSubmit:f.handleSubmit(t),className:"w-full space-y-6",children:[a.jsxs("div",{className:"space-y-4",children:[a.jsx(De,{name:"enabled",label:d("evoai.form.enabled.label"),reverse:!0}),a.jsx(ge,{name:"description",label:d("evoai.form.description.label"),children:a.jsx(X,{})}),a.jsxs("div",{className:"flex flex-col",children:[a.jsx("h3",{className:"my-4 text-lg font-medium",children:d("evoai.form.evoaiSettings.label")}),a.jsx(nn,{})]}),a.jsx(ge,{name:"agentUrl",label:d("evoai.form.agentUrl.label"),required:!0,children:a.jsx(X,{})}),a.jsx(ge,{name:"apiKey",label:d("evoai.form.apiKey.label"),className:"flex-1",children:a.jsx(X,{type:"password"})}),a.jsxs("div",{className:"flex flex-col",children:[a.jsx("h3",{className:"my-4 text-lg font-medium",children:d("evoai.form.triggerSettings.label")}),a.jsx(nn,{})]}),a.jsx(dn,{name:"triggerType",label:d("evoai.form.triggerType.label"),options:[{label:d("evoai.form.triggerType.keyword"),value:"keyword"},{label:d("evoai.form.triggerType.all"),value:"all"},{label:d("evoai.form.triggerType.advanced"),value:"advanced"},{label:d("evoai.form.triggerType.none"),value:"none"}]}),h==="keyword"&&a.jsxs(a.Fragment,{children:[a.jsx(dn,{name:"triggerOperator",label:d("evoai.form.triggerOperator.label"),options:[{label:d("evoai.form.triggerOperator.contains"),value:"contains"},{label:d("evoai.form.triggerOperator.equals"),value:"equals"},{label:d("evoai.form.triggerOperator.startsWith"),value:"startsWith"},{label:d("evoai.form.triggerOperator.endsWith"),value:"endsWith"},{label:d("evoai.form.triggerOperator.regex"),value:"regex"}]}),a.jsx(ge,{name:"triggerValue",label:d("evoai.form.triggerValue.label"),children:a.jsx(X,{})})]}),h==="advanced"&&a.jsx(ge,{name:"triggerValue",label:d("evoai.form.triggerConditions.label"),children:a.jsx(X,{})}),a.jsxs("div",{className:"flex flex-col",children:[a.jsx("h3",{className:"my-4 text-lg font-medium",children:d("evoai.form.generalSettings.label")}),a.jsx(nn,{})]}),a.jsx(ge,{name:"expire",label:d("evoai.form.expire.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ge,{name:"keywordFinish",label:d("evoai.form.keywordFinish.label"),children:a.jsx(X,{})}),a.jsx(ge,{name:"delayMessage",label:d("evoai.form.delayMessage.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ge,{name:"unknownMessage",label:d("evoai.form.unknownMessage.label"),children:a.jsx(X,{})}),a.jsx(De,{name:"listeningFromMe",label:d("evoai.form.listeningFromMe.label"),reverse:!0}),a.jsx(De,{name:"stopBotFromMe",label:d("evoai.form.stopBotFromMe.label"),reverse:!0}),a.jsx(De,{name:"keepOpen",label:d("evoai.form.keepOpen.label"),reverse:!0}),a.jsx(ge,{name:"debounceTime",label:d("evoai.form.debounceTime.label"),children:a.jsx(X,{type:"number"})}),a.jsx(De,{name:"splitMessages",label:d("evoai.form.splitMessages.label"),reverse:!0}),f.watch("splitMessages")&&a.jsx(ge,{name:"timePerChar",label:d("evoai.form.timePerChar.label"),children:a.jsx(X,{type:"number"})})]}),s&&a.jsx(Kt,{children:a.jsx(q,{disabled:o,type:"submit",children:d(o?"evoai.button.saving":"evoai.button.save")})}),!s&&a.jsxs("div",{children:[a.jsx(UI,{evoaiId:r}),a.jsxs("div",{className:"mt-5 flex items-center gap-3",children:[a.jsxs(gt,{open:l,onOpenChange:u,children:[a.jsx(rn,{asChild:!0,children:a.jsx(q,{variant:"destructive",size:"sm",children:d("evoai.button.delete")})}),a.jsx(pt,{children:a.jsxs(ht,{children:[a.jsx(bt,{children:d("modal.delete.title")}),a.jsx(kr,{children:d("modal.delete.messageSingle")}),a.jsxs(Kt,{children:[a.jsx(q,{size:"sm",variant:"outline",onClick:()=>u(!1),children:d("button.cancel")}),a.jsx(q,{variant:"destructive",onClick:n,children:d("button.delete")})]})]})})]}),a.jsx(q,{disabled:o,type:"submit",children:d(o?"evoai.button.saving":"evoai.button.update")})]})]})]})})}function jne({resetTable:e}){const{t}=Fe(),{instance:n}=dt(),[r,s]=y.useState(!1),[o,l]=y.useState(!1),{createEvoai:u}=Cm(),d=async f=>{try{if(!n||!n.name)throw new Error("instance not found");s(!0);const h={enabled:f.enabled,description:f.description,agentUrl:f.agentUrl,apiKey:f.apiKey,triggerType:f.triggerType,triggerOperator:f.triggerOperator||"",triggerValue:f.triggerValue||"",expire:f.expire||0,keywordFinish:f.keywordFinish||"",delayMessage:f.delayMessage||0,unknownMessage:f.unknownMessage||"",listeningFromMe:f.listeningFromMe||!1,stopBotFromMe:f.stopBotFromMe||!1,keepOpen:f.keepOpen||!1,debounceTime:f.debounceTime||0,splitMessages:f.splitMessages||!1,timePerChar:f.timePerChar||0};await u({instanceName:n.name,token:n.token,data:h}),re.success(t("evoai.toast.success.create")),l(!1),e()}catch(h){console.error("Error:",h),re.error(`Error: ${h?.response?.data?.response?.message}`)}finally{s(!1)}};return a.jsxs(gt,{open:o,onOpenChange:l,children:[a.jsx(rn,{asChild:!0,children:a.jsxs(q,{size:"sm",children:[a.jsx(Yr,{size:16,className:"mr-1"}),a.jsx("span",{className:"hidden sm:inline",children:t("evoai.button.create")})]})}),a.jsxs(pt,{className:"overflow-y-auto sm:max-h-[600px] sm:max-w-[740px]",children:[a.jsx(ht,{children:a.jsx(bt,{children:t("evoai.form.title")})}),a.jsx(VI,{onSubmit:d,isModal:!0,isLoading:r})]})]})}const kne=e=>["evoai","getEvoai",JSON.stringify(e)],Ene=async({evoaiId:e,instanceName:t})=>(await je.get(`/evoai/fetch/${e}/${t}`)).data,Nne=e=>{const{evoaiId:t,instanceName:n,...r}=e;return vt({...r,queryKey:kne({evoaiId:t,instanceName:n}),queryFn:()=>Ene({evoaiId:t,instanceName:n}),enabled:!!n&&!!t&&(e.enabled??!0)})};function Tne({evoaiId:e,resetTable:t}){const{t:n}=Fe(),{instance:r}=dt(),s=jn(),[o,l]=y.useState(!1),{deleteEvoai:u,updateEvoai:d}=Cm(),{data:f,isLoading:h}=Nne({evoaiId:e,instanceName:r?.name}),m=y.useMemo(()=>({enabled:!!f?.enabled,description:f?.description??"",agentUrl:f?.agentUrl??"",apiKey:f?.apiKey??"",triggerType:f?.triggerType??"",triggerOperator:f?.triggerOperator??"",triggerValue:f?.triggerValue??"",expire:f?.expire??0,keywordFinish:f?.keywordFinish??"",delayMessage:f?.delayMessage??0,unknownMessage:f?.unknownMessage??"",listeningFromMe:!!f?.listeningFromMe,stopBotFromMe:!!f?.stopBotFromMe,keepOpen:!!f?.keepOpen,debounceTime:f?.debounceTime??0,splitMessages:f?.splitMessages??!1,timePerChar:f?.timePerChar??0}),[f?.agentUrl,f?.apiKey,f?.debounceTime,f?.delayMessage,f?.description,f?.enabled,f?.expire,f?.keepOpen,f?.keywordFinish,f?.listeningFromMe,f?.stopBotFromMe,f?.triggerOperator,f?.triggerType,f?.triggerValue,f?.unknownMessage,f?.splitMessages,f?.timePerChar]),g=async b=>{try{if(r&&r.name&&e){const w={enabled:b.enabled,description:b.description,agentUrl:b.agentUrl,apiKey:b.apiKey,triggerType:b.triggerType,triggerOperator:b.triggerOperator||"",triggerValue:b.triggerValue||"",expire:b.expire||0,keywordFinish:b.keywordFinish||"",delayMessage:b.delayMessage||1e3,unknownMessage:b.unknownMessage||"",listeningFromMe:b.listeningFromMe||!1,stopBotFromMe:b.stopBotFromMe||!1,keepOpen:b.keepOpen||!1,debounceTime:b.debounceTime||0,splitMessages:b.splitMessages||!1,timePerChar:b.timePerChar||0};await d({instanceName:r.name,evoaiId:e,data:w}),re.success(n("evoai.toast.success.update")),t(),s(`/manager/instance/${r.id}/evoai/${e}`)}else console.error("Token not found")}catch(w){console.error("Error:",w),re.error(`Error: ${w?.response?.data?.response?.message}`)}},x=async()=>{try{r&&r.name&&e?(await u({instanceName:r.name,evoaiId:e}),re.success(n("evoai.toast.success.delete")),l(!1),t(),s(`/manager/instance/${r.id}/evoai`)):console.error("instance not found")}catch(b){console.error("Erro ao excluir evoai:",b)}};return h?a.jsx(Vn,{}):a.jsx("div",{className:"m-4",children:a.jsx(VI,{initialData:m,onSubmit:g,evoaiId:e,handleDelete:x,isModal:!1,isLoading:h,openDeletionDialog:o,setOpenDeletionDialog:l})})}function sE(){const{t:e}=Fe(),t=Ya("(min-width: 768px)"),{instance:n}=dt(),{evoaiId:r}=_s(),{data:s,refetch:o,isLoading:l,error:u}=zI({instanceName:n?.name}),d=jn(),f=m=>{n&&d(`/manager/instance/${n.id}/evoai/${m}`)},h=()=>{o()};return a.jsx("main",{className:"pt-5",children:a.jsxs(sa,{error:u,name:"Evoai",envVar:"EVOAI_ENABLED",children:[a.jsxs("div",{className:"mb-1 flex items-center justify-between",children:[a.jsx("h3",{className:"text-lg font-medium",children:e("evoai.title")}),a.jsxs("div",{className:"flex items-center justify-end gap-2",children:[a.jsx(UI,{}),a.jsx(vne,{}),a.jsx(jne,{resetTable:h})]})]}),a.jsx(nn,{className:"my-4"}),a.jsxs(ri,{direction:t?"horizontal":"vertical",children:[a.jsx(Er,{defaultSize:r?35:100,className:"pr-4",children:a.jsx("div",{className:"flex flex-col gap-3",children:l?a.jsx(Vn,{}):a.jsx(a.Fragment,{children:s&&s.length>0&&Array.isArray(s)?s.map(m=>a.jsx(q,{className:"flex h-auto flex-col items-start justify-start",onClick:()=>f(`${m.id}`),variant:r===m.id?"secondary":"outline",children:a.jsx("h4",{className:"text-base",children:m.description||m.id})},m.id)):a.jsx(q,{variant:"link",children:e("evoai.table.none")})})})}),r&&a.jsxs(a.Fragment,{children:[a.jsx(si,{withHandle:!0,className:"border border-border"}),a.jsx(Er,{children:a.jsx(Tne,{evoaiId:r,resetTable:h})})]})]})]})})}const Mne=e=>["evolutionBot","findEvolutionBot",JSON.stringify(e)],_ne=async({instanceName:e,token:t})=>(await je.get(`/evolutionBot/find/${e}`,{headers:{apiKey:t}})).data,qI=e=>{const{instanceName:t,token:n,...r}=e;return vt({...r,queryKey:Mne({instanceName:t}),queryFn:()=>_ne({instanceName:t,token:n}),enabled:!!t&&(e.enabled??!0)})},Rne=e=>["evolutionBot","fetchDefaultSettings",JSON.stringify(e)],Pne=async({instanceName:e,token:t})=>{const n=await je.get(`/evolutionBot/fetchSettings/${e}`,{headers:{apiKey:t}});return Array.isArray(n.data)?n.data[0]:n.data},Ine=e=>{const{instanceName:t,token:n,...r}=e;return vt({...r,queryKey:Rne({instanceName:t}),queryFn:()=>Pne({instanceName:t,token:n}),enabled:!!t&&(e.enabled??!0)})},One=async({instanceName:e,token:t,data:n})=>(await je.post(`/evolutionBot/create/${e}`,n,{headers:{apikey:t}})).data,Ane=async({instanceName:e,token:t,evolutionBotId:n,data:r})=>(await je.put(`/evolutionBot/update/${n}/${e}`,r,{headers:{apikey:t}})).data,Dne=async({instanceName:e,evolutionBotId:t})=>(await je.delete(`/evolutionBot/delete/${t}/${e}`)).data,Fne=async({instanceName:e,token:t,data:n})=>(await je.post(`/evolutionBot/settings/${e}`,n,{headers:{apikey:t}})).data,Lne=async({instanceName:e,token:t,remoteJid:n,status:r})=>(await je.post(`/evolutionBot/changeStatus/${e}`,{remoteJid:n,status:r},{headers:{apikey:t}})).data;function jm(){const e=it(Fne,{invalidateKeys:[["evolutionBot","fetchDefaultSettings"]]}),t=it(Lne,{invalidateKeys:[["evolutionBot","getEvolutionBot"],["evolutionBot","fetchSessions"]]}),n=it(Dne,{invalidateKeys:[["evolutionBot","getEvolutionBot"],["evolutionBot","findEvolutionBot"],["evolutionBot","fetchSessions"]]}),r=it(Ane,{invalidateKeys:[["evolutionBot","getEvolutionBot"],["evolutionBot","findEvolutionBot"],["evolutionBot","fetchSessions"]]}),s=it(One,{invalidateKeys:[["evolutionBot","findEvolutionBot"]]});return{setDefaultSettingsEvolutionBot:e,changeStatusEvolutionBot:t,deleteEvolutionBot:n,updateEvolutionBot:r,createEvolutionBot:s}}const $ne=hn({expire:ye(),keywordFinish:ye(),delayMessage:ye(),unknownMessage:ye(),listeningFromMe:Re(),stopBotFromMe:Re(),keepOpen:Re(),debounceTime:ye(),ignoreJids:ra(ye()).default([]),botIdFallback:kc([jc(),ye()]).optional(),splitMessages:Re(),timePerChar:ye()});function Bne(){const{t:e}=Fe(),{instance:t}=dt(),[n,r]=y.useState(!1),{data:s,refetch:o}=Ine({instanceName:t?.name,enabled:n}),{data:l,refetch:u}=qI({instanceName:t?.name,enabled:n}),{setDefaultSettingsEvolutionBot:d}=jm(),f=fn({resolver:pn($ne),defaultValues:{expire:"0",keywordFinish:e("evolutionBot.form.examples.keywordFinish"),delayMessage:"1000",unknownMessage:e("evolutionBot.form.examples.unknownMessage"),listeningFromMe:!1,stopBotFromMe:!1,keepOpen:!1,debounceTime:"0",ignoreJids:[],botIdFallback:void 0,splitMessages:!1,timePerChar:"0"}});y.useEffect(()=>{s&&f.reset({expire:s?.expire?s.expire.toString():"0",keywordFinish:s.keywordFinish,delayMessage:s.delayMessage?s.delayMessage.toString():"0",unknownMessage:s.unknownMessage,listeningFromMe:s.listeningFromMe,stopBotFromMe:s.stopBotFromMe,keepOpen:s.keepOpen,debounceTime:s.debounceTime?s.debounceTime.toString():"0",ignoreJids:s.ignoreJids,botIdFallback:s.botIdFallback,splitMessages:s.splitMessages,timePerChar:s.timePerChar?s.timePerChar.toString():"0"})},[s]);const h=async g=>{try{if(!t||!t.name)throw new Error("instance not found.");const x={expire:parseInt(g.expire),keywordFinish:g.keywordFinish,delayMessage:parseInt(g.delayMessage),unknownMessage:g.unknownMessage,listeningFromMe:g.listeningFromMe,stopBotFromMe:g.stopBotFromMe,keepOpen:g.keepOpen,debounceTime:parseInt(g.debounceTime),botIdFallback:g.botIdFallback||void 0,ignoreJids:g.ignoreJids,splitMessages:g.splitMessages,timePerChar:parseInt(g.timePerChar)};await d({instanceName:t.name,token:t.token,data:x}),re.success(e("evolutionBot.toast.defaultSettings.success"))}catch(x){console.error("Error:",x),re.error(`Error: ${x?.response?.data?.response?.message}`)}};function m(){o(),u()}return a.jsxs(gt,{open:n,onOpenChange:r,children:[a.jsx(rn,{asChild:!0,children:a.jsxs(q,{variant:"secondary",size:"sm",children:[a.jsx(Go,{size:16,className:"mr-1"}),a.jsx("span",{className:"hidden sm:inline",children:e("evolutionBot.defaultSettings")})]})}),a.jsxs(pt,{className:"overflow-y-auto sm:max-h-[600px] sm:max-w-[740px]",onCloseAutoFocus:m,children:[a.jsx(ht,{children:a.jsx(bt,{children:e("evolutionBot.defaultSettings")})}),a.jsx(hr,{...f,children:a.jsxs("form",{className:"w-full space-y-6",onSubmit:f.handleSubmit(h),children:[a.jsx("div",{children:a.jsxs("div",{className:"space-y-4",children:[a.jsx(dn,{name:"botIdFallback",label:e("evolutionBot.form.botIdFallback.label"),options:l?.filter(g=>!!g.id).map(g=>({label:g.description,value:g.id}))??[]}),a.jsx(ge,{name:"expire",label:e("evolutionBot.form.expire.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ge,{name:"keywordFinish",label:e("evolutionBot.form.keywordFinish.label"),children:a.jsx(X,{})}),a.jsx(ge,{name:"delayMessage",label:e("evolutionBot.form.delayMessage.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ge,{name:"unknownMessage",label:e("evolutionBot.form.unknownMessage.label"),children:a.jsx(X,{})}),a.jsx(De,{name:"listeningFromMe",label:e("evolutionBot.form.listeningFromMe.label"),reverse:!0}),a.jsx(De,{name:"stopBotFromMe",label:e("evolutionBot.form.stopBotFromMe.label"),reverse:!0}),a.jsx(De,{name:"keepOpen",label:e("evolutionBot.form.keepOpen.label"),reverse:!0}),a.jsx(ge,{name:"debounceTime",label:e("evolutionBot.form.debounceTime.label"),children:a.jsx(X,{type:"number"})}),a.jsx(De,{name:"splitMessages",label:e("evolutionBot.form.splitMessages.label"),reverse:!0}),f.watch("splitMessages")&&a.jsx(ge,{name:"timePerChar",label:e("evolutionBot.form.timePerChar.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ti,{name:"ignoreJids",label:e("evolutionBot.form.ignoreJids.label"),placeholder:e("evolutionBot.form.ignoreJids.placeholder")})]})}),a.jsx(Kt,{children:a.jsx(q,{type:"submit",children:e("evolutionBot.button.save")})})]})})]})]})}const zne=e=>["evolutionBot","fetchSessions",JSON.stringify(e)],Une=async({instanceName:e,evolutionBotId:t,token:n})=>(await je.get(`/evolutionBot/fetchSessions/${t}/${e}`,{headers:{apiKey:n}})).data,Vne=e=>{const{instanceName:t,token:n,evolutionBotId:r,...s}=e;return vt({...s,queryKey:zne({instanceName:t}),queryFn:()=>Une({instanceName:t,token:n,evolutionBotId:r}),enabled:!!t&&!!r&&(e.enabled??!0)})},lp={name:"",number:"",status:"all",time:"all",customCondition:"more",customValue:"",customUnit:"minutes"};function qne(e,t){const n=parseInt(e);return!n||isNaN(n)||n<=0?null:t==="hours"?n*60:t==="days"?n*1440:n}function Hne(e,t){if(t.time==="all")return!0;const n=(Date.now()-new Date(e).getTime())/6e4;if(t.time==="custom"){const r=qne(t.customValue,t.customUnit);return r===null?!0:t.customCondition==="more"?n>r:n<=r}if(t.time.startsWith(">")){const r=parseInt(t.time.slice(1));return n>r}return n<=parseInt(t.time)}function HI({evolutionBotId:e}){const{t}=Fe(),{instance:n}=dt(),{changeStatusEvolutionBot:r}=jm(),[s,o]=y.useState(!1),[l,u]=y.useState([]),[d,f]=y.useState({}),[h,m]=y.useState(lp),[g,x]=y.useState(lp),[b,w]=y.useState(9),[C,k]=y.useState(9),[N,T]=y.useState("opened"),[_,I]=y.useState(!1),[M,A]=y.useState(""),[O,F]=y.useState(""),[z,Z]=y.useState(!1),{data:B,refetch:ce}=Vne({instanceName:n?.name,evolutionBotId:e,enabled:s}),H=y.useMemo(()=>{const j=B??[],P=g.name.trim().toLowerCase(),pe=g.number.trim();return j.filter(xe=>!(P&&!xe.pushName?.toLowerCase().includes(P)||pe&&!xe.remoteJid.includes(pe)||g.status!=="all"&&xe.status!==g.status||!Hne(xe.updatedAt,g)))},[B,g]),oe=H.slice(0,C),Q=y.useMemo(()=>Object.keys(d).filter(j=>d[j]).map(j=>oe[Number(j)]?.remoteJid).filter(Boolean),[d,oe]);y.useEffect(()=>{k(b),f({})},[g,b]);const ne=()=>{ce()},V=()=>{x(h)},K=()=>{m(lp),x(lp)},U=async(j,P)=>{try{if(!n)return;await r({instanceName:n.name,token:n.token,remoteJid:j,status:P}),re.success(t("evolutionBot.toast.success.status")),ne()}catch(pe){console.error("Error:",pe),re.error(`Error : ${pe?.response?.data?.response?.message}`)}},D=async()=>{if(Q.length===0){re.error(t("sessions.mass.noneSelected"));return}try{if(!n)return;await Promise.all(Q.map(j=>r({instanceName:n.name,token:n.token,remoteJid:j,status:N}))),re.success(t("sessions.mass.success")),f({}),ne()}catch(j){console.error(j),re.error(j?.response?.data?.response?.message??t("sessions.mass.error"))}},J=j=>{A(j),F(""),I(!0)},ae=async()=>{if(!O.trim()){re.error(t("sessions.send.empty"));return}try{if(!n)return;Z(!0),await je.post(`/message/sendText/${n.name}`,{number:M,text:O},{headers:{apikey:n.token}}),re.success(t("sessions.send.success")),I(!1),F(""),A("")}catch(j){console.error("Error:",j),re.error(j?.response?.data?.response?.message??j?.message??t("sessions.send.error"))}finally{Z(!1)}},ee=[{id:"select",header:({table:j})=>a.jsx(Xr,{checked:j.getIsAllPageRowsSelected()||j.getIsSomePageRowsSelected()&&"indeterminate",onCheckedChange:P=>j.toggleAllPageRowsSelected(!!P),"aria-label":t("sessions.mass.selectAll")}),cell:({row:j})=>a.jsx(Xr,{checked:j.getIsSelected(),onCheckedChange:P=>j.toggleSelected(!!P),"aria-label":t("sessions.mass.selectAll")}),enableSorting:!1},{accessorKey:"remoteJid",header:()=>a.jsx("div",{className:"text-center",children:t("evolutionBot.sessions.table.remoteJid")}),cell:({row:j})=>a.jsx("div",{children:j.getValue("remoteJid")})},{accessorKey:"pushName",header:()=>a.jsx("div",{className:"text-center",children:t("evolutionBot.sessions.table.pushName")}),cell:({row:j})=>a.jsx("div",{children:j.getValue("pushName")})},{accessorKey:"sessionId",header:()=>a.jsx("div",{className:"text-center",children:t("evolutionBot.sessions.table.sessionId")}),cell:({row:j})=>a.jsx("div",{children:j.getValue("sessionId")})},{accessorKey:"status",header:()=>a.jsx("div",{className:"text-center",children:t("evolutionBot.sessions.table.status")}),cell:({row:j})=>a.jsx("div",{children:j.getValue("status")})},{id:"actions",enableHiding:!1,cell:({row:j})=>{const P=j.original;return a.jsxs(ms,{children:[a.jsx(gs,{asChild:!0,children:a.jsxs(q,{variant:"ghost",size:"icon",children:[a.jsx("span",{className:"sr-only",children:t("evolutionBot.sessions.table.actions.title")}),a.jsx(Jo,{className:"h-4 w-4"})]})}),a.jsxs(vs,{align:"end",children:[a.jsx(Qo,{children:t("evolutionBot.sessions.table.actions.title")}),a.jsx(Yo,{}),P.status!=="opened"&&a.jsxs(St,{onClick:()=>U(P.remoteJid,"opened"),children:[a.jsx(tl,{className:"mr-2 h-4 w-4"}),t("evolutionBot.sessions.table.actions.open")]}),P.status!=="paused"&&P.status!=="closed"&&a.jsxs(St,{onClick:()=>U(P.remoteJid,"paused"),children:[a.jsx(el,{className:"mr-2 h-4 w-4"}),t("evolutionBot.sessions.table.actions.pause")]}),P.status!=="closed"&&a.jsxs(St,{onClick:()=>U(P.remoteJid,"closed"),children:[a.jsx(Qi,{className:"mr-2 h-4 w-4"}),t("evolutionBot.sessions.table.actions.close")]}),a.jsxs(St,{onClick:()=>J(P.remoteJid),children:[a.jsx(Xi,{className:"mr-2 h-4 w-4"}),t("sessions.actions.sendMessage")]}),a.jsxs(St,{onClick:()=>U(P.remoteJid,"delete"),children:[a.jsx(Yi,{className:"mr-2 h-4 w-4"}),t("evolutionBot.sessions.table.actions.delete")]})]})]})}}],ie=["all","5","10","15","20","30","60",">60",">120",">300",">1440","custom"],ue=["all","opened","paused","closed"];return a.jsxs(gt,{open:s,onOpenChange:o,children:[a.jsx(rn,{asChild:!0,children:a.jsxs(q,{variant:"secondary",size:"sm",children:[a.jsx(Zi,{size:16,className:"mr-1"}),a.jsx("span",{className:"hidden md:inline",children:t("evolutionBot.sessions.label")})]})}),a.jsxs(pt,{className:"max-w-7xl h-[85vh] flex flex-col overflow-hidden",children:[a.jsx(ht,{children:a.jsx(bt,{children:t("evolutionBot.sessions.label")})}),a.jsxs("div",{className:"flex-1 space-y-4 overflow-y-auto pr-2",children:[a.jsxs(Bn,{children:[a.jsx(Yn,{children:a.jsx(Zn,{className:"text-base",children:t("sessions.filters.title")})}),a.jsxs(zn,{className:"space-y-4",children:[a.jsxs("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-4",children:[a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{children:t("sessions.filters.name")}),a.jsx(X,{placeholder:t("sessions.filters.namePlaceholder"),value:h.name,onChange:j=>m(P=>({...P,name:j.target.value}))})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{children:t("sessions.filters.number")}),a.jsx(X,{placeholder:t("sessions.filters.numberPlaceholder"),value:h.number,onChange:j=>m(P=>({...P,number:j.target.value}))})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{children:t("sessions.filters.status")}),a.jsxs(Mt,{value:h.status,onValueChange:j=>m(P=>({...P,status:j})),children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsx(Pt,{children:ue.map(j=>a.jsx(we,{value:j,children:t(`sessions.filters.statusOptions.${j}`)},j))})]})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{children:t("sessions.filters.time")}),a.jsxs(Mt,{value:h.time,onValueChange:j=>m(P=>({...P,time:j})),children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsx(Pt,{children:ie.map(j=>a.jsx(we,{value:j,children:t(`sessions.filters.timeOptions.${j}`)},j))})]})]})]}),h.time==="custom"&&a.jsxs("div",{className:"grid grid-cols-1 gap-2 md:grid-cols-3",children:[a.jsxs(Mt,{value:h.customCondition,onValueChange:j=>m(P=>({...P,customCondition:j})),children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsxs(Pt,{children:[a.jsx(we,{value:"more",children:t("sessions.filters.custom.more")}),a.jsx(we,{value:"less",children:t("sessions.filters.custom.less")})]})]}),a.jsx(X,{type:"number",min:1,placeholder:t("sessions.filters.custom.valuePlaceholder"),value:h.customValue,onChange:j=>m(P=>({...P,customValue:j.target.value}))}),a.jsxs(Mt,{value:h.customUnit,onValueChange:j=>m(P=>({...P,customUnit:j})),children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsxs(Pt,{children:[a.jsx(we,{value:"minutes",children:t("sessions.filters.custom.minutes")}),a.jsx(we,{value:"hours",children:t("sessions.filters.custom.hours")}),a.jsx(we,{value:"days",children:t("sessions.filters.custom.days")})]})]})]}),a.jsxs("div",{className:"flex flex-wrap gap-2",children:[a.jsx(q,{onClick:V,size:"sm",children:t("sessions.filters.apply")}),a.jsx(q,{onClick:K,size:"sm",variant:"outline",children:t("sessions.filters.clear")}),a.jsxs(q,{onClick:ne,size:"sm",variant:"outline",children:[a.jsx(nl,{size:14,className:"mr-1"}),t("button.refresh")]})]})]})]}),Q.length>0&&a.jsxs(Bn,{children:[a.jsx(Yn,{children:a.jsx(Zn,{className:"text-base",children:t("sessions.mass.title")})}),a.jsx(zn,{children:a.jsxs("div",{className:"flex flex-wrap items-end gap-3",children:[a.jsx("div",{className:"text-sm text-muted-foreground",children:t("sessions.mass.selected",{count:Q.length})}),a.jsxs("div",{className:"flex-1 min-w-[180px] space-y-1",children:[a.jsx(Ue,{children:t("sessions.mass.newStatus")}),a.jsxs(Mt,{value:N,onValueChange:T,children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsxs(Pt,{children:[a.jsx(we,{value:"opened",children:t("evolutionBot.sessions.table.actions.open")}),a.jsx(we,{value:"paused",children:t("evolutionBot.sessions.table.actions.pause")}),a.jsx(we,{value:"closed",children:t("evolutionBot.sessions.table.actions.close")}),a.jsx(we,{value:"delete",children:t("evolutionBot.sessions.table.actions.delete")})]})]})]}),a.jsx(q,{onClick:D,size:"sm",children:t("sessions.mass.apply")})]})})]}),a.jsx(ai,{columns:ee,data:oe,onSortingChange:u,state:{sorting:l,rowSelection:d},onRowSelectionChange:f,enableRowSelection:!0,getRowId:(j,P)=>String(P),noResultsMessage:t("sessions.empty")}),a.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3 px-1 text-sm text-muted-foreground",children:[a.jsx("span",{children:t("sessions.pagination.showing",{shown:oe.length,total:H.length})}),a.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[a.jsx(Ue,{htmlFor:"per-page",className:"text-xs",children:t("sessions.pagination.perPage")}),a.jsxs(Mt,{value:String(b),onValueChange:j=>w(parseInt(j)),children:[a.jsx(Rt,{id:"per-page",className:"h-8 w-20",children:a.jsx(_t,{})}),a.jsxs(Pt,{children:[a.jsx(we,{value:"9",children:"9"}),a.jsx(we,{value:"25",children:"25"}),a.jsx(we,{value:"50",children:"50"}),a.jsx(we,{value:"100",children:"100"})]})]}),Ck(j=>Math.min(j+b,H.length)),children:t("sessions.pagination.showMore")}),Ck(H.length),children:t("sessions.pagination.showAll")}),C>b&&a.jsx(q,{size:"sm",variant:"outline",onClick:()=>k(b),children:t("sessions.pagination.showLess")})]})]})]}),a.jsx(gt,{open:_,onOpenChange:j=>!z&&I(j),children:a.jsxs(pt,{className:"sm:max-w-md",children:[a.jsx(ht,{children:a.jsx(bt,{children:t("sessions.send.title")})}),a.jsxs("div",{className:"space-y-3",children:[a.jsxs("div",{className:"space-y-1",children:[a.jsx(Ue,{children:t("sessions.send.to")}),a.jsx(X,{value:M,disabled:!0})]}),a.jsxs("div",{className:"space-y-1",children:[a.jsx(Ue,{children:t("sessions.send.messagePlaceholder")}),a.jsx(Zo,{rows:4,placeholder:t("sessions.send.messagePlaceholder"),value:O,onChange:j=>F(j.target.value)})]})]}),a.jsxs(Kt,{children:[a.jsx(q,{variant:"outline",onClick:()=>I(!1),disabled:z,children:t("button.cancel")}),a.jsx(q,{onClick:ae,disabled:z,children:t(z?"sessions.send.sending":"sessions.send.send")})]})]})})]})]})}const Kne=hn({enabled:Re(),description:ye(),apiUrl:ye(),apiKey:ye().optional(),triggerType:ye(),triggerOperator:ye().optional(),triggerValue:ye().optional(),expire:Vt.number().optional(),keywordFinish:ye().optional(),delayMessage:Vt.number().optional(),unknownMessage:ye().optional(),listeningFromMe:Re().optional(),stopBotFromMe:Re().optional(),keepOpen:Re().optional(),debounceTime:Vt.number().optional(),splitMessages:Re().optional(),timePerChar:Vt.number().optional()});function KI({initialData:e,onSubmit:t,handleDelete:n,evolutionBotId:r,isModal:s=!1,isLoading:o=!1,openDeletionDialog:l=!1,setOpenDeletionDialog:u=()=>{}}){const{t:d}=Fe(),f=fn({resolver:pn(Kne),defaultValues:e||{enabled:!0,description:"",apiUrl:"",apiKey:"",triggerType:"keyword",triggerOperator:"contains",triggerValue:"",expire:0,keywordFinish:"",delayMessage:0,unknownMessage:"",listeningFromMe:!1,stopBotFromMe:!1,keepOpen:!1,debounceTime:0,splitMessages:!1,timePerChar:0}}),h=f.watch("triggerType");return a.jsx(hr,{...f,children:a.jsxs("form",{onSubmit:f.handleSubmit(t),className:"w-full space-y-6",children:[a.jsxs("div",{className:"space-y-4",children:[a.jsx(De,{name:"enabled",label:d("evolutionBot.form.enabled.label"),reverse:!0}),a.jsx(ge,{name:"description",label:d("evolutionBot.form.description.label"),required:!0,children:a.jsx(X,{})}),a.jsxs("div",{className:"flex flex-col",children:[a.jsx("h3",{className:"my-4 text-lg font-medium",children:d("evolutionBot.form.evolutionBotSettings.label")}),a.jsx(nn,{})]}),a.jsx(ge,{name:"apiUrl",label:d("evolutionBot.form.apiUrl.label"),required:!0,children:a.jsx(X,{})}),a.jsx(ge,{name:"apiKey",label:d("evolutionBot.form.apiKey.label"),children:a.jsx(X,{type:"password"})}),a.jsxs("div",{className:"flex flex-col",children:[a.jsx("h3",{className:"my-4 text-lg font-medium",children:d("evolutionBot.form.triggerSettings.label")}),a.jsx(nn,{})]}),a.jsx(dn,{name:"triggerType",label:d("evolutionBot.form.triggerType.label"),options:[{label:d("evolutionBot.form.triggerType.keyword"),value:"keyword"},{label:d("evolutionBot.form.triggerType.all"),value:"all"},{label:d("evolutionBot.form.triggerType.advanced"),value:"advanced"},{label:d("evolutionBot.form.triggerType.none"),value:"none"}]}),h==="keyword"&&a.jsxs(a.Fragment,{children:[a.jsx(dn,{name:"triggerOperator",label:d("evolutionBot.form.triggerOperator.label"),options:[{label:d("evolutionBot.form.triggerOperator.contains"),value:"contains"},{label:d("evolutionBot.form.triggerOperator.equals"),value:"equals"},{label:d("evolutionBot.form.triggerOperator.startsWith"),value:"startsWith"},{label:d("evolutionBot.form.triggerOperator.endsWith"),value:"endsWith"},{label:d("evolutionBot.form.triggerOperator.regex"),value:"regex"}]}),a.jsx(ge,{name:"triggerValue",label:d("evolutionBot.form.triggerValue.label"),children:a.jsx(X,{})})]}),h==="advanced"&&a.jsx(ge,{name:"triggerValue",label:d("evolutionBot.form.triggerConditions.label"),children:a.jsx(X,{})}),a.jsxs("div",{className:"flex flex-col",children:[a.jsx("h3",{className:"my-4 text-lg font-medium",children:d("evolutionBot.form.generalSettings.label")}),a.jsx(nn,{})]}),a.jsx(ge,{name:"expire",label:d("evolutionBot.form.expire.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ge,{name:"keywordFinish",label:d("evolutionBot.form.keywordFinish.label"),children:a.jsx(X,{})}),a.jsx(ge,{name:"delayMessage",label:d("evolutionBot.form.delayMessage.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ge,{name:"unknownMessage",label:d("evolutionBot.form.unknownMessage.label"),children:a.jsx(X,{})}),a.jsx(De,{name:"listeningFromMe",label:d("evolutionBot.form.listeningFromMe.label"),reverse:!0}),a.jsx(De,{name:"stopBotFromMe",label:d("evolutionBot.form.stopBotFromMe.label"),reverse:!0}),a.jsx(De,{name:"keepOpen",label:d("evolutionBot.form.keepOpen.label"),reverse:!0}),a.jsx(ge,{name:"debounceTime",label:d("evolutionBot.form.debounceTime.label"),children:a.jsx(X,{type:"number"})}),a.jsx(De,{name:"splitMessages",label:d("evolutionBot.form.splitMessages.label"),reverse:!0}),f.watch("splitMessages")&&a.jsx(ge,{name:"timePerChar",label:d("evolutionBot.form.timePerChar.label"),children:a.jsx(X,{type:"number"})})]}),s&&a.jsx(Kt,{children:a.jsx(q,{disabled:o,type:"submit",children:d(o?"evolutionBot.button.saving":"evolutionBot.button.save")})}),!s&&a.jsxs("div",{children:[a.jsx(HI,{evolutionBotId:r}),a.jsxs("div",{className:"mt-5 flex items-center gap-3",children:[a.jsxs(gt,{open:l,onOpenChange:u,children:[a.jsx(rn,{asChild:!0,children:a.jsx(q,{variant:"destructive",size:"sm",children:d("dify.button.delete")})}),a.jsx(pt,{children:a.jsxs(ht,{children:[a.jsx(bt,{children:d("modal.delete.title")}),a.jsx(kr,{children:d("modal.delete.messageSingle")}),a.jsxs(Kt,{children:[a.jsx(q,{size:"sm",variant:"outline",onClick:()=>u(!1),children:d("button.cancel")}),a.jsx(q,{variant:"destructive",onClick:n,children:d("button.delete")})]})]})})]}),a.jsx(q,{disabled:o,type:"submit",children:d(o?"evolutionBot.button.saving":"evolutionBot.button.update")})]})]})]})})}function Wne({resetTable:e}){const{t}=Fe(),{instance:n}=dt(),[r,s]=y.useState(!1),[o,l]=y.useState(!1),{createEvolutionBot:u}=jm(),d=async f=>{try{if(!n||!n.name)throw new Error("instance not found");s(!0);const h={enabled:f.enabled,description:f.description,apiUrl:f.apiUrl,apiKey:f.apiKey,triggerType:f.triggerType,triggerOperator:f.triggerOperator||"",triggerValue:f.triggerValue||"",expire:f.expire||0,keywordFinish:f.keywordFinish||"",delayMessage:f.delayMessage||0,unknownMessage:f.unknownMessage||"",listeningFromMe:f.listeningFromMe||!1,stopBotFromMe:f.stopBotFromMe||!1,keepOpen:f.keepOpen||!1,debounceTime:f.debounceTime||0,splitMessages:f.splitMessages||!1,timePerChar:f.timePerChar?f.timePerChar:0};await u({instanceName:n.name,token:n.token,data:h}),re.success(t("evolutionBot.toast.success.create")),l(!1),e()}catch(h){console.error("Error:",h),re.error(`Error: ${h?.response?.data?.response?.message}`)}finally{s(!1)}};return a.jsxs(gt,{open:o,onOpenChange:l,children:[a.jsx(rn,{asChild:!0,children:a.jsxs(q,{size:"sm",children:[a.jsx(Yr,{size:16,className:"mr-1"}),a.jsx("span",{className:"hidden sm:inline",children:t("evolutionBot.button.create")})]})}),a.jsxs(pt,{className:"overflow-y-auto sm:max-h-[600px] sm:max-w-[740px]",children:[a.jsx(ht,{children:a.jsx(bt,{children:t("evolutionBot.form.title")})}),a.jsx(KI,{onSubmit:d,isModal:!0,isLoading:r})]})]})}const Gne=e=>["evolutionBot","getEvolutionBot",JSON.stringify(e)],Jne=async({instanceName:e,token:t,evolutionBotId:n})=>{const r=await je.get(`/evolutionBot/fetch/${n}/${e}`,{headers:{apiKey:t}});return Array.isArray(r.data)?r.data[0]:r.data},Qne=e=>{const{instanceName:t,token:n,evolutionBotId:r,...s}=e;return vt({...s,queryKey:Gne({instanceName:t}),queryFn:()=>Jne({instanceName:t,token:n,evolutionBotId:r}),enabled:!!t&&!!r&&(e.enabled??!0)})};function Yne({evolutionBotId:e,resetTable:t}){const{t:n}=Fe(),{instance:r}=dt(),s=jn(),[o,l]=y.useState(!1),{deleteEvolutionBot:u,updateEvolutionBot:d}=jm(),{data:f,isLoading:h}=Qne({instanceName:r?.name,evolutionBotId:e}),m=y.useMemo(()=>({enabled:f?.enabled??!0,description:f?.description??"",apiUrl:f?.apiUrl??"",apiKey:f?.apiKey??"",triggerType:f?.triggerType??"",triggerOperator:f?.triggerOperator??"",triggerValue:f?.triggerValue,expire:f?.expire??0,keywordFinish:f?.keywordFinish,delayMessage:f?.delayMessage??0,unknownMessage:f?.unknownMessage,listeningFromMe:f?.listeningFromMe,stopBotFromMe:!!f?.stopBotFromMe,keepOpen:!!f?.keepOpen,debounceTime:f?.debounceTime??0,splitMessages:f?.splitMessages??!1,timePerChar:f?.timePerChar?f?.timePerChar:0}),[f?.apiKey,f?.apiUrl,f?.debounceTime,f?.delayMessage,f?.description,f?.enabled,f?.expire,f?.keepOpen,f?.keywordFinish,f?.listeningFromMe,f?.stopBotFromMe,f?.triggerOperator,f?.triggerType,f?.triggerValue,f?.unknownMessage,f?.splitMessages,f?.timePerChar]),g=async b=>{try{if(r&&r.name&&e){const w={enabled:b.enabled,description:b.description,apiUrl:b.apiUrl,apiKey:b.apiKey,triggerType:b.triggerType,triggerOperator:b.triggerOperator||"",triggerValue:b.triggerValue||"",expire:b.expire||0,keywordFinish:b.keywordFinish||"",delayMessage:b.delayMessage||1e3,unknownMessage:b.unknownMessage||"",listeningFromMe:b.listeningFromMe||!1,stopBotFromMe:b.stopBotFromMe||!1,keepOpen:b.keepOpen||!1,debounceTime:b.debounceTime||0,splitMessages:b.splitMessages||!1,timePerChar:b.timePerChar?b.timePerChar:0};await d({instanceName:r.name,evolutionBotId:e,data:w}),re.success(n("evolutionBot.toast.success.update")),t(),s(`/manager/instance/${r.id}/evolutionBot/${e}`)}else console.error("Token not found")}catch(w){console.error("Error:",w),re.error(`Error: ${w?.response?.data?.response?.message}`)}},x=async()=>{try{r&&r.name&&e?(await u({instanceName:r.name,evolutionBotId:e}),re.success(n("evolutionBot.toast.success.delete")),l(!1),t(),s(`/manager/instance/${r.id}/evolutionBot`)):console.error("instance not found")}catch(b){console.error("Erro ao excluir evolutionBot:",b)}};return h?a.jsx(Vn,{}):a.jsx("div",{className:"m-4",children:a.jsx(KI,{initialData:m,onSubmit:g,evolutionBotId:e,handleDelete:x,isModal:!1,openDeletionDialog:o,setOpenDeletionDialog:l})})}function aE(){const{t:e}=Fe(),t=Ya("(min-width: 768px)"),{instance:n}=dt(),{evolutionBotId:r}=_s(),{data:s,isLoading:o,refetch:l,error:u}=qI({instanceName:n?.name}),d=jn(),f=m=>{n&&d(`/manager/instance/${n.id}/evolutionBot/${m}`)},h=()=>{l()};return a.jsx("main",{className:"pt-5",children:a.jsxs(sa,{error:u,name:"Evolution Bot",envVar:"EVOLUTION_BOT_ENABLED",children:[a.jsxs("div",{className:"mb-1 flex items-center justify-between",children:[a.jsx("h3",{className:"text-lg font-medium",children:e("evolutionBot.title")}),a.jsxs("div",{className:"flex items-center justify-end gap-2",children:[a.jsx(HI,{}),a.jsx(Bne,{}),a.jsx(Wne,{resetTable:h})]})]}),a.jsx(nn,{className:"my-4"}),a.jsxs(ri,{direction:t?"horizontal":"vertical",children:[a.jsx(Er,{defaultSize:r?35:100,className:"pr-4",children:a.jsx("div",{className:"flex flex-col gap-3",children:o?a.jsx(Vn,{}):a.jsx(a.Fragment,{children:s&&s.length>0&&Array.isArray(s)?s.map(m=>a.jsx(q,{className:"flex h-auto flex-col items-start justify-start",onClick:()=>f(`${m.id}`),variant:r===m.id?"secondary":"outline",children:a.jsx("h4",{className:"text-base",children:m.description||m.id})},m.id)):a.jsx(q,{variant:"link",children:e("evolutionBot.table.none")})})})}),r&&a.jsxs(a.Fragment,{children:[a.jsx(si,{withHandle:!0,className:"border border-border"}),a.jsx(Er,{children:a.jsx(Yne,{evolutionBotId:r,resetTable:h})})]})]})]})})}const Zne=e=>["flowise","findFlowise",JSON.stringify(e)],Xne=async({instanceName:e,token:t})=>(await je.get(`/flowise/find/${e}`,{headers:{apiKey:t}})).data,WI=e=>{const{instanceName:t,token:n,...r}=e;return vt({...r,queryKey:Zne({instanceName:t}),queryFn:()=>Xne({instanceName:t,token:n}),enabled:!!t&&(e.enabled??!0)})},ere=e=>["flowise","fetchDefaultSettings",JSON.stringify(e)],tre=async({instanceName:e,token:t})=>{const n=await je.get(`/flowise/fetchSettings/${e}`,{headers:{apiKey:t}});return Array.isArray(n.data)?n.data[0]:n.data},nre=e=>{const{instanceName:t,token:n,...r}=e;return vt({...r,queryKey:ere({instanceName:t}),queryFn:()=>tre({instanceName:t,token:n}),enabled:!!t&&(e.enabled??!0)})},rre=async({instanceName:e,token:t,data:n})=>(await je.post(`/flowise/create/${e}`,n,{headers:{apikey:t}})).data,sre=async({instanceName:e,flowiseId:t,data:n})=>(await je.put(`/flowise/update/${t}/${e}`,n)).data,are=async({instanceName:e,flowiseId:t})=>(await je.delete(`/flowise/delete/${t}/${e}`)).data,ore=async({instanceName:e,token:t,remoteJid:n,status:r})=>(await je.post(`/flowise/changeStatus/${e}`,{remoteJid:n,status:r},{headers:{apikey:t}})).data,ire=async({instanceName:e,token:t,data:n})=>(await je.post(`/flowise/settings/${e}`,n,{headers:{apikey:t}})).data;function km(){const e=it(ire,{invalidateKeys:[["flowise","fetchDefaultSettings"]]}),t=it(ore,{invalidateKeys:[["flowise","getFlowise"],["flowise","fetchSessions"]]}),n=it(are,{invalidateKeys:[["flowise","getFlowise"],["flowise","findFlowise"],["flowise","fetchSessions"]]}),r=it(sre,{invalidateKeys:[["flowise","getFlowise"],["flowise","findFlowise"],["flowise","fetchSessions"]]}),s=it(rre,{invalidateKeys:[["flowise","findFlowise"]]});return{setDefaultSettingsFlowise:e,changeStatusFlowise:t,deleteFlowise:n,updateFlowise:r,createFlowise:s}}const lre=hn({expire:ye(),keywordFinish:ye(),delayMessage:ye(),unknownMessage:ye(),listeningFromMe:Re(),stopBotFromMe:Re(),keepOpen:Re(),debounceTime:ye(),ignoreJids:ra(ye()).default([]),flowiseIdFallback:kc([jc(),ye()]).optional(),splitMessages:Re(),timePerChar:ye()});function cre(){const{t:e}=Fe(),{instance:t}=dt(),{setDefaultSettingsFlowise:n}=km(),[r,s]=y.useState(!1),{data:o,refetch:l}=nre({instanceName:t?.name,enabled:r}),{data:u,refetch:d}=WI({instanceName:t?.name,enabled:r}),f=fn({resolver:pn(lre),defaultValues:{expire:"0",keywordFinish:e("flowise.form.examples.keywordFinish"),delayMessage:"1000",unknownMessage:e("flowise.form.examples.unknownMessage"),listeningFromMe:!1,stopBotFromMe:!1,keepOpen:!1,debounceTime:"0",ignoreJids:[],flowiseIdFallback:void 0,splitMessages:!1,timePerChar:"0"}});y.useEffect(()=>{o&&f.reset({expire:o?.expire?o.expire.toString():"0",keywordFinish:o.keywordFinish,delayMessage:o.delayMessage?o.delayMessage.toString():"0",unknownMessage:o.unknownMessage,listeningFromMe:o.listeningFromMe,stopBotFromMe:o.stopBotFromMe,keepOpen:o.keepOpen,debounceTime:o.debounceTime?o.debounceTime.toString():"0",ignoreJids:o.ignoreJids,flowiseIdFallback:o.flowiseIdFallback,splitMessages:o.splitMessages,timePerChar:o.timePerChar?o.timePerChar.toString():"0"})},[o]);const h=async g=>{try{if(!t||!t.name)throw new Error("instance not found.");const x={expire:parseInt(g.expire),keywordFinish:g.keywordFinish,delayMessage:parseInt(g.delayMessage),unknownMessage:g.unknownMessage,listeningFromMe:g.listeningFromMe,stopBotFromMe:g.stopBotFromMe,keepOpen:g.keepOpen,debounceTime:parseInt(g.debounceTime),flowiseIdFallback:g.flowiseIdFallback||void 0,ignoreJids:g.ignoreJids,splitMessages:g.splitMessages,timePerChar:parseInt(g.timePerChar)};await n({instanceName:t.name,token:t.token,data:x}),re.success(e("flowise.toast.defaultSettings.success"))}catch(x){console.error("Error:",x),re.error(`Error: ${x?.response?.data?.response?.message}`)}};function m(){l(),d()}return a.jsxs(gt,{open:r,onOpenChange:s,children:[a.jsx(rn,{asChild:!0,children:a.jsxs(q,{variant:"secondary",size:"sm",children:[a.jsx(Go,{size:16,className:"mr-1"}),a.jsx("span",{className:"hidden sm:inline",children:e("flowise.defaultSettings")})]})}),a.jsxs(pt,{className:"overflow-y-auto sm:max-h-[600px] sm:max-w-[740px]",onCloseAutoFocus:m,children:[a.jsx(ht,{children:a.jsx(bt,{children:e("flowise.defaultSettings")})}),a.jsx(hr,{...f,children:a.jsxs("form",{className:"w-full space-y-6",onSubmit:f.handleSubmit(h),children:[a.jsx("div",{children:a.jsxs("div",{className:"space-y-4",children:[a.jsx(dn,{name:"flowiseIdFallback",label:e("flowise.form.flowiseIdFallback.label"),options:u?.filter(g=>!!g.id).map(g=>({label:g.description,value:g.id}))??[]}),a.jsx(ge,{name:"expire",label:e("flowise.form.expire.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ge,{name:"keywordFinish",label:e("flowise.form.keywordFinish.label"),children:a.jsx(X,{})}),a.jsx(ge,{name:"delayMessage",label:e("flowise.form.delayMessage.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ge,{name:"unknownMessage",label:e("flowise.form.unknownMessage.label"),children:a.jsx(X,{})}),a.jsx(De,{name:"listeningFromMe",label:e("flowise.form.listeningFromMe.label"),reverse:!0}),a.jsx(De,{name:"stopBotFromMe",label:e("flowise.form.stopBotFromMe.label"),reverse:!0}),a.jsx(De,{name:"keepOpen",label:e("flowise.form.keepOpen.label"),reverse:!0}),a.jsx(ge,{name:"debounceTime",label:e("flowise.form.debounceTime.label"),children:a.jsx(X,{type:"number"})}),a.jsx(De,{name:"splitMessages",label:e("flowise.form.splitMessages.label"),reverse:!0}),f.watch("splitMessages")&&a.jsx(ge,{name:"timePerChar",label:e("flowise.form.timePerChar.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ti,{name:"ignoreJids",label:e("flowise.form.ignoreJids.label"),placeholder:e("flowise.form.ignoreJids.placeholder")})]})}),a.jsx(Kt,{children:a.jsx(q,{type:"submit",children:e("flowise.button.save")})})]})})]})]})}const ure=e=>["flowise","fetchSessions",JSON.stringify(e)],dre=async({instanceName:e,flowiseId:t,token:n})=>(await je.get(`/flowise/fetchSessions/${t}/${e}`,{headers:{apiKey:n}})).data,fre=e=>{const{instanceName:t,token:n,flowiseId:r,...s}=e;return vt({...s,queryKey:ure({instanceName:t}),queryFn:()=>dre({instanceName:t,token:n,flowiseId:r}),enabled:!!t&&!!r&&(e.enabled??!0)})},cp={name:"",number:"",status:"all",time:"all",customCondition:"more",customValue:"",customUnit:"minutes"};function pre(e,t){const n=parseInt(e);return!n||isNaN(n)||n<=0?null:t==="hours"?n*60:t==="days"?n*1440:n}function hre(e,t){if(t.time==="all")return!0;const n=(Date.now()-new Date(e).getTime())/6e4;if(t.time==="custom"){const r=pre(t.customValue,t.customUnit);return r===null?!0:t.customCondition==="more"?n>r:n<=r}if(t.time.startsWith(">")){const r=parseInt(t.time.slice(1));return n>r}return n<=parseInt(t.time)}function GI({flowiseId:e}){const{t}=Fe(),{instance:n}=dt(),{changeStatusFlowise:r}=km(),[s,o]=y.useState(!1),[l,u]=y.useState([]),[d,f]=y.useState({}),[h,m]=y.useState(cp),[g,x]=y.useState(cp),[b,w]=y.useState(9),[C,k]=y.useState(9),[N,T]=y.useState("opened"),[_,I]=y.useState(!1),[M,A]=y.useState(""),[O,F]=y.useState(""),[z,Z]=y.useState(!1),{data:B,refetch:ce}=fre({instanceName:n?.name,flowiseId:e,enabled:s}),H=y.useMemo(()=>{const j=B??[],P=g.name.trim().toLowerCase(),pe=g.number.trim();return j.filter(xe=>!(P&&!xe.pushName?.toLowerCase().includes(P)||pe&&!xe.remoteJid.includes(pe)||g.status!=="all"&&xe.status!==g.status||!hre(xe.updatedAt,g)))},[B,g]),oe=H.slice(0,C),Q=y.useMemo(()=>Object.keys(d).filter(j=>d[j]).map(j=>oe[Number(j)]?.remoteJid).filter(Boolean),[d,oe]);y.useEffect(()=>{k(b),f({})},[g,b]);const ne=()=>{ce()},V=()=>{x(h)},K=()=>{m(cp),x(cp)},U=async(j,P)=>{try{if(!n)return;await r({instanceName:n.name,token:n.token,remoteJid:j,status:P}),re.success(t("flowise.toast.success.status")),ne()}catch(pe){console.error("Error:",pe),re.error(`Error : ${pe?.response?.data?.response?.message}`)}},D=async()=>{if(Q.length===0){re.error(t("sessions.mass.noneSelected"));return}try{if(!n)return;await Promise.all(Q.map(j=>r({instanceName:n.name,token:n.token,remoteJid:j,status:N}))),re.success(t("sessions.mass.success")),f({}),ne()}catch(j){console.error(j),re.error(j?.response?.data?.response?.message??t("sessions.mass.error"))}},J=j=>{A(j),F(""),I(!0)},ae=async()=>{if(!O.trim()){re.error(t("sessions.send.empty"));return}try{if(!n)return;Z(!0),await je.post(`/message/sendText/${n.name}`,{number:M,text:O},{headers:{apikey:n.token}}),re.success(t("sessions.send.success")),I(!1),F(""),A("")}catch(j){console.error("Error:",j),re.error(j?.response?.data?.response?.message??j?.message??t("sessions.send.error"))}finally{Z(!1)}},ee=[{id:"select",header:({table:j})=>a.jsx(Xr,{checked:j.getIsAllPageRowsSelected()||j.getIsSomePageRowsSelected()&&"indeterminate",onCheckedChange:P=>j.toggleAllPageRowsSelected(!!P),"aria-label":t("sessions.mass.selectAll")}),cell:({row:j})=>a.jsx(Xr,{checked:j.getIsSelected(),onCheckedChange:P=>j.toggleSelected(!!P),"aria-label":t("sessions.mass.selectAll")}),enableSorting:!1},{accessorKey:"remoteJid",header:()=>a.jsx("div",{className:"text-center",children:t("flowise.sessions.table.remoteJid")}),cell:({row:j})=>a.jsx("div",{children:j.getValue("remoteJid")})},{accessorKey:"pushName",header:()=>a.jsx("div",{className:"text-center",children:t("flowise.sessions.table.pushName")}),cell:({row:j})=>a.jsx("div",{children:j.getValue("pushName")})},{accessorKey:"sessionId",header:()=>a.jsx("div",{className:"text-center",children:t("flowise.sessions.table.sessionId")}),cell:({row:j})=>a.jsx("div",{children:j.getValue("sessionId")})},{accessorKey:"status",header:()=>a.jsx("div",{className:"text-center",children:t("flowise.sessions.table.status")}),cell:({row:j})=>a.jsx("div",{children:j.getValue("status")})},{id:"actions",enableHiding:!1,cell:({row:j})=>{const P=j.original;return a.jsxs(ms,{children:[a.jsx(gs,{asChild:!0,children:a.jsxs(q,{variant:"ghost",size:"icon",children:[a.jsx("span",{className:"sr-only",children:t("flowise.sessions.table.actions.title")}),a.jsx(Jo,{className:"h-4 w-4"})]})}),a.jsxs(vs,{align:"end",children:[a.jsx(Qo,{children:t("flowise.sessions.table.actions.title")}),a.jsx(Yo,{}),P.status!=="opened"&&a.jsxs(St,{onClick:()=>U(P.remoteJid,"opened"),children:[a.jsx(tl,{className:"mr-2 h-4 w-4"}),t("flowise.sessions.table.actions.open")]}),P.status!=="paused"&&P.status!=="closed"&&a.jsxs(St,{onClick:()=>U(P.remoteJid,"paused"),children:[a.jsx(el,{className:"mr-2 h-4 w-4"}),t("flowise.sessions.table.actions.pause")]}),P.status!=="closed"&&a.jsxs(St,{onClick:()=>U(P.remoteJid,"closed"),children:[a.jsx(Qi,{className:"mr-2 h-4 w-4"}),t("flowise.sessions.table.actions.close")]}),a.jsxs(St,{onClick:()=>J(P.remoteJid),children:[a.jsx(Xi,{className:"mr-2 h-4 w-4"}),t("sessions.actions.sendMessage")]}),a.jsxs(St,{onClick:()=>U(P.remoteJid,"delete"),children:[a.jsx(Yi,{className:"mr-2 h-4 w-4"}),t("flowise.sessions.table.actions.delete")]})]})]})}}],ie=["all","5","10","15","20","30","60",">60",">120",">300",">1440","custom"],ue=["all","opened","paused","closed"];return a.jsxs(gt,{open:s,onOpenChange:o,children:[a.jsx(rn,{asChild:!0,children:a.jsxs(q,{variant:"secondary",size:"sm",children:[a.jsx(Zi,{size:16,className:"mr-1"}),a.jsx("span",{className:"hidden md:inline",children:t("flowise.sessions.label")})]})}),a.jsxs(pt,{className:"max-w-7xl h-[85vh] flex flex-col overflow-hidden",children:[a.jsx(ht,{children:a.jsx(bt,{children:t("flowise.sessions.label")})}),a.jsxs("div",{className:"flex-1 space-y-4 overflow-y-auto pr-2",children:[a.jsxs(Bn,{children:[a.jsx(Yn,{children:a.jsx(Zn,{className:"text-base",children:t("sessions.filters.title")})}),a.jsxs(zn,{className:"space-y-4",children:[a.jsxs("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-4",children:[a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{children:t("sessions.filters.name")}),a.jsx(X,{placeholder:t("sessions.filters.namePlaceholder"),value:h.name,onChange:j=>m(P=>({...P,name:j.target.value}))})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{children:t("sessions.filters.number")}),a.jsx(X,{placeholder:t("sessions.filters.numberPlaceholder"),value:h.number,onChange:j=>m(P=>({...P,number:j.target.value}))})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{children:t("sessions.filters.status")}),a.jsxs(Mt,{value:h.status,onValueChange:j=>m(P=>({...P,status:j})),children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsx(Pt,{children:ue.map(j=>a.jsx(we,{value:j,children:t(`sessions.filters.statusOptions.${j}`)},j))})]})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{children:t("sessions.filters.time")}),a.jsxs(Mt,{value:h.time,onValueChange:j=>m(P=>({...P,time:j})),children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsx(Pt,{children:ie.map(j=>a.jsx(we,{value:j,children:t(`sessions.filters.timeOptions.${j}`)},j))})]})]})]}),h.time==="custom"&&a.jsxs("div",{className:"grid grid-cols-1 gap-2 md:grid-cols-3",children:[a.jsxs(Mt,{value:h.customCondition,onValueChange:j=>m(P=>({...P,customCondition:j})),children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsxs(Pt,{children:[a.jsx(we,{value:"more",children:t("sessions.filters.custom.more")}),a.jsx(we,{value:"less",children:t("sessions.filters.custom.less")})]})]}),a.jsx(X,{type:"number",min:1,placeholder:t("sessions.filters.custom.valuePlaceholder"),value:h.customValue,onChange:j=>m(P=>({...P,customValue:j.target.value}))}),a.jsxs(Mt,{value:h.customUnit,onValueChange:j=>m(P=>({...P,customUnit:j})),children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsxs(Pt,{children:[a.jsx(we,{value:"minutes",children:t("sessions.filters.custom.minutes")}),a.jsx(we,{value:"hours",children:t("sessions.filters.custom.hours")}),a.jsx(we,{value:"days",children:t("sessions.filters.custom.days")})]})]})]}),a.jsxs("div",{className:"flex flex-wrap gap-2",children:[a.jsx(q,{onClick:V,size:"sm",children:t("sessions.filters.apply")}),a.jsx(q,{onClick:K,size:"sm",variant:"outline",children:t("sessions.filters.clear")}),a.jsxs(q,{onClick:ne,size:"sm",variant:"outline",children:[a.jsx(nl,{size:14,className:"mr-1"}),t("button.refresh")]})]})]})]}),Q.length>0&&a.jsxs(Bn,{children:[a.jsx(Yn,{children:a.jsx(Zn,{className:"text-base",children:t("sessions.mass.title")})}),a.jsx(zn,{children:a.jsxs("div",{className:"flex flex-wrap items-end gap-3",children:[a.jsx("div",{className:"text-sm text-muted-foreground",children:t("sessions.mass.selected",{count:Q.length})}),a.jsxs("div",{className:"flex-1 min-w-[180px] space-y-1",children:[a.jsx(Ue,{children:t("sessions.mass.newStatus")}),a.jsxs(Mt,{value:N,onValueChange:T,children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsxs(Pt,{children:[a.jsx(we,{value:"opened",children:t("flowise.sessions.table.actions.open")}),a.jsx(we,{value:"paused",children:t("flowise.sessions.table.actions.pause")}),a.jsx(we,{value:"closed",children:t("flowise.sessions.table.actions.close")}),a.jsx(we,{value:"delete",children:t("flowise.sessions.table.actions.delete")})]})]})]}),a.jsx(q,{onClick:D,size:"sm",children:t("sessions.mass.apply")})]})})]}),a.jsx(ai,{columns:ee,data:oe,onSortingChange:u,state:{sorting:l,rowSelection:d},onRowSelectionChange:f,enableRowSelection:!0,getRowId:(j,P)=>String(P),noResultsMessage:t("sessions.empty")}),a.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3 px-1 text-sm text-muted-foreground",children:[a.jsx("span",{children:t("sessions.pagination.showing",{shown:oe.length,total:H.length})}),a.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[a.jsx(Ue,{htmlFor:"per-page",className:"text-xs",children:t("sessions.pagination.perPage")}),a.jsxs(Mt,{value:String(b),onValueChange:j=>w(parseInt(j)),children:[a.jsx(Rt,{id:"per-page",className:"h-8 w-20",children:a.jsx(_t,{})}),a.jsxs(Pt,{children:[a.jsx(we,{value:"9",children:"9"}),a.jsx(we,{value:"25",children:"25"}),a.jsx(we,{value:"50",children:"50"}),a.jsx(we,{value:"100",children:"100"})]})]}),Ck(j=>Math.min(j+b,H.length)),children:t("sessions.pagination.showMore")}),Ck(H.length),children:t("sessions.pagination.showAll")}),C>b&&a.jsx(q,{size:"sm",variant:"outline",onClick:()=>k(b),children:t("sessions.pagination.showLess")})]})]})]}),a.jsx(gt,{open:_,onOpenChange:j=>!z&&I(j),children:a.jsxs(pt,{className:"sm:max-w-md",children:[a.jsx(ht,{children:a.jsx(bt,{children:t("sessions.send.title")})}),a.jsxs("div",{className:"space-y-3",children:[a.jsxs("div",{className:"space-y-1",children:[a.jsx(Ue,{children:t("sessions.send.to")}),a.jsx(X,{value:M,disabled:!0})]}),a.jsxs("div",{className:"space-y-1",children:[a.jsx(Ue,{children:t("sessions.send.messagePlaceholder")}),a.jsx(Zo,{rows:4,placeholder:t("sessions.send.messagePlaceholder"),value:O,onChange:j=>F(j.target.value)})]})]}),a.jsxs(Kt,{children:[a.jsx(q,{variant:"outline",onClick:()=>I(!1),disabled:z,children:t("button.cancel")}),a.jsx(q,{onClick:ae,disabled:z,children:t(z?"sessions.send.sending":"sessions.send.send")})]})]})})]})]})}const mre=hn({enabled:Re(),description:ye(),apiUrl:ye(),apiKey:ye().optional(),triggerType:ye(),triggerOperator:ye().optional(),triggerValue:ye().optional(),expire:Vt.number().optional(),keywordFinish:ye().optional(),delayMessage:Vt.number().optional(),unknownMessage:ye().optional(),listeningFromMe:Re().optional(),stopBotFromMe:Re().optional(),keepOpen:Re().optional(),debounceTime:Vt.number().optional(),splitMessages:Re().optional(),timePerChar:Vt.number().optional()});function JI({initialData:e,onSubmit:t,handleDelete:n,flowiseId:r,isModal:s=!1,isLoading:o=!1,openDeletionDialog:l=!1,setOpenDeletionDialog:u=()=>{}}){const{t:d}=Fe(),f=fn({resolver:pn(mre),defaultValues:e||{enabled:!0,description:"",apiUrl:"",apiKey:"",triggerType:"keyword",triggerOperator:"contains",triggerValue:"",expire:0,keywordFinish:"",delayMessage:0,unknownMessage:"",listeningFromMe:!1,stopBotFromMe:!1,keepOpen:!1,debounceTime:0,splitMessages:!1,timePerChar:0}}),h=f.watch("triggerType");return a.jsx(hr,{...f,children:a.jsxs("form",{onSubmit:f.handleSubmit(t),className:"w-full space-y-6",children:[a.jsxs("div",{className:"space-y-4",children:[a.jsx(De,{name:"enabled",label:d("flowise.form.enabled.label"),reverse:!0}),a.jsx(ge,{name:"description",label:d("flowise.form.description.label"),required:!0,children:a.jsx(X,{})}),a.jsxs("div",{className:"flex flex-col",children:[a.jsx("h3",{className:"my-4 text-lg font-medium",children:d("flowise.form.flowiseSettings.label")}),a.jsx(nn,{})]}),a.jsx(ge,{name:"apiUrl",label:d("flowise.form.apiUrl.label"),required:!0,children:a.jsx(X,{})}),a.jsx(ge,{name:"apiKey",label:d("flowise.form.apiKey.label"),children:a.jsx(X,{type:"password"})}),a.jsxs("div",{className:"flex flex-col",children:[a.jsx("h3",{className:"my-4 text-lg font-medium",children:d("flowise.form.triggerSettings.label")}),a.jsx(nn,{})]}),a.jsx(dn,{name:"triggerType",label:d("flowise.form.triggerType.label"),options:[{label:d("flowise.form.triggerType.keyword"),value:"keyword"},{label:d("flowise.form.triggerType.all"),value:"all"},{label:d("flowise.form.triggerType.advanced"),value:"advanced"},{label:d("flowise.form.triggerType.none"),value:"none"}]}),h==="keyword"&&a.jsxs(a.Fragment,{children:[a.jsx(dn,{name:"triggerOperator",label:d("flowise.form.triggerOperator.label"),options:[{label:d("flowise.form.triggerOperator.contains"),value:"contains"},{label:d("flowise.form.triggerOperator.equals"),value:"equals"},{label:d("flowise.form.triggerOperator.startsWith"),value:"startsWith"},{label:d("flowise.form.triggerOperator.endsWith"),value:"endsWith"},{label:d("flowise.form.triggerOperator.regex"),value:"regex"}]}),a.jsx(ge,{name:"triggerValue",label:d("flowise.form.triggerValue.label"),children:a.jsx(X,{})})]}),h==="advanced"&&a.jsx(ge,{name:"triggerValue",label:d("flowise.form.triggerConditions.label"),children:a.jsx(X,{})}),a.jsxs("div",{className:"flex flex-col",children:[a.jsx("h3",{className:"my-4 text-lg font-medium",children:d("flowise.form.generalSettings.label")}),a.jsx(nn,{})]}),a.jsx(ge,{name:"expire",label:d("flowise.form.expire.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ge,{name:"keywordFinish",label:d("flowise.form.keywordFinish.label"),children:a.jsx(X,{})}),a.jsx(ge,{name:"delayMessage",label:d("flowise.form.delayMessage.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ge,{name:"unknownMessage",label:d("flowise.form.unknownMessage.label"),children:a.jsx(X,{})}),a.jsx(De,{name:"listeningFromMe",label:d("flowise.form.listeningFromMe.label"),reverse:!0}),a.jsx(De,{name:"stopBotFromMe",label:d("flowise.form.stopBotFromMe.label"),reverse:!0}),a.jsx(De,{name:"keepOpen",label:d("flowise.form.keepOpen.label"),reverse:!0}),a.jsx(ge,{name:"debounceTime",label:d("flowise.form.debounceTime.label"),children:a.jsx(X,{type:"number"})}),a.jsx(De,{name:"splitMessages",label:d("flowise.form.splitMessages.label"),reverse:!0}),f.watch("splitMessages")&&a.jsx(ge,{name:"timePerChar",label:d("flowise.form.timePerChar.label"),children:a.jsx(X,{type:"number"})})]}),s&&a.jsx(Kt,{children:a.jsx(q,{disabled:o,type:"submit",children:d(o?"flowise.button.saving":"flowise.button.save")})}),!s&&a.jsxs("div",{children:[a.jsx(GI,{flowiseId:r}),a.jsxs("div",{className:"mt-5 flex items-center gap-3",children:[a.jsxs(gt,{open:l,onOpenChange:u,children:[a.jsx(rn,{asChild:!0,children:a.jsx(q,{variant:"destructive",size:"sm",children:d("dify.button.delete")})}),a.jsx(pt,{children:a.jsxs(ht,{children:[a.jsx(bt,{children:d("modal.delete.title")}),a.jsx(kr,{children:d("modal.delete.messageSingle")}),a.jsxs(Kt,{children:[a.jsx(q,{size:"sm",variant:"outline",onClick:()=>u(!1),children:d("button.cancel")}),a.jsx(q,{variant:"destructive",onClick:n,children:d("button.delete")})]})]})})]}),a.jsx(q,{disabled:o,type:"submit",children:d(o?"flowise.button.saving":"flowise.button.update")})]})]})]})})}function gre({resetTable:e}){const{t}=Fe(),{instance:n}=dt(),{createFlowise:r}=km(),[s,o]=y.useState(!1),[l,u]=y.useState(!1),d=async f=>{try{if(!n||!n.name)throw new Error("instance not found");o(!0);const h={enabled:f.enabled,description:f.description,apiUrl:f.apiUrl,apiKey:f.apiKey,triggerType:f.triggerType,triggerOperator:f.triggerOperator||"",triggerValue:f.triggerValue||"",expire:f.expire||0,keywordFinish:f.keywordFinish||"",delayMessage:f.delayMessage||0,unknownMessage:f.unknownMessage||"",listeningFromMe:f.listeningFromMe||!1,stopBotFromMe:f.stopBotFromMe||!1,keepOpen:f.keepOpen||!1,debounceTime:f.debounceTime||0,splitMessages:f.splitMessages||!1,timePerChar:f.timePerChar||0};await r({instanceName:n.name,token:n.token,data:h}),re.success(t("flowise.toast.success.create")),u(!1),e()}catch(h){console.error("Error:",h),re.error(`Error: ${h?.response?.data?.response?.message}`)}finally{o(!1)}};return a.jsxs(gt,{open:l,onOpenChange:u,children:[a.jsx(rn,{asChild:!0,children:a.jsxs(q,{size:"sm",children:[a.jsx(Yr,{size:16,className:"mr-1"}),a.jsx("span",{className:"hidden sm:inline",children:t("flowise.button.create")})]})}),a.jsxs(pt,{className:"overflow-y-auto sm:max-h-[600px] sm:max-w-[740px]",children:[a.jsx(ht,{children:a.jsx(bt,{children:t("flowise.form.title")})}),a.jsx(JI,{onSubmit:d,isModal:!0,isLoading:s})]})]})}const vre=e=>["flowise","getFlowise",JSON.stringify(e)],yre=async({instanceName:e,token:t,flowiseId:n})=>{const r=await je.get(`/flowise/fetch/${n}/${e}`,{headers:{apiKey:t}});return Array.isArray(r.data)?r.data[0]:r.data},bre=e=>{const{instanceName:t,token:n,flowiseId:r,...s}=e;return vt({...s,queryKey:vre({instanceName:t}),queryFn:()=>yre({instanceName:t,token:n,flowiseId:r}),enabled:!!t&&!!r&&(e.enabled??!0)})};function xre({flowiseId:e,resetTable:t}){const{t:n}=Fe(),{instance:r}=dt(),s=jn(),[o,l]=y.useState(!1),{deleteFlowise:u,updateFlowise:d}=km(),{data:f,isLoading:h}=bre({instanceName:r?.name,flowiseId:e}),m=y.useMemo(()=>({enabled:f?.enabled??!0,description:f?.description??"",apiUrl:f?.apiUrl??"",apiKey:f?.apiKey??"",triggerType:f?.triggerType??"",triggerOperator:f?.triggerOperator??"",triggerValue:f?.triggerValue,expire:f?.expire??0,keywordFinish:f?.keywordFinish,delayMessage:f?.delayMessage??0,unknownMessage:f?.unknownMessage,listeningFromMe:f?.listeningFromMe,stopBotFromMe:f?.stopBotFromMe,keepOpen:f?.keepOpen,debounceTime:f?.debounceTime??0,splitMessages:f?.splitMessages??!1,timePerChar:f?.timePerChar??0}),[f?.apiKey,f?.apiUrl,f?.debounceTime,f?.delayMessage,f?.description,f?.enabled,f?.expire,f?.keepOpen,f?.keywordFinish,f?.listeningFromMe,f?.stopBotFromMe,f?.triggerOperator,f?.triggerType,f?.triggerValue,f?.unknownMessage,f?.splitMessages,f?.timePerChar]),g=async b=>{try{if(r&&r.name&&e){const w={enabled:b.enabled,description:b.description,apiUrl:b.apiUrl,apiKey:b.apiKey,triggerType:b.triggerType,triggerOperator:b.triggerOperator||"",triggerValue:b.triggerValue||"",expire:b.expire||0,keywordFinish:b.keywordFinish||"",delayMessage:b.delayMessage||1e3,unknownMessage:b.unknownMessage||"",listeningFromMe:b.listeningFromMe||!1,stopBotFromMe:b.stopBotFromMe||!1,keepOpen:b.keepOpen||!1,debounceTime:b.debounceTime||0,splitMessages:b.splitMessages||!1,timePerChar:b.timePerChar||0};await d({instanceName:r.name,flowiseId:e,data:w}),re.success(n("flowise.toast.success.update")),t(),s(`/manager/instance/${r.id}/flowise/${e}`)}else console.error("Token not found")}catch(w){console.error("Error:",w),re.error(`Error: ${w?.response?.data?.response?.message}`)}},x=async()=>{try{r&&r.name&&e?(await u({instanceName:r.name,flowiseId:e}),re.success(n("flowise.toast.success.delete")),l(!1),t(),s(`/manager/instance/${r.id}/flowise`)):console.error("instance not found")}catch(b){console.error("Erro ao excluir dify:",b)}};return h?a.jsx(Vn,{}):a.jsx("div",{className:"m-4",children:a.jsx(JI,{initialData:m,onSubmit:g,flowiseId:e,handleDelete:x,isModal:!1,isLoading:h,openDeletionDialog:o,setOpenDeletionDialog:l})})}function oE(){const{t:e}=Fe(),t=Ya("(min-width: 768px)"),{instance:n}=dt(),{flowiseId:r}=_s(),{data:s,isLoading:o,refetch:l,error:u}=WI({instanceName:n?.name}),d=jn(),f=m=>{n&&d(`/manager/instance/${n.id}/flowise/${m}`)},h=()=>{l()};return a.jsx("main",{className:"pt-5",children:a.jsxs(sa,{error:u,name:"Flowise",envVar:"FLOWISE_ENABLED",children:[a.jsxs("div",{className:"mb-1 flex items-center justify-between",children:[a.jsx("h3",{className:"text-lg font-medium",children:e("flowise.title")}),a.jsxs("div",{className:"flex items-center justify-end gap-2",children:[a.jsx(GI,{}),a.jsx(cre,{}),a.jsx(gre,{resetTable:h})]})]}),a.jsx(nn,{className:"my-4"}),a.jsxs(ri,{direction:t?"horizontal":"vertical",children:[a.jsx(Er,{defaultSize:r?35:100,className:"pr-4",children:a.jsx("div",{className:"flex flex-col gap-3",children:o?a.jsx(Vn,{}):a.jsx(a.Fragment,{children:s&&s.length>0&&Array.isArray(s)?s.map(m=>a.jsx(q,{className:"flex h-auto flex-col items-start justify-start",onClick:()=>f(`${m.id}`),variant:r===m.id?"secondary":"outline",children:a.jsx("h4",{className:"text-base",children:m.description||m.id})},m.id)):a.jsx(q,{variant:"link",children:e("flowise.table.none")})})})}),r&&a.jsxs(a.Fragment,{children:[a.jsx(si,{withHandle:!0,className:"border border-border"}),a.jsx(Er,{children:a.jsx(xre,{flowiseId:r,resetTable:h})})]})]})]})})}const wre=e=>["n8n","fetchN8n",JSON.stringify(e)],Sre=async({instanceName:e,token:t})=>(await je.get(`/n8n/find/${e}`,{headers:{apikey:t}})).data,QI=e=>{const{instanceName:t,token:n,...r}=e;return vt({...r,queryKey:wre({instanceName:t,token:n}),queryFn:()=>Sre({instanceName:t,token:n}),enabled:!!t&&(e.enabled??!0)})},Cre=async({instanceName:e,token:t,data:n})=>(await je.post(`/n8n/create/${e}`,n,{headers:{apikey:t}})).data,jre=async({instanceName:e,n8nId:t,data:n})=>(await je.put(`/n8n/update/${t}/${e}`,n)).data,kre=async({instanceName:e,n8nId:t})=>(await je.delete(`/n8n/delete/${t}/${e}`)).data,Ere=async({instanceName:e,token:t,data:n})=>(await je.post(`/n8n/settings/${e}`,n,{headers:{apikey:t}})).data,Nre=async({instanceName:e,token:t,remoteJid:n,status:r})=>(await je.post(`/n8n/changeStatus/${e}`,{remoteJid:n,status:r},{headers:{apikey:t}})).data;function Em(){const e=it(Ere,{invalidateKeys:[["n8n","fetchDefaultSettings"]]}),t=it(Nre,{invalidateKeys:[["n8n","getN8n"],["n8n","fetchSessions"]]}),n=it(kre,{invalidateKeys:[["n8n","getN8n"],["n8n","fetchN8n"],["n8n","fetchSessions"]]}),r=it(jre,{invalidateKeys:[["n8n","getN8n"],["n8n","fetchN8n"],["n8n","fetchSessions"]]}),s=it(Cre,{invalidateKeys:[["n8n","fetchN8n"]]});return{setDefaultSettingsN8n:e,changeStatusN8n:t,deleteN8n:n,updateN8n:r,createN8n:s}}const Tre=e=>["n8n","fetchDefaultSettings",JSON.stringify(e)],Mre=async({instanceName:e,token:t})=>(await je.get(`/n8n/fetchSettings/${e}`,{headers:{apikey:t}})).data,_re=e=>{const{instanceName:t,token:n,...r}=e;return vt({...r,queryKey:Tre({instanceName:t,token:n}),queryFn:()=>Mre({instanceName:t,token:n}),enabled:!!t})},Rre=hn({expire:ye(),keywordFinish:ye(),delayMessage:ye(),unknownMessage:ye(),listeningFromMe:Re(),stopBotFromMe:Re(),keepOpen:Re(),debounceTime:ye(),ignoreJids:ra(ye()).default([]),n8nIdFallback:kc([jc(),ye()]).optional(),splitMessages:Re(),timePerChar:ye()});function Pre(){const{t:e}=Fe(),{instance:t}=dt(),{setDefaultSettingsN8n:n}=Em(),[r,s]=y.useState(!1),{data:o,refetch:l}=QI({instanceName:t?.name,token:t?.token,enabled:r}),{data:u,refetch:d}=_re({instanceName:t?.name,token:t?.token}),f=fn({resolver:pn(Rre),defaultValues:{expire:"0",keywordFinish:e("n8n.form.examples.keywordFinish"),delayMessage:"1000",unknownMessage:e("n8n.form.examples.unknownMessage"),listeningFromMe:!1,stopBotFromMe:!1,keepOpen:!1,debounceTime:"0",ignoreJids:[],n8nIdFallback:void 0,splitMessages:!1,timePerChar:"0"}});y.useEffect(()=>{u&&f.reset({expire:u?.expire?u.expire.toString():"0",keywordFinish:u.keywordFinish,delayMessage:u.delayMessage?u.delayMessage.toString():"0",unknownMessage:u.unknownMessage,listeningFromMe:u.listeningFromMe,stopBotFromMe:u.stopBotFromMe,keepOpen:u.keepOpen,debounceTime:u.debounceTime?u.debounceTime.toString():"0",ignoreJids:u.ignoreJids,n8nIdFallback:u.n8nIdFallback,splitMessages:u.splitMessages,timePerChar:u.timePerChar?u.timePerChar.toString():"0"})},[u]);const h=async g=>{try{if(!t||!t.name)throw new Error("instance not found.");const x={expire:parseInt(g.expire),keywordFinish:g.keywordFinish,delayMessage:parseInt(g.delayMessage),unknownMessage:g.unknownMessage,listeningFromMe:g.listeningFromMe,stopBotFromMe:g.stopBotFromMe,keepOpen:g.keepOpen,debounceTime:parseInt(g.debounceTime),n8nIdFallback:g.n8nIdFallback||void 0,ignoreJids:g.ignoreJids,splitMessages:g.splitMessages,timePerChar:parseInt(g.timePerChar)};await n({instanceName:t.name,token:t.token,data:x}),re.success(e("n8n.toast.defaultSettings.success"))}catch(x){console.error("Error:",x),re.error(`Error: ${x?.response?.data?.response?.message}`)}};function m(){d(),l()}return a.jsxs(gt,{open:r,onOpenChange:s,children:[a.jsx(rn,{asChild:!0,children:a.jsxs(q,{variant:"secondary",size:"sm",children:[a.jsx(Go,{size:16,className:"mr-1"}),a.jsx("span",{className:"hidden sm:inline",children:e("n8n.defaultSettings")})]})}),a.jsxs(pt,{className:"overflow-y-auto sm:max-h-[600px] sm:max-w-[740px]",onCloseAutoFocus:m,children:[a.jsx(ht,{children:a.jsx(bt,{children:e("n8n.defaultSettings")})}),a.jsx(hr,{...f,children:a.jsxs("form",{className:"w-full space-y-6",onSubmit:f.handleSubmit(h),children:[a.jsx("div",{children:a.jsxs("div",{className:"space-y-4",children:[a.jsx(dn,{name:"n8nIdFallback",label:e("n8n.form.n8nIdFallback.label"),options:o?.filter(g=>!!g.id).map(g=>({label:g.description,value:g.id}))??[]}),a.jsx(ge,{name:"expire",label:e("n8n.form.expire.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ge,{name:"keywordFinish",label:e("n8n.form.keywordFinish.label"),children:a.jsx(X,{})}),a.jsx(ge,{name:"delayMessage",label:e("n8n.form.delayMessage.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ge,{name:"unknownMessage",label:e("n8n.form.unknownMessage.label"),children:a.jsx(X,{})}),a.jsx(De,{name:"listeningFromMe",label:e("n8n.form.listeningFromMe.label"),reverse:!0}),a.jsx(De,{name:"stopBotFromMe",label:e("n8n.form.stopBotFromMe.label"),reverse:!0}),a.jsx(De,{name:"keepOpen",label:e("n8n.form.keepOpen.label"),reverse:!0}),a.jsx(ge,{name:"debounceTime",label:e("n8n.form.debounceTime.label"),children:a.jsx(X,{type:"number"})}),a.jsx(De,{name:"splitMessages",label:e("n8n.form.splitMessages.label"),reverse:!0}),a.jsx(ge,{name:"timePerChar",label:e("n8n.form.timePerChar.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ti,{name:"ignoreJids",label:e("n8n.form.ignoreJids.label"),placeholder:e("n8n.form.ignoreJids.placeholder")})]})}),a.jsx(Kt,{children:a.jsx(q,{type:"submit",children:e("n8n.button.save")})})]})})]})]})}const Ire=e=>["n8n","fetchSessions",JSON.stringify(e)],Ore=async({n8nId:e,instanceName:t})=>(await je.get(`/n8n/fetchSessions/${e}/${t}`)).data,Are=e=>{const{n8nId:t,instanceName:n,...r}=e;return vt({...r,queryKey:Ire({n8nId:t,instanceName:n}),queryFn:()=>Ore({n8nId:t,instanceName:n}),enabled:!!n&&!!t&&(e.enabled??!0),staleTime:1e3*10})},up={name:"",number:"",status:"all",time:"all",customCondition:"more",customValue:"",customUnit:"minutes"};function Dre(e,t){const n=parseInt(e);return!n||isNaN(n)||n<=0?null:t==="hours"?n*60:t==="days"?n*1440:n}function Fre(e,t){if(t.time==="all")return!0;const n=(Date.now()-new Date(e).getTime())/6e4;if(t.time==="custom"){const r=Dre(t.customValue,t.customUnit);return r===null?!0:t.customCondition==="more"?n>r:n<=r}if(t.time.startsWith(">")){const r=parseInt(t.time.slice(1));return n>r}return n<=parseInt(t.time)}function YI({n8nId:e}){const{t}=Fe(),{instance:n}=dt(),{changeStatusN8n:r}=Em(),[s,o]=y.useState(!1),[l,u]=y.useState([]),[d,f]=y.useState({}),[h,m]=y.useState(up),[g,x]=y.useState(up),[b,w]=y.useState(9),[C,k]=y.useState(9),[N,T]=y.useState("opened"),[_,I]=y.useState(!1),[M,A]=y.useState(""),[O,F]=y.useState(""),[z,Z]=y.useState(!1),{data:B,refetch:ce}=Are({instanceName:n?.name,n8nId:e,enabled:s}),H=y.useMemo(()=>{const j=B??[],P=g.name.trim().toLowerCase(),pe=g.number.trim();return j.filter(xe=>!(P&&!xe.pushName?.toLowerCase().includes(P)||pe&&!xe.remoteJid.includes(pe)||g.status!=="all"&&xe.status!==g.status||!Fre(xe.updatedAt,g)))},[B,g]),oe=H.slice(0,C),Q=y.useMemo(()=>Object.keys(d).filter(j=>d[j]).map(j=>oe[Number(j)]?.remoteJid).filter(Boolean),[d,oe]);y.useEffect(()=>{k(b),f({})},[g,b]);const ne=()=>{ce()},V=()=>{x(h)},K=()=>{m(up),x(up)},U=async(j,P)=>{try{if(!n)return;await r({instanceName:n.name,token:n.token,remoteJid:j,status:P}),re.success(t("n8n.toast.success.status")),ne()}catch(pe){console.error("Error:",pe),re.error(`Error : ${pe?.response?.data?.response?.message}`)}},D=async()=>{if(Q.length===0){re.error(t("sessions.mass.noneSelected"));return}try{if(!n)return;await Promise.all(Q.map(j=>r({instanceName:n.name,token:n.token,remoteJid:j,status:N}))),re.success(t("sessions.mass.success")),f({}),ne()}catch(j){console.error(j),re.error(j?.response?.data?.response?.message??t("sessions.mass.error"))}},J=j=>{A(j),F(""),I(!0)},ae=async()=>{if(!O.trim()){re.error(t("sessions.send.empty"));return}try{if(!n)return;Z(!0),await je.post(`/message/sendText/${n.name}`,{number:M,text:O},{headers:{apikey:n.token}}),re.success(t("sessions.send.success")),I(!1),F(""),A("")}catch(j){console.error("Error:",j),re.error(j?.response?.data?.response?.message??j?.message??t("sessions.send.error"))}finally{Z(!1)}},ee=[{id:"select",header:({table:j})=>a.jsx(Xr,{checked:j.getIsAllPageRowsSelected()||j.getIsSomePageRowsSelected()&&"indeterminate",onCheckedChange:P=>j.toggleAllPageRowsSelected(!!P),"aria-label":t("sessions.mass.selectAll")}),cell:({row:j})=>a.jsx(Xr,{checked:j.getIsSelected(),onCheckedChange:P=>j.toggleSelected(!!P),"aria-label":t("sessions.mass.selectAll")}),enableSorting:!1},{accessorKey:"remoteJid",header:()=>a.jsx("div",{className:"text-center",children:t("n8n.sessions.table.remoteJid")}),cell:({row:j})=>a.jsx("div",{children:j.getValue("remoteJid")})},{accessorKey:"pushName",header:()=>a.jsx("div",{className:"text-center",children:t("n8n.sessions.table.pushName")}),cell:({row:j})=>a.jsx("div",{children:j.getValue("pushName")})},{accessorKey:"sessionId",header:()=>a.jsx("div",{className:"text-center",children:t("n8n.sessions.table.sessionId")}),cell:({row:j})=>a.jsx("div",{children:j.getValue("sessionId")})},{accessorKey:"status",header:()=>a.jsx("div",{className:"text-center",children:t("n8n.sessions.table.status")}),cell:({row:j})=>a.jsx("div",{children:j.getValue("status")})},{id:"actions",enableHiding:!1,cell:({row:j})=>{const P=j.original;return a.jsxs(ms,{children:[a.jsx(gs,{asChild:!0,children:a.jsxs(q,{variant:"ghost",size:"icon",children:[a.jsx("span",{className:"sr-only",children:t("n8n.sessions.table.actions.title")}),a.jsx(Jo,{className:"h-4 w-4"})]})}),a.jsxs(vs,{align:"end",children:[a.jsx(Qo,{children:t("n8n.sessions.table.actions.title")}),a.jsx(Yo,{}),P.status!=="opened"&&a.jsxs(St,{onClick:()=>U(P.remoteJid,"opened"),children:[a.jsx(tl,{className:"mr-2 h-4 w-4"}),t("n8n.sessions.table.actions.open")]}),P.status!=="paused"&&P.status!=="closed"&&a.jsxs(St,{onClick:()=>U(P.remoteJid,"paused"),children:[a.jsx(el,{className:"mr-2 h-4 w-4"}),t("n8n.sessions.table.actions.pause")]}),P.status!=="closed"&&a.jsxs(St,{onClick:()=>U(P.remoteJid,"closed"),children:[a.jsx(Qi,{className:"mr-2 h-4 w-4"}),t("n8n.sessions.table.actions.close")]}),a.jsxs(St,{onClick:()=>J(P.remoteJid),children:[a.jsx(Xi,{className:"mr-2 h-4 w-4"}),t("sessions.actions.sendMessage")]}),a.jsxs(St,{onClick:()=>U(P.remoteJid,"delete"),children:[a.jsx(Yi,{className:"mr-2 h-4 w-4"}),t("n8n.sessions.table.actions.delete")]})]})]})}}],ie=["all","5","10","15","20","30","60",">60",">120",">300",">1440","custom"],ue=["all","opened","paused","closed"];return a.jsxs(gt,{open:s,onOpenChange:o,children:[a.jsx(rn,{asChild:!0,children:a.jsxs(q,{variant:"secondary",size:"sm",children:[a.jsx(Zi,{size:16,className:"mr-1"}),a.jsx("span",{className:"hidden md:inline",children:t("n8n.sessions.label")})]})}),a.jsxs(pt,{className:"max-w-7xl h-[85vh] flex flex-col overflow-hidden",children:[a.jsx(ht,{children:a.jsx(bt,{children:t("n8n.sessions.label")})}),a.jsxs("div",{className:"flex-1 space-y-4 overflow-y-auto pr-2",children:[a.jsxs(Bn,{children:[a.jsx(Yn,{children:a.jsx(Zn,{className:"text-base",children:t("sessions.filters.title")})}),a.jsxs(zn,{className:"space-y-4",children:[a.jsxs("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-4",children:[a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{children:t("sessions.filters.name")}),a.jsx(X,{placeholder:t("sessions.filters.namePlaceholder"),value:h.name,onChange:j=>m(P=>({...P,name:j.target.value}))})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{children:t("sessions.filters.number")}),a.jsx(X,{placeholder:t("sessions.filters.numberPlaceholder"),value:h.number,onChange:j=>m(P=>({...P,number:j.target.value}))})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{children:t("sessions.filters.status")}),a.jsxs(Mt,{value:h.status,onValueChange:j=>m(P=>({...P,status:j})),children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsx(Pt,{children:ue.map(j=>a.jsx(we,{value:j,children:t(`sessions.filters.statusOptions.${j}`)},j))})]})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{children:t("sessions.filters.time")}),a.jsxs(Mt,{value:h.time,onValueChange:j=>m(P=>({...P,time:j})),children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsx(Pt,{children:ie.map(j=>a.jsx(we,{value:j,children:t(`sessions.filters.timeOptions.${j}`)},j))})]})]})]}),h.time==="custom"&&a.jsxs("div",{className:"grid grid-cols-1 gap-2 md:grid-cols-3",children:[a.jsxs(Mt,{value:h.customCondition,onValueChange:j=>m(P=>({...P,customCondition:j})),children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsxs(Pt,{children:[a.jsx(we,{value:"more",children:t("sessions.filters.custom.more")}),a.jsx(we,{value:"less",children:t("sessions.filters.custom.less")})]})]}),a.jsx(X,{type:"number",min:1,placeholder:t("sessions.filters.custom.valuePlaceholder"),value:h.customValue,onChange:j=>m(P=>({...P,customValue:j.target.value}))}),a.jsxs(Mt,{value:h.customUnit,onValueChange:j=>m(P=>({...P,customUnit:j})),children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsxs(Pt,{children:[a.jsx(we,{value:"minutes",children:t("sessions.filters.custom.minutes")}),a.jsx(we,{value:"hours",children:t("sessions.filters.custom.hours")}),a.jsx(we,{value:"days",children:t("sessions.filters.custom.days")})]})]})]}),a.jsxs("div",{className:"flex flex-wrap gap-2",children:[a.jsx(q,{onClick:V,size:"sm",children:t("sessions.filters.apply")}),a.jsx(q,{onClick:K,size:"sm",variant:"outline",children:t("sessions.filters.clear")}),a.jsxs(q,{onClick:ne,size:"sm",variant:"outline",children:[a.jsx(nl,{size:14,className:"mr-1"}),t("button.refresh")]})]})]})]}),Q.length>0&&a.jsxs(Bn,{children:[a.jsx(Yn,{children:a.jsx(Zn,{className:"text-base",children:t("sessions.mass.title")})}),a.jsx(zn,{children:a.jsxs("div",{className:"flex flex-wrap items-end gap-3",children:[a.jsx("div",{className:"text-sm text-muted-foreground",children:t("sessions.mass.selected",{count:Q.length})}),a.jsxs("div",{className:"flex-1 min-w-[180px] space-y-1",children:[a.jsx(Ue,{children:t("sessions.mass.newStatus")}),a.jsxs(Mt,{value:N,onValueChange:T,children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsxs(Pt,{children:[a.jsx(we,{value:"opened",children:t("n8n.sessions.table.actions.open")}),a.jsx(we,{value:"paused",children:t("n8n.sessions.table.actions.pause")}),a.jsx(we,{value:"closed",children:t("n8n.sessions.table.actions.close")}),a.jsx(we,{value:"delete",children:t("n8n.sessions.table.actions.delete")})]})]})]}),a.jsx(q,{onClick:D,size:"sm",children:t("sessions.mass.apply")})]})})]}),a.jsx(ai,{columns:ee,data:oe,onSortingChange:u,state:{sorting:l,rowSelection:d},onRowSelectionChange:f,enableRowSelection:!0,getRowId:(j,P)=>String(P),noResultsMessage:t("sessions.empty")}),a.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3 px-1 text-sm text-muted-foreground",children:[a.jsx("span",{children:t("sessions.pagination.showing",{shown:oe.length,total:H.length})}),a.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[a.jsx(Ue,{htmlFor:"per-page",className:"text-xs",children:t("sessions.pagination.perPage")}),a.jsxs(Mt,{value:String(b),onValueChange:j=>w(parseInt(j)),children:[a.jsx(Rt,{id:"per-page",className:"h-8 w-20",children:a.jsx(_t,{})}),a.jsxs(Pt,{children:[a.jsx(we,{value:"9",children:"9"}),a.jsx(we,{value:"25",children:"25"}),a.jsx(we,{value:"50",children:"50"}),a.jsx(we,{value:"100",children:"100"})]})]}),Ck(j=>Math.min(j+b,H.length)),children:t("sessions.pagination.showMore")}),Ck(H.length),children:t("sessions.pagination.showAll")}),C>b&&a.jsx(q,{size:"sm",variant:"outline",onClick:()=>k(b),children:t("sessions.pagination.showLess")})]})]})]}),a.jsx(gt,{open:_,onOpenChange:j=>!z&&I(j),children:a.jsxs(pt,{className:"sm:max-w-md",children:[a.jsx(ht,{children:a.jsx(bt,{children:t("sessions.send.title")})}),a.jsxs("div",{className:"space-y-3",children:[a.jsxs("div",{className:"space-y-1",children:[a.jsx(Ue,{children:t("sessions.send.to")}),a.jsx(X,{value:M,disabled:!0})]}),a.jsxs("div",{className:"space-y-1",children:[a.jsx(Ue,{children:t("sessions.send.messagePlaceholder")}),a.jsx(Zo,{rows:4,placeholder:t("sessions.send.messagePlaceholder"),value:O,onChange:j=>F(j.target.value)})]})]}),a.jsxs(Kt,{children:[a.jsx(q,{variant:"outline",onClick:()=>I(!1),disabled:z,children:t("button.cancel")}),a.jsx(q,{onClick:ae,disabled:z,children:t(z?"sessions.send.sending":"sessions.send.send")})]})]})})]})]})}const Lre=hn({enabled:Re(),description:ye(),webhookUrl:ye(),basicAuthUser:ye(),basicAuthPass:ye(),triggerType:ye(),triggerOperator:ye().optional(),triggerValue:ye().optional(),expire:Vt.number().optional(),keywordFinish:ye().optional(),delayMessage:Vt.number().optional(),unknownMessage:ye().optional(),listeningFromMe:Re().optional(),stopBotFromMe:Re().optional(),keepOpen:Re().optional(),debounceTime:Vt.number().optional(),splitMessages:Re().optional(),timePerChar:Vt.number().optional()});function ZI({initialData:e,onSubmit:t,handleDelete:n,n8nId:r,isModal:s=!1,isLoading:o=!1,openDeletionDialog:l=!1,setOpenDeletionDialog:u=()=>{}}){const{t:d}=Fe(),f=fn({resolver:pn(Lre),defaultValues:e||{enabled:!0,description:"",webhookUrl:"",basicAuthUser:"",basicAuthPass:"",triggerType:"keyword",triggerOperator:"contains",triggerValue:"",expire:0,keywordFinish:"",delayMessage:0,unknownMessage:"",listeningFromMe:!1,stopBotFromMe:!1,keepOpen:!1,debounceTime:0,splitMessages:!1,timePerChar:0}}),h=f.watch("triggerType");return a.jsx(hr,{...f,children:a.jsxs("form",{onSubmit:f.handleSubmit(t),className:"w-full space-y-6",children:[a.jsxs("div",{className:"space-y-4",children:[a.jsx(De,{name:"enabled",label:d("n8n.form.enabled.label"),reverse:!0}),a.jsx(ge,{name:"description",label:d("n8n.form.description.label"),children:a.jsx(X,{})}),a.jsxs("div",{className:"flex flex-col",children:[a.jsx("h3",{className:"my-4 text-lg font-medium",children:d("n8n.form.n8nSettings.label")}),a.jsx(nn,{})]}),a.jsx(ge,{name:"webhookUrl",label:d("n8n.form.webhookUrl.label"),required:!0,children:a.jsx(X,{})}),a.jsxs("div",{className:"flex flex-col",children:[a.jsx("h3",{className:"my-4 text-lg font-medium",children:d("n8n.form.basicAuth.label")}),a.jsx(nn,{})]}),a.jsxs("div",{className:"flex w-full flex-row gap-4",children:[a.jsx(ge,{name:"basicAuthUser",label:d("n8n.form.basicAuthUser.label"),className:"flex-1",children:a.jsx(X,{})}),a.jsx(ge,{name:"basicAuthPass",label:d("n8n.form.basicAuthPass.label"),className:"flex-1",children:a.jsx(X,{type:"password"})})]}),a.jsxs("div",{className:"flex flex-col",children:[a.jsx("h3",{className:"my-4 text-lg font-medium",children:d("n8n.form.triggerSettings.label")}),a.jsx(nn,{})]}),a.jsx(dn,{name:"triggerType",label:d("n8n.form.triggerType.label"),options:[{label:d("n8n.form.triggerType.keyword"),value:"keyword"},{label:d("n8n.form.triggerType.all"),value:"all"},{label:d("n8n.form.triggerType.advanced"),value:"advanced"},{label:d("n8n.form.triggerType.none"),value:"none"}]}),h==="keyword"&&a.jsxs(a.Fragment,{children:[a.jsx(dn,{name:"triggerOperator",label:d("n8n.form.triggerOperator.label"),options:[{label:d("n8n.form.triggerOperator.contains"),value:"contains"},{label:d("n8n.form.triggerOperator.equals"),value:"equals"},{label:d("n8n.form.triggerOperator.startsWith"),value:"startsWith"},{label:d("n8n.form.triggerOperator.endsWith"),value:"endsWith"},{label:d("n8n.form.triggerOperator.regex"),value:"regex"}]}),a.jsx(ge,{name:"triggerValue",label:d("n8n.form.triggerValue.label"),children:a.jsx(X,{})})]}),h==="advanced"&&a.jsx(ge,{name:"triggerValue",label:d("n8n.form.triggerConditions.label"),children:a.jsx(X,{})}),a.jsxs("div",{className:"flex flex-col",children:[a.jsx("h3",{className:"my-4 text-lg font-medium",children:d("n8n.form.generalSettings.label")}),a.jsx(nn,{})]}),a.jsx(ge,{name:"expire",label:d("n8n.form.expire.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ge,{name:"keywordFinish",label:d("n8n.form.keywordFinish.label"),children:a.jsx(X,{})}),a.jsx(ge,{name:"delayMessage",label:d("n8n.form.delayMessage.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ge,{name:"unknownMessage",label:d("n8n.form.unknownMessage.label"),children:a.jsx(X,{})}),a.jsx(De,{name:"listeningFromMe",label:d("n8n.form.listeningFromMe.label"),reverse:!0}),a.jsx(De,{name:"stopBotFromMe",label:d("n8n.form.stopBotFromMe.label"),reverse:!0}),a.jsx(De,{name:"keepOpen",label:d("n8n.form.keepOpen.label"),reverse:!0}),a.jsx(ge,{name:"debounceTime",label:d("n8n.form.debounceTime.label"),children:a.jsx(X,{type:"number"})}),a.jsx(De,{name:"splitMessages",label:d("n8n.form.splitMessages.label"),reverse:!0}),f.watch("splitMessages")&&a.jsx(ge,{name:"timePerChar",label:d("n8n.form.timePerChar.label"),children:a.jsx(X,{type:"number"})})]}),s&&a.jsx(Kt,{children:a.jsx(q,{disabled:o,type:"submit",children:d(o?"n8n.button.saving":"n8n.button.save")})}),!s&&a.jsxs("div",{children:[a.jsx(YI,{n8nId:r}),a.jsxs("div",{className:"mt-5 flex items-center gap-3",children:[a.jsxs(gt,{open:l,onOpenChange:u,children:[a.jsx(rn,{asChild:!0,children:a.jsx(q,{variant:"destructive",size:"sm",children:d("n8n.button.delete")})}),a.jsx(pt,{children:a.jsxs(ht,{children:[a.jsx(bt,{children:d("modal.delete.title")}),a.jsx(kr,{children:d("modal.delete.messageSingle")}),a.jsxs(Kt,{children:[a.jsx(q,{size:"sm",variant:"outline",onClick:()=>u(!1),children:d("button.cancel")}),a.jsx(q,{variant:"destructive",onClick:n,children:d("button.delete")})]})]})})]}),a.jsx(q,{disabled:o,type:"submit",children:d(o?"n8n.button.saving":"n8n.button.update")})]})]})]})})}function $re({resetTable:e}){const{t}=Fe(),{instance:n}=dt(),[r,s]=y.useState(!1),[o,l]=y.useState(!1),{createN8n:u}=Em(),d=async f=>{try{if(!n||!n.name)throw new Error("instance not found");s(!0);const h={enabled:f.enabled,description:f.description,webhookUrl:f.webhookUrl,basicAuthUser:f.basicAuthUser,basicAuthPass:f.basicAuthPass,triggerType:f.triggerType,triggerOperator:f.triggerOperator||"",triggerValue:f.triggerValue||"",expire:f.expire||0,keywordFinish:f.keywordFinish||"",delayMessage:f.delayMessage||0,unknownMessage:f.unknownMessage||"",listeningFromMe:f.listeningFromMe||!1,stopBotFromMe:f.stopBotFromMe||!1,keepOpen:f.keepOpen||!1,debounceTime:f.debounceTime||0,splitMessages:f.splitMessages||!1,timePerChar:f.timePerChar||0};await u({instanceName:n.name,token:n.token,data:h}),re.success(t("n8n.toast.success.create")),l(!1),e()}catch(h){console.error("Error:",h),re.error(`Error: ${h?.response?.data?.response?.message}`)}finally{s(!1)}};return a.jsxs(gt,{open:o,onOpenChange:l,children:[a.jsx(rn,{asChild:!0,children:a.jsxs(q,{size:"sm",children:[a.jsx(Yr,{size:16,className:"mr-1"}),a.jsx("span",{className:"hidden sm:inline",children:t("n8n.button.create")})]})}),a.jsxs(pt,{className:"overflow-y-auto sm:max-h-[600px] sm:max-w-[740px]",children:[a.jsx(ht,{children:a.jsx(bt,{children:t("n8n.form.title")})}),a.jsx(ZI,{onSubmit:d,isModal:!0,isLoading:r})]})]})}const Bre=e=>["n8n","getN8n",JSON.stringify(e)],zre=async({n8nId:e,instanceName:t})=>(await je.get(`/n8n/fetch/${e}/${t}`)).data,Ure=e=>{const{n8nId:t,instanceName:n,...r}=e;return vt({...r,queryKey:Bre({n8nId:t,instanceName:n}),queryFn:()=>zre({n8nId:t,instanceName:n}),enabled:!!n&&!!t&&(e.enabled??!0)})};function Vre({n8nId:e,resetTable:t}){const{t:n}=Fe(),{instance:r}=dt(),s=jn(),[o,l]=y.useState(!1),{deleteN8n:u,updateN8n:d}=Em(),{data:f,isLoading:h}=Ure({n8nId:e,instanceName:r?.name}),m=y.useMemo(()=>({enabled:!!f?.enabled,description:f?.description??"",webhookUrl:f?.webhookUrl??"",basicAuthUser:f?.basicAuthUser??"",basicAuthPass:f?.basicAuthPass??"",triggerType:f?.triggerType??"",triggerOperator:f?.triggerOperator??"",triggerValue:f?.triggerValue??"",expire:f?.expire??0,keywordFinish:f?.keywordFinish??"",delayMessage:f?.delayMessage??0,unknownMessage:f?.unknownMessage??"",listeningFromMe:!!f?.listeningFromMe,stopBotFromMe:!!f?.stopBotFromMe,keepOpen:!!f?.keepOpen,debounceTime:f?.debounceTime??0,splitMessages:f?.splitMessages??!1,timePerChar:f?.timePerChar??0}),[f?.webhookUrl,f?.basicAuthUser,f?.basicAuthPass,f?.debounceTime,f?.delayMessage,f?.description,f?.enabled,f?.expire,f?.keepOpen,f?.keywordFinish,f?.listeningFromMe,f?.stopBotFromMe,f?.triggerOperator,f?.triggerType,f?.triggerValue,f?.unknownMessage,f?.splitMessages,f?.timePerChar]),g=async b=>{try{if(r&&r.name&&e){const w={enabled:b.enabled,description:b.description,webhookUrl:b.webhookUrl,basicAuthUser:b.basicAuthUser,basicAuthPass:b.basicAuthPass,triggerType:b.triggerType,triggerOperator:b.triggerOperator||"",triggerValue:b.triggerValue||"",expire:b.expire||0,keywordFinish:b.keywordFinish||"",delayMessage:b.delayMessage||1e3,unknownMessage:b.unknownMessage||"",listeningFromMe:b.listeningFromMe||!1,stopBotFromMe:b.stopBotFromMe||!1,keepOpen:b.keepOpen||!1,debounceTime:b.debounceTime||0,splitMessages:b.splitMessages||!1,timePerChar:b.timePerChar||0};await d({instanceName:r.name,n8nId:e,data:w}),re.success(n("n8n.toast.success.update")),t(),s(`/manager/instance/${r.id}/n8n/${e}`)}else console.error("Token not found")}catch(w){console.error("Error:",w),re.error(`Error: ${w?.response?.data?.response?.message}`)}},x=async()=>{try{r&&r.name&&e?(await u({instanceName:r.name,n8nId:e}),re.success(n("n8n.toast.success.delete")),l(!1),t(),s(`/manager/instance/${r.id}/n8n`)):console.error("instance not found")}catch(b){console.error("Erro ao excluir n8n:",b)}};return h?a.jsx(Vn,{}):a.jsx("div",{className:"m-4",children:a.jsx(ZI,{initialData:m,onSubmit:g,n8nId:e,handleDelete:x,isModal:!1,isLoading:h,openDeletionDialog:o,setOpenDeletionDialog:l})})}function iE(){const{t:e}=Fe(),t=Ya("(min-width: 768px)"),{instance:n}=dt(),{n8nId:r}=_s(),{data:s,refetch:o,isLoading:l,error:u}=QI({instanceName:n?.name}),d=jn(),f=m=>{n&&d(`/manager/instance/${n.id}/n8n/${m}`)},h=()=>{o()};return a.jsx("main",{className:"pt-5",children:a.jsxs(sa,{error:u,name:"n8n",envVar:"N8N_ENABLED",children:[a.jsxs("div",{className:"mb-1 flex items-center justify-between",children:[a.jsx("h3",{className:"text-lg font-medium",children:e("n8n.title")}),a.jsxs("div",{className:"flex items-center justify-end gap-2",children:[a.jsx(YI,{}),a.jsx(Pre,{}),a.jsx($re,{resetTable:h})]})]}),a.jsx(nn,{className:"my-4"}),a.jsxs(ri,{direction:t?"horizontal":"vertical",children:[a.jsx(Er,{defaultSize:r?35:100,className:"pr-4",children:a.jsx("div",{className:"flex flex-col gap-3",children:l?a.jsx(Vn,{}):a.jsx(a.Fragment,{children:s&&s.length>0&&Array.isArray(s)?s.map(m=>a.jsx(q,{className:"flex h-auto flex-col items-start justify-start",onClick:()=>f(`${m.id}`),variant:r===m.id?"secondary":"outline",children:a.jsx("h4",{className:"text-base",children:m.description||m.id})},m.id)):a.jsx(q,{variant:"link",children:e("n8n.table.none")})})})}),r&&a.jsxs(a.Fragment,{children:[a.jsx(si,{withHandle:!0,className:"border border-border"}),a.jsx(Er,{children:a.jsx(Vre,{n8nId:r,resetTable:h})})]})]})]})})}const qre=e=>["openai","findOpenai",JSON.stringify(e)],Hre=async({instanceName:e,token:t})=>(await je.get(`/openai/find/${e}`,{headers:{apiKey:t}})).data,XI=e=>{const{instanceName:t,token:n,...r}=e;return vt({...r,queryKey:qre({instanceName:t}),queryFn:()=>Hre({instanceName:t,token:n}),enabled:!!t&&(e.enabled??!0)})},Kre=e=>["openai","findOpenaiCreds",JSON.stringify(e)],Wre=async({instanceName:e,token:t})=>(await je.get(`/openai/creds/${e}`,{headers:{apiKey:t}})).data,xw=e=>{const{instanceName:t,token:n,...r}=e;return vt({staleTime:1e3*60*60*6,...r,queryKey:Kre({instanceName:t}),queryFn:()=>Wre({instanceName:t,token:n}),enabled:!!t&&(e.enabled??!0)})},Gre=async({instanceName:e,token:t,data:n})=>(await je.post(`/openai/creds/${e}`,n,{headers:{apikey:t}})).data,Jre=async({openaiCredsId:e,instanceName:t})=>(await je.delete(`/openai/creds/${e}/${t}`)).data,Qre=async({instanceName:e,token:t,data:n})=>(await je.post(`/openai/create/${e}`,n,{headers:{apikey:t}})).data,Yre=async({instanceName:e,token:t,openaiId:n,data:r})=>(await je.put(`/openai/update/${n}/${e}`,r,{headers:{apikey:t}})).data,Zre=async({instanceName:e,token:t,openaiId:n})=>(await je.delete(`/openai/delete/${n}/${e}`,{headers:{apikey:t}})).data,Xre=async({instanceName:e,token:t,data:n})=>(await je.post(`/openai/settings/${e}`,n,{headers:{apikey:t}})).data,ese=async({instanceName:e,token:t,remoteJid:n,status:r})=>(await je.post(`/openai/changeStatus/${e}`,{remoteJid:n,status:r},{headers:{apikey:t}})).data;function Ed(){const e=it(Xre,{invalidateKeys:[["openai","fetchDefaultSettings"]]}),t=it(ese,{invalidateKeys:[["openai","getOpenai"],["openai","fetchSessions"]]}),n=it(Zre,{invalidateKeys:[["openai","getOpenai"],["openai","findOpenai"],["openai","fetchSessions"]]}),r=it(Yre,{invalidateKeys:[["openai","getOpenai"],["openai","findOpenai"],["openai","fetchSessions"]]}),s=it(Qre,{invalidateKeys:[["openai","findOpenai"]]}),o=it(Gre,{invalidateKeys:[["openai","findOpenaiCreds"]]}),l=it(Jre,{invalidateKeys:[["openai","findOpenaiCreds"]]});return{setDefaultSettingsOpenai:e,changeStatusOpenai:t,deleteOpenai:n,updateOpenai:r,createOpenai:s,createOpenaiCreds:o,deleteOpenaiCreds:l}}const tse=hn({name:ye(),apiKey:ye()});function eO({onCredentialsUpdate:e,showText:t=!0}){const{t:n}=Fe(),{instance:r}=dt(),{createOpenaiCreds:s,deleteOpenaiCreds:o}=Ed(),[l,u]=y.useState(!1),[d,f]=y.useState([]),{data:h}=xw({instanceName:r?.name,enabled:l}),m=fn({resolver:pn(tse),defaultValues:{name:"",apiKey:""}}),g=async w=>{try{if(!r||!r.name)throw new Error("instance not found.");const C={name:w.name,apiKey:w.apiKey};await s({instanceName:r.name,token:r.token,data:C}),re.success(n("openai.toast.success.credentialsCreate")),m.reset(),e&&e()}catch(C){console.error("Error:",C),re.error(`Error: ${C?.response?.data?.response?.message}`)}},x=async w=>{if(!r?.name){re.error("Instance not found.");return}try{await o({openaiCredsId:w,instanceName:r?.name}),re.success(n("openai.toast.success.credentialsDelete")),e&&e()}catch(C){console.error("Error:",C),re.error(`Error: ${C?.response?.data?.response?.message}`)}},b=[{accessorKey:"name",header:({column:w})=>a.jsxs(q,{variant:"ghost",onClick:()=>w.toggleSorting(w.getIsSorted()==="asc"),children:[n("openai.credentials.table.name"),a.jsx(jB,{className:"ml-2 h-4 w-4"})]}),cell:({row:w})=>a.jsx("div",{children:w.getValue("name")})},{accessorKey:"apiKey",header:()=>a.jsx("div",{className:"text-right",children:n("openai.credentials.table.apiKey")}),cell:({row:w})=>a.jsxs("div",{children:[`${w.getValue("apiKey")}`.slice(0,20),"..."]})},{id:"actions",enableHiding:!1,cell:({row:w})=>{const C=w.original;return a.jsxs(ms,{children:[a.jsx(gs,{asChild:!0,children:a.jsxs(q,{variant:"ghost",className:"h-8 w-8 p-0",children:[a.jsx("span",{className:"sr-only",children:n("openai.credentials.table.actions.title")}),a.jsx(Jo,{className:"h-4 w-4"})]})}),a.jsxs(vs,{align:"end",children:[a.jsx(Qo,{children:n("openai.credentials.table.actions.title")}),a.jsx(Yo,{}),a.jsx(St,{onClick:()=>x(C.id),children:n("openai.credentials.table.actions.delete")})]})]})}}];return a.jsxs(gt,{open:l,onOpenChange:u,children:[a.jsx(rn,{asChild:!0,children:a.jsx(q,{variant:"secondary",size:"sm",type:"button",children:t?a.jsxs(a.Fragment,{children:[a.jsx(JB,{size:16,className:"mr-1"}),a.jsx("span",{className:"hidden md:inline",children:n("openai.credentials.title")})]}):a.jsx(Yr,{size:16})})}),a.jsxs(pt,{className:"overflow-y-auto sm:max-h-[600px] sm:max-w-[740px]",children:[a.jsx(ht,{children:a.jsx(bt,{children:n("openai.credentials.title")})}),a.jsx(hr,{...m,children:a.jsx("div",{onClick:w=>w.stopPropagation(),onSubmit:w=>w.stopPropagation(),onKeyDown:w=>w.stopPropagation(),children:a.jsxs("form",{onSubmit:w=>{w.preventDefault(),w.stopPropagation(),m.handleSubmit(g)(w)},className:"w-full space-y-6",children:[a.jsx("div",{children:a.jsxs("div",{className:"grid gap-3 md:grid-cols-2",children:[a.jsx(ge,{name:"name",label:n("openai.credentials.table.name"),children:a.jsx(X,{})}),a.jsx(ge,{name:"apiKey",label:n("openai.credentials.table.apiKey"),children:a.jsx(X,{type:"password"})})]})}),a.jsx(Kt,{children:a.jsx(q,{type:"submit",children:n("openai.button.save")})})]})})}),a.jsx(nn,{}),a.jsx("div",{children:a.jsx(ai,{columns:b,data:h??[],onSortingChange:f,state:{sorting:d},noResultsMessage:n("openai.credentials.table.none")})})]})]})}const nse=e=>["openai","fetchDefaultSettings",JSON.stringify(e)],rse=async({instanceName:e,token:t})=>{const n=await je.get(`/openai/fetchSettings/${e}`,{headers:{apiKey:t}});return Array.isArray(n.data)?n.data[0]:n.data},sse=e=>{const{instanceName:t,token:n,...r}=e;return vt({...r,queryKey:nse({instanceName:t}),queryFn:()=>rse({instanceName:t,token:n}),enabled:!!t&&(e.enabled??!0)})},ase=hn({openaiCredsId:ye(),expire:Vt.number(),keywordFinish:ye(),delayMessage:Vt.number().default(0),unknownMessage:ye(),listeningFromMe:Re(),stopBotFromMe:Re(),keepOpen:Re(),debounceTime:Vt.number(),speechToText:Re(),ignoreJids:ra(ye()).default([]),openaiIdFallback:kc([jc(),ye()]).optional(),splitMessages:Re().optional(),timePerChar:Vt.number().optional()});function ose(){const{t:e}=Fe(),{instance:t}=dt(),{setDefaultSettingsOpenai:n}=Ed(),[r,s]=y.useState(!1),{data:o,refetch:l}=sse({instanceName:t?.name,enabled:r}),{data:u,refetch:d}=XI({instanceName:t?.name,enabled:r}),{data:f}=xw({instanceName:t?.name,enabled:r}),h=fn({resolver:pn(ase),defaultValues:{openaiCredsId:"",expire:0,keywordFinish:e("openai.form.examples.keywordFinish"),delayMessage:1e3,unknownMessage:e("openai.form.examples.unknownMessage"),listeningFromMe:!1,stopBotFromMe:!1,keepOpen:!1,debounceTime:0,speechToText:!1,ignoreJids:[],openaiIdFallback:void 0,splitMessages:!1,timePerChar:0}});y.useEffect(()=>{o&&h.reset({openaiCredsId:o.openaiCredsId,expire:o?.expire??0,keywordFinish:o.keywordFinish,delayMessage:o.delayMessage??0,unknownMessage:o.unknownMessage,listeningFromMe:o.listeningFromMe,stopBotFromMe:o.stopBotFromMe,keepOpen:o.keepOpen,debounceTime:o.debounceTime??0,speechToText:o.speechToText,ignoreJids:o.ignoreJids,openaiIdFallback:o.openaiIdFallback,splitMessages:o.splitMessages,timePerChar:o.timePerChar??0})},[o]);const m=async x=>{try{if(!t||!t.name)throw new Error("instance not found.");const b={openaiCredsId:x.openaiCredsId,expire:x.expire,keywordFinish:x.keywordFinish,delayMessage:x.delayMessage,unknownMessage:x.unknownMessage,listeningFromMe:x.listeningFromMe,stopBotFromMe:x.stopBotFromMe,keepOpen:x.keepOpen,debounceTime:x.debounceTime,speechToText:x.speechToText,openaiIdFallback:x.openaiIdFallback||void 0,ignoreJids:x.ignoreJids,splitMessages:x.splitMessages,timePerChar:x.timePerChar};await n({instanceName:t.name,token:t.token,data:b}),re.success(e("openai.toast.defaultSettings.success"))}catch(b){console.error("Error:",b),re.error(`Error: ${b?.response?.data?.response?.message}`)}};function g(){l(),d()}return a.jsxs(gt,{open:r,onOpenChange:s,children:[a.jsx(rn,{asChild:!0,children:a.jsxs(q,{variant:"secondary",size:"sm",children:[a.jsx(Go,{size:16,className:"mr-1"}),a.jsx("span",{className:"hidden md:inline",children:e("openai.defaultSettings")})]})}),a.jsxs(pt,{className:"overflow-y-auto sm:max-h-[600px] sm:max-w-[740px]",onCloseAutoFocus:g,children:[a.jsx(ht,{children:a.jsx(bt,{children:e("openai.defaultSettings")})}),a.jsx(hr,{...h,children:a.jsxs("form",{className:"w-full space-y-6",onSubmit:h.handleSubmit(m),children:[a.jsx("div",{children:a.jsxs("div",{className:"space-y-4",children:[a.jsx(dn,{name:"openaiCredsId",label:e("openai.form.openaiCredsId.label"),options:f?.filter(x=>!!x.id).map(x=>({label:x.name?x.name:x.apiKey.substring(0,15)+"...",value:x.id}))||[]}),a.jsx(dn,{name:"openaiIdFallback",label:e("openai.form.openaiIdFallback.label"),options:u?.filter(x=>!!x.id).map(x=>({label:x.description,value:x.id}))??[]}),a.jsx(ge,{name:"expire",label:e("openai.form.expire.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ge,{name:"keywordFinish",label:e("openai.form.keywordFinish.label"),children:a.jsx(X,{})}),a.jsx(ge,{name:"delayMessage",label:e("openai.form.delayMessage.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ge,{name:"unknownMessage",label:e("openai.form.unknownMessage.label"),children:a.jsx(X,{})}),a.jsx(De,{name:"listeningFromMe",label:e("openai.form.listeningFromMe.label"),reverse:!0}),a.jsx(De,{name:"stopBotFromMe",label:e("openai.form.stopBotFromMe.label"),reverse:!0}),a.jsx(De,{name:"keepOpen",label:e("openai.form.keepOpen.label"),reverse:!0}),a.jsx(De,{name:"speechToText",label:e("openai.form.speechToText.label"),reverse:!0}),a.jsx(ge,{name:"debounceTime",label:e("openai.form.debounceTime.label"),children:a.jsx(X,{type:"number"})}),a.jsx(De,{name:"splitMessages",label:e("openai.form.splitMessages.label"),reverse:!0}),h.watch("splitMessages")&&a.jsx(ge,{name:"timePerChar",label:e("openai.form.timePerChar.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ti,{name:"ignoreJids",label:e("openai.form.ignoreJids.label"),placeholder:e("openai.form.ignoreJids.placeholder")})]})}),a.jsx(Kt,{children:a.jsx(q,{type:"submit",children:e("openai.button.save")})})]})})]})]})}const ise=e=>["openai","getModels",JSON.stringify(e)],lse=async({instanceName:e,openaiCredsId:t,token:n})=>{const r=t?{openaiCredsId:t}:{};return(await je.get(`/openai/getModels/${e}`,{headers:{apiKey:n},params:r})).data},cse=e=>{const{instanceName:t,openaiCredsId:n,token:r,...s}=e;return vt({staleTime:1e3*60*60*6,...s,queryKey:ise({instanceName:t,openaiCredsId:n}),queryFn:()=>lse({instanceName:t,openaiCredsId:n,token:r}),enabled:!!t&&!!n&&(e.enabled??!0)})},use=e=>["openai","fetchSessions",JSON.stringify(e)],dse=async({instanceName:e,openaiId:t,token:n})=>(await je.get(`/openai/fetchSessions/${t}/${e}`,{headers:{apiKey:n}})).data,fse=e=>{const{instanceName:t,token:n,openaiId:r,...s}=e;return vt({...s,queryKey:use({instanceName:t}),queryFn:()=>dse({instanceName:t,token:n,openaiId:r}),enabled:!!t&&!!r&&(e.enabled??!0)})},dp={name:"",number:"",status:"all",time:"all",customCondition:"more",customValue:"",customUnit:"minutes"};function pse(e,t){const n=parseInt(e);return!n||isNaN(n)||n<=0?null:t==="hours"?n*60:t==="days"?n*1440:n}function hse(e,t){if(t.time==="all")return!0;const n=(Date.now()-new Date(e).getTime())/6e4;if(t.time==="custom"){const r=pse(t.customValue,t.customUnit);return r===null?!0:t.customCondition==="more"?n>r:n<=r}if(t.time.startsWith(">")){const r=parseInt(t.time.slice(1));return n>r}return n<=parseInt(t.time)}function tO({openaiId:e}){const{t}=Fe(),{instance:n}=dt(),{changeStatusOpenai:r}=Ed(),[s,o]=y.useState(!1),[l,u]=y.useState([]),[d,f]=y.useState({}),[h,m]=y.useState(dp),[g,x]=y.useState(dp),[b,w]=y.useState(9),[C,k]=y.useState(9),[N,T]=y.useState("opened"),[_,I]=y.useState(!1),[M,A]=y.useState(""),[O,F]=y.useState(""),[z,Z]=y.useState(!1),{data:B,refetch:ce}=fse({instanceName:n?.name,openaiId:e,enabled:s}),H=y.useMemo(()=>{const j=B??[],P=g.name.trim().toLowerCase(),pe=g.number.trim();return j.filter(xe=>!(P&&!xe.pushName?.toLowerCase().includes(P)||pe&&!xe.remoteJid.includes(pe)||g.status!=="all"&&xe.status!==g.status||!hse(xe.updatedAt,g)))},[B,g]),oe=H.slice(0,C),Q=y.useMemo(()=>Object.keys(d).filter(j=>d[j]).map(j=>oe[Number(j)]?.remoteJid).filter(Boolean),[d,oe]);y.useEffect(()=>{k(b),f({})},[g,b]);const ne=()=>{ce()},V=()=>{x(h)},K=()=>{m(dp),x(dp)},U=async(j,P)=>{try{if(!n)return;await r({instanceName:n.name,token:n.token,remoteJid:j,status:P}),re.success(t("openai.toast.success.status")),ne()}catch(pe){console.error("Error:",pe),re.error(`Error : ${pe?.response?.data?.response?.message}`)}},D=async()=>{if(Q.length===0){re.error(t("sessions.mass.noneSelected"));return}try{if(!n)return;await Promise.all(Q.map(j=>r({instanceName:n.name,token:n.token,remoteJid:j,status:N}))),re.success(t("sessions.mass.success")),f({}),ne()}catch(j){console.error(j),re.error(j?.response?.data?.response?.message??t("sessions.mass.error"))}},J=j=>{A(j),F(""),I(!0)},ae=async()=>{if(!O.trim()){re.error(t("sessions.send.empty"));return}try{if(!n)return;Z(!0),await je.post(`/message/sendText/${n.name}`,{number:M,text:O},{headers:{apikey:n.token}}),re.success(t("sessions.send.success")),I(!1),F(""),A("")}catch(j){console.error("Error:",j),re.error(j?.response?.data?.response?.message??j?.message??t("sessions.send.error"))}finally{Z(!1)}},ee=[{id:"select",header:({table:j})=>a.jsx(Xr,{checked:j.getIsAllPageRowsSelected()||j.getIsSomePageRowsSelected()&&"indeterminate",onCheckedChange:P=>j.toggleAllPageRowsSelected(!!P),"aria-label":t("sessions.mass.selectAll")}),cell:({row:j})=>a.jsx(Xr,{checked:j.getIsSelected(),onCheckedChange:P=>j.toggleSelected(!!P),"aria-label":t("sessions.mass.selectAll")}),enableSorting:!1},{accessorKey:"remoteJid",header:()=>a.jsx("div",{className:"text-center",children:t("openai.sessions.table.remoteJid")}),cell:({row:j})=>a.jsx("div",{children:j.getValue("remoteJid")})},{accessorKey:"pushName",header:()=>a.jsx("div",{className:"text-center",children:t("openai.sessions.table.pushName")}),cell:({row:j})=>a.jsx("div",{children:j.getValue("pushName")})},{accessorKey:"sessionId",header:()=>a.jsx("div",{className:"text-center",children:t("openai.sessions.table.sessionId")}),cell:({row:j})=>a.jsx("div",{children:j.getValue("sessionId")})},{accessorKey:"status",header:()=>a.jsx("div",{className:"text-center",children:t("openai.sessions.table.status")}),cell:({row:j})=>a.jsx("div",{children:j.getValue("status")})},{id:"actions",enableHiding:!1,cell:({row:j})=>{const P=j.original;return a.jsxs(ms,{children:[a.jsx(gs,{asChild:!0,children:a.jsxs(q,{variant:"ghost",size:"icon",children:[a.jsx("span",{className:"sr-only",children:t("openai.sessions.table.actions.title")}),a.jsx(Jo,{className:"h-4 w-4"})]})}),a.jsxs(vs,{align:"end",children:[a.jsx(Qo,{children:t("openai.sessions.table.actions.title")}),a.jsx(Yo,{}),P.status!=="opened"&&a.jsxs(St,{onClick:()=>U(P.remoteJid,"opened"),children:[a.jsx(tl,{className:"mr-2 h-4 w-4"}),t("openai.sessions.table.actions.open")]}),P.status!=="paused"&&P.status!=="closed"&&a.jsxs(St,{onClick:()=>U(P.remoteJid,"paused"),children:[a.jsx(el,{className:"mr-2 h-4 w-4"}),t("openai.sessions.table.actions.pause")]}),P.status!=="closed"&&a.jsxs(St,{onClick:()=>U(P.remoteJid,"closed"),children:[a.jsx(Qi,{className:"mr-2 h-4 w-4"}),t("openai.sessions.table.actions.close")]}),a.jsxs(St,{onClick:()=>J(P.remoteJid),children:[a.jsx(Xi,{className:"mr-2 h-4 w-4"}),t("sessions.actions.sendMessage")]}),a.jsxs(St,{onClick:()=>U(P.remoteJid,"delete"),children:[a.jsx(Yi,{className:"mr-2 h-4 w-4"}),t("openai.sessions.table.actions.delete")]})]})]})}}],ie=["all","5","10","15","20","30","60",">60",">120",">300",">1440","custom"],ue=["all","opened","paused","closed"];return a.jsxs(gt,{open:s,onOpenChange:o,children:[a.jsx(rn,{asChild:!0,children:a.jsxs(q,{variant:"secondary",size:"sm",children:[a.jsx(Zi,{size:16,className:"mr-1"}),a.jsx("span",{className:"hidden md:inline",children:t("openai.sessions.label")})]})}),a.jsxs(pt,{className:"max-w-7xl h-[85vh] flex flex-col overflow-hidden",children:[a.jsx(ht,{children:a.jsx(bt,{children:t("openai.sessions.label")})}),a.jsxs("div",{className:"flex-1 space-y-4 overflow-y-auto pr-2",children:[a.jsxs(Bn,{children:[a.jsx(Yn,{children:a.jsx(Zn,{className:"text-base",children:t("sessions.filters.title")})}),a.jsxs(zn,{className:"space-y-4",children:[a.jsxs("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-4",children:[a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{children:t("sessions.filters.name")}),a.jsx(X,{placeholder:t("sessions.filters.namePlaceholder"),value:h.name,onChange:j=>m(P=>({...P,name:j.target.value}))})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{children:t("sessions.filters.number")}),a.jsx(X,{placeholder:t("sessions.filters.numberPlaceholder"),value:h.number,onChange:j=>m(P=>({...P,number:j.target.value}))})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{children:t("sessions.filters.status")}),a.jsxs(Mt,{value:h.status,onValueChange:j=>m(P=>({...P,status:j})),children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsx(Pt,{children:ue.map(j=>a.jsx(we,{value:j,children:t(`sessions.filters.statusOptions.${j}`)},j))})]})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{children:t("sessions.filters.time")}),a.jsxs(Mt,{value:h.time,onValueChange:j=>m(P=>({...P,time:j})),children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsx(Pt,{children:ie.map(j=>a.jsx(we,{value:j,children:t(`sessions.filters.timeOptions.${j}`)},j))})]})]})]}),h.time==="custom"&&a.jsxs("div",{className:"grid grid-cols-1 gap-2 md:grid-cols-3",children:[a.jsxs(Mt,{value:h.customCondition,onValueChange:j=>m(P=>({...P,customCondition:j})),children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsxs(Pt,{children:[a.jsx(we,{value:"more",children:t("sessions.filters.custom.more")}),a.jsx(we,{value:"less",children:t("sessions.filters.custom.less")})]})]}),a.jsx(X,{type:"number",min:1,placeholder:t("sessions.filters.custom.valuePlaceholder"),value:h.customValue,onChange:j=>m(P=>({...P,customValue:j.target.value}))}),a.jsxs(Mt,{value:h.customUnit,onValueChange:j=>m(P=>({...P,customUnit:j})),children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsxs(Pt,{children:[a.jsx(we,{value:"minutes",children:t("sessions.filters.custom.minutes")}),a.jsx(we,{value:"hours",children:t("sessions.filters.custom.hours")}),a.jsx(we,{value:"days",children:t("sessions.filters.custom.days")})]})]})]}),a.jsxs("div",{className:"flex flex-wrap gap-2",children:[a.jsx(q,{onClick:V,size:"sm",children:t("sessions.filters.apply")}),a.jsx(q,{onClick:K,size:"sm",variant:"outline",children:t("sessions.filters.clear")}),a.jsxs(q,{onClick:ne,size:"sm",variant:"outline",children:[a.jsx(nl,{size:14,className:"mr-1"}),t("button.refresh")]})]})]})]}),Q.length>0&&a.jsxs(Bn,{children:[a.jsx(Yn,{children:a.jsx(Zn,{className:"text-base",children:t("sessions.mass.title")})}),a.jsx(zn,{children:a.jsxs("div",{className:"flex flex-wrap items-end gap-3",children:[a.jsx("div",{className:"text-sm text-muted-foreground",children:t("sessions.mass.selected",{count:Q.length})}),a.jsxs("div",{className:"flex-1 min-w-[180px] space-y-1",children:[a.jsx(Ue,{children:t("sessions.mass.newStatus")}),a.jsxs(Mt,{value:N,onValueChange:T,children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsxs(Pt,{children:[a.jsx(we,{value:"opened",children:t("openai.sessions.table.actions.open")}),a.jsx(we,{value:"paused",children:t("openai.sessions.table.actions.pause")}),a.jsx(we,{value:"closed",children:t("openai.sessions.table.actions.close")}),a.jsx(we,{value:"delete",children:t("openai.sessions.table.actions.delete")})]})]})]}),a.jsx(q,{onClick:D,size:"sm",children:t("sessions.mass.apply")})]})})]}),a.jsx(ai,{columns:ee,data:oe,onSortingChange:u,state:{sorting:l,rowSelection:d},onRowSelectionChange:f,enableRowSelection:!0,getRowId:(j,P)=>String(P),noResultsMessage:t("sessions.empty")}),a.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3 px-1 text-sm text-muted-foreground",children:[a.jsx("span",{children:t("sessions.pagination.showing",{shown:oe.length,total:H.length})}),a.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[a.jsx(Ue,{htmlFor:"per-page",className:"text-xs",children:t("sessions.pagination.perPage")}),a.jsxs(Mt,{value:String(b),onValueChange:j=>w(parseInt(j)),children:[a.jsx(Rt,{id:"per-page",className:"h-8 w-20",children:a.jsx(_t,{})}),a.jsxs(Pt,{children:[a.jsx(we,{value:"9",children:"9"}),a.jsx(we,{value:"25",children:"25"}),a.jsx(we,{value:"50",children:"50"}),a.jsx(we,{value:"100",children:"100"})]})]}),Ck(j=>Math.min(j+b,H.length)),children:t("sessions.pagination.showMore")}),Ck(H.length),children:t("sessions.pagination.showAll")}),C>b&&a.jsx(q,{size:"sm",variant:"outline",onClick:()=>k(b),children:t("sessions.pagination.showLess")})]})]})]}),a.jsx(gt,{open:_,onOpenChange:j=>!z&&I(j),children:a.jsxs(pt,{className:"sm:max-w-md",children:[a.jsx(ht,{children:a.jsx(bt,{children:t("sessions.send.title")})}),a.jsxs("div",{className:"space-y-3",children:[a.jsxs("div",{className:"space-y-1",children:[a.jsx(Ue,{children:t("sessions.send.to")}),a.jsx(X,{value:M,disabled:!0})]}),a.jsxs("div",{className:"space-y-1",children:[a.jsx(Ue,{children:t("sessions.send.messagePlaceholder")}),a.jsx(Zo,{rows:4,placeholder:t("sessions.send.messagePlaceholder"),value:O,onChange:j=>F(j.target.value)})]})]}),a.jsxs(Kt,{children:[a.jsx(q,{variant:"outline",onClick:()=>I(!1),disabled:z,children:t("button.cancel")}),a.jsx(q,{onClick:ae,disabled:z,children:t(z?"sessions.send.sending":"sessions.send.send")})]})]})})]})]})}const mse=hn({enabled:Re(),description:ye(),openaiCredsId:ye(),botType:ye(),assistantId:ye().optional(),functionUrl:ye().optional(),model:ye().optional(),systemMessages:ye().optional(),assistantMessages:ye().optional(),userMessages:ye().optional(),maxTokens:Vt.number().optional(),triggerType:ye(),triggerOperator:ye().optional(),triggerValue:ye().optional(),expire:Vt.number().optional(),keywordFinish:ye().optional(),delayMessage:Vt.number().optional(),unknownMessage:ye().optional(),listeningFromMe:Re().optional(),stopBotFromMe:Re().optional(),keepOpen:Re().optional(),debounceTime:Vt.number().optional(),splitMessages:Re().optional(),timePerChar:Vt.number().optional()});function nO({initialData:e,onSubmit:t,handleDelete:n,openaiId:r,isModal:s=!1,isLoading:o=!1,openDeletionDialog:l=!1,setOpenDeletionDialog:u=()=>{},open:d}){const{t:f}=Fe(),{instance:h}=dt(),[m,g]=y.useState(!1),{data:x,refetch:b}=xw({instanceName:h?.name,enabled:d}),w=fn({resolver:pn(mse),defaultValues:e||{enabled:!0,description:"",openaiCredsId:"",botType:"assistant",assistantId:"",functionUrl:"",model:"",systemMessages:"",assistantMessages:"",userMessages:"",maxTokens:0,triggerType:"keyword",triggerOperator:"contains",triggerValue:"",expire:0,keywordFinish:"",delayMessage:0,unknownMessage:"",listeningFromMe:!1,stopBotFromMe:!1,keepOpen:!1,debounceTime:0,splitMessages:!1,timePerChar:0}}),C=w.watch("botType"),k=w.watch("triggerType"),N=w.watch("openaiCredsId"),{data:T,isLoading:_,refetch:I}=cse({instanceName:h?.name,openaiCredsId:N,token:h?.token,enabled:m&&!!N}),M=()=>{N&&(g(!0),I())},A=()=>{b()};return a.jsx(hr,{...w,children:a.jsxs("form",{onSubmit:w.handleSubmit(t),className:"w-full space-y-6",children:[a.jsxs("div",{className:"space-y-4",children:[a.jsx(De,{name:"enabled",label:f("openai.form.enabled.label"),reverse:!0}),a.jsx(ge,{name:"description",label:f("openai.form.description.label"),required:!0,children:a.jsx(X,{})}),a.jsx("div",{className:"space-y-2",children:a.jsxs("div",{className:"flex items-end gap-2",children:[a.jsx("div",{className:"flex-1",children:a.jsx(dn,{name:"openaiCredsId",label:f("openai.form.openaiCredsId.label"),required:!0,options:x?.filter(O=>!!O.id).map(O=>({label:O.name?O.name:O.apiKey.substring(0,15)+"...",value:O.id}))??[]})}),a.jsx(eO,{onCredentialsUpdate:A,showText:!1})]})}),a.jsxs("div",{className:"flex flex-col",children:[a.jsx("h3",{className:"my-4 text-lg font-medium",children:f("openai.form.openaiSettings.label")}),a.jsx(nn,{})]}),a.jsx(dn,{name:"botType",label:f("openai.form.botType.label"),required:!0,options:[{label:f("openai.form.botType.assistant"),value:"assistant"},{label:f("openai.form.botType.chatCompletion"),value:"chatCompletion"}]}),C==="assistant"&&a.jsxs(a.Fragment,{children:[a.jsx(ge,{name:"assistantId",label:f("openai.form.assistantId.label"),required:!0,children:a.jsx(X,{})}),a.jsx(ge,{name:"functionUrl",label:f("openai.form.functionUrl.label"),required:!0,children:a.jsx(X,{})})]}),C==="chatCompletion"&&a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"space-y-2",children:a.jsxs("div",{className:"flex items-end gap-2",children:[a.jsx("div",{className:"flex-1",children:a.jsx(dn,{name:"model",label:f("openai.form.model.label"),required:!0,disabled:!T||T.length===0,options:T?.map(O=>({label:O.id,value:O.id}))??[]})}),a.jsx(q,{type:"button",variant:"outline",size:"sm",disabled:!N||_,onClick:M,className:"mb-2",children:_?a.jsxs(a.Fragment,{children:[a.jsx(ac,{className:"mr-2 h-4 w-4 animate-spin"}),f("openai.button.loading")]}):a.jsxs(a.Fragment,{children:[a.jsx(ac,{className:"mr-2 h-4 w-4"}),f("openai.button.loadModels")]})})]})}),a.jsx(ge,{name:"systemMessages",label:f("openai.form.systemMessages.label"),children:a.jsx(Oo,{})}),a.jsx(ge,{name:"assistantMessages",label:f("openai.form.assistantMessages.label"),children:a.jsx(Oo,{})}),a.jsx(ge,{name:"userMessages",label:f("openai.form.userMessages.label"),children:a.jsx(Oo,{})}),a.jsx(ge,{name:"maxTokens",label:f("openai.form.maxTokens.label"),children:a.jsx(X,{type:"number"})})]}),a.jsxs("div",{className:"flex flex-col",children:[a.jsx("h3",{className:"my-4 text-lg font-medium",children:f("openai.form.triggerSettings.label")}),a.jsx(nn,{})]}),a.jsx(dn,{name:"triggerType",label:f("openai.form.triggerType.label"),required:!0,options:[{label:f("openai.form.triggerType.keyword"),value:"keyword"},{label:f("openai.form.triggerType.all"),value:"all"},{label:f("openai.form.triggerType.advanced"),value:"advanced"},{label:f("openai.form.triggerType.none"),value:"none"}]}),k==="keyword"&&a.jsxs(a.Fragment,{children:[a.jsx(dn,{name:"triggerOperator",label:f("openai.form.triggerOperator.label"),required:!0,options:[{label:f("openai.form.triggerOperator.contains"),value:"contains"},{label:f("openai.form.triggerOperator.equals"),value:"equals"},{label:f("openai.form.triggerOperator.startsWith"),value:"startsWith"},{label:f("openai.form.triggerOperator.endsWith"),value:"endsWith"},{label:f("openai.form.triggerOperator.regex"),value:"regex"}]}),a.jsx(ge,{name:"triggerValue",label:f("openai.form.triggerValue.label"),required:!0,children:a.jsx(X,{})})]}),k==="advanced"&&a.jsx(ge,{name:"triggerValue",label:f("openai.form.triggerConditions.label"),required:!0,children:a.jsx(X,{})}),a.jsxs("div",{className:"flex flex-col",children:[a.jsx("h3",{className:"my-4 text-lg font-medium",children:f("openai.form.generalSettings.label")}),a.jsx(nn,{})]}),a.jsx(ge,{name:"expire",label:f("openai.form.expire.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ge,{name:"keywordFinish",label:f("openai.form.keywordFinish.label"),children:a.jsx(X,{})}),a.jsx(ge,{name:"delayMessage",label:f("openai.form.delayMessage.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ge,{name:"unknownMessage",label:f("openai.form.unknownMessage.label"),children:a.jsx(X,{})}),a.jsx(De,{name:"listeningFromMe",label:f("openai.form.listeningFromMe.label"),reverse:!0}),a.jsx(De,{name:"stopBotFromMe",label:f("openai.form.stopBotFromMe.label"),reverse:!0}),a.jsx(De,{name:"keepOpen",label:f("openai.form.keepOpen.label"),reverse:!0}),a.jsx(ge,{name:"debounceTime",label:f("openai.form.debounceTime.label"),children:a.jsx(X,{type:"number"})}),a.jsx(De,{name:"splitMessages",label:f("openai.form.splitMessages.label"),reverse:!0}),w.watch("splitMessages")&&a.jsx(ge,{name:"timePerChar",label:f("openai.form.timePerChar.label"),children:a.jsx(X,{type:"number"})})]}),s&&a.jsx(Kt,{children:a.jsx(q,{disabled:o,type:"submit",children:f(o?"openai.button.saving":"openai.button.save")})}),!s&&a.jsxs("div",{children:[a.jsx(tO,{openaiId:r}),a.jsxs("div",{className:"mt-5 flex items-center gap-3",children:[a.jsxs(gt,{open:l,onOpenChange:u,children:[a.jsx(rn,{asChild:!0,children:a.jsx(q,{variant:"destructive",size:"sm",children:f("dify.button.delete")})}),a.jsx(pt,{children:a.jsxs(ht,{children:[a.jsx(bt,{children:f("modal.delete.title")}),a.jsx(kr,{children:f("modal.delete.messageSingle")}),a.jsxs(Kt,{children:[a.jsx(q,{size:"sm",variant:"outline",onClick:()=>u(!1),children:f("button.cancel")}),a.jsx(q,{variant:"destructive",onClick:n,children:f("button.delete")})]})]})})]}),a.jsx(q,{disabled:o,type:"submit",children:f(o?"openai.button.saving":"openai.button.update")})]})]})]})})}function gse({resetTable:e}){const{t}=Fe(),{instance:n}=dt(),{createOpenai:r}=Ed(),[s,o]=y.useState(!1),[l,u]=y.useState(!1),d=async f=>{try{if(!n||!n.name)throw new Error("instance not found");o(!0);const h={enabled:f.enabled,description:f.description,openaiCredsId:f.openaiCredsId,botType:f.botType,assistantId:f.assistantId||"",functionUrl:f.functionUrl||"",model:f.model||"",systemMessages:[f.systemMessages||""],assistantMessages:[f.assistantMessages||""],userMessages:[f.userMessages||""],maxTokens:f.maxTokens||0,triggerType:f.triggerType,triggerOperator:f.triggerOperator||"",triggerValue:f.triggerValue||"",expire:f.expire||0,keywordFinish:f.keywordFinish||"",delayMessage:f.delayMessage||0,unknownMessage:f.unknownMessage||"",listeningFromMe:f.listeningFromMe||!1,stopBotFromMe:f.stopBotFromMe||!1,keepOpen:f.keepOpen||!1,debounceTime:f.debounceTime||0,splitMessages:f.splitMessages||!1,timePerChar:f.timePerChar||0};await r({instanceName:n.name,token:n.token,data:h}),re.success(t("openai.toast.success.create")),u(!1),e()}catch(h){console.error("Error:",h),re.error(`Error: ${h?.response?.data?.response?.message}`)}finally{o(!1)}};return a.jsxs(gt,{open:l,onOpenChange:u,children:[a.jsx(rn,{asChild:!0,children:a.jsxs(q,{size:"sm",children:[a.jsx(Yr,{size:16,className:"mr-1"}),a.jsx("span",{className:"hidden sm:inline",children:t("openai.button.create")})]})}),a.jsxs(pt,{className:"overflow-y-auto sm:max-h-[600px] sm:max-w-[740px]",children:[a.jsx(ht,{children:a.jsx(bt,{children:t("openai.form.title")})}),a.jsx(nO,{onSubmit:d,isModal:!0,isLoading:s,open:l})]})]})}const vse=e=>["openai","getOpenai",JSON.stringify(e)],yse=async({instanceName:e,token:t,openaiId:n})=>{const r=await je.get(`/openai/fetch/${n}/${e}`,{headers:{apiKey:t}});return Array.isArray(r.data)?r.data[0]:r.data},bse=e=>{const{instanceName:t,token:n,openaiId:r,...s}=e;return vt({...s,queryKey:vse({instanceName:t}),queryFn:()=>yse({instanceName:t,token:n,openaiId:r}),enabled:!!t&&!!r&&(e.enabled??!0)})};function xse({openaiId:e,resetTable:t}){const{t:n}=Fe(),{instance:r}=dt(),s=jn(),[o,l]=y.useState(!1),{deleteOpenai:u,updateOpenai:d}=Ed(),{data:f,isLoading:h}=bse({instanceName:r?.name,openaiId:e}),m=y.useMemo(()=>({enabled:f?.enabled??!0,description:f?.description??"",openaiCredsId:f?.openaiCredsId??"",botType:f?.botType??"",assistantId:f?.assistantId||"",functionUrl:f?.functionUrl||"",model:f?.model||"",systemMessages:Array.isArray(f?.systemMessages)?f?.systemMessages.join(", "):f?.systemMessages||"",assistantMessages:Array.isArray(f?.assistantMessages)?f?.assistantMessages.join(", "):f?.assistantMessages||"",userMessages:Array.isArray(f?.userMessages)?f?.userMessages.join(", "):f?.userMessages||"",maxTokens:f?.maxTokens||0,triggerType:f?.triggerType||"",triggerOperator:f?.triggerOperator||"",triggerValue:f?.triggerValue,expire:f?.expire||0,keywordFinish:f?.keywordFinish,delayMessage:f?.delayMessage||0,unknownMessage:f?.unknownMessage,listeningFromMe:f?.listeningFromMe,stopBotFromMe:f?.stopBotFromMe,keepOpen:f?.keepOpen,debounceTime:f?.debounceTime||0,splitMessages:f?.splitMessages||!1,timePerChar:f?.timePerChar||0}),[f?.assistantId,f?.assistantMessages,f?.botType,f?.debounceTime,f?.delayMessage,f?.description,f?.enabled,f?.expire,f?.functionUrl,f?.keepOpen,f?.keywordFinish,f?.listeningFromMe,f?.maxTokens,f?.model,f?.openaiCredsId,f?.stopBotFromMe,f?.systemMessages,f?.triggerOperator,f?.triggerType,f?.triggerValue,f?.unknownMessage,f?.userMessages,f?.splitMessages,f?.timePerChar]),g=async b=>{try{if(r&&r.name&&e){const w={enabled:b.enabled,description:b.description,openaiCredsId:b.openaiCredsId,botType:b.botType,assistantId:b.assistantId||"",functionUrl:b.functionUrl||"",model:b.model||"",systemMessages:[b.systemMessages||""],assistantMessages:[b.assistantMessages||""],userMessages:[b.userMessages||""],maxTokens:b.maxTokens||0,triggerType:b.triggerType,triggerOperator:b.triggerOperator||"",triggerValue:b.triggerValue||"",expire:b.expire||0,keywordFinish:b.keywordFinish||"",delayMessage:b.delayMessage||1e3,unknownMessage:b.unknownMessage||"",listeningFromMe:b.listeningFromMe||!1,stopBotFromMe:b.stopBotFromMe||!1,keepOpen:b.keepOpen||!1,debounceTime:b.debounceTime||0,splitMessages:b.splitMessages||!1,timePerChar:b.timePerChar||0};await d({instanceName:r.name,openaiId:e,data:w}),re.success(n("openai.toast.success.update")),t(),s(`/manager/instance/${r.id}/openai/${e}`)}else console.error("Token not found")}catch(w){console.error("Error:",w),re.error(`Error: ${w?.response?.data?.response?.message}`)}},x=async()=>{try{r&&r.name&&e?(await u({instanceName:r.name,openaiId:e}),re.success(n("openai.toast.success.delete")),l(!1),t(),s(`/manager/instance/${r.id}/openai`)):console.error("instance not found")}catch(b){console.error("Erro ao excluir dify:",b)}};return h?a.jsx(Vn,{}):a.jsx("div",{className:"m-4",children:a.jsx(nO,{initialData:m,onSubmit:g,openaiId:e,handleDelete:x,isModal:!1,isLoading:h,openDeletionDialog:o,setOpenDeletionDialog:l})})}function lE(){const{t:e}=Fe(),t=Ya("(min-width: 768px)"),{instance:n}=dt(),{botId:r}=_s(),{data:s,isLoading:o,refetch:l,error:u}=XI({instanceName:n?.name}),d=jn(),f=m=>{n&&d(`/manager/instance/${n.id}/openai/${m}`)},h=()=>{l()};return a.jsx("main",{className:"pt-5",children:a.jsxs(sa,{error:u,name:"OpenAI",envVar:"OPENAI_ENABLED",children:[a.jsxs("div",{className:"mb-1 flex items-center justify-between",children:[a.jsx("h3",{className:"text-lg font-medium",children:e("openai.title")}),a.jsxs("div",{className:"flex items-center justify-end gap-2",children:[a.jsx(tO,{}),a.jsx(ose,{}),a.jsx(eO,{}),a.jsx(gse,{resetTable:h})]})]}),a.jsx(nn,{className:"my-4"}),a.jsxs(ri,{direction:t?"horizontal":"vertical",children:[a.jsx(Er,{defaultSize:r?35:100,className:"pr-4",children:a.jsx("div",{className:"flex flex-col gap-3",children:o?a.jsx(Vn,{}):a.jsx(a.Fragment,{children:s&&s.length>0&&Array.isArray(s)?s.map(m=>a.jsxs(q,{className:"flex h-auto flex-col items-start justify-start",onClick:()=>f(`${m.id}`),variant:r===m.id?"secondary":"outline",children:[a.jsx("h4",{className:"text-base",children:m.description||m.id}),a.jsx("p",{className:"text-sm font-normal text-muted-foreground",children:m.botType})]},m.id)):a.jsx(q,{variant:"link",children:e("openai.table.none")})})})}),r&&a.jsxs(a.Fragment,{children:[a.jsx(si,{withHandle:!0,className:"border border-border"}),a.jsx(Er,{children:a.jsx(xse,{openaiId:r,resetTable:h})})]})]})]})})}const wse=e=>{if(!e||e==="")return{enabled:!1,host:"",port:"",protocol:"",username:"",password:""};try{const t=JSON.parse(e);return{enabled:!0,host:t.host??"",port:t.port??"",protocol:"http",username:t.username??"",password:t.password??""}}catch{return{enabled:!1,host:"",port:"",protocol:"",username:"",password:""}}},Sse=e=>["proxy","fetchProxy","go",JSON.stringify(e)],Cse=e=>{const t=qa(),{instanceName:n,token:r,enabled:s,...o}=e;return vt({...o,queryKey:Sse({instanceName:n,token:r}),queryFn:async()=>{let u=t.getQueryData(["instance","fetchInstances","go"])?.find(f=>f.name===n)?.id;if(!u){const f=t.getQueriesData({queryKey:["instance","fetchInstance","go"]});for(const[,h]of f)if(h&&h.name===n){u=h.id;break}}if(!u)throw new Error(`Instance "${n}" not found in cache`);const d=await Dn.get(`/instance/info/${u}`);return wse(d.data?.data?.proxy)},enabled:!!n&&(s??!0),retry:!1})},jse=e=>["proxy","fetchProxy",JSON.stringify(e)],kse=async({instanceName:e,token:t})=>(await je.get(`/proxy/find/${e}`,{headers:{apiKey:t}})).data,Ese=e=>{const{instanceName:t,token:n,enabled:r,...s}=e;return vt({...s,queryKey:jse({instanceName:t,token:n}),queryFn:()=>kse({instanceName:t,token:n}),enabled:!!t&&(r??!0)})},Nse=e=>{const t=Fr(),n=Ese({...e,enabled:(e.enabled??!0)&&t==="api"}),r=Cse({...e,enabled:(e.enabled??!0)&&t==="go"});return t==="go"?r:n},Tse=e=>{const t=r=>e.getQueryData(["instance","fetchInstances","go"])?.find(o=>o.name===r)?.id;return{createProxy:async({instanceName:r,data:s})=>{const o=t(r);if(!o)throw new Error(`Instance "${r}" not found in cache`);if(!(!!s.host&&!!s.port))return(await Dn.delete(`/instance/proxy/${o}`)).data;const u={host:s.host,port:s.port,username:s.username??"",password:s.password??""};return(await Dn.post(`/instance/proxy/${o}`,u)).data}}},Mse=async({instanceName:e,token:t,data:n})=>(await je.post(`/proxy/set/${e}`,n,{headers:{apikey:t}})).data;function _se(){const e=qa(),n=Fr()==="go"?Tse(e):null;return{createProxy:it(n?n.createProxy:Mse,{invalidateKeys:[["proxy","fetchProxy"]]})}}const Rse=hn({enabled:Re(),host:ye(),port:ye(),protocol:ye(),username:ye(),password:ye()});function Pse(){const{t:e}=Fe(),{instance:t}=dt(),[n,r]=y.useState(!1),s=Fr()==="go",{createProxy:o}=_se(),{data:l}=Nse({instanceName:t?.name}),u=fn({resolver:pn(Rse),defaultValues:{enabled:!1,host:"",port:"",protocol:"http",username:"",password:""}});y.useEffect(()=>{l&&u.reset({enabled:l.enabled,host:l.host,port:l.port,protocol:l.protocol,username:l.username,password:l.password})},[l]);const d=async f=>{if(t){r(!0);try{const h={enabled:f.enabled,host:f.host,port:f.port,protocol:f.protocol,username:f.username,password:f.password};await o({instanceName:t.name,token:t.token,data:h}),re.success(e("proxy.toast.success"))}catch(h){console.error(e("proxy.toast.error"),h),re.error(`Error : ${h?.response?.data?.response?.message}`)}finally{r(!1)}}};return a.jsx(a.Fragment,{children:a.jsx(Ja,{...u,children:a.jsx("form",{onSubmit:u.handleSubmit(d),className:"w-full space-y-6",children:a.jsxs("div",{children:[a.jsx("h3",{className:"mb-1 text-lg font-medium",children:e("proxy.title")}),a.jsx(al,{className:"my-4"}),a.jsxs("div",{className:"mx-4 space-y-2 divide-y [&>*]:p-4",children:[!s&&a.jsx(De,{name:"enabled",label:e("proxy.form.enabled.label"),className:"w-full justify-between",helper:e("proxy.form.enabled.description")}),a.jsxs("div",{className:"grid gap-4 sm:grid-cols-[10rem_1fr_10rem] md:gap-8",children:[a.jsx(ge,{name:"protocol",label:e("proxy.form.protocol.label"),children:a.jsx(X,{})}),a.jsx(ge,{name:"host",label:e("proxy.form.host.label"),children:a.jsx(X,{})}),a.jsx(ge,{name:"port",label:e("proxy.form.port.label"),children:a.jsx(X,{type:"number"})})]}),a.jsxs("div",{className:"grid gap-4 sm:grid-cols-2 md:gap-8",children:[a.jsx(ge,{name:"username",label:e("proxy.form.username.label"),children:a.jsx(X,{})}),a.jsx(ge,{name:"password",label:e("proxy.form.password.label"),children:a.jsx(X,{type:"password"})})]}),a.jsx("div",{className:"flex justify-end px-4 pt-6",children:a.jsx(q,{type:"submit",disabled:n,children:e(n?"proxy.button.saving":"proxy.button.save")})})]})]})})})})}const Ise=e=>["rabbitmq","fetchRabbitmq",JSON.stringify(e)],Ose=async({instanceName:e,token:t})=>(await je.get(`/rabbitmq/find/${e}`,{headers:{apiKey:t}})).data,Ase=e=>{const{instanceName:t,token:n,...r}=e;return vt({...r,queryKey:Ise({instanceName:t,token:n}),queryFn:()=>Ose({instanceName:t,token:n}),enabled:!!t})},Dse=async({instanceName:e,token:t,data:n})=>(await je.post(`/rabbitmq/set/${e}`,{rabbitmq:n},{headers:{apikey:t}})).data;function Fse(){return{createRabbitmq:it(Dse,{invalidateKeys:[["rabbitmq","fetchRabbitmq"]]})}}const Lse=hn({enabled:Re(),events:ra(ye())});function $se(){const{t:e}=Fe(),{instance:t}=dt(),[n,r]=y.useState(!1),{createRabbitmq:s}=Fse(),{data:o,error:l}=Ase({instanceName:t?.name,token:t?.token}),u=fn({resolver:pn(Lse),defaultValues:{enabled:!1,events:[]}});y.useEffect(()=>{o&&u.reset({enabled:o.enabled,events:o.events})},[o]);const d=async g=>{if(t){r(!0);try{const x={enabled:g.enabled,events:g.events};await s({instanceName:t.name,token:t.token,data:x}),re.success(e("rabbitmq.toast.success"))}catch(x){console.error(e("rabbitmq.toast.error"),x),re.error(`Error: ${x?.response?.data?.response?.message}`)}finally{r(!1)}}},f=["APPLICATION_STARTUP","QRCODE_UPDATED","MESSAGES_SET","MESSAGES_UPSERT","MESSAGES_UPDATE","MESSAGES_DELETE","SEND_MESSAGE","CONTACTS_SET","CONTACTS_UPSERT","CONTACTS_UPDATE","PRESENCE_UPDATE","CHATS_SET","CHATS_UPSERT","CHATS_UPDATE","CHATS_DELETE","GROUPS_UPSERT","GROUP_UPDATE","GROUP_PARTICIPANTS_UPDATE","CONNECTION_UPDATE","REMOVE_INSTANCE","LOGOUT_INSTANCE","LABELS_EDIT","LABELS_ASSOCIATION","CALL","TYPEBOT_START","TYPEBOT_CHANGE_STATUS"],h=()=>{u.setValue("events",f)},m=()=>{u.setValue("events",[])};return a.jsx(sa,{error:l,name:"RabbitMQ",envVar:"RABBITMQ_ENABLED",children:a.jsx(Ja,{...u,children:a.jsx("form",{onSubmit:u.handleSubmit(d),className:"w-full space-y-6",children:a.jsxs("div",{children:[a.jsx("h3",{className:"mb-1 text-lg font-medium",children:e("rabbitmq.title")}),a.jsx(al,{className:"my-4"}),a.jsxs("div",{className:"mx-4 space-y-2 divide-y [&>*]:p-4",children:[a.jsx(De,{name:"enabled",label:e("rabbitmq.form.enabled.label"),className:"w-full justify-between",helper:e("rabbitmq.form.enabled.description")}),a.jsxs("div",{className:"mb-4 flex justify-between",children:[a.jsx(q,{variant:"outline",type:"button",onClick:h,children:e("button.markAll")}),a.jsx(q,{variant:"outline",type:"button",onClick:m,children:e("button.unMarkAll")})]}),a.jsx(Qa,{control:u.control,name:"events",render:({field:g})=>a.jsxs(wa,{className:"flex flex-col",children:[a.jsx(Zr,{className:"my-2 text-lg",children:e("rabbitmq.form.events.label")}),a.jsx(Zs,{children:a.jsx("div",{className:"flex flex-col gap-2 space-y-1 divide-y",children:f.sort((x,b)=>x.localeCompare(b)).map(x=>a.jsxs("div",{className:"flex items-center justify-between gap-3 pt-3",children:[a.jsx(Zr,{className:ln("break-all",g.value.includes(x)?"text-foreground":"text-muted-foreground"),children:x}),a.jsx(jd,{checked:g.value.includes(x),onCheckedChange:b=>{b?g.onChange([...g.value,x]):g.onChange(g.value.filter(w=>w!==x))}})]},x))})})]})})]}),a.jsx("div",{className:"mx-4 flex justify-end pt-6",children:a.jsx(q,{type:"submit",disabled:n,children:e(n?"rabbitmq.button.saving":"rabbitmq.button.save")})})]})})})})}const Bse=e=>["instance","fetchSettings",JSON.stringify(e)],zse=async({instanceName:e,token:t})=>(await je.get(`/settings/find/${e}`,{headers:{apikey:t}})).data,Use=e=>{const{instanceName:t,token:n,enabled:r,...s}=e;return vt({...s,queryKey:Bse({instanceName:t,token:n}),queryFn:()=>zse({instanceName:t,token:n}),enabled:!!t&&(r??!0)})},Vse=e=>{const t=Fr(),n=Use({...e,enabled:(e.enabled??!0)&&t==="api"}),r=R6({...e,enabled:(e.enabled??!0)&&t==="go"});return t==="go"?r:n},qse=hn({rejectCall:Re(),msgCall:ye().optional(),groupsIgnore:Re(),alwaysOnline:Re(),readMessages:Re(),syncFullHistory:Re(),readStatus:Re()});function Hse(){const{t:e}=Fe(),[t,n]=y.useState(!1),{instance:r}=dt(),{updateSettings:s}=Cc(),{data:o,isLoading:l}=Vse({instanceName:r?.name,token:r?.token}),u=fn({resolver:pn(qse),defaultValues:{rejectCall:!1,msgCall:"",groupsIgnore:!1,alwaysOnline:!1,readMessages:!1,syncFullHistory:!1,readStatus:!1}});y.useEffect(()=>{o&&u.reset({rejectCall:o.rejectCall,msgCall:o.msgCall||"",groupsIgnore:o.groupsIgnore,alwaysOnline:o.alwaysOnline,readMessages:o.readMessages,syncFullHistory:o.syncFullHistory,readStatus:o.readStatus})},[u,o]);const d=async m=>{try{if(!r||!r.name)throw new Error("instance not found");n(!0);const g={rejectCall:m.rejectCall,msgCall:m.msgCall,groupsIgnore:m.groupsIgnore,alwaysOnline:m.alwaysOnline,readMessages:m.readMessages,syncFullHistory:m.syncFullHistory,readStatus:m.readStatus};await s({instanceName:r.name,token:r.token,data:g}),re.success(e("settings.toast.success"))}catch(g){console.error(e("settings.toast.success"),g),re.error(e("settings.toast.error"))}finally{n(!1)}},f=[{name:"groupsIgnore",label:e("settings.form.groupsIgnore.label"),description:e("settings.form.groupsIgnore.description")},{name:"alwaysOnline",label:e("settings.form.alwaysOnline.label"),description:e("settings.form.alwaysOnline.description")},{name:"readMessages",label:e("settings.form.readMessages.label"),description:e("settings.form.readMessages.description")},{name:"syncFullHistory",label:e("settings.form.syncFullHistory.label"),description:e("settings.form.syncFullHistory.description")},{name:"readStatus",label:e("settings.form.readStatus.label"),description:e("settings.form.readStatus.description")}],h=u.watch("rejectCall");return l?a.jsx(Vn,{}):a.jsx(a.Fragment,{children:a.jsx(Ja,{...u,children:a.jsx("form",{onSubmit:u.handleSubmit(d),className:"w-full space-y-6",children:a.jsxs("div",{children:[a.jsx("h3",{className:"mb-1 text-lg font-medium",children:e("settings.title")}),a.jsx(nn,{className:"my-4"}),a.jsxs("div",{className:"mx-4 space-y-2 divide-y",children:[a.jsxs("div",{className:"flex flex-col p-4",children:[a.jsx(De,{name:"rejectCall",label:e("settings.form.rejectCall.label"),className:"w-full justify-between",helper:e("settings.form.rejectCall.description")}),h&&a.jsx("div",{className:"mr-16 mt-2",children:a.jsx(ge,{name:"msgCall",children:a.jsx(Oo,{placeholder:e("settings.form.msgCall.description")})})})]}),f.map(m=>a.jsx("div",{className:"flex p-4",children:a.jsx(De,{name:m.name,label:m.label,className:"w-full justify-between",helper:m.description})},m.name)),a.jsx("div",{className:"flex justify-end pt-6",children:a.jsx(q,{type:"submit",disabled:t,children:e(t?"settings.button.saving":"settings.button.save")})})]})]})})})})}const Kse=e=>["sqs","fetchSqs",JSON.stringify(e)],Wse=async({instanceName:e,token:t})=>(await je.get(`/sqs/find/${e}`,{headers:{apiKey:t}})).data,Gse=e=>{const{instanceName:t,token:n,...r}=e;return vt({...r,queryKey:Kse({instanceName:t,token:n}),queryFn:()=>Wse({instanceName:t,token:n}),enabled:!!t})},Jse=async({instanceName:e,token:t,data:n})=>(await je.post(`/sqs/set/${e}`,{sqs:n},{headers:{apikey:t}})).data;function Qse(){return{createSqs:it(Jse,{invalidateKeys:[["sqs","fetchSqs"]]})}}const Yse=hn({enabled:Re(),events:ra(ye())});function Zse(){const{t:e}=Fe(),{instance:t}=dt(),[n,r]=y.useState(!1),{createSqs:s}=Qse(),{data:o,error:l}=Gse({instanceName:t?.name,token:t?.token}),u=fn({resolver:pn(Yse),defaultValues:{enabled:!1,events:[]}});y.useEffect(()=>{o&&u.reset({enabled:o.enabled,events:o.events})},[o]);const d=async g=>{if(t){r(!0);try{const x={enabled:g.enabled,events:g.events};await s({instanceName:t.name,token:t.token,data:x}),re.success(e("sqs.toast.success"))}catch(x){console.error(e("sqs.toast.error"),x),re.error(`Error: ${x?.response?.data?.response?.message}`)}finally{r(!1)}}},f=["APPLICATION_STARTUP","QRCODE_UPDATED","MESSAGES_SET","MESSAGES_UPSERT","MESSAGES_UPDATE","MESSAGES_DELETE","SEND_MESSAGE","CONTACTS_SET","CONTACTS_UPSERT","CONTACTS_UPDATE","PRESENCE_UPDATE","CHATS_SET","CHATS_UPSERT","CHATS_UPDATE","CHATS_DELETE","GROUPS_UPSERT","GROUP_UPDATE","GROUP_PARTICIPANTS_UPDATE","CONNECTION_UPDATE","REMOVE_INSTANCE","LOGOUT_INSTANCE","LABELS_EDIT","LABELS_ASSOCIATION","CALL","TYPEBOT_START","TYPEBOT_CHANGE_STATUS"],h=()=>{u.setValue("events",f)},m=()=>{u.setValue("events",[])};return a.jsx(sa,{error:l,name:"SQS",envVar:"SQS_ENABLED",children:a.jsx(Ja,{...u,children:a.jsx("form",{onSubmit:u.handleSubmit(d),className:"w-full space-y-6",children:a.jsxs("div",{children:[a.jsx("h3",{className:"mb-1 text-lg font-medium",children:e("sqs.title")}),a.jsx(al,{className:"my-4"}),a.jsxs("div",{className:"mx-4 space-y-2 divide-y [&>*]:p-4",children:[a.jsx(De,{name:"enabled",label:e("sqs.form.enabled.label"),className:"w-full justify-between",helper:e("sqs.form.enabled.description")}),a.jsxs("div",{className:"mb-4 flex justify-between",children:[a.jsx(q,{variant:"outline",type:"button",onClick:h,children:e("button.markAll")}),a.jsx(q,{variant:"outline",type:"button",onClick:m,children:e("button.unMarkAll")})]}),a.jsx(Qa,{control:u.control,name:"events",render:({field:g})=>a.jsxs(wa,{className:"flex flex-col",children:[a.jsx(Zr,{className:"my-2 text-lg",children:e("sqs.form.events.label")}),a.jsx(Zs,{children:a.jsx("div",{className:"flex flex-col gap-2 space-y-1 divide-y",children:f.sort((x,b)=>x.localeCompare(b)).map(x=>a.jsxs("div",{className:"flex items-center justify-between gap-3 pt-3",children:[a.jsx(Zr,{className:ln("break-all",g.value.includes(x)?"text-foreground":"text-muted-foreground"),children:x}),a.jsx(jd,{checked:g.value.includes(x),onCheckedChange:b=>{b?g.onChange([...g.value,x]):g.onChange(g.value.filter(w=>w!==x))}})]},x))})})]})})]}),a.jsx("div",{className:"mx-4 flex justify-end pt-6",children:a.jsx(q,{type:"submit",disabled:n,children:e(n?"sqs.button.saving":"sqs.button.save")})})]})})})})}const Xse=e=>["typebot","findTypebot",JSON.stringify(e)],eae=async({instanceName:e,token:t})=>(await je.get(`/typebot/find/${e}`,{headers:{apiKey:t}})).data,rO=e=>{const{instanceName:t,token:n,...r}=e;return vt({...r,queryKey:Xse({instanceName:t}),queryFn:()=>eae({instanceName:t,token:n}),enabled:!!t&&(e.enabled??!0)})},tae=e=>["typebot","fetchDefaultSettings",JSON.stringify(e)],nae=async({instanceName:e,token:t})=>{const n=await je.get(`/typebot/fetchSettings/${e}`,{headers:{apiKey:t}});return Array.isArray(n.data)?n.data[0]:n.data},rae=e=>{const{instanceName:t,token:n,...r}=e;return vt({...r,queryKey:tae({instanceName:t}),queryFn:()=>nae({instanceName:t,token:n}),enabled:!!t&&(e.enabled??!0)})},sae=async({instanceName:e,token:t,data:n})=>(await je.post(`/typebot/create/${e}`,n,{headers:{apikey:t}})).data,aae=async({instanceName:e,token:t,typebotId:n,data:r})=>(await je.put(`/typebot/update/${n}/${e}`,r,{headers:{apikey:t}})).data,oae=async({instanceName:e,typebotId:t})=>(await je.delete(`/typebot/delete/${t}/${e}`)).data,iae=async({instanceName:e,token:t,data:n})=>(await je.post(`/typebot/settings/${e}`,n,{headers:{apikey:t}})).data,lae=async({instanceName:e,token:t,remoteJid:n,status:r})=>(await je.post(`/typebot/changeStatus/${e}`,{remoteJid:n,status:r},{headers:{apikey:t}})).data;function Nm(){const e=it(iae,{invalidateKeys:[["typebot","fetchDefaultSettings"]]}),t=it(lae,{invalidateKeys:[["typebot","getTypebot"],["typebot","fetchSessions"]]}),n=it(oae,{invalidateKeys:[["typebot","getTypebot"],["typebot","findTypebot"],["typebot","fetchSessions"]]}),r=it(aae,{invalidateKeys:[["typebot","getTypebot"],["typebot","findTypebot"],["typebot","fetchSessions"]]}),s=it(sae,{invalidateKeys:[["typebot","findTypebot"]]});return{setDefaultSettingsTypebot:e,changeStatusTypebot:t,deleteTypebot:n,updateTypebot:r,createTypebot:s}}const cae=hn({expire:Vt.number(),keywordFinish:ye(),delayMessage:Vt.number(),unknownMessage:ye(),listeningFromMe:Re(),stopBotFromMe:Re(),keepOpen:Re(),debounceTime:Vt.number()});function uae(){const{t:e}=Fe(),{instance:t}=dt(),[n,r]=y.useState(!1),{setDefaultSettingsTypebot:s}=Nm(),{data:o,refetch:l}=rae({instanceName:t?.name,token:t?.token,enabled:n}),{data:u,refetch:d}=rO({instanceName:t?.name,token:t?.token,enabled:n}),f=fn({resolver:pn(cae),defaultValues:{expire:0,keywordFinish:e("typebot.form.examples.keywordFinish"),delayMessage:1e3,unknownMessage:e("typebot.form.examples.unknownMessage"),listeningFromMe:!1,stopBotFromMe:!1,keepOpen:!1,debounceTime:0}});y.useEffect(()=>{o&&f.reset({expire:o?.expire??0,keywordFinish:o.keywordFinish,delayMessage:o.delayMessage??0,unknownMessage:o.unknownMessage,listeningFromMe:o.listeningFromMe,stopBotFromMe:o.stopBotFromMe,keepOpen:o.keepOpen,debounceTime:o.debounceTime??0})},[o]);const h=async g=>{try{if(!t||!t.name)throw new Error("instance not found.");const x={expire:g.expire,keywordFinish:g.keywordFinish,delayMessage:g.delayMessage,unknownMessage:g.unknownMessage,listeningFromMe:g.listeningFromMe,stopBotFromMe:g.stopBotFromMe,keepOpen:g.keepOpen,debounceTime:g.debounceTime};await s({instanceName:t.name,token:t.token,data:x}),re.success(e("typebot.toast.defaultSettings.success"))}catch(x){console.error(e("typebot.toast.defaultSettings.error"),x),re.error(`Error: ${x?.response?.data?.response?.message}`)}};function m(){l(),d()}return a.jsxs(gt,{open:n,onOpenChange:r,children:[a.jsx(rn,{asChild:!0,children:a.jsxs(q,{variant:"secondary",size:"sm",children:[a.jsx(Go,{size:16,className:"mr-1"}),a.jsx("span",{className:"hidden sm:inline",children:e("typebot.button.defaultSettings")})]})}),a.jsxs(pt,{className:"overflow-y-auto sm:max-h-[600px] sm:max-w-[740px]",onCloseAutoFocus:m,children:[a.jsx(ht,{children:a.jsx(bt,{children:e("typebot.modal.defaultSettings.title")})}),a.jsx(hr,{...f,children:a.jsxs("form",{className:"w-full space-y-6",onSubmit:f.handleSubmit(h),children:[a.jsx("div",{children:a.jsxs("div",{className:"space-y-4",children:[a.jsx(dn,{name:"typebotIdFallback",label:e("typebot.form.typebotIdFallback.label"),options:u?.filter(g=>!!g.id).map(g=>({label:g.typebot,value:g.description}))??[]}),a.jsx(ge,{name:"expire",label:e("typebot.form.expire.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ge,{name:"keywordFinish",label:e("typebot.form.keywordFinish.label"),children:a.jsx(X,{})}),a.jsx(ge,{name:"delayMessage",label:e("typebot.form.delayMessage.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ge,{name:"unknownMessage",label:e("typebot.form.unknownMessage.label"),children:a.jsx(X,{})}),a.jsx(De,{name:"listeningFromMe",label:e("typebot.form.listeningFromMe.label"),reverse:!0}),a.jsx(De,{name:"stopBotFromMe",label:e("typebot.form.stopBotFromMe.label"),reverse:!0}),a.jsx(De,{name:"keepOpen",label:e("typebot.form.keepOpen.label"),reverse:!0}),a.jsx(ge,{name:"debounceTime",label:e("typebot.form.debounceTime.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ti,{name:"ignoreJids",label:e("typebot.form.ignoreJids.label"),placeholder:e("typebot.form.ignoreJids.placeholder")})]})}),a.jsx(Kt,{children:a.jsx(q,{type:"submit",children:e("typebot.button.save")})})]})})]})]})}const dae=e=>["typebot","fetchSessions",JSON.stringify(e)],fae=async({instanceName:e,typebotId:t,token:n})=>(await je.get(`/typebot/fetchSessions/${t}/${e}`,{headers:{apiKey:n}})).data,pae=e=>{const{instanceName:t,token:n,typebotId:r,...s}=e;return vt({...s,queryKey:dae({instanceName:t}),queryFn:()=>fae({instanceName:t,token:n,typebotId:r}),enabled:!!t&&!!r&&(e.enabled??!0)})},fp={name:"",number:"",status:"all",time:"all",customCondition:"more",customValue:"",customUnit:"minutes"};function hae(e,t){const n=parseInt(e);return!n||isNaN(n)||n<=0?null:t==="hours"?n*60:t==="days"?n*1440:n}function mae(e,t){if(t.time==="all")return!0;const n=(Date.now()-new Date(e).getTime())/6e4;if(t.time==="custom"){const r=hae(t.customValue,t.customUnit);return r===null?!0:t.customCondition==="more"?n>r:n<=r}if(t.time.startsWith(">")){const r=parseInt(t.time.slice(1));return n>r}return n<=parseInt(t.time)}function sO({typebotId:e}){const{t}=Fe(),{instance:n}=dt(),{changeStatusTypebot:r}=Nm(),[s,o]=y.useState(!1),[l,u]=y.useState([]),[d,f]=y.useState({}),[h,m]=y.useState(fp),[g,x]=y.useState(fp),[b,w]=y.useState(9),[C,k]=y.useState(9),[N,T]=y.useState("opened"),[_,I]=y.useState(!1),[M,A]=y.useState(""),[O,F]=y.useState(""),[z,Z]=y.useState(!1),{data:B,refetch:ce}=pae({instanceName:n?.name,typebotId:e,enabled:s}),H=y.useMemo(()=>{const j=B??[],P=g.name.trim().toLowerCase(),pe=g.number.trim();return j.filter(xe=>!(P&&!xe.pushName?.toLowerCase().includes(P)||pe&&!xe.remoteJid.includes(pe)||g.status!=="all"&&xe.status!==g.status||!mae(xe.updatedAt,g)))},[B,g]),oe=H.slice(0,C),Q=y.useMemo(()=>Object.keys(d).filter(j=>d[j]).map(j=>oe[Number(j)]?.remoteJid).filter(Boolean),[d,oe]);y.useEffect(()=>{k(b),f({})},[g,b]);const ne=()=>{ce()},V=()=>{x(h)},K=()=>{m(fp),x(fp)},U=async(j,P)=>{try{if(!n)return;await r({instanceName:n.name,token:n.token,remoteJid:j,status:P}),re.success(t("typebot.toast.success.status")),ne()}catch(pe){console.error("Error:",pe),re.error(`Error : ${pe?.response?.data?.response?.message}`)}},D=async()=>{if(Q.length===0){re.error(t("sessions.mass.noneSelected"));return}try{if(!n)return;await Promise.all(Q.map(j=>r({instanceName:n.name,token:n.token,remoteJid:j,status:N}))),re.success(t("sessions.mass.success")),f({}),ne()}catch(j){console.error(j),re.error(j?.response?.data?.response?.message??t("sessions.mass.error"))}},J=j=>{A(j),F(""),I(!0)},ae=async()=>{if(!O.trim()){re.error(t("sessions.send.empty"));return}try{if(!n)return;Z(!0),await je.post(`/message/sendText/${n.name}`,{number:M,text:O},{headers:{apikey:n.token}}),re.success(t("sessions.send.success")),I(!1),F(""),A("")}catch(j){console.error("Error:",j),re.error(j?.response?.data?.response?.message??j?.message??t("sessions.send.error"))}finally{Z(!1)}},ee=[{id:"select",header:({table:j})=>a.jsx(Xr,{checked:j.getIsAllPageRowsSelected()||j.getIsSomePageRowsSelected()&&"indeterminate",onCheckedChange:P=>j.toggleAllPageRowsSelected(!!P),"aria-label":t("sessions.mass.selectAll")}),cell:({row:j})=>a.jsx(Xr,{checked:j.getIsSelected(),onCheckedChange:P=>j.toggleSelected(!!P),"aria-label":t("sessions.mass.selectAll")}),enableSorting:!1},{accessorKey:"remoteJid",header:()=>a.jsx("div",{className:"text-center",children:t("typebot.sessions.table.remoteJid")}),cell:({row:j})=>a.jsx("div",{children:j.getValue("remoteJid")})},{accessorKey:"pushName",header:()=>a.jsx("div",{className:"text-center",children:t("typebot.sessions.table.pushName")}),cell:({row:j})=>a.jsx("div",{children:j.getValue("pushName")})},{accessorKey:"sessionId",header:()=>a.jsx("div",{className:"text-center",children:t("typebot.sessions.table.sessionId")}),cell:({row:j})=>a.jsx("div",{children:j.getValue("sessionId")})},{accessorKey:"status",header:()=>a.jsx("div",{className:"text-center",children:t("typebot.sessions.table.status")}),cell:({row:j})=>a.jsx("div",{children:j.getValue("status")})},{id:"actions",enableHiding:!1,cell:({row:j})=>{const P=j.original;return a.jsxs(ms,{children:[a.jsx(gs,{asChild:!0,children:a.jsxs(q,{variant:"ghost",size:"icon",children:[a.jsx("span",{className:"sr-only",children:t("typebot.sessions.table.actions.title")}),a.jsx(Jo,{className:"h-4 w-4"})]})}),a.jsxs(vs,{align:"end",children:[a.jsx(Qo,{children:t("typebot.sessions.table.actions.title")}),a.jsx(Yo,{}),P.status!=="opened"&&a.jsxs(St,{onClick:()=>U(P.remoteJid,"opened"),children:[a.jsx(tl,{className:"mr-2 h-4 w-4"}),t("typebot.sessions.table.actions.open")]}),P.status!=="paused"&&P.status!=="closed"&&a.jsxs(St,{onClick:()=>U(P.remoteJid,"paused"),children:[a.jsx(el,{className:"mr-2 h-4 w-4"}),t("typebot.sessions.table.actions.pause")]}),P.status!=="closed"&&a.jsxs(St,{onClick:()=>U(P.remoteJid,"closed"),children:[a.jsx(Qi,{className:"mr-2 h-4 w-4"}),t("typebot.sessions.table.actions.close")]}),a.jsxs(St,{onClick:()=>J(P.remoteJid),children:[a.jsx(Xi,{className:"mr-2 h-4 w-4"}),t("sessions.actions.sendMessage")]}),a.jsxs(St,{onClick:()=>U(P.remoteJid,"delete"),children:[a.jsx(Yi,{className:"mr-2 h-4 w-4"}),t("typebot.sessions.table.actions.delete")]})]})]})}}],ie=["all","5","10","15","20","30","60",">60",">120",">300",">1440","custom"],ue=["all","opened","paused","closed"];return a.jsxs(gt,{open:s,onOpenChange:o,children:[a.jsx(rn,{asChild:!0,children:a.jsxs(q,{variant:"secondary",size:"sm",children:[a.jsx(Zi,{size:16,className:"mr-1"}),a.jsx("span",{className:"hidden md:inline",children:t("typebot.sessions.label")})]})}),a.jsxs(pt,{className:"max-w-7xl h-[85vh] flex flex-col overflow-hidden",children:[a.jsx(ht,{children:a.jsx(bt,{children:t("typebot.sessions.label")})}),a.jsxs("div",{className:"flex-1 space-y-4 overflow-y-auto pr-2",children:[a.jsxs(Bn,{children:[a.jsx(Yn,{children:a.jsx(Zn,{className:"text-base",children:t("sessions.filters.title")})}),a.jsxs(zn,{className:"space-y-4",children:[a.jsxs("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-4",children:[a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{children:t("sessions.filters.name")}),a.jsx(X,{placeholder:t("sessions.filters.namePlaceholder"),value:h.name,onChange:j=>m(P=>({...P,name:j.target.value}))})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{children:t("sessions.filters.number")}),a.jsx(X,{placeholder:t("sessions.filters.numberPlaceholder"),value:h.number,onChange:j=>m(P=>({...P,number:j.target.value}))})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{children:t("sessions.filters.status")}),a.jsxs(Mt,{value:h.status,onValueChange:j=>m(P=>({...P,status:j})),children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsx(Pt,{children:ue.map(j=>a.jsx(we,{value:j,children:t(`sessions.filters.statusOptions.${j}`)},j))})]})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsx(Ue,{children:t("sessions.filters.time")}),a.jsxs(Mt,{value:h.time,onValueChange:j=>m(P=>({...P,time:j})),children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsx(Pt,{children:ie.map(j=>a.jsx(we,{value:j,children:t(`sessions.filters.timeOptions.${j}`)},j))})]})]})]}),h.time==="custom"&&a.jsxs("div",{className:"grid grid-cols-1 gap-2 md:grid-cols-3",children:[a.jsxs(Mt,{value:h.customCondition,onValueChange:j=>m(P=>({...P,customCondition:j})),children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsxs(Pt,{children:[a.jsx(we,{value:"more",children:t("sessions.filters.custom.more")}),a.jsx(we,{value:"less",children:t("sessions.filters.custom.less")})]})]}),a.jsx(X,{type:"number",min:1,placeholder:t("sessions.filters.custom.valuePlaceholder"),value:h.customValue,onChange:j=>m(P=>({...P,customValue:j.target.value}))}),a.jsxs(Mt,{value:h.customUnit,onValueChange:j=>m(P=>({...P,customUnit:j})),children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsxs(Pt,{children:[a.jsx(we,{value:"minutes",children:t("sessions.filters.custom.minutes")}),a.jsx(we,{value:"hours",children:t("sessions.filters.custom.hours")}),a.jsx(we,{value:"days",children:t("sessions.filters.custom.days")})]})]})]}),a.jsxs("div",{className:"flex flex-wrap gap-2",children:[a.jsx(q,{onClick:V,size:"sm",children:t("sessions.filters.apply")}),a.jsx(q,{onClick:K,size:"sm",variant:"outline",children:t("sessions.filters.clear")}),a.jsxs(q,{onClick:ne,size:"sm",variant:"outline",children:[a.jsx(nl,{size:14,className:"mr-1"}),t("button.refresh")]})]})]})]}),Q.length>0&&a.jsxs(Bn,{children:[a.jsx(Yn,{children:a.jsx(Zn,{className:"text-base",children:t("sessions.mass.title")})}),a.jsx(zn,{children:a.jsxs("div",{className:"flex flex-wrap items-end gap-3",children:[a.jsx("div",{className:"text-sm text-muted-foreground",children:t("sessions.mass.selected",{count:Q.length})}),a.jsxs("div",{className:"flex-1 min-w-[180px] space-y-1",children:[a.jsx(Ue,{children:t("sessions.mass.newStatus")}),a.jsxs(Mt,{value:N,onValueChange:T,children:[a.jsx(Rt,{children:a.jsx(_t,{})}),a.jsxs(Pt,{children:[a.jsx(we,{value:"opened",children:t("typebot.sessions.table.actions.open")}),a.jsx(we,{value:"paused",children:t("typebot.sessions.table.actions.pause")}),a.jsx(we,{value:"closed",children:t("typebot.sessions.table.actions.close")}),a.jsx(we,{value:"delete",children:t("typebot.sessions.table.actions.delete")})]})]})]}),a.jsx(q,{onClick:D,size:"sm",children:t("sessions.mass.apply")})]})})]}),a.jsx(ai,{columns:ee,data:oe,onSortingChange:u,state:{sorting:l,rowSelection:d},onRowSelectionChange:f,enableRowSelection:!0,getRowId:(j,P)=>String(P),noResultsMessage:t("sessions.empty")}),a.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3 px-1 text-sm text-muted-foreground",children:[a.jsx("span",{children:t("sessions.pagination.showing",{shown:oe.length,total:H.length})}),a.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[a.jsx(Ue,{htmlFor:"per-page",className:"text-xs",children:t("sessions.pagination.perPage")}),a.jsxs(Mt,{value:String(b),onValueChange:j=>w(parseInt(j)),children:[a.jsx(Rt,{id:"per-page",className:"h-8 w-20",children:a.jsx(_t,{})}),a.jsxs(Pt,{children:[a.jsx(we,{value:"9",children:"9"}),a.jsx(we,{value:"25",children:"25"}),a.jsx(we,{value:"50",children:"50"}),a.jsx(we,{value:"100",children:"100"})]})]}),Ck(j=>Math.min(j+b,H.length)),children:t("sessions.pagination.showMore")}),Ck(H.length),children:t("sessions.pagination.showAll")}),C>b&&a.jsx(q,{size:"sm",variant:"outline",onClick:()=>k(b),children:t("sessions.pagination.showLess")})]})]})]}),a.jsx(gt,{open:_,onOpenChange:j=>!z&&I(j),children:a.jsxs(pt,{className:"sm:max-w-md",children:[a.jsx(ht,{children:a.jsx(bt,{children:t("sessions.send.title")})}),a.jsxs("div",{className:"space-y-3",children:[a.jsxs("div",{className:"space-y-1",children:[a.jsx(Ue,{children:t("sessions.send.to")}),a.jsx(X,{value:M,disabled:!0})]}),a.jsxs("div",{className:"space-y-1",children:[a.jsx(Ue,{children:t("sessions.send.messagePlaceholder")}),a.jsx(Zo,{rows:4,placeholder:t("sessions.send.messagePlaceholder"),value:O,onChange:j=>F(j.target.value)})]})]}),a.jsxs(Kt,{children:[a.jsx(q,{variant:"outline",onClick:()=>I(!1),disabled:z,children:t("button.cancel")}),a.jsx(q,{onClick:ae,disabled:z,children:t(z?"sessions.send.sending":"sessions.send.send")})]})]})})]})]})}const gae=hn({enabled:Re(),description:ye(),url:ye(),typebot:ye().optional(),triggerType:ye(),triggerOperator:ye().optional(),triggerValue:ye().optional(),expire:Vt.number().optional(),keywordFinish:ye().optional(),delayMessage:Vt.number().optional(),unknownMessage:ye().optional(),listeningFromMe:Re().optional(),stopBotFromMe:Re().optional(),keepOpen:Re().optional(),debounceTime:Vt.number().optional()});function aO({initialData:e,onSubmit:t,handleDelete:n,typebotId:r,isModal:s=!1,isLoading:o=!1,openDeletionDialog:l=!1,setOpenDeletionDialog:u=()=>{}}){const{t:d}=Fe(),f=fn({resolver:pn(gae),defaultValues:e||{enabled:!0,description:"",url:"",typebot:"",triggerType:"keyword",triggerOperator:"contains",triggerValue:"",expire:0,keywordFinish:"",delayMessage:0,unknownMessage:"",listeningFromMe:!1,stopBotFromMe:!1,keepOpen:!1,debounceTime:0}}),h=f.watch("triggerType");return a.jsx(hr,{...f,children:a.jsxs("form",{onSubmit:f.handleSubmit(t),className:"w-full space-y-6",children:[a.jsxs("div",{className:"space-y-4",children:[a.jsx(De,{name:"enabled",label:d("typebot.form.enabled.label"),reverse:!0}),a.jsx(ge,{name:"description",label:d("typebot.form.description.label"),required:!0,children:a.jsx(X,{})}),a.jsxs("div",{className:"flex flex-col",children:[a.jsx("h3",{className:"my-4 text-lg font-medium",children:d("typebot.form.typebotSettings.label")}),a.jsx(nn,{})]}),a.jsx(ge,{name:"url",label:d("typebot.form.url.label"),required:!0,children:a.jsx(X,{})}),a.jsx(ge,{name:"typebot",label:d("typebot.form.typebot.label"),children:a.jsx(X,{})}),a.jsxs("div",{className:"flex flex-col",children:[a.jsx("h3",{className:"my-4 text-lg font-medium",children:d("typebot.form.triggerSettings.label")}),a.jsx(nn,{})]}),a.jsx(dn,{name:"triggerType",label:d("typebot.form.triggerType.label"),options:[{label:d("typebot.form.triggerType.keyword"),value:"keyword"},{label:d("typebot.form.triggerType.all"),value:"all"},{label:d("typebot.form.triggerType.advanced"),value:"advanced"},{label:d("typebot.form.triggerType.none"),value:"none"}]}),h==="keyword"&&a.jsxs(a.Fragment,{children:[a.jsx(dn,{name:"triggerOperator",label:d("typebot.form.triggerOperator.label"),options:[{label:d("typebot.form.triggerOperator.contains"),value:"contains"},{label:d("typebot.form.triggerOperator.equals"),value:"equals"},{label:d("typebot.form.triggerOperator.startsWith"),value:"startsWith"},{label:d("typebot.form.triggerOperator.endsWith"),value:"endsWith"},{label:d("typebot.form.triggerOperator.regex"),value:"regex"}]}),a.jsx(ge,{name:"triggerValue",label:d("typebot.form.triggerValue.label"),children:a.jsx(X,{})})]}),h==="advanced"&&a.jsx(ge,{name:"triggerValue",label:d("typebot.form.triggerConditions.label"),children:a.jsx(X,{})}),a.jsxs("div",{className:"flex flex-col",children:[a.jsx("h3",{className:"my-4 text-lg font-medium",children:d("typebot.form.generalSettings.label")}),a.jsx(nn,{})]}),a.jsx(ge,{name:"expire",label:d("typebot.form.expire.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ge,{name:"keywordFinish",label:d("typebot.form.keywordFinish.label"),children:a.jsx(X,{})}),a.jsx(ge,{name:"delayMessage",label:d("typebot.form.delayMessage.label"),children:a.jsx(X,{type:"number"})}),a.jsx(ge,{name:"unknownMessage",label:d("typebot.form.unknownMessage.label"),children:a.jsx(X,{})}),a.jsx(De,{name:"listeningFromMe",label:d("typebot.form.listeningFromMe.label"),reverse:!0}),a.jsx(De,{name:"stopBotFromMe",label:d("typebot.form.stopBotFromMe.label"),reverse:!0}),a.jsx(De,{name:"keepOpen",label:d("typebot.form.keepOpen.label"),reverse:!0}),a.jsx(ge,{name:"debounceTime",label:d("typebot.form.debounceTime.label"),children:a.jsx(X,{type:"number"})})]}),s&&a.jsx(Kt,{children:a.jsx(q,{disabled:o,type:"submit",children:d(o?"typebot.button.saving":"typebot.button.save")})}),!s&&a.jsxs("div",{children:[a.jsx(sO,{typebotId:r}),a.jsxs("div",{className:"mt-5 flex items-center gap-3",children:[a.jsxs(gt,{open:l,onOpenChange:u,children:[a.jsx(rn,{asChild:!0,children:a.jsx(q,{variant:"destructive",size:"sm",children:d("dify.button.delete")})}),a.jsx(pt,{children:a.jsxs(ht,{children:[a.jsx(bt,{children:d("modal.delete.title")}),a.jsx(kr,{children:d("modal.delete.messageSingle")}),a.jsxs(Kt,{children:[a.jsx(q,{size:"sm",variant:"outline",onClick:()=>u(!1),children:d("button.cancel")}),a.jsx(q,{variant:"destructive",onClick:n,children:d("button.delete")})]})]})})]}),a.jsx(q,{disabled:o,type:"submit",children:d(o?"typebot.button.saving":"typebot.button.update")})]})]})]})})}function vae({resetTable:e}){const{t}=Fe(),{instance:n}=dt(),{createTypebot:r}=Nm(),[s,o]=y.useState(!1),[l,u]=y.useState(!1),d=async f=>{try{if(!n||!n.name)throw new Error("instance not found");o(!0);const h={enabled:f.enabled,description:f.description,url:f.url,typebot:f.typebot||"",triggerType:f.triggerType,triggerOperator:f.triggerOperator||"",triggerValue:f.triggerValue||"",expire:f.expire||0,keywordFinish:f.keywordFinish||"",delayMessage:f.delayMessage||0,unknownMessage:f.unknownMessage||"",listeningFromMe:f.listeningFromMe||!1,stopBotFromMe:f.stopBotFromMe||!1,keepOpen:f.keepOpen||!1,debounceTime:f.debounceTime||0};await r({instanceName:n.name,token:n.token,data:h}),re.success(t("typebot.toast.success.create")),u(!1),e()}catch(h){console.error("Error:",h),re.error(`Error: ${h?.response?.data?.response?.message}`)}finally{o(!1)}};return a.jsxs(gt,{open:l,onOpenChange:u,children:[a.jsx(rn,{asChild:!0,children:a.jsxs(q,{size:"sm",children:[a.jsx(Yr,{size:16,className:"mr-1"}),a.jsx("span",{className:"hidden sm:inline",children:t("typebot.button.create")})]})}),a.jsxs(pt,{className:"overflow-y-auto sm:max-h-[600px] sm:max-w-[740px]",children:[a.jsx(ht,{children:a.jsx(bt,{children:t("typebot.form.title")})}),a.jsx(aO,{onSubmit:d,isModal:!0,isLoading:s})]})]})}const yae=e=>["typebot","getTypebot",JSON.stringify(e)],bae=async({instanceName:e,token:t,typebotId:n})=>{const r=await je.get(`/typebot/fetch/${n}/${e}`,{headers:{apiKey:t}});return Array.isArray(r.data)?r.data[0]:r.data},xae=e=>{const{instanceName:t,token:n,typebotId:r,...s}=e;return vt({...s,queryKey:yae({instanceName:t}),queryFn:()=>bae({instanceName:t,token:n,typebotId:r}),enabled:!!t&&!!r&&(e.enabled??!0)})};function wae({typebotId:e,resetTable:t}){const{t:n}=Fe(),{instance:r}=dt(),s=jn(),[o,l]=y.useState(!1),{deleteTypebot:u,updateTypebot:d}=Nm(),{data:f,isLoading:h}=xae({instanceName:r?.name,typebotId:e}),m=y.useMemo(()=>({enabled:!!f?.enabled,description:f?.description??"",url:f?.url??"",typebot:f?.typebot??"",triggerType:f?.triggerType??"",triggerOperator:f?.triggerOperator??"",triggerValue:f?.triggerValue,expire:f?.expire??0,keywordFinish:f?.keywordFinish,delayMessage:f?.delayMessage??0,unknownMessage:f?.unknownMessage,listeningFromMe:!!f?.listeningFromMe,stopBotFromMe:!!f?.stopBotFromMe,keepOpen:!!f?.keepOpen,debounceTime:f?.debounceTime??0}),[f?.debounceTime,f?.delayMessage,f?.description,f?.enabled,f?.expire,f?.keepOpen,f?.keywordFinish,f?.listeningFromMe,f?.stopBotFromMe,f?.triggerOperator,f?.triggerType,f?.triggerValue,f?.typebot,f?.unknownMessage,f?.url]),g=async b=>{try{if(r&&r.name&&e){const w={enabled:b.enabled,description:b.description,url:b.url,typebot:b.typebot||"",triggerType:b.triggerType,triggerOperator:b.triggerOperator||"",triggerValue:b.triggerValue||"",expire:b.expire||0,keywordFinish:b.keywordFinish||"",delayMessage:b.delayMessage||1e3,unknownMessage:b.unknownMessage||"",listeningFromMe:b.listeningFromMe||!1,stopBotFromMe:b.stopBotFromMe||!1,keepOpen:b.keepOpen||!1,debounceTime:b.debounceTime||0};await d({instanceName:r.name,typebotId:e,data:w}),re.success(n("typebot.toast.success.update")),t(),s(`/manager/instance/${r.id}/typebot/${e}`)}else console.error("Token not found")}catch(w){console.error("Error:",w),re.error(`Error: ${w?.response?.data?.response?.message}`)}},x=async()=>{try{r&&r.name&&e?(await u({instanceName:r.name,typebotId:e}),re.success(n("typebot.toast.success.delete")),l(!1),t(),s(`/manager/instance/${r.id}/typebot`)):console.error("instance not found")}catch(b){console.error("Erro ao excluir dify:",b)}};return h?a.jsx(Vn,{}):a.jsx("div",{className:"m-4",children:a.jsx(aO,{initialData:m,onSubmit:g,typebotId:e,handleDelete:x,isModal:!1,isLoading:h,openDeletionDialog:o,setOpenDeletionDialog:l})})}function cE(){const{t:e}=Fe(),t=Ya("(min-width: 768px)"),{instance:n}=dt(),{typebotId:r}=_s(),{data:s,isLoading:o,refetch:l,error:u}=rO({instanceName:n?.name,token:n?.token}),d=jn(),f=m=>{n&&d(`/manager/instance/${n.id}/typebot/${m}`)},h=()=>{l()};return a.jsx("main",{className:"pt-5",children:a.jsxs(sa,{error:u,name:"Typebot",envVar:"TYPEBOT_ENABLED",children:[a.jsxs("div",{className:"mb-1 flex items-center justify-between",children:[a.jsx("h3",{className:"text-lg font-medium",children:e("typebot.title")}),a.jsxs("div",{className:"flex flex-wrap items-center justify-end gap-2",children:[a.jsx(sO,{}),a.jsx(uae,{}),a.jsx(vae,{resetTable:h})]})]}),a.jsx(nn,{className:"my-4"}),a.jsxs(ri,{direction:t?"horizontal":"vertical",children:[a.jsx(Er,{defaultSize:r?35:100,className:"pr-4",children:a.jsx("div",{className:"flex flex-col gap-3",children:o?a.jsx(Vn,{}):a.jsx(a.Fragment,{children:s&&s.length>0&&Array.isArray(s)?s.map(m=>a.jsx(q,{className:"flex h-auto flex-col items-start justify-start",onClick:()=>f(`${m.id}`),variant:r===m.id?"secondary":"outline",children:m.description?a.jsxs(a.Fragment,{children:[a.jsx("h4",{className:"text-base",children:m.description}),a.jsxs("p",{className:"text-wrap text-sm font-normal text-muted-foreground",children:[m.url," - ",m.typebot]})]}):a.jsxs(a.Fragment,{children:[a.jsx("h4",{className:"text-base",children:m.url}),a.jsx("p",{className:"text-wrap text-sm font-normal text-muted-foreground",children:m.typebot})]})},m.id)):a.jsx(q,{variant:"link",children:e("typebot.table.none")})})})}),r&&a.jsxs(a.Fragment,{children:[a.jsx(si,{withHandle:!0,className:"border border-black"}),a.jsx(Er,{children:a.jsx(wae,{typebotId:r,resetTable:h})})]})]})]})})}const Sae=e=>["webhook","fetchWebhook","go",JSON.stringify(e)],Cae=(e,t)=>{const r=e.getQueryData(["instance","fetchInstances","go"])?.find(o=>o.name===t);if(r)return r.id;const s=e.getQueriesData({queryKey:["instance","fetchInstance","go"]});for(const[,o]of s)if(o?.name===t)return o.id},jae=e=>{const t=qa(),{instanceName:n,token:r,enabled:s,...o}=e;return vt({...o,queryKey:Sae({instanceName:n,token:r}),queryFn:async()=>{const l=Cae(t,n);if(!l)throw new Error(`Instance "${n}" not found in cache`);const d=(await Dn.get(`/instance/info/${l}`)).data?.data,f=d?.webhook??"",h=d?.events??"",m=h?h.split(",").map(g=>g.trim()).filter(Boolean):[];return{enabled:!!f,url:f,events:m,webhookBase64:!1,webhookByEvents:!1}},enabled:!!n&&(s??!0),retry:!1})},kae=e=>["webhook","fetchWebhook",JSON.stringify(e)],Eae=async({instanceName:e,token:t})=>(await je.get(`/webhook/find/${e}`,{headers:{apiKey:t}})).data,Nae=e=>{const{instanceName:t,token:n,enabled:r,...s}=e;return vt({...s,queryKey:kae({instanceName:t,token:n}),queryFn:()=>Eae({instanceName:t,token:n}),enabled:!!t&&(r??!0)})},Tae=e=>{const t=Fr(),n=Nae({...e,enabled:(e.enabled??!0)&&t==="api"}),r=jae({...e,enabled:(e.enabled??!0)&&t==="go"});return t==="go"?r:n},Mae=e=>{const t=r=>{const o=e.getQueryData(["instance","fetchInstances","go"])?.find(u=>u.name===r);if(o)return o;const l=e.getQueriesData({queryKey:["instance","fetchInstance","go"]});for(const[,u]of l)if(u?.name===r)return u};return{createWebhook:async({instanceName:r,data:s})=>{const o=t(r);if(!o)throw new Error(`Instance "${r}" not found in cache`);const l={webhookUrl:s.url??"",subscribe:s.events??[],rabbitmqEnable:"",websocketEnable:"",natsEnable:""};return(await Dn.post("/instance/connect",l,{headers:{apikey:o.token}})).data}}},_ae=async({instanceName:e,token:t,data:n})=>(await je.post(`/webhook/set/${e}`,{webhook:n},{headers:{apikey:t}})).data;function Rae(){const e=qa(),n=Fr()==="go"?Mae(e):null;return{createWebhook:it(n?n.createWebhook:_ae,{invalidateKeys:[["webhook","fetchWebhook"]]})}}const Pae=hn({enabled:Re(),url:ye().url("Invalid URL format"),events:ra(ye()),base64:Re(),byEvents:Re()}),Iae=["ALL","MESSAGE","SEND_MESSAGE","READ_RECEIPT","PRESENCE","HISTORY_SYNC","CHAT_PRESENCE","CALL","CONNECTION","QRCODE","LABEL","CONTACT","GROUP","NEWSLETTER"],Oae=["APPLICATION_STARTUP","QRCODE_UPDATED","MESSAGES_SET","MESSAGES_UPSERT","MESSAGES_UPDATE","MESSAGES_DELETE","SEND_MESSAGE","CONTACTS_SET","CONTACTS_UPSERT","CONTACTS_UPDATE","PRESENCE_UPDATE","CHATS_SET","CHATS_UPSERT","CHATS_UPDATE","CHATS_DELETE","GROUPS_UPSERT","GROUP_UPDATE","GROUP_PARTICIPANTS_UPDATE","CONNECTION_UPDATE","REMOVE_INSTANCE","LOGOUT_INSTANCE","LABELS_EDIT","LABELS_ASSOCIATION","CALL","TYPEBOT_START","TYPEBOT_CHANGE_STATUS"];function Aae(){const{t:e}=Fe(),{instance:t}=dt(),[n,r]=y.useState(!1),s=Fr()==="go",{createWebhook:o}=Rae(),{data:l}=Tae({instanceName:t?.name,token:t?.token}),u=fn({resolver:pn(Pae),defaultValues:{enabled:!1,url:"",events:[],base64:!1,byEvents:!1}});y.useEffect(()=>{l&&u.reset({enabled:l.enabled,url:l.url,events:l.events,base64:l.webhookBase64,byEvents:l.webhookByEvents})},[l]);const d=async g=>{if(t){r(!0);try{const x={enabled:g.enabled,url:g.url,events:g.events,base64:g.base64,byEvents:g.byEvents};await o({instanceName:t.name,token:t.token,data:x}),re.success(e("webhook.toast.success"))}catch(x){console.error(e("webhook.toast.error"),x),re.error(`Error: ${x?.response?.data?.response?.message}`)}finally{r(!1)}}},f=s?Iae:Oae,h=()=>{u.setValue("events",f)},m=()=>{u.setValue("events",[])};return a.jsx(a.Fragment,{children:a.jsx(Ja,{...u,children:a.jsx("form",{onSubmit:u.handleSubmit(d),className:"w-full space-y-6",children:a.jsxs("div",{children:[a.jsx("h3",{className:"mb-1 text-lg font-medium",children:e("webhook.title")}),a.jsx(al,{className:"my-4"}),a.jsxs("div",{className:"mx-4 space-y-2 divide-y [&>*]:p-4",children:[!s&&a.jsx(De,{name:"enabled",label:e("webhook.form.enabled.label"),className:"w-full justify-between",helper:e("webhook.form.enabled.description")}),a.jsx(ge,{name:"url",label:"URL",children:a.jsx(X,{})}),!s&&a.jsx(De,{name:"byEvents",label:e("webhook.form.byEvents.label"),className:"w-full justify-between",helper:e("webhook.form.byEvents.description")}),!s&&a.jsx(De,{name:"base64",label:e("webhook.form.base64.label"),className:"w-full justify-between",helper:e("webhook.form.base64.description")}),a.jsxs("div",{className:"mb-4 flex justify-between",children:[a.jsx(q,{variant:"outline",type:"button",onClick:h,children:e("button.markAll")}),a.jsx(q,{variant:"outline",type:"button",onClick:m,children:e("button.unMarkAll")})]}),a.jsx(Qa,{control:u.control,name:"events",render:({field:g})=>a.jsxs(wa,{className:"flex flex-col",children:[a.jsx(Zr,{className:"my-2 text-lg",children:e("webhook.form.events.label")}),a.jsx(Zs,{children:a.jsx("div",{className:"flex flex-col gap-2 space-y-1 divide-y",children:f.sort((x,b)=>x.localeCompare(b)).map(x=>a.jsxs("div",{className:"flex items-center justify-between gap-3 pt-3",children:[a.jsx(Zr,{className:ln("break-all",g.value.includes(x)?"text-foreground":"text-muted-foreground"),children:x}),a.jsx(jd,{checked:g.value.includes(x),onCheckedChange:b=>{b?g.onChange([...g.value,x]):g.onChange(g.value.filter(w=>w!==x))}})]},x))})})]})})]}),a.jsx("div",{className:"mx-4 flex justify-end pt-6",children:a.jsx(q,{type:"submit",disabled:n,children:e(n?"webhook.button.saving":"webhook.button.save")})})]})})})})}const Dae=e=>["websocket","fetchWebsocket",JSON.stringify(e)],Fae=async({instanceName:e,token:t})=>(await je.get(`/websocket/find/${e}`,{headers:{apiKey:t}})).data,Lae=e=>{const{instanceName:t,token:n,...r}=e;return vt({...r,queryKey:Dae({instanceName:t,token:n}),queryFn:()=>Fae({instanceName:t,token:n}),enabled:!!t})},$ae=async({instanceName:e,token:t,data:n})=>(await je.post(`/websocket/set/${e}`,{websocket:n},{headers:{apikey:t}})).data;function Bae(){return{createWebsocket:it($ae,{invalidateKeys:[["websocket","fetchWebsocket"]]})}}const zae=hn({enabled:Re(),events:ra(ye())});function Uae(){const{t:e}=Fe(),{instance:t}=dt(),[n,r]=y.useState(!1),{createWebsocket:s}=Bae(),{data:o,error:l}=Lae({instanceName:t?.name,token:t?.token}),u=fn({resolver:pn(zae),defaultValues:{enabled:!1,events:[]}});y.useEffect(()=>{o&&u.reset({enabled:o.enabled,events:o.events})},[o]);const d=async g=>{if(t){r(!0);try{const x={enabled:g.enabled,events:g.events};await s({instanceName:t.name,token:t.token,data:x}),re.success(e("websocket.toast.success"))}catch(x){console.error(e("websocket.toast.error"),x),re.error(`Error: ${x?.response?.data?.response?.message}`)}finally{r(!1)}}},f=["APPLICATION_STARTUP","QRCODE_UPDATED","MESSAGES_SET","MESSAGES_UPSERT","MESSAGES_UPDATE","MESSAGES_DELETE","SEND_MESSAGE","CONTACTS_SET","CONTACTS_UPSERT","CONTACTS_UPDATE","PRESENCE_UPDATE","CHATS_SET","CHATS_UPSERT","CHATS_UPDATE","CHATS_DELETE","GROUPS_UPSERT","GROUP_UPDATE","GROUP_PARTICIPANTS_UPDATE","CONNECTION_UPDATE","REMOVE_INSTANCE","LOGOUT_INSTANCE","LABELS_EDIT","LABELS_ASSOCIATION","CALL","TYPEBOT_START","TYPEBOT_CHANGE_STATUS"],h=()=>{u.setValue("events",f)},m=()=>{u.setValue("events",[])};return a.jsx(sa,{error:l,name:"Websocket",envVar:"WEBSOCKET_ENABLED",children:a.jsx(Ja,{...u,children:a.jsx("form",{onSubmit:u.handleSubmit(d),className:"w-full space-y-6",children:a.jsxs("div",{children:[a.jsx("h3",{className:"mb-1 text-lg font-medium",children:e("websocket.title")}),a.jsx(al,{className:"my-4"}),a.jsxs("div",{className:"mx-4 space-y-2 divide-y [&>*]:p-4",children:[a.jsx(De,{name:"enabled",label:e("websocket.form.enabled.label"),className:"w-full justify-between",helper:e("websocket.form.enabled.description")}),a.jsxs("div",{className:"mb-4 flex justify-between",children:[a.jsx(q,{variant:"outline",type:"button",onClick:h,children:e("button.markAll")}),a.jsx(q,{variant:"outline",type:"button",onClick:m,children:e("button.unMarkAll")})]}),a.jsx(Qa,{control:u.control,name:"events",render:({field:g})=>a.jsxs(wa,{className:"flex flex-col",children:[a.jsx(Zr,{className:"my-2 text-lg",children:e("websocket.form.events.label")}),a.jsx(Zs,{children:a.jsx("div",{className:"flex flex-col gap-2 space-y-1 divide-y",children:f.sort((x,b)=>x.localeCompare(b)).map(x=>a.jsxs("div",{className:"flex items-center justify-between gap-3 pt-3",children:[a.jsx(Zr,{className:ln("break-all",g.value.includes(x)?"text-foreground":"text-muted-foreground"),children:x}),a.jsx(jd,{checked:g.value.includes(x),onCheckedChange:b=>{b?g.onChange([...g.value,x]):g.onChange(g.value.filter(w=>w!==x))}})]},x))})})]})})]}),a.jsx("div",{className:"mx-4 flex justify-end pt-6",children:a.jsx(q,{type:"submit",disabled:n,children:e(n?"websocket.button.saving":"websocket.button.save")})})]})})})})}const ww=15e3;function Sw(e,t){return`${e.replace(/\/+$/,"")}${t}`}async function Vae(e,t){const n={};return t&&(n.apikey=t),(await cn.get(Sw(e,"/license/status"),{headers:n,timeout:ww})).data}async function qae(e,t,n){const r={};return n&&(r.apikey=n),(await cn.get(Sw(t,"/license/register"),{headers:r,params:{redirect_uri:e},timeout:ww})).data}async function Hae(e,t,n){const r={};return n&&(r.apikey=n),(await cn.get(Sw(t,"/license/activate"),{headers:r,params:{code:e},timeout:ww})).data}function Kae(){const{t:e}=Fe(),{theme:t}=Gi(),n=jn(),[r]=vc(),s=r.get("code")??"",[o,l]=y.useState("activating"),[u,d]=y.useState(""),f=t==="dark"?"https://evolution-api.com/files/evo/evolution-logo-white.svg":"https://evolution-api.com/files/evo/evolution-logo.svg",h=y.useCallback(async()=>{if(l("activating"),d(""),!s){l("error"),d(e("license.callback.missingCode"));return}const m=jr(Ln.API_URL),g=jr(Ln.TOKEN);if(!m||!g){l("error"),d(e("license.callback.missingCredentials"));return}try{const x=await Hae(s,m,g);if(x.status==="active"){l("success"),setTimeout(()=>n("/manager",{replace:!0}),1500);return}l("error"),d(x.message||x.error||e("license.callback.genericError"))}catch(x){l("error");const b=x?.response?.data?.details??x?.response?.data?.message??x?.message??e("license.callback.genericError");d(typeof b=="string"?b:e("license.callback.genericError"))}},[s,n,e]);return y.useEffect(()=>{h()},[h]),a.jsx("div",{className:"relative flex min-h-screen items-center justify-center bg-gradient-to-t from-primary/20 via-background/95 to-background p-4",children:a.jsxs("div",{className:"w-full max-w-md space-y-6",children:[a.jsxs("div",{className:"flex flex-col items-center text-center",children:[a.jsx("img",{src:f,alt:"Evolution API",className:"mb-3 h-10"}),a.jsx("p",{className:"text-sm text-muted-foreground",children:e("license.callback.title")})]}),a.jsxs("div",{className:"space-y-4 rounded-lg border bg-background/80 p-8 text-center shadow-lg backdrop-blur-sm",children:[o==="activating"&&a.jsxs(a.Fragment,{children:[a.jsx(Lh,{className:"mx-auto h-12 w-12 animate-spin text-primary"}),a.jsx("h2",{className:"text-xl font-semibold",children:e("license.callback.title")}),a.jsx("p",{className:"text-muted-foreground",children:e("license.callback.activating")})]}),o==="success"&&a.jsxs(a.Fragment,{children:[a.jsx(TB,{className:"mx-auto h-12 w-12 text-green-500"}),a.jsx("h2",{className:"text-xl font-semibold",children:e("license.callback.successTitle")}),a.jsx("p",{className:"text-muted-foreground",children:e("license.callback.successDescription")})]}),o==="error"&&a.jsxs(a.Fragment,{children:[a.jsx(RB,{className:"mx-auto h-12 w-12 text-destructive"}),a.jsx("h2",{className:"text-xl font-semibold",children:e("license.callback.errorTitle")}),a.jsx("p",{className:"text-muted-foreground",children:u}),a.jsxs("div",{className:"flex justify-center gap-2 pt-2",children:[a.jsx(q,{variant:"outline",onClick:()=>n("/manager/login",{replace:!0}),children:e("license.callback.back")}),a.jsx(q,{onClick:h,children:e("license.callback.retry")})]})]})]})]})})}const Wae=async({url:e,token:t})=>{try{const{data:n}=await cn.post(`${e}/verify-creds`,{},{headers:{apikey:t}});return bp({facebookAppId:n.facebookAppId,facebookConfigId:n.facebookConfigId,facebookUserToken:n.facebookUserToken}),n}catch{return null}},Gae=async({url:e,token:t})=>{try{const{data:n}=await cn.get(`${e}/server/ok`,{headers:{apikey:t,"Cache-Control":"no-cache"},params:{t:Date.now()}});return n?.status==="ok"}catch{return!1}},Jae=async({url:e})=>(await cn.get(`${e}/`)).data,Qae=hn({provider:nR(["api","go"]).default(tx),serverUrl:ye({required_error:"serverUrl is required"}).url("URL inválida"),apiKey:ye({required_error:"ApiKey is required"}).min(1,"API Key é obrigatória")});function Yae(){const{t:e}=Fe(),t=jn(),{theme:n}=Gi(),[r,s]=y.useState(""),[o,l]=y.useState(!1),u=n==="dark"?"https://evolution-api.com/files/evo/evolution-logo-white.svg":"https://evolution-api.com/files/evo/evolution-logo.svg",d=fn({resolver:pn(Qae),defaultValues:{provider:tx,serverUrl:window.location.protocol+"//"+window.location.host,apiKey:""}}),f=async m=>{l(!0),s("");try{const g=m.serverUrl.replace(/\/+$/,"");if(m.provider==="api")try{if((await Vae(g,m.apiKey)).status!=="active"){const C=`${window.location.origin}/manager/license/callback`,k=await qae(C,g,m.apiKey);if(!k.register_url){const N=k.message||e("license.registerFailed");s(N);return}bp({url:g,token:m.apiKey,provider:"api"}),window.location.href=k.register_url;return}}catch(w){console.warn("[license] status check skipped:",w)}if(m.provider==="go"){if(!await Gae({url:g,token:m.apiKey})){Jy();const C=e("login.message.invalidCredentials");d.setError("apiKey",{type:"manual",message:C}),s(C);return}bp({url:g,token:m.apiKey,provider:"go"}),t("/manager/");return}const x=await Jae({url:m.serverUrl});if(!x||!x.version){Jy();const w=e("login.message.invalidServer");d.setError("serverUrl",{type:"manual",message:w}),s(w);return}if(!await Wae({token:m.apiKey,url:m.serverUrl})){const w=e("login.message.invalidCredentials");d.setError("apiKey",{type:"manual",message:w}),s(w);return}bp({version:x.version,clientName:x.clientName,url:m.serverUrl,token:m.apiKey,provider:"api"}),t("/manager/")}finally{l(!1)}},h=d.formState.errors;return a.jsx("div",{className:"relative flex min-h-screen items-center justify-center bg-gradient-to-t from-primary/20 via-background/95 to-background p-4",children:a.jsxs("div",{className:"w-full max-w-md space-y-6",children:[a.jsxs("div",{className:"flex flex-col items-center text-center",children:[a.jsx("img",{src:u,alt:"Evolution API",className:"mb-3 h-10"}),a.jsx("p",{className:"text-sm text-muted-foreground",children:e("login.description")})]}),a.jsxs("div",{className:"rounded-lg border bg-background/80 p-6 shadow-lg backdrop-blur-sm",children:[a.jsxs("div",{className:"mb-6 space-y-2",children:[a.jsx("h2",{className:"text-2xl font-bold",children:e("login.title")}),a.jsx("p",{className:"text-sm text-muted-foreground",children:e("login.subtitle",{defaultValue:"Digite suas credenciais para acessar o sistema"})})]}),r&&a.jsxs(VP,{variant:"destructive",className:"mb-4",children:[a.jsx(BT,{className:"h-4 w-4"}),a.jsx(qP,{children:"Erro"}),a.jsx(aX,{children:r})]}),a.jsx(Ja,{...d,children:a.jsxs("form",{onSubmit:d.handleSubmit(f),className:"space-y-4",children:[a.jsx("div",{className:"hidden","aria-hidden":"true",children:a.jsx(dn,{required:!0,name:"provider",label:"Provider",options:[{value:"api",label:"Evolution API"},{value:"go",label:"Evolution GO"}]})}),a.jsxs("div",{className:"space-y-2",children:[a.jsxs(Ue,{htmlFor:"login-serverUrl",children:[e("login.form.serverUrl")," ",a.jsx("span",{className:"text-rose-600",children:"*"})]}),a.jsx(X,{id:"login-serverUrl",type:"text",placeholder:window.location.origin,disabled:o,...d.register("serverUrl")}),h.serverUrl&&a.jsx("p",{className:"text-sm text-destructive",children:h.serverUrl.message})]}),a.jsxs("div",{className:"space-y-2",children:[a.jsxs(Ue,{htmlFor:"login-apiKey",children:[e("login.form.apiKey")," ",a.jsx("span",{className:"text-rose-600",children:"*"})]}),a.jsx(X,{id:"login-apiKey",type:"password",placeholder:"Sua chave de API",disabled:o,...d.register("apiKey")}),h.apiKey&&a.jsx("p",{className:"text-sm text-destructive",children:h.apiKey.message})]}),a.jsx(q,{type:"submit",disabled:o,className:"w-full",children:o?a.jsxs(a.Fragment,{children:[a.jsx(Lh,{className:"mr-2 h-4 w-4 animate-spin"}),e("login.button.connecting",{defaultValue:"Conectando..."})]}):e("login.button.login")})]})})]}),a.jsx("div",{className:"text-center text-xs text-muted-foreground",children:a.jsxs("p",{children:["© ",new Date().getFullYear()," Evolution API ·"," ",a.jsx("a",{href:"https://docs.evolutionfoundation.com.br/",target:"_blank",rel:"noreferrer",className:"underline hover:text-primary",children:"Documentação"})]})})]})})}function Zae(){const e=jn(),{theme:t}=Gi(),n=()=>{e("/manager")};return a.jsxs("div",{className:"min-h-screen bg-background",children:[a.jsxs("header",{className:"flex items-center justify-between px-4 py-2",children:[a.jsx("div",{className:"flex items-center",children:a.jsx("img",{src:t==="dark"?"https://evolution-api.com/files/evo/evolution-logo-white.svg":"https://evolution-api.com/files/evo/evolution-logo.svg",alt:"Evolution API Logo",className:"h-8"})}),a.jsxs("div",{className:"flex items-center gap-4",children:[a.jsx(p_,{}),a.jsx(h_,{})]})]}),a.jsx("div",{className:"container mx-auto px-4 py-16",children:a.jsxs("div",{className:"max-w-4xl mx-auto",children:[a.jsxs("div",{className:"text-center mb-12",children:[a.jsx("div",{className:"flex items-center justify-center mb-6",children:a.jsx("img",{src:t==="dark"?"https://evolution-api.com/files/evo/evolution-logo-white.svg":"https://evolution-api.com/files/evo/evolution-logo.svg",alt:"Evolution Manager Logo",className:"h-10"})}),a.jsx("h1",{className:"text-4xl font-bold text-foreground mb-4",children:"Evolution Manager v2"}),a.jsx("p",{className:"text-xl text-muted-foreground mb-6",children:"Modern web interface for Evolution API management"}),a.jsx(_o,{variant:"secondary",className:"text-sm px-3 py-1",children:"Version 2.0.0"})]}),a.jsxs(Bn,{className:"mb-8",children:[a.jsxs(Yn,{children:[a.jsxs(Zn,{className:"flex items-center gap-2",children:[a.jsx(tz,{className:"w-5 h-5 text-primary"}),"Welcome to Evolution Manager"]}),a.jsx(D1,{children:"A powerful, modern dashboard for managing your WhatsApp API instances with Evolution API"})]}),a.jsx(zn,{className:"space-y-6",children:a.jsx("div",{className:"pt-6 border-t border-border",children:a.jsx("div",{className:"flex flex-col sm:flex-row gap-4 justify-center items-center",children:a.jsxs(q,{onClick:n,size:"lg",className:"px-8 py-3",children:["Access Manager Dashboard",a.jsx(fx,{className:"w-4 h-4 ml-2"})]})})})})]}),a.jsxs(Bn,{children:[a.jsxs(Yn,{children:[a.jsx(Zn,{children:"Resources & Support"}),a.jsx(D1,{children:"Get help, contribute, or learn more about Evolution API"})]}),a.jsx(zn,{children:a.jsxs("div",{className:"grid md:grid-cols-3 gap-4",children:[a.jsxs("a",{href:"https://github.com/evolution-foundation/evolution-manager-v2",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-4 rounded-lg border border-border hover:bg-accent transition-colors",children:[a.jsx(BB,{className:"w-5 h-5 text-muted-foreground"}),a.jsxs("div",{children:[a.jsx("div",{className:"font-medium text-foreground",children:"GitHub"}),a.jsx("div",{className:"text-sm text-muted-foreground",children:"Source code"})]})]}),a.jsxs("a",{href:"https://evolutionfoundation.com.br",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 p-4 rounded-lg border border-border hover:bg-accent transition-colors",children:[a.jsx(zB,{className:"w-5 h-5 text-muted-foreground"}),a.jsxs("div",{children:[a.jsx("div",{className:"font-medium text-foreground",children:"Website"}),a.jsx("div",{className:"text-sm text-muted-foreground",children:"Official site"})]})]}),a.jsxs("a",{href:"mailto:suporte@evofoundation.com.br",className:"flex items-center gap-3 p-4 rounded-lg border border-border hover:bg-accent transition-colors",children:[a.jsx(QB,{className:"w-5 h-5 text-muted-foreground"}),a.jsxs("div",{children:[a.jsx("div",{className:"font-medium text-foreground",children:"Contact"}),a.jsx("div",{className:"text-sm text-muted-foreground",children:"Get support"})]})]})]})})]}),a.jsx("div",{className:"text-center mt-12 text-sm text-muted-foreground",children:a.jsx("p",{children:"© 2025 Evolution API. Licensed under Apache 2.0 with Evolution API custom conditions."})})]})})]})}const Xae=pF([{path:"/",element:a.jsx(Zae,{})},{path:"/manager/login",element:a.jsx(bL,{children:a.jsx(Yae,{})})},{path:"/manager/license/callback",element:a.jsx(Kae,{})},{path:"/manager/",element:a.jsx(wn,{children:a.jsx(WV,{children:a.jsx(FY,{})})})},{path:"/manager/instance/:instanceId/dashboard",element:a.jsx(wn,{children:a.jsx(Nn,{children:a.jsx(CX,{})})})},{path:"/manager/instance/:instanceId/chat",element:a.jsx(wn,{feature:"chat",children:a.jsx(Nn,{children:a.jsx(Tk,{})})})},{path:"/manager/instance/:instanceId/chat/:remoteJid",element:a.jsx(wn,{feature:"chat",children:a.jsx(Nn,{children:a.jsx(Tk,{})})})},{path:"/manager/instance/:instanceId/settings",element:a.jsx(wn,{feature:"settings",children:a.jsx(Nn,{children:a.jsx(Hse,{})})})},{path:"/manager/instance/:instanceId/openai",element:a.jsx(wn,{feature:"openai",children:a.jsx(Nn,{children:a.jsx(lE,{})})})},{path:"/manager/instance/:instanceId/openai/:botId",element:a.jsx(wn,{feature:"openai",children:a.jsx(Nn,{children:a.jsx(lE,{})})})},{path:"/manager/instance/:instanceId/webhook",element:a.jsx(wn,{feature:"webhook",children:a.jsx(Nn,{children:a.jsx(Aae,{})})})},{path:"/manager/instance/:instanceId/websocket",element:a.jsx(wn,{feature:"websocket",children:a.jsx(Nn,{children:a.jsx(Uae,{})})})},{path:"/manager/instance/:instanceId/rabbitmq",element:a.jsx(wn,{feature:"rabbitmq",children:a.jsx(Nn,{children:a.jsx($se,{})})})},{path:"/manager/instance/:instanceId/sqs",element:a.jsx(wn,{feature:"sqs",children:a.jsx(Nn,{children:a.jsx(Zse,{})})})},{path:"/manager/instance/:instanceId/chatwoot",element:a.jsx(wn,{feature:"chatwoot",children:a.jsx(Nn,{children:a.jsx(rX,{})})})},{path:"/manager/instance/:instanceId/typebot",element:a.jsx(wn,{feature:"typebot",children:a.jsx(Nn,{children:a.jsx(cE,{})})})},{path:"/manager/instance/:instanceId/typebot/:typebotId",element:a.jsx(wn,{feature:"typebot",children:a.jsx(Nn,{children:a.jsx(cE,{})})})},{path:"/manager/instance/:instanceId/dify",element:a.jsx(wn,{feature:"dify",children:a.jsx(Nn,{children:a.jsx(tE,{})})})},{path:"/manager/instance/:instanceId/dify/:difyId",element:a.jsx(wn,{feature:"dify",children:a.jsx(Nn,{children:a.jsx(tE,{})})})},{path:"/manager/instance/:instanceId/n8n",element:a.jsx(wn,{feature:"n8n",children:a.jsx(Nn,{children:a.jsx(iE,{})})})},{path:"/manager/instance/:instanceId/n8n/:n8nId",element:a.jsx(wn,{feature:"n8n",children:a.jsx(Nn,{children:a.jsx(iE,{})})})},{path:"/manager/instance/:instanceId/evoai",element:a.jsx(wn,{feature:"evoai",children:a.jsx(Nn,{children:a.jsx(sE,{})})})},{path:"/manager/instance/:instanceId/evoai/:evoaiId",element:a.jsx(wn,{feature:"evoai",children:a.jsx(Nn,{children:a.jsx(sE,{})})})},{path:"/manager/instance/:instanceId/evolutionBot",element:a.jsx(wn,{feature:"evolutionBot",children:a.jsx(Nn,{children:a.jsx(aE,{})})})},{path:"/manager/instance/:instanceId/evolutionBot/:evolutionBotId",element:a.jsx(wn,{feature:"evolutionBot",children:a.jsx(Nn,{children:a.jsx(aE,{})})})},{path:"/manager/instance/:instanceId/flowise",element:a.jsx(wn,{feature:"flowise",children:a.jsx(Nn,{children:a.jsx(oE,{})})})},{path:"/manager/instance/:instanceId/flowise/:flowiseId",element:a.jsx(wn,{feature:"flowise",children:a.jsx(Nn,{children:a.jsx(oE,{})})})},{path:"/manager/instance/:instanceId/proxy",element:a.jsx(wn,{feature:"proxy",children:a.jsx(Nn,{children:a.jsx(Pse,{})})})},{path:"/manager/embed-chat",element:a.jsx(rE,{})},{path:"/manager/embed-chat/:remoteJid",element:a.jsx(rE,{})}]),eoe={type:"logger",log(e){this.output("log",e)},warn(e){this.output("warn",e)},error(e){this.output("error",e)},output(e,t){console&&console[e]&&console[e].apply(console,t)}};class mh{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.init(t,n)}init(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.prefix=n.prefix||"i18next:",this.logger=t||eoe,this.options=n,this.debug=n.debug}log(){for(var t=arguments.length,n=new Array(t),r=0;r{this.observers[r]||(this.observers[r]=new Map);const s=this.observers[r].get(n)||0;this.observers[r].set(n,s+1)}),this}off(t,n){if(this.observers[t]){if(!n){delete this.observers[t];return}this.observers[t].delete(n)}}emit(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),s=1;s{let[u,d]=l;for(let f=0;f{let[u,d]=l;for(let f=0;f{let e,t;const n=new Promise((r,s)=>{e=r,t=s});return n.resolve=e,n.reject=t,n},uE=e=>e==null?"":""+e,toe=(e,t,n)=>{e.forEach(r=>{t[r]&&(n[r]=t[r])})},noe=/###/g,dE=e=>e&&e.indexOf("###")>-1?e.replace(noe,"."):e,fE=e=>!e||typeof e=="string",Qu=(e,t,n)=>{const r=typeof t!="string"?t:t.split(".");let s=0;for(;s{const{obj:r,k:s}=Qu(e,t,Object);if(r!==void 0||t.length===1){r[s]=n;return}let o=t[t.length-1],l=t.slice(0,t.length-1),u=Qu(e,l,Object);for(;u.obj===void 0&&l.length;)o=`${l[l.length-1]}.${o}`,l=l.slice(0,l.length-1),u=Qu(e,l,Object),u&&u.obj&&typeof u.obj[`${u.k}.${o}`]<"u"&&(u.obj=void 0);u.obj[`${u.k}.${o}`]=n},roe=(e,t,n,r)=>{const{obj:s,k:o}=Qu(e,t,Object);s[o]=s[o]||[],s[o].push(n)},gh=(e,t)=>{const{obj:n,k:r}=Qu(e,t);if(n)return n[r]},soe=(e,t,n)=>{const r=gh(e,n);return r!==void 0?r:gh(t,n)},oO=(e,t,n)=>{for(const r in t)r!=="__proto__"&&r!=="constructor"&&(r in e?typeof e[r]=="string"||e[r]instanceof String||typeof t[r]=="string"||t[r]instanceof String?n&&(e[r]=t[r]):oO(e[r],t[r],n):e[r]=t[r]);return e},$l=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var aoe={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};const ooe=e=>typeof e=="string"?e.replace(/[&<>"'\/]/g,t=>aoe[t]):e;class ioe{constructor(t){this.capacity=t,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(t){const n=this.regExpMap.get(t);if(n!==void 0)return n;const r=new RegExp(t);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(t,r),this.regExpQueue.push(t),r}}const loe=[" ",",","?","!",";"],coe=new ioe(20),uoe=(e,t,n)=>{t=t||"",n=n||"";const r=loe.filter(l=>t.indexOf(l)<0&&n.indexOf(l)<0);if(r.length===0)return!0;const s=coe.getRegExp(`(${r.map(l=>l==="?"?"\\?":l).join("|")})`);let o=!s.test(e);if(!o){const l=e.indexOf(n);l>0&&!s.test(e.substring(0,l))&&(o=!0)}return o},Vb=function(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:".";if(!e)return;if(e[t])return e[t];const r=t.split(n);let s=e;for(let o=0;o-1&&de&&e.indexOf("_")>0?e.replace("_","-"):e;class hE extends Tm{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{ns:["translation"],defaultNS:"translation"};super(),this.data=t||{},this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(t){this.options.ns.indexOf(t)<0&&this.options.ns.push(t)}removeNamespaces(t){const n=this.options.ns.indexOf(t);n>-1&&this.options.ns.splice(n,1)}getResource(t,n,r){let s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};const o=s.keySeparator!==void 0?s.keySeparator:this.options.keySeparator,l=s.ignoreJSONStructure!==void 0?s.ignoreJSONStructure:this.options.ignoreJSONStructure;let u;t.indexOf(".")>-1?u=t.split("."):(u=[t,n],r&&(Array.isArray(r)?u.push(...r):typeof r=="string"&&o?u.push(...r.split(o)):u.push(r)));const d=gh(this.data,u);return!d&&!n&&!r&&t.indexOf(".")>-1&&(t=u[0],n=u[1],r=u.slice(2).join(".")),d||!l||typeof r!="string"?d:Vb(this.data&&this.data[t]&&this.data[t][n],r,o)}addResource(t,n,r,s){let o=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{silent:!1};const l=o.keySeparator!==void 0?o.keySeparator:this.options.keySeparator;let u=[t,n];r&&(u=u.concat(l?r.split(l):r)),t.indexOf(".")>-1&&(u=t.split("."),s=n,n=u[1]),this.addNamespaces(n),pE(this.data,u,s),o.silent||this.emit("added",t,n,r,s)}addResources(t,n,r){let s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{silent:!1};for(const o in r)(typeof r[o]=="string"||Array.isArray(r[o]))&&this.addResource(t,n,o,r[o],{silent:!0});s.silent||this.emit("added",t,n,r)}addResourceBundle(t,n,r,s,o){let l=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{silent:!1,skipCopy:!1},u=[t,n];t.indexOf(".")>-1&&(u=t.split("."),s=r,r=n,n=u[1]),this.addNamespaces(n);let d=gh(this.data,u)||{};l.skipCopy||(r=JSON.parse(JSON.stringify(r))),s?oO(d,r,o):d={...d,...r},pE(this.data,u,d),l.silent||this.emit("added",t,n,r)}removeResourceBundle(t,n){this.hasResourceBundle(t,n)&&delete this.data[t][n],this.removeNamespaces(n),this.emit("removed",t,n)}hasResourceBundle(t,n){return this.getResource(t,n)!==void 0}getResourceBundle(t,n){return n||(n=this.options.defaultNS),this.options.compatibilityAPI==="v1"?{...this.getResource(t,n)}:this.getResource(t,n)}getDataByLanguage(t){return this.data[t]}hasLanguageSomeTranslations(t){const n=this.getDataByLanguage(t);return!!(n&&Object.keys(n)||[]).find(s=>n[s]&&Object.keys(n[s]).length>0)}toJSON(){return this.data}}var iO={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,n,r,s){return e.forEach(o=>{this.processors[o]&&(t=this.processors[o].process(t,n,r,s))}),t}};const mE={};class yh extends Tm{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(),toe(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],t,this),this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=ga.create("translator")}changeLanguage(t){t&&(this.language=t)}exists(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}};if(t==null)return!1;const r=this.resolve(t,n);return r&&r.res!==void 0}extractFromKey(t,n){let r=n.nsSeparator!==void 0?n.nsSeparator:this.options.nsSeparator;r===void 0&&(r=":");const s=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator;let o=n.ns||this.options.defaultNS||[];const l=r&&t.indexOf(r)>-1,u=!this.options.userDefinedKeySeparator&&!n.keySeparator&&!this.options.userDefinedNsSeparator&&!n.nsSeparator&&!uoe(t,r,s);if(l&&!u){const d=t.match(this.interpolator.nestingRegexp);if(d&&d.length>0)return{key:t,namespaces:o};const f=t.split(r);(r!==s||r===s&&this.options.ns.indexOf(f[0])>-1)&&(o=f.shift()),t=f.join(s)}return typeof o=="string"&&(o=[o]),{key:t,namespaces:o}}translate(t,n,r){if(typeof n!="object"&&this.options.overloadTranslationOptionHandler&&(n=this.options.overloadTranslationOptionHandler(arguments)),typeof n=="object"&&(n={...n}),n||(n={}),t==null)return"";Array.isArray(t)||(t=[String(t)]);const s=n.returnDetails!==void 0?n.returnDetails:this.options.returnDetails,o=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator,{key:l,namespaces:u}=this.extractFromKey(t[t.length-1],n),d=u[u.length-1],f=n.lng||this.language,h=n.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(f&&f.toLowerCase()==="cimode"){if(h){const _=n.nsSeparator||this.options.nsSeparator;return s?{res:`${d}${_}${l}`,usedKey:l,exactUsedKey:l,usedLng:f,usedNS:d,usedParams:this.getUsedParamsDetails(n)}:`${d}${_}${l}`}return s?{res:l,usedKey:l,exactUsedKey:l,usedLng:f,usedNS:d,usedParams:this.getUsedParamsDetails(n)}:l}const m=this.resolve(t,n);let g=m&&m.res;const x=m&&m.usedKey||l,b=m&&m.exactUsedKey||l,w=Object.prototype.toString.apply(g),C=["[object Number]","[object Function]","[object RegExp]"],k=n.joinArrays!==void 0?n.joinArrays:this.options.joinArrays,N=!this.i18nFormat||this.i18nFormat.handleAsObject;if(N&&g&&(typeof g!="string"&&typeof g!="boolean"&&typeof g!="number")&&C.indexOf(w)<0&&!(typeof k=="string"&&Array.isArray(g))){if(!n.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const _=this.options.returnedObjectHandler?this.options.returnedObjectHandler(x,g,{...n,ns:u}):`key '${l} (${this.language})' returned an object instead of string.`;return s?(m.res=_,m.usedParams=this.getUsedParamsDetails(n),m):_}if(o){const _=Array.isArray(g),I=_?[]:{},M=_?b:x;for(const A in g)if(Object.prototype.hasOwnProperty.call(g,A)){const O=`${M}${o}${A}`;I[A]=this.translate(O,{...n,joinArrays:!1,ns:u}),I[A]===O&&(I[A]=g[A])}g=I}}else if(N&&typeof k=="string"&&Array.isArray(g))g=g.join(k),g&&(g=this.extendTranslation(g,t,n,r));else{let _=!1,I=!1;const M=n.count!==void 0&&typeof n.count!="string",A=yh.hasDefaultValue(n),O=M?this.pluralResolver.getSuffix(f,n.count,n):"",F=n.ordinal&&M?this.pluralResolver.getSuffix(f,n.count,{ordinal:!1}):"",z=M&&!n.ordinal&&n.count===0&&this.pluralResolver.shouldUseIntlApi(),Z=z&&n[`defaultValue${this.options.pluralSeparator}zero`]||n[`defaultValue${O}`]||n[`defaultValue${F}`]||n.defaultValue;!this.isValidLookup(g)&&A&&(_=!0,g=Z),this.isValidLookup(g)||(I=!0,g=l);const ce=(n.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&I?void 0:g,H=A&&Z!==g&&this.options.updateMissing;if(I||_||H){if(this.logger.log(H?"updateKey":"missingKey",f,d,l,H?Z:g),o){const V=this.resolve(l,{...n,keySeparator:!1});V&&V.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let oe=[];const Q=this.languageUtils.getFallbackCodes(this.options.fallbackLng,n.lng||this.language);if(this.options.saveMissingTo==="fallback"&&Q&&Q[0])for(let V=0;V{const D=A&&U!==g?U:ce;this.options.missingKeyHandler?this.options.missingKeyHandler(V,d,K,D,H,n):this.backendConnector&&this.backendConnector.saveMissing&&this.backendConnector.saveMissing(V,d,K,D,H,n),this.emit("missingKey",V,d,K,g)};this.options.saveMissing&&(this.options.saveMissingPlurals&&M?oe.forEach(V=>{const K=this.pluralResolver.getSuffixes(V,n);z&&n[`defaultValue${this.options.pluralSeparator}zero`]&&K.indexOf(`${this.options.pluralSeparator}zero`)<0&&K.push(`${this.options.pluralSeparator}zero`),K.forEach(U=>{ne([V],l+U,n[`defaultValue${U}`]||Z)})}):ne(oe,l,Z))}g=this.extendTranslation(g,t,n,m,r),I&&g===l&&this.options.appendNamespaceToMissingKey&&(g=`${d}:${l}`),(I||_)&&this.options.parseMissingKeyHandler&&(this.options.compatibilityAPI!=="v1"?g=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${d}:${l}`:l,_?g:void 0):g=this.options.parseMissingKeyHandler(g))}return s?(m.res=g,m.usedParams=this.getUsedParamsDetails(n),m):g}extendTranslation(t,n,r,s,o){var l=this;if(this.i18nFormat&&this.i18nFormat.parse)t=this.i18nFormat.parse(t,{...this.options.interpolation.defaultVariables,...r},r.lng||this.language||s.usedLng,s.usedNS,s.usedKey,{resolved:s});else if(!r.skipInterpolation){r.interpolation&&this.interpolator.init({...r,interpolation:{...this.options.interpolation,...r.interpolation}});const f=typeof t=="string"&&(r&&r.interpolation&&r.interpolation.skipOnVariables!==void 0?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let h;if(f){const g=t.match(this.interpolator.nestingRegexp);h=g&&g.length}let m=r.replace&&typeof r.replace!="string"?r.replace:r;if(this.options.interpolation.defaultVariables&&(m={...this.options.interpolation.defaultVariables,...m}),t=this.interpolator.interpolate(t,m,r.lng||this.language||s.usedLng,r),f){const g=t.match(this.interpolator.nestingRegexp),x=g&&g.length;h1&&arguments[1]!==void 0?arguments[1]:{},r,s,o,l,u;return typeof t=="string"&&(t=[t]),t.forEach(d=>{if(this.isValidLookup(r))return;const f=this.extractFromKey(d,n),h=f.key;s=h;let m=f.namespaces;this.options.fallbackNS&&(m=m.concat(this.options.fallbackNS));const g=n.count!==void 0&&typeof n.count!="string",x=g&&!n.ordinal&&n.count===0&&this.pluralResolver.shouldUseIntlApi(),b=n.context!==void 0&&(typeof n.context=="string"||typeof n.context=="number")&&n.context!=="",w=n.lngs?n.lngs:this.languageUtils.toResolveHierarchy(n.lng||this.language,n.fallbackLng);m.forEach(C=>{this.isValidLookup(r)||(u=C,!mE[`${w[0]}-${C}`]&&this.utils&&this.utils.hasLoadedNamespace&&!this.utils.hasLoadedNamespace(u)&&(mE[`${w[0]}-${C}`]=!0,this.logger.warn(`key "${s}" for languages "${w.join(", ")}" won't get resolved as namespace "${u}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),w.forEach(k=>{if(this.isValidLookup(r))return;l=k;const N=[h];if(this.i18nFormat&&this.i18nFormat.addLookupKeys)this.i18nFormat.addLookupKeys(N,h,k,C,n);else{let _;g&&(_=this.pluralResolver.getSuffix(k,n.count,n));const I=`${this.options.pluralSeparator}zero`,M=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(g&&(N.push(h+_),n.ordinal&&_.indexOf(M)===0&&N.push(h+_.replace(M,this.options.pluralSeparator)),x&&N.push(h+I)),b){const A=`${h}${this.options.contextSeparator}${n.context}`;N.push(A),g&&(N.push(A+_),n.ordinal&&_.indexOf(M)===0&&N.push(A+_.replace(M,this.options.pluralSeparator)),x&&N.push(A+I))}}let T;for(;T=N.pop();)this.isValidLookup(r)||(o=T,r=this.getResource(k,C,T,n))}))})}),{res:r,usedKey:s,exactUsedKey:o,usedLng:l,usedNS:u}}isValidLookup(t){return t!==void 0&&!(!this.options.returnNull&&t===null)&&!(!this.options.returnEmptyString&&t==="")}getResource(t,n,r){let s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(t,n,r,s):this.resourceStore.getResource(t,n,r,s)}getUsedParamsDetails(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const n=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],r=t.replace&&typeof t.replace!="string";let s=r?t.replace:t;if(r&&typeof t.count<"u"&&(s.count=t.count),this.options.interpolation.defaultVariables&&(s={...this.options.interpolation.defaultVariables,...s}),!r){s={...s};for(const o of n)delete s[o]}return s}static hasDefaultValue(t){const n="defaultValue";for(const r in t)if(Object.prototype.hasOwnProperty.call(t,r)&&n===r.substring(0,n.length)&&t[r]!==void 0)return!0;return!1}}const My=e=>e.charAt(0).toUpperCase()+e.slice(1);class gE{constructor(t){this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=ga.create("languageUtils")}getScriptPartFromCode(t){if(t=vh(t),!t||t.indexOf("-")<0)return null;const n=t.split("-");return n.length===2||(n.pop(),n[n.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(n.join("-"))}getLanguagePartFromCode(t){if(t=vh(t),!t||t.indexOf("-")<0)return t;const n=t.split("-");return this.formatLanguageCode(n[0])}formatLanguageCode(t){if(typeof t=="string"&&t.indexOf("-")>-1){const n=["hans","hant","latn","cyrl","cans","mong","arab"];let r=t.split("-");return this.options.lowerCaseLng?r=r.map(s=>s.toLowerCase()):r.length===2?(r[0]=r[0].toLowerCase(),r[1]=r[1].toUpperCase(),n.indexOf(r[1].toLowerCase())>-1&&(r[1]=My(r[1].toLowerCase()))):r.length===3&&(r[0]=r[0].toLowerCase(),r[1].length===2&&(r[1]=r[1].toUpperCase()),r[0]!=="sgn"&&r[2].length===2&&(r[2]=r[2].toUpperCase()),n.indexOf(r[1].toLowerCase())>-1&&(r[1]=My(r[1].toLowerCase())),n.indexOf(r[2].toLowerCase())>-1&&(r[2]=My(r[2].toLowerCase()))),r.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?t.toLowerCase():t}isSupportedCode(t){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(t=this.getLanguagePartFromCode(t)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(t)>-1}getBestMatchFromCodes(t){if(!t)return null;let n;return t.forEach(r=>{if(n)return;const s=this.formatLanguageCode(r);(!this.options.supportedLngs||this.isSupportedCode(s))&&(n=s)}),!n&&this.options.supportedLngs&&t.forEach(r=>{if(n)return;const s=this.getLanguagePartFromCode(r);if(this.isSupportedCode(s))return n=s;n=this.options.supportedLngs.find(o=>{if(o===s)return o;if(!(o.indexOf("-")<0&&s.indexOf("-")<0)&&(o.indexOf("-")>0&&s.indexOf("-")<0&&o.substring(0,o.indexOf("-"))===s||o.indexOf(s)===0&&s.length>1))return o})}),n||(n=this.getFallbackCodes(this.options.fallbackLng)[0]),n}getFallbackCodes(t,n){if(!t)return[];if(typeof t=="function"&&(t=t(n)),typeof t=="string"&&(t=[t]),Array.isArray(t))return t;if(!n)return t.default||[];let r=t[n];return r||(r=t[this.getScriptPartFromCode(n)]),r||(r=t[this.formatLanguageCode(n)]),r||(r=t[this.getLanguagePartFromCode(n)]),r||(r=t.default),r||[]}toResolveHierarchy(t,n){const r=this.getFallbackCodes(n||this.options.fallbackLng||[],t),s=[],o=l=>{l&&(this.isSupportedCode(l)?s.push(l):this.logger.warn(`rejecting language code not found in supportedLngs: ${l}`))};return typeof t=="string"&&(t.indexOf("-")>-1||t.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&o(this.formatLanguageCode(t)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&o(this.getScriptPartFromCode(t)),this.options.load!=="currentOnly"&&o(this.getLanguagePartFromCode(t))):typeof t=="string"&&o(this.formatLanguageCode(t)),r.forEach(l=>{s.indexOf(l)<0&&o(this.formatLanguageCode(l))}),s}}let doe=[{lngs:["ach","ak","am","arn","br","fil","gun","ln","mfe","mg","mi","oc","pt","pt-BR","tg","tl","ti","tr","uz","wa"],nr:[1,2],fc:1},{lngs:["af","an","ast","az","bg","bn","ca","da","de","dev","el","en","eo","es","et","eu","fi","fo","fur","fy","gl","gu","ha","hi","hu","hy","ia","it","kk","kn","ku","lb","mai","ml","mn","mr","nah","nap","nb","ne","nl","nn","no","nso","pa","pap","pms","ps","pt-PT","rm","sco","se","si","so","son","sq","sv","sw","ta","te","tk","ur","yo"],nr:[1,2],fc:2},{lngs:["ay","bo","cgg","fa","ht","id","ja","jbo","ka","km","ko","ky","lo","ms","sah","su","th","tt","ug","vi","wo","zh"],nr:[1],fc:3},{lngs:["be","bs","cnr","dz","hr","ru","sr","uk"],nr:[1,2,5],fc:4},{lngs:["ar"],nr:[0,1,2,3,11,100],fc:5},{lngs:["cs","sk"],nr:[1,2,5],fc:6},{lngs:["csb","pl"],nr:[1,2,5],fc:7},{lngs:["cy"],nr:[1,2,3,8],fc:8},{lngs:["fr"],nr:[1,2],fc:9},{lngs:["ga"],nr:[1,2,3,7,11],fc:10},{lngs:["gd"],nr:[1,2,3,20],fc:11},{lngs:["is"],nr:[1,2],fc:12},{lngs:["jv"],nr:[0,1],fc:13},{lngs:["kw"],nr:[1,2,3,4],fc:14},{lngs:["lt"],nr:[1,2,10],fc:15},{lngs:["lv"],nr:[1,2,0],fc:16},{lngs:["mk"],nr:[1,2],fc:17},{lngs:["mnk"],nr:[0,1,2],fc:18},{lngs:["mt"],nr:[1,2,11,20],fc:19},{lngs:["or"],nr:[2,1],fc:2},{lngs:["ro"],nr:[1,2,20],fc:20},{lngs:["sl"],nr:[5,1,2,3],fc:21},{lngs:["he","iw"],nr:[1,2,20,21],fc:22}],foe={1:e=>+(e>1),2:e=>+(e!=1),3:e=>0,4:e=>e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2,5:e=>e==0?0:e==1?1:e==2?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5,6:e=>e==1?0:e>=2&&e<=4?1:2,7:e=>e==1?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2,8:e=>e==1?0:e==2?1:e!=8&&e!=11?2:3,9:e=>+(e>=2),10:e=>e==1?0:e==2?1:e<7?2:e<11?3:4,11:e=>e==1||e==11?0:e==2||e==12?1:e>2&&e<20?2:3,12:e=>+(e%10!=1||e%100==11),13:e=>+(e!==0),14:e=>e==1?0:e==2?1:e==3?2:3,15:e=>e%10==1&&e%100!=11?0:e%10>=2&&(e%100<10||e%100>=20)?1:2,16:e=>e%10==1&&e%100!=11?0:e!==0?1:2,17:e=>e==1||e%10==1&&e%100!=11?0:1,18:e=>e==0?0:e==1?1:2,19:e=>e==1?0:e==0||e%100>1&&e%100<11?1:e%100>10&&e%100<20?2:3,20:e=>e==1?0:e==0||e%100>0&&e%100<20?1:2,21:e=>e%100==1?1:e%100==2?2:e%100==3||e%100==4?3:0,22:e=>e==1?0:e==2?1:(e<0||e>10)&&e%10==0?2:3};const poe=["v1","v2","v3"],hoe=["v4"],vE={zero:0,one:1,two:2,few:3,many:4,other:5},moe=()=>{const e={};return doe.forEach(t=>{t.lngs.forEach(n=>{e[n]={numbers:t.nr,plurals:foe[t.fc]}})}),e};class goe{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.languageUtils=t,this.options=n,this.logger=ga.create("pluralResolver"),(!this.options.compatibilityJSON||hoe.includes(this.options.compatibilityJSON))&&(typeof Intl>"u"||!Intl.PluralRules)&&(this.options.compatibilityJSON="v3",this.logger.error("Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.")),this.rules=moe(),this.pluralRulesCache={}}addRule(t,n){this.rules[t]=n}clearCache(){this.pluralRulesCache={}}getRule(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(this.shouldUseIntlApi())try{const r=vh(t==="dev"?"en":t),s=n.ordinal?"ordinal":"cardinal",o=JSON.stringify({cleanedCode:r,type:s});if(o in this.pluralRulesCache)return this.pluralRulesCache[o];const l=new Intl.PluralRules(r,{type:s});return this.pluralRulesCache[o]=l,l}catch{return}return this.rules[t]||this.rules[this.languageUtils.getLanguagePartFromCode(t)]}needsPlural(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const r=this.getRule(t,n);return this.shouldUseIntlApi()?r&&r.resolvedOptions().pluralCategories.length>1:r&&r.numbers.length>1}getPluralFormsOfKey(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return this.getSuffixes(t,r).map(s=>`${n}${s}`)}getSuffixes(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const r=this.getRule(t,n);return r?this.shouldUseIntlApi()?r.resolvedOptions().pluralCategories.sort((s,o)=>vE[s]-vE[o]).map(s=>`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:""}${s}`):r.numbers.map(s=>this.getSuffix(t,s,n)):[]}getSuffix(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const s=this.getRule(t,r);return s?this.shouldUseIntlApi()?`${this.options.prepend}${r.ordinal?`ordinal${this.options.prepend}`:""}${s.select(n)}`:this.getSuffixRetroCompatible(s,n):(this.logger.warn(`no plural rule found for: ${t}`),"")}getSuffixRetroCompatible(t,n){const r=t.noAbs?t.plurals(n):t.plurals(Math.abs(n));let s=t.numbers[r];this.options.simplifyPluralSuffix&&t.numbers.length===2&&t.numbers[0]===1&&(s===2?s="plural":s===1&&(s=""));const o=()=>this.options.prepend&&s.toString()?this.options.prepend+s.toString():s.toString();return this.options.compatibilityJSON==="v1"?s===1?"":typeof s=="number"?`_plural_${s.toString()}`:o():this.options.compatibilityJSON==="v2"||this.options.simplifyPluralSuffix&&t.numbers.length===2&&t.numbers[0]===1?o():this.options.prepend&&r.toString()?this.options.prepend+r.toString():r.toString()}shouldUseIntlApi(){return!poe.includes(this.options.compatibilityJSON)}}const yE=function(e,t,n){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:".",s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,o=soe(e,t,n);return!o&&s&&typeof n=="string"&&(o=Vb(e,n,r),o===void 0&&(o=Vb(t,n,r))),o},_y=e=>e.replace(/\$/g,"$$$$");class voe{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=ga.create("interpolator"),this.options=t,this.format=t.interpolation&&t.interpolation.format||(n=>n),this.init(t)}init(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};t.interpolation||(t.interpolation={escapeValue:!0});const{escape:n,escapeValue:r,useRawValueToEscape:s,prefix:o,prefixEscaped:l,suffix:u,suffixEscaped:d,formatSeparator:f,unescapeSuffix:h,unescapePrefix:m,nestingPrefix:g,nestingPrefixEscaped:x,nestingSuffix:b,nestingSuffixEscaped:w,nestingOptionsSeparator:C,maxReplaces:k,alwaysFormat:N}=t.interpolation;this.escape=n!==void 0?n:ooe,this.escapeValue=r!==void 0?r:!0,this.useRawValueToEscape=s!==void 0?s:!1,this.prefix=o?$l(o):l||"{{",this.suffix=u?$l(u):d||"}}",this.formatSeparator=f||",",this.unescapePrefix=h?"":m||"-",this.unescapeSuffix=this.unescapePrefix?"":h||"",this.nestingPrefix=g?$l(g):x||$l("$t("),this.nestingSuffix=b?$l(b):w||$l(")"),this.nestingOptionsSeparator=C||",",this.maxReplaces=k||1e3,this.alwaysFormat=N!==void 0?N:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const t=(n,r)=>n&&n.source===r?(n.lastIndex=0,n):new RegExp(r,"g");this.regexp=t(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=t(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=t(this.nestingRegexp,`${this.nestingPrefix}(.+?)${this.nestingSuffix}`)}interpolate(t,n,r,s){let o,l,u;const d=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},f=x=>{if(x.indexOf(this.formatSeparator)<0){const k=yE(n,d,x,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(k,void 0,r,{...s,...n,interpolationkey:x}):k}const b=x.split(this.formatSeparator),w=b.shift().trim(),C=b.join(this.formatSeparator).trim();return this.format(yE(n,d,w,this.options.keySeparator,this.options.ignoreJSONStructure),C,r,{...s,...n,interpolationkey:w})};this.resetRegExp();const h=s&&s.missingInterpolationHandler||this.options.missingInterpolationHandler,m=s&&s.interpolation&&s.interpolation.skipOnVariables!==void 0?s.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:x=>_y(x)},{regex:this.regexp,safeValue:x=>this.escapeValue?_y(this.escape(x)):_y(x)}].forEach(x=>{for(u=0;o=x.regex.exec(t);){const b=o[1].trim();if(l=f(b),l===void 0)if(typeof h=="function"){const C=h(t,o,s);l=typeof C=="string"?C:""}else if(s&&Object.prototype.hasOwnProperty.call(s,b))l="";else if(m){l=o[0];continue}else this.logger.warn(`missed to pass in variable ${b} for interpolating ${t}`),l="";else typeof l!="string"&&!this.useRawValueToEscape&&(l=uE(l));const w=x.safeValue(l);if(t=t.replace(o[0],w),m?(x.regex.lastIndex+=l.length,x.regex.lastIndex-=o[0].length):x.regex.lastIndex=0,u++,u>=this.maxReplaces)break}}),t}nest(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},s,o,l;const u=(d,f)=>{const h=this.nestingOptionsSeparator;if(d.indexOf(h)<0)return d;const m=d.split(new RegExp(`${h}[ ]*{`));let g=`{${m[1]}`;d=m[0],g=this.interpolate(g,l);const x=g.match(/'/g),b=g.match(/"/g);(x&&x.length%2===0&&!b||b.length%2!==0)&&(g=g.replace(/'/g,'"'));try{l=JSON.parse(g),f&&(l={...f,...l})}catch(w){return this.logger.warn(`failed parsing options string in nesting for key ${d}`,w),`${d}${h}${g}`}return l.defaultValue&&l.defaultValue.indexOf(this.prefix)>-1&&delete l.defaultValue,d};for(;s=this.nestingRegexp.exec(t);){let d=[];l={...r},l=l.replace&&typeof l.replace!="string"?l.replace:l,l.applyPostProcessor=!1,delete l.defaultValue;let f=!1;if(s[0].indexOf(this.formatSeparator)!==-1&&!/{.*}/.test(s[1])){const h=s[1].split(this.formatSeparator).map(m=>m.trim());s[1]=h.shift(),d=h,f=!0}if(o=n(u.call(this,s[1].trim(),l),l),o&&s[0]===t&&typeof o!="string")return o;typeof o!="string"&&(o=uE(o)),o||(this.logger.warn(`missed to resolve ${s[1]} for nesting ${t}`),o=""),f&&(o=d.reduce((h,m)=>this.format(h,m,r.lng,{...r,interpolationkey:s[1].trim()}),o.trim())),t=t.replace(s[0],o),this.regexp.lastIndex=0}return t}}const yoe=e=>{let t=e.toLowerCase().trim();const n={};if(e.indexOf("(")>-1){const r=e.split("(");t=r[0].toLowerCase().trim();const s=r[1].substring(0,r[1].length-1);t==="currency"&&s.indexOf(":")<0?n.currency||(n.currency=s.trim()):t==="relativetime"&&s.indexOf(":")<0?n.range||(n.range=s.trim()):s.split(";").forEach(l=>{if(l){const[u,...d]=l.split(":"),f=d.join(":").trim().replace(/^'+|'+$/g,""),h=u.trim();n[h]||(n[h]=f),f==="false"&&(n[h]=!1),f==="true"&&(n[h]=!0),isNaN(f)||(n[h]=parseInt(f,10))}})}return{formatName:t,formatOptions:n}},Bl=e=>{const t={};return(n,r,s)=>{let o=s;s&&s.interpolationkey&&s.formatParams&&s.formatParams[s.interpolationkey]&&s[s.interpolationkey]&&(o={...o,[s.interpolationkey]:void 0});const l=r+JSON.stringify(o);let u=t[l];return u||(u=e(vh(r),s),t[l]=u),u(n)}};class boe{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=ga.create("formatter"),this.options=t,this.formats={number:Bl((n,r)=>{const s=new Intl.NumberFormat(n,{...r});return o=>s.format(o)}),currency:Bl((n,r)=>{const s=new Intl.NumberFormat(n,{...r,style:"currency"});return o=>s.format(o)}),datetime:Bl((n,r)=>{const s=new Intl.DateTimeFormat(n,{...r});return o=>s.format(o)}),relativetime:Bl((n,r)=>{const s=new Intl.RelativeTimeFormat(n,{...r});return o=>s.format(o,r.range||"day")}),list:Bl((n,r)=>{const s=new Intl.ListFormat(n,{...r});return o=>s.format(o)})},this.init(t)}init(t){const r=(arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}}).interpolation;this.formatSeparator=r.formatSeparator?r.formatSeparator:r.formatSeparator||","}add(t,n){this.formats[t.toLowerCase().trim()]=n}addCached(t,n){this.formats[t.toLowerCase().trim()]=Bl(n)}format(t,n,r){let s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};const o=n.split(this.formatSeparator);if(o.length>1&&o[0].indexOf("(")>1&&o[0].indexOf(")")<0&&o.find(u=>u.indexOf(")")>-1)){const u=o.findIndex(d=>d.indexOf(")")>-1);o[0]=[o[0],...o.splice(1,u)].join(this.formatSeparator)}return o.reduce((u,d)=>{const{formatName:f,formatOptions:h}=yoe(d);if(this.formats[f]){let m=u;try{const g=s&&s.formatParams&&s.formatParams[s.interpolationkey]||{},x=g.locale||g.lng||s.locale||s.lng||r;m=this.formats[f](u,x,{...h,...s,...g})}catch(g){this.logger.warn(g)}return m}else this.logger.warn(`there was no format function for ${f}`);return u},t)}}const xoe=(e,t)=>{e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)};class woe extends Tm{constructor(t,n,r){let s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};super(),this.backend=t,this.store=n,this.services=r,this.languageUtils=r.languageUtils,this.options=s,this.logger=ga.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=s.maxParallelReads||10,this.readingCalls=0,this.maxRetries=s.maxRetries>=0?s.maxRetries:5,this.retryTimeout=s.retryTimeout>=1?s.retryTimeout:350,this.state={},this.queue=[],this.backend&&this.backend.init&&this.backend.init(r,s.backend,s)}queueLoad(t,n,r,s){const o={},l={},u={},d={};return t.forEach(f=>{let h=!0;n.forEach(m=>{const g=`${f}|${m}`;!r.reload&&this.store.hasResourceBundle(f,m)?this.state[g]=2:this.state[g]<0||(this.state[g]===1?l[g]===void 0&&(l[g]=!0):(this.state[g]=1,h=!1,l[g]===void 0&&(l[g]=!0),o[g]===void 0&&(o[g]=!0),d[m]===void 0&&(d[m]=!0)))}),h||(u[f]=!0)}),(Object.keys(o).length||Object.keys(l).length)&&this.queue.push({pending:l,pendingCount:Object.keys(l).length,loaded:{},errors:[],callback:s}),{toLoad:Object.keys(o),pending:Object.keys(l),toLoadLanguages:Object.keys(u),toLoadNamespaces:Object.keys(d)}}loaded(t,n,r){const s=t.split("|"),o=s[0],l=s[1];n&&this.emit("failedLoading",o,l,n),!n&&r&&this.store.addResourceBundle(o,l,r,void 0,void 0,{skipCopy:!0}),this.state[t]=n?-1:2,n&&r&&(this.state[t]=0);const u={};this.queue.forEach(d=>{roe(d.loaded,[o],l),xoe(d,t),n&&d.errors.push(n),d.pendingCount===0&&!d.done&&(Object.keys(d.loaded).forEach(f=>{u[f]||(u[f]={});const h=d.loaded[f];h.length&&h.forEach(m=>{u[f][m]===void 0&&(u[f][m]=!0)})}),d.done=!0,d.errors.length?d.callback(d.errors):d.callback())}),this.emit("loaded",u),this.queue=this.queue.filter(d=>!d.done)}read(t,n,r){let s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,o=arguments.length>4&&arguments[4]!==void 0?arguments[4]:this.retryTimeout,l=arguments.length>5?arguments[5]:void 0;if(!t.length)return l(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:t,ns:n,fcName:r,tried:s,wait:o,callback:l});return}this.readingCalls++;const u=(f,h)=>{if(this.readingCalls--,this.waitingReads.length>0){const m=this.waitingReads.shift();this.read(m.lng,m.ns,m.fcName,m.tried,m.wait,m.callback)}if(f&&h&&s{this.read.call(this,t,n,r,s+1,o*2,l)},o);return}l(f,h)},d=this.backend[r].bind(this.backend);if(d.length===2){try{const f=d(t,n);f&&typeof f.then=="function"?f.then(h=>u(null,h)).catch(u):u(null,f)}catch(f){u(f)}return}return d(t,n,u)}prepareLoading(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},s=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),s&&s();typeof t=="string"&&(t=this.languageUtils.toResolveHierarchy(t)),typeof n=="string"&&(n=[n]);const o=this.queueLoad(t,n,r,s);if(!o.toLoad.length)return o.pending.length||s(),null;o.toLoad.forEach(l=>{this.loadOne(l)})}load(t,n,r){this.prepareLoading(t,n,{},r)}reload(t,n,r){this.prepareLoading(t,n,{reload:!0},r)}loadOne(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";const r=t.split("|"),s=r[0],o=r[1];this.read(s,o,"read",void 0,void 0,(l,u)=>{l&&this.logger.warn(`${n}loading namespace ${o} for language ${s} failed`,l),!l&&u&&this.logger.log(`${n}loaded namespace ${o} for language ${s}`,u),this.loaded(t,l,u)})}saveMissing(t,n,r,s,o){let l=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{},u=arguments.length>6&&arguments[6]!==void 0?arguments[6]:()=>{};if(this.services.utils&&this.services.utils.hasLoadedNamespace&&!this.services.utils.hasLoadedNamespace(n)){this.logger.warn(`did not save key "${r}" as the namespace "${n}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(r==null||r==="")){if(this.backend&&this.backend.create){const d={...l,isUpdate:o},f=this.backend.create.bind(this.backend);if(f.length<6)try{let h;f.length===5?h=f(t,n,r,s,d):h=f(t,n,r,s),h&&typeof h.then=="function"?h.then(m=>u(null,m)).catch(u):u(null,h)}catch(h){u(h)}else f(t,n,r,s,u,d)}!t||!t[0]||this.store.addResource(t[0],n,r,s)}}}const bE=()=>({debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if(typeof e[1]=="object"&&(t=e[1]),typeof e[1]=="string"&&(t.defaultValue=e[1]),typeof e[2]=="string"&&(t.tDescription=e[2]),typeof e[2]=="object"||typeof e[3]=="object"){const n=e[3]||e[2];Object.keys(n).forEach(r=>{t[r]=n[r]})}return t},interpolation:{escapeValue:!0,format:e=>e,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0}}),xE=e=>(typeof e.ns=="string"&&(e.ns=[e.ns]),typeof e.fallbackLng=="string"&&(e.fallbackLng=[e.fallbackLng]),typeof e.fallbackNS=="string"&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&e.supportedLngs.indexOf("cimode")<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),e),pp=()=>{},Soe=e=>{Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(n=>{typeof e[n]=="function"&&(e[n]=e[n].bind(e))})};class fd extends Tm{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;if(super(),this.options=xE(t),this.services={},this.logger=ga,this.modules={external:[]},Soe(this),n&&!this.isInitialized&&!t.isClone){if(!this.options.initImmediate)return this.init(t,n),this;setTimeout(()=>{this.init(t,n)},0)}}init(){var t=this;let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=arguments.length>1?arguments[1]:void 0;this.isInitializing=!0,typeof n=="function"&&(r=n,n={}),!n.defaultNS&&n.defaultNS!==!1&&n.ns&&(typeof n.ns=="string"?n.defaultNS=n.ns:n.ns.indexOf("translation")<0&&(n.defaultNS=n.ns[0]));const s=bE();this.options={...s,...this.options,...xE(n)},this.options.compatibilityAPI!=="v1"&&(this.options.interpolation={...s.interpolation,...this.options.interpolation}),n.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=n.keySeparator),n.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=n.nsSeparator);const o=h=>h?typeof h=="function"?new h:h:null;if(!this.options.isClone){this.modules.logger?ga.init(o(this.modules.logger),this.options):ga.init(null,this.options);let h;this.modules.formatter?h=this.modules.formatter:typeof Intl<"u"&&(h=boe);const m=new gE(this.options);this.store=new hE(this.options.resources,this.options);const g=this.services;g.logger=ga,g.resourceStore=this.store,g.languageUtils=m,g.pluralResolver=new goe(m,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),h&&(!this.options.interpolation.format||this.options.interpolation.format===s.interpolation.format)&&(g.formatter=o(h),g.formatter.init(g,this.options),this.options.interpolation.format=g.formatter.format.bind(g.formatter)),g.interpolator=new voe(this.options),g.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},g.backendConnector=new woe(o(this.modules.backend),g.resourceStore,g,this.options),g.backendConnector.on("*",function(x){for(var b=arguments.length,w=new Array(b>1?b-1:0),C=1;C1?b-1:0),C=1;C{x.init&&x.init(this)})}if(this.format=this.options.interpolation.format,r||(r=pp),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const h=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);h.length>0&&h[0]!=="dev"&&(this.options.lng=h[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(h=>{this[h]=function(){return t.store[h](...arguments)}}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(h=>{this[h]=function(){return t.store[h](...arguments),t}});const d=Au(),f=()=>{const h=(m,g)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),d.resolve(g),r(m,g)};if(this.languages&&this.options.compatibilityAPI!=="v1"&&!this.isInitialized)return h(null,this.t.bind(this));this.changeLanguage(this.options.lng,h)};return this.options.resources||!this.options.initImmediate?f():setTimeout(f,0),d}loadResources(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:pp;const s=typeof t=="string"?t:this.language;if(typeof t=="function"&&(r=t),!this.options.resources||this.options.partialBundledLanguages){if(s&&s.toLowerCase()==="cimode"&&(!this.options.preload||this.options.preload.length===0))return r();const o=[],l=u=>{if(!u||u==="cimode")return;this.services.languageUtils.toResolveHierarchy(u).forEach(f=>{f!=="cimode"&&o.indexOf(f)<0&&o.push(f)})};s?l(s):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(d=>l(d)),this.options.preload&&this.options.preload.forEach(u=>l(u)),this.services.backendConnector.load(o,this.options.ns,u=>{!u&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),r(u)})}else r(null)}reloadResources(t,n,r){const s=Au();return typeof t=="function"&&(r=t,t=void 0),typeof n=="function"&&(r=n,n=void 0),t||(t=this.languages),n||(n=this.options.ns),r||(r=pp),this.services.backendConnector.reload(t,n,o=>{s.resolve(),r(o)}),s}use(t){if(!t)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!t.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return t.type==="backend"&&(this.modules.backend=t),(t.type==="logger"||t.log&&t.warn&&t.error)&&(this.modules.logger=t),t.type==="languageDetector"&&(this.modules.languageDetector=t),t.type==="i18nFormat"&&(this.modules.i18nFormat=t),t.type==="postProcessor"&&iO.addPostProcessor(t),t.type==="formatter"&&(this.modules.formatter=t),t.type==="3rdParty"&&this.modules.external.push(t),this}setResolvedLanguage(t){if(!(!t||!this.languages)&&!(["cimode","dev"].indexOf(t)>-1))for(let n=0;n-1)&&this.store.hasLanguageSomeTranslations(r)){this.resolvedLanguage=r;break}}}changeLanguage(t,n){var r=this;this.isLanguageChangingTo=t;const s=Au();this.emit("languageChanging",t);const o=d=>{this.language=d,this.languages=this.services.languageUtils.toResolveHierarchy(d),this.resolvedLanguage=void 0,this.setResolvedLanguage(d)},l=(d,f)=>{f?(o(f),this.translator.changeLanguage(f),this.isLanguageChangingTo=void 0,this.emit("languageChanged",f),this.logger.log("languageChanged",f)):this.isLanguageChangingTo=void 0,s.resolve(function(){return r.t(...arguments)}),n&&n(d,function(){return r.t(...arguments)})},u=d=>{!t&&!d&&this.services.languageDetector&&(d=[]);const f=typeof d=="string"?d:this.services.languageUtils.getBestMatchFromCodes(d);f&&(this.language||o(f),this.translator.language||this.translator.changeLanguage(f),this.services.languageDetector&&this.services.languageDetector.cacheUserLanguage&&this.services.languageDetector.cacheUserLanguage(f)),this.loadResources(f,h=>{l(h,f)})};return!t&&this.services.languageDetector&&!this.services.languageDetector.async?u(this.services.languageDetector.detect()):!t&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(u):this.services.languageDetector.detect(u):u(t),s}getFixedT(t,n,r){var s=this;const o=function(l,u){let d;if(typeof u!="object"){for(var f=arguments.length,h=new Array(f>2?f-2:0),m=2;m`${d.keyPrefix}${g}${b}`):x=d.keyPrefix?`${d.keyPrefix}${g}${l}`:l,s.t(x,d)};return typeof t=="string"?o.lng=t:o.lngs=t,o.ns=n,o.keyPrefix=r,o}t(){return this.translator&&this.translator.translate(...arguments)}exists(){return this.translator&&this.translator.exists(...arguments)}setDefaultNamespace(t){this.options.defaultNS=t}hasLoadedNamespace(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const r=n.lng||this.resolvedLanguage||this.languages[0],s=this.options?this.options.fallbackLng:!1,o=this.languages[this.languages.length-1];if(r.toLowerCase()==="cimode")return!0;const l=(u,d)=>{const f=this.services.backendConnector.state[`${u}|${d}`];return f===-1||f===0||f===2};if(n.precheck){const u=n.precheck(this,l);if(u!==void 0)return u}return!!(this.hasResourceBundle(r,t)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||l(r,t)&&(!s||l(o,t)))}loadNamespaces(t,n){const r=Au();return this.options.ns?(typeof t=="string"&&(t=[t]),t.forEach(s=>{this.options.ns.indexOf(s)<0&&this.options.ns.push(s)}),this.loadResources(s=>{r.resolve(),n&&n(s)}),r):(n&&n(),Promise.resolve())}loadLanguages(t,n){const r=Au();typeof t=="string"&&(t=[t]);const s=this.options.preload||[],o=t.filter(l=>s.indexOf(l)<0&&this.services.languageUtils.isSupportedCode(l));return o.length?(this.options.preload=s.concat(o),this.loadResources(l=>{r.resolve(),n&&n(l)}),r):(n&&n(),Promise.resolve())}dir(t){if(t||(t=this.resolvedLanguage||(this.languages&&this.languages.length>0?this.languages[0]:this.language)),!t)return"rtl";const n=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],r=this.services&&this.services.languageUtils||new gE(bE());return n.indexOf(r.getLanguagePartFromCode(t))>-1||t.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;return new fd(t,n)}cloneInstance(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:pp;const r=t.forkResourceStore;r&&delete t.forkResourceStore;const s={...this.options,...t,isClone:!0},o=new fd(s);return(t.debug!==void 0||t.prefix!==void 0)&&(o.logger=o.logger.clone(t)),["store","services","language"].forEach(u=>{o[u]=this[u]}),o.services={...this.services},o.services.utils={hasLoadedNamespace:o.hasLoadedNamespace.bind(o)},r&&(o.store=new hE(this.store.data,s),o.services.resourceStore=o.store),o.translator=new yh(o.services,s),o.translator.on("*",function(u){for(var d=arguments.length,f=new Array(d>1?d-1:0),h=1;h60":"More than 60 minutes",">120":"More than 2 hours",">300":"More than 5 hours",">1440":"More than 24 hours",custom:"Custom"},custom:{more:"More than",less:"Less than",valuePlaceholder:"Value",minutes:"Minutes",hours:"Hours",days:"Days"}},mass:{title:"Mass actions",selectAll:"Select all",selected:"{{count}} selected",newStatus:"New status",apply:"Apply to selected",noneSelected:"Select at least one session",success:"Status updated for selected sessions",error:"Failed to update status in bulk"},pagination:{showing:"Showing {{shown}} of {{total}}",perPage:"Per page",showMore:"Load more",showAll:"Show all",showLess:"Show less"},send:{title:"Send message",to:"To",messagePlaceholder:"Type your message",send:"Send",sending:"Sending...",empty:"Type a message before sending",success:"Message sent successfully",error:"Failed to send message"},actions:{sendMessage:"Send message"},empty:"No sessions found"},Noe={delete:{title:"Delete Record",message:"You are about to delete the instance {{instanceName}}, Are you sure you want to continue?",messageSingle:"This action cannot be undone",confirm:"Type the instance name to confirm:"}},Toe={all:"All",open:"Connected",connecting:"Connecting",closed:"Disconnected"},Moe={clientName:"Client name",version:"Version"},_oe={theme:{label:"Toggle theme",light:"Light",dark:"Dark",system:"System"},language:{label:"Language",english:"English",portuguese:"Portuguese",spanish:"Spanish",french:"French"},logout:{action:"Sign out",title:"Are you sure you want to sign out?",description:"You will be disconnected and redirected to the login screen."}},Roe={media:{attach:"Attach file",document:"Document",photosAndVideos:"Photos and Videos",errors:{audioSize:"Audio file size must be less than 16 MB",imageSize:"Image file size must be less than 5 MB",videoSize:"Video file size must be less than 16 MB",documentSize:"Document file size must be less than 100 MB",unsupportedType:"Unsupported file type"},selectedMedia:{imageAlt:"Selected image",file:"File",selectedFile:"Selected file"}},search:"Search conversations...",back:"Back",tabs:{contacts:"Contacts",groups:"Groups"},count_one:"{{count}} conversation",count_other:"{{count}} conversations",empty:{default:"No conversations yet",search:"No conversations found",tryAnother:"Try another term",selectTitle:"Select a conversation",selectDescription:"Choose a contact or group from the list to start"},input:{placeholder:"Type a message...",send:"Send"},date:{today:"Today",yesterday:"Yesterday"}},Poe={dashboard:"Dashboard",chat:"Chat",configurations:"Configurations",settings:"Settings",proxy:"Proxy",events:"Events",webhook:"Webhook",websocket:"WebSocket",rabbitmq:"RabbitMQ",sqs:"SQS",integrations:"Integrations",chatwoot:"Chatwoot",typebot:"Typebot",openai:"OpenAI",dify:"Dify",n8n:"n8n",evoai:"EvoAI",evolutionBot:"Evolution Bot",flowise:"Flowise",documentation:"Documentation",postman:"Postman",discord:"Discord"},Ioe={instance:{created:"Instance created successfully",deleted:"Instance deleted successfully",error:"An error occurred while creating the instance"}},Ooe={checking:"Checking license...",required:"License required",redirecting:"Redirecting to license registration...",registerFailed:"Failed to initiate license registration",callback:{title:"Activating license",missingCode:"Authorization code not found in URL",missingCredentials:"Credentials not found. Please log in again.",activating:"Please wait while we activate your license.",successTitle:"License activated!",successDescription:"Redirecting...",errorTitle:"Activation error",retry:"Try again",back:"Back to login",genericError:"Failed to activate license"}},Aoe={title:"Evolution Manager",description:"Please enter your credentials to continue",form:{serverUrl:"Server URL",apiKey:"API Key Global"},message:{invalidServer:"Invalid server",invalidCredentials:"Invalid credentials"},button:{login:"Login",connecting:"Connecting..."},subtitle:"Enter your credentials to access the system"},Doe={modal:{title:"New instance"},form:{name:"Name",integration:{label:"Channel",baileys:"Baileys",whatsapp:"WhatsApp Cloud API",facebook:"Facebook",instagram:"Instagram",evolution:"Evolution"},token:"Token",number:"Number",businessId:"Business ID"},button:{save:"Save",saving:"Saving...",create:"Instance",connecting:"Connecting...",facebook:"Connect with Facebook",instagram:"Connect with Instagram",whatsapp:"Connect with WhatsApp"},dashboard:{button:{qrcode:{label:"Get QR Code",title:"Scan the QR code with your WhatsApp Web"},pairingCode:{label:"Get Pairing Code",title:"Get the pairing code to connect with WhatsApp"},restart:"Restart",disconnect:"Disconnect",sendMessage:"Send message"},alert:"To connect, scan the QR code with your WhatsApp Web",contacts:"Contacts",chats:"Chats",messages:"Messages",subtitle:"Manage your instance"}},Foe={title:"Settings",toast:{success:"Settings applied successfully",error:"An error occurred while applying the settings"},form:{rejectCall:{label:"Reject Calls",description:"Reject all incoming calls"},msgCall:{label:"Message Reject Call",description:"Send a message when rejecting a call"},groupsIgnore:{label:"Ignore Groups",description:"Ignore all messages from groups"},alwaysOnline:{label:"Always Online",description:"Keep the whatsapp always online"},readMessages:{label:"Read Messages",description:"Mark all messages as read"},syncFullHistory:{label:"Sync Full History",description:"Sync all complete chat history on scan QR code"},readStatus:{label:"Read Status",description:"Mark all statuses as read"}},button:{save:"Save",saving:"Saving..."}},Loe={title:"Proxy",toast:{success:"Proxy applied successfully",error:"An error occurred while applying the proxy"},form:{enabled:{label:"Enabled",description:"Enable or disable the proxy"},protocol:{label:"Protocol"},host:{label:"Host"},port:{label:"Port"},username:{label:"Username"},password:{label:"Password"}},button:{save:"Save",saving:"Saving..."}},$oe={title:"Webhook",toast:{success:"Webhook applied successfully",error:"An error occurred while applying the webhook"},form:{enabled:{label:"Enabled",description:"Enable or disable the webhook"},url:{label:"URL"},byEvents:{label:"Webhook by Events",description:"Create a route for each event by adding the event name to the end of the URL"},base64:{label:"Webhook Base64",description:"Send media base64 data in webhook"},events:{label:"Events"}},button:{save:"Save",saving:"Saving..."}},Boe={title:"Websocket",toast:{success:"Websocket applied successfully",error:"An error occurred while applying the websocket"},form:{enabled:{label:"Enabled",description:"Enable or disable the websocket"},events:{label:"Events"}},button:{save:"Save",saving:"Saving..."}},zoe={title:"RabbitMQ",toast:{success:"RabbitMQ applied successfully",error:"An error occurred while applying the rabbitmq"},form:{enabled:{label:"Enabled",description:"Enable or disable the rabbitmq"},events:{label:"Events"}},button:{save:"Save",saving:"Saving..."}},Uoe={title:"SQS",toast:{success:"SQS applied successfully",error:"An error occurred while applying the sqs"},form:{enabled:{label:"Enabled",description:"Enable or disable the sqs"},events:{label:"Events"}},button:{save:"Save",saving:"Saving..."}},Voe={title:"Chatwoot",toast:{success:"Chatwoot applied successfully",error:"An error occurred while applying the Chatwoot"},form:{enabled:{label:"Enabled",description:"Enable or disable the sqs"},url:{label:"Chatwoot URL"},accountId:{label:"Account ID"},token:{label:"Token"},signMsg:{label:"Sign Messages",description:"Sign message with chatwoot username"},signDelimiter:{label:"Sign Delimiter"},nameInbox:{label:"Name Inbox"},organization:{label:"Organization"},logo:{label:"Logo"},conversationPending:{label:"Conversation Pending",description:"Conversations start as pending"},reopenConversation:{label:"Reopen Conversation",description:"Reopen conversation when receiving message"},importContacts:{label:"Import Contacts",description:"Import contacts from WhatsApp address book by connecting QR Code"},importMessages:{label:"Import Messages",description:"Import messages from WhatsApp by connecting QR Code"},daysLimitImportMessages:{label:"Days Limit Import Messages"},ignoreJids:{label:"Ignore Jids",placeholder:"Add JIDs ex: 1234567890@s.whatsapp.net and press enter"},autoCreate:{label:"Auto Create",description:"Automatically create chatwoot integration on save"}},button:{save:"Save",saving:"Saving..."}},qoe={title:"Typebots",sessions:{label:"Sessions",search:"Search for remoteJid...",table:{remoteJid:"RemoteJid",pushName:"Push Name",sessionId:"Session ID",status:"Status",actions:{title:"Actions",open:"Open",pause:"Pause",close:"Close",delete:"Delete"},none:"Nothing to show"}},defaultSettings:"Default Settings",toast:{defaultSettings:{success:"Default settings applied successfully",error:"An error occurred while applying the default settings"},success:{update:"Typebot updated successfully",create:"Typebot created successfully",delete:"Typebot deleted successfully",status:"Typebot status updated successfully"},error:"An error occurred while creating the Typebot"},table:{none:"Nothing to show"},form:{title:"New Typebot",examples:{keywordFinish:"#FINISH",unknownMessage:"I'm sorry, I didn't understand. Can you try again?"},enabled:{label:"Enabled"},description:{label:"Description"},typebotSettings:{label:"Typebot Settings"},url:{label:"Typebot API URL"},typebot:{label:"Typebot Public Name"},triggerSettings:{label:"Trigger Settings"},triggerType:{label:"Trigger Type",keyword:"Keyword",all:"All",advanced:"Advanced",none:"None"},triggerOperator:{label:"Trigger Operator",contains:"Contains",equals:"Equals",startsWith:"Starts With",endsWith:"Ends With",regex:"Regex"},triggerValue:{label:"Trigger"},triggerConditions:{label:"Conditions"},typebotIdFallback:{label:"Typebot Fallback"},generalSettings:{label:"General Settings"},expire:{label:"Expire in minutes"},keywordFinish:{label:"Keyword Finish"},delayMessage:{label:"Default Delay Message"},unknownMessage:{label:"Unknown Message"},listeningFromMe:{label:"Listening from me",description:"Listen to messages sent by me on the bot"},stopBotFromMe:{label:"Stop bot from me",description:"Pause the bot when I send a message"},keepOpen:{label:"Keep open",description:"Keep the bot open after the conversation ends"},debounceTime:{label:"Debounce Time"},splitMessages:{label:"Split Messages",description:"Split messages into multiple messages"},timePerChar:{label:"Time per character"},ignoreJids:{label:"Ignore Jids",placeholder:"Add JIDs ex: 1234567890@s.whatsapp.net and press enter"}},button:{create:"Typebot",save:"Save",saving:"Saving...",update:"Update",defaultSettings:"Default Settings",delete:"Delete"},modal:{defaultSettings:{title:"Default Settings"}}},Hoe={title:"OpenAI",sessions:{label:"Sessions",search:"Search for remoteJid...",table:{remoteJid:"RemoteJid",pushName:"Push Name",sessionId:"Session ID",status:"Status",actions:{title:"Actions",open:"Open",pause:"Pause",close:"Close",delete:"Delete"},none:"Nothing to show"}},credentials:{title:"Credentials",table:{name:"Name",apiKey:"API Key",actions:{title:"Actions",delete:"Delete"},none:"Nothing to show"}},defaultSettings:"Default Settings",toast:{defaultSettings:{success:"Default settings applied successfully",error:"An error occurred while applying the default settings"},success:{update:"OpenAI updated successfully",create:"OpenAI created successfully",delete:"OpenAI deleted successfully",status:"OpenAI status updated successfully",credentialsCreate:"OpenAI credentials created successfully",credentialsDelete:"OpenAI credentials deleted successfully"},error:"An error occurred while creating the OpenAI"},table:{none:"Nothing to show"},form:{title:"New OpenAI",examples:{keywordFinish:"#FINISH",unknownMessage:"I'm sorry, I didn't understand. Can you try again?"},openaiCredsId:{label:"OpenAI Credentials"},enabled:{label:"Enabled"},description:{label:"Description"},openaiSettings:{label:"OpenAI Settings"},botType:{label:"Bot Type",assistant:"Assistant",chatCompletion:"Chat Completion"},assistantId:{label:"Assistant ID"},functionUrl:{label:"Function URL"},model:{label:"Language Model"},systemMessages:{label:"System Messages",description:"Send system messages to OpenAI"},assistantMessages:{label:"Assistant Messages",description:"Send assistant messages to OpenAI"},userMessages:{label:"User Messages",description:"Send user messages to OpenAI"},maxTokens:{label:"Max Tokens"},triggerSettings:{label:"Trigger Settings"},triggerType:{label:"Trigger Type",keyword:"Keyword",all:"All",advanced:"Advanced",none:"None"},triggerOperator:{label:"Trigger Operator",contains:"Contains",equals:"Equals",startsWith:"Starts With",endsWith:"Ends With",regex:"Regex"},triggerValue:{label:"Trigger"},triggerConditions:{label:"Conditions"},openaiIdFallback:{label:"OpenAI Fallback"},generalSettings:{label:"General Settings"},expire:{label:"Expire in minutes"},keywordFinish:{label:"Keyword Finish"},delayMessage:{label:"Default Delay Message"},unknownMessage:{label:"Unknown Message"},listeningFromMe:{label:"Listening from me",description:"Listen to messages sent by me on the bot"},stopBotFromMe:{label:"Stop bot from me",description:"Pause the bot when I send a message"},keepOpen:{label:"Keep open",description:"Keep the bot open after the conversation ends"},speechToText:{label:"Speech to Text",description:"Convert voice messages to text"},debounceTime:{label:"Debounce Time"},splitMessages:{label:"Split Messages",description:"Split messages into multiple messages"},timePerChar:{label:"Time per character"},ignoreJids:{label:"Ignore Jids",placeholder:"Add JIDs ex: 1234567890@s.whatsapp.net and press enter"}},button:{create:"OpenAI",save:"Save",saving:"Saving...",update:"Update",defaultSettings:"Default Settings",delete:"Delete",loadModels:"Load Models",loading:"Loading..."},modal:{defaultSettings:{title:"Default Settings"}}},Koe={title:"Dify",sessions:{label:"Sessions",search:"Search for remoteJid...",table:{remoteJid:"RemoteJid",pushName:"Push Name",sessionId:"Session ID",status:"Status",actions:{title:"Actions",open:"Open",pause:"Pause",close:"Close",delete:"Delete"},none:"Nothing to show"}},defaultSettings:"Default Settings",toast:{defaultSettings:{success:"Default settings applied successfully",error:"An error occurred while applying the default settings"},success:{update:"Dify updated successfully",create:"Dify created successfully",delete:"Dify deleted successfully",status:"Dify status updated successfully"},error:"An error occurred while creating the Dify"},table:{none:"Nothing to show"},form:{title:"New Dify",examples:{keywordFinish:"#FINISH",unknownMessage:"I'm sorry, I didn't understand. Can you try again?"},enabled:{label:"Enabled"},description:{label:"Description"},difySettings:{label:"Dify Settings"},botType:{label:"Bot Type",chatBot:"Chat Bot",textGenerator:"Text Generator",agent:"Agent",workflow:"Workflow"},apiUrl:{label:"API URL"},apiKey:{label:"API Key"},triggerSettings:{label:"Trigger Settings"},triggerType:{label:"Trigger Type",keyword:"Keyword",all:"All",advanced:"Advanced",none:"None"},triggerOperator:{label:"Trigger Operator",contains:"Contains",equals:"Equals",startsWith:"Starts With",endsWith:"Ends With",regex:"Regex"},triggerValue:{label:"Trigger"},triggerConditions:{label:"Conditions"},difyIdFallback:{label:"Dify Fallback"},generalSettings:{label:"General Settings"},expire:{label:"Expire in minutes"},keywordFinish:{label:"Keyword Finish"},delayMessage:{label:"Default Delay Message"},unknownMessage:{label:"Unknown Message"},listeningFromMe:{label:"Listening from me",description:"Listen to messages sent by me on the bot"},stopBotFromMe:{label:"Stop bot from me",description:"Pause the bot when I send a message"},keepOpen:{label:"Keep open",description:"Keep the bot open after the conversation ends"},debounceTime:{label:"Debounce Time"},splitMessages:{label:"Split Messages",description:"Split messages into multiple messages"},timePerChar:{label:"Time per character"},ignoreJids:{label:"Ignore Jids",placeholder:"Add JIDs ex: 1234567890@s.whatsapp.net and press enter"}},button:{create:"Dify",save:"Save",saving:"Saving...",update:"Update",defaultSettings:"Default Settings",delete:"Delete"},modal:{defaultSettings:{title:"Default Settings"}}},Woe={title:"n8n",sessions:{label:"Sessions",search:"Search for remoteJid...",table:{remoteJid:"RemoteJid",pushName:"Push Name",sessionId:"Session ID",status:"Status",actions:{title:"Actions",open:"Open",pause:"Pause",close:"Close",delete:"Delete"},none:"Nothing to show"}},defaultSettings:"Default Settings",toast:{defaultSettings:{success:"Default settings applied successfully",error:"An error occurred while applying the default settings"},success:{update:"n8n updated successfully",create:"n8n created successfully",delete:"n8n deleted successfully",status:"n8n status updated successfully"},error:"An error occurred while creating the n8n chatbot"},table:{none:"Nothing to show"},form:{title:"New n8n chatbot",examples:{keywordFinish:"#FINISH",unknownMessage:"I'm sorry, I didn't understand. Can you try again?"},enabled:{label:"Enabled"},description:{label:"Description"},n8nSettings:{label:"n8n Settings"},webhookUrl:{label:"Webhook URL"},basicAuth:{label:"Basic Auth (Optional)"},basicAuthUser:{label:"Basic Auth User"},basicAuthPass:{label:"Basic Auth Password"},triggerSettings:{label:"Trigger Settings"},triggerType:{label:"Trigger Type",keyword:"Keyword",all:"All",advanced:"Advanced",none:"None"},triggerOperator:{label:"Trigger Operator",contains:"Contains",equals:"Equals",startsWith:"Starts With",endsWith:"Ends With",regex:"Regex"},triggerValue:{label:"Trigger"},triggerConditions:{label:"Conditions"},n8nIdFallback:{label:"n8n Fallback"},generalSettings:{label:"General Settings"},expire:{label:"Expire in minutes"},keywordFinish:{label:"Keyword Finish"},delayMessage:{label:"Default Delay Message"},unknownMessage:{label:"Unknown Message"},listeningFromMe:{label:"Listening from me",description:"Listen to messages sent by me on the bot"},stopBotFromMe:{label:"Stop bot from me",description:"Pause the bot when I send a message"},keepOpen:{label:"Keep open",description:"Keep the bot open after the conversation ends"},debounceTime:{label:"Debounce Time"},splitMessages:{label:"Split Messages",description:"Split messages into multiple messages"},timePerChar:{label:"Time per character"},ignoreJids:{label:"Ignore Jids",placeholder:"Add JIDs ex: 1234567890@s.whatsapp.net and press enter"}},button:{create:"n8n",save:"Save",saving:"Saving...",update:"Update",defaultSettings:"Default Settings",delete:"Delete"},modal:{defaultSettings:{title:"Default Settings"}}},Goe={title:"EvoAI",sessions:{label:"Sessions",search:"Search for remoteJid...",table:{remoteJid:"RemoteJid",pushName:"Push Name",sessionId:"Session ID",status:"Status",actions:{title:"Actions",open:"Open",pause:"Pause",close:"Close",delete:"Delete"},none:"Nothing to show"}},defaultSettings:"Default Settings",toast:{defaultSettings:{success:"Default settings applied successfully",error:"An error occurred while applying the default settings"},success:{update:"EvoAI updated successfully",create:"EvoAI created successfully",delete:"EvoAI deleted successfully",status:"EvoAI status updated successfully"},error:"An error occurred while creating the EvoAI chatbot"},table:{none:"Nothing to show"},form:{title:"New EvoAI chatbot",examples:{keywordFinish:"#FINISH",unknownMessage:"I'm sorry, I didn't understand. Can you try again?"},enabled:{label:"Enabled"},description:{label:"Description"},evoaiSettings:{label:"EvoAI Settings"},agentUrl:{label:"Agent URL"},apiKey:{label:"API Key (Optional)"},triggerSettings:{label:"Trigger Settings"},triggerType:{label:"Trigger Type",keyword:"Keyword",all:"All",advanced:"Advanced",none:"None"},triggerOperator:{label:"Trigger Operator",contains:"Contains",equals:"Equals",startsWith:"Starts With",endsWith:"Ends With",regex:"Regex"},triggerValue:{label:"Trigger"},triggerConditions:{label:"Conditions"},evoaiIdFallback:{label:"EvoAI Fallback"},generalSettings:{label:"General Settings"},expire:{label:"Expire in minutes"},keywordFinish:{label:"Keyword Finish"},delayMessage:{label:"Default Delay Message"},unknownMessage:{label:"Unknown Message"},listeningFromMe:{label:"Listening from me",description:"Listen to messages sent by me on the bot"},stopBotFromMe:{label:"Stop bot from me",description:"Pause the bot when I send a message"},keepOpen:{label:"Keep open",description:"Keep the bot open after the conversation ends"},debounceTime:{label:"Debounce Time"},splitMessages:{label:"Split Messages",description:"Split messages into multiple messages"},timePerChar:{label:"Time per character"},ignoreJids:{label:"Ignore Jids",placeholder:"Add JIDs ex: 1234567890@s.whatsapp.net and press enter"}},button:{create:"EvoAI",save:"Save",saving:"Saving...",update:"Update",defaultSettings:"Default Settings",delete:"Delete"},modal:{defaultSettings:{title:"Default Settings"}}},Joe={title:"Evolution Bot",sessions:{label:"Sessions",search:"Search for remoteJid...",table:{remoteJid:"RemoteJid",pushName:"Push Name",sessionId:"Session ID",status:"Status",actions:{title:"Actions",open:"Open",pause:"Pause",close:"Close",delete:"Delete"},none:"Nothing to show"}},defaultSettings:"Default Settings",toast:{defaultSettings:{success:"Default settings applied successfully",error:"An error occurred while applying the default settings"},success:{update:"Evolution Bot updated successfully",create:"Evolution Bot created successfully",delete:"Evolution Bot deleted successfully",status:"Evolution Bot status updated successfully"},error:"An error occurred while creating the Evolution Bot"},table:{none:"Nothing to show"},form:{title:"New Evolution Bot",examples:{keywordFinish:"#FINISH",unknownMessage:"I'm sorry, I didn't understand. Can you try again?"},enabled:{label:"Enabled"},description:{label:"Description"},evolutionBotSettings:{label:"Evolution Bot Settings"},apiUrl:{label:"API URL"},apiKey:{label:"API Key"},triggerSettings:{label:"Trigger Settings"},triggerType:{label:"Trigger Type",keyword:"Keyword",all:"All",advanced:"Advanced",none:"None"},triggerOperator:{label:"Trigger Operator",contains:"Contains",equals:"Equals",startsWith:"Starts With",endsWith:"Ends With",regex:"Regex"},triggerValue:{label:"Trigger"},triggerConditions:{label:"Conditions"},botIdFallback:{label:"Evolution Bot Fallback"},generalSettings:{label:"General Settings"},expire:{label:"Expire in minutes"},keywordFinish:{label:"Keyword Finish"},delayMessage:{label:"Default Delay Message"},unknownMessage:{label:"Unknown Message"},listeningFromMe:{label:"Listening from me",description:"Listen to messages sent by me on the bot"},stopBotFromMe:{label:"Stop bot from me",description:"Pause the bot when I send a message"},keepOpen:{label:"Keep open",description:"Keep the bot open after the conversation ends"},debounceTime:{label:"Debounce Time"},splitMessages:{label:"Split Messages",description:"Split messages into multiple messages"},timePerChar:{label:"Time per character"},ignoreJids:{label:"Ignore Jids",placeholder:"Add JIDs ex: 1234567890@s.whatsapp.net and press enter"}},button:{create:"Evolution Bot",save:"Save",saving:"Saving...",update:"Update",defaultSettings:"Default Settings",delete:"Delete"},modal:{defaultSettings:{title:"Default Settings"}}},Qoe={title:"Flowise",sessions:{label:"Sessions",search:"Search for remoteJid...",table:{remoteJid:"RemoteJid",pushName:"Push Name",sessionId:"Session ID",status:"Status",actions:{title:"Actions",open:"Open",pause:"Pause",close:"Close",delete:"Delete"},none:"Nothing to show"}},defaultSettings:"Default Settings",toast:{defaultSettings:{success:"Default settings applied successfully",error:"An error occurred while applying the default settings"},success:{update:"Flowise updated successfully",create:"Flowise created successfully",delete:"Flowise deleted successfully",status:"Flowise status updated successfully"},error:"An error occurred while creating the Flowise"},table:{none:"Nothing to show"},form:{title:"New Flowise",examples:{keywordFinish:"#FINISH",unknownMessage:"I'm sorry, I didn't understand. Can you try again?"},enabled:{label:"Enabled"},description:{label:"Description"},flowiseSettings:{label:"Flowise Settings"},apiUrl:{label:"API URL"},apiKey:{label:"API Key"},triggerSettings:{label:"Trigger Settings"},triggerType:{label:"Trigger Type",keyword:"Keyword",all:"All",advanced:"Advanced",none:"None"},triggerOperator:{label:"Trigger Operator",contains:"Contains",equals:"Equals",startsWith:"Starts With",endsWith:"Ends With",regex:"Regex"},triggerValue:{label:"Trigger"},triggerConditions:{label:"Conditions"},flowiseIdFallback:{label:"Flowise Fallback"},generalSettings:{label:"General Settings"},expire:{label:"Expire in minutes"},keywordFinish:{label:"Keyword Finish"},delayMessage:{label:"Default Delay Message"},unknownMessage:{label:"Unknown Message"},listeningFromMe:{label:"Listening from me",description:"Listen to messages sent by me on the bot"},stopBotFromMe:{label:"Stop bot from me",description:"Pause the bot when I send a message"},keepOpen:{label:"Keep open",description:"Keep the bot open after the conversation ends"},debounceTime:{label:"Debounce Time"},splitMessages:{label:"Split Messages",description:"Split messages into multiple messages"},timePerChar:{label:"Time per character"},ignoreJids:{label:"Ignore Jids",placeholder:"Add JIDs ex: 1234567890@s.whatsapp.net and press enter"}},button:{create:"Flowise",save:"Save",saving:"Saving...",update:"Update",defaultSettings:"Default Settings",delete:"Delete"},modal:{defaultSettings:{title:"Default Settings"}}},Yoe={search:"Search..."},Zoe={title:"Send Message",description:"Send a text message from the instance",validation:{numberRequired:"Number is required",messageRequired:"Message is required"},form:{number:{label:"Number (with country code)"},message:{label:"Message",placeholder:"Type your message..."}},button:{send:"Send",sending:"Sending..."},toast:{success:"Message sent successfully",error:"Error sending message",noToken:"Instance token not available"}},Xoe={title:"Connect via QR Code",description:"Scan the QR Code to connect the instance",generating:"Generating QR Code...",waiting:"Waiting for QR Code...",connected:{title:"Instance connected",description:"The {{instanceName}} instance is already connected",connectedAs:"Connected as"},pairingCode:{title:"Connect with pairing code",label:"Pairing code",generate:"Generate code",generating:"Generating...",hint:"Enter the number with country code (e.g. 5511999999999) to receive a pairing code"},howTo:{title:"How to connect:",step1:"Open WhatsApp on your phone",step2:"Tap Menu or Settings",step3:"Select Linked devices",step4:"Tap Link a device",step5:"Point your camera at the QR Code"},button:{refresh:"Refresh QR Code",refreshing:"Refreshing...",close:"Close"},toast:{pairingSuccess:"Pairing code generated",pairingError:"Error generating pairing code",refreshSuccess:"QR Code refreshed",refreshError:"Error refreshing QR Code"}},eie={title:"New Instance",description:"Create a new instance to connect to WhatsApp",validation:{nameMin:"Name must be at least 3 characters",nameMax:"Name must be at most 50 characters",nameFormat:"Name can only contain letters, numbers, hyphens and underscores"},form:{name:{label:"Instance Name",placeholder:"my-instance",hint:"Use letters, numbers, hyphen (-) or underscore (_)"},token:{label:"Token (optional)",placeholder:"Leave blank to generate automatically",hint:"If not provided, a UUID will be generated automatically"}},proxy:{title:"Configure Proxy (optional)",host:{label:"Host",placeholder:"proxy.example.com"},port:{label:"Port"},username:{label:"Username",placeholder:"user"},password:{label:"Password",placeholder:"••••••••"}},button:{create:"Create Instance",creating:"Creating..."}},tie={loading:"Loading...",noResults:"No results found!"},nie={dashboard:Coe,button:joe,testInteractive:koe,sessions:Eoe,modal:Noe,status:Toe,footer:Moe,header:_oe,chat:Roe,sidebar:Poe,toast:Ioe,license:Ooe,login:Aoe,instance:Doe,settings:Foe,proxy:Loe,webhook:$oe,websocket:Boe,rabbitmq:zoe,sqs:Uoe,chatwoot:Voe,typebot:qoe,openai:Hoe,dify:Koe,n8n:Woe,evoai:Goe,evolutionBot:Joe,flowise:Qoe,common:Yoe,sendMessage:Zoe,qrCode:Xoe,newInstance:eie,table:tie},rie={title:"Instancias",search:"Buscar",status:"Estado",settings:"Configuraciones",instancesNotFound:"No se encontraron instancias",subtitle:"Administre sus instancias de WhatsApp",card:{phone:"Número"},empty:{title:"No se encontraron instancias",description:"Cree su primera instancia para comenzar"}},sie={delete:"Eliminar",deleting:"Eliminando...",cancel:"Cancelar",markAll:"Marcar Todos",unMarkAll:"Desmarcar Todos",refresh:"Actualizar"},aie={title:"Probar mensajes interactivos",subtitle:"Instancia: {{instance}} ·",number:"Número de destino",numberHint:"Con código de país/área, solo dígitos (ej.: 5511999999999)",payload:"Payload JSON (editable)",send:"Enviar",sending:"Enviando...",requiresOpen:"Disponible solo con la instancia conectada",tabs:{reply:"Reply",cta:"CTA",pix:"PIX",list:"Lista",carousel:"Carrusel"},success:"Mensaje enviado (id {{id}})",errors:{missingNumber:"Indica el número de destino",invalidJson:"JSON inválido: {{message}}",unknown:"Error al enviar el mensaje"}},oie={filters:{title:"Filtros avanzados",name:"Filtrar por nombre",namePlaceholder:"Filtrar por nombre",number:"Filtrar por número",numberPlaceholder:"Filtrar por número",status:"Filtrar por estado",time:"Filtrar por tiempo",apply:"Aplicar filtros",clear:"Limpiar",statusOptions:{all:"Todos los estados",opened:"Abierta",paused:"Pausada",closed:"Cerrada"},timeOptions:{5:"Últimos 5 minutos",10:"Últimos 10 minutos",15:"Últimos 15 minutos",20:"Últimos 20 minutos",30:"Últimos 30 minutos",60:"Últimos 60 minutos",all:"Cualquier momento",">60":"Más de 60 minutos",">120":"Más de 2 horas",">300":"Más de 5 horas",">1440":"Más de 24 horas",custom:"Personalizado"},custom:{more:"Más que",less:"Menos que",valuePlaceholder:"Valor",minutes:"Minutos",hours:"Horas",days:"Días"}},mass:{title:"Acciones masivas",selectAll:"Seleccionar todos",selected:"{{count}} seleccionada(s)",newStatus:"Nuevo estado",apply:"Aplicar a seleccionadas",noneSelected:"Selecciona al menos una sesión",success:"Estado actualizado en las sesiones seleccionadas",error:"Error al actualizar el estado en masa"},pagination:{showing:"Mostrando {{shown}} de {{total}}",perPage:"Por página",showMore:"Cargar más",showAll:"Mostrar todas",showLess:"Mostrar menos"},send:{title:"Enviar mensaje",to:"Para",messagePlaceholder:"Escribe tu mensaje",send:"Enviar",sending:"Enviando...",empty:"Escribe un mensaje antes de enviar",success:"Mensaje enviado correctamente",error:"Error al enviar el mensaje"},actions:{sendMessage:"Enviar mensaje"},empty:"No se encontraron sesiones"},iie={delete:{title:"Eliminar Registro",message:"Estás eliminando la instancia {{instanceName}}. ¿Estás seguro de que deseas continuar?",messageSingle:"Esta acción no se puede deshacer.",confirm:"Escriba el nombre de la instancia para confirmar:"}},lie={all:"Todos",open:"Conectado",connecting:"Conectando",closed:"Desconectado"},cie={clientName:"Nombre del Cliente",version:"Versión"},uie={theme:{label:"Cambiar Tema",light:"Claro",dark:"Oscuro",system:"Sistema"},language:{label:"Idioma",english:"Inglés",portuguese:"Portugués",spanish:"Español",french:"Francés"},logout:{action:"Salir",title:"¿Seguro que desea salir?",description:"Será desconectado y redirigido a la pantalla de inicio de sesión."}},die={dashboard:"Visión General",configurations:"Configuraciones",settings:"Comportamiento",proxy:"Proxy",events:"Eventos",webhook:"Webhook",websocket:"WebSocket",rabbitmq:"RabbitMQ",sqs:"SQS",integrations:"Integraciones",chatwoot:"Chatwoot",typebot:"Typebot",openai:"OpenAI",dify:"Dify",evoai:"EvoAI",n8n:"n8n",evolutionBot:"Bot Evolution",flowise:"Flowise",documentation:"Documentación",postman:"Postman",discord:"Discord"},fie={instance:{created:"Instancia creada con éxito",deleted:"Instancia eliminada con éxito",error:"Ocurrió un error al crear la instancia"}},pie={checking:"Verificando licencia...",required:"Licencia requerida",redirecting:"Redirigiendo al registro de licencia...",registerFailed:"Error al iniciar el registro de licencia",callback:{title:"Activando licencia",missingCode:"Código de autorización no encontrado en la URL",missingCredentials:"Credenciales no encontradas. Inicia sesión nuevamente.",activating:"Espera mientras activamos tu licencia.",successTitle:"¡Licencia activada!",successDescription:"Redirigiendo...",errorTitle:"Error en la activación",retry:"Intentar de nuevo",back:"Volver al inicio de sesión",genericError:"Error al activar la licencia"}},hie={title:"Evolution Manager",description:"Por favor, inicia sesión para continuar",form:{serverUrl:"URL del Servidor",apiKey:"Clave API Global"},message:{invalidServer:"Servidor inválido",invalidCredentials:"Credenciales inválidas"},button:{login:"Conectar",connecting:"Conectando..."},subtitle:"Ingrese sus credenciales para acceder al sistema"},mie={modal:{title:"Nueva Instancia"},form:{name:"Nombre",integration:{label:"Canal",baileys:"Baileys",whatsapp:"WhatsApp Cloud API",facebook:"Facebook",instagram:"Instagram",evolution:"Evolution"},token:"Token",number:"Número",businessId:"Business ID"},button:{save:"Guardar",saving:"Guardando...",create:"Instancia",connecting:"Conectando...",facebook:"Conectar con Facebook",instagram:"Conectar con Instagram",whatsapp:"Conectar con WhatsApp"},dashboard:{button:{qrcode:{label:"Generar Código QR",title:"Escanea el Código QR con WhatsApp"},pairingCode:{label:"Generar Código de Emparejamiento",title:"Emparejar con WhatsApp"},restart:"Reiniciar",disconnect:"Desconectar",sendMessage:"Enviar mensaje"},alert:"Para conectar, escanea el Código QR con WhatsApp",contacts:"Contactos",chats:"Chats",messages:"Mensajes",subtitle:"Administre su instancia"}},gie={title:"Comportamiento",toast:{success:"Comportamiento aplicado con éxito",error:"Ocurrió un error al aplicar el comportamiento"},form:{rejectCall:{label:"Rechazar Llamadas",description:"Rechazar todas las llamadas"},msgCall:{label:"Mensaje de Rechazo de Llamada",description:"Enviar mensaje de rechazo de llamada"},groupsIgnore:{label:"Ignorar Grupos",description:"Ignorar todos los mensajes de grupos"},alwaysOnline:{label:"Siempre Online",description:"Permanecer siempre en línea"},readMessages:{label:"Ver Mensajes",description:"Marcar todos los mensajes como leídos"},syncFullHistory:{label:"Sincronizar Historial Completo",description:"Sincronizar todo el historial al leer el Código QR"},readStatus:{label:"Ver Estado",description:"Marcar todos los estados como vistos"}},button:{save:"Guardar",saving:"Guardando..."}},vie={title:"Proxy",toast:{success:"Proxy aplicado con éxito",error:"Ocurrió un error al aplicar el proxy"},form:{enabled:{label:"Activo",description:"Activar o desactivar el proxy"},protocol:{label:"Protocolo"},host:{label:"Host"},port:{label:"Puerto"},username:{label:"Usuario"},password:{label:"Contraseña"}},button:{save:"Guardar",saving:"Guardando..."}},yie={title:"Webhook",toast:{success:"Webhook aplicado con éxito",error:"Ocurrió un error al aplicar el webhook"},form:{enabled:{label:"Activo",description:"Activar o desactivar el webhook"},url:{label:"URL"},byEvents:{label:"Webhook por Eventos",description:"Crear una ruta para cada evento agregando el nombre del evento al final de la URL"},base64:{label:"Webhook Base64",description:"Enviar datos de medios en base64 en el webhook"},events:{label:"Eventos"}},button:{save:"Guardar",saving:"Guardando..."}},bie={title:"WebSocket",toast:{success:"WebSocket aplicado con éxito",error:"Ocurrió un error al aplicar el WebSocket"},form:{enabled:{label:"Activo",description:"Activar o desactivar el WebSocket"},events:{label:"Eventos"}},button:{save:"Guardar",saving:"Guardando..."}},xie={title:"RabbitMQ",toast:{success:"RabbitMQ aplicado con éxito",error:"Ocurrió un error al aplicar el RabbitMQ"},form:{enabled:{label:"Activo",description:"Activar o desactivar el RabbitMQ"},events:{label:"Eventos"}},button:{save:"Guardar",saving:"Guardando..."}},wie={title:"SQS",toast:{success:"SQS aplicado con éxito",error:"Ocurrió un error al aplicar el SQS"},form:{enabled:{label:"Activo",description:"Activar o desactivar el SQS"},events:{label:"Eventos"}},button:{save:"Guardar",saving:"Guardando..."}},Sie={title:"Chatwoot",toast:{success:"Chatwoot aplicado con éxito",error:"Ocurrió un error al aplicar el Chatwoot"},form:{enabled:{label:"Activo",description:"Activar o desactivar el Chatwoot"},url:{label:"URL de Chatwoot"},accountId:{label:"ID de la Cuenta"},token:{label:"Token"},signMsg:{label:"Firmar Mensajes",description:"Firmar mensajes con el nombre de usuario de Chatwoot"},signDelimiter:{label:"Delimitador de Firma"},nameInbox:{label:"Nombre de la Bandeja de Entrada"},organization:{label:"Organización"},logo:{label:"Logo"},conversationPending:{label:"Conversación Pendiente",description:"Las conversaciones comienzan como pendientes"},reopenConversation:{label:"Reabrir Conversación",description:"Reabrir la conversación al recibir un mensaje"},importContacts:{label:"Importar Contactos",description:"Importar contactos del libro de direcciones de WhatsApp al conectar el Código QR"},importMessages:{label:"Importar Mensajes",description:"Importar mensajes de WhatsApp al conectar el Código QR"},daysLimitImportMessages:{label:"Límite de Días para Importación de Mensajes"},ignoreJids:{label:"Ignorar JIDs",placeholder:"Agregar JIDs ej: 1234567890@s.whatsapp.net y presiona enter"},autoCreate:{label:"Creación Automática",description:"Crear automáticamente la integración con Chatwoot al guardar"}},button:{save:"Guardar",saving:"Guardando..."}},Cie={title:"Typebots",sessions:{label:"Sesiones",search:"Buscar por remoteJid...",table:{remoteJid:"RemoteJid",pushName:"Nombre Visible",sessionId:"ID de Sesión",status:"Estado",actions:{title:"Acciones",open:"Abrir",pause:"Pausar",close:"Cerrar",delete:"Eliminar"},none:"Nada que mostrar"}},defaultSettings:"Configuraciones Predeterminadas",toast:{defaultSettings:{success:"Configuraciones predeterminadas aplicadas con éxito",error:"Ocurrió un error al aplicar las configuraciones predeterminadas"},success:{update:"Typebot actualizado con éxito",create:"Typebot creado con éxito",delete:"Typebot eliminado con éxito",status:"Estado de Typebot actualizado con éxito"},error:"Ocurrió un error al crear el Typebot"},table:{none:"Nada que mostrar"},form:{title:"Nuevo Typebot",examples:{keywordFinish:"#FINISH",unknownMessage:"Lo siento, no entendí. ¿Puedes intentar de nuevo?"},enabled:{label:"Activo"},description:{label:"Descripción"},typebotSettings:{label:"Configuraciones de Typebot"},url:{label:"URL de la API de Typebot"},typebot:{label:"Nombre Público de Typebot"},triggerSettings:{label:"Configuraciones de Disparador"},triggerType:{label:"Tipo de Disparador",keyword:"Palabra clave",all:"Todos",advanced:"Avanzado",none:"Ninguno"},triggerOperator:{label:"Operador de Disparador",contains:"Contiene",equals:"Igual",startsWith:"Comienza Con",endsWith:"Termina Con",regex:"Regex"},triggerValue:{label:"Disparador"},triggerConditions:{label:"Condiciones"},typebotIdFallback:{label:"Fallback de Typebot"},generalSettings:{label:"Configuraciones Generales"},expire:{label:"Expirar en minutos"},keywordFinish:{label:"Palabra clave de Finalización"},delayMessage:{label:"Mensaje de Retraso Predeterminado"},unknownMessage:{label:"Mensaje Desconocido"},listeningFromMe:{label:"Escuchando de mí",description:"Escuchar los mensajes enviados por mí en el bot"},stopBotFromMe:{label:"Detener bot por mí",description:"Pausar el bot cuando yo envíe un mensaje"},keepOpen:{label:"Mantener abierto",description:"Mantener el bot abierto después de que termine la conversación"},debounceTime:{label:"Tiempo de Debounce"},splitMessages:{label:"Dividir Mensajes",description:"Dividir mensajes largos en múltiples mensajes"},timePerChar:{label:"Tiempo por Carácter"},ignoreJids:{label:"Ignorar JIDs",placeholder:"Agregar JIDs ej: 1234567890@s.whatsapp.net y presiona enter"}},button:{create:"Typebot",save:"Guardar",saving:"Guardando...",update:"Actualizar",defaultSettings:"Configuraciones Predeterminadas",delete:"Eliminar"},modal:{defaultSettings:{title:"Configuraciones Predeterminadas"}}},jie={title:"OpenAI",sessions:{label:"Sesiones",search:"Buscar por remoteJid...",table:{remoteJid:"RemoteJid",pushName:"Nombre Visible",sessionId:"ID de Sesión",status:"Estado",actions:{title:"Acciones",open:"Abrir",pause:"Pausar",close:"Cerrar",delete:"Eliminar"},none:"Nada que mostrar"}},credentials:{title:"Credenciales",table:{name:"Nombre",apiKey:"Clave API",actions:{title:"Acciones",delete:"Eliminar"},none:"Nada que mostrar"}},defaultSettings:"Configuraciones Predeterminadas",toast:{defaultSettings:{success:"Configuraciones predeterminadas aplicadas con éxito",error:"Ocurrió un error al aplicar las configuraciones predeterminadas"},success:{update:"OpenAI actualizado con éxito",create:"OpenAI creado con éxito",delete:"OpenAI eliminado con éxito",status:"Estado de OpenAI actualizado con éxito",credentialsCreate:"Credenciales de OpenAI creadas con éxito",credentialsDelete:"Credenciales de OpenAI eliminadas con éxito"},error:"Ocurrió un error al crear el OpenAI"},table:{none:"Nada que mostrar"},form:{title:"Nuevo OpenAI",examples:{keywordFinish:"#FINISH",unknownMessage:"Lo siento, no entendí. ¿Puedes intentar de nuevo?"},openaiCredsId:{label:"Credenciales de OpenAI"},enabled:{label:"Activo"},description:{label:"Descripción"},openaiSettings:{label:"Configuraciones de OpenAI"},botType:{label:"Tipo de Bot",assistant:"Asistente",chatCompletion:"Chat Completion"},assistantId:{label:"ID del Asistente"},functionUrl:{label:"URL de la Función"},model:{label:"Modelo de Lenguaje"},systemMessages:{label:"Mensajes del Sistema",description:"Enviar mensajes del sistema a OpenAI"},assistantMessages:{label:"Mensajes del Asistente",description:"Enviar mensajes del asistente a OpenAI"},userMessages:{label:"Mensajes del Usuario",description:"Enviar mensajes del usuario a OpenAI"},maxTokens:{label:"Máximo de Tokens"},triggerSettings:{label:"Configuraciones de Disparador"},triggerType:{label:"Tipo de Disparador",keyword:"Palabra clave",all:"Todos",advanced:"Avanzado",none:"Ninguno"},triggerOperator:{label:"Operador de Disparador",contains:"Contiene",equals:"Igual",startsWith:"Comienza Con",endsWith:"Termina Con",regex:"Regex"},triggerValue:{label:"Disparador"},triggerConditions:{label:"Condiciones"},openaiIdFallback:{label:"Fallback de OpenAI"},generalSettings:{label:"Configuraciones Generales"},expire:{label:"Expirar en minutos"},keywordFinish:{label:"Palabra clave de Finalización"},delayMessage:{label:"Mensaje de Retraso Predeterminado"},unknownMessage:{label:"Mensaje Desconocido"},listeningFromMe:{label:"Escuchando de mí",description:"Escuchar los mensajes enviados por mí en el bot"},stopBotFromMe:{label:"Detener bot por mí",description:"Pausar el bot cuando yo envíe un mensaje"},keepOpen:{label:"Mantener abierto",description:"Mantener el bot abierto después de que termine la conversación"},speechToText:{label:"Voz a Texto",description:"Convertir mensajes de voz en texto"},debounceTime:{label:"Tiempo de Debounce"},splitMessages:{label:"Dividir Mensajes",description:"Dividir mensajes largos en múltiples mensajes"},timePerChar:{label:"Tiempo por Carácter"},ignoreJids:{label:"Ignorar JIDs",placeholder:"Agregar JIDs ej: 1234567890@s.whatsapp.net y presiona enter"}},button:{create:"OpenAI",save:"Guardar",saving:"Guardando...",update:"Actualizar",defaultSettings:"Configuraciones Predeterminadas",delete:"Eliminar",loadModels:"Cargar Modelos",loading:"Cargando..."},modal:{defaultSettings:{title:"Configuraciones Predeterminadas"}}},kie={title:"Dify",sessions:{label:"Sesiones",search:"Buscar por remoteJid...",table:{remoteJid:"RemoteJid",pushName:"Nombre Visible",sessionId:"ID de Sesión",status:"Estado",actions:{title:"Acciones",open:"Abrir",pause:"Pausar",close:"Cerrar",delete:"Eliminar"},none:"Nada que mostrar"}},defaultSettings:"Configuraciones Predeterminadas",toast:{defaultSettings:{success:"Configuraciones predeterminadas aplicadas con éxito",error:"Ocurrió un error al aplicar las configuraciones predeterminadas"},success:{update:"Dify actualizado con éxito",create:"Dify creado con éxito",delete:"Dify eliminado con éxito",status:"Estado de Dify actualizado con éxito"},error:"Ocurrió un error al crear el Dify"},table:{none:"Nada que mostrar"},form:{title:"Nuevo Dify",examples:{keywordFinish:"#FINISH",unknownMessage:"Lo siento, no entendí. ¿Puedes intentar de nuevo?"},enabled:{label:"Activo"},description:{label:"Descripción"},difySettings:{label:"Configuraciones de Dify"},botType:{label:"Tipo de Bot",chatBot:"Chat Bot",textGenerator:"Generador de Texto",agent:"Agente",workflow:"Flujo de Trabajo"},apiUrl:{label:"URL de la API"},apiKey:{label:"Clave API"},triggerSettings:{label:"Configuraciones de Disparador"},triggerType:{label:"Tipo de Disparador",keyword:"Palabra clave",all:"Todos",advanced:"Avanzado",none:"Ninguno"},triggerOperator:{label:"Operador de Disparador",contains:"Contiene",equals:"Igual",startsWith:"Comienza Con",endsWith:"Termina Con",regex:"Regex"},triggerValue:{label:"Disparador"},triggerConditions:{label:"Condiciones"},difyIdFallback:{label:"Fallback de Dify"},generalSettings:{label:"Configuraciones Generales"},expire:{label:"Expirar en minutos"},keywordFinish:{label:"Palabra clave de Finalización"},delayMessage:{label:"Mensaje de Retraso Predeterminado"},unknownMessage:{label:"Mensaje Desconocido"},listeningFromMe:{label:"Escuchando de mí",description:"Escuchar los mensajes enviados por mí en el bot"},stopBotFromMe:{label:"Detener bot por mí",description:"Pausar el bot cuando yo envíe un mensaje"},keepOpen:{label:"Mantener abierto",description:"Mantener el bot abierto después de que termine la conversación"},debounceTime:{label:"Tiempo de Debounce"},splitMessages:{label:"Dividir Mensajes",description:"Dividir mensajes largos en múltiples mensajes"},timePerChar:{label:"Tiempo por Carácter"},ignoreJids:{label:"Ignorar JIDs",placeholder:"Agregar JIDs ej: 1234567890@s.whatsapp.net y presiona enter"}},button:{create:"Dify",save:"Guardar",saving:"Guardando...",update:"Actualizar",defaultSettings:"Configuraciones Predeterminadas",delete:"Eliminar"},modal:{defaultSettings:{title:"Configuraciones Predeterminadas"}}},Eie={title:"n8n",sessions:{label:"Sesiones",search:"Buscar por remoteJid...",table:{remoteJid:"RemoteJid",pushName:"Push Name",sessionId:"Session ID",status:"Estado",actions:{title:"Acciones",open:"Abrir",pause:"Pausar",close:"Cerrar",delete:"Eliminar"},none:"Nada que mostrar"}},defaultSettings:"Configuraciones Predeterminadas",toast:{defaultSettings:{success:"Configuraciones predeterminadas aplicadas con éxito",error:"Ocurrió un error al aplicar las configuraciones predeterminadas"},success:{update:"n8n actualizado con éxito",create:"n8n creado con éxito",delete:"n8n eliminado con éxito",status:"Estado de n8n actualizado con éxito"},error:"Ocurrió un error al crear el chatbot n8n"},table:{none:"Nada que mostrar"},form:{title:"Nuevo chatbot n8n",examples:{keywordFinish:"#FINISH",unknownMessage:"Lo siento, no entendí. ¿Puedes intentar de nuevo?"},enabled:{label:"Activo"},description:{label:"Descripción"},n8nSettings:{label:"Configuraciones de n8n"},webhookUrl:{label:"URL del Webhook"},basicAuth:{label:"Basic Auth (Opcional)"},basicAuthUser:{label:"Basic Auth User"},basicAuthPass:{label:"Basic Auth Password"},triggerSettings:{label:"Configuraciones de Disparador"},triggerType:{label:"Tipo de Disparador",keyword:"Palabra clave",all:"Todos",advanced:"Avanzado",none:"Ninguno"},triggerOperator:{label:"Operador de Disparador",contains:"Contiene",equals:"Igual",startsWith:"Comienza Con",endsWith:"Termina Con",regex:"Regex"},triggerValue:{label:"Disparador"},triggerConditions:{label:"Condiciones"},n8nIdFallback:{label:"Fallback de n8n"},generalSettings:{label:"Configuraciones Generales"},expire:{label:"Expirar en minutos"},keywordFinish:{label:"Palabra clave de Finalización"},delayMessage:{label:"Mensaje de Retraso Predeterminado"},unknownMessage:{label:"Mensaje Desconocido"},listeningFromMe:{label:"Escuchando de mí",description:"Escuchar los mensajes enviados por mí en el bot"},stopBotFromMe:{label:"Detener bot por mí",description:"Pausar el bot cuando yo envíe un mensaje"},keepOpen:{label:"Mantener abierto",description:"Mantener el bot abierto después de que termine la conversación"},debounceTime:{label:"Tiempo de Debounce"},splitMessages:{label:"Dividir Mensajes",description:"Dividir mensajes en múltiples mensajes"},timePerChar:{label:"Tiempo por carácter"},ignoreJids:{label:"Ignorar JIDs",placeholder:"Agregar JIDs ej: 1234567890@s.whatsapp.net y presiona enter"}},button:{create:"n8n",save:"Guardar",saving:"Guardando...",update:"Actualizar",defaultSettings:"Configuraciones Predeterminadas",delete:"Eliminar"},modal:{defaultSettings:{title:"Configuraciones Predeterminadas"}}},Nie={title:"EvoAI",sessions:{label:"Sesiones",search:"Buscar por remoteJid...",table:{remoteJid:"RemoteJid",pushName:"Push Name",sessionId:"Session ID",status:"Estado",actions:{title:"Acciones",open:"Abrir",pause:"Pausar",close:"Cerrar",delete:"Eliminar"},none:"Nada que mostrar"}},defaultSettings:"Configuraciones Predeterminadas",toast:{defaultSettings:{success:"Configuraciones predeterminadas aplicadas con éxito",error:"Ocurrió un error al aplicar las configuraciones predeterminadas"},success:{update:"EvoAI actualizado con éxito",create:"EvoAI creado con éxito",delete:"EvoAI eliminado con éxito",status:"Estado de EvoAI actualizado con éxito"},error:"Ocurrió un error al crear el chatbot EvoAI"},table:{none:"Nada que mostrar"},form:{title:"Nuevo chatbot EvoAI",examples:{keywordFinish:"#FINISH",unknownMessage:"Lo siento, no entendí. ¿Puedes intentar de nuevo?"},enabled:{label:"Activo"},description:{label:"Descripción"},evoaiSettings:{label:"Configuraciones de EvoAI"},agentUrl:{label:"URL del Agente"},apiKey:{label:"API Key (Opcional)"},triggerSettings:{label:"Configuraciones de Disparador"},triggerType:{label:"Tipo de Disparador",keyword:"Palabra clave",all:"Todos",advanced:"Avanzado",none:"Ninguno"},triggerOperator:{label:"Operador de Disparador",contains:"Contiene",equals:"Igual",startsWith:"Comienza Con",endsWith:"Termina Con",regex:"Regex"},triggerValue:{label:"Disparador"},triggerConditions:{label:"Condiciones"},evoaiIdFallback:{label:"Fallback de EvoAI"},generalSettings:{label:"Configuraciones Generales"},expire:{label:"Expirar en minutos"},keywordFinish:{label:"Palabra clave de Finalización"},delayMessage:{label:"Mensaje de Retraso Predeterminado"},unknownMessage:{label:"Mensaje Desconocido"},listeningFromMe:{label:"Escuchando de mí",description:"Escuchar los mensajes enviados por mí en el bot"},stopBotFromMe:{label:"Detener bot por mí",description:"Pausar el bot cuando yo envíe un mensaje"},keepOpen:{label:"Mantener abierto",description:"Mantener el bot abierto después de que termine la conversación"},debounceTime:{label:"Tiempo de Debounce"},splitMessages:{label:"Dividir Mensajes",description:"Dividir mensajes en múltiples mensajes"},timePerChar:{label:"Tiempo por carácter"},ignoreJids:{label:"Ignorar JIDs",placeholder:"Agregar JIDs ej: 1234567890@s.whatsapp.net y presiona enter"}},button:{create:"EvoAI",save:"Guardar",saving:"Guardando...",update:"Actualizar",defaultSettings:"Configuraciones Predeterminadas",delete:"Eliminar"},modal:{defaultSettings:{title:"Configuraciones Predeterminadas"}}},Tie={title:"Bot Evolution",sessions:{label:"Sesiones",search:"Buscar por remoteJid...",table:{remoteJid:"RemoteJid",pushName:"Nombre Visible",sessionId:"ID de Sesión",status:"Estado",actions:{title:"Acciones",open:"Abrir",pause:"Pausar",close:"Cerrar",delete:"Eliminar"},none:"Nada que mostrar"}},defaultSettings:"Configuraciones Predeterminadas",toast:{defaultSettings:{success:"Configuraciones predeterminadas aplicadas con éxito",error:"Ocurrió un error al aplicar las configuraciones predeterminadas"},success:{update:"Bot Evolution actualizado con éxito",create:"Bot Evolution creado con éxito",delete:"Bot Evolution eliminado con éxito",status:"Estado de Bot Evolution actualizado con éxito"},error:"Ocurrió un error al crear el Bot Evolution"},table:{none:"Nada que mostrar"},form:{title:"Nuevo Bot Evolution",examples:{keywordFinish:"#FINISH",unknownMessage:"Lo siento, no entendí. ¿Puedes intentar de nuevo?"},enabled:{label:"Activo"},description:{label:"Descripción"},evolutionBotSettings:{label:"Configuraciones de Bot Evolution"},apiUrl:{label:"URL de la API"},apiKey:{label:"Clave API"},triggerSettings:{label:"Configuraciones de Disparador"},triggerType:{label:"Tipo de Disparador",keyword:"Palabra clave",all:"Todos",advanced:"Avanzado",none:"Ninguno"},triggerOperator:{label:"Operador de Disparador",contains:"Contiene",equals:"Igual",startsWith:"Comienza Con",endsWith:"Termina Con",regex:"Regex"},triggerValue:{label:"Disparador"},triggerConditions:{label:"Condiciones"},botIdFallback:{label:"Fallback de Bot Evolution"},generalSettings:{label:"Configuraciones Generales"},expire:{label:"Expirar en minutos"},keywordFinish:{label:"Palabra clave de Finalización"},delayMessage:{label:"Mensaje de Retraso Predeterminado"},unknownMessage:{label:"Mensaje Desconocido"},listeningFromMe:{label:"Escuchando de mí",description:"Escuchar los mensajes enviados por mí en el bot"},stopBotFromMe:{label:"Detener bot por mí",description:"Pausar el bot cuando yo envíe un mensaje"},keepOpen:{label:"Mantener abierto",description:"Mantener el bot abierto después de que termine la conversación"},debounceTime:{label:"Tiempo de Debounce"},splitMessages:{label:"Dividir Mensajes",description:"Dividir mensajes largos en múltiples mensajes"},timePerChar:{label:"Tiempo por Carácter"},ignoreJids:{label:"Ignorar JIDs",placeholder:"Agregar JIDs ej: 1234567890@s.whatsapp.net y presiona enter"}},button:{create:"Bot Evolution",save:"Guardar",saving:"Guardando...",update:"Actualizar",defaultSettings:"Configuraciones Predeterminadas",delete:"Eliminar"},modal:{defaultSettings:{title:"Configuraciones Predeterminadas"}}},Mie={title:"Flowise",sessions:{label:"Sesiones",search:"Buscar por remoteJid...",table:{remoteJid:"RemoteJid",pushName:"Nombre Visible",sessionId:"ID de Sesión",status:"Estado",actions:{title:"Acciones",open:"Abrir",pause:"Pausar",close:"Cerrar",delete:"Eliminar"},none:"Nada que mostrar"}},defaultSettings:"Configuraciones Predeterminadas",toast:{defaultSettings:{success:"Configuraciones predeterminadas aplicadas con éxito",error:"Ocurrió un error al aplicar las configuraciones predeterminadas"},success:{update:"Flowise actualizado con éxito",create:"Flowise creado con éxito",delete:"Flowise eliminado con éxito",status:"Estado de Flowise actualizado con éxito"},error:"Ocurrió un error al crear el Flowise"},table:{none:"Nada que mostrar"},form:{title:"Nuevo Flowise",examples:{keywordFinish:"#FINISH",unknownMessage:"Lo siento, no entendí. ¿Puedes intentar de nuevo?"},enabled:{label:"Activo"},description:{label:"Descripción"},flowiseSettings:{label:"Configuraciones de Flowise"},apiUrl:{label:"URL de la API"},apiKey:{label:"Clave API"},triggerSettings:{label:"Configuraciones de Disparador"},triggerType:{label:"Tipo de Disparador",keyword:"Palabra clave",all:"Todos",advanced:"Avanzado",none:"Ninguno"},triggerOperator:{label:"Operador de Disparador",contains:"Contiene",equals:"Igual",startsWith:"Comienza Con",endsWith:"Termina Con",regex:"Regex"},triggerValue:{label:"Disparador"},triggerConditions:{label:"Condiciones"},flowiseIdFallback:{label:"Fallback de Flowise"},generalSettings:{label:"Configuraciones Generales"},expire:{label:"Expirar en minutos"},keywordFinish:{label:"Palabra clave de Finalización"},delayMessage:{label:"Mensaje de Retraso Predeterminado"},unknownMessage:{label:"Mensaje Desconocido"},listeningFromMe:{label:"Escuchando de mí",description:"Escuchar los mensajes enviados por mí en el bot"},stopBotFromMe:{label:"Detener bot por mí",description:"Pausar el bot cuando yo envíe un mensaje"},keepOpen:{label:"Mantener abierto",description:"Mantener el bot abierto después de que termine la conversación"},debounceTime:{label:"Tiempo de Debounce"},splitMessages:{label:"Dividir Mensajes",description:"Dividir mensajes largos en múltiples mensajes"},timePerChar:{label:"Tiempo por Carácter"},ignoreJids:{label:"Ignorar JIDs",placeholder:"Agregar JIDs ej: 1234567890@s.whatsapp.net y presiona enter"}},button:{create:"Flowise",save:"Guardar",saving:"Guardando...",update:"Actualizar",defaultSettings:"Configuraciones Predeterminadas",delete:"Eliminar"},modal:{defaultSettings:{title:"Configuraciones Predeterminadas"}}},_ie={search:"Buscar conversaciones...",back:"Volver",tabs:{contacts:"Contactos",groups:"Grupos"},count_one:"{{count}} conversación",count_other:"{{count}} conversaciones",empty:{default:"Aún no hay conversaciones",search:"No se encontraron conversaciones",tryAnother:"Intente otro término",selectTitle:"Seleccione una conversación",selectDescription:"Elija un contacto o grupo de la lista para comenzar"},input:{placeholder:"Escriba un mensaje...",send:"Enviar"},date:{today:"Hoy",yesterday:"Ayer"}},Rie={search:"Buscar..."},Pie={title:"Enviar Mensaje",description:"Envíe un mensaje de texto desde la instancia",validation:{numberRequired:"El número es obligatorio",messageRequired:"El mensaje es obligatorio"},form:{number:{label:"Número (con código de país)"},message:{label:"Mensaje",placeholder:"Escriba su mensaje..."}},button:{send:"Enviar",sending:"Enviando..."},toast:{success:"Mensaje enviado con éxito",error:"Error al enviar el mensaje",noToken:"Token de instancia no disponible"}},Iie={title:"Conectar con código QR",description:"Escanee el código QR para conectar la instancia",generating:"Generando código QR...",waiting:"Esperando código QR...",connected:{title:"Instancia conectada",description:"La instancia {{instanceName}} ya está conectada",connectedAs:"Conectado como"},pairingCode:{title:"Conectar con código de emparejamiento",label:"Código de emparejamiento",generate:"Generar código",generating:"Generando...",hint:"Ingrese el número con código de país (ej: 5511999999999) para recibir un código de emparejamiento"},howTo:{title:"Cómo conectar:",step1:"Abra WhatsApp en su teléfono",step2:"Toque Menú o Ajustes",step3:"Seleccione Dispositivos vinculados",step4:"Toque Vincular un dispositivo",step5:"Apunte su cámara al código QR"},button:{refresh:"Actualizar código QR",refreshing:"Actualizando...",close:"Cerrar"},toast:{pairingSuccess:"Código de emparejamiento generado",pairingError:"Error al generar el código de emparejamiento",refreshSuccess:"Código QR actualizado",refreshError:"Error al actualizar el código QR"}},Oie={title:"Nueva Instancia",description:"Cree una nueva instancia para conectar con WhatsApp",validation:{nameMin:"El nombre debe tener al menos 3 caracteres",nameMax:"El nombre debe tener como máximo 50 caracteres",nameFormat:"El nombre solo puede contener letras, números, guiones y guiones bajos"},form:{name:{label:"Nombre de la Instancia",placeholder:"mi-instancia",hint:"Use letras, números, guion (-) o guion bajo (_)"},token:{label:"Token (opcional)",placeholder:"Deje en blanco para generar automáticamente",hint:"Si no se proporciona, se generará un UUID automáticamente"}},proxy:{title:"Configurar Proxy (opcional)",host:{label:"Host",placeholder:"proxy.ejemplo.com"},port:{label:"Puerto"},username:{label:"Usuario",placeholder:"usuario"},password:{label:"Contraseña",placeholder:"••••••••"}},button:{create:"Crear Instancia",creating:"Creando..."}},Aie={loading:"Cargando...",noResults:"¡Ningún resultado encontrado!"},Die={dashboard:rie,button:sie,testInteractive:aie,sessions:oie,modal:iie,status:lie,footer:cie,header:uie,sidebar:die,toast:fie,license:pie,login:hie,instance:mie,settings:gie,proxy:vie,webhook:yie,websocket:bie,rabbitmq:xie,sqs:wie,chatwoot:Sie,typebot:Cie,openai:jie,dify:kie,n8n:Eie,evoai:Nie,evolutionBot:Tie,flowise:Mie,chat:_ie,common:Rie,sendMessage:Pie,qrCode:Iie,newInstance:Oie,table:Aie},Fie={title:"Instances",search:"Rechercher",status:"Statut",settings:"Paramètres",instancesNotFound:"Aucune instance trouvée",subtitle:"Gérez vos instances WhatsApp",card:{phone:"Numéro"},empty:{title:"Aucune instance trouvée",description:"Créez votre première instance pour commencer"}},Lie={delete:"Supprimer",deleting:"Suppression...",cancel:"Annuler",markAll:"Marquer Tous",unMarkAll:"Démarquer Tous",refresh:"Actualiser"},$ie={title:"Tester les messages interactifs",subtitle:"Instance : {{instance}} ·",number:"Numéro de destination",numberHint:"Avec indicatif pays/zone, chiffres uniquement (ex. : 5511999999999)",payload:"Payload JSON (modifiable)",send:"Envoyer",sending:"Envoi...",requiresOpen:"Disponible uniquement lorsque l'instance est connectée",tabs:{reply:"Reply",cta:"CTA",pix:"PIX",list:"Liste",carousel:"Carrousel"},success:"Message envoyé (id {{id}})",errors:{missingNumber:"Indiquez le numéro de destination",invalidJson:"JSON invalide : {{message}}",unknown:"Échec de l'envoi du message"}},Bie={filters:{title:"Filtres avancés",name:"Filtrer par nom",namePlaceholder:"Filtrer par nom",number:"Filtrer par numéro",numberPlaceholder:"Filtrer par numéro",status:"Filtrer par statut",time:"Filtrer par temps",apply:"Appliquer les filtres",clear:"Effacer",statusOptions:{all:"Tous les statuts",opened:"Ouverte",paused:"En pause",closed:"Fermée"},timeOptions:{5:"Dernières 5 minutes",10:"Dernières 10 minutes",15:"Dernières 15 minutes",20:"Dernières 20 minutes",30:"Dernières 30 minutes",60:"Dernières 60 minutes",all:"À tout moment",">60":"Plus de 60 minutes",">120":"Plus de 2 heures",">300":"Plus de 5 heures",">1440":"Plus de 24 heures",custom:"Personnalisé"},custom:{more:"Plus que",less:"Moins que",valuePlaceholder:"Valeur",minutes:"Minutes",hours:"Heures",days:"Jours"}},mass:{title:"Actions en masse",selectAll:"Sélectionner tout",selected:"{{count}} sélectionnée(s)",newStatus:"Nouveau statut",apply:"Appliquer aux sélectionnées",noneSelected:"Sélectionnez au moins une session",success:"Statut mis à jour pour les sessions sélectionnées",error:"Échec de la mise à jour du statut en masse"},pagination:{showing:"Affichage de {{shown}} sur {{total}}",perPage:"Par page",showMore:"Charger plus",showAll:"Tout afficher",showLess:"Afficher moins"},send:{title:"Envoyer un message",to:"À",messagePlaceholder:"Tapez votre message",send:"Envoyer",sending:"Envoi...",empty:"Tapez un message avant d'envoyer",success:"Message envoyé avec succès",error:"Échec de l'envoi du message"},actions:{sendMessage:"Envoyer un message"},empty:"Aucune session trouvée"},zie={delete:{title:"Supprimer l'Enregistrement",message:"Vous êtes en train de supprimer l'instance {{instanceName}}. Êtes-vous sûr de vouloir continuer ?",messageSingle:"Cette action est irréversible.",confirm:"Tapez le nom de l'instance pour confirmer:"}},Uie={all:"Tous",open:"Connecté",connecting:"Connexion",closed:"Déconnecté"},Vie={clientName:"Nom du Client",version:"Version"},qie={theme:{label:"Changer de Thème",light:"Clair",dark:"Sombre",system:"Système"},language:{label:"Langue",english:"Anglais",portuguese:"Portugais",french:"Français"},logout:{action:"Déconnexion",title:"Êtes-vous sûr de vouloir vous déconnecter ?",description:"Vous serez déconnecté et redirigé vers l'écran de connexion."}},Hie={dashboard:"Vue d'ensemble",configurations:"Configurations",settings:"Comportement",proxy:"Proxy",events:"Evenements",webhook:"Webhook",websocket:"WebSocket",rabbitmq:"RabbitMQ",sqs:"SQS",integrations:"Intégrations",chatwoot:"Chatwoot",typebot:"Typebot",openai:"OpenAI",dify:"Dify",evoai:"EvoAI",n8n:"n8n",evolutionBot:"Bot Evolution",flowise:"Flowise",documentation:"Documentation",postman:"Postman",discord:"Discord"},Kie={instance:{created:"Instance créée avec succès",deleted:"Instance supprimée avec succès",error:"Une erreur est survenue lors de la création de l'instance"}},Wie={checking:"Vérification de la licence...",required:"Licence requise",redirecting:"Redirection vers l'enregistrement de la licence...",registerFailed:"Échec du démarrage de l'enregistrement de la licence",callback:{title:"Activation de la licence",missingCode:"Code d'autorisation introuvable dans l'URL",missingCredentials:"Identifiants introuvables. Veuillez vous reconnecter.",activating:"Veuillez patienter pendant l'activation de votre licence.",successTitle:"Licence activée !",successDescription:"Redirection...",errorTitle:"Erreur d'activation",retry:"Réessayer",back:"Retour à la connexion",genericError:"Échec de l'activation de la licence"}},Gie={title:"Evolution Manager",description:"Veuillez vous connecter pour continuer",form:{serverUrl:"URL du Serveur",apiKey:"Clé API Globale"},message:{invalidServer:"Serveur invalide",invalidCredentials:"Identifiants invalides"},button:{login:"Se connecter",connecting:"Connexion..."},subtitle:"Entrez vos identifiants pour accéder au système"},Jie={modal:{title:"Nouvelle Instance"},form:{name:"Nom",integration:{label:"Canal",baileys:"Baileys",whatsapp:"WhatsApp Cloud API",facebook:"Facebook",instagram:"Instagram",evolution:"Evolution"},token:"Token",number:"Numéro",businessId:"ID de l'Entreprise"},button:{save:"Enregistrer",saving:"Enregistrement...",create:"Instance",connecting:"Connexion...",facebook:"Se connecter avec Facebook",instagram:"Se connecter avec Instagram",whatsapp:"Se connecter avec WhatsApp"},dashboard:{button:{qrcode:{label:"Générer un Code QR",title:"Scannez le Code QR avec WhatsApp"},pairingCode:{label:"Générer un Code d'Appairage",title:"Appairez avec WhatsApp"},restart:"Redémarrer",disconnect:"Déconnecter",sendMessage:"Envoyer un message"},alert:"Pour vous connecter, scannez le Code QR avec WhatsApp",contacts:"Contacts",chats:"Chats",messages:"Messages",subtitle:"Gérez votre instance"}},Qie={title:"Comportement",toast:{success:"Comportement appliqué avec succès",error:"Une erreur est survenue lors de l'application du comportement"},form:{rejectCall:{label:"Rejeter les Appels",description:"Rejeter tous les appels"},msgCall:{label:"Message de Rejet d'Appel",description:"Envoyer un message de rejet d'appel"},groupsIgnore:{label:"Ignorer les Groupes",description:"Ignorer tous les messages de groupes"},alwaysOnline:{label:"Toujours En Ligne",description:"Rester toujours en ligne"},readMessages:{label:"Lire les Messages",description:"Marquer tous les messages comme lus"},syncFullHistory:{label:"Synchroniser l'Historique Complet",description:"Synchroniser l'historique complet lors de la lecture du Code QR"},readStatus:{label:"Lire le Statut",description:"Marquer tous les statuts comme vus"}},button:{save:"Enregistrer",saving:"Enregistrement..."}},Yie={title:"Proxy",toast:{success:"Proxy appliqué avec succès",error:"Une erreur est survenue lors de l'application du proxy"},form:{enabled:{label:"Activé",description:"Activer ou désactiver le proxy"},protocol:{label:"Protocole"},host:{label:"Hôte"},port:{label:"Port"},username:{label:"Utilisateur"},password:{label:"Mot de passe"}},button:{save:"Enregistrer",saving:"Enregistrement..."}},Zie={title:"Webhook",toast:{success:"Webhook appliqué avec succès",error:"Une erreur est survenue lors de l'application du webhook"},form:{enabled:{label:"Activé",description:"Activer ou désactiver le webhook"},url:{label:"URL"},byEvents:{label:"Webhook par Événements",description:"Créer une route pour chaque événement en ajoutant le nom de l'événement à la fin de l'URL"},base64:{label:"Webhook Base64",description:"Envoyer des données médias en base64 dans le webhook"},events:{label:"Événements"}},button:{save:"Enregistrer",saving:"Enregistrement..."}},Xie={title:"WebSocket",toast:{success:"WebSocket appliqué avec succès",error:"Une erreur est survenue lors de l'application du WebSocket"},form:{enabled:{label:"Activé",description:"Activer ou désactiver le WebSocket"},events:{label:"Événements"}},button:{save:"Enregistrer",saving:"Enregistrement..."}},ele={title:"RabbitMQ",toast:{success:"RabbitMQ appliqué avec succès",error:"Une erreur est survenue lors de l'application de RabbitMQ"},form:{enabled:{label:"Activé",description:"Activer ou désactiver RabbitMQ"},events:{label:"Événements"}},button:{save:"Enregistrer",saving:"Enregistrement..."}},tle={title:"SQS",toast:{success:"SQS appliqué avec succès",error:"Une erreur est survenue lors de l'application de SQS"},form:{enabled:{label:"Activé",description:"Activer ou désactiver SQS"},events:{label:"Événements"}},button:{save:"Enregistrer",saving:"Enregistrement..."}},nle={title:"Chatwoot",toast:{success:"Chatwoot appliqué avec succès",error:"Une erreur est survenue lors de l'application de Chatwoot"},form:{enabled:{label:"Activé",description:"Activer ou désactiver Chatwoot"},url:{label:"URL de Chatwoot"},accountId:{label:"ID du Compte"},token:{label:"Token"},signMsg:{label:"Signer les Messages",description:"Signer les messages avec le nom d'utilisateur Chatwoot"},signDelimiter:{label:"Délimiteur de Signature"},nameInbox:{label:"Nom de la Boîte de Réception"},organization:{label:"Organisation"},logo:{label:"Logo"},conversationPending:{label:"Conversation en Attente",description:"Les conversations commencent en attente"},reopenConversation:{label:"Rouvrir la Conversation",description:"Rouvrir la conversation lors de la réception d'un message"},importContacts:{label:"Importer les Contacts",description:"Importer les contacts du carnet d'adresses WhatsApp en scannant le Code QR"},importMessages:{label:"Importer les Messages",description:"Importer les messages WhatsApp en scannant le Code QR"},daysLimitImportMessages:{label:"Limite de Jours pour l'Importation de Messages"},ignoreJids:{label:"Ignorer les JIDs",placeholder:"Ajouter des JIDs ex: 1234567890@s.whatsapp.net et appuyez sur entrer"},autoCreate:{label:"Création Automatique",description:"Créer automatiquement l'intégration Chatwoot lors de l'enregistrement"}},button:{save:"Enregistrer",saving:"Enregistrement..."}},rle={title:"Typebots",sessions:{label:"Sessions",search:"Rechercher par remoteJid...",table:{remoteJid:"RemoteJid",pushName:"Nom d'Affichage",sessionId:"ID de Session",status:"Statut",actions:{title:"Actions",open:"Ouvrir",pause:"Pause",close:"Fermer",delete:"Supprimer"},none:"Rien à afficher"}},defaultSettings:"Paramètres par Défaut",toast:{defaultSettings:{success:"Paramètres par défaut appliqués avec succès",error:"Une erreur est survenue lors de l'application des paramètres par défaut"},success:{update:"Typebot mis à jour avec succès",create:"Typebot créé avec succès",delete:"Typebot supprimé avec succès",status:"Statut de Typebot mis à jour avec succès"},error:"Une erreur est survenue lors de la création du Typebot"},table:{none:"Rien à afficher"},form:{title:"Nouveau Typebot",examples:{keywordFinish:"#FINISH",unknownMessage:"Désolé, je n'ai pas compris. Pouvez-vous réessayer ?"},enabled:{label:"Activé"},description:{label:"Description"},typebotSettings:{label:"Paramètres de Typebot"},url:{label:"URL de l'API de Typebot"},typebot:{label:"Nom Public de Typebot"},triggerSettings:{label:"Paramètres de Déclencheur"},triggerType:{label:"Type de Déclencheur",keyword:"Mot-clé",all:"Tous",advanced:"Avancé",none:"Aucun"},triggerOperator:{label:"Opérateur de Déclencheur",contains:"Contient",equals:"Égal",startsWith:"Commence Par",endsWith:"Se Termine Par",regex:"Regex"},triggerValue:{label:"Déclencheur"},triggerConditions:{label:"Conditions"},typebotIdFallback:{label:"Fallback de Typebot"},generalSettings:{label:"Paramètres Généraux"},expire:{label:"Expirer en minutes"},keywordFinish:{label:"Mot-clé de Fin"},delayMessage:{label:"Message de Délai par Défaut"},unknownMessage:{label:"Message Inconnu"},listeningFromMe:{label:"Écouter de Moi",description:"Écouter les messages envoyés par moi sur le bot"},stopBotFromMe:{label:"Arrêter le Bot de Moi",description:"Mettre en pause le bot quand j'envoie un message"},keepOpen:{label:"Garder Ouvert",description:"Garder le bot ouvert après la fin de la conversation"},debounceTime:{label:"Temps de Déclenchement"},splitMessages:{label:"Diviser les Messages",description:"Diviser les messages en plusieurs messages"},timePerChar:{label:"Temps par Caractère"},ignoreJids:{label:"Ignorer les JIDs",placeholder:"Ajouter des JIDs ex: 1234567890@s.whatsapp.net et appuyez sur entrer"}},button:{create:"Typebot",save:"Enregistrer",saving:"Enregistrement...",update:"Mettre à jour",defaultSettings:"Paramètres par Défaut",delete:"Supprimer"},modal:{defaultSettings:{title:"Paramètres par Défaut"}}},sle={title:"OpenAI",sessions:{label:"Sessions",search:"Rechercher par remoteJid...",table:{remoteJid:"RemoteJid",pushName:"Nom d'Affichage",sessionId:"ID de Session",status:"Statut",actions:{title:"Actions",open:"Ouvrir",pause:"Pause",close:"Fermer",delete:"Supprimer"},none:"Rien à afficher"}},credentials:{title:"Identifiants",table:{name:"Nom",apiKey:"Clé API",actions:{title:"Actions",delete:"Supprimer"},none:"Rien à afficher"}},defaultSettings:"Paramètres par Défaut",toast:{defaultSettings:{success:"Paramètres par défaut appliqués avec succès",error:"Une erreur est survenue lors de l'application des paramètres par défaut"},success:{update:"OpenAI mis à jour avec succès",create:"OpenAI créé avec succès",delete:"OpenAI supprimé avec succès",status:"Statut de OpenAI mis à jour avec succès",credentialsCreate:"Identifiants OpenAI créés avec succès",credentialsDelete:"Identifiants OpenAI supprimés avec succès"},error:"Une erreur est survenue lors de la création de OpenAI"},table:{none:"Rien à afficher"},form:{title:"Nouveau OpenAI",examples:{keywordFinish:"#FINISH",unknownMessage:"Désolé, je n'ai pas compris. Pouvez-vous réessayer ?"},openaiCredsId:{label:"Identifiants OpenAI"},enabled:{label:"Activé"},description:{label:"Description"},openaiSettings:{label:"Paramètres OpenAI"},botType:{label:"Type de Bot",assistant:"Assistant",chatCompletion:"Chat Completion"},assistantId:{label:"ID de l'Assistant"},functionUrl:{label:"URL de la Fonction"},model:{label:"Modèle de Langage"},systemMessages:{label:"Messages Système",description:"Envoyer des messages système à OpenAI"},assistantMessages:{label:"Messages de l'Assistant",description:"Envoyer des messages de l'assistant à OpenAI"},userMessages:{label:"Messages de l'Utilisateur",description:"Envoyer des messages de l'utilisateur à OpenAI"},maxTokens:{label:"Nombre Maximum de Tokens"},triggerSettings:{label:"Paramètres de Déclencheur"},triggerType:{label:"Type de Déclencheur",keyword:"Mot-clé",all:"Tous",advanced:"Avancé",none:"Aucun"},triggerOperator:{label:"Opérateur de Déclencheur",contains:"Contient",equals:"Égal",startsWith:"Commence Par",endsWith:"Se Termine Par",regex:"Regex"},triggerValue:{label:"Déclencheur"},triggerConditions:{label:"Conditions"},openaiIdFallback:{label:"Fallback de OpenAI"},generalSettings:{label:"Paramètres Généraux"},expire:{label:"Expirer en minutes"},keywordFinish:{label:"Mot-clé de Fin"},delayMessage:{label:"Message de Délai par Défaut"},unknownMessage:{label:"Message Inconnu"},listeningFromMe:{label:"Écouter de Moi",description:"Écouter les messages envoyés par moi sur le bot"},stopBotFromMe:{label:"Arrêter le Bot de Moi",description:"Mettre en pause le bot quand j'envoie un message"},keepOpen:{label:"Garder Ouvert",description:"Garder le bot ouvert après la fin de la conversation"},speechToText:{label:"Parole en Texte",description:"Convertir les messages vocaux en texte"},debounceTime:{label:"Temps de Déclenchement"},splitMessages:{label:"Diviser les Messages",description:"Diviser les messages en plusieurs messages"},timePerChar:{label:"Temps par Caractère"},ignoreJids:{label:"Ignorer les JIDs",placeholder:"Ajouter des JIDs ex: 1234567890@s.whatsapp.net et appuyez sur entrer"}},button:{create:"OpenAI",save:"Enregistrer",saving:"Enregistrement...",update:"Mettre à jour",defaultSettings:"Paramètres par Défaut",delete:"Supprimer",loadModels:"Charger les Modèles",loading:"Chargement..."},modal:{defaultSettings:{title:"Paramètres par Défaut"}}},ale={title:"Dify",sessions:{label:"Sessions",search:"Rechercher par remoteJid...",table:{remoteJid:"RemoteJid",pushName:"Nom d'Affichage",sessionId:"ID de Session",status:"Statut",actions:{title:"Actions",open:"Ouvrir",pause:"Pause",close:"Fermer",delete:"Supprimer"},none:"Rien à afficher"}},defaultSettings:"Paramètres par Défaut",toast:{defaultSettings:{success:"Paramètres par défaut appliqués avec succès",error:"Une erreur est survenue lors de l'application des paramètres par défaut"},success:{update:"Dify mis à jour avec succès",create:"Dify créé avec succès",delete:"Dify supprimé avec succès",status:"Statut de Dify mis à jour avec succès"},error:"Une erreur est survenue lors de la création de Dify"},table:{none:"Rien à afficher"},form:{title:"Nouveau Dify",examples:{keywordFinish:"#FINISH",unknownMessage:"Désolé, je n'ai pas compris. Pouvez-vous réessayer ?"},enabled:{label:"Activé"},description:{label:"Description"},difySettings:{label:"Paramètres de Dify"},botType:{label:"Type de Bot",chatBot:"Chat Bot",textGenerator:"Générateur de Texte",agent:"Agent",workflow:"Flux de Travail"},apiUrl:{label:"URL de l'API"},apiKey:{label:"Clé API"},triggerSettings:{label:"Paramètres de Déclencheur"},triggerType:{label:"Type de Déclencheur",keyword:"Mot-clé",all:"Tous",advanced:"Avancé",none:"Aucun"},triggerOperator:{label:"Opérateur de Déclencheur",contains:"Contient",equals:"Égal",startsWith:"Commence Par",endsWith:"Se Termine Par",regex:"Regex"},triggerValue:{label:"Déclencheur"},triggerConditions:{label:"Conditions"},difyIdFallback:{label:"Fallback de Dify"},generalSettings:{label:"Paramètres Généraux"},expire:{label:"Expirer en minutes"},keywordFinish:{label:"Mot-clé de Fin"},delayMessage:{label:"Message de Délai par Défaut"},unknownMessage:{label:"Message Inconnu"},listeningFromMe:{label:"Écouter de Moi",description:"Écouter les messages envoyés par moi sur le bot"},stopBotFromMe:{label:"Arrêter le Bot de Moi",description:"Mettre en pause le bot quand j'envoie un message"},keepOpen:{label:"Garder Ouvert",description:"Garder le bot ouvert après la fin de la conversation"},debounceTime:{label:"Temps de Déclenchement"},splitMessages:{label:"Diviser les Messages",description:"Diviser les messages en plusieurs messages"},timePerChar:{label:"Temps par Caractère"},ignoreJids:{label:"Ignorer les JIDs",placeholder:"Ajouter des JIDs ex: 1234567890@s.whatsapp.net et appuyez sur entrer"}},button:{create:"Dify",save:"Enregistrer",saving:"Enregistrement...",update:"Mettre à jour",defaultSettings:"Paramètres par Défaut",delete:"Supprimer"},modal:{defaultSettings:{title:"Paramètres par Défaut"}}},ole={title:"n8n",sessions:{label:"Sessions",search:"Rechercher par remoteJid...",table:{remoteJid:"RemoteJid",pushName:"Push Name",sessionId:"Session ID",status:"Statut",actions:{title:"Actions",open:"Ouvrir",pause:"Pause",close:"Fermer",delete:"Supprimer"},none:"Rien à afficher"}},defaultSettings:"Paramètres par défaut",toast:{defaultSettings:{success:"Paramètres par défaut appliqués avec succès",error:"Une erreur s'est produite lors de l'application des paramètres par défaut"},success:{update:"n8n mis à jour avec succès",create:"n8n créé avec succès",delete:"n8n supprimé avec succès",status:"Statut de n8n mis à jour avec succès"},error:"Une erreur s'est produite lors de la création du chatbot n8n"},table:{none:"Rien à afficher"},form:{title:"Nouveau chatbot n8n",examples:{keywordFinish:"#FINISH",unknownMessage:"Désolé, je n'ai pas compris. Pouvez-vous réessayer ?"},enabled:{label:"Activé"},description:{label:"Description"},n8nSettings:{label:"Paramètres n8n"},webhookUrl:{label:"URL du Webhook"},basicAuth:{label:"Basic Auth (Optionnel)"},basicAuthUser:{label:"Basic Auth User"},basicAuthPass:{label:"Basic Auth Password"},triggerSettings:{label:"Paramètres du déclencheur"},triggerType:{label:"Type de déclencheur",keyword:"Mot-clé",all:"Tous",advanced:"Avancé",none:"Aucun"},triggerOperator:{label:"Opérateur de déclencheur",contains:"Contient",equals:"Égal",startsWith:"Commence par",endsWith:"Se termine par",regex:"Regex"},triggerValue:{label:"Déclencheur"},triggerConditions:{label:"Conditions"},n8nIdFallback:{label:"Fallback n8n"},generalSettings:{label:"Paramètres généraux"},expire:{label:"Expire en minutes"},keywordFinish:{label:"Mot-clé de fin"},delayMessage:{label:"Message de délai par défaut"},unknownMessage:{label:"Message inconnu"},listeningFromMe:{label:"Écouter mes messages",description:"Écouter les messages envoyés par moi sur le bot"},stopBotFromMe:{label:"Arrêter le bot de ma part",description:"Mettre en pause le bot lorsque j'envoie un message"},keepOpen:{label:"Maintenir ouvert",description:"Maintenir le bot ouvert après la fin de la conversation"},debounceTime:{label:"Temps de debounce"},splitMessages:{label:"Diviser les messages",description:"Diviser les messages en plusieurs messages"},timePerChar:{label:"Temps par caractère"},ignoreJids:{label:"Ignorer les JIDs",placeholder:"Ajouter des JIDs ex: 1234567890@s.whatsapp.net et appuyer sur entrée"}},button:{create:"n8n",save:"Enregistrer",saving:"Enregistrement...",update:"Mettre à jour",defaultSettings:"Paramètres par défaut",delete:"Supprimer"},modal:{defaultSettings:{title:"Paramètres par défaut"}}},ile={title:"EvoAI",sessions:{label:"Sessions",search:"Rechercher par remoteJid...",table:{remoteJid:"RemoteJid",pushName:"Push Name",sessionId:"Session ID",status:"Statut",actions:{title:"Actions",open:"Ouvrir",pause:"Pause",close:"Fermer",delete:"Supprimer"},none:"Rien à afficher"}},defaultSettings:"Paramètres par défaut",toast:{defaultSettings:{success:"Paramètres par défaut appliqués avec succès",error:"Une erreur s'est produite lors de l'application des paramètres par défaut"},success:{update:"EvoAI mis à jour avec succès",create:"EvoAI créé avec succès",delete:"EvoAI supprimé avec succès",status:"Statut de EvoAI mis à jour avec succès"},error:"Une erreur s'est produite lors de la création du chatbot EvoAI"},table:{none:"Rien à afficher"},form:{title:"Nouveau chatbot EvoAI",examples:{keywordFinish:"#FINISH",unknownMessage:"Désolé, je n'ai pas compris. Pouvez-vous réessayer ?"},enabled:{label:"Activé"},description:{label:"Description"},evoaiSettings:{label:"Paramètres EvoAI"},agentUrl:{label:"URL de l'agent"},apiKey:{label:"API Key (Optionnel)"},triggerSettings:{label:"Paramètres du déclencheur"},triggerType:{label:"Type de déclencheur",keyword:"Mot-clé",all:"Tous",advanced:"Avancé",none:"Aucun"},triggerOperator:{label:"Opérateur de déclencheur",contains:"Contient",equals:"Égal",startsWith:"Commence par",endsWith:"Se termine par",regex:"Regex"},triggerValue:{label:"Déclencheur"},triggerConditions:{label:"Conditions"},evoaiIdFallback:{label:"Fallback EvoAI"},generalSettings:{label:"Paramètres généraux"},expire:{label:"Expire en minutes"},keywordFinish:{label:"Mot-clé de fin"},delayMessage:{label:"Message de délai par défaut"},unknownMessage:{label:"Message inconnu"},listeningFromMe:{label:"Écouter mes messages",description:"Écouter les messages envoyés par moi sur le bot"},stopBotFromMe:{label:"Arrêter le bot de ma part",description:"Mettre en pause le bot lorsque j'envoie un message"},keepOpen:{label:"Maintenir ouvert",description:"Maintenir le bot ouvert après la fin de la conversation"},debounceTime:{label:"Temps de debounce"},splitMessages:{label:"Diviser les messages",description:"Diviser les messages en plusieurs messages"},timePerChar:{label:"Temps par caractère"},ignoreJids:{label:"Ignorer les JIDs",placeholder:"Ajouter des JIDs ex: 1234567890@s.whatsapp.net et appuyer sur entrée"}},button:{create:"EvoAI",save:"Enregistrer",saving:"Enregistrement...",update:"Mettre à jour",defaultSettings:"Paramètres par défaut",delete:"Supprimer"},modal:{defaultSettings:{title:"Paramètres par défaut"}}},lle={title:"Bots Evolution",sessions:{label:"Sessions",search:"Rechercher par remoteJid...",table:{remoteJid:"RemoteJid",pushName:"Nom d'Affichage",sessionId:"ID de Session",status:"Statut",actions:{title:"Actions",open:"Ouvrir",pause:"Pause",close:"Fermer",delete:"Supprimer"},none:"Rien à afficher"}},defaultSettings:"Paramètres par Défaut",toast:{defaultSettings:{success:"Paramètres par défaut appliqués avec succès",error:"Une erreur est survenue lors de l'application des paramètres par défaut"},success:{update:"Bots Evolution mis à jour avec succès",create:"Bots Evolution créé avec succès",delete:"Bots Evolution supprimé avec succès",status:"Statut de Bots Evolution mis à jour avec succès"},error:"Une erreur est survenue lors de la création de Bots Evolution"},table:{none:"Rien à afficher"},form:{title:"Nouveau Bots Evolution",examples:{keywordFinish:"#FINISH",unknownMessage:"Désolé, je n'ai pas compris. Pouvez-vous réessayer ?"},enabled:{label:"Activé"},description:{label:"Description"},evolutionBotSettings:{label:"Paramètres de Bots Evolution"},apiUrl:{label:"URL de l'API"},apiKey:{label:"Clé API"},triggerSettings:{label:"Paramètres de Déclencheur"},triggerType:{label:"Type de Déclencheur",keyword:"Mot-clé",all:"Tous",advanced:"Avancé",none:"Aucun"},triggerOperator:{label:"Opérateur de Déclencheur",contains:"Contient",equals:"Égal",startsWith:"Commence Par",endsWith:"Se Termine Par",regex:"Regex"},triggerValue:{label:"Déclencheur"},triggerConditions:{label:"Conditions"},botIdFallback:{label:"Fallback de Bots Evolution"},generalSettings:{label:"Paramètres Généraux"},expire:{label:"Expirer en minutes"},keywordFinish:{label:"Mot-clé de Fin"},delayMessage:{label:"Message de Délai par Défaut"},unknownMessage:{label:"Message Inconnu"},listeningFromMe:{label:"Écouter de Moi",description:"Écouter les messages envoyés par moi sur le bot"},stopBotFromMe:{label:"Arrêter le Bot de Moi",description:"Mettre en pause le bot quand j'envoie un message"},keepOpen:{label:"Garder Ouvert",description:"Garder le bot ouvert après la fin de la conversation"},debounceTime:{label:"Temps de Déclenchement"},splitMessages:{label:"Diviser les Messages",description:"Diviser les messages en plusieurs messages"},timePerChar:{label:"Temps par Caractère"},ignoreJids:{label:"Ignorer les JIDs",placeholder:"Ajouter des JIDs ex: 1234567890@s.whatsapp.net et appuyez sur entrer"}},button:{create:"Bots Evolution",save:"Enregistrer",saving:"Enregistrement...",update:"Mettre à jour",defaultSettings:"Paramètres par Défaut",delete:"Supprimer"},modal:{defaultSettings:{title:"Paramètres par Défaut"}}},cle={title:"Flowise",sessions:{label:"Sessions",search:"Rechercher par remoteJid...",table:{remoteJid:"RemoteJid",pushName:"Nom d'Affichage",sessionId:"ID de Session",status:"Statut",actions:{title:"Actions",open:"Ouvrir",pause:"Pause",close:"Fermer",delete:"Supprimer"},none:"Rien à afficher"}},defaultSettings:"Paramètres par Défaut",toast:{defaultSettings:{success:"Paramètres par défaut appliqués avec succès",error:"Une erreur est survenue lors de l'application des paramètres par défaut"},success:{update:"Flowise mis à jour avec succès",create:"Flowise créé avec succès",delete:"Flowise supprimé avec succès",status:"Statut de Flowise mis à jour avec succès"},error:"Une erreur est survenue lors de la création de Flowise"},table:{none:"Rien à afficher"},form:{title:"Nouveau Flowise",examples:{keywordFinish:"#FINISH",unknownMessage:"Désolé, je n'ai pas compris. Pouvez-vous réessayer ?"},enabled:{label:"Activé"},description:{label:"Description"},flowiseSettings:{label:"Paramètres de Flowise"},apiUrl:{label:"URL de l'API"},apiKey:{label:"Clé API"},triggerSettings:{label:"Paramètres de Déclencheur"},triggerType:{label:"Type de Déclencheur",keyword:"Mot-clé",all:"Tous",advanced:"Avancé",none:"Aucun"},triggerOperator:{label:"Opérateur de Déclencheur",contains:"Contient",equals:"Égal",startsWith:"Commence Par",endsWith:"Se Termine Par",regex:"Regex"},triggerValue:{label:"Déclencheur"},triggerConditions:{label:"Conditions"},flowiseIdFallback:{label:"Fallback de Flowise"},generalSettings:{label:"Paramètres Généraux"},expire:{label:"Expirer en minutes"},keywordFinish:{label:"Mot-clé de Fin"},delayMessage:{label:"Message de Délai par Défaut"},unknownMessage:{label:"Message Inconnu"},listeningFromMe:{label:"Écouter de Moi",description:"Écouter les messages envoyés par moi sur le bot"},stopBotFromMe:{label:"Arrêter le Bot de Moi",description:"Mettre en pause le bot quand j'envoie un message"},keepOpen:{label:"Garder Ouvert",description:"Garder le bot ouvert après la fin de la conversation"},debounceTime:{label:"Temps de Déclenchement"},splitMessages:{label:"Diviser les Messages",description:"Diviser les messages en plusieurs messages"},timePerChar:{label:"Temps par Caractère"},ignoreJids:{label:"Ignorer les JIDs",placeholder:"Ajouter des JIDs ex: 1234567890@s.whatsapp.net et appuyez sur entrer"}},button:{create:"Flowise",save:"Enregistrer",saving:"Enregistrement...",update:"Mettre à jour",defaultSettings:"Paramètres par Défaut",delete:"Supprimer"},modal:{defaultSettings:{title:"Paramètres par Défaut"}}},ule={search:"Rechercher des conversations...",back:"Retour",tabs:{contacts:"Contacts",groups:"Groupes"},count_one:"{{count}} conversation",count_other:"{{count}} conversations",empty:{default:"Aucune conversation pour le moment",search:"Aucune conversation trouvée",tryAnother:"Essayez un autre terme",selectTitle:"Sélectionnez une conversation",selectDescription:"Choisissez un contact ou un groupe dans la liste pour commencer"},input:{placeholder:"Tapez un message...",send:"Envoyer"},date:{today:"Aujourd'hui",yesterday:"Hier"}},dle={search:"Rechercher..."},fle={title:"Envoyer un Message",description:"Envoyez un message texte depuis l'instance",validation:{numberRequired:"Le numéro est obligatoire",messageRequired:"Le message est obligatoire"},form:{number:{label:"Numéro (avec indicatif pays)"},message:{label:"Message",placeholder:"Saisissez votre message..."}},button:{send:"Envoyer",sending:"Envoi..."},toast:{success:"Message envoyé avec succès",error:"Erreur lors de l'envoi du message",noToken:"Jeton d'instance non disponible"}},ple={title:"Connecter via QR Code",description:"Scannez le QR Code pour connecter l'instance",generating:"Génération du QR Code...",waiting:"En attente du QR Code...",connected:{title:"Instance connectée",description:"L'instance {{instanceName}} est déjà connectée",connectedAs:"Connecté en tant que"},pairingCode:{title:"Connecter avec code de jumelage",label:"Code de jumelage",generate:"Générer le code",generating:"Génération...",hint:"Entrez le numéro avec indicatif pays (ex: 5511999999999) pour recevoir un code de jumelage"},howTo:{title:"Comment se connecter :",step1:"Ouvrez WhatsApp sur votre téléphone",step2:"Appuyez sur Menu ou Paramètres",step3:"Sélectionnez Appareils connectés",step4:"Appuyez sur Connecter un appareil",step5:"Pointez votre caméra sur le QR Code"},button:{refresh:"Actualiser le QR Code",refreshing:"Actualisation...",close:"Fermer"},toast:{pairingSuccess:"Code de jumelage généré",pairingError:"Erreur lors de la génération du code de jumelage",refreshSuccess:"QR Code actualisé",refreshError:"Erreur lors de l'actualisation du QR Code"}},hle={title:"Nouvelle Instance",description:"Créez une nouvelle instance pour vous connecter à WhatsApp",validation:{nameMin:"Le nom doit contenir au moins 3 caractères",nameMax:"Le nom doit contenir au maximum 50 caractères",nameFormat:"Le nom ne peut contenir que des lettres, chiffres, tirets et underscores"},form:{name:{label:"Nom de l'Instance",placeholder:"mon-instance",hint:"Utilisez des lettres, chiffres, tiret (-) ou underscore (_)"},token:{label:"Jeton (optionnel)",placeholder:"Laissez vide pour générer automatiquement",hint:"Si non fourni, un UUID sera généré automatiquement"}},proxy:{title:"Configurer Proxy (optionnel)",host:{label:"Hôte",placeholder:"proxy.exemple.com"},port:{label:"Port"},username:{label:"Utilisateur",placeholder:"utilisateur"},password:{label:"Mot de passe",placeholder:"••••••••"}},button:{create:"Créer l'Instance",creating:"Création..."}},mle={loading:"Chargement...",noResults:"Aucun résultat trouvé !"},gle={dashboard:Fie,button:Lie,testInteractive:$ie,sessions:Bie,modal:zie,status:Uie,footer:Vie,header:qie,sidebar:Hie,toast:Kie,license:Wie,login:Gie,instance:Jie,settings:Qie,proxy:Yie,webhook:Zie,websocket:Xie,rabbitmq:ele,sqs:tle,chatwoot:nle,typebot:rle,openai:sle,dify:ale,n8n:ole,evoai:ile,evolutionBot:lle,flowise:cle,chat:ule,common:dle,sendMessage:fle,qrCode:ple,newInstance:hle,table:mle},vle={title:"Instâncias",subtitle:"Gerencie suas instâncias WhatsApp",search:"Pesquisar",status:"Status",settings:"Configurações",instancesNotFound:"Nenhuma instância encontrada",card:{phone:"Número"},empty:{title:"Nenhuma instância encontrada",description:"Crie sua primeira instância para começar"}},yle={delete:"Excluir",deleting:"Excluindo...",cancel:"Cancelar",refresh:"Atualizar",markAll:"Marcar Todos",unMarkAll:"Desmarcar Todos"},ble={title:"Testar mensagens interativas",subtitle:"Instância: {{instance}} ·",number:"Número de destino",numberHint:"Com DDI/DDD, somente dígitos (ex.: 5511999999999)",payload:"Payload JSON (editável)",send:"Enviar",sending:"Enviando...",requiresOpen:"Disponível apenas com a instância conectada",tabs:{reply:"Reply",cta:"CTA",pix:"PIX",list:"Lista",carousel:"Carrossel"},success:"Mensagem enviada (id {{id}})",errors:{missingNumber:"Informe o número de destino",invalidJson:"JSON inválido: {{message}}",unknown:"Falha ao enviar a mensagem"}},xle={filters:{title:"Filtros avançados",name:"Filtrar por nome",namePlaceholder:"Filtrar por nome",number:"Filtrar por número",numberPlaceholder:"Filtrar por número",status:"Filtrar por status",time:"Filtrar por tempo",apply:"Aplicar filtros",clear:"Limpar",statusOptions:{all:"Todos os status",opened:"Aberta",paused:"Pausada",closed:"Fechada"},timeOptions:{5:"Últimos 5 minutos",10:"Últimos 10 minutos",15:"Últimos 15 minutos",20:"Últimos 20 minutos",30:"Últimos 30 minutos",60:"Últimos 60 minutos",all:"Qualquer momento",">60":"Mais de 60 minutos",">120":"Mais de 2 horas",">300":"Mais de 5 horas",">1440":"Mais de 24 horas",custom:"Personalizado"},custom:{more:"Mais que",less:"Menos que",valuePlaceholder:"Valor",minutes:"Minutos",hours:"Horas",days:"Dias"}},mass:{title:"Ações em massa",selectAll:"Selecionar todos",selected:"{{count}} selecionada(s)",newStatus:"Novo status",apply:"Aplicar a selecionadas",noneSelected:"Selecione pelo menos uma sessão",success:"Status atualizado nas sessões selecionadas",error:"Erro ao atualizar status em massa"},pagination:{showing:"Mostrando {{shown}} de {{total}}",perPage:"Por página",showMore:"Carregar mais",showAll:"Mostrar todas",showLess:"Mostrar menos"},send:{title:"Enviar mensagem",to:"Para",messagePlaceholder:"Digite sua mensagem",send:"Enviar",sending:"Enviando...",empty:"Digite uma mensagem antes de enviar",success:"Mensagem enviada com sucesso",error:"Erro ao enviar mensagem"},actions:{sendMessage:"Enviar mensagem"},empty:"Nenhuma sessão encontrada"},wle={delete:{title:"Excluir Registro",message:"Você está excluindo a instância {{instanceName}}. Tem certeza que deseja continuar?",messageSingle:"Esta ação não pode ser desfeita.",confirm:"Digite o nome da instância para confirmar:"}},Sle={all:"Todos",open:"Conectado",connecting:"Conectando",closed:"Desconectado"},Cle={clientName:"Nome do Cliente",version:"Versão"},jle={theme:{label:"Mudar Tema",light:"Claro",dark:"Escuro",system:"Sistema"},language:{label:"Idioma",english:"Inglês",portuguese:"Português",spanish:"Espanhol",french:"Francês"},logout:{action:"Sair",title:"Deseja realmente sair?",description:"Você será desconectado e redirecionado para a tela de login."}},kle={dashboard:"Visão Geral",configurations:"Configurações",settings:"Comportamento",proxy:"Proxy",events:"Eventos",webhook:"Webhook",websocket:"WebSocket",rabbitmq:"RabbitMQ",sqs:"SQS",integrations:"Integrações",chatwoot:"Chatwoot",typebot:"Typebot",openai:"OpenAI",dify:"Dify",evoai:"EvoAI",n8n:"n8n",evolutionBot:"Bot Evolution",flowise:"Flowise",documentation:"Documentação",postman:"Postman",discord:"Discord"},Ele={instance:{created:"Instância criada com sucesso",deleted:"Instância excluída com sucesso",error:"Ocorreu um erro ao criar a instância"}},Nle={checking:"Verificando licença...",required:"Licença necessária",redirecting:"Redirecionando para o registro de licença...",registerFailed:"Falha ao iniciar o registro de licença",callback:{title:"Ativando licença",missingCode:"Código de autorização não encontrado na URL",missingCredentials:"Credenciais não encontradas. Faça login novamente.",activating:"Aguarde enquanto ativamos sua licença.",successTitle:"Licença ativada!",successDescription:"Redirecionando...",errorTitle:"Erro na ativação",retry:"Tentar novamente",back:"Voltar ao login",genericError:"Falha ao ativar a licença"}},Tle={title:"Evolution Manager",description:"Por favor, faça login para continuar",subtitle:"Digite suas credenciais para acessar o sistema",form:{serverUrl:"URL do Servidor",apiKey:"Chave de API Global"},message:{invalidServer:"Servidor inválido",invalidCredentials:"Credenciais inválidas"},button:{login:"Conectar",connecting:"Conectando..."}},Mle={modal:{title:"Nova Instância"},form:{name:"Nome",integration:{label:"Canal",baileys:"Baileys",whatsapp:"WhatsApp Cloud API",facebook:"Facebook",instagram:"Instagram",evolution:"Evolution"},token:"Token",number:"Número",businessId:"Business ID"},button:{save:"Salvar",saving:"Salvando...",create:"Instância",connecting:"Conectando...",facebook:"Conectar com Facebook",instagram:"Conectar com Instagram",whatsapp:"Conectar com WhatsApp"},dashboard:{subtitle:"Gerencie sua instância",button:{qrcode:{label:"Gerar QR Code",title:"Scaneie o QR Code com o WhatsApp"},pairingCode:{label:"Gerar Código de Pareamento",title:"Faça o pareamento com o WhatsApp"},restart:"Reiniciar",disconnect:"Desconectar",sendMessage:"Enviar mensagem"},alert:"Para conectar, escaneie o QR Code com o WhatsApp",contacts:"Contatos",chats:"Chats",messages:"Mensagens"}},_le={title:"Comportamento",toast:{success:"Comportamento aplicado com sucesso",error:"Ocorreu um erro ao aplicar o comportamento"},form:{rejectCall:{label:"Rejeitar Chamadas",description:"Rejeitar todas as chamadas"},msgCall:{label:"Mensagem de Rejeição de Chamada",description:"Enviar mensagem de rejeição de chamada"},groupsIgnore:{label:"Ignorar Grupos",description:"Ignorar todas as mensagens de grupos"},alwaysOnline:{label:"Sempre Online",description:"Permanecer sempre online"},readMessages:{label:"Visualizar Mensagens",description:"Marcar todas as mensagens como lidas"},syncFullHistory:{label:"Sincronizar Histórico Completo",description:"Sincronizar o histórico completo ao ler o QR Code"},readStatus:{label:"Visualizar Status",description:"Marcar todos os status como visualizados"}},button:{save:"Salvar",saving:"Salvando..."}},Rle={title:"Proxy",toast:{success:"Proxy aplicado com sucesso",error:"Ocorreu um erro ao aplicar o proxy"},form:{enabled:{label:"Ativo",description:"Ativar ou desativar o proxy"},protocol:{label:"Protocolo"},host:{label:"Host"},port:{label:"Porta"},username:{label:"Usuário"},password:{label:"Senha"}},button:{save:"Salvar",saving:"Salvando..."}},Ple={title:"Webhook",toast:{success:"Webhook aplicado com sucesso",error:"Ocorreu um erro ao aplicar o webhook"},form:{enabled:{label:"Ativo",description:"Ativar ou desativar o webhook"},url:{label:"URL"},byEvents:{label:"Webhook por Eventos",description:"Criar uma rota para cada evento adicionando o nome do evento ao final da URL"},base64:{label:"Webhook Base64",description:"Enviar dados de mídia em base64 no webhook"},events:{label:"Eventos"}},button:{save:"Salvar",saving:"Salvando..."}},Ile={title:"WebSocket",toast:{success:"WebSocket aplicado com sucesso",error:"Ocorreu um erro ao aplicar o WebSocket"},form:{enabled:{label:"Ativo",description:"Ativar ou desativar o WebSocket"},events:{label:"Eventos"}},button:{save:"Salvar",saving:"Salvando..."}},Ole={title:"RabbitMQ",toast:{success:"RabbitMQ aplicado com sucesso",error:"Ocorreu um erro ao aplicar o RabbitMQ"},form:{enabled:{label:"Ativo",description:"Ativar ou desativar o RabbitMQ"},events:{label:"Eventos"}},button:{save:"Salvar",saving:"Salvando..."}},Ale={title:"SQS",toast:{success:"SQS aplicado com sucesso",error:"Ocorreu um erro ao aplicar o SQS"},form:{enabled:{label:"Ativo",description:"Ativar ou desativar o SQS"},events:{label:"Eventos"}},button:{save:"Salvar",saving:"Salvando..."}},Dle={title:"Chatwoot",toast:{success:"Chatwoot aplicado com sucesso",error:"Ocorreu um erro ao aplicar o Chatwoot"},form:{enabled:{label:"Ativo",description:"Ativar ou desativar o Chatwoot"},url:{label:"URL do Chatwoot"},accountId:{label:"ID da Conta"},token:{label:"Token"},signMsg:{label:"Assinar Mensagens",description:"Assinar mensagem com o nome de usuário do Chatwoot"},signDelimiter:{label:"Delimitador de Assinatura"},nameInbox:{label:"Nome da Caixa de Entrada"},organization:{label:"Organização"},logo:{label:"Logo"},conversationPending:{label:"Conversação Pendente",description:"Conversas começam como pendentes"},reopenConversation:{label:"Reabrir Conversa",description:"Reabrir a conversa ao receber uma mensagem"},importContacts:{label:"Importar Contatos",description:"Importar contatos da agenda do WhatsApp ao conectar o QR Code"},importMessages:{label:"Importar Mensagens",description:"Importar mensagens do WhatsApp ao conectar o QR Code"},daysLimitImportMessages:{label:"Limite de Dias para Importação de Mensagens"},ignoreJids:{label:"Ignorar JIDs",placeholder:"Adicione JIDs ex: 1234567890@s.whatsapp.net e pressione enter"},autoCreate:{label:"Criação Automática",description:"Criar automaticamente a integração com o Chatwoot ao salvar"}},button:{save:"Salvar",saving:"Salvando..."}},Fle={title:"Typebots",sessions:{label:"Sessões",search:"Pesquisar por remoteJid...",table:{remoteJid:"RemoteJid",pushName:"Nome de Exibição",sessionId:"ID da Sessão",status:"Status",actions:{title:"Ações",open:"Abrir",pause:"Pausar",close:"Fechar",delete:"Excluir"},none:"Nada para mostrar"}},defaultSettings:"Configurações Padrão",toast:{defaultSettings:{success:"Configurações padrão aplicadas com sucesso",error:"Ocorreu um erro ao aplicar as configurações padrão"},success:{update:"Typebot atualizado com sucesso",create:"Typebot criado com sucesso",delete:"Typebot excluído com sucesso",status:"Status do Typebot atualizado com sucesso"},error:"Ocorreu um erro ao criar o Typebot"},table:{none:"Nada para mostrar"},form:{title:"Novo Typebot",examples:{keywordFinish:"#FINISH",unknownMessage:"Desculpe, não entendi. Pode tentar novamente?"},enabled:{label:"Ativo"},description:{label:"Descrição"},typebotSettings:{label:"Configurações do Typebot"},url:{label:"URL da API do Typebot"},typebot:{label:"Nome Público do Typebot"},triggerSettings:{label:"Configurações de Gatilho"},triggerType:{label:"Tipo de Gatilho",keyword:"Palavra-chave",all:"Todos",advanced:"Avançado",none:"Nenhum"},triggerOperator:{label:"Operador do Gatilho",contains:"Contém",equals:"Igual",startsWith:"Começa Com",endsWith:"Termina Com",regex:"Regex"},triggerValue:{label:"Gatilho"},triggerConditions:{label:"Condições"},typebotIdFallback:{label:"Fallback do Typebot"},generalSettings:{label:"Configurações Gerais"},expire:{label:"Expirar em minutos"},keywordFinish:{label:"Palavra-chave de Finalização"},delayMessage:{label:"Mensagem de Atraso Padrão"},unknownMessage:{label:"Mensagem Desconhecida"},listeningFromMe:{label:"Ouvindo de mim",description:"Ouvir as mensagens enviadas por mim no bot"},stopBotFromMe:{label:"Parar bot por mim",description:"Pausar o bot quando eu enviar uma mensagem"},keepOpen:{label:"Manter aberto",description:"Manter o bot aberto após o término da conversa"},debounceTime:{label:"Tempo de Debounce"},splitMessages:{label:"Dividir Mensagens",description:"Dividir mensagens longas em várias mensagens"},timePerChar:{label:"Tempo por Caractere"},ignoreJids:{label:"Ignorar JIDs",placeholder:"Adicione JIDs ex: 1234567890@s.whatsapp.net e pressione enter"}},button:{create:"Typebot",save:"Salvar",saving:"Salvando...",update:"Atualizar",defaultSettings:"Configurações Padrão",delete:"Excluir"},modal:{defaultSettings:{title:"Configurações Padrão"}}},Lle={title:"OpenAI",sessions:{label:"Sessões",search:"Pesquisar por remoteJid...",table:{remoteJid:"RemoteJid",pushName:"Nome de Exibição",sessionId:"ID da Sessão",status:"Status",actions:{title:"Ações",open:"Abrir",pause:"Pausar",close:"Fechar",delete:"Excluir"},none:"Nada para mostrar"}},credentials:{title:"Credenciais",table:{name:"Nome",apiKey:"Chave de API",actions:{title:"Ações",delete:"Excluir"},none:"Nada para mostrar"}},defaultSettings:"Configurações Padrão",toast:{defaultSettings:{success:"Configurações padrão aplicadas com sucesso",error:"Ocorreu um erro ao aplicar as configurações padrão"},success:{update:"OpenAI atualizado com sucesso",create:"OpenAI criado com sucesso",delete:"OpenAI excluído com sucesso",status:"Status do OpenAI atualizado com sucesso",credentialsCreate:"Credenciais do OpenAI criadas com sucesso",credentialsDelete:"Credenciais do OpenAI excluídas com sucesso"},error:"Ocorreu um erro ao criar o OpenAI"},table:{none:"Nada para mostrar"},form:{title:"Novo OpenAI",examples:{keywordFinish:"#FINISH",unknownMessage:"Desculpe, não entendi. Pode tentar novamente?"},openaiCredsId:{label:"Credenciais do OpenAI"},enabled:{label:"Ativo"},description:{label:"Descrição"},openaiSettings:{label:"Configurações do OpenAI"},botType:{label:"Tipo de Bot",assistant:"Assistente",chatCompletion:"Chat Completion"},assistantId:{label:"ID do Assistente"},functionUrl:{label:"URL da Função"},model:{label:"Modelo de Linguagem"},systemMessages:{label:"Mensagens do Sistema",description:"Enviar mensagens do sistema para o OpenAI"},assistantMessages:{label:"Mensagens do Assistente",description:"Enviar mensagens do assistente para o OpenAI"},userMessages:{label:"Mensagens do Usuário",description:"Enviar mensagens do usuário para o OpenAI"},maxTokens:{label:"Máximo de Tokens"},triggerSettings:{label:"Configurações de Gatilho"},triggerType:{label:"Tipo de Gatilho",keyword:"Palavra-chave",all:"Todos",advanced:"Avançado",none:"Nenhum"},triggerOperator:{label:"Operador do Gatilho",contains:"Contém",equals:"Igual",startsWith:"Começa Com",endsWith:"Termina Com",regex:"Regex"},triggerValue:{label:"Gatilho"},triggerConditions:{label:"Condições"},openaiIdFallback:{label:"Fallback do OpenAI"},generalSettings:{label:"Configurações Gerais"},expire:{label:"Expirar em minutos"},keywordFinish:{label:"Palavra-chave de Finalização"},delayMessage:{label:"Mensagem de Atraso Padrão"},unknownMessage:{label:"Mensagem Desconhecida"},listeningFromMe:{label:"Ouvindo de mim",description:"Ouvir as mensagens enviadas por mim no bot"},stopBotFromMe:{label:"Parar bot por mim",description:"Pausar o bot quando eu enviar uma mensagem"},keepOpen:{label:"Manter aberto",description:"Manter o bot aberto após o término da conversa"},speechToText:{label:"Fala para Texto",description:"Converter mensagens de voz em texto"},debounceTime:{label:"Tempo de Debounce"},splitMessages:{label:"Dividir Mensagens",description:"Dividir mensagens longas em várias mensagens"},timePerChar:{label:"Tempo por Caractere"},ignoreJids:{label:"Ignorar JIDs",placeholder:"Adicione JIDs ex: 1234567890@s.whatsapp.net e pressione enter"}},button:{create:"OpenAI",save:"Salvar",saving:"Salvando...",update:"Atualizar",defaultSettings:"Configurações Padrão",delete:"Excluir",loadModels:"Carregar Modelos",loading:"Carregando..."},modal:{defaultSettings:{title:"Configurações Padrão"}}},$le={title:"Dify",sessions:{label:"Sessões",search:"Pesquisar por remoteJid...",table:{remoteJid:"RemoteJid",pushName:"Nome de Exibição",sessionId:"ID da Sessão",status:"Status",actions:{title:"Ações",open:"Abrir",pause:"Pausar",close:"Fechar",delete:"Excluir"},none:"Nada para mostrar"}},defaultSettings:"Configurações Padrão",toast:{defaultSettings:{success:"Configurações padrão aplicadas com sucesso",error:"Ocorreu um erro ao aplicar as configurações padrão"},success:{update:"Dify atualizado com sucesso",create:"Dify criado com sucesso",delete:"Dify excluído com sucesso",status:"Status do Dify atualizado com sucesso"},error:"Ocorreu um erro ao criar o Dify"},table:{none:"Nada para mostrar"},form:{title:"Novo Dify",examples:{keywordFinish:"#FINISH",unknownMessage:"Desculpe, não entendi. Pode tentar novamente?"},enabled:{label:"Ativo"},description:{label:"Descrição"},difySettings:{label:"Configurações do Dify"},botType:{label:"Tipo de Bot",chatBot:"Bot de Chat",textGenerator:"Gerador de Texto",agent:"Agente",workflow:"Fluxo de Trabalho"},apiUrl:{label:"URL da API"},apiKey:{label:"Chave de API"},triggerSettings:{label:"Configurações de Gatilho"},triggerType:{label:"Tipo de Gatilho",keyword:"Palavra-chave",all:"Todos",advanced:"Avançado",none:"Nenhum"},triggerOperator:{label:"Operador do Gatilho",contains:"Contém",equals:"Igual",startsWith:"Começa Com",endsWith:"Termina Com",regex:"Regex"},triggerValue:{label:"Gatilho"},triggerConditions:{label:"Condições"},difyIdFallback:{label:"Fallback do Dify"},generalSettings:{label:"Configurações Gerais"},expire:{label:"Expirar em minutos"},keywordFinish:{label:"Palavra-chave de Finalização"},delayMessage:{label:"Mensagem de Atraso Padrão"},unknownMessage:{label:"Mensagem Desconhecida"},listeningFromMe:{label:"Ouvindo de mim",description:"Ouvir as mensagens enviadas por mim no bot"},stopBotFromMe:{label:"Parar bot por mim",description:"Pausar o bot quando eu enviar uma mensagem"},keepOpen:{label:"Manter aberto",description:"Manter o bot aberto após o término da conversa"},debounceTime:{label:"Tempo de Debounce"},splitMessages:{label:"Dividir Mensagens",description:"Dividir mensagens longas em várias mensagens"},timePerChar:{label:"Tempo por Caractere"},ignoreJids:{label:"Ignorar JIDs",placeholder:"Adicione JIDs ex: 1234567890@s.whatsapp.net e pressione enter"}},button:{create:"Dify",save:"Salvar",saving:"Salvando...",update:"Atualizar",defaultSettings:"Configurações Padrão",delete:"Excluir"},modal:{defaultSettings:{title:"Configurações Padrão"}}},Ble={title:"n8n",sessions:{label:"Sessões",search:"Buscar por remoteJid...",table:{remoteJid:"RemoteJid",pushName:"Push Name",sessionId:"Session ID",status:"Status",actions:{title:"Ações",open:"Abrir",pause:"Pausar",close:"Fechar",delete:"Excluir"},none:"Nada para mostrar"}},defaultSettings:"Configurações Padrão",toast:{defaultSettings:{success:"Configurações padrão aplicadas com sucesso",error:"Ocorreu um erro ao aplicar as configurações padrão"},success:{update:"n8n atualizado com sucesso",create:"n8n criado com sucesso",delete:"n8n excluído com sucesso",status:"Status do n8n atualizado com sucesso"},error:"Ocorreu um erro ao criar o chatbot n8n"},table:{none:"Nada para mostrar"},form:{title:"Novo chatbot n8n",examples:{keywordFinish:"#FINISH",unknownMessage:"Desculpe, não entendi. Pode tentar novamente?"},enabled:{label:"Ativado"},description:{label:"Descrição"},n8nSettings:{label:"Configurações do n8n"},webhookUrl:{label:"URL do Webhook"},basicAuth:{label:"Basic Auth (Opcional)"},basicAuthUser:{label:"Basic Auth User"},basicAuthPass:{label:"Basic Auth Password"},triggerSettings:{label:"Configurações do Gatilho"},triggerType:{label:"Tipo de Gatilho",keyword:"Palavra-chave",all:"Todos",advanced:"Avançado",none:"Nenhum"},triggerOperator:{label:"Operador do Gatilho",contains:"Contém",equals:"Igual",startsWith:"Começa Com",endsWith:"Termina Com",regex:"Regex"},triggerValue:{label:"Gatilho"},triggerConditions:{label:"Condições"},n8nIdFallback:{label:"Fallback do n8n"},generalSettings:{label:"Configurações Gerais"},expire:{label:"Expirar em minutos"},keywordFinish:{label:"Palavra-chave de Finalização"},delayMessage:{label:"Mensagem de Atraso Padrão"},unknownMessage:{label:"Mensagem Desconhecida"},listeningFromMe:{label:"Ouvir de mim",description:"Ouvir mensagens enviadas por mim no bot"},stopBotFromMe:{label:"Parar bot de mim",description:"Pausar o bot quando eu enviar uma mensagem"},keepOpen:{label:"Manter aberto",description:"Manter o bot aberto após o fim da conversa"},debounceTime:{label:"Tempo de Debounce"},splitMessages:{label:"Dividir Mensagens",description:"Dividir mensagens em múltiplas mensagens"},timePerChar:{label:"Tempo por caractere"},ignoreJids:{label:"Ignorar JIDs",placeholder:"Adicionar JIDs ex: 1234567890@s.whatsapp.net e pressione enter"}},button:{create:"n8n",save:"Salvar",saving:"Salvando...",update:"Atualizar",defaultSettings:"Configurações Padrão",delete:"Excluir"},modal:{defaultSettings:{title:"Configurações Padrão"}}},zle={title:"EvoAI",sessions:{label:"Sessões",search:"Buscar por remoteJid...",table:{remoteJid:"RemoteJid",pushName:"Push Name",sessionId:"Session ID",status:"Status",actions:{title:"Ações",open:"Abrir",pause:"Pausar",close:"Fechar",delete:"Excluir"},none:"Nada para mostrar"}},defaultSettings:"Configurações Padrão",toast:{defaultSettings:{success:"Configurações padrão aplicadas com sucesso",error:"Ocorreu um erro ao aplicar as configurações padrão"},success:{update:"EvoAI atualizado com sucesso",create:"EvoAI criado com sucesso",delete:"EvoAI excluído com sucesso",status:"Status do EvoAI atualizado com sucesso"},error:"Ocorreu um erro ao criar o chatbot EvoAI"},table:{none:"Nada para mostrar"},form:{title:"Novo chatbot EvoAI",examples:{keywordFinish:"#FINISH",unknownMessage:"Desculpe, não entendi. Pode tentar novamente?"},enabled:{label:"Ativado"},description:{label:"Descrição"},evoaiSettings:{label:"Configurações do EvoAI"},agentUrl:{label:"URL do Agente"},apiKey:{label:"API Key (Opcional)"},triggerSettings:{label:"Configurações do Gatilho"},triggerType:{label:"Tipo de Gatilho",keyword:"Palavra-chave",all:"Todos",advanced:"Avançado",none:"Nenhum"},triggerOperator:{label:"Operador do Gatilho",contains:"Contém",equals:"Igual",startsWith:"Começa Com",endsWith:"Termina Com",regex:"Regex"},triggerValue:{label:"Gatilho"},triggerConditions:{label:"Condições"},evoaiIdFallback:{label:"Fallback do EvoAI"},generalSettings:{label:"Configurações Gerais"},expire:{label:"Expirar em minutos"},keywordFinish:{label:"Palavra-chave de Finalização"},delayMessage:{label:"Mensagem de Atraso Padrão"},unknownMessage:{label:"Mensagem Desconhecida"},listeningFromMe:{label:"Ouvir de mim",description:"Ouvir mensagens enviadas por mim no bot"},stopBotFromMe:{label:"Parar bot de mim",description:"Pausar o bot quando eu enviar uma mensagem"},keepOpen:{label:"Manter aberto",description:"Manter o bot aberto após o fim da conversa"},debounceTime:{label:"Tempo de Debounce"},splitMessages:{label:"Dividir Mensagens",description:"Dividir mensagens em múltiplas mensagens"},timePerChar:{label:"Tempo por caractere"},ignoreJids:{label:"Ignorar JIDs",placeholder:"Adicionar JIDs ex: 1234567890@s.whatsapp.net e pressione enter"}},button:{create:"EvoAI",save:"Salvar",saving:"Salvando...",update:"Atualizar",defaultSettings:"Configurações Padrão",delete:"Excluir"},modal:{defaultSettings:{title:"Configurações Padrão"}}},Ule={title:"Bot Evolution",sessions:{label:"Sessões",search:"Pesquisar por remoteJid...",table:{remoteJid:"RemoteJid",pushName:"Nome de Exibição",sessionId:"ID da Sessão",status:"Status",actions:{title:"Ações",open:"Abrir",pause:"Pausar",close:"Fechar",delete:"Excluir"},none:"Nada para mostrar"}},defaultSettings:"Configurações Padrão",toast:{defaultSettings:{success:"Configurações padrão aplicadas com sucesso",error:"Ocorreu um erro ao aplicar as configurações padrão"},success:{update:"Bot Evolution atualizado com sucesso",create:"Bot Evolution criado com sucesso",delete:"Bot Evolution excluído com sucesso",status:"Status do Bot Evolution atualizado com sucesso"},error:"Ocorreu um erro ao criar o Bot Evolution"},table:{none:"Nada para mostrar"},form:{title:"Novo Bot Evolution",examples:{keywordFinish:"#FINISH",unknownMessage:"Desculpe, não entendi. Pode tentar novamente?"},enabled:{label:"Ativo"},description:{label:"Descrição"},evolutionBotSettings:{label:"Configurações do Bot Evolution"},apiUrl:{label:"URL da API"},apiKey:{label:"Chave de API"},triggerSettings:{label:"Configurações de Gatilho"},triggerType:{label:"Tipo de Gatilho",keyword:"Palavra-chave",all:"Todos",advanced:"Avançado",none:"Nenhum"},triggerOperator:{label:"Operador do Gatilho",contains:"Contém",equals:"Igual",startsWith:"Começa Com",endsWith:"Termina Com",regex:"Regex"},triggerValue:{label:"Gatilho"},triggerConditions:{label:"Condições"},botIdFallback:{label:"Fallback do Bot Evolution"},generalSettings:{label:"Configurações Gerais"},expire:{label:"Expirar em minutos"},keywordFinish:{label:"Palavra-chave de Finalização"},delayMessage:{label:"Mensagem de Atraso Padrão"},unknownMessage:{label:"Mensagem Desconhecida"},listeningFromMe:{label:"Ouvindo de mim",description:"Ouvir as mensagens enviadas por mim no bot"},stopBotFromMe:{label:"Parar bot por mim",description:"Pausar o bot quando eu enviar uma mensagem"},keepOpen:{label:"Manter aberto",description:"Manter o bot aberto após o término da conversa"},debounceTime:{label:"Tempo de Debounce"},splitMessages:{label:"Dividir Mensagens",description:"Dividir mensagens longas em várias mensagens"},timePerChar:{label:"Tempo por Caractere"},ignoreJids:{label:"Ignorar JIDs",placeholder:"Adicione JIDs ex: 1234567890@s.whatsapp.net e pressione enter"}},button:{create:"Bot Evolution",save:"Salvar",saving:"Salvando...",update:"Atualizar",defaultSettings:"Configurações Padrão",delete:"Excluir"},modal:{defaultSettings:{title:"Configurações Padrão"}}},Vle={title:"Flowise",sessions:{label:"Sessões",search:"Pesquisar por remoteJid...",table:{remoteJid:"RemoteJid",pushName:"Nome de Exibição",sessionId:"ID da Sessão",status:"Status",actions:{title:"Ações",open:"Abrir",pause:"Pausar",close:"Fechar",delete:"Excluir"},none:"Nada para mostrar"}},defaultSettings:"Configurações Padrão",toast:{defaultSettings:{success:"Configurações padrão aplicadas com sucesso",error:"Ocorreu um erro ao aplicar as configurações padrão"},success:{update:"Flowise atualizado com sucesso",create:"Flowise criado com sucesso",delete:"Flowise excluído com sucesso",status:"Status do Flowise atualizado com sucesso"},error:"Ocorreu um erro ao criar o Flowise"},table:{none:"Nada para mostrar"},form:{title:"Novo Flowise",examples:{keywordFinish:"#FINISH",unknownMessage:"Desculpe, não entendi. Pode tentar novamente?"},enabled:{label:"Ativo"},description:{label:"Descrição"},flowiseSettings:{label:"Configurações do Flowise"},apiUrl:{label:"URL da API"},apiKey:{label:"Chave de API"},triggerSettings:{label:"Configurações de Gatilho"},triggerType:{label:"Tipo de Gatilho",keyword:"Palavra-chave",all:"Todos",advanced:"Avançado",none:"Nenhum"},triggerOperator:{label:"Operador do Gatilho",contains:"Contém",equals:"Igual",startsWith:"Começa Com",endsWith:"Termina Com",regex:"Regex"},triggerValue:{label:"Gatilho"},triggerConditions:{label:"Condições"},flowiseIdFallback:{label:"Fallback do Flowise"},generalSettings:{label:"Configurações Gerais"},expire:{label:"Expirar em minutos"},keywordFinish:{label:"Palavra-chave de Finalização"},delayMessage:{label:"Mensagem de Atraso Padrão"},unknownMessage:{label:"Mensagem Desconhecida"},listeningFromMe:{label:"Ouvindo de mim",description:"Ouvir as mensagens enviadas por mim no bot"},stopBotFromMe:{label:"Parar bot por mim",description:"Pausar o bot quando eu enviar uma mensagem"},keepOpen:{label:"Manter aberto",description:"Manter o bot aberto após o término da conversa"},debounceTime:{label:"Tempo de Debounce"},splitMessages:{label:"Dividir Mensagens",description:"Dividir mensagens longas em várias mensagens"},timePerChar:{label:"Tempo por Caractere"},ignoreJids:{label:"Ignorar JIDs",placeholder:"Adicione JIDs ex: 1234567890@s.whatsapp.net e pressione enter"}},button:{create:"Flowise",save:"Salvar",saving:"Salvando...",update:"Atualizar",defaultSettings:"Configurações Padrão",delete:"Excluir"},modal:{defaultSettings:{title:"Configurações Padrão"}}},qle={search:"Buscar conversas...",back:"Voltar",tabs:{contacts:"Contatos",groups:"Grupos"},count_one:"{{count}} conversa",count_other:"{{count}} conversas",empty:{default:"Nenhuma conversa ainda",search:"Nenhuma conversa encontrada",tryAnother:"Tente outro termo",selectTitle:"Selecione uma conversa",selectDescription:"Escolha um contato ou grupo na lista ao lado para começar"},input:{placeholder:"Digite uma mensagem...",send:"Enviar"},date:{today:"Hoje",yesterday:"Ontem"}},Hle={search:"Buscar..."},Kle={title:"Enviar Mensagem",description:"Envie uma mensagem de texto a partir da instância",validation:{numberRequired:"Número é obrigatório",messageRequired:"Mensagem é obrigatória"},form:{number:{label:"Número (com DDI)"},message:{label:"Mensagem",placeholder:"Digite sua mensagem..."}},button:{send:"Enviar",sending:"Enviando..."},toast:{success:"Mensagem enviada com sucesso",error:"Erro ao enviar mensagem",noToken:"Token da instância não disponível"}},Wle={title:"Conectar via QR Code",description:"Escaneie o QR Code para conectar a instância",generating:"Gerando QR Code...",waiting:"Aguardando QR Code...",connected:{title:"Instância conectada",description:"A instância {{instanceName}} já está conectada",connectedAs:"Conectado como"},pairingCode:{title:"Conectar por código de pareamento",label:"Código de pareamento",generate:"Gerar código",generating:"Gerando...",hint:"Informe o número com DDI (ex: 5511999999999) para receber um código de pareamento"},howTo:{title:"Como conectar:",step1:"Abra o WhatsApp no seu celular",step2:"Toque em Menu ou Configurações",step3:"Selecione Aparelhos conectados",step4:"Toque em Conectar um aparelho",step5:"Aponte a câmera para o QR Code"},button:{refresh:"Atualizar QR Code",refreshing:"Atualizando...",close:"Fechar"},toast:{pairingSuccess:"Código de pareamento gerado",pairingError:"Erro ao gerar código de pareamento",refreshSuccess:"QR Code atualizado",refreshError:"Erro ao atualizar QR Code"}},Gle={title:"Nova Instância",description:"Crie uma nova instância para conectar ao WhatsApp",validation:{nameMin:"O nome deve ter pelo menos 3 caracteres",nameMax:"O nome deve ter no máximo 50 caracteres",nameFormat:"O nome pode conter apenas letras, números, hífen e underline"},form:{name:{label:"Nome da Instância",placeholder:"minha-instancia",hint:"Use letras, números, hífen (-) ou underline (_)"},token:{label:"Token (opcional)",placeholder:"Deixe em branco para gerar automaticamente",hint:"Se não informado, um UUID será gerado automaticamente"}},proxy:{title:"Configurar Proxy (opcional)",host:{label:"Host",placeholder:"proxy.exemplo.com"},port:{label:"Porta"},username:{label:"Usuário",placeholder:"usuario"},password:{label:"Senha",placeholder:"••••••••"}},button:{create:"Criar Instância",creating:"Criando..."}},Jle={loading:"Carregando...",noResults:"Nenhum resultado encontrado!"},Qle={dashboard:vle,button:yle,testInteractive:ble,sessions:xle,modal:wle,status:Sle,footer:Cle,header:jle,sidebar:kle,toast:Ele,license:Nle,login:Tle,instance:Mle,settings:_le,proxy:Rle,webhook:Ple,websocket:Ile,rabbitmq:Ole,sqs:Ale,chatwoot:Dle,typebot:Fle,openai:Lle,dify:$le,n8n:Ble,evoai:zle,evolutionBot:Ule,flowise:Vle,chat:qle,common:Hle,sendMessage:Kle,qrCode:Wle,newInstance:Gle,table:Jle};mr.use(VD).init({resources:{"en-US":{translation:nie},"pt-BR":{translation:Qle},"es-ES":{translation:Die},"fr-FR":{translation:gle}},lng:localStorage.getItem("i18nextLng")||"en-US",fallbackLng:"en-US",interpolation:{escapeValue:!1}});RD.createRoot(document.getElementById("root")).render(a.jsxs(Oe.StrictMode,{children:[a.jsx(WD,{i18n:mr,children:a.jsx(VF,{defaultTheme:"dark",storageKey:"vite-ui-theme",children:a.jsx(IE,{client:FN,children:a.jsx(wF,{router:Xae})})})}),a.jsx(zF,{theme:"colored"})]}))});export default Yle(); diff --git a/manager/dist/assets/test-interactive.js b/manager/dist/assets/test-interactive.js deleted file mode 100644 index 5f2adee99b..0000000000 --- a/manager/dist/assets/test-interactive.js +++ /dev/null @@ -1,448 +0,0 @@ -/* eslint-disable */ -/** - * Painel de testes para envio de mensagens interativas (Botões, Lista, Carrossel). - * Injeta um botão "Testar Interativo" em cada card de instância no manager. - * Fallback: se nenhum card for detectado, mostra um botão flutuante (FAB). - */ -(function () { - 'use strict'; - - if (window.__evoTestInteractive) return; - window.__evoTestInteractive = true; - - const STYLE = ` - .evo-test-btn { - display: inline-flex; align-items: center; gap: 6px; - padding: 6px 10px; margin: 4px; - font-size: 12px; font-weight: 600; line-height: 1; - background: #6e44ff; color: #fff; border: none; border-radius: 6px; - cursor: pointer; box-shadow: 0 1px 2px rgba(0,0,0,.15); - transition: background .15s; - } - .evo-test-btn:hover { background: #5a36d6; } - .evo-test-fab { - position: fixed; right: 24px; bottom: 24px; z-index: 999998; - padding: 12px 16px; font-size: 14px; font-weight: 700; - background: #6e44ff; color: #fff; border: none; border-radius: 999px; - cursor: pointer; box-shadow: 0 4px 12px rgba(0,0,0,.25); - } - .evo-test-overlay { - position: fixed; inset: 0; background: rgba(0,0,0,.55); - z-index: 999999; display: flex; align-items: center; justify-content: center; - font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; - } - .evo-test-modal { - width: min(720px, 92vw); max-height: 92vh; overflow: auto; - background: #fff; color: #1a1a1a; border-radius: 12px; - padding: 20px; box-shadow: 0 12px 40px rgba(0,0,0,.4); - } - .evo-test-modal h2 { margin: 0 0 4px; font-size: 18px; } - .evo-test-modal .evo-sub { color: #666; font-size: 12px; margin-bottom: 14px; } - .evo-test-tabs { display: flex; gap: 4px; border-bottom: 1px solid #e5e5e5; margin-bottom: 14px; } - .evo-test-tab { - padding: 8px 14px; border: none; background: transparent; cursor: pointer; - font-size: 13px; font-weight: 600; color: #666; border-bottom: 2px solid transparent; - } - .evo-test-tab.active { color: #6e44ff; border-color: #6e44ff; } - .evo-test-form label { display: block; font-size: 12px; font-weight: 600; margin: 10px 0 4px; color: #444; } - .evo-test-form input, .evo-test-form textarea { - width: 100%; padding: 8px 10px; border: 1px solid #d0d0d0; border-radius: 6px; - font-size: 13px; font-family: inherit; box-sizing: border-box; - } - .evo-test-form textarea { font-family: ui-monospace, "SF Mono", Consolas, monospace; min-height: 180px; resize: vertical; } - .evo-test-actions { display: flex; gap: 8px; justify-content: flex-end; margin-top: 16px; } - .evo-test-actions button { - padding: 8px 14px; font-size: 13px; font-weight: 600; border-radius: 6px; cursor: pointer; border: none; - } - .evo-test-cancel { background: #eee; color: #333; } - .evo-test-send { background: #6e44ff; color: #fff; } - .evo-test-send:disabled { opacity: .6; cursor: not-allowed; } - .evo-test-toast { - position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%); - padding: 12px 18px; border-radius: 8px; font-size: 13px; color: #fff; - z-index: 9999999; box-shadow: 0 4px 12px rgba(0,0,0,.3); - } - .evo-test-toast.ok { background: #16a34a; } - .evo-test-toast.err { background: #dc2626; } - .evo-test-fab-menu { - position: fixed; right: 24px; bottom: 80px; z-index: 999998; - background: #fff; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,.2); - max-height: 320px; overflow: auto; min-width: 220px; - } - .evo-test-fab-menu button { - display: block; width: 100%; padding: 10px 14px; text-align: left; - border: none; background: transparent; font-size: 13px; cursor: pointer; border-bottom: 1px solid #f0f0f0; - } - .evo-test-fab-menu button:hover { background: #f5f3ff; } - `; - - const styleEl = document.createElement('style'); - styleEl.textContent = STYLE; - document.head.appendChild(styleEl); - - // Os tipos de botão NÃO PODEM SER MISTURADOS no mesmo envio. - // Regras da API: - // - reply: 1 a 3 botões, sem misturar com CTA ou PIX - // - CTA (url/call/copy): 1 a 2 botões, sem misturar com reply ou PIX - // - pix: exatamente 1 botão isolado (payment_info) - // Por isso há abas separadas. - const TEMPLATES = { - reply: { - number: '', - title: 'Resposta Rápida', - description: 'Escolha uma das opções abaixo:', - footer: 'Evolution API', - buttons: [ - { type: 'reply', displayText: '✅ Confirmar', id: 'opt_confirm' }, - { type: 'reply', displayText: '❌ Cancelar', id: 'opt_cancel' }, - { type: 'reply', displayText: '🤔 Talvez', id: 'opt_maybe' }, - ], - }, - cta: { - number: '', - title: 'Botões CTA', - description: 'Botões de URL e copia-código (cta_url + cta_copy):', - footer: 'Máx. 2 botões CTA por mensagem', - buttons: [ - { type: 'url', displayText: '🌐 Abrir site', url: 'https://example.com' }, - { type: 'copy', displayText: '📋 Copiar PIX', copyCode: '00020126580014BR.GOV.BCB.PIX0136abc12345-6789-0000-aaaa-bbbbccccdddd5204000053039865802BR5913FULANO DE TAL6009SAO PAULO62070503***6304ABCD' }, - ], - }, - pix: { - number: '', - title: 'Pagamento via PIX', - description: 'Toque para pagar via PIX (payment_info)', - footer: 'WhatsApp Pay', - buttons: [ - { - type: 'pix', - currency: 'BRL', - name: 'Empresa Exemplo', - keyType: 'random', - key: 'abc12345-6789-0000-aaaa-bbbbccccdddd', - }, - ], - }, - list: { - number: '', - title: 'Cardápio de Teste', - description: 'Escolha um item abaixo', - footerText: 'Validade hoje', - buttonText: 'Ver opções', - sections: [ - { - title: 'Bebidas', - rows: [ - { title: 'Coca-Cola', description: 'Lata 350ml', rowId: 'coca' }, - { title: 'Suco de Laranja', description: '300ml natural', rowId: 'suco' }, - ], - }, - { - title: 'Lanches', - rows: [ - { title: 'X-Burger', description: 'Pão, carne 150g, queijo', rowId: 'xburger' }, - ], - }, - ], - }, - carousel: { - number: '', - body: 'Catálogo da semana', - cards: [ - { - body: 'Produto A', - footer: 'R$ 99,90', - imageUrl: 'https://picsum.photos/seed/a/600/400', - buttons: [{ type: 'url', displayText: 'Comprar', url: 'https://exemplo.com/a' }], - }, - { - body: 'Produto B', - footer: 'R$ 149,90', - imageUrl: 'https://picsum.photos/seed/b/600/400', - buttons: [{ type: 'url', displayText: 'Comprar', url: 'https://exemplo.com/b' }], - }, - { - body: 'Produto C', - footer: 'R$ 199,90', - imageUrl: 'https://picsum.photos/seed/c/600/400', - buttons: [{ type: 'reply', displayText: 'Quero!', id: 'prod_c' }], - }, - ], - }, - }; - - const ENDPOINT = { - reply: 'sendButtons', - cta: 'sendButtons', - pix: 'sendButtons', - list: 'sendList', - carousel: 'sendCarousel', - }; - const TAB_LABEL = { - reply: 'Reply', - cta: 'CTA', - pix: 'PIX', - list: 'Lista', - carousel: 'Carrossel', - }; - - function getApiKey() { - return localStorage.getItem('accessToken') || localStorage.getItem('token') || ''; - } - - function getApiUrl() { - const u = localStorage.getItem('apiUrl'); - return u && u !== 'undefined' && u !== 'null' ? u.replace(/\/+$/, '') : window.location.origin; - } - - async function fetchInstances() { - const apikey = getApiKey(); - if (!apikey) return []; - try { - const res = await fetch(getApiUrl() + '/instance/fetchInstances', { headers: { apikey } }); - if (!res.ok) return []; - const data = await res.json(); - const list = Array.isArray(data) ? data : (data?.instances || []); - return list - .map((it) => { - const name = it?.name || it?.instanceName || it?.instance?.instanceName; - const token = it?.token || it?.hash || it?.instance?.hash || it?.apikey; - return name ? { name, token } : null; - }) - .filter(Boolean); - } catch (e) { - console.error('[evo-test] fetchInstances error', e); - return []; - } - } - - function showToast(msg, type) { - const el = document.createElement('div'); - el.className = 'evo-test-toast ' + (type || 'ok'); - el.textContent = msg; - document.body.appendChild(el); - setTimeout(() => el.remove(), 4000); - } - - function openModal(instance) { - const overlay = document.createElement('div'); - overlay.className = 'evo-test-overlay'; - - const modal = document.createElement('div'); - modal.className = 'evo-test-modal'; - - let activeTab = 'reply'; - - const render = () => { - const tpl = TEMPLATES[activeTab]; - if (!tpl.number) tpl.number = ''; - - modal.innerHTML = ` -

Teste Interativo

-
Instância: ${instance.name} · Endpoint: POST /message/${ENDPOINT[activeTab]}/${instance.name}
-
- ${Object.keys(ENDPOINT).map((k) => ``).join('')} -
-
- - - - -
-
- - -
- `; - - const payloadCopy = { ...tpl }; - delete payloadCopy.number; - modal.querySelector('.evo-payload').value = JSON.stringify(payloadCopy, null, 2); - - modal.querySelectorAll('.evo-test-tab').forEach((btn) => { - btn.onclick = () => { - activeTab = btn.dataset.tab; - render(); - }; - }); - - modal.querySelector('.evo-test-cancel').onclick = () => overlay.remove(); - modal.querySelector('.evo-test-send').onclick = async (ev) => { - const sendBtn = ev.currentTarget; - const number = (modal.querySelector('.evo-number').value || '').replace(/\D/g, ''); - if (!number) { - showToast('Informe o número de destino', 'err'); - return; - } - let payload; - try { - payload = JSON.parse(modal.querySelector('.evo-payload').value); - } catch (e) { - showToast('JSON inválido: ' + e.message, 'err'); - return; - } - payload.number = number; - TEMPLATES[activeTab].number = number; - - sendBtn.disabled = true; - sendBtn.textContent = 'Enviando...'; - try { - const apikey = instance.token || getApiKey(); - const url = getApiUrl() + '/message/' + ENDPOINT[activeTab] + '/' + encodeURIComponent(instance.name); - const res = await fetch(url, { - method: 'POST', - headers: { 'Content-Type': 'application/json', apikey }, - body: JSON.stringify(payload), - }); - const data = await res.json().catch(() => ({})); - if (res.ok) { - showToast('Mensagem enviada (id ' + (data?.key?.id || data?.messageId || 'ok') + ')', 'ok'); - overlay.remove(); - } else { - const msg = data?.response?.message || data?.message || res.statusText; - showToast('Erro ' + res.status + ': ' + (Array.isArray(msg) ? msg.join('; ') : msg), 'err'); - sendBtn.disabled = false; - sendBtn.textContent = 'Enviar'; - } - } catch (e) { - showToast('Falha de rede: ' + e.message, 'err'); - sendBtn.disabled = false; - sendBtn.textContent = 'Enviar'; - } - }; - }; - - render(); - overlay.appendChild(modal); - overlay.addEventListener('click', (e) => { - if (e.target === overlay) overlay.remove(); - }); - document.body.appendChild(overlay); - } - - // -- Detector de cards via MutationObserver ----------------------------------- - - let knownInstances = []; - let lastInstanceFetch = 0; - - async function refreshInstancesIfStale() { - if (Date.now() - lastInstanceFetch > 8000) { - knownInstances = await fetchInstances(); - lastInstanceFetch = Date.now(); - } - } - - function findCardForInstance(name) { - // Procura elementos folha que contenham EXATAMENTE o nome da instância - const candidates = []; - const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, null); - let node; - while ((node = walker.nextNode())) { - if (node.nodeValue && node.nodeValue.trim() === name) { - candidates.push(node.parentElement); - } - } - - for (const el of candidates) { - let ancestor = el; - let depth = 0; - while (ancestor && depth < 6) { - const hasButton = ancestor.querySelector('button, a[role="button"]'); - const rect = ancestor.getBoundingClientRect && ancestor.getBoundingClientRect(); - if (hasButton && rect && rect.width > 180 && rect.height > 80) { - return ancestor; - } - ancestor = ancestor.parentElement; - depth++; - } - } - return null; - } - - function injectIntoCard(card, instance) { - if (card.querySelector('.evo-test-btn[data-evo-instance="' + instance.name + '"]')) return; - const btn = document.createElement('button'); - btn.className = 'evo-test-btn'; - btn.dataset.evoInstance = instance.name; - btn.type = 'button'; - btn.textContent = '🧪 Testar Interativo'; - btn.addEventListener('click', (e) => { - e.preventDefault(); - e.stopPropagation(); - openModal(instance); - }); - // injeta perto dos outros botões (no final do card) - const buttonContainer = card.querySelector('button')?.parentElement || card; - buttonContainer.appendChild(btn); - card.dataset.evoTestInjected = '1'; - } - - async function scan() { - await refreshInstancesIfStale(); - if (!knownInstances.length) return; - for (const inst of knownInstances) { - const card = findCardForInstance(inst.name); - if (card) injectIntoCard(card, inst); - } - ensureFab(); - } - - function ensureFab() { - // Se NENHUM card foi injetado, mostra o FAB. Se houver pelo menos um, remove o FAB. - const anyInjected = document.querySelector('.evo-test-btn[data-evo-instance]'); - const existingFab = document.querySelector('.evo-test-fab'); - if (anyInjected) { - existingFab && existingFab.remove(); - return; - } - if (existingFab) return; - const fab = document.createElement('button'); - fab.className = 'evo-test-fab'; - fab.textContent = '🧪 Testar Interativo'; - fab.onclick = () => openFabMenu(fab); - document.body.appendChild(fab); - } - - function openFabMenu(fab) { - document.querySelectorAll('.evo-test-fab-menu').forEach((m) => m.remove()); - if (!knownInstances.length) { - showToast('Nenhuma instância encontrada. Verifique sua API key.', 'err'); - return; - } - const menu = document.createElement('div'); - menu.className = 'evo-test-fab-menu'; - knownInstances.forEach((inst) => { - const b = document.createElement('button'); - b.textContent = inst.name; - b.onclick = () => { - menu.remove(); - openModal(inst); - }; - menu.appendChild(b); - }); - document.body.appendChild(menu); - setTimeout(() => { - const closer = (e) => { - if (!menu.contains(e.target) && e.target !== fab) { - menu.remove(); - document.removeEventListener('click', closer); - } - }; - document.addEventListener('click', closer); - }, 0); - } - - let scanTimer = null; - function scheduleScan() { - clearTimeout(scanTimer); - scanTimer = setTimeout(scan, 300); - } - - const observer = new MutationObserver(scheduleScan); - observer.observe(document.body, { childList: true, subtree: true }); - - // primeira tentativa após 1s para dar tempo do React renderizar - setTimeout(scan, 1000); - setTimeout(scan, 3000); - setInterval(scan, 10000); -})(); diff --git a/manager/dist/index.html b/manager/dist/index.html index 20c0919f8c..db6acdc6c8 100644 --- a/manager/dist/index.html +++ b/manager/dist/index.html @@ -5,11 +5,10 @@ Evolution Manager - - + +
- diff --git a/package.json b/package.json index b7bc159e6e..d81bb691b2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "evolution-api", - "version": "2.3.7", + "version": "2.4.0", "description": "Rest api for communication with WhatsApp", "main": "./dist/main.js", "type": "commonjs", diff --git a/prisma/mysql-migrations/20260506184850_add_runtime_config/migration.sql b/prisma/mysql-migrations/20260506184850_add_runtime_config/migration.sql new file mode 100644 index 0000000000..29dcfe19c9 --- /dev/null +++ b/prisma/mysql-migrations/20260506184850_add_runtime_config/migration.sql @@ -0,0 +1,11 @@ +-- CreateTable +CREATE TABLE `RuntimeConfig` ( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `key` VARCHAR(100) NOT NULL, + `value` TEXT NOT NULL, + `createdAt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updatedAt` TIMESTAMP NOT NULL, + + UNIQUE INDEX `RuntimeConfig_key_key`(`key`), + PRIMARY KEY (`id`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; diff --git a/prisma/mysql-schema.prisma b/prisma/mysql-schema.prisma index 9e9afad4c3..1d11dce223 100644 --- a/prisma/mysql-schema.prisma +++ b/prisma/mysql-schema.prisma @@ -756,3 +756,11 @@ model EvoaiSetting { Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade) instanceId String @unique } + +model RuntimeConfig { + id Int @id @default(autoincrement()) + key String @unique @db.VarChar(100) + value String @db.Text + createdAt DateTime @default(dbgenerated("CURRENT_TIMESTAMP")) @db.Timestamp + updatedAt DateTime @updatedAt @db.Timestamp +} diff --git a/prisma/postgresql-migrations/20260506184850_add_runtime_config/migration.sql b/prisma/postgresql-migrations/20260506184850_add_runtime_config/migration.sql new file mode 100644 index 0000000000..e784ab0a25 --- /dev/null +++ b/prisma/postgresql-migrations/20260506184850_add_runtime_config/migration.sql @@ -0,0 +1,13 @@ +-- CreateTable +CREATE TABLE "RuntimeConfig" ( + "id" SERIAL NOT NULL, + "key" VARCHAR(100) NOT NULL, + "value" TEXT NOT NULL, + "createdAt" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP NOT NULL, + + CONSTRAINT "RuntimeConfig_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "RuntimeConfig_key_key" ON "RuntimeConfig"("key"); diff --git a/prisma/postgresql-schema.prisma b/prisma/postgresql-schema.prisma index 51b3c97c82..1177a58bfb 100644 --- a/prisma/postgresql-schema.prisma +++ b/prisma/postgresql-schema.prisma @@ -761,3 +761,11 @@ model EvoaiSetting { Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade) instanceId String @unique } + +model RuntimeConfig { + id Int @id @default(autoincrement()) + key String @unique @db.VarChar(100) + value String @db.Text + createdAt DateTime @default(now()) @db.Timestamp + updatedAt DateTime @updatedAt @db.Timestamp +} diff --git a/src/api/routes/license.router.ts b/src/api/routes/license.router.ts new file mode 100644 index 0000000000..7b1bf3eaf6 --- /dev/null +++ b/src/api/routes/license.router.ts @@ -0,0 +1,72 @@ +// Public license endpoints — must NOT be behind auth, must work before activation. +// Mirrors evolution-go LicenseRoutes() in pkg/core/runtime.go. + +import { Logger } from '@config/logger.config'; +import { Request, Response, Router } from 'express'; + +import { activateWithCode, initRegistration, publicSnapshot, RuntimeContext } from '../../licensing/runtime'; +import { readErrorMessage } from '../../licensing/transport'; + +const logger = new Logger('LicenseRouter'); + +export function buildLicenseRouter(rc: RuntimeContext): Router { + const router = Router(); + + // GET /license/status — light-weight status check, used by the manager UI on boot. + router.get('/status', (_req: Request, res: Response) => { + res.status(200).json(publicSnapshot(rc)); + }); + + // GET /license/register?redirect_uri= — initiates registration, returns register_url. + router.get('/register', async (req: Request, res: Response) => { + if (rc.isActive()) { + return res.status(200).json({ status: 'active', message: 'License is already active' }); + } + + if (rc.registerUrl) { + return res.status(200).json({ status: 'pending', register_url: rc.registerUrl }); + } + + try { + const redirectUri = (req.query.redirect_uri as string) || undefined; + const url = await initRegistration(rc, redirectUri); + logger.info(`Registration URL issued: ${url}`); + return res.status(200).json({ status: 'pending', register_url: url }); + } catch (err) { + return res.status(502).json({ + error: 'Failed to contact licensing server', + details: readErrorMessage(err), + }); + } + }); + + // GET /license/activate?code= — exchanges authorization code for api_key and activates. + router.get('/activate', async (req: Request, res: Response) => { + if (rc.isActive()) { + return res.status(200).json({ status: 'active', message: 'License is already active' }); + } + + const code = (req.query.code as string) || ''; + if (!code) { + return res.status(400).json({ + error: 'Missing code parameter', + message: 'Provide ?code=AUTHORIZATION_CODE from the registration callback.', + }); + } + + try { + await activateWithCode(rc, code); + return res.status(200).json({ status: 'active', message: 'License activated successfully!' }); + } catch (err) { + const message = readErrorMessage(err); + // Mirror Go: distinguish bad-request vs server error. + const status = /invalid|expired/i.test(message) ? 400 : 502; + return res.status(status).json({ + error: status === 400 ? 'Invalid or expired code' : 'Activation failed', + details: message, + }); + } + }); + + return router; +} diff --git a/src/licensing/endpoint.ts b/src/licensing/endpoint.ts new file mode 100644 index 0000000000..a8c387b548 --- /dev/null +++ b/src/licensing/endpoint.ts @@ -0,0 +1,70 @@ +// Mirrors evolution-go/pkg/core/endpoint.go +// +// The licensing URL is **build-time only** — it gets baked into the bundle by +// tsup's `define` so the operator cannot point the running service at a +// different licensing server via env vars. +// +// In release builds the Dockerfile passes: +// LICENSE_ENDPOINT_ENCODED= (XOR-encoded URL) +// LICENSE_ENDPOINT_XOR_KEY= (XOR key) +// +// Use `node tools/encode-url.js https://license.evolutionfoundation.com.br` +// to generate the pair. +// +// In dev (vars empty), the URL is reconstructed from a parts array — same +// technique as evolution-go. + +// These two identifiers are replaced at bundle time by tsup `define`. +// Do NOT inline them or read them from process.env — see tsup.config.ts. +declare const __LICENSE_ENDPOINT_ENCODED__: string; +declare const __LICENSE_ENDPOINT_XOR_KEY__: string; + +const encodedEP = typeof __LICENSE_ENDPOINT_ENCODED__ === 'string' ? __LICENSE_ENDPOINT_ENCODED__ : ''; +const xorKey = typeof __LICENSE_ENDPOINT_XOR_KEY__ === 'string' ? __LICENSE_ENDPOINT_XOR_KEY__ : ''; + +export function resolveEndpoint(): string { + if (encodedEP && xorKey) { + return decodeXOR(encodedEP, xorKey); + } + // Dev fallback — assembled at runtime, not a single string literal. + const parts = [ + 'h', + 'tt', + 'ps', + '://', + 'li', + 'ce', + 'nse', + '.', + 'ev', + 'ol', + 'ut', + 'io', + 'nf', + 'ou', + 'nd', + 'at', + 'io', + 'n.', + 'co', + 'm.', + 'br', + ]; + return parts.join(''); +} + +function decodeXOR(enc: string, key: string): string { + const encBytes = hexDec(enc); + const keyBytes = hexDec(key); + if (keyBytes.length === 0) return ''; + const out = Buffer.alloc(encBytes.length); + for (let i = 0; i < encBytes.length; i++) { + out[i] = encBytes[i] ^ keyBytes[i % keyBytes.length]; + } + return out.toString('utf8'); +} + +function hexDec(s: string): Buffer { + if (s.length % 2 !== 0) return Buffer.alloc(0); + return Buffer.from(s, 'hex'); +} diff --git a/src/licensing/integrity.ts b/src/licensing/integrity.ts new file mode 100644 index 0000000000..e9f22c49f3 --- /dev/null +++ b/src/licensing/integrity.ts @@ -0,0 +1,31 @@ +// Mirrors evolution-go/pkg/core/integrity.go — but as PLACEHOLDERS. +// On the Go side, these hashes feed whatsmeow's session store. On evolution-api +// we use Baileys, which doesn't consume them. Kept here so the licensing module +// presents the same surface area in case the licensing server starts asking for +// integrity tokens in the future. + +import { createHash } from 'crypto'; + +import { RuntimeContext } from './runtime'; + +let runtimeSalt: Buffer = Buffer.from([0]); + +export function activateIntegrity(rc: RuntimeContext): void { + if (!rc) return; + runtimeSalt = createHash('sha256') + .update(rc.apiKey + rc.instanceId + 'ev0') + .digest(); +} + +export function computeSessionSeed(instanceName: string, rc: RuntimeContext): Buffer | null { + if (!rc || !rc.isActive()) return null; + return createHash('sha256').update(instanceName).update(rc.apiKey).update(runtimeSalt).digest().subarray(0, 16); +} + +export function deriveInstanceToken(instanceID: string, rc: RuntimeContext): string { + if (!rc || !rc.isActive()) return ''; + return createHash('sha256') + .update(instanceID + rc.apiKey) + .digest('hex') + .slice(0, 16); +} diff --git a/src/licensing/model.ts b/src/licensing/model.ts new file mode 100644 index 0000000000..3cd2c6b547 --- /dev/null +++ b/src/licensing/model.ts @@ -0,0 +1,43 @@ +// Mirrors evolution-go/pkg/core/model.go +// Persisted as key/value rows in the RuntimeConfig table. + +export const ConfigKey = { + InstanceID: 'instance_id', + APIKey: 'api_key', + Tier: 'tier', + CustomerID: 'customer_id', +} as const; + +export type ConfigKey = (typeof ConfigKey)[keyof typeof ConfigKey]; + +export interface RuntimeData { + apiKey: string; + tier: string; + customerId: number; +} + +export interface LicenseStatusResponse { + status: 'active' | 'inactive'; + instance_id: string; + api_key?: string; +} + +export interface RegisterInitResponse { + register_url: string; + token: string; +} + +export interface RegisterExchangeResponse { + api_key: string; + tier: string; + customer_id: number; +} + +export interface RuntimeContextSnapshot { + active: boolean; + apiKey: string; + instanceId: string; + tier: string; + version: string; + registerUrl: string; +} diff --git a/src/licensing/runtime.ts b/src/licensing/runtime.ts new file mode 100644 index 0000000000..ac982f2cb5 --- /dev/null +++ b/src/licensing/runtime.ts @@ -0,0 +1,435 @@ +// Mirrors evolution-go/pkg/core/runtime.go — license lifecycle + Express gate middleware. +// +// Bootstrap order (called from src/main.ts): +// 1. setDB(prisma) +// 2. const rc = await initializeRuntime({ tier, version, globalApiKey }) +// 3. app.use(gateMiddleware(rc)) ← before business routers +// 4. registerLicenseRoutes(app, rc) +// 5. startHeartbeat(rc, startedAt) +// 6. process.on('SIGTERM', () => shutdown(rc)) + +import { Logger } from '@config/logger.config'; +import { createHash } from 'crypto'; +import { NextFunction, Request, Response } from 'express'; + +import { activateIntegrity } from './integrity'; +import { RegisterExchangeResponse, RuntimeContextSnapshot } from './model'; +import { loadOrCreateInstanceID, loadRuntimeData, saveRuntimeData } from './store'; +import { postSigned, postUnsigned, readErrorMessage } from './transport'; + +const logger = new Logger('Licensing'); + +const HEARTBEAT_INTERVAL_MS = 30 * 60 * 1000; // 30 minutes — same as Go. +const DOCS_URL = 'https://docs.evolutionfoundation.com.br/licensing'; + +interface InitializeOptions { + tier?: string; + version?: string; + globalApiKey?: string; +} + +/** + * RuntimeContext holds the licensing state. Required by middleware and routes. + * Mirrors the Go RuntimeContext (atomics replaced with plain fields — Node is single-threaded). + */ +export class RuntimeContext { + public apiKey = ''; + public instanceId = ''; + public tier: string; + public version: string; + public registerUrl = ''; + public registerToken = ''; + + private active = false; + private ctxHash: Buffer = Buffer.alloc(32); + private msgSent = 0; + private msgRecv = 0; + + constructor( + public readonly globalApiKey: string, + tier: string, + version: string, + ) { + this.tier = tier; + this.version = version; + } + + isActive(): boolean { + return this.active; + } + + setActive(active: boolean): void { + this.active = active; + } + + contextHash(): Buffer { + return this.ctxHash; + } + + recomputeContextHash(): void { + this.ctxHash = createHash('sha256') + .update(this.apiKey + this.instanceId) + .digest(); + } + + trackMessageSent(): void { + this.msgSent += 1; + } + + trackMessageRecv(): void { + this.msgRecv += 1; + } + + collectAndResetSent(): number { + const v = this.msgSent; + this.msgSent = 0; + return v; + } + + collectAndResetRecv(): number { + const v = this.msgRecv; + this.msgRecv = 0; + return v; + } + + snapshot(): RuntimeContextSnapshot { + return { + active: this.active, + apiKey: this.apiKey, + instanceId: this.instanceId, + tier: this.tier, + version: this.version, + registerUrl: this.registerUrl, + }; + } +} + +let globalRC: RuntimeContext | null = null; + +/** Globally-callable counters (mirror Go's TrackMessageSent/Recv). */ +export function trackMessageSent(): void { + globalRC?.trackMessageSent(); +} +export function trackMessageRecv(): void { + globalRC?.trackMessageRecv(); +} + +/** + * Step-by-step boot: + * 1. Load or create instance ID (hardware-based, persistent) + * 2. If license exists in DB → activate locally (works even if licensing server is down) + * 3. If no license but globalApiKey is set → try to use it as api_key + * 4. Otherwise → inactive; gate middleware will return 503 until activation + */ +export async function initializeRuntime(opts: InitializeOptions = {}): Promise { + const tier = opts.tier || 'evolution-api'; + const version = opts.version || 'unknown'; + const globalApiKey = opts.globalApiKey ?? ''; + + const rc = new RuntimeContext(globalApiKey, tier, version); + + // Step 1: Instance ID (hardware-based, persistent across restarts). + try { + rc.instanceId = await loadOrCreateInstanceID(); + } catch (err) { + if ((err as { code?: string })?.code === 'P2021') { + // Prisma error P2021 = "table does not exist" — almost always means + // the operator skipped `npm run db:deploy` after upgrading. + logger.error('╔══════════════════════════════════════════════════════════╗'); + logger.error('║ Database is missing the licensing table ║'); + logger.error('╚══════════════════════════════════════════════════════════╝'); + logger.error('The RuntimeConfig table was not found in the database.'); + logger.error('Run the migration and restart:'); + logger.error(' npm run db:deploy'); + logger.error(`Docs: ${DOCS_URL}`); + process.exit(1); + } + throw err; + } + + // Step 2: Try loading existing license from DB. + const stored = await loadRuntimeData(); + if (stored && stored.apiKey) { + rc.apiKey = stored.apiKey; + logger.info(`License found: ${maskKey(stored.apiKey)}`); + + // License exists → always activate locally. Even if the licensing server is unreachable, + // the service must keep working. + rc.recomputeContextHash(); + rc.setActive(true); + activateIntegrity(rc); + logger.info('License activated successfully'); + + // Notify the licensing server async — failure is acceptable (telemetry only). + activateInstance(rc).catch((err) => { + logger.warn(`Remote activation notice failed (non-blocking): ${readErrorMessage(err)}`); + }); + } else if (rc.globalApiKey) { + // No license in DB but globalApiKey is set — try using it as api_key. + rc.apiKey = rc.globalApiKey; + try { + await activateInstance(rc); + // globalApiKey is a valid api_key — save to DB and activate. + await saveRuntimeData({ apiKey: rc.globalApiKey, tier, customerId: 0 }); + rc.recomputeContextHash(); + rc.setActive(true); + activateIntegrity(rc); + logger.info('Global API key accepted — license saved and activated'); + } catch (err) { + // Not a valid api_key — fall through to registration flow. + rc.apiKey = ''; + printRegistrationBanner(); + rc.setActive(false); + logger.debug(`Global API key not accepted by licensing server: ${readErrorMessage(err)}`); + } + } else { + printRegistrationBanner(rc); + rc.setActive(false); + } + + globalRC = rc; + return rc; +} + +function printRegistrationBanner(rc?: RuntimeContext): void { + logger.warn('╔══════════════════════════════════════════════════════════╗'); + logger.warn('║ License Registration Required ║'); + logger.warn('╚══════════════════════════════════════════════════════════╝'); + logger.warn('This Evolution API instance is not activated yet.'); + logger.warn('API endpoints will return HTTP 503 until activation.'); + logger.warn(''); + logger.warn('To activate:'); + logger.warn(' 1. Open the manager at /manager/login on this host'); + logger.warn(' 2. Or set AUTHENTICATION_API_KEY in your .env with a valid licensing key'); + logger.warn(` 3. Docs: ${DOCS_URL}`); + if (rc?.instanceId) { + logger.warn(''); + logger.warn(`Instance ID: ${rc.instanceId}`); + } +} + +function maskKey(key: string): string { + if (key.length < 12) return '***'; + return `${key.slice(0, 8)}...${key.slice(-4)}`; +} + +/** Validates context. Returns [active, registerUrl]. */ +export function validateContext(rc: RuntimeContext | null): [boolean, string] { + if (!rc) return [false, '']; + if (!rc.isActive()) return [false, rc.registerUrl]; + // Verify hash integrity. + const expected = createHash('sha256') + .update(rc.apiKey + rc.instanceId) + .digest(); + const actual = rc.contextHash(); + if (!expected.equals(actual)) return [false, '']; + return [true, '']; +} + +/** + * Express middleware that blocks all API requests when the license is not active. + * License routes (/license/*), assets, manager UI, health and websocket always pass. + */ +export function gateMiddleware(rc: RuntimeContext) { + return (req: Request, res: Response, next: NextFunction) => { + const path = req.path; + + // Always pass: health, license routes, manager UI, static assets. + if ( + path === '/' || + path === '/health' || + path === '/server/ok' || + path === '/favicon.ico' || + path === '/license/status' || + path === '/license/register' || + path === '/license/activate' || + path.startsWith('/manager') || + path.startsWith('/assets') || + path.startsWith('/store') || + path === '/ws' || + /\.(svg|css|js|png|ico|woff2?|ttf|map)$/i.test(path) + ) { + return next(); + } + + const [valid] = validateContext(rc); + if (!valid) { + const scheme = (req.headers['x-forwarded-proto'] as string) || req.protocol; + const host = req.headers.host; + const managerUrl = `${scheme}://${host}/manager/login`; + + return res.status(503).json({ + error: 'service not activated', + code: 'LICENSE_REQUIRED', + register_url: managerUrl, + instance_id: rc.instanceId, + docs_url: DOCS_URL, + message: `This Evolution API instance is not activated. Open ${managerUrl} to activate, or set AUTHENTICATION_API_KEY in your .env with a valid licensing key. Docs: ${DOCS_URL}`, + }); + } + + next(); + }; +} + +/** Resolves an authorization_code into a real api_key — falls back to the input if exchange fails. */ +async function exchangeCode(code: string, instanceId: string): Promise { + try { + const resp = await postUnsigned('/v1/register/exchange', { + authorization_code: code, + instance_id: instanceId, + }); + return resp.data?.api_key || null; + } catch { + return null; + } +} + +async function resolveApiKey(authCodeOrKey: string, instanceId: string): Promise { + const exchanged = await exchangeCode(authCodeOrKey, instanceId); + if (exchanged) return exchanged; + // Fallback: treat as api_key directly (mirrors Go behaviour). + return authCodeOrKey; +} + +/** Completes activation after the registration callback. */ +export async function completeActivation( + rc: RuntimeContext, + authCodeOrKey: string, + tier: string, + customerId: number, +): Promise { + const apiKey = await resolveApiKey(authCodeOrKey, rc.instanceId); + rc.apiKey = apiKey; + rc.registerUrl = ''; + rc.registerToken = ''; + + try { + await saveRuntimeData({ apiKey, tier, customerId }); + } catch (err) { + logger.warn(`Could not save license: ${readErrorMessage(err)}`); + } + + await activateInstance(rc); + + rc.recomputeContextHash(); + rc.setActive(true); + activateIntegrity(rc); + + logger.info(`License activated. Key: ${maskKey(apiKey)} (tier: ${tier})`); + + // Send first heartbeat immediately after activation. + sendHeartbeat(rc, 0).catch((err) => { + logger.warn(`First heartbeat failed: ${readErrorMessage(err)}`); + }); +} + +async function activateInstance(rc: RuntimeContext): Promise { + const resp = await postSigned<{ status: string }>( + '/v1/activate', + { instance_id: rc.instanceId, version: rc.version }, + rc.apiKey, + ); + if (resp.data?.status !== 'active') { + throw new Error(`activation returned status: ${resp.data?.status}`); + } +} + +async function sendHeartbeat(rc: RuntimeContext, uptimeSeconds: number): Promise { + const msgSent = rc.collectAndResetSent(); + const msgRecv = rc.collectAndResetRecv(); + + const payload: Record = { + instance_id: rc.instanceId, + uptime_seconds: uptimeSeconds, + version: rc.version, + }; + + if (msgSent > 0 || msgRecv > 0) { + const bundle: Record = {}; + if (msgSent > 0) bundle.messages_sent = msgSent; + if (msgRecv > 0) bundle.messages_recv = msgRecv; + payload.telemetry_bundle = bundle; + } + + try { + await postSigned('/v1/heartbeat', payload, rc.apiKey); + } catch (err) { + // Re-add counters so they're not lost. + for (let i = 0; i < msgSent; i++) rc.trackMessageSent(); + for (let i = 0; i < msgRecv; i++) rc.trackMessageRecv(); + throw err; + } +} + +/** Starts the periodic heartbeat. Fire-and-forget — failures never block the service. */ +export function startHeartbeat(rc: RuntimeContext, startTime: Date): NodeJS.Timeout { + return setInterval(async () => { + if (!rc.isActive()) return; + const uptime = Math.floor((Date.now() - startTime.getTime()) / 1000); + try { + await sendHeartbeat(rc, uptime); + } catch (err) { + logger.warn(`Heartbeat failed (non-blocking): ${readErrorMessage(err)}`); + } + }, HEARTBEAT_INTERVAL_MS).unref(); +} + +/** Notifies the licensing server about shutdown. Best-effort. */ +export async function shutdown(rc: RuntimeContext | null): Promise { + if (!rc || !rc.apiKey) return; + try { + await postSigned('/v1/deactivate', { instance_id: rc.instanceId }, rc.apiKey); + } catch { + // Best-effort. + } +} + +/** Initiates a registration flow with the licensing server. Updates rc.registerUrl. */ +export async function initRegistration(rc: RuntimeContext, redirectUri?: string): Promise { + const payload: Record = { + tier: rc.tier, + version: rc.version, + instance_id: rc.instanceId, + }; + if (redirectUri) payload.redirect_uri = redirectUri; + + const resp = await postUnsigned<{ register_url: string; token: string }>('/v1/register/init', payload); + rc.registerUrl = resp.data?.register_url ?? ''; + rc.registerToken = resp.data?.token ?? ''; + return rc.registerUrl; +} + +/** Handles the activation callback — exchanges code, saves and activates. */ +export async function activateWithCode(rc: RuntimeContext, code: string): Promise { + const exchangeResp = await postUnsigned('/v1/register/exchange', { + authorization_code: code, + instance_id: rc.instanceId, + }); + + const result = exchangeResp.data; + if (!result?.api_key) { + throw new Error('Invalid or expired code'); + } + + await completeActivation(rc, result.api_key, result.tier, result.customer_id); +} + +/** Convenience helper for routes that need a public-safe view of the runtime. */ +export function publicSnapshot(rc: RuntimeContext): { + status: 'active' | 'inactive'; + instance_id: string; + api_key?: string; +} { + const out: { status: 'active' | 'inactive'; instance_id: string; api_key?: string } = { + status: rc.isActive() ? 'active' : 'inactive', + instance_id: rc.instanceId, + }; + if (rc.apiKey) out.api_key = maskKey(rc.apiKey); + return out; +} + +/** Required by Express app.set('licensing', rc) so routes can pull it from req.app.locals. */ +export function getRuntimeContext(): RuntimeContext | null { + return globalRC; +} diff --git a/src/licensing/store.ts b/src/licensing/store.ts new file mode 100644 index 0000000000..c912128961 --- /dev/null +++ b/src/licensing/store.ts @@ -0,0 +1,109 @@ +// Mirrors evolution-go/pkg/core/store.go +// Persists license + instance ID as key/value rows in RuntimeConfig (Prisma). + +import { PrismaRepository } from '@api/repository/repository.service'; +import { randomUUID } from 'crypto'; +import { hostname, networkInterfaces } from 'os'; + +import { ConfigKey, RuntimeData } from './model'; + +let globalDB: PrismaRepository | null = null; + +export function setDB(db: PrismaRepository): void { + globalDB = db; +} + +function requireDB(): PrismaRepository { + if (!globalDB) { + throw new Error('licensing: database not set, call setDB first'); + } + return globalDB; +} + +async function getConfig(key: string): Promise { + const db = requireDB(); + const row = await db.runtimeConfig.findUnique({ where: { key } }); + return row?.value ?? null; +} + +async function setConfig(key: string, value: string): Promise { + const db = requireDB(); + await db.runtimeConfig.upsert({ + where: { key }, + create: { key, value }, + update: { value }, + }); +} + +async function deleteConfig(key: string): Promise { + const db = requireDB(); + await db.runtimeConfig.deleteMany({ where: { key } }); +} + +export async function loadRuntimeData(): Promise { + const apiKey = await getConfig(ConfigKey.APIKey); + if (!apiKey) return null; + + const tier = (await getConfig(ConfigKey.Tier)) ?? ''; + const customerIDStr = (await getConfig(ConfigKey.CustomerID)) ?? ''; + const customerId = parseInt(customerIDStr, 10) || 0; + + return { apiKey, tier, customerId }; +} + +export async function saveRuntimeData(rd: RuntimeData): Promise { + await setConfig(ConfigKey.APIKey, rd.apiKey); + await setConfig(ConfigKey.Tier, rd.tier); + if (rd.customerId > 0) { + await setConfig(ConfigKey.CustomerID, String(rd.customerId)); + } +} + +export async function removeRuntimeData(): Promise { + await deleteConfig(ConfigKey.APIKey); + await deleteConfig(ConfigKey.Tier); + await deleteConfig(ConfigKey.CustomerID); +} + +export async function loadOrCreateInstanceID(): Promise { + const existing = await getConfig(ConfigKey.InstanceID); + if (existing && existing.length === 36) return existing; + + // Generate hardware-based instance ID (hostname + primary MAC). + const id = generateHardwareID() || randomUUID(); + await setConfig(ConfigKey.InstanceID, id); + return id; +} + +function generateHardwareID(): string { + const host = hostname() ?? ''; + const mac = getPrimaryMAC(); + if (!host && !mac) return ''; + + const seed = `${host}|${mac}`; + const buf = Buffer.alloc(16); + buf.write(seed, 0, Math.min(seed.length, 16), 'utf8'); + for (let i = 16; i < seed.length; i++) { + buf[i % 16] ^= seed.charCodeAt(i); + } + buf[6] = (buf[6] & 0x0f) | 0x40; // version 4 + buf[8] = (buf[8] & 0x3f) | 0x80; // variant + return formatUUID(buf); +} + +function getPrimaryMAC(): string { + const ifaces = networkInterfaces(); + for (const name of Object.keys(ifaces)) { + for (const iface of ifaces[name] ?? []) { + if (iface.internal) continue; + if (!iface.mac || iface.mac === '00:00:00:00:00:00') continue; + return iface.mac; + } + } + return ''; +} + +function formatUUID(b: Buffer): string { + const hex = b.toString('hex'); + return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20, 32)}`; +} diff --git a/src/licensing/transport.ts b/src/licensing/transport.ts new file mode 100644 index 0000000000..9ece90db42 --- /dev/null +++ b/src/licensing/transport.ts @@ -0,0 +1,51 @@ +// Mirrors evolution-go/pkg/core/transport.go +// HTTP transport for licensing server calls. Signed = HMAC-SHA256(body, apiKey). + +import axios, { AxiosResponse } from 'axios'; +import { createHmac } from 'crypto'; + +import { resolveEndpoint } from './endpoint'; + +const httpClient = axios.create({ timeout: 10_000 }); + +export function signPayload(body: string, secret: string): string { + return createHmac('sha256', secret).update(body).digest('hex'); +} + +export async function postSigned( + path: string, + payload: unknown, + apiKey: string, +): Promise> { + const body = JSON.stringify(payload); + return httpClient.post(resolveEndpoint() + path, body, { + headers: { + 'Content-Type': 'application/json', + 'X-Api-Key': apiKey, + 'X-Signature': signPayload(body, apiKey), + }, + // We surface non-2xx as throws — same as the Go path that checks resp.StatusCode. + }); +} + +export async function postUnsigned(path: string, payload: unknown): Promise> { + return httpClient.post(resolveEndpoint() + path, payload, { + headers: { 'Content-Type': 'application/json' }, + }); +} + +export async function getUnsigned(path: string): Promise> { + return httpClient.get(resolveEndpoint() + path); +} + +export function readErrorMessage(err: unknown): string { + if (axios.isAxiosError(err)) { + const data = err.response?.data as { message?: string; error?: string } | undefined; + const msg = data?.message ?? data?.error; + if (msg) return `${String(msg).toLowerCase()} (HTTP ${err.response?.status ?? 'n/a'})`; + if (err.response) return `HTTP ${err.response.status}`; + return err.message; + } + if (err instanceof Error) return err.message; + return 'unknown error'; +} diff --git a/src/main.ts b/src/main.ts index f1f00ba9ae..3699e2047d 100644 --- a/src/main.ts +++ b/src/main.ts @@ -5,6 +5,7 @@ import '@utils/instrumentSentry'; import { ProviderFiles } from '@api/provider/sessions'; import { PrismaRepository } from '@api/repository/repository.service'; import { HttpStatus, router } from '@api/routes/index.router'; +import { buildLicenseRouter } from '@api/routes/license.router'; import { eventManager, waMonitor } from '@api/server.module'; import { Auth, @@ -18,6 +19,8 @@ import { import { onUnexpectedError } from '@config/error.config'; import { Logger } from '@config/logger.config'; import { ROOT_DIR } from '@config/path.config'; +import { gateMiddleware, initializeRuntime, shutdown, startHeartbeat } from '@licensing/runtime'; +import { setDB } from '@licensing/store'; import * as Sentry from '@sentry/node'; import { ServerUP } from '@utils/server-up'; import axios from 'axios'; @@ -44,6 +47,17 @@ async function bootstrap() { const prismaRepository = new PrismaRepository(configService); await prismaRepository.onModuleInit(); + // Licensing — must be initialized after Prisma is connected and BEFORE any + // business router is registered. The gate middleware sits in front of routes + // and returns 503 LICENSE_REQUIRED if the license is not active yet. + setDB(prismaRepository); + const licensingRC = await initializeRuntime({ + tier: 'evolution-api', + version: process.env.npm_package_version || 'unknown', + globalApiKey: configService.get('AUTHENTICATION').API_KEY.KEY, + }); + const startedAt = new Date(); + app.use( cors({ origin(requestOrigin, callback) { @@ -70,6 +84,10 @@ async function bootstrap() { app.use('/store', express.static(join(ROOT_DIR, 'store'))); + // Licensing — public routes (always work) and gate middleware (blocks rest). + app.use('/license', buildLicenseRouter(licensingRC)); + app.use(gateMiddleware(licensingRC)); + app.use('/', router); app.use( @@ -159,6 +177,20 @@ async function bootstrap() { server.listen(httpServer.PORT, () => logger.log(httpServer.TYPE.toUpperCase() + ' - ON: ' + httpServer.PORT)); + // Start licensing heartbeat (30 min) — fire-and-forget. + startHeartbeat(licensingRC, startedAt); + + // Notify the licensing server about graceful shutdown. + const onSignal = async () => { + try { + await shutdown(licensingRC); + } finally { + process.exit(0); + } + }; + process.on('SIGTERM', onSignal); + process.on('SIGINT', onSignal); + initWA().catch((error) => { logger.error('Error loading instances: ' + error); }); diff --git a/tools/encode-url.js b/tools/encode-url.js new file mode 100755 index 0000000000..37e08aebb5 --- /dev/null +++ b/tools/encode-url.js @@ -0,0 +1,37 @@ +#!/usr/bin/env node +/** + * Encodes a URL with a fresh random XOR key for the licensing endpoint. + * Mirrors evolution-go/tools/build-dist/obfuscate.go. + * + * Usage: + * node tools/encode-url.js + * + * Example: + * node tools/encode-url.js https://license.evolutionfoundation.com.br + * + * Pipe the output into the build: + * eval "$(node tools/encode-url.js https://license.evolutionfoundation.com.br)" + * npm run build + */ + +const crypto = require('node:crypto'); + +const url = process.argv[2]; +if (!url) { + console.error('usage: node tools/encode-url.js '); + process.exit(2); +} + +const urlBytes = Buffer.from(url, 'utf8'); +const keyBytes = crypto.randomBytes(urlBytes.length); +const encBytes = Buffer.alloc(urlBytes.length); +for (let i = 0; i < urlBytes.length; i++) { + encBytes[i] = urlBytes[i] ^ keyBytes[i]; +} + +const encoded = encBytes.toString('hex'); +const key = keyBytes.toString('hex'); + +// Print eval-friendly export lines. +process.stdout.write(`export LICENSE_ENDPOINT_ENCODED=${encoded}\n`); +process.stdout.write(`export LICENSE_ENDPOINT_XOR_KEY=${key}\n`); diff --git a/tsconfig.json b/tsconfig.json index af814134a1..0b3810e379 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -24,6 +24,7 @@ "@config/*": ["./src/config/*"], "@exceptions": ["./src/exceptions"], "@libs/*": ["./src/libs/*"], + "@licensing/*": ["./src/licensing/*"], "@utils/*": ["./src/utils/*"], "@validate/*": ["./src/validate/*"] }, diff --git a/tsup.config.ts b/tsup.config.ts index f09ecd8777..99385a931e 100644 --- a/tsup.config.ts +++ b/tsup.config.ts @@ -2,6 +2,11 @@ import { cpSync } from 'node:fs'; import { defineConfig } from 'tsup'; +// Build-time licensing URL — passed via env vars only at build time, baked +// into the bundle by `define`. See src/licensing/endpoint.ts. +const licenseEndpointEncoded = JSON.stringify(process.env.LICENSE_ENDPOINT_ENCODED ?? ''); +const licenseEndpointXorKey = JSON.stringify(process.env.LICENSE_ENDPOINT_XOR_KEY ?? ''); + export default defineConfig({ entry: ['src'], outDir: 'dist', @@ -10,6 +15,10 @@ export default defineConfig({ clean: true, minify: true, format: ['cjs', 'esm'], + define: { + __LICENSE_ENDPOINT_ENCODED__: licenseEndpointEncoded, + __LICENSE_ENDPOINT_XOR_KEY__: licenseEndpointXorKey, + }, onSuccess: async () => { cpSync('src/utils/translations', 'dist/translations', { recursive: true }); }, From 72ca397cc85ec6a191248b21b13ce2025a902bb7 Mon Sep 17 00:00:00 2001 From: Danilo Leone Date: Wed, 8 Apr 2026 19:24:43 -0300 Subject: [PATCH 87/89] fix: logout instance --- .../whatsapp/whatsapp.baileys.service.ts | 32 +++++++++++++++---- 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 8dfb944335..c49591491e 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -284,7 +284,7 @@ export class BaileysStartupService extends ChannelStartupService { } public async logoutInstance() { - // Mark instance as deleting to prevent reconnection attempts + // Mark instance as deleting to prevent reconnection attempts. this.isDeleting = true; this.endSession = true; @@ -294,18 +294,27 @@ export class BaileysStartupService extends ChannelStartupService { try { await this.client.logout('Log out instance: ' + this.instanceName); } catch (error) { - this.logger.error({ message: 'Error during logout', error }); + // Downgraded to warn: logout failures here are recoverable — the + // credential cleanup below still runs and the DB row is forced to 'close'. + this.logger.warn( + `logoutInstance: client.logout() failed (${(error as Error)?.message}), proceeding with credential cleanup`, + ); } - // Improved socket cleanup + // Improved socket cleanup. try { this.client.ws?.close(); this.client.end(new Error('Instance logout')); - } catch (error) { - this.logger.error({ message: 'Error during socket cleanup', error }); + } catch { + // ignore — ws may already be closed } } + // Force the in-memory connection state to 'close' so any concurrent reader + // observes the post-logout state immediately, even if the DB update below + // is delayed. + this.stateConnection = { state: 'close', statusReason: 401 }; + const db = this.configService.get('DATABASE'); const cache = this.configService.get('CACHE'); const provider = this.configService.get('PROVIDER'); @@ -332,6 +341,11 @@ export class BaileysStartupService extends ChannelStartupService { if (sessionExists) { await this.prismaRepository.session.delete({ where: { sessionId: this.instanceId } }); } + + await this.prismaRepository.instance.update({ + where: { id: this.instanceId }, + data: { connectionStatus: 'close' }, + }); } public async getProfileName() { @@ -479,7 +493,9 @@ export class BaileysStartupService extends ChannelStartupService { } const statusCode = (lastDisconnect?.error as Boom)?.output?.statusCode; - const codesToNotReconnect = [DisconnectReason.loggedOut, DisconnectReason.forbidden, 402, 406]; + // 408 = request timeout — added per #2501 to avoid reconnect loops on + // transient network drops where the server returned a 408 in the close. + const codesToNotReconnect = [DisconnectReason.loggedOut, DisconnectReason.forbidden, 402, 406, 408]; // FIX: Do not reconnect if it's the initial connection (waiting for QR code) // This prevents infinite loop that blocks QR code generation @@ -542,6 +558,10 @@ export class BaileysStartupService extends ChannelStartupService { } if (connection === 'open') { + if (!this.client?.user?.id) { + this.logger.warn('connectionUpdate: connection open but client.user is undefined, skipping'); + return; + } this.instance.wuid = this.client.user.id.replace(/:\d+/, ''); try { const profilePic = await this.profilePicture(this.instance.wuid); From af4db31fe166cfd5af0d59bb19d522936d14dedf Mon Sep 17 00:00:00 2001 From: Davidson Gomes Date: Wed, 6 May 2026 17:49:40 -0300 Subject: [PATCH 88/89] fix(types): cast axios content-type header to string AxiosHeaderValue widened to include number; explicit String() cast keeps runtime behavior and unblocks tsc --noEmit. --- .../integrations/channel/whatsapp/whatsapp.baileys.service.ts | 2 +- .../chatbot/chatwoot/services/chatwoot.service.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index c49591491e..df5e3add56 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -3107,7 +3107,7 @@ export class BaileysStartupService extends ChannelStartupService { const response = await axios.get(mediaMessage.media, config); - mimetype = response.headers['content-type']; + mimetype = String(response.headers['content-type']); } } diff --git a/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts b/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts index 42fdabd631..6af08be024 100644 --- a/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts +++ b/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts @@ -1252,7 +1252,7 @@ export class ChatwootService { const response = await axios.get(media, { responseType: 'arraybuffer', }); - mimeType = response.headers['content-type']; + mimeType = String(response.headers['content-type']); } let type = 'document'; @@ -2402,7 +2402,7 @@ export class ChatwootService { if (isAdsMessage) { const imgBuffer = await axios.get(adsMessage.thumbnailUrl, { responseType: 'arraybuffer' }); - const extension = mimeTypes.extension(imgBuffer.headers['content-type']); + const extension = mimeTypes.extension(String(imgBuffer.headers['content-type'])); const mimeType = extension && mimeTypes.lookup(extension); if (!mimeType) { From 3fb04ed6c39649bee0c448cb5f6d80a0ab269535 Mon Sep 17 00:00:00 2001 From: Davidson Gomes Date: Tue, 12 May 2026 12:20:48 -0300 Subject: [PATCH 89/89] feat(licensing): headless auto-activation via EVOLUTION_OPERATOR_EMAIL MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When EVOLUTION_OPERATOR_EMAIL is set in .env, initializeRuntime silently calls the licensing server's /v1/register/auto endpoint on startup, persists the returned api_key and activates the instance — skipping the browser registration flow entirely. Falls back to the manual registration flow on any failure (email not yet registered, server unreachable, key suspended, etc.). Non-fatal. Requires one prior manual registration so the email is known server-side. --- env.example | 10 +++++ src/licensing/runtime.ts | 82 +++++++++++++++++++++++++++++++++++++++- 2 files changed, 90 insertions(+), 2 deletions(-) diff --git a/env.example b/env.example index d6509d5461..60d0ef115a 100644 --- a/env.example +++ b/env.example @@ -63,6 +63,16 @@ CACHE_LOCAL_TTL=86400 AUTHENTICATION_API_KEY=BQYHJGJHJ AUTHENTICATION_EXPOSE_IN_FETCH_INSTANCES=false +# =========================================== +# LICENÇA — ATIVAÇÃO AUTOMÁTICA POR E-MAIL +# =========================================== +# Defina este valor com o e-mail usado no seu primeiro registro manual. +# Na inicialização, o serviço chama silenciosamente /v1/register/auto e pula +# a etapa do navegador. Cai para o fluxo manual se o e-mail ainda não estiver +# registrado no servidor de licenciamento. +# Deixe vazio (ou não defina) para manter o comportamento padrão (registro manual). +# EVOLUTION_OPERATOR_EMAIL=operator@example.com + # =========================================== # LOGS # =========================================== diff --git a/src/licensing/runtime.ts b/src/licensing/runtime.ts index ac982f2cb5..f99d026bc0 100644 --- a/src/licensing/runtime.ts +++ b/src/licensing/runtime.ts @@ -183,14 +183,92 @@ export async function initializeRuntime(opts: InitializeOptions = {}): Promise { + const email = (process.env.EVOLUTION_OPERATOR_EMAIL ?? '').trim(); + if (!email) return false; + + const payload = { + email, + tier: rc.tier, + version: rc.version, + instance_id: rc.instanceId, + }; + + let resp; + try { + resp = await postUnsigned<{ + status?: string; + api_key?: string; + customer_id?: number; + tier?: string; + }>('/v1/register/auto', payload); + } catch (err) { + // Axios throws on non-2xx. Distinguish 404 (expected first-time path) from real errors. + const msg = readErrorMessage(err); + const isAxiosError = typeof err === 'object' && err !== null && 'response' in err; + const status = isAxiosError ? (err as { response?: { status?: number } }).response?.status : undefined; + + if (status === 404) { + logger.info('Auto-activation skipped — email not registered yet (first time?). Falling back to manual flow.'); + } else if (status === 403) { + logger.warn(`Auto-activation rejected (403): ${msg}. Falling back to manual flow.`); + } else if (status === 409) { + logger.warn(`Auto-activation rejected (409): ${msg}. Falling back to manual flow.`); + } else { + logger.warn(`Auto-activation skipped — ${msg}`); + } + return false; + } + + const data = resp.data; + if (!data?.api_key) { + logger.warn('Auto-activation response missing api_key'); + return false; + } + + rc.apiKey = data.api_key; + + try { + await saveRuntimeData({ + apiKey: data.api_key, + tier: rc.tier, + customerId: data.customer_id ?? 0, + }); + } catch (err) { + logger.warn(`Auto-activation: could not persist license: ${readErrorMessage(err)}`); + // Don't fail — in-memory state is still usable; just won't survive restart. + } + + rc.recomputeContextHash(); + rc.setActive(true); + activateIntegrity(rc); + return true; +} + function printRegistrationBanner(rc?: RuntimeContext): void { logger.warn('╔══════════════════════════════════════════════════════════╗'); logger.warn('║ License Registration Required ║');