@sparrowengg/integrations-templates-frontend 7.0.0-bulkify.8 → 8.0.1

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.
@@ -9,6 +9,7 @@ var iconButton = require('../../node_modules/@sparrowengg/twigs-react/dist/es/bu
9
9
  var arrowLeft = require('../../node_modules/@sparrowengg/twigs-react-icons/dist/es/icons/arrow-left.js');
10
10
  var heading = require('../../node_modules/@sparrowengg/twigs-react/dist/es/heading/heading.js');
11
11
  var button = require('../../node_modules/@sparrowengg/twigs-react/dist/es/button/button.js');
12
+ var useToast = require('../../node_modules/@sparrowengg/twigs-react/dist/es/hooks/use-toast.js');
12
13
 
13
14
  const ContactImportHeader = ({
14
15
  importName,
@@ -23,7 +24,7 @@ const ContactImportHeader = ({
23
24
  navigateMappingPage,
24
25
  invitePortal
25
26
  }) => {
26
- var _a, _b;
27
+ var _a;
27
28
  const [showImportModal, setShowImportModal] = React.useState(false);
28
29
  const handleBackClick = () => {
29
30
  setNewImport(false);
@@ -35,6 +36,16 @@ const ContactImportHeader = ({
35
36
  }
36
37
  };
37
38
  const handleContinueMapping = () => {
39
+ var _a2;
40
+ if (!((_a2 = contactImportField == null ? void 0 : contactImportField.fields) == null ? void 0 : _a2.some(
41
+ (field) => (field == null ? void 0 : field.surveySparrowField) === "email" || (field == null ? void 0 : field.surveySparrowField) === "mobile"
42
+ ))) {
43
+ useToast.toast({
44
+ variant: "error",
45
+ title: "Please map Email or mobile or uniqueId field"
46
+ });
47
+ return;
48
+ }
38
49
  setShowImportModal(true);
39
50
  };
40
51
  const handleSaveAndClose = async (importName2) => {
@@ -108,8 +119,6 @@ const ContactImportHeader = ({
108
119
  {
109
120
  disabled: !((_a = contactImportField == null ? void 0 : contactImportField.fields) == null ? void 0 : _a.some(
110
121
  (field) => (field == null ? void 0 : field.integrationField) && (field == null ? void 0 : field.surveySparrowField)
111
- )) || !((_b = contactImportField == null ? void 0 : contactImportField.fields) == null ? void 0 : _b.some(
112
- (field) => (field == null ? void 0 : field.surveySparrowField) === "email" || (field == null ? void 0 : field.surveySparrowField) === "mobile"
113
122
  )),
114
123
  size: "lg",
115
124
  onClick: handleContinueMapping,
@@ -1 +1 @@
1
- {"version":3,"file":"ContactImportHeader.js","sources":["../../../../src/contact-import/components/ContactImportHeader.tsx"],"sourcesContent":["import {\n Button,\n Flex,\n Heading,\n IconButton,\n} from \"@sparrowengg/twigs-react\";\nimport { ArrowLeftIcon } from \"@sparrowengg/twigs-react-icons\";\nimport React, { useState } from \"react\";\nimport Arrow from \"../../commons/icons/arrow\";\nimport { ContactImportHeaderProps } from \"../types\";\nimport { CONTACT_IMPORT_UI_STRINGS } from \"../constants/ui-strings\";\nimport { ContactImportModal } from \"./ContactImportModal\";\n\nexport const ContactImportHeader: React.FC<ContactImportHeaderProps> = ({\n importName,\n setImportName,\n setNewImport,\n setContactImportField,\n contactImportField,\n hasPreviousMapping,\n previousMappingHandler,\n onSaveHandler,\n isContactMappingPage,\n navigateMappingPage,\n invitePortal,\n}) => {\n const [showImportModal, setShowImportModal] = useState(false);\n\n const handleBackClick = () => {\n setNewImport(false);\n previousMappingHandler();\n };\n\n const handleEventSetupClick = () => {\n if (isContactMappingPage) {\n navigateMappingPage(false);\n }\n };\n\n const handleContinueMapping = () => {\n setShowImportModal(true);\n };\n\n const handleSaveAndClose = async (importName: string) => {\n await onSaveHandler(importName);\n };\n\n return (\n <Flex\n alignItems=\"center\"\n justifyContent=\"space-between\"\n css={{\n borderBottom: \"$borderWidths$xs solid $neutral200\",\n padding: \"$8 $12\",\n }}\n >\n <Flex\n gap=\"$6\"\n alignItems=\"center\"\n css={{ visibility: hasPreviousMapping ? \"visible\" : \"hidden\" }}\n >\n <IconButton\n onClick={handleBackClick}\n color=\"default\"\n icon={<ArrowLeftIcon />}\n size=\"lg\"\n aria-label=\"Go back\"\n />\n <Heading size=\"h6\">{CONTACT_IMPORT_UI_STRINGS.NEW_CONTACT_IMPORT}</Heading>\n </Flex>\n <Flex\n alignItems=\"center\"\n gap=\"$4\"\n css={{ \n width: \"420px !important\",\n \"& button\": { background: \"transparent !important\", fontSize: \"$md\" },\n }}\n >\n <Button\n css={{ color: !isContactMappingPage ? \"$neutral900\" : \"$neutral800\" }}\n color=\"default\"\n variant=\"ghost\"\n size=\"md\"\n onClick={handleEventSetupClick}\n >\n {CONTACT_IMPORT_UI_STRINGS.EVENT_SETUP}\n </Button>\n <Arrow />\n <Button\n css={{ color: isContactMappingPage ? \"$neutral900\" : \"$neutral800\" }}\n color=\"default\"\n variant=\"ghost\"\n size=\"md\"\n disabled={!isContactMappingPage}\n >\n {CONTACT_IMPORT_UI_STRINGS.MAPPING}\n </Button>\n </Flex>\n <Button\n disabled={\n !contactImportField?.fields?.some(\n (field) => field?.integrationField && field?.surveySparrowField\n ) ||\n !contactImportField?.fields?.some(\n (field) =>\n field?.surveySparrowField === 'email' || field?.surveySparrowField === 'mobile'\n )\n }\n size=\"lg\"\n onClick={handleContinueMapping}\n css={{ visibility: isContactMappingPage ? \"visible\" : \"hidden\"}}\n >\n {CONTACT_IMPORT_UI_STRINGS.CONTINUE_MAPPING}\n </Button>\n {showImportModal && (\n <ContactImportModal\n importName={importName}\n setImportName={setImportName}\n setContactImportField={setContactImportField}\n contactImportField={contactImportField}\n invitePortal={invitePortal}\n onSaveHandler={handleSaveAndClose}\n onCloseHandler={() => setShowImportModal(false)}\n />\n )}\n </Flex>\n );\n};\n\n"],"names":["useState","importName","Flex","IconButton","ArrowLeftIcon","Heading","CONTACT_IMPORT_UI_STRINGS","Button","Arrow","ContactImportModal"],"mappings":"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"}
1
+ {"version":3,"file":"ContactImportHeader.js","sources":["../../../../src/contact-import/components/ContactImportHeader.tsx"],"sourcesContent":["import {\n Button,\n Flex,\n Heading,\n IconButton,\n toast\n} from \"@sparrowengg/twigs-react\";\nimport { ArrowLeftIcon } from \"@sparrowengg/twigs-react-icons\";\nimport React, { useState } from \"react\";\nimport Arrow from \"../../commons/icons/arrow\";\nimport { ContactImportHeaderProps } from \"../types\";\nimport { CONTACT_IMPORT_UI_STRINGS } from \"../constants/ui-strings\";\nimport { ContactImportModal } from \"./ContactImportModal\";\n\nexport const ContactImportHeader: React.FC<ContactImportHeaderProps> = ({\n importName,\n setImportName,\n setNewImport,\n setContactImportField,\n contactImportField,\n hasPreviousMapping,\n previousMappingHandler,\n onSaveHandler,\n isContactMappingPage,\n navigateMappingPage,\n invitePortal,\n}) => {\n const [showImportModal, setShowImportModal] = useState(false);\n\n const handleBackClick = () => {\n setNewImport(false);\n previousMappingHandler();\n };\n\n const handleEventSetupClick = () => {\n if (isContactMappingPage) {\n navigateMappingPage(false);\n }\n };\n\n const handleContinueMapping = () => {\n if(!contactImportField?.fields?.some(\n (field) =>\n field?.surveySparrowField === 'email' || field?.surveySparrowField === 'mobile'\n )){\n toast({\n variant: 'error',\n title: 'Please map Email or mobile or uniqueId field'\n });\n return\n }\n setShowImportModal(true);\n };\n\n const handleSaveAndClose = async (importName: string) => {\n await onSaveHandler(importName);\n };\n\n return (\n <Flex\n alignItems=\"center\"\n justifyContent=\"space-between\"\n css={{\n borderBottom: \"$borderWidths$xs solid $neutral200\",\n padding: \"$8 $12\",\n }}\n >\n <Flex\n gap=\"$6\"\n alignItems=\"center\"\n css={{ visibility: hasPreviousMapping ? \"visible\" : \"hidden\" }}\n >\n <IconButton\n onClick={handleBackClick}\n color=\"default\"\n icon={<ArrowLeftIcon />}\n size=\"lg\"\n aria-label=\"Go back\"\n />\n <Heading size=\"h6\">{CONTACT_IMPORT_UI_STRINGS.NEW_CONTACT_IMPORT}</Heading>\n </Flex>\n <Flex\n alignItems=\"center\"\n gap=\"$4\"\n css={{ \n width: \"420px !important\",\n \"& button\": { background: \"transparent !important\", fontSize: \"$md\" },\n }}\n >\n <Button\n css={{ color: !isContactMappingPage ? \"$neutral900\" : \"$neutral800\" }}\n color=\"default\"\n variant=\"ghost\"\n size=\"md\"\n onClick={handleEventSetupClick}\n >\n {CONTACT_IMPORT_UI_STRINGS.EVENT_SETUP}\n </Button>\n <Arrow />\n <Button\n css={{ color: isContactMappingPage ? \"$neutral900\" : \"$neutral800\" }}\n color=\"default\"\n variant=\"ghost\"\n size=\"md\"\n disabled={!isContactMappingPage}\n >\n {CONTACT_IMPORT_UI_STRINGS.MAPPING}\n </Button>\n </Flex>\n <Button\n disabled={\n !contactImportField?.fields?.some(\n (field) => field?.integrationField && field?.surveySparrowField\n )\n }\n size=\"lg\"\n onClick={handleContinueMapping}\n css={{ visibility: isContactMappingPage ? \"visible\" : \"hidden\"}}\n >\n {CONTACT_IMPORT_UI_STRINGS.CONTINUE_MAPPING}\n </Button>\n {showImportModal && (\n <ContactImportModal\n importName={importName}\n setImportName={setImportName}\n setContactImportField={setContactImportField}\n contactImportField={contactImportField}\n invitePortal={invitePortal}\n onSaveHandler={handleSaveAndClose}\n onCloseHandler={() => setShowImportModal(false)}\n />\n )}\n </Flex>\n );\n};\n\n"],"names":["useState","_a","toast","importName","Flex","IconButton","ArrowLeftIcon","Heading","CONTACT_IMPORT_UI_STRINGS","Button","Arrow","ContactImportModal"],"mappings":"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"}
@@ -52,6 +52,7 @@ const ContactImportMapping = ({
52
52
  }) => {
53
53
  const customPropertyRef = React.useRef(null);
54
54
  const initialRenderRef = React.useRef(true);
55
+ const orderRef = React.useRef([]);
55
56
  React.useEffect(() => {
56
57
  if (!initialRenderRef.current && (customPropertyRef == null ? void 0 : customPropertyRef.current)) {
57
58
  customPropertyRef.current.scrollIntoView({
@@ -92,6 +93,31 @@ const ContactImportMapping = ({
92
93
  fields: prev.fields.filter((field) => field.id !== id)
93
94
  }));
94
95
  };
96
+ const currentIds = contactImportField.fields.map((field) => field.id);
97
+ orderRef.current = orderRef.current.filter((id) => currentIds.includes(id));
98
+ if (orderRef.current.length === 0 && currentIds.length) {
99
+ orderRef.current = [...contactImportField.fields].sort((a, b) => {
100
+ const aIsAutoMapped = !a.mapped && a.surveySparrowField;
101
+ const bIsAutoMapped = !b.mapped && b.surveySparrowField;
102
+ if (aIsAutoMapped && !bIsAutoMapped)
103
+ return -1;
104
+ if (!aIsAutoMapped && bIsAutoMapped)
105
+ return 1;
106
+ const aIsManuallyMapped = a.mapped && a.surveySparrowField;
107
+ const bIsManuallyMapped = b.mapped && b.surveySparrowField;
108
+ if (aIsManuallyMapped && !bIsManuallyMapped)
109
+ return -1;
110
+ if (!aIsManuallyMapped && bIsManuallyMapped)
111
+ return 1;
112
+ return 0;
113
+ }).map((field) => field.id);
114
+ } else {
115
+ currentIds.forEach((id) => {
116
+ if (!orderRef.current.includes(id))
117
+ orderRef.current.push(id);
118
+ });
119
+ }
120
+ const orderedFields = orderRef.current.map((id) => contactImportField.fields.find((field) => field.id === id)).filter((field) => Boolean(field));
95
121
  return /* @__PURE__ */ React.createElement(flex.Flex, { justifyContent: "center" }, /* @__PURE__ */ React.createElement(box.Box, { css: { marginTop: "$40", maxWidth: "90%", width: "100%" } }, /* @__PURE__ */ React.createElement(box.Box, { css: { paddingLeft: "$28" } }, /* @__PURE__ */ React.createElement(heading.Heading, { size: "h5" }, "Map Contact Properties"), /* @__PURE__ */ React.createElement(text.Text, { css: { marginTop: "$4", color: "$neutral600" }, size: "md" }, "Review these mappings before importing. Unmapped columns will be ignored.")), /* @__PURE__ */ React.createElement(
96
122
  box.Box,
97
123
  {
@@ -111,25 +137,12 @@ const ContactImportMapping = ({
111
137
  width: "100%",
112
138
  background: "$white900",
113
139
  borderRadius: "5px",
114
- borderCollapse: "collapse"
140
+ borderCollapse: "collapse",
141
+ marginLeft: "-14px !important"
115
142
  }
116
143
  },
117
- /* @__PURE__ */ React.createElement(table.Thead, { css: { zIndex: 5, position: "sticky", top: "-31px" } }, /* @__PURE__ */ React.createElement(table.Th, null, `${integrationName} Profile Fields Data`), /* @__PURE__ */ React.createElement(table.Th, { css: { borderLeft: "$borderWidths$xs solid $neutral100" } }, "SurveySparrow Mapping")),
118
- /* @__PURE__ */ React.createElement(table.Tbody, null, [...contactImportField.fields].sort((a, b) => {
119
- const aIsAutoMapped = !a.mapped && a.surveySparrowField;
120
- const bIsAutoMapped = !b.mapped && b.surveySparrowField;
121
- if (aIsAutoMapped && !bIsAutoMapped)
122
- return -1;
123
- if (!aIsAutoMapped && bIsAutoMapped)
124
- return 1;
125
- const aIsManuallyMapped = a.mapped && a.surveySparrowField;
126
- const bIsManuallyMapped = b.mapped && b.surveySparrowField;
127
- if (aIsManuallyMapped && !bIsManuallyMapped)
128
- return -1;
129
- if (!aIsManuallyMapped && bIsManuallyMapped)
130
- return 1;
131
- return 0;
132
- }).map((field) => {
144
+ /* @__PURE__ */ React.createElement(table.Thead, { css: { zIndex: 5, position: "sticky", top: "-32px" } }, /* @__PURE__ */ React.createElement(table.Th, null, `${integrationName} Profile Fields Data`), /* @__PURE__ */ React.createElement(table.Th, { css: { borderLeft: "$borderWidths$xs solid $neutral100" } }, "SurveySparrow Mapping")),
145
+ /* @__PURE__ */ React.createElement(table.Tbody, null, orderedFields.map((field) => {
133
146
  var _a, _b;
134
147
  const hasSurveyFieldValue = contactProperties.some(
135
148
  (contact) => contact.value === field.surveySparrowField
@@ -176,6 +189,7 @@ const ContactImportMapping = ({
176
189
  ))), /* @__PURE__ */ React.createElement(
177
190
  table.Td,
178
191
  {
192
+ className: "dm-sans",
179
193
  css: {
180
194
  width: 560,
181
195
  borderLeft: "$borderWidths$xs solid $neutral100"
@@ -185,9 +199,13 @@ const ContactImportMapping = ({
185
199
  select.Select,
186
200
  {
187
201
  size: "lg",
202
+ className: "dm-sans",
188
203
  placeholder: "--Choose Property--",
189
204
  isClearable: true,
190
205
  menuPortalTarget: document.body,
206
+ menuPlacement: "auto",
207
+ menuShouldScrollIntoView: false,
208
+ closeMenuOnScroll: (e) => !(e.target instanceof Element && e.target.closest('[class*="menu-list"]')),
191
209
  styles: {
192
210
  menuPortal: (base) => __spreadProps(__spreadValues({}, base), {
193
211
  zIndex: 9999
@@ -1 +1 @@
1
- {"version":3,"file":"contact-import-mapping.js","sources":["../../../../src/contact-import/components/contact-import-mapping.tsx"],"sourcesContent":["import {\n Box,\n Button,\n Flex,\n FormInput,\n FormLabel,\n Heading,\n IconButton,\n Select,\n Table,\n Tbody,\n Td,\n Text,\n Th,\n Thead,\n Tr,\n} from \"@sparrowengg/twigs-react\";\nimport { DeleteIcon, PlusIcon } from \"@sparrowengg/twigs-react-icons\";\nimport React, { useEffect, useRef } from \"react\";\nimport { ContactImportMappingProps } from \"../types\";\nimport { SelectOption } from \"../../commons/types/enhanced\";\n\n// Define the Field type with all the properties used in the component\ntype Field = {\n id: string | number;\n integrationField: string | number | null;\n surveySparrowField: string | number | null;\n sampleData?: Array<string>;\n property?: \"custom\" | \"default\";\n mapped?: boolean;\n surveySparrowFieldError?: boolean;\n};\n\n\nconst defaultFieldValue: Omit<Field, \"id\"> = {\n integrationField: null,\n surveySparrowField: null,\n sampleData: [],\n property: \"custom\",\n mapped: false,\n surveySparrowFieldError: false,\n};\n\nconst ContactImportMapping: React.FC<ContactImportMappingProps> = ({\n hasAddCustomProperty = true,\n contactImportField,\n setContactImportField,\n integrationName,\n contactProperties,\n}) => {\n const customPropertyRef = useRef<HTMLDivElement | null>(null);\n const initialRenderRef = useRef(true);\n\n useEffect(() => {\n if (!initialRenderRef.current && customPropertyRef?.current) {\n customPropertyRef.current.scrollIntoView({\n behavior: \"smooth\",\n block: \"end\",\n });\n }\n initialRenderRef.current = false;\n }, [contactImportField]);\n\n const customFieldHandler = (\n id: string | number,\n property: keyof Field,\n value: string | number | boolean | null\n ) => {\n setContactImportField((prev) => ({\n ...prev,\n fields: prev.fields.map((field) =>\n field.id === id ? { ...field, [property]: value } : field\n ),\n }));\n };\n\n const updateSurveySparrowField = (\n value: string | number | null,\n id: string | number,\n manuallyMapped: boolean\n ) => {\n setContactImportField((prev) => ({\n ...prev,\n fields: prev.fields.map((field) =>\n field.id === id\n ? {\n ...field,\n surveySparrowField: value,\n ...(value === null\n ? { mapped: false }\n : manuallyMapped && { mapped: true }),\n }\n : field\n ),\n }));\n };\n\n const addCustomProperty = () => {\n setContactImportField((prev) => ({\n ...prev,\n fields: [\n ...prev.fields,\n {\n id: prev.fields.length\n ? (typeof prev.fields[prev.fields.length - 1].id === 'number' \n ? (prev.fields[prev.fields.length - 1].id as number) + 1 \n : Date.now())\n : 1,\n ...defaultFieldValue,\n },\n ],\n }));\n };\n\n const deleteCustomProperty = (id: string | number) => {\n setContactImportField((prev) => ({\n ...prev,\n fields: prev.fields.filter((field) => field.id !== id),\n }));\n };\n\n return (\n <Flex justifyContent=\"center\">\n <Box css={{ marginTop: \"$40\", maxWidth: \"90%\", width: \"100%\" }}>\n <Box css={{ paddingLeft: \"$28\" }}>\n <Heading size=\"h5\">Map Contact Properties</Heading>\n <Text css={{ marginTop: \"$4\", color: \"$neutral600\" }} size=\"md\">\n Review these mappings before importing. Unmapped columns will be\n ignored.\n </Text>\n </Box>\n <Box\n css={{\n height: \"calc(100vh - 291px)\",\n paddingTop: \"$16\",\n overflowY: \"auto\",\n position: \"relative\",\n background: \"$white900\",\n paddingLeft: \"$28\",\n }}\n >\n <Table\n css={{\n width: \"100%\",\n background: \"$white900\",\n borderRadius: \"5px\",\n borderCollapse: \"collapse\",\n }}\n >\n <Thead css={{ zIndex: 5, position: \"sticky\", top: \"-31px\" }}>\n <Th>{`${integrationName} Profile Fields Data`}</Th>\n <Th css={{ borderLeft: \"$borderWidths$xs solid $neutral100\" }}>\n SurveySparrow Mapping\n </Th>\n </Thead>\n <Tbody>\n {[...contactImportField.fields]\n .sort((a, b) => {\n // Automatically mapped (not manually mapped and has surveySparrowField) come first\n const aIsAutoMapped = !a.mapped && a.surveySparrowField;\n const bIsAutoMapped = !b.mapped && b.surveySparrowField;\n \n if (aIsAutoMapped && !bIsAutoMapped) return -1;\n if (!aIsAutoMapped && bIsAutoMapped) return 1;\n \n // Then manually mapped\n const aIsManuallyMapped = a.mapped && a.surveySparrowField;\n const bIsManuallyMapped = b.mapped && b.surveySparrowField;\n \n if (aIsManuallyMapped && !bIsManuallyMapped) return -1;\n if (!aIsManuallyMapped && bIsManuallyMapped) return 1;\n \n // Keep original order for items in the same category\n return 0;\n })\n .map((field) => {\n const hasSurveyFieldValue = contactProperties.some(\n (contact) => contact.value === field.surveySparrowField\n );\n\n return (\n <Tr key={field.id}>\n <Td css={{ width: 560 }}>\n {field.property !== \"custom\" ? (\n <>\n <Text size=\"sm\" weight=\"medium\">\n {typeof field.integrationField === 'string' \n ? field.integrationField.replace(\"_\", \" \")\n : field.integrationField}\n </Text>\n {field.sampleData?.map((sample, index) => (\n <Text\n key={index}\n size=\"xs\"\n css={{ lineHeight: \"$xs\" }}\n >\n {sample.length > 40\n ? `${sample.slice(0, 40)}...`\n : sample}\n </Text>\n ))}\n </>\n ) : (\n <Box css={{ position: \"relative\" }}>\n <FormInput\n size=\"lg\"\n onChange={(event: any) =>\n customFieldHandler(\n field.id,\n \"integrationField\",\n event.target.value\n )\n }\n />\n <FormLabel\n css={{ marginTop: \"$4\", color: \"$neutral400\" }}\n >\n Enter the exact custom property name for accurate\n mapping. It is case-sensitive.\n </FormLabel>\n <IconButton\n css={{\n position: \"absolute\",\n top: \"0\",\n left: \"-70px\",\n }}\n size=\"lg\"\n variant=\"ghost\"\n color=\"secondary\"\n onClick={() => deleteCustomProperty(field.id)}\n icon={<DeleteIcon />}\n aria-label=\"Delete custom property\"\n />\n </Box>\n )}\n </Td>\n <Td\n css={{\n width: 560,\n borderLeft: \"$borderWidths$xs solid $neutral100\",\n }}\n >\n <Select\n size=\"lg\"\n placeholder=\"--Choose Property--\"\n isClearable={true}\n menuPortalTarget={document.body}\n styles={{\n menuPortal: (base: any) => ({\n ...base,\n zIndex: 9999,\n }),\n }}\n value={\n field.surveySparrowField\n ? {\n label: contactProperties.find(\n (contact) =>\n contact.value === field.surveySparrowField\n )?.label,\n value: field.surveySparrowField,\n }\n : null\n }\n options={contactProperties\n .filter((contact) => contact.type !== \"DEPENDENT_FIELD\")\n .map((contact) => ({\n ...contact,\n isDisabled: contactImportField.fields.some(\n (f) =>\n f.id !== field.id &&\n f.surveySparrowField === contact.value\n ),\n }))}\n onChange={(currentField: any) =>\n updateSurveySparrowField(\n currentField?.value ?? null,\n field.id,\n true\n )\n }\n />\n {hasSurveyFieldValue && (\n <FormLabel\n size=\"xs\"\n css={{\n color: field.mapped ? \"$neutral600\" : \"#0F966C\",\n marginBlock: \"$4\",\n }}\n >\n {field.mapped\n ? \"Manually mapped by you\"\n : \"Automatically mapped\"}\n </FormLabel>\n )}\n {!field.surveySparrowField &&\n field.surveySparrowFieldError && (\n <FormLabel\n css={{ color: \"$negative500\", marginTop: \"$4\" }}\n size=\"xs\"\n >\n Please select the property\n </FormLabel>\n )}\n </Td>\n </Tr>\n );\n })}\n {hasAddCustomProperty && (\n <Tr>\n <Td colSpan={2}>\n <Button\n size=\"md\"\n variant=\"ghost\"\n leftIcon={<PlusIcon />}\n onClick={addCustomProperty}\n >\n Add Custom Property\n </Button>\n </Td>\n </Tr>\n )}\n </Tbody>\n </Table>\n </Box>\n </Box>\n </Flex>\n );\n};\n\nexport default ContactImportMapping;\n"],"names":["useRef","useEffect","Flex","Box","Heading","Text","Table","Thead","Th","Tbody","Tr","Td","FormInput","FormLabel","IconButton","DeleteIcon","Select","_a","Button","PlusIcon"],"mappings":"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"}
1
+ {"version":3,"file":"contact-import-mapping.js","sources":["../../../../src/contact-import/components/contact-import-mapping.tsx"],"sourcesContent":["import {\n Box,\n Button,\n Flex,\n FormInput,\n FormLabel,\n Heading,\n IconButton,\n Select,\n Table,\n Tbody,\n Td,\n Text,\n Th,\n Thead,\n Tr,\n} from \"@sparrowengg/twigs-react\";\nimport { DeleteIcon, PlusIcon } from \"@sparrowengg/twigs-react-icons\";\nimport React, { useEffect, useRef } from \"react\";\nimport { ContactImportMappingProps } from \"../types\";\nimport { SelectOption } from \"../../commons/types/enhanced\";\n\n// Define the Field type with all the properties used in the component\ntype Field = {\n id: string | number;\n integrationField: string | number | null;\n surveySparrowField: string | number | null;\n sampleData?: Array<string>;\n property?: \"custom\" | \"default\";\n mapped?: boolean;\n surveySparrowFieldError?: boolean;\n};\n\n\nconst defaultFieldValue: Omit<Field, \"id\"> = {\n integrationField: null,\n surveySparrowField: null,\n sampleData: [],\n property: \"custom\",\n mapped: false,\n surveySparrowFieldError: false,\n};\n\nconst ContactImportMapping: React.FC<ContactImportMappingProps> = ({\n hasAddCustomProperty = true,\n contactImportField,\n setContactImportField,\n integrationName,\n contactProperties,\n}) => {\n const customPropertyRef = useRef<HTMLDivElement | null>(null);\n const initialRenderRef = useRef(true);\n // Frozen display order. Sorting runs once on initial load so that editing an\n // auto-mapped row (which flips `mapped` to true) does not reshuffle the list.\n const orderRef = useRef<Array<string | number>>([]);\n\n useEffect(() => {\n if (!initialRenderRef.current && customPropertyRef?.current) {\n customPropertyRef.current.scrollIntoView({\n behavior: \"smooth\",\n block: \"end\",\n });\n }\n initialRenderRef.current = false;\n }, [contactImportField]);\n\n const customFieldHandler = (\n id: string | number,\n property: keyof Field,\n value: string | number | boolean | null\n ) => {\n setContactImportField((prev) => ({\n ...prev,\n fields: prev.fields.map((field) =>\n field.id === id ? { ...field, [property]: value } : field\n ),\n }));\n };\n\n const updateSurveySparrowField = (\n value: string | number | null,\n id: string | number,\n manuallyMapped: boolean\n ) => {\n setContactImportField((prev) => ({\n ...prev,\n fields: prev.fields.map((field) =>\n field.id === id\n ? {\n ...field,\n surveySparrowField: value,\n ...(value === null\n ? { mapped: false }\n : manuallyMapped && { mapped: true }),\n }\n : field\n ),\n }));\n };\n\n const addCustomProperty = () => {\n setContactImportField((prev) => ({\n ...prev,\n fields: [\n ...prev.fields,\n {\n id: prev.fields.length\n ? (typeof prev.fields[prev.fields.length - 1].id === 'number' \n ? (prev.fields[prev.fields.length - 1].id as number) + 1 \n : Date.now())\n : 1,\n ...defaultFieldValue,\n },\n ],\n }));\n };\n\n const deleteCustomProperty = (id: string | number) => {\n setContactImportField((prev) => ({\n ...prev,\n fields: prev.fields.filter((field) => field.id !== id),\n }));\n };\n\n const currentIds = contactImportField.fields.map((field) => field.id);\n // Drop ids of deleted fields from the frozen order.\n orderRef.current = orderRef.current.filter((id) => currentIds.includes(id));\n if (orderRef.current.length === 0 && currentIds.length) {\n // First populate: seed the order with the one-time category sort.\n orderRef.current = [...contactImportField.fields]\n .sort((a, b) => {\n const aIsAutoMapped = !a.mapped && a.surveySparrowField;\n const bIsAutoMapped = !b.mapped && b.surveySparrowField;\n if (aIsAutoMapped && !bIsAutoMapped) return -1;\n if (!aIsAutoMapped && bIsAutoMapped) return 1;\n\n const aIsManuallyMapped = a.mapped && a.surveySparrowField;\n const bIsManuallyMapped = b.mapped && b.surveySparrowField;\n if (aIsManuallyMapped && !bIsManuallyMapped) return -1;\n if (!aIsManuallyMapped && bIsManuallyMapped) return 1;\n\n return 0;\n })\n .map((field) => field.id);\n } else {\n // Append newly added fields (e.g. custom properties) at the end.\n currentIds.forEach((id) => {\n if (!orderRef.current.includes(id)) orderRef.current.push(id);\n });\n }\n\n const orderedFields = orderRef.current\n .map((id) => contactImportField.fields.find((field) => field.id === id))\n .filter((field): field is Field => Boolean(field));\n\n return (\n <Flex justifyContent=\"center\">\n <Box css={{ marginTop: \"$40\", maxWidth: \"90%\", width: \"100%\" }}>\n <Box css={{ paddingLeft: \"$28\" }}>\n <Heading size=\"h5\">Map Contact Properties</Heading>\n <Text css={{ marginTop: \"$4\", color: \"$neutral600\" }} size=\"md\">\n Review these mappings before importing. Unmapped columns will be\n ignored.\n </Text>\n </Box>\n <Box\n css={{\n height: \"calc(100vh - 291px)\",\n paddingTop: \"$16\",\n overflowY: \"auto\",\n position: \"relative\",\n background: \"$white900\",\n paddingLeft: \"$28\",\n }}\n >\n <Table\n css={{\n width: \"100%\",\n background: \"$white900\",\n borderRadius: \"5px\",\n borderCollapse: \"collapse\",\n marginLeft: '-14px !important'\n }}\n >\n <Thead css={{ zIndex: 5, position: \"sticky\", top: \"-32px\" }}>\n <Th>{`${integrationName} Profile Fields Data`}</Th>\n <Th css={{ borderLeft: \"$borderWidths$xs solid $neutral100\" }}>\n SurveySparrow Mapping\n </Th>\n </Thead>\n <Tbody>\n {orderedFields.map((field) => {\n const hasSurveyFieldValue = contactProperties.some(\n (contact) => contact.value === field.surveySparrowField\n );\n\n return (\n <Tr key={field.id}>\n <Td css={{ width: 560 }}>\n {field.property !== \"custom\" ? (\n <>\n <Text size=\"sm\" weight=\"medium\">\n {typeof field.integrationField === 'string' \n ? field.integrationField.replace(\"_\", \" \")\n : field.integrationField}\n </Text>\n {field.sampleData?.map((sample, index) => (\n <Text\n key={index}\n size=\"xs\"\n css={{ lineHeight: \"$xs\" }}\n >\n {sample.length > 40\n ? `${sample.slice(0, 40)}...`\n : sample}\n </Text>\n ))}\n </>\n ) : (\n <Box css={{ position: \"relative\" }}>\n <FormInput\n size=\"lg\"\n onChange={(event: any) =>\n customFieldHandler(\n field.id,\n \"integrationField\",\n event.target.value\n )\n }\n />\n <FormLabel\n css={{ marginTop: \"$4\", color: \"$neutral400\" }}\n >\n Enter the exact custom property name for accurate\n mapping. It is case-sensitive.\n </FormLabel>\n <IconButton\n css={{\n position: \"absolute\",\n top: \"0\",\n left: \"-70px\",\n }}\n size=\"lg\"\n variant=\"ghost\"\n color=\"secondary\"\n onClick={() => deleteCustomProperty(field.id)}\n icon={<DeleteIcon />}\n aria-label=\"Delete custom property\"\n />\n </Box>\n )}\n </Td>\n <Td\n className=\"dm-sans\"\n css={{\n width: 560,\n borderLeft: \"$borderWidths$xs solid $neutral100\",\n }}\n >\n <Select\n size=\"lg\"\n className=\"dm-sans\"\n placeholder=\"--Choose Property--\"\n isClearable={true}\n menuPortalTarget={document.body}\n menuPlacement=\"auto\"\n menuShouldScrollIntoView={false}\n closeMenuOnScroll={(e: any) =>\n !(\n e.target instanceof Element &&\n e.target.closest('[class*=\"menu-list\"]')\n )\n }\n styles={{\n menuPortal: (base: any) => ({\n ...base,\n zIndex: 9999,\n }),\n }}\n value={\n field.surveySparrowField\n ? {\n label: contactProperties.find(\n (contact) =>\n contact.value === field.surveySparrowField\n )?.label,\n value: field.surveySparrowField,\n }\n : null\n }\n options={contactProperties\n .filter((contact) => contact.type !== \"DEPENDENT_FIELD\")\n .map((contact) => ({\n ...contact,\n isDisabled: contactImportField.fields.some(\n (f) =>\n f.id !== field.id &&\n f.surveySparrowField === contact.value\n ),\n }))}\n onChange={(currentField: any) =>\n updateSurveySparrowField(\n currentField?.value ?? null,\n field.id,\n true\n )\n }\n />\n {hasSurveyFieldValue && (\n <FormLabel\n size=\"xs\"\n css={{\n color: field.mapped ? \"$neutral600\" : \"#0F966C\",\n marginBlock: \"$4\",\n }}\n >\n {field.mapped\n ? \"Manually mapped by you\"\n : \"Automatically mapped\"}\n </FormLabel>\n )}\n {!field.surveySparrowField &&\n field.surveySparrowFieldError && (\n <FormLabel\n css={{ color: \"$negative500\", marginTop: \"$4\" }}\n size=\"xs\"\n >\n Please select the property\n </FormLabel>\n )}\n </Td>\n </Tr>\n );\n })}\n {hasAddCustomProperty && (\n <Tr>\n <Td colSpan={2}>\n <Button\n size=\"md\"\n variant=\"ghost\"\n leftIcon={<PlusIcon />}\n onClick={addCustomProperty}\n >\n Add Custom Property\n </Button>\n </Td>\n </Tr>\n )}\n </Tbody>\n </Table>\n </Box>\n </Box>\n </Flex>\n );\n};\n\nexport default ContactImportMapping;\n"],"names":["useRef","useEffect","Flex","Box","Heading","Text","Table","Thead","Th","Tbody","Tr","Td","FormInput","FormLabel","IconButton","DeleteIcon","Select","_a","Button","PlusIcon"],"mappings":"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"}
@@ -0,0 +1,173 @@
1
+ 'use strict';
2
+
3
+ require('react');
4
+
5
+ var __defProp = Object.defineProperty;
6
+ var __defProps = Object.defineProperties;
7
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
8
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
9
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
10
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
11
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
+ var __spreadValues = (a, b) => {
13
+ for (var prop in b || (b = {}))
14
+ if (__hasOwnProp.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ if (__getOwnPropSymbols)
17
+ for (var prop of __getOwnPropSymbols(b)) {
18
+ if (__propIsEnum.call(b, prop))
19
+ __defNormalProp(a, prop, b[prop]);
20
+ }
21
+ return a;
22
+ };
23
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
24
+ var __objRest = (source, exclude) => {
25
+ var target = {};
26
+ for (var prop in source)
27
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
28
+ target[prop] = source[prop];
29
+ if (source != null && __getOwnPropSymbols)
30
+ for (var prop of __getOwnPropSymbols(source)) {
31
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
32
+ target[prop] = source[prop];
33
+ }
34
+ return target;
35
+ };
36
+ const TOAST_REMOVE_DELAY = 1e4;
37
+ let count = 0;
38
+ function generareId() {
39
+ count = (count + 1) % Number.MAX_VALUE;
40
+ return count.toString();
41
+ }
42
+ const toastTimeouts = /* @__PURE__ */ new Map();
43
+ let memoryState = { toasts: [] };
44
+ const listeners = [];
45
+ function reducer(state, action) {
46
+ switch (action.type) {
47
+ case "ADD_TOAST":
48
+ return __spreadProps(__spreadValues({}, state), {
49
+ toasts: [action.toast, ...state.toasts]
50
+ });
51
+ case "UPDATE_TOAST":
52
+ return __spreadProps(__spreadValues({}, state), {
53
+ toasts: state.toasts.map((t) => t.id === action.toast.id ? __spreadValues(__spreadValues({}, t), action.toast) : t)
54
+ });
55
+ case "UPSERT_TOAST": {
56
+ const { toast: toast2 } = action;
57
+ return state.toasts.find((t) => t.id === toast2.id) ? reducer(state, { type: "UPDATE_TOAST", toast: toast2 }) : reducer(state, { type: "ADD_TOAST", toast: toast2 });
58
+ }
59
+ case "DISMISS_TOAST": {
60
+ const { toastId } = action;
61
+ if (toastId) {
62
+ addToRemoveQueue(toastId);
63
+ } else {
64
+ state.toasts.forEach((toast2) => {
65
+ addToRemoveQueue(toast2.id);
66
+ });
67
+ }
68
+ return __spreadProps(__spreadValues({}, state), {
69
+ toasts: state.toasts.map((t) => t.id === toastId || toastId === void 0 ? __spreadProps(__spreadValues({}, t), {
70
+ open: false
71
+ }) : t)
72
+ });
73
+ }
74
+ case "REMOVE_TOAST":
75
+ if (action.toastId === void 0) {
76
+ return __spreadProps(__spreadValues({}, state), {
77
+ toasts: []
78
+ });
79
+ }
80
+ return __spreadProps(__spreadValues({}, state), {
81
+ toasts: state.toasts.filter((t) => t.id !== action.toastId)
82
+ });
83
+ default:
84
+ return state;
85
+ }
86
+ }
87
+ function dispatch(action) {
88
+ memoryState = reducer(memoryState, action);
89
+ listeners.forEach((listener) => {
90
+ listener(memoryState);
91
+ });
92
+ }
93
+ const addToRemoveQueue = (toastId) => {
94
+ if (toastTimeouts.has(toastId)) {
95
+ return;
96
+ }
97
+ const timeout = setTimeout(() => {
98
+ toastTimeouts.delete(toastId);
99
+ dispatch({
100
+ type: "REMOVE_TOAST",
101
+ toastId
102
+ });
103
+ }, TOAST_REMOVE_DELAY);
104
+ toastTimeouts.set(toastId, timeout);
105
+ };
106
+ function toast(_a) {
107
+ var toastProps = __objRest(_a, []);
108
+ const id = generareId();
109
+ const update = (props) => dispatch({
110
+ type: "UPDATE_TOAST",
111
+ toast: __spreadProps(__spreadValues({}, props), { id })
112
+ });
113
+ const dismiss = () => dispatch({ type: "DISMISS_TOAST", toastId: id });
114
+ dispatch({
115
+ type: "ADD_TOAST",
116
+ toast: __spreadProps(__spreadValues({}, toastProps), {
117
+ id,
118
+ open: true,
119
+ onOpenChange: (open) => {
120
+ if (!open)
121
+ dismiss();
122
+ }
123
+ })
124
+ });
125
+ return {
126
+ id,
127
+ dismiss,
128
+ update
129
+ };
130
+ }
131
+ const createHandler = (variant = "default") => (args) => {
132
+ const newToast = toast(__spreadProps(__spreadValues({}, args), { variant }));
133
+ dispatch({ type: "UPSERT_TOAST", toast: __spreadProps(__spreadValues({}, newToast), { variant }) });
134
+ return newToast;
135
+ };
136
+ toast.loading = createHandler("loading");
137
+ toast.promise = (promise, options) => {
138
+ const loadingToast = toast.loading(options.loading);
139
+ promise.then((p) => {
140
+ const successProps = typeof options.success === "function" ? options.success(p) : options.success;
141
+ const variant = successProps.variant || "default";
142
+ loadingToast.update({
143
+ variant,
144
+ id: loadingToast.id,
145
+ icon: successProps.icon,
146
+ css: successProps.css,
147
+ action: successProps.action,
148
+ title: successProps.title,
149
+ description: successProps.description,
150
+ showCloseButton: successProps.showCloseButton
151
+ });
152
+ return p;
153
+ }).catch((e) => {
154
+ const errorProps = typeof options.error === "function" ? options.error(e) : options.error;
155
+ const variant = errorProps.variant || "error";
156
+ loadingToast.update({
157
+ variant,
158
+ id: loadingToast.id,
159
+ icon: errorProps.icon,
160
+ css: errorProps.css,
161
+ action: errorProps.action,
162
+ title: errorProps.title,
163
+ description: errorProps.description,
164
+ showCloseButton: errorProps.showCloseButton
165
+ });
166
+ return e;
167
+ });
168
+ return promise;
169
+ };
170
+
171
+ exports.reducer = reducer;
172
+ exports.toast = toast;
173
+ //# sourceMappingURL=use-toast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-toast.js","sources":["../../../../../../../../../../node_modules/@sparrowengg/twigs-react/dist/es/hooks/use-toast.js"],"sourcesContent":["import * as React from 'react';\n\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nconst TOAST_REMOVE_DELAY = 1e4;\nlet count = 0;\nfunction generareId() {\n count = (count + 1) % Number.MAX_VALUE;\n return count.toString();\n}\nconst toastTimeouts = /* @__PURE__ */ new Map();\nlet memoryState = { toasts: [] };\nconst listeners = [];\nfunction reducer(state, action) {\n switch (action.type) {\n case \"ADD_TOAST\":\n return __spreadProps(__spreadValues({}, state), {\n toasts: [action.toast, ...state.toasts]\n });\n case \"UPDATE_TOAST\":\n return __spreadProps(__spreadValues({}, state), {\n toasts: state.toasts.map((t) => t.id === action.toast.id ? __spreadValues(__spreadValues({}, t), action.toast) : t)\n });\n case \"UPSERT_TOAST\": {\n const { toast: toast2 } = action;\n return state.toasts.find((t) => t.id === toast2.id) ? reducer(state, { type: \"UPDATE_TOAST\", toast: toast2 }) : reducer(state, { type: \"ADD_TOAST\", toast: toast2 });\n }\n case \"DISMISS_TOAST\": {\n const { toastId } = action;\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast2) => {\n addToRemoveQueue(toast2.id);\n });\n }\n return __spreadProps(__spreadValues({}, state), {\n toasts: state.toasts.map((t) => t.id === toastId || toastId === void 0 ? __spreadProps(__spreadValues({}, t), {\n open: false\n }) : t)\n });\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === void 0) {\n return __spreadProps(__spreadValues({}, state), {\n toasts: []\n });\n }\n return __spreadProps(__spreadValues({}, state), {\n toasts: state.toasts.filter((t) => t.id !== action.toastId)\n });\n default:\n return state;\n }\n}\nfunction dispatch(action) {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n}\nconst addToRemoveQueue = (toastId) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId\n });\n }, TOAST_REMOVE_DELAY);\n toastTimeouts.set(toastId, timeout);\n};\nfunction toast(_a) {\n var toastProps = __objRest(_a, []);\n const id = generareId();\n const update = (props) => dispatch({\n type: \"UPDATE_TOAST\",\n toast: __spreadProps(__spreadValues({}, props), { id })\n });\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id });\n dispatch({\n type: \"ADD_TOAST\",\n toast: __spreadProps(__spreadValues({}, toastProps), {\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open)\n dismiss();\n }\n })\n });\n return {\n id,\n dismiss,\n update\n };\n}\nconst createHandler = (variant = \"default\") => (args) => {\n const newToast = toast(__spreadProps(__spreadValues({}, args), { variant }));\n dispatch({ type: \"UPSERT_TOAST\", toast: __spreadProps(__spreadValues({}, newToast), { variant }) });\n return newToast;\n};\ntoast.loading = createHandler(\"loading\");\ntoast.promise = (promise, options) => {\n const loadingToast = toast.loading(options.loading);\n promise.then((p) => {\n const successProps = typeof options.success === \"function\" ? options.success(p) : options.success;\n const variant = successProps.variant || \"default\";\n loadingToast.update({\n variant,\n id: loadingToast.id,\n icon: successProps.icon,\n css: successProps.css,\n action: successProps.action,\n title: successProps.title,\n description: successProps.description,\n showCloseButton: successProps.showCloseButton\n });\n return p;\n }).catch((e) => {\n const errorProps = typeof options.error === \"function\" ? options.error(e) : options.error;\n const variant = errorProps.variant || \"error\";\n loadingToast.update({\n variant,\n id: loadingToast.id,\n icon: errorProps.icon,\n css: errorProps.css,\n action: errorProps.action,\n title: errorProps.title,\n description: errorProps.description,\n showCloseButton: errorProps.showCloseButton\n });\n return e;\n });\n return promise;\n};\nfunction useToast({ maxToasts = 3 }) {\n const [state, setState] = React.useState(memoryState);\n React.useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n return {\n toasts: state.toasts.slice(0, maxToasts),\n toast,\n dismiss: (toastId) => dispatch({ type: \"DISMISS_TOAST\", toastId })\n };\n}\n\nexport { reducer, toast, useToast };\n//# sourceMappingURL=use-toast.js.map\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
@@ -7,6 +7,7 @@ import { IconButton } from '../../node_modules/@sparrowengg/twigs-react/dist/es/
7
7
  import { ArrowLeftIcon } from '../../node_modules/@sparrowengg/twigs-react-icons/dist/es/icons/arrow-left.js';
8
8
  import { Heading } from '../../node_modules/@sparrowengg/twigs-react/dist/es/heading/heading.js';
9
9
  import { Button } from '../../node_modules/@sparrowengg/twigs-react/dist/es/button/button.js';
10
+ import { toast } from '../../node_modules/@sparrowengg/twigs-react/dist/es/hooks/use-toast.js';
10
11
 
11
12
  const ContactImportHeader = ({
12
13
  importName,
@@ -21,7 +22,7 @@ const ContactImportHeader = ({
21
22
  navigateMappingPage,
22
23
  invitePortal
23
24
  }) => {
24
- var _a, _b;
25
+ var _a;
25
26
  const [showImportModal, setShowImportModal] = useState(false);
26
27
  const handleBackClick = () => {
27
28
  setNewImport(false);
@@ -33,6 +34,16 @@ const ContactImportHeader = ({
33
34
  }
34
35
  };
35
36
  const handleContinueMapping = () => {
37
+ var _a2;
38
+ if (!((_a2 = contactImportField == null ? void 0 : contactImportField.fields) == null ? void 0 : _a2.some(
39
+ (field) => (field == null ? void 0 : field.surveySparrowField) === "email" || (field == null ? void 0 : field.surveySparrowField) === "mobile"
40
+ ))) {
41
+ toast({
42
+ variant: "error",
43
+ title: "Please map Email or mobile or uniqueId field"
44
+ });
45
+ return;
46
+ }
36
47
  setShowImportModal(true);
37
48
  };
38
49
  const handleSaveAndClose = async (importName2) => {
@@ -106,8 +117,6 @@ const ContactImportHeader = ({
106
117
  {
107
118
  disabled: !((_a = contactImportField == null ? void 0 : contactImportField.fields) == null ? void 0 : _a.some(
108
119
  (field) => (field == null ? void 0 : field.integrationField) && (field == null ? void 0 : field.surveySparrowField)
109
- )) || !((_b = contactImportField == null ? void 0 : contactImportField.fields) == null ? void 0 : _b.some(
110
- (field) => (field == null ? void 0 : field.surveySparrowField) === "email" || (field == null ? void 0 : field.surveySparrowField) === "mobile"
111
120
  )),
112
121
  size: "lg",
113
122
  onClick: handleContinueMapping,
@@ -1 +1 @@
1
- {"version":3,"file":"ContactImportHeader.js","sources":["../../../../src/contact-import/components/ContactImportHeader.tsx"],"sourcesContent":["import {\n Button,\n Flex,\n Heading,\n IconButton,\n} from \"@sparrowengg/twigs-react\";\nimport { ArrowLeftIcon } from \"@sparrowengg/twigs-react-icons\";\nimport React, { useState } from \"react\";\nimport Arrow from \"../../commons/icons/arrow\";\nimport { ContactImportHeaderProps } from \"../types\";\nimport { CONTACT_IMPORT_UI_STRINGS } from \"../constants/ui-strings\";\nimport { ContactImportModal } from \"./ContactImportModal\";\n\nexport const ContactImportHeader: React.FC<ContactImportHeaderProps> = ({\n importName,\n setImportName,\n setNewImport,\n setContactImportField,\n contactImportField,\n hasPreviousMapping,\n previousMappingHandler,\n onSaveHandler,\n isContactMappingPage,\n navigateMappingPage,\n invitePortal,\n}) => {\n const [showImportModal, setShowImportModal] = useState(false);\n\n const handleBackClick = () => {\n setNewImport(false);\n previousMappingHandler();\n };\n\n const handleEventSetupClick = () => {\n if (isContactMappingPage) {\n navigateMappingPage(false);\n }\n };\n\n const handleContinueMapping = () => {\n setShowImportModal(true);\n };\n\n const handleSaveAndClose = async (importName: string) => {\n await onSaveHandler(importName);\n };\n\n return (\n <Flex\n alignItems=\"center\"\n justifyContent=\"space-between\"\n css={{\n borderBottom: \"$borderWidths$xs solid $neutral200\",\n padding: \"$8 $12\",\n }}\n >\n <Flex\n gap=\"$6\"\n alignItems=\"center\"\n css={{ visibility: hasPreviousMapping ? \"visible\" : \"hidden\" }}\n >\n <IconButton\n onClick={handleBackClick}\n color=\"default\"\n icon={<ArrowLeftIcon />}\n size=\"lg\"\n aria-label=\"Go back\"\n />\n <Heading size=\"h6\">{CONTACT_IMPORT_UI_STRINGS.NEW_CONTACT_IMPORT}</Heading>\n </Flex>\n <Flex\n alignItems=\"center\"\n gap=\"$4\"\n css={{ \n width: \"420px !important\",\n \"& button\": { background: \"transparent !important\", fontSize: \"$md\" },\n }}\n >\n <Button\n css={{ color: !isContactMappingPage ? \"$neutral900\" : \"$neutral800\" }}\n color=\"default\"\n variant=\"ghost\"\n size=\"md\"\n onClick={handleEventSetupClick}\n >\n {CONTACT_IMPORT_UI_STRINGS.EVENT_SETUP}\n </Button>\n <Arrow />\n <Button\n css={{ color: isContactMappingPage ? \"$neutral900\" : \"$neutral800\" }}\n color=\"default\"\n variant=\"ghost\"\n size=\"md\"\n disabled={!isContactMappingPage}\n >\n {CONTACT_IMPORT_UI_STRINGS.MAPPING}\n </Button>\n </Flex>\n <Button\n disabled={\n !contactImportField?.fields?.some(\n (field) => field?.integrationField && field?.surveySparrowField\n ) ||\n !contactImportField?.fields?.some(\n (field) =>\n field?.surveySparrowField === 'email' || field?.surveySparrowField === 'mobile'\n )\n }\n size=\"lg\"\n onClick={handleContinueMapping}\n css={{ visibility: isContactMappingPage ? \"visible\" : \"hidden\"}}\n >\n {CONTACT_IMPORT_UI_STRINGS.CONTINUE_MAPPING}\n </Button>\n {showImportModal && (\n <ContactImportModal\n importName={importName}\n setImportName={setImportName}\n setContactImportField={setContactImportField}\n contactImportField={contactImportField}\n invitePortal={invitePortal}\n onSaveHandler={handleSaveAndClose}\n onCloseHandler={() => setShowImportModal(false)}\n />\n )}\n </Flex>\n );\n};\n\n"],"names":["importName","React"],"mappings":"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"}
1
+ {"version":3,"file":"ContactImportHeader.js","sources":["../../../../src/contact-import/components/ContactImportHeader.tsx"],"sourcesContent":["import {\n Button,\n Flex,\n Heading,\n IconButton,\n toast\n} from \"@sparrowengg/twigs-react\";\nimport { ArrowLeftIcon } from \"@sparrowengg/twigs-react-icons\";\nimport React, { useState } from \"react\";\nimport Arrow from \"../../commons/icons/arrow\";\nimport { ContactImportHeaderProps } from \"../types\";\nimport { CONTACT_IMPORT_UI_STRINGS } from \"../constants/ui-strings\";\nimport { ContactImportModal } from \"./ContactImportModal\";\n\nexport const ContactImportHeader: React.FC<ContactImportHeaderProps> = ({\n importName,\n setImportName,\n setNewImport,\n setContactImportField,\n contactImportField,\n hasPreviousMapping,\n previousMappingHandler,\n onSaveHandler,\n isContactMappingPage,\n navigateMappingPage,\n invitePortal,\n}) => {\n const [showImportModal, setShowImportModal] = useState(false);\n\n const handleBackClick = () => {\n setNewImport(false);\n previousMappingHandler();\n };\n\n const handleEventSetupClick = () => {\n if (isContactMappingPage) {\n navigateMappingPage(false);\n }\n };\n\n const handleContinueMapping = () => {\n if(!contactImportField?.fields?.some(\n (field) =>\n field?.surveySparrowField === 'email' || field?.surveySparrowField === 'mobile'\n )){\n toast({\n variant: 'error',\n title: 'Please map Email or mobile or uniqueId field'\n });\n return\n }\n setShowImportModal(true);\n };\n\n const handleSaveAndClose = async (importName: string) => {\n await onSaveHandler(importName);\n };\n\n return (\n <Flex\n alignItems=\"center\"\n justifyContent=\"space-between\"\n css={{\n borderBottom: \"$borderWidths$xs solid $neutral200\",\n padding: \"$8 $12\",\n }}\n >\n <Flex\n gap=\"$6\"\n alignItems=\"center\"\n css={{ visibility: hasPreviousMapping ? \"visible\" : \"hidden\" }}\n >\n <IconButton\n onClick={handleBackClick}\n color=\"default\"\n icon={<ArrowLeftIcon />}\n size=\"lg\"\n aria-label=\"Go back\"\n />\n <Heading size=\"h6\">{CONTACT_IMPORT_UI_STRINGS.NEW_CONTACT_IMPORT}</Heading>\n </Flex>\n <Flex\n alignItems=\"center\"\n gap=\"$4\"\n css={{ \n width: \"420px !important\",\n \"& button\": { background: \"transparent !important\", fontSize: \"$md\" },\n }}\n >\n <Button\n css={{ color: !isContactMappingPage ? \"$neutral900\" : \"$neutral800\" }}\n color=\"default\"\n variant=\"ghost\"\n size=\"md\"\n onClick={handleEventSetupClick}\n >\n {CONTACT_IMPORT_UI_STRINGS.EVENT_SETUP}\n </Button>\n <Arrow />\n <Button\n css={{ color: isContactMappingPage ? \"$neutral900\" : \"$neutral800\" }}\n color=\"default\"\n variant=\"ghost\"\n size=\"md\"\n disabled={!isContactMappingPage}\n >\n {CONTACT_IMPORT_UI_STRINGS.MAPPING}\n </Button>\n </Flex>\n <Button\n disabled={\n !contactImportField?.fields?.some(\n (field) => field?.integrationField && field?.surveySparrowField\n )\n }\n size=\"lg\"\n onClick={handleContinueMapping}\n css={{ visibility: isContactMappingPage ? \"visible\" : \"hidden\"}}\n >\n {CONTACT_IMPORT_UI_STRINGS.CONTINUE_MAPPING}\n </Button>\n {showImportModal && (\n <ContactImportModal\n importName={importName}\n setImportName={setImportName}\n setContactImportField={setContactImportField}\n contactImportField={contactImportField}\n invitePortal={invitePortal}\n onSaveHandler={handleSaveAndClose}\n onCloseHandler={() => setShowImportModal(false)}\n />\n )}\n </Flex>\n );\n};\n\n"],"names":["_a","importName","React"],"mappings":"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"}
@@ -48,6 +48,7 @@ const ContactImportMapping = ({
48
48
  }) => {
49
49
  const customPropertyRef = useRef(null);
50
50
  const initialRenderRef = useRef(true);
51
+ const orderRef = useRef([]);
51
52
  useEffect(() => {
52
53
  if (!initialRenderRef.current && (customPropertyRef == null ? void 0 : customPropertyRef.current)) {
53
54
  customPropertyRef.current.scrollIntoView({
@@ -88,6 +89,31 @@ const ContactImportMapping = ({
88
89
  fields: prev.fields.filter((field) => field.id !== id)
89
90
  }));
90
91
  };
92
+ const currentIds = contactImportField.fields.map((field) => field.id);
93
+ orderRef.current = orderRef.current.filter((id) => currentIds.includes(id));
94
+ if (orderRef.current.length === 0 && currentIds.length) {
95
+ orderRef.current = [...contactImportField.fields].sort((a, b) => {
96
+ const aIsAutoMapped = !a.mapped && a.surveySparrowField;
97
+ const bIsAutoMapped = !b.mapped && b.surveySparrowField;
98
+ if (aIsAutoMapped && !bIsAutoMapped)
99
+ return -1;
100
+ if (!aIsAutoMapped && bIsAutoMapped)
101
+ return 1;
102
+ const aIsManuallyMapped = a.mapped && a.surveySparrowField;
103
+ const bIsManuallyMapped = b.mapped && b.surveySparrowField;
104
+ if (aIsManuallyMapped && !bIsManuallyMapped)
105
+ return -1;
106
+ if (!aIsManuallyMapped && bIsManuallyMapped)
107
+ return 1;
108
+ return 0;
109
+ }).map((field) => field.id);
110
+ } else {
111
+ currentIds.forEach((id) => {
112
+ if (!orderRef.current.includes(id))
113
+ orderRef.current.push(id);
114
+ });
115
+ }
116
+ const orderedFields = orderRef.current.map((id) => contactImportField.fields.find((field) => field.id === id)).filter((field) => Boolean(field));
91
117
  return /* @__PURE__ */ React__default.createElement(Flex, { justifyContent: "center" }, /* @__PURE__ */ React__default.createElement(Box, { css: { marginTop: "$40", maxWidth: "90%", width: "100%" } }, /* @__PURE__ */ React__default.createElement(Box, { css: { paddingLeft: "$28" } }, /* @__PURE__ */ React__default.createElement(Heading, { size: "h5" }, "Map Contact Properties"), /* @__PURE__ */ React__default.createElement(Text, { css: { marginTop: "$4", color: "$neutral600" }, size: "md" }, "Review these mappings before importing. Unmapped columns will be ignored.")), /* @__PURE__ */ React__default.createElement(
92
118
  Box,
93
119
  {
@@ -107,25 +133,12 @@ const ContactImportMapping = ({
107
133
  width: "100%",
108
134
  background: "$white900",
109
135
  borderRadius: "5px",
110
- borderCollapse: "collapse"
136
+ borderCollapse: "collapse",
137
+ marginLeft: "-14px !important"
111
138
  }
112
139
  },
113
- /* @__PURE__ */ React__default.createElement(Thead, { css: { zIndex: 5, position: "sticky", top: "-31px" } }, /* @__PURE__ */ React__default.createElement(Th, null, `${integrationName} Profile Fields Data`), /* @__PURE__ */ React__default.createElement(Th, { css: { borderLeft: "$borderWidths$xs solid $neutral100" } }, "SurveySparrow Mapping")),
114
- /* @__PURE__ */ React__default.createElement(Tbody, null, [...contactImportField.fields].sort((a, b) => {
115
- const aIsAutoMapped = !a.mapped && a.surveySparrowField;
116
- const bIsAutoMapped = !b.mapped && b.surveySparrowField;
117
- if (aIsAutoMapped && !bIsAutoMapped)
118
- return -1;
119
- if (!aIsAutoMapped && bIsAutoMapped)
120
- return 1;
121
- const aIsManuallyMapped = a.mapped && a.surveySparrowField;
122
- const bIsManuallyMapped = b.mapped && b.surveySparrowField;
123
- if (aIsManuallyMapped && !bIsManuallyMapped)
124
- return -1;
125
- if (!aIsManuallyMapped && bIsManuallyMapped)
126
- return 1;
127
- return 0;
128
- }).map((field) => {
140
+ /* @__PURE__ */ React__default.createElement(Thead, { css: { zIndex: 5, position: "sticky", top: "-32px" } }, /* @__PURE__ */ React__default.createElement(Th, null, `${integrationName} Profile Fields Data`), /* @__PURE__ */ React__default.createElement(Th, { css: { borderLeft: "$borderWidths$xs solid $neutral100" } }, "SurveySparrow Mapping")),
141
+ /* @__PURE__ */ React__default.createElement(Tbody, null, orderedFields.map((field) => {
129
142
  var _a, _b;
130
143
  const hasSurveyFieldValue = contactProperties.some(
131
144
  (contact) => contact.value === field.surveySparrowField
@@ -172,6 +185,7 @@ const ContactImportMapping = ({
172
185
  ))), /* @__PURE__ */ React__default.createElement(
173
186
  Td,
174
187
  {
188
+ className: "dm-sans",
175
189
  css: {
176
190
  width: 560,
177
191
  borderLeft: "$borderWidths$xs solid $neutral100"
@@ -181,9 +195,13 @@ const ContactImportMapping = ({
181
195
  Select,
182
196
  {
183
197
  size: "lg",
198
+ className: "dm-sans",
184
199
  placeholder: "--Choose Property--",
185
200
  isClearable: true,
186
201
  menuPortalTarget: document.body,
202
+ menuPlacement: "auto",
203
+ menuShouldScrollIntoView: false,
204
+ closeMenuOnScroll: (e) => !(e.target instanceof Element && e.target.closest('[class*="menu-list"]')),
187
205
  styles: {
188
206
  menuPortal: (base) => __spreadProps(__spreadValues({}, base), {
189
207
  zIndex: 9999
@@ -1 +1 @@
1
- {"version":3,"file":"contact-import-mapping.js","sources":["../../../../src/contact-import/components/contact-import-mapping.tsx"],"sourcesContent":["import {\n Box,\n Button,\n Flex,\n FormInput,\n FormLabel,\n Heading,\n IconButton,\n Select,\n Table,\n Tbody,\n Td,\n Text,\n Th,\n Thead,\n Tr,\n} from \"@sparrowengg/twigs-react\";\nimport { DeleteIcon, PlusIcon } from \"@sparrowengg/twigs-react-icons\";\nimport React, { useEffect, useRef } from \"react\";\nimport { ContactImportMappingProps } from \"../types\";\nimport { SelectOption } from \"../../commons/types/enhanced\";\n\n// Define the Field type with all the properties used in the component\ntype Field = {\n id: string | number;\n integrationField: string | number | null;\n surveySparrowField: string | number | null;\n sampleData?: Array<string>;\n property?: \"custom\" | \"default\";\n mapped?: boolean;\n surveySparrowFieldError?: boolean;\n};\n\n\nconst defaultFieldValue: Omit<Field, \"id\"> = {\n integrationField: null,\n surveySparrowField: null,\n sampleData: [],\n property: \"custom\",\n mapped: false,\n surveySparrowFieldError: false,\n};\n\nconst ContactImportMapping: React.FC<ContactImportMappingProps> = ({\n hasAddCustomProperty = true,\n contactImportField,\n setContactImportField,\n integrationName,\n contactProperties,\n}) => {\n const customPropertyRef = useRef<HTMLDivElement | null>(null);\n const initialRenderRef = useRef(true);\n\n useEffect(() => {\n if (!initialRenderRef.current && customPropertyRef?.current) {\n customPropertyRef.current.scrollIntoView({\n behavior: \"smooth\",\n block: \"end\",\n });\n }\n initialRenderRef.current = false;\n }, [contactImportField]);\n\n const customFieldHandler = (\n id: string | number,\n property: keyof Field,\n value: string | number | boolean | null\n ) => {\n setContactImportField((prev) => ({\n ...prev,\n fields: prev.fields.map((field) =>\n field.id === id ? { ...field, [property]: value } : field\n ),\n }));\n };\n\n const updateSurveySparrowField = (\n value: string | number | null,\n id: string | number,\n manuallyMapped: boolean\n ) => {\n setContactImportField((prev) => ({\n ...prev,\n fields: prev.fields.map((field) =>\n field.id === id\n ? {\n ...field,\n surveySparrowField: value,\n ...(value === null\n ? { mapped: false }\n : manuallyMapped && { mapped: true }),\n }\n : field\n ),\n }));\n };\n\n const addCustomProperty = () => {\n setContactImportField((prev) => ({\n ...prev,\n fields: [\n ...prev.fields,\n {\n id: prev.fields.length\n ? (typeof prev.fields[prev.fields.length - 1].id === 'number' \n ? (prev.fields[prev.fields.length - 1].id as number) + 1 \n : Date.now())\n : 1,\n ...defaultFieldValue,\n },\n ],\n }));\n };\n\n const deleteCustomProperty = (id: string | number) => {\n setContactImportField((prev) => ({\n ...prev,\n fields: prev.fields.filter((field) => field.id !== id),\n }));\n };\n\n return (\n <Flex justifyContent=\"center\">\n <Box css={{ marginTop: \"$40\", maxWidth: \"90%\", width: \"100%\" }}>\n <Box css={{ paddingLeft: \"$28\" }}>\n <Heading size=\"h5\">Map Contact Properties</Heading>\n <Text css={{ marginTop: \"$4\", color: \"$neutral600\" }} size=\"md\">\n Review these mappings before importing. Unmapped columns will be\n ignored.\n </Text>\n </Box>\n <Box\n css={{\n height: \"calc(100vh - 291px)\",\n paddingTop: \"$16\",\n overflowY: \"auto\",\n position: \"relative\",\n background: \"$white900\",\n paddingLeft: \"$28\",\n }}\n >\n <Table\n css={{\n width: \"100%\",\n background: \"$white900\",\n borderRadius: \"5px\",\n borderCollapse: \"collapse\",\n }}\n >\n <Thead css={{ zIndex: 5, position: \"sticky\", top: \"-31px\" }}>\n <Th>{`${integrationName} Profile Fields Data`}</Th>\n <Th css={{ borderLeft: \"$borderWidths$xs solid $neutral100\" }}>\n SurveySparrow Mapping\n </Th>\n </Thead>\n <Tbody>\n {[...contactImportField.fields]\n .sort((a, b) => {\n // Automatically mapped (not manually mapped and has surveySparrowField) come first\n const aIsAutoMapped = !a.mapped && a.surveySparrowField;\n const bIsAutoMapped = !b.mapped && b.surveySparrowField;\n \n if (aIsAutoMapped && !bIsAutoMapped) return -1;\n if (!aIsAutoMapped && bIsAutoMapped) return 1;\n \n // Then manually mapped\n const aIsManuallyMapped = a.mapped && a.surveySparrowField;\n const bIsManuallyMapped = b.mapped && b.surveySparrowField;\n \n if (aIsManuallyMapped && !bIsManuallyMapped) return -1;\n if (!aIsManuallyMapped && bIsManuallyMapped) return 1;\n \n // Keep original order for items in the same category\n return 0;\n })\n .map((field) => {\n const hasSurveyFieldValue = contactProperties.some(\n (contact) => contact.value === field.surveySparrowField\n );\n\n return (\n <Tr key={field.id}>\n <Td css={{ width: 560 }}>\n {field.property !== \"custom\" ? (\n <>\n <Text size=\"sm\" weight=\"medium\">\n {typeof field.integrationField === 'string' \n ? field.integrationField.replace(\"_\", \" \")\n : field.integrationField}\n </Text>\n {field.sampleData?.map((sample, index) => (\n <Text\n key={index}\n size=\"xs\"\n css={{ lineHeight: \"$xs\" }}\n >\n {sample.length > 40\n ? `${sample.slice(0, 40)}...`\n : sample}\n </Text>\n ))}\n </>\n ) : (\n <Box css={{ position: \"relative\" }}>\n <FormInput\n size=\"lg\"\n onChange={(event: any) =>\n customFieldHandler(\n field.id,\n \"integrationField\",\n event.target.value\n )\n }\n />\n <FormLabel\n css={{ marginTop: \"$4\", color: \"$neutral400\" }}\n >\n Enter the exact custom property name for accurate\n mapping. It is case-sensitive.\n </FormLabel>\n <IconButton\n css={{\n position: \"absolute\",\n top: \"0\",\n left: \"-70px\",\n }}\n size=\"lg\"\n variant=\"ghost\"\n color=\"secondary\"\n onClick={() => deleteCustomProperty(field.id)}\n icon={<DeleteIcon />}\n aria-label=\"Delete custom property\"\n />\n </Box>\n )}\n </Td>\n <Td\n css={{\n width: 560,\n borderLeft: \"$borderWidths$xs solid $neutral100\",\n }}\n >\n <Select\n size=\"lg\"\n placeholder=\"--Choose Property--\"\n isClearable={true}\n menuPortalTarget={document.body}\n styles={{\n menuPortal: (base: any) => ({\n ...base,\n zIndex: 9999,\n }),\n }}\n value={\n field.surveySparrowField\n ? {\n label: contactProperties.find(\n (contact) =>\n contact.value === field.surveySparrowField\n )?.label,\n value: field.surveySparrowField,\n }\n : null\n }\n options={contactProperties\n .filter((contact) => contact.type !== \"DEPENDENT_FIELD\")\n .map((contact) => ({\n ...contact,\n isDisabled: contactImportField.fields.some(\n (f) =>\n f.id !== field.id &&\n f.surveySparrowField === contact.value\n ),\n }))}\n onChange={(currentField: any) =>\n updateSurveySparrowField(\n currentField?.value ?? null,\n field.id,\n true\n )\n }\n />\n {hasSurveyFieldValue && (\n <FormLabel\n size=\"xs\"\n css={{\n color: field.mapped ? \"$neutral600\" : \"#0F966C\",\n marginBlock: \"$4\",\n }}\n >\n {field.mapped\n ? \"Manually mapped by you\"\n : \"Automatically mapped\"}\n </FormLabel>\n )}\n {!field.surveySparrowField &&\n field.surveySparrowFieldError && (\n <FormLabel\n css={{ color: \"$negative500\", marginTop: \"$4\" }}\n size=\"xs\"\n >\n Please select the property\n </FormLabel>\n )}\n </Td>\n </Tr>\n );\n })}\n {hasAddCustomProperty && (\n <Tr>\n <Td colSpan={2}>\n <Button\n size=\"md\"\n variant=\"ghost\"\n leftIcon={<PlusIcon />}\n onClick={addCustomProperty}\n >\n Add Custom Property\n </Button>\n </Td>\n </Tr>\n )}\n </Tbody>\n </Table>\n </Box>\n </Box>\n </Flex>\n );\n};\n\nexport default ContactImportMapping;\n"],"names":["React","_a"],"mappings":"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"}
1
+ {"version":3,"file":"contact-import-mapping.js","sources":["../../../../src/contact-import/components/contact-import-mapping.tsx"],"sourcesContent":["import {\n Box,\n Button,\n Flex,\n FormInput,\n FormLabel,\n Heading,\n IconButton,\n Select,\n Table,\n Tbody,\n Td,\n Text,\n Th,\n Thead,\n Tr,\n} from \"@sparrowengg/twigs-react\";\nimport { DeleteIcon, PlusIcon } from \"@sparrowengg/twigs-react-icons\";\nimport React, { useEffect, useRef } from \"react\";\nimport { ContactImportMappingProps } from \"../types\";\nimport { SelectOption } from \"../../commons/types/enhanced\";\n\n// Define the Field type with all the properties used in the component\ntype Field = {\n id: string | number;\n integrationField: string | number | null;\n surveySparrowField: string | number | null;\n sampleData?: Array<string>;\n property?: \"custom\" | \"default\";\n mapped?: boolean;\n surveySparrowFieldError?: boolean;\n};\n\n\nconst defaultFieldValue: Omit<Field, \"id\"> = {\n integrationField: null,\n surveySparrowField: null,\n sampleData: [],\n property: \"custom\",\n mapped: false,\n surveySparrowFieldError: false,\n};\n\nconst ContactImportMapping: React.FC<ContactImportMappingProps> = ({\n hasAddCustomProperty = true,\n contactImportField,\n setContactImportField,\n integrationName,\n contactProperties,\n}) => {\n const customPropertyRef = useRef<HTMLDivElement | null>(null);\n const initialRenderRef = useRef(true);\n // Frozen display order. Sorting runs once on initial load so that editing an\n // auto-mapped row (which flips `mapped` to true) does not reshuffle the list.\n const orderRef = useRef<Array<string | number>>([]);\n\n useEffect(() => {\n if (!initialRenderRef.current && customPropertyRef?.current) {\n customPropertyRef.current.scrollIntoView({\n behavior: \"smooth\",\n block: \"end\",\n });\n }\n initialRenderRef.current = false;\n }, [contactImportField]);\n\n const customFieldHandler = (\n id: string | number,\n property: keyof Field,\n value: string | number | boolean | null\n ) => {\n setContactImportField((prev) => ({\n ...prev,\n fields: prev.fields.map((field) =>\n field.id === id ? { ...field, [property]: value } : field\n ),\n }));\n };\n\n const updateSurveySparrowField = (\n value: string | number | null,\n id: string | number,\n manuallyMapped: boolean\n ) => {\n setContactImportField((prev) => ({\n ...prev,\n fields: prev.fields.map((field) =>\n field.id === id\n ? {\n ...field,\n surveySparrowField: value,\n ...(value === null\n ? { mapped: false }\n : manuallyMapped && { mapped: true }),\n }\n : field\n ),\n }));\n };\n\n const addCustomProperty = () => {\n setContactImportField((prev) => ({\n ...prev,\n fields: [\n ...prev.fields,\n {\n id: prev.fields.length\n ? (typeof prev.fields[prev.fields.length - 1].id === 'number' \n ? (prev.fields[prev.fields.length - 1].id as number) + 1 \n : Date.now())\n : 1,\n ...defaultFieldValue,\n },\n ],\n }));\n };\n\n const deleteCustomProperty = (id: string | number) => {\n setContactImportField((prev) => ({\n ...prev,\n fields: prev.fields.filter((field) => field.id !== id),\n }));\n };\n\n const currentIds = contactImportField.fields.map((field) => field.id);\n // Drop ids of deleted fields from the frozen order.\n orderRef.current = orderRef.current.filter((id) => currentIds.includes(id));\n if (orderRef.current.length === 0 && currentIds.length) {\n // First populate: seed the order with the one-time category sort.\n orderRef.current = [...contactImportField.fields]\n .sort((a, b) => {\n const aIsAutoMapped = !a.mapped && a.surveySparrowField;\n const bIsAutoMapped = !b.mapped && b.surveySparrowField;\n if (aIsAutoMapped && !bIsAutoMapped) return -1;\n if (!aIsAutoMapped && bIsAutoMapped) return 1;\n\n const aIsManuallyMapped = a.mapped && a.surveySparrowField;\n const bIsManuallyMapped = b.mapped && b.surveySparrowField;\n if (aIsManuallyMapped && !bIsManuallyMapped) return -1;\n if (!aIsManuallyMapped && bIsManuallyMapped) return 1;\n\n return 0;\n })\n .map((field) => field.id);\n } else {\n // Append newly added fields (e.g. custom properties) at the end.\n currentIds.forEach((id) => {\n if (!orderRef.current.includes(id)) orderRef.current.push(id);\n });\n }\n\n const orderedFields = orderRef.current\n .map((id) => contactImportField.fields.find((field) => field.id === id))\n .filter((field): field is Field => Boolean(field));\n\n return (\n <Flex justifyContent=\"center\">\n <Box css={{ marginTop: \"$40\", maxWidth: \"90%\", width: \"100%\" }}>\n <Box css={{ paddingLeft: \"$28\" }}>\n <Heading size=\"h5\">Map Contact Properties</Heading>\n <Text css={{ marginTop: \"$4\", color: \"$neutral600\" }} size=\"md\">\n Review these mappings before importing. Unmapped columns will be\n ignored.\n </Text>\n </Box>\n <Box\n css={{\n height: \"calc(100vh - 291px)\",\n paddingTop: \"$16\",\n overflowY: \"auto\",\n position: \"relative\",\n background: \"$white900\",\n paddingLeft: \"$28\",\n }}\n >\n <Table\n css={{\n width: \"100%\",\n background: \"$white900\",\n borderRadius: \"5px\",\n borderCollapse: \"collapse\",\n marginLeft: '-14px !important'\n }}\n >\n <Thead css={{ zIndex: 5, position: \"sticky\", top: \"-32px\" }}>\n <Th>{`${integrationName} Profile Fields Data`}</Th>\n <Th css={{ borderLeft: \"$borderWidths$xs solid $neutral100\" }}>\n SurveySparrow Mapping\n </Th>\n </Thead>\n <Tbody>\n {orderedFields.map((field) => {\n const hasSurveyFieldValue = contactProperties.some(\n (contact) => contact.value === field.surveySparrowField\n );\n\n return (\n <Tr key={field.id}>\n <Td css={{ width: 560 }}>\n {field.property !== \"custom\" ? (\n <>\n <Text size=\"sm\" weight=\"medium\">\n {typeof field.integrationField === 'string' \n ? field.integrationField.replace(\"_\", \" \")\n : field.integrationField}\n </Text>\n {field.sampleData?.map((sample, index) => (\n <Text\n key={index}\n size=\"xs\"\n css={{ lineHeight: \"$xs\" }}\n >\n {sample.length > 40\n ? `${sample.slice(0, 40)}...`\n : sample}\n </Text>\n ))}\n </>\n ) : (\n <Box css={{ position: \"relative\" }}>\n <FormInput\n size=\"lg\"\n onChange={(event: any) =>\n customFieldHandler(\n field.id,\n \"integrationField\",\n event.target.value\n )\n }\n />\n <FormLabel\n css={{ marginTop: \"$4\", color: \"$neutral400\" }}\n >\n Enter the exact custom property name for accurate\n mapping. It is case-sensitive.\n </FormLabel>\n <IconButton\n css={{\n position: \"absolute\",\n top: \"0\",\n left: \"-70px\",\n }}\n size=\"lg\"\n variant=\"ghost\"\n color=\"secondary\"\n onClick={() => deleteCustomProperty(field.id)}\n icon={<DeleteIcon />}\n aria-label=\"Delete custom property\"\n />\n </Box>\n )}\n </Td>\n <Td\n className=\"dm-sans\"\n css={{\n width: 560,\n borderLeft: \"$borderWidths$xs solid $neutral100\",\n }}\n >\n <Select\n size=\"lg\"\n className=\"dm-sans\"\n placeholder=\"--Choose Property--\"\n isClearable={true}\n menuPortalTarget={document.body}\n menuPlacement=\"auto\"\n menuShouldScrollIntoView={false}\n closeMenuOnScroll={(e: any) =>\n !(\n e.target instanceof Element &&\n e.target.closest('[class*=\"menu-list\"]')\n )\n }\n styles={{\n menuPortal: (base: any) => ({\n ...base,\n zIndex: 9999,\n }),\n }}\n value={\n field.surveySparrowField\n ? {\n label: contactProperties.find(\n (contact) =>\n contact.value === field.surveySparrowField\n )?.label,\n value: field.surveySparrowField,\n }\n : null\n }\n options={contactProperties\n .filter((contact) => contact.type !== \"DEPENDENT_FIELD\")\n .map((contact) => ({\n ...contact,\n isDisabled: contactImportField.fields.some(\n (f) =>\n f.id !== field.id &&\n f.surveySparrowField === contact.value\n ),\n }))}\n onChange={(currentField: any) =>\n updateSurveySparrowField(\n currentField?.value ?? null,\n field.id,\n true\n )\n }\n />\n {hasSurveyFieldValue && (\n <FormLabel\n size=\"xs\"\n css={{\n color: field.mapped ? \"$neutral600\" : \"#0F966C\",\n marginBlock: \"$4\",\n }}\n >\n {field.mapped\n ? \"Manually mapped by you\"\n : \"Automatically mapped\"}\n </FormLabel>\n )}\n {!field.surveySparrowField &&\n field.surveySparrowFieldError && (\n <FormLabel\n css={{ color: \"$negative500\", marginTop: \"$4\" }}\n size=\"xs\"\n >\n Please select the property\n </FormLabel>\n )}\n </Td>\n </Tr>\n );\n })}\n {hasAddCustomProperty && (\n <Tr>\n <Td colSpan={2}>\n <Button\n size=\"md\"\n variant=\"ghost\"\n leftIcon={<PlusIcon />}\n onClick={addCustomProperty}\n >\n Add Custom Property\n </Button>\n </Td>\n </Tr>\n )}\n </Tbody>\n </Table>\n </Box>\n </Box>\n </Flex>\n );\n};\n\nexport default ContactImportMapping;\n"],"names":["React","_a"],"mappings":"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"}
@@ -0,0 +1,170 @@
1
+ import 'react';
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __defProps = Object.defineProperties;
5
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
9
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
+ var __spreadValues = (a, b) => {
11
+ for (var prop in b || (b = {}))
12
+ if (__hasOwnProp.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ if (__getOwnPropSymbols)
15
+ for (var prop of __getOwnPropSymbols(b)) {
16
+ if (__propIsEnum.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ }
19
+ return a;
20
+ };
21
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
22
+ var __objRest = (source, exclude) => {
23
+ var target = {};
24
+ for (var prop in source)
25
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
26
+ target[prop] = source[prop];
27
+ if (source != null && __getOwnPropSymbols)
28
+ for (var prop of __getOwnPropSymbols(source)) {
29
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
30
+ target[prop] = source[prop];
31
+ }
32
+ return target;
33
+ };
34
+ const TOAST_REMOVE_DELAY = 1e4;
35
+ let count = 0;
36
+ function generareId() {
37
+ count = (count + 1) % Number.MAX_VALUE;
38
+ return count.toString();
39
+ }
40
+ const toastTimeouts = /* @__PURE__ */ new Map();
41
+ let memoryState = { toasts: [] };
42
+ const listeners = [];
43
+ function reducer(state, action) {
44
+ switch (action.type) {
45
+ case "ADD_TOAST":
46
+ return __spreadProps(__spreadValues({}, state), {
47
+ toasts: [action.toast, ...state.toasts]
48
+ });
49
+ case "UPDATE_TOAST":
50
+ return __spreadProps(__spreadValues({}, state), {
51
+ toasts: state.toasts.map((t) => t.id === action.toast.id ? __spreadValues(__spreadValues({}, t), action.toast) : t)
52
+ });
53
+ case "UPSERT_TOAST": {
54
+ const { toast: toast2 } = action;
55
+ return state.toasts.find((t) => t.id === toast2.id) ? reducer(state, { type: "UPDATE_TOAST", toast: toast2 }) : reducer(state, { type: "ADD_TOAST", toast: toast2 });
56
+ }
57
+ case "DISMISS_TOAST": {
58
+ const { toastId } = action;
59
+ if (toastId) {
60
+ addToRemoveQueue(toastId);
61
+ } else {
62
+ state.toasts.forEach((toast2) => {
63
+ addToRemoveQueue(toast2.id);
64
+ });
65
+ }
66
+ return __spreadProps(__spreadValues({}, state), {
67
+ toasts: state.toasts.map((t) => t.id === toastId || toastId === void 0 ? __spreadProps(__spreadValues({}, t), {
68
+ open: false
69
+ }) : t)
70
+ });
71
+ }
72
+ case "REMOVE_TOAST":
73
+ if (action.toastId === void 0) {
74
+ return __spreadProps(__spreadValues({}, state), {
75
+ toasts: []
76
+ });
77
+ }
78
+ return __spreadProps(__spreadValues({}, state), {
79
+ toasts: state.toasts.filter((t) => t.id !== action.toastId)
80
+ });
81
+ default:
82
+ return state;
83
+ }
84
+ }
85
+ function dispatch(action) {
86
+ memoryState = reducer(memoryState, action);
87
+ listeners.forEach((listener) => {
88
+ listener(memoryState);
89
+ });
90
+ }
91
+ const addToRemoveQueue = (toastId) => {
92
+ if (toastTimeouts.has(toastId)) {
93
+ return;
94
+ }
95
+ const timeout = setTimeout(() => {
96
+ toastTimeouts.delete(toastId);
97
+ dispatch({
98
+ type: "REMOVE_TOAST",
99
+ toastId
100
+ });
101
+ }, TOAST_REMOVE_DELAY);
102
+ toastTimeouts.set(toastId, timeout);
103
+ };
104
+ function toast(_a) {
105
+ var toastProps = __objRest(_a, []);
106
+ const id = generareId();
107
+ const update = (props) => dispatch({
108
+ type: "UPDATE_TOAST",
109
+ toast: __spreadProps(__spreadValues({}, props), { id })
110
+ });
111
+ const dismiss = () => dispatch({ type: "DISMISS_TOAST", toastId: id });
112
+ dispatch({
113
+ type: "ADD_TOAST",
114
+ toast: __spreadProps(__spreadValues({}, toastProps), {
115
+ id,
116
+ open: true,
117
+ onOpenChange: (open) => {
118
+ if (!open)
119
+ dismiss();
120
+ }
121
+ })
122
+ });
123
+ return {
124
+ id,
125
+ dismiss,
126
+ update
127
+ };
128
+ }
129
+ const createHandler = (variant = "default") => (args) => {
130
+ const newToast = toast(__spreadProps(__spreadValues({}, args), { variant }));
131
+ dispatch({ type: "UPSERT_TOAST", toast: __spreadProps(__spreadValues({}, newToast), { variant }) });
132
+ return newToast;
133
+ };
134
+ toast.loading = createHandler("loading");
135
+ toast.promise = (promise, options) => {
136
+ const loadingToast = toast.loading(options.loading);
137
+ promise.then((p) => {
138
+ const successProps = typeof options.success === "function" ? options.success(p) : options.success;
139
+ const variant = successProps.variant || "default";
140
+ loadingToast.update({
141
+ variant,
142
+ id: loadingToast.id,
143
+ icon: successProps.icon,
144
+ css: successProps.css,
145
+ action: successProps.action,
146
+ title: successProps.title,
147
+ description: successProps.description,
148
+ showCloseButton: successProps.showCloseButton
149
+ });
150
+ return p;
151
+ }).catch((e) => {
152
+ const errorProps = typeof options.error === "function" ? options.error(e) : options.error;
153
+ const variant = errorProps.variant || "error";
154
+ loadingToast.update({
155
+ variant,
156
+ id: loadingToast.id,
157
+ icon: errorProps.icon,
158
+ css: errorProps.css,
159
+ action: errorProps.action,
160
+ title: errorProps.title,
161
+ description: errorProps.description,
162
+ showCloseButton: errorProps.showCloseButton
163
+ });
164
+ return e;
165
+ });
166
+ return promise;
167
+ };
168
+
169
+ export { reducer, toast };
170
+ //# sourceMappingURL=use-toast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-toast.js","sources":["../../../../../../../../../../node_modules/@sparrowengg/twigs-react/dist/es/hooks/use-toast.js"],"sourcesContent":["import * as React from 'react';\n\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nconst TOAST_REMOVE_DELAY = 1e4;\nlet count = 0;\nfunction generareId() {\n count = (count + 1) % Number.MAX_VALUE;\n return count.toString();\n}\nconst toastTimeouts = /* @__PURE__ */ new Map();\nlet memoryState = { toasts: [] };\nconst listeners = [];\nfunction reducer(state, action) {\n switch (action.type) {\n case \"ADD_TOAST\":\n return __spreadProps(__spreadValues({}, state), {\n toasts: [action.toast, ...state.toasts]\n });\n case \"UPDATE_TOAST\":\n return __spreadProps(__spreadValues({}, state), {\n toasts: state.toasts.map((t) => t.id === action.toast.id ? __spreadValues(__spreadValues({}, t), action.toast) : t)\n });\n case \"UPSERT_TOAST\": {\n const { toast: toast2 } = action;\n return state.toasts.find((t) => t.id === toast2.id) ? reducer(state, { type: \"UPDATE_TOAST\", toast: toast2 }) : reducer(state, { type: \"ADD_TOAST\", toast: toast2 });\n }\n case \"DISMISS_TOAST\": {\n const { toastId } = action;\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast2) => {\n addToRemoveQueue(toast2.id);\n });\n }\n return __spreadProps(__spreadValues({}, state), {\n toasts: state.toasts.map((t) => t.id === toastId || toastId === void 0 ? __spreadProps(__spreadValues({}, t), {\n open: false\n }) : t)\n });\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === void 0) {\n return __spreadProps(__spreadValues({}, state), {\n toasts: []\n });\n }\n return __spreadProps(__spreadValues({}, state), {\n toasts: state.toasts.filter((t) => t.id !== action.toastId)\n });\n default:\n return state;\n }\n}\nfunction dispatch(action) {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n}\nconst addToRemoveQueue = (toastId) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId\n });\n }, TOAST_REMOVE_DELAY);\n toastTimeouts.set(toastId, timeout);\n};\nfunction toast(_a) {\n var toastProps = __objRest(_a, []);\n const id = generareId();\n const update = (props) => dispatch({\n type: \"UPDATE_TOAST\",\n toast: __spreadProps(__spreadValues({}, props), { id })\n });\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id });\n dispatch({\n type: \"ADD_TOAST\",\n toast: __spreadProps(__spreadValues({}, toastProps), {\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open)\n dismiss();\n }\n })\n });\n return {\n id,\n dismiss,\n update\n };\n}\nconst createHandler = (variant = \"default\") => (args) => {\n const newToast = toast(__spreadProps(__spreadValues({}, args), { variant }));\n dispatch({ type: \"UPSERT_TOAST\", toast: __spreadProps(__spreadValues({}, newToast), { variant }) });\n return newToast;\n};\ntoast.loading = createHandler(\"loading\");\ntoast.promise = (promise, options) => {\n const loadingToast = toast.loading(options.loading);\n promise.then((p) => {\n const successProps = typeof options.success === \"function\" ? options.success(p) : options.success;\n const variant = successProps.variant || \"default\";\n loadingToast.update({\n variant,\n id: loadingToast.id,\n icon: successProps.icon,\n css: successProps.css,\n action: successProps.action,\n title: successProps.title,\n description: successProps.description,\n showCloseButton: successProps.showCloseButton\n });\n return p;\n }).catch((e) => {\n const errorProps = typeof options.error === \"function\" ? options.error(e) : options.error;\n const variant = errorProps.variant || \"error\";\n loadingToast.update({\n variant,\n id: loadingToast.id,\n icon: errorProps.icon,\n css: errorProps.css,\n action: errorProps.action,\n title: errorProps.title,\n description: errorProps.description,\n showCloseButton: errorProps.showCloseButton\n });\n return e;\n });\n return promise;\n};\nfunction useToast({ maxToasts = 3 }) {\n const [state, setState] = React.useState(memoryState);\n React.useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n return {\n toasts: state.toasts.slice(0, maxToasts),\n toast,\n dismiss: (toastId) => dispatch({ type: \"DISMISS_TOAST\", toastId })\n };\n}\n\nexport { reducer, toast, useToast };\n//# sourceMappingURL=use-toast.js.map\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sparrowengg/integrations-templates-frontend",
3
- "version": "7.0.0-bulkify.8",
3
+ "version": "8.0.1",
4
4
  "license": "MIT",
5
5
  "module": "dist/es/index.js",
6
6
  "main": "dist/cjs/index.js",