{selectedUrls.length === crawledUrls.length
- ? "Unselect All"
- : "Select All"}
+ ? `Unselect All (${selectedUrls.length})`
+ : `Select All (${selectedUrls.length})`}
>
)}
@@ -503,41 +548,57 @@ export default function FirecrawlComponent() {
!isScraping && (
<>
- {(showAllUrls ? crawledUrls : crawledUrls.slice(0, 10)).map(
- (url, index) => (
-
-
- setSelectedUrls((prev) =>
- prev.includes(url)
- ? prev.filter((u) => u !== url)
- : [...prev, url]
- )
- }
- />
- {url}
-
- )
- )}
-
- {crawledUrls.length > 10 && (
-
- setShowAllUrls(!showAllUrls)}
+ {paginatedUrls.map((url, index) => (
+
- {showAllUrls ? "Show Less" : "Show All"}
-
-
- )}
+
+ setSelectedUrls((prev) =>
+ prev.includes(url)
+ ? prev.filter((u) => u !== url)
+ : [...prev, url]
+ )
+ }
+ />
+
+ {url.length > 70 ? `${url.slice(0, 70)}...` : url}
+
+
+ ))}
+
+
+ handlePageChange(currentPage - 1)}
+ disabled={currentPage === 1}
+ >
+
+
+
+ Page {currentPage} of{" "}
+ {Math.ceil(crawledUrls.length / urlsPerPage)}
+
+ handlePageChange(currentPage + 1)}
+ disabled={currentPage * urlsPerPage >= crawledUrls.length}
+ >
+
+
+
>
)}
-
+
{crawledUrls.length > 0 && !scrapingSelectedLoading && (
@@ -549,17 +610,24 @@ export default function FirecrawlComponent() {
{Object.keys(scrapeResults).length > 0 && (
-
Scrape Results
-
+
Scrape Results
+
+ You can do whatever you want with the scrape results. Here is a
+ basic showcase of the markdown.
+
+
{Object.entries(scrapeResults).map(([url, result]) => (
-
-
-
-
- {url
- .replace(/^(https?:\/\/)?(www\.)?/, "")
- .replace(/\/$/, "")}
-
+
+
+ {result.data.metadata.title}
+
+ {url
+ .replace(/^(https?:\/\/)?(www\.)?/, "")
+ .replace(/\/$/, "")}
+
+
+
+
{result.success ? (
<>
@@ -567,27 +635,17 @@ export default function FirecrawlComponent() {
>
) : (
-
Failed to scrape this URL
+ <>
+
+ Failed to scrape this URL
+
+
+ {result.toString()}
+
+ >
)}
-
- {
- navigator.clipboard.writeText(result.data.markdown);
- const button = event.currentTarget as HTMLButtonElement;
- const originalText = button.textContent;
- button.textContent = "Copied!";
- setTimeout(() => {
- button.textContent = originalText;
- }, 2000);
- }}
- >
- Copy Markdown
-
-
))}