@sparrowengg/integrations-templates-frontend 2.1.0-beta.1 → 2.1.0-beta.2

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 (212) hide show
  1. package/dist/cjs/cascader-dropdown/cascader-dropdown-content.js +1 -1
  2. package/dist/cjs/cascader-dropdown/cascader-dropdown-content.js.map +1 -1
  3. package/dist/cjs/commons/components/NamingModal.js +34 -62
  4. package/dist/cjs/commons/components/NamingModal.js.map +1 -1
  5. package/dist/cjs/commons/components/confirmation-modal.js +12 -24
  6. package/dist/cjs/commons/components/confirmation-modal.js.map +1 -1
  7. package/dist/cjs/commons/components/custom-pill.js +12 -30
  8. package/dist/cjs/commons/components/custom-pill.js.map +1 -1
  9. package/dist/cjs/commons/components/draftModal.js +31 -45
  10. package/dist/cjs/commons/components/draftModal.js.map +1 -1
  11. package/dist/cjs/commons/components/edit-confirmation.js +17 -34
  12. package/dist/cjs/commons/components/edit-confirmation.js.map +1 -1
  13. package/dist/cjs/commons/components/import-modal.js +18 -49
  14. package/dist/cjs/commons/components/import-modal.js.map +1 -1
  15. package/dist/cjs/commons/components/spinner.js +2 -16
  16. package/dist/cjs/commons/components/spinner.js.map +1 -1
  17. package/dist/cjs/commons/components/theme-wrapper.js +12 -9
  18. package/dist/cjs/commons/components/theme-wrapper.js.map +1 -1
  19. package/dist/cjs/commons/constants/enhanced.js.map +1 -1
  20. package/dist/cjs/commons/helpers/index.js +52 -93
  21. package/dist/cjs/commons/helpers/index.js.map +1 -1
  22. package/dist/cjs/commons/icons/arrow.js +3 -38
  23. package/dist/cjs/commons/icons/arrow.js.map +1 -1
  24. package/dist/cjs/commons/icons/cursor.js +8 -21
  25. package/dist/cjs/commons/icons/cursor.js.map +1 -1
  26. package/dist/cjs/commons/icons/email-letter.js +12 -30
  27. package/dist/cjs/commons/icons/email-letter.js.map +1 -1
  28. package/dist/cjs/commons/icons/mapping.js +10 -23
  29. package/dist/cjs/commons/icons/mapping.js.map +1 -1
  30. package/dist/cjs/commons/icons/nested-add.js +14 -32
  31. package/dist/cjs/commons/icons/nested-add.js.map +1 -1
  32. package/dist/cjs/commons/icons/sms.js +18 -36
  33. package/dist/cjs/commons/icons/sms.js.map +1 -1
  34. package/dist/cjs/commons/icons/sync.js +3 -110
  35. package/dist/cjs/commons/icons/sync.js.map +1 -1
  36. package/dist/cjs/commons/icons/trash.js +15 -33
  37. package/dist/cjs/commons/icons/trash.js.map +1 -1
  38. package/dist/cjs/commons/icons/whatsapp.js +31 -49
  39. package/dist/cjs/commons/icons/whatsapp.js.map +1 -1
  40. package/dist/cjs/contact-import/components/ManageImport/Completed.js +41 -27
  41. package/dist/cjs/contact-import/components/ManageImport/Completed.js.map +1 -1
  42. package/dist/cjs/contact-import/components/ManageImport/Dashboard.js +43 -23
  43. package/dist/cjs/contact-import/components/ManageImport/Dashboard.js.map +1 -1
  44. package/dist/cjs/contact-import/components/ManageImport/NoDataState.js +6 -7
  45. package/dist/cjs/contact-import/components/ManageImport/NoDataState.js.map +1 -1
  46. package/dist/cjs/contact-import/components/ManageImport/Scheduled.js +46 -30
  47. package/dist/cjs/contact-import/components/ManageImport/Scheduled.js.map +1 -1
  48. package/dist/cjs/contact-import/components/ManageImport/icon.js +85 -0
  49. package/dist/cjs/contact-import/components/ManageImport/icon.js.map +1 -0
  50. package/dist/cjs/contact-import/components/Scheduling.js +27 -39
  51. package/dist/cjs/contact-import/components/Scheduling.js.map +1 -1
  52. package/dist/cjs/contact-import/components/TimePicker.js +102 -129
  53. package/dist/cjs/contact-import/components/TimePicker.js.map +1 -1
  54. package/dist/cjs/contact-import/components/conact-import-schedule.js +64 -0
  55. package/dist/cjs/contact-import/components/conact-import-schedule.js.map +1 -0
  56. package/dist/cjs/contact-import/components/contact-import-configure.js +75 -0
  57. package/dist/cjs/contact-import/components/contact-import-configure.js.map +1 -0
  58. package/dist/cjs/contact-import/components/contact-import-mapping.js +224 -0
  59. package/dist/cjs/contact-import/components/contact-import-mapping.js.map +1 -0
  60. package/dist/cjs/contact-import/constants.js +21 -0
  61. package/dist/cjs/contact-import/constants.js.map +1 -0
  62. package/dist/cjs/contact-import/index.js +242 -32
  63. package/dist/cjs/contact-import/index.js.map +1 -1
  64. package/dist/cjs/dynamic-mapping/components/Mapping.js +321 -203
  65. package/dist/cjs/dynamic-mapping/components/Mapping.js.map +1 -1
  66. package/dist/cjs/dynamic-mapping/index.js +972 -34
  67. package/dist/cjs/dynamic-mapping/index.js.map +1 -1
  68. package/dist/cjs/filter/filter-pill-value-selector.js +1 -1
  69. package/dist/cjs/filter/filter-pill-value-selector.js.map +1 -1
  70. package/dist/cjs/index.js +12 -159
  71. package/dist/cjs/index.js.map +1 -1
  72. package/dist/cjs/integration-template/components/dashboard.js +137 -130
  73. package/dist/cjs/integration-template/components/dashboard.js.map +1 -1
  74. package/dist/cjs/integration-template/index.js +343 -0
  75. package/dist/cjs/integration-template/index.js.map +1 -0
  76. package/dist/cjs/mapping/components/custom-menu.js +3 -4
  77. package/dist/cjs/mapping/components/custom-menu.js.map +1 -1
  78. package/dist/cjs/mapping/components/field.js +103 -121
  79. package/dist/cjs/mapping/components/field.js.map +1 -1
  80. package/dist/cjs/mapping/components/mapping.js +195 -106
  81. package/dist/cjs/mapping/components/mapping.js.map +1 -1
  82. package/dist/cjs/mapping/constants/index.js +2 -259
  83. package/dist/cjs/mapping/constants/index.js.map +1 -1
  84. package/dist/cjs/mapping/index.js +618 -38
  85. package/dist/cjs/mapping/index.js.map +1 -1
  86. package/dist/cjs/mapping/services/index.js +58 -96
  87. package/dist/cjs/mapping/services/index.js.map +1 -1
  88. package/dist/cjs/node_modules/@sparrowengg/twigs-react/dist/es/node_modules/@radix-ui/react-menu/dist/index.js +7 -7
  89. package/dist/cjs/single-mapping/components/mapping.js +490 -0
  90. package/dist/cjs/single-mapping/components/mapping.js.map +1 -0
  91. package/dist/cjs/single-mapping/index.js +987 -59
  92. package/dist/cjs/single-mapping/index.js.map +1 -1
  93. package/dist/cjs/triggers/components/subcomponents.js +1140 -0
  94. package/dist/cjs/triggers/components/subcomponents.js.map +1 -0
  95. package/dist/cjs/triggers/components/trigger.js +491 -0
  96. package/dist/cjs/triggers/components/trigger.js.map +1 -0
  97. package/dist/cjs/triggers/constants/index.js +0 -253
  98. package/dist/cjs/triggers/constants/index.js.map +1 -1
  99. package/dist/cjs/triggers/index.js +333 -0
  100. package/dist/cjs/triggers/index.js.map +1 -0
  101. package/dist/cjs/triggers/services/index.js +30 -0
  102. package/dist/cjs/triggers/services/index.js.map +1 -0
  103. package/dist/es/cascader-dropdown/cascader-dropdown-content.js +1 -1
  104. package/dist/es/cascader-dropdown/cascader-dropdown-content.js.map +1 -1
  105. package/dist/es/commons/components/NamingModal.js +35 -63
  106. package/dist/es/commons/components/NamingModal.js.map +1 -1
  107. package/dist/es/commons/components/confirmation-modal.js +13 -25
  108. package/dist/es/commons/components/confirmation-modal.js.map +1 -1
  109. package/dist/es/commons/components/custom-pill.js +13 -31
  110. package/dist/es/commons/components/custom-pill.js.map +1 -1
  111. package/dist/es/commons/components/draftModal.js +32 -46
  112. package/dist/es/commons/components/draftModal.js.map +1 -1
  113. package/dist/es/commons/components/edit-confirmation.js +18 -35
  114. package/dist/es/commons/components/edit-confirmation.js.map +1 -1
  115. package/dist/es/commons/components/import-modal.js +19 -50
  116. package/dist/es/commons/components/import-modal.js.map +1 -1
  117. package/dist/es/commons/components/spinner.js +2 -16
  118. package/dist/es/commons/components/spinner.js.map +1 -1
  119. package/dist/es/commons/components/theme-wrapper.js +12 -9
  120. package/dist/es/commons/components/theme-wrapper.js.map +1 -1
  121. package/dist/es/commons/constants/enhanced.js.map +1 -1
  122. package/dist/es/commons/helpers/index.js +52 -93
  123. package/dist/es/commons/helpers/index.js.map +1 -1
  124. package/dist/es/commons/icons/arrow.js +3 -38
  125. package/dist/es/commons/icons/arrow.js.map +1 -1
  126. package/dist/es/commons/icons/cursor.js +8 -21
  127. package/dist/es/commons/icons/cursor.js.map +1 -1
  128. package/dist/es/commons/icons/email-letter.js +12 -30
  129. package/dist/es/commons/icons/email-letter.js.map +1 -1
  130. package/dist/es/commons/icons/mapping.js +10 -23
  131. package/dist/es/commons/icons/mapping.js.map +1 -1
  132. package/dist/es/commons/icons/nested-add.js +14 -32
  133. package/dist/es/commons/icons/nested-add.js.map +1 -1
  134. package/dist/es/commons/icons/sms.js +18 -36
  135. package/dist/es/commons/icons/sms.js.map +1 -1
  136. package/dist/es/commons/icons/sync.js +3 -110
  137. package/dist/es/commons/icons/sync.js.map +1 -1
  138. package/dist/es/commons/icons/trash.js +15 -33
  139. package/dist/es/commons/icons/trash.js.map +1 -1
  140. package/dist/es/commons/icons/whatsapp.js +31 -49
  141. package/dist/es/commons/icons/whatsapp.js.map +1 -1
  142. package/dist/es/contact-import/components/ManageImport/Completed.js +41 -27
  143. package/dist/es/contact-import/components/ManageImport/Completed.js.map +1 -1
  144. package/dist/es/contact-import/components/ManageImport/Dashboard.js +45 -25
  145. package/dist/es/contact-import/components/ManageImport/Dashboard.js.map +1 -1
  146. package/dist/es/contact-import/components/ManageImport/NoDataState.js +4 -5
  147. package/dist/es/contact-import/components/ManageImport/NoDataState.js.map +1 -1
  148. package/dist/es/contact-import/components/ManageImport/Scheduled.js +46 -30
  149. package/dist/es/contact-import/components/ManageImport/Scheduled.js.map +1 -1
  150. package/dist/es/contact-import/components/ManageImport/icon.js +82 -0
  151. package/dist/es/contact-import/components/ManageImport/icon.js.map +1 -0
  152. package/dist/es/contact-import/components/Scheduling.js +27 -39
  153. package/dist/es/contact-import/components/Scheduling.js.map +1 -1
  154. package/dist/es/contact-import/components/TimePicker.js +103 -130
  155. package/dist/es/contact-import/components/TimePicker.js.map +1 -1
  156. package/dist/es/contact-import/components/conact-import-schedule.js +60 -0
  157. package/dist/es/contact-import/components/conact-import-schedule.js.map +1 -0
  158. package/dist/es/contact-import/components/contact-import-configure.js +71 -0
  159. package/dist/es/contact-import/components/contact-import-configure.js.map +1 -0
  160. package/dist/es/contact-import/components/contact-import-mapping.js +220 -0
  161. package/dist/es/contact-import/components/contact-import-mapping.js.map +1 -0
  162. package/dist/es/contact-import/constants.js +18 -0
  163. package/dist/es/contact-import/constants.js.map +1 -0
  164. package/dist/es/contact-import/index.js +240 -27
  165. package/dist/es/contact-import/index.js.map +1 -1
  166. package/dist/es/dynamic-mapping/components/Mapping.js +321 -203
  167. package/dist/es/dynamic-mapping/components/Mapping.js.map +1 -1
  168. package/dist/es/dynamic-mapping/index.js +972 -34
  169. package/dist/es/dynamic-mapping/index.js.map +1 -1
  170. package/dist/es/filter/filter-pill-value-selector.js +1 -1
  171. package/dist/es/filter/filter-pill-value-selector.js.map +1 -1
  172. package/dist/es/index.js +2 -23
  173. package/dist/es/index.js.map +1 -1
  174. package/dist/es/integration-template/components/dashboard.js +139 -132
  175. package/dist/es/integration-template/components/dashboard.js.map +1 -1
  176. package/dist/es/integration-template/index.js +341 -0
  177. package/dist/es/integration-template/index.js.map +1 -0
  178. package/dist/es/mapping/components/custom-menu.js +3 -4
  179. package/dist/es/mapping/components/custom-menu.js.map +1 -1
  180. package/dist/es/mapping/components/field.js +100 -118
  181. package/dist/es/mapping/components/field.js.map +1 -1
  182. package/dist/es/mapping/components/mapping.js +194 -105
  183. package/dist/es/mapping/components/mapping.js.map +1 -1
  184. package/dist/es/mapping/constants/index.js +3 -239
  185. package/dist/es/mapping/constants/index.js.map +1 -1
  186. package/dist/es/mapping/index.js +617 -12
  187. package/dist/es/mapping/index.js.map +1 -1
  188. package/dist/es/mapping/services/index.js +59 -96
  189. package/dist/es/mapping/services/index.js.map +1 -1
  190. package/dist/es/node_modules/@internationalized/date/dist/CalendarDate.js +3 -3
  191. package/dist/es/node_modules/@sparrowengg/twigs-react/dist/es/dialog/dialog.js +1 -1
  192. package/dist/es/node_modules/@sparrowengg/twigs-react/dist/es/dropdown/dropdown.js +2 -2
  193. package/dist/es/node_modules/@sparrowengg/twigs-react/dist/es/node_modules/@radix-ui/react-dropdown-menu/dist/index.js +1 -1
  194. package/dist/es/node_modules/@sparrowengg/twigs-react/dist/es/node_modules/@react-aria/calendar/dist/import.js +2 -2
  195. package/dist/es/node_modules/@sparrowengg/twigs-react/dist/es/node_modules/@react-aria/utils/dist/import.js +1 -1
  196. package/dist/es/node_modules/@sparrowengg/twigs-react/dist/es/node_modules/@react-stately/calendar/dist/import.js +1 -1
  197. package/dist/es/single-mapping/components/mapping.js +486 -0
  198. package/dist/es/single-mapping/components/mapping.js.map +1 -0
  199. package/dist/es/single-mapping/index.js +988 -60
  200. package/dist/es/single-mapping/index.js.map +1 -1
  201. package/dist/es/triggers/components/subcomponents.js +1134 -0
  202. package/dist/es/triggers/components/subcomponents.js.map +1 -0
  203. package/dist/es/triggers/components/trigger.js +487 -0
  204. package/dist/es/triggers/components/trigger.js.map +1 -0
  205. package/dist/es/triggers/constants/index.js +1 -228
  206. package/dist/es/triggers/constants/index.js.map +1 -1
  207. package/dist/es/triggers/index.js +331 -0
  208. package/dist/es/triggers/index.js.map +1 -0
  209. package/dist/es/triggers/services/index.js +28 -0
  210. package/dist/es/triggers/services/index.js.map +1 -0
  211. package/dist/index.d.ts +448 -2161
  212. package/package.json +1 -1
@@ -1,15 +1,15 @@
1
- import React__default, { useState } from 'react';
1
+ import React__default, { useState, useEffect } from 'react';
2
2
  import { surveySparrowURL } from '../../commons/constants/index.js';
3
+ import { MAPPING_ERROR_MESSAGES, DEFAULT_FIELD_VALUE } from '../constants/index.js';
4
+ import { fetchSurveyQuestions, fetchSurveyVariables, fetchContactProperties, fetchSurveyExpression } from '../services/index.js';
3
5
  import ImportModal from '../../commons/components/import-modal.js';
4
6
  import Spinner from '../../commons/components/spinner.js';
5
7
  import Field from './field.js';
6
8
  import PlaceholderSpan from './placeholder-span.js';
7
- import { useMappingData } from '../hooks/useMappingData.js';
8
- import { useFieldMapping } from '../hooks/useFieldMapping.js';
9
- import { UI_TEXT, FIELD_TYPE_NAMES } from '../constants/index.js';
9
+ import v4 from '../../node_modules/uuid/dist/esm-browser/v4.js';
10
10
  import { Flex } from '../../node_modules/@sparrowengg/twigs-react/dist/es/flex/flex.js';
11
- import { Heading } from '../../node_modules/@sparrowengg/twigs-react/dist/es/heading/heading.js';
12
11
  import { Box } from '../../node_modules/@sparrowengg/twigs-react/dist/es/box/box.js';
12
+ import { Heading } from '../../node_modules/@sparrowengg/twigs-react/dist/es/heading/heading.js';
13
13
  import { Text } from '../../node_modules/@sparrowengg/twigs-react/dist/es/text/text.js';
14
14
  import { Button } from '../../node_modules/@sparrowengg/twigs-react/dist/es/button/button.js';
15
15
  import { PlusIcon } from '../../node_modules/@sparrowengg/twigs-react-icons/dist/es/icons/plus.js';
@@ -17,6 +17,25 @@ import { Select } from '../../node_modules/@sparrowengg/twigs-react/dist/es/sele
17
17
  import { Checkbox } from '../../node_modules/@sparrowengg/twigs-react/dist/es/checkbox/checkbox.js';
18
18
  import { FormLabel } from '../../node_modules/@sparrowengg/twigs-react/dist/es/form-label/form-label.js';
19
19
 
20
+ var __defProp = Object.defineProperty;
21
+ var __defProps = Object.defineProperties;
22
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
23
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
24
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
25
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
26
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
27
+ var __spreadValues = (a, b) => {
28
+ for (var prop in b || (b = {}))
29
+ if (__hasOwnProp.call(b, prop))
30
+ __defNormalProp(a, prop, b[prop]);
31
+ if (__getOwnPropSymbols)
32
+ for (var prop of __getOwnPropSymbols(b)) {
33
+ if (__propIsEnum.call(b, prop))
34
+ __defNormalProp(a, prop, b[prop]);
35
+ }
36
+ return a;
37
+ };
38
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
39
  const Mapping = ({
21
40
  havingTypeDropdown,
22
41
  integrationName,
@@ -33,74 +52,103 @@ const Mapping = ({
33
52
  customList,
34
53
  oldResponse
35
54
  }) => {
55
+ const [ssMappingData, setSSMappingData] = useState({
56
+ questions: [],
57
+ variables: [],
58
+ contactProperties: [],
59
+ expressions: []
60
+ });
36
61
  const [showCustomPropertyModal, setShowCustomPropertyModal] = useState(false);
37
62
  const [customPropertyField, setCustomPropertyField] = useState("");
38
- const { ssMappingData, loading } = useMappingData({
39
- apiURL,
40
- surveyId,
41
- token
42
- });
43
- const {
44
- handleFieldValue,
45
- addNewField,
46
- removeField,
47
- essentialFields,
48
- commonFields
49
- } = useFieldMapping({
50
- fields,
51
- setFields
52
- });
53
- const hasRequiredProps = () => {
54
- return !!(fields && typeof setFields === "function" && integrationFields && setIntegrationFields !== void 0 && token);
55
- };
56
- const handleCustomPropertySave = () => {
57
- if (setIntegrationFields && customPropertyField) {
58
- setIntegrationFields((prev) => [
59
- ...prev,
60
- {
61
- id: customPropertyField,
62
- label: customPropertyField,
63
- value: customPropertyField,
64
- type: FIELD_TYPE_NAMES.STRING.toLowerCase()
65
- }
66
- ]);
63
+ const [loader, setLoader] = useState(true);
64
+ const essentialFields = fields == null ? void 0 : fields.filter((field) => field == null ? void 0 : field.isEssentialField);
65
+ const commonFields = fields == null ? void 0 : fields.filter((field) => !(field == null ? void 0 : field.isEssentialField));
66
+ const customHandler = (field, property, value) => {
67
+ if ((field == null ? void 0 : field.dependency) && typeof field.dependency === "object" && "length" in field.dependency) {
68
+ return field.dependency;
67
69
  }
68
- setShowCustomPropertyModal(false);
69
- setCustomPropertyField(UI_TEXT.EMPTY_PLACEHOLDER);
70
+ return [];
70
71
  };
71
- const handleCustomListChange = (value) => {
72
- if (customList.onChangeHandler) {
73
- customList.onChangeHandler(value);
74
- }
72
+ const handleFieldValue = (id, property, value) => {
73
+ let dependentField = [];
74
+ const targetField = fields.find((field) => field.id === id);
75
+ dependentField = customHandler(
76
+ targetField);
77
+ let currentFields = [...fields, ...dependentField].filter(
78
+ (obj, index, self) => index === self.findIndex((o) => JSON.stringify(o) === JSON.stringify(obj))
79
+ );
80
+ setFields(
81
+ currentFields == null ? void 0 : currentFields.map((field) => {
82
+ if (field.id === id) {
83
+ return property === "type" ? __spreadProps(__spreadValues({}, field), { surveySparrowField: null, mappedType: value, id: id.toString() }) : property === "integrationFieldType" ? __spreadProps(__spreadValues({}, field), { defaultValue: null, [property]: value }) : __spreadProps(__spreadValues({}, field), { [property]: value });
84
+ } else {
85
+ return __spreadValues({}, field);
86
+ }
87
+ })
88
+ );
75
89
  };
76
- const handleOldResponseChange = (value) => {
77
- if (oldResponse.onChangeHandler) {
78
- oldResponse.onChangeHandler(value);
90
+ const hasRequiredProps = () => !!fields && !!setFields && !!integrationFields && !!setIntegrationFields && !!token;
91
+ const fetchInitialMappingData = async () => {
92
+ setLoader(true);
93
+ try {
94
+ const [questions, variables, contactProperties, expressions] = await Promise.all([
95
+ fetchSurveyQuestions(apiURL, surveyId, token != null ? token : ""),
96
+ fetchSurveyVariables(apiURL, surveyId, token != null ? token : ""),
97
+ fetchContactProperties(apiURL, token != null ? token : ""),
98
+ fetchSurveyExpression(apiURL, surveyId, token != null ? token : "")
99
+ ]);
100
+ setSSMappingData({
101
+ questions: questions || [],
102
+ contactProperties: contactProperties || [],
103
+ variables: variables || [],
104
+ expressions: expressions || []
105
+ });
106
+ } catch (error) {
107
+ console.error(MAPPING_ERROR_MESSAGES.FETCH_ERROR, error);
108
+ setSSMappingData({
109
+ questions: [],
110
+ contactProperties: [],
111
+ variables: [],
112
+ expressions: []
113
+ });
114
+ } finally {
115
+ setLoader(false);
79
116
  }
80
117
  };
81
- if (loading) {
82
- return /* @__PURE__ */ React__default.createElement(
83
- Flex,
84
- {
85
- alignItems: "center",
86
- justifyContent: "center",
87
- css: { height: "calc(100vh - 57px)" }
88
- },
89
- /* @__PURE__ */ React__default.createElement(Spinner, null)
118
+ useEffect(() => {
119
+ setFields(
120
+ (fields == null ? void 0 : fields.length) === 0 ? [__spreadProps(__spreadValues({}, DEFAULT_FIELD_VALUE), { id: v4() })] : fields == null ? void 0 : fields.map((field) => __spreadProps(__spreadValues({}, field), { id: v4() }))
90
121
  );
91
- }
92
- if (!hasRequiredProps()) {
93
- return /* @__PURE__ */ React__default.createElement(
94
- Flex,
95
- {
96
- alignItems: "center",
97
- justifyContent: "center",
98
- css: { height: "100%" }
99
- },
100
- /* @__PURE__ */ React__default.createElement(Heading, { size: "h4", weight: "bold" }, UI_TEXT.PROVIDE_NEEDED_PROPS)
101
- );
102
- }
103
- return /* @__PURE__ */ React__default.createElement(Flex, { alignItems: "center", justifyContent: "center" }, /* @__PURE__ */ React__default.createElement(Box, { css: { maxWidth: 1120, width: "100%", marginBlock: "$40" } }, /* @__PURE__ */ React__default.createElement(Heading, { size: "h5", css: { color: "$neutral900" } }, `${UI_TEXT.MAP_TO_PREFIX} ${integrationName}`), /* @__PURE__ */ React__default.createElement(Flex, { gap: "$2", css: { marginTop: "$4" } }, /* @__PURE__ */ React__default.createElement(Text, { size: "sm", css: { color: "$neutral500" } }, UI_TEXT.SURVEY_NAME_LABEL), /* @__PURE__ */ React__default.createElement(Text, { size: "sm", weight: "medium", css: { color: "$neutral800" } }, surveyDetails.surveyName)), !!(essentialFields == null ? void 0 : essentialFields.length) && /* @__PURE__ */ React__default.createElement(
122
+ if (!!token && (token == null ? void 0 : token.length) > 60 && !!surveyId) {
123
+ fetchInitialMappingData();
124
+ } else {
125
+ setLoader(false);
126
+ }
127
+ }, [token, surveyId]);
128
+ return /* @__PURE__ */ React__default.createElement(Flex, { alignItems: "center", justifyContent: "center" }, hasRequiredProps() ? /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, loader ? /* @__PURE__ */ React__default.createElement(
129
+ Flex,
130
+ {
131
+ alignItems: "center",
132
+ justifyContent: "center",
133
+ css: { height: "calc(100vh - 57px)" }
134
+ },
135
+ /* @__PURE__ */ React__default.createElement(Spinner, null)
136
+ ) : /* @__PURE__ */ React__default.createElement(Box, { css: { maxWidth: 1120, width: "100%", marginBlock: "$40" } }, /* @__PURE__ */ React__default.createElement(
137
+ Heading,
138
+ {
139
+ size: "h5",
140
+ css: { color: "$neutral900" }
141
+ },
142
+ `Map to ${integrationName}`
143
+ ), /* @__PURE__ */ React__default.createElement(Flex, { gap: "$2", css: { marginTop: "$4" } }, /* @__PURE__ */ React__default.createElement(Text, { size: "sm", css: { color: "$neutral500" } }, "Survey Name:"), /* @__PURE__ */ React__default.createElement(
144
+ Text,
145
+ {
146
+ size: "sm",
147
+ weight: "medium",
148
+ css: { color: "$neutral800" }
149
+ },
150
+ surveyDetails.surveyName
151
+ )), !!(essentialFields == null ? void 0 : essentialFields.length) && /* @__PURE__ */ React__default.createElement(
104
152
  Box,
105
153
  {
106
154
  css: {
@@ -120,57 +168,82 @@ const Mapping = ({
120
168
  marginTop: "$4"
121
169
  }
122
170
  },
123
- UI_TEXT.CONNECTION_REQUIRES_TEXT,
171
+ "This connection requires",
124
172
  " ",
125
- /* @__PURE__ */ React__default.createElement(PlaceholderSpan, { color: "$neutral600" }, essentialFields.length),
173
+ /* @__PURE__ */ React__default.createElement(PlaceholderSpan, { color: "$neutral600" }, essentialFields == null ? void 0 : essentialFields.length),
126
174
  /* @__PURE__ */ React__default.createElement(PlaceholderSpan, { color: "$negative500" }, "*"),
127
175
  " ",
128
- UI_TEXT.ESSENTIAL_MAPPINGS_TEXT
176
+ "essential mappings"
129
177
  ),
130
- /* @__PURE__ */ React__default.createElement(Flex, { flexDirection: "column", gap: "$20", css: { marginTop: "$12" } }, essentialFields.map((field, idx) => /* @__PURE__ */ React__default.createElement(
178
+ /* @__PURE__ */ React__default.createElement(
179
+ Flex,
180
+ {
181
+ flexDirection: "column",
182
+ gap: "$20",
183
+ css: { marginTop: "$12" }
184
+ },
185
+ essentialFields == null ? void 0 : essentialFields.map((field, idx) => /* @__PURE__ */ React__default.createElement(
186
+ Field,
187
+ {
188
+ surveyType,
189
+ havingTypeDropdown,
190
+ key: field.id,
191
+ field,
192
+ integrationName,
193
+ handleFieldValue: (id, property, value) => handleFieldValue(id, property, value),
194
+ hasCustomMenuProperty,
195
+ integrationFields,
196
+ isBtnDisabled: commonFields.length === 1,
197
+ isFirstField: idx === 0,
198
+ ssMappingData,
199
+ showCustomPropertyModal: () => {
200
+ setShowCustomPropertyModal(true);
201
+ }
202
+ }
203
+ ))
204
+ )
205
+ ), /* @__PURE__ */ React__default.createElement(Flex, { flexDirection: "column", gap: "$16", css: { marginTop: "$16" } }, commonFields == null ? void 0 : commonFields.map((field, idx) => {
206
+ return /* @__PURE__ */ React__default.createElement(
131
207
  Field,
132
208
  {
133
- key: field.id,
134
209
  surveyType,
135
210
  havingTypeDropdown,
211
+ key: field.id,
136
212
  field,
137
213
  integrationName,
138
- handleFieldValue,
214
+ removeField: () => {
215
+ setFields(
216
+ (prev) => prev.filter(
217
+ (currentField) => currentField.id !== field.id
218
+ )
219
+ );
220
+ },
221
+ handleFieldValue: (id, property, value) => handleFieldValue(id, property, value),
139
222
  hasCustomMenuProperty,
140
223
  integrationFields,
141
- isBtnDisabled: commonFields.length === 1,
224
+ isBtnDisabled: false,
142
225
  isFirstField: idx === 0,
143
226
  ssMappingData,
144
- showCustomPropertyModal: () => setShowCustomPropertyModal(true)
227
+ showCustomPropertyModal: () => {
228
+ setShowCustomPropertyModal(true);
229
+ }
145
230
  }
146
- )))
147
- ), /* @__PURE__ */ React__default.createElement(Flex, { flexDirection: "column", gap: "$16", css: { marginTop: "$16" } }, commonFields.map((field, idx) => /* @__PURE__ */ React__default.createElement(
148
- Field,
149
- {
150
- key: field.id,
151
- surveyType,
152
- havingTypeDropdown,
153
- field,
154
- integrationName,
155
- removeField: () => removeField(field.id),
156
- handleFieldValue,
157
- hasCustomMenuProperty,
158
- integrationFields,
159
- isBtnDisabled: false,
160
- isFirstField: idx === 0,
161
- ssMappingData,
162
- showCustomPropertyModal: () => setShowCustomPropertyModal(true)
163
- }
164
- ))), /* @__PURE__ */ React__default.createElement(
231
+ );
232
+ })), /* @__PURE__ */ React__default.createElement(
165
233
  Button,
166
234
  {
167
235
  leftIcon: /* @__PURE__ */ React__default.createElement(PlusIcon, null),
168
236
  color: "default",
169
237
  css: { marginTop: "$10" },
170
- onClick: addNewField,
238
+ onClick: () => setFields([
239
+ ...fields,
240
+ __spreadProps(__spreadValues({}, DEFAULT_FIELD_VALUE), {
241
+ id: v4()
242
+ })
243
+ ]),
171
244
  size: "md"
172
245
  },
173
- UI_TEXT.NEW_MAPPING_FIELD_BUTTON
246
+ "New mapping field"
174
247
  ), (customList == null ? void 0 : customList.hasCustomList) && /* @__PURE__ */ React__default.createElement(
175
248
  Flex,
176
249
  {
@@ -178,7 +251,7 @@ const Mapping = ({
178
251
  flexDirection: "column",
179
252
  gap: "$8"
180
253
  },
181
- /* @__PURE__ */ React__default.createElement(Flex, { flexDirection: "column", gap: "$3" }, /* @__PURE__ */ React__default.createElement(Heading, { size: "h5" }, UI_TEXT.CHOOSE_LIST_HEADING), /* @__PURE__ */ React__default.createElement(Text, { css: { color: "$neutral500" }, size: "sm" }, UI_TEXT.CHOOSE_LIST_DESCRIPTION)),
254
+ /* @__PURE__ */ React__default.createElement(Flex, { flexDirection: "column", gap: "$3" }, /* @__PURE__ */ React__default.createElement(Heading, { size: "h5" }, "Choose a List"), /* @__PURE__ */ React__default.createElement(Text, { css: { color: "$neutral500" }, size: "sm" }, "Pick a list to save mapped fields; If not, they'll be saved under all profiles.")),
182
255
  /* @__PURE__ */ React__default.createElement(
183
256
  Select,
184
257
  {
@@ -186,29 +259,45 @@ const Mapping = ({
186
259
  size: "lg",
187
260
  options: customList.options,
188
261
  value: customList.value,
189
- placeholder: UI_TEXT.EMPTY_PLACEHOLDER,
190
- onChange: handleCustomListChange
262
+ placeholder: "",
263
+ onChange: (value) => customList.onChangeHandler(value)
191
264
  }
192
265
  )
193
266
  ), (oldResponse == null ? void 0 : oldResponse.hasOldResponse) && /* @__PURE__ */ React__default.createElement(
194
267
  Checkbox,
195
268
  {
196
- onChange: handleOldResponseChange,
269
+ onChange: (value) => oldResponse.onChangeHandler(value),
197
270
  css: { marginBlock: "$8", cursor: "pointer" },
198
271
  checked: oldResponse.value
199
272
  },
200
- /* @__PURE__ */ React__default.createElement(FormLabel, { size: "sm" }, UI_TEXT.IMPORT_OLD_RESPONSE_LABEL)
273
+ /* @__PURE__ */ React__default.createElement(FormLabel, { size: "sm" }, "Import Old Response")
201
274
  ), showCustomPropertyModal && /* @__PURE__ */ React__default.createElement(
202
275
  ImportModal,
203
276
  {
204
- onClose: () => {
277
+ onCloseHandler: () => setShowCustomPropertyModal(false),
278
+ onInputHandler: (value) => setCustomPropertyField(value),
279
+ onSaveHandler: () => {
280
+ setIntegrationFields && setIntegrationFields((prev) => [
281
+ ...prev,
282
+ {
283
+ id: customPropertyField,
284
+ label: customPropertyField,
285
+ value: customPropertyField,
286
+ type: "string"
287
+ }
288
+ ]);
205
289
  setShowCustomPropertyModal(false);
206
- setCustomPropertyField(UI_TEXT.EMPTY_PLACEHOLDER);
207
- },
208
- onInputChange: setCustomPropertyField,
209
- onSave: handleCustomPropertySave
290
+ }
210
291
  }
211
- )));
292
+ ))) : /* @__PURE__ */ React__default.createElement(
293
+ Flex,
294
+ {
295
+ alignItems: "center",
296
+ justifyContent: "center",
297
+ css: { height: "100%" }
298
+ },
299
+ /* @__PURE__ */ React__default.createElement(Heading, { size: "h4", weight: "bold" }, "Provide the needed props to import Mapping Template")
300
+ ));
212
301
  };
213
302
 
214
303
  export { Mapping };
@@ -1 +1 @@
1
- {"version":3,"file":"mapping.js","sources":["../../../../src/mapping/components/mapping.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport {\n Box,\n Button,\n Checkbox,\n Flex,\n FormLabel,\n Heading,\n Select,\n Text,\n} from \"@sparrowengg/twigs-react\";\nimport { PlusIcon } from \"@sparrowengg/twigs-react-icons\";\nimport { surveySparrowURL } from \"../../commons/constants\";\nimport ImportModal from \"../../commons/components/import-modal\";\nimport Spinner from \"../../commons/components/spinner\";\nimport Field from \"./field\";\nimport PlaceholderSpan from \"./placeholder-span\";\nimport { FieldMappingProps, IntegrationFieldType } from \"../types\";\nimport { useMappingData, useFieldMapping } from \"../hooks\";\nimport { UI_TEXT, FIELD_TYPE_NAMES } from \"../constants\";\n\n/**\n * Mapping component - Displays and manages field mappings\n */\nexport const Mapping: React.FC<FieldMappingProps> = ({\n havingTypeDropdown,\n integrationName,\n surveyId,\n surveyType,\n fields,\n setFields,\n integrationFields,\n hasCustomMenuProperty,\n setIntegrationFields,\n apiURL = surveySparrowURL,\n token,\n surveyDetails,\n customList,\n oldResponse,\n}) => {\n const [showCustomPropertyModal, setShowCustomPropertyModal] = useState(false);\n const [customPropertyField, setCustomPropertyField] = useState<string>(\"\");\n\n // Fetch mapping data\n const { ssMappingData, loading } = useMappingData({\n apiURL,\n surveyId,\n token,\n });\n\n // Manage field mappings\n const {\n handleFieldValue,\n addNewField,\n removeField,\n essentialFields,\n commonFields,\n } = useFieldMapping({\n fields,\n setFields,\n });\n\n // Check if all required props are provided\n const hasRequiredProps = (): boolean => {\n return !!(\n fields &&\n typeof setFields === 'function' &&\n integrationFields &&\n (setIntegrationFields !== undefined) &&\n token\n );\n };\n\n const handleCustomPropertySave = (): void => {\n if (setIntegrationFields && customPropertyField) {\n setIntegrationFields((prev) => [\n ...prev,\n {\n id: customPropertyField,\n label: customPropertyField,\n value: customPropertyField,\n type: FIELD_TYPE_NAMES.STRING.toLowerCase(),\n } as IntegrationFieldType,\n ]);\n }\n setShowCustomPropertyModal(false);\n setCustomPropertyField(UI_TEXT.EMPTY_PLACEHOLDER);\n };\n\n const handleCustomListChange = (value: unknown): void => {\n if (customList.onChangeHandler) {\n customList.onChangeHandler(value as Parameters<typeof customList.onChangeHandler>[0]);\n }\n };\n\n const handleOldResponseChange = (value: unknown): void => {\n if (oldResponse.onChangeHandler) {\n oldResponse.onChangeHandler(value as Parameters<typeof oldResponse.onChangeHandler>[0]);\n }\n };\n\n // Loading state\n if (loading) {\n return (\n <Flex\n alignItems=\"center\"\n justifyContent=\"center\"\n css={{ height: \"calc(100vh - 57px)\" }}\n >\n <Spinner />\n </Flex>\n );\n }\n\n // Missing required props\n if (!hasRequiredProps()) {\n return (\n <Flex\n alignItems=\"center\"\n justifyContent=\"center\"\n css={{ height: \"100%\" }}\n >\n <Heading size=\"h4\" weight=\"bold\">\n {UI_TEXT.PROVIDE_NEEDED_PROPS}\n </Heading>\n </Flex>\n );\n }\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"center\">\n <Box css={{ maxWidth: 1120, width: \"100%\", marginBlock: \"$40\" }}>\n {/* Header */}\n <Heading size=\"h5\" css={{ color: \"$neutral900\" }}>\n {`${UI_TEXT.MAP_TO_PREFIX} ${integrationName}`}\n </Heading>\n <Flex gap=\"$2\" css={{ marginTop: \"$4\" }}>\n <Text size=\"sm\" css={{ color: \"$neutral500\" }}>\n {UI_TEXT.SURVEY_NAME_LABEL}\n </Text>\n <Text size=\"sm\" weight=\"medium\" css={{ color: \"$neutral800\" }}>\n {surveyDetails.surveyName}\n </Text>\n </Flex>\n\n {/* Essential Fields Section */}\n {!!essentialFields?.length && (\n <Box\n css={{\n width: \"100%\",\n paddingBlock: \"$12 $20\",\n borderBottom: \"$borderWidths$xs dashed $neutral200\",\n maxWidth: 1084,\n }}\n >\n <Text\n size=\"md\"\n css={{\n color: \"$neutral500\",\n lineHeight: \"$md\",\n marginTop: \"$4\",\n }}\n >\n {UI_TEXT.CONNECTION_REQUIRES_TEXT}{\" \"}\n <PlaceholderSpan color=\"$neutral600\">\n {essentialFields.length}\n </PlaceholderSpan>\n <PlaceholderSpan color=\"$negative500\">*</PlaceholderSpan> {UI_TEXT.ESSENTIAL_MAPPINGS_TEXT}\n </Text>\n <Flex flexDirection=\"column\" gap=\"$20\" css={{ marginTop: \"$12\" }}>\n {essentialFields.map((field, idx) => (\n <Field\n key={field.id}\n surveyType={surveyType}\n havingTypeDropdown={havingTypeDropdown}\n field={field}\n integrationName={integrationName}\n handleFieldValue={handleFieldValue}\n hasCustomMenuProperty={hasCustomMenuProperty}\n integrationFields={integrationFields}\n isBtnDisabled={commonFields.length === 1}\n isFirstField={idx === 0}\n ssMappingData={ssMappingData}\n showCustomPropertyModal={() => setShowCustomPropertyModal(true)}\n />\n ))}\n </Flex>\n </Box>\n )}\n\n {/* Common Fields Section */}\n <Flex flexDirection=\"column\" gap=\"$16\" css={{ marginTop: \"$16\" }}>\n {commonFields.map((field, idx) => (\n <Field\n key={field.id}\n surveyType={surveyType}\n havingTypeDropdown={havingTypeDropdown}\n field={field}\n integrationName={integrationName}\n removeField={() => removeField(field.id)}\n handleFieldValue={handleFieldValue}\n hasCustomMenuProperty={hasCustomMenuProperty}\n integrationFields={integrationFields}\n isBtnDisabled={false}\n isFirstField={idx === 0}\n ssMappingData={ssMappingData}\n showCustomPropertyModal={() => setShowCustomPropertyModal(true)}\n />\n ))}\n </Flex>\n\n {/* Add New Field Button */}\n <Button\n leftIcon={<PlusIcon />}\n color=\"default\"\n css={{ marginTop: \"$10\" }}\n onClick={addNewField}\n size=\"md\"\n >\n {UI_TEXT.NEW_MAPPING_FIELD_BUTTON}\n </Button>\n\n {/* Custom List Selection */}\n {customList?.hasCustomList && (\n <Flex\n css={{ marginTop: \"$40\" }}\n flexDirection=\"column\"\n gap=\"$8\"\n >\n <Flex flexDirection=\"column\" gap=\"$3\">\n <Heading size=\"h5\">{UI_TEXT.CHOOSE_LIST_HEADING}</Heading>\n <Text css={{ color: \"$neutral500\" }} size=\"sm\">\n {UI_TEXT.CHOOSE_LIST_DESCRIPTION}\n </Text>\n </Flex>\n <Select\n css={{ maxWidth: 400, width: \"100%\" }}\n size=\"lg\"\n options={customList.options}\n value={customList.value}\n placeholder={UI_TEXT.EMPTY_PLACEHOLDER}\n onChange={handleCustomListChange}\n />\n </Flex>\n )}\n\n {/* Old Response Checkbox */}\n {oldResponse?.hasOldResponse && (\n <Checkbox\n onChange={handleOldResponseChange}\n css={{ marginBlock: \"$8\", cursor: \"pointer\" }}\n checked={oldResponse.value as boolean}\n >\n <FormLabel size=\"sm\">{UI_TEXT.IMPORT_OLD_RESPONSE_LABEL}</FormLabel>\n </Checkbox>\n )}\n\n {/* Custom Property Modal */}\n {showCustomPropertyModal && (\n <ImportModal\n onClose={() => {\n setShowCustomPropertyModal(false);\n setCustomPropertyField(UI_TEXT.EMPTY_PLACEHOLDER);\n }}\n onInputChange={setCustomPropertyField}\n onSave={handleCustomPropertySave}\n />\n )}\n </Box>\n </Flex>\n );\n};\n"],"names":["React"],"mappings":"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"}
1
+ {"version":3,"file":"mapping.js","sources":["../../../../src/mapping/components/mapping.tsx"],"sourcesContent":["import {\n Box,\n Button,\n Checkbox,\n Flex,\n FormLabel,\n Heading,\n Select,\n Text,\n} from \"@sparrowengg/twigs-react\";\nimport React, { useEffect, useState, useMemo } from \"react\";\nimport { PlusIcon } from \"@sparrowengg/twigs-react-icons\";\nimport { surveySparrowURL } from \"../../commons/constants\";\nimport { DEFAULT_FIELD_VALUE, MAPPING_ERROR_MESSAGES } from \"../constants\";\nimport { v4 as uuid } from \"uuid\";\nimport {\n fetchContactProperties,\n fetchSurveyQuestions,\n fetchSurveyVariables,\n fetchSurveyExpression,\n} from \"../services\";\nimport { MappingTypeProps, ssMappingDataResponse, FieldType, SelectOption, IntegrationFieldType } from \"../types\";\nimport { FormFieldValue, FieldChangeHandler } from \"../../commons/types/enhanced\";\nimport { UI_CONSTANTS, MAPPING_TYPES } from \"../../commons/constants/enhanced\";\nimport ImportModal from \"../../commons/components/import-modal\";\nimport Spinner from \"../../commons/components/spinner\";\nimport Field from \"./field\";\nimport PlaceholderSpan from \"./placeholder-span\";\n\n\nexport const Mapping: React.FC<MappingTypeProps> = ({\n havingTypeDropdown,\n integrationName,\n surveyId,\n surveyType,\n fields,\n setFields,\n integrationFields,\n hasCustomMenuProperty,\n setIntegrationFields,\n apiURL = surveySparrowURL,\n token,\n surveyDetails,\n customList,\n oldResponse,\n}) => {\n const [ssMappingData, setSSMappingData] = useState<\n ssMappingDataResponse<SelectOption>\n >({\n questions: [],\n variables: [],\n contactProperties: [],\n expressions: [],\n });\n const [showCustomPropertyModal, setShowCustomPropertyModal] = useState(false);\n const [customPropertyField, setCustomPropertyField] = useState<string>(\"\");\n const [loader, setLoader] = useState<boolean>(true);\n const essentialFields = fields?.filter((field) => field?.isEssentialField);\n const commonFields = fields?.filter((field) => !field?.isEssentialField);\n\n const customHandler = (field: FieldType | undefined, property: string, value: FormFieldValue): Array<IntegrationFieldType> => {\n if (field?.dependency && typeof field.dependency === 'object' && 'length' in field.dependency) {\n return (field.dependency as unknown) as Array<IntegrationFieldType>;\n }\n return [];\n };\n\n const handleFieldValue: FieldChangeHandler = (id: string | number, property: string, value: FormFieldValue) => {\n let dependentField: Array<IntegrationFieldType> = [];\n const targetField = fields.find((field) => field.id === id);\n dependentField = customHandler(\n targetField,\n property,\n value\n );\n let currentFields = [...fields, ...dependentField].filter(\n (obj, index, self) =>\n index ===\n self.findIndex((o) => JSON.stringify(o) === JSON.stringify(obj))\n );\n setFields(\n currentFields?.map((field) => {\n if (field.id === id) {\n return property === \"type\"\n ? { ...field, surveySparrowField: null, mappedType: value, id: id.toString() }\n : property === \"integrationFieldType\"\n ? { ...field, defaultValue: null, [property]: value }\n : { ...field, [property]: value };\n } else {\n return { ...field };\n }\n }) as FieldType[]\n );\n };\n\n const hasRequiredProps = () =>\n !!fields &&\n !!setFields &&\n !!integrationFields &&\n !!setIntegrationFields &&\n !!token;\n\n const fetchInitialMappingData = async (): Promise<void> => {\n setLoader(true);\n try {\n const [questions, variables, contactProperties, expressions] =\n await Promise.all([\n fetchSurveyQuestions(apiURL, surveyId, token ?? \"\"),\n fetchSurveyVariables(apiURL, surveyId, token ?? \"\"),\n fetchContactProperties(apiURL, token ?? \"\"),\n fetchSurveyExpression(apiURL, surveyId, token ?? \"\"),\n ]);\n setSSMappingData({\n questions: (questions as any) || [],\n contactProperties: (contactProperties as any) || [],\n variables: (variables as any) || [],\n expressions: (expressions as any) || [],\n });\n } catch (error) {\n console.error(MAPPING_ERROR_MESSAGES.FETCH_ERROR, error);\n setSSMappingData({\n questions: [],\n contactProperties: [],\n variables: [],\n expressions: [],\n });\n } finally {\n setLoader(false);\n }\n };\n\n const getEssentialFieldsNumber = (length: number): string => {\n const numberMapping: Record<number, string> = {\n 1: \"one\",\n 2: \"two\",\n 3: \"three\",\n 4: \"four\",\n 5: \"five\",\n 6: \"six\",\n 7: \"seven\",\n 8: \"eight\",\n 9: \"nine\",\n 10: \"ten\",\n };\n return numberMapping[length] ?? \"These\";\n };\n\n useEffect(() => {\n setFields(\n fields?.length === 0\n ? [{ ...DEFAULT_FIELD_VALUE, id: uuid() } as FieldType]\n : fields?.map((field) => ({ ...field, id: uuid() })) as FieldType[]\n );\n if (!!token && token?.length > 60 && !!surveyId) {\n fetchInitialMappingData();\n } else {\n setLoader(false);\n }\n }, [token, surveyId]);\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"center\">\n {hasRequiredProps() ? (\n <>\n {loader ? (\n <Flex\n alignItems=\"center\"\n justifyContent=\"center\"\n css={{ height: \"calc(100vh - 57px)\" }}\n >\n <Spinner />\n </Flex>\n ) : (\n <Box css={{ maxWidth: 1120, width: \"100%\", marginBlock: \"$40\" }}>\n <Heading\n size=\"h5\"\n css={{ color: \"$neutral900\" }}\n >{`Map to ${integrationName}`}</Heading>\n <Flex gap=\"$2\" css={{ marginTop: \"$4\" }}>\n <Text size=\"sm\" css={{ color: \"$neutral500\" }}>\n Survey Name:\n </Text>\n <Text\n size=\"sm\"\n weight={\"medium\"}\n css={{ color: \"$neutral800\" }}\n >\n {surveyDetails.surveyName}\n </Text>\n </Flex>\n {!!essentialFields?.length && (\n <Box\n css={{\n width: \"100%\",\n paddingBlock: \"$12 $20\",\n borderBottom: \"$borderWidths$xs dashed $neutral200\",\n maxWidth: 1084,\n }}\n >\n <Text\n size=\"md\"\n css={{\n color: \"$neutral500\",\n lineHeight: \"$md\",\n marginTop: \"$4\",\n }}\n >\n This connection requires{\" \"}\n <PlaceholderSpan color=\"$neutral600\">\n {essentialFields?.length}\n </PlaceholderSpan>\n <PlaceholderSpan color=\"$negative500\">*</PlaceholderSpan>{\" \"}\n essential mappings\n </Text>\n <Flex\n flexDirection=\"column\"\n gap=\"$20\"\n css={{ marginTop: \"$12\" }}\n >\n {essentialFields?.map((field, idx) => (\n <Field\n surveyType={surveyType}\n havingTypeDropdown={havingTypeDropdown}\n key={field.id}\n field={field}\n integrationName={integrationName}\n handleFieldValue={(id: string | number, property: string, value: FormFieldValue) =>\n handleFieldValue(id, property, value)\n }\n hasCustomMenuProperty={hasCustomMenuProperty}\n integrationFields={integrationFields}\n isBtnDisabled={commonFields.length === 1}\n isFirstField={idx === 0}\n ssMappingData={ssMappingData}\n showCustomPropertyModal={() => {\n setShowCustomPropertyModal(true);\n }}\n />\n ))}\n </Flex>\n </Box>\n )}\n <Flex flexDirection=\"column\" gap=\"$16\" css={{ marginTop: \"$16\" }}>\n {commonFields?.map((field, idx) => {\n return (\n <Field\n surveyType={surveyType}\n havingTypeDropdown={havingTypeDropdown}\n key={field.id}\n field={field}\n integrationName={integrationName}\n removeField={() => {\n setFields((prev) =>\n prev.filter(\n (currentField) => currentField.id !== field.id\n )\n );\n }}\n handleFieldValue={(id: string | number, property: string, value: FormFieldValue) =>\n handleFieldValue(id, property, value)\n }\n hasCustomMenuProperty={hasCustomMenuProperty}\n integrationFields={integrationFields}\n isBtnDisabled={false}\n isFirstField={idx === 0}\n ssMappingData={ssMappingData}\n showCustomPropertyModal={() => {\n setShowCustomPropertyModal(true);\n }}\n />\n );\n })}\n </Flex>\n <Button\n leftIcon={<PlusIcon />}\n color=\"default\"\n css={{ marginTop: \"$10\" }}\n onClick={() =>\n setFields([\n ...fields,\n {\n ...DEFAULT_FIELD_VALUE,\n id: uuid(),\n } as FieldType,\n ])\n }\n size=\"md\"\n >\n New mapping field\n </Button>\n {customList?.hasCustomList && (\n <Flex\n css={{ marginTop: \"$40\" }}\n flexDirection=\"column\"\n gap=\"$8\"\n >\n <Flex flexDirection=\"column\" gap=\"$3\">\n <Heading size=\"h5\">Choose a List</Heading>\n <Text css={{ color: \"$neutral500\" }} size=\"sm\">\n Pick a list to save mapped fields; If not, they'll be\n saved under all profiles.\n </Text>\n </Flex>\n <Select\n css={{ maxWidth: 400, width: \"100%\" }}\n size=\"lg\"\n options={customList.options}\n value={customList.value}\n placeholder=\"\"\n onChange={(value: any) => customList.onChangeHandler(value)}\n />\n </Flex>\n )}\n {/* Old Response */}\n {oldResponse?.hasOldResponse && (\n <Checkbox\n onChange={(value: any) => oldResponse.onChangeHandler(value)}\n css={{ marginBlock: \"$8\", cursor: \"pointer\" }}\n checked={oldResponse.value as boolean}\n >\n <FormLabel size=\"sm\">Import Old Response</FormLabel>\n </Checkbox>\n )}\n {showCustomPropertyModal && (\n <ImportModal\n onCloseHandler={() => setShowCustomPropertyModal(false)}\n onInputHandler={(value: any) => setCustomPropertyField(value)}\n onSaveHandler={() => {\n setIntegrationFields &&\n setIntegrationFields((prev) => [\n ...prev,\n {\n id: customPropertyField,\n label: customPropertyField,\n value: customPropertyField,\n type: 'string',\n } as unknown as IntegrationFieldType,\n ]);\n setShowCustomPropertyModal(false);\n }}\n />\n )}\n </Box>\n )}\n </>\n ) : (\n <Flex\n alignItems=\"center\"\n justifyContent=\"center\"\n css={{ height: \"100%\" }}\n >\n <Heading size=\"h4\" weight=\"bold\">\n Provide the needed props to import Mapping Template\n </Heading>\n </Flex>\n )}\n </Flex>\n );\n};\n"],"names":["uuid","React"],"mappings":"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"}