{"version":3,"sources":["../src/components/common/XFooter/index.tsx"],"names":["Stack","Typography","React","useSetRecoilState","isEqual","uniq","useMount","XStack","XGrid","compareProps","prevProps","nextProps","XFooter","initData","breakpoint","useBreakpoint","env","useXoraiaValue","xCommon","setXCommon","useXCommon","setSelectedElement","USE_SELECTED_INDEX","devProps","e","clickHandler","SECONDARY_COLOR","value","valueAtBreakPoint","getValueOnBreakpoint","core_default","DynamicXElement","XFooter_default","child","index","position","setParent","useXCommonUpdater","setFooter","old","elementsIndexes","CONTAINERS_NAME"],"mappings":"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","sourcesContent":["import { Stack, Typography } from \"@mui/material\";\nimport * as React from \"react\";\n\nimport { useSetRecoilState } from \"recoil\";\nimport { getValueOnBreakpoint } from \"../../../lib/getValueOnBreakpoint\";\nimport { clickHandler } from \"../../../lib/clickHandler\";\n\nimport { isEqual, uniq } from \"lodash\";\n\nimport {\n  IXFooterProps,\n  XFooterProps,\n} from \"../../../utils/interfaces/common/XFooter.interfaces\";\nimport { useBreakpoint } from \"../../../hooks/useBreakpoint\";\nimport { useXoraiaValue } from \"../../../hooks/useXoraia\";\nimport { USE_SELECTED_INDEX } from \"../../../hooks/useSelectedElement\";\nimport { SECONDARY_COLOR } from \"../../../utils/constants/common/utils\";\nimport { CONTAINERS_NAME } from \"../../../utils/constants/common/componentName\";\nimport { useMount } from \"react-use\";\nimport { useXCommon, useXCommonUpdater } from \"../../../hooks/useXCommon\";\nimport XFooterCore from \"./core\";\nimport { TDynamicXElement } from \"../../../utils/types/core/DynamicXElement\";\n\nconst XStack = React.lazy(() => import(\"../../containers/XStack\"));\nconst XGrid = React.lazy(() => import(\"../../containers/XGrid\"));\n\nconst compareProps = (prevProps: any, nextProps: any) => {\n  return isEqual(prevProps, nextProps);\n};\n\nconst XFooter: React.FC<XFooterProps> = React.memo(\n  ({ initData = { all: {} } }) => {\n    // WE TRACK THE BREAK POINTS CHANGES\n    const breakpoint = useBreakpoint();\n\n    const { env } = useXoraiaValue();\n\n    const { xCommon, setXCommon } = useXCommon(\"FOOTER\");\n\n    useMount(() => {\n      if (!xCommon) {\n        setXCommon({\n          name: \"XFooter\",\n          childOf: null,\n          elementsIndexes: [],\n          hasChildren: true,\n          hierachy: \"XFooter\",\n          index: \"FOOTER\",\n          value: initData,\n        });\n      }\n    });\n\n    // WE ARE GETTING THE CURRENT ELEMENT FROM THE ATOM FAMILY\n    // const { xElement } = useXElement<TUseXElement<IXFooterProps>>(config.index);\n\n    // GARBING THE INDEX UPDATER FOR GENERAL USAGE\n    const setSelectedElement = useSetRecoilState(USE_SELECTED_INDEX);\n\n    // IF WE DONT HAVE THIS ELEMENT CONFIGS ADDED WE DON'T SHOW IT\n    // if (!xElement || Object.keys(xElement).length === 0) return null;\n\n    const devProps = {\n      id: \"FOOTER\",\n      onClick: (e: any) => clickHandler(e, setSelectedElement, \"FOOTER\"),\n    };\n\n    if (!xCommon) {\n      return (\n        <Stack\n          {...(env === \"dev\" && devProps)}\n          sx={{\n            width: \"100%\",\n          }}\n        >\n          <Typography\n            textAlign=\"center\"\n            py={1.5}\n            fontWeight={600}\n            variant=\"caption\"\n            color=\"GrayText\"\n            bgcolor=\"#EFEFEF\"\n            sx={{ \"& a\": { color: SECONDARY_COLOR, textDecoration: \"none\" } }}\n          >\n            Powered by{\" \"}\n            <a href=\"https://xoraia.com\" target=\"_blank\">\n              Xoraia\n            </a>{\" \"}\n            a baby of{\" \"}\n            <a href=\"https://drosarl.com\" target=\"_blank\">\n              DRO SARL\n            </a>\n          </Typography>\n        </Stack>\n      );\n    }\n\n    // WE GET ALL DEVICES PROPS AS VALUE\n    const { value } = xCommon;\n\n    // WE NOW USE THE CURRENT BREAKPOINT VALUE ON THIS ELEMENT\n    const valueAtBreakPoint = getValueOnBreakpoint<IXFooterProps>(\n      value,\n      breakpoint\n    );\n\n    return (\n      <XFooterCore\n        index=\"FOOTER\"\n        props={valueAtBreakPoint}\n        devProps={devProps}\n        DynamicXElement={DynamicXElement}\n      />\n    );\n  },\n  compareProps\n);\n\nexport default XFooter;\n\nconst DynamicXElement: TDynamicXElement = React.memo(\n  ({ child, index, position }) => {\n    const setParent = useXCommonUpdater(child.config.childOf ?? \"NO_PARENT\");\n\n    const setFooter = useXCommonUpdater(index);\n\n    React.useEffect(() => {\n      setParent((old) => {\n        if (!old) return null;\n\n        const elementsIndexes = old.elementsIndexes\n          ? [...old.elementsIndexes, index]\n          : [index];\n\n        return { ...old, elementsIndexes: uniq(elementsIndexes) };\n      });\n\n      setFooter({\n        name: child.name,\n\n        index: child.index ?? index,\n\n        hierachy: child.hierachy ?? \"XFooter-\" + child.name,\n\n        value: child.value ?? child.props ?? { all: {} },\n\n        elementsIndexes: child.elementsIndexes ?? [],\n\n        hasChildren: child.hasChildren ?? CONTAINERS_NAME.includes(child.name),\n\n        childOf: child.childOf ?? child.config.childOf ?? null,\n      });\n    }, [index, position]);\n\n    if (child.config.childOf !== \"FOOTER\") return null;\n\n    switch (child.name) {\n      case \"XStack\":\n        return (\n          <React.Suspense fallback={<p>Loading stack...</p>}>\n            <XStack {...child} />\n          </React.Suspense>\n        );\n      case \"XGrid\":\n        return (\n          <React.Suspense fallback={<p>loading grid...</p>}>\n            <XGrid {...child} />\n          </React.Suspense>\n        );\n\n      default:\n        return null;\n    }\n  },\n  compareProps\n);\n"]}