@sparrowengg/integrations-templates-frontend 8.0.0 → 8.0.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.
- package/dist/cjs/contact-import/components/ContactImportHeader.js +12 -3
- package/dist/cjs/contact-import/components/ContactImportHeader.js.map +1 -1
- package/dist/cjs/contact-import/components/contact-import-mapping.js +30 -17
- package/dist/cjs/contact-import/components/contact-import-mapping.js.map +1 -1
- package/dist/cjs/node_modules/@radix-ui/react-dismissable-layer/dist/index.js +113 -20
- package/dist/cjs/node_modules/@radix-ui/react-dismissable-layer/dist/index.js.map +1 -1
- package/dist/cjs/node_modules/@radix-ui/react-popover/dist/index.js +1 -0
- package/dist/cjs/node_modules/@radix-ui/react-popover/dist/index.js.map +1 -1
- package/dist/cjs/node_modules/@radix-ui/react-popper/dist/index.js +16 -5
- package/dist/cjs/node_modules/@radix-ui/react-popper/dist/index.js.map +1 -1
- package/dist/cjs/node_modules/@sparrowengg/twigs-react/dist/es/hooks/use-toast.js +173 -0
- package/dist/cjs/node_modules/@sparrowengg/twigs-react/dist/es/hooks/use-toast.js.map +1 -0
- package/dist/es/contact-import/components/ContactImportHeader.js +12 -3
- package/dist/es/contact-import/components/ContactImportHeader.js.map +1 -1
- package/dist/es/contact-import/components/contact-import-mapping.js +30 -17
- package/dist/es/contact-import/components/contact-import-mapping.js.map +1 -1
- package/dist/es/node_modules/@radix-ui/react-dismissable-layer/dist/index.js +113 -20
- package/dist/es/node_modules/@radix-ui/react-dismissable-layer/dist/index.js.map +1 -1
- package/dist/es/node_modules/@radix-ui/react-popover/dist/index.js +1 -0
- package/dist/es/node_modules/@radix-ui/react-popover/dist/index.js.map +1 -1
- package/dist/es/node_modules/@radix-ui/react-popper/dist/index.js +16 -5
- package/dist/es/node_modules/@radix-ui/react-popper/dist/index.js.map +1 -1
- package/dist/es/node_modules/@sparrowengg/twigs-react/dist/es/hooks/use-toast.js +170 -0
- package/dist/es/node_modules/@sparrowengg/twigs-react/dist/es/hooks/use-toast.js.map +1 -0
- package/package.json +1 -1
|
@@ -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
|
|
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 )
|
|
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: "-
|
|
118
|
-
/* @__PURE__ */ React.createElement(table.Tbody, null,
|
|
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
|
|
@@ -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 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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"}
|
|
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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"}
|
|
@@ -35,12 +35,19 @@ var originalBodyPointerEvents;
|
|
|
35
35
|
var DismissableLayerContext = React__namespace.createContext({
|
|
36
36
|
layers: /* @__PURE__ */ new Set(),
|
|
37
37
|
layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),
|
|
38
|
-
branches: /* @__PURE__ */ new Set()
|
|
38
|
+
branches: /* @__PURE__ */ new Set(),
|
|
39
|
+
// Outside elements that belong to a layer's own dismiss affordance (eg, a
|
|
40
|
+
// dialog overlay). Pressing them should dismiss the layer regardless of
|
|
41
|
+
// whether or not they stop propagation.
|
|
42
|
+
//
|
|
43
|
+
// See https://github.com/radix-ui/primitives/issues/3346
|
|
44
|
+
dismissableSurfaces: /* @__PURE__ */ new Set()
|
|
39
45
|
});
|
|
40
46
|
var DismissableLayer = React__namespace.forwardRef(
|
|
41
47
|
(props, forwardedRef) => {
|
|
42
48
|
const {
|
|
43
49
|
disableOutsidePointerEvents = false,
|
|
50
|
+
deferPointerDownOutside = false,
|
|
44
51
|
onEscapeKeyDown,
|
|
45
52
|
onPointerDownOutside,
|
|
46
53
|
onFocusOutside,
|
|
@@ -59,15 +66,32 @@ var DismissableLayer = React__namespace.forwardRef(
|
|
|
59
66
|
const index$4 = node ? layers.indexOf(node) : -1;
|
|
60
67
|
const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;
|
|
61
68
|
const isPointerEventsEnabled = index$4 >= highestLayerWithOutsidePointerEventsDisabledIndex;
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
69
|
+
const isDeferredPointerDownOutsideRef = React__namespace.useRef(false);
|
|
70
|
+
const pointerDownOutside = usePointerDownOutside(
|
|
71
|
+
(event) => {
|
|
72
|
+
const target = event.target;
|
|
73
|
+
if (!(target instanceof Node)) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const isPointerDownOnBranch = [...context.branches].some(
|
|
77
|
+
(branch) => branch.contains(target)
|
|
78
|
+
);
|
|
79
|
+
if (!isPointerEventsEnabled || isPointerDownOnBranch) return;
|
|
80
|
+
onPointerDownOutside?.(event);
|
|
81
|
+
onInteractOutside?.(event);
|
|
82
|
+
if (!event.defaultPrevented) onDismiss?.();
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
ownerDocument,
|
|
86
|
+
deferPointerDownOutside,
|
|
87
|
+
isDeferredPointerDownOutsideRef,
|
|
88
|
+
dismissableSurfaces: context.dismissableSurfaces
|
|
89
|
+
}
|
|
90
|
+
);
|
|
70
91
|
const focusOutside = useFocusOutside((event) => {
|
|
92
|
+
if (deferPointerDownOutside && isDeferredPointerDownOutsideRef.current) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
71
95
|
const target = event.target;
|
|
72
96
|
const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));
|
|
73
97
|
if (isFocusInBranch) return;
|
|
@@ -154,35 +178,94 @@ var DismissableLayerBranch = React__namespace.forwardRef((props, forwardedRef) =
|
|
|
154
178
|
return /* @__PURE__ */ jsxRuntime.jsx(index$2.Primitive.div, { ...props, ref: composedRefs });
|
|
155
179
|
});
|
|
156
180
|
DismissableLayerBranch.displayName = BRANCH_NAME;
|
|
157
|
-
function usePointerDownOutside(onPointerDownOutside,
|
|
181
|
+
function usePointerDownOutside(onPointerDownOutside, args) {
|
|
182
|
+
const {
|
|
183
|
+
ownerDocument = globalThis?.document,
|
|
184
|
+
deferPointerDownOutside = false,
|
|
185
|
+
isDeferredPointerDownOutsideRef,
|
|
186
|
+
dismissableSurfaces
|
|
187
|
+
} = args;
|
|
158
188
|
const handlePointerDownOutside = index$4.useCallbackRef(onPointerDownOutside);
|
|
159
189
|
const isPointerInsideReactTreeRef = React__namespace.useRef(false);
|
|
190
|
+
const isPointerDownOutsideRef = React__namespace.useRef(false);
|
|
191
|
+
const interceptedOutsideInteractionEventsRef = React__namespace.useRef(/* @__PURE__ */ new Map());
|
|
160
192
|
const handleClickRef = React__namespace.useRef(() => {
|
|
161
193
|
});
|
|
162
194
|
React__namespace.useEffect(() => {
|
|
195
|
+
function resetOutsideInteraction() {
|
|
196
|
+
isPointerDownOutsideRef.current = false;
|
|
197
|
+
isDeferredPointerDownOutsideRef.current = false;
|
|
198
|
+
interceptedOutsideInteractionEventsRef.current.clear();
|
|
199
|
+
}
|
|
200
|
+
function isOutsideInteractionIntercepted() {
|
|
201
|
+
return Array.from(interceptedOutsideInteractionEventsRef.current.values()).some(Boolean);
|
|
202
|
+
}
|
|
203
|
+
function handleInteractionCapture(event) {
|
|
204
|
+
if (!isPointerDownOutsideRef.current) {
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
const target = event.target;
|
|
208
|
+
const isDismissableSurface = target instanceof Node && [...dismissableSurfaces].some((surface) => surface.contains(target));
|
|
209
|
+
if (!isDismissableSurface) {
|
|
210
|
+
interceptedOutsideInteractionEventsRef.current.set(event.type, true);
|
|
211
|
+
}
|
|
212
|
+
if (event.type === "click") {
|
|
213
|
+
window.setTimeout(() => {
|
|
214
|
+
if (isPointerDownOutsideRef.current) {
|
|
215
|
+
handleClickRef.current();
|
|
216
|
+
}
|
|
217
|
+
}, 0);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
function handleInteractionBubble(event) {
|
|
221
|
+
if (isPointerDownOutsideRef.current) {
|
|
222
|
+
interceptedOutsideInteractionEventsRef.current.set(event.type, false);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
163
225
|
const handlePointerDown = (event) => {
|
|
164
226
|
if (event.target && !isPointerInsideReactTreeRef.current) {
|
|
165
227
|
let handleAndDispatchPointerDownOutsideEvent2 = function() {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
228
|
+
ownerDocument.removeEventListener("click", handleClickRef.current);
|
|
229
|
+
const wasOutsideInteractionIntercepted = isOutsideInteractionIntercepted();
|
|
230
|
+
resetOutsideInteraction();
|
|
231
|
+
if (!wasOutsideInteractionIntercepted) {
|
|
232
|
+
handleAndDispatchCustomEvent(
|
|
233
|
+
POINTER_DOWN_OUTSIDE,
|
|
234
|
+
handlePointerDownOutside,
|
|
235
|
+
eventDetail,
|
|
236
|
+
{ discrete: true }
|
|
237
|
+
);
|
|
238
|
+
}
|
|
172
239
|
};
|
|
173
240
|
const eventDetail = { originalEvent: event };
|
|
174
|
-
|
|
241
|
+
isPointerDownOutsideRef.current = true;
|
|
242
|
+
isDeferredPointerDownOutsideRef.current = deferPointerDownOutside && event.button === 0;
|
|
243
|
+
interceptedOutsideInteractionEventsRef.current.clear();
|
|
244
|
+
if (!deferPointerDownOutside || event.button !== 0) {
|
|
245
|
+
handleAndDispatchPointerDownOutsideEvent2();
|
|
246
|
+
} else {
|
|
175
247
|
ownerDocument.removeEventListener("click", handleClickRef.current);
|
|
176
248
|
handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;
|
|
177
249
|
ownerDocument.addEventListener("click", handleClickRef.current, { once: true });
|
|
178
|
-
} else {
|
|
179
|
-
handleAndDispatchPointerDownOutsideEvent2();
|
|
180
250
|
}
|
|
181
251
|
} else {
|
|
182
252
|
ownerDocument.removeEventListener("click", handleClickRef.current);
|
|
253
|
+
resetOutsideInteraction();
|
|
183
254
|
}
|
|
184
255
|
isPointerInsideReactTreeRef.current = false;
|
|
185
256
|
};
|
|
257
|
+
const outsideInteractionEvents = [
|
|
258
|
+
"pointerup",
|
|
259
|
+
"mousedown",
|
|
260
|
+
"mouseup",
|
|
261
|
+
"touchstart",
|
|
262
|
+
"touchend",
|
|
263
|
+
"click"
|
|
264
|
+
];
|
|
265
|
+
for (const eventName of outsideInteractionEvents) {
|
|
266
|
+
ownerDocument.addEventListener(eventName, handleInteractionCapture, true);
|
|
267
|
+
ownerDocument.addEventListener(eventName, handleInteractionBubble);
|
|
268
|
+
}
|
|
186
269
|
const timerId = window.setTimeout(() => {
|
|
187
270
|
ownerDocument.addEventListener("pointerdown", handlePointerDown);
|
|
188
271
|
}, 0);
|
|
@@ -190,8 +273,18 @@ function usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?
|
|
|
190
273
|
window.clearTimeout(timerId);
|
|
191
274
|
ownerDocument.removeEventListener("pointerdown", handlePointerDown);
|
|
192
275
|
ownerDocument.removeEventListener("click", handleClickRef.current);
|
|
276
|
+
for (const eventName of outsideInteractionEvents) {
|
|
277
|
+
ownerDocument.removeEventListener(eventName, handleInteractionCapture, true);
|
|
278
|
+
ownerDocument.removeEventListener(eventName, handleInteractionBubble);
|
|
279
|
+
}
|
|
193
280
|
};
|
|
194
|
-
}, [
|
|
281
|
+
}, [
|
|
282
|
+
ownerDocument,
|
|
283
|
+
handlePointerDownOutside,
|
|
284
|
+
deferPointerDownOutside,
|
|
285
|
+
isDeferredPointerDownOutsideRef,
|
|
286
|
+
dismissableSurfaces
|
|
287
|
+
]);
|
|
195
288
|
return {
|
|
196
289
|
// ensures we check React component tree (not just DOM tree)
|
|
197
290
|
onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../../../node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs"],"sourcesContent":["\"use client\";\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n layers: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n const focusOutside = useFocusOutside((event) => {\n const target = event.target;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (disableOutsidePointerEvents) {\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...layerProps,\n ref: composedRefs,\n style: {\n pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n ...props.style\n },\n onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n onPointerDownCapture: composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )\n }\n );\n }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {\n });\n React.useEffect(() => {\n const handlePointerDown = (event) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n let handleAndDispatchPointerDownOutsideEvent2 = function() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n };\n var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n const eventDetail = { originalEvent: event };\n if (event.pointerType === \"touch\") {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent2();\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n const handleFocusOutside = useCallbackRef(onFocusOutside);\n const isFocusInsideReactTreeRef = React.useRef(false);\n React.useEffect(() => {\n const handleFocus = (event) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false\n });\n }\n };\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n return {\n onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n };\n}\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n Branch,\n DismissableLayer,\n DismissableLayerBranch,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["React","useComposedRefs","index","useEscapeKeydown","jsx","Primitive","composeEventHandlers","useCallbackRef","dispatchDiscreteCustomEvent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,IAAI,sBAAsB,GAAG,kBAAkB;AAC/C,IAAI,cAAc,GAAG,yBAAyB;AAC9C,IAAI,oBAAoB,GAAG,qCAAqC;AAChE,IAAI,aAAa,GAAG,+BAA+B;AACnD,IAAI,yBAAyB;AAC7B,IAAI,uBAAuB,GAAGA,gBAAK,CAAC,aAAa,CAAC;AAClD,EAAE,MAAM,kBAAkB,IAAI,GAAG,EAAE;AACnC,EAAE,sCAAsC,kBAAkB,IAAI,GAAG,EAAE;AACnE,EAAE,QAAQ,kBAAkB,IAAI,GAAG;AACnC,CAAC,CAAC;AACC,IAAC,gBAAgB,GAAGA,gBAAK,CAAC,UAAU;AACvC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK;AAC3B,IAAI,MAAM;AACV,MAAM,2BAA2B,GAAG,KAAK;AACzC,MAAM,eAAe;AACrB,MAAM,oBAAoB;AAC1B,MAAM,cAAc;AACpB,MAAM,iBAAiB;AACvB,MAAM,SAAS;AACf,MAAM,GAAG;AACT,KAAK,GAAG,KAAK;AACb,IAAI,MAAM,OAAO,GAAGA,gBAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC;AAC7D,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;AAChD,IAAI,MAAM,aAAa,GAAG,IAAI,EAAE,aAAa,IAAI,UAAU,EAAE,QAAQ;AACrE,IAAI,MAAM,GAAG,KAAK,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;AACxC,IAAI,MAAM,YAAY,GAAGC,qBAAe,CAAC,YAAY,EAAE,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;AACjF,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AAC7C,IAAI,MAAM,CAAC,4CAA4C,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,sCAAsC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AACxH,IAAI,MAAM,iDAAiD,GAAG,MAAM,CAAC,OAAO,CAAC,4CAA4C,CAAC;AAC1H,IAAI,MAAMC,OAAK,GAAG,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;AAClD,IAAI,MAAM,2BAA2B,GAAG,OAAO,CAAC,sCAAsC,CAAC,IAAI,GAAG,CAAC;AAC/F,IAAI,MAAM,sBAAsB,GAAGA,OAAK,IAAI,iDAAiD;AAC7F,IAAI,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,CAAC,KAAK,KAAK;AAChE,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;AACjC,MAAM,MAAM,qBAAqB,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACnG,MAAM,IAAI,CAAC,sBAAsB,IAAI,qBAAqB,EAAE;AAC5D,MAAM,oBAAoB,GAAG,KAAK,CAAC;AACnC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAChC,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,SAAS,IAAI;AAChD,IAAI,CAAC,EAAE,aAAa,CAAC;AACrB,IAAI,MAAM,YAAY,GAAG,eAAe,CAAC,CAAC,KAAK,KAAK;AACpD,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;AACjC,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC7F,MAAM,IAAI,eAAe,EAAE;AAC3B,MAAM,cAAc,GAAG,KAAK,CAAC;AAC7B,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAChC,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,SAAS,IAAI;AAChD,IAAI,CAAC,EAAE,aAAa,CAAC;AACrB,IAAIC,wBAAgB,CAAC,CAAC,KAAK,KAAK;AAChC,MAAM,MAAM,cAAc,GAAGD,OAAK,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;AAC9D,MAAM,IAAI,CAAC,cAAc,EAAE;AAC3B,MAAM,eAAe,GAAG,KAAK,CAAC;AAC9B,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,SAAS,EAAE;AAChD,QAAQ,KAAK,CAAC,cAAc,EAAE;AAC9B,QAAQ,SAAS,EAAE;AACnB,MAAM;AACN,IAAI,CAAC,EAAE,aAAa,CAAC;AACrB,IAAIF,gBAAK,CAAC,SAAS,CAAC,MAAM;AAC1B,MAAM,IAAI,CAAC,IAAI,EAAE;AACjB,MAAM,IAAI,2BAA2B,EAAE;AACvC,QAAQ,IAAI,OAAO,CAAC,sCAAsC,CAAC,IAAI,KAAK,CAAC,EAAE;AACvE,UAAU,yBAAyB,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa;AAC5E,UAAU,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM;AACzD,QAAQ;AACR,QAAQ,OAAO,CAAC,sCAAsC,CAAC,GAAG,CAAC,IAAI,CAAC;AAChE,MAAM;AACN,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9B,MAAM,cAAc,EAAE;AACtB,MAAM,OAAO,MAAM;AACnB,QAAQ,IAAI,2BAA2B,EAAE;AACzC,UAAU,OAAO,CAAC,sCAAsC,CAAC,MAAM,CAAC,IAAI,CAAC;AACrE,UAAU,IAAI,OAAO,CAAC,sCAAsC,CAAC,IAAI,KAAK,CAAC,EAAE;AACzE,YAAY,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,yBAAyB;AAC9E,UAAU;AACV,QAAQ;AACR,MAAM,CAAC;AACP,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,2BAA2B,EAAE,OAAO,CAAC,CAAC;AACnE,IAAIA,gBAAK,CAAC,SAAS,CAAC,MAAM;AAC1B,MAAM,OAAO,MAAM;AACnB,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB,QAAQ,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACnC,QAAQ,OAAO,CAAC,sCAAsC,CAAC,MAAM,CAAC,IAAI,CAAC;AACnE,QAAQ,cAAc,EAAE;AACxB,MAAM,CAAC;AACP,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACvB,IAAIA,gBAAK,CAAC,SAAS,CAAC,MAAM;AAC1B,MAAM,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC;AAC1C,MAAM,QAAQ,CAAC,gBAAgB,CAAC,cAAc,EAAE,YAAY,CAAC;AAC7D,MAAM,OAAO,MAAM,QAAQ,CAAC,mBAAmB,CAAC,cAAc,EAAE,YAAY,CAAC;AAC7E,IAAI,CAAC,EAAE,EAAE,CAAC;AACV,IAAI,uBAAuBI,cAAG;AAC9B,MAAMC,iBAAS,CAAC,GAAG;AACnB,MAAM;AACN,QAAQ,GAAG,UAAU;AACrB,QAAQ,GAAG,EAAE,YAAY;AACzB,QAAQ,KAAK,EAAE;AACf,UAAU,aAAa,EAAE,2BAA2B,GAAG,sBAAsB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM;AACxG,UAAU,GAAG,KAAK,CAAC;AACnB,SAAS;AACT,QAAQ,cAAc,EAAEC,4BAAoB,CAAC,KAAK,CAAC,cAAc,EAAE,YAAY,CAAC,cAAc,CAAC;AAC/F,QAAQ,aAAa,EAAEA,4BAAoB,CAAC,KAAK,CAAC,aAAa,EAAE,YAAY,CAAC,aAAa,CAAC;AAC5F,QAAQ,oBAAoB,EAAEA,4BAAoB;AAClD,UAAU,KAAK,CAAC,oBAAoB;AACpC,UAAU,kBAAkB,CAAC;AAC7B;AACA;AACA,KAAK;AACL,EAAE;AACF;AACA,gBAAgB,CAAC,WAAW,GAAG,sBAAsB;AACrD,IAAI,WAAW,GAAG,wBAAwB;AACvC,IAAC,sBAAsB,GAAGN,gBAAK,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,YAAY,KAAK;AACvE,EAAE,MAAM,OAAO,GAAGA,gBAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC;AAC3D,EAAE,MAAM,GAAG,GAAGA,gBAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AAChC,EAAE,MAAM,YAAY,GAAGC,qBAAe,CAAC,YAAY,EAAE,GAAG,CAAC;AACzD,EAAED,gBAAK,CAAC,SAAS,CAAC,MAAM;AACxB,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO;AAC5B,IAAI,IAAI,IAAI,EAAE;AACd,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AAChC,MAAM,OAAO,MAAM;AACnB,QAAQ,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;AACrC,MAAM,CAAC;AACP,IAAI;AACJ,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACxB,EAAE,uBAAuBI,cAAG,CAACC,iBAAS,CAAC,GAAG,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC;AAC5E,CAAC;AACD,sBAAsB,CAAC,WAAW,GAAG,WAAW;AAChD,SAAS,qBAAqB,CAAC,oBAAoB,EAAE,aAAa,GAAG,UAAU,EAAE,QAAQ,EAAE;AAC3F,EAAE,MAAM,wBAAwB,GAAGE,sBAAc,CAAC,oBAAoB,CAAC;AACvE,EAAE,MAAM,2BAA2B,GAAGP,gBAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AACzD,EAAE,MAAM,cAAc,GAAGA,gBAAK,CAAC,MAAM,CAAC,MAAM;AAC5C,EAAE,CAAC,CAAC;AACJ,EAAEA,gBAAK,CAAC,SAAS,CAAC,MAAM;AACxB,IAAI,MAAM,iBAAiB,GAAG,CAAC,KAAK,KAAK;AACzC,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE;AAChE,QAAQ,IAAI,yCAAyC,GAAG,WAAW;AACnE,UAAU,4BAA4B;AACtC,YAAY,oBAAoB;AAChC,YAAY,wBAAwB;AACpC,YAAY,WAAW;AACvB,YAAY,EAAE,QAAQ,EAAE,IAAI;AAC5B,WAAW;AACX,QAAQ,CAAC;AAET,QAAQ,MAAM,WAAW,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE;AACpD,QAAQ,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO,EAAE;AAC3C,UAAU,aAAa,CAAC,mBAAmB,CAAC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC;AAC5E,UAAU,cAAc,CAAC,OAAO,GAAG,yCAAyC;AAC5E,UAAU,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,cAAc,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACzF,QAAQ,CAAC,MAAM;AACf,UAAU,yCAAyC,EAAE;AACrD,QAAQ;AACR,MAAM,CAAC,MAAM;AACb,QAAQ,aAAa,CAAC,mBAAmB,CAAC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC;AAC1E,MAAM;AACN,MAAM,2BAA2B,CAAC,OAAO,GAAG,KAAK;AACjD,IAAI,CAAC;AACL,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM;AAC5C,MAAM,aAAa,CAAC,gBAAgB,CAAC,aAAa,EAAE,iBAAiB,CAAC;AACtE,IAAI,CAAC,EAAE,CAAC,CAAC;AACT,IAAI,OAAO,MAAM;AACjB,MAAM,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC;AAClC,MAAM,aAAa,CAAC,mBAAmB,CAAC,aAAa,EAAE,iBAAiB,CAAC;AACzE,MAAM,aAAa,CAAC,mBAAmB,CAAC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC;AACxE,IAAI,CAAC;AACL,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,wBAAwB,CAAC,CAAC;AAC/C,EAAE,OAAO;AACT;AACA,IAAI,oBAAoB,EAAE,MAAM,2BAA2B,CAAC,OAAO,GAAG;AACtE,GAAG;AACH;AACA,SAAS,eAAe,CAAC,cAAc,EAAE,aAAa,GAAG,UAAU,EAAE,QAAQ,EAAE;AAC/E,EAAE,MAAM,kBAAkB,GAAGO,sBAAc,CAAC,cAAc,CAAC;AAC3D,EAAE,MAAM,yBAAyB,GAAGP,gBAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AACvD,EAAEA,gBAAK,CAAC,SAAS,CAAC,MAAM;AACxB,IAAI,MAAM,WAAW,GAAG,CAAC,KAAK,KAAK;AACnC,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE;AAC9D,QAAQ,MAAM,WAAW,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE;AACpD,QAAQ,4BAA4B,CAAC,aAAa,EAAE,kBAAkB,EAAE,WAAW,EAAE;AACrF,UAAU,QAAQ,EAAE;AACpB,SAAS,CAAC;AACV,MAAM;AACN,IAAI,CAAC;AACL,IAAI,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC;AAC1D,IAAI,OAAO,MAAM,aAAa,CAAC,mBAAmB,CAAC,SAAS,EAAE,WAAW,CAAC;AAC1E,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;AACzC,EAAE,OAAO;AACT,IAAI,cAAc,EAAE,MAAM,yBAAyB,CAAC,OAAO,GAAG,IAAI;AAClE,IAAI,aAAa,EAAE,MAAM,yBAAyB,CAAC,OAAO,GAAG;AAC7D,GAAG;AACH;AACA,SAAS,cAAc,GAAG;AAC1B,EAAE,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,cAAc,CAAC;AAC/C,EAAE,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC/B;AACA,SAAS,4BAA4B,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE;AAC3E,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM;AAC5C,EAAE,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACnF,EAAE,IAAI,OAAO,EAAE,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACrE,EAAE,IAAI,QAAQ,EAAE;AAChB,IAAIQ,mCAA2B,CAAC,MAAM,EAAE,KAAK,CAAC;AAC9C,EAAE,CAAC,MAAM;AACT,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC;AAC/B,EAAE;AACF;;;;;","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../../../node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs"],"sourcesContent":["\"use client\";\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n layers: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set(),\n // Outside elements that belong to a layer's own dismiss affordance (eg, a\n // dialog overlay). Pressing them should dismiss the layer regardless of\n // whether or not they stop propagation.\n //\n // See https://github.com/radix-ui/primitives/issues/3346\n dismissableSurfaces: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n deferPointerDownOutside = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n const isDeferredPointerDownOutsideRef = React.useRef(false);\n const pointerDownOutside = usePointerDownOutside(\n (event) => {\n const target = event.target;\n if (!(target instanceof Node)) {\n return;\n }\n const isPointerDownOnBranch = [...context.branches].some(\n (branch) => branch.contains(target)\n );\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n },\n {\n ownerDocument,\n deferPointerDownOutside,\n isDeferredPointerDownOutsideRef,\n dismissableSurfaces: context.dismissableSurfaces\n }\n );\n const focusOutside = useFocusOutside((event) => {\n if (deferPointerDownOutside && isDeferredPointerDownOutsideRef.current) {\n return;\n }\n const target = event.target;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (disableOutsidePointerEvents) {\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...layerProps,\n ref: composedRefs,\n style: {\n pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n ...props.style\n },\n onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n onPointerDownCapture: composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )\n }\n );\n }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction useDismissableLayerSurface() {\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n React.useEffect(() => {\n if (!node) {\n return;\n }\n context.dismissableSurfaces.add(node);\n return () => {\n context.dismissableSurfaces.delete(node);\n };\n }, [node, context.dismissableSurfaces]);\n return setNode;\n}\nfunction usePointerDownOutside(onPointerDownOutside, args) {\n const {\n ownerDocument = globalThis?.document,\n deferPointerDownOutside = false,\n isDeferredPointerDownOutsideRef,\n dismissableSurfaces\n } = args;\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n const isPointerInsideReactTreeRef = React.useRef(false);\n const isPointerDownOutsideRef = React.useRef(false);\n const interceptedOutsideInteractionEventsRef = React.useRef(/* @__PURE__ */ new Map());\n const handleClickRef = React.useRef(() => {\n });\n React.useEffect(() => {\n function resetOutsideInteraction() {\n isPointerDownOutsideRef.current = false;\n isDeferredPointerDownOutsideRef.current = false;\n interceptedOutsideInteractionEventsRef.current.clear();\n }\n function isOutsideInteractionIntercepted() {\n return Array.from(interceptedOutsideInteractionEventsRef.current.values()).some(Boolean);\n }\n function handleInteractionCapture(event) {\n if (!isPointerDownOutsideRef.current) {\n return;\n }\n const target = event.target;\n const isDismissableSurface = target instanceof Node && [...dismissableSurfaces].some((surface) => surface.contains(target));\n if (!isDismissableSurface) {\n interceptedOutsideInteractionEventsRef.current.set(event.type, true);\n }\n if (event.type === \"click\") {\n window.setTimeout(() => {\n if (isPointerDownOutsideRef.current) {\n handleClickRef.current();\n }\n }, 0);\n }\n }\n function handleInteractionBubble(event) {\n if (isPointerDownOutsideRef.current) {\n interceptedOutsideInteractionEventsRef.current.set(event.type, false);\n }\n }\n const handlePointerDown = (event) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n let handleAndDispatchPointerDownOutsideEvent2 = function() {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n const wasOutsideInteractionIntercepted = isOutsideInteractionIntercepted();\n resetOutsideInteraction();\n if (!wasOutsideInteractionIntercepted) {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n }\n };\n var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n const eventDetail = { originalEvent: event };\n isPointerDownOutsideRef.current = true;\n isDeferredPointerDownOutsideRef.current = deferPointerDownOutside && event.button === 0;\n interceptedOutsideInteractionEventsRef.current.clear();\n if (!deferPointerDownOutside || event.button !== 0) {\n handleAndDispatchPointerDownOutsideEvent2();\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n resetOutsideInteraction();\n }\n isPointerInsideReactTreeRef.current = false;\n };\n const outsideInteractionEvents = [\n \"pointerup\",\n \"mousedown\",\n \"mouseup\",\n \"touchstart\",\n \"touchend\",\n \"click\"\n ];\n for (const eventName of outsideInteractionEvents) {\n ownerDocument.addEventListener(eventName, handleInteractionCapture, true);\n ownerDocument.addEventListener(eventName, handleInteractionBubble);\n }\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n for (const eventName of outsideInteractionEvents) {\n ownerDocument.removeEventListener(eventName, handleInteractionCapture, true);\n ownerDocument.removeEventListener(eventName, handleInteractionBubble);\n }\n };\n }, [\n ownerDocument,\n handlePointerDownOutside,\n deferPointerDownOutside,\n isDeferredPointerDownOutsideRef,\n dismissableSurfaces\n ]);\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n const handleFocusOutside = useCallbackRef(onFocusOutside);\n const isFocusInsideReactTreeRef = React.useRef(false);\n React.useEffect(() => {\n const handleFocus = (event) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false\n });\n }\n };\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n return {\n onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n };\n}\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n Branch,\n DismissableLayer,\n DismissableLayerBranch,\n Root,\n useDismissableLayerSurface\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["React","useComposedRefs","index","useEscapeKeydown","jsx","Primitive","composeEventHandlers","useCallbackRef","dispatchDiscreteCustomEvent"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -254,6 +254,7 @@ var PopoverContentImpl = React__namespace.forwardRef(
|
|
|
254
254
|
onPointerDownOutside,
|
|
255
255
|
onFocusOutside,
|
|
256
256
|
onDismiss: () => context.onOpenChange(false),
|
|
257
|
+
deferPointerDownOutside: true,
|
|
257
258
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
258
259
|
index$1.Content,
|
|
259
260
|
{
|