@monarkmarkets/marketplace 2.0.2 → 2.0.4
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 +408 -167
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +407 -166
- package/dist/index.js.map +1 -1
- package/dist/types/constants/primary-company-constants.d.ts +41 -0
- package/dist/types/constants/private-company-constants.d.ts +51 -0
- package/dist/types/hooks/usePrimaryCompany.d.ts +23 -0
- package/dist/types/hooks/usePrivateCompany.d.ts +25 -0
- package/dist/types/primary-table/table.d.ts +1 -1
- package/dist/types/private-table/table.d.ts +1 -1
- package/dist/types/services/primary-company-service.d.ts +19 -3
- package/dist/types/services/private-company-service.d.ts +21 -3
- package/package.json +2 -2
- package/dist/types/primary-table/components/pagination.d.ts +0 -7
package/dist/index.esm.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { __awaiter, __generator } from 'tslib';
|
|
2
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
3
2
|
import { memo, useCallback, useMemo, useState, useEffect } from 'react';
|
|
4
|
-
import {
|
|
3
|
+
import { __awaiter, __generator } from 'tslib';
|
|
4
|
+
import { Client, SortOrder7, SortOrder12, MonarkStage } from '@monarkmarkets/api-client';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* CompanyLogo component that displays either a company logo or a fallback initial.
|
|
@@ -290,28 +290,87 @@ var LoadingSpinner = function () {
|
|
|
290
290
|
});
|
|
291
291
|
};
|
|
292
292
|
|
|
293
|
+
/**
|
|
294
|
+
* Service for managing Pre-IPO company operations.
|
|
295
|
+
*/
|
|
293
296
|
var PreIPOCompanySpvService = /** @class */function () {
|
|
294
297
|
function PreIPOCompanySpvService() {
|
|
295
298
|
this._client = new Client("/api");
|
|
296
299
|
}
|
|
297
|
-
|
|
298
|
-
|
|
300
|
+
/**
|
|
301
|
+
* Retrieves all Pre-IPO companies with optional filtering and pagination.
|
|
302
|
+
*
|
|
303
|
+
* @param searchTerm - Optional search term to filter companies
|
|
304
|
+
* @param searchCategories - Optional array of categories to filter by
|
|
305
|
+
* @param sortBy - Field to sort by
|
|
306
|
+
* @param sortOrder - Sort order for results (default: Descending)
|
|
307
|
+
* @param minLastValuation - Minimum last valuation filter
|
|
308
|
+
* @param maxLastValuation - Maximum last valuation filter
|
|
309
|
+
* @param minTotalFunding - Minimum total funding filter
|
|
310
|
+
* @param maxTotalFunding - Maximum total funding filter
|
|
311
|
+
* @param page - Optional page number for pagination
|
|
312
|
+
* @param pageSize - Number of items per page (default: 25)
|
|
313
|
+
* @returns Promise resolving to PreIPOCompanyApiResponse or null if operation fails
|
|
314
|
+
*/
|
|
315
|
+
PreIPOCompanySpvService.prototype.getAllCompanies = function (searchTerm_1, searchCategories_1, sortBy_1) {
|
|
316
|
+
return __awaiter(this, arguments, void 0, function (searchTerm, searchCategories, sortBy, sortOrder, minLastValuation, maxLastValuation, minTotalFunding, maxTotalFunding, page, pageSize) {
|
|
299
317
|
var error_1;
|
|
318
|
+
if (sortOrder === void 0) {
|
|
319
|
+
sortOrder = SortOrder7.Descending;
|
|
320
|
+
}
|
|
300
321
|
if (pageSize === void 0) {
|
|
301
322
|
pageSize = 25;
|
|
302
323
|
}
|
|
303
324
|
return __generator(this, function (_a) {
|
|
304
325
|
switch (_a.label) {
|
|
305
326
|
case 0:
|
|
306
|
-
|
|
307
|
-
|
|
327
|
+
if (pageSize <= 0 || pageSize > 100) {
|
|
328
|
+
throw new Error("pageSize must be between 1 and 100");
|
|
329
|
+
}
|
|
330
|
+
if (page !== undefined && page < 0) {
|
|
331
|
+
throw new Error("page must be non-negative");
|
|
332
|
+
}
|
|
333
|
+
if (minLastValuation !== undefined && minLastValuation < 0) {
|
|
334
|
+
throw new Error("minLastValuation must be non-negative");
|
|
335
|
+
}
|
|
336
|
+
if (maxLastValuation !== undefined && maxLastValuation < 0) {
|
|
337
|
+
throw new Error("maxLastValuation must be non-negative");
|
|
338
|
+
}
|
|
339
|
+
if (minLastValuation !== undefined && maxLastValuation !== undefined && minLastValuation > maxLastValuation) {
|
|
340
|
+
throw new Error("minLastValuation cannot be greater than maxLastValuation");
|
|
341
|
+
}
|
|
342
|
+
if (minTotalFunding !== undefined && minTotalFunding < 0) {
|
|
343
|
+
throw new Error("minTotalFunding must be non-negative");
|
|
344
|
+
}
|
|
345
|
+
if (maxTotalFunding !== undefined && maxTotalFunding < 0) {
|
|
346
|
+
throw new Error("maxTotalFunding must be non-negative");
|
|
347
|
+
}
|
|
348
|
+
if (minTotalFunding !== undefined && maxTotalFunding !== undefined && minTotalFunding > maxTotalFunding) {
|
|
349
|
+
throw new Error("minTotalFunding cannot be greater than maxTotalFunding");
|
|
350
|
+
}
|
|
351
|
+
_a.label = 1;
|
|
308
352
|
case 1:
|
|
309
|
-
|
|
353
|
+
_a.trys.push([1, 3,, 4]);
|
|
354
|
+
return [4 /*yield*/, this._client.preIpoCompany2(searchTerm, searchCategories, sortBy, sortOrder, minLastValuation, maxLastValuation, minTotalFunding, maxTotalFunding, page, pageSize)];
|
|
310
355
|
case 2:
|
|
356
|
+
return [2 /*return*/, _a.sent()];
|
|
357
|
+
case 3:
|
|
311
358
|
error_1 = _a.sent();
|
|
312
|
-
console.error('Failed to retrieve
|
|
359
|
+
console.error('Failed to retrieve Pre-IPO companies:', {
|
|
360
|
+
searchTerm: searchTerm,
|
|
361
|
+
searchCategories: searchCategories,
|
|
362
|
+
sortBy: sortBy,
|
|
363
|
+
sortOrder: sortOrder,
|
|
364
|
+
minLastValuation: minLastValuation,
|
|
365
|
+
maxLastValuation: maxLastValuation,
|
|
366
|
+
minTotalFunding: minTotalFunding,
|
|
367
|
+
maxTotalFunding: maxTotalFunding,
|
|
368
|
+
page: page,
|
|
369
|
+
pageSize: pageSize,
|
|
370
|
+
error: error_1 instanceof Error ? error_1.message : error_1
|
|
371
|
+
});
|
|
313
372
|
return [2 /*return*/, null];
|
|
314
|
-
case
|
|
373
|
+
case 4:
|
|
315
374
|
return [2 /*return*/];
|
|
316
375
|
}
|
|
317
376
|
});
|
|
@@ -320,113 +379,187 @@ var PreIPOCompanySpvService = /** @class */function () {
|
|
|
320
379
|
return PreIPOCompanySpvService;
|
|
321
380
|
}();
|
|
322
381
|
|
|
323
|
-
var privateColumns = [{
|
|
324
|
-
title: 'Company'
|
|
325
|
-
}, {
|
|
326
|
-
title: 'Total Funding'
|
|
327
|
-
}, {
|
|
328
|
-
title: 'Last Round'
|
|
329
|
-
}, {
|
|
330
|
-
title: 'Last Round Price/Share'
|
|
331
|
-
}, {
|
|
332
|
-
title: 'Indicate Interest'
|
|
333
|
-
}];
|
|
334
382
|
/**
|
|
335
|
-
*
|
|
336
|
-
* It includes table headers, rows, and pagination controls with built-in data fetching.
|
|
383
|
+
* Hook for fetching private company data with automatic loading states and error handling.
|
|
337
384
|
*/
|
|
338
|
-
var
|
|
339
|
-
var
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
var
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
var
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
var
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
var
|
|
363
|
-
|
|
364
|
-
setTotalPages = _k[1];
|
|
365
|
-
var _l = useState(false),
|
|
366
|
-
error = _l[0],
|
|
367
|
-
setError = _l[1];
|
|
368
|
-
var isLoading = externalLoading || internalLoading;
|
|
369
|
-
var fetchCompanies = useCallback(function (page) {
|
|
385
|
+
var usePrivateCompanies = function (_a) {
|
|
386
|
+
var searchTerm = _a.searchTerm,
|
|
387
|
+
searchCategories = _a.searchCategories,
|
|
388
|
+
sortBy = _a.sortBy,
|
|
389
|
+
_b = _a.sortOrder,
|
|
390
|
+
sortOrder = _b === void 0 ? SortOrder7.Descending : _b,
|
|
391
|
+
minLastValuation = _a.minLastValuation,
|
|
392
|
+
maxLastValuation = _a.maxLastValuation,
|
|
393
|
+
minTotalFunding = _a.minTotalFunding,
|
|
394
|
+
maxTotalFunding = _a.maxTotalFunding,
|
|
395
|
+
page = _a.page,
|
|
396
|
+
_c = _a.pageSize,
|
|
397
|
+
pageSize = _c === void 0 ? 25 : _c,
|
|
398
|
+
_d = _a.enabled,
|
|
399
|
+
enabled = _d === void 0 ? true : _d;
|
|
400
|
+
var _e = useState(null),
|
|
401
|
+
data = _e[0],
|
|
402
|
+
setData = _e[1];
|
|
403
|
+
var _f = useState(false),
|
|
404
|
+
loading = _f[0],
|
|
405
|
+
setLoading = _f[1];
|
|
406
|
+
var _g = useState(null),
|
|
407
|
+
error = _g[0],
|
|
408
|
+
setError = _g[1];
|
|
409
|
+
var preIPOService = new PreIPOCompanySpvService();
|
|
410
|
+
var fetchData = useCallback(function () {
|
|
370
411
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
371
|
-
var
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
switch (_c.label) {
|
|
412
|
+
var result, err_1;
|
|
413
|
+
return __generator(this, function (_a) {
|
|
414
|
+
switch (_a.label) {
|
|
375
415
|
case 0:
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
416
|
+
if (!enabled) {
|
|
417
|
+
return [2 /*return*/];
|
|
418
|
+
}
|
|
419
|
+
setLoading(true);
|
|
420
|
+
setError(null);
|
|
421
|
+
_a.label = 1;
|
|
380
422
|
case 1:
|
|
381
|
-
|
|
382
|
-
return [4 /*yield*/,
|
|
423
|
+
_a.trys.push([1, 3, 4, 5]);
|
|
424
|
+
return [4 /*yield*/, preIPOService.getAllCompanies(searchTerm, searchCategories, sortBy, sortOrder, minLastValuation, maxLastValuation, minTotalFunding, maxTotalFunding, page, pageSize)];
|
|
383
425
|
case 2:
|
|
384
|
-
result =
|
|
385
|
-
if (result
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
onDataLoaded === null || onDataLoaded === void 0 ? void 0 : onDataLoaded(result.items, ((_b = result.pagination) === null || _b === void 0 ? void 0 : _b.totalPages) || 1);
|
|
426
|
+
result = _a.sent();
|
|
427
|
+
if (result === null) {
|
|
428
|
+
setError('Failed to fetch private company data');
|
|
429
|
+
setData(null);
|
|
389
430
|
} else {
|
|
390
|
-
|
|
391
|
-
setTotalPages(1);
|
|
392
|
-
onDataLoaded === null || onDataLoaded === void 0 ? void 0 : onDataLoaded([], 1);
|
|
431
|
+
setData(result);
|
|
393
432
|
}
|
|
394
433
|
return [3 /*break*/, 5];
|
|
395
434
|
case 3:
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
setPreIpoCompany([]);
|
|
435
|
+
err_1 = _a.sent();
|
|
436
|
+
setError(err_1 instanceof Error ? err_1.message : 'An unexpected error occurred');
|
|
437
|
+
setData(null);
|
|
400
438
|
return [3 /*break*/, 5];
|
|
401
439
|
case 4:
|
|
402
|
-
|
|
440
|
+
setLoading(false);
|
|
403
441
|
return [7 /*endfinally*/];
|
|
404
442
|
case 5:
|
|
405
443
|
return [2 /*return*/];
|
|
406
444
|
}
|
|
407
445
|
});
|
|
408
446
|
});
|
|
409
|
-
}, [searchTerm,
|
|
447
|
+
}, [enabled, searchTerm, searchCategories, sortBy, sortOrder, minLastValuation, maxLastValuation, minTotalFunding, maxTotalFunding, page, pageSize]);
|
|
410
448
|
useEffect(function () {
|
|
411
|
-
|
|
412
|
-
}, [
|
|
449
|
+
fetchData();
|
|
450
|
+
}, [fetchData]);
|
|
451
|
+
var refetch = useCallback(function () {
|
|
452
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
453
|
+
return __generator(this, function (_a) {
|
|
454
|
+
switch (_a.label) {
|
|
455
|
+
case 0:
|
|
456
|
+
return [4 /*yield*/, fetchData()];
|
|
457
|
+
case 1:
|
|
458
|
+
_a.sent();
|
|
459
|
+
return [2 /*return*/];
|
|
460
|
+
}
|
|
461
|
+
});
|
|
462
|
+
});
|
|
463
|
+
}, [fetchData]);
|
|
464
|
+
return {
|
|
465
|
+
data: data,
|
|
466
|
+
loading: loading,
|
|
467
|
+
error: error,
|
|
468
|
+
refetch: refetch
|
|
469
|
+
};
|
|
470
|
+
};
|
|
471
|
+
|
|
472
|
+
/**
|
|
473
|
+
* Constants for Pre-IPO company operations
|
|
474
|
+
*/
|
|
475
|
+
var PRIVATE_COMPANY_CONSTANTS = {
|
|
476
|
+
/**
|
|
477
|
+
* Default page size for pagination
|
|
478
|
+
*/
|
|
479
|
+
DEFAULT_PAGE_SIZE: 25,
|
|
480
|
+
/**
|
|
481
|
+
* Error messages
|
|
482
|
+
*/
|
|
483
|
+
ERRORS: {
|
|
484
|
+
FETCH_FAILED: 'Failed to fetch Pre-IPO company data'}};
|
|
485
|
+
|
|
486
|
+
var privateColumns = [{
|
|
487
|
+
title: 'Company'
|
|
488
|
+
}, {
|
|
489
|
+
title: 'Last Round Valuation'
|
|
490
|
+
}, {
|
|
491
|
+
title: 'Last Round'
|
|
492
|
+
}, {
|
|
493
|
+
title: 'Last Round Price/Share'
|
|
494
|
+
}, {
|
|
495
|
+
title: 'Indicate Interest'
|
|
496
|
+
}];
|
|
497
|
+
/**
|
|
498
|
+
* PrivateTable component displays a table of pre-IPO companies with pagination and loading states.
|
|
499
|
+
* It includes table headers, rows, and pagination controls using the usePrivateCompanies hook.
|
|
500
|
+
*/
|
|
501
|
+
var PrivateTable = function (_a) {
|
|
502
|
+
var _b;
|
|
503
|
+
var investorId = _a.investorId,
|
|
504
|
+
onButtonClick = _a.onButtonClick,
|
|
505
|
+
_c = _a.buttonText,
|
|
506
|
+
buttonText = _c === void 0 ? "Submit IOI" : _c,
|
|
507
|
+
_d = _a.isLoading,
|
|
508
|
+
externalLoading = _d === void 0 ? false : _d,
|
|
509
|
+
_e = _a.initialPage,
|
|
510
|
+
initialPage = _e === void 0 ? 1 : _e,
|
|
511
|
+
_f = _a.pageSize,
|
|
512
|
+
pageSize = _f === void 0 ? PRIVATE_COMPANY_CONSTANTS.DEFAULT_PAGE_SIZE : _f,
|
|
513
|
+
_g = _a.searchTerm,
|
|
514
|
+
searchTerm = _g === void 0 ? '' : _g,
|
|
515
|
+
onPageChange = _a.onPageChange,
|
|
516
|
+
onDataLoaded = _a.onDataLoaded;
|
|
517
|
+
var _h = useState(initialPage),
|
|
518
|
+
currentPage = _h[0],
|
|
519
|
+
setCurrentPage = _h[1];
|
|
520
|
+
// Use the custom hook for data fetching
|
|
521
|
+
var _j = usePrivateCompanies({
|
|
522
|
+
searchTerm: searchTerm,
|
|
523
|
+
page: currentPage,
|
|
524
|
+
pageSize: pageSize,
|
|
525
|
+
sortOrder: SortOrder7.Descending,
|
|
526
|
+
enabled: true
|
|
527
|
+
}),
|
|
528
|
+
data = _j.data,
|
|
529
|
+
loading = _j.loading,
|
|
530
|
+
error = _j.error,
|
|
531
|
+
refetch = _j.refetch;
|
|
532
|
+
var isLoading = externalLoading || loading;
|
|
533
|
+
var preIpoCompany = (data === null || data === void 0 ? void 0 : data.items) || [];
|
|
534
|
+
var totalPages = ((_b = data === null || data === void 0 ? void 0 : data.pagination) === null || _b === void 0 ? void 0 : _b.totalPages) || 1;
|
|
535
|
+
// Reset to first page when search term changes
|
|
413
536
|
useEffect(function () {
|
|
414
537
|
setCurrentPage(1);
|
|
415
538
|
}, [searchTerm]);
|
|
539
|
+
// Call onDataLoaded callback when data changes
|
|
540
|
+
useEffect(function () {
|
|
541
|
+
if (data) {
|
|
542
|
+
onDataLoaded === null || onDataLoaded === void 0 ? void 0 : onDataLoaded(preIpoCompany, totalPages);
|
|
543
|
+
}
|
|
544
|
+
}, [data, preIpoCompany, totalPages, onDataLoaded]);
|
|
416
545
|
var handlePageChange = function (page) {
|
|
417
546
|
setCurrentPage(page);
|
|
418
547
|
onPageChange === null || onPageChange === void 0 ? void 0 : onPageChange(page);
|
|
419
548
|
};
|
|
420
549
|
if (error) {
|
|
421
|
-
return
|
|
550
|
+
return jsxs("div", {
|
|
422
551
|
className: "bg-white rounded-lg shadow-sm p-8 text-center",
|
|
423
|
-
children:
|
|
552
|
+
children: [jsxs("p", {
|
|
424
553
|
className: "text-gray-500",
|
|
425
|
-
children: "
|
|
426
|
-
})
|
|
554
|
+
children: [PRIVATE_COMPANY_CONSTANTS.ERRORS.FETCH_FAILED, ". Please try again later."]
|
|
555
|
+
}), jsx("button", {
|
|
556
|
+
onClick: refetch,
|
|
557
|
+
className: "mt-2 px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600",
|
|
558
|
+
children: "Retry"
|
|
559
|
+
})]
|
|
427
560
|
});
|
|
428
561
|
}
|
|
429
|
-
if (!isLoading &&
|
|
562
|
+
if (!isLoading && preIpoCompany.length === 0) {
|
|
430
563
|
return jsx("div", {
|
|
431
564
|
className: "bg-white rounded-lg shadow-sm p-8 text-center",
|
|
432
565
|
children: jsx("p", {
|
|
@@ -625,28 +758,66 @@ var TableRow = /*#__PURE__*/memo(function (_a) {
|
|
|
625
758
|
});
|
|
626
759
|
TableRow.displayName = 'TableRow';
|
|
627
760
|
|
|
761
|
+
/**
|
|
762
|
+
* Service for managing Special Purpose Vehicle (SPV) operations.
|
|
763
|
+
*/
|
|
628
764
|
var SpvService = /** @class */function () {
|
|
629
765
|
function SpvService() {
|
|
630
766
|
this._client = new Client("/api");
|
|
631
767
|
}
|
|
632
|
-
|
|
633
|
-
|
|
768
|
+
/**
|
|
769
|
+
* Retrieves all SPVs for a specific investor with optional filtering and pagination.
|
|
770
|
+
*
|
|
771
|
+
* @param investorId - The unique identifier of the investor
|
|
772
|
+
* @param nameFilter - Optional filter to search SPVs by name
|
|
773
|
+
* @param preIPOCompanyId - Optional filter to search by pre-IPO company ID
|
|
774
|
+
* @param preIPOCompanyInvestmentId - Optional filter to search by pre-IPO company investment ID
|
|
775
|
+
* @param page - Optional page number for pagination
|
|
776
|
+
* @param pageSize - Number of items per page (default: 25)
|
|
777
|
+
* @param sortOrder - Sort order for results (default: Descending)
|
|
778
|
+
* @param sortBy - Field to sort by
|
|
779
|
+
* @returns Promise resolving to PreIPOCompanySPVApiResponse or null if operation fails
|
|
780
|
+
*/
|
|
781
|
+
SpvService.prototype.getAllSpvs = function (investorId_1, nameFilter_1, preIPOCompanyId_1, preIPOCompanyInvestmentId_1, page_1) {
|
|
782
|
+
return __awaiter(this, arguments, void 0, function (investorId, nameFilter, preIPOCompanyId, preIPOCompanyInvestmentId, page, pageSize, sortOrder, sortBy) {
|
|
634
783
|
var error_1;
|
|
635
784
|
if (pageSize === void 0) {
|
|
636
785
|
pageSize = 25;
|
|
637
786
|
}
|
|
787
|
+
if (sortOrder === void 0) {
|
|
788
|
+
sortOrder = SortOrder12.Descending;
|
|
789
|
+
}
|
|
638
790
|
return __generator(this, function (_a) {
|
|
639
791
|
switch (_a.label) {
|
|
640
792
|
case 0:
|
|
641
|
-
|
|
642
|
-
|
|
793
|
+
if (!(investorId === null || investorId === void 0 ? void 0 : investorId.trim())) {
|
|
794
|
+
throw new Error("investorId is required and cannot be empty");
|
|
795
|
+
}
|
|
796
|
+
if (pageSize <= 0 || pageSize > 100) {
|
|
797
|
+
throw new Error("pageSize must be between 1 and 100");
|
|
798
|
+
}
|
|
799
|
+
if (page !== undefined && page < 0) {
|
|
800
|
+
throw new Error("page must be non-negative");
|
|
801
|
+
}
|
|
802
|
+
_a.label = 1;
|
|
643
803
|
case 1:
|
|
644
|
-
|
|
804
|
+
_a.trys.push([1, 3,, 4]);
|
|
805
|
+
return [4 /*yield*/, this._client.investorGET6(investorId, MonarkStage.PRIMARY_FUNDRAISE, nameFilter, preIPOCompanyId, preIPOCompanyInvestmentId, page, pageSize, sortOrder, sortBy)];
|
|
645
806
|
case 2:
|
|
807
|
+
return [2 /*return*/, _a.sent()];
|
|
808
|
+
case 3:
|
|
646
809
|
error_1 = _a.sent();
|
|
647
|
-
console.error(
|
|
810
|
+
console.error("Failed to retrieve SPVs for investor ".concat(investorId, ":"), {
|
|
811
|
+
investorId: investorId,
|
|
812
|
+
nameFilter: nameFilter,
|
|
813
|
+
preIPOCompanyId: preIPOCompanyId,
|
|
814
|
+
preIPOCompanyInvestmentId: preIPOCompanyInvestmentId,
|
|
815
|
+
page: page,
|
|
816
|
+
pageSize: pageSize,
|
|
817
|
+
error: error_1 instanceof Error ? error_1.message : error_1
|
|
818
|
+
});
|
|
648
819
|
return [2 /*return*/, null];
|
|
649
|
-
case
|
|
820
|
+
case 4:
|
|
650
821
|
return [2 /*return*/];
|
|
651
822
|
}
|
|
652
823
|
});
|
|
@@ -655,113 +826,183 @@ var SpvService = /** @class */function () {
|
|
|
655
826
|
return SpvService;
|
|
656
827
|
}();
|
|
657
828
|
|
|
658
|
-
var primaryColumns = [{
|
|
659
|
-
title: 'Company'
|
|
660
|
-
}, {
|
|
661
|
-
title: 'Price Per Share'
|
|
662
|
-
}, {
|
|
663
|
-
title: 'Minimum Investment'
|
|
664
|
-
}, {
|
|
665
|
-
title: 'Fees'
|
|
666
|
-
}, {
|
|
667
|
-
title: 'Invest'
|
|
668
|
-
}];
|
|
669
829
|
/**
|
|
670
|
-
*
|
|
671
|
-
* It includes table headers and rows with built-in data fetching.
|
|
830
|
+
* Hook for fetching primary company SPV data with automatic loading states and error handling.
|
|
672
831
|
*/
|
|
673
|
-
var
|
|
832
|
+
var usePrimaryCompany = function (_a) {
|
|
674
833
|
var investorId = _a.investorId,
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
var _k = useState(1),
|
|
698
|
-
totalPages = _k[0],
|
|
699
|
-
setTotalPages = _k[1];
|
|
700
|
-
var _l = useState(false),
|
|
701
|
-
error = _l[0],
|
|
702
|
-
setError = _l[1];
|
|
703
|
-
var isLoading = externalLoading || internalLoading;
|
|
704
|
-
var fetchSpvs = useCallback(function (page) {
|
|
834
|
+
nameFilter = _a.nameFilter,
|
|
835
|
+
preIPOCompanyId = _a.preIPOCompanyId,
|
|
836
|
+
preIPOCompanyInvestmentId = _a.preIPOCompanyInvestmentId,
|
|
837
|
+
page = _a.page,
|
|
838
|
+
_b = _a.pageSize,
|
|
839
|
+
pageSize = _b === void 0 ? 25 : _b,
|
|
840
|
+
_c = _a.sortOrder,
|
|
841
|
+
sortOrder = _c === void 0 ? SortOrder12.Descending : _c,
|
|
842
|
+
sortBy = _a.sortBy,
|
|
843
|
+
_d = _a.enabled,
|
|
844
|
+
enabled = _d === void 0 ? true : _d;
|
|
845
|
+
var _e = useState(null),
|
|
846
|
+
data = _e[0],
|
|
847
|
+
setData = _e[1];
|
|
848
|
+
var _f = useState(false),
|
|
849
|
+
loading = _f[0],
|
|
850
|
+
setLoading = _f[1];
|
|
851
|
+
var _g = useState(null),
|
|
852
|
+
error = _g[0],
|
|
853
|
+
setError = _g[1];
|
|
854
|
+
var spvService = new SpvService();
|
|
855
|
+
var fetchData = useCallback(function () {
|
|
705
856
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
706
|
-
var
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
switch (_c.label) {
|
|
857
|
+
var result, err_1;
|
|
858
|
+
return __generator(this, function (_a) {
|
|
859
|
+
switch (_a.label) {
|
|
710
860
|
case 0:
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
861
|
+
if (!enabled || !investorId) {
|
|
862
|
+
return [2 /*return*/];
|
|
863
|
+
}
|
|
864
|
+
setLoading(true);
|
|
865
|
+
setError(null);
|
|
866
|
+
_a.label = 1;
|
|
715
867
|
case 1:
|
|
716
|
-
|
|
717
|
-
return [4 /*yield*/,
|
|
868
|
+
_a.trys.push([1, 3, 4, 5]);
|
|
869
|
+
return [4 /*yield*/, spvService.getAllSpvs(investorId, nameFilter, preIPOCompanyId, preIPOCompanyInvestmentId, page, pageSize, sortOrder, sortBy)];
|
|
718
870
|
case 2:
|
|
719
|
-
result =
|
|
720
|
-
if (result
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
onDataLoaded === null || onDataLoaded === void 0 ? void 0 : onDataLoaded(result.items, ((_b = result.pagination) === null || _b === void 0 ? void 0 : _b.totalPages) || 1);
|
|
871
|
+
result = _a.sent();
|
|
872
|
+
if (result === null) {
|
|
873
|
+
setError('Failed to fetch SPV data');
|
|
874
|
+
setData(null);
|
|
724
875
|
} else {
|
|
725
|
-
|
|
726
|
-
setTotalPages(1);
|
|
727
|
-
onDataLoaded === null || onDataLoaded === void 0 ? void 0 : onDataLoaded([], 1);
|
|
876
|
+
setData(result);
|
|
728
877
|
}
|
|
729
878
|
return [3 /*break*/, 5];
|
|
730
879
|
case 3:
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
setPreIPOCompanySPV([]);
|
|
880
|
+
err_1 = _a.sent();
|
|
881
|
+
setError(err_1 instanceof Error ? err_1.message : 'An unexpected error occurred');
|
|
882
|
+
setData(null);
|
|
735
883
|
return [3 /*break*/, 5];
|
|
736
884
|
case 4:
|
|
737
|
-
|
|
885
|
+
setLoading(false);
|
|
738
886
|
return [7 /*endfinally*/];
|
|
739
887
|
case 5:
|
|
740
888
|
return [2 /*return*/];
|
|
741
889
|
}
|
|
742
890
|
});
|
|
743
891
|
});
|
|
744
|
-
}, [investorId,
|
|
892
|
+
}, [enabled, investorId, nameFilter, preIPOCompanyId, preIPOCompanyInvestmentId, page, pageSize, sortOrder, sortBy]);
|
|
745
893
|
useEffect(function () {
|
|
746
|
-
|
|
747
|
-
}, [
|
|
894
|
+
fetchData();
|
|
895
|
+
}, [fetchData]);
|
|
896
|
+
var refetch = useCallback(function () {
|
|
897
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
898
|
+
return __generator(this, function (_a) {
|
|
899
|
+
switch (_a.label) {
|
|
900
|
+
case 0:
|
|
901
|
+
return [4 /*yield*/, fetchData()];
|
|
902
|
+
case 1:
|
|
903
|
+
_a.sent();
|
|
904
|
+
return [2 /*return*/];
|
|
905
|
+
}
|
|
906
|
+
});
|
|
907
|
+
});
|
|
908
|
+
}, [fetchData]);
|
|
909
|
+
return {
|
|
910
|
+
data: data,
|
|
911
|
+
loading: loading,
|
|
912
|
+
error: error,
|
|
913
|
+
refetch: refetch
|
|
914
|
+
};
|
|
915
|
+
};
|
|
916
|
+
|
|
917
|
+
/**
|
|
918
|
+
* Constants for primary company SPV operations
|
|
919
|
+
*/
|
|
920
|
+
var PRIMARY_COMPANY_CONSTANTS = {
|
|
921
|
+
/**
|
|
922
|
+
* Default page size for pagination
|
|
923
|
+
*/
|
|
924
|
+
DEFAULT_PAGE_SIZE: 25,
|
|
925
|
+
/**
|
|
926
|
+
* Error messages
|
|
927
|
+
*/
|
|
928
|
+
ERRORS: {
|
|
929
|
+
FETCH_FAILED: 'Failed to fetch SPV data'}};
|
|
930
|
+
|
|
931
|
+
var primaryColumns = [{
|
|
932
|
+
title: 'Company'
|
|
933
|
+
}, {
|
|
934
|
+
title: 'Price Per Share'
|
|
935
|
+
}, {
|
|
936
|
+
title: 'Minimum Investment'
|
|
937
|
+
}, {
|
|
938
|
+
title: 'Fees'
|
|
939
|
+
}, {
|
|
940
|
+
title: 'Invest'
|
|
941
|
+
}];
|
|
942
|
+
/**
|
|
943
|
+
* PrimaryTable component displays a table of SPV investment opportunities.
|
|
944
|
+
* It includes table headers and rows with built-in data fetching using the usePrimaryCompany hook.
|
|
945
|
+
*/
|
|
946
|
+
var PrimaryTable = function (_a) {
|
|
947
|
+
var _b;
|
|
948
|
+
var investorId = _a.investorId,
|
|
949
|
+
onButtonClick = _a.onButtonClick,
|
|
950
|
+
_c = _a.buttonText,
|
|
951
|
+
buttonText = _c === void 0 ? "Invest" : _c,
|
|
952
|
+
_d = _a.isLoading,
|
|
953
|
+
externalLoading = _d === void 0 ? false : _d,
|
|
954
|
+
_e = _a.initialPage,
|
|
955
|
+
initialPage = _e === void 0 ? 1 : _e,
|
|
956
|
+
_f = _a.pageSize,
|
|
957
|
+
pageSize = _f === void 0 ? PRIMARY_COMPANY_CONSTANTS.DEFAULT_PAGE_SIZE : _f,
|
|
958
|
+
_g = _a.searchTerm,
|
|
959
|
+
searchTerm = _g === void 0 ? '' : _g,
|
|
960
|
+
onPageChange = _a.onPageChange,
|
|
961
|
+
onDataLoaded = _a.onDataLoaded;
|
|
962
|
+
var _h = useState(initialPage),
|
|
963
|
+
currentPage = _h[0],
|
|
964
|
+
setCurrentPage = _h[1];
|
|
965
|
+
var _j = usePrimaryCompany({
|
|
966
|
+
investorId: investorId,
|
|
967
|
+
nameFilter: searchTerm,
|
|
968
|
+
page: currentPage,
|
|
969
|
+
pageSize: pageSize,
|
|
970
|
+
sortOrder: SortOrder12.Descending,
|
|
971
|
+
enabled: !!investorId
|
|
972
|
+
}),
|
|
973
|
+
data = _j.data,
|
|
974
|
+
loading = _j.loading,
|
|
975
|
+
error = _j.error,
|
|
976
|
+
refetch = _j.refetch;
|
|
977
|
+
var isLoading = externalLoading || loading;
|
|
978
|
+
var preIPOCompanySPV = (data === null || data === void 0 ? void 0 : data.items) || [];
|
|
979
|
+
var totalPages = ((_b = data === null || data === void 0 ? void 0 : data.pagination) === null || _b === void 0 ? void 0 : _b.totalPages) || 1;
|
|
748
980
|
useEffect(function () {
|
|
749
981
|
setCurrentPage(1);
|
|
750
982
|
}, [searchTerm]);
|
|
983
|
+
useEffect(function () {
|
|
984
|
+
if (data) {
|
|
985
|
+
onDataLoaded === null || onDataLoaded === void 0 ? void 0 : onDataLoaded(preIPOCompanySPV, totalPages);
|
|
986
|
+
}
|
|
987
|
+
}, [data, preIPOCompanySPV, totalPages, onDataLoaded]);
|
|
751
988
|
var handlePageChange = function (page) {
|
|
752
989
|
setCurrentPage(page);
|
|
753
990
|
onPageChange === null || onPageChange === void 0 ? void 0 : onPageChange(page);
|
|
754
991
|
};
|
|
755
992
|
if (error) {
|
|
756
|
-
return
|
|
993
|
+
return jsxs("div", {
|
|
757
994
|
className: "bg-white rounded-lg shadow-sm p-8 text-center",
|
|
758
|
-
children:
|
|
995
|
+
children: [jsxs("p", {
|
|
759
996
|
className: "text-gray-500",
|
|
760
|
-
children: "
|
|
761
|
-
})
|
|
997
|
+
children: [PRIMARY_COMPANY_CONSTANTS.ERRORS.FETCH_FAILED, ". Please try again later."]
|
|
998
|
+
}), jsx("button", {
|
|
999
|
+
onClick: refetch,
|
|
1000
|
+
className: "mt-2 px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600",
|
|
1001
|
+
children: "Retry"
|
|
1002
|
+
})]
|
|
762
1003
|
});
|
|
763
1004
|
}
|
|
764
|
-
if (!isLoading &&
|
|
1005
|
+
if (!isLoading && preIPOCompanySPV.length === 0) {
|
|
765
1006
|
return jsx("div", {
|
|
766
1007
|
className: "bg-white rounded-lg shadow-sm p-8 text-center",
|
|
767
1008
|
children: jsx("p", {
|