{"version":3,"sources":["../src/components/gui/tabs/data.tsx"],"names":["React","Accordion","AccordionDetails","CircularProgress","Stack","XGUITextField","XGUIFilePicker","XGUISelectOptionField","XGUIToggleOptionField","XGUIDataTab","selectedElement","setSelectedElement","categories","useCategories","breakpoint","useBreakpoint","data","onChange","value","field","old","dataFetching","key","sections","cat","generateXGUIField","data_default","args"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport {\n  Accordion,\n  AccordionDetails,\n  CircularProgress,\n  Stack,\n} from \"@mui/material\";\nimport { TUseXElement } from \"../../../hooks/useXElement\";\nimport { useBreakpoint } from \"../../../hooks/useBreakpoint\";\nimport {\n  IXGUIFieldBase,\n  TOnChange,\n  TXGUIField,\n} from \"../../../utils/interfaces/gui/fields.interfaces\";\nimport { IDataFetching } from \"../../../hooks/useXoraia\";\nimport { useCategories } from \"../../../hooks/useCategories\";\n\nconst XGUITextField = React.lazy(() => import(\"../components/XGUITextField\"));\n\nconst XGUIFilePicker = React.lazy(() => import(\"../components/XGUIFilePicker\"));\n\nconst XGUISelectOptionField = React.lazy(\n  () => import(\"../components/XGUISelectOptionField\")\n);\n\nconst XGUIToggleOptionField = React.lazy(\n  () => import(\"../components/XGUIToggleOptionField\")\n);\n\nconst XGUIDataTab: React.FC<{\n  selectedElement: TUseXElement<any>;\n  setSelectedElement: any;\n}> = ({ selectedElement, setSelectedElement }) => {\n  const { categories } = useCategories();\n  // WE TRACK THE BREAK POINTS CHANGES\n  // TO UPDATE THE ELEMENT RELATIVELY TO THE BREAKPOINT\n  const breakpoint = useBreakpoint();\n\n  const data: IDataFetching = selectedElement.dataFetching ?? {};\n\n  if (!breakpoint) return null;\n\n  // CHANGE EVENT FOR ALL COMPONENTS\n  const onChange: TOnChange<any> = (value, field) => {\n    setSelectedElement((old: any) => {\n      const dataFetching = { ...old.dataFetching, [field]: value };\n\n      Object.keys(dataFetching).forEach((key) => {\n        if (\n          typeof dataFetching[key] === \"undefined\" ||\n          dataFetching[key] === null\n        ) {\n          delete dataFetching[key];\n        }\n      });\n\n      const payload = {\n        ...old,\n        dataFetching,\n      };\n\n      return payload;\n    });\n  };\n\n  console.log(\"categories =>\", categories);\n\n  const sections: TXGUIField[] = [\n    {\n      label: \"Actif\",\n      name: \"enabled\",\n      type: \"toggle_option\",\n      options: [\n        { value: false, label: \"Non\" },\n        { value: true, label: \"Oui\" },\n      ],\n      defaultValue: data.enabled ?? false,\n    },\n    {\n      label: \"Max. Par Page\",\n      name: \"limit\",\n      type: \"number\",\n      placeholder: \"8\",\n      defaultValue: data.limit,\n    },\n    {\n      label: \"Ordonner\",\n      name: \"order\",\n      type: \"select_option\",\n      options: [\n        { value: \"name\", label: \"Par Nom\" },\n        { value: \"price\", label: \"Par Prix\" },\n        { value: \"rating\", label: \"Par Notes\" },\n        { value: \"qty\", label: \"Par Quantité\" },\n        { value: \"createdAt\", label: \"Par Date\" },\n      ],\n      defaultValue: data.order ?? \"createdAt\",\n    },\n    {\n      label: \"Sens\",\n      name: \"sort\",\n      type: \"select_option\",\n      options: [\n        { value: \"asc\", label: \"Croissant\" },\n        { value: \"desc\", label: \"Decroissant\" },\n      ],\n      defaultValue: data.sort ?? \"desc\",\n    },\n  ];\n\n  if (categories.length > 0) {\n    sections.unshift({\n      label: \"Categories\",\n      name: \"categoryId\",\n      type: \"select_option\",\n      options: categories.map((cat) => ({ label: cat.name, value: cat.id })),\n    });\n  }\n\n  return (\n    <Stack\n      sx={{\n        \".MuiAccordion-root\": {\n          borderRadius: 0,\n          color: \"white\",\n          bgcolor: \"#0E0D18\",\n\n          \"&.MuiPaper-elevation\": {\n            boxShadow: \"none\",\n          },\n\n          \".MuiSvgIcon-root\": {\n            fontSize: 15,\n            color: \"white\",\n          },\n\n          \".MuiAccordionSummary-root\": {\n            px: 0,\n          },\n        },\n        \".MuiToggleButtonGroup-root, .MuiInputBase-root, .MuiFab-root\": {\n          border: \"2px solid #222132\",\n          minHeight: 30,\n        },\n        \".MuiToggleButtonGroup-root\": {\n          bgcolor: \"#222132\",\n\n          \".MuiToggleButton-root\": {\n            py: 0,\n            fontSize: 9.5,\n            color: \"white\",\n            fontWeight: 700,\n\n            \"&.Mui-selected\": {\n              bgcolor: \"rgba(0, 0, 0, 0.5)\",\n              borderRadius: 1,\n            },\n\n            \"&.Mui-disabled\": {\n              color: \"rgba(0, 0, 0, 0.38)\",\n              svg: {\n                color: \"inherit\",\n              },\n            },\n          },\n        },\n        \".MuiButtonBase-root\": {\n          bgcolor: \"transparent\",\n          minHeight: 0,\n\n          \".MuiAccordionSummary-content\": {\n            my: 1,\n\n            \".MuiTypography-body1\": {\n              fontSize: 12,\n            },\n          },\n        },\n        \".MuiAccordionDetails-root\": {\n          pt: 0,\n          pb: 1,\n          px: 0,\n          color: \"#9494AE\",\n          bgcolor: \"transparent\",\n          fontSize: 9,\n\n          \"& .MuiTypography-root\": {\n            letterSpacing: 0.5,\n            fontWeight: 700,\n            textTransform: \"uppercase\",\n            fontSize: \"inherit\",\n          },\n\n          \"& .MuiSelect-select\": {\n            py: 0.5,\n            px: 1,\n          },\n\n          \"& .Side\": {\n            width: \"100%\",\n            maxWidth: 170,\n            fontSize: 9,\n          },\n\n          \"& .MuiInputBase-root\": {\n            color: \"white\",\n            bgcolor: \"#222132\",\n            fontSize: 12,\n            overflow: \"hidden\",\n            borderRadius: 1,\n\n            \"&.MuiInputBase-multiline\": {\n              p: 0,\n            },\n\n            \"input, & .MuiInputBase-inputMultiline, & .MuiInputBase-input\": {\n              p: 0,\n              pl: 1,\n              border: 0,\n            },\n\n            \".MuiButtonBase-root\": {\n              minWidth: 50,\n              borderRadius: 0.5,\n\n              // p: 0,\n              bgcolor: \"rgba(0,0,0,0.5)\",\n              fontSize: 10,\n              lineHeight: \"1.2em\",\n              height: 25,\n\n              \".MuiOutlinedInput-notchedOutline\": {\n                border: 0,\n              },\n\n              \".MuiSelect-select\": {\n                p: 0.25,\n                textAlign: \"center\",\n              },\n\n              \".MuiSelect-icon\": {\n                display: \"none\",\n              },\n            },\n          },\n          \".MuiInputBase-adornedEnd\": {\n            pr: 0,\n            // py: 0.5,\n          },\n        },\n      }}\n    >\n      <Accordion expanded disableGutters sx={{ pt: 2 }}>\n        <AccordionDetails>\n          <React.Suspense fallback={<CircularProgress />}>\n            {sections.map((field) =>\n              generateXGUIField({\n                field,\n                onChange,\n                currentValue: data[field.name],\n                index: selectedElement.index ?? \"\",\n                visible: true,\n              })\n            )}\n          </React.Suspense>\n        </AccordionDetails>\n      </Accordion>\n    </Stack>\n  );\n};\n\nexport default XGUIDataTab;\n\nconst generateXGUIField = (args: IXGUIFieldBase) => {\n  if (!args.visible) return null;\n\n  const key = args.index + args.field.name;\n\n  switch (args.field.type) {\n    case \"text\":\n    case \"number\":\n      return (\n        <React.Suspense key={key}>\n          <XGUITextField {...args} type={args.field.type} />\n        </React.Suspense>\n      );\n\n    case \"select_option\":\n      return (\n        <React.Suspense key={key}>\n          <XGUISelectOptionField {...args} options={args.field.options ?? []} />\n        </React.Suspense>\n      );\n    case \"toggle_option\":\n      return (\n        <React.Suspense key={key}>\n          <XGUIToggleOptionField {...args} options={args.field.options ?? []} />\n        </React.Suspense>\n      );\n\n    case \"image\":\n      return (\n        <React.Suspense key={key}>\n          <XGUIFilePicker {...args} type=\"image\" />\n        </React.Suspense>\n      );\n    default:\n      return null;\n  }\n};\n"]}