@monarkmarkets/marketplace 2.0.13 → 2.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.esm.js +17 -4
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +16 -3
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import { memo, useState, useCallback, useMemo
|
|
2
|
+
import { memo, useState, useEffect, useCallback, useMemo } from 'react';
|
|
3
3
|
import { __awaiter, __generator, __assign } from 'tslib';
|
|
4
4
|
import { X, Check } from 'lucide-react';
|
|
5
5
|
import { Client, SortOrder10, CreateWatchlist, CreateWatchlistTargetAssetType, SortOrder15, MonarkStage } from '@monarkmarkets/api-client';
|
|
@@ -82,6 +82,17 @@ var TableRow$1 = /*#__PURE__*/memo(function (_a) {
|
|
|
82
82
|
var _g = useState(false),
|
|
83
83
|
justToggled = _g[0],
|
|
84
84
|
setJustToggled = _g[1];
|
|
85
|
+
var _h = useState(false),
|
|
86
|
+
isMounted = _h[0],
|
|
87
|
+
setIsMounted = _h[1];
|
|
88
|
+
useEffect(function () {
|
|
89
|
+
var timer = setTimeout(function () {
|
|
90
|
+
setIsMounted(true);
|
|
91
|
+
}, 50);
|
|
92
|
+
return function () {
|
|
93
|
+
return clearTimeout(timer);
|
|
94
|
+
};
|
|
95
|
+
}, []);
|
|
85
96
|
if (!(preIpoCompany === null || preIpoCompany === void 0 ? void 0 : preIpoCompany.id)) {
|
|
86
97
|
console.warn('TableRow: Missing required preIpoCompany.id');
|
|
87
98
|
return null;
|
|
@@ -159,7 +170,7 @@ var TableRow$1 = /*#__PURE__*/memo(function (_a) {
|
|
|
159
170
|
})]
|
|
160
171
|
});
|
|
161
172
|
}
|
|
162
|
-
if (isInWatchlist && isHovering && !justToggled) {
|
|
173
|
+
if (isInWatchlist && isHovering && !justToggled && isMounted) {
|
|
163
174
|
return jsxs(Fragment, {
|
|
164
175
|
children: [jsx("span", {
|
|
165
176
|
className: "transition-opacity duration-200 relative z-10",
|
|
@@ -187,7 +198,9 @@ var TableRow$1 = /*#__PURE__*/memo(function (_a) {
|
|
|
187
198
|
var getButtonClassName = function () {
|
|
188
199
|
var baseClasses = "font-medium py-2 px-4 rounded-lg transition-all duration-300 disabled:opacity-50 disabled:cursor-not-allowed inline-flex items-center justify-center gap-2 min-w-[170px] relative overflow-hidden";
|
|
189
200
|
if (isInWatchlist && !isTogglingWatchlist) {
|
|
190
|
-
|
|
201
|
+
// Only apply hover effects after component is mounted and not just toggled
|
|
202
|
+
var hoverClasses = isMounted && !justToggled ? 'hover:text-white hover:border-red-500 group' : '';
|
|
203
|
+
return "".concat(baseClasses, " bg-white border-2 border-custom-blue text-custom-blue ").concat(hoverClasses);
|
|
191
204
|
}
|
|
192
205
|
return "".concat(baseClasses, " bg-custom-blue text-white shadow-md");
|
|
193
206
|
};
|
|
@@ -248,7 +261,7 @@ var TableRow$1 = /*#__PURE__*/memo(function (_a) {
|
|
|
248
261
|
disabled: isWatchlistButtonDisabled,
|
|
249
262
|
className: getButtonClassName(),
|
|
250
263
|
"aria-label": "".concat(isInWatchlist ? 'Remove from' : 'Add to', " watchlist for ").concat(safeName),
|
|
251
|
-
children: [isInWatchlist && !isTogglingWatchlist && !justToggled && jsx("span", {
|
|
264
|
+
children: [isInWatchlist && !isTogglingWatchlist && !justToggled && isMounted && jsx("span", {
|
|
252
265
|
className: "absolute inset-0 bg-red-500 transition-transform duration-300 ease-out origin-left scale-x-0 group-hover:scale-x-100",
|
|
253
266
|
style: {
|
|
254
267
|
zIndex: 0
|
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/common/company-logo.tsx","../src/utils/formatters.ts","../src/private-table/components/table-row.tsx","../src/common/table-headers.tsx","../src/private-table/components/pagination.tsx","../src/common/loading-spinner.tsx","../src/services/private-company-service.ts","../src/hooks/usePrivateCompany.ts","../src/constants/private-company-constants.ts","../src/private-table/table.tsx","../src/services/shared-service.ts","../src/primary-table/components/table-row.tsx","../src/services/primary-company-service.ts","../src/hooks/usePrimaryCompany.ts","../src/constants/primary-company-constants.ts","../src/primary-table/table.tsx"],"sourcesContent":["import React, {memo} from \"react\";\n\n/**\n * CompanyLogo component that displays either a company logo or a fallback initial.\n *\n * @param props - Component props\n * @param props.logoURL - Optional URL to the company's logo image passed through the preIPOCompany object\n * @param props.name - Company name, used for alt text and fallback initial passed through the preIPOCompany object\n * @returns A company logo image or a fallback with the first letter of the company name\n */\nexport const CompanyLogo: React.FC<{ logoURL?: string; name: string }> = memo(({logoURL, name}) => {\n if (logoURL) {\n return (\n <img\n src={logoURL}\n alt={`${name} logo`}\n className=\"w-8 h-8 rounded-lg object-cover\"\n />\n );\n }\n\n return (\n <div className=\"w-8 h-8 bg-gray-100 rounded-lg flex items-center justify-center\">\n <span className=\"text-gray-400 text-sm font-medium\">\n {name.charAt(0)}\n </span>\n </div>\n );\n});\n\nCompanyLogo.displayName = 'CompanyLogo';","export const formatLargeNumber = (value: number): string => {\n if (value >= 1_000_000_000) {\n return `$${(value / 1_000_000_000).toFixed(1)}B`;\n } else if (value >= 1_000_000) {\n return `$${(value / 1_000_000).toFixed(1)}M`;\n }\n return `$${value.toLocaleString()}`;\n};\n\nexport const formatCurrency = (value?: number, decimals: number = 2): string => {\n if (value === undefined || value === null) return 'N/A';\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals\n }).format(value);\n};\n","import React, {memo, useCallback, useState} from \"react\";\nimport {PrivateTable} from \"../../types/types\";\nimport {CompanyLogo} from \"../../common/company-logo\";\nimport {formatCurrency, formatLargeNumber} from \"../../utils/formatters\";\nimport {Check, X} from \"lucide-react\";\n\n/**\n * TableRow component renders a row in the PrivateTable component.\n * It includes columns for company details, total funding, last round,\n * price per share, and a watchlist action button.\n */\nexport const TableRow: React.FC<PrivateTable> = memo(({\n preIpoCompany,\n companyName,\n lastRoundValuation,\n lastFundingSeries,\n lastSharePrice,\n buttonText = \"\",\n investorId,\n onButtonClick,\n isInWatchlist = false,\n watchlistLoading = false,\n onAddToWatchlist,\n onRemoveFromWatchlist\n }) => {\n const [isTogglingWatchlist, setIsTogglingWatchlist] = useState(false);\n const [isHovering, setIsHovering] = useState(false);\n const [justToggled, setJustToggled] = useState(false);\n\n if (!preIpoCompany?.id) {\n console.warn('TableRow: Missing required preIpoCompany.id');\n return null;\n }\n\n const safeName = companyName || preIpoCompany?.name || \"Unknown Company\";\n const safeCountry = preIpoCompany?.country || \"\";\n\n const handleButtonClick = useCallback((e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n if (onButtonClick && preIpoCompany?.id) {\n onButtonClick(preIpoCompany.id, investorId);\n }\n }, [preIpoCompany?.id, investorId, onButtonClick]);\n\n const handleWatchlistToggle = useCallback(async (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n\n if (!preIpoCompany?.id || !onAddToWatchlist || !onRemoveFromWatchlist) {\n return;\n }\n\n setIsTogglingWatchlist(true);\n\n try {\n if (isInWatchlist) {\n await onRemoveFromWatchlist(preIpoCompany.id);\n } else {\n await onAddToWatchlist(preIpoCompany.id);\n }\n\n setJustToggled(true);\n setTimeout(() => {\n setJustToggled(false);\n }, 800);\n } finally {\n setIsTogglingWatchlist(false);\n }\n }, [preIpoCompany?.id, isInWatchlist, onAddToWatchlist, onRemoveFromWatchlist]);\n\n const isWatchlistButtonDisabled = isTogglingWatchlist || watchlistLoading || !onAddToWatchlist || !onRemoveFromWatchlist;\n\n const getButtonContent = () => {\n if (isTogglingWatchlist) {\n return (\n <>\n <span className=\"transition-opacity duration-200 relative z-10\">\n {isInWatchlist ? 'Removing...' : 'Adding...'}\n </span>\n <svg className=\"animate-spin h-4 w-4 relative z-10\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\"></circle>\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\n </svg>\n </>\n );\n }\n\n if (isInWatchlist && isHovering && !justToggled) {\n return (\n <>\n <span className=\"transition-opacity duration-200 relative z-10\">Remove</span>\n <X className=\"h-4 w-4 transition-opacity duration-200 relative z-10\" />\n </>\n );\n }\n\n if (isInWatchlist) {\n return (\n <>\n <span className=\"transition-opacity duration-200 relative z-10\">Added</span>\n <Check className=\"h-4 w-4 transition-opacity duration-200 relative z-10\" />\n </>\n );\n }\n\n return <span className=\"transition-opacity duration-200 relative z-10\">Add to Watchlist</span>;\n };\n\n const getButtonClassName = () => {\n const baseClasses = \"font-medium py-2 px-4 rounded-lg transition-all duration-300 disabled:opacity-50 disabled:cursor-not-allowed inline-flex items-center justify-center gap-2 min-w-[170px] relative overflow-hidden\";\n\n if (isInWatchlist && !isTogglingWatchlist) {\n return `${baseClasses} bg-white border-2 border-custom-blue text-custom-blue ${!justToggled ? 'hover:text-white hover:border-red-500 group' : ''}`;\n }\n\n return `${baseClasses} bg-custom-blue text-white shadow-md`;\n };\n\n return (\n <tr\n className=\"hover:bg-gray-50 transition-colors\"\n role=\"row\"\n >\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <div className=\"flex items-center gap-3\">\n <CompanyLogo\n logoURL={preIpoCompany?.logoURL}\n name={safeName}\n />\n <div className=\"flex flex-col\">\n <span className=\"font-medium text-gray-900\">{safeName}</span>\n {safeCountry && (\n <span className=\"text-sm text-gray-500\">{safeCountry}</span>\n )}\n </div>\n </div>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <span className=\"font-medium text-gray-900\">\n {lastRoundValuation !== undefined && lastRoundValuation !== null\n ? formatLargeNumber(lastRoundValuation)\n : \"N/A\"}\n </span>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <span className=\"font-medium text-gray-900\">\n {lastFundingSeries || \"Unknown\"}\n </span>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <span className=\"font-medium text-gray-900\">\n {lastSharePrice !== undefined && lastSharePrice !== null\n ? formatCurrency(lastSharePrice)\n : \"Not Available\"}\n </span>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <button\n onClick={handleWatchlistToggle}\n onMouseEnter={() => setIsHovering(true)}\n onMouseLeave={() => setIsHovering(false)}\n disabled={isWatchlistButtonDisabled}\n className={getButtonClassName()}\n aria-label={`${isInWatchlist ? 'Remove from' : 'Add to'} watchlist for ${safeName}`}\n >\n {isInWatchlist && !isTogglingWatchlist && !justToggled && (\n <span\n className=\"absolute inset-0 bg-red-500 transition-transform duration-300 ease-out origin-left scale-x-0 group-hover:scale-x-100\"\n style={{ zIndex: 0 }}\n />\n )}\n {getButtonContent()}\n </button>\n </td>\n </tr>\n );\n});\n\nTableRow.displayName = 'TableRow';","import React, {memo} from 'react';\n\ninterface Column {\n title: string;\n width?: string;\n}\n\ninterface TableHeaderProps {\n columns: Column[];\n}\n\n/**\n * Common TableHeader component that can be configured for different table types.\n * It renders a header row with configurable column titles and styling.\n * @param columns - Array of column configurations with titles and optional widths\n */\nexport const TableHeaders = memo(({columns}: TableHeaderProps) => (\n <thead>\n <tr\n className=\"bg-gray-50 border-b border-gray-200\"\n role=\"row\"\n >\n {columns.map((column, index) => (\n <th\n key={`${column.title}-${index}`}\n className={`py-3 px-4 text-left text-sm font-semibold text-gray-900 ${column.width || ''}`}\n scope=\"col\"\n role=\"columnheader\"\n >\n {column.title}\n </th>\n ))}\n </tr>\n </thead>\n));\n\nTableHeaders.displayName = 'TableHeader';","import React, {memo, useCallback, useMemo} from \"react\";\nimport {PaginationProps} from \"../../types/types\";\n\nconst NavigationButton = memo(({\n onClick,\n disabled,\n direction,\n }: {\n onClick: () => void;\n disabled: boolean;\n direction: 'previous' | 'next';\n}) => (\n <button\n onClick={onClick}\n disabled={disabled}\n className=\"p-2 rounded-lg text-gray-600 hover:bg-gray-100 disabled:opacity-50 disabled:hover:bg-transparent disabled:cursor-not-allowed transition-colors\"\n aria-label={`${direction} page`}\n >\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d={direction === 'previous' ? \"M15 19l-7-7 7-7\" : \"M9 5l7 7-7 7\"}\n />\n </svg>\n </button>\n));\n\nNavigationButton.displayName = 'NavigationButton';\n\nconst PageButton = memo(({\n page,\n isCurrentPage,\n onClick\n }: {\n page: number;\n isCurrentPage: boolean;\n onClick: () => void;\n}) => (\n <button\n onClick={onClick}\n disabled={isCurrentPage}\n className={`w-10 h-10 rounded-lg text-sm font-medium transition-colors ${\n isCurrentPage\n ? 'bg-custom-blue text-white'\n : 'text-gray-600 hover:bg-gray-100'\n }`}\n aria-label={`Go to page ${page}`}\n aria-current={isCurrentPage ? 'page' : undefined}\n >\n {page}\n </button>\n));\n\nPageButton.displayName = 'PageButton';\n\n/**\n * Pagination component renders pagination controls for the PrivateTable component.\n * It includes navigation buttons for previous and next pages, and page number buttons.\n */\nexport const Pagination: React.FC<PaginationProps> = memo(({\n currentPage,\n totalPages,\n onPageChange,\n }) => {\n const handlePrevious = useCallback(() => {\n onPageChange(currentPage - 1);\n }, [currentPage, onPageChange]);\n\n const handleNext = useCallback(() => {\n onPageChange(currentPage + 1);\n }, [currentPage, onPageChange]);\n\n const pageNumbers = useMemo(() => {\n const pages = [];\n const showEllipsis = totalPages > 7;\n\n if (showEllipsis) {\n if (currentPage <= 4) {\n for (let i = 1; i <= 5; i++) {\n pages.push(i);\n }\n pages.push('ellipsis');\n pages.push(totalPages);\n } else if (currentPage >= totalPages - 3) {\n pages.push(1);\n pages.push('ellipsis');\n for (let i = totalPages - 4; i <= totalPages; i++) {\n pages.push(i);\n }\n } else {\n pages.push(1);\n pages.push('ellipsis');\n for (let i = currentPage - 1; i <= currentPage + 1; i++) {\n pages.push(i);\n }\n pages.push('ellipsis');\n pages.push(totalPages);\n }\n } else {\n for (let i = 1; i <= totalPages; i++) {\n pages.push(i);\n }\n }\n\n return pages;\n }, [currentPage, totalPages]);\n\n return (\n <nav\n role=\"navigation\"\n aria-label=\"Pagination\"\n className=\"flex items-center justify-center gap-1\"\n >\n <NavigationButton\n onClick={handlePrevious}\n disabled={currentPage <= 1}\n direction=\"previous\"\n />\n\n <div className=\"flex items-center gap-1 mx-2\">\n {pageNumbers.map((page, index) => (\n page === 'ellipsis' ? (\n <span\n key={`ellipsis-${index}`}\n className=\"w-10 h-10 flex items-center justify-center text-gray-500\"\n aria-hidden=\"true\"\n >\n ...\n </span>\n ) : (\n <PageButton\n key={page}\n page={page as number}\n isCurrentPage={page === currentPage}\n onClick={() => onPageChange(page as number)}\n />\n )\n ))}\n </div>\n\n <NavigationButton\n onClick={handleNext}\n disabled={currentPage >= totalPages}\n direction=\"next\"\n />\n </nav>\n );\n});\n\nPagination.displayName = 'Pagination';","export const LoadingSpinner = () => (\n <svg className=\"animate-spin h-8 w-8 text-custom-blue\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\"\n viewBox=\"0 0 24 24\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\"></circle>\n <path className=\"opacity-75\" fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\n </svg>\n);","import {\n Client,\n PreIPOCompanyApiResponse,\n SortOrder10,\n SortBy,\n CreateWatchlist,\n CreateWatchlistTargetAssetType,\n Watchlist\n} from \"@monarkmarkets/api-client\";\n\n/**\n * Service for managing Pre-IPO company operations and watchlist functionality.\n */\nexport class PreIPOCompanyService {\n private readonly _client: Client;\n\n constructor() {\n this._client = new Client(\"/api\");\n }\n\n /**\n * Retrieves all Pre-IPO companies with optional filtering and pagination.\n *\n * @param searchTerm - Optional search term to filter companies\n * @param searchCategories - Optional array of categories to filter by\n * @param sortBy - Field to sort by\n * @param sortOrder - Sort order for results (default: Descending)\n * @param minLastValuation - Minimum last valuation filter\n * @param maxLastValuation - Maximum last valuation filter\n * @param minTotalFunding - Minimum total funding filter\n * @param maxTotalFunding - Maximum total funding filter\n * @param listingType - Optional listing type filter to categorize companies by their listing status\n * @param isActive - Optional flag to filter companies by their active status\n * @param page - Optional page number for pagination\n * @param pageSize - Number of items per page (default: 25)\n * @returns Promise resolving to PreIPOCompanyApiResponse or null if operation fails\n */\n public async getAllCompanies(\n searchTerm?: string,\n searchCategories?: string[],\n sortBy?: SortBy,\n sortOrder: SortOrder10 = SortOrder10.Descending,\n minLastValuation?: number,\n maxLastValuation?: number,\n minTotalFunding?: number,\n maxTotalFunding?: number,\n listingType?: string,\n isActive?: boolean,\n page?: number,\n pageSize: number = 25\n ): Promise<PreIPOCompanyApiResponse | null> {\n this.validateParameters(page, pageSize, minLastValuation, maxLastValuation, minTotalFunding, maxTotalFunding);\n\n try {\n return await this._client.getAllPreIPOCompanies(\n page,\n pageSize,\n searchTerm,\n searchCategories,\n sortBy,\n sortOrder,\n minLastValuation,\n maxLastValuation,\n minTotalFunding,\n maxTotalFunding,\n listingType,\n isActive\n );\n } catch (error) {\n this.logError(error, {\n searchTerm,\n searchCategories,\n sortBy,\n sortOrder,\n minLastValuation,\n maxLastValuation,\n minTotalFunding,\n maxTotalFunding,\n listingType,\n isActive,\n page,\n pageSize\n });\n\n return null;\n }\n }\n\n /**\n * Add a Pre-IPO company to the investor's watchlist.\n *\n * @param investorId - The unique identifier of the investor\n * @param targetId - The Pre-IPO company ID to add to watchlist\n * @returns Promise resolving to Watchlist item or null if operation fails\n */\n public async addToWatchlist(\n investorId: string,\n targetId: string\n ): Promise<Watchlist | null> {\n if (!investorId?.trim()) {\n throw new Error(\"investorId is required and cannot be empty\");\n }\n\n if (!targetId?.trim()) {\n throw new Error(\"targetId is required and cannot be empty\");\n }\n\n try {\n const watchlistItem = new CreateWatchlist({\n investorId,\n targetId,\n targetAssetType: CreateWatchlistTargetAssetType.PreIPOCompany\n });\n\n return await this._client.createOrUpdate(watchlistItem);\n } catch (error) {\n console.error(\n `Failed to add Pre-IPO company ${targetId} to watchlist for investor ${investorId}:`,\n {\n investorId,\n targetId,\n error: error instanceof Error ? error.message : error\n }\n );\n return null;\n }\n }\n\n /**\n * Remove a Pre-IPO company from the investor's watchlist.\n *\n * @param investorId - The unique identifier of the investor\n * @param targetId - The Pre-IPO company ID to remove from watchlist\n * @returns Promise resolving to true if successful, false otherwise\n */\n public async removeFromWatchlist(\n investorId: string,\n targetId: string\n ): Promise<boolean> {\n if (!investorId?.trim()) {\n throw new Error(\"investorId is required and cannot be empty\");\n }\n\n if (!targetId?.trim()) {\n throw new Error(\"targetId is required and cannot be empty\");\n }\n\n try {\n await this._client.delete(investorId, targetId);\n return true;\n } catch (error) {\n console.error(\n `Failed to remove Pre-IPO company ${targetId} from watchlist for investor ${investorId}:`,\n {\n investorId,\n targetId,\n error: error instanceof Error ? error.message : error\n }\n );\n return false;\n }\n }\n\n /**\n * Check if a Pre-IPO company is in the investor's watchlist.\n *\n * @param investorId - The unique identifier of the investor\n * @param targetId - The Pre-IPO company ID to check\n * @returns Promise resolving to true if in watchlist, false otherwise\n */\n public async isInWatchlist(\n investorId: string,\n targetId: string\n ): Promise<boolean> {\n if (!investorId?.trim() || !targetId?.trim()) {\n return false;\n }\n\n try {\n const watchlistItem = await this._client.getByInvestorAndTarget(investorId, targetId);\n return !!watchlistItem;\n } catch (error) {\n return false;\n }\n }\n\n /**\n * Batch check watchlist status for multiple Pre-IPO companies.\n *\n * @param investorId - The unique identifier of the investor\n * @param targetIds - Array of Pre-IPO company IDs to check\n * @returns Promise resolving to a Map of targetId -> boolean (true if in watchlist)\n */\n public async batchCheckWatchlist(\n investorId: string,\n targetIds: string[]\n ): Promise<Map<string, boolean>> {\n const watchlistStatus = new Map<string, boolean>();\n\n if (!investorId?.trim() || !targetIds.length) {\n return watchlistStatus;\n }\n\n const promises = targetIds.map(async (targetId) => {\n const isInWatchlist = await this.isInWatchlist(investorId, targetId);\n return { targetId, isInWatchlist };\n });\n\n try {\n const results = await Promise.all(promises);\n results.forEach(({ targetId, isInWatchlist }) => {\n watchlistStatus.set(targetId, isInWatchlist);\n });\n } catch (error) {\n console.error('Failed to batch check watchlist status:', {\n investorId,\n targetIds,\n error: error instanceof Error ? error.message : error\n });\n }\n\n return watchlistStatus;\n }\n\n private validateParameters(\n page?: number,\n pageSize?: number,\n minLastValuation?: number,\n maxLastValuation?: number,\n minTotalFunding?: number,\n maxTotalFunding?: number\n ): void {\n if (pageSize !== undefined && (pageSize <= 0 || pageSize > 100)) {\n throw new Error(\"pageSize must be between 1 and 100\");\n }\n\n if (page !== undefined && page < 0) {\n throw new Error(\"page must be non-negative\");\n }\n\n if (minLastValuation !== undefined && minLastValuation < 0) {\n throw new Error(\"minLastValuation must be non-negative\");\n }\n\n if (maxLastValuation !== undefined && maxLastValuation < 0) {\n throw new Error(\"maxLastValuation must be non-negative\");\n }\n\n if (minLastValuation !== undefined && maxLastValuation !== undefined && minLastValuation > maxLastValuation) {\n throw new Error(\"minLastValuation cannot be greater than maxLastValuation\");\n }\n\n if (minTotalFunding !== undefined && minTotalFunding < 0) {\n throw new Error(\"minTotalFunding must be non-negative\");\n }\n\n if (maxTotalFunding !== undefined && maxTotalFunding < 0) {\n throw new Error(\"maxTotalFunding must be non-negative\");\n }\n\n if (minTotalFunding !== undefined && maxTotalFunding !== undefined && minTotalFunding > maxTotalFunding) {\n throw new Error(\"minTotalFunding cannot be greater than maxTotalFunding\");\n }\n }\n\n private logError(error: unknown, parameters: Record<string, unknown>): void {\n console.error('Failed to retrieve Pre-IPO companies:', {\n ...parameters,\n error: error instanceof Error ? error.message : error\n });\n }\n}","import { useState, useEffect, useCallback, useMemo } from 'react';\nimport { PreIPOCompanyApiResponse, SortOrder10, SortBy } from '@monarkmarkets/api-client';\nimport { PreIPOCompanyService } from '../services/private-company-service';\n\ninterface UsePrivateCompaniesParams {\n investorId?: string;\n searchTerm?: string;\n searchCategories?: string[];\n sortBy?: SortBy;\n sortOrder?: SortOrder10;\n minLastValuation?: number;\n maxLastValuation?: number;\n minTotalFunding?: number;\n maxTotalFunding?: number;\n listingType?: string;\n isActive?: boolean;\n page?: number;\n pageSize?: number;\n enabled?: boolean;\n}\n\ninterface UsePrivateCompaniesReturn {\n data: PreIPOCompanyApiResponse | null;\n loading: boolean;\n error: string | null;\n watchlistStatus: Map<string, boolean>;\n loadingWatchlist: boolean;\n refetch: () => Promise<void>;\n refetchWatchlist: () => Promise<void>;\n addToWatchlist: (targetId: string) => Promise<boolean>;\n removeFromWatchlist: (targetId: string) => Promise<boolean>;\n}\n\n/**\n * Hook for fetching private company data with automatic loading states, error handling, and watchlist management.\n */\nexport const usePrivateCompanies = ({\n investorId,\n searchTerm,\n searchCategories,\n sortBy,\n sortOrder = SortOrder10.Descending,\n minLastValuation,\n maxLastValuation,\n minTotalFunding,\n maxTotalFunding,\n listingType,\n isActive,\n page,\n pageSize = 25,\n enabled = true\n }: UsePrivateCompaniesParams): UsePrivateCompaniesReturn => {\n const [data, setData] = useState<PreIPOCompanyApiResponse | null>(null);\n const [loading, setLoading] = useState<boolean>(false);\n const [error, setError] = useState<string | null>(null);\n const [watchlistStatus, setWatchlistStatus] = useState<Map<string, boolean>>(new Map());\n const [loadingWatchlist, setLoadingWatchlist] = useState<boolean>(false);\n\n const preIPOService = useMemo(() => new PreIPOCompanyService(), []);\n\n const fetchData = useCallback(async () => {\n if (!enabled) {\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const result = await preIPOService.getAllCompanies(\n searchTerm,\n searchCategories,\n sortBy,\n sortOrder,\n minLastValuation,\n maxLastValuation,\n minTotalFunding,\n maxTotalFunding,\n listingType,\n isActive,\n page,\n pageSize\n );\n\n if (result === null) {\n setError('Failed to fetch private company data');\n setData(null);\n } else {\n setData(result);\n }\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : 'An unexpected error occurred';\n setError(errorMessage);\n setData(null);\n } finally {\n setLoading(false);\n }\n }, [\n preIPOService,\n enabled,\n searchTerm,\n searchCategories,\n sortBy,\n sortOrder,\n minLastValuation,\n maxLastValuation,\n minTotalFunding,\n maxTotalFunding,\n listingType,\n isActive,\n page,\n pageSize\n ]);\n\n const fetchWatchlistStatus = useCallback(async () => {\n if (!investorId || !data?.items || data.items.length === 0) {\n return;\n }\n\n setLoadingWatchlist(true);\n try {\n const companyIds = data.items.map(company => company.id).filter(Boolean) as string[];\n const status = await preIPOService.batchCheckWatchlist(investorId, companyIds);\n setWatchlistStatus(status);\n } catch (err) {\n console.error('Failed to fetch watchlist status:', err);\n } finally {\n setLoadingWatchlist(false);\n }\n }, [investorId, data?.items, preIPOService]);\n\n const addToWatchlist = useCallback(async (targetId: string): Promise<boolean> => {\n if (!investorId) {\n console.error('Cannot add to watchlist: investorId is required');\n return false;\n }\n\n try {\n const result = await preIPOService.addToWatchlist(investorId, targetId);\n if (result) {\n // Update local state\n setWatchlistStatus(prev => new Map(prev).set(targetId, true));\n return true;\n }\n return false;\n } catch (err) {\n console.error('Failed to add to watchlist:', err);\n return false;\n }\n }, [investorId, preIPOService]);\n\n const removeFromWatchlist = useCallback(async (targetId: string): Promise<boolean> => {\n if (!investorId) {\n console.error('Cannot remove from watchlist: investorId is required');\n return false;\n }\n\n try {\n const result = await preIPOService.removeFromWatchlist(investorId, targetId);\n if (result) {\n // Update local state\n setWatchlistStatus(prev => new Map(prev).set(targetId, false));\n return true;\n }\n return false;\n } catch (err) {\n console.error('Failed to remove from watchlist:', err);\n return false;\n }\n }, [investorId, preIPOService]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n useEffect(() => {\n if (data?.items && data.items.length > 0) {\n fetchWatchlistStatus();\n }\n }, [fetchWatchlistStatus, data?.items]);\n\n const refetch = useCallback(async () => {\n await fetchData();\n }, [fetchData]);\n\n const refetchWatchlist = useCallback(async () => {\n await fetchWatchlistStatus();\n }, [fetchWatchlistStatus]);\n\n return {\n data,\n loading,\n error,\n watchlistStatus,\n loadingWatchlist,\n refetch,\n refetchWatchlist,\n addToWatchlist,\n removeFromWatchlist\n };\n};","/**\n * Constants for Pre-IPO company operations\n */\nexport const PRIVATE_COMPANY_CONSTANTS = {\n /**\n * Default page size for pagination\n */\n DEFAULT_PAGE_SIZE: 25,\n\n /**\n * Maximum allowed page size\n */\n MAX_PAGE_SIZE: 100,\n\n /**\n * Minimum allowed page size\n */\n MIN_PAGE_SIZE: 1,\n\n /**\n * Default starting page number (0-based)\n */\n DEFAULT_PAGE: 1,\n\n /**\n * Minimum allowed valuation and funding values\n */\n MIN_VALUATION: 0,\n MIN_FUNDING: 0,\n\n /**\n * Error messages\n */\n ERRORS: {\n INVALID_PAGE_SIZE: 'pageSize must be between 1 and 100',\n INVALID_PAGE: 'page must be non-negative',\n INVALID_MIN_VALUATION: 'minLastValuation must be non-negative',\n INVALID_MAX_VALUATION: 'maxLastValuation must be non-negative',\n INVALID_VALUATION_RANGE: 'minLastValuation cannot be greater than maxLastValuation',\n INVALID_MIN_FUNDING: 'minTotalFunding must be non-negative',\n INVALID_MAX_FUNDING: 'maxTotalFunding must be non-negative',\n INVALID_FUNDING_RANGE: 'minTotalFunding cannot be greater than maxTotalFunding',\n FETCH_FAILED: 'Failed to fetch Pre-IPO company data',\n UNEXPECTED_ERROR: 'An unexpected error occurred'\n },\n\n /**\n * API endpoint configuration\n */\n API: {\n BASE_PATH: '/api'\n }\n} as const;\n\n/**\n * Type for error message keys\n */\nexport type PrivateCompanyErrorKey = keyof typeof PRIVATE_COMPANY_CONSTANTS.ERRORS;","import React, { useEffect, useState, useCallback, useMemo } from \"react\";\nimport { TableRow } from \"./components/table-row\";\nimport { TableHeaders } from \"../common/table-headers\";\nimport { Pagination } from \"./components/pagination\";\nimport { PrivateTableProps } from \"../types/types\";\nimport { LoadingSpinner } from \"../common/loading-spinner\";\nimport { usePrivateCompanies } from \"../hooks/usePrivateCompany\";\nimport { PRIVATE_COMPANY_CONSTANTS } from \"../constants/private-company-constants\";\nimport { SortOrder10 } from \"@monarkmarkets/api-client\";\n\nconst PRIVATE_COLUMNS = [\n { title: 'Company' },\n { title: 'Last Round Valuation' },\n { title: 'Last Round' },\n { title: 'Last Round Price/Share' },\n { title: 'Watchlist' }\n];\n\n/**\n * PrivateTable component displays a table of pre-IPO companies with pagination and loading states.\n * It includes table headers, rows, and pagination controls using the usePrivateCompanies hook.\n */\nexport const PrivateTable = ({\n investorId,\n onButtonClick,\n buttonText = \"Submit IOI\",\n isLoading: externalLoading = false,\n initialPage = 1,\n pageSize = PRIVATE_COMPANY_CONSTANTS.DEFAULT_PAGE_SIZE,\n searchTerm = '',\n onPageChange,\n onDataLoaded,\n listingType,\n isActive,\n }: PrivateTableProps) => {\n const [currentPage, setCurrentPage] = useState(initialPage);\n\n const {\n data,\n loading,\n error,\n watchlistStatus,\n loadingWatchlist,\n refetch,\n addToWatchlist,\n removeFromWatchlist\n } = usePrivateCompanies({\n investorId,\n searchTerm,\n page: currentPage,\n pageSize,\n sortOrder: SortOrder10.Descending,\n listingType,\n isActive,\n enabled: true\n });\n\n const isFullyLoaded = !loading && !loadingWatchlist && data !== null;\n const isLoading = useMemo(() => externalLoading || loading || loadingWatchlist, [externalLoading, loading, loadingWatchlist]);\n const preIpoCompany = useMemo(() => data?.items || [], [data?.items]);\n const totalPages = useMemo(() => data?.pagination?.totalPages || 1, [data?.pagination?.totalPages]);\n\n useEffect(() => {\n setCurrentPage(1);\n }, [searchTerm]);\n\n useEffect(() => {\n setCurrentPage(initialPage);\n }, [initialPage]);\n\n useEffect(() => {\n if (data) {\n onDataLoaded?.(preIpoCompany, totalPages);\n }\n }, [data, preIpoCompany, totalPages, onDataLoaded]);\n\n const handlePageChange = useCallback((page: number) => {\n setCurrentPage(page);\n onPageChange?.(page);\n }, [onPageChange]);\n\n const ErrorState = () => (\n <div className=\"bg-white rounded-lg shadow-sm p-8 text-center\">\n <p className=\"text-gray-500 mb-4\">\n {PRIVATE_COMPANY_CONSTANTS.ERRORS.FETCH_FAILED}. Please try again later.\n </p>\n <button\n onClick={refetch}\n className=\"px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600 transition-colors\"\n >\n Retry\n </button>\n </div>\n );\n\n const EmptyState = () => (\n <div className=\"bg-white rounded-lg shadow-sm p-8 text-center\">\n <p className=\"text-gray-500\">No companies available</p>\n </div>\n );\n\n const LoadingOverlay = () => (\n <div className=\"bg-white rounded-lg shadow-sm p-8 flex items-center justify-center\">\n <LoadingSpinner />\n </div>\n );\n\n if (error) {\n return <ErrorState />;\n }\n\n if (!isFullyLoaded) {\n return <LoadingOverlay />;\n }\n\n if (preIpoCompany.length === 0) {\n return <EmptyState />;\n }\n\n return (\n <div className=\"space-y-4\">\n <div className=\"bg-white rounded-lg shadow-sm overflow-hidden\">\n <table className=\"w-full table-fixed\">\n <TableHeaders columns={PRIVATE_COLUMNS} />\n <tbody className=\"relative\">\n {preIpoCompany.map((company) => (\n <TableRow\n key={company.id}\n preIpoCompany={company}\n companyName={company.name || ''}\n lastRoundValuation={company.lastValuation}\n lastFundingSeries={company.lastFundingSeries}\n lastSharePrice={company.lastSharePrice}\n buttonText={buttonText}\n investorId={investorId}\n onButtonClick={onButtonClick}\n isInWatchlist={watchlistStatus.get(company.id) || false}\n watchlistLoading={loadingWatchlist}\n onAddToWatchlist={addToWatchlist}\n onRemoveFromWatchlist={removeFromWatchlist}\n />\n ))}\n </tbody>\n </table>\n </div>\n\n <Pagination\n currentPage={currentPage}\n totalPages={totalPages}\n onPageChange={handlePageChange}\n />\n </div>\n );\n};","import {Client} from \"@monarkmarkets/api-client\";\n\nexport class SharedService {\n private _client: Client;\n\n constructor() {\n this._client = new Client(\"/api\");\n }\n\n public async GetCompanyLogoAndCountry(\n preIPOCompanyId: string,\n ): Promise<{ logoURL: string; location: string } | null> {\n try {\n const company = await this._client.getPreIPOCompanyById(preIPOCompanyId);\n if (company) {\n return {\n logoURL: company.logoURL || '',\n location: company.country || 'Location not available'\n };\n }\n return null;\n } catch (error) {\n console.error(`Failed to retrieve company logo and location for ID ${preIPOCompanyId}:`, error);\n return null;\n }\n }\n}\n","import React, {memo, useCallback, useEffect, useState} from \"react\";\nimport {LogoAndCountryProps, SpvRowProps} from \"../../types/types\";\nimport {CompanyLogo} from \"../../common/company-logo\";\nimport {formatCurrency} from \"../../utils/formatters\";\nimport {SharedService} from \"../../services/shared-service\";\n\n/**\n * TableRow component renders a row in the PrimaryTable component.\n * It includes columns for company details, price per share, minimum investment,\n * management fees, and an action to invest.\n */\nexport const TableRow: React.FC<SpvRowProps> = memo(({\n preIPOCompanySPV,\n companyName,\n allInPricePerShare,\n minCommitmentAmount,\n managementFee,\n buttonText = \"\",\n investorId,\n onButtonClick\n }) => {\n const handleButtonClick = useCallback((e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n onButtonClick?.(preIPOCompanySPV.id, investorId);\n }, [preIPOCompanySPV.id, investorId, onButtonClick]);\n\n const [companyDetails, setCompanyDetails] = useState<LogoAndCountryProps | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n const fetchCompanyDetails = async () => {\n setIsLoading(true);\n const service = new SharedService();\n try {\n const details = await service.GetCompanyLogoAndCountry(\n preIPOCompanySPV.preIPOCompanyId,\n );\n setCompanyDetails(details);\n } catch (error) {\n console.error('Error fetching company details:', error);\n } finally {\n setIsLoading(false);\n }\n };\n\n fetchCompanyDetails();\n }, [preIPOCompanySPV.preIPOCompanyId, investorId]);\n\n return (\n <tr\n className=\"hover:bg-gray-50 transition-colors\"\n role=\"row\"\n >\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <div className=\"flex items-center gap-3\">\n {isLoading ? (\n <div className=\"w-8 h-8 animate-pulse bg-gray-200 rounded-lg\"/>\n ) : (\n <CompanyLogo\n logoURL={companyDetails?.logoURL}\n name={companyName}\n />\n )}\n <div className=\"flex flex-col\">\n <span className=\"font-medium text-gray-900\">{companyName}</span>\n <span className=\"text-sm text-gray-500\">\n {isLoading ? (\n <div className=\"h-4 w-24 animate-pulse bg-gray-200 rounded\"/>\n ) : (\n companyDetails?.location || 'Location not available'\n )}\n </span>\n </div>\n </div>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <span className=\"font-medium text-gray-900\">\n {allInPricePerShare !== undefined ? formatCurrency(allInPricePerShare) : \"N/A\"}\n </span>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <span className=\"font-medium text-gray-900\">\n {minCommitmentAmount !== undefined ? formatCurrency(minCommitmentAmount) : \"N/A\"}\n </span>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <span className=\"font-medium text-gray-900\">\n {managementFee !== undefined ? `${managementFee}%` : \"N/A\"}\n </span>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <button\n onClick={handleButtonClick}\n className=\"bg-custom-blue hover:bg-custom-blue-dark text-white font-medium py-2 px-4 rounded-lg shadow-md transition-all duration-200\"\n aria-label={`${buttonText} for ${companyName}`}\n >\n {buttonText}\n </button>\n </td>\n </tr>\n );\n});\n\nTableRow.displayName = 'TableRow';","import { Client, MonarkStage, PreIPOCompanySPVApiResponse, SortOrder15, SortBy2 } from \"@monarkmarkets/api-client\";\n\n/**\n * Service for managing Special Purpose Vehicle (SPV) operations.\n */\nexport class PreIPOCompanySPVService {\n private readonly _client: Client;\n\n constructor() {\n this._client = new Client(\"/api\");\n }\n\n /**\n * Retrieves all SPVs for a specific investor with optional filtering and pagination.\n *\n * @param investorId - The unique identifier of the investor\n * @param nameFilter - Optional filter to search SPVs by name\n * @param preIPOCompanyId - Optional filter to search by pre-IPO company ID\n * @param preIPOCompanyInvestmentId - Optional filter to search by pre-IPO company investment ID\n * @param page - Optional page number for pagination\n * @param pageSize - Number of items per page (default: 25)\n * @param sortOrder - Sort order for results (default: Descending)\n * @param sortBy - Field to sort by\n * @returns Promise resolving to PreIPOCompanySPVApiResponse or null if operation fails\n */\n public async getAllSpvs(\n investorId: string,\n nameFilter?: string,\n preIPOCompanyId?: string,\n preIPOCompanyInvestmentId?: string,\n page?: number,\n pageSize: number = 25,\n sortOrder: SortOrder15 = SortOrder15.Descending,\n sortBy?: SortBy2\n ): Promise<PreIPOCompanySPVApiResponse | null> {\n if (!investorId?.trim()) {\n throw new Error(\"investorId is required and cannot be empty\");\n }\n\n if (pageSize <= 0 || pageSize > 100) {\n throw new Error(\"pageSize must be between 1 and 100\");\n }\n\n if (page !== undefined && page < 0) {\n throw new Error(\"page must be non-negative\");\n }\n\n try {\n return await this._client.getAllPreIPOCompanySPVs(\n investorId,\n MonarkStage.PRIMARY_FUNDRAISE,\n undefined,\n nameFilter,\n preIPOCompanyId,\n preIPOCompanyInvestmentId,\n true,\n page,\n pageSize,\n undefined,\n sortOrder,\n sortBy\n );\n } catch (error) {\n console.error(\n `Failed to retrieve SPVs for investor ${investorId}:`,\n {\n investorId,\n nameFilter,\n preIPOCompanyId,\n preIPOCompanyInvestmentId,\n page,\n pageSize,\n error: error instanceof Error ? error.message : error\n }\n );\n\n return null;\n }\n }\n}\n","import { useState, useEffect, useCallback } from 'react';\nimport { PreIPOCompanySPVApiResponse, SortOrder15, SortBy2 } from '@monarkmarkets/api-client';\nimport { PreIPOCompanySPVService } from '../services/primary-company-service';\n\ninterface UsePrimaryCompanyParams {\n investorId: string;\n nameFilter?: string;\n preIPOCompanyId?: string;\n preIPOCompanyInvestmentId?: string;\n page?: number;\n pageSize?: number;\n sortOrder?: SortOrder15;\n sortBy?: SortBy2;\n enabled?: boolean;\n}\n\ninterface UsePrimaryCompanyReturn {\n data: PreIPOCompanySPVApiResponse | null;\n loading: boolean;\n error: string | null;\n refetch: () => Promise<void>;\n}\n\n/**\n * Hook for fetching primary company SPV data with automatic loading states and error handling.\n */\nexport const usePrimaryCompany = ({\n investorId,\n nameFilter,\n preIPOCompanyId,\n preIPOCompanyInvestmentId,\n page,\n pageSize = 25,\n sortOrder = SortOrder15.Descending,\n sortBy,\n enabled = true\n }: UsePrimaryCompanyParams): UsePrimaryCompanyReturn => {\n const [data, setData] = useState<PreIPOCompanySPVApiResponse | null>(null);\n const [loading, setLoading] = useState<boolean>(false);\n const [error, setError] = useState<string | null>(null);\n\n const spvService = new PreIPOCompanySPVService();\n\n const fetchData = useCallback(async () => {\n if (!enabled || !investorId) {\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const result = await spvService.getAllSpvs(\n investorId,\n nameFilter,\n preIPOCompanyId,\n preIPOCompanyInvestmentId,\n page,\n pageSize,\n sortOrder,\n sortBy\n );\n\n if (result === null) {\n setError('Failed to fetch SPV data');\n setData(null);\n } else {\n setData(result);\n }\n } catch (err) {\n setError(err instanceof Error ? err.message : 'An unexpected error occurred');\n setData(null);\n } finally {\n setLoading(false);\n }\n }, [\n enabled,\n investorId,\n nameFilter,\n preIPOCompanyId,\n preIPOCompanyInvestmentId,\n page,\n pageSize,\n sortOrder,\n sortBy\n ]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n const refetch = useCallback(async () => {\n await fetchData();\n }, [fetchData]);\n\n return {\n data,\n loading,\n error,\n refetch\n };\n};","/**\n * Constants for primary company SPV operations\n */\nexport const PRIMARY_COMPANY_CONSTANTS = {\n /**\n * Default page size for pagination\n */\n DEFAULT_PAGE_SIZE: 25,\n\n /**\n * Maximum allowed page size\n */\n MAX_PAGE_SIZE: 100,\n\n /**\n * Minimum allowed page size\n */\n MIN_PAGE_SIZE: 1,\n\n /**\n * Default starting page number (0-based)\n */\n DEFAULT_PAGE: 1,\n\n /**\n * Error messages\n */\n ERRORS: {\n INVESTOR_ID_REQUIRED: 'investorId is required and cannot be empty',\n INVALID_PAGE_SIZE: 'pageSize must be between 1 and 100',\n INVALID_PAGE: 'page must be non-negative',\n FETCH_FAILED: 'Failed to fetch SPV data',\n UNEXPECTED_ERROR: 'An unexpected error occurred'\n },\n\n /**\n * API endpoint configuration\n */\n API: {\n BASE_PATH: '/api'\n }\n} as const;\n\n/**\n * Type for error message keys\n */\nexport type PrimaryCompanyErrorKey = keyof typeof PRIMARY_COMPANY_CONSTANTS.ERRORS;","import React, { useEffect, useState } from \"react\";\nimport { TableRow } from \"./components/table-row\";\nimport { TableHeaders } from \"../common/table-headers\";\nimport { PrimaryTableProps } from \"../types/types\";\nimport { Pagination } from \"../private-table/components/pagination\";\nimport { LoadingSpinner } from \"../common/loading-spinner\";\nimport { usePrimaryCompany } from \"../hooks/usePrimaryCompany\";\nimport { PRIMARY_COMPANY_CONSTANTS } from \"../constants/primary-company-constants\";\nimport { SortOrder15 } from \"@monarkmarkets/api-client\";\n\nconst primaryColumns = [\n { title: 'Company' },\n { title: 'Price Per Share' },\n { title: 'Minimum Investment' },\n { title: 'Fees' },\n { title: 'Invest' }\n];\n\n/**\n * PrimaryTable component displays a table of SPV investment opportunities.\n * It includes table headers and rows with built-in data fetching using the usePrimaryCompany hook.\n */\nexport const PrimaryTable = ({\n investorId,\n onButtonClick,\n buttonText = \"Invest\",\n isLoading: externalLoading = false,\n initialPage = 1,\n pageSize = PRIMARY_COMPANY_CONSTANTS.DEFAULT_PAGE_SIZE,\n searchTerm = '',\n onPageChange,\n onDataLoaded\n }: PrimaryTableProps) => {\n const [currentPage, setCurrentPage] = useState(initialPage);\n\n const { data, loading, error, refetch } = usePrimaryCompany({\n investorId,\n nameFilter: searchTerm,\n page: currentPage,\n pageSize,\n sortOrder: SortOrder15.Descending,\n enabled: !!investorId\n });\n\n const isLoading = externalLoading || loading;\n const preIPOCompanySPV = data?.items || [];\n const totalPages = data?.pagination?.totalPages || 1;\n\n useEffect(() => {\n setCurrentPage(1);\n }, [searchTerm]);\n\n useEffect(() => {\n if (data) {\n onDataLoaded?.(preIPOCompanySPV, totalPages);\n }\n }, [data, preIPOCompanySPV, totalPages, onDataLoaded]);\n\n const handlePageChange = (page: number) => {\n setCurrentPage(page);\n onPageChange?.(page);\n };\n\n if (error) {\n return (\n <div className=\"bg-white rounded-lg shadow-sm p-8 text-center\">\n <p className=\"text-gray-500\">\n {PRIMARY_COMPANY_CONSTANTS.ERRORS.FETCH_FAILED}. Please try again later.\n </p>\n <button\n onClick={refetch}\n className=\"mt-2 px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600\"\n >\n Retry\n </button>\n </div>\n );\n }\n\n if (!isLoading && preIPOCompanySPV.length === 0) {\n return (\n <div className=\"bg-white rounded-lg shadow-sm p-8 text-center\">\n <p className=\"text-gray-500\">No companies available</p>\n </div>\n );\n }\n\n return (\n <div className=\"space-y-4\">\n <div className=\"relative\">\n {isLoading && (\n <div className=\"absolute inset-0 bg-white/50 flex items-center justify-center z-10\">\n <LoadingSpinner />\n </div>\n )}\n <div className=\"bg-white rounded-lg shadow-sm overflow-hidden\">\n <table className=\"w-full table-fixed\">\n <TableHeaders columns={primaryColumns} />\n <tbody className=\"relative\">\n {preIPOCompanySPV.map((company) => (\n <TableRow\n key={company.id}\n preIPOCompanySPV={company}\n companyName={company.name || ''}\n allInPricePerShare={company.allInPricePerShare}\n minCommitmentAmount={company.minCommitmentAmount}\n managementFee={company.managementFee}\n buttonText={buttonText}\n investorId={investorId}\n onButtonClick={onButtonClick}\n />\n ))}\n </tbody>\n </table>\n </div>\n </div>\n <Pagination\n currentPage={currentPage}\n totalPages={totalPages}\n onPageChange={handlePageChange}\n />\n </div>\n );\n};"],"names":["CompanyLogo","memo","_a","logoURL","name","_jsx","src","alt","concat","className","children","charAt","displayName","formatLargeNumber","value","toFixed","toLocaleString","formatCurrency","decimals","undefined","Intl","NumberFormat","style","currency","maximumFractionDigits","minimumFractionDigits","format","TableRow","preIpoCompany","companyName","lastRoundValuation","lastFundingSeries","lastSharePrice","buttonText","investorId","onButtonClick","_c","isInWatchlist","_d","watchlistLoading","onAddToWatchlist","onRemoveFromWatchlist","_e","useState","isTogglingWatchlist","setIsTogglingWatchlist","_f","isHovering","setIsHovering","_g","justToggled","setJustToggled","id","console","warn","safeName","safeCountry","country","useCallback","e","preventDefault","handleWatchlistToggle","__awaiter","sent","setTimeout","isWatchlistButtonDisabled","getButtonContent","_jsxs","_Fragment","xmlns","fill","viewBox","cx","cy","r","stroke","strokeWidth","d","X","Check","getButtonClassName","baseClasses","role","onClick","onMouseEnter","onMouseLeave","disabled","zIndex","TableHeaders","columns","map","column","index","width","scope","title","NavigationButton","direction","strokeLinecap","strokeLinejoin","PageButton","page","isCurrentPage","Pagination","currentPage","totalPages","onPageChange","handlePrevious","handleNext","pageNumbers","useMemo","pages","showEllipsis","i","push","LoadingSpinner","PreIPOCompanyService","_client","Client","prototype","getAllCompanies","searchTerm_1","searchCategories_1","sortBy_1","searchTerm","searchCategories","sortBy","sortOrder","minLastValuation","maxLastValuation","minTotalFunding","maxTotalFunding","listingType","isActive","pageSize","SortOrder10","Descending","validateParameters","getAllPreIPOCompanies","logError","error_1","addToWatchlist","targetId","trim","Error","watchlistItem","CreateWatchlist","targetAssetType","CreateWatchlistTargetAssetType","PreIPOCompany","createOrUpdate","error","error_2","message","removeFromWatchlist","delete","error_3","getByInvestorAndTarget","batchCheckWatchlist","targetIds","watchlistStatus","Map","length","promises","_this","Promise","all","results","forEach","set","error_5","parameters","usePrivateCompanies","_b","enabled","data","setData","loading","setLoading","setError","_h","setWatchlistStatus","_j","loadingWatchlist","setLoadingWatchlist","preIPOService","fetchData","result","errorMessage","err_1","fetchWatchlistStatus","items","companyIds","company","filter","Boolean","status_1","err_2","prev","err_3","err_4","useEffect","refetch","refetchWatchlist","PRIVATE_COMPANY_CONSTANTS","DEFAULT_PAGE_SIZE","ERRORS","INVALID_PAGE_SIZE","FETCH_FAILED","PRIVATE_COLUMNS","PrivateTable","externalLoading","initialPage","onDataLoaded","setCurrentPage","isFullyLoaded","pagination","handlePageChange","ErrorState","EmptyState","LoadingOverlay","lastValuation","get","SharedService","GetCompanyLogoAndCountry","preIPOCompanyId","getPreIPOCompanyById","location","preIPOCompanySPV","allInPricePerShare","minCommitmentAmount","managementFee","handleButtonClick","companyDetails","setCompanyDetails","isLoading","setIsLoading","fetchCompanyDetails","service","details","PreIPOCompanySPVService","getAllSpvs","investorId_1","nameFilter_1","preIPOCompanyId_1","preIPOCompanyInvestmentId_1","page_1","arguments","nameFilter","preIPOCompanyInvestmentId","SortOrder15","getAllPreIPOCompanySPVs","MonarkStage","PRIMARY_FUNDRAISE","usePrimaryCompany","spvService","PRIMARY_COMPANY_CONSTANTS","INVESTOR_ID_REQUIRED","primaryColumns","PrimaryTable"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/common/company-logo.tsx","../src/utils/formatters.ts","../src/private-table/components/table-row.tsx","../src/common/table-headers.tsx","../src/private-table/components/pagination.tsx","../src/common/loading-spinner.tsx","../src/services/private-company-service.ts","../src/hooks/usePrivateCompany.ts","../src/constants/private-company-constants.ts","../src/private-table/table.tsx","../src/services/shared-service.ts","../src/primary-table/components/table-row.tsx","../src/services/primary-company-service.ts","../src/hooks/usePrimaryCompany.ts","../src/constants/primary-company-constants.ts","../src/primary-table/table.tsx"],"sourcesContent":["import React, {memo} from \"react\";\n\n/**\n * CompanyLogo component that displays either a company logo or a fallback initial.\n *\n * @param props - Component props\n * @param props.logoURL - Optional URL to the company's logo image passed through the preIPOCompany object\n * @param props.name - Company name, used for alt text and fallback initial passed through the preIPOCompany object\n * @returns A company logo image or a fallback with the first letter of the company name\n */\nexport const CompanyLogo: React.FC<{ logoURL?: string; name: string }> = memo(({logoURL, name}) => {\n if (logoURL) {\n return (\n <img\n src={logoURL}\n alt={`${name} logo`}\n className=\"w-8 h-8 rounded-lg object-cover\"\n />\n );\n }\n\n return (\n <div className=\"w-8 h-8 bg-gray-100 rounded-lg flex items-center justify-center\">\n <span className=\"text-gray-400 text-sm font-medium\">\n {name.charAt(0)}\n </span>\n </div>\n );\n});\n\nCompanyLogo.displayName = 'CompanyLogo';","export const formatLargeNumber = (value: number): string => {\n if (value >= 1_000_000_000) {\n return `$${(value / 1_000_000_000).toFixed(1)}B`;\n } else if (value >= 1_000_000) {\n return `$${(value / 1_000_000).toFixed(1)}M`;\n }\n return `$${value.toLocaleString()}`;\n};\n\nexport const formatCurrency = (value?: number, decimals: number = 2): string => {\n if (value === undefined || value === null) return 'N/A';\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals\n }).format(value);\n};\n","import React, {memo, useCallback, useEffect, useState} from \"react\";\nimport {PrivateTable} from \"../../types/types\";\nimport {CompanyLogo} from \"../../common/company-logo\";\nimport {formatCurrency, formatLargeNumber} from \"../../utils/formatters\";\nimport {Check, X} from \"lucide-react\";\n\n/**\n * TableRow component renders a row in the PrivateTable component.\n * It includes columns for company details, total funding, last round,\n * price per share, and a watchlist action button.\n */\nexport const TableRow: React.FC<PrivateTable> = memo(({\n preIpoCompany,\n companyName,\n lastRoundValuation,\n lastFundingSeries,\n lastSharePrice,\n buttonText = \"\",\n investorId,\n onButtonClick,\n isInWatchlist = false,\n watchlistLoading = false,\n onAddToWatchlist,\n onRemoveFromWatchlist\n }) => {\n const [isTogglingWatchlist, setIsTogglingWatchlist] = useState(false);\n const [isHovering, setIsHovering] = useState(false);\n const [justToggled, setJustToggled] = useState(false);\n const [isMounted, setIsMounted] = useState(false);\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setIsMounted(true);\n }, 50);\n return () => clearTimeout(timer);\n }, []);\n\n if (!preIpoCompany?.id) {\n console.warn('TableRow: Missing required preIpoCompany.id');\n return null;\n }\n\n const safeName = companyName || preIpoCompany?.name || \"Unknown Company\";\n const safeCountry = preIpoCompany?.country || \"\";\n\n const handleButtonClick = useCallback((e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n if (onButtonClick && preIpoCompany?.id) {\n onButtonClick(preIpoCompany.id, investorId);\n }\n }, [preIpoCompany?.id, investorId, onButtonClick]);\n\n const handleWatchlistToggle = useCallback(async (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n\n if (!preIpoCompany?.id || !onAddToWatchlist || !onRemoveFromWatchlist) {\n return;\n }\n\n setIsTogglingWatchlist(true);\n\n try {\n if (isInWatchlist) {\n await onRemoveFromWatchlist(preIpoCompany.id);\n } else {\n await onAddToWatchlist(preIpoCompany.id);\n }\n\n setJustToggled(true);\n setTimeout(() => {\n setJustToggled(false);\n }, 800);\n } finally {\n setIsTogglingWatchlist(false);\n }\n }, [preIpoCompany?.id, isInWatchlist, onAddToWatchlist, onRemoveFromWatchlist]);\n\n const isWatchlistButtonDisabled = isTogglingWatchlist || watchlistLoading || !onAddToWatchlist || !onRemoveFromWatchlist;\n\n const getButtonContent = () => {\n if (isTogglingWatchlist) {\n return (\n <>\n <span className=\"transition-opacity duration-200 relative z-10\">\n {isInWatchlist ? 'Removing...' : 'Adding...'}\n </span>\n <svg className=\"animate-spin h-4 w-4 relative z-10\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\"></circle>\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\n </svg>\n </>\n );\n }\n\n if (isInWatchlist && isHovering && !justToggled && isMounted) {\n return (\n <>\n <span className=\"transition-opacity duration-200 relative z-10\">Remove</span>\n <X className=\"h-4 w-4 transition-opacity duration-200 relative z-10\" />\n </>\n );\n }\n\n if (isInWatchlist) {\n return (\n <>\n <span className=\"transition-opacity duration-200 relative z-10\">Added</span>\n <Check className=\"h-4 w-4 transition-opacity duration-200 relative z-10\" />\n </>\n );\n }\n\n return <span className=\"transition-opacity duration-200 relative z-10\">Add to Watchlist</span>;\n };\n\n const getButtonClassName = () => {\n const baseClasses = \"font-medium py-2 px-4 rounded-lg transition-all duration-300 disabled:opacity-50 disabled:cursor-not-allowed inline-flex items-center justify-center gap-2 min-w-[170px] relative overflow-hidden\";\n\n if (isInWatchlist && !isTogglingWatchlist) {\n // Only apply hover effects after component is mounted and not just toggled\n const hoverClasses = (isMounted && !justToggled) ? 'hover:text-white hover:border-red-500 group' : '';\n return `${baseClasses} bg-white border-2 border-custom-blue text-custom-blue ${hoverClasses}`;\n }\n\n return `${baseClasses} bg-custom-blue text-white shadow-md`;\n };\n\n return (\n <tr\n className=\"hover:bg-gray-50 transition-colors\"\n role=\"row\"\n >\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <div className=\"flex items-center gap-3\">\n <CompanyLogo\n logoURL={preIpoCompany?.logoURL}\n name={safeName}\n />\n <div className=\"flex flex-col\">\n <span className=\"font-medium text-gray-900\">{safeName}</span>\n {safeCountry && (\n <span className=\"text-sm text-gray-500\">{safeCountry}</span>\n )}\n </div>\n </div>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <span className=\"font-medium text-gray-900\">\n {lastRoundValuation !== undefined && lastRoundValuation !== null\n ? formatLargeNumber(lastRoundValuation)\n : \"N/A\"}\n </span>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <span className=\"font-medium text-gray-900\">\n {lastFundingSeries || \"Unknown\"}\n </span>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <span className=\"font-medium text-gray-900\">\n {lastSharePrice !== undefined && lastSharePrice !== null\n ? formatCurrency(lastSharePrice)\n : \"Not Available\"}\n </span>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <button\n onClick={handleWatchlistToggle}\n onMouseEnter={() => setIsHovering(true)}\n onMouseLeave={() => setIsHovering(false)}\n disabled={isWatchlistButtonDisabled}\n className={getButtonClassName()}\n aria-label={`${isInWatchlist ? 'Remove from' : 'Add to'} watchlist for ${safeName}`}\n >\n {isInWatchlist && !isTogglingWatchlist && !justToggled && isMounted && (\n <span\n className=\"absolute inset-0 bg-red-500 transition-transform duration-300 ease-out origin-left scale-x-0 group-hover:scale-x-100\"\n style={{ zIndex: 0 }}\n />\n )}\n {getButtonContent()}\n </button>\n </td>\n </tr>\n );\n});\n\nTableRow.displayName = 'TableRow';","import React, {memo} from 'react';\n\ninterface Column {\n title: string;\n width?: string;\n}\n\ninterface TableHeaderProps {\n columns: Column[];\n}\n\n/**\n * Common TableHeader component that can be configured for different table types.\n * It renders a header row with configurable column titles and styling.\n * @param columns - Array of column configurations with titles and optional widths\n */\nexport const TableHeaders = memo(({columns}: TableHeaderProps) => (\n <thead>\n <tr\n className=\"bg-gray-50 border-b border-gray-200\"\n role=\"row\"\n >\n {columns.map((column, index) => (\n <th\n key={`${column.title}-${index}`}\n className={`py-3 px-4 text-left text-sm font-semibold text-gray-900 ${column.width || ''}`}\n scope=\"col\"\n role=\"columnheader\"\n >\n {column.title}\n </th>\n ))}\n </tr>\n </thead>\n));\n\nTableHeaders.displayName = 'TableHeader';","import React, {memo, useCallback, useMemo} from \"react\";\nimport {PaginationProps} from \"../../types/types\";\n\nconst NavigationButton = memo(({\n onClick,\n disabled,\n direction,\n }: {\n onClick: () => void;\n disabled: boolean;\n direction: 'previous' | 'next';\n}) => (\n <button\n onClick={onClick}\n disabled={disabled}\n className=\"p-2 rounded-lg text-gray-600 hover:bg-gray-100 disabled:opacity-50 disabled:hover:bg-transparent disabled:cursor-not-allowed transition-colors\"\n aria-label={`${direction} page`}\n >\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d={direction === 'previous' ? \"M15 19l-7-7 7-7\" : \"M9 5l7 7-7 7\"}\n />\n </svg>\n </button>\n));\n\nNavigationButton.displayName = 'NavigationButton';\n\nconst PageButton = memo(({\n page,\n isCurrentPage,\n onClick\n }: {\n page: number;\n isCurrentPage: boolean;\n onClick: () => void;\n}) => (\n <button\n onClick={onClick}\n disabled={isCurrentPage}\n className={`w-10 h-10 rounded-lg text-sm font-medium transition-colors ${\n isCurrentPage\n ? 'bg-custom-blue text-white'\n : 'text-gray-600 hover:bg-gray-100'\n }`}\n aria-label={`Go to page ${page}`}\n aria-current={isCurrentPage ? 'page' : undefined}\n >\n {page}\n </button>\n));\n\nPageButton.displayName = 'PageButton';\n\n/**\n * Pagination component renders pagination controls for the PrivateTable component.\n * It includes navigation buttons for previous and next pages, and page number buttons.\n */\nexport const Pagination: React.FC<PaginationProps> = memo(({\n currentPage,\n totalPages,\n onPageChange,\n }) => {\n const handlePrevious = useCallback(() => {\n onPageChange(currentPage - 1);\n }, [currentPage, onPageChange]);\n\n const handleNext = useCallback(() => {\n onPageChange(currentPage + 1);\n }, [currentPage, onPageChange]);\n\n const pageNumbers = useMemo(() => {\n const pages = [];\n const showEllipsis = totalPages > 7;\n\n if (showEllipsis) {\n if (currentPage <= 4) {\n for (let i = 1; i <= 5; i++) {\n pages.push(i);\n }\n pages.push('ellipsis');\n pages.push(totalPages);\n } else if (currentPage >= totalPages - 3) {\n pages.push(1);\n pages.push('ellipsis');\n for (let i = totalPages - 4; i <= totalPages; i++) {\n pages.push(i);\n }\n } else {\n pages.push(1);\n pages.push('ellipsis');\n for (let i = currentPage - 1; i <= currentPage + 1; i++) {\n pages.push(i);\n }\n pages.push('ellipsis');\n pages.push(totalPages);\n }\n } else {\n for (let i = 1; i <= totalPages; i++) {\n pages.push(i);\n }\n }\n\n return pages;\n }, [currentPage, totalPages]);\n\n return (\n <nav\n role=\"navigation\"\n aria-label=\"Pagination\"\n className=\"flex items-center justify-center gap-1\"\n >\n <NavigationButton\n onClick={handlePrevious}\n disabled={currentPage <= 1}\n direction=\"previous\"\n />\n\n <div className=\"flex items-center gap-1 mx-2\">\n {pageNumbers.map((page, index) => (\n page === 'ellipsis' ? (\n <span\n key={`ellipsis-${index}`}\n className=\"w-10 h-10 flex items-center justify-center text-gray-500\"\n aria-hidden=\"true\"\n >\n ...\n </span>\n ) : (\n <PageButton\n key={page}\n page={page as number}\n isCurrentPage={page === currentPage}\n onClick={() => onPageChange(page as number)}\n />\n )\n ))}\n </div>\n\n <NavigationButton\n onClick={handleNext}\n disabled={currentPage >= totalPages}\n direction=\"next\"\n />\n </nav>\n );\n});\n\nPagination.displayName = 'Pagination';","export const LoadingSpinner = () => (\n <svg className=\"animate-spin h-8 w-8 text-custom-blue\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\"\n viewBox=\"0 0 24 24\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\"></circle>\n <path className=\"opacity-75\" fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\n </svg>\n);","import {\n Client,\n PreIPOCompanyApiResponse,\n SortOrder10,\n SortBy,\n CreateWatchlist,\n CreateWatchlistTargetAssetType,\n Watchlist\n} from \"@monarkmarkets/api-client\";\n\n/**\n * Service for managing Pre-IPO company operations and watchlist functionality.\n */\nexport class PreIPOCompanyService {\n private readonly _client: Client;\n\n constructor() {\n this._client = new Client(\"/api\");\n }\n\n /**\n * Retrieves all Pre-IPO companies with optional filtering and pagination.\n *\n * @param searchTerm - Optional search term to filter companies\n * @param searchCategories - Optional array of categories to filter by\n * @param sortBy - Field to sort by\n * @param sortOrder - Sort order for results (default: Descending)\n * @param minLastValuation - Minimum last valuation filter\n * @param maxLastValuation - Maximum last valuation filter\n * @param minTotalFunding - Minimum total funding filter\n * @param maxTotalFunding - Maximum total funding filter\n * @param listingType - Optional listing type filter to categorize companies by their listing status\n * @param isActive - Optional flag to filter companies by their active status\n * @param page - Optional page number for pagination\n * @param pageSize - Number of items per page (default: 25)\n * @returns Promise resolving to PreIPOCompanyApiResponse or null if operation fails\n */\n public async getAllCompanies(\n searchTerm?: string,\n searchCategories?: string[],\n sortBy?: SortBy,\n sortOrder: SortOrder10 = SortOrder10.Descending,\n minLastValuation?: number,\n maxLastValuation?: number,\n minTotalFunding?: number,\n maxTotalFunding?: number,\n listingType?: string,\n isActive?: boolean,\n page?: number,\n pageSize: number = 25\n ): Promise<PreIPOCompanyApiResponse | null> {\n this.validateParameters(page, pageSize, minLastValuation, maxLastValuation, minTotalFunding, maxTotalFunding);\n\n try {\n return await this._client.getAllPreIPOCompanies(\n page,\n pageSize,\n searchTerm,\n searchCategories,\n sortBy,\n sortOrder,\n minLastValuation,\n maxLastValuation,\n minTotalFunding,\n maxTotalFunding,\n listingType,\n isActive\n );\n } catch (error) {\n this.logError(error, {\n searchTerm,\n searchCategories,\n sortBy,\n sortOrder,\n minLastValuation,\n maxLastValuation,\n minTotalFunding,\n maxTotalFunding,\n listingType,\n isActive,\n page,\n pageSize\n });\n\n return null;\n }\n }\n\n /**\n * Add a Pre-IPO company to the investor's watchlist.\n *\n * @param investorId - The unique identifier of the investor\n * @param targetId - The Pre-IPO company ID to add to watchlist\n * @returns Promise resolving to Watchlist item or null if operation fails\n */\n public async addToWatchlist(\n investorId: string,\n targetId: string\n ): Promise<Watchlist | null> {\n if (!investorId?.trim()) {\n throw new Error(\"investorId is required and cannot be empty\");\n }\n\n if (!targetId?.trim()) {\n throw new Error(\"targetId is required and cannot be empty\");\n }\n\n try {\n const watchlistItem = new CreateWatchlist({\n investorId,\n targetId,\n targetAssetType: CreateWatchlistTargetAssetType.PreIPOCompany\n });\n\n return await this._client.createOrUpdate(watchlistItem);\n } catch (error) {\n console.error(\n `Failed to add Pre-IPO company ${targetId} to watchlist for investor ${investorId}:`,\n {\n investorId,\n targetId,\n error: error instanceof Error ? error.message : error\n }\n );\n return null;\n }\n }\n\n /**\n * Remove a Pre-IPO company from the investor's watchlist.\n *\n * @param investorId - The unique identifier of the investor\n * @param targetId - The Pre-IPO company ID to remove from watchlist\n * @returns Promise resolving to true if successful, false otherwise\n */\n public async removeFromWatchlist(\n investorId: string,\n targetId: string\n ): Promise<boolean> {\n if (!investorId?.trim()) {\n throw new Error(\"investorId is required and cannot be empty\");\n }\n\n if (!targetId?.trim()) {\n throw new Error(\"targetId is required and cannot be empty\");\n }\n\n try {\n await this._client.delete(investorId, targetId);\n return true;\n } catch (error) {\n console.error(\n `Failed to remove Pre-IPO company ${targetId} from watchlist for investor ${investorId}:`,\n {\n investorId,\n targetId,\n error: error instanceof Error ? error.message : error\n }\n );\n return false;\n }\n }\n\n /**\n * Check if a Pre-IPO company is in the investor's watchlist.\n *\n * @param investorId - The unique identifier of the investor\n * @param targetId - The Pre-IPO company ID to check\n * @returns Promise resolving to true if in watchlist, false otherwise\n */\n public async isInWatchlist(\n investorId: string,\n targetId: string\n ): Promise<boolean> {\n if (!investorId?.trim() || !targetId?.trim()) {\n return false;\n }\n\n try {\n const watchlistItem = await this._client.getByInvestorAndTarget(investorId, targetId);\n return !!watchlistItem;\n } catch (error) {\n return false;\n }\n }\n\n /**\n * Batch check watchlist status for multiple Pre-IPO companies.\n *\n * @param investorId - The unique identifier of the investor\n * @param targetIds - Array of Pre-IPO company IDs to check\n * @returns Promise resolving to a Map of targetId -> boolean (true if in watchlist)\n */\n public async batchCheckWatchlist(\n investorId: string,\n targetIds: string[]\n ): Promise<Map<string, boolean>> {\n const watchlistStatus = new Map<string, boolean>();\n\n if (!investorId?.trim() || !targetIds.length) {\n return watchlistStatus;\n }\n\n const promises = targetIds.map(async (targetId) => {\n const isInWatchlist = await this.isInWatchlist(investorId, targetId);\n return { targetId, isInWatchlist };\n });\n\n try {\n const results = await Promise.all(promises);\n results.forEach(({ targetId, isInWatchlist }) => {\n watchlistStatus.set(targetId, isInWatchlist);\n });\n } catch (error) {\n console.error('Failed to batch check watchlist status:', {\n investorId,\n targetIds,\n error: error instanceof Error ? error.message : error\n });\n }\n\n return watchlistStatus;\n }\n\n private validateParameters(\n page?: number,\n pageSize?: number,\n minLastValuation?: number,\n maxLastValuation?: number,\n minTotalFunding?: number,\n maxTotalFunding?: number\n ): void {\n if (pageSize !== undefined && (pageSize <= 0 || pageSize > 100)) {\n throw new Error(\"pageSize must be between 1 and 100\");\n }\n\n if (page !== undefined && page < 0) {\n throw new Error(\"page must be non-negative\");\n }\n\n if (minLastValuation !== undefined && minLastValuation < 0) {\n throw new Error(\"minLastValuation must be non-negative\");\n }\n\n if (maxLastValuation !== undefined && maxLastValuation < 0) {\n throw new Error(\"maxLastValuation must be non-negative\");\n }\n\n if (minLastValuation !== undefined && maxLastValuation !== undefined && minLastValuation > maxLastValuation) {\n throw new Error(\"minLastValuation cannot be greater than maxLastValuation\");\n }\n\n if (minTotalFunding !== undefined && minTotalFunding < 0) {\n throw new Error(\"minTotalFunding must be non-negative\");\n }\n\n if (maxTotalFunding !== undefined && maxTotalFunding < 0) {\n throw new Error(\"maxTotalFunding must be non-negative\");\n }\n\n if (minTotalFunding !== undefined && maxTotalFunding !== undefined && minTotalFunding > maxTotalFunding) {\n throw new Error(\"minTotalFunding cannot be greater than maxTotalFunding\");\n }\n }\n\n private logError(error: unknown, parameters: Record<string, unknown>): void {\n console.error('Failed to retrieve Pre-IPO companies:', {\n ...parameters,\n error: error instanceof Error ? error.message : error\n });\n }\n}","import { useState, useEffect, useCallback, useMemo } from 'react';\nimport { PreIPOCompanyApiResponse, SortOrder10, SortBy } from '@monarkmarkets/api-client';\nimport { PreIPOCompanyService } from '../services/private-company-service';\n\ninterface UsePrivateCompaniesParams {\n investorId?: string;\n searchTerm?: string;\n searchCategories?: string[];\n sortBy?: SortBy;\n sortOrder?: SortOrder10;\n minLastValuation?: number;\n maxLastValuation?: number;\n minTotalFunding?: number;\n maxTotalFunding?: number;\n listingType?: string;\n isActive?: boolean;\n page?: number;\n pageSize?: number;\n enabled?: boolean;\n}\n\ninterface UsePrivateCompaniesReturn {\n data: PreIPOCompanyApiResponse | null;\n loading: boolean;\n error: string | null;\n watchlistStatus: Map<string, boolean>;\n loadingWatchlist: boolean;\n refetch: () => Promise<void>;\n refetchWatchlist: () => Promise<void>;\n addToWatchlist: (targetId: string) => Promise<boolean>;\n removeFromWatchlist: (targetId: string) => Promise<boolean>;\n}\n\n/**\n * Hook for fetching private company data with automatic loading states, error handling, and watchlist management.\n */\nexport const usePrivateCompanies = ({\n investorId,\n searchTerm,\n searchCategories,\n sortBy,\n sortOrder = SortOrder10.Descending,\n minLastValuation,\n maxLastValuation,\n minTotalFunding,\n maxTotalFunding,\n listingType,\n isActive,\n page,\n pageSize = 25,\n enabled = true\n }: UsePrivateCompaniesParams): UsePrivateCompaniesReturn => {\n const [data, setData] = useState<PreIPOCompanyApiResponse | null>(null);\n const [loading, setLoading] = useState<boolean>(false);\n const [error, setError] = useState<string | null>(null);\n const [watchlistStatus, setWatchlistStatus] = useState<Map<string, boolean>>(new Map());\n const [loadingWatchlist, setLoadingWatchlist] = useState<boolean>(false);\n\n const preIPOService = useMemo(() => new PreIPOCompanyService(), []);\n\n const fetchData = useCallback(async () => {\n if (!enabled) {\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const result = await preIPOService.getAllCompanies(\n searchTerm,\n searchCategories,\n sortBy,\n sortOrder,\n minLastValuation,\n maxLastValuation,\n minTotalFunding,\n maxTotalFunding,\n listingType,\n isActive,\n page,\n pageSize\n );\n\n if (result === null) {\n setError('Failed to fetch private company data');\n setData(null);\n } else {\n setData(result);\n }\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : 'An unexpected error occurred';\n setError(errorMessage);\n setData(null);\n } finally {\n setLoading(false);\n }\n }, [\n preIPOService,\n enabled,\n searchTerm,\n searchCategories,\n sortBy,\n sortOrder,\n minLastValuation,\n maxLastValuation,\n minTotalFunding,\n maxTotalFunding,\n listingType,\n isActive,\n page,\n pageSize\n ]);\n\n const fetchWatchlistStatus = useCallback(async () => {\n if (!investorId || !data?.items || data.items.length === 0) {\n return;\n }\n\n setLoadingWatchlist(true);\n try {\n const companyIds = data.items.map(company => company.id).filter(Boolean) as string[];\n const status = await preIPOService.batchCheckWatchlist(investorId, companyIds);\n setWatchlistStatus(status);\n } catch (err) {\n console.error('Failed to fetch watchlist status:', err);\n } finally {\n setLoadingWatchlist(false);\n }\n }, [investorId, data?.items, preIPOService]);\n\n const addToWatchlist = useCallback(async (targetId: string): Promise<boolean> => {\n if (!investorId) {\n console.error('Cannot add to watchlist: investorId is required');\n return false;\n }\n\n try {\n const result = await preIPOService.addToWatchlist(investorId, targetId);\n if (result) {\n // Update local state\n setWatchlistStatus(prev => new Map(prev).set(targetId, true));\n return true;\n }\n return false;\n } catch (err) {\n console.error('Failed to add to watchlist:', err);\n return false;\n }\n }, [investorId, preIPOService]);\n\n const removeFromWatchlist = useCallback(async (targetId: string): Promise<boolean> => {\n if (!investorId) {\n console.error('Cannot remove from watchlist: investorId is required');\n return false;\n }\n\n try {\n const result = await preIPOService.removeFromWatchlist(investorId, targetId);\n if (result) {\n // Update local state\n setWatchlistStatus(prev => new Map(prev).set(targetId, false));\n return true;\n }\n return false;\n } catch (err) {\n console.error('Failed to remove from watchlist:', err);\n return false;\n }\n }, [investorId, preIPOService]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n useEffect(() => {\n if (data?.items && data.items.length > 0) {\n fetchWatchlistStatus();\n }\n }, [fetchWatchlistStatus, data?.items]);\n\n const refetch = useCallback(async () => {\n await fetchData();\n }, [fetchData]);\n\n const refetchWatchlist = useCallback(async () => {\n await fetchWatchlistStatus();\n }, [fetchWatchlistStatus]);\n\n return {\n data,\n loading,\n error,\n watchlistStatus,\n loadingWatchlist,\n refetch,\n refetchWatchlist,\n addToWatchlist,\n removeFromWatchlist\n };\n};","/**\n * Constants for Pre-IPO company operations\n */\nexport const PRIVATE_COMPANY_CONSTANTS = {\n /**\n * Default page size for pagination\n */\n DEFAULT_PAGE_SIZE: 25,\n\n /**\n * Maximum allowed page size\n */\n MAX_PAGE_SIZE: 100,\n\n /**\n * Minimum allowed page size\n */\n MIN_PAGE_SIZE: 1,\n\n /**\n * Default starting page number (0-based)\n */\n DEFAULT_PAGE: 1,\n\n /**\n * Minimum allowed valuation and funding values\n */\n MIN_VALUATION: 0,\n MIN_FUNDING: 0,\n\n /**\n * Error messages\n */\n ERRORS: {\n INVALID_PAGE_SIZE: 'pageSize must be between 1 and 100',\n INVALID_PAGE: 'page must be non-negative',\n INVALID_MIN_VALUATION: 'minLastValuation must be non-negative',\n INVALID_MAX_VALUATION: 'maxLastValuation must be non-negative',\n INVALID_VALUATION_RANGE: 'minLastValuation cannot be greater than maxLastValuation',\n INVALID_MIN_FUNDING: 'minTotalFunding must be non-negative',\n INVALID_MAX_FUNDING: 'maxTotalFunding must be non-negative',\n INVALID_FUNDING_RANGE: 'minTotalFunding cannot be greater than maxTotalFunding',\n FETCH_FAILED: 'Failed to fetch Pre-IPO company data',\n UNEXPECTED_ERROR: 'An unexpected error occurred'\n },\n\n /**\n * API endpoint configuration\n */\n API: {\n BASE_PATH: '/api'\n }\n} as const;\n\n/**\n * Type for error message keys\n */\nexport type PrivateCompanyErrorKey = keyof typeof PRIVATE_COMPANY_CONSTANTS.ERRORS;","import React, { useEffect, useState, useCallback, useMemo } from \"react\";\nimport { TableRow } from \"./components/table-row\";\nimport { TableHeaders } from \"../common/table-headers\";\nimport { Pagination } from \"./components/pagination\";\nimport { PrivateTableProps } from \"../types/types\";\nimport { LoadingSpinner } from \"../common/loading-spinner\";\nimport { usePrivateCompanies } from \"../hooks/usePrivateCompany\";\nimport { PRIVATE_COMPANY_CONSTANTS } from \"../constants/private-company-constants\";\nimport { SortOrder10 } from \"@monarkmarkets/api-client\";\n\nconst PRIVATE_COLUMNS = [\n { title: 'Company' },\n { title: 'Last Round Valuation' },\n { title: 'Last Round' },\n { title: 'Last Round Price/Share' },\n { title: 'Watchlist' }\n];\n\n/**\n * PrivateTable component displays a table of pre-IPO companies with pagination and loading states.\n * It includes table headers, rows, and pagination controls using the usePrivateCompanies hook.\n */\nexport const PrivateTable = ({\n investorId,\n onButtonClick,\n buttonText = \"Submit IOI\",\n isLoading: externalLoading = false,\n initialPage = 1,\n pageSize = PRIVATE_COMPANY_CONSTANTS.DEFAULT_PAGE_SIZE,\n searchTerm = '',\n onPageChange,\n onDataLoaded,\n listingType,\n isActive,\n }: PrivateTableProps) => {\n const [currentPage, setCurrentPage] = useState(initialPage);\n\n const {\n data,\n loading,\n error,\n watchlistStatus,\n loadingWatchlist,\n refetch,\n addToWatchlist,\n removeFromWatchlist\n } = usePrivateCompanies({\n investorId,\n searchTerm,\n page: currentPage,\n pageSize,\n sortOrder: SortOrder10.Descending,\n listingType,\n isActive,\n enabled: true\n });\n\n const isFullyLoaded = !loading && !loadingWatchlist && data !== null;\n const isLoading = useMemo(() => externalLoading || loading || loadingWatchlist, [externalLoading, loading, loadingWatchlist]);\n const preIpoCompany = useMemo(() => data?.items || [], [data?.items]);\n const totalPages = useMemo(() => data?.pagination?.totalPages || 1, [data?.pagination?.totalPages]);\n\n useEffect(() => {\n setCurrentPage(1);\n }, [searchTerm]);\n\n useEffect(() => {\n setCurrentPage(initialPage);\n }, [initialPage]);\n\n useEffect(() => {\n if (data) {\n onDataLoaded?.(preIpoCompany, totalPages);\n }\n }, [data, preIpoCompany, totalPages, onDataLoaded]);\n\n const handlePageChange = useCallback((page: number) => {\n setCurrentPage(page);\n onPageChange?.(page);\n }, [onPageChange]);\n\n const ErrorState = () => (\n <div className=\"bg-white rounded-lg shadow-sm p-8 text-center\">\n <p className=\"text-gray-500 mb-4\">\n {PRIVATE_COMPANY_CONSTANTS.ERRORS.FETCH_FAILED}. Please try again later.\n </p>\n <button\n onClick={refetch}\n className=\"px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600 transition-colors\"\n >\n Retry\n </button>\n </div>\n );\n\n const EmptyState = () => (\n <div className=\"bg-white rounded-lg shadow-sm p-8 text-center\">\n <p className=\"text-gray-500\">No companies available</p>\n </div>\n );\n\n const LoadingOverlay = () => (\n <div className=\"bg-white rounded-lg shadow-sm p-8 flex items-center justify-center\">\n <LoadingSpinner />\n </div>\n );\n\n if (error) {\n return <ErrorState />;\n }\n\n if (!isFullyLoaded) {\n return <LoadingOverlay />;\n }\n\n if (preIpoCompany.length === 0) {\n return <EmptyState />;\n }\n\n return (\n <div className=\"space-y-4\">\n <div className=\"bg-white rounded-lg shadow-sm overflow-hidden\">\n <table className=\"w-full table-fixed\">\n <TableHeaders columns={PRIVATE_COLUMNS} />\n <tbody className=\"relative\">\n {preIpoCompany.map((company) => (\n <TableRow\n key={company.id}\n preIpoCompany={company}\n companyName={company.name || ''}\n lastRoundValuation={company.lastValuation}\n lastFundingSeries={company.lastFundingSeries}\n lastSharePrice={company.lastSharePrice}\n buttonText={buttonText}\n investorId={investorId}\n onButtonClick={onButtonClick}\n isInWatchlist={watchlistStatus.get(company.id) || false}\n watchlistLoading={loadingWatchlist}\n onAddToWatchlist={addToWatchlist}\n onRemoveFromWatchlist={removeFromWatchlist}\n />\n ))}\n </tbody>\n </table>\n </div>\n\n <Pagination\n currentPage={currentPage}\n totalPages={totalPages}\n onPageChange={handlePageChange}\n />\n </div>\n );\n};","import {Client} from \"@monarkmarkets/api-client\";\n\nexport class SharedService {\n private _client: Client;\n\n constructor() {\n this._client = new Client(\"/api\");\n }\n\n public async GetCompanyLogoAndCountry(\n preIPOCompanyId: string,\n ): Promise<{ logoURL: string; location: string } | null> {\n try {\n const company = await this._client.getPreIPOCompanyById(preIPOCompanyId);\n if (company) {\n return {\n logoURL: company.logoURL || '',\n location: company.country || 'Location not available'\n };\n }\n return null;\n } catch (error) {\n console.error(`Failed to retrieve company logo and location for ID ${preIPOCompanyId}:`, error);\n return null;\n }\n }\n}\n","import React, {memo, useCallback, useEffect, useState} from \"react\";\nimport {LogoAndCountryProps, SpvRowProps} from \"../../types/types\";\nimport {CompanyLogo} from \"../../common/company-logo\";\nimport {formatCurrency} from \"../../utils/formatters\";\nimport {SharedService} from \"../../services/shared-service\";\n\n/**\n * TableRow component renders a row in the PrimaryTable component.\n * It includes columns for company details, price per share, minimum investment,\n * management fees, and an action to invest.\n */\nexport const TableRow: React.FC<SpvRowProps> = memo(({\n preIPOCompanySPV,\n companyName,\n allInPricePerShare,\n minCommitmentAmount,\n managementFee,\n buttonText = \"\",\n investorId,\n onButtonClick\n }) => {\n const handleButtonClick = useCallback((e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n onButtonClick?.(preIPOCompanySPV.id, investorId);\n }, [preIPOCompanySPV.id, investorId, onButtonClick]);\n\n const [companyDetails, setCompanyDetails] = useState<LogoAndCountryProps | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n const fetchCompanyDetails = async () => {\n setIsLoading(true);\n const service = new SharedService();\n try {\n const details = await service.GetCompanyLogoAndCountry(\n preIPOCompanySPV.preIPOCompanyId,\n );\n setCompanyDetails(details);\n } catch (error) {\n console.error('Error fetching company details:', error);\n } finally {\n setIsLoading(false);\n }\n };\n\n fetchCompanyDetails();\n }, [preIPOCompanySPV.preIPOCompanyId, investorId]);\n\n return (\n <tr\n className=\"hover:bg-gray-50 transition-colors\"\n role=\"row\"\n >\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <div className=\"flex items-center gap-3\">\n {isLoading ? (\n <div className=\"w-8 h-8 animate-pulse bg-gray-200 rounded-lg\"/>\n ) : (\n <CompanyLogo\n logoURL={companyDetails?.logoURL}\n name={companyName}\n />\n )}\n <div className=\"flex flex-col\">\n <span className=\"font-medium text-gray-900\">{companyName}</span>\n <span className=\"text-sm text-gray-500\">\n {isLoading ? (\n <div className=\"h-4 w-24 animate-pulse bg-gray-200 rounded\"/>\n ) : (\n companyDetails?.location || 'Location not available'\n )}\n </span>\n </div>\n </div>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <span className=\"font-medium text-gray-900\">\n {allInPricePerShare !== undefined ? formatCurrency(allInPricePerShare) : \"N/A\"}\n </span>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <span className=\"font-medium text-gray-900\">\n {minCommitmentAmount !== undefined ? formatCurrency(minCommitmentAmount) : \"N/A\"}\n </span>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <span className=\"font-medium text-gray-900\">\n {managementFee !== undefined ? `${managementFee}%` : \"N/A\"}\n </span>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <button\n onClick={handleButtonClick}\n className=\"bg-custom-blue hover:bg-custom-blue-dark text-white font-medium py-2 px-4 rounded-lg shadow-md transition-all duration-200\"\n aria-label={`${buttonText} for ${companyName}`}\n >\n {buttonText}\n </button>\n </td>\n </tr>\n );\n});\n\nTableRow.displayName = 'TableRow';","import { Client, MonarkStage, PreIPOCompanySPVApiResponse, SortOrder15, SortBy2 } from \"@monarkmarkets/api-client\";\n\n/**\n * Service for managing Special Purpose Vehicle (SPV) operations.\n */\nexport class PreIPOCompanySPVService {\n private readonly _client: Client;\n\n constructor() {\n this._client = new Client(\"/api\");\n }\n\n /**\n * Retrieves all SPVs for a specific investor with optional filtering and pagination.\n *\n * @param investorId - The unique identifier of the investor\n * @param nameFilter - Optional filter to search SPVs by name\n * @param preIPOCompanyId - Optional filter to search by pre-IPO company ID\n * @param preIPOCompanyInvestmentId - Optional filter to search by pre-IPO company investment ID\n * @param page - Optional page number for pagination\n * @param pageSize - Number of items per page (default: 25)\n * @param sortOrder - Sort order for results (default: Descending)\n * @param sortBy - Field to sort by\n * @returns Promise resolving to PreIPOCompanySPVApiResponse or null if operation fails\n */\n public async getAllSpvs(\n investorId: string,\n nameFilter?: string,\n preIPOCompanyId?: string,\n preIPOCompanyInvestmentId?: string,\n page?: number,\n pageSize: number = 25,\n sortOrder: SortOrder15 = SortOrder15.Descending,\n sortBy?: SortBy2\n ): Promise<PreIPOCompanySPVApiResponse | null> {\n if (!investorId?.trim()) {\n throw new Error(\"investorId is required and cannot be empty\");\n }\n\n if (pageSize <= 0 || pageSize > 100) {\n throw new Error(\"pageSize must be between 1 and 100\");\n }\n\n if (page !== undefined && page < 0) {\n throw new Error(\"page must be non-negative\");\n }\n\n try {\n return await this._client.getAllPreIPOCompanySPVs(\n investorId,\n MonarkStage.PRIMARY_FUNDRAISE,\n undefined,\n nameFilter,\n preIPOCompanyId,\n preIPOCompanyInvestmentId,\n true,\n page,\n pageSize,\n undefined,\n sortOrder,\n sortBy\n );\n } catch (error) {\n console.error(\n `Failed to retrieve SPVs for investor ${investorId}:`,\n {\n investorId,\n nameFilter,\n preIPOCompanyId,\n preIPOCompanyInvestmentId,\n page,\n pageSize,\n error: error instanceof Error ? error.message : error\n }\n );\n\n return null;\n }\n }\n}\n","import { useState, useEffect, useCallback } from 'react';\nimport { PreIPOCompanySPVApiResponse, SortOrder15, SortBy2 } from '@monarkmarkets/api-client';\nimport { PreIPOCompanySPVService } from '../services/primary-company-service';\n\ninterface UsePrimaryCompanyParams {\n investorId: string;\n nameFilter?: string;\n preIPOCompanyId?: string;\n preIPOCompanyInvestmentId?: string;\n page?: number;\n pageSize?: number;\n sortOrder?: SortOrder15;\n sortBy?: SortBy2;\n enabled?: boolean;\n}\n\ninterface UsePrimaryCompanyReturn {\n data: PreIPOCompanySPVApiResponse | null;\n loading: boolean;\n error: string | null;\n refetch: () => Promise<void>;\n}\n\n/**\n * Hook for fetching primary company SPV data with automatic loading states and error handling.\n */\nexport const usePrimaryCompany = ({\n investorId,\n nameFilter,\n preIPOCompanyId,\n preIPOCompanyInvestmentId,\n page,\n pageSize = 25,\n sortOrder = SortOrder15.Descending,\n sortBy,\n enabled = true\n }: UsePrimaryCompanyParams): UsePrimaryCompanyReturn => {\n const [data, setData] = useState<PreIPOCompanySPVApiResponse | null>(null);\n const [loading, setLoading] = useState<boolean>(false);\n const [error, setError] = useState<string | null>(null);\n\n const spvService = new PreIPOCompanySPVService();\n\n const fetchData = useCallback(async () => {\n if (!enabled || !investorId) {\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const result = await spvService.getAllSpvs(\n investorId,\n nameFilter,\n preIPOCompanyId,\n preIPOCompanyInvestmentId,\n page,\n pageSize,\n sortOrder,\n sortBy\n );\n\n if (result === null) {\n setError('Failed to fetch SPV data');\n setData(null);\n } else {\n setData(result);\n }\n } catch (err) {\n setError(err instanceof Error ? err.message : 'An unexpected error occurred');\n setData(null);\n } finally {\n setLoading(false);\n }\n }, [\n enabled,\n investorId,\n nameFilter,\n preIPOCompanyId,\n preIPOCompanyInvestmentId,\n page,\n pageSize,\n sortOrder,\n sortBy\n ]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n const refetch = useCallback(async () => {\n await fetchData();\n }, [fetchData]);\n\n return {\n data,\n loading,\n error,\n refetch\n };\n};","/**\n * Constants for primary company SPV operations\n */\nexport const PRIMARY_COMPANY_CONSTANTS = {\n /**\n * Default page size for pagination\n */\n DEFAULT_PAGE_SIZE: 25,\n\n /**\n * Maximum allowed page size\n */\n MAX_PAGE_SIZE: 100,\n\n /**\n * Minimum allowed page size\n */\n MIN_PAGE_SIZE: 1,\n\n /**\n * Default starting page number (0-based)\n */\n DEFAULT_PAGE: 1,\n\n /**\n * Error messages\n */\n ERRORS: {\n INVESTOR_ID_REQUIRED: 'investorId is required and cannot be empty',\n INVALID_PAGE_SIZE: 'pageSize must be between 1 and 100',\n INVALID_PAGE: 'page must be non-negative',\n FETCH_FAILED: 'Failed to fetch SPV data',\n UNEXPECTED_ERROR: 'An unexpected error occurred'\n },\n\n /**\n * API endpoint configuration\n */\n API: {\n BASE_PATH: '/api'\n }\n} as const;\n\n/**\n * Type for error message keys\n */\nexport type PrimaryCompanyErrorKey = keyof typeof PRIMARY_COMPANY_CONSTANTS.ERRORS;","import React, { useEffect, useState } from \"react\";\nimport { TableRow } from \"./components/table-row\";\nimport { TableHeaders } from \"../common/table-headers\";\nimport { PrimaryTableProps } from \"../types/types\";\nimport { Pagination } from \"../private-table/components/pagination\";\nimport { LoadingSpinner } from \"../common/loading-spinner\";\nimport { usePrimaryCompany } from \"../hooks/usePrimaryCompany\";\nimport { PRIMARY_COMPANY_CONSTANTS } from \"../constants/primary-company-constants\";\nimport { SortOrder15 } from \"@monarkmarkets/api-client\";\n\nconst primaryColumns = [\n { title: 'Company' },\n { title: 'Price Per Share' },\n { title: 'Minimum Investment' },\n { title: 'Fees' },\n { title: 'Invest' }\n];\n\n/**\n * PrimaryTable component displays a table of SPV investment opportunities.\n * It includes table headers and rows with built-in data fetching using the usePrimaryCompany hook.\n */\nexport const PrimaryTable = ({\n investorId,\n onButtonClick,\n buttonText = \"Invest\",\n isLoading: externalLoading = false,\n initialPage = 1,\n pageSize = PRIMARY_COMPANY_CONSTANTS.DEFAULT_PAGE_SIZE,\n searchTerm = '',\n onPageChange,\n onDataLoaded\n }: PrimaryTableProps) => {\n const [currentPage, setCurrentPage] = useState(initialPage);\n\n const { data, loading, error, refetch } = usePrimaryCompany({\n investorId,\n nameFilter: searchTerm,\n page: currentPage,\n pageSize,\n sortOrder: SortOrder15.Descending,\n enabled: !!investorId\n });\n\n const isLoading = externalLoading || loading;\n const preIPOCompanySPV = data?.items || [];\n const totalPages = data?.pagination?.totalPages || 1;\n\n useEffect(() => {\n setCurrentPage(1);\n }, [searchTerm]);\n\n useEffect(() => {\n if (data) {\n onDataLoaded?.(preIPOCompanySPV, totalPages);\n }\n }, [data, preIPOCompanySPV, totalPages, onDataLoaded]);\n\n const handlePageChange = (page: number) => {\n setCurrentPage(page);\n onPageChange?.(page);\n };\n\n if (error) {\n return (\n <div className=\"bg-white rounded-lg shadow-sm p-8 text-center\">\n <p className=\"text-gray-500\">\n {PRIMARY_COMPANY_CONSTANTS.ERRORS.FETCH_FAILED}. Please try again later.\n </p>\n <button\n onClick={refetch}\n className=\"mt-2 px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600\"\n >\n Retry\n </button>\n </div>\n );\n }\n\n if (!isLoading && preIPOCompanySPV.length === 0) {\n return (\n <div className=\"bg-white rounded-lg shadow-sm p-8 text-center\">\n <p className=\"text-gray-500\">No companies available</p>\n </div>\n );\n }\n\n return (\n <div className=\"space-y-4\">\n <div className=\"relative\">\n {isLoading && (\n <div className=\"absolute inset-0 bg-white/50 flex items-center justify-center z-10\">\n <LoadingSpinner />\n </div>\n )}\n <div className=\"bg-white rounded-lg shadow-sm overflow-hidden\">\n <table className=\"w-full table-fixed\">\n <TableHeaders columns={primaryColumns} />\n <tbody className=\"relative\">\n {preIPOCompanySPV.map((company) => (\n <TableRow\n key={company.id}\n preIPOCompanySPV={company}\n companyName={company.name || ''}\n allInPricePerShare={company.allInPricePerShare}\n minCommitmentAmount={company.minCommitmentAmount}\n managementFee={company.managementFee}\n buttonText={buttonText}\n investorId={investorId}\n onButtonClick={onButtonClick}\n />\n ))}\n </tbody>\n </table>\n </div>\n </div>\n <Pagination\n currentPage={currentPage}\n totalPages={totalPages}\n onPageChange={handlePageChange}\n />\n </div>\n );\n};"],"names":["CompanyLogo","memo","_a","logoURL","name","_jsx","src","alt","concat","className","children","charAt","displayName","formatLargeNumber","value","toFixed","toLocaleString","formatCurrency","decimals","undefined","Intl","NumberFormat","style","currency","maximumFractionDigits","minimumFractionDigits","format","TableRow","preIpoCompany","companyName","lastRoundValuation","lastFundingSeries","lastSharePrice","buttonText","investorId","onButtonClick","_c","isInWatchlist","_d","watchlistLoading","onAddToWatchlist","onRemoveFromWatchlist","_e","useState","isTogglingWatchlist","setIsTogglingWatchlist","_f","isHovering","setIsHovering","_g","justToggled","setJustToggled","_h","isMounted","setIsMounted","useEffect","timer","setTimeout","clearTimeout","id","console","warn","safeName","safeCountry","country","useCallback","e","preventDefault","handleWatchlistToggle","__awaiter","sent","isWatchlistButtonDisabled","getButtonContent","_jsxs","_Fragment","xmlns","fill","viewBox","cx","cy","r","stroke","strokeWidth","d","X","Check","getButtonClassName","baseClasses","hoverClasses","role","onClick","onMouseEnter","onMouseLeave","disabled","zIndex","TableHeaders","columns","map","column","index","width","scope","title","NavigationButton","direction","strokeLinecap","strokeLinejoin","PageButton","page","isCurrentPage","Pagination","currentPage","totalPages","onPageChange","handlePrevious","handleNext","pageNumbers","useMemo","pages","showEllipsis","i","push","LoadingSpinner","PreIPOCompanyService","_client","Client","prototype","getAllCompanies","searchTerm_1","searchCategories_1","sortBy_1","searchTerm","searchCategories","sortBy","sortOrder","minLastValuation","maxLastValuation","minTotalFunding","maxTotalFunding","listingType","isActive","pageSize","SortOrder10","Descending","validateParameters","getAllPreIPOCompanies","logError","error_1","addToWatchlist","targetId","trim","Error","watchlistItem","CreateWatchlist","targetAssetType","CreateWatchlistTargetAssetType","PreIPOCompany","createOrUpdate","error","error_2","message","removeFromWatchlist","delete","error_3","getByInvestorAndTarget","batchCheckWatchlist","targetIds","watchlistStatus","Map","length","promises","_this","Promise","all","results","forEach","set","error_5","parameters","usePrivateCompanies","_b","enabled","data","setData","loading","setLoading","setError","setWatchlistStatus","_j","loadingWatchlist","setLoadingWatchlist","preIPOService","fetchData","result","errorMessage","err_1","fetchWatchlistStatus","items","companyIds","company","filter","Boolean","status_1","err_2","prev","err_3","err_4","refetch","refetchWatchlist","PRIVATE_COMPANY_CONSTANTS","DEFAULT_PAGE_SIZE","ERRORS","INVALID_PAGE_SIZE","FETCH_FAILED","PRIVATE_COLUMNS","PrivateTable","externalLoading","initialPage","onDataLoaded","setCurrentPage","isFullyLoaded","pagination","handlePageChange","ErrorState","EmptyState","LoadingOverlay","lastValuation","get","SharedService","GetCompanyLogoAndCountry","preIPOCompanyId","getPreIPOCompanyById","location","preIPOCompanySPV","allInPricePerShare","minCommitmentAmount","managementFee","handleButtonClick","companyDetails","setCompanyDetails","isLoading","setIsLoading","fetchCompanyDetails","service","details","PreIPOCompanySPVService","getAllSpvs","investorId_1","nameFilter_1","preIPOCompanyId_1","preIPOCompanyInvestmentId_1","page_1","arguments","nameFilter","preIPOCompanyInvestmentId","SortOrder15","getAllPreIPOCompanySPVs","MonarkStage","PRIMARY_FUNDRAISE","usePrimaryCompany","spvService","PRIMARY_COMPANY_CONSTANTS","INVESTOR_ID_REQUIRED","primaryColumns","PrimaryTable"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -84,6 +84,17 @@ var TableRow$1 = /*#__PURE__*/react.memo(function (_a) {
|
|
|
84
84
|
var _g = react.useState(false),
|
|
85
85
|
justToggled = _g[0],
|
|
86
86
|
setJustToggled = _g[1];
|
|
87
|
+
var _h = react.useState(false),
|
|
88
|
+
isMounted = _h[0],
|
|
89
|
+
setIsMounted = _h[1];
|
|
90
|
+
react.useEffect(function () {
|
|
91
|
+
var timer = setTimeout(function () {
|
|
92
|
+
setIsMounted(true);
|
|
93
|
+
}, 50);
|
|
94
|
+
return function () {
|
|
95
|
+
return clearTimeout(timer);
|
|
96
|
+
};
|
|
97
|
+
}, []);
|
|
87
98
|
if (!(preIpoCompany === null || preIpoCompany === void 0 ? void 0 : preIpoCompany.id)) {
|
|
88
99
|
console.warn('TableRow: Missing required preIpoCompany.id');
|
|
89
100
|
return null;
|
|
@@ -161,7 +172,7 @@ var TableRow$1 = /*#__PURE__*/react.memo(function (_a) {
|
|
|
161
172
|
})]
|
|
162
173
|
});
|
|
163
174
|
}
|
|
164
|
-
if (isInWatchlist && isHovering && !justToggled) {
|
|
175
|
+
if (isInWatchlist && isHovering && !justToggled && isMounted) {
|
|
165
176
|
return jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
166
177
|
children: [jsxRuntime.jsx("span", {
|
|
167
178
|
className: "transition-opacity duration-200 relative z-10",
|
|
@@ -189,7 +200,9 @@ var TableRow$1 = /*#__PURE__*/react.memo(function (_a) {
|
|
|
189
200
|
var getButtonClassName = function () {
|
|
190
201
|
var baseClasses = "font-medium py-2 px-4 rounded-lg transition-all duration-300 disabled:opacity-50 disabled:cursor-not-allowed inline-flex items-center justify-center gap-2 min-w-[170px] relative overflow-hidden";
|
|
191
202
|
if (isInWatchlist && !isTogglingWatchlist) {
|
|
192
|
-
|
|
203
|
+
// Only apply hover effects after component is mounted and not just toggled
|
|
204
|
+
var hoverClasses = isMounted && !justToggled ? 'hover:text-white hover:border-red-500 group' : '';
|
|
205
|
+
return "".concat(baseClasses, " bg-white border-2 border-custom-blue text-custom-blue ").concat(hoverClasses);
|
|
193
206
|
}
|
|
194
207
|
return "".concat(baseClasses, " bg-custom-blue text-white shadow-md");
|
|
195
208
|
};
|
|
@@ -250,7 +263,7 @@ var TableRow$1 = /*#__PURE__*/react.memo(function (_a) {
|
|
|
250
263
|
disabled: isWatchlistButtonDisabled,
|
|
251
264
|
className: getButtonClassName(),
|
|
252
265
|
"aria-label": "".concat(isInWatchlist ? 'Remove from' : 'Add to', " watchlist for ").concat(safeName),
|
|
253
|
-
children: [isInWatchlist && !isTogglingWatchlist && !justToggled && jsxRuntime.jsx("span", {
|
|
266
|
+
children: [isInWatchlist && !isTogglingWatchlist && !justToggled && isMounted && jsxRuntime.jsx("span", {
|
|
254
267
|
className: "absolute inset-0 bg-red-500 transition-transform duration-300 ease-out origin-left scale-x-0 group-hover:scale-x-100",
|
|
255
268
|
style: {
|
|
256
269
|
zIndex: 0
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/common/company-logo.tsx","../src/utils/formatters.ts","../src/private-table/components/table-row.tsx","../src/common/table-headers.tsx","../src/private-table/components/pagination.tsx","../src/common/loading-spinner.tsx","../src/services/private-company-service.ts","../src/hooks/usePrivateCompany.ts","../src/constants/private-company-constants.ts","../src/private-table/table.tsx","../src/services/shared-service.ts","../src/primary-table/components/table-row.tsx","../src/services/primary-company-service.ts","../src/hooks/usePrimaryCompany.ts","../src/constants/primary-company-constants.ts","../src/primary-table/table.tsx"],"sourcesContent":["import React, {memo} from \"react\";\n\n/**\n * CompanyLogo component that displays either a company logo or a fallback initial.\n *\n * @param props - Component props\n * @param props.logoURL - Optional URL to the company's logo image passed through the preIPOCompany object\n * @param props.name - Company name, used for alt text and fallback initial passed through the preIPOCompany object\n * @returns A company logo image or a fallback with the first letter of the company name\n */\nexport const CompanyLogo: React.FC<{ logoURL?: string; name: string }> = memo(({logoURL, name}) => {\n if (logoURL) {\n return (\n <img\n src={logoURL}\n alt={`${name} logo`}\n className=\"w-8 h-8 rounded-lg object-cover\"\n />\n );\n }\n\n return (\n <div className=\"w-8 h-8 bg-gray-100 rounded-lg flex items-center justify-center\">\n <span className=\"text-gray-400 text-sm font-medium\">\n {name.charAt(0)}\n </span>\n </div>\n );\n});\n\nCompanyLogo.displayName = 'CompanyLogo';","export const formatLargeNumber = (value: number): string => {\n if (value >= 1_000_000_000) {\n return `$${(value / 1_000_000_000).toFixed(1)}B`;\n } else if (value >= 1_000_000) {\n return `$${(value / 1_000_000).toFixed(1)}M`;\n }\n return `$${value.toLocaleString()}`;\n};\n\nexport const formatCurrency = (value?: number, decimals: number = 2): string => {\n if (value === undefined || value === null) return 'N/A';\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals\n }).format(value);\n};\n","import React, {memo, useCallback, useState} from \"react\";\nimport {PrivateTable} from \"../../types/types\";\nimport {CompanyLogo} from \"../../common/company-logo\";\nimport {formatCurrency, formatLargeNumber} from \"../../utils/formatters\";\nimport {Check, X} from \"lucide-react\";\n\n/**\n * TableRow component renders a row in the PrivateTable component.\n * It includes columns for company details, total funding, last round,\n * price per share, and a watchlist action button.\n */\nexport const TableRow: React.FC<PrivateTable> = memo(({\n preIpoCompany,\n companyName,\n lastRoundValuation,\n lastFundingSeries,\n lastSharePrice,\n buttonText = \"\",\n investorId,\n onButtonClick,\n isInWatchlist = false,\n watchlistLoading = false,\n onAddToWatchlist,\n onRemoveFromWatchlist\n }) => {\n const [isTogglingWatchlist, setIsTogglingWatchlist] = useState(false);\n const [isHovering, setIsHovering] = useState(false);\n const [justToggled, setJustToggled] = useState(false);\n\n if (!preIpoCompany?.id) {\n console.warn('TableRow: Missing required preIpoCompany.id');\n return null;\n }\n\n const safeName = companyName || preIpoCompany?.name || \"Unknown Company\";\n const safeCountry = preIpoCompany?.country || \"\";\n\n const handleButtonClick = useCallback((e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n if (onButtonClick && preIpoCompany?.id) {\n onButtonClick(preIpoCompany.id, investorId);\n }\n }, [preIpoCompany?.id, investorId, onButtonClick]);\n\n const handleWatchlistToggle = useCallback(async (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n\n if (!preIpoCompany?.id || !onAddToWatchlist || !onRemoveFromWatchlist) {\n return;\n }\n\n setIsTogglingWatchlist(true);\n\n try {\n if (isInWatchlist) {\n await onRemoveFromWatchlist(preIpoCompany.id);\n } else {\n await onAddToWatchlist(preIpoCompany.id);\n }\n\n setJustToggled(true);\n setTimeout(() => {\n setJustToggled(false);\n }, 800);\n } finally {\n setIsTogglingWatchlist(false);\n }\n }, [preIpoCompany?.id, isInWatchlist, onAddToWatchlist, onRemoveFromWatchlist]);\n\n const isWatchlistButtonDisabled = isTogglingWatchlist || watchlistLoading || !onAddToWatchlist || !onRemoveFromWatchlist;\n\n const getButtonContent = () => {\n if (isTogglingWatchlist) {\n return (\n <>\n <span className=\"transition-opacity duration-200 relative z-10\">\n {isInWatchlist ? 'Removing...' : 'Adding...'}\n </span>\n <svg className=\"animate-spin h-4 w-4 relative z-10\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\"></circle>\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\n </svg>\n </>\n );\n }\n\n if (isInWatchlist && isHovering && !justToggled) {\n return (\n <>\n <span className=\"transition-opacity duration-200 relative z-10\">Remove</span>\n <X className=\"h-4 w-4 transition-opacity duration-200 relative z-10\" />\n </>\n );\n }\n\n if (isInWatchlist) {\n return (\n <>\n <span className=\"transition-opacity duration-200 relative z-10\">Added</span>\n <Check className=\"h-4 w-4 transition-opacity duration-200 relative z-10\" />\n </>\n );\n }\n\n return <span className=\"transition-opacity duration-200 relative z-10\">Add to Watchlist</span>;\n };\n\n const getButtonClassName = () => {\n const baseClasses = \"font-medium py-2 px-4 rounded-lg transition-all duration-300 disabled:opacity-50 disabled:cursor-not-allowed inline-flex items-center justify-center gap-2 min-w-[170px] relative overflow-hidden\";\n\n if (isInWatchlist && !isTogglingWatchlist) {\n return `${baseClasses} bg-white border-2 border-custom-blue text-custom-blue ${!justToggled ? 'hover:text-white hover:border-red-500 group' : ''}`;\n }\n\n return `${baseClasses} bg-custom-blue text-white shadow-md`;\n };\n\n return (\n <tr\n className=\"hover:bg-gray-50 transition-colors\"\n role=\"row\"\n >\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <div className=\"flex items-center gap-3\">\n <CompanyLogo\n logoURL={preIpoCompany?.logoURL}\n name={safeName}\n />\n <div className=\"flex flex-col\">\n <span className=\"font-medium text-gray-900\">{safeName}</span>\n {safeCountry && (\n <span className=\"text-sm text-gray-500\">{safeCountry}</span>\n )}\n </div>\n </div>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <span className=\"font-medium text-gray-900\">\n {lastRoundValuation !== undefined && lastRoundValuation !== null\n ? formatLargeNumber(lastRoundValuation)\n : \"N/A\"}\n </span>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <span className=\"font-medium text-gray-900\">\n {lastFundingSeries || \"Unknown\"}\n </span>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <span className=\"font-medium text-gray-900\">\n {lastSharePrice !== undefined && lastSharePrice !== null\n ? formatCurrency(lastSharePrice)\n : \"Not Available\"}\n </span>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <button\n onClick={handleWatchlistToggle}\n onMouseEnter={() => setIsHovering(true)}\n onMouseLeave={() => setIsHovering(false)}\n disabled={isWatchlistButtonDisabled}\n className={getButtonClassName()}\n aria-label={`${isInWatchlist ? 'Remove from' : 'Add to'} watchlist for ${safeName}`}\n >\n {isInWatchlist && !isTogglingWatchlist && !justToggled && (\n <span\n className=\"absolute inset-0 bg-red-500 transition-transform duration-300 ease-out origin-left scale-x-0 group-hover:scale-x-100\"\n style={{ zIndex: 0 }}\n />\n )}\n {getButtonContent()}\n </button>\n </td>\n </tr>\n );\n});\n\nTableRow.displayName = 'TableRow';","import React, {memo} from 'react';\n\ninterface Column {\n title: string;\n width?: string;\n}\n\ninterface TableHeaderProps {\n columns: Column[];\n}\n\n/**\n * Common TableHeader component that can be configured for different table types.\n * It renders a header row with configurable column titles and styling.\n * @param columns - Array of column configurations with titles and optional widths\n */\nexport const TableHeaders = memo(({columns}: TableHeaderProps) => (\n <thead>\n <tr\n className=\"bg-gray-50 border-b border-gray-200\"\n role=\"row\"\n >\n {columns.map((column, index) => (\n <th\n key={`${column.title}-${index}`}\n className={`py-3 px-4 text-left text-sm font-semibold text-gray-900 ${column.width || ''}`}\n scope=\"col\"\n role=\"columnheader\"\n >\n {column.title}\n </th>\n ))}\n </tr>\n </thead>\n));\n\nTableHeaders.displayName = 'TableHeader';","import React, {memo, useCallback, useMemo} from \"react\";\nimport {PaginationProps} from \"../../types/types\";\n\nconst NavigationButton = memo(({\n onClick,\n disabled,\n direction,\n }: {\n onClick: () => void;\n disabled: boolean;\n direction: 'previous' | 'next';\n}) => (\n <button\n onClick={onClick}\n disabled={disabled}\n className=\"p-2 rounded-lg text-gray-600 hover:bg-gray-100 disabled:opacity-50 disabled:hover:bg-transparent disabled:cursor-not-allowed transition-colors\"\n aria-label={`${direction} page`}\n >\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d={direction === 'previous' ? \"M15 19l-7-7 7-7\" : \"M9 5l7 7-7 7\"}\n />\n </svg>\n </button>\n));\n\nNavigationButton.displayName = 'NavigationButton';\n\nconst PageButton = memo(({\n page,\n isCurrentPage,\n onClick\n }: {\n page: number;\n isCurrentPage: boolean;\n onClick: () => void;\n}) => (\n <button\n onClick={onClick}\n disabled={isCurrentPage}\n className={`w-10 h-10 rounded-lg text-sm font-medium transition-colors ${\n isCurrentPage\n ? 'bg-custom-blue text-white'\n : 'text-gray-600 hover:bg-gray-100'\n }`}\n aria-label={`Go to page ${page}`}\n aria-current={isCurrentPage ? 'page' : undefined}\n >\n {page}\n </button>\n));\n\nPageButton.displayName = 'PageButton';\n\n/**\n * Pagination component renders pagination controls for the PrivateTable component.\n * It includes navigation buttons for previous and next pages, and page number buttons.\n */\nexport const Pagination: React.FC<PaginationProps> = memo(({\n currentPage,\n totalPages,\n onPageChange,\n }) => {\n const handlePrevious = useCallback(() => {\n onPageChange(currentPage - 1);\n }, [currentPage, onPageChange]);\n\n const handleNext = useCallback(() => {\n onPageChange(currentPage + 1);\n }, [currentPage, onPageChange]);\n\n const pageNumbers = useMemo(() => {\n const pages = [];\n const showEllipsis = totalPages > 7;\n\n if (showEllipsis) {\n if (currentPage <= 4) {\n for (let i = 1; i <= 5; i++) {\n pages.push(i);\n }\n pages.push('ellipsis');\n pages.push(totalPages);\n } else if (currentPage >= totalPages - 3) {\n pages.push(1);\n pages.push('ellipsis');\n for (let i = totalPages - 4; i <= totalPages; i++) {\n pages.push(i);\n }\n } else {\n pages.push(1);\n pages.push('ellipsis');\n for (let i = currentPage - 1; i <= currentPage + 1; i++) {\n pages.push(i);\n }\n pages.push('ellipsis');\n pages.push(totalPages);\n }\n } else {\n for (let i = 1; i <= totalPages; i++) {\n pages.push(i);\n }\n }\n\n return pages;\n }, [currentPage, totalPages]);\n\n return (\n <nav\n role=\"navigation\"\n aria-label=\"Pagination\"\n className=\"flex items-center justify-center gap-1\"\n >\n <NavigationButton\n onClick={handlePrevious}\n disabled={currentPage <= 1}\n direction=\"previous\"\n />\n\n <div className=\"flex items-center gap-1 mx-2\">\n {pageNumbers.map((page, index) => (\n page === 'ellipsis' ? (\n <span\n key={`ellipsis-${index}`}\n className=\"w-10 h-10 flex items-center justify-center text-gray-500\"\n aria-hidden=\"true\"\n >\n ...\n </span>\n ) : (\n <PageButton\n key={page}\n page={page as number}\n isCurrentPage={page === currentPage}\n onClick={() => onPageChange(page as number)}\n />\n )\n ))}\n </div>\n\n <NavigationButton\n onClick={handleNext}\n disabled={currentPage >= totalPages}\n direction=\"next\"\n />\n </nav>\n );\n});\n\nPagination.displayName = 'Pagination';","export const LoadingSpinner = () => (\n <svg className=\"animate-spin h-8 w-8 text-custom-blue\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\"\n viewBox=\"0 0 24 24\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\"></circle>\n <path className=\"opacity-75\" fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\n </svg>\n);","import {\n Client,\n PreIPOCompanyApiResponse,\n SortOrder10,\n SortBy,\n CreateWatchlist,\n CreateWatchlistTargetAssetType,\n Watchlist\n} from \"@monarkmarkets/api-client\";\n\n/**\n * Service for managing Pre-IPO company operations and watchlist functionality.\n */\nexport class PreIPOCompanyService {\n private readonly _client: Client;\n\n constructor() {\n this._client = new Client(\"/api\");\n }\n\n /**\n * Retrieves all Pre-IPO companies with optional filtering and pagination.\n *\n * @param searchTerm - Optional search term to filter companies\n * @param searchCategories - Optional array of categories to filter by\n * @param sortBy - Field to sort by\n * @param sortOrder - Sort order for results (default: Descending)\n * @param minLastValuation - Minimum last valuation filter\n * @param maxLastValuation - Maximum last valuation filter\n * @param minTotalFunding - Minimum total funding filter\n * @param maxTotalFunding - Maximum total funding filter\n * @param listingType - Optional listing type filter to categorize companies by their listing status\n * @param isActive - Optional flag to filter companies by their active status\n * @param page - Optional page number for pagination\n * @param pageSize - Number of items per page (default: 25)\n * @returns Promise resolving to PreIPOCompanyApiResponse or null if operation fails\n */\n public async getAllCompanies(\n searchTerm?: string,\n searchCategories?: string[],\n sortBy?: SortBy,\n sortOrder: SortOrder10 = SortOrder10.Descending,\n minLastValuation?: number,\n maxLastValuation?: number,\n minTotalFunding?: number,\n maxTotalFunding?: number,\n listingType?: string,\n isActive?: boolean,\n page?: number,\n pageSize: number = 25\n ): Promise<PreIPOCompanyApiResponse | null> {\n this.validateParameters(page, pageSize, minLastValuation, maxLastValuation, minTotalFunding, maxTotalFunding);\n\n try {\n return await this._client.getAllPreIPOCompanies(\n page,\n pageSize,\n searchTerm,\n searchCategories,\n sortBy,\n sortOrder,\n minLastValuation,\n maxLastValuation,\n minTotalFunding,\n maxTotalFunding,\n listingType,\n isActive\n );\n } catch (error) {\n this.logError(error, {\n searchTerm,\n searchCategories,\n sortBy,\n sortOrder,\n minLastValuation,\n maxLastValuation,\n minTotalFunding,\n maxTotalFunding,\n listingType,\n isActive,\n page,\n pageSize\n });\n\n return null;\n }\n }\n\n /**\n * Add a Pre-IPO company to the investor's watchlist.\n *\n * @param investorId - The unique identifier of the investor\n * @param targetId - The Pre-IPO company ID to add to watchlist\n * @returns Promise resolving to Watchlist item or null if operation fails\n */\n public async addToWatchlist(\n investorId: string,\n targetId: string\n ): Promise<Watchlist | null> {\n if (!investorId?.trim()) {\n throw new Error(\"investorId is required and cannot be empty\");\n }\n\n if (!targetId?.trim()) {\n throw new Error(\"targetId is required and cannot be empty\");\n }\n\n try {\n const watchlistItem = new CreateWatchlist({\n investorId,\n targetId,\n targetAssetType: CreateWatchlistTargetAssetType.PreIPOCompany\n });\n\n return await this._client.createOrUpdate(watchlistItem);\n } catch (error) {\n console.error(\n `Failed to add Pre-IPO company ${targetId} to watchlist for investor ${investorId}:`,\n {\n investorId,\n targetId,\n error: error instanceof Error ? error.message : error\n }\n );\n return null;\n }\n }\n\n /**\n * Remove a Pre-IPO company from the investor's watchlist.\n *\n * @param investorId - The unique identifier of the investor\n * @param targetId - The Pre-IPO company ID to remove from watchlist\n * @returns Promise resolving to true if successful, false otherwise\n */\n public async removeFromWatchlist(\n investorId: string,\n targetId: string\n ): Promise<boolean> {\n if (!investorId?.trim()) {\n throw new Error(\"investorId is required and cannot be empty\");\n }\n\n if (!targetId?.trim()) {\n throw new Error(\"targetId is required and cannot be empty\");\n }\n\n try {\n await this._client.delete(investorId, targetId);\n return true;\n } catch (error) {\n console.error(\n `Failed to remove Pre-IPO company ${targetId} from watchlist for investor ${investorId}:`,\n {\n investorId,\n targetId,\n error: error instanceof Error ? error.message : error\n }\n );\n return false;\n }\n }\n\n /**\n * Check if a Pre-IPO company is in the investor's watchlist.\n *\n * @param investorId - The unique identifier of the investor\n * @param targetId - The Pre-IPO company ID to check\n * @returns Promise resolving to true if in watchlist, false otherwise\n */\n public async isInWatchlist(\n investorId: string,\n targetId: string\n ): Promise<boolean> {\n if (!investorId?.trim() || !targetId?.trim()) {\n return false;\n }\n\n try {\n const watchlistItem = await this._client.getByInvestorAndTarget(investorId, targetId);\n return !!watchlistItem;\n } catch (error) {\n return false;\n }\n }\n\n /**\n * Batch check watchlist status for multiple Pre-IPO companies.\n *\n * @param investorId - The unique identifier of the investor\n * @param targetIds - Array of Pre-IPO company IDs to check\n * @returns Promise resolving to a Map of targetId -> boolean (true if in watchlist)\n */\n public async batchCheckWatchlist(\n investorId: string,\n targetIds: string[]\n ): Promise<Map<string, boolean>> {\n const watchlistStatus = new Map<string, boolean>();\n\n if (!investorId?.trim() || !targetIds.length) {\n return watchlistStatus;\n }\n\n const promises = targetIds.map(async (targetId) => {\n const isInWatchlist = await this.isInWatchlist(investorId, targetId);\n return { targetId, isInWatchlist };\n });\n\n try {\n const results = await Promise.all(promises);\n results.forEach(({ targetId, isInWatchlist }) => {\n watchlistStatus.set(targetId, isInWatchlist);\n });\n } catch (error) {\n console.error('Failed to batch check watchlist status:', {\n investorId,\n targetIds,\n error: error instanceof Error ? error.message : error\n });\n }\n\n return watchlistStatus;\n }\n\n private validateParameters(\n page?: number,\n pageSize?: number,\n minLastValuation?: number,\n maxLastValuation?: number,\n minTotalFunding?: number,\n maxTotalFunding?: number\n ): void {\n if (pageSize !== undefined && (pageSize <= 0 || pageSize > 100)) {\n throw new Error(\"pageSize must be between 1 and 100\");\n }\n\n if (page !== undefined && page < 0) {\n throw new Error(\"page must be non-negative\");\n }\n\n if (minLastValuation !== undefined && minLastValuation < 0) {\n throw new Error(\"minLastValuation must be non-negative\");\n }\n\n if (maxLastValuation !== undefined && maxLastValuation < 0) {\n throw new Error(\"maxLastValuation must be non-negative\");\n }\n\n if (minLastValuation !== undefined && maxLastValuation !== undefined && minLastValuation > maxLastValuation) {\n throw new Error(\"minLastValuation cannot be greater than maxLastValuation\");\n }\n\n if (minTotalFunding !== undefined && minTotalFunding < 0) {\n throw new Error(\"minTotalFunding must be non-negative\");\n }\n\n if (maxTotalFunding !== undefined && maxTotalFunding < 0) {\n throw new Error(\"maxTotalFunding must be non-negative\");\n }\n\n if (minTotalFunding !== undefined && maxTotalFunding !== undefined && minTotalFunding > maxTotalFunding) {\n throw new Error(\"minTotalFunding cannot be greater than maxTotalFunding\");\n }\n }\n\n private logError(error: unknown, parameters: Record<string, unknown>): void {\n console.error('Failed to retrieve Pre-IPO companies:', {\n ...parameters,\n error: error instanceof Error ? error.message : error\n });\n }\n}","import { useState, useEffect, useCallback, useMemo } from 'react';\nimport { PreIPOCompanyApiResponse, SortOrder10, SortBy } from '@monarkmarkets/api-client';\nimport { PreIPOCompanyService } from '../services/private-company-service';\n\ninterface UsePrivateCompaniesParams {\n investorId?: string;\n searchTerm?: string;\n searchCategories?: string[];\n sortBy?: SortBy;\n sortOrder?: SortOrder10;\n minLastValuation?: number;\n maxLastValuation?: number;\n minTotalFunding?: number;\n maxTotalFunding?: number;\n listingType?: string;\n isActive?: boolean;\n page?: number;\n pageSize?: number;\n enabled?: boolean;\n}\n\ninterface UsePrivateCompaniesReturn {\n data: PreIPOCompanyApiResponse | null;\n loading: boolean;\n error: string | null;\n watchlistStatus: Map<string, boolean>;\n loadingWatchlist: boolean;\n refetch: () => Promise<void>;\n refetchWatchlist: () => Promise<void>;\n addToWatchlist: (targetId: string) => Promise<boolean>;\n removeFromWatchlist: (targetId: string) => Promise<boolean>;\n}\n\n/**\n * Hook for fetching private company data with automatic loading states, error handling, and watchlist management.\n */\nexport const usePrivateCompanies = ({\n investorId,\n searchTerm,\n searchCategories,\n sortBy,\n sortOrder = SortOrder10.Descending,\n minLastValuation,\n maxLastValuation,\n minTotalFunding,\n maxTotalFunding,\n listingType,\n isActive,\n page,\n pageSize = 25,\n enabled = true\n }: UsePrivateCompaniesParams): UsePrivateCompaniesReturn => {\n const [data, setData] = useState<PreIPOCompanyApiResponse | null>(null);\n const [loading, setLoading] = useState<boolean>(false);\n const [error, setError] = useState<string | null>(null);\n const [watchlistStatus, setWatchlistStatus] = useState<Map<string, boolean>>(new Map());\n const [loadingWatchlist, setLoadingWatchlist] = useState<boolean>(false);\n\n const preIPOService = useMemo(() => new PreIPOCompanyService(), []);\n\n const fetchData = useCallback(async () => {\n if (!enabled) {\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const result = await preIPOService.getAllCompanies(\n searchTerm,\n searchCategories,\n sortBy,\n sortOrder,\n minLastValuation,\n maxLastValuation,\n minTotalFunding,\n maxTotalFunding,\n listingType,\n isActive,\n page,\n pageSize\n );\n\n if (result === null) {\n setError('Failed to fetch private company data');\n setData(null);\n } else {\n setData(result);\n }\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : 'An unexpected error occurred';\n setError(errorMessage);\n setData(null);\n } finally {\n setLoading(false);\n }\n }, [\n preIPOService,\n enabled,\n searchTerm,\n searchCategories,\n sortBy,\n sortOrder,\n minLastValuation,\n maxLastValuation,\n minTotalFunding,\n maxTotalFunding,\n listingType,\n isActive,\n page,\n pageSize\n ]);\n\n const fetchWatchlistStatus = useCallback(async () => {\n if (!investorId || !data?.items || data.items.length === 0) {\n return;\n }\n\n setLoadingWatchlist(true);\n try {\n const companyIds = data.items.map(company => company.id).filter(Boolean) as string[];\n const status = await preIPOService.batchCheckWatchlist(investorId, companyIds);\n setWatchlistStatus(status);\n } catch (err) {\n console.error('Failed to fetch watchlist status:', err);\n } finally {\n setLoadingWatchlist(false);\n }\n }, [investorId, data?.items, preIPOService]);\n\n const addToWatchlist = useCallback(async (targetId: string): Promise<boolean> => {\n if (!investorId) {\n console.error('Cannot add to watchlist: investorId is required');\n return false;\n }\n\n try {\n const result = await preIPOService.addToWatchlist(investorId, targetId);\n if (result) {\n // Update local state\n setWatchlistStatus(prev => new Map(prev).set(targetId, true));\n return true;\n }\n return false;\n } catch (err) {\n console.error('Failed to add to watchlist:', err);\n return false;\n }\n }, [investorId, preIPOService]);\n\n const removeFromWatchlist = useCallback(async (targetId: string): Promise<boolean> => {\n if (!investorId) {\n console.error('Cannot remove from watchlist: investorId is required');\n return false;\n }\n\n try {\n const result = await preIPOService.removeFromWatchlist(investorId, targetId);\n if (result) {\n // Update local state\n setWatchlistStatus(prev => new Map(prev).set(targetId, false));\n return true;\n }\n return false;\n } catch (err) {\n console.error('Failed to remove from watchlist:', err);\n return false;\n }\n }, [investorId, preIPOService]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n useEffect(() => {\n if (data?.items && data.items.length > 0) {\n fetchWatchlistStatus();\n }\n }, [fetchWatchlistStatus, data?.items]);\n\n const refetch = useCallback(async () => {\n await fetchData();\n }, [fetchData]);\n\n const refetchWatchlist = useCallback(async () => {\n await fetchWatchlistStatus();\n }, [fetchWatchlistStatus]);\n\n return {\n data,\n loading,\n error,\n watchlistStatus,\n loadingWatchlist,\n refetch,\n refetchWatchlist,\n addToWatchlist,\n removeFromWatchlist\n };\n};","/**\n * Constants for Pre-IPO company operations\n */\nexport const PRIVATE_COMPANY_CONSTANTS = {\n /**\n * Default page size for pagination\n */\n DEFAULT_PAGE_SIZE: 25,\n\n /**\n * Maximum allowed page size\n */\n MAX_PAGE_SIZE: 100,\n\n /**\n * Minimum allowed page size\n */\n MIN_PAGE_SIZE: 1,\n\n /**\n * Default starting page number (0-based)\n */\n DEFAULT_PAGE: 1,\n\n /**\n * Minimum allowed valuation and funding values\n */\n MIN_VALUATION: 0,\n MIN_FUNDING: 0,\n\n /**\n * Error messages\n */\n ERRORS: {\n INVALID_PAGE_SIZE: 'pageSize must be between 1 and 100',\n INVALID_PAGE: 'page must be non-negative',\n INVALID_MIN_VALUATION: 'minLastValuation must be non-negative',\n INVALID_MAX_VALUATION: 'maxLastValuation must be non-negative',\n INVALID_VALUATION_RANGE: 'minLastValuation cannot be greater than maxLastValuation',\n INVALID_MIN_FUNDING: 'minTotalFunding must be non-negative',\n INVALID_MAX_FUNDING: 'maxTotalFunding must be non-negative',\n INVALID_FUNDING_RANGE: 'minTotalFunding cannot be greater than maxTotalFunding',\n FETCH_FAILED: 'Failed to fetch Pre-IPO company data',\n UNEXPECTED_ERROR: 'An unexpected error occurred'\n },\n\n /**\n * API endpoint configuration\n */\n API: {\n BASE_PATH: '/api'\n }\n} as const;\n\n/**\n * Type for error message keys\n */\nexport type PrivateCompanyErrorKey = keyof typeof PRIVATE_COMPANY_CONSTANTS.ERRORS;","import React, { useEffect, useState, useCallback, useMemo } from \"react\";\nimport { TableRow } from \"./components/table-row\";\nimport { TableHeaders } from \"../common/table-headers\";\nimport { Pagination } from \"./components/pagination\";\nimport { PrivateTableProps } from \"../types/types\";\nimport { LoadingSpinner } from \"../common/loading-spinner\";\nimport { usePrivateCompanies } from \"../hooks/usePrivateCompany\";\nimport { PRIVATE_COMPANY_CONSTANTS } from \"../constants/private-company-constants\";\nimport { SortOrder10 } from \"@monarkmarkets/api-client\";\n\nconst PRIVATE_COLUMNS = [\n { title: 'Company' },\n { title: 'Last Round Valuation' },\n { title: 'Last Round' },\n { title: 'Last Round Price/Share' },\n { title: 'Watchlist' }\n];\n\n/**\n * PrivateTable component displays a table of pre-IPO companies with pagination and loading states.\n * It includes table headers, rows, and pagination controls using the usePrivateCompanies hook.\n */\nexport const PrivateTable = ({\n investorId,\n onButtonClick,\n buttonText = \"Submit IOI\",\n isLoading: externalLoading = false,\n initialPage = 1,\n pageSize = PRIVATE_COMPANY_CONSTANTS.DEFAULT_PAGE_SIZE,\n searchTerm = '',\n onPageChange,\n onDataLoaded,\n listingType,\n isActive,\n }: PrivateTableProps) => {\n const [currentPage, setCurrentPage] = useState(initialPage);\n\n const {\n data,\n loading,\n error,\n watchlistStatus,\n loadingWatchlist,\n refetch,\n addToWatchlist,\n removeFromWatchlist\n } = usePrivateCompanies({\n investorId,\n searchTerm,\n page: currentPage,\n pageSize,\n sortOrder: SortOrder10.Descending,\n listingType,\n isActive,\n enabled: true\n });\n\n const isFullyLoaded = !loading && !loadingWatchlist && data !== null;\n const isLoading = useMemo(() => externalLoading || loading || loadingWatchlist, [externalLoading, loading, loadingWatchlist]);\n const preIpoCompany = useMemo(() => data?.items || [], [data?.items]);\n const totalPages = useMemo(() => data?.pagination?.totalPages || 1, [data?.pagination?.totalPages]);\n\n useEffect(() => {\n setCurrentPage(1);\n }, [searchTerm]);\n\n useEffect(() => {\n setCurrentPage(initialPage);\n }, [initialPage]);\n\n useEffect(() => {\n if (data) {\n onDataLoaded?.(preIpoCompany, totalPages);\n }\n }, [data, preIpoCompany, totalPages, onDataLoaded]);\n\n const handlePageChange = useCallback((page: number) => {\n setCurrentPage(page);\n onPageChange?.(page);\n }, [onPageChange]);\n\n const ErrorState = () => (\n <div className=\"bg-white rounded-lg shadow-sm p-8 text-center\">\n <p className=\"text-gray-500 mb-4\">\n {PRIVATE_COMPANY_CONSTANTS.ERRORS.FETCH_FAILED}. Please try again later.\n </p>\n <button\n onClick={refetch}\n className=\"px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600 transition-colors\"\n >\n Retry\n </button>\n </div>\n );\n\n const EmptyState = () => (\n <div className=\"bg-white rounded-lg shadow-sm p-8 text-center\">\n <p className=\"text-gray-500\">No companies available</p>\n </div>\n );\n\n const LoadingOverlay = () => (\n <div className=\"bg-white rounded-lg shadow-sm p-8 flex items-center justify-center\">\n <LoadingSpinner />\n </div>\n );\n\n if (error) {\n return <ErrorState />;\n }\n\n if (!isFullyLoaded) {\n return <LoadingOverlay />;\n }\n\n if (preIpoCompany.length === 0) {\n return <EmptyState />;\n }\n\n return (\n <div className=\"space-y-4\">\n <div className=\"bg-white rounded-lg shadow-sm overflow-hidden\">\n <table className=\"w-full table-fixed\">\n <TableHeaders columns={PRIVATE_COLUMNS} />\n <tbody className=\"relative\">\n {preIpoCompany.map((company) => (\n <TableRow\n key={company.id}\n preIpoCompany={company}\n companyName={company.name || ''}\n lastRoundValuation={company.lastValuation}\n lastFundingSeries={company.lastFundingSeries}\n lastSharePrice={company.lastSharePrice}\n buttonText={buttonText}\n investorId={investorId}\n onButtonClick={onButtonClick}\n isInWatchlist={watchlistStatus.get(company.id) || false}\n watchlistLoading={loadingWatchlist}\n onAddToWatchlist={addToWatchlist}\n onRemoveFromWatchlist={removeFromWatchlist}\n />\n ))}\n </tbody>\n </table>\n </div>\n\n <Pagination\n currentPage={currentPage}\n totalPages={totalPages}\n onPageChange={handlePageChange}\n />\n </div>\n );\n};","import {Client} from \"@monarkmarkets/api-client\";\n\nexport class SharedService {\n private _client: Client;\n\n constructor() {\n this._client = new Client(\"/api\");\n }\n\n public async GetCompanyLogoAndCountry(\n preIPOCompanyId: string,\n ): Promise<{ logoURL: string; location: string } | null> {\n try {\n const company = await this._client.getPreIPOCompanyById(preIPOCompanyId);\n if (company) {\n return {\n logoURL: company.logoURL || '',\n location: company.country || 'Location not available'\n };\n }\n return null;\n } catch (error) {\n console.error(`Failed to retrieve company logo and location for ID ${preIPOCompanyId}:`, error);\n return null;\n }\n }\n}\n","import React, {memo, useCallback, useEffect, useState} from \"react\";\nimport {LogoAndCountryProps, SpvRowProps} from \"../../types/types\";\nimport {CompanyLogo} from \"../../common/company-logo\";\nimport {formatCurrency} from \"../../utils/formatters\";\nimport {SharedService} from \"../../services/shared-service\";\n\n/**\n * TableRow component renders a row in the PrimaryTable component.\n * It includes columns for company details, price per share, minimum investment,\n * management fees, and an action to invest.\n */\nexport const TableRow: React.FC<SpvRowProps> = memo(({\n preIPOCompanySPV,\n companyName,\n allInPricePerShare,\n minCommitmentAmount,\n managementFee,\n buttonText = \"\",\n investorId,\n onButtonClick\n }) => {\n const handleButtonClick = useCallback((e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n onButtonClick?.(preIPOCompanySPV.id, investorId);\n }, [preIPOCompanySPV.id, investorId, onButtonClick]);\n\n const [companyDetails, setCompanyDetails] = useState<LogoAndCountryProps | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n const fetchCompanyDetails = async () => {\n setIsLoading(true);\n const service = new SharedService();\n try {\n const details = await service.GetCompanyLogoAndCountry(\n preIPOCompanySPV.preIPOCompanyId,\n );\n setCompanyDetails(details);\n } catch (error) {\n console.error('Error fetching company details:', error);\n } finally {\n setIsLoading(false);\n }\n };\n\n fetchCompanyDetails();\n }, [preIPOCompanySPV.preIPOCompanyId, investorId]);\n\n return (\n <tr\n className=\"hover:bg-gray-50 transition-colors\"\n role=\"row\"\n >\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <div className=\"flex items-center gap-3\">\n {isLoading ? (\n <div className=\"w-8 h-8 animate-pulse bg-gray-200 rounded-lg\"/>\n ) : (\n <CompanyLogo\n logoURL={companyDetails?.logoURL}\n name={companyName}\n />\n )}\n <div className=\"flex flex-col\">\n <span className=\"font-medium text-gray-900\">{companyName}</span>\n <span className=\"text-sm text-gray-500\">\n {isLoading ? (\n <div className=\"h-4 w-24 animate-pulse bg-gray-200 rounded\"/>\n ) : (\n companyDetails?.location || 'Location not available'\n )}\n </span>\n </div>\n </div>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <span className=\"font-medium text-gray-900\">\n {allInPricePerShare !== undefined ? formatCurrency(allInPricePerShare) : \"N/A\"}\n </span>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <span className=\"font-medium text-gray-900\">\n {minCommitmentAmount !== undefined ? formatCurrency(minCommitmentAmount) : \"N/A\"}\n </span>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <span className=\"font-medium text-gray-900\">\n {managementFee !== undefined ? `${managementFee}%` : \"N/A\"}\n </span>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <button\n onClick={handleButtonClick}\n className=\"bg-custom-blue hover:bg-custom-blue-dark text-white font-medium py-2 px-4 rounded-lg shadow-md transition-all duration-200\"\n aria-label={`${buttonText} for ${companyName}`}\n >\n {buttonText}\n </button>\n </td>\n </tr>\n );\n});\n\nTableRow.displayName = 'TableRow';","import { Client, MonarkStage, PreIPOCompanySPVApiResponse, SortOrder15, SortBy2 } from \"@monarkmarkets/api-client\";\n\n/**\n * Service for managing Special Purpose Vehicle (SPV) operations.\n */\nexport class PreIPOCompanySPVService {\n private readonly _client: Client;\n\n constructor() {\n this._client = new Client(\"/api\");\n }\n\n /**\n * Retrieves all SPVs for a specific investor with optional filtering and pagination.\n *\n * @param investorId - The unique identifier of the investor\n * @param nameFilter - Optional filter to search SPVs by name\n * @param preIPOCompanyId - Optional filter to search by pre-IPO company ID\n * @param preIPOCompanyInvestmentId - Optional filter to search by pre-IPO company investment ID\n * @param page - Optional page number for pagination\n * @param pageSize - Number of items per page (default: 25)\n * @param sortOrder - Sort order for results (default: Descending)\n * @param sortBy - Field to sort by\n * @returns Promise resolving to PreIPOCompanySPVApiResponse or null if operation fails\n */\n public async getAllSpvs(\n investorId: string,\n nameFilter?: string,\n preIPOCompanyId?: string,\n preIPOCompanyInvestmentId?: string,\n page?: number,\n pageSize: number = 25,\n sortOrder: SortOrder15 = SortOrder15.Descending,\n sortBy?: SortBy2\n ): Promise<PreIPOCompanySPVApiResponse | null> {\n if (!investorId?.trim()) {\n throw new Error(\"investorId is required and cannot be empty\");\n }\n\n if (pageSize <= 0 || pageSize > 100) {\n throw new Error(\"pageSize must be between 1 and 100\");\n }\n\n if (page !== undefined && page < 0) {\n throw new Error(\"page must be non-negative\");\n }\n\n try {\n return await this._client.getAllPreIPOCompanySPVs(\n investorId,\n MonarkStage.PRIMARY_FUNDRAISE,\n undefined,\n nameFilter,\n preIPOCompanyId,\n preIPOCompanyInvestmentId,\n true,\n page,\n pageSize,\n undefined,\n sortOrder,\n sortBy\n );\n } catch (error) {\n console.error(\n `Failed to retrieve SPVs for investor ${investorId}:`,\n {\n investorId,\n nameFilter,\n preIPOCompanyId,\n preIPOCompanyInvestmentId,\n page,\n pageSize,\n error: error instanceof Error ? error.message : error\n }\n );\n\n return null;\n }\n }\n}\n","import { useState, useEffect, useCallback } from 'react';\nimport { PreIPOCompanySPVApiResponse, SortOrder15, SortBy2 } from '@monarkmarkets/api-client';\nimport { PreIPOCompanySPVService } from '../services/primary-company-service';\n\ninterface UsePrimaryCompanyParams {\n investorId: string;\n nameFilter?: string;\n preIPOCompanyId?: string;\n preIPOCompanyInvestmentId?: string;\n page?: number;\n pageSize?: number;\n sortOrder?: SortOrder15;\n sortBy?: SortBy2;\n enabled?: boolean;\n}\n\ninterface UsePrimaryCompanyReturn {\n data: PreIPOCompanySPVApiResponse | null;\n loading: boolean;\n error: string | null;\n refetch: () => Promise<void>;\n}\n\n/**\n * Hook for fetching primary company SPV data with automatic loading states and error handling.\n */\nexport const usePrimaryCompany = ({\n investorId,\n nameFilter,\n preIPOCompanyId,\n preIPOCompanyInvestmentId,\n page,\n pageSize = 25,\n sortOrder = SortOrder15.Descending,\n sortBy,\n enabled = true\n }: UsePrimaryCompanyParams): UsePrimaryCompanyReturn => {\n const [data, setData] = useState<PreIPOCompanySPVApiResponse | null>(null);\n const [loading, setLoading] = useState<boolean>(false);\n const [error, setError] = useState<string | null>(null);\n\n const spvService = new PreIPOCompanySPVService();\n\n const fetchData = useCallback(async () => {\n if (!enabled || !investorId) {\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const result = await spvService.getAllSpvs(\n investorId,\n nameFilter,\n preIPOCompanyId,\n preIPOCompanyInvestmentId,\n page,\n pageSize,\n sortOrder,\n sortBy\n );\n\n if (result === null) {\n setError('Failed to fetch SPV data');\n setData(null);\n } else {\n setData(result);\n }\n } catch (err) {\n setError(err instanceof Error ? err.message : 'An unexpected error occurred');\n setData(null);\n } finally {\n setLoading(false);\n }\n }, [\n enabled,\n investorId,\n nameFilter,\n preIPOCompanyId,\n preIPOCompanyInvestmentId,\n page,\n pageSize,\n sortOrder,\n sortBy\n ]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n const refetch = useCallback(async () => {\n await fetchData();\n }, [fetchData]);\n\n return {\n data,\n loading,\n error,\n refetch\n };\n};","/**\n * Constants for primary company SPV operations\n */\nexport const PRIMARY_COMPANY_CONSTANTS = {\n /**\n * Default page size for pagination\n */\n DEFAULT_PAGE_SIZE: 25,\n\n /**\n * Maximum allowed page size\n */\n MAX_PAGE_SIZE: 100,\n\n /**\n * Minimum allowed page size\n */\n MIN_PAGE_SIZE: 1,\n\n /**\n * Default starting page number (0-based)\n */\n DEFAULT_PAGE: 1,\n\n /**\n * Error messages\n */\n ERRORS: {\n INVESTOR_ID_REQUIRED: 'investorId is required and cannot be empty',\n INVALID_PAGE_SIZE: 'pageSize must be between 1 and 100',\n INVALID_PAGE: 'page must be non-negative',\n FETCH_FAILED: 'Failed to fetch SPV data',\n UNEXPECTED_ERROR: 'An unexpected error occurred'\n },\n\n /**\n * API endpoint configuration\n */\n API: {\n BASE_PATH: '/api'\n }\n} as const;\n\n/**\n * Type for error message keys\n */\nexport type PrimaryCompanyErrorKey = keyof typeof PRIMARY_COMPANY_CONSTANTS.ERRORS;","import React, { useEffect, useState } from \"react\";\nimport { TableRow } from \"./components/table-row\";\nimport { TableHeaders } from \"../common/table-headers\";\nimport { PrimaryTableProps } from \"../types/types\";\nimport { Pagination } from \"../private-table/components/pagination\";\nimport { LoadingSpinner } from \"../common/loading-spinner\";\nimport { usePrimaryCompany } from \"../hooks/usePrimaryCompany\";\nimport { PRIMARY_COMPANY_CONSTANTS } from \"../constants/primary-company-constants\";\nimport { SortOrder15 } from \"@monarkmarkets/api-client\";\n\nconst primaryColumns = [\n { title: 'Company' },\n { title: 'Price Per Share' },\n { title: 'Minimum Investment' },\n { title: 'Fees' },\n { title: 'Invest' }\n];\n\n/**\n * PrimaryTable component displays a table of SPV investment opportunities.\n * It includes table headers and rows with built-in data fetching using the usePrimaryCompany hook.\n */\nexport const PrimaryTable = ({\n investorId,\n onButtonClick,\n buttonText = \"Invest\",\n isLoading: externalLoading = false,\n initialPage = 1,\n pageSize = PRIMARY_COMPANY_CONSTANTS.DEFAULT_PAGE_SIZE,\n searchTerm = '',\n onPageChange,\n onDataLoaded\n }: PrimaryTableProps) => {\n const [currentPage, setCurrentPage] = useState(initialPage);\n\n const { data, loading, error, refetch } = usePrimaryCompany({\n investorId,\n nameFilter: searchTerm,\n page: currentPage,\n pageSize,\n sortOrder: SortOrder15.Descending,\n enabled: !!investorId\n });\n\n const isLoading = externalLoading || loading;\n const preIPOCompanySPV = data?.items || [];\n const totalPages = data?.pagination?.totalPages || 1;\n\n useEffect(() => {\n setCurrentPage(1);\n }, [searchTerm]);\n\n useEffect(() => {\n if (data) {\n onDataLoaded?.(preIPOCompanySPV, totalPages);\n }\n }, [data, preIPOCompanySPV, totalPages, onDataLoaded]);\n\n const handlePageChange = (page: number) => {\n setCurrentPage(page);\n onPageChange?.(page);\n };\n\n if (error) {\n return (\n <div className=\"bg-white rounded-lg shadow-sm p-8 text-center\">\n <p className=\"text-gray-500\">\n {PRIMARY_COMPANY_CONSTANTS.ERRORS.FETCH_FAILED}. Please try again later.\n </p>\n <button\n onClick={refetch}\n className=\"mt-2 px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600\"\n >\n Retry\n </button>\n </div>\n );\n }\n\n if (!isLoading && preIPOCompanySPV.length === 0) {\n return (\n <div className=\"bg-white rounded-lg shadow-sm p-8 text-center\">\n <p className=\"text-gray-500\">No companies available</p>\n </div>\n );\n }\n\n return (\n <div className=\"space-y-4\">\n <div className=\"relative\">\n {isLoading && (\n <div className=\"absolute inset-0 bg-white/50 flex items-center justify-center z-10\">\n <LoadingSpinner />\n </div>\n )}\n <div className=\"bg-white rounded-lg shadow-sm overflow-hidden\">\n <table className=\"w-full table-fixed\">\n <TableHeaders columns={primaryColumns} />\n <tbody className=\"relative\">\n {preIPOCompanySPV.map((company) => (\n <TableRow\n key={company.id}\n preIPOCompanySPV={company}\n companyName={company.name || ''}\n allInPricePerShare={company.allInPricePerShare}\n minCommitmentAmount={company.minCommitmentAmount}\n managementFee={company.managementFee}\n buttonText={buttonText}\n investorId={investorId}\n onButtonClick={onButtonClick}\n />\n ))}\n </tbody>\n </table>\n </div>\n </div>\n <Pagination\n currentPage={currentPage}\n totalPages={totalPages}\n onPageChange={handlePageChange}\n />\n </div>\n );\n};"],"names":["CompanyLogo","memo","_a","logoURL","name","_jsx","src","alt","concat","className","children","charAt","displayName","formatLargeNumber","value","toFixed","toLocaleString","formatCurrency","decimals","undefined","Intl","NumberFormat","style","currency","maximumFractionDigits","minimumFractionDigits","format","TableRow","preIpoCompany","companyName","lastRoundValuation","lastFundingSeries","lastSharePrice","buttonText","investorId","onButtonClick","_c","isInWatchlist","_d","watchlistLoading","onAddToWatchlist","onRemoveFromWatchlist","_e","useState","isTogglingWatchlist","setIsTogglingWatchlist","_f","isHovering","setIsHovering","_g","justToggled","setJustToggled","id","console","warn","safeName","safeCountry","country","useCallback","e","preventDefault","handleWatchlistToggle","__awaiter","sent","setTimeout","isWatchlistButtonDisabled","getButtonContent","_jsxs","_Fragment","xmlns","fill","viewBox","cx","cy","r","stroke","strokeWidth","d","X","Check","getButtonClassName","baseClasses","role","onClick","onMouseEnter","onMouseLeave","disabled","zIndex","TableHeaders","columns","map","column","index","width","scope","title","NavigationButton","direction","strokeLinecap","strokeLinejoin","PageButton","page","isCurrentPage","Pagination","currentPage","totalPages","onPageChange","handlePrevious","handleNext","pageNumbers","useMemo","pages","showEllipsis","i","push","LoadingSpinner","PreIPOCompanyService","_client","Client","prototype","getAllCompanies","searchTerm_1","searchCategories_1","sortBy_1","searchTerm","searchCategories","sortBy","sortOrder","minLastValuation","maxLastValuation","minTotalFunding","maxTotalFunding","listingType","isActive","pageSize","SortOrder10","Descending","validateParameters","getAllPreIPOCompanies","logError","error_1","addToWatchlist","targetId","trim","Error","watchlistItem","CreateWatchlist","targetAssetType","CreateWatchlistTargetAssetType","PreIPOCompany","createOrUpdate","error","error_2","message","removeFromWatchlist","delete","error_3","getByInvestorAndTarget","batchCheckWatchlist","targetIds","watchlistStatus","Map","length","promises","_this","Promise","all","results","forEach","set","error_5","parameters","usePrivateCompanies","_b","enabled","data","setData","loading","setLoading","setError","_h","setWatchlistStatus","_j","loadingWatchlist","setLoadingWatchlist","preIPOService","fetchData","result","errorMessage","err_1","fetchWatchlistStatus","items","companyIds","company","filter","Boolean","status_1","err_2","prev","err_3","err_4","useEffect","refetch","refetchWatchlist","PRIVATE_COMPANY_CONSTANTS","DEFAULT_PAGE_SIZE","ERRORS","INVALID_PAGE_SIZE","FETCH_FAILED","PRIVATE_COLUMNS","PrivateTable","externalLoading","initialPage","onDataLoaded","setCurrentPage","isFullyLoaded","pagination","handlePageChange","ErrorState","EmptyState","LoadingOverlay","lastValuation","get","SharedService","GetCompanyLogoAndCountry","preIPOCompanyId","getPreIPOCompanyById","location","preIPOCompanySPV","allInPricePerShare","minCommitmentAmount","managementFee","handleButtonClick","companyDetails","setCompanyDetails","isLoading","setIsLoading","fetchCompanyDetails","service","details","PreIPOCompanySPVService","getAllSpvs","investorId_1","nameFilter_1","preIPOCompanyId_1","preIPOCompanyInvestmentId_1","page_1","arguments","nameFilter","preIPOCompanyInvestmentId","SortOrder15","getAllPreIPOCompanySPVs","MonarkStage","PRIMARY_FUNDRAISE","usePrimaryCompany","spvService","PRIMARY_COMPANY_CONSTANTS","INVESTOR_ID_REQUIRED","primaryColumns","PrimaryTable"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/common/company-logo.tsx","../src/utils/formatters.ts","../src/private-table/components/table-row.tsx","../src/common/table-headers.tsx","../src/private-table/components/pagination.tsx","../src/common/loading-spinner.tsx","../src/services/private-company-service.ts","../src/hooks/usePrivateCompany.ts","../src/constants/private-company-constants.ts","../src/private-table/table.tsx","../src/services/shared-service.ts","../src/primary-table/components/table-row.tsx","../src/services/primary-company-service.ts","../src/hooks/usePrimaryCompany.ts","../src/constants/primary-company-constants.ts","../src/primary-table/table.tsx"],"sourcesContent":["import React, {memo} from \"react\";\n\n/**\n * CompanyLogo component that displays either a company logo or a fallback initial.\n *\n * @param props - Component props\n * @param props.logoURL - Optional URL to the company's logo image passed through the preIPOCompany object\n * @param props.name - Company name, used for alt text and fallback initial passed through the preIPOCompany object\n * @returns A company logo image or a fallback with the first letter of the company name\n */\nexport const CompanyLogo: React.FC<{ logoURL?: string; name: string }> = memo(({logoURL, name}) => {\n if (logoURL) {\n return (\n <img\n src={logoURL}\n alt={`${name} logo`}\n className=\"w-8 h-8 rounded-lg object-cover\"\n />\n );\n }\n\n return (\n <div className=\"w-8 h-8 bg-gray-100 rounded-lg flex items-center justify-center\">\n <span className=\"text-gray-400 text-sm font-medium\">\n {name.charAt(0)}\n </span>\n </div>\n );\n});\n\nCompanyLogo.displayName = 'CompanyLogo';","export const formatLargeNumber = (value: number): string => {\n if (value >= 1_000_000_000) {\n return `$${(value / 1_000_000_000).toFixed(1)}B`;\n } else if (value >= 1_000_000) {\n return `$${(value / 1_000_000).toFixed(1)}M`;\n }\n return `$${value.toLocaleString()}`;\n};\n\nexport const formatCurrency = (value?: number, decimals: number = 2): string => {\n if (value === undefined || value === null) return 'N/A';\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals\n }).format(value);\n};\n","import React, {memo, useCallback, useEffect, useState} from \"react\";\nimport {PrivateTable} from \"../../types/types\";\nimport {CompanyLogo} from \"../../common/company-logo\";\nimport {formatCurrency, formatLargeNumber} from \"../../utils/formatters\";\nimport {Check, X} from \"lucide-react\";\n\n/**\n * TableRow component renders a row in the PrivateTable component.\n * It includes columns for company details, total funding, last round,\n * price per share, and a watchlist action button.\n */\nexport const TableRow: React.FC<PrivateTable> = memo(({\n preIpoCompany,\n companyName,\n lastRoundValuation,\n lastFundingSeries,\n lastSharePrice,\n buttonText = \"\",\n investorId,\n onButtonClick,\n isInWatchlist = false,\n watchlistLoading = false,\n onAddToWatchlist,\n onRemoveFromWatchlist\n }) => {\n const [isTogglingWatchlist, setIsTogglingWatchlist] = useState(false);\n const [isHovering, setIsHovering] = useState(false);\n const [justToggled, setJustToggled] = useState(false);\n const [isMounted, setIsMounted] = useState(false);\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setIsMounted(true);\n }, 50);\n return () => clearTimeout(timer);\n }, []);\n\n if (!preIpoCompany?.id) {\n console.warn('TableRow: Missing required preIpoCompany.id');\n return null;\n }\n\n const safeName = companyName || preIpoCompany?.name || \"Unknown Company\";\n const safeCountry = preIpoCompany?.country || \"\";\n\n const handleButtonClick = useCallback((e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n if (onButtonClick && preIpoCompany?.id) {\n onButtonClick(preIpoCompany.id, investorId);\n }\n }, [preIpoCompany?.id, investorId, onButtonClick]);\n\n const handleWatchlistToggle = useCallback(async (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n\n if (!preIpoCompany?.id || !onAddToWatchlist || !onRemoveFromWatchlist) {\n return;\n }\n\n setIsTogglingWatchlist(true);\n\n try {\n if (isInWatchlist) {\n await onRemoveFromWatchlist(preIpoCompany.id);\n } else {\n await onAddToWatchlist(preIpoCompany.id);\n }\n\n setJustToggled(true);\n setTimeout(() => {\n setJustToggled(false);\n }, 800);\n } finally {\n setIsTogglingWatchlist(false);\n }\n }, [preIpoCompany?.id, isInWatchlist, onAddToWatchlist, onRemoveFromWatchlist]);\n\n const isWatchlistButtonDisabled = isTogglingWatchlist || watchlistLoading || !onAddToWatchlist || !onRemoveFromWatchlist;\n\n const getButtonContent = () => {\n if (isTogglingWatchlist) {\n return (\n <>\n <span className=\"transition-opacity duration-200 relative z-10\">\n {isInWatchlist ? 'Removing...' : 'Adding...'}\n </span>\n <svg className=\"animate-spin h-4 w-4 relative z-10\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\"></circle>\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\n </svg>\n </>\n );\n }\n\n if (isInWatchlist && isHovering && !justToggled && isMounted) {\n return (\n <>\n <span className=\"transition-opacity duration-200 relative z-10\">Remove</span>\n <X className=\"h-4 w-4 transition-opacity duration-200 relative z-10\" />\n </>\n );\n }\n\n if (isInWatchlist) {\n return (\n <>\n <span className=\"transition-opacity duration-200 relative z-10\">Added</span>\n <Check className=\"h-4 w-4 transition-opacity duration-200 relative z-10\" />\n </>\n );\n }\n\n return <span className=\"transition-opacity duration-200 relative z-10\">Add to Watchlist</span>;\n };\n\n const getButtonClassName = () => {\n const baseClasses = \"font-medium py-2 px-4 rounded-lg transition-all duration-300 disabled:opacity-50 disabled:cursor-not-allowed inline-flex items-center justify-center gap-2 min-w-[170px] relative overflow-hidden\";\n\n if (isInWatchlist && !isTogglingWatchlist) {\n // Only apply hover effects after component is mounted and not just toggled\n const hoverClasses = (isMounted && !justToggled) ? 'hover:text-white hover:border-red-500 group' : '';\n return `${baseClasses} bg-white border-2 border-custom-blue text-custom-blue ${hoverClasses}`;\n }\n\n return `${baseClasses} bg-custom-blue text-white shadow-md`;\n };\n\n return (\n <tr\n className=\"hover:bg-gray-50 transition-colors\"\n role=\"row\"\n >\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <div className=\"flex items-center gap-3\">\n <CompanyLogo\n logoURL={preIpoCompany?.logoURL}\n name={safeName}\n />\n <div className=\"flex flex-col\">\n <span className=\"font-medium text-gray-900\">{safeName}</span>\n {safeCountry && (\n <span className=\"text-sm text-gray-500\">{safeCountry}</span>\n )}\n </div>\n </div>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <span className=\"font-medium text-gray-900\">\n {lastRoundValuation !== undefined && lastRoundValuation !== null\n ? formatLargeNumber(lastRoundValuation)\n : \"N/A\"}\n </span>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <span className=\"font-medium text-gray-900\">\n {lastFundingSeries || \"Unknown\"}\n </span>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <span className=\"font-medium text-gray-900\">\n {lastSharePrice !== undefined && lastSharePrice !== null\n ? formatCurrency(lastSharePrice)\n : \"Not Available\"}\n </span>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <button\n onClick={handleWatchlistToggle}\n onMouseEnter={() => setIsHovering(true)}\n onMouseLeave={() => setIsHovering(false)}\n disabled={isWatchlistButtonDisabled}\n className={getButtonClassName()}\n aria-label={`${isInWatchlist ? 'Remove from' : 'Add to'} watchlist for ${safeName}`}\n >\n {isInWatchlist && !isTogglingWatchlist && !justToggled && isMounted && (\n <span\n className=\"absolute inset-0 bg-red-500 transition-transform duration-300 ease-out origin-left scale-x-0 group-hover:scale-x-100\"\n style={{ zIndex: 0 }}\n />\n )}\n {getButtonContent()}\n </button>\n </td>\n </tr>\n );\n});\n\nTableRow.displayName = 'TableRow';","import React, {memo} from 'react';\n\ninterface Column {\n title: string;\n width?: string;\n}\n\ninterface TableHeaderProps {\n columns: Column[];\n}\n\n/**\n * Common TableHeader component that can be configured for different table types.\n * It renders a header row with configurable column titles and styling.\n * @param columns - Array of column configurations with titles and optional widths\n */\nexport const TableHeaders = memo(({columns}: TableHeaderProps) => (\n <thead>\n <tr\n className=\"bg-gray-50 border-b border-gray-200\"\n role=\"row\"\n >\n {columns.map((column, index) => (\n <th\n key={`${column.title}-${index}`}\n className={`py-3 px-4 text-left text-sm font-semibold text-gray-900 ${column.width || ''}`}\n scope=\"col\"\n role=\"columnheader\"\n >\n {column.title}\n </th>\n ))}\n </tr>\n </thead>\n));\n\nTableHeaders.displayName = 'TableHeader';","import React, {memo, useCallback, useMemo} from \"react\";\nimport {PaginationProps} from \"../../types/types\";\n\nconst NavigationButton = memo(({\n onClick,\n disabled,\n direction,\n }: {\n onClick: () => void;\n disabled: boolean;\n direction: 'previous' | 'next';\n}) => (\n <button\n onClick={onClick}\n disabled={disabled}\n className=\"p-2 rounded-lg text-gray-600 hover:bg-gray-100 disabled:opacity-50 disabled:hover:bg-transparent disabled:cursor-not-allowed transition-colors\"\n aria-label={`${direction} page`}\n >\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d={direction === 'previous' ? \"M15 19l-7-7 7-7\" : \"M9 5l7 7-7 7\"}\n />\n </svg>\n </button>\n));\n\nNavigationButton.displayName = 'NavigationButton';\n\nconst PageButton = memo(({\n page,\n isCurrentPage,\n onClick\n }: {\n page: number;\n isCurrentPage: boolean;\n onClick: () => void;\n}) => (\n <button\n onClick={onClick}\n disabled={isCurrentPage}\n className={`w-10 h-10 rounded-lg text-sm font-medium transition-colors ${\n isCurrentPage\n ? 'bg-custom-blue text-white'\n : 'text-gray-600 hover:bg-gray-100'\n }`}\n aria-label={`Go to page ${page}`}\n aria-current={isCurrentPage ? 'page' : undefined}\n >\n {page}\n </button>\n));\n\nPageButton.displayName = 'PageButton';\n\n/**\n * Pagination component renders pagination controls for the PrivateTable component.\n * It includes navigation buttons for previous and next pages, and page number buttons.\n */\nexport const Pagination: React.FC<PaginationProps> = memo(({\n currentPage,\n totalPages,\n onPageChange,\n }) => {\n const handlePrevious = useCallback(() => {\n onPageChange(currentPage - 1);\n }, [currentPage, onPageChange]);\n\n const handleNext = useCallback(() => {\n onPageChange(currentPage + 1);\n }, [currentPage, onPageChange]);\n\n const pageNumbers = useMemo(() => {\n const pages = [];\n const showEllipsis = totalPages > 7;\n\n if (showEllipsis) {\n if (currentPage <= 4) {\n for (let i = 1; i <= 5; i++) {\n pages.push(i);\n }\n pages.push('ellipsis');\n pages.push(totalPages);\n } else if (currentPage >= totalPages - 3) {\n pages.push(1);\n pages.push('ellipsis');\n for (let i = totalPages - 4; i <= totalPages; i++) {\n pages.push(i);\n }\n } else {\n pages.push(1);\n pages.push('ellipsis');\n for (let i = currentPage - 1; i <= currentPage + 1; i++) {\n pages.push(i);\n }\n pages.push('ellipsis');\n pages.push(totalPages);\n }\n } else {\n for (let i = 1; i <= totalPages; i++) {\n pages.push(i);\n }\n }\n\n return pages;\n }, [currentPage, totalPages]);\n\n return (\n <nav\n role=\"navigation\"\n aria-label=\"Pagination\"\n className=\"flex items-center justify-center gap-1\"\n >\n <NavigationButton\n onClick={handlePrevious}\n disabled={currentPage <= 1}\n direction=\"previous\"\n />\n\n <div className=\"flex items-center gap-1 mx-2\">\n {pageNumbers.map((page, index) => (\n page === 'ellipsis' ? (\n <span\n key={`ellipsis-${index}`}\n className=\"w-10 h-10 flex items-center justify-center text-gray-500\"\n aria-hidden=\"true\"\n >\n ...\n </span>\n ) : (\n <PageButton\n key={page}\n page={page as number}\n isCurrentPage={page === currentPage}\n onClick={() => onPageChange(page as number)}\n />\n )\n ))}\n </div>\n\n <NavigationButton\n onClick={handleNext}\n disabled={currentPage >= totalPages}\n direction=\"next\"\n />\n </nav>\n );\n});\n\nPagination.displayName = 'Pagination';","export const LoadingSpinner = () => (\n <svg className=\"animate-spin h-8 w-8 text-custom-blue\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\"\n viewBox=\"0 0 24 24\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\"></circle>\n <path className=\"opacity-75\" fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\n </svg>\n);","import {\n Client,\n PreIPOCompanyApiResponse,\n SortOrder10,\n SortBy,\n CreateWatchlist,\n CreateWatchlistTargetAssetType,\n Watchlist\n} from \"@monarkmarkets/api-client\";\n\n/**\n * Service for managing Pre-IPO company operations and watchlist functionality.\n */\nexport class PreIPOCompanyService {\n private readonly _client: Client;\n\n constructor() {\n this._client = new Client(\"/api\");\n }\n\n /**\n * Retrieves all Pre-IPO companies with optional filtering and pagination.\n *\n * @param searchTerm - Optional search term to filter companies\n * @param searchCategories - Optional array of categories to filter by\n * @param sortBy - Field to sort by\n * @param sortOrder - Sort order for results (default: Descending)\n * @param minLastValuation - Minimum last valuation filter\n * @param maxLastValuation - Maximum last valuation filter\n * @param minTotalFunding - Minimum total funding filter\n * @param maxTotalFunding - Maximum total funding filter\n * @param listingType - Optional listing type filter to categorize companies by their listing status\n * @param isActive - Optional flag to filter companies by their active status\n * @param page - Optional page number for pagination\n * @param pageSize - Number of items per page (default: 25)\n * @returns Promise resolving to PreIPOCompanyApiResponse or null if operation fails\n */\n public async getAllCompanies(\n searchTerm?: string,\n searchCategories?: string[],\n sortBy?: SortBy,\n sortOrder: SortOrder10 = SortOrder10.Descending,\n minLastValuation?: number,\n maxLastValuation?: number,\n minTotalFunding?: number,\n maxTotalFunding?: number,\n listingType?: string,\n isActive?: boolean,\n page?: number,\n pageSize: number = 25\n ): Promise<PreIPOCompanyApiResponse | null> {\n this.validateParameters(page, pageSize, minLastValuation, maxLastValuation, minTotalFunding, maxTotalFunding);\n\n try {\n return await this._client.getAllPreIPOCompanies(\n page,\n pageSize,\n searchTerm,\n searchCategories,\n sortBy,\n sortOrder,\n minLastValuation,\n maxLastValuation,\n minTotalFunding,\n maxTotalFunding,\n listingType,\n isActive\n );\n } catch (error) {\n this.logError(error, {\n searchTerm,\n searchCategories,\n sortBy,\n sortOrder,\n minLastValuation,\n maxLastValuation,\n minTotalFunding,\n maxTotalFunding,\n listingType,\n isActive,\n page,\n pageSize\n });\n\n return null;\n }\n }\n\n /**\n * Add a Pre-IPO company to the investor's watchlist.\n *\n * @param investorId - The unique identifier of the investor\n * @param targetId - The Pre-IPO company ID to add to watchlist\n * @returns Promise resolving to Watchlist item or null if operation fails\n */\n public async addToWatchlist(\n investorId: string,\n targetId: string\n ): Promise<Watchlist | null> {\n if (!investorId?.trim()) {\n throw new Error(\"investorId is required and cannot be empty\");\n }\n\n if (!targetId?.trim()) {\n throw new Error(\"targetId is required and cannot be empty\");\n }\n\n try {\n const watchlistItem = new CreateWatchlist({\n investorId,\n targetId,\n targetAssetType: CreateWatchlistTargetAssetType.PreIPOCompany\n });\n\n return await this._client.createOrUpdate(watchlistItem);\n } catch (error) {\n console.error(\n `Failed to add Pre-IPO company ${targetId} to watchlist for investor ${investorId}:`,\n {\n investorId,\n targetId,\n error: error instanceof Error ? error.message : error\n }\n );\n return null;\n }\n }\n\n /**\n * Remove a Pre-IPO company from the investor's watchlist.\n *\n * @param investorId - The unique identifier of the investor\n * @param targetId - The Pre-IPO company ID to remove from watchlist\n * @returns Promise resolving to true if successful, false otherwise\n */\n public async removeFromWatchlist(\n investorId: string,\n targetId: string\n ): Promise<boolean> {\n if (!investorId?.trim()) {\n throw new Error(\"investorId is required and cannot be empty\");\n }\n\n if (!targetId?.trim()) {\n throw new Error(\"targetId is required and cannot be empty\");\n }\n\n try {\n await this._client.delete(investorId, targetId);\n return true;\n } catch (error) {\n console.error(\n `Failed to remove Pre-IPO company ${targetId} from watchlist for investor ${investorId}:`,\n {\n investorId,\n targetId,\n error: error instanceof Error ? error.message : error\n }\n );\n return false;\n }\n }\n\n /**\n * Check if a Pre-IPO company is in the investor's watchlist.\n *\n * @param investorId - The unique identifier of the investor\n * @param targetId - The Pre-IPO company ID to check\n * @returns Promise resolving to true if in watchlist, false otherwise\n */\n public async isInWatchlist(\n investorId: string,\n targetId: string\n ): Promise<boolean> {\n if (!investorId?.trim() || !targetId?.trim()) {\n return false;\n }\n\n try {\n const watchlistItem = await this._client.getByInvestorAndTarget(investorId, targetId);\n return !!watchlistItem;\n } catch (error) {\n return false;\n }\n }\n\n /**\n * Batch check watchlist status for multiple Pre-IPO companies.\n *\n * @param investorId - The unique identifier of the investor\n * @param targetIds - Array of Pre-IPO company IDs to check\n * @returns Promise resolving to a Map of targetId -> boolean (true if in watchlist)\n */\n public async batchCheckWatchlist(\n investorId: string,\n targetIds: string[]\n ): Promise<Map<string, boolean>> {\n const watchlistStatus = new Map<string, boolean>();\n\n if (!investorId?.trim() || !targetIds.length) {\n return watchlistStatus;\n }\n\n const promises = targetIds.map(async (targetId) => {\n const isInWatchlist = await this.isInWatchlist(investorId, targetId);\n return { targetId, isInWatchlist };\n });\n\n try {\n const results = await Promise.all(promises);\n results.forEach(({ targetId, isInWatchlist }) => {\n watchlistStatus.set(targetId, isInWatchlist);\n });\n } catch (error) {\n console.error('Failed to batch check watchlist status:', {\n investorId,\n targetIds,\n error: error instanceof Error ? error.message : error\n });\n }\n\n return watchlistStatus;\n }\n\n private validateParameters(\n page?: number,\n pageSize?: number,\n minLastValuation?: number,\n maxLastValuation?: number,\n minTotalFunding?: number,\n maxTotalFunding?: number\n ): void {\n if (pageSize !== undefined && (pageSize <= 0 || pageSize > 100)) {\n throw new Error(\"pageSize must be between 1 and 100\");\n }\n\n if (page !== undefined && page < 0) {\n throw new Error(\"page must be non-negative\");\n }\n\n if (minLastValuation !== undefined && minLastValuation < 0) {\n throw new Error(\"minLastValuation must be non-negative\");\n }\n\n if (maxLastValuation !== undefined && maxLastValuation < 0) {\n throw new Error(\"maxLastValuation must be non-negative\");\n }\n\n if (minLastValuation !== undefined && maxLastValuation !== undefined && minLastValuation > maxLastValuation) {\n throw new Error(\"minLastValuation cannot be greater than maxLastValuation\");\n }\n\n if (minTotalFunding !== undefined && minTotalFunding < 0) {\n throw new Error(\"minTotalFunding must be non-negative\");\n }\n\n if (maxTotalFunding !== undefined && maxTotalFunding < 0) {\n throw new Error(\"maxTotalFunding must be non-negative\");\n }\n\n if (minTotalFunding !== undefined && maxTotalFunding !== undefined && minTotalFunding > maxTotalFunding) {\n throw new Error(\"minTotalFunding cannot be greater than maxTotalFunding\");\n }\n }\n\n private logError(error: unknown, parameters: Record<string, unknown>): void {\n console.error('Failed to retrieve Pre-IPO companies:', {\n ...parameters,\n error: error instanceof Error ? error.message : error\n });\n }\n}","import { useState, useEffect, useCallback, useMemo } from 'react';\nimport { PreIPOCompanyApiResponse, SortOrder10, SortBy } from '@monarkmarkets/api-client';\nimport { PreIPOCompanyService } from '../services/private-company-service';\n\ninterface UsePrivateCompaniesParams {\n investorId?: string;\n searchTerm?: string;\n searchCategories?: string[];\n sortBy?: SortBy;\n sortOrder?: SortOrder10;\n minLastValuation?: number;\n maxLastValuation?: number;\n minTotalFunding?: number;\n maxTotalFunding?: number;\n listingType?: string;\n isActive?: boolean;\n page?: number;\n pageSize?: number;\n enabled?: boolean;\n}\n\ninterface UsePrivateCompaniesReturn {\n data: PreIPOCompanyApiResponse | null;\n loading: boolean;\n error: string | null;\n watchlistStatus: Map<string, boolean>;\n loadingWatchlist: boolean;\n refetch: () => Promise<void>;\n refetchWatchlist: () => Promise<void>;\n addToWatchlist: (targetId: string) => Promise<boolean>;\n removeFromWatchlist: (targetId: string) => Promise<boolean>;\n}\n\n/**\n * Hook for fetching private company data with automatic loading states, error handling, and watchlist management.\n */\nexport const usePrivateCompanies = ({\n investorId,\n searchTerm,\n searchCategories,\n sortBy,\n sortOrder = SortOrder10.Descending,\n minLastValuation,\n maxLastValuation,\n minTotalFunding,\n maxTotalFunding,\n listingType,\n isActive,\n page,\n pageSize = 25,\n enabled = true\n }: UsePrivateCompaniesParams): UsePrivateCompaniesReturn => {\n const [data, setData] = useState<PreIPOCompanyApiResponse | null>(null);\n const [loading, setLoading] = useState<boolean>(false);\n const [error, setError] = useState<string | null>(null);\n const [watchlistStatus, setWatchlistStatus] = useState<Map<string, boolean>>(new Map());\n const [loadingWatchlist, setLoadingWatchlist] = useState<boolean>(false);\n\n const preIPOService = useMemo(() => new PreIPOCompanyService(), []);\n\n const fetchData = useCallback(async () => {\n if (!enabled) {\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const result = await preIPOService.getAllCompanies(\n searchTerm,\n searchCategories,\n sortBy,\n sortOrder,\n minLastValuation,\n maxLastValuation,\n minTotalFunding,\n maxTotalFunding,\n listingType,\n isActive,\n page,\n pageSize\n );\n\n if (result === null) {\n setError('Failed to fetch private company data');\n setData(null);\n } else {\n setData(result);\n }\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : 'An unexpected error occurred';\n setError(errorMessage);\n setData(null);\n } finally {\n setLoading(false);\n }\n }, [\n preIPOService,\n enabled,\n searchTerm,\n searchCategories,\n sortBy,\n sortOrder,\n minLastValuation,\n maxLastValuation,\n minTotalFunding,\n maxTotalFunding,\n listingType,\n isActive,\n page,\n pageSize\n ]);\n\n const fetchWatchlistStatus = useCallback(async () => {\n if (!investorId || !data?.items || data.items.length === 0) {\n return;\n }\n\n setLoadingWatchlist(true);\n try {\n const companyIds = data.items.map(company => company.id).filter(Boolean) as string[];\n const status = await preIPOService.batchCheckWatchlist(investorId, companyIds);\n setWatchlistStatus(status);\n } catch (err) {\n console.error('Failed to fetch watchlist status:', err);\n } finally {\n setLoadingWatchlist(false);\n }\n }, [investorId, data?.items, preIPOService]);\n\n const addToWatchlist = useCallback(async (targetId: string): Promise<boolean> => {\n if (!investorId) {\n console.error('Cannot add to watchlist: investorId is required');\n return false;\n }\n\n try {\n const result = await preIPOService.addToWatchlist(investorId, targetId);\n if (result) {\n // Update local state\n setWatchlistStatus(prev => new Map(prev).set(targetId, true));\n return true;\n }\n return false;\n } catch (err) {\n console.error('Failed to add to watchlist:', err);\n return false;\n }\n }, [investorId, preIPOService]);\n\n const removeFromWatchlist = useCallback(async (targetId: string): Promise<boolean> => {\n if (!investorId) {\n console.error('Cannot remove from watchlist: investorId is required');\n return false;\n }\n\n try {\n const result = await preIPOService.removeFromWatchlist(investorId, targetId);\n if (result) {\n // Update local state\n setWatchlistStatus(prev => new Map(prev).set(targetId, false));\n return true;\n }\n return false;\n } catch (err) {\n console.error('Failed to remove from watchlist:', err);\n return false;\n }\n }, [investorId, preIPOService]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n useEffect(() => {\n if (data?.items && data.items.length > 0) {\n fetchWatchlistStatus();\n }\n }, [fetchWatchlistStatus, data?.items]);\n\n const refetch = useCallback(async () => {\n await fetchData();\n }, [fetchData]);\n\n const refetchWatchlist = useCallback(async () => {\n await fetchWatchlistStatus();\n }, [fetchWatchlistStatus]);\n\n return {\n data,\n loading,\n error,\n watchlistStatus,\n loadingWatchlist,\n refetch,\n refetchWatchlist,\n addToWatchlist,\n removeFromWatchlist\n };\n};","/**\n * Constants for Pre-IPO company operations\n */\nexport const PRIVATE_COMPANY_CONSTANTS = {\n /**\n * Default page size for pagination\n */\n DEFAULT_PAGE_SIZE: 25,\n\n /**\n * Maximum allowed page size\n */\n MAX_PAGE_SIZE: 100,\n\n /**\n * Minimum allowed page size\n */\n MIN_PAGE_SIZE: 1,\n\n /**\n * Default starting page number (0-based)\n */\n DEFAULT_PAGE: 1,\n\n /**\n * Minimum allowed valuation and funding values\n */\n MIN_VALUATION: 0,\n MIN_FUNDING: 0,\n\n /**\n * Error messages\n */\n ERRORS: {\n INVALID_PAGE_SIZE: 'pageSize must be between 1 and 100',\n INVALID_PAGE: 'page must be non-negative',\n INVALID_MIN_VALUATION: 'minLastValuation must be non-negative',\n INVALID_MAX_VALUATION: 'maxLastValuation must be non-negative',\n INVALID_VALUATION_RANGE: 'minLastValuation cannot be greater than maxLastValuation',\n INVALID_MIN_FUNDING: 'minTotalFunding must be non-negative',\n INVALID_MAX_FUNDING: 'maxTotalFunding must be non-negative',\n INVALID_FUNDING_RANGE: 'minTotalFunding cannot be greater than maxTotalFunding',\n FETCH_FAILED: 'Failed to fetch Pre-IPO company data',\n UNEXPECTED_ERROR: 'An unexpected error occurred'\n },\n\n /**\n * API endpoint configuration\n */\n API: {\n BASE_PATH: '/api'\n }\n} as const;\n\n/**\n * Type for error message keys\n */\nexport type PrivateCompanyErrorKey = keyof typeof PRIVATE_COMPANY_CONSTANTS.ERRORS;","import React, { useEffect, useState, useCallback, useMemo } from \"react\";\nimport { TableRow } from \"./components/table-row\";\nimport { TableHeaders } from \"../common/table-headers\";\nimport { Pagination } from \"./components/pagination\";\nimport { PrivateTableProps } from \"../types/types\";\nimport { LoadingSpinner } from \"../common/loading-spinner\";\nimport { usePrivateCompanies } from \"../hooks/usePrivateCompany\";\nimport { PRIVATE_COMPANY_CONSTANTS } from \"../constants/private-company-constants\";\nimport { SortOrder10 } from \"@monarkmarkets/api-client\";\n\nconst PRIVATE_COLUMNS = [\n { title: 'Company' },\n { title: 'Last Round Valuation' },\n { title: 'Last Round' },\n { title: 'Last Round Price/Share' },\n { title: 'Watchlist' }\n];\n\n/**\n * PrivateTable component displays a table of pre-IPO companies with pagination and loading states.\n * It includes table headers, rows, and pagination controls using the usePrivateCompanies hook.\n */\nexport const PrivateTable = ({\n investorId,\n onButtonClick,\n buttonText = \"Submit IOI\",\n isLoading: externalLoading = false,\n initialPage = 1,\n pageSize = PRIVATE_COMPANY_CONSTANTS.DEFAULT_PAGE_SIZE,\n searchTerm = '',\n onPageChange,\n onDataLoaded,\n listingType,\n isActive,\n }: PrivateTableProps) => {\n const [currentPage, setCurrentPage] = useState(initialPage);\n\n const {\n data,\n loading,\n error,\n watchlistStatus,\n loadingWatchlist,\n refetch,\n addToWatchlist,\n removeFromWatchlist\n } = usePrivateCompanies({\n investorId,\n searchTerm,\n page: currentPage,\n pageSize,\n sortOrder: SortOrder10.Descending,\n listingType,\n isActive,\n enabled: true\n });\n\n const isFullyLoaded = !loading && !loadingWatchlist && data !== null;\n const isLoading = useMemo(() => externalLoading || loading || loadingWatchlist, [externalLoading, loading, loadingWatchlist]);\n const preIpoCompany = useMemo(() => data?.items || [], [data?.items]);\n const totalPages = useMemo(() => data?.pagination?.totalPages || 1, [data?.pagination?.totalPages]);\n\n useEffect(() => {\n setCurrentPage(1);\n }, [searchTerm]);\n\n useEffect(() => {\n setCurrentPage(initialPage);\n }, [initialPage]);\n\n useEffect(() => {\n if (data) {\n onDataLoaded?.(preIpoCompany, totalPages);\n }\n }, [data, preIpoCompany, totalPages, onDataLoaded]);\n\n const handlePageChange = useCallback((page: number) => {\n setCurrentPage(page);\n onPageChange?.(page);\n }, [onPageChange]);\n\n const ErrorState = () => (\n <div className=\"bg-white rounded-lg shadow-sm p-8 text-center\">\n <p className=\"text-gray-500 mb-4\">\n {PRIVATE_COMPANY_CONSTANTS.ERRORS.FETCH_FAILED}. Please try again later.\n </p>\n <button\n onClick={refetch}\n className=\"px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600 transition-colors\"\n >\n Retry\n </button>\n </div>\n );\n\n const EmptyState = () => (\n <div className=\"bg-white rounded-lg shadow-sm p-8 text-center\">\n <p className=\"text-gray-500\">No companies available</p>\n </div>\n );\n\n const LoadingOverlay = () => (\n <div className=\"bg-white rounded-lg shadow-sm p-8 flex items-center justify-center\">\n <LoadingSpinner />\n </div>\n );\n\n if (error) {\n return <ErrorState />;\n }\n\n if (!isFullyLoaded) {\n return <LoadingOverlay />;\n }\n\n if (preIpoCompany.length === 0) {\n return <EmptyState />;\n }\n\n return (\n <div className=\"space-y-4\">\n <div className=\"bg-white rounded-lg shadow-sm overflow-hidden\">\n <table className=\"w-full table-fixed\">\n <TableHeaders columns={PRIVATE_COLUMNS} />\n <tbody className=\"relative\">\n {preIpoCompany.map((company) => (\n <TableRow\n key={company.id}\n preIpoCompany={company}\n companyName={company.name || ''}\n lastRoundValuation={company.lastValuation}\n lastFundingSeries={company.lastFundingSeries}\n lastSharePrice={company.lastSharePrice}\n buttonText={buttonText}\n investorId={investorId}\n onButtonClick={onButtonClick}\n isInWatchlist={watchlistStatus.get(company.id) || false}\n watchlistLoading={loadingWatchlist}\n onAddToWatchlist={addToWatchlist}\n onRemoveFromWatchlist={removeFromWatchlist}\n />\n ))}\n </tbody>\n </table>\n </div>\n\n <Pagination\n currentPage={currentPage}\n totalPages={totalPages}\n onPageChange={handlePageChange}\n />\n </div>\n );\n};","import {Client} from \"@monarkmarkets/api-client\";\n\nexport class SharedService {\n private _client: Client;\n\n constructor() {\n this._client = new Client(\"/api\");\n }\n\n public async GetCompanyLogoAndCountry(\n preIPOCompanyId: string,\n ): Promise<{ logoURL: string; location: string } | null> {\n try {\n const company = await this._client.getPreIPOCompanyById(preIPOCompanyId);\n if (company) {\n return {\n logoURL: company.logoURL || '',\n location: company.country || 'Location not available'\n };\n }\n return null;\n } catch (error) {\n console.error(`Failed to retrieve company logo and location for ID ${preIPOCompanyId}:`, error);\n return null;\n }\n }\n}\n","import React, {memo, useCallback, useEffect, useState} from \"react\";\nimport {LogoAndCountryProps, SpvRowProps} from \"../../types/types\";\nimport {CompanyLogo} from \"../../common/company-logo\";\nimport {formatCurrency} from \"../../utils/formatters\";\nimport {SharedService} from \"../../services/shared-service\";\n\n/**\n * TableRow component renders a row in the PrimaryTable component.\n * It includes columns for company details, price per share, minimum investment,\n * management fees, and an action to invest.\n */\nexport const TableRow: React.FC<SpvRowProps> = memo(({\n preIPOCompanySPV,\n companyName,\n allInPricePerShare,\n minCommitmentAmount,\n managementFee,\n buttonText = \"\",\n investorId,\n onButtonClick\n }) => {\n const handleButtonClick = useCallback((e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n onButtonClick?.(preIPOCompanySPV.id, investorId);\n }, [preIPOCompanySPV.id, investorId, onButtonClick]);\n\n const [companyDetails, setCompanyDetails] = useState<LogoAndCountryProps | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n const fetchCompanyDetails = async () => {\n setIsLoading(true);\n const service = new SharedService();\n try {\n const details = await service.GetCompanyLogoAndCountry(\n preIPOCompanySPV.preIPOCompanyId,\n );\n setCompanyDetails(details);\n } catch (error) {\n console.error('Error fetching company details:', error);\n } finally {\n setIsLoading(false);\n }\n };\n\n fetchCompanyDetails();\n }, [preIPOCompanySPV.preIPOCompanyId, investorId]);\n\n return (\n <tr\n className=\"hover:bg-gray-50 transition-colors\"\n role=\"row\"\n >\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <div className=\"flex items-center gap-3\">\n {isLoading ? (\n <div className=\"w-8 h-8 animate-pulse bg-gray-200 rounded-lg\"/>\n ) : (\n <CompanyLogo\n logoURL={companyDetails?.logoURL}\n name={companyName}\n />\n )}\n <div className=\"flex flex-col\">\n <span className=\"font-medium text-gray-900\">{companyName}</span>\n <span className=\"text-sm text-gray-500\">\n {isLoading ? (\n <div className=\"h-4 w-24 animate-pulse bg-gray-200 rounded\"/>\n ) : (\n companyDetails?.location || 'Location not available'\n )}\n </span>\n </div>\n </div>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <span className=\"font-medium text-gray-900\">\n {allInPricePerShare !== undefined ? formatCurrency(allInPricePerShare) : \"N/A\"}\n </span>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <span className=\"font-medium text-gray-900\">\n {minCommitmentAmount !== undefined ? formatCurrency(minCommitmentAmount) : \"N/A\"}\n </span>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <span className=\"font-medium text-gray-900\">\n {managementFee !== undefined ? `${managementFee}%` : \"N/A\"}\n </span>\n </td>\n\n <td\n className=\"py-4 px-4 border-b border-gray-100\"\n role=\"cell\"\n >\n <button\n onClick={handleButtonClick}\n className=\"bg-custom-blue hover:bg-custom-blue-dark text-white font-medium py-2 px-4 rounded-lg shadow-md transition-all duration-200\"\n aria-label={`${buttonText} for ${companyName}`}\n >\n {buttonText}\n </button>\n </td>\n </tr>\n );\n});\n\nTableRow.displayName = 'TableRow';","import { Client, MonarkStage, PreIPOCompanySPVApiResponse, SortOrder15, SortBy2 } from \"@monarkmarkets/api-client\";\n\n/**\n * Service for managing Special Purpose Vehicle (SPV) operations.\n */\nexport class PreIPOCompanySPVService {\n private readonly _client: Client;\n\n constructor() {\n this._client = new Client(\"/api\");\n }\n\n /**\n * Retrieves all SPVs for a specific investor with optional filtering and pagination.\n *\n * @param investorId - The unique identifier of the investor\n * @param nameFilter - Optional filter to search SPVs by name\n * @param preIPOCompanyId - Optional filter to search by pre-IPO company ID\n * @param preIPOCompanyInvestmentId - Optional filter to search by pre-IPO company investment ID\n * @param page - Optional page number for pagination\n * @param pageSize - Number of items per page (default: 25)\n * @param sortOrder - Sort order for results (default: Descending)\n * @param sortBy - Field to sort by\n * @returns Promise resolving to PreIPOCompanySPVApiResponse or null if operation fails\n */\n public async getAllSpvs(\n investorId: string,\n nameFilter?: string,\n preIPOCompanyId?: string,\n preIPOCompanyInvestmentId?: string,\n page?: number,\n pageSize: number = 25,\n sortOrder: SortOrder15 = SortOrder15.Descending,\n sortBy?: SortBy2\n ): Promise<PreIPOCompanySPVApiResponse | null> {\n if (!investorId?.trim()) {\n throw new Error(\"investorId is required and cannot be empty\");\n }\n\n if (pageSize <= 0 || pageSize > 100) {\n throw new Error(\"pageSize must be between 1 and 100\");\n }\n\n if (page !== undefined && page < 0) {\n throw new Error(\"page must be non-negative\");\n }\n\n try {\n return await this._client.getAllPreIPOCompanySPVs(\n investorId,\n MonarkStage.PRIMARY_FUNDRAISE,\n undefined,\n nameFilter,\n preIPOCompanyId,\n preIPOCompanyInvestmentId,\n true,\n page,\n pageSize,\n undefined,\n sortOrder,\n sortBy\n );\n } catch (error) {\n console.error(\n `Failed to retrieve SPVs for investor ${investorId}:`,\n {\n investorId,\n nameFilter,\n preIPOCompanyId,\n preIPOCompanyInvestmentId,\n page,\n pageSize,\n error: error instanceof Error ? error.message : error\n }\n );\n\n return null;\n }\n }\n}\n","import { useState, useEffect, useCallback } from 'react';\nimport { PreIPOCompanySPVApiResponse, SortOrder15, SortBy2 } from '@monarkmarkets/api-client';\nimport { PreIPOCompanySPVService } from '../services/primary-company-service';\n\ninterface UsePrimaryCompanyParams {\n investorId: string;\n nameFilter?: string;\n preIPOCompanyId?: string;\n preIPOCompanyInvestmentId?: string;\n page?: number;\n pageSize?: number;\n sortOrder?: SortOrder15;\n sortBy?: SortBy2;\n enabled?: boolean;\n}\n\ninterface UsePrimaryCompanyReturn {\n data: PreIPOCompanySPVApiResponse | null;\n loading: boolean;\n error: string | null;\n refetch: () => Promise<void>;\n}\n\n/**\n * Hook for fetching primary company SPV data with automatic loading states and error handling.\n */\nexport const usePrimaryCompany = ({\n investorId,\n nameFilter,\n preIPOCompanyId,\n preIPOCompanyInvestmentId,\n page,\n pageSize = 25,\n sortOrder = SortOrder15.Descending,\n sortBy,\n enabled = true\n }: UsePrimaryCompanyParams): UsePrimaryCompanyReturn => {\n const [data, setData] = useState<PreIPOCompanySPVApiResponse | null>(null);\n const [loading, setLoading] = useState<boolean>(false);\n const [error, setError] = useState<string | null>(null);\n\n const spvService = new PreIPOCompanySPVService();\n\n const fetchData = useCallback(async () => {\n if (!enabled || !investorId) {\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const result = await spvService.getAllSpvs(\n investorId,\n nameFilter,\n preIPOCompanyId,\n preIPOCompanyInvestmentId,\n page,\n pageSize,\n sortOrder,\n sortBy\n );\n\n if (result === null) {\n setError('Failed to fetch SPV data');\n setData(null);\n } else {\n setData(result);\n }\n } catch (err) {\n setError(err instanceof Error ? err.message : 'An unexpected error occurred');\n setData(null);\n } finally {\n setLoading(false);\n }\n }, [\n enabled,\n investorId,\n nameFilter,\n preIPOCompanyId,\n preIPOCompanyInvestmentId,\n page,\n pageSize,\n sortOrder,\n sortBy\n ]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n const refetch = useCallback(async () => {\n await fetchData();\n }, [fetchData]);\n\n return {\n data,\n loading,\n error,\n refetch\n };\n};","/**\n * Constants for primary company SPV operations\n */\nexport const PRIMARY_COMPANY_CONSTANTS = {\n /**\n * Default page size for pagination\n */\n DEFAULT_PAGE_SIZE: 25,\n\n /**\n * Maximum allowed page size\n */\n MAX_PAGE_SIZE: 100,\n\n /**\n * Minimum allowed page size\n */\n MIN_PAGE_SIZE: 1,\n\n /**\n * Default starting page number (0-based)\n */\n DEFAULT_PAGE: 1,\n\n /**\n * Error messages\n */\n ERRORS: {\n INVESTOR_ID_REQUIRED: 'investorId is required and cannot be empty',\n INVALID_PAGE_SIZE: 'pageSize must be between 1 and 100',\n INVALID_PAGE: 'page must be non-negative',\n FETCH_FAILED: 'Failed to fetch SPV data',\n UNEXPECTED_ERROR: 'An unexpected error occurred'\n },\n\n /**\n * API endpoint configuration\n */\n API: {\n BASE_PATH: '/api'\n }\n} as const;\n\n/**\n * Type for error message keys\n */\nexport type PrimaryCompanyErrorKey = keyof typeof PRIMARY_COMPANY_CONSTANTS.ERRORS;","import React, { useEffect, useState } from \"react\";\nimport { TableRow } from \"./components/table-row\";\nimport { TableHeaders } from \"../common/table-headers\";\nimport { PrimaryTableProps } from \"../types/types\";\nimport { Pagination } from \"../private-table/components/pagination\";\nimport { LoadingSpinner } from \"../common/loading-spinner\";\nimport { usePrimaryCompany } from \"../hooks/usePrimaryCompany\";\nimport { PRIMARY_COMPANY_CONSTANTS } from \"../constants/primary-company-constants\";\nimport { SortOrder15 } from \"@monarkmarkets/api-client\";\n\nconst primaryColumns = [\n { title: 'Company' },\n { title: 'Price Per Share' },\n { title: 'Minimum Investment' },\n { title: 'Fees' },\n { title: 'Invest' }\n];\n\n/**\n * PrimaryTable component displays a table of SPV investment opportunities.\n * It includes table headers and rows with built-in data fetching using the usePrimaryCompany hook.\n */\nexport const PrimaryTable = ({\n investorId,\n onButtonClick,\n buttonText = \"Invest\",\n isLoading: externalLoading = false,\n initialPage = 1,\n pageSize = PRIMARY_COMPANY_CONSTANTS.DEFAULT_PAGE_SIZE,\n searchTerm = '',\n onPageChange,\n onDataLoaded\n }: PrimaryTableProps) => {\n const [currentPage, setCurrentPage] = useState(initialPage);\n\n const { data, loading, error, refetch } = usePrimaryCompany({\n investorId,\n nameFilter: searchTerm,\n page: currentPage,\n pageSize,\n sortOrder: SortOrder15.Descending,\n enabled: !!investorId\n });\n\n const isLoading = externalLoading || loading;\n const preIPOCompanySPV = data?.items || [];\n const totalPages = data?.pagination?.totalPages || 1;\n\n useEffect(() => {\n setCurrentPage(1);\n }, [searchTerm]);\n\n useEffect(() => {\n if (data) {\n onDataLoaded?.(preIPOCompanySPV, totalPages);\n }\n }, [data, preIPOCompanySPV, totalPages, onDataLoaded]);\n\n const handlePageChange = (page: number) => {\n setCurrentPage(page);\n onPageChange?.(page);\n };\n\n if (error) {\n return (\n <div className=\"bg-white rounded-lg shadow-sm p-8 text-center\">\n <p className=\"text-gray-500\">\n {PRIMARY_COMPANY_CONSTANTS.ERRORS.FETCH_FAILED}. Please try again later.\n </p>\n <button\n onClick={refetch}\n className=\"mt-2 px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600\"\n >\n Retry\n </button>\n </div>\n );\n }\n\n if (!isLoading && preIPOCompanySPV.length === 0) {\n return (\n <div className=\"bg-white rounded-lg shadow-sm p-8 text-center\">\n <p className=\"text-gray-500\">No companies available</p>\n </div>\n );\n }\n\n return (\n <div className=\"space-y-4\">\n <div className=\"relative\">\n {isLoading && (\n <div className=\"absolute inset-0 bg-white/50 flex items-center justify-center z-10\">\n <LoadingSpinner />\n </div>\n )}\n <div className=\"bg-white rounded-lg shadow-sm overflow-hidden\">\n <table className=\"w-full table-fixed\">\n <TableHeaders columns={primaryColumns} />\n <tbody className=\"relative\">\n {preIPOCompanySPV.map((company) => (\n <TableRow\n key={company.id}\n preIPOCompanySPV={company}\n companyName={company.name || ''}\n allInPricePerShare={company.allInPricePerShare}\n minCommitmentAmount={company.minCommitmentAmount}\n managementFee={company.managementFee}\n buttonText={buttonText}\n investorId={investorId}\n onButtonClick={onButtonClick}\n />\n ))}\n </tbody>\n </table>\n </div>\n </div>\n <Pagination\n currentPage={currentPage}\n totalPages={totalPages}\n onPageChange={handlePageChange}\n />\n </div>\n );\n};"],"names":["CompanyLogo","memo","_a","logoURL","name","_jsx","src","alt","concat","className","children","charAt","displayName","formatLargeNumber","value","toFixed","toLocaleString","formatCurrency","decimals","undefined","Intl","NumberFormat","style","currency","maximumFractionDigits","minimumFractionDigits","format","TableRow","preIpoCompany","companyName","lastRoundValuation","lastFundingSeries","lastSharePrice","buttonText","investorId","onButtonClick","_c","isInWatchlist","_d","watchlistLoading","onAddToWatchlist","onRemoveFromWatchlist","_e","useState","isTogglingWatchlist","setIsTogglingWatchlist","_f","isHovering","setIsHovering","_g","justToggled","setJustToggled","_h","isMounted","setIsMounted","useEffect","timer","setTimeout","clearTimeout","id","console","warn","safeName","safeCountry","country","useCallback","e","preventDefault","handleWatchlistToggle","__awaiter","sent","isWatchlistButtonDisabled","getButtonContent","_jsxs","_Fragment","xmlns","fill","viewBox","cx","cy","r","stroke","strokeWidth","d","X","Check","getButtonClassName","baseClasses","hoverClasses","role","onClick","onMouseEnter","onMouseLeave","disabled","zIndex","TableHeaders","columns","map","column","index","width","scope","title","NavigationButton","direction","strokeLinecap","strokeLinejoin","PageButton","page","isCurrentPage","Pagination","currentPage","totalPages","onPageChange","handlePrevious","handleNext","pageNumbers","useMemo","pages","showEllipsis","i","push","LoadingSpinner","PreIPOCompanyService","_client","Client","prototype","getAllCompanies","searchTerm_1","searchCategories_1","sortBy_1","searchTerm","searchCategories","sortBy","sortOrder","minLastValuation","maxLastValuation","minTotalFunding","maxTotalFunding","listingType","isActive","pageSize","SortOrder10","Descending","validateParameters","getAllPreIPOCompanies","logError","error_1","addToWatchlist","targetId","trim","Error","watchlistItem","CreateWatchlist","targetAssetType","CreateWatchlistTargetAssetType","PreIPOCompany","createOrUpdate","error","error_2","message","removeFromWatchlist","delete","error_3","getByInvestorAndTarget","batchCheckWatchlist","targetIds","watchlistStatus","Map","length","promises","_this","Promise","all","results","forEach","set","error_5","parameters","usePrivateCompanies","_b","enabled","data","setData","loading","setLoading","setError","setWatchlistStatus","_j","loadingWatchlist","setLoadingWatchlist","preIPOService","fetchData","result","errorMessage","err_1","fetchWatchlistStatus","items","companyIds","company","filter","Boolean","status_1","err_2","prev","err_3","err_4","refetch","refetchWatchlist","PRIVATE_COMPANY_CONSTANTS","DEFAULT_PAGE_SIZE","ERRORS","INVALID_PAGE_SIZE","FETCH_FAILED","PRIVATE_COLUMNS","PrivateTable","externalLoading","initialPage","onDataLoaded","setCurrentPage","isFullyLoaded","pagination","handlePageChange","ErrorState","EmptyState","LoadingOverlay","lastValuation","get","SharedService","GetCompanyLogoAndCountry","preIPOCompanyId","getPreIPOCompanyById","location","preIPOCompanySPV","allInPricePerShare","minCommitmentAmount","managementFee","handleButtonClick","companyDetails","setCompanyDetails","isLoading","setIsLoading","fetchCompanyDetails","service","details","PreIPOCompanySPVService","getAllSpvs","investorId_1","nameFilter_1","preIPOCompanyId_1","preIPOCompanyInvestmentId_1","page_1","arguments","nameFilter","preIPOCompanyInvestmentId","SortOrder15","getAllPreIPOCompanySPVs","MonarkStage","PRIMARY_FUNDRAISE","usePrimaryCompany","spvService","PRIMARY_COMPANY_CONSTANTS","INVESTOR_ID_REQUIRED","primaryColumns","PrimaryTable"],"mappings":"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"}
|