@reltio/components 1.4.2095 → 1.4.2099

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.
Files changed (49) hide show
  1. package/BasicTable/basicTableViewState.d.ts +3 -3
  2. package/HOCs/withErrorBoundary/index.d.ts +1 -0
  3. package/HOCs/withErrorBoundary/index.js +1 -0
  4. package/HOCs/withErrorBoundary/withErrorBoundary.d.ts +5 -0
  5. package/HOCs/withErrorBoundary/withErrorBoundary.js +23 -0
  6. package/cjs/BasicTable/basicTableViewState.d.ts +3 -3
  7. package/cjs/HOCs/withErrorBoundary/index.d.ts +1 -0
  8. package/cjs/HOCs/withErrorBoundary/index.js +5 -0
  9. package/cjs/HOCs/withErrorBoundary/withErrorBoundary.d.ts +5 -0
  10. package/cjs/HOCs/withErrorBoundary/withErrorBoundary.js +30 -0
  11. package/cjs/helpers/segments.d.ts +1 -0
  12. package/cjs/helpers/segments.js +37 -0
  13. package/cjs/hooks/useRelationsLoader/useRelationsLoader.d.ts +2 -5
  14. package/cjs/hooks/useSegmentsLoader/index.d.ts +1 -0
  15. package/cjs/hooks/useSegmentsLoader/index.js +5 -0
  16. package/cjs/hooks/useSegmentsLoader/useSegmentsLoader.d.ts +15 -0
  17. package/cjs/hooks/useSegmentsLoader/useSegmentsLoader.js +103 -0
  18. package/cjs/hooks/useSegmentsSizesLoader/index.d.ts +1 -0
  19. package/cjs/hooks/useSegmentsSizesLoader/index.js +5 -0
  20. package/cjs/hooks/useSegmentsSizesLoader/useSegmentsSizesLoader.d.ts +6 -0
  21. package/{hooks/useSegmentsRequest/helper.js → cjs/hooks/useSegmentsSizesLoader/useSegmentsSizesLoader.js} +50 -11
  22. package/cjs/index.d.ts +2 -1
  23. package/cjs/index.js +3 -1
  24. package/cjs/types/basicTable.d.ts +1 -5
  25. package/helpers/segments.d.ts +1 -0
  26. package/helpers/segments.js +34 -0
  27. package/hooks/useRelationsLoader/useRelationsLoader.d.ts +2 -5
  28. package/hooks/useSegmentsLoader/index.d.ts +1 -0
  29. package/hooks/useSegmentsLoader/index.js +1 -0
  30. package/hooks/useSegmentsLoader/useSegmentsLoader.d.ts +15 -0
  31. package/hooks/useSegmentsLoader/useSegmentsLoader.js +99 -0
  32. package/hooks/useSegmentsSizesLoader/index.d.ts +1 -0
  33. package/hooks/useSegmentsSizesLoader/index.js +1 -0
  34. package/hooks/useSegmentsSizesLoader/useSegmentsSizesLoader.d.ts +6 -0
  35. package/{cjs/hooks/useSegmentsRequest/helper.js → hooks/useSegmentsSizesLoader/useSegmentsSizesLoader.js} +46 -15
  36. package/index.d.ts +2 -1
  37. package/index.js +1 -0
  38. package/package.json +3 -3
  39. package/types/basicTable.d.ts +1 -5
  40. package/cjs/hooks/useSegmentsRequest/helper.d.ts +0 -2
  41. package/cjs/hooks/useSegmentsRequest/index.d.ts +0 -1
  42. package/cjs/hooks/useSegmentsRequest/index.js +0 -5
  43. package/cjs/hooks/useSegmentsRequest/useSegmentsRequest.d.ts +0 -42
  44. package/cjs/hooks/useSegmentsRequest/useSegmentsRequest.js +0 -146
  45. package/hooks/useSegmentsRequest/helper.d.ts +0 -2
  46. package/hooks/useSegmentsRequest/index.d.ts +0 -1
  47. package/hooks/useSegmentsRequest/index.js +0 -1
  48. package/hooks/useSegmentsRequest/useSegmentsRequest.d.ts +0 -42
  49. package/hooks/useSegmentsRequest/useSegmentsRequest.js +0 -142
@@ -1,5 +1,5 @@
1
- import { createStandardAction } from '@reltio/mdm-sdk';
2
- import { ColumnData, ColumnFilter, ColumnSize, Sorting } from '../types/basicTable';
1
+ import { createStandardAction, SortingField } from '@reltio/mdm-sdk';
2
+ import { ColumnData, ColumnFilter, ColumnSize } from '../types/basicTable';
3
3
  export declare enum ActionTypes {
4
4
  CHANGE_COLUMNS = "CHANGE_COLUMNS",
5
5
  TOGGLE_FILTERS = "TOGGLE_FILTERS",
@@ -12,7 +12,7 @@ export type BasicTableState = {
12
12
  visibleColumns: ColumnData['id'][];
13
13
  columnsSize?: ColumnSize[];
14
14
  filters?: Record<ColumnData['id'], ColumnFilter>;
15
- sorting?: Sorting;
15
+ sorting?: SortingField;
16
16
  page: number;
17
17
  rowsPerPage: number;
18
18
  rowsPerPageOptions?: number[];
@@ -0,0 +1 @@
1
+ export { withErrorBoundary } from './withErrorBoundary';
@@ -0,0 +1 @@
1
+ export { withErrorBoundary } from './withErrorBoundary';
@@ -0,0 +1,5 @@
1
+ import React, { ComponentType } from 'react';
2
+ export declare const withErrorBoundary: <P extends Record<string, unknown>>(Component: ComponentType<P>) => {
3
+ (props: P): React.JSX.Element;
4
+ displayName: string;
5
+ };
@@ -0,0 +1,23 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import React from 'react';
13
+ import i18n from 'ui-i18n';
14
+ import { EMPTY_STATE_ICONS, EMPTY_STATE_VARIANTS, EmptyState } from '../../EmptyState';
15
+ import { ErrorBoundary } from '../../ErrorBoundary';
16
+ export var withErrorBoundary = function (Component) {
17
+ var WithErrorBoundary = function (props) {
18
+ return (React.createElement(ErrorBoundary, { error: React.createElement(EmptyState, { LogoRenderer: EMPTY_STATE_ICONS.ERROR, text: "", secondaryText: i18n.text('Something went wrong'), variant: EMPTY_STATE_VARIANTS.small }) },
19
+ React.createElement(Component, __assign({}, props))));
20
+ };
21
+ WithErrorBoundary.displayName = 'WithErrorBoundary';
22
+ return WithErrorBoundary;
23
+ };
@@ -1,5 +1,5 @@
1
- import { createStandardAction } from '@reltio/mdm-sdk';
2
- import { ColumnData, ColumnFilter, ColumnSize, Sorting } from '../types/basicTable';
1
+ import { createStandardAction, SortingField } from '@reltio/mdm-sdk';
2
+ import { ColumnData, ColumnFilter, ColumnSize } from '../types/basicTable';
3
3
  export declare enum ActionTypes {
4
4
  CHANGE_COLUMNS = "CHANGE_COLUMNS",
5
5
  TOGGLE_FILTERS = "TOGGLE_FILTERS",
@@ -12,7 +12,7 @@ export type BasicTableState = {
12
12
  visibleColumns: ColumnData['id'][];
13
13
  columnsSize?: ColumnSize[];
14
14
  filters?: Record<ColumnData['id'], ColumnFilter>;
15
- sorting?: Sorting;
15
+ sorting?: SortingField;
16
16
  page: number;
17
17
  rowsPerPage: number;
18
18
  rowsPerPageOptions?: number[];
@@ -0,0 +1 @@
1
+ export { withErrorBoundary } from './withErrorBoundary';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.withErrorBoundary = void 0;
4
+ var withErrorBoundary_1 = require("./withErrorBoundary");
5
+ Object.defineProperty(exports, "withErrorBoundary", { enumerable: true, get: function () { return withErrorBoundary_1.withErrorBoundary; } });
@@ -0,0 +1,5 @@
1
+ import React, { ComponentType } from 'react';
2
+ export declare const withErrorBoundary: <P extends Record<string, unknown>>(Component: ComponentType<P>) => {
3
+ (props: P): React.JSX.Element;
4
+ displayName: string;
5
+ };
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.withErrorBoundary = void 0;
18
+ var react_1 = __importDefault(require("react"));
19
+ var ui_i18n_1 = __importDefault(require("ui-i18n"));
20
+ var EmptyState_1 = require("../../EmptyState");
21
+ var ErrorBoundary_1 = require("../../ErrorBoundary");
22
+ var withErrorBoundary = function (Component) {
23
+ var WithErrorBoundary = function (props) {
24
+ return (react_1.default.createElement(ErrorBoundary_1.ErrorBoundary, { error: react_1.default.createElement(EmptyState_1.EmptyState, { LogoRenderer: EmptyState_1.EMPTY_STATE_ICONS.ERROR, text: "", secondaryText: ui_i18n_1.default.text('Something went wrong'), variant: EmptyState_1.EMPTY_STATE_VARIANTS.small }) },
25
+ react_1.default.createElement(Component, __assign({}, props))));
26
+ };
27
+ WithErrorBoundary.displayName = 'WithErrorBoundary';
28
+ return WithErrorBoundary;
29
+ };
30
+ exports.withErrorBoundary = withErrorBoundary;
@@ -0,0 +1 @@
1
+ export declare const buildSegmentsFilterString: any;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildSegmentsFilterString = void 0;
4
+ var ramda_1 = require("ramda");
5
+ var mdm_sdk_1 = require("@reltio/mdm-sdk");
6
+ var buildFavoriteFilterClause = function (value) {
7
+ return value ? "equals(favorite, 'true')" : '';
8
+ };
9
+ var buildOwnerFilterClause = function (user) {
10
+ return "equals(owner, '".concat(user, "')");
11
+ };
12
+ var buildStatusFilterClause = function (status) {
13
+ return "equals(status, '".concat(status, "')");
14
+ };
15
+ var buildSharingFilterClause = function (value) {
16
+ return "equals(sharing, '".concat(value, "')");
17
+ };
18
+ var buildDestinationFilterClause = function (value) {
19
+ return "equals(integrationIDs, '".concat(value, "')");
20
+ };
21
+ var buildSearchValueFilterClause = function (value) {
22
+ return "contains(label, '".concat(value, "')");
23
+ };
24
+ var getFilterClauseBuilder = (0, ramda_1.cond)([
25
+ [(0, ramda_1.equals)('showFavorite'), function () { return buildFavoriteFilterClause; }],
26
+ [(0, ramda_1.equals)('ownedBy'), function () { return buildOwnerFilterClause; }],
27
+ [(0, ramda_1.equals)('statuses'), function () { return (0, mdm_sdk_1.multiValueFilter)(buildStatusFilterClause); }],
28
+ [(0, ramda_1.equals)('createdBy'), function () { return (0, mdm_sdk_1.multiValueFilter)(buildOwnerFilterClause); }],
29
+ [(0, ramda_1.equals)('sharedWith'), function () { return (0, mdm_sdk_1.multiValueFilter)(buildSharingFilterClause); }],
30
+ [(0, ramda_1.equals)('destinations'), function () { return (0, mdm_sdk_1.multiValueFilter)(buildDestinationFilterClause); }],
31
+ [(0, ramda_1.equals)('searchValue'), function () { return buildSearchValueFilterClause; }]
32
+ ]);
33
+ exports.buildSegmentsFilterString = (0, ramda_1.pipe)((0, ramda_1.defaultTo)({}), (0, ramda_1.reject)(mdm_sdk_1.isEmptyValue), ramda_1.toPairs, (0, ramda_1.map)(function (_a) {
34
+ var _b;
35
+ var key = _a[0], value = _a[1];
36
+ return (_b = getFilterClauseBuilder(key)) === null || _b === void 0 ? void 0 : _b(value);
37
+ }), (0, ramda_1.reject)(mdm_sdk_1.isEmptyValue), (0, ramda_1.map)(mdm_sdk_1.wrapInBrackets), (0, ramda_1.join)(' and '));
@@ -1,9 +1,6 @@
1
- import { ActivityFilter, Entity, Mode, RelationsViewConfig, RelationsTableViewConfig } from '@reltio/mdm-sdk';
1
+ import { ActivityFilter, Entity, Mode, RelationsViewConfig, RelationsTableViewConfig, SortingField } from '@reltio/mdm-sdk';
2
2
  type Props = {
3
- sorting?: {
4
- field: string;
5
- order: string;
6
- };
3
+ sorting?: SortingField;
7
4
  filter?: string;
8
5
  page: number;
9
6
  rowsPerPage: number;
@@ -0,0 +1 @@
1
+ export { useSegmentsLoader } from './useSegmentsLoader';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useSegmentsLoader = void 0;
4
+ var useSegmentsLoader_1 = require("./useSegmentsLoader");
5
+ Object.defineProperty(exports, "useSegmentsLoader", { enumerable: true, get: function () { return useSegmentsLoader_1.useSegmentsLoader; } });
@@ -0,0 +1,15 @@
1
+ import { NewSegment, SegmentationFilters, SortingField } from '@reltio/mdm-sdk';
2
+ import { RequestStates } from '../../types';
3
+ type Props = {
4
+ sorting?: SortingField;
5
+ rowsPerPage: number;
6
+ page: number;
7
+ filters?: SegmentationFilters;
8
+ };
9
+ export declare const useSegmentsLoader: ({ sorting, rowsPerPage, page, filters }: Props) => {
10
+ state: RequestStates;
11
+ segments: NewSegment[];
12
+ total: number;
13
+ reload: () => Promise<void>;
14
+ };
15
+ export {};
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
13
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.useSegmentsLoader = void 0;
40
+ var react_1 = require("react");
41
+ var ramda_1 = require("ramda");
42
+ var mdm_sdk_1 = require("@reltio/mdm-sdk");
43
+ var types_1 = require("../../types");
44
+ var segments_1 = require("../../helpers/segments");
45
+ var PageRequestsAbortingContext_1 = require("../../contexts/PageRequestsAbortingContext");
46
+ var useSegmentsLoader = function (_a) {
47
+ var sorting = _a.sorting, rowsPerPage = _a.rowsPerPage, page = _a.page, filters = _a.filters;
48
+ var signal = (0, react_1.useContext)(PageRequestsAbortingContext_1.PageRequestsAbortingContext);
49
+ var _b = (0, react_1.useState)(types_1.RequestStates.INIT), requestState = _b[0], setRequestState = _b[1];
50
+ var _c = (0, react_1.useState)([]), segments = _c[0], setSegments = _c[1];
51
+ var _d = (0, react_1.useState)(0), total = _d[0], setTotal = _d[1];
52
+ var _e = sorting || {}, sort = _e.field, order = _e.order;
53
+ var filterString = (0, segments_1.buildSegmentsFilterString)(filters);
54
+ var params = (0, react_1.useMemo)(function () {
55
+ return (0, ramda_1.reject)(mdm_sdk_1.isEmptyValue, {
56
+ signal: signal,
57
+ sort: sort,
58
+ order: order,
59
+ max: rowsPerPage,
60
+ offset: page * rowsPerPage,
61
+ filter: filterString
62
+ });
63
+ }, [sort, order, rowsPerPage, page, filterString, signal]);
64
+ var loadRequest = (0, react_1.useCallback)(function () { return __awaiter(void 0, void 0, void 0, function () {
65
+ var response, error_1;
66
+ return __generator(this, function (_a) {
67
+ switch (_a.label) {
68
+ case 0:
69
+ setRequestState(types_1.RequestStates.LOADING);
70
+ _a.label = 1;
71
+ case 1:
72
+ _a.trys.push([1, 3, , 4]);
73
+ return [4 /*yield*/, (0, mdm_sdk_1.getSegments)(params)];
74
+ case 2:
75
+ response = _a.sent();
76
+ setSegments(response.segments || []);
77
+ setTotal(response.total);
78
+ setRequestState(types_1.RequestStates.LOADED);
79
+ return [3 /*break*/, 4];
80
+ case 3:
81
+ error_1 = _a.sent();
82
+ console.warn(error_1);
83
+ if (!(0, mdm_sdk_1.isAbortError)(error_1)) {
84
+ setSegments([]);
85
+ setTotal(0);
86
+ }
87
+ setRequestState(types_1.RequestStates.ERROR);
88
+ return [3 /*break*/, 4];
89
+ case 4: return [2 /*return*/];
90
+ }
91
+ });
92
+ }); }, [params]);
93
+ (0, react_1.useEffect)(function () {
94
+ loadRequest();
95
+ }, [loadRequest]);
96
+ return {
97
+ state: requestState,
98
+ segments: segments,
99
+ total: total,
100
+ reload: loadRequest
101
+ };
102
+ };
103
+ exports.useSegmentsLoader = useSegmentsLoader;
@@ -0,0 +1 @@
1
+ export { useSegmentsSizesLoader } from './useSegmentsSizesLoader';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useSegmentsSizesLoader = void 0;
4
+ var useSegmentsSizesLoader_1 = require("./useSegmentsSizesLoader");
5
+ Object.defineProperty(exports, "useSegmentsSizesLoader", { enumerable: true, get: function () { return useSegmentsSizesLoader_1.useSegmentsSizesLoader; } });
@@ -0,0 +1,6 @@
1
+ import { NewSegment } from '@reltio/mdm-sdk';
2
+ type SegmentsSizes = {
3
+ [id: string]: number;
4
+ };
5
+ export declare const useSegmentsSizesLoader: (segments: NewSegment[]) => SegmentsSizes;
6
+ export {};
@@ -1,3 +1,15 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
1
13
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
14
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
15
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -34,14 +46,41 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
34
46
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
47
  }
36
48
  };
37
- export var getAudienceCount = function (segments) { return __awaiter(void 0, void 0, void 0, function () {
38
- return __generator(this, function (_a) {
39
- return [2 /*return*/, segments.reduce(function (acc, segment) {
40
- acc[segment.uri] = {
41
- isLoading: false,
42
- count: Math.floor(Math.random() * 100000)
43
- };
44
- return acc;
45
- }, {})];
46
- });
47
- }); };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.useSegmentsSizesLoader = void 0;
51
+ var react_1 = require("react");
52
+ var mdm_sdk_1 = require("@reltio/mdm-sdk");
53
+ var PageRequestsAbortingContext_1 = require("../../contexts/PageRequestsAbortingContext");
54
+ var useSegmentsSizesLoader = function (segments) {
55
+ var _a = (0, react_1.useState)({}), segmentsSizes = _a[0], setSegmentsSizes = _a[1];
56
+ var signal = (0, react_1.useContext)(PageRequestsAbortingContext_1.PageRequestsAbortingContext);
57
+ (0, react_1.useEffect)(function () {
58
+ segments.forEach(function (segment) { return __awaiter(void 0, void 0, void 0, function () {
59
+ var total_1, _a;
60
+ return __generator(this, function (_b) {
61
+ switch (_b.label) {
62
+ case 0:
63
+ _b.trys.push([0, 2, , 3]);
64
+ return [4 /*yield*/, (0, mdm_sdk_1.getSegmentTotal)({ segmentId: segment.id, signal: signal })];
65
+ case 1:
66
+ total_1 = (_b.sent()).total;
67
+ setSegmentsSizes(function (prevSegmentsSize) {
68
+ var _a;
69
+ return __assign(__assign({}, prevSegmentsSize), (_a = {}, _a[segment.id] = total_1, _a));
70
+ });
71
+ return [3 /*break*/, 3];
72
+ case 2:
73
+ _a = _b.sent();
74
+ setSegmentsSizes(function (prevSegmentsSize) {
75
+ var _a;
76
+ return __assign(__assign({}, prevSegmentsSize), (_a = {}, _a[segment.id] = null, _a));
77
+ });
78
+ return [3 /*break*/, 3];
79
+ case 3: return [2 /*return*/];
80
+ }
81
+ });
82
+ }); });
83
+ }, [segments, signal]);
84
+ return segmentsSizes;
85
+ };
86
+ exports.useSegmentsSizesLoader = useSegmentsSizesLoader;
package/cjs/index.d.ts CHANGED
@@ -274,6 +274,7 @@ export { useSegmentationRequest } from './hooks/useSegmentationRequest';
274
274
  export { useFilterAutoFocus } from './hooks/useFilterAutoFocus';
275
275
  export { useDynamicYAxisWidth } from './hooks/useDynamicYAxisWidth';
276
276
  export { useDndBasicTableScrollModifier } from './hooks/useDndBasicTableScrollModifier';
277
+ export { useSegmentsLoader } from './hooks/useSegmentsLoader';
277
278
  export { buildColumnsFilter, buildColumnsSizeById, columnFilterToMdmFilter, defaultGetRowCellHeight, defaultRenderRowCell } from './helpers/basicTable';
278
279
  export { enrichDataWithPercents } from './helpers/charts';
279
280
  export { showDefaultErrorMessage, showErrorMessage } from './helpers/errors';
@@ -285,7 +286,7 @@ export { getNestedPathByColumnId, getAttributeHeight, getAttrPathFromColumnId }
285
286
  export type { AttributeFiltersComponentProps } from './AttributesFiltersBuilder';
286
287
  export type { ChartData } from './types/charts';
287
288
  export type { AddInlineAttributeEvent, DeleteInlineAttributeEvent, EditInlineAttributeEvent, IgnoreInlineAttributeEvent, PinInlineAttributeEvent } from './types/inlineAttributes';
288
- export type { ColumnData, ColumnSize, ColumnFilter, Sorting, GroupedColumnsData, GroupedColumns, RenderRowCellProps, RowId, ElementsRowsData, TableRowsData, RowValue, DraggableProps } from './types/basicTable';
289
+ export type { ColumnData, ColumnSize, ColumnFilter, GroupedColumnsData, GroupedColumns, RenderRowCellProps, RowId, ElementsRowsData, TableRowsData, RowValue, DraggableProps } from './types/basicTable';
289
290
  export * from './types/preferences';
290
291
  export * from './types';
291
292
  export * from './constants';
package/cjs/index.js CHANGED
@@ -20,7 +20,7 @@ exports.Popper = exports.MultipleInput = exports.ModeSwitcherSelect = exports.Mo
20
20
  exports.withCollapseButton = exports.withTableContext = exports.withFilterAtBottom = exports.withPercents = exports.withContext = exports.withDateRangeSelector = exports.withDragHandle = exports.withAsyncMount = exports.withTooltip = exports.DefaultHeadCellRendererWithTooltip = exports.LazyRenderer = exports.MetadataTypesSelector = exports.DateRangeSelector = exports.UpSetChart = exports.GaugeChart = exports.RelationEditor = exports.ReltioMap = exports.Marginator = exports.LightArrowTooltip = exports.ScrollableTabs = exports.VirtualGroupedList = exports.ViewMoreToggle = exports.VerticalHeadingsTable = exports.VerticalDivider = exports.AttributeTitle = exports.Spacer = exports.SimpleDropDownSelector = exports.SidePanelContentHeader = exports.SidePanel = exports.SidePanelEmptyState = exports.SideButtonsPanel = exports.SelectorWithOnlyOptionAutoSelect = exports.SelectionPopup = exports.WhiteSearchInput = exports.SearchInput = exports.ProfileResizablePanes = exports.ResizablePanes = exports.ReltioGridLayout = exports.RCTreeSwitchRenderer = exports.RCTreeLevelLines = exports.RCTree = exports.reactSortableTreeHelpers = exports.ReactSortableTree = exports.MultiSelect = exports.QueryBuilderRowsGroup = exports.QueryBuilderRow = exports.ProfileCard = exports.ProfileBand = exports.PotentialMatchReviewCard = exports.PopupWithArrow = void 0;
21
21
  exports.ConfigPermissionsContext = exports.useActionsHook = exports.ActionsHookProvider = exports.PageRequestsAbortingContext = exports.DependentLookupAutopopulationContext = exports.FeaturesContext = exports.LabelsContext = exports.UrlGeneratorsContext = exports.isHighlightedAttributeType = exports.isHighlightedErrorType = exports.ScrollType = exports.ScrollToElementProvider = exports.ScrollToElementContext = exports.SearchValueContext = exports.InterceptHandlersContext = exports.HighlightedValuesContext = exports.SnackbarContext = exports.SearchFiltersContext = exports.useReloadFacet = exports.ReloadFacetProvider = exports.useReloadAllFacets = exports.SandboxAPIContext = exports.EntityContext = exports.RelatedObjectUrisContext = exports.WorkflowTasksContext = exports.useEntityLoadingIndication = exports.EntityLoadingIndicationProvider = exports.EntityMarkerContext = exports.useAttributeExpanded = exports.ExpandedAttributesProvider = exports.useHighlightedCrosswalks = exports.useCrosswalkHighlight = exports.useCrosswalkFocus = exports.useCrosswalkColor = exports.CrosswalksDisplayProvider = exports.EntitiesMapContext = exports.IdContext = exports.ProfilePerspectiveViewContext = exports.usePerspectivesSettings = exports.PerspectivesSettingsContext = exports.PivotingAttributeContext = exports.UsersContext = exports.InitialCollaborationContextValue = exports.CollaborationContextProvider = exports.CollaborationContext = exports.BlockImageGalleryDialogContext = exports.PopupBoundariesContext = exports.HistoryDiffContext = exports.AsyncMountContext = exports.MdmModuleProvider = void 0;
22
22
  exports.useClickableStyle = exports.BasicTableCellRenderer = exports.useBasicTableCellRenderer = exports.useHiddenAttributes = exports.useSavedSearchesRequest = exports.useRequestDCRReview = exports.useAutoFocus = exports.useExpandInvalidRelations = exports.useLayoutResetter = exports.useIsMountedRef = exports.useSnackbar = exports.useSavedStateForEntityType = exports.useReadableSearchState = exports.useEditableConnection = exports.useCustomScripts = exports.useMarkAsNotMatchRequest = exports.useMergeAllRequest = exports.usePagingSimulator = exports.useMatchesLoader = exports.useConfigPermissions = exports.useWhyDidYouUpdate = exports.useUsers = exports.useSavedState = exports.useSafePromise = exports.useRunOnceAfterValueInitialization = exports.useRelationsLoader = exports.useRelationTypeSelector = exports.usePrevious = exports.useDidUpdateEffect = exports.useCommentsEntitiesMap = exports.useCollaboration = exports.useAsyncMount = exports.useAPI = exports.useActions = exports.useMatchesColumnsData = exports.useScrollToAttributeError = exports.ThemeProvider = exports.ProfileTablesContext = exports.HiddenAttributesContext = exports.BasicTableContext = exports.BasicTableRowCollapseContext = exports.useDeleteUnmaskedAttributeForRelation = exports.useUnmaskedAttributeValue = exports.useUnmaskAttributeValue = exports.useMaskAttributeValue = exports.MaskedAttributesProvider = exports.useReloadData = exports.ReloadDataProvider = exports.useAttributeValueConfigPermissions = exports.ConfigPermissionsContextProvider = void 0;
23
- exports.mockComputedStyles = exports.FakeMouseEvent = exports.rerenderWrapper = exports.mockElementSizes = exports.fixClicksOnResizablePanes = exports.mockBasicTableSizing = exports.getMuiIconsByName = exports.getMuiIconByName = exports.deepFreeze = exports.awaitMockPromises = exports.TestStylesProvider = exports.TestPerspectivesSettingsProvider = exports.getAttrPathFromColumnId = exports.getAttributeHeight = exports.getNestedPathByColumnId = exports.applyCompactValuesCountConstraint = exports.getAttributeSelectorItems = exports.mergeClasses = exports.isControlOrCommandPressed = exports.getValue = exports.getChecked = exports.showErrorMessage = exports.showDefaultErrorMessage = exports.enrichDataWithPercents = exports.defaultRenderRowCell = exports.defaultGetRowCellHeight = exports.columnFilterToMdmFilter = exports.buildColumnsSizeById = exports.buildColumnsFilter = exports.useDndBasicTableScrollModifier = exports.useDynamicYAxisWidth = exports.useFilterAutoFocus = exports.useSegmentationRequest = exports.resolveMarkers = exports.useMarkers = exports.useMaskedAttribute = exports.useKeyboardNavigation = exports.useDynamicRowCellHeight = void 0;
23
+ exports.mockComputedStyles = exports.FakeMouseEvent = exports.rerenderWrapper = exports.mockElementSizes = exports.fixClicksOnResizablePanes = exports.mockBasicTableSizing = exports.getMuiIconsByName = exports.getMuiIconByName = exports.deepFreeze = exports.awaitMockPromises = exports.TestStylesProvider = exports.TestPerspectivesSettingsProvider = exports.getAttrPathFromColumnId = exports.getAttributeHeight = exports.getNestedPathByColumnId = exports.applyCompactValuesCountConstraint = exports.getAttributeSelectorItems = exports.mergeClasses = exports.isControlOrCommandPressed = exports.getValue = exports.getChecked = exports.showErrorMessage = exports.showDefaultErrorMessage = exports.enrichDataWithPercents = exports.defaultRenderRowCell = exports.defaultGetRowCellHeight = exports.columnFilterToMdmFilter = exports.buildColumnsSizeById = exports.buildColumnsFilter = exports.useSegmentsLoader = exports.useDndBasicTableScrollModifier = exports.useDynamicYAxisWidth = exports.useFilterAutoFocus = exports.useSegmentationRequest = exports.resolveMarkers = exports.useMarkers = exports.useMaskedAttribute = exports.useKeyboardNavigation = exports.useDynamicRowCellHeight = void 0;
24
24
  // components
25
25
  var ActionButton_1 = require("./ActionButton");
26
26
  Object.defineProperty(exports, "ActionButton", { enumerable: true, get: function () { return ActionButton_1.ActionButton; } });
@@ -609,6 +609,8 @@ var useDynamicYAxisWidth_1 = require("./hooks/useDynamicYAxisWidth");
609
609
  Object.defineProperty(exports, "useDynamicYAxisWidth", { enumerable: true, get: function () { return useDynamicYAxisWidth_1.useDynamicYAxisWidth; } });
610
610
  var useDndBasicTableScrollModifier_1 = require("./hooks/useDndBasicTableScrollModifier");
611
611
  Object.defineProperty(exports, "useDndBasicTableScrollModifier", { enumerable: true, get: function () { return useDndBasicTableScrollModifier_1.useDndBasicTableScrollModifier; } });
612
+ var useSegmentsLoader_1 = require("./hooks/useSegmentsLoader");
613
+ Object.defineProperty(exports, "useSegmentsLoader", { enumerable: true, get: function () { return useSegmentsLoader_1.useSegmentsLoader; } });
612
614
  // helpers
613
615
  var basicTable_1 = require("./helpers/basicTable");
614
616
  Object.defineProperty(exports, "buildColumnsFilter", { enumerable: true, get: function () { return basicTable_1.buildColumnsFilter; } });
@@ -1,11 +1,7 @@
1
1
  import React from 'react';
2
- import { DataTypeDefinition, SearchValue, SortOrder } from '@reltio/mdm-sdk';
2
+ import { DataTypeDefinition, SearchValue } from '@reltio/mdm-sdk';
3
3
  import { useCollapsibleTableRows } from '../hooks/useCollapsibleTableRows';
4
4
  import { DraggableAttributes } from '@dnd-kit/core';
5
- export type Sorting = {
6
- field: string;
7
- order: SortOrder;
8
- };
9
5
  export type ColumnFilter = {
10
6
  filter: string;
11
7
  value?: SearchValue;
@@ -0,0 +1 @@
1
+ export declare const buildSegmentsFilterString: any;
@@ -0,0 +1,34 @@
1
+ import { cond, defaultTo, equals, join, map, pipe, reject, toPairs } from 'ramda';
2
+ import { isEmptyValue, wrapInBrackets, multiValueFilter } from '@reltio/mdm-sdk';
3
+ var buildFavoriteFilterClause = function (value) {
4
+ return value ? "equals(favorite, 'true')" : '';
5
+ };
6
+ var buildOwnerFilterClause = function (user) {
7
+ return "equals(owner, '".concat(user, "')");
8
+ };
9
+ var buildStatusFilterClause = function (status) {
10
+ return "equals(status, '".concat(status, "')");
11
+ };
12
+ var buildSharingFilterClause = function (value) {
13
+ return "equals(sharing, '".concat(value, "')");
14
+ };
15
+ var buildDestinationFilterClause = function (value) {
16
+ return "equals(integrationIDs, '".concat(value, "')");
17
+ };
18
+ var buildSearchValueFilterClause = function (value) {
19
+ return "contains(label, '".concat(value, "')");
20
+ };
21
+ var getFilterClauseBuilder = cond([
22
+ [equals('showFavorite'), function () { return buildFavoriteFilterClause; }],
23
+ [equals('ownedBy'), function () { return buildOwnerFilterClause; }],
24
+ [equals('statuses'), function () { return multiValueFilter(buildStatusFilterClause); }],
25
+ [equals('createdBy'), function () { return multiValueFilter(buildOwnerFilterClause); }],
26
+ [equals('sharedWith'), function () { return multiValueFilter(buildSharingFilterClause); }],
27
+ [equals('destinations'), function () { return multiValueFilter(buildDestinationFilterClause); }],
28
+ [equals('searchValue'), function () { return buildSearchValueFilterClause; }]
29
+ ]);
30
+ export var buildSegmentsFilterString = pipe(defaultTo({}), reject(isEmptyValue), toPairs, map(function (_a) {
31
+ var _b;
32
+ var key = _a[0], value = _a[1];
33
+ return (_b = getFilterClauseBuilder(key)) === null || _b === void 0 ? void 0 : _b(value);
34
+ }), reject(isEmptyValue), map(wrapInBrackets), join(' and '));
@@ -1,9 +1,6 @@
1
- import { ActivityFilter, Entity, Mode, RelationsViewConfig, RelationsTableViewConfig } from '@reltio/mdm-sdk';
1
+ import { ActivityFilter, Entity, Mode, RelationsViewConfig, RelationsTableViewConfig, SortingField } from '@reltio/mdm-sdk';
2
2
  type Props = {
3
- sorting?: {
4
- field: string;
5
- order: string;
6
- };
3
+ sorting?: SortingField;
7
4
  filter?: string;
8
5
  page: number;
9
6
  rowsPerPage: number;
@@ -0,0 +1 @@
1
+ export { useSegmentsLoader } from './useSegmentsLoader';
@@ -0,0 +1 @@
1
+ export { useSegmentsLoader } from './useSegmentsLoader';
@@ -0,0 +1,15 @@
1
+ import { NewSegment, SegmentationFilters, SortingField } from '@reltio/mdm-sdk';
2
+ import { RequestStates } from '../../types';
3
+ type Props = {
4
+ sorting?: SortingField;
5
+ rowsPerPage: number;
6
+ page: number;
7
+ filters?: SegmentationFilters;
8
+ };
9
+ export declare const useSegmentsLoader: ({ sorting, rowsPerPage, page, filters }: Props) => {
10
+ state: RequestStates;
11
+ segments: NewSegment[];
12
+ total: number;
13
+ reload: () => Promise<void>;
14
+ };
15
+ export {};
@@ -0,0 +1,99 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
12
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import { useCallback, useContext, useEffect, useMemo, useState } from 'react';
38
+ import { reject } from 'ramda';
39
+ import { getSegments, isAbortError, isEmptyValue } from '@reltio/mdm-sdk';
40
+ import { RequestStates } from '../../types';
41
+ import { buildSegmentsFilterString } from '../../helpers/segments';
42
+ import { PageRequestsAbortingContext } from '../../contexts/PageRequestsAbortingContext';
43
+ export var useSegmentsLoader = function (_a) {
44
+ var sorting = _a.sorting, rowsPerPage = _a.rowsPerPage, page = _a.page, filters = _a.filters;
45
+ var signal = useContext(PageRequestsAbortingContext);
46
+ var _b = useState(RequestStates.INIT), requestState = _b[0], setRequestState = _b[1];
47
+ var _c = useState([]), segments = _c[0], setSegments = _c[1];
48
+ var _d = useState(0), total = _d[0], setTotal = _d[1];
49
+ var _e = sorting || {}, sort = _e.field, order = _e.order;
50
+ var filterString = buildSegmentsFilterString(filters);
51
+ var params = useMemo(function () {
52
+ return reject(isEmptyValue, {
53
+ signal: signal,
54
+ sort: sort,
55
+ order: order,
56
+ max: rowsPerPage,
57
+ offset: page * rowsPerPage,
58
+ filter: filterString
59
+ });
60
+ }, [sort, order, rowsPerPage, page, filterString, signal]);
61
+ var loadRequest = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
62
+ var response, error_1;
63
+ return __generator(this, function (_a) {
64
+ switch (_a.label) {
65
+ case 0:
66
+ setRequestState(RequestStates.LOADING);
67
+ _a.label = 1;
68
+ case 1:
69
+ _a.trys.push([1, 3, , 4]);
70
+ return [4 /*yield*/, getSegments(params)];
71
+ case 2:
72
+ response = _a.sent();
73
+ setSegments(response.segments || []);
74
+ setTotal(response.total);
75
+ setRequestState(RequestStates.LOADED);
76
+ return [3 /*break*/, 4];
77
+ case 3:
78
+ error_1 = _a.sent();
79
+ console.warn(error_1);
80
+ if (!isAbortError(error_1)) {
81
+ setSegments([]);
82
+ setTotal(0);
83
+ }
84
+ setRequestState(RequestStates.ERROR);
85
+ return [3 /*break*/, 4];
86
+ case 4: return [2 /*return*/];
87
+ }
88
+ });
89
+ }); }, [params]);
90
+ useEffect(function () {
91
+ loadRequest();
92
+ }, [loadRequest]);
93
+ return {
94
+ state: requestState,
95
+ segments: segments,
96
+ total: total,
97
+ reload: loadRequest
98
+ };
99
+ };
@@ -0,0 +1 @@
1
+ export { useSegmentsSizesLoader } from './useSegmentsSizesLoader';
@@ -0,0 +1 @@
1
+ export { useSegmentsSizesLoader } from './useSegmentsSizesLoader';
@@ -0,0 +1,6 @@
1
+ import { NewSegment } from '@reltio/mdm-sdk';
2
+ type SegmentsSizes = {
3
+ [id: string]: number;
4
+ };
5
+ export declare const useSegmentsSizesLoader: (segments: NewSegment[]) => SegmentsSizes;
6
+ export {};
@@ -1,4 +1,14 @@
1
- "use strict";
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
2
12
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
13
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
14
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -35,17 +45,38 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
35
45
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
46
  }
37
47
  };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.getAudienceCount = void 0;
40
- var getAudienceCount = function (segments) { return __awaiter(void 0, void 0, void 0, function () {
41
- return __generator(this, function (_a) {
42
- return [2 /*return*/, segments.reduce(function (acc, segment) {
43
- acc[segment.uri] = {
44
- isLoading: false,
45
- count: Math.floor(Math.random() * 100000)
46
- };
47
- return acc;
48
- }, {})];
49
- });
50
- }); };
51
- exports.getAudienceCount = getAudienceCount;
48
+ import { useContext, useEffect, useState } from 'react';
49
+ import { getSegmentTotal } from '@reltio/mdm-sdk';
50
+ import { PageRequestsAbortingContext } from '../../contexts/PageRequestsAbortingContext';
51
+ export var useSegmentsSizesLoader = function (segments) {
52
+ var _a = useState({}), segmentsSizes = _a[0], setSegmentsSizes = _a[1];
53
+ var signal = useContext(PageRequestsAbortingContext);
54
+ useEffect(function () {
55
+ segments.forEach(function (segment) { return __awaiter(void 0, void 0, void 0, function () {
56
+ var total_1, _a;
57
+ return __generator(this, function (_b) {
58
+ switch (_b.label) {
59
+ case 0:
60
+ _b.trys.push([0, 2, , 3]);
61
+ return [4 /*yield*/, getSegmentTotal({ segmentId: segment.id, signal: signal })];
62
+ case 1:
63
+ total_1 = (_b.sent()).total;
64
+ setSegmentsSizes(function (prevSegmentsSize) {
65
+ var _a;
66
+ return __assign(__assign({}, prevSegmentsSize), (_a = {}, _a[segment.id] = total_1, _a));
67
+ });
68
+ return [3 /*break*/, 3];
69
+ case 2:
70
+ _a = _b.sent();
71
+ setSegmentsSizes(function (prevSegmentsSize) {
72
+ var _a;
73
+ return __assign(__assign({}, prevSegmentsSize), (_a = {}, _a[segment.id] = null, _a));
74
+ });
75
+ return [3 /*break*/, 3];
76
+ case 3: return [2 /*return*/];
77
+ }
78
+ });
79
+ }); });
80
+ }, [segments, signal]);
81
+ return segmentsSizes;
82
+ };
package/index.d.ts CHANGED
@@ -274,6 +274,7 @@ export { useSegmentationRequest } from './hooks/useSegmentationRequest';
274
274
  export { useFilterAutoFocus } from './hooks/useFilterAutoFocus';
275
275
  export { useDynamicYAxisWidth } from './hooks/useDynamicYAxisWidth';
276
276
  export { useDndBasicTableScrollModifier } from './hooks/useDndBasicTableScrollModifier';
277
+ export { useSegmentsLoader } from './hooks/useSegmentsLoader';
277
278
  export { buildColumnsFilter, buildColumnsSizeById, columnFilterToMdmFilter, defaultGetRowCellHeight, defaultRenderRowCell } from './helpers/basicTable';
278
279
  export { enrichDataWithPercents } from './helpers/charts';
279
280
  export { showDefaultErrorMessage, showErrorMessage } from './helpers/errors';
@@ -285,7 +286,7 @@ export { getNestedPathByColumnId, getAttributeHeight, getAttrPathFromColumnId }
285
286
  export type { AttributeFiltersComponentProps } from './AttributesFiltersBuilder';
286
287
  export type { ChartData } from './types/charts';
287
288
  export type { AddInlineAttributeEvent, DeleteInlineAttributeEvent, EditInlineAttributeEvent, IgnoreInlineAttributeEvent, PinInlineAttributeEvent } from './types/inlineAttributes';
288
- export type { ColumnData, ColumnSize, ColumnFilter, Sorting, GroupedColumnsData, GroupedColumns, RenderRowCellProps, RowId, ElementsRowsData, TableRowsData, RowValue, DraggableProps } from './types/basicTable';
289
+ export type { ColumnData, ColumnSize, ColumnFilter, GroupedColumnsData, GroupedColumns, RenderRowCellProps, RowId, ElementsRowsData, TableRowsData, RowValue, DraggableProps } from './types/basicTable';
289
290
  export * from './types/preferences';
290
291
  export * from './types';
291
292
  export * from './constants';
package/index.js CHANGED
@@ -277,6 +277,7 @@ export { useSegmentationRequest } from './hooks/useSegmentationRequest';
277
277
  export { useFilterAutoFocus } from './hooks/useFilterAutoFocus';
278
278
  export { useDynamicYAxisWidth } from './hooks/useDynamicYAxisWidth';
279
279
  export { useDndBasicTableScrollModifier } from './hooks/useDndBasicTableScrollModifier';
280
+ export { useSegmentsLoader } from './hooks/useSegmentsLoader';
280
281
  // helpers
281
282
  export { buildColumnsFilter, buildColumnsSizeById, columnFilterToMdmFilter, defaultGetRowCellHeight, defaultRenderRowCell } from './helpers/basicTable';
282
283
  export { enrichDataWithPercents } from './helpers/charts';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reltio/components",
3
- "version": "1.4.2095",
3
+ "version": "1.4.2099",
4
4
  "license": "SEE LICENSE IN LICENSE FILE",
5
5
  "main": "./cjs/index.js",
6
6
  "module": "./index.js",
@@ -11,7 +11,7 @@
11
11
  "@fluentui/react-context-selector": "^9.1.26",
12
12
  "@googlemaps/markerclusterer": "^2.5.3",
13
13
  "@react-sigma/core": "3.4.0",
14
- "@reltio/mdm-sdk": "^1.4.1933",
14
+ "@reltio/mdm-sdk": "^1.4.1937",
15
15
  "@vis.gl/react-google-maps": "^1.3.0",
16
16
  "d3-cloud": "^1.2.5",
17
17
  "d3-geo": "^2.0.1",
@@ -28,7 +28,7 @@
28
28
  "react-dnd-html5-backend": "^10.0.2",
29
29
  "react-grid-layout": "1.4.2",
30
30
  "react-lifecycles-compat": "^3.0.4",
31
- "react-mentions": "4.3.0",
31
+ "react-mentions": "^4.3.0",
32
32
  "react-number-format": "^4.9.2",
33
33
  "react-resizable-panels": "^2.0.20",
34
34
  "react-router-dom": "^6.2.1",
@@ -1,11 +1,7 @@
1
1
  import React from 'react';
2
- import { DataTypeDefinition, SearchValue, SortOrder } from '@reltio/mdm-sdk';
2
+ import { DataTypeDefinition, SearchValue } from '@reltio/mdm-sdk';
3
3
  import { useCollapsibleTableRows } from '../hooks/useCollapsibleTableRows';
4
4
  import { DraggableAttributes } from '@dnd-kit/core';
5
- export type Sorting = {
6
- field: string;
7
- order: SortOrder;
8
- };
9
5
  export type ColumnFilter = {
10
6
  filter: string;
11
7
  value?: SearchValue;
@@ -1,2 +0,0 @@
1
- import { Segment } from '@reltio/mdm-sdk';
2
- export declare const getAudienceCount: (segments: Segment[]) => Promise<{}>;
@@ -1 +0,0 @@
1
- export { useSegmentsRequest } from './useSegmentsRequest';
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useSegmentsRequest = void 0;
4
- var useSegmentsRequest_1 = require("./useSegmentsRequest");
5
- Object.defineProperty(exports, "useSegmentsRequest", { enumerable: true, get: function () { return useSegmentsRequest_1.useSegmentsRequest; } });
@@ -1,42 +0,0 @@
1
- import { SavedSearchesOptions, SavedSearchType, SortOrder } from '@reltio/mdm-sdk';
2
- import { RequestStates } from '../../types';
3
- type Props = {
4
- options?: SavedSearchesOptions;
5
- defaultRowsPerPage: number;
6
- };
7
- export declare const useSegmentsRequest: ({ options, defaultRowsPerPage }: Props) => {
8
- data: {
9
- uri: string;
10
- name: string;
11
- description?: string;
12
- query: string;
13
- isFavorite: boolean;
14
- uiState: Record<string, any>;
15
- createDate: number;
16
- updateDate: number;
17
- isPublic: boolean;
18
- count: number;
19
- owner: string;
20
- type: SavedSearchType;
21
- isLoadingTotal?: boolean;
22
- }[];
23
- total: number;
24
- page: number;
25
- rowsPerPage: number;
26
- audienceCountMap: Record<string, {
27
- isLoading?: boolean;
28
- count?: number;
29
- }>;
30
- loadingState: RequestStates;
31
- reload: () => void;
32
- updateRowsPerPage: import("react").Dispatch<import("react").SetStateAction<number>>;
33
- updatePage: import("react").Dispatch<import("react").SetStateAction<number>>;
34
- loadSegments: () => Promise<void>;
35
- nameSortOrder: SortOrder;
36
- setNameSortOrder: import("react").Dispatch<import("react").SetStateAction<SortOrder>>;
37
- favoriteOnly: boolean;
38
- setFavoriteOnly: import("react").Dispatch<import("react").SetStateAction<boolean>>;
39
- containsWordStartingWith: string;
40
- setContainsWordStartingWith: import("react").Dispatch<import("react").SetStateAction<string>>;
41
- };
42
- export {};
@@ -1,146 +0,0 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
- return new (P || (P = Promise))(function (resolve, reject) {
16
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
- step((generator = generator.apply(thisArg, _arguments || [])).next());
20
- });
21
- };
22
- var __generator = (this && this.__generator) || function (thisArg, body) {
23
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
24
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
- function verb(n) { return function (v) { return step([n, v]); }; }
26
- function step(op) {
27
- if (f) throw new TypeError("Generator is already executing.");
28
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
- if (y = 0, t) op = [op[0] & 2, t.value];
31
- switch (op[0]) {
32
- case 0: case 1: t = op; break;
33
- case 4: _.label++; return { value: op[1], done: false };
34
- case 5: _.label++; y = op[1]; op = [0]; continue;
35
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
- default:
37
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
- if (t[2]) _.ops.pop();
42
- _.trys.pop(); continue;
43
- }
44
- op = body.call(thisArg, _);
45
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
- }
48
- };
49
- Object.defineProperty(exports, "__esModule", { value: true });
50
- exports.useSegmentsRequest = void 0;
51
- var react_1 = require("react");
52
- var ramda_1 = require("ramda");
53
- var PageRequestsAbortingContext_1 = require("../../contexts/PageRequestsAbortingContext");
54
- var mdm_sdk_1 = require("@reltio/mdm-sdk");
55
- var helper_1 = require("./helper");
56
- var types_1 = require("../../types");
57
- var useSegmentsRequest = function (_a) {
58
- var options = _a.options, defaultRowsPerPage = _a.defaultRowsPerPage;
59
- var _b = (0, react_1.useState)(0), page = _b[0], setPage = _b[1];
60
- var _c = (0, react_1.useState)(defaultRowsPerPage), rowsPerPage = _c[0], setRowsPerPage = _c[1];
61
- var _d = (0, react_1.useState)([]), data = _d[0], setData = _d[1];
62
- var _e = (0, react_1.useState)(0), total = _e[0], setTotal = _e[1];
63
- var _f = (0, react_1.useState)({}), audienceCountMap = _f[0], setAudienceCountMap = _f[1];
64
- var _g = (0, react_1.useState)(types_1.RequestStates.INIT), loadingState = _g[0], setLoadingState = _g[1];
65
- var _h = (0, react_1.useState)(null), nameSortOrder = _h[0], setNameSortOrder = _h[1];
66
- var _j = (0, react_1.useState)(false), favoriteOnly = _j[0], setFavoriteOnly = _j[1];
67
- var _k = (0, react_1.useState)(''), containsWordStartingWith = _k[0], setContainsWordStartingWith = _k[1];
68
- var signal = (0, react_1.useContext)(PageRequestsAbortingContext_1.PageRequestsAbortingContext);
69
- var allOptions = (0, react_1.useMemo)(function () { return (__assign(__assign({}, options), { containsWordStartingWith: containsWordStartingWith
70
- ? containsWordStartingWith
71
- : options === null || options === void 0 ? void 0 : options.containsWordStartingWith, sortBy: nameSortOrder ? 'NAME' : options === null || options === void 0 ? void 0 : options.sortBy, sortOrder: nameSortOrder ? nameSortOrder : options === null || options === void 0 ? void 0 : options.sortOrder, favoriteOnly: favoriteOnly ? favoriteOnly : options === null || options === void 0 ? void 0 : options.favoriteOnly, max: rowsPerPage, offset: rowsPerPage * page })); }, [options, page, rowsPerPage, containsWordStartingWith, nameSortOrder, favoriteOnly]);
72
- var loadSegments = (0, react_1.useCallback)(function () { return __awaiter(void 0, void 0, void 0, function () {
73
- var _a, _b, segments, total_1, audienceCountMap_1, error_1;
74
- return __generator(this, function (_c) {
75
- switch (_c.label) {
76
- case 0:
77
- setLoadingState(types_1.RequestStates.LOADING);
78
- _c.label = 1;
79
- case 1:
80
- _c.trys.push([1, 4, , 5]);
81
- return [4 /*yield*/, (0, mdm_sdk_1.getSavedSearches)(__assign(__assign({}, allOptions), { type: mdm_sdk_1.SavedSearchType.SEGMENTATION }), signal)];
82
- case 2:
83
- _a = _c.sent(), _b = _a.result, segments = _b === void 0 ? [] : _b, total_1 = _a.total;
84
- return [4 /*yield*/, (0, helper_1.getAudienceCount)(segments)];
85
- case 3:
86
- audienceCountMap_1 = _c.sent();
87
- setAudienceCountMap(audienceCountMap_1);
88
- setData(segments || []);
89
- setTotal(total_1);
90
- setLoadingState(types_1.RequestStates.LOADED);
91
- return [3 /*break*/, 5];
92
- case 4:
93
- error_1 = _c.sent();
94
- console.warn(error_1);
95
- if (!(0, mdm_sdk_1.isAbortError)(error_1)) {
96
- setLoadingState(types_1.RequestStates.ERROR);
97
- setData([]);
98
- }
99
- return [3 /*break*/, 5];
100
- case 5: return [2 /*return*/];
101
- }
102
- });
103
- }); }, [allOptions, signal]);
104
- var segmentsWithAudienceCount = (0, react_1.useMemo)(function () {
105
- return data.map(function (segment) {
106
- var _a;
107
- var _b = (_a = audienceCountMap[segment.uri]) !== null && _a !== void 0 ? _a : {}, count = _b.count, isLoading = _b.isLoading;
108
- var segmentWithAudienceCount = __assign({}, segment);
109
- if (!(0, ramda_1.isNil)(count))
110
- segmentWithAudienceCount.count = count;
111
- if (!(0, ramda_1.isNil)(isLoading))
112
- segmentWithAudienceCount.isLoadingTotal = isLoading;
113
- return segmentWithAudienceCount;
114
- });
115
- }, [data, audienceCountMap]);
116
- (0, react_1.useEffect)(function () {
117
- loadSegments();
118
- }, [loadSegments]);
119
- var reload = (0, react_1.useCallback)(function () {
120
- setPage(0);
121
- setRowsPerPage(defaultRowsPerPage);
122
- setNameSortOrder(null);
123
- setFavoriteOnly(false);
124
- setContainsWordStartingWith('');
125
- loadSegments();
126
- }, [defaultRowsPerPage, loadSegments]);
127
- return {
128
- data: segmentsWithAudienceCount,
129
- total: total,
130
- page: page,
131
- rowsPerPage: rowsPerPage,
132
- audienceCountMap: audienceCountMap,
133
- loadingState: loadingState,
134
- reload: reload,
135
- updateRowsPerPage: setRowsPerPage,
136
- updatePage: setPage,
137
- loadSegments: loadSegments,
138
- nameSortOrder: nameSortOrder,
139
- setNameSortOrder: setNameSortOrder,
140
- favoriteOnly: favoriteOnly,
141
- setFavoriteOnly: setFavoriteOnly,
142
- containsWordStartingWith: containsWordStartingWith,
143
- setContainsWordStartingWith: setContainsWordStartingWith
144
- };
145
- };
146
- exports.useSegmentsRequest = useSegmentsRequest;
@@ -1,2 +0,0 @@
1
- import { Segment } from '@reltio/mdm-sdk';
2
- export declare const getAudienceCount: (segments: Segment[]) => Promise<{}>;
@@ -1 +0,0 @@
1
- export { useSegmentsRequest } from './useSegmentsRequest';
@@ -1 +0,0 @@
1
- export { useSegmentsRequest } from './useSegmentsRequest';
@@ -1,42 +0,0 @@
1
- import { SavedSearchesOptions, SavedSearchType, SortOrder } from '@reltio/mdm-sdk';
2
- import { RequestStates } from '../../types';
3
- type Props = {
4
- options?: SavedSearchesOptions;
5
- defaultRowsPerPage: number;
6
- };
7
- export declare const useSegmentsRequest: ({ options, defaultRowsPerPage }: Props) => {
8
- data: {
9
- uri: string;
10
- name: string;
11
- description?: string;
12
- query: string;
13
- isFavorite: boolean;
14
- uiState: Record<string, any>;
15
- createDate: number;
16
- updateDate: number;
17
- isPublic: boolean;
18
- count: number;
19
- owner: string;
20
- type: SavedSearchType;
21
- isLoadingTotal?: boolean;
22
- }[];
23
- total: number;
24
- page: number;
25
- rowsPerPage: number;
26
- audienceCountMap: Record<string, {
27
- isLoading?: boolean;
28
- count?: number;
29
- }>;
30
- loadingState: RequestStates;
31
- reload: () => void;
32
- updateRowsPerPage: import("react").Dispatch<import("react").SetStateAction<number>>;
33
- updatePage: import("react").Dispatch<import("react").SetStateAction<number>>;
34
- loadSegments: () => Promise<void>;
35
- nameSortOrder: SortOrder;
36
- setNameSortOrder: import("react").Dispatch<import("react").SetStateAction<SortOrder>>;
37
- favoriteOnly: boolean;
38
- setFavoriteOnly: import("react").Dispatch<import("react").SetStateAction<boolean>>;
39
- containsWordStartingWith: string;
40
- setContainsWordStartingWith: import("react").Dispatch<import("react").SetStateAction<string>>;
41
- };
42
- export {};
@@ -1,142 +0,0 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
7
- }
8
- return t;
9
- };
10
- return __assign.apply(this, arguments);
11
- };
12
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
- return new (P || (P = Promise))(function (resolve, reject) {
15
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
- step((generator = generator.apply(thisArg, _arguments || [])).next());
19
- });
20
- };
21
- var __generator = (this && this.__generator) || function (thisArg, body) {
22
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
23
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
- function verb(n) { return function (v) { return step([n, v]); }; }
25
- function step(op) {
26
- if (f) throw new TypeError("Generator is already executing.");
27
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
29
- if (y = 0, t) op = [op[0] & 2, t.value];
30
- switch (op[0]) {
31
- case 0: case 1: t = op; break;
32
- case 4: _.label++; return { value: op[1], done: false };
33
- case 5: _.label++; y = op[1]; op = [0]; continue;
34
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
- default:
36
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
- if (t[2]) _.ops.pop();
41
- _.trys.pop(); continue;
42
- }
43
- op = body.call(thisArg, _);
44
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
- }
47
- };
48
- import { useCallback, useContext, useEffect, useMemo, useState } from 'react';
49
- import { isNil } from 'ramda';
50
- import { PageRequestsAbortingContext } from '../../contexts/PageRequestsAbortingContext';
51
- import { getSavedSearches, isAbortError, SavedSearchType } from '@reltio/mdm-sdk';
52
- import { getAudienceCount } from './helper';
53
- import { RequestStates } from '../../types';
54
- export var useSegmentsRequest = function (_a) {
55
- var options = _a.options, defaultRowsPerPage = _a.defaultRowsPerPage;
56
- var _b = useState(0), page = _b[0], setPage = _b[1];
57
- var _c = useState(defaultRowsPerPage), rowsPerPage = _c[0], setRowsPerPage = _c[1];
58
- var _d = useState([]), data = _d[0], setData = _d[1];
59
- var _e = useState(0), total = _e[0], setTotal = _e[1];
60
- var _f = useState({}), audienceCountMap = _f[0], setAudienceCountMap = _f[1];
61
- var _g = useState(RequestStates.INIT), loadingState = _g[0], setLoadingState = _g[1];
62
- var _h = useState(null), nameSortOrder = _h[0], setNameSortOrder = _h[1];
63
- var _j = useState(false), favoriteOnly = _j[0], setFavoriteOnly = _j[1];
64
- var _k = useState(''), containsWordStartingWith = _k[0], setContainsWordStartingWith = _k[1];
65
- var signal = useContext(PageRequestsAbortingContext);
66
- var allOptions = useMemo(function () { return (__assign(__assign({}, options), { containsWordStartingWith: containsWordStartingWith
67
- ? containsWordStartingWith
68
- : options === null || options === void 0 ? void 0 : options.containsWordStartingWith, sortBy: nameSortOrder ? 'NAME' : options === null || options === void 0 ? void 0 : options.sortBy, sortOrder: nameSortOrder ? nameSortOrder : options === null || options === void 0 ? void 0 : options.sortOrder, favoriteOnly: favoriteOnly ? favoriteOnly : options === null || options === void 0 ? void 0 : options.favoriteOnly, max: rowsPerPage, offset: rowsPerPage * page })); }, [options, page, rowsPerPage, containsWordStartingWith, nameSortOrder, favoriteOnly]);
69
- var loadSegments = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
70
- var _a, _b, segments, total_1, audienceCountMap_1, error_1;
71
- return __generator(this, function (_c) {
72
- switch (_c.label) {
73
- case 0:
74
- setLoadingState(RequestStates.LOADING);
75
- _c.label = 1;
76
- case 1:
77
- _c.trys.push([1, 4, , 5]);
78
- return [4 /*yield*/, getSavedSearches(__assign(__assign({}, allOptions), { type: SavedSearchType.SEGMENTATION }), signal)];
79
- case 2:
80
- _a = _c.sent(), _b = _a.result, segments = _b === void 0 ? [] : _b, total_1 = _a.total;
81
- return [4 /*yield*/, getAudienceCount(segments)];
82
- case 3:
83
- audienceCountMap_1 = _c.sent();
84
- setAudienceCountMap(audienceCountMap_1);
85
- setData(segments || []);
86
- setTotal(total_1);
87
- setLoadingState(RequestStates.LOADED);
88
- return [3 /*break*/, 5];
89
- case 4:
90
- error_1 = _c.sent();
91
- console.warn(error_1);
92
- if (!isAbortError(error_1)) {
93
- setLoadingState(RequestStates.ERROR);
94
- setData([]);
95
- }
96
- return [3 /*break*/, 5];
97
- case 5: return [2 /*return*/];
98
- }
99
- });
100
- }); }, [allOptions, signal]);
101
- var segmentsWithAudienceCount = useMemo(function () {
102
- return data.map(function (segment) {
103
- var _a;
104
- var _b = (_a = audienceCountMap[segment.uri]) !== null && _a !== void 0 ? _a : {}, count = _b.count, isLoading = _b.isLoading;
105
- var segmentWithAudienceCount = __assign({}, segment);
106
- if (!isNil(count))
107
- segmentWithAudienceCount.count = count;
108
- if (!isNil(isLoading))
109
- segmentWithAudienceCount.isLoadingTotal = isLoading;
110
- return segmentWithAudienceCount;
111
- });
112
- }, [data, audienceCountMap]);
113
- useEffect(function () {
114
- loadSegments();
115
- }, [loadSegments]);
116
- var reload = useCallback(function () {
117
- setPage(0);
118
- setRowsPerPage(defaultRowsPerPage);
119
- setNameSortOrder(null);
120
- setFavoriteOnly(false);
121
- setContainsWordStartingWith('');
122
- loadSegments();
123
- }, [defaultRowsPerPage, loadSegments]);
124
- return {
125
- data: segmentsWithAudienceCount,
126
- total: total,
127
- page: page,
128
- rowsPerPage: rowsPerPage,
129
- audienceCountMap: audienceCountMap,
130
- loadingState: loadingState,
131
- reload: reload,
132
- updateRowsPerPage: setRowsPerPage,
133
- updatePage: setPage,
134
- loadSegments: loadSegments,
135
- nameSortOrder: nameSortOrder,
136
- setNameSortOrder: setNameSortOrder,
137
- favoriteOnly: favoriteOnly,
138
- setFavoriteOnly: setFavoriteOnly,
139
- containsWordStartingWith: containsWordStartingWith,
140
- setContainsWordStartingWith: setContainsWordStartingWith
141
- };
142
- };