awing-library 2.1.125-beta → 2.1.126-beta

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 (127) hide show
  1. package/lib/ACM-AXN/Campaign/Container.js +2 -3
  2. package/lib/ACM-AXN/Campaign/CreateOrEdit/Recoils.js +3 -3
  3. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/AnalyticComponent.test.d.ts +1 -0
  4. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/AnalyticComponent.test.js +80 -0
  5. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/AnalyticContainer.test.d.ts +1 -0
  6. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/AnalyticContainer.test.js +49 -0
  7. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/ChartWithType.d.ts +13 -0
  8. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/ChartWithType.js +131 -0
  9. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/ChartWithType.test.d.ts +1 -0
  10. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/ChartWithType.test.js +67 -0
  11. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/ControlPanel.d.ts +2 -0
  12. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/ControlPanel.js +113 -0
  13. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/ControlPanel.test.d.ts +1 -0
  14. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/ControlPanel.test.js +27 -0
  15. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/DetailGroupBy.test.d.ts +1 -0
  16. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/DetailGroupBy.test.js +55 -0
  17. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/RowDetail.d.ts +7 -0
  18. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/RowDetail.js +28 -0
  19. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/RowDetail.test.d.ts +1 -0
  20. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/RowDetail.test.js +49 -0
  21. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/index.d.ts +2 -0
  22. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Detail/index.js +183 -0
  23. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Utils.d.ts +51 -0
  24. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/Utils.js +378 -0
  25. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/component.d.ts +14 -0
  26. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/component.js +77 -0
  27. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/container.d.ts +15 -0
  28. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/container.js +129 -0
  29. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/index.d.ts +1 -0
  30. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Analytic/index.js +8 -0
  31. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/ChartFilter.d.ts +12 -0
  32. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/ChartFilter.js +237 -0
  33. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/ChartFilter.test.d.ts +1 -0
  34. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/ChartFilter.test.js +84 -0
  35. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Context.d.ts +5 -0
  36. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Context.js +13 -0
  37. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/CustomerComponent.test.d.ts +1 -0
  38. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/CustomerComponent.test.js +53 -0
  39. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/CustomerContainer.test.d.ts +1 -0
  40. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/CustomerContainer.test.js +124 -0
  41. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/component.d.ts +14 -0
  42. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/component.js +127 -0
  43. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/container.d.ts +7 -0
  44. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/container.js +82 -0
  45. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/index.d.ts +1 -0
  46. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Customer/index.js +8 -0
  47. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/EventComponent.test.d.ts +1 -0
  48. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/EventComponent.test.js +91 -0
  49. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/EventContainer.test.d.ts +1 -0
  50. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/EventContainer.test.js +48 -0
  51. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/Table.d.ts +5 -0
  52. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/Table.js +29 -0
  53. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/Table.test.d.ts +1 -0
  54. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/Table.test.js +30 -0
  55. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/component.d.ts +13 -0
  56. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/component.js +166 -0
  57. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/container.d.ts +10 -0
  58. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/container.js +123 -0
  59. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/index.d.ts +1 -0
  60. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Event/index.js +8 -0
  61. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/SplitButtonExportType.d.ts +6 -0
  62. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/SplitButtonExportType.js +64 -0
  63. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/SplitButtonExportType.test.d.ts +1 -0
  64. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/SplitButtonExportType.test.js +26 -0
  65. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Types.d.ts +91 -0
  66. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Types.js +2 -0
  67. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Utils.d.ts +6 -0
  68. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/Utils.js +33 -0
  69. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/common.d.ts +6 -0
  70. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/common.js +9 -0
  71. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/component.d.ts +9 -0
  72. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/component.js +32 -0
  73. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/container.d.ts +8 -0
  74. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/container.js +94 -0
  75. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/fakeCampaignData.json +397 -0
  76. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/index.d.ts +1 -0
  77. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabStatistic/index.js +8 -0
  78. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AdDetail.test.js +3 -3
  79. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AdList.js +2 -2
  80. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/AddOrEditRule.test.js +12 -12
  81. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/Create.js +2 -3
  82. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/Create.test.js +3 -3
  83. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/Edit.test.js +2 -2
  84. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/EditExpression.test.js +9 -9
  85. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/RuleForm/LimitClick.test.js +1 -2
  86. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/RuleForm/LimitEvent.test.js +1 -2
  87. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/RuleForm/LimitView.test.js +1 -2
  88. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/RuleForm/TargetAge.test.js +3 -3
  89. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/AddOrEditRule/RuleForm/TargetGender.test.js +2 -2
  90. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/SubCampaignDetail.js +11 -10
  91. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/SubCampaignDetail.test.js +6 -6
  92. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/SubCampaignList.js +5 -5
  93. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/atoms.js +2 -2
  94. package/lib/ACM-AXN/Campaign/CreateOrEdit/TabSubCampaign/index.js +5 -5
  95. package/lib/ACM-AXN/Campaign/CreateOrEdit/index.js +22 -12
  96. package/lib/ACM-AXN/Campaign/Enum.d.ts +72 -0
  97. package/lib/ACM-AXN/Campaign/Enum.js +81 -1
  98. package/lib/ACM-AXN/Campaign/Types.d.ts +7 -126
  99. package/lib/ACM-AXN/Campaign/Types.js +0 -80
  100. package/lib/ACM-AXN/Campaign/Utils.d.ts +7 -1
  101. package/lib/ACM-AXN/Campaign/Utils.js +14 -10
  102. package/lib/ACM-AXN/Campaign/index.d.ts +2 -0
  103. package/lib/ACM-AXN/Campaign/index.js +16 -0
  104. package/lib/ACM-AXN/CampaignSchedule/Components/RowAdvance/component.js +4 -0
  105. package/lib/ACM-AXN/CampaignSchedule/Components/TableHeaderDragable.js +4 -0
  106. package/lib/ACM-AXN/CampaignSchedule/Enum.d.ts +4 -0
  107. package/lib/ACM-AXN/CampaignSchedule/Enum.js +4 -0
  108. package/lib/ACM-AXN/Common/Enum.d.ts +22 -0
  109. package/lib/ACM-AXN/Common/Enum.js +26 -1
  110. package/lib/ACM-AXN/Common/Types.d.ts +16 -0
  111. package/lib/ACM-AXN/Common/Types.js +2 -0
  112. package/lib/ACM-AXN/Notifications/Types.d.ts +1 -1
  113. package/lib/ACM-AXN/Page/Types.d.ts +2 -1
  114. package/lib/ACM-AXN/Template/Container.test.js +1 -1
  115. package/lib/ACM-AXN/Template/CreateOrEdit/CreateOrEdit.test.js +1 -1
  116. package/lib/ACM-AXN/Template/CreateOrEdit/Infomation.test.js +1 -1
  117. package/lib/ACM-AXN/Template/CreateOrEdit/Template/Parameter.js +13 -5
  118. package/lib/ACM-AXN/Template/Import.test.js +2 -2
  119. package/lib/AWING/Hooks/index.d.ts +1 -0
  120. package/lib/AWING/Hooks/index.js +17 -0
  121. package/lib/AWING/Hooks/useGetData.d.ts +9 -0
  122. package/lib/AWING/Hooks/useGetData.js +26 -0
  123. package/lib/Utils/Helpers.d.ts +2 -1
  124. package/lib/Utils/Helpers.js +17 -1
  125. package/lib/translate/en/translation.json +5 -1
  126. package/lib/translate/vi/translation.json +7 -1
  127. package/package.json +1 -1
@@ -0,0 +1,14 @@
1
+ import { DateRange } from '../Types';
2
+ import { CampaignGroupModel } from '../../../../../ACM-AXN/Campaign/Types';
3
+ interface Props {
4
+ isLoading: boolean;
5
+ startDate: Date;
6
+ endDate: Date;
7
+ subCampaigns: CampaignGroupModel[];
8
+ statisticalData: any;
9
+ getStatisticalData: (time: DateRange, placeIds: string[], timelineType: number, ids: any, statisticType?: number) => void;
10
+ exportData: any;
11
+ domains: any[];
12
+ }
13
+ declare const Analytic: (props: Props) => import("react/jsx-runtime").JSX.Element;
14
+ export default Analytic;
@@ -0,0 +1,77 @@
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
+ var jsx_runtime_1 = require("react/jsx-runtime");
18
+ var react_1 = require("react");
19
+ var material_1 = require("@mui/material");
20
+ var ChartFilter_1 = __importDefault(require("../ChartFilter"));
21
+ var ChartWithType_1 = __importDefault(require("./ChartWithType"));
22
+ var Helpers_1 = require("../../../../../Utils/Helpers");
23
+ var AWING_1 = require("../../../../../AWING");
24
+ var Analytic = function (props) {
25
+ var isLoading = props.isLoading, startDate = props.startDate, endDate = props.endDate, subCampaigns = props.subCampaigns, statisticalData = props.statisticalData, getStatisticalData = props.getStatisticalData, exportData = props.exportData, domains = props.domains;
26
+ var _a = (0, react_1.useState)({
27
+ time: {
28
+ startDate: startDate,
29
+ endDate: endDate,
30
+ },
31
+ placeIds: [],
32
+ ids: [],
33
+ timelineType: Helpers_1.TIMELINE_TYPE.DAY,
34
+ statisticType: 0,
35
+ }), queryInput = _a[0], setQueryInput = _a[1];
36
+ var changeQueryInput = function (fieldName, fieldValue) {
37
+ var _a;
38
+ var newInput = __assign(__assign({}, queryInput), (_a = {}, _a[fieldName] = fieldValue, _a));
39
+ setQueryInput(newInput);
40
+ getStatisticalData(newInput.time, newInput.placeIds, newInput.timelineType, newInput.ids, newInput.statisticType);
41
+ };
42
+ var queryData = function () {
43
+ getStatisticalData(queryInput.time, queryInput.placeIds, queryInput.timelineType, queryInput.ids, queryInput.statisticType);
44
+ };
45
+ var changeTimelineType = function (timelineType) {
46
+ var newInput = __assign(__assign({}, queryInput), { timelineType: timelineType });
47
+ setQueryInput(newInput);
48
+ getStatisticalData(newInput.time, newInput.placeIds, newInput.timelineType, newInput.ids, newInput.statisticType);
49
+ };
50
+ var changeStatisticType = function (statisticType) {
51
+ var newInput = __assign(__assign({}, queryInput), { statisticType: statisticType });
52
+ setQueryInput(newInput);
53
+ getStatisticalData(newInput.time, newInput.placeIds, newInput.timelineType, newInput.ids, newInput.statisticType);
54
+ };
55
+ var handleChangeAdGroupId = function (newCampaignAdGroupId) {
56
+ var result = [];
57
+ newCampaignAdGroupId.forEach(function (n) {
58
+ var temp = n.split("&");
59
+ if (temp.length > 1) {
60
+ result.push({
61
+ campaignGroupId: temp[0],
62
+ campaignAdId: temp[1],
63
+ });
64
+ }
65
+ else {
66
+ result.push({ campaignGroupId: temp[0] });
67
+ }
68
+ });
69
+ var newInput = __assign(__assign({}, queryInput), { ids: result });
70
+ setQueryInput(newInput);
71
+ getStatisticalData(newInput.time, newInput.placeIds, newInput.timelineType, newInput.ids, newInput.statisticType);
72
+ };
73
+ return ((0, jsx_runtime_1.jsxs)(material_1.Grid, { container: true, spacing: 2, children: [(0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 12, children: (0, jsx_runtime_1.jsx)(ChartFilter_1.default, { subCampaigns: subCampaigns, queryInput: queryInput, onChangeQueryInput: changeQueryInput, onQueryData: queryData, isExportType: true, onExportData: function (exportType) {
74
+ return exportData(queryInput.time, queryInput.placeIds, queryInput.timelineType, exportType, queryInput.ids);
75
+ }, domains: domains }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 12, style: { marginTop: '20px' }, children: isLoading ? ((0, jsx_runtime_1.jsx)(AWING_1.CircularProgress, {})) : ((0, jsx_runtime_1.jsx)(ChartWithType_1.default, { statisticalData: statisticalData, subCampaigns: subCampaigns, ids: queryInput.ids, onCampaignAdGroupIdChange: handleChangeAdGroupId, statisticType: queryInput.statisticType, setStatisticType: changeStatisticType, timelineType: queryInput.timelineType, setTimelineType: changeTimelineType })) })] }));
76
+ };
77
+ exports.default = Analytic;
@@ -0,0 +1,15 @@
1
+ import { CampaignGroupModel } from '../../../../../ACM-AXN/Campaign/Types';
2
+ export interface ICampaignAdGroup {
3
+ campaignId?: string;
4
+ campaignGroupId?: number | undefined;
5
+ campaignAdId?: number | undefined;
6
+ }
7
+ interface Props {
8
+ campaignId: string;
9
+ startDate: Date;
10
+ endDate: Date;
11
+ subCampaigns: CampaignGroupModel[];
12
+ domains: any[];
13
+ }
14
+ declare const AnalyticContainer: (props: Props) => import("react/jsx-runtime").JSX.Element;
15
+ export default AnalyticContainer;
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var jsx_runtime_1 = require("react/jsx-runtime");
7
+ var react_1 = require("react");
8
+ var common_1 = require("../common");
9
+ var Utils_1 = require("./Utils");
10
+ var component_1 = __importDefault(require("./component"));
11
+ var moment_1 = __importDefault(require("moment"));
12
+ var Enum_1 = require("../../../../../ACM-AXN/Campaign/Enum");
13
+ var lodash_1 = require("lodash");
14
+ var Context_1 = __importDefault(require("../Context"));
15
+ var exportFile_1 = require("../../../../../ACM-AXN/CampaignSchedule/exportFile");
16
+ var AnalyticContainer = function (props) {
17
+ var campaignId = props.campaignId, startDate = props.startDate, endDate = props.endDate, subCampaigns = props.subCampaigns, domains = props.domains;
18
+ var client = (0, Context_1.default)().services;
19
+ var _a = (0, react_1.useState)(true), isLoading = _a[0], setIsLoading = _a[1];
20
+ var _b = (0, react_1.useState)([]), statisticalChartData = _b[0], setStatisticalChartData = _b[1];
21
+ var _c = (0, react_1.useState)([]), statisticalData = _c[0], setStatisticalData = _c[1];
22
+ var placesOfCampaign = (0, react_1.useMemo)(function () {
23
+ var result = [];
24
+ subCampaigns.forEach(function (sub) {
25
+ var _a;
26
+ (_a = sub === null || sub === void 0 ? void 0 : sub.ads) === null || _a === void 0 ? void 0 : _a.forEach(function (ad) {
27
+ var _a;
28
+ (_a = ad === null || ad === void 0 ? void 0 : ad.places) === null || _a === void 0 ? void 0 : _a.concat((ad === null || ad === void 0 ? void 0 : ad.deletedPlaces) || []).forEach(function (place) {
29
+ if (!result.find(function (r) { return r.placeId === place.placeId; })) {
30
+ result.push(place);
31
+ }
32
+ });
33
+ });
34
+ });
35
+ return result;
36
+ }, [subCampaigns]);
37
+ var filterPlaces = function (ids) {
38
+ var result = [];
39
+ subCampaigns.map(function (sub) {
40
+ var _a;
41
+ (_a = sub === null || sub === void 0 ? void 0 : sub.ads) === null || _a === void 0 ? void 0 : _a.map(function (ad) {
42
+ var _a;
43
+ if (ids.find(function (id) { var _a; return id.campaignGroupId == ((_a = sub === null || sub === void 0 ? void 0 : sub.campaignGroup) === null || _a === void 0 ? void 0 : _a.id) && (!id.campaignAdId || id.campaignAdId == (ad === null || ad === void 0 ? void 0 : ad.id)); })) {
44
+ (_a = ad === null || ad === void 0 ? void 0 : ad.places) === null || _a === void 0 ? void 0 : _a.map(function (place) {
45
+ if (!result.find(function (r) { return r.placeId == place.placeId; })) {
46
+ result.push(place);
47
+ }
48
+ });
49
+ }
50
+ });
51
+ });
52
+ return result;
53
+ };
54
+ var getStatisticalData = function (time, placeIds, timelineType, ids, statisticType) {
55
+ var selectedPlaces = ids.length > 0 ? filterPlaces(ids) : placesOfCampaign;
56
+ selectedPlaces =
57
+ placeIds.length > 0
58
+ ? selectedPlaces.filter(function (p) { return placeIds.includes(p.placeId); })
59
+ : selectedPlaces;
60
+ var selectedDomains = (0, Utils_1.placesToDomains)(selectedPlaces, domains);
61
+ setIsLoading(true);
62
+ client.campaignStatisticGet({
63
+ startDate: (0, moment_1.default)(time.startDate).format(Enum_1.DATE_FORMAT),
64
+ endDate: (0, moment_1.default)(time.endDate).format(Enum_1.DATE_FORMAT),
65
+ timelineType: timelineType,
66
+ campaignAdGroups: ids.map(function (id) { return ({
67
+ campaignId: campaignId,
68
+ campaignGroupId: id.campaignGroupId,
69
+ campaignAdId: id.campaignAdId
70
+ }); }),
71
+ placeIds: placeIds,
72
+ includedEventLabels: Object.values(Enum_1.BaseEvent)
73
+ }).then(function (res) {
74
+ setStatisticalData((0, Utils_1.markBillingType)(subCampaigns, res));
75
+ setStatisticalChartData(statisticType ? (0, Utils_1.convertToShowDetail)(subCampaigns, res, selectedDomains, selectedPlaces) : res);
76
+ }).finally(function () { return setIsLoading(false); });
77
+ };
78
+ var exportData = function (time, placeIds, timelineType, exportType, ids) {
79
+ var selectedPlaces = placeIds.length > 0
80
+ ? placesOfCampaign.filter(function (p) { return placeIds.includes(p.placeId); })
81
+ : placesOfCampaign;
82
+ // downloadWithDataSet
83
+ var selectedDomains = (0, Utils_1.placesToDomains)(selectedPlaces, domains);
84
+ var exportObj = {
85
+ name: "export_statistic_campaign_".concat(campaignId),
86
+ data: []
87
+ };
88
+ switch (exportType) {
89
+ case common_1.EXPORT_TYPES.Domain: {
90
+ var newObjects = (0, lodash_1.chain)(selectedDomains)
91
+ .groupBy('domainId')
92
+ .map(function (value) {
93
+ var currentPlaces = value
94
+ .map(function (x) { return x.places; })
95
+ .reduce(function (a, b) { return a.concat(b); }, []);
96
+ return {
97
+ objectId: value[0].domainId,
98
+ objectName: value[0].domainName,
99
+ places: currentPlaces,
100
+ };
101
+ })
102
+ .value();
103
+ exportObj.data = (0, Utils_1.convertToExportDataGroupBy)(statisticalData, newObjects, timelineType, 'Domain');
104
+ exportObj.name += '_groupby_domain';
105
+ break;
106
+ }
107
+ case common_1.EXPORT_TYPES.Export: {
108
+ exportObj.data = (0, Utils_1.convertToExport)(subCampaigns, statisticalData, timelineType, selectedPlaces);
109
+ exportObj.name += '_total';
110
+ break;
111
+ }
112
+ case common_1.EXPORT_TYPES.LocationGroup: {
113
+ exportObj.data = (0, Utils_1.convertToExportDataGroupBy)(statisticalData, (0, Utils_1.dataGroupByPlace)(subCampaigns, ids), timelineType, 'Sub Campaign');
114
+ exportObj.name += '_groupby_subcampaign';
115
+ break;
116
+ }
117
+ default: {
118
+ exportObj.data = (0, Utils_1.convertToExportData)(statisticalData, selectedPlaces, timelineType);
119
+ exportObj.name += '_groupby_place';
120
+ break;
121
+ }
122
+ }
123
+ console.log("exportObj", exportObj);
124
+ (0, exportFile_1.downloadWithDataSet)(exportObj.name, exportObj.data);
125
+ return;
126
+ };
127
+ return ((0, jsx_runtime_1.jsx)(component_1.default, { domains: domains, startDate: startDate, endDate: endDate, subCampaigns: subCampaigns, isLoading: isLoading, statisticalData: statisticalChartData, getStatisticalData: getStatisticalData, exportData: exportData }));
128
+ };
129
+ exports.default = AnalyticContainer;
@@ -0,0 +1 @@
1
+ export { default } from "./container";
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.default = void 0;
7
+ var container_1 = require("./container");
8
+ Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(container_1).default; } });
@@ -0,0 +1,12 @@
1
+ import { CampaignGroupModel } from '../../../../ACM-AXN/Campaign/Types';
2
+ interface Props {
3
+ subCampaigns: CampaignGroupModel[];
4
+ queryInput: any;
5
+ isExportType: boolean;
6
+ onChangeQueryInput: (changeType: string, newValue: any) => void;
7
+ onQueryData: () => void;
8
+ onExportData: (exportType?: string) => void;
9
+ domains: any[];
10
+ }
11
+ declare const ChartFilterBox: (props: Props) => import("react/jsx-runtime").JSX.Element;
12
+ export default ChartFilterBox;
@@ -0,0 +1,237 @@
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;
24
+ return g = { next: verb(0), "throw": verb(1), "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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
50
+ return (mod && mod.__esModule) ? mod : { "default": mod };
51
+ };
52
+ Object.defineProperty(exports, "__esModule", { value: true });
53
+ var jsx_runtime_1 = require("react/jsx-runtime");
54
+ var GetApp_1 = __importDefault(require("@mui/icons-material/GetApp"));
55
+ var material_1 = require("@mui/material");
56
+ var react_1 = require("react");
57
+ var react_i18next_1 = require("react-i18next");
58
+ // import { EnhancedDateRangePicker } from 'Components/DateRangePicker'
59
+ var Helpers_1 = require("../../../../Utils/Helpers");
60
+ // import placeService, { PlaceFilter } from 'Services/Place'
61
+ var AWING_1 = require("../../../../AWING");
62
+ var uniqBy_1 = __importDefault(require("lodash/uniqBy"));
63
+ var moment_1 = __importDefault(require("moment"));
64
+ var SplitButtonExportType_1 = __importDefault(require("./SplitButtonExportType"));
65
+ var Enum_1 = require("../../../../ACM-AXN/Campaign/Enum");
66
+ var i18n_1 = __importDefault(require("../../../../i18n"));
67
+ var Context_1 = __importDefault(require("./Context"));
68
+ var textFieldStyle = {
69
+ '& .MuiOutlinedInput-input': {
70
+ padding: '10.5px !important',
71
+ },
72
+ '& .MuiFormControl-marginNormal': {
73
+ margin: function (theme) { return theme.spacing(0); },
74
+ },
75
+ '& .MuiOutlinedInput-adornedEnd': {
76
+ paddingRight: function (theme) { return theme.spacing(0.5); },
77
+ },
78
+ '& .MuiIconButton-root': {
79
+ padding: function (theme) { return theme.spacing(1); },
80
+ },
81
+ '& .MuiAutocomplete-inputRoot': {
82
+ padding: function (theme) { return theme.spacing(0.25); },
83
+ },
84
+ '& .MuiAutocomplete-endAdornment': {
85
+ top: 'calc(50% - 19px)',
86
+ },
87
+ };
88
+ var ChartFilterBox = function (props) {
89
+ var
90
+ // startDate, endDate,
91
+ subCampaigns = props.subCampaigns, queryInput = props.queryInput, isExportType = props.isExportType, onChangeQueryInput = props.onChangeQueryInput, onQueryData = props.onQueryData, onExportData = props.onExportData, domains = props.domains;
92
+ var _a = (0, Context_1.default)(), client = _a.services, PlaceMultiSelect = _a.placeMultiSelectComponent;
93
+ var placeGroups = (0, react_1.useMemo)(function () {
94
+ return subCampaigns.map(function (x) { return ({
95
+ groupId: x.campaignGroup.id,
96
+ groupName: x.campaignGroup.name,
97
+ }); });
98
+ }, [subCampaigns]);
99
+ (0, react_1.useEffect)(function () {
100
+ onChangeQueryInput('placeIds', []);
101
+ // eslint-disable-next-line react-hooks/exhaustive-deps
102
+ }, []);
103
+ var placeMultiSelectSubmit = function (placeIds) {
104
+ onChangeQueryInput('placeIds', placeIds);
105
+ };
106
+ var handleGetPlacesByFilter = function (placeFilterOperands, pageIndex, pageSize) { return __awaiter(void 0, void 0, void 0, function () {
107
+ var places, newPlaceFilterOperands, placeFilter, response, response;
108
+ return __generator(this, function (_a) {
109
+ switch (_a.label) {
110
+ case 0:
111
+ places = (0, uniqBy_1.default)(placesOfGroups(subCampaigns), 'placeId');
112
+ newPlaceFilterOperands = [];
113
+ placeFilterOperands.forEach(function (operand) {
114
+ switch (operand.type) {
115
+ case Enum_1.PlaceFilterOperandType.PLACE_GROUP_ID:
116
+ places = places.filter(function (p) { return p.groupId.toString() === operand.value; });
117
+ break;
118
+ case Enum_1.PlaceFilterOperandType.DOMAIN_ID:
119
+ var domainIds_1 = JSON.parse(operand.value);
120
+ places = places.filter(function (p) {
121
+ return domainIds_1.some(function (dId) { return dId === p.domainId; });
122
+ });
123
+ break;
124
+ case Enum_1.PlaceFilterOperandType.SEARCH_STRING:
125
+ places = places.filter(function (p) {
126
+ return p.name
127
+ .toLowerCase()
128
+ .includes(operand.value.trim().toLowerCase());
129
+ });
130
+ break;
131
+ default:
132
+ newPlaceFilterOperands.push(operand);
133
+ break;
134
+ }
135
+ });
136
+ if (!newPlaceFilterOperands.length) return [3 /*break*/, 5];
137
+ newPlaceFilterOperands.push({
138
+ operator: Enum_1.EnumOperator.In.id,
139
+ type: Enum_1.PlaceFilterOperandType.PLACE_ID,
140
+ value: JSON.stringify(places.map(function (x) { return x.placeId; })),
141
+ });
142
+ placeFilter = {
143
+ operandGroups: [
144
+ {
145
+ operands: newPlaceFilterOperands,
146
+ },
147
+ ],
148
+ };
149
+ if (!(pageIndex !== undefined && pageSize !== undefined)) return [3 /*break*/, 2];
150
+ return [4 /*yield*/, client.placesGetPagingByPlaceFilter(pageIndex, pageSize, placeFilter)];
151
+ case 1:
152
+ response = _a.sent();
153
+ return [2 /*return*/, {
154
+ places: response.items,
155
+ total: response.totalItemCount,
156
+ }];
157
+ case 2: return [4 /*yield*/, client.placesGetByPlaceFilter(placeFilter)];
158
+ case 3:
159
+ response = _a.sent();
160
+ return [2 /*return*/, { places: response, total: response.length }];
161
+ case 4: return [3 /*break*/, 6];
162
+ case 5:
163
+ if (pageIndex !== undefined && pageSize !== undefined) {
164
+ return [2 /*return*/, {
165
+ places: places.slice(pageIndex * pageSize, pageIndex * pageSize + pageSize),
166
+ total: places.length,
167
+ }];
168
+ }
169
+ else {
170
+ return [2 /*return*/, { places: places, total: places.length }];
171
+ }
172
+ _a.label = 6;
173
+ case 6: return [2 /*return*/];
174
+ }
175
+ });
176
+ }); };
177
+ var placesOfGroup = function (group) {
178
+ var convertPlace = function (p) { return ({
179
+ placeId: p.placeId,
180
+ name: p.name,
181
+ domainId: p.domainId,
182
+ groupId: group.campaignGroup.id,
183
+ }); };
184
+ return group
185
+ .ads.map(function (x) {
186
+ return x.places.concat((x === null || x === void 0 ? void 0 : x.deletedPlaces) || []).map(convertPlace);
187
+ })
188
+ .reduce(function (a, b) { return a.concat(b); }, []);
189
+ };
190
+ var placesOfGroups = function (groups) {
191
+ return groups
192
+ .map(placesOfGroup)
193
+ .reduce(function (a, b) {
194
+ return a.concat(b);
195
+ }, []);
196
+ };
197
+ var t = (0, react_i18next_1.useTranslation)(undefined, { i18n: i18n_1.default }).t;
198
+ var translationText = {
199
+ time: t('Common.DateRangePickerLabel'),
200
+ domain: t('Place.Domain'),
201
+ group: t('Place.PlaceGroup'),
202
+ place: t('Place.Place'),
203
+ view: t('Common.View'),
204
+ timeline: t('Common.ViewBy'),
205
+ timelineType: {
206
+ HOUR: t('Common.Hour'),
207
+ DAY: t('Common.Day'),
208
+ WEEK: t('Common.Week'),
209
+ MONTH: t('Common.Month'),
210
+ },
211
+ };
212
+ return ((0, jsx_runtime_1.jsxs)(material_1.Grid, { container: true, spacing: 2, children: [(0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 1 }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 3, children: (0, jsx_runtime_1.jsx)(AWING_1.DateRangePicker
213
+ // noBorder
214
+ , {
215
+ // noBorder
216
+ label: translationText.time, callback: function (value) {
217
+ var _a, _b;
218
+ Object.values(value).filter(Boolean).length > 1 &&
219
+ onChangeQueryInput('time', {
220
+ startDate: (0, Helpers_1.getStartOfDay)((_a = value === null || value === void 0 ? void 0 : value.startDate) === null || _a === void 0 ? void 0 : _a.toDate()),
221
+ endDate: (0, Helpers_1.getStartOfDay)((_b = value === null || value === void 0 ? void 0 : value.endDate) === null || _b === void 0 ? void 0 : _b.toDate()),
222
+ });
223
+ }, initialStartDate: (0, moment_1.default)(queryInput.time.startDate), initialEndDate: (0, moment_1.default)(queryInput.time.endDate), isShowCalendarInfo: true,
224
+ //@ts-ignore
225
+ variant: "outlined", textFieldProps: {
226
+ fullWidth: true,
227
+ sx: textFieldStyle,
228
+ } }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 4, children: (0, jsx_runtime_1.jsx)(PlaceMultiSelect
229
+ // disableCheckPermission={true}
230
+ , {
231
+ // disableCheckPermission={true}
232
+ onChange: placeMultiSelectSubmit, initialOption: {
233
+ placeGroups: placeGroups,
234
+ domains: domains.map(function (d) { return (__assign(__assign({}, d), { name: d.domainName })); }),
235
+ }, isDisplayTextField: true, TextFieldProps: { sx: textFieldStyle }, onGetPlacesByFilter: handleGetPlacesByFilter }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 1, children: (0, jsx_runtime_1.jsx)(material_1.FormControl, { children: (0, jsx_runtime_1.jsx)(material_1.Button, { color: "primary", variant: "contained", fullWidth: true, onClick: function () { return onQueryData(); }, children: translationText.view }) }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 3, children: (0, jsx_runtime_1.jsx)(material_1.FormControl, { children: !isExportType ? ((0, jsx_runtime_1.jsx)(material_1.Button, { variant: "outlined", onClick: function () { return onExportData(); }, children: (0, jsx_runtime_1.jsx)(GetApp_1.default, {}) })) : ((0, jsx_runtime_1.jsx)(SplitButtonExportType_1.default, { onSubmit: function (exportType) { return onExportData(exportType); } })) }) }), (0, jsx_runtime_1.jsx)(material_1.Grid, { item: true, xs: 1 })] }));
236
+ };
237
+ exports.default = ChartFilterBox;
@@ -0,0 +1,84 @@
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
+ var jsx_runtime_1 = require("react/jsx-runtime");
18
+ var react_1 = __importDefault(require("react"));
19
+ var moment_1 = __importDefault(require("moment"));
20
+ var enzyme_1 = require("enzyme");
21
+ var DateRangePicker_1 = require("Components/DateRangePicker");
22
+ var PlaceFilter_1 = __importDefault(require("Features/PlaceFilter"));
23
+ var SplitButtonExportType_1 = __importDefault(require("./SplitButtonExportType"));
24
+ var ChartFilter_1 = __importDefault(require("./ChartFilter"));
25
+ describe("ChartFilter", function () {
26
+ var wrapper;
27
+ var initialProps = {
28
+ subCampaigns: [],
29
+ queryInput: { time: { startDate: new Date(), endDate: new Date() } },
30
+ isExportType: false,
31
+ onChangeQueryInput: jest.fn(),
32
+ onQueryData: jest.fn(),
33
+ onExportData: jest.fn(),
34
+ domains: [],
35
+ };
36
+ beforeEach(function () {
37
+ wrapper = (0, enzyme_1.shallow)((0, jsx_runtime_1.jsx)(ChartFilter_1.default, __assign({}, initialProps)));
38
+ });
39
+ afterEach(function () {
40
+ wrapper.unmount();
41
+ });
42
+ it("should render all components correctly", function () {
43
+ expect(wrapper.find(DateRangePicker_1.EnhancedDateRangePicker).exists()).toBe(true);
44
+ expect(wrapper.find(PlaceFilter_1.default).exists()).toBe(true);
45
+ var splitButtonExportType = wrapper.find(SplitButtonExportType_1.default);
46
+ if (initialProps.isExportType) {
47
+ expect(splitButtonExportType.exists()).toBe(true);
48
+ }
49
+ else {
50
+ expect(wrapper.find(SplitButtonExportType_1.default).exists()).toBe(false);
51
+ }
52
+ });
53
+ it("should call onQueryData when view button is clicked", function () {
54
+ wrapper.find("WithStyles(ForwardRef(Button))").at(0).simulate("click");
55
+ expect(initialProps.onQueryData).toHaveBeenCalled();
56
+ });
57
+ it("should call onExportData with default parameter when export button is clicked and isExportType is false", function () {
58
+ wrapper.find("WithStyles(ForwardRef(Button))").at(1).simulate("click");
59
+ expect(initialProps.onExportData.mock.calls.length).toEqual(1);
60
+ });
61
+ it("should render SplitButtonExportType when isExportType is true", function () {
62
+ var updatedProps = __assign(__assign({}, initialProps), { isExportType: true });
63
+ wrapper.setProps(updatedProps);
64
+ expect(wrapper.find(SplitButtonExportType_1.default).exists()).toBe(true);
65
+ });
66
+ it("should call onChangeQueryInput when date range picker value is changed", function () {
67
+ var dateRangePicker = wrapper.find(DateRangePicker_1.EnhancedDateRangePicker);
68
+ var startDate = (0, moment_1.default)();
69
+ var endDate = (0, moment_1.default)().add(1, "day");
70
+ dateRangePicker
71
+ .props()
72
+ .callback({ startDate: startDate, endDate: endDate });
73
+ expect(initialProps.onChangeQueryInput.mock.calls.length).toEqual(1);
74
+ });
75
+ it("should call onChangeQueryInput when PlaceMultiSelect value is changed", function () {
76
+ var placeMultiSelect = wrapper.find(PlaceFilter_1.default);
77
+ placeMultiSelect.props().onDetailSubmit([
78
+ { placeId: 1, name: "Place 1", domainId: 1, groupId: 1 },
79
+ ]);
80
+ expect(initialProps.onChangeQueryInput).toHaveBeenCalledWith("places", [
81
+ { placeId: 1, name: "Place 1", domainId: 1, groupId: 1 },
82
+ ]);
83
+ });
84
+ });
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ import { CampaignAnalyticProps } from "./Types";
3
+ export declare const PropsProvider: import("react").Provider<CampaignAnalyticProps>;
4
+ declare const useCampaignAnalyticProps: () => CampaignAnalyticProps;
5
+ export default useCampaignAnalyticProps;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PropsProvider = void 0;
4
+ var react_1 = require("react");
5
+ var campaignAnalyticPropsContext = (0, react_1.createContext)({});
6
+ exports.PropsProvider = campaignAnalyticPropsContext.Provider;
7
+ var useCampaignAnalyticProps = function () {
8
+ var props = (0, react_1.useContext)(campaignAnalyticPropsContext);
9
+ return (0, react_1.useMemo)(function () {
10
+ return props;
11
+ }, [props]);
12
+ };
13
+ exports.default = useCampaignAnalyticProps;