{"version":3,"file":"send-message.mjs","sources":["../../src/debug/send-message.ts"],"sourcesContent":["import { getDebugRoot, roomDebugInfo } from \"./core.ts\";\nimport { createModal, createModalHeader, makeDraggable } from \"./modal.ts\";\n\n\n// Create and open Send Messages modal\nexport function openSendMessagesModal(uniquePanelId) {\n    var debugInfo = roomDebugInfo.get(uniquePanelId);\n    if (!debugInfo || !debugInfo.room) {\n        console.warn('Room not found for panel:', uniquePanelId);\n        return;\n    }\n\n    var room = debugInfo.room;\n    var messageTypes = debugInfo.messageTypes;\n\n    if (!messageTypes) {\n        console.warn('No message types available for this room');\n        return;\n    }\n\n    // Remove existing modal if present\n    var existingModal = getDebugRoot().getElementById('debug-send-messages-modal');\n    if (existingModal) {\n        existingModal.remove();\n    }\n\n    // Status dot reference\n    var statusDotRef: any = {};\n    var updateConnectionStatus: any = null;\n    var onLeaveCallbackRef: any = { current: null };\n\n    // Function to update status dot color\n    const updateSendMsgStatusDot = () => {\n        if (statusDotRef.element) {\n            statusDotRef.element.style.backgroundColor = room.connection?.isOpen ? '#22c55e' : '#ef4444';\n        }\n    };\n\n    // Initial callback\n    onLeaveCallbackRef.current = updateSendMsgStatusDot;\n    room.onLeave(updateSendMsgStatusDot);\n\n    // Create modal using shared utility\n    const modal = createModal({\n        id: 'debug-send-messages-modal',\n        width: '400px',\n        minWidth: '300px',\n        maxWidth: '90vw',\n        maxHeight: '90vh',\n        room: room,\n        trackOnLeave: true,\n        onLeaveCallback: onLeaveCallbackRef\n    });\n\n    // Create header using shared utility\n    const headerComponents = createModalHeader({\n        title: debugInfo.roomName + ' - Send Message',\n        modal: modal,\n        statusDot: true,\n        statusColor: room.connection?.isOpen ? '#22c55e' : '#ef4444',\n        statusDotRef: statusDotRef\n    });\n\n    modal.appendChild(headerComponents.header);\n\n    // Make modal draggable\n    makeDraggable(modal, headerComponents.header);\n\n    // Update status dot initially\n    updateSendMsgStatusDot();\n\n    // Form content container (scrollable)\n    var formContainer = document.createElement('div');\n    formContainer.style.padding = '8px';\n    formContainer.style.overflowY = 'auto';\n    formContainer.style.backgroundColor = '#1e1e1e';\n\n    // Message Type Selector\n    var typeLabel = document.createElement('label');\n    typeLabel.textContent = 'Message Type';\n    typeLabel.style.display = 'block';\n    typeLabel.style.fontSize = '11px';\n    typeLabel.style.fontWeight = '600';\n    typeLabel.style.marginBottom = '4px';\n    typeLabel.style.color = 'rgba(255, 255, 255, 0.9)';\n\n    var typeSelect = document.createElement('select');\n    typeSelect.style.width = '100%';\n    typeSelect.style.padding = '6px 8px';\n    typeSelect.style.backgroundColor = 'rgba(255, 255, 255, 0.1)';\n    typeSelect.style.border = '1px solid rgba(255, 255, 255, 0.2)';\n    typeSelect.style.borderRadius = '4px';\n    typeSelect.style.color = '#fff';\n    typeSelect.style.fontSize = '12px';\n    typeSelect.style.cursor = 'pointer';\n    typeSelect.style.outline = 'none';\n    typeSelect.style.marginBottom = '12px';\n\n    // Add default option\n    var defaultOption = document.createElement('option');\n    defaultOption.value = '';\n    defaultOption.textContent = 'Select a message type';\n    defaultOption.disabled = true;\n    defaultOption.selected = true;\n    typeSelect.appendChild(defaultOption);\n\n    // Add message types\n    Object.keys(messageTypes).forEach(function(msgType) {\n        var option = document.createElement('option');\n        option.value = msgType;\n        option.style.color = '#000';\n        option.textContent = msgType;\n        typeSelect.appendChild(option);\n    });\n\n    // Add wildcard option for custom message types\n    var wildcardOption = document.createElement('option');\n    wildcardOption.value = '*';\n    wildcardOption.textContent = '* (Custom)';\n    typeSelect.appendChild(wildcardOption);\n\n    formContainer.appendChild(typeLabel);\n    formContainer.appendChild(typeSelect);\n\n    // Custom Message Type Input Container (shown when \"*\" is selected)\n    var customTypeContainer = document.createElement('div');\n    customTypeContainer.style.display = 'none';\n    customTypeContainer.style.marginBottom = '12px';\n\n    var customTypeLabel = document.createElement('label');\n    customTypeLabel.textContent = 'Message Type';\n    customTypeLabel.style.display = 'block';\n    customTypeLabel.style.fontSize = '11px';\n    customTypeLabel.style.fontWeight = '600';\n    customTypeLabel.style.marginBottom = '4px';\n    customTypeLabel.style.color = 'rgba(255, 255, 255, 0.9)';\n\n    var customTypeInput = document.createElement('input');\n    customTypeInput.type = 'text';\n    customTypeInput.placeholder = 'Enter message type name';\n    customTypeInput.style.width = '100%';\n    customTypeInput.style.padding = '6px 8px';\n    customTypeInput.style.backgroundColor = 'rgba(255, 255, 255, 0.05)';\n    customTypeInput.style.border = '1px solid rgba(255, 255, 255, 0.2)';\n    customTypeInput.style.borderRadius = '4px';\n    customTypeInput.style.color = '#fff';\n    customTypeInput.style.fontSize = '11px';\n    customTypeInput.style.fontFamily = 'monospace';\n    customTypeInput.style.outline = 'none';\n\n    customTypeContainer.appendChild(customTypeLabel);\n    customTypeContainer.appendChild(customTypeInput);\n    formContainer.appendChild(customTypeContainer);\n\n    // Message Payload Input Container\n    var payloadContainer = document.createElement('div');\n    payloadContainer.style.display = 'none';\n    payloadContainer.style.marginBottom = '12px';\n\n    var payloadLabel = document.createElement('label');\n    payloadLabel.textContent = 'Payload';\n    payloadLabel.style.display = 'block';\n    payloadLabel.style.fontSize = '11px';\n    payloadLabel.style.fontWeight = '600';\n    payloadLabel.style.marginBottom = '4px';\n    payloadLabel.style.color = 'rgba(255, 255, 255, 0.9)';\n\n    var payloadFieldsContainer = document.createElement('div');\n    payloadFieldsContainer.style.backgroundColor = 'rgba(255, 255, 255, 0.05)';\n    payloadFieldsContainer.style.border = '1px solid rgba(255, 255, 255, 0.2)';\n    payloadFieldsContainer.style.borderRadius = '4px';\n    payloadFieldsContainer.style.padding = '8px';\n    payloadFieldsContainer.style.fontFamily = 'monospace';\n    payloadFieldsContainer.style.fontSize = '11px';\n\n    var payloadTextarea = document.createElement('textarea');\n    payloadTextarea.style.width = '100%';\n    payloadTextarea.style.minHeight = '80px';\n    payloadTextarea.style.padding = '6px 8px';\n    payloadTextarea.style.backgroundColor = 'rgba(255, 255, 255, 0.05)';\n    payloadTextarea.style.border = '1px solid rgba(255, 255, 255, 0.2)';\n    payloadTextarea.style.borderRadius = '4px';\n    payloadTextarea.style.color = '#fff';\n    payloadTextarea.style.fontSize = '11px';\n    payloadTextarea.style.fontFamily = 'monospace';\n    payloadTextarea.style.outline = 'none';\n    payloadTextarea.style.resize = 'vertical';\n    payloadTextarea.placeholder = '{}';\n    payloadTextarea.value = '{}';\n\n    payloadContainer.appendChild(payloadLabel);\n    payloadContainer.appendChild(payloadFieldsContainer);\n    payloadContainer.appendChild(payloadTextarea);\n    formContainer.appendChild(payloadContainer);\n\n    // Error message container\n    var errorContainer = document.createElement('div');\n    errorContainer.style.display = 'none';\n    errorContainer.style.padding = '6px 8px';\n    errorContainer.style.backgroundColor = 'rgba(220, 38, 38, 0.2)';\n    errorContainer.style.border = '1px solid rgba(220, 38, 38, 0.4)';\n    errorContainer.style.borderRadius = '4px';\n    errorContainer.style.marginBottom = '8px';\n    errorContainer.style.fontSize = '11px';\n    errorContainer.style.color = '#fca5a5';\n\n    formContainer.appendChild(errorContainer);\n\n    // Variables to store current message type and its schema\n    var currentFormInputs: any = {};\n    var currentMessageType = '';\n\n    // Update payload fields based on selected message type\n    typeSelect.addEventListener('change', function() {\n        var selectedType = typeSelect.value;\n        currentMessageType = selectedType;\n\n        if (selectedType) {\n            // Show/hide custom type input based on selection\n            if (selectedType === '*') {\n                customTypeContainer.style.display = 'block';\n                customTypeInput.focus();\n            } else {\n                customTypeContainer.style.display = 'none';\n            }\n\n            payloadContainer.style.display = 'block';\n            errorContainer.style.display = 'none';\n            currentFormInputs = {};\n\n            // Clear previous fields\n            payloadFieldsContainer.innerHTML = '';\n\n            var schema = messageTypes[selectedType];\n\n            // If schema exists and has properties, create form inputs\n            if (schema && schema.properties && Object.keys(schema.properties).length > 0) {\n                payloadTextarea.style.display = 'none';\n                payloadFieldsContainer.style.display = 'block';\n\n                // Generate form fields based on schema\n                Object.keys(schema.properties).forEach(function(fieldName) {\n                    var fieldSchema = schema.properties[fieldName];\n                    var fieldContainer = document.createElement('div');\n                    fieldContainer.style.marginBottom = '8px';\n\n                    var fieldLabel = document.createElement('label');\n                    fieldLabel.textContent = fieldName;\n                    if (schema.required && schema.required.includes(fieldName)) {\n                        fieldLabel.textContent += ' *';\n                    }\n                    fieldLabel.style.display = 'block';\n                    fieldLabel.style.fontSize = '10px';\n                    fieldLabel.style.marginBottom = '3px';\n                    fieldLabel.style.color = 'rgba(255, 255, 255, 0.8)';\n\n                    var fieldInput;\n\n                    if (fieldSchema.type === 'boolean') {\n                        fieldInput = document.createElement('input');\n                        fieldInput.type = 'checkbox';\n                        fieldInput.style.width = '16px';\n                        fieldInput.style.height = '16px';\n                        fieldInput.style.cursor = 'pointer';\n                    } else if (fieldSchema.type === 'number' || fieldSchema.type === 'integer') {\n                        fieldInput = document.createElement('input');\n                        fieldInput.type = 'number';\n                        if (fieldSchema.type === 'integer') {\n                            fieldInput.step = '1';\n                        }\n                        fieldInput.style.width = '100%';\n                        fieldInput.style.padding = '4px 6px';\n                        fieldInput.style.backgroundColor = 'rgba(255, 255, 255, 0.05)';\n                        fieldInput.style.border = '1px solid rgba(255, 255, 255, 0.2)';\n                        fieldInput.style.borderRadius = '3px';\n                        fieldInput.style.color = '#fff';\n                        fieldInput.style.fontSize = '11px';\n                        fieldInput.style.outline = 'none';\n                    } else {\n                        fieldInput = document.createElement('input');\n                        fieldInput.type = 'text';\n                        fieldInput.style.width = '100%';\n                        fieldInput.style.padding = '4px 6px';\n                        fieldInput.style.backgroundColor = 'rgba(255, 255, 255, 0.05)';\n                        fieldInput.style.border = '1px solid rgba(255, 255, 255, 0.2)';\n                        fieldInput.style.borderRadius = '3px';\n                        fieldInput.style.color = '#fff';\n                        fieldInput.style.fontSize = '11px';\n                        fieldInput.style.outline = 'none';\n                    }\n\n                    if (fieldSchema.description) {\n                        var fieldDesc = document.createElement('div');\n                        fieldDesc.textContent = fieldSchema.description;\n                        fieldDesc.style.fontSize = '9px';\n                        fieldDesc.style.color = 'rgba(255, 255, 255, 0.5)';\n                        fieldDesc.style.marginTop = '2px';\n                        fieldContainer.appendChild(fieldLabel);\n                        fieldContainer.appendChild(fieldInput);\n                        fieldContainer.appendChild(fieldDesc);\n                    } else {\n                        fieldContainer.appendChild(fieldLabel);\n                        fieldContainer.appendChild(fieldInput);\n                    }\n\n                    payloadFieldsContainer.appendChild(fieldContainer);\n                    currentFormInputs[fieldName] = { input: fieldInput, schema: fieldSchema };\n                });\n            } else {\n                // Use JSON textarea for free-form input (no schema or empty schema)\n                payloadTextarea.style.display = 'block';\n                payloadFieldsContainer.style.display = 'none';\n                payloadTextarea.value = '{}';\n\n                // Update placeholder based on whether schema exists\n                if (!schema) {\n                    payloadTextarea.placeholder = 'Enter JSON payload (no message format defined)\\n\\nExample:\\n{\\n  \"key\": \"value\"\\n}';\n                } else {\n                    payloadTextarea.placeholder = '{}';\n                }\n            }\n        } else {\n            payloadContainer.style.display = 'none';\n        }\n    });\n\n    // Send Button\n    var sendButton = document.createElement('button');\n    sendButton.textContent = 'Send';\n    sendButton.style.width = '100%';\n    sendButton.style.padding = '8px 12px';\n    sendButton.style.backgroundColor = '#8b5cf6';\n    sendButton.style.border = 'none';\n    sendButton.style.borderRadius = '4px';\n    sendButton.style.color = '#fff';\n    sendButton.style.fontSize = '12px';\n    sendButton.style.fontWeight = '600';\n    sendButton.style.cursor = 'pointer';\n    sendButton.style.transition = 'background-color 0.2s';\n\n    var isButtonInSuccessState = false;\n    var hoverColor = '#7c3aed';\n    var normalColor = '#8b5cf6';\n\n    sendButton.addEventListener('mouseenter', function() {\n        if (!isButtonInSuccessState && !sendButton.disabled) {\n            sendButton.style.backgroundColor = hoverColor;\n        }\n    });\n    sendButton.addEventListener('mouseleave', function() {\n        if (!isButtonInSuccessState && !sendButton.disabled) {\n            sendButton.style.backgroundColor = normalColor;\n        }\n    });\n\n    // Update the connection status function to also manage button state\n    updateConnectionStatus = function() {\n        const isConnected = room.connection?.isOpen;\n        if (statusDotRef.element) {\n            statusDotRef.element.style.backgroundColor = isConnected ? '#22c55e' : '#ef4444';\n        }\n\n        // Update button disabled state\n        sendButton.disabled = !isConnected;\n        if (!isConnected) {\n            sendButton.style.backgroundColor = '#6b7280';\n            sendButton.style.cursor = 'not-allowed';\n            sendButton.style.opacity = '0.5';\n        } else if (!isButtonInSuccessState) {\n            sendButton.style.backgroundColor = normalColor;\n            sendButton.style.cursor = 'pointer';\n            sendButton.style.opacity = '1';\n        }\n    };\n\n    // Swap out the onLeave callback to use the combined update function\n    room.onLeave.remove(onLeaveCallbackRef.current);\n    room.onLeave(updateConnectionStatus);\n    onLeaveCallbackRef.current = updateConnectionStatus;\n\n    updateConnectionStatus();\n\n    sendButton.addEventListener('click', function() {\n        errorContainer.style.display = 'none';\n\n        // Check if room is connected\n        if (!room.connection?.isOpen) {\n            errorContainer.textContent = 'Cannot send message: Room is not connected';\n            errorContainer.style.display = 'block';\n            return;\n        }\n\n        if (!currentMessageType) {\n            errorContainer.textContent = 'Please select a message type';\n            errorContainer.style.display = 'block';\n            return;\n        }\n\n        // Determine actual message type to send\n        var actualMessageType = currentMessageType;\n        if (currentMessageType === '*') {\n            actualMessageType = customTypeInput.value.trim();\n            if (!actualMessageType) {\n                errorContainer.textContent = 'Please enter a message type name';\n                errorContainer.style.display = 'block';\n                return;\n            }\n        }\n\n        try {\n            var payload;\n\n            // Build payload from form inputs or textarea\n            if (Object.keys(currentFormInputs).length > 0) {\n                payload = {};\n                var schema = messageTypes[currentMessageType];\n\n                for (var fieldName in currentFormInputs) {\n                    var fieldData = currentFormInputs[fieldName];\n                    var input = fieldData.input;\n                    var fieldSchema = fieldData.schema;\n                    var value;\n\n                    if (fieldSchema.type === 'boolean') {\n                        value = input.checked;\n                    } else if (fieldSchema.type === 'number' || fieldSchema.type === 'integer') {\n                        value = input.value ? parseFloat(input.value) : undefined;\n                    } else {\n                        value = input.value || undefined;\n                    }\n\n                    // Only include required fields or fields with values\n                    if (value !== undefined || (schema.required && schema.required.includes(fieldName))) {\n                        payload[fieldName] = value;\n                    }\n                }\n            } else {\n                payload = JSON.parse(payloadTextarea.value);\n            }\n\n            // Send the message\n            room.send(actualMessageType, payload);\n\n            // Change button to success state\n            isButtonInSuccessState = true;\n            sendButton.textContent = 'Message sent!';\n            sendButton.style.backgroundColor = '#22c55e';\n            sendButton.style.cursor = 'default';\n\n            // Restore button after 1.5 seconds\n            setTimeout(function() {\n                isButtonInSuccessState = false;\n                sendButton.textContent = 'Send';\n                sendButton.style.backgroundColor = normalColor;\n                sendButton.style.cursor = 'pointer';\n            }, 800);\n\n        } catch (e: any) {\n            errorContainer.textContent = 'Error: ' + e.message;\n            errorContainer.style.display = 'block';\n        }\n    });\n\n    formContainer.appendChild(sendButton);\n\n    modal.appendChild(formContainer);\n    getDebugRoot().appendChild(modal);\n}\n"],"names":[],"mappings":"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"}