/** * Constructs a preview URL for HTML files in the sandbox environment. * Properly handles URL encoding of file paths by encoding each path segment individually. * * @param sandboxUrl - The base URL of the sandbox * @param filePath - The path to the HTML file (can include /workspace/ prefix) * @returns The properly encoded preview URL, or undefined if inputs are invalid */ export function constructHtmlPreviewUrl( sandboxUrl: string | undefined, filePath: string | undefined, ): string | undefined { if (!sandboxUrl || !filePath) { return undefined; } // Remove /workspace/ prefix if present const processedPath = filePath.replace(/^\/workspace\//, ''); // Split the path into segments and encode each segment individually const pathSegments = processedPath .split('/') .map((segment) => encodeURIComponent(segment)); // Join the segments back together with forward slashes const encodedPath = pathSegments.join('/'); return `${sandboxUrl}/${encodedPath}`; }