UNPKG

n8n-nodes-selfhosthub

Version:

Collection of n8n nodes for self-hosted AI services, including Leonardo.ai integration for AI image and content generation capabilities.

178 lines 6.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.processElement = processElement; const positionUtils_1 = require("./positionUtils"); /** * Process an element object based on its type and return the API-compatible format */ function processElement(element, videoWidth, videoHeight) { const processedElement = { type: element.type, start: element.start, duration: element.duration, }; switch (element.type) { case 'image': return processImageElement(element, processedElement, videoWidth, videoHeight); case 'video': return processVideoElement(element, processedElement, videoWidth, videoHeight); case 'text': return processTextElement(element, processedElement, videoWidth, videoHeight); case 'audio': return processAudioElement(element, processedElement); case 'voice': return processVoiceElement(element, processedElement); case 'subtitles': return processSubtitlesElement(element, processedElement); default: return processedElement; } } /** * Process image element properties */ function processImageElement(element, processedElement, videoWidth, videoHeight) { if (element.src && typeof element.src === 'string') { processedElement.src = element.src; } processedElement = applyPositioning(element, processedElement, videoWidth, videoHeight); if (element.width > 0) processedElement.width = element.width; if (element.height > 0) processedElement.height = element.height; if (element.zoom !== 0) processedElement.zoom = element.zoom; return processedElement; } /** * Process video element properties */ function processVideoElement(element, processedElement, videoWidth, videoHeight) { if (element.src && typeof element.src === 'string') { processedElement.src = element.src; } processedElement = applyPositioning(element, processedElement, videoWidth, videoHeight); if (element.width > 0) processedElement.width = element.width; if (element.height > 0) processedElement.height = element.height; if (element.zoom !== 0) processedElement.zoom = element.zoom; if (element.duration !== undefined) { const duration = Number(element.duration); if (!isNaN(duration)) { if (duration > 0) { processedElement.duration = duration; } else if (duration === -1) { processedElement.duration = -1; } else if (duration === -2) { processedElement.duration = -2; } } } if (element.volume !== undefined) processedElement.volume = element.volume; if (element.muted !== undefined) processedElement.muted = element.muted; if (element.crop !== undefined) processedElement.crop = element.crop; return processedElement; } /** * Process text element properties */ function processTextElement(element, processedElement, videoWidth, videoHeight) { if (element.text && typeof element.text === 'string') { processedElement.text = element.text; } // Handle positioning processedElement = applyPositioning(element, processedElement, videoWidth, videoHeight); // Handle text-specific properties if (element.fontFamily && typeof element.fontFamily === 'string') { processedElement['font-family'] = element.fontFamily; } if (element.fontSize) processedElement['font-size'] = element.fontSize; if (element.color && typeof element.color === 'string') { processedElement.color = element.color; } return processedElement; } /** * Process audio element properties */ function processAudioElement(element, processedElement) { if (element.src && typeof element.src === 'string') { processedElement.src = element.src; } if (element.volume !== undefined) processedElement.volume = element.volume; return processedElement; } /** * Process voice element properties */ function processVoiceElement(element, processedElement) { if (element.text && typeof element.text === 'string') { processedElement.text = element.text; } if (element.voice && typeof element.voice === 'string') { processedElement.voice = element.voice; } return processedElement; } /** * Process subtitles element properties */ function processSubtitlesElement(element, processedElement) { if (element.subtitleSourceType === 'text' && element.text && typeof element.text === 'string') { processedElement.text = element.text; } else if (element.subtitleSourceType === 'src' && element.src && typeof element.src === 'string') { processedElement.src = element.src; } if (element.language && typeof element.language === 'string') { processedElement.language = element.language; } if (element.position && typeof element.position === 'string') { processedElement.position = element.position; } if (element.fontFamily && typeof element.fontFamily === 'string') { processedElement['font-family'] = element.fontFamily; } if (element.fontSize) processedElement['font-size'] = element.fontSize; if (element.color && typeof element.color === 'string') { processedElement.color = element.color; } if (element.backgroundColor && typeof element.backgroundColor === 'string') { processedElement['background-color'] = element.backgroundColor; } if (element.style) processedElement.style = element.style; if (element.opacity) processedElement.opacity = element.opacity; return processedElement; } /** * Apply positioning logic to visual elements (image, video, text) */ function applyPositioning(element, processedElement, videoWidth, videoHeight) { if (element.positionPreset && typeof element.positionPreset === 'string' && element.positionPreset !== 'custom') { processedElement.position = (0, positionUtils_1.mapPositionPresetToApiFormat)(element.positionPreset); const position = (0, positionUtils_1.calculatePositionFromPreset)(element.positionPreset, videoWidth, videoHeight, element.width, element.height); processedElement.x = position.x; processedElement.y = position.y; } else { processedElement.position = 'custom'; processedElement.x = element.x; processedElement.y = element.y; } return processedElement; } //# sourceMappingURL=elementProcessor.js.map