export const ChatMessage = { name: 'ChatMessage', props: { message: { type: Object, required: true, validator: (message) => { return message.id && message.content !== undefined && message.sender && message.type; } }, formValues: { type: Object, default: () => ({}) }, isSubmittingForm: { type: Boolean, default: false }, apiPrefix: { type: String, default: '' } }, emits: ['submit-form', 'image-loaded', 'retry-message', 'specialist-complete', 'specialist-error'], data() { return { }; }, methods: { handleSpecialistError(eventData) { console.log('ChatMessage received specialist-error event:', eventData); // Creëer een error message met correcte styling this.message.type = 'error'; this.message.content = eventData.message || 'Er is een fout opgetreden bij het verwerken van uw verzoek.'; this.message.retryable = true; this.message.error = true; // Voeg error flag toe voor styling // Bubble up naar parent component voor verdere afhandeling this.$emit('specialist-error', { messageId: this.message.id, ...eventData }); }, handleSpecialistComplete(eventData) { console.log('ChatMessage received specialist-complete event:', eventData); // Update de inhoud van het bericht met het antwoord if (eventData.answer) { console.log('Updating message content with answer:', eventData.answer); this.message.content = eventData.answer; } else { console.error('No answer in specialist-complete event data'); } // Bubble up naar parent component voor eventuele verdere afhandeling this.$emit('specialist-complete', { messageId: this.message.id, ...eventData }); }, formatMessage(content) { if (!content) return ''; // Enhanced markdown-like formatting return content .replace(/\*\*(.*?)\*\*/g, '$1') .replace(/\*(.*?)\*/g, '$1') .replace(/`(.*?)`/g, '$1') .replace(/\[([^\]]+)\]\(([^)]+)\)/g, '$1') .replace(/\n/g, '
'); }, submitForm() { this.$emit('submit-form', this.message.formData, this.message.id); }, removeMessage() { // Dit zou een event moeten triggeren naar de parent component }, reactToMessage(emoji) { // Implementatie van reacties zou hier komen }, getMessageClass() { if (this.message.type === 'form') { return 'form-message'; } return `message ${this.message.sender}`; } }, template: `
{{ reaction.emoji }} {{ reaction.count }}
` };