@sparrowengg/integrations-templates-frontend 6.0.7 → 7.0.0-bulkify.3
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/README.md +663 -0
- package/dist/cjs/cascader-dropdown/cascader-dropdown-provider.js +17 -1
- package/dist/cjs/cascader-dropdown/cascader-dropdown-provider.js.map +1 -1
- package/dist/cjs/cascader-dropdown/cascader-dropdown.js +5 -1
- package/dist/cjs/cascader-dropdown/cascader-dropdown.js.map +1 -1
- package/dist/cjs/dynamic-mapping/components/mapping.js +4 -2
- package/dist/cjs/dynamic-mapping/components/mapping.js.map +1 -1
- package/dist/cjs/dynamic-mapping/constants/condition-operators.js +1 -0
- package/dist/cjs/dynamic-mapping/constants/condition-operators.js.map +1 -1
- package/dist/cjs/dynamic-mapping/helpers/mapping.helpers.js +10 -0
- package/dist/cjs/dynamic-mapping/helpers/mapping.helpers.js.map +1 -1
- package/dist/cjs/dynamic-mapping/hooks/use-mapping-data.js +44 -29
- package/dist/cjs/dynamic-mapping/hooks/use-mapping-data.js.map +1 -1
- package/dist/cjs/dynamic-mapping/index.js +4 -2
- package/dist/cjs/dynamic-mapping/index.js.map +1 -1
- package/dist/cjs/filter/filter-pill.js +19 -9
- package/dist/cjs/filter/filter-pill.js.map +1 -1
- package/dist/es/cascader-dropdown/cascader-dropdown-provider.js +18 -2
- package/dist/es/cascader-dropdown/cascader-dropdown-provider.js.map +1 -1
- package/dist/es/cascader-dropdown/cascader-dropdown.js +5 -1
- package/dist/es/cascader-dropdown/cascader-dropdown.js.map +1 -1
- package/dist/es/dynamic-mapping/components/mapping.js +4 -2
- package/dist/es/dynamic-mapping/components/mapping.js.map +1 -1
- package/dist/es/dynamic-mapping/constants/condition-operators.js +1 -0
- package/dist/es/dynamic-mapping/constants/condition-operators.js.map +1 -1
- package/dist/es/dynamic-mapping/helpers/mapping.helpers.js +10 -1
- package/dist/es/dynamic-mapping/helpers/mapping.helpers.js.map +1 -1
- package/dist/es/dynamic-mapping/hooks/use-mapping-data.js +36 -21
- package/dist/es/dynamic-mapping/hooks/use-mapping-data.js.map +1 -1
- package/dist/es/dynamic-mapping/index.js +4 -2
- package/dist/es/dynamic-mapping/index.js.map +1 -1
- package/dist/es/filter/filter-pill.js +20 -10
- package/dist/es/filter/filter-pill.js.map +1 -1
- package/dist/index.d.ts +6 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cascader-dropdown-provider.js","sources":["../../../src/cascader-dropdown/cascader-dropdown-provider.tsx"],"sourcesContent":["import React, {\n ReactNode, useId, useMemo, useState, useRef,\n useEffect\n} from 'react';\nimport {\n CascaderDropdownItemType, CascaderDropdownOperatorType, CascaderDropdownDataValueType, CascaderDropdownValueSelectorType, optionTypes\n} from './helpers/cascader-dropdown-constants';\nimport { CascaderDropdownContext, CascaderDropdownContextType } from './use-value';\nimport {\n buildSelectionPath, buildTree, findNextFocusableRowNode, findPrevFocusableRowNode,\n recursiveFind\n} from './helpers/cascader-dropdown-utils';\nimport { CascaderDropdownNode } from './cascader-dropdown-node';\nimport { OnChangeReturnType } from './cascader-dropdown';\n\nexport type CascaderDropdownProviderProps = {\n children: ReactNode;\n data: (CascaderDropdownItemType | CascaderDropdownOperatorType)[];\n value: CascaderDropdownDataValueType;\n onChange: ({\n value,\n selectionPath,\n selectorValue\n }: OnChangeReturnType) => void;\n selectorValue?: CascaderDropdownValueSelectorType;\n};\n\nexport const CascaderDropdownProvider = ({\n children, data, value, onChange, selectorValue\n}: CascaderDropdownProviderProps) => {\n const id = useId();\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const [popoverOpen, setPopoverOpen] = useState(false);\n const [selectedNode, setSelectedNode] = useState<CascaderDropdownNode | null>(null);\n const [focusedNode, setFocusedNode] = useState<CascaderDropdownNode | null>(null);\n\n const { selectionPath, foldersSelectionPath } = useMemo(() => {\n return buildSelectionPath(selectedNode);\n }, [selectedNode]);\n\n const rootNode = useMemo(() => {\n const root = buildTree(data);\n const node = root.findNode(value?.value);\n if (node) setSelectedNode(node);\n return root;\n }, [data, value]);\n\n const focusPreviousColumn = () => {\n if (foldersSelectionPath.length === 0 || foldersSelectionPath.length === 1) {\n focusRootNode();\n return;\n }\n if (foldersSelectionPath.length > 1) {\n const selectedFolderNode = rootNode.findNode(foldersSelectionPath.at(-1)?.value);\n const parentNode = rootNode.findNode(foldersSelectionPath.at(-2)?.value);\n if (parentNode) {\n setFocusedNode(selectedFolderNode ?? parentNode.children.at(0) ?? null);\n setSelectedNode(parentNode);\n }\n }\n };\n\n const focusRootNode = () => {\n if (foldersSelectionPath.length > 0) {\n const selectedFolderNode = rootNode.findNode(foldersSelectionPath.at(0)?.value);\n setFocusedNode(selectedFolderNode ?? null);\n setSelectedNode(rootNode);\n return;\n }\n setFocusedNode(rootNode.children.at(0) ?? null);\n setSelectedNode(rootNode);\n };\n\n const focusNthColumn = (index: number) => {\n if (!index) {\n focusRootNode();\n return;\n }\n if (foldersSelectionPath.length > 0) {\n const selectedFolderNode = rootNode.findNode(foldersSelectionPath.at(index)?.value);\n const parent = rootNode.findNode(foldersSelectionPath.at(index - 1)?.value);\n if (parent) {\n setFocusedNode(selectedFolderNode ?? parent.children.at(0) ?? null);\n setSelectedNode(parent);\n }\n }\n };\n\n const focusNextRow = () => {\n if (focusedNode) {\n const nextNode = findNextFocusableRowNode(focusedNode);\n if (nextNode) setFocusedNode(nextNode);\n }\n };\n\n const focusPreviousRow = () => {\n if (focusedNode) {\n const prevNode = findPrevFocusableRowNode(focusedNode);\n if (prevNode) setFocusedNode(prevNode);\n }\n };\n\n const focusNextColumn = () => {\n if (focusedNode && (focusedNode.children.length > 0 || focusedNode.getType() === optionTypes.VALUE_SELECTOR)) {\n setFocusedNode(focusedNode.children.at(0) ?? null);\n setSelectedNode(focusedNode);\n }\n };\n\n const handleChange = (node: (CascaderDropdownNode | CascaderDropdownOperatorType), selectedSelectorValue?: CascaderDropdownValueSelectorType) => {\n setSelectedNode(null);\n setFocusedNode(null);\n setPopoverOpen(false);\n onChange({\n value: { label: node.label, value: node.value },\n selectionPath: selectionPath.map((item) => ({ label: item.label, value: item.value })),\n selectedProperty: recursiveFind(data, { value: node.value, label: node.label }),\n selectorValue: selectedSelectorValue\n });\n };\n\n const selectFocusedNode = () => {\n if (focusedNode) {\n if (focusedNode.children.length > 0 || focusedNode.getType() === optionTypes.VALUE_SELECTOR) {\n setFocusedNode(focusedNode.children.at(0) ?? null);\n setSelectedNode(focusedNode);\n } else {\n handleChange(focusedNode);\n }\n }\n };\n\n useEffect(() => {\n if (inputRef.current && document.activeElement !== inputRef.current) inputRef.current.focus();\n if (!focusedNode) {\n const selectedFolder: CascaderDropdownNode | null = foldersSelectionPath.length > 0 ? rootNode.findNode(foldersSelectionPath.at(0)?.value) : rootNode.children.at(0) ?? null;\n setFocusedNode(selectedFolder);\n }\n });\n\n const providerValue = useMemo<CascaderDropdownContextType>(() => ({\n id,\n data,\n value,\n inputRef,\n rootNode,\n focusedNode,\n popoverOpen,\n selectedNode,\n selectionPath,\n foldersSelectionPath,\n focusNextRow,\n setFocusedNode,\n setPopoverOpen,\n focusNthColumn,\n focusNextColumn,\n setSelectedNode,\n focusPreviousRow,\n focusPreviousColumn,\n handleChange,\n selectFocusedNode,\n selectorValue\n }), [\n id,\n data,\n value,\n inputRef,\n rootNode,\n focusedNode,\n popoverOpen,\n selectedNode,\n selectionPath,\n foldersSelectionPath,\n focusNextRow,\n setFocusedNode,\n focusNthColumn,\n setPopoverOpen,\n focusNextColumn,\n setSelectedNode,\n focusPreviousRow,\n focusPreviousColumn,\n handleChange,\n selectFocusedNode,\n selectorValue\n ]);\n\n return (\n <CascaderDropdownContext.Provider value={providerValue}>\n {children}\n </CascaderDropdownContext.Provider>\n );\n};\n"],"names":["useId","useRef","useState","useMemo","buildSelectionPath","buildTree","findNextFocusableRowNode","findPrevFocusableRowNode","optionTypes","recursiveFind","useEffect","CascaderDropdownContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cascader-dropdown-provider.js","sources":["../../../src/cascader-dropdown/cascader-dropdown-provider.tsx"],"sourcesContent":["import React, {\n ReactNode, useId, useMemo, useState, useRef,\n useEffect\n} from 'react';\nimport {\n CascaderDropdownItemType, CascaderDropdownOperatorType, CascaderDropdownDataValueType, CascaderDropdownValueSelectorType, optionTypes\n} from './helpers/cascader-dropdown-constants';\nimport { CascaderDropdownContext, CascaderDropdownContextType } from './use-value';\nimport {\n buildSelectionPath, buildTree, findNextFocusableRowNode, findPrevFocusableRowNode,\n recursiveFind\n} from './helpers/cascader-dropdown-utils';\nimport { CascaderDropdownNode } from './cascader-dropdown-node';\nimport { OnChangeReturnType } from './cascader-dropdown';\n\nexport type CascaderDropdownProviderProps = {\n children: ReactNode;\n data: (CascaderDropdownItemType | CascaderDropdownOperatorType)[];\n value: CascaderDropdownDataValueType;\n onChange: ({\n value,\n selectionPath,\n selectorValue\n }: OnChangeReturnType) => void;\n selectorValue?: CascaderDropdownValueSelectorType;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n};\n\nexport const CascaderDropdownProvider = ({\n children, data, value, onChange, selectorValue, defaultOpen = false, onOpenChange\n}: CascaderDropdownProviderProps) => {\n const id = useId();\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const [popoverOpen, setPopoverOpen] = useState(false);\n const prevPopoverOpen = useRef(false);\n\n useEffect(() => {\n if (defaultOpen) {\n const timer = setTimeout(() => setPopoverOpen(true), 0);\n return () => clearTimeout(timer);\n }\n return undefined;\n }, [defaultOpen]);\n\n useEffect(() => {\n if (prevPopoverOpen.current !== popoverOpen) {\n prevPopoverOpen.current = popoverOpen;\n onOpenChange?.(popoverOpen);\n }\n }, [popoverOpen, onOpenChange]);\n const [selectedNode, setSelectedNode] = useState<CascaderDropdownNode | null>(null);\n const [focusedNode, setFocusedNode] = useState<CascaderDropdownNode | null>(null);\n\n const { selectionPath, foldersSelectionPath } = useMemo(() => {\n return buildSelectionPath(selectedNode);\n }, [selectedNode]);\n\n const rootNode = useMemo(() => {\n const root = buildTree(data);\n const node = root.findNode(value?.value);\n if (node) setSelectedNode(node);\n return root;\n }, [data, value]);\n\n const focusPreviousColumn = () => {\n if (foldersSelectionPath.length === 0 || foldersSelectionPath.length === 1) {\n focusRootNode();\n return;\n }\n if (foldersSelectionPath.length > 1) {\n const selectedFolderNode = rootNode.findNode(foldersSelectionPath.at(-1)?.value);\n const parentNode = rootNode.findNode(foldersSelectionPath.at(-2)?.value);\n if (parentNode) {\n setFocusedNode(selectedFolderNode ?? parentNode.children.at(0) ?? null);\n setSelectedNode(parentNode);\n }\n }\n };\n\n const focusRootNode = () => {\n if (foldersSelectionPath.length > 0) {\n const selectedFolderNode = rootNode.findNode(foldersSelectionPath.at(0)?.value);\n setFocusedNode(selectedFolderNode ?? null);\n setSelectedNode(rootNode);\n return;\n }\n setFocusedNode(rootNode.children.at(0) ?? null);\n setSelectedNode(rootNode);\n };\n\n const focusNthColumn = (index: number) => {\n if (!index) {\n focusRootNode();\n return;\n }\n if (foldersSelectionPath.length > 0) {\n const selectedFolderNode = rootNode.findNode(foldersSelectionPath.at(index)?.value);\n const parent = rootNode.findNode(foldersSelectionPath.at(index - 1)?.value);\n if (parent) {\n setFocusedNode(selectedFolderNode ?? parent.children.at(0) ?? null);\n setSelectedNode(parent);\n }\n }\n };\n\n const focusNextRow = () => {\n if (focusedNode) {\n const nextNode = findNextFocusableRowNode(focusedNode);\n if (nextNode) setFocusedNode(nextNode);\n }\n };\n\n const focusPreviousRow = () => {\n if (focusedNode) {\n const prevNode = findPrevFocusableRowNode(focusedNode);\n if (prevNode) setFocusedNode(prevNode);\n }\n };\n\n const focusNextColumn = () => {\n if (focusedNode && (focusedNode.children.length > 0 || focusedNode.getType() === optionTypes.VALUE_SELECTOR)) {\n setFocusedNode(focusedNode.children.at(0) ?? null);\n setSelectedNode(focusedNode);\n }\n };\n\n const handleChange = (node: (CascaderDropdownNode | CascaderDropdownOperatorType), selectedSelectorValue?: CascaderDropdownValueSelectorType) => {\n setSelectedNode(null);\n setFocusedNode(null);\n setPopoverOpen(false);\n onChange({\n value: { label: node.label, value: node.value },\n selectionPath: selectionPath.map((item) => ({ label: item.label, value: item.value })),\n selectedProperty: recursiveFind(data, { value: node.value, label: node.label }),\n selectorValue: selectedSelectorValue\n });\n };\n\n const selectFocusedNode = () => {\n if (focusedNode) {\n if (focusedNode.children.length > 0 || focusedNode.getType() === optionTypes.VALUE_SELECTOR) {\n setFocusedNode(focusedNode.children.at(0) ?? null);\n setSelectedNode(focusedNode);\n } else {\n handleChange(focusedNode);\n }\n }\n };\n\n useEffect(() => {\n if (inputRef.current && document.activeElement !== inputRef.current) inputRef.current.focus();\n if (!focusedNode) {\n const selectedFolder: CascaderDropdownNode | null = foldersSelectionPath.length > 0 ? rootNode.findNode(foldersSelectionPath.at(0)?.value) : rootNode.children.at(0) ?? null;\n setFocusedNode(selectedFolder);\n }\n });\n\n const providerValue = useMemo<CascaderDropdownContextType>(() => ({\n id,\n data,\n value,\n inputRef,\n rootNode,\n focusedNode,\n popoverOpen,\n selectedNode,\n selectionPath,\n foldersSelectionPath,\n focusNextRow,\n setFocusedNode,\n setPopoverOpen,\n focusNthColumn,\n focusNextColumn,\n setSelectedNode,\n focusPreviousRow,\n focusPreviousColumn,\n handleChange,\n selectFocusedNode,\n selectorValue\n }), [\n id,\n data,\n value,\n inputRef,\n rootNode,\n focusedNode,\n popoverOpen,\n selectedNode,\n selectionPath,\n foldersSelectionPath,\n focusNextRow,\n setFocusedNode,\n focusNthColumn,\n setPopoverOpen,\n focusNextColumn,\n setSelectedNode,\n focusPreviousRow,\n focusPreviousColumn,\n handleChange,\n selectFocusedNode,\n selectorValue\n ]);\n\n return (\n <CascaderDropdownContext.Provider value={providerValue}>\n {children}\n </CascaderDropdownContext.Provider>\n );\n};\n"],"names":["useId","useRef","useState","useEffect","useMemo","buildSelectionPath","buildTree","findNextFocusableRowNode","findPrevFocusableRowNode","optionTypes","recursiveFind","CascaderDropdownContext"],"mappings":"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"}
|
|
@@ -36,7 +36,9 @@ const CascaderDropdown = ({
|
|
|
36
36
|
dropdownProps = {},
|
|
37
37
|
dropdownContentProps = {},
|
|
38
38
|
tooltipProps,
|
|
39
|
-
selectorValue = cascaderDropdownConstants.initialFilterValueSelectorValue
|
|
39
|
+
selectorValue = cascaderDropdownConstants.initialFilterValueSelectorValue,
|
|
40
|
+
defaultOpen = false,
|
|
41
|
+
onOpenChange
|
|
40
42
|
}) => {
|
|
41
43
|
var _a;
|
|
42
44
|
const [localValue, setLocalValue] = React.useState(
|
|
@@ -64,6 +66,8 @@ const CascaderDropdown = ({
|
|
|
64
66
|
data,
|
|
65
67
|
value: selectedValue,
|
|
66
68
|
selectorValue,
|
|
69
|
+
defaultOpen,
|
|
70
|
+
onOpenChange,
|
|
67
71
|
onChange: ({
|
|
68
72
|
value: selectedDataValue,
|
|
69
73
|
selectionPath,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cascader-dropdown.js","sources":["../../../src/cascader-dropdown/cascader-dropdown.tsx"],"sourcesContent":["import { ReactNode, RefAttributes, useMemo, useState } from \"react\";\nimport { PopoverProps, PopoverContentProps } from \"@radix-ui/react-popover\";\nimport { TooltipProps, TooltipProvider } from \"@sparrowengg/twigs-react\";\nimport {\n CascaderDropdownItemType,\n CascaderDropdownDataValueType,\n CascaderDropdownValueSelectorType,\n CascaderDropdownOperatorType,\n initialFilterValueSelectorValue,\n} from \"./helpers/cascader-dropdown-constants\";\nimport { CascaderDropdownProvider } from \"./cascader-dropdown-provider\";\nimport { CascaderDropdownContent } from \"./cascader-dropdown-content\";\nimport { recursiveFind } from \"./helpers/cascader-dropdown-utils\";\nimport React from \"react\";\nimport ThemeWrapper from \"../commons/components/theme-wrapper\";\n\nexport type DropdownContentProps = PopoverContentProps &\n RefAttributes<HTMLDivElement>;\n\nexport type CascaderDropdownProps = {\n children?: ReactNode;\n data: (CascaderDropdownItemType | CascaderDropdownOperatorType)[];\n value?: CascaderDropdownDataValueType | string | null;\n defaultValue?: CascaderDropdownDataValueType | string | null;\n onChange?: ({\n value,\n selectionPath,\n selectedProperty,\n selectorValue,\n }: OnChangeReturnType) => void;\n dropdownProps?: PopoverProps;\n dropdownContentProps?: DropdownContentProps;\n tooltipProps?: TooltipProps;\n selectorValue?: CascaderDropdownValueSelectorType;\n} & CascaderDropdownComponentProps;\n\nexport type CascaderDropdownComponentProps = {};\n\nexport type OnChangeReturnType = {\n value: CascaderDropdownDataValueType | CascaderDropdownOperatorType;\n selectionPath: CascaderDropdownDataValueType[];\n selectedProperty: CascaderDropdownDataValueType | null;\n selectorValue?: CascaderDropdownValueSelectorType;\n};\n\nexport const CascaderDropdown = ({\n children,\n data = [],\n value = null,\n defaultValue = null,\n onChange,\n dropdownProps = {},\n dropdownContentProps = {},\n tooltipProps,\n selectorValue = initialFilterValueSelectorValue,\n}: CascaderDropdownProps) => {\n const [localValue, setLocalValue] = useState<CascaderDropdownDataValueType>(\n (typeof defaultValue === \"object\"\n ? defaultValue\n : recursiveFind(data, { value: defaultValue, label: \"\" })) ?? {\n value: \"\",\n label: \"\",\n }\n );\n\n const selectedValue = useMemo<CascaderDropdownDataValueType>(() => {\n if (value && typeof value === \"object\") {\n return value;\n }\n\n if (value) {\n return (\n recursiveFind(data, { value, label: \"\" }) ?? { value: \"\", label: \"\" }\n );\n }\n\n if (localValue && typeof localValue === \"object\") {\n return localValue;\n }\n\n return { value: \"\", label: \"\" };\n }, [data, localValue, value]);\n\n return (\n <ThemeWrapper>\n <TooltipProvider delayDuration={6000}>\n <CascaderDropdownProvider\n data={data}\n value={selectedValue}\n selectorValue={selectorValue}\n onChange={({\n value: selectedDataValue,\n selectionPath,\n selectorValue: selectedSelectorValue,\n }: {\n value: CascaderDropdownDataValueType | CascaderDropdownOperatorType;\n selectionPath: CascaderDropdownDataValueType[];\n selectorValue?: CascaderDropdownValueSelectorType;\n }) => {\n setLocalValue(selectedDataValue);\n if (onChange) {\n onChange({\n value: selectedDataValue,\n selectionPath,\n selectedProperty: recursiveFind(data, {\n value: selectedDataValue.value,\n label: \"\",\n }),\n selectorValue: selectedSelectorValue,\n });\n }\n }}\n >\n <CascaderDropdownContent\n {...dropdownProps}\n dropdownContentProps={dropdownContentProps}\n tooltipProps={tooltipProps}\n >\n {children}\n </CascaderDropdownContent>\n </CascaderDropdownProvider>\n </TooltipProvider>\n </ThemeWrapper>\n );\n};\n"],"names":["initialFilterValueSelectorValue","useState","recursiveFind","useMemo","_a","ThemeWrapper","TooltipProvider","CascaderDropdownProvider","CascaderDropdownContent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"cascader-dropdown.js","sources":["../../../src/cascader-dropdown/cascader-dropdown.tsx"],"sourcesContent":["import { ReactNode, RefAttributes, useMemo, useState } from \"react\";\nimport { PopoverProps, PopoverContentProps } from \"@radix-ui/react-popover\";\nimport { TooltipProps, TooltipProvider } from \"@sparrowengg/twigs-react\";\nimport {\n CascaderDropdownItemType,\n CascaderDropdownDataValueType,\n CascaderDropdownValueSelectorType,\n CascaderDropdownOperatorType,\n initialFilterValueSelectorValue,\n} from \"./helpers/cascader-dropdown-constants\";\nimport { CascaderDropdownProvider } from \"./cascader-dropdown-provider\";\nimport { CascaderDropdownContent } from \"./cascader-dropdown-content\";\nimport { recursiveFind } from \"./helpers/cascader-dropdown-utils\";\nimport React from \"react\";\nimport ThemeWrapper from \"../commons/components/theme-wrapper\";\n\nexport type DropdownContentProps = PopoverContentProps &\n RefAttributes<HTMLDivElement>;\n\nexport type CascaderDropdownProps = {\n children?: ReactNode;\n data: (CascaderDropdownItemType | CascaderDropdownOperatorType)[];\n value?: CascaderDropdownDataValueType | string | null;\n defaultValue?: CascaderDropdownDataValueType | string | null;\n onChange?: ({\n value,\n selectionPath,\n selectedProperty,\n selectorValue,\n }: OnChangeReturnType) => void;\n dropdownProps?: PopoverProps;\n dropdownContentProps?: DropdownContentProps;\n tooltipProps?: TooltipProps;\n selectorValue?: CascaderDropdownValueSelectorType;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n} & CascaderDropdownComponentProps;\n\nexport type CascaderDropdownComponentProps = {};\n\nexport type OnChangeReturnType = {\n value: CascaderDropdownDataValueType | CascaderDropdownOperatorType;\n selectionPath: CascaderDropdownDataValueType[];\n selectedProperty: CascaderDropdownDataValueType | null;\n selectorValue?: CascaderDropdownValueSelectorType;\n};\n\nexport const CascaderDropdown = ({\n children,\n data = [],\n value = null,\n defaultValue = null,\n onChange,\n dropdownProps = {},\n dropdownContentProps = {},\n tooltipProps,\n selectorValue = initialFilterValueSelectorValue,\n defaultOpen = false,\n onOpenChange,\n}: CascaderDropdownProps) => {\n const [localValue, setLocalValue] = useState<CascaderDropdownDataValueType>(\n (typeof defaultValue === \"object\"\n ? defaultValue\n : recursiveFind(data, { value: defaultValue, label: \"\" })) ?? {\n value: \"\",\n label: \"\",\n }\n );\n\n const selectedValue = useMemo<CascaderDropdownDataValueType>(() => {\n if (value && typeof value === \"object\") {\n return value;\n }\n\n if (value) {\n return (\n recursiveFind(data, { value, label: \"\" }) ?? { value: \"\", label: \"\" }\n );\n }\n\n if (localValue && typeof localValue === \"object\") {\n return localValue;\n }\n\n return { value: \"\", label: \"\" };\n }, [data, localValue, value]);\n\n return (\n <ThemeWrapper>\n <TooltipProvider delayDuration={6000}>\n <CascaderDropdownProvider\n data={data}\n value={selectedValue}\n selectorValue={selectorValue}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n onChange={({\n value: selectedDataValue,\n selectionPath,\n selectorValue: selectedSelectorValue,\n }: {\n value: CascaderDropdownDataValueType | CascaderDropdownOperatorType;\n selectionPath: CascaderDropdownDataValueType[];\n selectorValue?: CascaderDropdownValueSelectorType;\n }) => {\n setLocalValue(selectedDataValue);\n if (onChange) {\n onChange({\n value: selectedDataValue,\n selectionPath,\n selectedProperty: recursiveFind(data, {\n value: selectedDataValue.value,\n label: \"\",\n }),\n selectorValue: selectedSelectorValue,\n });\n }\n }}\n >\n <CascaderDropdownContent\n {...dropdownProps}\n dropdownContentProps={dropdownContentProps}\n tooltipProps={tooltipProps}\n >\n {children}\n </CascaderDropdownContent>\n </CascaderDropdownProvider>\n </TooltipProvider>\n </ThemeWrapper>\n );\n};\n"],"names":["initialFilterValueSelectorValue","useState","recursiveFind","useMemo","_a","ThemeWrapper","TooltipProvider","CascaderDropdownProvider","CascaderDropdownContent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CO,MAAM,mBAAmB,CAAC;AAAA,EAC/B,QAAA;AAAA,EACA,OAAO,EAAC;AAAA,EACR,KAAA,GAAQ,IAAA;AAAA,EACR,YAAA,GAAe,IAAA;AAAA,EACf,QAAA;AAAA,EACA,gBAAgB,EAAC;AAAA,EACjB,uBAAuB,EAAC;AAAA,EACxB,YAAA;AAAA,EACA,aAAA,GAAgBA,yDAAA;AAAA,EAChB,WAAA,GAAc,KAAA;AAAA,EACd;AACF,CAAA,KAA6B;AA3D7B,EAAA,IAAA,EAAA;AA4DE,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIC,cAAA;AAAA,IAAA,CACjC,EAAA,GAAA,OAAO,YAAA,KAAiB,QAAA,GACrB,YAAA,GACAC,mCAAA,CAAc,IAAA,EAAM,EAAE,KAAA,EAAO,YAAwB,CAAC,MAFzD,IAAA,GAAA,EAAA,GAE+D;AAAA,MAC9D,KAAA,EAAO,EAAA;AAAA,MACP,KAAA,EAAO;AAAA;AACT,GACF;AAEA,EAAA,MAAM,aAAA,GAAgBC,cAAuC,MAAM;AArErE,IAAA,IAAAC,GAAAA;AAsEI,IAAA,IAAI,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,EAAU;AACtC,MAAA,OAAO,KAAA;AAAA,IACT;AAEA,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,OAAA,CACEA,GAAAA,GAAAF,mCAAA,CAAc,IAAA,EAAM,EAAE,KAAiB,CAAC,CAAA,KAAxC,OAAAE,GAAAA,GAA6C,EAAE,KAAA,EAAO,EAAA,EAAI,OAAO,EAAA,EAAG;AAAA,IAExE;AAEA,IAAA,IAAI,UAAA,IAAc,OAAO,UAAA,KAAe,QAAA,EAAU;AAChD,MAAA,OAAO,UAAA;AAAA,IACT;AAEA,IAAA,OAAO,EAAE,KAAA,EAAO,EAAA,EAAI,KAAA,EAAO,EAAA,EAAG;AAAA,EAChC,CAAA,EAAG,CAAC,IAAA,EAAM,UAAA,EAAY,KAAK,CAAC,CAAA;AAE5B,EAAA,uBACE,KAAA,CAAA,aAAA,CAACC,oBAAA,EAAA,IAAA,kBACC,KAAA,CAAA,aAAA,CAACC,uBAAA,EAAA,EAAgB,eAAe,GAAA,EAAA,kBAC9B,KAAA,CAAA,aAAA;AAAA,IAACC,iDAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,KAAA,EAAO,aAAA;AAAA,MACP,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAU,CAAC;AAAA,QACT,KAAA,EAAO,iBAAA;AAAA,QACP,aAAA;AAAA,QACA,aAAA,EAAe;AAAA,OACjB,KAIM;AACJ,QAAA,aAAA,CAAc,iBAAiB,CAAA;AAC/B,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,QAAA,CAAS;AAAA,YACP,KAAA,EAAO,iBAAA;AAAA,YACP,aAAA;AAAA,YACA,gBAAA,EAAkBL,oCAAc,IAAA,EAAM;AAAA,cACpC,OAAO,iBAAA,CAAkB,KAE3B,CAAC,CAAA;AAAA,YACD,aAAA,EAAe;AAAA,WAChB,CAAA;AAAA,QACH;AAAA,MACF;AAAA,KAAA;AAAA,oBAEA,KAAA,CAAA,aAAA;AAAA,MAACM,+CAAA;AAAA,MAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EACK,aAAA,CAAA,EADL;AAAA,QAEC,oBAAA;AAAA,QACA;AAAA,OAAA,CAAA;AAAA,MAEC;AAAA;AACH,GAEJ,CACF,CAAA;AAEJ;;;;"}
|
|
@@ -33,7 +33,8 @@ const Mapping = ({
|
|
|
33
33
|
setSSMappingData,
|
|
34
34
|
editField,
|
|
35
35
|
setIsInitialLoad,
|
|
36
|
-
setOriginalMappingData
|
|
36
|
+
setOriginalMappingData,
|
|
37
|
+
hasResponsePDF
|
|
37
38
|
}) => {
|
|
38
39
|
var _a, _b, _c;
|
|
39
40
|
const {
|
|
@@ -55,7 +56,8 @@ const Mapping = ({
|
|
|
55
56
|
setIsInitialLoad,
|
|
56
57
|
setOriginalMappingData,
|
|
57
58
|
ssMappingData,
|
|
58
|
-
setSSMappingData
|
|
59
|
+
setSSMappingData,
|
|
60
|
+
hasResponsePDF
|
|
59
61
|
});
|
|
60
62
|
const mappingData = hookSsMappingData;
|
|
61
63
|
const effectiveConditionData = React.useMemo(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapping.js","sources":["../../../../src/dynamic-mapping/components/mapping.tsx"],"sourcesContent":["/* ----- Imports ----- */\n\nimport React, { useMemo } from 'react';\nimport {\n Box,\n Flex,\n Heading,\n Text,\n Radio,\n RadioGroup,\n Tabs,\n TabsList,\n TabsTrigger,\n Chip,\n} from '@sparrowengg/twigs-react';\nimport { surveySparrowURL, mappingTabValues } from '../../commons/constants';\nimport Spinner from '../../commons/components/spinner';\nimport MappingCondition from '../../commons/components/mapping-conditions';\nimport { ConditionCard } from '../../mapping/utils/conditionDescriptionBuilder';\nimport { useMappingData } from '../hooks';\nimport { TabsContentComponent } from './tabs-content-component';\nimport { CustomChip } from './custom-chip';\nimport { deriveConditionDataFromSurveyData, hasValidConditionData, hasAnyMappingData } from '../helpers';\n\n/* ----- Types / Interfaces ----- */\n\ninterface MappingProps {\n hasConditions?: boolean;\n mappingConditions?: any;\n setMappingConditions?: (value: any) => void;\n conditionData?: any;\n conditionDescription?: string;\n surveyId: string | number;\n apiURL?: string;\n token?: string;\n surveyProperties?: any;\n importResponse: any;\n ssMappingData: any;\n setSSMappingData: React.Dispatch<React.SetStateAction<any>>;\n editField?: any;\n setIsInitialLoad: (value: boolean) => void;\n setOriginalMappingData: (value: any) => void;\n integrationFields?: any;\n setIntegrationFields?: any;\n}\n\n/* ----- Main Component ----- */\n\n/**\n * Mapping component for dynamic field selection\n * \n * @param {MappingProps} props - Component props\n * @returns {JSX.Element} Mapping component\n * \n * @example\n * <Mapping\n * surveyId={123}\n * token=\"token\"\n * importResponse={response}\n * ssMappingData={data}\n * setSSMappingData={setData}\n * />\n */\nexport const Mapping = ({\n hasConditions,\n mappingConditions,\n setMappingConditions,\n conditionData,\n conditionDescription,\n surveyId,\n apiURL = surveySparrowURL,\n token,\n surveyProperties,\n importResponse,\n ssMappingData,\n setSSMappingData,\n editField,\n setIsInitialLoad,\n setOriginalMappingData,\n}: MappingProps): JSX.Element => {\n const {\n loader,\n searchInput,\n setSearchInput,\n ssMappingData: hookSsMappingData,\n setSSMappingData: hookSetSSMappingData,\n handleFieldValues,\n getMappingCount,\n getAllMappingCount,\n isApiData,\n } = useMappingData({\n surveyId,\n apiURL,\n token,\n surveyProperties,\n importResponse,\n editField,\n setIsInitialLoad,\n setOriginalMappingData,\n ssMappingData,\n setSSMappingData,\n });\n\n // Use the hook's data which is synced with parent\n const mappingData = hookSsMappingData;\n\n // Compute effective conditionData - use prop if provided, otherwise derive from survey data\n const effectiveConditionData = useMemo(() => {\n // If conditionData prop is provided and valid, use it directly\n if (hasValidConditionData(conditionData)) {\n return conditionData;\n }\n // Priority: surveyProperties > external ssMappingData > hook ssMappingData\n const sourceData = surveyProperties || ssMappingData || hookSsMappingData;\n if (sourceData && hasAnyMappingData(sourceData)) {\n return deriveConditionDataFromSurveyData(sourceData);\n }\n return [];\n }, [conditionData, surveyProperties, ssMappingData, hookSsMappingData]);\n\n const isSelectedDataMode = useMemo(\n () => importResponse?.value?.importMethod === 'SELECTED_DATA',\n [importResponse?.value?.importMethod]\n );\n\n const handleImportMethodChange = useMemo(\n () => (value: string) => {\n importResponse.onChangeHandler({\n id: 'importMethod',\n value,\n });\n },\n [importResponse]\n );\n\n const handleConditionClear = useMemo(\n () => () => {\n setMappingConditions?.(undefined);\n },\n [setMappingConditions]\n );\n\n if (loader) {\n return (\n <Flex alignItems=\"center\" justifyContent=\"center\">\n <Flex\n alignItems=\"center\"\n justifyContent=\"center\"\n css={{ height: 'calc(100vh - 57px)' }}\n >\n <Spinner />\n </Flex>\n </Flex>\n );\n }\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"center\">\n <Box css={{ maxWidth: 650, width: '100%', marginBlock: '$40' }}>\n {importResponse?.hasImportResponse && (\n <Flex flexDirection=\"column\">\n <Heading size=\"h5\" css={{ color: '$neutral900' }}>\n Select Import Data\n </Heading>\n\n {hasConditions && (\n <Flex css={{ marginTop: '$3' }}>\n {mappingConditions?.filterGroups?.length ? (\n <MappingCondition\n existingContions={mappingConditions}\n setExistingCondtions={setMappingConditions}\n conditionData={effectiveConditionData}\n renderTrigger={(onEditClick) => (\n <ConditionCard\n isEditable\n conditionsData={mappingConditions}\n onEditClick={onEditClick}\n onClearClick={handleConditionClear}\n showMoreMenu\n />\n )}\n />\n ) : (\n <Flex gap=\"$2\" css={{ marginTop: '$2' }}>\n <Text size=\"sm\" css={{ color: '$neutral500' }}>\n {conditionDescription}\n </Text>\n <MappingCondition\n existingContions={mappingConditions}\n setExistingCondtions={setMappingConditions}\n conditionData={effectiveConditionData}\n />\n </Flex>\n )}\n </Flex>\n )}\n\n <RadioGroup\n defaultValue={importResponse?.value?.importMethod}\n onChange={handleImportMethodChange}\n >\n <Flex\n alignItems=\"center\"\n gap=\"$20\"\n css={{\n marginTop: '$9',\n '& label': { color: '$neutral800', cursor: 'pointer' },\n }}\n >\n <Radio size=\"md\" value=\"SEND_ALL_DATA\" css={{ cursor: 'pointer' }}>\n Send all data\n </Radio>\n <Radio size=\"md\" value=\"SELECTED_DATA\" css={{ cursor: 'pointer' }}>\n Send selected data\n </Radio>\n </Flex>\n </RadioGroup>\n </Flex>\n )}\n\n {isSelectedDataMode ? (\n <Box css={{ marginTop: '$24' }}>\n <Tabs defaultValue=\"QUESTIONS\">\n <TabsList\n css={{\n borderBottom: '$borderWidths$xs solid $neutral200',\n }}\n >\n {mappingTabValues.map((tab) => {\n if (\n tab.value === 'DERIVED_QUESTIONS' &&\n getAllMappingCount(tab.placeholder) < 1\n ) {\n return null;\n }\n\n return (\n <TabsTrigger\n key={tab?.id}\n value={tab?.value}\n css={{\n padding: '$6 $4 !important',\n }}\n onClick={() => setSearchInput('')}\n >\n <Text size=\"sm\" weight=\"bold\">\n {tab.name}\n </Text>\n {!!getMappingCount(tab.placeholder) && (\n <Chip\n css={{\n marginLeft: '$2',\n borderRadius: '5px',\n color: '$neutral800',\n }}\n variant=\"outline\"\n rounded=\"sm\"\n >\n {getMappingCount(tab.placeholder)}\n </Chip>\n )}\n </TabsTrigger>\n );\n })}\n </TabsList>\n\n <TabsContentComponent\n searchInput={searchInput}\n setSearchInput={setSearchInput}\n value=\"QUESTIONS\"\n placeholder=\"Questions\"\n fields={mappingData?.questions}\n handleFieldValues={(field: any, value: boolean) =>\n handleFieldValues('questions', field?.id, value)\n }\n isApiData={isApiData}\n />\n <TabsContentComponent\n searchInput={searchInput}\n setSearchInput={setSearchInput}\n fields={mappingData.variables}\n value=\"VARIABLE\"\n placeholder=\"Variables\"\n handleFieldValues={(field: any, value: boolean) =>\n handleFieldValues('variables', field?.id, value)\n }\n />\n <TabsContentComponent\n fields={mappingData.contactProperties}\n searchInput={searchInput}\n setSearchInput={setSearchInput}\n value=\"CONTACT\"\n placeholder=\"Contacts\"\n handleFieldValues={(field, value) =>\n handleFieldValues('contactProperties', field?.id, value)\n }\n />\n <TabsContentComponent\n searchInput={searchInput}\n setSearchInput={setSearchInput}\n value=\"EXPRESSION\"\n placeholder=\"Expressions\"\n fields={mappingData.expressions}\n handleFieldValues={(field, value) =>\n handleFieldValues('expressions', field?.id, value)\n }\n />\n <TabsContentComponent\n value=\"PROPERTY\"\n searchInput={searchInput}\n setSearchInput={setSearchInput}\n placeholder=\"Properties\"\n fields={mappingData.property}\n handleFieldValues={(field: any, value: boolean) =>\n handleFieldValues('property', field?.id, value)\n }\n />\n <TabsContentComponent\n value=\"DERIVED_QUESTIONS\"\n searchInput={searchInput}\n setSearchInput={setSearchInput}\n placeholder=\"Enrich\"\n fields={mappingData.derivedQuestions}\n handleFieldValues={(field: any, value: boolean) =>\n handleFieldValues('derivedQuestions', field?.id, value)\n }\n />\n </Tabs>\n </Box>\n ) : (\n <Flex css={{ marginTop: '$16' }} alignItems=\"center\" gap=\"$6\">\n <Text\n size=\"sm\"\n weight=\"regular\"\n css={{ width: '90px', color: '$neutral900' }}\n >\n This Includes:\n </Text>\n <Flex alignItems=\"center\" gap=\"$4\">\n {getAllMappingCount('questions') - 1 > 0 && (\n <CustomChip bgColor=\"#E5F2FF\">\n {getAllMappingCount('questions') - 1} Questions\n </CustomChip>\n )}\n {getAllMappingCount('derivedQuestions') - 1 > 0 && (\n <CustomChip bgColor=\"#E5F2FF\">\n {getAllMappingCount('derivedQuestions') - 1} Enrich\n </CustomChip>\n )}\n {getAllMappingCount('variables') - 1 > 0 && (\n <CustomChip bgColor=\"#E8F4E3\">\n {getAllMappingCount('variables') - 1} Variables\n </CustomChip>\n )}\n {getAllMappingCount('contactProperties') - 1 > 0 && (\n <CustomChip bgColor=\"#FDEDE8\">\n {getAllMappingCount('contactProperties') - 1} Contacts\n </CustomChip>\n )}\n {getAllMappingCount('expressions') - 1 > 0 && (\n <CustomChip bgColor=\"#F1F1F1\">\n {getAllMappingCount('expressions') - 1} Expressions\n </CustomChip>\n )}\n {getAllMappingCount('property') - 1 > 0 && (\n <CustomChip bgColor=\"#4A9CA626\">\n {getAllMappingCount('property') - 1} Properties\n </CustomChip>\n )}\n </Flex>\n </Flex>\n )}\n </Box>\n </Flex>\n );\n};\n"],"names":["surveySparrowURL","useMappingData","useMemo","hasValidConditionData","hasAnyMappingData","deriveConditionDataFromSurveyData","_a","Flex","Spinner","Box","Heading","MappingCondition","ConditionCard","Text","RadioGroup","Radio","Tabs","TabsList","mappingTabValues","TabsTrigger","Chip","TabsContentComponent","CustomChip"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mapping.js","sources":["../../../../src/dynamic-mapping/components/mapping.tsx"],"sourcesContent":["/* ----- Imports ----- */\n\nimport React, { useMemo } from 'react';\nimport {\n Box,\n Flex,\n Heading,\n Text,\n Radio,\n RadioGroup,\n Tabs,\n TabsList,\n TabsTrigger,\n Chip,\n} from '@sparrowengg/twigs-react';\nimport { surveySparrowURL, mappingTabValues } from '../../commons/constants';\nimport Spinner from '../../commons/components/spinner';\nimport MappingCondition from '../../commons/components/mapping-conditions';\nimport { ConditionCard } from '../../mapping/utils/conditionDescriptionBuilder';\nimport { useMappingData } from '../hooks';\nimport { TabsContentComponent } from './tabs-content-component';\nimport { CustomChip } from './custom-chip';\nimport { deriveConditionDataFromSurveyData, hasValidConditionData, hasAnyMappingData } from '../helpers';\n\n/* ----- Types / Interfaces ----- */\n\ninterface MappingProps {\n hasConditions?: boolean;\n mappingConditions?: any;\n setMappingConditions?: (value: any) => void;\n conditionData?: any;\n conditionDescription?: string;\n surveyId: string | number;\n apiURL?: string;\n token?: string;\n surveyProperties?: any;\n importResponse: any;\n ssMappingData: any;\n setSSMappingData: React.Dispatch<React.SetStateAction<any>>;\n editField?: any;\n setIsInitialLoad: (value: boolean) => void;\n setOriginalMappingData: (value: any) => void;\n integrationFields?: any;\n setIntegrationFields?: any;\n hasResponsePDF?: boolean;\n}\n\n/* ----- Main Component ----- */\n\n/**\n * Mapping component for dynamic field selection\n * \n * @param {MappingProps} props - Component props\n * @returns {JSX.Element} Mapping component\n * \n * @example\n * <Mapping\n * surveyId={123}\n * token=\"token\"\n * importResponse={response}\n * ssMappingData={data}\n * setSSMappingData={setData}\n * />\n */\nexport const Mapping = ({\n hasConditions,\n mappingConditions,\n setMappingConditions,\n conditionData,\n conditionDescription,\n surveyId,\n apiURL = surveySparrowURL,\n token,\n surveyProperties,\n importResponse,\n ssMappingData,\n setSSMappingData,\n editField,\n setIsInitialLoad,\n setOriginalMappingData,\n hasResponsePDF,\n}: MappingProps): JSX.Element => {\n const {\n loader,\n searchInput,\n setSearchInput,\n ssMappingData: hookSsMappingData,\n setSSMappingData: hookSetSSMappingData,\n handleFieldValues,\n getMappingCount,\n getAllMappingCount,\n isApiData,\n } = useMappingData({\n surveyId,\n apiURL,\n token,\n surveyProperties,\n importResponse,\n editField,\n setIsInitialLoad,\n setOriginalMappingData,\n ssMappingData,\n setSSMappingData,\n hasResponsePDF,\n });\n\n // Use the hook's data which is synced with parent\n const mappingData = hookSsMappingData;\n\n // Compute effective conditionData - use prop if provided, otherwise derive from survey data\n const effectiveConditionData = useMemo(() => {\n // If conditionData prop is provided and valid, use it directly\n if (hasValidConditionData(conditionData)) {\n return conditionData;\n }\n // Priority: surveyProperties > external ssMappingData > hook ssMappingData\n const sourceData = surveyProperties || ssMappingData || hookSsMappingData;\n if (sourceData && hasAnyMappingData(sourceData)) {\n return deriveConditionDataFromSurveyData(sourceData);\n }\n return [];\n }, [conditionData, surveyProperties, ssMappingData, hookSsMappingData]);\n\n const isSelectedDataMode = useMemo(\n () => importResponse?.value?.importMethod === 'SELECTED_DATA',\n [importResponse?.value?.importMethod]\n );\n\n const handleImportMethodChange = useMemo(\n () => (value: string) => {\n importResponse.onChangeHandler({\n id: 'importMethod',\n value,\n });\n },\n [importResponse]\n );\n\n const handleConditionClear = useMemo(\n () => () => {\n setMappingConditions?.(undefined);\n },\n [setMappingConditions]\n );\n\n if (loader) {\n return (\n <Flex alignItems=\"center\" justifyContent=\"center\">\n <Flex\n alignItems=\"center\"\n justifyContent=\"center\"\n css={{ height: 'calc(100vh - 57px)' }}\n >\n <Spinner />\n </Flex>\n </Flex>\n );\n }\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"center\">\n <Box css={{ maxWidth: 650, width: '100%', marginBlock: '$40' }}>\n {importResponse?.hasImportResponse && (\n <Flex flexDirection=\"column\">\n <Heading size=\"h5\" css={{ color: '$neutral900' }}>\n Select Import Data\n </Heading>\n\n {hasConditions && (\n <Flex css={{ marginTop: '$3' }}>\n {mappingConditions?.filterGroups?.length ? (\n <MappingCondition\n existingContions={mappingConditions}\n setExistingCondtions={setMappingConditions}\n conditionData={effectiveConditionData}\n renderTrigger={(onEditClick) => (\n <ConditionCard\n isEditable\n conditionsData={mappingConditions}\n onEditClick={onEditClick}\n onClearClick={handleConditionClear}\n showMoreMenu\n />\n )}\n />\n ) : (\n <Flex gap=\"$2\" css={{ marginTop: '$2' }}>\n <Text size=\"sm\" css={{ color: '$neutral500' }}>\n {conditionDescription}\n </Text>\n <MappingCondition\n existingContions={mappingConditions}\n setExistingCondtions={setMappingConditions}\n conditionData={effectiveConditionData}\n />\n </Flex>\n )}\n </Flex>\n )}\n\n <RadioGroup\n defaultValue={importResponse?.value?.importMethod}\n onChange={handleImportMethodChange}\n >\n <Flex\n alignItems=\"center\"\n gap=\"$20\"\n css={{\n marginTop: '$9',\n '& label': { color: '$neutral800', cursor: 'pointer' },\n }}\n >\n <Radio size=\"md\" value=\"SEND_ALL_DATA\" css={{ cursor: 'pointer' }}>\n Send all data\n </Radio>\n <Radio size=\"md\" value=\"SELECTED_DATA\" css={{ cursor: 'pointer' }}>\n Send selected data\n </Radio>\n </Flex>\n </RadioGroup>\n </Flex>\n )}\n\n {isSelectedDataMode ? (\n <Box css={{ marginTop: '$24' }}>\n <Tabs defaultValue=\"QUESTIONS\">\n <TabsList\n css={{\n borderBottom: '$borderWidths$xs solid $neutral200',\n }}\n >\n {mappingTabValues.map((tab) => {\n if (\n tab.value === 'DERIVED_QUESTIONS' &&\n getAllMappingCount(tab.placeholder) < 1\n ) {\n return null;\n }\n\n return (\n <TabsTrigger\n key={tab?.id}\n value={tab?.value}\n css={{\n padding: '$6 $4 !important',\n }}\n onClick={() => setSearchInput('')}\n >\n <Text size=\"sm\" weight=\"bold\">\n {tab.name}\n </Text>\n {!!getMappingCount(tab.placeholder) && (\n <Chip\n css={{\n marginLeft: '$2',\n borderRadius: '5px',\n color: '$neutral800',\n }}\n variant=\"outline\"\n rounded=\"sm\"\n >\n {getMappingCount(tab.placeholder)}\n </Chip>\n )}\n </TabsTrigger>\n );\n })}\n </TabsList>\n\n <TabsContentComponent\n searchInput={searchInput}\n setSearchInput={setSearchInput}\n value=\"QUESTIONS\"\n placeholder=\"Questions\"\n fields={mappingData?.questions}\n handleFieldValues={(field: any, value: boolean) =>\n handleFieldValues('questions', field?.id, value)\n }\n isApiData={isApiData}\n />\n <TabsContentComponent\n searchInput={searchInput}\n setSearchInput={setSearchInput}\n fields={mappingData.variables}\n value=\"VARIABLE\"\n placeholder=\"Variables\"\n handleFieldValues={(field: any, value: boolean) =>\n handleFieldValues('variables', field?.id, value)\n }\n />\n <TabsContentComponent\n fields={mappingData.contactProperties}\n searchInput={searchInput}\n setSearchInput={setSearchInput}\n value=\"CONTACT\"\n placeholder=\"Contacts\"\n handleFieldValues={(field, value) =>\n handleFieldValues('contactProperties', field?.id, value)\n }\n />\n <TabsContentComponent\n searchInput={searchInput}\n setSearchInput={setSearchInput}\n value=\"EXPRESSION\"\n placeholder=\"Expressions\"\n fields={mappingData.expressions}\n handleFieldValues={(field, value) =>\n handleFieldValues('expressions', field?.id, value)\n }\n />\n <TabsContentComponent\n value=\"PROPERTY\"\n searchInput={searchInput}\n setSearchInput={setSearchInput}\n placeholder=\"Properties\"\n fields={mappingData.property}\n handleFieldValues={(field: any, value: boolean) =>\n handleFieldValues('property', field?.id, value)\n }\n />\n <TabsContentComponent\n value=\"DERIVED_QUESTIONS\"\n searchInput={searchInput}\n setSearchInput={setSearchInput}\n placeholder=\"Enrich\"\n fields={mappingData.derivedQuestions}\n handleFieldValues={(field: any, value: boolean) =>\n handleFieldValues('derivedQuestions', field?.id, value)\n }\n />\n </Tabs>\n </Box>\n ) : (\n <Flex css={{ marginTop: '$16' }} alignItems=\"center\" gap=\"$6\">\n <Text\n size=\"sm\"\n weight=\"regular\"\n css={{ width: '90px', color: '$neutral900' }}\n >\n This Includes:\n </Text>\n <Flex alignItems=\"center\" gap=\"$4\">\n {getAllMappingCount('questions') - 1 > 0 && (\n <CustomChip bgColor=\"#E5F2FF\">\n {getAllMappingCount('questions') - 1} Questions\n </CustomChip>\n )}\n {getAllMappingCount('derivedQuestions') - 1 > 0 && (\n <CustomChip bgColor=\"#E5F2FF\">\n {getAllMappingCount('derivedQuestions') - 1} Enrich\n </CustomChip>\n )}\n {getAllMappingCount('variables') - 1 > 0 && (\n <CustomChip bgColor=\"#E8F4E3\">\n {getAllMappingCount('variables') - 1} Variables\n </CustomChip>\n )}\n {getAllMappingCount('contactProperties') - 1 > 0 && (\n <CustomChip bgColor=\"#FDEDE8\">\n {getAllMappingCount('contactProperties') - 1} Contacts\n </CustomChip>\n )}\n {getAllMappingCount('expressions') - 1 > 0 && (\n <CustomChip bgColor=\"#F1F1F1\">\n {getAllMappingCount('expressions') - 1} Expressions\n </CustomChip>\n )}\n {getAllMappingCount('property') - 1 > 0 && (\n <CustomChip bgColor=\"#4A9CA626\">\n {getAllMappingCount('property') - 1} Properties\n </CustomChip>\n )}\n </Flex>\n </Flex>\n )}\n </Box>\n </Flex>\n );\n};\n"],"names":["surveySparrowURL","useMappingData","useMemo","hasValidConditionData","hasAnyMappingData","deriveConditionDataFromSurveyData","_a","Flex","Spinner","Box","Heading","MappingCondition","ConditionCard","Text","RadioGroup","Radio","Tabs","TabsList","mappingTabValues","TabsTrigger","Chip","TabsContentComponent","CustomChip"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"condition-operators.js","sources":["../../../../src/dynamic-mapping/constants/condition-operators.ts"],"sourcesContent":["/* ----- Types ----- */\n\nexport type ConditionOperator = {\n label: string;\n value: string;\n dataType: string;\n type: string;\n regex?: string;\n valuesKey?: string;\n choices?: Array<{ label: string; value: string }>;\n};\n\nexport type ConditionDataOption = {\n label: string;\n value: string;\n subLabel?: string;\n operators: ConditionOperator[];\n};\n\nexport type ConditionDataGroup = {\n label: string;\n value: string;\n options?: ConditionDataOption[];\n operators?: ConditionOperator[];\n};\n\n/* ----- Default Operators by Field Type ----- */\n\n/**\n * Text operators for SINGLE_LINE_TEXT, TextInput, MULTI_LINE_TEXT fields\n */\nexport const TEXT_OPERATORS: ConditionOperator[] = [\n { label: 'equals', value: 'equals', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'does not equal', value: 'does-not-equal', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'contains', value: 'contains', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'does not contain', value: 'does-not-contain', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'starts with', value: 'starts-with', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'ends with', value: 'ends-with', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'regex', value: 'regex', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'has any value', value: 'has-any-value', dataType: 'NO_VALUE', type: 'VALUE_SELECTOR' },\n { label: 'has no value', value: 'has-no-value', dataType: 'NO_VALUE', type: 'VALUE_SELECTOR' },\n];\n\n/**\n * Number operators for NUMBER fields\n */\nexport const NUMBER_OPERATORS: ConditionOperator[] = [\n { label: 'equals', value: 'equals', dataType: 'NUMBER', type: 'VALUE_SELECTOR' },\n { label: 'does not equal', value: 'does-not-equal', dataType: 'NUMBER', type: 'VALUE_SELECTOR' },\n { label: 'greater than', value: 'greater-than', dataType: 'NUMBER', type: 'VALUE_SELECTOR' },\n { label: 'less than', value: 'less-than', dataType: 'NUMBER', type: 'VALUE_SELECTOR' },\n { label: 'greater than or equal', value: 'greater-than-or-equal', dataType: 'NUMBER', type: 'VALUE_SELECTOR' },\n { label: 'less than or equal', value: 'less-than-or-equal', dataType: 'NUMBER', type: 'VALUE_SELECTOR' },\n { label: 'has any value', value: 'has-any-value', dataType: 'NO_VALUE', type: 'VALUE_SELECTOR' },\n { label: 'has no value', value: 'has-no-value', dataType: 'NO_VALUE', type: 'VALUE_SELECTOR' },\n];\n\n/**\n * Email operators - same as text but with email regex validation\n */\nexport const EMAIL_OPERATORS: ConditionOperator[] = [\n {\n label: 'equals',\n value: 'equals',\n dataType: 'SINGLE_LINE_TEXT',\n type: 'VALUE_SELECTOR',\n regex: '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,}$',\n },\n {\n label: 'does not equal',\n value: 'does-not-equal',\n dataType: 'SINGLE_LINE_TEXT',\n type: 'VALUE_SELECTOR',\n regex: '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,}$',\n },\n { label: 'contains', value: 'contains', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'does not contain', value: 'does-not-contain', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'starts with', value: 'starts-with', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'ends with', value: 'ends-with', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'regex', value: 'regex', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'has any value', value: 'has-any-value', dataType: 'NO_VALUE', type: 'VALUE_SELECTOR' },\n { label: 'has no value', value: 'has-no-value', dataType: 'NO_VALUE', type: 'VALUE_SELECTOR' },\n];\n\n/**\n * Date operators for DATE, DATETIME fields\n */\nexport const DATE_OPERATORS: ConditionOperator[] = [\n { label: 'is', value: 'is', dataType: 'DATE', type: 'VALUE_SELECTOR' },\n { label: 'is not', value: 'is-not', dataType: 'DATE', type: 'VALUE_SELECTOR' },\n { label: 'is before', value: 'is-before', dataType: 'DATE', type: 'VALUE_SELECTOR' },\n { label: 'is after', value: 'is-after', dataType: 'DATE', type: 'VALUE_SELECTOR' },\n { label: 'is between', value: 'is-between', dataType: 'DATE_RANGE', type: 'VALUE_SELECTOR' },\n];\n\n/**\n * Dropdown/Select operators for DROPDOWN, SINGLE_SELECT fields\n */\nexport const DROPDOWN_OPERATORS: ConditionOperator[] = [\n { label: 'includes', value: 'includes', dataType: 'SINGLE_SELECT', type: 'VALUE_SELECTOR' },\n { label: 'does not include', value: 'does-not-include', dataType: 'SINGLE_SELECT', type: 'VALUE_SELECTOR' },\n];\n\n/**\n * Multi-select operators for MULTI_SELECT fields\n */\nexport const MULTI_SELECT_OPERATORS: ConditionOperator[] = [\n { label: 'includes', value: 'includes', dataType: 'MULTI_SELECT', type: 'VALUE_SELECTOR' },\n { label: 'does not include', value: 'does-not-include', dataType: 'MULTI_SELECT', type: 'VALUE_SELECTOR' },\n];\n\n/* ----- Field Type Mapping ----- */\n\n/**\n * Mapping of field types to their corresponding operators\n */\nexport const FIELD_TYPE_TO_OPERATORS: Record<string, ConditionOperator[]> = {\n // Text types\n SINGLE_LINE_TEXT: TEXT_OPERATORS,\n TextInput: TEXT_OPERATORS,\n MULTI_LINE_TEXT: TEXT_OPERATORS,\n TEXT: TEXT_OPERATORS,\n UNIQUE: TEXT_OPERATORS,\n string: TEXT_OPERATORS,\n\n // Number types\n NUMBER: NUMBER_OPERATORS,\n number: NUMBER_OPERATORS,\n Rating: NUMBER_OPERATORS,\n OpinionScale: NUMBER_OPERATORS,\n\n // Email type\n EMAIL: EMAIL_OPERATORS,\n email: EMAIL_OPERATORS,\n\n // Date types\n DATE: DATE_OPERATORS,\n DATETIME: DATE_OPERATORS,\n DateTime: DATE_OPERATORS,\n date: DATE_OPERATORS,\n\n // Dropdown/Select types\n DROPDOWN: DROPDOWN_OPERATORS,\n SINGLE_SELECT: DROPDOWN_OPERATORS,\n Dropdown: DROPDOWN_OPERATORS,\n YesNo: DROPDOWN_OPERATORS,\n\n // Multi-select types\n MULTI_SELECT: MULTI_SELECT_OPERATORS,\n MultiChoice: MULTI_SELECT_OPERATORS,\n MultiChoicePicture: MULTI_SELECT_OPERATORS,\n Checkbox: MULTI_SELECT_OPERATORS,\n};\n\n/**\n * Get operators for a specific field type\n * Falls back to TEXT_OPERATORS if type is not recognized.\n * When choices are provided, they are injected into SINGLE_SELECT / MULTI_SELECT operators.\n *\n * @param fieldType - The field type string\n * @param choices - Optional array of choices for select-type operators\n * @returns Array of operators for the field type\n */\nexport const getOperatorsForFieldType = (\n fieldType: string,\n choices?: Array<{ label: string; value: string }>\n): ConditionOperator[] => {\n const operators = FIELD_TYPE_TO_OPERATORS[fieldType] || TEXT_OPERATORS;\n if (!choices?.length) return operators;\n return operators.map((op) =>\n op.dataType === 'SINGLE_SELECT' || op.dataType === 'MULTI_SELECT'\n ? { ...op, choices }\n : op\n );\n};\n\n/* ----- Category Labels ----- */\n\nexport const CONDITION_CATEGORY_LABELS: Record<string, string> = {\n questions: 'Questions',\n contactProperties: 'Contact Properties',\n variables: 'Variables',\n expressions: 'Expressions',\n property: 'Properties',\n derivedQuestions: 'Enrich',\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"condition-operators.js","sources":["../../../../src/dynamic-mapping/constants/condition-operators.ts"],"sourcesContent":["/* ----- Types ----- */\n\nexport type ConditionOperator = {\n label: string;\n value: string;\n dataType: string;\n type: string;\n regex?: string;\n valuesKey?: string;\n choices?: Array<{ label: string; value: string }>;\n};\n\nexport type ConditionDataOption = {\n label: string;\n value: string;\n subLabel?: string;\n operators: ConditionOperator[];\n};\n\nexport type ConditionDataGroup = {\n label: string;\n value: string;\n options?: ConditionDataOption[];\n operators?: ConditionOperator[];\n};\n\n/* ----- Default Operators by Field Type ----- */\n\n/**\n * Text operators for SINGLE_LINE_TEXT, TextInput, MULTI_LINE_TEXT fields\n */\nexport const TEXT_OPERATORS: ConditionOperator[] = [\n { label: 'equals', value: 'equals', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'does not equal', value: 'does-not-equal', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'contains', value: 'contains', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'does not contain', value: 'does-not-contain', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'starts with', value: 'starts-with', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'ends with', value: 'ends-with', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'regex', value: 'regex', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'has any value', value: 'has-any-value', dataType: 'NO_VALUE', type: 'VALUE_SELECTOR' },\n { label: 'has no value', value: 'has-no-value', dataType: 'NO_VALUE', type: 'VALUE_SELECTOR' },\n];\n\n/**\n * Number operators for NUMBER fields\n */\nexport const NUMBER_OPERATORS: ConditionOperator[] = [\n { label: 'equals', value: 'equals', dataType: 'NUMBER', type: 'VALUE_SELECTOR' },\n { label: 'does not equal', value: 'does-not-equal', dataType: 'NUMBER', type: 'VALUE_SELECTOR' },\n { label: 'greater than', value: 'greater-than', dataType: 'NUMBER', type: 'VALUE_SELECTOR' },\n { label: 'less than', value: 'less-than', dataType: 'NUMBER', type: 'VALUE_SELECTOR' },\n { label: 'greater than or equal', value: 'greater-than-or-equal', dataType: 'NUMBER', type: 'VALUE_SELECTOR' },\n { label: 'less than or equal', value: 'less-than-or-equal', dataType: 'NUMBER', type: 'VALUE_SELECTOR' },\n { label: 'has any value', value: 'has-any-value', dataType: 'NO_VALUE', type: 'VALUE_SELECTOR' },\n { label: 'has no value', value: 'has-no-value', dataType: 'NO_VALUE', type: 'VALUE_SELECTOR' },\n];\n\n/**\n * Email operators - same as text but with email regex validation\n */\nexport const EMAIL_OPERATORS: ConditionOperator[] = [\n {\n label: 'equals',\n value: 'equals',\n dataType: 'SINGLE_LINE_TEXT',\n type: 'VALUE_SELECTOR',\n regex: '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,}$',\n },\n {\n label: 'does not equal',\n value: 'does-not-equal',\n dataType: 'SINGLE_LINE_TEXT',\n type: 'VALUE_SELECTOR',\n regex: '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,}$',\n },\n { label: 'contains', value: 'contains', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'does not contain', value: 'does-not-contain', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'starts with', value: 'starts-with', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'ends with', value: 'ends-with', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'regex', value: 'regex', dataType: 'SINGLE_LINE_TEXT', type: 'VALUE_SELECTOR' },\n { label: 'has any value', value: 'has-any-value', dataType: 'NO_VALUE', type: 'VALUE_SELECTOR' },\n { label: 'has no value', value: 'has-no-value', dataType: 'NO_VALUE', type: 'VALUE_SELECTOR' },\n];\n\n/**\n * Date operators for DATE, DATETIME fields\n */\nexport const DATE_OPERATORS: ConditionOperator[] = [\n { label: 'is', value: 'is', dataType: 'DATE', type: 'VALUE_SELECTOR' },\n { label: 'is not', value: 'is-not', dataType: 'DATE', type: 'VALUE_SELECTOR' },\n { label: 'is before', value: 'is-before', dataType: 'DATE', type: 'VALUE_SELECTOR' },\n { label: 'is after', value: 'is-after', dataType: 'DATE', type: 'VALUE_SELECTOR' },\n { label: 'is between', value: 'is-between', dataType: 'DATE_RANGE', type: 'VALUE_SELECTOR' },\n];\n\n/**\n * Dropdown/Select operators for DROPDOWN, SINGLE_SELECT fields\n */\nexport const DROPDOWN_OPERATORS: ConditionOperator[] = [\n { label: 'includes', value: 'includes', dataType: 'SINGLE_SELECT', type: 'VALUE_SELECTOR' },\n { label: 'does not include', value: 'does-not-include', dataType: 'SINGLE_SELECT', type: 'VALUE_SELECTOR' },\n];\n\n/**\n * Multi-select operators for MULTI_SELECT fields\n */\nexport const MULTI_SELECT_OPERATORS: ConditionOperator[] = [\n { label: 'includes', value: 'includes', dataType: 'MULTI_SELECT', type: 'VALUE_SELECTOR' },\n { label: 'does not include', value: 'does-not-include', dataType: 'MULTI_SELECT', type: 'VALUE_SELECTOR' },\n];\n\n/* ----- Field Type Mapping ----- */\n\n/**\n * Mapping of field types to their corresponding operators\n */\nexport const FIELD_TYPE_TO_OPERATORS: Record<string, ConditionOperator[]> = {\n // Text types\n SINGLE_LINE_TEXT: TEXT_OPERATORS,\n TextInput: TEXT_OPERATORS,\n MULTI_LINE_TEXT: TEXT_OPERATORS,\n TEXT: TEXT_OPERATORS,\n UNIQUE: TEXT_OPERATORS,\n string: TEXT_OPERATORS,\n\n // Number types\n NUMBER: NUMBER_OPERATORS,\n number: NUMBER_OPERATORS,\n Rating: NUMBER_OPERATORS,\n OpinionScale: NUMBER_OPERATORS,\n NPSScore: NUMBER_OPERATORS,\n\n // Email type\n EMAIL: EMAIL_OPERATORS,\n email: EMAIL_OPERATORS,\n\n // Date types\n DATE: DATE_OPERATORS,\n DATETIME: DATE_OPERATORS,\n DateTime: DATE_OPERATORS,\n date: DATE_OPERATORS,\n\n // Dropdown/Select types\n DROPDOWN: DROPDOWN_OPERATORS,\n SINGLE_SELECT: DROPDOWN_OPERATORS,\n Dropdown: DROPDOWN_OPERATORS,\n YesNo: DROPDOWN_OPERATORS,\n\n // Multi-select types\n MULTI_SELECT: MULTI_SELECT_OPERATORS,\n MultiChoice: MULTI_SELECT_OPERATORS,\n MultiChoicePicture: MULTI_SELECT_OPERATORS,\n Checkbox: MULTI_SELECT_OPERATORS,\n};\n\n/**\n * Get operators for a specific field type\n * Falls back to TEXT_OPERATORS if type is not recognized.\n * When choices are provided, they are injected into SINGLE_SELECT / MULTI_SELECT operators.\n *\n * @param fieldType - The field type string\n * @param choices - Optional array of choices for select-type operators\n * @returns Array of operators for the field type\n */\nexport const getOperatorsForFieldType = (\n fieldType: string,\n choices?: Array<{ label: string; value: string }>\n): ConditionOperator[] => {\n const operators = FIELD_TYPE_TO_OPERATORS[fieldType] || TEXT_OPERATORS;\n if (!choices?.length) return operators;\n return operators.map((op) =>\n op.dataType === 'SINGLE_SELECT' || op.dataType === 'MULTI_SELECT'\n ? { ...op, choices }\n : op\n );\n};\n\n/* ----- Category Labels ----- */\n\nexport const CONDITION_CATEGORY_LABELS: Record<string, string> = {\n questions: 'Questions',\n contactProperties: 'Contact Properties',\n variables: 'Variables',\n expressions: 'Expressions',\n property: 'Properties',\n derivedQuestions: 'Enrich',\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AA+BO,MAAM,cAAA,GAAsC;AAAA,EACjD,EAAE,OAAO,QAAA,EAAU,KAAA,EAAO,UAAU,QAAA,EAAU,kBAAA,EAAoB,MAAM,gBAAA,EAAiB;AAAA,EACzF,EAAE,OAAO,gBAAA,EAAkB,KAAA,EAAO,kBAAkB,QAAA,EAAU,kBAAA,EAAoB,MAAM,gBAAA,EAAiB;AAAA,EACzG,EAAE,OAAO,UAAA,EAAY,KAAA,EAAO,YAAY,QAAA,EAAU,kBAAA,EAAoB,MAAM,gBAAA,EAAiB;AAAA,EAC7F,EAAE,OAAO,kBAAA,EAAoB,KAAA,EAAO,oBAAoB,QAAA,EAAU,kBAAA,EAAoB,MAAM,gBAAA,EAAiB;AAAA,EAC7G,EAAE,OAAO,aAAA,EAAe,KAAA,EAAO,eAAe,QAAA,EAAU,kBAAA,EAAoB,MAAM,gBAAA,EAAiB;AAAA,EACnG,EAAE,OAAO,WAAA,EAAa,KAAA,EAAO,aAAa,QAAA,EAAU,kBAAA,EAAoB,MAAM,gBAAA,EAAiB;AAAA,EAC/F,EAAE,OAAO,OAAA,EAAS,KAAA,EAAO,SAAS,QAAA,EAAU,kBAAA,EAAoB,MAAM,gBAAA,EAAiB;AAAA,EACvF,EAAE,OAAO,eAAA,EAAiB,KAAA,EAAO,iBAAiB,QAAA,EAAU,UAAA,EAAY,MAAM,gBAAA,EAAiB;AAAA,EAC/F,EAAE,OAAO,cAAA,EAAgB,KAAA,EAAO,gBAAgB,QAAA,EAAU,UAAA,EAAY,MAAM,gBAAA;AAC9E;AAKO,MAAM,gBAAA,GAAwC;AAAA,EACnD,EAAE,OAAO,QAAA,EAAU,KAAA,EAAO,UAAU,QAAA,EAAU,QAAA,EAAU,MAAM,gBAAA,EAAiB;AAAA,EAC/E,EAAE,OAAO,gBAAA,EAAkB,KAAA,EAAO,kBAAkB,QAAA,EAAU,QAAA,EAAU,MAAM,gBAAA,EAAiB;AAAA,EAC/F,EAAE,OAAO,cAAA,EAAgB,KAAA,EAAO,gBAAgB,QAAA,EAAU,QAAA,EAAU,MAAM,gBAAA,EAAiB;AAAA,EAC3F,EAAE,OAAO,WAAA,EAAa,KAAA,EAAO,aAAa,QAAA,EAAU,QAAA,EAAU,MAAM,gBAAA,EAAiB;AAAA,EACrF,EAAE,OAAO,uBAAA,EAAyB,KAAA,EAAO,yBAAyB,QAAA,EAAU,QAAA,EAAU,MAAM,gBAAA,EAAiB;AAAA,EAC7G,EAAE,OAAO,oBAAA,EAAsB,KAAA,EAAO,sBAAsB,QAAA,EAAU,QAAA,EAAU,MAAM,gBAAA,EAAiB;AAAA,EACvG,EAAE,OAAO,eAAA,EAAiB,KAAA,EAAO,iBAAiB,QAAA,EAAU,UAAA,EAAY,MAAM,gBAAA,EAAiB;AAAA,EAC/F,EAAE,OAAO,cAAA,EAAgB,KAAA,EAAO,gBAAgB,QAAA,EAAU,UAAA,EAAY,MAAM,gBAAA;AAC9E;AAKO,MAAM,eAAA,GAAuC;AAAA,EAClD;AAAA,IACE,KAAA,EAAO,QAAA;AAAA,IACP,KAAA,EAAO,QAAA;AAAA,IACP,QAAA,EAAU,kBAAA;AAAA,IACV,IAAA,EAAM,gBAAA;AAAA,IACN,KAAA,EAAO;AAAA,GACT;AAAA,EACA;AAAA,IACE,KAAA,EAAO,gBAAA;AAAA,IACP,KAAA,EAAO,gBAAA;AAAA,IACP,QAAA,EAAU,kBAAA;AAAA,IACV,IAAA,EAAM,gBAAA;AAAA,IACN,KAAA,EAAO;AAAA,GACT;AAAA,EACA,EAAE,OAAO,UAAA,EAAY,KAAA,EAAO,YAAY,QAAA,EAAU,kBAAA,EAAoB,MAAM,gBAAA,EAAiB;AAAA,EAC7F,EAAE,OAAO,kBAAA,EAAoB,KAAA,EAAO,oBAAoB,QAAA,EAAU,kBAAA,EAAoB,MAAM,gBAAA,EAAiB;AAAA,EAC7G,EAAE,OAAO,aAAA,EAAe,KAAA,EAAO,eAAe,QAAA,EAAU,kBAAA,EAAoB,MAAM,gBAAA,EAAiB;AAAA,EACnG,EAAE,OAAO,WAAA,EAAa,KAAA,EAAO,aAAa,QAAA,EAAU,kBAAA,EAAoB,MAAM,gBAAA,EAAiB;AAAA,EAC/F,EAAE,OAAO,OAAA,EAAS,KAAA,EAAO,SAAS,QAAA,EAAU,kBAAA,EAAoB,MAAM,gBAAA,EAAiB;AAAA,EACvF,EAAE,OAAO,eAAA,EAAiB,KAAA,EAAO,iBAAiB,QAAA,EAAU,UAAA,EAAY,MAAM,gBAAA,EAAiB;AAAA,EAC/F,EAAE,OAAO,cAAA,EAAgB,KAAA,EAAO,gBAAgB,QAAA,EAAU,UAAA,EAAY,MAAM,gBAAA;AAC9E;AAKO,MAAM,cAAA,GAAsC;AAAA,EACjD,EAAE,OAAO,IAAA,EAAM,KAAA,EAAO,MAAM,QAAA,EAAU,MAAA,EAAQ,MAAM,gBAAA,EAAiB;AAAA,EACrE,EAAE,OAAO,QAAA,EAAU,KAAA,EAAO,UAAU,QAAA,EAAU,MAAA,EAAQ,MAAM,gBAAA,EAAiB;AAAA,EAC7E,EAAE,OAAO,WAAA,EAAa,KAAA,EAAO,aAAa,QAAA,EAAU,MAAA,EAAQ,MAAM,gBAAA,EAAiB;AAAA,EACnF,EAAE,OAAO,UAAA,EAAY,KAAA,EAAO,YAAY,QAAA,EAAU,MAAA,EAAQ,MAAM,gBAAA,EAAiB;AAAA,EACjF,EAAE,OAAO,YAAA,EAAc,KAAA,EAAO,cAAc,QAAA,EAAU,YAAA,EAAc,MAAM,gBAAA;AAC5E;AAKO,MAAM,kBAAA,GAA0C;AAAA,EACrD,EAAE,OAAO,UAAA,EAAY,KAAA,EAAO,YAAY,QAAA,EAAU,eAAA,EAAiB,MAAM,gBAAA,EAAiB;AAAA,EAC1F,EAAE,OAAO,kBAAA,EAAoB,KAAA,EAAO,oBAAoB,QAAA,EAAU,eAAA,EAAiB,MAAM,gBAAA;AAC3F;AAKO,MAAM,sBAAA,GAA8C;AAAA,EACzD,EAAE,OAAO,UAAA,EAAY,KAAA,EAAO,YAAY,QAAA,EAAU,cAAA,EAAgB,MAAM,gBAAA,EAAiB;AAAA,EACzF,EAAE,OAAO,kBAAA,EAAoB,KAAA,EAAO,oBAAoB,QAAA,EAAU,cAAA,EAAgB,MAAM,gBAAA;AAC1F;AAOO,MAAM,uBAAA,GAA+D;AAAA;AAAA,EAE1E,gBAAA,EAAkB,cAAA;AAAA,EAClB,SAAA,EAAW,cAAA;AAAA,EACX,eAAA,EAAiB,cAAA;AAAA,EACjB,IAAA,EAAM,cAAA;AAAA,EACN,MAAA,EAAQ,cAAA;AAAA,EACR,MAAA,EAAQ,cAAA;AAAA;AAAA,EAGR,MAAA,EAAQ,gBAAA;AAAA,EACR,MAAA,EAAQ,gBAAA;AAAA,EACR,MAAA,EAAQ,gBAAA;AAAA,EACR,YAAA,EAAc,gBAAA;AAAA,EACd,QAAA,EAAU,gBAAA;AAAA;AAAA,EAGV,KAAA,EAAO,eAAA;AAAA,EACP,KAAA,EAAO,eAAA;AAAA;AAAA,EAGP,IAAA,EAAM,cAAA;AAAA,EACN,QAAA,EAAU,cAAA;AAAA,EACV,QAAA,EAAU,cAAA;AAAA,EACV,IAAA,EAAM,cAAA;AAAA;AAAA,EAGN,QAAA,EAAU,kBAAA;AAAA,EACV,aAAA,EAAe,kBAAA;AAAA,EACf,QAAA,EAAU,kBAAA;AAAA,EACV,KAAA,EAAO,kBAAA;AAAA;AAAA,EAGP,YAAA,EAAc,sBAAA;AAAA,EACd,WAAA,EAAa,sBAAA;AAAA,EACb,kBAAA,EAAoB,sBAAA;AAAA,EACpB,QAAA,EAAU;AACZ;AAWO,MAAM,wBAAA,GAA2B,CACtC,SAAA,EACA,OAAA,KACwB;AACxB,EAAA,MAAM,SAAA,GAAY,uBAAA,CAAwB,SAAS,CAAA,IAAK,cAAA;AACxD,EAAA,IAAI,EAAC,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,MAAA,CAAA;AAAQ,IAAA,OAAO,SAAA;AAC7B,EAAA,OAAO,SAAA,CAAU,GAAA;AAAA,IAAI,CAAC,EAAA,KACpB,EAAA,CAAG,QAAA,KAAa,eAAA,IAAmB,EAAA,CAAG,QAAA,KAAa,cAAA,GAC/C,aAAA,CAAA,cAAA,CAAA,EAAA,EAAK,EAAA,CAAA,EAAL,EAAS,OAAA,EAAQ,CAAA,GACjB;AAAA,GACN;AACF;AAIO,MAAM,yBAAA,GAAoD;AAAA,EAC/D,SAAA,EAAW,WAAA;AAAA,EACX,iBAAA,EAAmB,oBAAA;AAAA,EACnB,SAAA,EAAW,WAAA;AAAA,EACX,WAAA,EAAa,aAAA;AAAA,EACb,QAAA,EAAU,YAAA;AAAA,EACV,gBAAA,EAAkB;AACpB;;;;;;;;;;;;"}
|
|
@@ -19,6 +19,15 @@ var __spreadValues = (a, b) => {
|
|
|
19
19
|
return a;
|
|
20
20
|
};
|
|
21
21
|
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
22
|
+
const RESPONSE_PDF_PROPERTY_ID = "RESPONSE_PDF";
|
|
23
|
+
const stripResponsePdfProperty = (fields, omit) => {
|
|
24
|
+
if (!omit || !(fields == null ? void 0 : fields.length))
|
|
25
|
+
return fields != null ? fields : void 0;
|
|
26
|
+
return fields.filter((f) => {
|
|
27
|
+
var _a;
|
|
28
|
+
return ((_a = f == null ? void 0 : f.id) != null ? _a : f == null ? void 0 : f.name) !== RESPONSE_PDF_PROPERTY_ID;
|
|
29
|
+
});
|
|
30
|
+
};
|
|
22
31
|
const updateFieldEnabledState = (fields, id, value) => {
|
|
23
32
|
if (id === "ALL") {
|
|
24
33
|
return fields.map((field) => __spreadProps(__spreadValues({}, field), { isEnabled: value }));
|
|
@@ -154,6 +163,7 @@ const updateFieldEnabledStateWithHierarchy = (fields, id, value, isHierarchical
|
|
|
154
163
|
exports.filterFieldsBySearch = filterFieldsBySearch;
|
|
155
164
|
exports.isConfigurationFieldVisible = isConfigurationFieldVisible;
|
|
156
165
|
exports.organizeQuestionsWithHierarchy = organizeQuestionsWithHierarchy;
|
|
166
|
+
exports.stripResponsePdfProperty = stripResponsePdfProperty;
|
|
157
167
|
exports.updateFieldEnabledState = updateFieldEnabledState;
|
|
158
168
|
exports.updateFieldEnabledStateWithHierarchy = updateFieldEnabledStateWithHierarchy;
|
|
159
169
|
//# sourceMappingURL=mapping.helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapping.helpers.js","sources":["../../../../src/dynamic-mapping/helpers/mapping.helpers.ts"],"sourcesContent":["/* ----- Imports ----- */\n\nimport { MappingData } from '../../commons/types/enhanced';\n\n/* ----- Helper Functions ----- */\n\n/**\n * Processes field array for mapping\n * \n * @param {any[]} field - Field array to process\n * @param {string} label - Label for \"select all\" option\n * @returns {any[]} Processed field array\n * \n * @example\n * const processed = processFieldForMapping(questions, \"Select all Questions\");\n */\nexport const processFieldForMapping = (field: any[], label: string): any[] => {\n if (!field?.length) return [];\n if (field?.some((item) => item.id === 'ALL')) return field;\n \n const modifiedData = field.map((data: any) => ({\n ...data,\n id: data?.id ?? data?.name,\n name: data?.rtxt ?? data?.name,\n isEnabled: data?.isEnabled ?? false,\n }));\n \n const isAllEnabled = field.every((item) => item.isEnabled);\n modifiedData.unshift({ id: 'ALL', name: label, isEnabled: isAllEnabled });\n \n return modifiedData;\n};\n\n/**\n * Gets count of enabled mapping fields\n * \n * @param {any[]} mappingField - Array of mapping fields\n * @returns {number} Count of enabled fields\n * \n * @example\n * const count = getEnabledMappingCount(questions);\n */\nexport const getEnabledMappingCount = (mappingField: any[]): number => {\n if (!mappingField) return 0;\n return mappingField.filter((field: any) => field?.id !== 'ALL' && field.isEnabled).length;\n};\n\n/**\n * Gets total count of mapping fields (excluding \"ALL\")\n * \n * @param {any[]} mappingField - Array of mapping fields\n * @returns {number} Total count of fields\n * \n * @example\n * const total = getTotalMappingCount(questions);\n */\nexport const getTotalMappingCount = (mappingField: any[]): number => {\n return mappingField?.length || 0;\n};\n\n/**\n * Updates field enabled state in mapping data\n * \n * @param {any[]} fields - Array of fields\n * @param {string | number} id - Field ID to update\n * @param {boolean} value - New enabled value\n * @returns {any[]} Updated fields array\n * \n * @example\n * const updated = updateFieldEnabledState(questions, \"q1\", true);\n */\nexport const updateFieldEnabledState = (\n fields: any[],\n id: string | number,\n value: boolean\n): any[] => {\n if (id === 'ALL') {\n return fields.map((field: any) => ({ ...field, isEnabled: value }));\n }\n\n let modifiedFields = fields.map((field: any) => {\n if (field?.id === id) {\n return { ...field, isEnabled: value };\n }\n return { ...field };\n });\n\n const allNonAllFieldsEnabled = modifiedFields\n .filter((field: any) => field?.id !== 'ALL')\n .every((field: any) => field.isEnabled);\n\n modifiedFields = modifiedFields.map((field: any) => {\n if (field?.id === 'ALL') {\n return { ...field, isEnabled: allNonAllFieldsEnabled };\n }\n return field;\n });\n\n return modifiedFields;\n};\n\n/**\n * Checks if configuration field should be visible\n * \n * @param {any} field - Configuration field\n * @param {any} configuredFields - All configured fields\n * @returns {boolean} Whether field should be visible\n * \n * @example\n * const isVisible = isConfigurationFieldVisible(field, configuredFields);\n */\nexport const isConfigurationFieldVisible = (field: any, configuredFields: any): boolean => {\n if (field?.id === 'spreadsheet') {\n return !!configuredFields?.action?.value;\n }\n return true;\n};\n\n/**\n * Filters fields based on search input\n * \n * @param {any[]} fields - Array of fields to filter\n * @param {string} searchInput - Search query\n * @returns {any[]} Filtered fields array\n * \n * @example\n * const filtered = filterFieldsBySearch(questions, \"email\");\n */\nexport const filterFieldsBySearch = (fields: any[], searchInput: string): any[] => {\n if (!searchInput) return fields;\n return fields?.filter((field: any) =>\n field.id === 'ALL' ||\n String(field.name ?? '').toLowerCase().includes(searchInput.toLowerCase())\n );\n};\n\n/**\n * Organizes questions with parent-child hierarchy for display\n * Parent questions are followed by their children in the array\n * Adds isChild and parentId metadata for UI rendering\n * \n * @param {any[]} questions - Flat array of questions from API\n * @returns {any[]} Organized array with hierarchy metadata\n * \n * @example\n * const organized = organizeQuestionsWithHierarchy(apiQuestions);\n */\nexport const organizeQuestionsWithHierarchy = (questions: any[]): any[] => {\n if (!questions?.length) return [];\n\n // Separate parents and children\n const parents = questions.filter((q) => q.parent_question_id === null || q.parent_question_id === undefined);\n const children = questions.filter((q) => q.parent_question_id !== null && q.parent_question_id !== undefined);\n\n // Create a map of parentId -> children[]\n const childrenMap = new Map<number | string, any[]>();\n children.forEach((child) => {\n const parentId = child.parent_question_id;\n if (!childrenMap.has(parentId)) {\n childrenMap.set(parentId, []);\n }\n childrenMap.get(parentId)!.push(child);\n });\n\n // Sort children by position within each parent group\n childrenMap.forEach((childList) => {\n childList.sort((a, b) => parseFloat(a.position || '0') - parseFloat(b.position || '0'));\n });\n\n // Sort parents by section position then by position\n parents.sort((a, b) => {\n const sectionA = parseFloat(a.section?.position || '0');\n const sectionB = parseFloat(b.section?.position || '0');\n if (sectionA !== sectionB) return sectionA - sectionB;\n return parseFloat(a.position || '0') - parseFloat(b.position || '0');\n });\n\n // Build result: for each parent, add parent then its children\n const result: any[] = [];\n parents.forEach((parent) => {\n const hasChildren = childrenMap.has(parent.id);\n result.push({\n ...parent,\n isChild: false,\n parentId: null,\n hasChildren,\n });\n\n const parentChildren = childrenMap.get(parent.id) || [];\n parentChildren.forEach((child) => {\n result.push({\n ...child,\n isChild: true,\n parentId: parent.id,\n hasChildren: false,\n });\n });\n });\n\n return result?.filter((question) => question?.type !== \"Message\" && question?.type !== \"PaymentQuestion\");\n};\n\n/**\n * Updates field enabled state with parent-child cascade logic for questions\n * - When parent is toggled: all children follow\n * - When child is deselected: parent is deselected\n * - When all children are selected: parent is selected\n * \n * @param {any[]} fields - Array of fields\n * @param {string | number} id - Field ID to update\n * @param {boolean} value - New enabled value\n * @param {boolean} isHierarchical - Whether to apply parent-child cascade logic\n * @returns {any[]} Updated fields array\n * \n * @example\n * const updated = updateFieldEnabledStateWithHierarchy(questions, \"q1\", true, true);\n */\nexport const updateFieldEnabledStateWithHierarchy = (\n fields: any[],\n id: string | number,\n value: boolean,\n isHierarchical: boolean = false\n): any[] => {\n // If not hierarchical, use the standard logic\n if (!isHierarchical) {\n return updateFieldEnabledState(fields, id, value);\n }\n\n // Handle \"ALL\" selection\n if (id === 'ALL') {\n return fields.map((field: any) => ({ ...field, isEnabled: value }));\n }\n\n const targetField = fields.find((f) => f.id === id);\n if (!targetField) {\n return updateFieldEnabledState(fields, id, value);\n }\n\n let modifiedFields = [...fields];\n\n if (!targetField.isChild && targetField.hasChildren) {\n // Parent toggled - update parent and all its children\n modifiedFields = modifiedFields.map((field: any) => {\n if (field.id === id || field.parentId === id) {\n return { ...field, isEnabled: value };\n }\n return { ...field };\n });\n } else if (targetField.isChild) {\n // Child toggled\n modifiedFields = modifiedFields.map((field: any) => {\n if (field.id === id) {\n return { ...field, isEnabled: value };\n }\n return { ...field };\n });\n\n // Check parent state\n const parentId = targetField.parentId;\n const siblings = modifiedFields.filter((f) => f.parentId === parentId);\n const allSiblingsEnabled = siblings.every((s) => s.isEnabled);\n\n // Update parent based on children state\n modifiedFields = modifiedFields.map((field: any) => {\n if (field.id === parentId) {\n return { ...field, isEnabled: allSiblingsEnabled };\n }\n return field;\n });\n } else {\n // Regular field without children\n modifiedFields = modifiedFields.map((field: any) => {\n if (field.id === id) {\n return { ...field, isEnabled: value };\n }\n return { ...field };\n });\n }\n\n // Update \"ALL\" checkbox state\n const allNonAllFieldsEnabled = modifiedFields\n .filter((field: any) => field?.id !== 'ALL')\n .every((field: any) => field.isEnabled);\n\n modifiedFields = modifiedFields.map((field: any) => {\n if (field?.id === 'ALL') {\n return { ...field, isEnabled: allNonAllFieldsEnabled };\n }\n return field;\n });\n\n return modifiedFields;\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mapping.helpers.js","sources":["../../../../src/dynamic-mapping/helpers/mapping.helpers.ts"],"sourcesContent":["/* ----- Imports ----- */\n\nimport { MappingData } from '../../commons/types/enhanced';\n\nconst RESPONSE_PDF_PROPERTY_ID = 'RESPONSE_PDF';\n\n/**\n * When omit is true, removes the Response PDF submission property from a list (by id/name).\n */\nexport const stripResponsePdfProperty = (\n fields: any[] | undefined | null,\n omit: boolean\n): any[] | undefined | null => {\n if (!omit || !fields?.length) return fields ?? undefined;\n return fields.filter((f: any) => (f?.id ?? f?.name) !== RESPONSE_PDF_PROPERTY_ID);\n};\n\n/* ----- Helper Functions ----- */\n\n/**\n * Processes field array for mapping\n * \n * @param {any[]} field - Field array to process\n * @param {string} label - Label for \"select all\" option\n * @returns {any[]} Processed field array\n * \n * @example\n * const processed = processFieldForMapping(questions, \"Select all Questions\");\n */\nexport const processFieldForMapping = (field: any[], label: string): any[] => {\n if (!field?.length) return [];\n if (field?.some((item) => item.id === 'ALL')) return field;\n \n const modifiedData = field.map((data: any) => ({\n ...data,\n id: data?.id ?? data?.name,\n name: data?.rtxt ?? data?.name,\n isEnabled: data?.isEnabled ?? false,\n }));\n \n const isAllEnabled = field.every((item) => item.isEnabled);\n modifiedData.unshift({ id: 'ALL', name: label, isEnabled: isAllEnabled });\n \n return modifiedData;\n};\n\n/**\n * Gets count of enabled mapping fields\n * \n * @param {any[]} mappingField - Array of mapping fields\n * @returns {number} Count of enabled fields\n * \n * @example\n * const count = getEnabledMappingCount(questions);\n */\nexport const getEnabledMappingCount = (mappingField: any[]): number => {\n if (!mappingField) return 0;\n return mappingField.filter((field: any) => field?.id !== 'ALL' && field.isEnabled).length;\n};\n\n/**\n * Gets total count of mapping fields (excluding \"ALL\")\n * \n * @param {any[]} mappingField - Array of mapping fields\n * @returns {number} Total count of fields\n * \n * @example\n * const total = getTotalMappingCount(questions);\n */\nexport const getTotalMappingCount = (mappingField: any[]): number => {\n return mappingField?.length || 0;\n};\n\n/**\n * Updates field enabled state in mapping data\n * \n * @param {any[]} fields - Array of fields\n * @param {string | number} id - Field ID to update\n * @param {boolean} value - New enabled value\n * @returns {any[]} Updated fields array\n * \n * @example\n * const updated = updateFieldEnabledState(questions, \"q1\", true);\n */\nexport const updateFieldEnabledState = (\n fields: any[],\n id: string | number,\n value: boolean\n): any[] => {\n if (id === 'ALL') {\n return fields.map((field: any) => ({ ...field, isEnabled: value }));\n }\n\n let modifiedFields = fields.map((field: any) => {\n if (field?.id === id) {\n return { ...field, isEnabled: value };\n }\n return { ...field };\n });\n\n const allNonAllFieldsEnabled = modifiedFields\n .filter((field: any) => field?.id !== 'ALL')\n .every((field: any) => field.isEnabled);\n\n modifiedFields = modifiedFields.map((field: any) => {\n if (field?.id === 'ALL') {\n return { ...field, isEnabled: allNonAllFieldsEnabled };\n }\n return field;\n });\n\n return modifiedFields;\n};\n\n/**\n * Checks if configuration field should be visible\n * \n * @param {any} field - Configuration field\n * @param {any} configuredFields - All configured fields\n * @returns {boolean} Whether field should be visible\n * \n * @example\n * const isVisible = isConfigurationFieldVisible(field, configuredFields);\n */\nexport const isConfigurationFieldVisible = (field: any, configuredFields: any): boolean => {\n if (field?.id === 'spreadsheet') {\n return !!configuredFields?.action?.value;\n }\n return true;\n};\n\n/**\n * Filters fields based on search input\n * \n * @param {any[]} fields - Array of fields to filter\n * @param {string} searchInput - Search query\n * @returns {any[]} Filtered fields array\n * \n * @example\n * const filtered = filterFieldsBySearch(questions, \"email\");\n */\nexport const filterFieldsBySearch = (fields: any[], searchInput: string): any[] => {\n if (!searchInput) return fields;\n return fields?.filter((field: any) =>\n field.id === 'ALL' ||\n String(field.name ?? '').toLowerCase().includes(searchInput.toLowerCase())\n );\n};\n\n/**\n * Organizes questions with parent-child hierarchy for display\n * Parent questions are followed by their children in the array\n * Adds isChild and parentId metadata for UI rendering\n * \n * @param {any[]} questions - Flat array of questions from API\n * @returns {any[]} Organized array with hierarchy metadata\n * \n * @example\n * const organized = organizeQuestionsWithHierarchy(apiQuestions);\n */\nexport const organizeQuestionsWithHierarchy = (questions: any[]): any[] => {\n if (!questions?.length) return [];\n\n // Separate parents and children\n const parents = questions.filter((q) => q.parent_question_id === null || q.parent_question_id === undefined);\n const children = questions.filter((q) => q.parent_question_id !== null && q.parent_question_id !== undefined);\n\n // Create a map of parentId -> children[]\n const childrenMap = new Map<number | string, any[]>();\n children.forEach((child) => {\n const parentId = child.parent_question_id;\n if (!childrenMap.has(parentId)) {\n childrenMap.set(parentId, []);\n }\n childrenMap.get(parentId)!.push(child);\n });\n\n // Sort children by position within each parent group\n childrenMap.forEach((childList) => {\n childList.sort((a, b) => parseFloat(a.position || '0') - parseFloat(b.position || '0'));\n });\n\n // Sort parents by section position then by position\n parents.sort((a, b) => {\n const sectionA = parseFloat(a.section?.position || '0');\n const sectionB = parseFloat(b.section?.position || '0');\n if (sectionA !== sectionB) return sectionA - sectionB;\n return parseFloat(a.position || '0') - parseFloat(b.position || '0');\n });\n\n // Build result: for each parent, add parent then its children\n const result: any[] = [];\n parents.forEach((parent) => {\n const hasChildren = childrenMap.has(parent.id);\n result.push({\n ...parent,\n isChild: false,\n parentId: null,\n hasChildren,\n });\n\n const parentChildren = childrenMap.get(parent.id) || [];\n parentChildren.forEach((child) => {\n result.push({\n ...child,\n isChild: true,\n parentId: parent.id,\n hasChildren: false,\n });\n });\n });\n\n return result?.filter((question) => question?.type !== \"Message\" && question?.type !== \"PaymentQuestion\");\n};\n\n/**\n * Updates field enabled state with parent-child cascade logic for questions\n * - When parent is toggled: all children follow\n * - When child is deselected: parent is deselected\n * - When all children are selected: parent is selected\n * \n * @param {any[]} fields - Array of fields\n * @param {string | number} id - Field ID to update\n * @param {boolean} value - New enabled value\n * @param {boolean} isHierarchical - Whether to apply parent-child cascade logic\n * @returns {any[]} Updated fields array\n * \n * @example\n * const updated = updateFieldEnabledStateWithHierarchy(questions, \"q1\", true, true);\n */\nexport const updateFieldEnabledStateWithHierarchy = (\n fields: any[],\n id: string | number,\n value: boolean,\n isHierarchical: boolean = false\n): any[] => {\n // If not hierarchical, use the standard logic\n if (!isHierarchical) {\n return updateFieldEnabledState(fields, id, value);\n }\n\n // Handle \"ALL\" selection\n if (id === 'ALL') {\n return fields.map((field: any) => ({ ...field, isEnabled: value }));\n }\n\n const targetField = fields.find((f) => f.id === id);\n if (!targetField) {\n return updateFieldEnabledState(fields, id, value);\n }\n\n let modifiedFields = [...fields];\n\n if (!targetField.isChild && targetField.hasChildren) {\n // Parent toggled - update parent and all its children\n modifiedFields = modifiedFields.map((field: any) => {\n if (field.id === id || field.parentId === id) {\n return { ...field, isEnabled: value };\n }\n return { ...field };\n });\n } else if (targetField.isChild) {\n // Child toggled\n modifiedFields = modifiedFields.map((field: any) => {\n if (field.id === id) {\n return { ...field, isEnabled: value };\n }\n return { ...field };\n });\n\n // Check parent state\n const parentId = targetField.parentId;\n const siblings = modifiedFields.filter((f) => f.parentId === parentId);\n const allSiblingsEnabled = siblings.every((s) => s.isEnabled);\n\n // Update parent based on children state\n modifiedFields = modifiedFields.map((field: any) => {\n if (field.id === parentId) {\n return { ...field, isEnabled: allSiblingsEnabled };\n }\n return field;\n });\n } else {\n // Regular field without children\n modifiedFields = modifiedFields.map((field: any) => {\n if (field.id === id) {\n return { ...field, isEnabled: value };\n }\n return { ...field };\n });\n }\n\n // Update \"ALL\" checkbox state\n const allNonAllFieldsEnabled = modifiedFields\n .filter((field: any) => field?.id !== 'ALL')\n .every((field: any) => field.isEnabled);\n\n modifiedFields = modifiedFields.map((field: any) => {\n if (field?.id === 'ALL') {\n return { ...field, isEnabled: allNonAllFieldsEnabled };\n }\n return field;\n });\n\n return modifiedFields;\n};\n"],"names":[],"mappings":"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"}
|