Spaces:
Running
Running
| /** | |
| * Open a webpage | |
| * @param {string} src - The URL of the webpage. | |
| * @returns {string} The validated URL. | |
| */ | |
| export function open_webpage(src) { | |
| try { | |
| const urlObj = new URL(src); | |
| if (!["http:", "https:"].includes(urlObj.protocol)) { | |
| throw new Error("Only HTTP and HTTPS URLs are allowed."); | |
| } | |
| return urlObj.href; | |
| } catch (error) { | |
| throw new Error("Invalid URL provided."); | |
| } | |
| } | |
| export default (input, output) => { | |
| return React.createElement( | |
| "div", | |
| { className: "bg-blue-50 border border-blue-200 rounded-lg p-4" }, | |
| React.createElement( | |
| "div", | |
| { className: "flex items-center mb-2" }, | |
| React.createElement( | |
| "div", | |
| { | |
| className: | |
| "w-8 h-8 bg-blue-100 rounded-full flex items-center justify-center mr-3", | |
| }, | |
| "π", | |
| ), | |
| React.createElement( | |
| "h3", | |
| { className: "text-blue-900 font-semibold" }, | |
| "Web Page", | |
| ), | |
| ), | |
| React.createElement("iframe", { | |
| src: output, | |
| className: "w-full border border-blue-300 rounded", | |
| width: 480, | |
| height: 360, | |
| title: "Embedded content", | |
| allow: "autoplay", | |
| frameBorder: "0", | |
| }), | |
| ); | |
| }; | |