{"version":3,"sources":["../src/components/atoms/Alert/Alert.tsx","../src/components/atoms/IonIcon/IonIcon.tsx","../src/components/atoms/boost/Boost.tsx","../src/components/atoms/breadcrumb/Breadcrumb.tsx","../src/components/atoms/breadcrumb/Breadcrumbs.tsx","../src/components/atoms/Chip/Chip.tsx","../src/components/atoms/closeComponent/CloseComponent.tsx","../src/components/atoms/form/CheckboxWithoutError.tsx","../src/components/atoms/form/Checkbox.tsx","../src/hooks/useApi.ts","../src/hooks/useLog.ts","../src/hooks/useResource.ts","../src/store/data.ts","../src/store/hooks.ts","../src/store/i18n.ts","../src/store/menu.ts","../src/store/store.ts","../src/store/user.ts","../src/hooks/useApiFilters.ts","../src/hooks/useApiTable.ts","../src/hooks/useApiForm.ts","../src/hooks/useCatalogs.ts","../src/hooks/useDataLoader.ts","../src/hooks/useFilters.ts","../src/hooks/useFormError.ts","../src/hooks/useGraphql.ts","../src/hooks/useIsHorizontalOverflow.ts","../src/hooks/useOptions.ts","../src/hooks/useSingletonLoader.ts","../src/hooks/useRuleEngineGraphqlFilters.ts","../src/hooks/useRuleOperators.ts","../src/hooks/useTabs.ts","../src/hooks/useUser.ts","../src/hooks/useFormValdation.ts","../src/components/atoms/form/DatePickerWithoutError.tsx","../src/components/atoms/form/InputTextWithoutError.tsx","../src/services/category.ts","../src/services/customTable.ts","../src/services/form.ts","../src/services/row.ts","../src/components/atoms/form/InfoTooltip.tsx","../src/components/atoms/modals/Tooltip.tsx","../src/components/atoms/form/InputText.styled.ts","../src/components/atoms/form/DatePicker.tsx","../src/components/atoms/form/DoubleDatePickerWithoutError.tsx","../src/components/atoms/form/FormControl.tsx","../src/components/atoms/form/DoubleDatePicker.tsx","../src/components/atoms/form/DropDownWithoutError.tsx","../src/components/atoms/form/DropDown.styled.tsx","../src/components/atoms/form/DropDown.tsx","../src/components/atoms/form/InputText.tsx","../src/components/atoms/form/RadioGroupWithoutError.tsx","../src/components/atoms/form/RadioGroup.tsx","../src/components/atoms/form/Range.tsx","../src/components/atoms/form/RangeWithoutError.tsx","../src/components/atoms/form/Range.styled.tsx","../src/components/atoms/form/Slider.tsx","../src/components/atoms/form/Slider.styled.tsx","../src/components/atoms/form/Switch.tsx","../src/components/atoms/form/Switch.styled.tsx","../src/components/atoms/form/TextareaWithoutError.tsx","../src/components/atoms/form/Textarea.tsx","../src/components/atoms/form/TreeSelectorWithoutError.tsx","../src/components/atoms/tree/Tree.tsx","../src/components/atoms/tree/Tree.styled.ts","../src/components/atoms/form/TreeSelector.styled.tsx","../src/components/atoms/form/TreeSelector.tsx","../src/components/atoms/format/FormatText.tsx","../src/components/atoms/help/Help.tsx","../src/components/atoms/help/HelpOver.tsx","../src/components/atoms/menu/MenuItem.tsx","../src/components/atoms/menu/MenuItemIcon.tsx","../src/components/atoms/modals/PopIn.tsx","../src/hooks/usePopin.ts","../src/components/atoms/modals/CustomDialog.tsx","../src/components/atoms/modals/PopIn.styled.ts","../src/components/atoms/buttons/Button.tsx","../src/components/atoms/buttons/Button.styled.tsx","../src/components/atoms/noAttributes/NoAttributes.tsx","../src/components/stateful-pages/Grid/Grid.tsx","../src/components/stateful-pages/ResourceTable/ResourceTable.tsx","../src/components/stateful/FieldGuesser/FieldGuesser.tsx","../src/components/stateful/FieldGuesser/EditableFieldGuesser.tsx","../src/components/stateful/FieldGuesser/ReadableFieldGuesser.tsx","../src/contexts/breadcrumb.ts","../src/contexts/catalog.ts","../src/contexts/i18n.ts","../src/contexts/metadata.ts","../src/contexts/options.ts","../src/contexts/ruleOptions.ts","../src/components/atoms/score/Score.tsx","../src/components/atoms/stock/Stock.tsx","../src/components/atoms/price/Price.tsx","../src/components/stateful/FieldGuesser/ReadableDropDownGuesser.tsx","../src/components/molecules/format/FormatRowArray.tsx","../src/components/atoms/format/FormatArray.tsx","../src/components/atoms/form/PreviewGridBoostConfiguration/PreviewGridBoostConfiguration.tsx","../src/components/molecules/FiltersPreviewBoostingTabs/FiltersPreviewBoostingTabs.tsx","../src/components/molecules/layout/tabs/CustomTabs.tsx","../src/components/molecules/layout/tabs/TabPanel.tsx","../src/components/molecules/layout/tabs/a11yProps.tsx","../src/components/molecules/FiltersPreviewBoostingTabs/FiltersPreviewBoostingTab.tsx","../src/components/atoms/form/Form.tsx","../src/components/atoms/form/SearchBar.tsx","../src/components/organisms/PreviewBoostingTable/PreviewBoostingTableManager.tsx","../src/components/molecules/CustomTable/Pagination/Pagination.tsx","../src/components/organisms/PreviewBoostingTable/PreviewBoostingTable.tsx","../src/components/organisms/CustomTable/CustomTable.tsx","../src/components/organisms/CustomTable/CustomTable.styled.tsx","../src/components/organisms/CustomTable/CustomTableBody/DraggableBody.tsx","../src/components/organisms/CustomTable/CustomTableRow/DraggableRow.tsx","../src/components/organisms/CustomTable/CustomTableBody/NonDraggableBody.tsx","../src/components/organisms/CustomTable/CustomTableRow/NonDraggableRow.tsx","../src/components/organisms/CustomTable/CustomTableHeader/CustomTableHeader.tsx","../src/components/atoms/image/Image.tsx","../src/components/atoms/positionEffect/PositionEffect.tsx","../src/components/stateful/FieldGuesser/EditableDropDownGuesser.tsx","../src/components/stateful/FieldGuesser/MultipleInput.tsx","../src/components/stateful/RequestTypeManager/RequestTypeManager.tsx","../src/components/atoms/form/RequestType.tsx","../src/components/atoms/form/RequestTypeItem.styled.tsx","../src/components/atoms/form/RequestTypeItem.tsx","../src/components/atoms/form/TextFieldTagsMultiple.tsx","../src/components/atoms/form/TextFieldTags.tsx","../src/components/atoms/form/TextFieldTagsWithoutError.tsx","../src/components/stateful/RulesManager/RulesManager.tsx","../src/components/atoms/rules/CombinationRules.tsx","../src/components/atoms/rules/Rule.tsx","../src/components/atoms/rules/Rule.styled.tsx","../src/components/atoms/rules/RuleLink.tsx","../src/components/stateful-providers/RuleOptionsProvider/RuleOptionsProvider.tsx","../src/components/atoms/form/Synonym.tsx","../src/components/atoms/form/Expansion.tsx","../src/components/molecules/ProportionalToAttributes/ProportionalToAttributesManager.tsx","../src/components/molecules/ProportionalToAttributes/ProportionalToAttributes.tsx","../src/components/molecules/ProportionalToAttributes/ProportionalToAttributes.styled.tsx","../src/components/stateful/FiltersGuesser/FiltersGuesser.tsx","../src/components/molecules/Filters/Filters.tsx","../src/components/molecules/Filters/Filters.styled.tsx","../src/components/stateful/TableGuesser/TableGuesser.tsx","../src/components/molecules/CustomTable/StickyBar/StickyBar.tsx","../src/components/organisms/PagerTable/PagerTable.tsx","../src/components/stateful/TableStickyBar/TableStickyBar.tsx","../src/components/atoms/PageTitle/PageTitle.tsx","../src/components/atoms/Placeholder/Placeholder.tsx","../src/components/atoms/scope/Language.tsx","../src/components/atoms/scope/PopInCatalogs.tsx","../src/components/atoms/scope/TitleScope.tsx","../src/components/atoms/scope/NbActiveLocales.tsx","../src/components/atoms/subTabs/SubTabPanel.tsx","../src/components/atoms/subTabs/SubTabs.tsx","../src/components/atoms/userMenu/UserMenu.tsx","../src/components/atoms/userMenu/UserMenuShow.tsx","../src/components/molecules/CustomTable/MassiveSelection/MassiveSelection.tsx","../src/components/molecules/CustomTable/TopProductsBanner/TopProductsBanner.tsx","../src/components/molecules/layout/appBar/AppBar.tsx","../src/components/molecules/layout/user/User.tsx","../src/components/molecules/layout/Menu/Menu.tsx","../src/components/molecules/layout/scope/ActiveLocales.tsx","../src/components/molecules/layout/scope/Catalogs.tsx","../src/components/molecules/layout/Sidebar/Sidebar.tsx","../src/components/molecules/layout/TitleBlock/TitleBlock.tsx","../src/components/molecules/layout/twoColsLayout/TwoColsLayout.tsx","../src/components/stateful/CatalogSwitcher/CatalogSwitcher.tsx","../src/components/stateful/CategoryTree/CategoryTree.tsx","../src/components/stateful/Merchandize/Merchandize.tsx","../src/components/stateful/ProductsContainer/ProductsContainer.tsx","../src/components/stateful/ProductsTopAndBottom/ProductsTopAndBottom.tsx","../src/components/stateful/TopAndBottomTable/BottomTable.tsx","../src/components/stateful/TopAndBottomTable/TopTable.tsx","../src/components/stateful/TopProductsTable/TopProductsTable.tsx","../src/components/stateful/Merchandize/SearchBar/SearchBar.tsx","../src/components/stateful/Merchandize/SearchBar/Search.styled.tsx","../src/components/stateful-layout/Layout/Layout.tsx","../src/components/stateful-pages/SettingsAttributes/SettingsAttributes.tsx","../src/components/atoms/metadata/Metadata.tsx","../src/components/stateful-pages/SettingsScope/SettingsScope.tsx","../src/components/stateful-pages/ResourceForm/ResourceForm.tsx","../src/components/organisms/CustomForm/CustomForm.tsx","../src/components/stateful/FieldGuesser/FormFieldGuesser.tsx","../src/components/organisms/CustomForm/CustomForm.styled.tsx","../src/components/atoms/backToLastPage/BackToLastPage.tsx","../src/components/stateful-providers/AppProvider/AppProvider.tsx","../src/components/stateful-providers/BreadcrumbProvider/BreadcrumbProvider.tsx","../src/components/stateful-providers/I18nProvider/I18nProvider.tsx","../src/components/stateful-providers/CatalogProvider/CatalogProvider.tsx","../src/components/stateful-providers/MetadataProvider/MetadataProvider.tsx","../src/components/stateful-providers/DataProvider/DataProvider.tsx","../src/components/stateful-providers/OptionsProvider/OptionsProvider.tsx","../src/constants/i18n.ts","../src/hocs/withAuth.tsx","../src/hocs/withOptions.tsx","../src/pages/admin/analyze/Results.tsx","../src/components/stateful/ProductPreview/MerchandiseBar.tsx","../src/components/stateful/ProductPreview/ProductsPreviewBottom.tsx","../src/components/molecules/Explain/ExplainQueryDetails.tsx","../src/components/molecules/Explain/ExplainDetails.tsx","../src/components/atoms/ReadOnlyTable/ReadOnlyTable.tsx","../src/components/atoms/ReadOnlyTable/ReadOnlyTable.styled.tsx","../src/components/atoms/modals/Tooltip.stories.tsx","../src/components/molecules/Explain/ExplainDetails.styled.tsx","../src/pages/admin/merchandize/categories.tsx","../src/pages/admin/merchandize/boost/Grid.tsx","../src/pages/admin/merchandize/boost/Create.tsx","../src/pages/admin/merchandize/boost/Edit.tsx","../src/pages/admin/search/thesaurus/Grid.tsx","../src/pages/admin/search/thesaurus/Create.tsx","../src/pages/admin/search/thesaurus/Edit.tsx","../src/pages/admin/search/configuration/Attributes.tsx","../src/pages/admin/search/Facets.tsx","../src/pages/admin/search/Vector.tsx","../src/pages/admin/settings/Index.tsx","../src/pages/admin/Dashboard.tsx","../src/pages/admin/Settings.tsx","../src/pages/swagger/Docs.tsx","../src/pages/GallyApp.tsx","../src/pages/Login.tsx","../src/pages/Welcome.tsx"],"sourcesContent":["import React, { ForwardedRef, forwardRef } from 'react'\nimport { IconButton, Alert as MuiAlert } from '@mui/material'\nimport { styled } from '@mui/system'\nimport { CustomContentProps, SnackbarKey } from 'notistack'\nimport { useTranslation } from 'next-i18next'\n\nimport IonIcon from '../IonIcon/IonIcon'\n\nconst StyledAlert = styled(MuiAlert)(({ severity, theme }) => ({\n  padding: `6px ${theme.spacing(2)}`,\n  background: theme.palette.colors.neutral[200],\n  border: `1px solid ${theme.palette.colors.neutral[300]}`,\n  color: theme.palette.colors.neutral[600],\n  borderRadius: 8,\n  alignItems: 'center',\n  ...(severity === 'success' && {\n    background: theme.palette.success.light,\n    color: theme.palette.success.main,\n  }),\n  ...(severity === 'warning' && {\n    background: theme.palette.warning.light,\n    color: theme.palette.warning.main,\n  }),\n  ...(severity === 'error' && {\n    background: theme.palette.error.light,\n    color: theme.palette.error.main,\n  }),\n  '& .MuiAlert-icon': {\n    color: 'inherit',\n    marginRight: theme.spacing(1),\n  },\n  '& .MuiAlert-message': {\n    padding: 0,\n    fontWeight: 400,\n    fontSize: '12px',\n    lineHeight: '18px',\n    whiteSpace: 'pre-line',\n  },\n  '& .MuiAlert-action': {\n    paddingLeft: '10px',\n    paddingTop: 0,\n    paddingBottom: 0,\n    paddingRight: 0,\n  },\n}))\n\ninterface IProps extends Partial<CustomContentProps> {\n  onShut?: (id: SnackbarKey) => void\n  mb?: number\n}\n\nfunction Alert(props: IProps, ref: ForwardedRef<HTMLDivElement>): JSX.Element {\n  const { id, message, onShut, variant = 'info', mb = 2 } = props\n  const { t } = useTranslation('alert')\n\n  function handleClick(): void {\n    onShut?.(id)\n  }\n\n  return (\n    <StyledAlert\n      action={\n        <IconButton\n          aria-label=\"close\"\n          color=\"inherit\"\n          size=\"small\"\n          onClick={handleClick}\n        >\n          <IonIcon name=\"close\" style={{ fontSize: 18, padding: '0px' }} />\n        </IconButton>\n      }\n      ref={ref}\n      severity={variant as 'success' | 'info' | 'warning' | 'error'}\n      sx={{ mb }}\n    >\n      {t(message)}\n    </StyledAlert>\n  )\n}\n\nexport default forwardRef(Alert)\n","/* eslint-disable @typescript-eslint/no-namespace */\nimport React, { CSSProperties, MouseEvent } from 'react'\nimport { JSX as IonIconJSX } from 'ionicons'\nimport { JSXBase } from 'ionicons/dist/types/stencil-public-runtime'\n\nexport type IIonIconProps = Omit<\n  IonIconJSX.IonIcon & JSXBase.HTMLAttributes<HTMLIonIconElement>,\n  'style' | 'onClick'\n> & {\n  style?: CSSProperties\n  onClick?: (event: MouseEvent<IIonIconProps>) => void\n}\n\ndeclare global {\n  namespace JSX {\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    interface IntrinsicElements {\n      'ion-icon': IIonIconProps\n    }\n  }\n}\n\ninterface IProps extends IIonIconProps {\n  name: string\n  tooltip?: boolean\n}\n\nexport const iconSrcMapping = {\n  dashboard: '/images/home2.svg',\n  arrow: '/images/arrow.svg',\n  telescope: '/images/telescope-outline.svg',\n  'push-pin': '/images/push-pin.svg',\n}\n\nexport const iconAliasMapping = {\n  analyze: 'analytics',\n  informationCircle: 'information-circle-outline',\n  merchandize: 'funnel-outline',\n  minus: 'remove-circle',\n  monitoring: 'list',\n  more: 'add-circle',\n  settings: 'settings-outline',\n}\nexport const customIcons = [\n  ...Object.keys(iconSrcMapping),\n  ...Object.keys(iconAliasMapping),\n]\n\n/*\n * Creation of special props to be clean on Typescripts files\n * See: https://github.com/ionic-team/ionicons\n * List: https://ionic.io/ionicons/\n *\n * Setup switch for special names that need svg or have another name in ion-icons\n */\nfunction IonIcon(props: IProps): JSX.Element {\n  const { name, tooltip, ...other } = props\n  const style = tooltip\n    ? {\n        color: '#8187B9',\n        width: '20px',\n        height: '20px',\n        display: 'flex',\n      }\n    : {}\n  const iconProps = { ...other, style: { ...style, ...other.style } }\n  if (name in iconSrcMapping) {\n    return (\n      <ion-icon\n        src={iconSrcMapping[name as keyof typeof iconSrcMapping]}\n        {...iconProps}\n      />\n    )\n  } else if (name in iconAliasMapping) {\n    return (\n      <ion-icon\n        name={iconAliasMapping[name as keyof typeof iconAliasMapping]}\n        {...iconProps}\n      />\n    )\n  }\n  return <ion-icon name={name} {...iconProps} />\n}\n\nexport default IonIcon\n","import React from 'react'\nimport { Box } from '@mui/system'\n\nimport IonIcon from '../IonIcon/IonIcon'\nimport { TFunction, useTranslation } from 'next-i18next'\n\ninterface IProps {\n  type: 'up' | 'down' | 'straight'\n  boostNumber?: number\n  boostMultiplicator?: number\n}\ninterface IBoostDetails {\n  boostText: string\n  boostColor: string\n  boostTextColor: string\n  boostIconName: string\n}\n\nfunction setBoostDetails(\n  type: 'up' | 'down' | 'straight',\n  boostNumber: number,\n  boostMultiplicator: number,\n  t: TFunction\n): IBoostDetails {\n  const boostText = t('boost', { count: boostNumber })\n  switch (type) {\n    case 'up':\n      return {\n        boostText: ` x${boostMultiplicator} ( ${boostNumber} ${boostText}) `,\n        boostColor: 'success.light',\n        boostTextColor: 'success.main',\n        boostIconName: 'trending-up-outline',\n      }\n    case 'down':\n      return {\n        boostText: ` x${boostMultiplicator} ( ${boostNumber} ${boostText}) `,\n        boostColor: 'error.light',\n        boostTextColor: 'error.main',\n        boostIconName: 'trending-down-outline',\n      }\n    case 'straight':\n      return {\n        boostText: 'no boost',\n        boostColor: 'neutral.light',\n        boostTextColor: 'colors.neutral.600',\n        boostIconName: 'arrow-forward-outline',\n      }\n  }\n}\n\nfunction Boost(props: IProps): JSX.Element {\n  const { type, boostNumber, boostMultiplicator } = props\n\n  const { t } = useTranslation('boost')\n  const boostDetail = setBoostDetails(type, boostNumber, boostMultiplicator, t)\n\n  return (\n    <Box sx={{ display: 'flex', gap: '4px' }}>\n      <Box\n        sx={{\n          backgroundColor: boostDetail.boostColor,\n          color: boostDetail.boostTextColor,\n          height: '20px',\n          width: '20px',\n          borderRadius: '50%',\n          display: 'flex',\n          justifyContent: 'center',\n          alignItems: 'center',\n        }}\n      >\n        <IonIcon\n          name={boostDetail.boostIconName}\n          style={\n            type === 'straight'\n              ? { width: '14px', height: '14px' }\n              : { width: '14px', height: '8px' }\n          }\n        />\n      </Box>\n      {boostNumber !== undefined && boostMultiplicator !== undefined && (\n        <Box\n          sx={{\n            color: boostDetail.boostTextColor,\n            fontFamily: 'var(--gally-font)',\n            fontWeight: '500',\n            fontSize: '12px',\n            lineHeight: '18px',\n          }}\n        >\n          {boostDetail.boostText}\n        </Box>\n      )}\n    </Box>\n  )\n}\n\nexport default Boost\n","import React from 'react'\nimport { Typography } from '@mui/material'\nimport { styled } from '@mui/system'\n\nconst CustomBreadCrumb = styled('span')({\n  fontWeight: '500',\n  fontSize: '12px',\n  lineHeight: '18px',\n})\n\nconst CustomBreadCrumbColorClassique = styled(CustomBreadCrumb)(\n  ({ theme }) => ({\n    color: theme.palette.colors.neutral['500'],\n  })\n)\n\nconst CustomBreadCrumbColorLast = styled(CustomBreadCrumb)(({ theme }) => ({\n  color: theme.palette.colors.neutral['800'],\n}))\n\ninterface IProps {\n  label: string\n  last: boolean\n}\n\nfunction Breadcrumb(props: IProps): JSX.Element {\n  const { label, last } = props\n  const Component = last\n    ? CustomBreadCrumbColorLast\n    : CustomBreadCrumbColorClassique\n  return (\n    <Typography>\n      <Component>{label}</Component>\n    </Typography>\n  )\n}\n\nexport default Breadcrumb\n","import React from 'react'\nimport { Breadcrumbs as MuiBreadcrumbs } from '@mui/material'\n\nimport {\n  IMenu,\n  findBreadcrumbLabel,\n  getSlugArray,\n} from '@elastic-suite/gally-admin-shared'\n\nimport Breadcrumb from './Breadcrumb'\n\ninterface IProps {\n  slug: string | string[]\n  menu: IMenu\n}\n\nfunction Breadcrumbs(props: IProps): JSX.Element {\n  const { menu, slug } = props\n\n  if (!slug || slug.length === 0 || menu.hierarchy.length === 0) {\n    return null\n  }\n\n  const breadcrumbProps = getSlugArray(slug)\n    .map((item: string, index: number, slug: string[]) => ({\n      key: item,\n      label: findBreadcrumbLabel(index, slug, menu.hierarchy),\n      last: slug.length <= index + 1,\n    }))\n    .filter(({ label }) => label)\n  return (\n    <MuiBreadcrumbs\n      aria-label=\"breadcrumb\"\n      sx={{ color: 'colors.neutral.500' }}\n      data-testid=\"breadcrumbs\"\n    >\n      {breadcrumbProps.map(({ key, ...props }) => (\n        <Breadcrumb key={key} {...props} />\n      ))}\n    </MuiBreadcrumbs>\n  )\n}\n\nexport default Breadcrumbs\n","import React from 'react'\nimport { styled } from '@mui/system'\nimport { ChipProps, IconButton, Chip as MuiChip } from '@mui/material'\n\nimport IonIcon from '../IonIcon/IonIcon'\n\nconst StyledChip = styled(MuiChip)(({ theme, disabled }) => ({\n  display: 'inline-flex',\n  height: '26px',\n  color: theme.palette.colors.neutral['900'],\n  fontFamily: 'var(--gally-font)',\n  fontWeight: disabled ? 400 : 600,\n  fontSize: disabled ? 14 : 12,\n  lineHeight: '18px',\n  textAlign: 'center',\n  alignItems: 'center',\n  padding: `2px ${theme.spacing(1)}`,\n  background: theme.palette.colors.neutral['300'],\n  borderRadius: '13px',\n  cursor: 'default',\n  '&.MuiChip-colorPrimary': {\n    color: theme.palette.colors.secondary['600'],\n    background: theme.palette.colors.secondary['100'],\n  },\n  '&.MuiChip-colorSuccess': {\n    color: theme.palette.success.main,\n    background: theme.palette.success.light,\n  },\n  '&.MuiChip-colorWarning': {\n    color: theme.palette.warning.main,\n    background: theme.palette.warning.light,\n  },\n  '&.MuiChip-colorError': {\n    color: theme.palette.error.main,\n    background: theme.palette.error.light,\n  },\n  '&.MuiChip-sizeSmall': {\n    height: '20px',\n  },\n  '& .MuiChip-label': {\n    padding: 0,\n  },\n  '& .MuiChip-deleteIcon': {\n    color: 'inherit',\n    margin: `0 0 0 ${theme.spacing(0.5)}`,\n    padding: 0,\n    fontSize: '14px',\n    '&:hover': {\n      color: 'inherit',\n      opacity: 0.5,\n    },\n  },\n}))\n\nfunction Chip(props: ChipProps): JSX.Element {\n  const { disabled } = props\n\n  return (\n    <StyledChip\n      disabled={disabled}\n      {...props}\n      style={{ opacity: 1 }}\n      deleteIcon={\n        <IconButton>\n          <IonIcon name=\"close\" />\n        </IconButton>\n      }\n    />\n  )\n}\n\nexport default Chip\n","import React from 'react'\nimport { Box } from '@mui/material'\n\ninterface IProps {\n  onClose: () => void\n}\n\nfunction CloseComponent({ onClose }: IProps): JSX.Element {\n  return (\n    <Box\n      sx={{\n        position: 'fixed',\n        width: '100vw',\n        height: '100vh',\n        zIndex: 99,\n        left: '0',\n        top: '0',\n      }}\n      onClick={onClose}\n    />\n  )\n}\n\nexport default CloseComponent\n","import React, {\n  ChangeEvent,\n  ForwardedRef,\n  ReactNode,\n  SyntheticEvent,\n  forwardRef,\n} from 'react'\nimport {\n  CheckboxProps,\n  FormControlLabel,\n  FormHelperText,\n  Checkbox as MuiCheckbox,\n} from '@mui/material'\nimport IonIcon from '../IonIcon/IonIcon'\n\nexport interface ICheckboxWithoutErrorProps\n  extends Omit<CheckboxProps, 'onChange' | 'onClick'> {\n  label?: ReactNode\n  list?: boolean\n  onChange?: (checked: boolean, event: SyntheticEvent) => void\n  onClick?: (event: SyntheticEvent) => void\n  small?: boolean\n  helperIcon?: string\n  helperText?: ReactNode\n  error?: boolean\n  dataTestId?: string\n}\n\nfunction CheckboxWithoutError(\n  props: ICheckboxWithoutErrorProps,\n  ref?: ForwardedRef<HTMLInputElement>\n): JSX.Element {\n  const {\n    error,\n    helperIcon,\n    helperText,\n    disabled,\n    label,\n    list,\n    onChange,\n    onClick,\n    small,\n    dataTestId,\n    ...checkboxProps\n  } = props\n\n  function handleChange(event: ChangeEvent<HTMLInputElement>): void {\n    if (onChange) {\n      onChange(event.target.checked, event)\n    }\n  }\n\n  return (\n    <FormControlLabel\n      componentsProps={{ typography: { variant: list ? 'caption' : 'body2' } }}\n      control={\n        <MuiCheckbox\n          {...checkboxProps}\n          inputRef={ref}\n          onChange={handleChange}\n          sx={{\n            ...(Boolean(list) && {\n              marginBottom: '-9px',\n              marginTop: '-9px',\n              fontSize: '12px',\n            }),\n            ...(Boolean(small) && {\n              padding: 0,\n              marginLeft: '6px',\n              marginRight: '6px',\n            }),\n          }}\n        />\n      }\n      onClick={onClick}\n      disabled={disabled}\n      label={\n        <div>\n          {label}\n          {Boolean(helperText) && (\n            <FormHelperText error={error}>\n              {Boolean(helperIcon) && (\n                <IonIcon\n                  name={helperIcon}\n                  style={{ fontSize: 18, marginRight: 2 }}\n                />\n              )}\n              {helperText}\n            </FormHelperText>\n          )}\n        </div>\n      }\n      sx={{\n        ...(Boolean(small) && {\n          marginLeft: '-6px',\n        }),\n      }}\n      data-testid={dataTestId}\n    />\n  )\n}\n\nexport default forwardRef(CheckboxWithoutError)\n","import React, { ForwardedRef, useCallback } from 'react'\n\nimport {\n  IFieldErrorProps,\n  IOnChange,\n  IValidator,\n  useFormError,\n} from '../../../hooks'\n\nimport CheckboxWithoutError, {\n  ICheckboxWithoutErrorProps,\n} from './CheckboxWithoutError'\n\ninterface ICheckboxErrorProps\n  extends IFieldErrorProps,\n    ICheckboxWithoutErrorProps {}\n\nfunction Checkbox(props: ICheckboxErrorProps): JSX.Element {\n  const { onChange, showError, additionalValidator, ...inputProps } = props\n\n  const validator = useCallback<IValidator>(\n    (value, event) => {\n      if (additionalValidator) return additionalValidator(value, event)\n      return ''\n    },\n    [additionalValidator]\n  )\n\n  const [{ ref, ...formErrorProps }] = useFormError(\n    onChange as IOnChange,\n    inputProps.checked,\n    showError,\n    validator,\n    inputProps.disabled\n  )\n\n  return (\n    <CheckboxWithoutError\n      {...inputProps}\n      {...formErrorProps}\n      error={inputProps?.error || formErrorProps?.error}\n      helperIcon={inputProps?.helperIcon || formErrorProps?.helperIcon}\n      helperText={inputProps?.helperText || formErrorProps?.helperText}\n      ref={ref as ForwardedRef<HTMLInputElement>}\n    />\n  )\n}\n\nexport default Checkbox\n","import {\n  Dispatch,\n  SetStateAction,\n  useCallback,\n  useLayoutEffect,\n  useMemo,\n  useRef,\n  useState,\n} from 'react'\nimport Router from 'next/router'\nimport { useTranslation } from 'next-i18next'\nimport debounce from 'lodash.debounce'\nimport {\n  AuthError,\n  IFetch,\n  IFetchApi,\n  IHydraMember,\n  IHydraResponse,\n  ILoadResource,\n  IResource,\n  IResourceEditableOperations,\n  ISearchParameters,\n  LoadStatus,\n  defaultPageSize,\n  fetchApi,\n  fetchApiUsingPagination,\n  getListApiParameters,\n  isError,\n  storageRemove,\n  tokenStorageKey,\n} from '@elastic-suite/gally-admin-shared'\n\nimport { useLog } from './useLog'\nimport { useResourceOperations } from './useResource'\n\nconst debounceDelay = 1000\n\nexport function useApiFetch(secure = true): IFetchApi {\n  const { i18n } = useTranslation('common')\n  const log = useLog()\n\n  const { t } = useTranslation('alert')\n\n  return useCallback<IFetchApi>(\n    async <T extends object>(\n      resource: IResource | string,\n      searchParameters?: ISearchParameters,\n      options?: RequestInit\n    ) => {\n      try {\n        const json = await fetchApi<T>(\n          i18n.language,\n          resource,\n          searchParameters,\n          options,\n          secure\n        )\n        return json\n      } catch (error) {\n        if (secure && error instanceof AuthError) {\n          storageRemove(tokenStorageKey)\n          Router.push('/login')\n          log(t('Expired JWT Token'))\n        } else {\n          log(error)\n        }\n        return { error }\n      }\n    },\n    [i18n.language, log, secure, t]\n  )\n}\n\nexport function useFetchApi<T extends object>(\n  resource: IResource | string,\n  searchParameters?: ISearchParameters,\n  options?: RequestInit,\n  secure = true,\n  conditions = true,\n  withDebounce = false,\n  rowsPerPageWithPagination?: number\n): [IFetch<T>, Dispatch<SetStateAction<T>>, ILoadResource] {\n  const fetchApi = useApiFetch(secure)\n  const [response, setResponse] = useState<IFetch<T>>({\n    status: LoadStatus.IDLE,\n  })\n\n  const updateResponse = useCallback((data: SetStateAction<T>): void => {\n    setResponse((prevState) => ({\n      ...prevState,\n      data: data instanceof Function ? data(prevState.data) : data,\n    }))\n  }, [])\n\n  const load = useCallback(() => {\n    if (conditions) {\n      setResponse((prevState) => ({\n        data: prevState.data,\n        status: LoadStatus.LOADING,\n      }))\n      if (!resource) {\n        return setResponse({ data: null, status: LoadStatus.SUCCEEDED })\n      }\n\n      if (rowsPerPageWithPagination) {\n        fetchApiUsingPagination<T>(\n          fetchApi,\n          resource,\n          searchParameters,\n          options,\n          rowsPerPageWithPagination\n        ).then((response) => {\n          setResponse(response)\n        })\n      } else {\n        fetchApi<T>(resource, searchParameters, options).then((json) => {\n          if (isError(json)) {\n            setResponse({ error: json.error, status: LoadStatus.FAILED })\n          } else {\n            setResponse({ data: json, status: LoadStatus.SUCCEEDED })\n          }\n        })\n      }\n    }\n  }, [\n    conditions,\n    fetchApi,\n    options,\n    resource,\n    searchParameters,\n    rowsPerPageWithPagination,\n  ])\n\n  const customDebounce = useMemo(\n    () => debounce((func: () => void) => func(), debounceDelay),\n    []\n  )\n\n  useLayoutEffect(() => {\n    if (withDebounce) {\n      customDebounce(load)\n    } else {\n      load()\n    }\n  }, [load, customDebounce, withDebounce])\n\n  return [response, updateResponse, load]\n}\n\nexport function useApiList<T extends object>(\n  resource?: IResource | string,\n  page: number | false = 0,\n  rowsPerPage: number = defaultPageSize,\n  searchParameters?: ISearchParameters,\n  searchValue?: string,\n  withDebounce = false,\n  withPagination = false\n): [\n  IFetch<IHydraResponse<T>> | null,\n  Dispatch<SetStateAction<T[]>>?,\n  ILoadResource?\n] {\n  const parameters = useMemo(\n    () =>\n      getListApiParameters(page, rowsPerPage, searchParameters, searchValue),\n    [page, rowsPerPage, searchParameters, searchValue]\n  )\n  const [response, updateResponse, load] = useFetchApi<IHydraResponse<T>>(\n    resource,\n    parameters,\n    undefined,\n    true,\n    true,\n    withDebounce,\n    withPagination ? rowsPerPage : undefined\n  )\n\n  const updateList = useCallback(\n    (data: SetStateAction<T[]>): void => {\n      updateResponse((prevState) => ({\n        ...prevState,\n        'hydra:member':\n          data instanceof Function ? data(prevState['hydra:member']) : data,\n      }))\n    },\n    [updateResponse]\n  )\n\n  return [response, updateList, load]\n}\n\nexport function useApiEditableList<T extends IHydraMember>(\n  resource: IResource,\n  page: number | false = 0,\n  rowsPerPage: number = defaultPageSize,\n  searchParameters?: ISearchParameters,\n  searchValue?: string,\n  url?: string,\n  withDebounce = false\n): [\n  IFetch<IHydraResponse<T>>,\n  IResourceEditableOperations<T>,\n  Dispatch<SetStateAction<T[]>>\n] {\n  const [response, updateList, load] = useApiList<T>(\n    url ? url : resource,\n    page,\n    rowsPerPage,\n    searchParameters,\n    searchValue,\n    withDebounce\n  )\n  const { create, remove, replace, update } = useResourceOperations<T>(resource)\n  const itemsToUpdate = useRef<Record<string, Partial<T>>>({})\n\n  const debouncedUpdate = useMemo(\n    () =>\n      debounce(async (isValid = true): Promise<void> => {\n        if (isValid) {\n          const promises = Object.entries(itemsToUpdate.current).map(\n            ([id, updatedItems]) => {\n              delete itemsToUpdate.current[id]\n              return update(id, updatedItems)\n            }\n          )\n\n          await Promise.all(promises)\n          load()\n        }\n      }, debounceDelay),\n    [load, update]\n  )\n\n  const editableUpdate = useCallback(\n    (id: string | number, updatedItem: Partial<T>, isValid = true) => {\n      if (id in itemsToUpdate.current) {\n        itemsToUpdate.current[id] = {\n          ...itemsToUpdate.current[id],\n          ...updatedItem,\n        }\n      } else {\n        itemsToUpdate.current[id] = updatedItem\n      }\n\n      updateList((items) =>\n        items.map((item) =>\n          item.id === id ? { ...item, ...updatedItem } : item\n        )\n      )\n      debouncedUpdate(isValid)\n    },\n    [debouncedUpdate, updateList]\n  )\n\n  const massEditableUpdate = useCallback(\n    async (\n      ids: (string | number)[],\n      updatedItem: Partial<T>\n    ): Promise<void> => {\n      updateList((items) =>\n        items.map((item) =>\n          ids.includes(item.id) ? { ...item, ...updatedItem } : item\n        )\n      )\n      const promises = ids.map((id) => update(id, updatedItem))\n      await Promise.all(promises)\n      load()\n    },\n    [load, update, updateList]\n  )\n\n  const massEditableReplace = useCallback(\n    async (\n      ids: (string | number)[],\n      updatedItem: Omit<T, '@id' | '@type'>\n    ): Promise<void> => {\n      updateList((items) =>\n        items.map((item) =>\n          ids.includes(item.id) ? { ...item, ...updatedItem } : item\n        )\n      )\n      const promises = ids.map((id) =>\n        replace({ id, ...updatedItem } as unknown as T)\n      )\n\n      await Promise.all(promises)\n      load()\n    },\n    [load, replace, updateList]\n  )\n\n  const editableCreate = useCallback(\n    async (item: Omit<T, 'id' | '@id' | '@type'>): Promise<void> => {\n      const createResponse = await create(item)\n      if (\n        !isError(createResponse) &&\n        response.data['hydra:member'].length < rowsPerPage\n      ) {\n        // reload if item has been added and we are on the last page\n        load()\n      }\n    },\n    [create, load, response, rowsPerPage]\n  )\n\n  const debouncedReplace = useMemo(\n    () =>\n      debounce(async (isValid = true): Promise<void> => {\n        if (isValid) {\n          const promises = Object.entries(itemsToUpdate.current).map(\n            ([id, replacedItem]) => {\n              delete itemsToUpdate.current[id]\n              return replace(replacedItem)\n            }\n          )\n\n          await Promise.all(promises)\n          load()\n        }\n      }, debounceDelay),\n    [load, replace]\n  )\n\n  const editableReplace = useCallback(\n    (replacedItem: Partial<T>, isValid = true) => {\n      const id = replacedItem.id as string\n      if (id in itemsToUpdate.current) {\n        itemsToUpdate.current[id] = {\n          ...itemsToUpdate.current[id],\n          ...replacedItem,\n        }\n      } else {\n        itemsToUpdate.current[id] = replacedItem\n      }\n\n      updateList((items) =>\n        items.map((item) =>\n          item.id === replacedItem.id ? { ...item, ...replacedItem } : item\n        )\n      )\n      debouncedReplace(isValid)\n    },\n    [debouncedReplace, updateList]\n  )\n\n  const editableRemove = useCallback(\n    async (id: string | number): Promise<void> => {\n      updateList((items) => items.filter((item) => item.id !== id))\n      const removeResponse = await remove(id)\n      if (\n        isError(removeResponse) ||\n        response.data['hydra:member'].length === rowsPerPage\n      ) {\n        // reload if error\n        // and reload if we are not on the last page to fill the space left by the deleted item\n        load()\n      }\n    },\n    [load, remove, response, rowsPerPage, updateList]\n  )\n\n  const operations = useMemo(() => {\n    const operations: IResourceEditableOperations<T> = {}\n    if (update) {\n      operations.update = editableUpdate\n      operations.massUpdate = massEditableUpdate\n    }\n    if (create) {\n      operations.create = editableCreate\n    }\n    if (replace) {\n      operations.replace = editableReplace\n      operations.massReplace = massEditableReplace\n    }\n    if (remove) {\n      operations.remove = editableRemove\n    }\n    return operations\n  }, [\n    create,\n    editableCreate,\n    editableRemove,\n    editableReplace,\n    editableUpdate,\n    massEditableUpdate,\n    massEditableReplace,\n    remove,\n    replace,\n    update,\n  ])\n\n  return [response, operations, updateList]\n}\n","import { useCallback } from 'react'\nimport { closeSnackbar, enqueueSnackbar } from 'notistack'\nimport {\n  MessageSeverity,\n  NetworkError,\n  log,\n} from '@elastic-suite/gally-admin-shared'\n\nexport function useLog(\n  severity: MessageSeverity = 'error'\n): (error: NetworkError) => void {\n  return useCallback(\n    (error: NetworkError) =>\n      log(error, (message: string) =>\n        enqueueSnackbar(message, {\n          onShut: closeSnackbar,\n          variant: severity,\n          preventDuplicate: true,\n        })\n      ),\n    [severity]\n  )\n}\n","import { useCallback, useMemo } from 'react'\nimport { useRouter } from 'next/router'\n\nimport {\n  IError,\n  IHydraMember,\n  IMainContext,\n  IResource,\n  IResourceOperations,\n  Method,\n  contentTypeHeader,\n  getApiUrl,\n  getResource,\n  updatePropertiesAccordingToPath,\n} from '@elastic-suite/gally-admin-shared'\n\nimport { selectApi, useAppSelector } from '../store'\n\nimport { useApiFetch } from './useApi'\n\nexport function useResource(\n  resourceName: string,\n  mainContext: IMainContext = IMainContext.GRID\n): IResource {\n  const api = useAppSelector(selectApi)\n  const { pathname } = useRouter()\n  return useMemo(() => {\n    const resource = getResource(api, resourceName)\n    return {\n      ...resource,\n      supportedProperty:\n        resource?.supportedProperty instanceof Array\n          ? resource?.supportedProperty.map((field) =>\n              updatePropertiesAccordingToPath(field, pathname, mainContext)\n            )\n          : resource?.supportedProperty\n          ? [\n              updatePropertiesAccordingToPath(\n                resource.supportedProperty,\n                pathname,\n                mainContext\n              ),\n            ]\n          : resource?.supportedProperty,\n    }\n  }, [api, pathname, mainContext, resourceName])\n}\n\nexport function useResourceOperations<T extends IHydraMember>(\n  resource: IResource\n): IResourceOperations<T> {\n  const { supportedOperation } = resource\n  const fetchApi = useApiFetch()\n  const apiUrl = getApiUrl(resource.url)\n\n  const update = useCallback(\n    (id: string | number, item: Partial<T>): Promise<T | IError> =>\n      fetchApi<T>(`${apiUrl}/${id}`, undefined, {\n        body: JSON.stringify(item),\n        method: Method.PATCH,\n        headers: { [contentTypeHeader]: 'application/merge-patch+json' },\n      }),\n    [apiUrl, fetchApi]\n  )\n\n  const create = useCallback(\n    (item: Omit<T, 'id' | '@id' | '@type'>): Promise<T | IError> =>\n      fetchApi(apiUrl, undefined, {\n        body: JSON.stringify(item),\n        method: Method.POST,\n      }),\n    [apiUrl, fetchApi]\n  )\n\n  const replace = useCallback(\n    (item: Partial<T>): Promise<T | IError> =>\n      fetchApi(`${apiUrl}/${item.id}`, undefined, {\n        body: JSON.stringify(item),\n        method: Method.PUT,\n      }),\n    [apiUrl, fetchApi]\n  )\n\n  const remove = useCallback(\n    (id: string | number): Promise<T | IError> =>\n      fetchApi(`${apiUrl}/${id}`, undefined, {\n        method: Method.DELETE,\n      }),\n    [apiUrl, fetchApi]\n  )\n\n  return useMemo(\n    () =>\n      supportedOperation.reduce<IResourceOperations<T>>((acc, operation) => {\n        if (typeof operation['@type'] === 'string') {\n          acc.update = update\n        } else if (\n          operation['@type'] instanceof Array &&\n          operation['@type'].length === 2 &&\n          typeof operation['@type'][1] === 'string'\n        ) {\n          if (\n            operation['@type'][1].indexOf('//schema.org/CreateAction') !== -1\n          ) {\n            acc.create = create\n          } else if (\n            operation['@type'][1].indexOf('//schema.org/ReplaceAction') !== -1\n          ) {\n            acc.replace = replace\n          } else if (\n            operation['@type'][1].indexOf('//schema.org/DeleteAction') !== -1\n          ) {\n            acc.remove = remove\n          }\n        }\n        return acc\n      }, {}),\n    [create, remove, replace, supportedOperation, update]\n  )\n}\n","import { PayloadAction, createSlice } from '@reduxjs/toolkit'\nimport {\n  Bundle,\n  IApi,\n  IConfigurations,\n} from '@elastic-suite/gally-admin-shared'\n\nimport { RootState } from './store'\n\nexport interface IDataState {\n  api: IApi\n  bundles: Bundle[]\n  configurations: IConfigurations\n}\n\nconst initialState: IDataState = {\n  api: null,\n  bundles: null,\n  configurations: null,\n}\n\nconst dataSlice = createSlice({\n  name: 'data',\n  initialState,\n  reducers: {\n    setData(state, action: PayloadAction<IDataState>) {\n      state.api = action.payload.api\n      state.bundles = action.payload.bundles\n      state.configurations = action.payload.configurations\n    },\n  },\n})\n\nexport const { setData } = dataSlice.actions\nexport const dataReducer = dataSlice.reducer\n\nexport const selectApi = (state: RootState): IApi => state.data.api\nexport const selectBundles = (state: RootState): Bundle[] => state.data.bundles\nexport const selectConfiguration = (state: RootState): IConfigurations =>\n  state.data.configurations\n","import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux'\nimport type { AppDispatch, RootState } from './store'\n\nexport const useAppDispatch = (): AppDispatch => useDispatch<AppDispatch>()\nexport const useAppSelector: TypedUseSelectorHook<RootState> = useSelector\n","import { PayloadAction, createSlice } from '@reduxjs/toolkit'\n\nimport { RootState } from './store'\n\nexport interface II18nState {\n  language: string\n}\n\nconst initialState: II18nState = {\n  language: 'en',\n}\n\nconst i18nSlice = createSlice({\n  name: 'i18n',\n  initialState,\n  reducers: {\n    setLanguage(state, action: PayloadAction<string>) {\n      state.language = action.payload\n    },\n  },\n})\n\nexport const { setLanguage } = i18nSlice.actions\nexport const i18nReducer = i18nSlice.reducer\n\nexport const selectLanguage = (state: RootState): string => state.i18n.language\n","import { PayloadAction, createSlice } from '@reduxjs/toolkit'\n\nimport { IFetch, IMenu, LoadStatus } from '@elastic-suite/gally-admin-shared'\n\nimport { RootState } from './store'\n\nexport interface IMenuState {\n  menu: IFetch<IMenu>\n  menuItemActive: string\n  sidebarState: boolean\n  sidebarStateTimeout: boolean\n  childrenState: Record<string, boolean>\n}\n\nconst initialState: IMenuState = {\n  menu: {\n    status: LoadStatus.IDLE,\n    data: {\n      hierarchy: [],\n    },\n  },\n  menuItemActive: '',\n  sidebarState: true,\n  sidebarStateTimeout: false,\n  childrenState: {},\n}\n\nconst menuSlice = createSlice({\n  name: 'menu',\n  initialState,\n  reducers: {\n    setChildState(\n      state,\n      action: PayloadAction<{ code: string; value: boolean }>\n    ) {\n      state.childrenState[action.payload.code] = action.payload.value\n    },\n    setMenu(state, action: PayloadAction<IFetch<IMenu>>) {\n      state.menu = {\n        ...state.menu,\n        ...action.payload,\n      }\n    },\n    setMenuItemActive(state, action: PayloadAction<string>) {\n      state.menuItemActive = action.payload\n    },\n    setSidebarState(state, action: PayloadAction<boolean>) {\n      state.sidebarState = action.payload\n    },\n    setSidebarStateTimeout(state, action: PayloadAction<boolean>) {\n      state.sidebarStateTimeout = action.payload\n    },\n  },\n})\n\nexport const {\n  setChildState,\n  setMenu,\n  setMenuItemActive,\n  setSidebarState,\n  setSidebarStateTimeout,\n} = menuSlice.actions\nexport const menuReducer = menuSlice.reducer\n\nexport const selectChildrenState = (\n  state: RootState\n): Record<string, boolean> => state.menu.childrenState\nexport const selectMenu = (state: RootState): IMenu => state.menu.menu.data\nexport const selectMenuItemActive = (state: RootState): string =>\n  state.menu.menuItemActive\nexport const selectSidebarState = (state: RootState): boolean =>\n  state.menu.sidebarState\nexport const selectSidebarStateTimeout = (state: RootState): boolean =>\n  state.menu.sidebarStateTimeout\n","import {\n  PreloadedState,\n  combineReducers,\n  configureStore,\n} from '@reduxjs/toolkit'\nimport thunk from 'redux-thunk'\nimport { dataReducer } from './data'\nimport { i18nReducer } from './i18n'\nimport { menuReducer } from './menu'\nimport { userReducer } from './user'\n\nconst rootReducer = combineReducers({\n  data: dataReducer,\n  i18n: i18nReducer,\n  menu: menuReducer,\n  user: userReducer,\n})\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/explicit-function-return-type\nexport const setupStore = (preloadedState?: PreloadedState<RootState>) => {\n  return configureStore({\n    middleware: (getDefaultMiddleware) =>\n      process.env.NODE_ENV === 'development'\n        ? getDefaultMiddleware({\n            serializableCheck: {\n              ignoredActionPaths: ['payload.error'],\n              ignoredPaths: ['menu.menu.error'],\n            },\n          })\n        : [thunk],\n    preloadedState,\n    reducer: rootReducer,\n  })\n}\n\nexport type RootState = ReturnType<typeof rootReducer>\nexport type AppStore = ReturnType<typeof setupStore>\nexport type AppDispatch = AppStore['dispatch']\n\nexport interface IThunkApi {\n  dispatch: AppDispatch\n  state: RootState\n}\n","import { PayloadAction, createSlice } from '@reduxjs/toolkit'\n\nimport { RootState } from './store'\n\nexport interface IUserState {\n  requestedPath: string | null\n}\n\nconst initialState: IUserState = {\n  requestedPath: null,\n}\n\nconst userSlice = createSlice({\n  name: 'user',\n  initialState,\n  reducers: {\n    setRequestedPath(state, action: PayloadAction<string>) {\n      state.requestedPath = action.payload\n    },\n  },\n})\n\nexport const { setRequestedPath } = userSlice.actions\nexport const userReducer = userSlice.reducer\n\nexport const selectRequestedPath = (state: RootState): string =>\n  state.user.requestedPath\n","import { useMemo } from 'react'\nimport { useTranslation } from 'next-i18next'\nimport {\n  IFieldConfig,\n  IHydraMember,\n  IHydraResponse,\n  IResource,\n  getFilter,\n  getMappings,\n} from '@elastic-suite/gally-admin-shared'\n\nexport function useApiFilters<A extends IHydraMember>(\n  apiData: IHydraResponse<A>,\n  resource: IResource\n): IFieldConfig[] {\n  const { t } = useTranslation('api')\n  const mappings = useMemo(\n    () => getMappings(apiData, resource),\n    [apiData, resource]\n  )\n\n  return useMemo(\n    () => mappings.map((mapping) => getFilter(mapping, t)),\n    [mappings, t]\n  )\n}\n","import { useTranslation } from 'next-i18next'\nimport { useMemo } from 'react'\nimport {\n  IField,\n  IFieldConfig,\n  IFieldConfigFormWithFieldset,\n  IOptions,\n  IResource,\n  getFieldHeader,\n} from '@elastic-suite/gally-admin-shared'\nimport { useApiDoubleDatePicker } from './useApiForm'\n\nexport function useApiHeaders(resource: IResource): IFieldConfig[] {\n  const { t } = useTranslation('api')\n  const transformedResource = useApiDoubleDatePicker(resource)\n  return useMemo(\n    () =>\n      transformedResource.supportedProperty\n        .filter((field) => field.gally?.visible)\n        .sort((a, b) => a.gally?.position - b.gally?.position)\n        .map((field) => getFieldHeader(field, t)),\n    [t, transformedResource]\n  )\n}\n\n// group all fields that do not have a fieldset in this fieldset\nconst FIELDSET_OTHER_KEY = '_other'\n\nexport function useApiHeadersForm(\n  resource: IResource\n): IFieldConfigFormWithFieldset[] {\n  const apiHeaders = useApiHeaders(resource)\n\n  return useMemo(() => {\n    const apiHeaderMap = apiHeaders.reduce<\n      Record<string, IFieldConfigFormWithFieldset>\n    >(\n      (acc, { gridHeaderInfoTooltip, ...header }) => {\n        const fieldsetCode = header.fieldset\n        const fieldset = resource.gally?.fieldset?.[fieldsetCode]\n        if (fieldsetCode && fieldset) {\n          if (fieldsetCode in acc) {\n            acc[fieldsetCode].children.push(header)\n          } else {\n            acc[fieldsetCode] = {\n              ...fieldset,\n              code: fieldsetCode,\n              children: [header],\n            }\n          }\n        } else {\n          acc[FIELDSET_OTHER_KEY].children.push(header)\n        }\n        return acc\n      },\n      {\n        [FIELDSET_OTHER_KEY]: {\n          code: FIELDSET_OTHER_KEY,\n          children: [],\n          position: Infinity,\n        },\n      }\n    )\n    return Object.values(apiHeaderMap).sort((a, b) => a?.position - b?.position)\n  }, [apiHeaders, resource])\n}\n\nexport function useApiEditableFieldOptions(\n  resource: IResource\n): IOptions<IField> {\n  return useMemo(() => {\n    return resource.supportedProperty\n      .filter(\n        (field) =>\n          field.gally?.visible && field.gally?.editable && field.writeable\n      )\n      .map((field) => ({\n        id: field.title,\n        label: field.property.label,\n        value: field,\n      }))\n  }, [resource])\n}\n","import { IResource } from '@elastic-suite/gally-admin-shared'\nimport { useMemo } from 'react'\n\nexport function useApiDoubleDatePicker(resource: IResource): IResource {\n  return useMemo(() => {\n    const newSupportedProperty = resource.supportedProperty.map((element) => {\n      if (element?.gally?.input === 'rangeDate') {\n        return {\n          ...element,\n          title: 'doubleDatePicker',\n        }\n      }\n      return element\n    })\n\n    const uniqueArray = newSupportedProperty.reduce((accumulator, current) => {\n      const id = current?.gally?.rangeDateId\n      if (\n        !accumulator.some(\n          (item) => item?.gally?.rangeDateId === id && item?.gally?.rangeDateId\n        )\n      ) {\n        accumulator.push(current)\n      }\n      return accumulator\n    }, [])\n\n    return { ...resource, supportedProperty: uniqueArray }\n  }, [resource])\n}\n","import {\n  IHydraCatalog,\n  getLocalizedCatalog,\n} from '@elastic-suite/gally-admin-shared'\nimport { useMemo, useState } from 'react'\n\nimport { ICatalogContext } from '../contexts'\n\nexport function useCatalogs(catalogs: IHydraCatalog[]): ICatalogContext {\n  const [catalogId, setCatalogId] = useState<number>(-1)\n  const [localizedCatalogId, setLocalizedCatalogId] = useState<number>(-1)\n\n  const catalog = useMemo(\n    () => catalogs.find((catalog) => catalog.id === catalogId),\n    [catalogId, catalogs]\n  )\n  const localizedCatalog = useMemo(\n    () =>\n      catalog?.localizedCatalogs.find(\n        (localizedCatalog) => localizedCatalog.id === localizedCatalogId\n      ),\n    [catalog, localizedCatalogId]\n  )\n  const localizedCatalogWithDefault = useMemo(\n    () =>\n      catalogs\n        ? getLocalizedCatalog(catalogs, catalog, localizedCatalog)\n        : null,\n    [catalog, catalogs, localizedCatalog]\n  )\n\n  return useMemo(\n    () => ({\n      catalog,\n      catalogId,\n      catalogs,\n      localizedCatalog,\n      localizedCatalogId,\n      localizedCatalogWithDefault,\n      localizedCatalogIdWithDefault: localizedCatalogWithDefault\n        ? String(localizedCatalogWithDefault?.id)\n        : '',\n      setCatalogId,\n      setLocalizedCatalogId,\n    }),\n    [\n      catalog,\n      catalogId,\n      catalogs,\n      localizedCatalog,\n      localizedCatalogId,\n      localizedCatalogWithDefault,\n      setCatalogId,\n      setLocalizedCatalogId,\n    ]\n  )\n}\n","import { useEffect } from 'react'\nimport {\n  IConfigurations,\n  IExtraBundle,\n  IHydraResponse,\n  LoadStatus,\n  useSchemaLoader,\n} from '@elastic-suite/gally-admin-shared'\n\nimport { setData, useAppDispatch } from '../store'\n\nimport { useFetchApi } from './useApi'\nimport { useLog } from './useLog'\n\nexport function useDataLoader(): void {\n  const dispatch = useAppDispatch()\n  const log = useLog()\n\n  const api = useSchemaLoader()\n  const [bundles] = useFetchApi<IHydraResponse<IExtraBundle>>(\n    'extra_bundles',\n    undefined,\n    undefined,\n    false\n  )\n  const [configurations] = useFetchApi<IHydraResponse<IConfigurations>>(\n    'configurations',\n    undefined,\n    undefined,\n    false\n  )\n\n  useEffect(() => {\n    if (api.status === LoadStatus.FAILED) {\n      log(api.error)\n    }\n    if (bundles.status === LoadStatus.FAILED) {\n      log(bundles.error)\n    }\n    if (configurations.status === LoadStatus.FAILED) {\n      log(configurations.error)\n    }\n\n    if (api.data && bundles.data && configurations.data) {\n      dispatch(\n        setData({\n          api: api.data,\n          bundles: bundles.data['hydra:member'].map((bundle) => bundle.name),\n          configurations: Object.fromEntries(\n            configurations.data['hydra:member'].map((configuration) => [\n              configuration.id,\n              configuration.value,\n            ])\n          ),\n        })\n      )\n    }\n  }, [api, bundles, configurations, dispatch, log])\n}\n","import { Dispatch, SetStateAction, useEffect, useMemo, useState } from 'react'\nimport { useRouter } from 'next/router'\nimport {\n  IResource,\n  ISearchParameters,\n  getApiFilters,\n  getAppUrl,\n  getFilterParameters,\n  getPageParameter,\n  getParametersFromUrl,\n  getRouterUrl,\n  getSearchParameter,\n} from '@elastic-suite/gally-admin-shared'\n\nexport function useFiltersRedirect(\n  page: number | false = 0,\n  activeFilters?: ISearchParameters,\n  searchValue?: string,\n  active = true\n): void {\n  const router = useRouter()\n\n  useEffect(() => {\n    if (active) {\n      const url = getAppUrl(router.asPath, page, activeFilters, searchValue)\n      if (router.asPath !== url.pathname + url.search) {\n        router.push(url.href, undefined, { shallow: true })\n      }\n    }\n  }, [active, activeFilters, page, router, searchValue])\n}\n\nexport function usePage(): [number, Dispatch<SetStateAction<number>>] {\n  const router = useRouter()\n  const [page, setPage] = useState<number>(() => {\n    const url = getRouterUrl(router.asPath)\n    const parameters = getParametersFromUrl(url)\n    return getPageParameter(parameters)\n  })\n  return [page, setPage]\n}\n\nexport function useFilters(\n  resource: IResource\n): [ISearchParameters, Dispatch<SetStateAction<ISearchParameters>>] {\n  const router = useRouter()\n  const [activeFilters, setActiveFilters] = useState<ISearchParameters>(() => {\n    const url = getRouterUrl(router.asPath)\n    const parameters = getParametersFromUrl(url)\n    const params = getFilterParameters(resource, parameters)\n    return params\n  })\n  return [activeFilters, setActiveFilters]\n}\n\nexport function useSearch(): [string, Dispatch<SetStateAction<string>>] {\n  const router = useRouter()\n  const [searchValue, setSearchValue] = useState<string>(() => {\n    const url = getRouterUrl(router.asPath)\n    const parameters = getParametersFromUrl(url)\n    return getSearchParameter(parameters)\n  })\n  return [searchValue, setSearchValue]\n}\n\nexport function useFilterParameters(\n  ...filters: ISearchParameters[]\n): ISearchParameters {\n  return useMemo(\n    () => getApiFilters(Object.assign({}, ...filters)),\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    filters\n  )\n}\n","import {\n  Dispatch,\n  ForwardedRef,\n  SetStateAction,\n  SyntheticEvent,\n  useCallback,\n  useEffect,\n  useMemo,\n  useRef,\n  useState,\n} from 'react'\nimport { useTranslation } from 'next-i18next'\nimport { getFormValidityError } from '@elastic-suite/gally-admin-shared'\n\nexport type IOnChange = (value: unknown, event?: SyntheticEvent) => void\nexport type IValidator = (\n  value: unknown,\n  event?: SyntheticEvent\n) => string | null\n\nexport interface IFieldErrorProps {\n  showError?: boolean\n  additionalValidator?: IValidator\n  replacementErrorsMessages?: Record<string, string>\n}\nexport interface IFormErrorProps {\n  error: boolean\n  helperIcon?: string\n  helperText?: string\n  onChange: IOnChange\n  ref?: ForwardedRef<HTMLInputElement | HTMLTextAreaElement>\n}\n\nexport function useFormError(\n  onChange: IOnChange,\n  value: unknown,\n  showError = false,\n  validator?: IValidator,\n  disabled = false,\n  replacementErrorsMessages?: Record<string, string>\n): [IFormErrorProps, Dispatch<SetStateAction<string>>] {\n  const [error, setError] = useState('')\n  const ref = useRef<HTMLInputElement | HTMLTextAreaElement>(null)\n  const { t } = useTranslation('common')\n  const [verify, setVerify] = useState(false)\n\n  const validate = useCallback(\n    (value: unknown, event?: SyntheticEvent, targetRef?: boolean): boolean => {\n      let error = null\n      if (validator) {\n        error = validator(value, event)\n        ref.current?.setCustomValidity(error)\n      }\n      if (\n        (error === null || error === '') &&\n        (event?.target || (targetRef && ref.current))\n      ) {\n        const validity =\n          targetRef && ref.current\n            ? ref.current.validity\n            : (event?.target as HTMLInputElement)?.validity\n        if (!validity?.valid) {\n          error = getFormValidityError(validity)\n        }\n      }\n      if (error) {\n        setError(error)\n      } else {\n        setError('')\n      }\n      return error === null || error === ''\n    },\n    [ref, validator]\n  )\n\n  useEffect(() => {\n    if (!verify) {\n      validate(value, undefined, true)\n    }\n  }, [validate, value, verify])\n\n  const handleChange = useCallback(\n    (value: unknown, event?: SyntheticEvent): void => {\n      if (!verify) setVerify(true)\n      validate(value, event)\n      if (onChange) {\n        onChange(value, event)\n      }\n    },\n    [onChange, validate, verify]\n  )\n\n  return useMemo(() => {\n    const props: IFormErrorProps = {\n      error: disabled ? false : showError ? Boolean(error) : false,\n      onChange: handleChange,\n      ref,\n    }\n    if (disabled) {\n      props.helperIcon = ''\n      props.helperText = ''\n    } else if (error && showError) {\n      props.helperIcon = 'close'\n      props.helperText = t(\n        `formError.${replacementErrorsMessages?.[error] || error}`\n      )\n    }\n    return [\n      props,\n      (error: string): void => {\n        setError(error)\n        ref.current?.setCustomValidity(error)\n      },\n    ]\n  }, [error, handleChange, t, disabled, showError, replacementErrorsMessages])\n}\n","import {\n  Dispatch,\n  SetStateAction,\n  useCallback,\n  useEffect,\n  useState,\n} from 'react'\nimport Router from 'next/router'\nimport { useTranslation } from 'next-i18next'\nimport {\n  AuthError,\n  IFetch,\n  IGraphqlApi,\n  ILoadResource,\n  LoadStatus,\n  fetchGraphql,\n  isError,\n  storageRemove,\n  tokenStorageKey,\n} from '@elastic-suite/gally-admin-shared'\n\nimport { useLog } from './useLog'\n\nexport function useApiGraphql(secure = true): IGraphqlApi {\n  const { i18n } = useTranslation('common')\n  const log = useLog()\n  const { t } = useTranslation('alert')\n\n  return useCallback(\n    async <T extends object>(\n      query: string,\n      variables?: Record<string, unknown>,\n      options?: RequestInit\n    ) => {\n      try {\n        const json = await fetchGraphql<T>(\n          i18n.language,\n          query,\n          variables,\n          options,\n          secure\n        )\n        return json\n      } catch (error) {\n        if (secure && error instanceof AuthError) {\n          storageRemove(tokenStorageKey)\n          Router.push('/login')\n          log(t('Expired JWT Token'))\n        } else {\n          log(error)\n        }\n        return { error }\n      }\n    },\n    [i18n.language, log, secure, t]\n  )\n}\n\nexport function useGraphqlApi<T extends object>(\n  query: string,\n  variables?: Record<string, unknown>,\n  options?: RequestInit,\n  conditions = true\n): [IFetch<T>, Dispatch<SetStateAction<T>>, ILoadResource] {\n  const graphqlApi = useApiGraphql()\n  const [response, setResponse] = useState<IFetch<T>>({\n    status: LoadStatus.IDLE,\n  })\n\n  const updateResponse = useCallback((data: SetStateAction<T>): void => {\n    setResponse((prevState) => ({\n      ...prevState,\n      data: data instanceof Function ? data(prevState.data) : data,\n    }))\n  }, [])\n\n  const load = useCallback(() => {\n    if (conditions) {\n      setResponse((prevState) => ({\n        data: prevState.data,\n        status: LoadStatus.LOADING,\n      }))\n      graphqlApi<T>(query, variables, options).then((json) => {\n        if (isError(json)) {\n          setResponse({ error: json.error, status: LoadStatus.FAILED })\n        } else {\n          setResponse({ data: json, status: LoadStatus.SUCCEEDED })\n        }\n      })\n    }\n  }, [conditions, graphqlApi, options, query, variables])\n\n  useEffect(() => {\n    load()\n  }, [load])\n\n  return [response, updateResponse, load]\n}\n","import { useLayoutEffect, useState } from 'react'\nimport { IHorizontalOverflow } from '@elastic-suite/gally-admin-shared'\n\nexport const useIsHorizontalOverflow = (\n  current: HTMLDivElement\n): IHorizontalOverflow => {\n  const [isOverflow, setIsOverflow] = useState(false)\n  const [shadow, setShadow] = useState(false)\n\n  useLayoutEffect(() => {\n    function trigger(): () => void {\n      if (current) {\n        const hasOverflow = current.scrollWidth > current.clientWidth\n        setIsOverflow(hasOverflow)\n        if (hasOverflow) {\n          const handleScroll = (event: UIEvent): void => {\n            setShadow((event.target as HTMLTableElement).scrollLeft > 0)\n          }\n          current.addEventListener('scroll', handleScroll)\n          return () => current.removeEventListener('scroll', handleScroll)\n        }\n      }\n    }\n\n    trigger()\n  }, [current])\n\n  return { isOverflow, shadow }\n}\n","import { useTranslation } from 'next-i18next'\nimport { useCallback, useMemo } from 'react'\nimport {\n  IApiSchemaOptions,\n  IFetchApi,\n  IField,\n  IHydraMember,\n  IHydraResponse,\n  IOptions,\n  IOptionsContext,\n  getOptionsFromApiSchema,\n  getOptionsFromResource,\n  getReferencedResource,\n  hasFieldOptions,\n  isDropdownStaticOptions,\n  isError,\n  isReferenceField,\n} from '@elastic-suite/gally-admin-shared'\n\nimport { selectApi, useAppSelector } from '../store'\n\nimport { useSingletonLoader } from './useSingletonLoader'\n\nexport function useOptions(): IOptionsContext {\n  const { fetch, map, statuses } =\n    useSingletonLoader<IOptions<string | number>>()\n  const api = useAppSelector(selectApi)\n  const { t } = useTranslation('options')\n\n  const load = useCallback(\n    (field: IField) => {\n      const id = field.property['@id']\n      return fetch(id, async (fetchApi: IFetchApi) => {\n        if (hasFieldOptions(field)) {\n          // get options from the schema\n          if (isDropdownStaticOptions(field.gally?.options)) {\n            // static options\n            const options = field.gally.options.values.map((option) => ({\n              ...option,\n              label: option?.label,\n            }))\n            return options\n          }\n          // options from api\n          const response = await fetchApi(field.gally.options.api_rest)\n          if (!isError(response)) {\n            return getOptionsFromApiSchema(\n              response as IHydraResponse<IApiSchemaOptions>\n            )\n          }\n          throw new Error('error')\n        } else if (isReferenceField(field)) {\n          // get options by loading all items of the referenced field\n          const response = await fetchApi(\n            getReferencedResource(api, field)?.url\n          )\n          if (!isError(response)) {\n            return getOptionsFromResource(\n              response as IHydraResponse<IHydraMember>\n            )\n          }\n          throw new Error('error')\n        }\n      })\n    },\n    [api, fetch]\n  )\n\n  return useMemo(() => {\n    const mapTranslated = new Map(map)\n    mapTranslated.forEach((options) =>\n      options.forEach((option) => {\n        option.label = t(option.label)\n      })\n    )\n\n    return { fieldOptions: mapTranslated, load, statuses }\n  }, [load, map, statuses, t])\n}\n","import {\n  Dispatch,\n  MutableRefObject,\n  SetStateAction,\n  useCallback,\n  useRef,\n  useState,\n} from 'react'\nimport {\n  IFetchApi,\n  ILoadStatuses,\n  LoadStatus,\n} from '@elastic-suite/gally-admin-shared'\n\nimport { useApiFetch } from './useApi'\nimport { useLog } from './useLog'\n\nexport type ILoader<T> = (fetchApi: IFetchApi) => Promise<T>\n\ntype IFetch<T> = (id: string, loader: ILoader<T>) => void\n\ninterface IUseLoader<T> {\n  fetch: IFetch<T>\n  map: Map<string, T>\n  setMap: Dispatch<SetStateAction<Map<string, T>>>\n  statuses: MutableRefObject<ILoadStatuses>\n}\n\nexport function useSingletonLoader<T>(\n  defaultState: Map<string, T> | (() => Map<string, T>) = new Map()\n): IUseLoader<T> {\n  const fetchApi = useApiFetch()\n  const [map, setMap] = useState<Map<string, T>>(defaultState)\n  const fieldOptionsStatuses = useRef<ILoadStatuses>(new Map())\n  const log = useLog()\n  const updateFieldOptions = useCallback((id: string, options: T) => {\n    fieldOptionsStatuses.current.set(id, LoadStatus.SUCCEEDED)\n    setMap((prevState) => {\n      const clone = new Map(prevState)\n      clone.set(id, options)\n      return clone\n    })\n  }, [])\n\n  const fetch = useCallback(\n    async (id: string, loader: ILoader<T>) => {\n      const status = fieldOptionsStatuses.current.get(id)\n      if (!status) {\n        fieldOptionsStatuses.current.set(id, LoadStatus.LOADING)\n        try {\n          const data = await loader(fetchApi)\n          updateFieldOptions(id, data)\n        } catch (err) {\n          log(err)\n          fieldOptionsStatuses.current.set(id, LoadStatus.FAILED)\n        }\n      }\n    },\n    [fetchApi, updateFieldOptions, log]\n  )\n\n  return { fetch, map, setMap, statuses: fieldOptionsStatuses }\n}\n","import { Dispatch, SetStateAction, useEffect, useMemo, useState } from 'react'\nimport debounce from 'lodash.debounce'\nimport {\n  IParsedCategoryConfiguration,\n  IProductFieldFilterInput,\n  IRuleEngineGraphqlFilters,\n  IRuleEngineOperators,\n  isError,\n  isRuleValid,\n  isVirtualCategoryEnabled,\n  serializeRule,\n} from '@elastic-suite/gally-admin-shared'\n\nimport { selectBundles, useAppSelector } from '../store'\n\nimport { useApiFetch } from './useApi'\n\nconst debounceDelay = 200\n\nexport function useRuleEngineGraphqlFilters(\n  catConf: IParsedCategoryConfiguration,\n  ruleOperators: IRuleEngineOperators\n): [\n  IProductFieldFilterInput,\n  Dispatch<SetStateAction<IProductFieldFilterInput>>\n] {\n  const bundles = useAppSelector(selectBundles)\n  const fetchApi = useApiFetch()\n  const [ruleEngineGraphqlFilters, setRuleEngineGraphqlFilters] =\n    useState<IProductFieldFilterInput>(null)\n  const isEnabled = isVirtualCategoryEnabled(bundles)\n  const isValid = !catConf?.isVirtual || isRuleValid(catConf?.virtualRule)\n\n  const debouncedFetch = useMemo(\n    () =>\n      debounce(async (rule: string): Promise<void> => {\n        const json = await fetchApi<IRuleEngineGraphqlFilters>(\n          'rule_engine_graphql_filters',\n          undefined,\n          { body: JSON.stringify({ rule }), method: 'POST' }\n        )\n        if (!isError(json)) {\n          setRuleEngineGraphqlFilters(json.graphQlFilters)\n        }\n      }, debounceDelay),\n    [fetchApi]\n  )\n\n  useEffect(() => {\n    if (isEnabled && catConf?.isVirtual && catConf?.virtualRule && isValid) {\n      debouncedFetch(\n        JSON.stringify(serializeRule(catConf.virtualRule, ruleOperators))\n      )\n    }\n  }, [\n    bundles,\n    catConf?.isVirtual,\n    catConf?.virtualRule,\n    debouncedFetch,\n    isEnabled,\n    isValid,\n    ruleOperators,\n  ])\n\n  const productGraphqlFilters: IProductFieldFilterInput = useMemo(() => {\n    if (isEnabled && catConf?.isVirtual && ruleEngineGraphqlFilters) {\n      return ruleEngineGraphqlFilters\n    }\n    return null\n  }, [catConf, isEnabled, ruleEngineGraphqlFilters])\n\n  return [productGraphqlFilters, setRuleEngineGraphqlFilters]\n}\n","import { useEffect, useState } from 'react'\nimport {\n  IRuleEngineOperators,\n  isError,\n  isVirtualCategoryEnabled,\n} from '@elastic-suite/gally-admin-shared'\n\nimport { selectBundles, useAppSelector } from '../store'\n\nimport { useApiFetch } from './useApi'\n\nexport function useRuleOperators(\n  ruleOperatorsDefault?: IRuleEngineOperators\n): IRuleEngineOperators {\n  const [ruleOperators, setRuleOperators] = useState<IRuleEngineOperators>()\n  const bundles = useAppSelector(selectBundles)\n  const fetchApi = useApiFetch()\n\n  useEffect(() => {\n    if (isVirtualCategoryEnabled(bundles) && !ruleOperatorsDefault) {\n      fetchApi<IRuleEngineOperators>('rule_engine_operators').then((json) => {\n        if (!isError(json)) {\n          setRuleOperators(json)\n        }\n      })\n    }\n  }, [bundles, fetchApi, ruleOperatorsDefault])\n\n  return ruleOperatorsDefault ?? ruleOperators\n}\n","import { useCallback } from 'react'\nimport Router, { useRouter } from 'next/router'\n\nimport { IRouterTab, getRouterPath } from '@elastic-suite/gally-admin-shared'\n\nexport function useTabs(\n  tabs: IRouterTab[]\n): [IRouterTab, (id: number) => void] {\n  const { asPath } = useRouter()\n  const pathname = getRouterPath(asPath)\n  const activeTab =\n    tabs.find((tab) => tab.url === pathname) ?? tabs.find((tab) => tab.default)\n\n  const handleTabChange = useCallback(\n    (id: number): void => {\n      const tab = tabs.find((tab) => tab.id === id)\n      if (tab) {\n        Router.push(tab.url, undefined, { shallow: true })\n      }\n    },\n    [tabs]\n  )\n\n  return [activeTab, handleTabChange]\n}\n","import {\n  IUser,\n  getUser,\n  storageGet,\n  tokenStorageKey,\n} from '@elastic-suite/gally-admin-shared'\nimport { useMemo } from 'react'\n\nexport function useUser(): IUser | null {\n  const token = storageGet(tokenStorageKey)\n  try {\n    return useMemo(() => getUser(token), [token])\n  } catch (error) {\n    return null\n  }\n}\n","import { RefObject, useEffect, useRef, useState } from 'react'\n\ninterface IFormValidation {\n  formRef: RefObject<HTMLFormElement>\n  formIsValid: boolean\n}\nexport const useFormValidation = (): IFormValidation => {\n  const formRef = useRef<HTMLFormElement>(null)\n  const [formIsValid, setFormIsValid] = useState(false)\n\n  useEffect(() => {\n    const mutationObserver = new MutationObserver(() => {\n      setFormIsValid(Boolean(formRef.current?.checkValidity()))\n    })\n\n    mutationObserver.observe(formRef.current as Node, {\n      childList: true,\n      subtree: true,\n      attributes: true,\n    })\n\n    return () => mutationObserver.disconnect()\n  }, [formRef])\n\n  return { formRef, formIsValid }\n}\n","import React, {\n  ChangeEvent,\n  ComponentType,\n  ForwardedRef,\n  Ref,\n  SyntheticEvent,\n  forwardRef,\n} from 'react'\nimport { DatePicker as MuiDatePicker } from '@mui/x-date-pickers/DatePicker'\nimport {\n  PickersDay,\n  PickersDayProps,\n  pickersDayClasses,\n} from '@mui/x-date-pickers/PickersDay'\nimport { DateValidationError } from '@mui/x-date-pickers/internals/hooks/validation/useDateValidation'\nimport { styled } from '@mui/system'\n\nimport IonIcon from '../IonIcon/IonIcon'\n\nimport InputTextWithoutError, { IInputTextProps } from './InputTextWithoutError'\n\nimport { useTranslation } from 'next-i18next'\n\nconst CustomPickersDay = styled(PickersDay, {\n  shouldForwardProp: (prop) =>\n    prop !== 'dayIsBetween' && prop !== 'isFirstDay' && prop !== 'isLastDay',\n})<PickersDayProps<Date>>(({ theme }) => ({\n  fontWeight: 500,\n  [`&&.${pickersDayClasses.selected}`]: {\n    backgroundColor: theme.palette.colors.primary['400'],\n    color: 'white',\n  },\n  [`&&.${pickersDayClasses.selected}, &:hover, &:focus`]: {\n    backgroundColor: theme.palette.colors.primary['400'],\n    color: 'white',\n  },\n})) as ComponentType<PickersDayProps<Date>>\n\nexport interface IDatePickerProps\n  extends Omit<IInputTextProps, 'value' | 'onChange' | 'onError'> {\n  value: Date | string | null\n  onChange: (value: Date | string | null) => void\n  onError?: (reason: DateValidationError, value: Date) => void\n  dataTestId?: string\n}\n\nfunction EndIcon(): JSX.Element {\n  return (\n    <IonIcon name=\"calendar-outline\" style={{ fontSize: 18, padding: '0px' }} />\n  )\n}\n\nfunction ShowIcon(): JSX.Element {\n  return (\n    <IonIcon\n      name=\"chevron-down-outline\"\n      style={{ fontSize: 18, padding: '0px' }}\n    />\n  )\n}\n\nfunction DatePickerWithoutError(\n  props: IDatePickerProps,\n  ref?: ForwardedRef<HTMLInputElement>\n): JSX.Element {\n  const { t } = useTranslation('common')\n  const { value, onChange, onError, dataTestId, ...args } = props\n\n  function onChangeDatePicker(date: Date | string): void {\n    let utcDate = date\n    if (date instanceof Date) {\n      utcDate = new Date(\n        Date.UTC(date.getFullYear(), date.getMonth(), date.getDate())\n      )\n    }\n    onChange(utcDate)\n  }\n\n  const renderWeekPickerDay = (\n    _: string,\n    __: Array<Date | null>,\n    pickersDayProps: PickersDayProps<Date>\n  ): JSX.Element => {\n    return <CustomPickersDay {...pickersDayProps} />\n  }\n\n  return (\n    <MuiDatePicker\n      value={value}\n      onChange={onChangeDatePicker}\n      onError={onError}\n      renderDay={renderWeekPickerDay}\n      components={{\n        OpenPickerIcon: EndIcon,\n        SwitchViewIcon: ShowIcon,\n      }}\n      inputRef={ref}\n      renderInput={(params): JSX.Element => {\n        const { InputProps, inputProps, ...rest } = params\n        const { onChange, readOnly, type, value } = inputProps\n        return (\n          <InputTextWithoutError\n            {...InputProps}\n            {...rest}\n            {...args}\n            onChange={(_: string | number, event: SyntheticEvent): void =>\n              onChange(event as ChangeEvent<HTMLInputElement>)\n            }\n            placeholder={t('date.placeholder')}\n            readOnly={readOnly}\n            ref={params.ref as Ref<HTMLDivElement>}\n            type={type}\n            value={value}\n            dataTestId={dataTestId}\n          />\n        )\n      }}\n    />\n  )\n}\n\nexport default forwardRef(DatePickerWithoutError)\n","import React, {\n  ChangeEvent,\n  ForwardedRef,\n  HTMLAttributes,\n  ReactNode,\n  Ref,\n  SyntheticEvent,\n  forwardRef,\n} from 'react'\nimport { FormHelperText, InputLabel } from '@mui/material'\n\nimport { getFormValue } from '../../../services'\n\nimport IonIcon from '../IonIcon/IonIcon'\n\nimport InfoTooltip from './InfoTooltip'\nimport {\n  IUnstyledInputTextProps,\n  InputTextStyled,\n  StyledFormControl,\n  Suffix,\n  Wrapper,\n} from './InputText.styled'\n\nexport interface IInputTextProps\n  extends Omit<\n      IUnstyledInputTextProps,\n      'margin' | 'onChange' | 'onKeyUp' | 'onKeyDown' | 'onBlur' | 'onFocus'\n    >,\n    Pick<\n      HTMLAttributes<HTMLInputElement>,\n      'onKeyUp' | 'onKeyDown' | 'onBlur' | 'onFocus'\n    > {\n  error?: boolean\n  fullWidth?: boolean\n  infoTooltip?: string\n  inputRef?: Ref<HTMLInputElement>\n  label?: ReactNode\n  margin?: 'none' | 'dense' | 'normal'\n  helperText?: ReactNode\n  helperIcon?: string\n  onChange?: (value: string | number, event: SyntheticEvent) => void\n  suffix?: ReactNode\n  requiredLabel?: boolean\n  dataTestId?: string\n}\n\nfunction InputTextWithoutError(\n  props: IInputTextProps,\n  ref?: ForwardedRef<HTMLDivElement>\n): JSX.Element {\n  const {\n    error,\n    fullWidth,\n    helperText,\n    helperIcon,\n    id,\n    infoTooltip,\n    label,\n    margin,\n    onChange,\n    required,\n    suffix,\n    value,\n    requiredLabel,\n    dataTestId,\n    inputProps,\n    ...InputProps\n  } = props\n\n  function handleChange(\n    event: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n  ): void {\n    const { value } = event.target\n    if (onChange) {\n      onChange(getFormValue(value, props), event)\n    }\n  }\n\n  return (\n    <StyledFormControl\n      error={error}\n      fullWidth={fullWidth}\n      margin={margin}\n      variant=\"standard\"\n    >\n      {Boolean(label || infoTooltip) && (\n        <InputLabel shrink htmlFor={id} required={requiredLabel || required}>\n          {label}\n          {infoTooltip ? <InfoTooltip title={infoTooltip} /> : null}\n        </InputLabel>\n      )}\n      <Wrapper className=\"InputText__Wrapper\">\n        <InputTextStyled\n          id={id}\n          onChange={handleChange}\n          required={required}\n          ref={ref}\n          value={(value ?? '').toString()}\n          inputProps={{\n            ...inputProps,\n            'data-testid': dataTestId,\n          }}\n          {...InputProps}\n        />\n        {Boolean(suffix) && <Suffix>{suffix}</Suffix>}\n      </Wrapper>\n      {Boolean(helperText) && (\n        <FormHelperText\n          data-testid={dataTestId ? `${dataTestId}ErrorMessage` : null}\n        >\n          {Boolean(helperIcon) && (\n            <IonIcon\n              name={helperIcon}\n              style={{ fontSize: 18, marginRight: 2 }}\n            />\n          )}\n          {helperText}\n        </FormHelperText>\n      )}\n    </StyledFormControl>\n  )\n}\n\nexport default forwardRef<HTMLDivElement, IInputTextProps>(\n  InputTextWithoutError\n)\n","import { ICategory } from '@elastic-suite/gally-admin-shared'\n\nexport function findCategory(\n  category: ICategory,\n  categories: ICategory[]\n): ICategory {\n  let foundCategory\n  function recursiveFind(element: ICategory): boolean {\n    if (element.id === category.id) {\n      foundCategory = element\n      return true\n    }\n    if (element.children && element.children.length > 0) {\n      return element.children.some(recursiveFind)\n    }\n    return false\n  }\n  categories.some(recursiveFind)\n  return foundCategory ?? categories[0]\n}\n","import { ChangeEvent } from 'react'\nimport {\n  IStickyBorderStyle,\n  ITableHeader,\n  ITableHeaderSticky,\n} from '@elastic-suite/gally-admin-shared'\n\nexport function manageStickyHeaders(\n  tableHeaders: ITableHeader[]\n): ITableHeaderSticky[] {\n  const stickyHeaders: ITableHeaderSticky[] = []\n  const stickyColumnCount = tableHeaders.filter(\n    (header) => header.sticky\n  ).length\n  tableHeaders\n    .filter((header) => header.sticky)\n    .map((stickyHeader: ITableHeader, index: number) =>\n      stickyHeaders.push({\n        isLastSticky: !(index < stickyColumnCount - 1),\n        ...stickyHeader,\n      })\n    )\n  return stickyHeaders\n}\n\nexport function handleSingleRow(\n  e: ChangeEvent<HTMLInputElement>,\n  rowId: string | number,\n  onSelectRows: (arr: (string | number)[]) => void,\n  selectedRows: (string | number)[]\n): void {\n  onSelectRows(\n    e.target.checked\n      ? selectedRows.concat(rowId)\n      : selectedRows.filter((value) => value !== rowId)\n  )\n}\n\nexport function stickyBorderStyle(shadow: boolean): IStickyBorderStyle {\n  return {\n    borderBottomColor: 'colors.neutral.300',\n    borderRight: '2px solid',\n    borderRightColor: 'colors.neutral.600',\n    ...(shadow && {\n      boxShadow: '5px 0 460px -10px',\n      clipPath: 'inset(0px -15px 0px 0px)',\n    }),\n  }\n}\n","import {\n  IFetch,\n  IFieldConfig,\n  IHydraResponse,\n  ILimitationsTypes,\n  IRequestType,\n} from '@elastic-suite/gally-admin-shared'\nimport { InputBaseProps } from '@mui/material'\nimport { useApiList } from '../hooks'\nimport { IDoubleDatePickerValues } from '../components/atoms/form/DoubleDatePickerWithoutError'\n\nexport type IProps = Pick<InputBaseProps, 'required' | 'type'>\n\nexport function getFormValue(value: string, props: IProps): string | number {\n  const { required, type } = props\n  if (type === 'number') {\n    if (value === '' && !required) {\n      return null\n    }\n    return Number(value)\n  }\n  return value\n}\n\nexport function getDoubleDatePickerValue(\n  data: Record<string, Date>\n): IDoubleDatePickerValues {\n  return { fromDate: data?.fromDate, toDate: data?.toDate }\n}\n\nexport function getRequestTypeData(\n  data?: Record<string, any>,\n  limitationTypeOptionsApi?: IFetch<IHydraResponse<ILimitationsTypes>>\n): IRequestType {\n  if (!data) {\n    return null\n  }\n\n  const requestTypeData = {} as IRequestType\n\n  limitationTypeOptionsApi?.data?.['hydra:member'].forEach((it) => {\n    requestTypeData[`${it.value}Limitations` as keyof IRequestType] =\n      data[`${it.value}Limitations`] ?? []\n  })\n\n  return { ...requestTypeData, requestTypes: data.requestTypes }\n}\n\nexport function useValue(\n  field: IFieldConfig | string,\n  data: unknown\n): unknown | IRequestType {\n  const [limitationTypeOptionsApi] = useApiList<ILimitationsTypes>(\n    field && (field as IFieldConfig)?.input === 'requestType'\n      ? (field as IFieldConfig)?.requestTypeConfigurations\n          ?.limitationTypeOptionsApi ?? 'boost_limitation_type_options'\n      : field && typeof field === 'string'\n      ? field\n      : undefined\n  )\n\n  if (!field) {\n    return null\n  }\n\n  if (typeof field === 'string') {\n    return getRequestTypeData(data, limitationTypeOptionsApi)\n  }\n  switch ((field as IFieldConfig)?.input) {\n    case 'requestType':\n      return getRequestTypeData(data, limitationTypeOptionsApi)\n\n    case 'rangeDate':\n      return getDoubleDatePickerValue(data as Record<string, Date>)\n\n    default:\n      return (data as Record<string, unknown>)?.[(field as IFieldConfig).name]\n  }\n}\n","import {\n  DataContentType,\n  IDraggableColumnStyle,\n  INonStickyStyle,\n  ISelectionStyle,\n  IStickyStyle,\n  reorderingColumnWidth,\n  stickyColunWidth,\n} from '@elastic-suite/gally-admin-shared'\n\nimport { stickyBorderStyle } from './customTable'\n\nexport function draggableColumnStyle(\n  isOnlyDraggable: boolean,\n  leftValue: number,\n  isHorizontalOverflow: boolean,\n  shadow: boolean\n): IDraggableColumnStyle {\n  return {\n    minWidth: `${reorderingColumnWidth}px`,\n    ...(!isOnlyDraggable && { borderRight: 'none' }),\n    ...(isOnlyDraggable && isHorizontalOverflow && stickyBorderStyle(shadow)),\n    backgroundColor: 'colors.white',\n    zIndex: '1',\n    left: `${leftValue}px`,\n  }\n}\n\nexport const reorderIconStyle = {\n  fontSize: 'x-large',\n  position: 'absolute',\n  left: '18.75%',\n  right: '18.75%',\n  top: '36.33%',\n  bottom: '36.33%',\n  color: 'colors.white',\n  display: 'flex',\n  alignItems: 'center',\n  '&:hover': {\n    color: 'colors.neutral.500',\n    cursor: 'grab',\n  },\n}\n\nexport function stickyStyle(\n  leftValue: number,\n  shadow: boolean,\n  isLastSticky: boolean,\n  type: DataContentType\n): IStickyStyle {\n  return {\n    zIndex: '1',\n    minWidth: `${stickyColunWidth}px`,\n    left: `${leftValue}px`,\n    borderBottomColor: 'colors.neutral.300',\n    backgroundColor: 'colors.white',\n    ...(isLastSticky && stickyBorderStyle(shadow)),\n    ...(type === DataContentType.SELECT && { overflow: 'visible' }),\n  }\n}\n\nexport function selectionStyle(\n  isHorizontalOverflow: boolean,\n  leftValue: number,\n  shadow: boolean,\n  stickyColumnCount: number\n): ISelectionStyle {\n  return {\n    left: `${leftValue}px`,\n    borderBottomColor: 'colors.neutral.300',\n    backgroundColor: 'colors.white',\n    zIndex: '1',\n    ...(isHorizontalOverflow &&\n      stickyColumnCount === 0 &&\n      stickyBorderStyle(shadow)),\n  }\n}\n\nexport function nonStickyStyle(type: DataContentType): INonStickyStyle {\n  return {\n    backgroundColor: 'colors.white',\n    borderBottomColor: 'colors.neutral.300',\n    ...(type === DataContentType.SELECT && { overflow: 'visible' }),\n  }\n}\n","import React, { ReactNode } from 'react'\n\nimport Tooltip from '../modals/Tooltip'\nimport IonIcon from '../IonIcon/IonIcon'\n\ninterface IProps {\n  title: string | NonNullable<React.ReactNode>\n  children?: ReactNode\n  noStyle?: boolean\n  withHTMLTitle?: boolean\n}\n\nfunction InfoTooltip({\n  title,\n  children,\n  noStyle,\n  withHTMLTitle,\n}: IProps): JSX.Element {\n  return (\n    <Tooltip\n      title={\n        typeof title === 'string' && withHTMLTitle ? (\n          <span\n            // eslint-disable-next-line react/no-danger\n            dangerouslySetInnerHTML={{\n              __html: title,\n            }}\n          />\n        ) : (\n          title\n        )\n      }\n      placement=\"right\"\n    >\n      <span\n        style={{\n          display: 'inline-block',\n          paddingLeft: noStyle ? '' : '10px',\n          marginBottom: noStyle ? '' : '-5px',\n        }}\n      >\n        {children ? children : <IonIcon name=\"informationCircle\" tooltip />}\n      </span>\n    </Tooltip>\n  )\n}\n\nexport default InfoTooltip\n","import React from 'react'\nimport { Tooltip as MuiTooltip, TooltipProps } from '@mui/material'\n\nfunction Tooltip(props: TooltipProps): JSX.Element {\n  const { className, ...tooltipProps } = props\n\n  return <MuiTooltip {...tooltipProps} arrow classes={{ popper: className }} />\n}\n\nexport default Tooltip\n","import { FunctionComponent } from 'react'\nimport { FormControl, InputBase, InputBaseProps } from '@mui/material'\nimport { styled } from '@mui/system'\n\nexport interface IUnstyledInputTextProps extends InputBaseProps {\n  dirty?: boolean\n  small?: boolean\n  transparent?: boolean\n  value?: string | number | null\n}\n\nexport const StyledFormControl = styled(FormControl)(\n  ({ fullWidth, theme }) => ({\n    '& .MuiFormLabel-root': {\n      color: theme.palette.colors.neutral[900],\n    },\n    '& .MuiFormLabel-root.Mui-error': {\n      color: theme.palette.colors.neutral[900],\n    },\n    '& label': {\n      position: 'relative',\n    },\n    ...(fullWidth && {\n      '.MuiInputBase-root': {\n        width: '100%',\n        maxWidth: 'initial',\n      },\n    }),\n  })\n)\n\nconst inputTextStyledProps = ['dirty', 'small', 'transparent']\nexport const InputTextStyled = styled(\n  InputBase as FunctionComponent<IUnstyledInputTextProps>,\n  {\n    shouldForwardProp: (prop: string) => !inputTextStyledProps.includes(prop),\n  }\n)(({ dirty, inputProps, small, theme, transparent, type, value }) => {\n  let width\n  if (type === 'number') {\n    width = '3em'\n  }\n  if (inputProps?.max) {\n    width = `${Math.max(String(inputProps.max).length, 3)}em`\n  }\n  if (inputProps?.maxLength) {\n    width = `${Math.max(inputProps.maxLength, 3)}em`\n  }\n\n  return {\n    minHeight: '40px',\n    borderRadius: 8,\n    borderStyle: 'solid',\n    borderWidth: '1px',\n    borderColor: theme.palette.colors.neutral['300'],\n    padding: `3px ${theme.spacing(2)}`,\n    minWidth: width ? 'unset' : 180,\n    backgroundColor: theme.palette.colors.white,\n    color: theme.palette.colors.neutral['900'],\n    fontSize: 14,\n    lineHeight: 0,\n    fontWeight: 400,\n    transition: 'border-color 0.3s linear',\n    ...(Boolean(value) && {\n      borderColor: theme.palette.colors.neutral['400'],\n    }),\n    ...(small === false && {\n      '.MuiAutocomplete-input': {\n        width: 'auto!important',\n      },\n    }),\n    ...(Boolean(small) && {\n      minHeight: '26px',\n      minWidth: 'initial',\n      width: 'max-content',\n      paddingTop: 0,\n      paddingBottom: 0,\n      paddingLeft: theme.spacing(1),\n      paddingRight: theme.spacing(1),\n      borderRadius: '13px',\n    }),\n    ...(Boolean(transparent) && {\n      background: 'transparent',\n      border: '0',\n    }),\n    ...(Boolean(dirty) && {\n      fontWeight: 'bold',\n    }),\n    '& .MuiInputBase-input': {\n      padding: 0,\n      width,\n      '&::placeholder': {\n        color: theme.palette.colors.neutral['600'],\n        opacity: 1,\n      },\n      '&.Mui-disabled': {\n        color: theme.palette.colors.neutral['600'],\n        WebkitTextFillColor: theme.palette.colors.neutral['600'],\n        '&.MuiInputBase-inputAdornedEnd': {\n          color: theme.palette.colors.neutral['500'],\n          WebkitTextFillColor: theme.palette.colors.neutral['500'],\n        },\n      },\n      ...(Boolean(small) && {\n        width: '72px',\n        fontSize: '12px',\n        fontWeight: 'bold',\n      }),\n      ...(small === false && {\n        fontWeight: 'bold',\n        fontSize: '12px',\n      }),\n    },\n    '&:hover': {\n      borderColor: theme.palette.colors.neutral['400'],\n    },\n    '&:focus-within': {\n      borderColor: theme.palette.colors.neutral['600'],\n      ...(Boolean(transparent) && {\n        backgroundColor: 'rgba(0, 0, 0, 0.075)',\n      }),\n    },\n    '& .MuiInputBase-input::placeholder': {\n      color: theme.palette.colors.neutral['600'],\n      opacity: 1,\n      ...(Boolean(small) && {\n        fontWeight: 'normal',\n      }),\n    },\n    '&.MuiInputBase-colorSuccess': {\n      borderColor: theme.palette.success.main,\n    },\n    '&.MuiInputBase-colorError': {\n      borderColor: theme.palette.error.main,\n    },\n    '&.Mui-error': {\n      borderColor: theme.palette.error.main,\n    },\n    '&.Mui-disabled': {\n      borderColor: theme.palette.colors.neutral['300'],\n      backgroundColor: theme.palette.colors.neutral['300'],\n    },\n    '& .MuiInputAdornment-root': {\n      fontSize: 14,\n      color: theme.palette.colors.neutral['900'],\n    },\n    // Autocomplete\n    '&.MuiAutocomplete-inputRoot': {\n      maxWidth: '400px',\n    },\n    '& .MuiAutocomplete-endAdornment': {\n      top: 0,\n      right: '12px',\n      height: '100%',\n      display: 'flex',\n      alignItems: 'center',\n    },\n    '& .MuiAutocomplete-popupIndicator ion-icon, & .MuiAutocomplete-clearIndicator ion-icon':\n      {\n        fontSize: 14,\n        color: theme.palette.colors.neutral['900'],\n      },\n    '& .MuiAutocomplete-tag': {\n      marginTop: '2px',\n      marginBottom: '2px',\n    },\n  }\n})\n\nexport const Wrapper = styled('div')(({ theme }) => ({\n  alignItems: 'center',\n  display: 'flex',\n  'label + &': {\n    marginTop: theme.spacing(0.5),\n  },\n}))\n\nexport const Suffix = styled('span')(({ theme }) => ({\n  fontFamily: 'var(--gally-font)',\n  fontSize: '14px',\n  fontWeight: 400,\n  lineHeight: '20px',\n  textAlign: 'center',\n  color: theme.palette.colors.neutral[600],\n  marginLeft: theme.spacing(1),\n}))\n","import React, { ForwardedRef, SyntheticEvent, useCallback } from 'react'\nimport { DateValidationError } from '@mui/x-date-pickers/internals/hooks/validation/useDateValidation'\nimport { isValid } from 'date-fns'\n\nimport { IFieldErrorProps, IValidator, useFormError } from '../../../hooks'\n\nimport DatePickerWithoutError, {\n  IDatePickerProps,\n} from './DatePickerWithoutError'\n\ninterface IDatePickerErrorProps extends IFieldErrorProps, IDatePickerProps {}\n\nexport function dateValidator(\n  value: Date | null,\n  event?: SyntheticEvent,\n  required?: boolean,\n  additionalValidator?: IDatePickerErrorProps['additionalValidator']\n): string | null {\n  if (additionalValidator) {\n    return additionalValidator(value, event)\n  }\n\n  if (!value && required) {\n    return 'valueMissing'\n  }\n\n  if (!value || isValid(value)) {\n    return ''\n  }\n  return 'invalidDate'\n}\n\nfunction DatePicker(props: IDatePickerErrorProps): JSX.Element {\n  const { onChange, showError, additionalValidator, ...inputProps } = props\n\n  const validator = useCallback<IValidator>(\n    (value, event) => {\n      return dateValidator(\n        value as Date,\n        event,\n        inputProps.required,\n        additionalValidator\n      )\n    },\n    [additionalValidator, inputProps.required]\n  )\n\n  const [{ ref, ...formErrorProps }, setError] = useFormError(\n    onChange,\n    inputProps.value,\n    showError,\n    validator,\n    inputProps.disabled\n  )\n\n  function handleError(reason: DateValidationError): void {\n    setError(reason)\n  }\n\n  return (\n    <DatePickerWithoutError\n      {...inputProps}\n      {...formErrorProps}\n      error={inputProps?.error || formErrorProps?.error}\n      helperIcon={inputProps?.helperIcon || formErrorProps?.helperIcon}\n      helperText={inputProps?.helperText || formErrorProps?.helperText}\n      onError={handleError}\n      ref={ref as ForwardedRef<HTMLInputElement>}\n    />\n  )\n}\n\nexport default DatePicker\n","import React, { ReactNode, RefObject, forwardRef } from 'react'\nimport { Box, FormHelperText, Grid, InputLabel } from '@mui/material'\nimport { DateValidationError } from '@mui/x-date-pickers/internals/hooks/validation/useDateValidation'\nimport { useTranslation } from 'next-i18next'\nimport { styled } from '@mui/system'\n\nimport IonIcon from '../IonIcon/IonIcon'\n\nimport DatePickerWithoutError, {\n  IDatePickerProps,\n} from './DatePickerWithoutError'\nimport FormControl from './FormControl'\nimport InfoTooltip from './InfoTooltip'\n\nconst CustomBox = styled(Box)(({ theme }) => ({\n  fontWeight: 500,\n  fontFamily: 'var(--gally-font)',\n  fontSize: '14px',\n  lineHeight: '20px',\n  color: theme.palette.colors.neutral[600],\n}))\n\nexport interface IDoubleDatePickerValues {\n  fromDate: Date | string | null\n  toDate: Date | string | null\n}\nexport interface IDoubleDatePickerErrors {\n  from: DateValidationError\n  to: DateValidationError\n}\n\nexport interface IDoubleDatePickerProps\n  extends Omit<IDatePickerProps, 'value' | 'onChange' | 'onError' | 'ref'> {\n  value?: IDoubleDatePickerValues\n  onChange?: (values: IDoubleDatePickerValues) => void\n  onError?: (reasons: IDoubleDatePickerErrors) => void\n  error?: boolean\n  errors?: IDoubleDatePickerErrors\n  fullWidth?: boolean\n  infoTooltip?: string\n  label?: ReactNode\n  margin?: 'none' | 'dense' | 'normal'\n  helperText?: ReactNode\n  helperIcon?: string\n  dataTestId?: string\n}\n\nfunction DoubleDatePickerWithoutError(\n  props: IDoubleDatePickerProps,\n  ref?: RefObject<HTMLInputElement>\n): JSX.Element {\n  const {\n    value,\n    error,\n    errors,\n    fullWidth,\n    helperText,\n    helperIcon,\n    id,\n    infoTooltip,\n    inputProps,\n    label,\n    margin,\n    onChange,\n    onError,\n    required,\n    dataTestId,\n    ...args\n  } = props\n  const { t } = useTranslation('common')\n\n  function onChangeFrom(date: Date | string): void {\n    onChange({ ...value, fromDate: date })\n  }\n\n  function onChangeTo(date: Date | string): void {\n    onChange({ ...value, toDate: date })\n  }\n\n  function onErrorFrom(reason: DateValidationError): void {\n    if (onError) {\n      onError({ ...errors, from: reason })\n    }\n  }\n\n  function onErrorTo(reason: DateValidationError): void {\n    if (onError) {\n      onError({ ...errors, to: reason })\n    }\n  }\n\n  return (\n    <FormControl error={error} fullWidth={fullWidth} margin={margin}>\n      {Boolean(label || infoTooltip) && (\n        <InputLabel shrink htmlFor={id} required={required}>\n          {label}\n          {infoTooltip ? <InfoTooltip title={infoTooltip} /> : null}\n        </InputLabel>\n      )}\n      <Grid\n        justifyContent=\"flex-start\"\n        alignItems=\"center\"\n        container\n        sx={{ marginTop: label ? '4px' : '0px' }}\n      >\n        <CustomBox sx={{ paddingRight: '20px' }}> {t('form.from')} </CustomBox>\n        <Grid item xs>\n          <DatePickerWithoutError\n            {...args}\n            required={required}\n            error={error}\n            fullWidth={fullWidth}\n            inputProps={inputProps}\n            value={value?.fromDate}\n            onChange={onChangeFrom}\n            onError={onErrorFrom}\n            ref={ref}\n            dataTestId={dataTestId ? `${dataTestId}Start` : null}\n          />\n        </Grid>\n        <CustomBox sx={{ paddingRight: '20px', paddingLeft: '20px' }}>\n          {t('form.to')}\n        </CustomBox>\n        <Grid item xs>\n          <DatePickerWithoutError\n            {...args}\n            required={required}\n            error={error}\n            fullWidth={fullWidth}\n            inputProps={inputProps}\n            value={value?.toDate}\n            onChange={onChangeTo}\n            onError={onErrorTo}\n            dataTestId={dataTestId ? `${dataTestId}End` : null}\n          />\n        </Grid>\n      </Grid>\n      {Boolean(helperText) && (\n        <FormHelperText\n          error={error}\n          data-testid={dataTestId ? `${dataTestId}ErrorMessage` : null}\n        >\n          {Boolean(helperIcon) && (\n            <IonIcon\n              name={helperIcon}\n              style={{ fontSize: 18, marginRight: 2 }}\n            />\n          )}\n          {helperText}\n        </FormHelperText>\n      )}\n    </FormControl>\n  )\n}\n\nexport default forwardRef(DoubleDatePickerWithoutError)\n","import { ReactNode } from 'react'\nimport { styled } from '@mui/system'\n\ninterface IProps {\n  children: ReactNode\n  error?: boolean\n  fullWidth?: boolean\n  margin?: 'none' | 'dense' | 'normal'\n}\n\nexport default styled('div')<IProps>(({ fullWidth, margin, theme }) => ({\n  display: 'inline-flex',\n  flexDirection: 'column',\n  position: 'relative',\n  minWidth: 0,\n  padding: 0,\n  margin: 0,\n  border: 0,\n  verticalAlign: 'top',\n  '& .MuiFormLabel-root': {\n    color: theme.palette.colors.neutral[900],\n    fontFamily: 'var(--gally-font)',\n    padding: 0,\n    display: 'block',\n    transformOrigin: 'top left',\n    whiteSpace: 'nowrap',\n    overflow: 'hidden',\n    textOverflow: 'ellipsis',\n    maxWidth: '133%',\n    position: 'relative',\n    left: 0,\n    top: 0,\n    transform: 'none',\n    fontWeight: 500,\n    lineHeight: '20px',\n    fontSize: '14px',\n  },\n  '& .MuiFormLabel-root.Mui-error': {\n    color: theme.palette.colors.neutral[900],\n  },\n  ...(margin === 'normal' && {\n    marginTop: 16,\n    marginBottom: 8,\n  }),\n  ...(margin === 'dense' && {\n    marginTop: 8,\n    marginBottom: 4,\n  }),\n  ...(fullWidth && {\n    width: '100%',\n  }),\n  ...(fullWidth && {\n    '.MuiInputBase-root': {\n      width: '100%',\n      maxWidth: 'initial',\n    },\n  }),\n}))\n","import React, { ForwardedRef, SyntheticEvent, useCallback } from 'react'\nimport { IFieldErrorProps, IValidator, useFormError } from '../../../hooks'\n\nimport { dateValidator } from './DatePicker'\nimport DoubleDatePickerWithoutError, {\n  IDoubleDatePickerProps,\n  IDoubleDatePickerValues,\n} from './DoubleDatePickerWithoutError'\ninterface IDoubleDatePickerErrorProps\n  extends IFieldErrorProps,\n    IDoubleDatePickerProps {}\n\nexport function doubleDateValidator(\n  value: IDoubleDatePickerValues,\n  event?: SyntheticEvent,\n  required?: boolean,\n  additionalValidator?: IDoubleDatePickerErrorProps['additionalValidator']\n): string | null {\n  if (additionalValidator) {\n    return additionalValidator(value, event)\n  }\n  if (required && (!value.fromDate || !value.toDate)) {\n    return 'valueMissing'\n  }\n  const from =\n    typeof value.fromDate === 'string'\n      ? new Date(value.fromDate)\n      : value.fromDate\n  const to =\n    typeof value.toDate === 'string' ? new Date(value.toDate) : value.toDate\n\n  const fromError = dateValidator(from)\n  if (fromError) {\n    return fromError\n  }\n  const toError = dateValidator(to)\n  if (toError) {\n    return toError\n  }\n\n  if (!value.toDate || !value.fromDate || from <= to) {\n    return ''\n  }\n  return 'doubleDatePickerRange'\n}\n\nfunction DoubleDatePicker(props: IDoubleDatePickerErrorProps): JSX.Element {\n  const {\n    onChange,\n    showError,\n    additionalValidator,\n    replacementErrorsMessages,\n    ...inputProps\n  } = props\n\n  const validator = useCallback<IValidator>(\n    (value: IDoubleDatePickerValues, event) => {\n      return doubleDateValidator(\n        value,\n        event,\n        inputProps.required,\n        additionalValidator\n      )\n    },\n    [additionalValidator, inputProps.required]\n  )\n\n  const [{ ref, ...formErrorProps }] = useFormError(\n    onChange,\n    inputProps.value,\n    showError,\n    validator,\n    inputProps.disabled,\n    replacementErrorsMessages\n  )\n\n  return (\n    <DoubleDatePickerWithoutError\n      {...inputProps}\n      {...formErrorProps}\n      ref={ref as ForwardedRef<HTMLInputElement>}\n    />\n  )\n}\n\nexport default DoubleDatePicker\n","import React, {\n  CSSProperties,\n  HTMLAttributes,\n  ReactNode,\n  RefObject,\n  SyntheticEvent,\n  forwardRef,\n  useMemo,\n  useRef,\n} from 'react'\nimport {\n  Autocomplete,\n  AutocompleteRenderOptionState,\n  FormControl,\n  ListItem,\n  ListSubheader,\n} from '@mui/material'\nimport { useTranslation } from 'next-i18next'\n\nimport { IOption, IOptions } from '@elastic-suite/gally-admin-shared'\n\nimport CheckboxWithoutError from './CheckboxWithoutError'\nimport { SmallStyledPaper, StyledPaper } from './DropDown.styled'\nimport InputTextWithoutError, { IInputTextProps } from './InputTextWithoutError'\n\nimport IonIcon from '../IonIcon/IonIcon'\nimport Chip from '../Chip/Chip'\n\nexport interface IDropDownProps<T>\n  extends Omit<IInputTextProps, 'onChange' | 'value'> {\n  disabled?: boolean\n  limitTags?: number\n  multiple?: boolean\n  onChange?: (value: T | T[], event: SyntheticEvent) => void\n  options: IOptions<T>\n  style?: CSSProperties\n  value?: T | T[] | object | object[]\n  useGroups?: boolean\n  objectKeyValue?: string\n  dataTestId?: string\n}\n\nfunction DropDownWithoutError<T>(\n  props: IDropDownProps<T>,\n  ref?: RefObject<HTMLInputElement>\n): JSX.Element {\n  const {\n    disabled,\n    fullWidth,\n    limitTags,\n    multiple,\n    onChange,\n    options,\n    style,\n    value,\n    useGroups,\n    objectKeyValue,\n    dataTestId,\n    ...otherProps\n  } = props\n  const { required, small } = otherProps\n  const { t } = useTranslation('common')\n  const inputRef = useRef(null)\n  const optionMap = useMemo(\n    () => new Map(options.map((option) => [option.value, option])),\n    [options]\n  )\n\n  const optionValue =\n    value instanceof Array\n      ? value.map((val: T | object) => {\n          return typeof val === 'object'\n            ? optionMap.get(val[objectKeyValue as keyof object] as T)\n            : optionMap.get(val)\n        })\n      : value instanceof Object && objectKeyValue\n      ? optionMap.get(value[objectKeyValue as keyof object] as T) ?? null\n      : optionMap.get(value as T) ?? null\n\n  function handleChange(\n    event: SyntheticEvent,\n    option: IOption<T> | IOption<T>[]\n  ): void {\n    const dropdownEvent = { ...event, target: (ref || inputRef).current }\n    setTimeout(() => {\n      if (!option && !required) {\n        onChange(null, dropdownEvent)\n      } else if (option instanceof Array) {\n        onChange(\n          option.map(({ value }) =>\n            objectKeyValue ? ({ [objectKeyValue]: value } as T) : value\n          ),\n          dropdownEvent\n        )\n      } else if (option) {\n        onChange(\n          objectKeyValue\n            ? ({ [objectKeyValue]: option.value } as T)\n            : option.value,\n          dropdownEvent\n        )\n      }\n    }, 0)\n  }\n\n  const clearText = t('form.clear')\n  const closeText = t('form.close')\n  const openText = t('form.open')\n\n  let renderOption\n  let renderTags\n  if (multiple) {\n    // eslint-disable-next-line react/no-unstable-nested-components, react/function-component-definition, react/display-name\n    renderOption = (\n      props: HTMLAttributes<HTMLLIElement>,\n      { label }: IOption<T>,\n      { selected }: AutocompleteRenderOptionState\n    ): ReactNode => {\n      return (\n        <li\n          {...props}\n          data-testid={dataTestId ? `${dataTestId}DropdownOption` : null}\n        >\n          <CheckboxWithoutError\n            checked={selected}\n            label={label}\n            list\n            onClick={(e): void => e.preventDefault()}\n            dataTestId={dataTestId ? `${dataTestId}Checkbox` : null}\n          />\n        </li>\n      )\n    }\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    renderTags = (value: IOption<T>[], getTagProps: any): ReactNode[] =>\n      value\n        .filter((option) => option)\n        .map((option: IOption<T>, index: number) => (\n          <Chip\n            key={option.id ?? String(option.value)}\n            label={option.label}\n            size={small ? 'small' : 'medium'}\n            data-testid={dataTestId ? `${dataTestId}Tag` : null}\n            {...getTagProps({ index })}\n          />\n        ))\n  } else {\n    renderOption = (\n      props: HTMLAttributes<HTMLLIElement>,\n      option: IOption<T>\n    ): ReactNode => {\n      return (\n        <ListItem\n          {...props}\n          data-testid={dataTestId ? `${dataTestId}DropdownOption` : null}\n        >\n          {option.label}\n        </ListItem>\n      )\n    }\n  }\n\n  return (\n    <FormControl fullWidth={fullWidth} variant=\"standard\">\n      <Autocomplete\n        PaperComponent={small ? SmallStyledPaper : StyledPaper}\n        clearIcon={<IonIcon name=\"close\" />}\n        clearText={clearText}\n        closeText={closeText}\n        componentsProps={{ popper: { placement: 'bottom-start' } }}\n        disableClearable={required}\n        disableCloseOnSelect={multiple}\n        disabled={disabled}\n        getOptionDisabled={(option: IOption<T>): boolean => option.disabled}\n        limitTags={limitTags}\n        multiple={multiple}\n        onChange={handleChange}\n        openText={openText}\n        options={options}\n        groupBy={\n          useGroups\n            ? (option: IOption<T>): string => {\n                return option.id as string\n              }\n            : undefined\n        }\n        getOptionLabel={\n          useGroups ? (options: IOption<T>): string => options.label : undefined\n        }\n        popupIcon={\n          <IonIcon\n            data-testid={dataTestId ? `${dataTestId}Button` : null}\n            name=\"chevron-down\"\n          />\n        }\n        renderGroup={(params): JSX.Element => (\n          <li key={params.key}>\n            <ListSubheader\n              data-testid={dataTestId ? `${dataTestId}GroupTitle` : null}\n            >\n              {params.group}\n            </ListSubheader>\n            <ul style={{ padding: 0 }}>{params.children}</ul>\n          </li>\n        )}\n        renderInput={(params): JSX.Element => {\n          const { InputLabelProps, InputProps, ...inputProps } = params\n\n          return (\n            <InputTextWithoutError\n              {...{ ...otherProps, required: false }}\n              {...inputProps}\n              {...InputProps}\n              fullWidth={fullWidth}\n              inputRef={ref || inputRef}\n              requiredLabel={required}\n              dataTestId={dataTestId ? `${dataTestId}InputText` : null}\n            />\n          )\n        }}\n        renderOption={renderOption}\n        renderTags={renderTags}\n        style={{ width: 'fit-content', ...style }}\n        value={optionValue}\n        selectOnFocus={false}\n        data-testid={dataTestId}\n      />\n    </FormControl>\n  )\n}\n\nexport default forwardRef(DropDownWithoutError)\n","import { styled } from '@mui/system'\nimport { getCustomScrollBarStyles } from '@elastic-suite/gally-admin-shared'\n\nexport const StyledPaper = styled('div')(({ theme }) => ({\n  minWidth: '180px',\n  background: theme.palette.colors.white,\n  border: `1px solid ${theme.palette.colors.neutral['300']}`,\n  borderRadius: 8,\n  margin: '4px 0',\n  overflow: 'auto',\n  ...getCustomScrollBarStyles(theme),\n  '& .MuiAutocomplete-listbox': {\n    padding: 0,\n  },\n  '& .MuiAutocomplete-listbox .MuiAutocomplete-option': {\n    listStyle: 'none',\n    padding: '8px 12px',\n    cursor: 'default',\n    fontWeight: 400,\n    fontSize: 12,\n    lineHeight: '18px',\n    color: theme.palette.colors.neutral['800'],\n    '&[aria-selected=\"true\"]': {\n      backgroundColor: 'transparent',\n      fontWeight: 'bold',\n    },\n    '&.Mui-focused': {\n      backgroundColor: theme.palette.colors.neutral['200'],\n    },\n    '&[aria-disabled=\"true\"]': {\n      color: theme.palette.colors.neutral['400'],\n    },\n    '&.Mui-focused:not([aria-disabled=\"true\"])': {\n      backgroundColor: theme.palette.colors.neutral['200'],\n    },\n  },\n}))\n\nexport const SmallStyledPaper = styled(StyledPaper)({\n  '& .MuiAutocomplete-listbox .MuiAutocomplete-option': {\n    padding: '5px 12px',\n  },\n})\n","import React, { ForwardedRef, useCallback } from 'react'\n\nimport { IFieldErrorProps, IValidator, useFormError } from '../../../hooks'\n\nimport DropDownWithoutError, { IDropDownProps } from './DropDownWithoutError'\n\ninterface IDropDownErrorProps<T> extends IFieldErrorProps, IDropDownProps<T> {}\n\nfunction Dropdown<T>(props: IDropDownErrorProps<T>): JSX.Element {\n  const {\n    onChange,\n    showError,\n    additionalValidator,\n    replacementErrorsMessages,\n    ...inputProps\n  } = props\n\n  const validator = useCallback<IValidator>(\n    (value, event) => {\n      if (additionalValidator) return additionalValidator(value, event)\n      if (\n        inputProps.required &&\n        (value === undefined ||\n          value === '' ||\n          (value as unknown[]).length === 0)\n      ) {\n        return 'valueMissing'\n      }\n      return ''\n    },\n    [additionalValidator, inputProps.required]\n  )\n\n  const [{ ref, ...formErrorProps }] = useFormError(\n    onChange,\n    inputProps.value,\n    showError,\n    validator,\n    inputProps.disabled,\n    replacementErrorsMessages\n  )\n\n  return (\n    <DropDownWithoutError\n      {...inputProps}\n      {...formErrorProps}\n      error={inputProps?.error || formErrorProps?.error}\n      helperIcon={inputProps?.helperIcon || formErrorProps?.helperIcon}\n      helperText={inputProps?.helperText || formErrorProps?.helperText}\n      ref={ref as ForwardedRef<HTMLInputElement>}\n    />\n  )\n}\n\nexport default Dropdown\n","import React, { ForwardedRef, useCallback } from 'react'\n\nimport { IFieldErrorProps, IValidator, useFormError } from '../../../hooks'\n\nimport InputTextWithoutError, { IInputTextProps } from './InputTextWithoutError'\n\ninterface IInputTextErrorProps extends IFieldErrorProps, IInputTextProps {}\n\nfunction InputText(props: IInputTextErrorProps): JSX.Element {\n  const {\n    onChange,\n    showError,\n    additionalValidator,\n    replacementErrorsMessages,\n    ...inputProps\n  } = props\n  const validator = useCallback<IValidator>(\n    (value, event) => {\n      if (additionalValidator) return additionalValidator(value, event)\n      return ''\n    },\n    [additionalValidator]\n  )\n\n  const [{ ref, ...formErrorProps }] = useFormError(\n    onChange,\n    inputProps.value,\n    showError,\n    validator,\n    inputProps.disabled,\n    replacementErrorsMessages\n  )\n\n  return (\n    <InputTextWithoutError\n      {...inputProps}\n      {...formErrorProps}\n      error={inputProps?.error || formErrorProps?.error}\n      helperIcon={inputProps?.helperIcon || formErrorProps?.helperIcon}\n      helperText={inputProps?.helperText || formErrorProps?.helperText}\n      inputRef={ref as ForwardedRef<HTMLInputElement>}\n      ref={null}\n    />\n  )\n}\n\nexport default InputText\n","import React, { ReactNode, SyntheticEvent } from 'react'\nimport {\n  FormControl,\n  FormControlLabel,\n  FormHelperText,\n  InputLabel,\n  Radio,\n  RadioGroupProps,\n  RadioGroup as RadioGrp,\n} from '@mui/material'\nimport { IOption, IOptions } from '@elastic-suite/gally-admin-shared'\nimport IonIcon from '../IonIcon/IonIcon'\nimport InfoTooltip from '../../atoms/form/InfoTooltip'\n\nexport interface IRadioGroupProps extends Omit<RadioGroupProps, 'onChange'> {\n  options: IOptions<unknown>\n  onChange?: (value: string, event: SyntheticEvent) => void\n  error?: boolean\n  helperText?: ReactNode\n  helperIcon?: string\n  label?: string\n  infoTooltip?: string\n  required?: boolean\n}\n\nfunction RadioGroupWithoutError(props: IRadioGroupProps): JSX.Element {\n  const {\n    error,\n    helperText,\n    helperIcon,\n    options,\n    onChange,\n    infoTooltip,\n    label,\n    defaultValue,\n    ...radioGroupProps\n  } = props\n  const foundNameDefaultValue = options.find((element) => element.default)\n\n  return (\n    <FormControl variant=\"standard\" margin=\"normal\">\n      {Boolean(label || infoTooltip) && (\n        <InputLabel\n          shrink\n          style={{ position: 'relative' }}\n          required={radioGroupProps.required}\n        >\n          {label}\n          {Boolean(infoTooltip) && <InfoTooltip title={infoTooltip} />}\n        </InputLabel>\n      )}\n      <RadioGrp\n        {...radioGroupProps}\n        onChange={(event, value): void => {\n          onChange(value, event)\n        }}\n        defaultValue={\n          defaultValue ||\n          (radioGroupProps.defaultChecked ? foundNameDefaultValue?.value : null)\n        }\n      >\n        {options.map((item: IOption<unknown>) => {\n          return (\n            <FormControlLabel\n              disabled={item.disabled}\n              key={item.label}\n              value={item.value}\n              control={<Radio />}\n              label={item.label}\n            />\n          )\n        })}\n      </RadioGrp>\n      {Boolean(helperText) && (\n        <FormHelperText error={error} sx={{ marginTop: '-5px' }}>\n          {Boolean(helperIcon) && (\n            <IonIcon\n              name={helperIcon}\n              style={{ fontSize: 18, marginRight: 2 }}\n            />\n          )}\n          {helperText}\n        </FormHelperText>\n      )}\n    </FormControl>\n  )\n}\n\nexport default RadioGroupWithoutError\n","import React, { ForwardedRef, useCallback } from 'react'\n\nimport {\n  IFieldErrorProps,\n  IOnChange,\n  IValidator,\n  useFormError,\n} from '../../../hooks'\n\nimport RadioGroupWithoutError, {\n  IRadioGroupProps,\n} from './RadioGroupWithoutError'\nimport InputTextWithoutError from './InputTextWithoutError'\n\ninterface IRadioGroupErrorProps extends IFieldErrorProps, IRadioGroupProps {}\n\nfunction RadioGroup(props: IRadioGroupErrorProps): JSX.Element {\n  const {\n    onChange,\n    showError,\n    additionalValidator,\n    replacementErrorsMessages,\n    ...inputProps\n  } = props\n\n  const validator = useCallback<IValidator>(\n    (value, event) => {\n      if (additionalValidator) return additionalValidator(value, event)\n      if (inputProps.required && !value) return 'valueMissing'\n      return ''\n    },\n    [additionalValidator, inputProps.required]\n  )\n\n  const [{ ref, ...formErrorProps }] = useFormError(\n    onChange as IOnChange,\n    inputProps.value,\n    showError,\n    validator,\n    false,\n    replacementErrorsMessages\n  )\n\n  return (\n    <>\n      <RadioGroupWithoutError\n        {...inputProps}\n        {...formErrorProps}\n        error={inputProps?.error || formErrorProps?.error}\n        helperIcon={inputProps?.helperIcon || formErrorProps?.helperIcon}\n        helperText={inputProps?.helperText || formErrorProps?.helperText}\n      />\n      <InputTextWithoutError\n        style={{ display: 'none' }}\n        inputRef={ref as ForwardedRef<HTMLInputElement>}\n      />\n    </>\n  )\n}\n\nexport default RadioGroup\n","import React, { ForwardedRef, useCallback } from 'react'\n\nimport { IFieldErrorProps, IValidator, useFormError } from '../../../hooks'\n\nimport RangeWithoutError, { IRangeProps } from './RangeWithoutError'\n\ninterface IRangeErrorProps extends IFieldErrorProps, IRangeProps {}\n\nfunction Range(props: IRangeErrorProps): JSX.Element {\n  const {\n    onChange,\n    showError,\n    additionalValidator,\n    replacementErrorsMessages,\n    ...inputProps\n  } = props\n\n  const validator = useCallback<IValidator>(\n    (value: [number | string | null, number | string | null], event) => {\n      if (additionalValidator) return additionalValidator(value, event)\n      if (\n        inputProps.required &&\n        ((!value[0] && value[0] !== 0) || (!value[1] && value[1] !== 0))\n      ) {\n        return 'valueMissing'\n      }\n      return ''\n    },\n    [additionalValidator, inputProps.required]\n  )\n\n  const [{ ref, ...formErrorProps }] = useFormError(\n    onChange,\n    inputProps.value,\n    showError,\n    validator,\n    inputProps.disabled,\n    replacementErrorsMessages\n  )\n\n  return (\n    <RangeWithoutError\n      {...inputProps}\n      {...formErrorProps}\n      error={inputProps?.error || formErrorProps?.error}\n      helperIcon={inputProps?.helperIcon || formErrorProps?.helperIcon}\n      helperText={inputProps?.helperText || formErrorProps?.helperText}\n      ref={ref as ForwardedRef<HTMLInputElement>}\n    />\n  )\n}\n\nexport default Range\n","import React, {\n  ChangeEvent,\n  ForwardedRef,\n  ReactNode,\n  Ref,\n  SyntheticEvent,\n  forwardRef,\n} from 'react'\nimport { FormHelperText, InputLabel } from '@mui/material'\nimport { useTranslation } from 'next-i18next'\n\nimport { getFormValue } from '../../../services'\n\nimport IonIcon from '../IonIcon/IonIcon'\n\nimport FormControl from './FormControl'\nimport InfoTooltip from './InfoTooltip'\nimport { IUnstyledInputTextProps, Suffix, Wrapper } from './InputText.styled'\nimport { FirstInput, SecondInput } from './Range.styled'\n\nexport interface IRangeProps\n  extends Omit<\n    IUnstyledInputTextProps,\n    'margin' | 'onChange' | 'placeholder' | 'value'\n  > {\n  error?: boolean\n  fullWidth?: boolean\n  infoTooltip?: string\n  inputRef?: Ref<HTMLInputElement>\n  helperText?: ReactNode\n  helperIcon?: string\n  label?: string\n  margin?: 'none' | 'dense' | 'normal'\n  placeholder?: string[]\n  onChange?: (value: (string | number)[], event: SyntheticEvent) => void\n  suffix?: ReactNode\n  value: (string | number | null)[]\n  dataTestId?: string\n}\n\nfunction RangeWithoutError(\n  props: IRangeProps,\n  ref?: ForwardedRef<HTMLInputElement>\n): JSX.Element {\n  const { t } = useTranslation('common')\n  const {\n    error,\n    fullWidth,\n    helperText,\n    helperIcon,\n    id,\n    infoTooltip,\n    inputProps,\n    label,\n    margin = 'none',\n    onChange,\n    placeholder = [],\n    required,\n    suffix,\n    value,\n    type = 'number',\n    dataTestId,\n    ...InputProps\n  } = props\n  const [placeholderFrom, placeholderTo] = placeholder\n  const [valueFrom, valueTo] = value\n\n  function handleChangeFrom(\n    event: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n  ): void {\n    const { value } = event.target\n    if (onChange) {\n      onChange([getFormValue(value, props), valueTo], event)\n    }\n  }\n\n  function handleChangeTo(\n    event: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n  ): void {\n    const { value } = event.target\n    if (onChange) {\n      onChange([valueFrom, getFormValue(value, props)], event)\n    }\n  }\n\n  return (\n    <FormControl fullWidth={fullWidth} margin={margin}>\n      {Boolean(label || infoTooltip) && (\n        <InputLabel shrink htmlFor={id} required={required}>\n          {label}\n          {infoTooltip ? <InfoTooltip title={infoTooltip} /> : null}\n        </InputLabel>\n      )}\n      <Wrapper className=\"InputText__Wrapper\">\n        {t('form.from')}\n        <FirstInput\n          error={error}\n          id={id}\n          onChange={handleChangeFrom}\n          required={required}\n          {...InputProps}\n          type={type}\n          inputProps={{\n            ...inputProps,\n            max: valueTo,\n            'data-testid': dataTestId ? `${dataTestId}First` : null,\n          }}\n          placeholder={placeholderFrom}\n          value={valueFrom ? String(valueFrom) : ''}\n          inputRef={ref}\n        />\n        {t('form.to')}\n        <SecondInput\n          error={error}\n          onChange={handleChangeTo}\n          required={required}\n          {...InputProps}\n          type={type}\n          inputProps={{\n            ...inputProps,\n            min: valueFrom,\n            'data-testid': dataTestId ? `${dataTestId}Second` : null,\n          }}\n          placeholder={placeholderTo}\n          value={valueTo ? String(valueTo) : ''}\n        />\n        {Boolean(suffix) && <Suffix>{suffix}</Suffix>}\n      </Wrapper>\n      {Boolean(helperText) && (\n        <FormHelperText\n          error={error}\n          data-testid={dataTestId ? `${dataTestId}ErrorMessage` : null}\n        >\n          {Boolean(helperIcon) && (\n            <IonIcon\n              name={helperIcon}\n              style={{ fontSize: 18, marginRight: 2 }}\n            />\n          )}\n          {helperText}\n        </FormHelperText>\n      )}\n    </FormControl>\n  )\n}\n\nexport default forwardRef<HTMLInputElement, IRangeProps>(RangeWithoutError)\n","import React, { HTMLAttributes } from 'react'\nimport { styled } from '@mui/system'\n\nimport { InputTextStyled } from './InputText.styled'\n\ninterface IContainerProps extends HTMLAttributes<HTMLDivElement> {\n  margin: 'dense' | 'none' | 'normal'\n}\n\nfunction Container(props: IContainerProps): JSX.Element {\n  const { margin, ...divProps } = props\n  return <div {...divProps} />\n}\n\nexport const ContainerStyled = styled(Container)(({ margin, theme }) => ({\n  position: 'relative',\n  ...(margin === 'dense' && {\n    marginTop: theme.spacing(1),\n    marginBottom: theme.spacing(0.5),\n  }),\n  ...(margin === 'normal' && {\n    marginTop: theme.spacing(2),\n    marginBottom: theme.spacing(1),\n  }),\n  '& label': {\n    position: 'absolute',\n    left: 0,\n    top: 0,\n  },\n  '& .MuiFormLabel-root': {\n    color: theme.palette.colors.neutral[900],\n  },\n  '& .MuiFormLabel-root.Mui-error': {\n    color: theme.palette.colors.neutral[900],\n  },\n}))\n\nexport const FirstInput = styled(InputTextStyled)({\n  margin: '0 0.5em',\n})\n\nexport const SecondInput = styled(InputTextStyled)({\n  margin: '0 0 0 0.5em',\n})\n","import React, { ReactNode } from 'react'\nimport Box from '@mui/material/Box'\nimport { CustomIndicatorsNumber, Slide } from './Slider.styled'\nimport { FormHelperText, InputLabel, SliderProps } from '@mui/material'\n\nimport IonIcon from '../IonIcon/IonIcon'\n\nimport InfoTooltip from './InfoTooltip'\nimport { StyledFormControl } from './InputText.styled'\n\nexport interface ISliderProps\n  extends Omit<SliderProps, 'defaultValue' | 'onChange'> {\n  error?: boolean\n  fullWidth?: boolean\n  infoTooltip?: string\n  label?: string\n  margin?: 'none' | 'dense' | 'normal'\n  helperText?: ReactNode\n  helperIcon?: string\n  onChange?: (value: number) => void\n  value: number\n  width?: number\n  required?: boolean\n  dataTestId?: string\n}\n\nconst indicatorNumber = [-99, 0, 100]\n\nfunction Slider(props: ISliderProps): JSX.Element {\n  const {\n    error,\n    fullWidth,\n    helperText,\n    helperIcon,\n    infoTooltip,\n    label,\n    margin,\n    onChange,\n    required,\n    value,\n    width,\n    dataTestId,\n  } = props\n\n  function handleChange(_: Event, value: number): void {\n    if (onChange) {\n      onChange(value)\n    }\n  }\n  return (\n    <StyledFormControl\n      error={error}\n      fullWidth={fullWidth}\n      margin={margin}\n      variant=\"standard\"\n    >\n      {Boolean(label || infoTooltip) && (\n        <InputLabel shrink required={required}>\n          {label}\n          {infoTooltip ? <InfoTooltip title={infoTooltip} /> : null}\n        </InputLabel>\n      )}\n      <Box\n        width={!fullWidth ? width : undefined}\n        sx={{ marginTop: label ? '4px' : 0 }}\n      >\n        <CustomIndicatorsNumber>\n          {indicatorNumber.map((item) => (\n            <div key={item}>{item}</div>\n          ))}\n        </CustomIndicatorsNumber>\n        <Slide\n          valueLabelDisplay=\"on\"\n          max={100}\n          value={value}\n          min={-99}\n          onChange={handleChange}\n          sx={{\n            '.MuiSlider-rail': {\n              '::after': {\n                left: value < 0 ? `calc(50% - ${-value / 2}%)` : '50%',\n                width: `${Math.abs(value) / 2}%`,\n              },\n            },\n          }}\n          data-testid={dataTestId}\n        />\n      </Box>\n      {Boolean(helperText) && (\n        <FormHelperText>\n          {Boolean(helperIcon) && (\n            <IonIcon\n              name={helperIcon}\n              style={{ fontSize: 18, marginRight: 2 }}\n            />\n          )}\n          {helperText}\n        </FormHelperText>\n      )}\n    </StyledFormControl>\n  )\n}\n\nSlider.defaultProps = {\n  width: 376,\n}\n\nexport default Slider\n","import { styled } from '@mui/system'\nimport SliderMui from '@mui/material/Slider'\n\nexport const Slide = styled(SliderMui)(({ theme }) => ({\n  '.MuiSlider-root': {\n    height: '10px!important',\n  },\n  '.MuiSlider-rail': {\n    height: '7px',\n    border: '1px solid',\n    boxSizing: 'border-box',\n    borderColor: theme.palette.colors.neutral[400],\n    backgroundColor: theme.palette.colors.neutral[300],\n    '::after': {\n      content: \"''\",\n      position: 'absolute',\n      top: -1,\n      height: '100%',\n      background: theme.palette.colors.primary[400],\n      borderRadius: theme.spacing(1),\n      border: '1px solid',\n      borderColor: theme.palette.colors.primary[500],\n    },\n  },\n  '.MuiSlider-track': {\n    display: 'none',\n  },\n  '.MuiSlider-valueLabelOpen': {\n    borderRadius: theme.spacing(1),\n    backgroundColor: theme.palette.colors.primary[100],\n    border: '1px solid',\n    borderColor: theme.palette.colors.primary[200],\n    color: theme.palette.colors.neutral[900],\n    paddingRight: 0,\n    paddingLeft: 0,\n    paddingTop: 2,\n    paddingBottom: 2,\n    fontSize: '14px',\n    width: '34px',\n    fontWeight: '600',\n    top: '-6px',\n    '::before': {\n      display: 'none',\n    },\n  },\n  '.MuiSlider-thumb': {\n    color: theme.palette.colors.primary[500],\n    border: '1px solid',\n    borderColor: theme.palette.colors.primary[100],\n  },\n}))\n\nexport const CustomIndicatorsNumber = styled('div')(({ theme }) => ({\n  display: 'flex',\n  flexDirection: 'row',\n  justifyContent: 'space-between',\n  color: theme.palette.colors.neutral[900],\n  fontWeight: '400',\n  lineHeight: '18px',\n  fontSize: '12px',\n}))\n","import React, { ChangeEvent } from 'react'\nimport {\n  FormHelperText,\n  InputLabel,\n  Switch as MuiSwitch,\n  SwitchProps,\n} from '@mui/material'\nimport { StyleFormControl } from './Switch.styled'\n\nimport IonIcon from '../IonIcon/IonIcon'\nimport InfoTooltip from './InfoTooltip'\n\ninterface IProps extends Omit<SwitchProps, 'onChange'> {\n  helperIcon?: string\n  helperText?: string\n  infoTooltip?: string\n  label?: string\n  margin?: 'none' | 'dense' | 'normal'\n  onChange?: (value: boolean, event: ChangeEvent<HTMLInputElement>) => void\n}\n\nfunction Switch(props: IProps): JSX.Element {\n  const {\n    helperIcon,\n    helperText,\n    infoTooltip,\n    label,\n    margin,\n    onChange,\n    required,\n    ...switchProps\n  } = props\n\n  function handleChange(event: ChangeEvent<HTMLInputElement>): void {\n    onChange(event.target.checked, event)\n  }\n\n  return (\n    <StyleFormControl\n      fullWidth\n      variant=\"standard\"\n      margin={margin}\n      className=\"switch\"\n    >\n      {label || infoTooltip ? (\n        <InputLabel sx={{ maxWidth: '90%' }} required={required} shrink>\n          {label ? label : null}\n          {infoTooltip ? <InfoTooltip title={infoTooltip} /> : null}\n        </InputLabel>\n      ) : undefined}\n      <MuiSwitch\n        {...switchProps}\n        onChange={handleChange}\n        sx={\n          label || infoTooltip ? { marginLeft: '-12px', marginTop: '20px' } : {}\n        }\n      />\n      {Boolean(helperText) && (\n        <FormHelperText>\n          {Boolean(helperIcon) && (\n            <IonIcon\n              name={helperIcon}\n              style={{ fontSize: 18, marginRight: 2 }}\n            />\n          )}\n          {helperText}\n        </FormHelperText>\n      )}\n    </StyleFormControl>\n  )\n}\n\nexport default Switch\n","import { styled } from '@mui/system'\nimport { FormControl } from '@mui/material'\n\nexport const StyleFormControl = styled(FormControl)(() => ({\n  fontFamily: 'var(--gally-font)',\n  fontStyle: 'normal',\n  fontWeight: 500,\n  fontSize: '14px',\n  lineHeight: '20px',\n  color: '#151A47',\n  flex: 'none',\n  order: 0,\n  flexGrow: 0,\n  width: '100%',\n}))\n","import React, {\n  ForwardedRef,\n  ReactNode,\n  SyntheticEvent,\n  forwardRef,\n} from 'react'\nimport {\n  FormControl,\n  FormHelperText,\n  InputLabel,\n  TextareaAutosize,\n} from '@mui/material'\nimport classNames from 'classnames'\nimport { TextareaAutosizeProps } from '@mui/base/TextareaAutosize/TextareaAutosize'\nimport IonIcon from '../IonIcon/IonIcon'\n\n//Example get here https://codesandbox.io/s/n4t82?file=/src/index.js:612-654\nexport interface ITextareaProps\n  extends Omit<TextareaAutosizeProps, 'onChange'> {\n  error?: boolean\n  fullWidth?: boolean\n  label?: string\n  margin?: 'none' | 'dense' | 'normal'\n  resizable?: boolean\n  onChange?: (value: string, event: SyntheticEvent) => void\n  helperText?: ReactNode\n  helperIcon?: string\n}\n\nfunction TextareaWithoutError(\n  props: ITextareaProps,\n  ref?: ForwardedRef<HTMLTextAreaElement>\n): JSX.Element {\n  const {\n    error,\n    fullWidth,\n    id,\n    label,\n    margin,\n    maxLength,\n    required,\n    resizable,\n    value,\n    helperText,\n    helperIcon,\n    onChange,\n    ...other\n  } = props\n  const maxLengthValue = maxLength ?? 250\n  const valueString = String(value ?? '')\n  return (\n    <FormControl fullWidth={fullWidth} margin={margin} variant=\"standard\">\n      {label ? (\n        <InputLabel shrink htmlFor={id} required={required}>\n          {label}\n        </InputLabel>\n      ) : null}\n      <TextareaAutosize\n        {...other}\n        id={id}\n        required={required}\n        maxLength={maxLengthValue}\n        style={{\n          height: 150,\n          minWidth: 320,\n          resize: resizable ? 'both' : 'none',\n        }}\n        className={classNames({\n          'textarea--filled': valueString.length > 0,\n          'textarea--error': error,\n        })}\n        value={valueString}\n        onChange={(event): void => {\n          onChange(event.target.value, event)\n        }}\n        ref={ref}\n      />\n      <div\n        style={{\n          display: 'flex',\n          flexDirection: 'row',\n          justifyContent: helperText ? 'space-between' : 'flex-end',\n        }}\n      >\n        {Boolean(helperText) && (\n          <FormHelperText error={error}>\n            {Boolean(helperIcon) && (\n              <IonIcon\n                name={helperIcon}\n                style={{ fontSize: 18, marginRight: 2 }}\n              />\n            )}\n            {helperText}\n          </FormHelperText>\n        )}\n        <FormHelperText style={{ display: 'block', textAlign: 'right' }}>\n          {`${valueString.length}/${maxLengthValue}`}\n        </FormHelperText>\n      </div>\n    </FormControl>\n  )\n}\n\nexport default forwardRef<HTMLTextAreaElement, ITextareaProps>(\n  TextareaWithoutError\n)\n","import React, { ForwardedRef, useCallback } from 'react'\n\nimport {\n  IFieldErrorProps,\n  IOnChange,\n  IValidator,\n  useFormError,\n} from '../../../hooks'\n\nimport TextareaWithoutError, { ITextareaProps } from './TextareaWithoutError'\n\ninterface ITextAreaErrorProps extends IFieldErrorProps, ITextareaProps {}\n\nfunction TextArea(props: ITextAreaErrorProps): JSX.Element {\n  const { onChange, showError, additionalValidator, ...inputProps } = props\n\n  const validator = useCallback<IValidator>(\n    (value, event) => {\n      if (additionalValidator) return additionalValidator(value, event)\n      return ''\n    },\n    [additionalValidator]\n  )\n\n  const [{ ref, ...formErrorProps }] = useFormError(\n    onChange as IOnChange,\n    inputProps.value,\n    showError,\n    validator,\n    inputProps.disabled\n  )\n\n  return (\n    <TextareaWithoutError\n      {...inputProps}\n      {...formErrorProps}\n      error={inputProps?.error || formErrorProps?.error}\n      helperIcon={inputProps?.helperIcon || formErrorProps?.helperIcon}\n      helperText={inputProps?.helperText || formErrorProps?.helperText}\n      ref={ref as ForwardedRef<HTMLTextAreaElement>}\n    />\n  )\n}\n\nexport default TextArea\n","import React, {\n  ChangeEvent,\n  ForwardedRef,\n  HTMLAttributes,\n  SyntheticEvent,\n  forwardRef,\n  useCallback,\n  useMemo,\n  useState,\n} from 'react'\nimport {\n  AutocompleteValue,\n  IconButtonProps,\n  useAutocomplete,\n} from '@mui/material'\nimport { useTranslation } from 'next-i18next'\nimport classNames from 'classnames'\nimport { ModifierArguments, Options } from '@popperjs/core'\n\nimport { ITreeItem, flatTree } from '@elastic-suite/gally-admin-shared'\n\nimport IonIcon from '../IonIcon/IonIcon'\n\nimport Chip from '../Chip/Chip'\nimport Tree from '../tree/Tree'\n\nimport { SmallStyledPaper, StyledPaper } from './DropDown.styled'\nimport { IInputTextProps } from './InputTextWithoutError'\nimport {\n  AutocompleteClearIndicator,\n  AutocompletePopupIndicator,\n  EndAdornment,\n  IAutocompletePopupIndicatorProps,\n  Input,\n  Root,\n  TreeContainer,\n  TreePopper,\n} from './TreeSelector.styled'\n\nexport interface ITreeSelectorProps<Multiple extends boolean | undefined>\n  extends Omit<IInputTextProps, 'onChange' | 'value' | 'ref'> {\n  data: ITreeItem[]\n  limitTags?: number\n  multiple?: Multiple\n  onChange?: Multiple extends true\n    ? (value: ITreeItem[], event: SyntheticEvent) => void\n    : (value: ITreeItem, event: SyntheticEvent) => void\n  value: Multiple extends true ? ITreeItem[] : ITreeItem\n}\n\nfunction TreeSelectorWithoutError<Multiple extends boolean | undefined>(\n  props: ITreeSelectorProps<Multiple>,\n  ref?: ForwardedRef<HTMLInputElement>\n): JSX.Element {\n  const {\n    data,\n    fullWidth,\n    limitTags = 2,\n    onChange: onChangeProps,\n    style,\n    value: valueProps,\n    ...other\n  } = props\n  const { t } = useTranslation('common')\n  const [search, setSearch] = useState('')\n  const [openItems, setOpenItems] = useState<Record<string, boolean>>({})\n\n  const options: ITreeItem[] = useMemo(() => {\n    const flat: ITreeItem[] = []\n    flatTree(data, flat)\n    return flat\n  }, [data])\n  const getOptionLabel = useCallback((option?: ITreeItem) => option?.name, [])\n  const filterOptions = useCallback((options: ITreeItem[]) => options, [])\n  const onInputChange = useCallback(\n    (event?: ChangeEvent<HTMLInputElement>) =>\n      event?.target && setSearch(event.target.value),\n    []\n  )\n\n  function handleChange(\n    event: SyntheticEvent,\n    value: AutocompleteValue<ITreeItem, Multiple, false, false>\n  ): void {\n    if (multiple) {\n      const onChange = onChangeProps as (\n        value: ITreeItem[],\n        event: SyntheticEvent\n      ) => void\n      onChange(value as ITreeItem[], event)\n    } else {\n      const onChange = onChangeProps as (\n        value: ITreeItem,\n        event: SyntheticEvent\n      ) => void\n      onChange(value as ITreeItem, event)\n    }\n  }\n\n  const { disabled, multiple, readOnly, small } = other\n  const {\n    getClearProps,\n    getInputProps,\n    getPopupIndicatorProps,\n    getRootProps,\n    getTagProps,\n    getListboxProps,\n    getOptionProps,\n    value,\n    dirty,\n    id,\n    popupOpen,\n    focused,\n    anchorEl,\n    setAnchorEl,\n  } = useAutocomplete<ITreeItem, Multiple, false, false>({\n    ...other,\n    autoComplete: false,\n    componentName: 'TreeSelector',\n    defaultValue: (multiple ? [] : null) as AutocompleteValue<\n      ITreeItem,\n      Multiple,\n      false,\n      false\n    >,\n    disableCloseOnSelect: true,\n    filterOptions,\n    getOptionLabel,\n    onChange: handleChange,\n    onInputChange,\n    options,\n    isOptionEqualToValue: (option, value): boolean => {\n      return option.id === value.id\n    },\n    value: valueProps as AutocompleteValue<ITreeItem, Multiple, false, false>,\n  })\n\n  const getItemProps = useCallback(\n    (item: ITreeItem): HTMLAttributes<HTMLLIElement> => {\n      const index = options.indexOf(item)\n      return getOptionProps({ option: item, index })\n    },\n    [getOptionProps, options]\n  )\n  const getCustomizedTagProps = useCallback(\n    (params: {\n      index: number\n    }): {\n      key: number\n      'data-tag-index': number\n      disabled: boolean\n      tabIndex: -1\n      onDelete: (event: SyntheticEvent) => void\n    } => ({\n      disabled,\n      ...getTagProps(params),\n    }),\n    [disabled, getTagProps]\n  )\n  const modifiers: Options['modifiers'] = useMemo(\n    () => [\n      {\n        name: 'maxHeight',\n        enabled: true,\n        phase: 'read',\n        fn(args: ModifierArguments<Options>): void {\n          const popperEl = args.state.elements.popper\n          const transforms = popperEl.style.transform.split(',')\n          if (transforms.length > 1) {\n            const top = transforms[1].slice(0, -1)\n            ;(\n              popperEl.childNodes[0] as HTMLDivElement\n            ).style.maxHeight = `calc(100vh - ${top})`\n          }\n        },\n      },\n    ],\n    []\n  )\n\n  const hasClearIcon = !disabled && dirty && !readOnly\n  const Paper = small ? SmallStyledPaper : StyledPaper\n  const clearText = t('form.clear')\n  const closeText = t('form.close')\n  const openText = t('form.open')\n\n  let startAdornment\n  if (multiple) {\n    startAdornment = (value as ITreeItem[]).map(\n      (option: ITreeItem, index: number) => (\n        <Chip\n          // eslint-disable-next-line react/no-array-index-key\n          key={index}\n          label={getOptionLabel(option)}\n          size={small ? 'small' : 'medium'}\n          {...getCustomizedTagProps({ index })}\n        />\n      )\n    )\n  }\n  if (limitTags > -1 && Array.isArray(startAdornment)) {\n    const more = startAdornment.length - limitTags\n    if (!focused && more > 0) {\n      startAdornment = startAdornment.splice(0, limitTags)\n      startAdornment.push(<span key={startAdornment.length}>+{more}</span>)\n    }\n  }\n\n  return (\n    <Root\n      {...getRootProps()}\n      style={style}\n      sx={{ display: fullWidth ? 'block' : 'inline-block' }}\n    >\n      <Input\n        {...other}\n        inputRef={ref}\n        className={classNames({ focused, hasClearIcon })}\n        endAdornment={\n          <EndAdornment position=\"end\">\n            {Boolean(hasClearIcon) && (\n              <AutocompleteClearIndicator\n                {...(getClearProps() as unknown as IconButtonProps)}\n                aria-label={clearText}\n                className=\"AutocompleteClearIndicator\"\n                title={clearText}\n              >\n                <IonIcon name=\"close\" />\n              </AutocompleteClearIndicator>\n            )}\n            <AutocompletePopupIndicator\n              {...(getPopupIndicatorProps() as unknown as IAutocompletePopupIndicatorProps)}\n              aria-label={popupOpen ? closeText : openText}\n              disabled={disabled}\n              popupOpen={popupOpen}\n              title={popupOpen ? closeText : openText}\n            >\n              <IonIcon name=\"chevron-down\" />\n            </AutocompletePopupIndicator>\n          </EndAdornment>\n        }\n        fullWidth={fullWidth}\n        id={id}\n        inputProps={getInputProps()}\n        required={false}\n        requiredLabel={other.required}\n        ref={setAnchorEl}\n        startAdornment={startAdornment}\n      />\n      {Boolean(anchorEl) && (\n        <TreePopper\n          role=\"presentation\"\n          anchorEl={anchorEl}\n          modifiers={modifiers}\n          open={popupOpen}\n          placement=\"bottom-start\"\n        >\n          <Paper>\n            <TreeContainer>\n              <Tree\n                data={data}\n                getItemProps={getItemProps}\n                getListboxProps={getListboxProps}\n                multiple={multiple}\n                onToggle={setOpenItems}\n                openItems={openItems}\n                search={search}\n                small={small}\n                value={value as Multiple extends true ? ITreeItem[] : ITreeItem}\n              />\n            </TreeContainer>\n          </Paper>\n        </TreePopper>\n      )}\n    </Root>\n  )\n}\n\nexport default forwardRef(TreeSelectorWithoutError)\n","/* eslint-disable react/destructuring-assignment */\nimport React, { HTMLAttributes, MouseEvent } from 'react'\nimport parse from 'autosuggest-highlight/parse'\nimport match from 'autosuggest-highlight/match'\n\nimport { useTranslation } from 'next-i18next'\n\nimport { ITreeItem } from '@elastic-suite/gally-admin-shared'\n\nimport Checkbox from '../form/CheckboxWithoutError'\nimport IonIcon from '../IonIcon/IonIcon'\n\nimport {\n  CustomBtn,\n  CustomContainer,\n  CustomLi,\n  CustomRoot,\n  CustomTitle,\n  CustomTitleBase,\n  CustomTitleContainer,\n  CustomVirtual,\n  SmallCustomBtn,\n  SmallCustomContainer,\n  Underline,\n} from './Tree.styled'\n\nfunction highlight(label: string, search: string): JSX.Element[] {\n  const matches = match(label, search)\n  const parts = parse(label, matches)\n  return parts.map(\n    (\n      { highlight, text }: { highlight: boolean; text: string },\n      index: number\n    ) => {\n      const Span = highlight ? Underline : 'span'\n      return (\n        // eslint-disable-next-line react/no-array-index-key\n        <Span key={index}>{text}</Span>\n      )\n    }\n  )\n}\n\ninterface IProps<Multiple extends boolean | undefined> {\n  base?: boolean\n  data: ITreeItem[]\n  getItemProps?: (item: ITreeItem) => HTMLAttributes<HTMLLIElement>\n  getListboxProps?: () => HTMLAttributes<HTMLUListElement>\n  multiple?: Multiple\n  onChange?: Multiple extends true\n    ? (item?: ITreeItem[]) => void\n    : (item?: ITreeItem) => void\n  onToggle?: (items: Record<string, boolean>) => void\n  openItems?: Record<string, boolean>\n  search?: string\n  small?: boolean\n  value?: Multiple extends true ? ITreeItem[] : ITreeItem\n}\n\nfunction Tree<Multiple extends boolean | undefined>(\n  props: IProps<Multiple>\n): JSX.Element {\n  const {\n    base = true,\n    data,\n    getItemProps,\n    getListboxProps,\n    multiple,\n    onChange,\n    onToggle,\n    openItems,\n    search,\n    small,\n    value,\n  } = props\n\n  const { t } = useTranslation('categories')\n\n  const Title = base ? CustomTitleBase : CustomTitle\n  const Container = small ? SmallCustomContainer : CustomContainer\n  const Button = small ? SmallCustomBtn : CustomBtn\n\n  function handleClick(event: MouseEvent<HTMLUListElement>): void {\n    event.stopPropagation()\n  }\n\n  function handleToggle(item: ITreeItem) {\n    return (event: MouseEvent<HTMLButtonElement>): void => {\n      event.stopPropagation()\n      onToggle({\n        ...openItems,\n        [item.id]: !openItems[item.id],\n      })\n    }\n  }\n\n  function handleChecked(item: ITreeItem) {\n    return (): void => {\n      if (onChange) {\n        if (multiple) {\n          const onChange = props.onChange as (item?: ITreeItem[]) => void\n          const value = props.value as ITreeItem[]\n          const checked = value.includes(item)\n          checked\n            ? onChange(value.filter((val) => val !== item))\n            : onChange(value.concat(item))\n        } else {\n          const onChange = props.onChange as (item?: ITreeItem) => void\n          const value = props.value as ITreeItem\n          const checked = value === item\n          !checked && onChange(item)\n        }\n      }\n    }\n  }\n\n  return (\n    <CustomRoot onClick={handleClick} {...(base && getListboxProps?.())}>\n      {data.map((item: ITreeItem) => {\n        const title = (\n          <Title onClick={handleChecked(item)}>\n            {search ? (\n              highlight(item.name, search)\n            ) : !(value instanceof Array) && value === item ? (\n              <Underline>{item.name}</Underline>\n            ) : (\n              item.name\n            )}\n          </Title>\n        )\n        return (\n          <CustomLi\n            key={item.id}\n            {...getItemProps?.(item)}\n            style={{ marginLeft: base ? 0 : small ? 12 : 20 }}\n          >\n            <Container\n              style={{\n                marginLeft: item.children ? 0 : small ? 19 : 28,\n              }}\n            >\n              {item.children ? (\n                <Button onClick={handleToggle(item)}>\n                  <IonIcon\n                    name={openItems[item.id] ? 'minus' : 'more'}\n                    style={{ fontSize: small ? '15px' : '24px' }}\n                  />\n                </Button>\n              ) : null}\n              <CustomTitleContainer>\n                {multiple ? (\n                  <Checkbox\n                    checked={\n                      value instanceof Array\n                        ? value.includes(item)\n                        : value === item\n                    }\n                    label={title}\n                    list\n                    onChange={handleChecked(item)}\n                    small={small}\n                  />\n                ) : (\n                  title\n                )}\n                {item.isVirtual ? (\n                  <CustomVirtual>{t('tree.virtual')}</CustomVirtual>\n                ) : null}\n              </CustomTitleContainer>\n            </Container>\n            {Boolean(openItems[item.id] && item.children) && (\n              <Tree {...props} base={false} data={item.children} />\n            )}\n          </CustomLi>\n        )\n      })}\n    </CustomRoot>\n  )\n}\n\nTree.defaultProps = {\n  base: true,\n  openItems: {},\n}\n\nexport default Tree\n","import { keyframes, styled } from '@mui/system'\n\nexport const CustomRoot = styled('ul')({\n  margin: 0,\n  padding: '2px 0',\n  fontFamily: 'var(--gally-font)',\n  fontWeight: 500,\n})\n\nconst opacity = keyframes`\nfrom {\n  opacity: 0;\n}\n\nto {\n  opacity: 1;\n}\n`\nexport const CustomLi = styled('li')(({ theme }) => ({\n  listStyleType: 'none',\n  paddingTop: theme.spacing(0.5),\n  opacity: 0,\n  animation: `${opacity} 1000ms forwards`,\n}))\n\nexport const CustomTitle = styled('button')(({ theme }) => ({\n  color: theme.palette.colors.secondary[600],\n  position: 'relative',\n  border: 'none',\n  background: 'none',\n  padding: 0,\n  cursor: 'pointer',\n  fontFamily: 'var(--gally-font)',\n  fontSize: '12px',\n  fontWeight: 500,\n}))\n\nexport const CustomTitleBase = styled(CustomTitle)(({ theme }) => ({\n  color: theme.palette.colors.neutral[900],\n}))\n\nexport const Underline = styled('span')({\n  textDecoration: 'underline',\n})\n\nexport const CustomContainer = styled('div')({\n  marginTop: 1,\n  marginBottom: 1,\n  display: 'flex',\n  alignItems: 'center',\n  gap: '4px',\n  height: '24px',\n})\n\nexport const SmallCustomContainer = styled(CustomContainer)({\n  height: '18px',\n})\n\nexport const CustomVirtual = styled('span')(({ theme }) => ({\n  color: theme.palette.colors.neutral['900'],\n  fontSize: '10px',\n  fontWeight: 600,\n  lineHeight: '12px',\n  background: theme.palette.colors.neutral['300'],\n  paddingTop: '2px',\n  paddingBottom: '2px',\n  paddingRight: '4px',\n  paddingLeft: '4px',\n  borderRadius: theme.spacing(1),\n  marginLeft: theme.spacing(0.75),\n}))\n\nexport const CustomBtn = styled('button')(({ theme }) => ({\n  color: theme.palette.colors.neutral['500'],\n  borderRadius: '11px',\n  width: '24px',\n  boxSizing: 'border-box',\n  height: '24px',\n  textDecoration: 'none',\n  border: 'none',\n  fontSize: '24px',\n  transition: 'transform 100ms linear',\n  display: 'flex',\n  justifyContent: 'center',\n  padding: '2px',\n  alignItems: 'center',\n  background: 'none',\n  '&:hover': {\n    cursor: 'pointer',\n    transform: 'rotate(180deg)',\n    color: theme.palette.colors.secondary['600'],\n    background: theme.palette.colors.secondary['100'],\n  },\n}))\n\nexport const SmallCustomBtn = styled(CustomBtn)({\n  height: '15px',\n  width: '15px',\n  padding: 0,\n  fontSize: '12px',\n})\n\nexport const CustomTitleContainer = styled('div')({\n  display: 'flex',\n  alignItems: 'center',\n  justifyContent: 'center',\n})\n","import { FunctionComponent } from 'react'\nimport {\n  IconButton,\n  IconButtonProps,\n  InputAdornment,\n  Popper,\n} from '@mui/material'\nimport { styled } from '@mui/system'\n\nimport InputTextWithoutError from './InputTextWithoutError'\n\nexport const Root = styled('div')(() => ({\n  display: 'inline-block',\n}))\n\nexport const Input = styled(InputTextWithoutError)(() => ({\n  paddingRight: '30px',\n  flexWrap: 'wrap',\n  maxWidth: '400px',\n  '& .MuiInputBase-input': {\n    width: 0,\n    minWidth: '30px',\n    flexGrow: 1,\n    textOverflow: 'ellipsis',\n  },\n  '& .MuiChip-root': {\n    margin: '2px 3px',\n    maxWidth: 'calc(100% - 6px)',\n  },\n  '&.hasClearIcon': {\n    paddingRight: '56px',\n  },\n  '&.hasClearIcon:hover .AutocompleteClearIndicator': {\n    visibility: 'visible',\n  },\n  '&.focused .AutocompleteClearIndicator': {\n    visibility: 'visible',\n  },\n  '@media (pointer: fine)': {\n    '&:hover .AutocompleteClearIndicator': {\n      visibility: 'visible',\n    },\n  },\n}))\n\nexport const EndAdornment = styled(InputAdornment)(() => ({\n  position: 'absolute',\n  top: 0,\n  right: '12px',\n  height: '100%',\n  display: 'flex',\n  alignItems: 'center',\n  margin: 0,\n  maxHeight: 'initial',\n}))\n\nexport const AutocompleteClearIndicator = styled(IconButton)(({ theme }) => ({\n  fontSize: 14,\n  color: theme.palette.colors.neutral['900'],\n  padding: '4px',\n  marginRight: '-2px',\n  visibility: 'hidden',\n}))\n\nexport const TreeContainer = styled('div')({\n  padding: '10px 16px',\n})\n\nexport interface IAutocompletePopupIndicatorProps extends IconButtonProps {\n  popupOpen: boolean\n}\n\nconst autocompletePopupIndicatorProps = ['popupOpen']\nexport const AutocompletePopupIndicator = styled(\n  IconButton as FunctionComponent<IAutocompletePopupIndicatorProps>,\n  {\n    shouldForwardProp: (prop: string) =>\n      !autocompletePopupIndicatorProps.includes(prop),\n  }\n)(({ popupOpen, theme }) => ({\n  fontSize: 14,\n  color: theme.palette.colors.neutral['900'],\n  padding: '2px',\n  marginRight: '-2px',\n  ...(popupOpen && {\n    transform: 'rotate(180deg)',\n  }),\n}))\n\nexport const TreePopper = styled(Popper)({\n  zIndex: 1,\n})\n","import React, { ForwardedRef, useCallback } from 'react'\n\nimport { IFieldErrorProps, IValidator, useFormError } from '../../../hooks'\n\nimport TreeSelectorWithoutError, {\n  ITreeSelectorProps,\n} from './TreeSelectorWithoutError'\ninterface ITreeSelectorErrorProps<Multiple extends boolean | undefined>\n  extends IFieldErrorProps,\n    ITreeSelectorProps<Multiple> {}\n\nfunction TreeSelector<Multiple extends boolean | undefined>(\n  props: ITreeSelectorErrorProps<Multiple>\n): JSX.Element {\n  const { onChange, showError, additionalValidator, ...inputProps } = props\n\n  const validator = useCallback<IValidator>(\n    (value: unknown, event) => {\n      if (additionalValidator) {\n        return additionalValidator(value, event)\n      }\n      if (inputProps.multiple) {\n        if (inputProps.required && (value as unknown[]).length === 0) {\n          return 'valueMissing'\n        }\n      } else if (inputProps.required && !value) {\n        return 'valueMissing'\n      }\n      return ''\n    },\n    [additionalValidator, inputProps.multiple, inputProps.required]\n  )\n\n  const [{ ref, ...formErrorProps }] = useFormError(\n    onChange,\n    inputProps.value,\n    showError,\n    validator,\n    inputProps.disabled\n  )\n\n  return (\n    <TreeSelectorWithoutError\n      {...inputProps}\n      {...formErrorProps}\n      error={inputProps?.error || formErrorProps?.error}\n      helperIcon={inputProps?.helperIcon || formErrorProps?.helperIcon}\n      helperText={inputProps?.helperText || formErrorProps?.helperText}\n      ref={ref as ForwardedRef<HTMLInputElement>}\n    />\n  )\n}\n\nexport default TreeSelector\n","import React from 'react'\nimport { firstLetterUppercase } from '@elastic-suite/gally-admin-shared'\nimport InfoTooltip from '../form/InfoTooltip'\n\ninterface IProps {\n  name?: string\n  max?: number\n  toolTip?: boolean\n  firstLetterUpp?: boolean\n}\n\nfunction FormatText(props: IProps): JSX.Element {\n  const { name, max = 28, toolTip, firstLetterUpp } = props\n\n  if (!name) {\n    return null\n  }\n\n  let newName = ''\n  if (name.length > max) {\n    newName = `${name.substring(0, max)}...`\n    return toolTip ? (\n      <InfoTooltip title={name} noStyle>\n        {firstLetterUpp ? firstLetterUppercase(newName) : newName}\n      </InfoTooltip>\n    ) : firstLetterUpp ? (\n      <>{firstLetterUppercase(newName)}</>\n    ) : (\n      <>{newName}</>\n    )\n  }\n\n  return <>{firstLetterUpp ? firstLetterUppercase(name) : name}</>\n}\n\nexport default FormatText\n","import React, { useState } from 'react'\nimport { styled } from '@mui/system'\nimport Collapse from '@mui/material/Collapse'\nimport Box from '@mui/material/Box'\n\nimport IonIcon from '../IonIcon/IonIcon'\n\nimport HelpOver from './HelpOver'\n\nconst CustomHelp = styled('div')(({ theme }) => ({\n  display: 'flex',\n  alignItems: 'center',\n  position: 'relative',\n  fontFamily: 'var(--gally-font)',\n  border: '1px solid',\n  borderRadius: 8,\n  padding: theme.spacing(1),\n  borderColor: theme.palette.colors.neutral['300'],\n  cursor: 'pointer',\n  zIndex: 9999,\n  background: theme.palette.background.default,\n  transition: 'background 500ms',\n  '&:hover': {\n    background: theme.palette.colors.neutral[300],\n  },\n  '&::before': {\n    content: \"''\",\n    position: 'absolute',\n    top: '100%',\n    height: '4px',\n    left: '0',\n    width: '100%',\n  },\n}))\n\nconst CustomHelpInit = styled('div')(({ theme }) => ({\n  marginTop: theme.spacing(0.4),\n  width: 'max-content',\n  border: '1px solid',\n  borderRadius: 8,\n  borderColor: theme.palette.colors.neutral['300'],\n  backgroundColor: theme.palette.background.default,\n}))\n\nfunction Help(): JSX.Element {\n  const [helpVisible, setHelpVisible] = useState(false)\n\n  return (\n    <Box\n      data-testid=\"helpToolTip\"\n      onMouseOver={(): void => setHelpVisible(true)}\n      onMouseLeave={(): void => setHelpVisible(false)}\n      onFocus={(): void => setHelpVisible(true)}\n      onBlur={(): void => setHelpVisible(false)}\n    >\n      <CustomHelp>\n        <IonIcon\n          name=\"help-circle-outline\"\n          style={{ fontSize: '18px', color: '#8187B9' }}\n        />\n      </CustomHelp>\n      <Box sx={{ position: 'relative' }}>\n        <Collapse in={helpVisible} sx={{ position: 'absolute', right: 0 }}>\n          <CustomHelpInit>\n            <HelpOver />\n          </CustomHelpInit>\n        </Collapse>\n      </Box>\n    </Box>\n  )\n}\n\nexport default Help\n","import React from 'react'\nimport { styled } from '@mui/system'\nimport Link from 'next/link'\n\nconst CustomRoot = styled('div')(({ theme }) => ({\n  display: 'flex',\n  flexDirection: 'column',\n  gap: theme.spacing(1),\n  paddingTop: theme.spacing(1),\n  paddingBottom: theme.spacing(1),\n  paddingRight: theme.spacing(1.5),\n  paddingLeft: theme.spacing(1.5),\n  color: theme.palette.colors.neutral['800'],\n  fontStyle: 'normal',\n  fontWeight: 400,\n  fontSize: '12px',\n  fontFamily: 'Invar(--gally-font)ter',\n  lineHeight: '18px',\n}))\n\nconst CustomA = styled('a')({\n  textDecoration: 'none',\n})\n\nfunction HelpOver(): JSX.Element {\n  return (\n    <CustomRoot data-testid=\"helpOver\">\n      <Link href=\"https://elasticsuite.zendesk.com\" legacyBehavior passHref>\n        <CustomA>Helpdesk</CustomA>\n      </Link>\n\n      <Link\n        href=\"https://elastic-suite.github.io/documentation/\"\n        legacyBehavior\n        passHref\n      >\n        <CustomA>User guide</CustomA>\n      </Link>\n\n      {process.env.NODE_ENV === 'development' && (\n        <CustomA href=\"/docs\">API documentation</CustomA>\n      )}\n    </CustomRoot>\n  )\n}\n\nexport default HelpOver\n","import React from 'react'\nimport { Collapse } from '@mui/material'\nimport Link from 'next/link'\nimport { keyframes, styled } from '@mui/system'\nimport { IMenuChild } from '@elastic-suite/gally-admin-shared'\n\nimport IonIcon from '../IonIcon/IonIcon'\n\n/*\n * Create function to create path from code of the menu item\n */\nfunction slugify(code: string, depth: number): string {\n  let slug = code\n  for (let i = 0; i < depth; i++) {\n    slug = slug.replace('_', '/')\n  }\n  return slug\n}\n\nconst CustomRoot = styled('div')({\n  display: 'flex',\n  flexDirection: 'column',\n  opacity: 1,\n  transition: 'all 500ms',\n})\n\nconst CustomLineAHref = styled('a')(({ theme }) => ({\n  display: 'flex',\n  flexDirection: 'row',\n  alignItems: 'center',\n  gap: theme.spacing(1),\n  paddingLeft: theme.spacing(1),\n  paddingBottom: theme.spacing(1),\n  paddingTop: theme.spacing(1),\n  cursor: 'pointer',\n  color: 'inherit',\n  textDecoration: 'unset',\n  fontFamily: 'var(--gally-font)',\n  fontWeight: 500,\n  fontSize: 14,\n  lineHeight: '20px',\n  background: 'transparent',\n  border: 0,\n}))\n\nconst CustomLineButton = styled('button')(({ theme }) => ({\n  display: 'flex',\n  flexDirection: 'row',\n  alignItems: 'center',\n  gap: theme.spacing(1),\n  paddingLeft: theme.spacing(1),\n  paddingBottom: theme.spacing(1),\n  paddingTop: theme.spacing(1),\n  cursor: 'pointer',\n  color: 'inherit',\n  textDecoration: 'unset',\n  fontFamily: 'var(--gally-font)',\n  fontWeight: 500,\n  fontSize: 14,\n  lineHeight: '20px',\n  background: 'transparent',\n  width: '100%',\n  border: 0,\n  '&:hover': {\n    background: theme.palette.menu.hover,\n    borderRadius: 8,\n  },\n}))\n\nconst CustomLineHover = styled('div')(({ theme }) => ({\n  '&:hover': {\n    background: theme.palette.menu.hover,\n    borderRadius: 8,\n  },\n}))\n\nconst CustomLinePadding = styled('div')(({ theme }) => ({\n  marginRight: theme.spacing(2),\n  paddingLeft: theme.spacing(2),\n  color: theme.palette.menu.text500,\n}))\n\nconst CustomChildren = styled(Collapse)(({ theme }) => ({\n  display: 'flex',\n  flexDirection: 'column',\n  paddingLeft: theme.spacing(2),\n  transition: 'all 1000ms',\n}))\n\nconst CustomLineActive = styled(CustomLineHover)(({ theme }) => ({\n  position: 'relative',\n  display: 'flex',\n  justifyContent: 'space-between',\n  color: theme.palette.menu.active,\n}))\n\nconst CustomIndicatorLineActive = styled('div')(({ theme }) => ({\n  position: 'absolute',\n  right: theme.spacing(-2),\n  top: 0,\n  height: '100%',\n  width: 3,\n  background: theme.palette.menu.active,\n  boxShadow: '-2px 0px 4px rgba(63, 50, 230, 0.2)',\n  borderRadius: '5px 0px 0px 5px',\n}))\n\nconst customIndicatorLineActiveTwo = keyframes`\n  0% {\n    opacity:0\n  }\n\n  100% {\n    opacity:1\n  }\n`\n\nconst CustomIndicatorLineActiveTwo = styled('div')(({ theme }) => ({\n  position: 'absolute',\n  right: theme.spacing(-2),\n  top: 0,\n  opacity: 0,\n  animation: `${customIndicatorLineActiveTwo} 2500ms forwards`,\n  height: '100%',\n  width: 3,\n  background: theme.palette.menu.active,\n  boxShadow: '-2px 0px 4px rgba(63, 50, 230, 0.2)',\n  borderRadius: '5px 0px 0px 5px',\n}))\n\nconst heightZero = keyframes`\n  0% {\n    height: 'auto';\n    opacity: 1\n  },\n\n  20% {\n    height: 'auto';\n    opacity: 0\n  },\n\n  100% {\n    height: 0;\n    opacity: 0\n  },\n`\n\nconst CustomHeightZero = styled('div')({\n  opacity: 1,\n  height: 'auto',\n  animation: `${heightZero} 2000ms forwards`,\n})\n\nconst opacityFull = keyframes`\n  from {\n    opacity: 0\n  },\n\n  to {\n    opacity: 1\n  },\n`\n\nconst CustomOpacityFull = styled('div')({\n  opacity: 0,\n  animation: `${opacityFull} 1000ms forwards`,\n})\n\ninterface IProps {\n  childrenState: Record<string, boolean>\n  code: string\n  href: string\n  isActive?: boolean\n  isBoosts?: boolean\n  label: string\n  menuChildren?: IMenuChild[]\n  onToggle: (code: string, childState: boolean) => void\n  sidebarStateTimeout?: boolean\n  words: string[]\n}\n\nfunction MenuItem(props: IProps): JSX.Element {\n  const {\n    childrenState,\n    code,\n    href,\n    isActive,\n    isBoosts,\n    label,\n    menuChildren,\n    onToggle,\n    sidebarStateTimeout,\n    words,\n  } = props\n  const childState = childrenState[code]\n\n  function toggleChild(): void {\n    onToggle(code, !childState)\n  }\n\n  const Root = !sidebarStateTimeout ? CustomOpacityFull : CustomHeightZero\n\n  const Line = isActive ? CustomLineActive : CustomLineHover\n\n  return (\n    <CustomRoot>\n      <Root>\n        <CustomLinePadding\n          style={{ position: 'relative' }}\n          {...(menuChildren && { 'data-testid': 'subGroupMenu' })}\n        >\n          {!menuChildren && (\n            <Line data-testid=\"menuLinkItem\">\n              {!sidebarStateTimeout && (\n                <Link href={`/admin/${href}`} legacyBehavior passHref>\n                  <CustomLineAHref data-testid=\"labelMenuLinkItem\">\n                    {label}\n                  </CustomLineAHref>\n                </Link>\n              )}\n              {isActive ? <CustomIndicatorLineActive /> : null}\n            </Line>\n          )}\n          {Boolean(menuChildren) && (\n            <CustomLineButton\n              style={{ transition: 'all 500ms', position: 'relative' }}\n              onClick={toggleChild}\n              data-testid=\"menuItemChildrenButton\"\n            >\n              {label}\n              <IonIcon\n                name=\"chevron-down\"\n                style={\n                  childState\n                    ? { transform: 'rotate(-180deg)', transition: 'all 500ms' }\n                    : { transition: 'all 500ms' }\n                }\n              />\n            </CustomLineButton>\n          )}\n          {!childState && isBoosts ? <CustomIndicatorLineActiveTwo /> : null}\n        </CustomLinePadding>\n        {Boolean(menuChildren) && (\n          <CustomChildren in={childState} data-testid=\"menuItemChildren\">\n            {menuChildren.map((item: IMenuChild) => (\n              <MenuItem\n                key={item.code}\n                childrenState={childrenState}\n                code={item.code}\n                href={slugify(item.code, 2)}\n                isActive={words.join('_') === item.code}\n                label={item.label}\n                onToggle={onToggle}\n                sidebarStateTimeout={sidebarStateTimeout}\n                words={words}\n              />\n            ))}\n          </CustomChildren>\n        )}\n      </Root>\n    </CustomRoot>\n  )\n}\n\nexport default MenuItem\n","import React from 'react'\nimport Link from 'next/link'\nimport { keyframes, styled } from '@mui/system'\n\nimport IonIcon from '../IonIcon/IonIcon'\n\nconst CustomIndicatorLineActiveTwo = styled('div')(({ theme }) => ({\n  width: 3,\n  background: theme.palette.menu.active,\n  boxShadow: '-2px 0px 4px rgba(63, 50, 230, 0.2)',\n  borderRadius: '5px 0px 0px 5px',\n}))\n\nconst CustomRoot = styled('a')(({ theme }) => ({\n  position: 'relative',\n  display: 'flex',\n  flexDirection: 'row',\n  alignItems: 'center',\n  textDecoration: 'unset',\n  color: 'inherit',\n  padding: theme.spacing(1),\n  '& ion-icon': {\n    color: theme.palette.menu.text500,\n  },\n}))\n\nconst CustomIndicatorLineActive = styled('div')(({ theme }) => ({\n  position: 'absolute',\n  right: 0,\n  width: 3,\n  height: '32px',\n  background: theme.palette.menu.active,\n  boxShadow: '-2px 0px 4px rgba(63, 50, 230, 0.2)',\n  borderRadius: '5px 0px 0px 5px',\n}))\n\nconst customNoChildHoverProps = ['sidebarState']\nconst CustomNoChildHover = styled(CustomRoot, {\n  shouldForwardProp: (prop: string) => !customNoChildHoverProps.includes(prop),\n})<{ sidebarState: boolean }>(({ theme, sidebarState }) => ({\n  width: sidebarState ? '100%' : 'fit-content',\n  '&:hover': {\n    background: theme.palette.menu.hover,\n    borderRadius: 8,\n  },\n  gap: sidebarState ? theme.spacing(2) : 0,\n  marginRight: sidebarState && theme.spacing(2),\n}))\n\nconst opacityFullDeux = keyframes`\n  0% { opacity: 0 },\n  45% { opacity: 0 },\n  100% { opacity: 1 },\n`\n\nconst opacityFull = keyframes`\n  from { opacity: 0 },\n  to { opacity: 1 },\n`\n\nconst CustomSpan = styled('span')({ opacity: 1, transition: 'all 500ms' })\n\nconst CustomOpacityFull = styled(CustomSpan)({\n  opacity: 0,\n  animation: `${opacityFull} 1000ms forwards`,\n})\n\nconst heightZero = keyframes`\n  0% {\n    height: 'auto';\n    width: 'auto';\n    opacity: 1;\n    position: 'relative';\n  },\n  20% {\n    height: 'auto';\n    width: 'auto';\n    opacity: 0;\n    position: 'relative';\n  },\n  100% { height: 0; width: 0; opacity: 0; position: 'absolute' },\n`\n\nconst CustomHeightZero = styled(CustomSpan)({\n  opacity: 1,\n  height: 'auto',\n  width: 'auto',\n  animation: `${heightZero} 1400ms forwards`,\n  position: 'relative',\n})\n\nconst CustomIndicatorLineActiveOpacityFullDeux = styled(\n  CustomIndicatorLineActive\n)({\n  opacity: 0,\n  animation: `${opacityFullDeux} 1200ms forwards`,\n})\n\nconst CustomIndicatorLineActiveTwoOpacityFullDeux = styled(\n  CustomIndicatorLineActive\n)({\n  opacity: 0,\n  animation: `${opacityFullDeux} 1200ms forwards`,\n})\n\nconst customClassNameStyleRootProps = ['lightStyle']\nconst CustomClassNameStyleRoot = styled('div', {\n  shouldForwardProp: (prop: string) =>\n    !customClassNameStyleRootProps.includes(prop),\n})<{ lightStyle?: boolean }>(({ theme, lightStyle }) => ({\n  fontFamily: 'var(--gally-font)',\n  fontWeight: lightStyle ? 600 : 500,\n  fontSize: lightStyle ? 13 : 14,\n  lineHeight: '20px',\n  letterSpacing: lightStyle ? 0.5 : 'initial',\n  textTransform: lightStyle ? 'uppercase' : 'initial',\n  color: lightStyle ? theme.palette.menu.text600 : theme.palette.menu.text500,\n  position: 'relative',\n  display: 'flex',\n  flexDirection: 'row',\n  alignItems: 'center',\n  gap: theme.spacing(2),\n  textDecoration: 'unset',\n  padding: theme.spacing(1),\n  '& ion-icon': {\n    color: theme.palette.menu.text500,\n  },\n}))\n\nconst customClassNameStyleProps = ['lightStyle', 'isActive']\nconst CustomClassNameStyle = styled('div', {\n  shouldForwardProp: (prop: string) =>\n    !customClassNameStyleProps.includes(prop),\n})<{\n  isActive: boolean\n  lightStyle?: boolean\n}>(({ theme, lightStyle, isActive }) => ({\n  display: 'flex',\n  fontFamily: 'var(--gally-font)',\n  fontWeight: lightStyle ? 600 : 500,\n  fontSize: lightStyle ? 13 : 14,\n  lineHeight: '20px',\n  letterSpacing: lightStyle ? 0.5 : 'initial',\n  textTransform: lightStyle ? 'uppercase' : 'initial',\n  color: isActive\n    ? theme.palette.colors.secondary['600']\n    : lightStyle\n    ? theme.palette.menu.text600\n    : theme.palette.menu.text500,\n  '&:hover': {\n    cursor: 'pointer',\n  },\n  justifyContent: isActive && 'space-between',\n}))\n\ninterface IProps {\n  childPadding?: boolean\n  code: string\n  href: string\n  isActive?: boolean\n  isRoot?: boolean\n  label: string\n  lightStyle?: boolean\n  sidebarState?: boolean\n  sidebarStateTimeout?: boolean\n}\n\nfunction MenuItemIcon(props: IProps): JSX.Element {\n  const {\n    childPadding,\n    code,\n    href,\n    isActive,\n    isRoot,\n    label,\n    lightStyle,\n    sidebarState,\n    sidebarStateTimeout,\n  } = props\n\n  const Label = !sidebarStateTimeout ? CustomOpacityFull : CustomHeightZero\n  const IndicatorLineActive = sidebarStateTimeout\n    ? CustomIndicatorLineActiveTwoOpacityFullDeux\n    : CustomIndicatorLineActiveTwo\n\n  /*\n   * Verification and return of specific data if the item has children\n   */\n  if (childPadding) {\n    return (\n      <CustomClassNameStyleRoot\n        lightStyle={!lightStyle}\n        data-testid=\"menuItemIcon\"\n      >\n        <IonIcon\n          name={code}\n          style={{\n            width: 18,\n            height: 18,\n            color: isRoot && sidebarStateTimeout && '#2C19CD',\n          }}\n        />\n        {Boolean(sidebarStateTimeout && isRoot) && (\n          <CustomIndicatorLineActiveOpacityFullDeux />\n        )}\n\n        <Label data-testid=\"labelMenuItemIcon\">{label}</Label>\n      </CustomClassNameStyleRoot>\n    )\n  }\n  return (\n    <CustomClassNameStyle\n      lightStyle={!lightStyle}\n      isActive={isActive}\n      data-testid=\"menuItemIcon\"\n    >\n      <Link href={`/admin/${href}`} legacyBehavior passHref>\n        <CustomNoChildHover sidebarState={sidebarState}>\n          <IonIcon\n            name={code}\n            style={{\n              width: 18,\n              height: 18,\n              color: isActive ? '#2C19CD' : '',\n            }}\n          />\n\n          <Label data-testid=\"labelMenuItemIcon\">{label}</Label>\n        </CustomNoChildHover>\n      </Link>\n      {isActive ? <IndicatorLineActive /> : null}\n    </CustomClassNameStyle>\n  )\n}\n\nexport default MenuItemIcon\n","import React, { PropsWithChildren } from 'react'\nimport { Box } from '@mui/material'\nimport { IPropsPopIn } from '@elastic-suite/gally-admin-shared'\nimport { usePopIn } from '../../../hooks/usePopin'\nimport CustomDialog from './CustomDialog'\n\nfunction PopIn({\n  triggerElement,\n  boxStyle,\n  onConfirm,\n  ...dialogProps\n}: PropsWithChildren<IPropsPopIn>): JSX.Element {\n  const [open, handleClickOpen, handleClose, handleConfirm] =\n    usePopIn(onConfirm)\n\n  return (\n    <>\n      <Box onClick={handleClickOpen} sx={boxStyle}>\n        {triggerElement}\n      </Box>\n      <CustomDialog\n        handleClose={handleClose}\n        handleConfirm={handleConfirm}\n        open={open}\n        {...dialogProps}\n      />\n    </>\n  )\n}\n\nexport default PopIn\n","import { useState } from 'react'\nimport { useLog } from './useLog'\n\n// todo ajouter les tests\nexport function usePopIn(\n  onConfirm?: () => void | Promise<void>\n): [boolean, () => void, () => void, () => Promise<void>] {\n  const [open, setOpen] = useState(false)\n  const log = useLog()\n\n  function handleClickOpen(): void {\n    setOpen(true)\n  }\n\n  function handleClose(): void {\n    setOpen(false)\n  }\n\n  async function handleConfirm(): Promise<void> {\n    if (typeof onConfirm === 'function') {\n      try {\n        const result = onConfirm()\n        if (result instanceof Promise) {\n          return await result\n        }\n      } catch (error) {\n        return log(error)\n      }\n    }\n    setOpen(false)\n  }\n\n  return [open, handleClickOpen, handleClose, handleConfirm]\n}\n","import React, { PropsWithChildren } from 'react'\nimport { Box, DialogActions, DialogContent, DialogTitle } from '@mui/material'\nimport { CustomClose, CustomDialogStyled, CustomTitle } from './PopIn.styled'\nimport IonIcon from '../IonIcon/IonIcon'\nimport Button from '../buttons/Button'\nimport { ICustomDialog } from '@elastic-suite/gally-admin-shared'\n\nfunction CustomDialog({\n  open,\n  handleClose,\n  handleConfirm,\n  confirmationPopIn,\n  titlePopIn,\n  actions,\n  children,\n  position,\n  styles,\n  cancelName,\n  confirmName,\n  loading,\n}: PropsWithChildren<ICustomDialog>): JSX.Element {\n  return (\n    <CustomDialogStyled\n      open={open}\n      onClose={handleClose}\n      aria-labelledby=\"alert-dialog-title\"\n      aria-describedby=\"alert-dialog-description\"\n      position={position}\n      styles={\n        confirmationPopIn\n          ? {\n              actions: {\n                padding: '0 32px 32px 32px',\n                justifyContent: 'center',\n                gap: 1,\n              },\n            }\n          : styles\n      }\n    >\n      <CustomClose onClick={handleClose}>\n        <IonIcon name=\"close\" style={{ fontSize: '17.85px' }} />\n      </CustomClose>\n      {!confirmationPopIn ? (\n        <>\n          {titlePopIn ? <DialogTitle> {titlePopIn} </DialogTitle> : null}\n          <DialogContent>{children}</DialogContent>\n          {actions ? <DialogActions> {actions} </DialogActions> : null}\n        </>\n      ) : (\n        <>\n          <CustomTitle> {titlePopIn} </CustomTitle>\n          <DialogActions>\n            <Box>\n              <Button onClick={handleClose} display=\"tertiary\" size=\"large\">\n                {cancelName}\n              </Button>\n            </Box>\n            <Box>\n              <Button onClick={handleConfirm} loading={loading} size=\"large\">\n                {confirmName}\n              </Button>\n            </Box>\n          </DialogActions>\n        </>\n      )}\n    </CustomDialogStyled>\n  )\n}\n\nexport default CustomDialog\n","import { Dialog, styled } from '@mui/material'\n\nimport {\n  IPropsCustomDialog,\n  getCustomScrollBarStyles,\n} from '@elastic-suite/gally-admin-shared'\n\nconst dialogProps = ['position', 'styles']\nexport const CustomDialogStyled = styled(Dialog, {\n  shouldForwardProp: (prop: string) => !dialogProps.includes(prop),\n})<IPropsCustomDialog>(({ position, theme, styles }) => {\n  return {\n    '& *': {\n      fontFamily: 'var(--gally-font)',\n    },\n    '& .MuiDialogActions-root,  & .MuiDialogTitle-root': {\n      padding: theme.spacing(4),\n    },\n    '& .MuiDialog-container': {\n      justifyContent:\n        position === 'left'\n          ? 'flex-start'\n          : position === 'right'\n          ? 'flex-end'\n          : 'center',\n    },\n    '& .MuiDialogTitle-root': {\n      display: 'flex',\n      flexDirection: 'row',\n      alignItems: 'center',\n      justifyContent: 'space-between',\n      borderBottom: '1px solid #E2E6F3',\n      color: '#151A47',\n      fontSize: '14px',\n      fontWeight: 600,\n      lineHeight: '20px',\n      ...styles?.title,\n    },\n    '& .MuiDialog-paper': {\n      minWidth: '200px',\n      padding: theme.spacing(0),\n      margin: theme.spacing(0),\n      ...styles?.paper,\n    },\n    '& .MuiDialogContent-root': {\n      display: 'flex',\n      flexDirection: 'Column',\n      ...styles?.content,\n      ...getCustomScrollBarStyles(theme),\n      margin: `${theme.spacing(4)} ${theme.spacing(0.5)}`,\n      padding: `${theme.spacing(0)} ${theme.spacing(3.5)}`,\n    },\n    '& .MuiDialogActions-root': {\n      ...styles?.actions,\n    },\n  }\n})\n\nexport const CustomClose = styled('div')(({ theme }) => ({\n  position: 'absolute',\n  display: 'flex',\n  top: theme.spacing(1),\n  right: theme.spacing(1),\n  cursor: 'pointer',\n  transition: 'all 500ms',\n  padding: theme.spacing(1),\n  borderRadius: theme.spacing(1),\n  color: theme.palette.colors.neutral['900'],\n  '&:hover': {\n    background: theme.palette.colors.neutral['200'],\n  },\n}))\n\nexport const CustomTitle = styled('div')(({ theme }) => ({\n  marginTop: theme.spacing(7),\n  textAlign: 'center',\n  fontWeight: '400',\n  color: theme.palette.colors.neutral[900],\n  fontSize: '18px',\n  fontFamily: 'var(--gally-font)',\n  lineHeight: '28px',\n  marginBottom: theme.spacing(7),\n}))\n","import React, { MouseEvent, useRef, useState } from 'react'\nimport { styled } from '@mui/system'\nimport {\n  ButtonProps,\n  CircularProgress,\n  MenuItem,\n  Menu as MuiMenu,\n} from '@mui/material'\nimport { IOptions } from '@elastic-suite/gally-admin-shared'\n\nimport { PrimaryButton, SecondaryButton, TertiaryButton } from './Button.styled'\n\ndeclare module '@mui/material' {\n  // eslint-disable-next-line @typescript-eslint/naming-convention\n  interface MenuProps {\n    minWidth?: number\n  }\n}\n\nconst menuProps = ['minWidth']\nconst Menu = styled(MuiMenu, {\n  shouldForwardProp: (prop: string) => !menuProps.includes(prop),\n})(({ minWidth, theme }) => ({\n  '& .MuiPaper-root': {\n    margin: '4px 0',\n    border: `1px solid ${theme.palette.colors.neutral['300']}`,\n    borderRadius: 8,\n    overflow: 'auto',\n    boxSizing: 'border-box',\n    outline: 0,\n    boxShadow: 'none',\n    minWidth,\n  },\n  '& .MuiList-root': {\n    padding: 0,\n  },\n  '& .MuiButtonBase-root': {\n    fontFamily: 'var(--gally-font)',\n    padding: '8px 12px',\n    fontWeight: 400,\n    fontSize: 12,\n    lineHeight: '18px',\n    color: theme.palette.colors.neutral['800'],\n  },\n  '& .MuiButtonBase-root:hover': {\n    backgroundColor: theme.palette.colors.neutral['200'],\n  },\n}))\n\ninterface IProps extends ButtonProps {\n  display: 'primary' | 'secondary' | 'tertiary'\n  loading?: boolean\n  onSelect?: (value: unknown) => void\n  options?: IOptions<unknown>\n}\n\nfunction Button(props: IProps): JSX.Element {\n  const {\n    children,\n    disabled,\n    display,\n    id,\n    loading,\n    onClick,\n    onSelect,\n    options,\n    style,\n    ...buttonProps\n  } = props\n  const buttonRef = useRef<HTMLButtonElement>(null)\n  const [anchorEl, setAnchorEl] = useState(null)\n  const open = Boolean(anchorEl)\n\n  let Component = PrimaryButton\n  if (display === 'secondary') {\n    Component = SecondaryButton\n  } else if (display === 'tertiary') {\n    Component = TertiaryButton\n  }\n\n  let styles = style\n  if (loading && buttonRef.current) {\n    const { height, width } = buttonRef.current.getBoundingClientRect()\n    styles = {\n      ...style,\n      ...(loading && {\n        width,\n        height,\n      }),\n    }\n  }\n\n  function handleOpen(event: MouseEvent<HTMLButtonElement>): void {\n    setAnchorEl(event.currentTarget)\n    if (onClick) {\n      onClick(event)\n    }\n  }\n\n  function handleClose(): void {\n    setAnchorEl(null)\n  }\n\n  function handleClickOption(value: unknown) {\n    return () => {\n      onSelect(value)\n      setAnchorEl(null)\n    }\n  }\n\n  return (\n    <>\n      <Component\n        {...buttonProps}\n        disabled={disabled || loading}\n        onClick={options ? handleOpen : onClick}\n        ref={buttonRef}\n        style={styles}\n      >\n        {loading ? <CircularProgress color=\"inherit\" size=\"20px\" /> : children}\n      </Component>\n      {Boolean(options) && (\n        <Menu\n          anchorEl={anchorEl}\n          componentsProps={{\n            backdrop: { style: { backgroundColor: 'transparent' } },\n          }}\n          id={id}\n          open={open}\n          onClose={handleClose}\n          MenuListProps={{\n            'aria-labelledby': id,\n          }}\n          minWidth={anchorEl ? anchorEl.getBoundingClientRect().width : 0}\n        >\n          {options.map((option) => (\n            <MenuItem\n              key={option.id ?? String(option.value)}\n              onClick={handleClickOption(option.value)}\n            >\n              {option.label}\n            </MenuItem>\n          ))}\n        </Menu>\n      )}\n    </>\n  )\n}\n\nButton.defaultProps = {\n  display: 'primary',\n  variant: 'contained',\n}\n\nexport default Button\n","import { styled } from '@mui/system'\nimport { Button } from '@mui/material'\n\nexport const PrimaryButton = styled(Button)(({ theme }) => ({\n  color: `${theme.palette.colors.white}`,\n  lineHeight: '24px',\n  textTransform: 'none',\n  letterSpacing: '0.2px',\n  fontWeight: 500,\n  background: `${theme.palette.colors.gradient.default}`,\n  boxShadow: `${theme.palette.colors.shadow.primaryButton.sm}`,\n  borderRadius: '8px',\n  marginLeft: theme.spacing(2),\n  '&:first-of-type': {\n    marginLeft: 0,\n  },\n  '&::before': {\n    position: 'absolute',\n    content: '\"\"',\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    borderRadius: '8px',\n    background: `${theme.palette.colors.gradient.darken}`,\n    boxShadow: `${theme.palette.colors.shadow.primaryButton.md}`,\n    zIndex: -1,\n    transition: 'opacity 0.3s linear',\n    opacity: 0,\n  },\n  '&:hover::before': {\n    opacity: 1,\n  },\n  '&.MuiButton-sizeSmall': {\n    fontSize: '12px',\n    padding: '4px 12px',\n  },\n  '&.MuiButton-sizeMedium': {\n    fontSize: '14px',\n    padding: '8px 16px',\n  },\n  '&.MuiButton-sizeLarge': {\n    fontSize: '16px',\n    padding: '12px 24px',\n  },\n  '&:hover': {\n    background: `${theme.palette.colors.gradient.default}`,\n    boxShadow: `${theme.palette.colors.shadow.primaryButton.sm}`,\n  },\n  '&& .MuiTouchRipple-child': {\n    backgroundColor: `${theme.palette.colors.primary['600']}`,\n  },\n  '&& .MuiTouchRipple-rippleVisible': {\n    animationName: '$buttonEnterKeyframe',\n    animationDuration: '500ms',\n  },\n  '&.Mui-disabled': {\n    color: `${theme.palette.colors.neutral['500']}`,\n    background: `${theme.palette.colors.neutral['300']}`,\n    boxShadow: 'none',\n  },\n}))\n\nexport const SecondaryButton = styled(PrimaryButton)(({ theme }) => ({\n  color: theme.palette.colors.secondary['600'],\n  background: theme.palette.colors.secondary['100'],\n  boxShadow: theme.palette.colors.shadow.secondaryButton.sm,\n  '&::before': {\n    background: theme.palette.colors.secondary['200'],\n    boxShadow: theme.palette.colors.shadow.secondaryButton.md,\n  },\n  '&:hover': {\n    background: theme.palette.colors.secondary['100'],\n    boxShadow: theme.palette.colors.shadow.secondaryButton.sm,\n  },\n  '&& .MuiTouchRipple-child': {\n    backgroundColor: theme.palette.colors.secondary['300'],\n  },\n}))\n\nexport const TertiaryButton = styled(PrimaryButton)(({ theme }) => ({\n  color: theme.palette.colors.neutral['900'],\n  background: 'none',\n  boxShadow: 'none',\n  '&::before': {\n    background: theme.palette.colors.neutral['200'],\n    boxShadow: 'none',\n  },\n  '&:hover': {\n    background: 'none',\n    boxShadow: 'none',\n  },\n  '&& .MuiTouchRipple-child': {\n    backgroundColor: theme.palette.colors.neutral['300'],\n  },\n}))\n","import React from 'react'\nimport { styled } from '@mui/system'\nimport Link from 'next/link'\n\nimport Button from '../buttons/Button'\nimport IonIcon from '../IonIcon/IonIcon'\nimport { useRouter } from 'next/router'\nimport { CustomAHref } from '../../stateful-pages/Grid/Grid'\n\nconst CustomRoot = styled('div')(({ theme }) => ({\n  display: 'flex',\n  flexDirection: 'column',\n  gap: '40px',\n  padding: theme.spacing(8),\n  border: '1px solid',\n  borderColor: theme.palette.colors.neutral['300'],\n  borderRadius: theme.spacing(1),\n  background: theme.palette.colors.white,\n  textAlign: 'center',\n  alignItems: 'center',\n}))\n\nconst CustomTitle = styled('div')(({ theme }) => ({\n  color: theme.palette.colors.neutral['600'],\n  fontSize: '18px',\n  lineHeight: '28px',\n  fontWeight: '600',\n  fontFamily: 'var(--gally-font)',\n  width: '550px',\n}))\n\nexport interface INoAttributesProps {\n  title: string\n  btnTitle?: string\n  btnHref?: string\n  absolutLink?: boolean\n}\n\nfunction NoAttributes(props: INoAttributesProps): JSX.Element {\n  const { title, btnTitle, btnHref, absolutLink = true } = props\n\n  const { pathname } = useRouter()\n  const pathnameWithoutLastFile =\n    !absolutLink && pathname\n      ? pathname.substring(0, pathname.lastIndexOf('/'))\n      : ''\n\n  return (\n    <CustomRoot>\n      <IonIcon\n        name=\"telescope\"\n        style={{ color: '#8187B9', width: '40px', height: '40px' }}\n      />\n      <CustomTitle>{title}</CustomTitle>\n      {Boolean(btnTitle) && (\n        <Button endIcon={null} startIcon={null} size=\"large\">\n          <Link\n            href={`${pathnameWithoutLastFile}/${btnHref}`}\n            legacyBehavior\n            passHref\n          >\n            <CustomAHref large>{btnTitle}</CustomAHref>\n          </Link>\n        </Button>\n      )}\n    </CustomRoot>\n  )\n}\n\nexport default NoAttributes\n","import React from 'react'\nimport { PageTitle } from '../../../components'\nimport Button from '../../../components/atoms/buttons/Button'\nimport ResourceTable, {\n  IResourceTable,\n} from '../../../components/stateful-pages/ResourceTable/ResourceTable'\nimport { useFilters, useResource } from '../../../hooks'\nimport { useTranslation } from 'next-i18next'\nimport { styled } from '@mui/system'\n\ninterface IProps\n  extends Omit<IResourceTable, 'activeFilters' | 'setActiveFilters'> {\n  title?: string\n  hasNewLink?: boolean\n  newLink?: string\n  propsButton?: Record<string, any>\n}\n\nconst isIconInButton = ['isIconInButton', 'large']\nexport const CustomAHref = styled('a', {\n  shouldForwardProp: (prop: string) => !isIconInButton.includes(prop),\n})<{ isIconInButton?: boolean; large?: boolean }>(\n  ({ theme, isIconInButton, large }) => ({\n    margin: large ? '-12px -24px' : '-8px -16px',\n    padding: large ? '12px 24px' : '8px 16px',\n    textDecoration: 'none',\n    borderRadius: theme.spacing(1),\n    ...(isIconInButton && {\n      marginRight: large ? '-48px' : '-40px',\n      paddingRight: large ? '48px' : '40px',\n    }),\n  })\n)\n\nfunction Grid(props: IProps): JSX.Element {\n  const {\n    resourceName,\n    title,\n    newLink,\n    hasNewLink,\n    propsButton,\n    ...otherProps\n  } = props\n\n  const { t } = useTranslation('common')\n  const resource = useResource(resourceName)\n  const [activeFilters, setActiveFilters] = useFilters(resource)\n\n  return (\n    <>\n      <PageTitle title={title ?? t(resourceName)}>\n        {hasNewLink ? (\n          <Button {...propsButton} data-testid=\"createButtonResourceGrid\">\n            <CustomAHref\n              href={newLink ?? './create'}\n              isIconInButton={Boolean(propsButton?.endIcon)}\n            >\n              {t('create')} {title ?? t(resourceName)}\n            </CustomAHref>\n          </Button>\n        ) : null}\n      </PageTitle>\n\n      <ResourceTable\n        {...otherProps}\n        activeFilters={activeFilters}\n        setActiveFilters={setActiveFilters}\n        resourceName={resourceName}\n      />\n    </>\n  )\n}\n\nexport default Grid\n","import React, {\n  Dispatch,\n  FunctionComponent,\n  SetStateAction,\n  SyntheticEvent,\n  useEffect,\n  useMemo,\n  useState,\n} from 'react'\nimport { TFunction, useTranslation } from 'next-i18next'\nimport { styled } from '@mui/system'\nimport {\n  IFieldGuesserProps,\n  ISearchParameters,\n  ISourceField,\n  ITableConfig,\n  ITableRow,\n  LoadStatus,\n  defaultPageSize,\n  defaultRowsPerPageOptions,\n  getNameFromDefault,\n} from '@elastic-suite/gally-admin-shared'\n\nimport {\n  useApiEditableList,\n  useFilterParameters,\n  useFiltersRedirect,\n  usePage,\n  useResource,\n  useSearch,\n} from '../../../hooks'\n\nimport NoAttributes, {\n  INoAttributesProps,\n} from '../../atoms/noAttributes/NoAttributes'\nimport Button from '../../atoms/buttons/Button'\nimport FieldGuesser from '../../stateful/FieldGuesser/FieldGuesser'\nimport FiltersGuesser from '../../stateful/FiltersGuesser/FiltersGuesser'\nimport TableGuesser from '../../stateful/TableGuesser/TableGuesser'\n\nconst FitlerContent = styled('div')({\n  display: 'flex',\n  flexDirection: 'column',\n  alignItems: 'flex-end',\n})\n\nconst Paragraph = styled('p')(({ theme }) => ({\n  marginBottom: 0,\n  marginTop: theme.spacing(1),\n}))\n\nfunction getProps(resourceName: string, t: TFunction): INoAttributesProps {\n  switch (resourceName) {\n    case 'FacetConfiguration':\n      return {\n        title: t('facets.none'),\n        btnTitle: t('facets.none.btn'),\n        btnHref: 'admin/settings/attributes',\n      }\n\n    case 'SourceField':\n      return {\n        title: t('attributes.none'),\n        btnTitle: t('attributes.none.btn'),\n        btnHref: 'admin/settings/attributes',\n      }\n\n    case 'Boost':\n      return {\n        title: t('boost.none'),\n        btnTitle: t('boost.none.btn'),\n        btnHref: './create',\n        absolutLink: false,\n      }\n    case 'Thesaurus':\n      return {\n        title: t('thesaurus.none'),\n        btnTitle: t('thesaurus.none.btn'),\n        btnHref: './create',\n        absolutLink: false,\n      }\n  }\n}\n\nfunction isObjectNotEmpty(object: object): boolean {\n  return Object.values(object).some((value) => value)\n}\nexport interface IResourceTable {\n  Field?: FunctionComponent<IFieldGuesserProps>\n  active?: boolean\n  activeFilters: ISearchParameters\n  diffDefaultValues?: boolean\n  getTableConfigs?: (rows: ITableRow[]) => ITableConfig[]\n  filters?: ISearchParameters\n  resourceName: string\n  setActiveFilters: Dispatch<SetStateAction<ISearchParameters>>\n  urlParams?: string\n  showSearch?: boolean\n  hasEditLink?: boolean\n  editLink?: string\n  rowsPerPage?: number\n}\n\nconst listOfDefaultFacets = [\n  'defaultCoverageRate',\n  'defaultDisplayMode',\n  'defaultIsRecommendable',\n  'defaultIsVirtual',\n  'defaultMaxSize',\n  'defaultSortOrder',\n  'defaultPosition',\n]\n\nfunction ResourceTable(props: IResourceTable): JSX.Element {\n  const { t } = useTranslation('resourceTable')\n  const {\n    Field,\n    active,\n    activeFilters,\n    diffDefaultValues,\n    getTableConfigs,\n    filters,\n    resourceName,\n    setActiveFilters,\n    urlParams,\n    showSearch,\n    hasEditLink,\n    editLink,\n    rowsPerPage: rowsPerPageValue,\n  } = props\n\n  const resource = useResource(resourceName)\n  const [page, setPage] = usePage()\n  const [searchValue, setSearchValue] = useSearch()\n\n  const parameters = useFilterParameters(activeFilters, filters)\n  useFiltersRedirect(page, activeFilters, searchValue, active)\n\n  const rowsPerPageOptions = defaultRowsPerPageOptions\n  const [rowsPerPage, setRowsPerPage] = useState<number>(\n    rowsPerPageValue ?? defaultPageSize\n  )\n\n  const [withDebounce, setWithDebounce] = useState(false)\n\n  const [resourceData, { massUpdate, massReplace, replace, update }] =\n    useApiEditableList<ISourceField>(\n      resource,\n      page,\n      rowsPerPage,\n      parameters,\n      searchValue,\n      urlParams ? `${resource.url}${urlParams}` : null,\n      searchValue.trim() === '' ? false : withDebounce\n    )\n\n  useEffect(() => {\n    setWithDebounce(true)\n  }, [resourceData])\n\n  const { data, error } = resourceData\n\n  const tableRows = data?.['hydra:member'] as unknown as ITableRow[]\n  const diffRows: ITableRow[] = useMemo(() => {\n    if (diffDefaultValues && tableRows) {\n      const newTableRows = tableRows.map((itemTableRow) => {\n        const newDefault = listOfDefaultFacets.map((itemDefaultFacets) => {\n          return { [itemDefaultFacets]: itemTableRow[itemDefaultFacets] }\n        })\n        return Object.assign({}, itemTableRow, ...newDefault)\n      })\n\n      return newTableRows.map((row) =>\n        Object.fromEntries([\n          ...Object.entries(row)\n            .filter(([key]) => key.startsWith('default'))\n            .map(([key, value]) => [getNameFromDefault(key), value]),\n        ])\n      ) as ITableRow[]\n    }\n    return []\n  }, [diffDefaultValues, tableRows])\n\n  const diffCount = useMemo(\n    () =>\n      diffRows.reduce(\n        (acc, row, index) =>\n          acc +\n          Object.entries(row).reduce(\n            (acc, [key, value]) =>\n              acc + Number(value !== tableRows?.[index][key]),\n            0\n          ),\n        0\n      ),\n    [diffRows, tableRows]\n  )\n\n  if (error || !data) {\n    return null\n  }\n\n  function handleFilterChange(activeFilters: ISearchParameters): void {\n    setActiveFilters(activeFilters)\n    setPage(0)\n  }\n\n  function handleSearchValue(search: string): void {\n    setSearchValue(search)\n    setPage(0)\n  }\n\n  function handlePageChange(page: number): void {\n    setPage(page)\n  }\n\n  function handleRowChange(\n    id: string | number,\n    name: string,\n    value: boolean | number | string,\n    event: SyntheticEvent,\n    showError: boolean\n  ): void {\n    const validity = (event.target as HTMLInputElement)?.checkValidity()\n    if (update) {\n      update(id, { [name]: value }, !showError || validity)\n    } else if (replace) {\n      replace(\n        { id, [name]: value } as unknown as ISourceField,\n        !showError || validity\n      )\n    }\n  }\n\n  function onRowsPerPageChange(\n    event?: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n  ): void {\n    event && setRowsPerPage(Number(event.target.value))\n    setPage(0)\n  }\n\n  function handleReset(): void {\n    diffRows.forEach((row, index) => {\n      const entries = Object.entries(row)\n        .filter(([key, value]) => value !== tableRows?.[index][key])\n        .map((item) => {\n          return [item[0], item?.[1] ?? null]\n        })\n      if (entries.length > 0) {\n        replace({\n          ...tableRows?.[index],\n          ...Object.fromEntries(entries),\n        } as unknown as ISourceField)\n      }\n    }, [])\n  }\n\n  const filterOrSearchAreUp =\n    searchValue !== '' || isObjectNotEmpty(activeFilters)\n\n  if (\n    data['hydra:member'].length === 0 &&\n    resourceData.status === LoadStatus.SUCCEEDED &&\n    !filterOrSearchAreUp\n  ) {\n    return <NoAttributes {...getProps(resourceName, t)} />\n  }\n  return (\n    <>\n      <FiltersGuesser\n        activeFilters={activeFilters}\n        apiData={data}\n        onFilterChange={handleFilterChange}\n        onSearch={handleSearchValue}\n        resource={resource}\n        searchValue={searchValue}\n        showSearch={showSearch}\n      >\n        {Boolean(diffDefaultValues) && (\n          <FitlerContent>\n            <Button\n              disabled={diffCount === 0}\n              display=\"secondary\"\n              onClick={handleReset}\n              endIcon={<ion-icon name=\"reload-outline\" />}\n            >\n              {t('default.button')}\n            </Button>\n            <Paragraph\n              dangerouslySetInnerHTML={{\n                __html: t('default.customValue', {\n                  count: diffCount,\n                  value: `<strong>${diffCount}</strong>`,\n                }),\n              }}\n            />\n          </FitlerContent>\n        )}\n      </FiltersGuesser>\n      <TableGuesser\n        Field={Field}\n        count={data['hydra:totalItems']}\n        currentPage={page}\n        diffRows={diffRows}\n        noResult={\n          data['hydra:member'].length === 0 &&\n          resourceData.status === LoadStatus.SUCCEEDED &&\n          filterOrSearchAreUp\n        }\n        onMassupdate={massUpdate}\n        onMassreplace={massReplace}\n        onPageChange={handlePageChange}\n        onRowUpdate={handleRowChange}\n        onRowsPerPageChange={onRowsPerPageChange}\n        resource={resource}\n        rowsPerPage={rowsPerPage}\n        rowsPerPageOptions={rowsPerPageOptions}\n        tableConfigs={getTableConfigs?.(tableRows)}\n        tableRows={tableRows}\n        hasEditLink={hasEditLink}\n        editLink={editLink}\n        dataTestId={resourceName}\n      />\n    </>\n  )\n}\n\nResourceTable.defaultProps = {\n  Field: FieldGuesser,\n}\n\nexport default ResourceTable\n","import React from 'react'\nimport {\n  IFieldGuesserProps,\n  getFieldState,\n} from '@elastic-suite/gally-admin-shared'\n\nimport EditableFieldGuesser from './EditableFieldGuesser'\nimport ReadableFieldGuesser from './ReadableFieldGuesser'\n\nfunction FieldGuesser(props: IFieldGuesserProps): JSX.Element {\n  const { editable, ...fieldProps } = props\n  const { visible, ...fieldStateProps } = getFieldState(\n    fieldProps.data,\n    fieldProps.depends\n  )\n\n  if (visible === false) return null\n\n  if (editable) {\n    return <EditableFieldGuesser {...fieldProps} {...fieldStateProps} />\n  }\n  return <ReadableFieldGuesser {...fieldProps} {...fieldStateProps} />\n}\n\nexport default FieldGuesser\n","import React, { SyntheticEvent } from 'react'\nimport { useTranslation } from 'next-i18next'\nimport {\n  DataContentType,\n  IExpansions,\n  IFieldGuesserProps,\n  IOption,\n  IRequestType,\n  IRuleCombination,\n  ISynonyms,\n} from '@elastic-suite/gally-admin-shared'\n\nimport DropDown from '../../atoms/form/DropDown'\nimport InputText from '../../atoms/form/InputText'\nimport Range from '../../atoms/form/Range'\nimport Switch from '../../atoms/form/Switch'\n\nimport ReadableFieldGuesser from './ReadableFieldGuesser'\nimport EditableDropDownGuesser from './EditableDropDownGuesser'\nimport MultipleInput from './MultipleInput'\nimport { IDoubleDatePickerValues } from '../../atoms/form/DoubleDatePickerWithoutError'\nimport DoubleDatePicker from '../../atoms/form/DoubleDatePicker'\nimport { Box } from '@mui/material'\nimport RequestTypeManager from '../../stateful/RequestTypeManager/RequestTypeManager'\nimport RulesManager from '../RulesManager/RulesManager'\nimport Slider from '../../atoms/form/Slider'\nimport Synonym from '../../atoms/form/Synonym'\nimport Expansion from '../../atoms/form/Expansion'\nimport { IProportionalToAttributesValue } from '../../molecules/ProportionalToAttributes/ProportionalToAttributes'\nimport ProportionalToAttributesManager from '../../molecules/ProportionalToAttributes/ProportionalToAttributesManager'\nfunction EditableFieldGuesser(props: IFieldGuesserProps): JSX.Element {\n  const {\n    diffValue,\n    input,\n    label,\n    multiple,\n    name,\n    onChange,\n    options,\n    useDropdownBoolean,\n    value,\n    required,\n    showError,\n    suffix,\n    type,\n    validation,\n    requestTypeConfigurations,\n    data,\n    optionConfig,\n    infoTooltip,\n    placeholder,\n    error,\n    helperText,\n    replacementErrorsMessages,\n    disabled,\n  } = props\n\n  const { t } = useTranslation('common')\n  const dirty = Boolean(\n    diffValue !== undefined &&\n      ((diffValue !== null && diffValue !== value) ||\n        (diffValue === null && Boolean(value?.toString())))\n  )\n\n  function handleChange(\n    value:\n      | boolean\n      | number\n      | string\n      | (boolean | number | string)[]\n      | IDoubleDatePickerValues\n      | IRequestType\n      | IRuleCombination\n      | ISynonyms\n      | IExpansions\n      | IProportionalToAttributesValue,\n    event?: SyntheticEvent\n  ): void {\n    if (onChange) {\n      if (optionConfig) {\n        return onChange(optionConfig as IOption<string>, value, event)\n      }\n      return onChange(name, value, event)\n    }\n  }\n\n  switch (input ?? type) {\n    case DataContentType.NUMBER:\n    case DataContentType.STRING: {\n      return (\n        <InputText\n          infoTooltip={infoTooltip}\n          dirty={dirty}\n          disabled={disabled}\n          error={error}\n          helperText={\n            dirty\n              ? t('form.defaultValue', {\n                  value: diffValue ? diffValue : t('default.undefined'),\n                })\n              : helperText\n          }\n          inputProps={validation}\n          dataTestId={name}\n          label={label}\n          onChange={handleChange}\n          required={required}\n          showError={showError}\n          suffix={suffix}\n          type={input === DataContentType.NUMBER ? 'number' : 'text'}\n          value={value as string | number | null}\n          placeholder={placeholder}\n          replacementErrorsMessages={replacementErrorsMessages}\n        />\n      )\n    }\n\n    case DataContentType.RANGE: {\n      return (\n        <Range\n          infoTooltip={infoTooltip}\n          dirty={dirty}\n          disabled={disabled}\n          helperText={\n            dirty ? t('form.defaultValue', { value: diffValue }) : helperText\n          }\n          error={error}\n          inputProps={validation}\n          label={label}\n          onChange={handleChange}\n          required={required}\n          showError={showError}\n          suffix={suffix}\n          value={value as (string | number | null)[]}\n          replacementErrorsMessages={replacementErrorsMessages}\n        />\n      )\n    }\n\n    case DataContentType.SLIDER: {\n      return (\n        <Slider\n          {...props}\n          error={error}\n          infoTooltip={infoTooltip}\n          value={Number(value)}\n          onChange={handleChange}\n          helperText={helperText}\n          dataTestId={name}\n        />\n      )\n    }\n\n    case DataContentType.RANGEDATE: {\n      const {\n        multipleInputConfiguration,\n        multipleValueFormat,\n        requestTypeConfigurations,\n        ...doubleDatePickerProps\n      } = props\n\n      return (\n        <Box>\n          <DoubleDatePicker\n            {...doubleDatePickerProps}\n            placeholder={placeholder}\n            infoTooltip={infoTooltip}\n            value={value as IDoubleDatePickerValues}\n            onChange={handleChange}\n            error={error}\n            helperText={helperText}\n            label={label}\n            dataTestId={name}\n          />\n        </Box>\n      )\n    }\n\n    case DataContentType.RULEENGINE: {\n      return (\n        <RulesManager\n          label={label}\n          rule={value as string | IRuleCombination}\n          active\n          onChange={handleChange}\n          first={false}\n          placeholder={placeholder}\n          required={required}\n          error={error}\n          helperText={helperText}\n          showError={showError}\n        />\n      )\n    }\n\n    case DataContentType.REQUESTTYPE: {\n      return (\n        <RequestTypeManager\n          data={data}\n          infoTooltip={infoTooltip}\n          requestTypeConfigurations={requestTypeConfigurations}\n          value={value as IRequestType}\n          onChange={handleChange}\n          label={label}\n          required={required}\n          placeholder={placeholder}\n          error={error}\n          helperText={helperText}\n          showError={showError}\n          dataTestId={name}\n        />\n      )\n    }\n    case DataContentType.SYNONYM: {\n      return (\n        <Synonym\n          infoTooltip={infoTooltip}\n          value={value as ISynonyms}\n          onChange={handleChange}\n          label={label}\n          required={required}\n          placeholder={placeholder}\n          error={error}\n          helperText={helperText}\n          showError={showError}\n        />\n      )\n    }\n\n    case DataContentType.EXPANSION: {\n      return (\n        <Expansion\n          infoTooltip={infoTooltip}\n          value={value as IExpansions}\n          onChange={handleChange}\n          label={label}\n          required={required}\n          placeholder={placeholder}\n          error={error}\n          helperText={helperText}\n          showError={showError}\n        />\n      )\n    }\n\n    case DataContentType.MULTIPLEINPUT: {\n      return (\n        <MultipleInput\n          {...props}\n          infoTooltip={infoTooltip}\n          value={value as string}\n          onChange={handleChange}\n          label={label}\n          placeholder={placeholder}\n          error={error}\n          helperText={helperText}\n        />\n      )\n    }\n\n    case DataContentType.OPTGROUP:\n    case DataContentType.SELECT: {\n      return (\n        <EditableDropDownGuesser\n          {...props}\n          infoTooltip={infoTooltip}\n          onChange={handleChange}\n          useGroups={Boolean((input ?? type) === DataContentType.OPTGROUP)}\n          multiple={Boolean(value instanceof Array)}\n          error={error}\n          helperText={helperText}\n          replacementErrorsMessages={replacementErrorsMessages}\n          dataTestId={name}\n        />\n      )\n    }\n\n    case DataContentType.BOOLEAN: {\n      if (useDropdownBoolean) {\n        return (\n          <DropDown\n            infoTooltip={infoTooltip}\n            dirty={dirty}\n            disabled={disabled}\n            helperText={\n              dirty ? t('form.defaultValue', { value: diffValue }) : helperText\n            }\n            label={label}\n            multiple={multiple}\n            options={\n              options ?? [\n                { label: t('filter.yes'), value: true },\n                { label: t('filter.no'), value: false },\n              ]\n            }\n            required={required}\n            value={value}\n            onChange={handleChange}\n            placeholder={placeholder}\n            error={error}\n            showError={showError}\n            replacementErrorsMessages={replacementErrorsMessages}\n          />\n        )\n      }\n      return (\n        <Switch\n          infoTooltip={infoTooltip}\n          checked={\n            typeof value === 'string'\n              ? JSON.parse(value as string)\n              : Boolean(value)\n          }\n          disabled={disabled}\n          helperText={\n            Boolean(dirty) &&\n            t('form.defaultValue', { value: t(`switch.${diffValue}`) })\n          }\n          onChange={handleChange}\n          required={required}\n          label={label}\n          placeholder={placeholder}\n          data-testid={name}\n        />\n      )\n    }\n\n    case DataContentType.PROPARTIONALTOATTRIBUTE: {\n      return (\n        <ProportionalToAttributesManager\n          value={value as IProportionalToAttributesValue}\n          onChange={handleChange}\n          showError={showError}\n        />\n      )\n    }\n\n    default: {\n      return <ReadableFieldGuesser {...props} infoTooltip={infoTooltip} />\n    }\n  }\n}\n\nexport default EditableFieldGuesser\n","import React, { useContext } from 'react'\nimport { styled } from '@mui/system'\nimport { useTranslation } from 'next-i18next'\nimport {\n  DataContentType,\n  IFieldGuesserProps,\n  IImage,\n  IPositionEffect,\n  IPrice,\n  IProductInfo,\n  IScore,\n  IStock,\n} from '@elastic-suite/gally-admin-shared'\n\nimport { catalogContext } from '../../../contexts'\nimport { selectLanguage, useAppSelector } from '../../../store'\n\nimport Chip from '../../atoms/Chip/Chip'\nimport Score from '../../atoms/score/Score'\nimport Stock from '../../atoms/stock/Stock'\nimport Price from '../../atoms/price/Price'\nimport Link from 'next/link'\nimport ReadableDropDownGuesser from './ReadableDropDownGuesser'\nimport FormatRowArray from '../../molecules/format/FormatRowArray'\n\nimport PreviewGridBoostConfiguration from '../../atoms/form/PreviewGridBoostConfiguration/PreviewGridBoostConfiguration'\nimport Image from '../../atoms/image/Image'\nimport PositionEffect from '../../atoms/positionEffect/PositionEffect'\n\nconst Box = styled('div')({\n  display: 'flex',\n  alignItems: 'center',\n  overflow: 'hidden',\n  textOverflow: 'ellipsis',\n  whiteSpace: 'nowrap',\n})\n\nconst CustomA = styled('a')(({ theme }) => ({\n  color: theme.palette.colors.neutral[600],\n}))\n\nfunction ReadableFieldGuesser(props: IFieldGuesserProps): JSX.Element {\n  const { input, value, field, options, multipleValueFormat, data } = props\n  const { t } = useTranslation('common')\n  const language = useAppSelector(selectLanguage)\n  const { localizedCatalogWithDefault } = useContext(catalogContext)\n  if (value === undefined || value === null) {\n    return null\n  }\n\n  switch (input) {\n    case DataContentType.BOOLEAN: {\n      return <Box>{value ? t('filter.yes') : t('filter.no')}</Box>\n    }\n\n    case DataContentType.TAG: {\n      return <Chip label={value as string} />\n    }\n\n    case DataContentType.IMAGE: {\n      const image = (\n        typeof value === 'string' ? { path: value } : value\n      ) as IImage\n\n      return <Image image={image} />\n    }\n\n    case DataContentType.SCORE: {\n      const score = (\n        typeof value === 'number' ? { scoreValue: value } : value\n      ) as IScore\n      return (\n        <Score scoreValue={score.scoreValue} rounded {...score.boostInfos} />\n      )\n    }\n\n    case DataContentType.STOCK: {\n      if (!value || (value as IStock).status === null) {\n        return null\n      }\n      return <Stock stockStatus={(value as IStock).status} />\n    }\n\n    case DataContentType.PRICE: {\n      if (!value || (value instanceof Array && value.length < 1)) {\n        return null\n      }\n      const [{ price }] = value as IPrice[]\n      return (\n        <Price\n          price={price}\n          countryCode={language}\n          currency={localizedCatalogWithDefault.currency}\n        />\n      )\n    }\n\n    case DataContentType.OPTGROUP:\n    case DataContentType.SELECT: {\n      return (\n        <Box>\n          <ReadableDropDownGuesser\n            value={value as string | string[]}\n            field={field}\n            options={options}\n            multipleValueFormat={multipleValueFormat}\n          />\n        </Box>\n      )\n    }\n\n    case DataContentType.BUTTON: {\n      return (\n        <Box>\n          <Link href={value as string} legacyBehavior passHref>\n            <CustomA>{t('Edit')}</CustomA>\n          </Link>\n        </Box>\n      )\n    }\n\n    case DataContentType.PRODUCTINFO: {\n      if (!value) {\n        return null\n      }\n      const { price, stockStatus, productName } = value as IProductInfo\n      return (\n        <>\n          <p style={{ margin: 0 }}> {productName} </p>\n          <div style={{ margin: '4px 0' }}>\n            {price != null && typeof price !== 'undefined' && (\n              <Price\n                price={price}\n                countryCode={language}\n                currency={localizedCatalogWithDefault.currency}\n              />\n            )}\n          </div>\n          <Stock stockStatus={stockStatus} />\n        </>\n      )\n    }\n\n    case DataContentType.BOOSTPREVIEW: {\n      return <PreviewGridBoostConfiguration currentBoost={data} />\n    }\n\n    case DataContentType.POSITIONEFFECT: {\n      return <PositionEffect positionEffect={value as IPositionEffect} />\n    }\n\n    default: {\n      return value instanceof Array ? (\n        <FormatRowArray\n          values={value}\n          multipleValueFormat={multipleValueFormat}\n        />\n      ) : (\n        <Box>{value as string}</Box>\n      )\n    }\n  }\n}\n\nexport default ReadableFieldGuesser\n","import { Dispatch, SetStateAction, createContext } from 'react'\nexport const breadcrumbContext =\n  createContext<[string[], Dispatch<SetStateAction<string[]>>]>(null)\n","import {\n  ICatalog,\n  IHydraCatalog,\n  ILocalizedCatalog,\n} from '@elastic-suite/gally-admin-shared'\nimport { Dispatch, SetStateAction, createContext } from 'react'\n\nexport interface ICatalogContext {\n  catalog?: ICatalog\n  catalogId: number\n  catalogs: IHydraCatalog[]\n  localizedCatalog?: ILocalizedCatalog\n  localizedCatalogId: number\n  localizedCatalogWithDefault: ILocalizedCatalog | null\n  localizedCatalogIdWithDefault: string\n  setCatalogId: Dispatch<SetStateAction<number>>\n  setLocalizedCatalogId: Dispatch<SetStateAction<number>>\n}\n\nexport const catalogContext = createContext<ICatalogContext>(null)\n","import { createContext } from 'react'\nimport { Callback, TFunction } from 'i18next'\n\ninterface II18nContext {\n  changeLanguage: (language?: string, callback?: Callback) => Promise<TFunction>\n}\n\nexport const i18nContext = createContext<II18nContext>(null)\n","import { IMetadata } from '@elastic-suite/gally-admin-shared'\nimport { createContext } from 'react'\n\nexport const metadataContext = createContext<IMetadata[]>([])\n","import { createContext } from 'react'\nimport { IOptionsContext } from '@elastic-suite/gally-admin-shared'\nexport const optionsContext = createContext<IOptionsContext>(null)\n","import { createContext } from 'react'\n\nimport { IRuleOptionsContext } from '@elastic-suite/gally-admin-shared'\n\nexport const ruleOptionsContext = createContext<IRuleOptionsContext>(null)\n","import React from 'react'\nimport { Box } from '@mui/material'\nimport { styled } from '@mui/system'\nimport { BoostType, roundNumber } from '@elastic-suite/gally-admin-shared'\n\nimport Boost from '../boost/Boost'\n\ninterface IProps {\n  scoreValue: number\n  type?: BoostType\n  boostNumber?: number\n  boostMultiplicator?: number\n  rounded?: boolean\n}\n\nconst ScoreContainer = styled(Box)({\n  display: 'block',\n  fontWeight: '550',\n  fontFamily: 'var(--gally-font)',\n  fontSize: '16px',\n  lineHeight: '24px',\n  align: 'left',\n  verticalAlign: 'center',\n})\n\nfunction Score(props: IProps): JSX.Element {\n  const { rounded, scoreValue, type, boostNumber, boostMultiplicator } = props\n\n  return (\n    <Box>\n      <ScoreContainer>\n        {rounded ? roundNumber(scoreValue, 4) : scoreValue}\n      </ScoreContainer>\n      {Boolean(type) && (\n        <Boost\n          type={type}\n          boostNumber={boostNumber}\n          boostMultiplicator={boostMultiplicator}\n        />\n      )}\n    </Box>\n  )\n}\n\nexport default Score\n","import React from 'react'\nimport { useTranslation } from 'next-i18next'\n\nimport Chip from '../Chip/Chip'\nimport { getStockStatusLabel } from '@elastic-suite/gally-admin-shared'\n\ninterface IProps {\n  stockStatus: boolean\n}\n\nfunction Stock(props: IProps): JSX.Element {\n  const { stockStatus } = props\n  const { t } = useTranslation('common')\n  const label = t(getStockStatusLabel(stockStatus))\n\n  return <Chip color={stockStatus ? 'success' : 'error'} label={label} />\n}\n\nexport default Stock\n","import React from 'react'\nimport { Box } from '@mui/material'\nimport { styled } from '@mui/system'\nimport { formatPrice } from '@elastic-suite/gally-admin-shared'\n\ninterface IProps {\n  price: number\n  currency: string\n  countryCode: string\n}\n\nconst PriceContainer = styled(Box)(({ theme }) => ({\n  color: theme.palette.colors.neutral['900'],\n  fontFamily: 'var(--gally-font)',\n  fontStyle: 'regular',\n  fontSize: '14px',\n  lineHeight: '20px',\n  align: 'left',\n  verticalAlign: 'center',\n}))\n\nfunction Price(props: IProps): JSX.Element {\n  const { price, currency, countryCode } = props\n\n  return (\n    <PriceContainer>\n      {' '}\n      {formatPrice(price, currency, countryCode)}\n    </PriceContainer>\n  )\n}\n\nexport default Price\n","import React, { useContext, useEffect } from 'react'\nimport {\n  IField,\n  IMultipleValueFormat,\n  IOptions,\n  LoadStatus,\n} from '@elastic-suite/gally-admin-shared'\nimport { optionsContext } from '../../../../src/contexts'\nimport { Box } from '@mui/material'\nimport FormatRowArray from '../../molecules/format/FormatRowArray'\n\ninterface IProps {\n  value: string | string[]\n  field?: IField\n  options?: IOptions<unknown>\n  multipleValueFormat?: IMultipleValueFormat\n}\n\nfunction ReadableDropDownGuesser(props: IProps): JSX.Element {\n  const { value, field, options, multipleValueFormat } = props\n\n  const { fieldOptions, load, statuses } = useContext(optionsContext)\n  const dropDownOptions =\n    options ?? fieldOptions.get(field.property['@id']) ?? []\n\n  useEffect(() => {\n    if (!options && field) {\n      load(field)\n    }\n  }, [field, load, options])\n\n  const newDropDownOptions = Object.fromEntries(\n    dropDownOptions.map((it) => [it.value, it.label])\n  )\n\n  if (statuses.current.get(field.property['@id']) !== LoadStatus.SUCCEEDED) {\n    return null\n  }\n\n  return value instanceof Array ? (\n    <FormatRowArray\n      values={value.map((item) => newDropDownOptions[item] ?? item)}\n      multipleValueFormat={multipleValueFormat}\n    />\n  ) : (\n    <Box>{newDropDownOptions[value as string] ?? (value as string)}</Box>\n  )\n}\n\nexport default ReadableDropDownGuesser\n","import React from 'react'\nimport { IMultipleValueFormat } from '@elastic-suite/gally-admin-shared'\nimport FormatArray from '../../atoms/format/FormatArray'\nimport FormatText from '../../atoms/format/FormatText'\n\ninterface IProps {\n  values: string[]\n  multipleValueFormat?: IMultipleValueFormat\n}\n\nfunction FormatRowArray(props: IProps): JSX.Element {\n  const { values, multipleValueFormat } = props\n  const content: string | string[] = multipleValueFormat?.separator\n    ? values.join(multipleValueFormat.separator)\n    : values\n\n  if (!multipleValueFormat?.maxCount) {\n    return (\n      <div>\n        {content instanceof Array\n          ? content.map((item) => <div key={item}>{item}</div>)\n          : content}\n      </div>\n    )\n  }\n\n  let maxChar = values.reduce(\n    (acc, item, index) =>\n      index < multipleValueFormat.maxCount ? acc + item.length : acc,\n    0\n  )\n  maxChar =\n    maxChar +\n    (multipleValueFormat.maxCount - 1) * multipleValueFormat?.separator?.length\n\n  return (\n    <div>\n      {content instanceof Array ? (\n        <FormatArray values={content} max={multipleValueFormat.maxCount} />\n      ) : (\n        <FormatText\n          name={content}\n          max={maxChar}\n          toolTip\n          firstLetterUpp={false}\n        />\n      )}\n    </div>\n  )\n}\n\nexport default FormatRowArray\n","import React from 'react'\nimport InfoTooltip from '../form/InfoTooltip'\n\ninterface IProps {\n  values: string[]\n  max?: number\n}\n\nfunction FormatArray(props: IProps): JSX.Element {\n  const { values, max } = props\n  const valuesSliced = values.slice(0, max)\n  const tooltipContent = values.map((item) => <div key={item}>{item}</div>)\n\n  return (\n    <div>\n      {valuesSliced.map((value, index, valuesSliced) => {\n        if (values.length > max && valuesSliced.length === index + 1) {\n          return (\n            <InfoTooltip title={tooltipContent} noStyle key={value}>\n              {value}...\n            </InfoTooltip>\n          )\n        }\n        return <div key={value}>{value}</div>\n      })}\n    </div>\n  )\n}\n\nexport default FormatArray\n","import React, { useContext, useEffect, useMemo, useRef, useState } from 'react'\nimport FiltersPreviewBoostingTabs, {\n  IPreviewBoostFilter,\n} from '../../../molecules/FiltersPreviewBoostingTabs/FiltersPreviewBoostingTabs'\nimport {\n  ICategories,\n  IJsonldBase,\n  IOptions,\n  IRequestTypesOptions,\n  ProductRequestType,\n  getIdFromIri,\n} from '@elastic-suite/gally-admin-shared'\nimport { useFetchApi } from '../../../../hooks'\nimport { catalogContext } from '../../../../contexts'\nimport PreviewBoostingTableManager from '../../../organisms/PreviewBoostingTable/PreviewBoostingTableManager'\nimport { styled } from '@mui/material'\nimport { useTranslation } from 'next-i18next'\n\nconst RequiredMessage = styled('p')(() => ({\n  color: 'var(--neutral-900, #151A47)',\n  fontFamily: 'var(--gally-font)',\n  fontSize: '14px',\n  fontStyle: 'normal',\n  fontWeight: 400,\n  lineHeight: '28px',\n}))\n\nconst defaultFilter: IPreviewBoostFilter = {\n  type: ProductRequestType.CATALOG,\n}\n\ninterface IPreviewGridBoostConfigurationProps {\n  currentBoost: Record<string, unknown>\n}\n\nexport default function PreviewGridBoostConfiguration({\n  currentBoost,\n}: IPreviewGridBoostConfigurationProps): JSX.Element {\n  const { t } = useTranslation('boost')\n\n  const [filter, setFilter] = useState<IPreviewBoostFilter>(defaultFilter)\n\n  const [localizedCatalog, setLocalizedCatalog] = useState('')\n\n  const categoriesParameters = useMemo(() => {\n    return {\n      localizedCatalogId: localizedCatalog,\n    }\n  }, [localizedCatalog])\n\n  const [categoriesAPI] = useFetchApi<ICategories>(\n    'categoryTree',\n    categoriesParameters,\n    undefined,\n    true,\n    filter.type === ProductRequestType.CATALOG\n  )\n\n  const [requestTypesOptionsAPI] = useFetchApi<\n    {\n      'hydra:member': IRequestTypesOptions[]\n      'hydra:totalItems': number\n    } & IJsonldBase\n  >('boost_request_type_options')\n\n  const { catalogs } = useContext(catalogContext)\n\n  const requestTypes = useMemo(() => {\n    const currentRequestTypes: string[] =\n      (currentBoost?.requestTypes as [])?.map(\n        ({ requestType }) => requestType\n      ) || []\n\n    return (\n      requestTypesOptionsAPI?.data?.['hydra:member']?.filter((requestType) =>\n        currentRequestTypes?.includes(requestType.value)\n      ) || []\n    )\n  }, [currentBoost?.requestTypes, requestTypesOptionsAPI?.data])\n\n  const localizedCatalogs: IOptions<string> = useMemo(() => {\n    const localizedCatalogsId = (\n      (currentBoost.localizedCatalogs as []) || []\n    ).map((value: string) => getIdFromIri(value))\n    return catalogs\n      .map((hydraMember) => {\n        return hydraMember.localizedCatalogs.map((localizedCatalog) => ({\n          label: localizedCatalog.name,\n          value: localizedCatalog.id.toString(),\n          id: hydraMember.name,\n        }))\n      })\n      .flat()\n      .filter((localizedCatalogOption) =>\n        localizedCatalogsId.includes(localizedCatalogOption.value)\n      )\n  }, [catalogs, currentBoost.localizedCatalogs])\n\n  const boostIsValid = useMemo<boolean>(\n    () =>\n      Boolean((currentBoost?.requestTypes as [])?.length > 0) &&\n      Boolean((currentBoost?.localizedCatalogs as [])?.length > 0) &&\n      Boolean(currentBoost.model) &&\n      Boolean(\n        currentBoost.model !== 'attribute_value' ||\n          (currentBoost.model === 'attribute_value' &&\n            currentBoost.modelConfig &&\n            Number(\n              JSON.parse(currentBoost.modelConfig as string)\n                ?.attribute_value_config?.scale_factor\n            ) > 0)\n      ),\n    [\n      currentBoost.localizedCatalogs,\n      currentBoost.model,\n      currentBoost.requestTypes,\n      currentBoost.modelConfig,\n    ]\n  )\n\n  const currentBoostPrevRef =\n    useRef<IPreviewGridBoostConfigurationProps['currentBoost']>()\n  useEffect(() => {\n    currentBoostPrevRef.current = currentBoost\n    setFilter(defaultFilter)\n  }, [currentBoost])\n\n  if (!boostIsValid) {\n    return (\n      <RequiredMessage data-testid=\"previewRequiredMessage\">\n        {t('missingRequiredFieldMessage')}\n      </RequiredMessage>\n    )\n  }\n\n  return (\n    <>\n      <FiltersPreviewBoostingTabs\n        onSendFilter={setFilter}\n        onLocalizedCatalogChange={setLocalizedCatalog}\n        categories={categoriesAPI?.data?.categories || []}\n        localizedCatalog={localizedCatalog}\n        localizedCatalogsOptions={localizedCatalogs}\n        requestTypes={requestTypes}\n      />\n      <PreviewBoostingTableManager\n        filter={\n          currentBoostPrevRef.current !== undefined &&\n          currentBoostPrevRef.current !== currentBoost\n            ? defaultFilter\n            : filter\n        }\n        localizedCatalog={localizedCatalog}\n        requestTypes={requestTypes}\n        currentBoost={currentBoost}\n      />\n    </>\n  )\n}\n","import React, { useState } from 'react'\nimport CustomTabs from '../layout/tabs/CustomTabs'\nimport {\n  IOptions,\n  IRequestTypesOptions,\n  ITab,\n  ITreeItem,\n  LimitationType,\n} from '@elastic-suite/gally-admin-shared'\nimport { useTranslation } from 'next-i18next'\nimport FiltersPreviewBoostingTab, {\n  IPropsFiltersPreviewBoostingTab,\n} from './FiltersPreviewBoostingTab'\nimport SearchBar from '../../atoms/form/SearchBar'\nimport DropDown from '../../atoms/form/DropDown'\nimport TreeSelector from '../../atoms/form/TreeSelector'\nexport interface IPreviewBoostFilter {\n  type: string\n  search?: string\n  category?: string | number\n}\n\ninterface IProps {\n  onSendFilter: (filter: IPreviewBoostFilter) => void\n  categories: ITreeItem[]\n  localizedCatalogsOptions: IOptions<string>\n  localizedCatalog: string\n  requestTypes: IRequestTypesOptions[]\n  onLocalizedCatalogChange: (localizedCatalog: string) => void\n}\n\nfunction FiltersPreviewBoostingTabs({\n  onSendFilter,\n  categories,\n  localizedCatalogsOptions,\n  requestTypes,\n  onLocalizedCatalogChange,\n  localizedCatalog,\n}: IProps): JSX.Element {\n  const { t: tBoost } = useTranslation('boost')\n  const { t: tCommon } = useTranslation('common')\n\n  const [category, setCategory] = useState<ITreeItem>(null)\n  const [search, setSearch] = useState('')\n  const sendFilter = (tabId: number): void => {\n    onSendFilter({\n      type: requestTypes[tabId].value,\n      search,\n      category: category != null ? category.id : null,\n    })\n  }\n\n  const [showAllErrors, setShowAllErrors] = useState(false)\n\n  const DrowDownLocalizedCatalog = (\n    <DropDown\n      onChange={(value: string): void => {\n        onLocalizedCatalogChange(value)\n        setCategory(null)\n      }}\n      value={localizedCatalog}\n      options={localizedCatalogsOptions}\n      placeholder={tCommon('localizedCatalog.placeholder')}\n      useGroups\n      required\n      showError={showAllErrors}\n      sx={{ minWidth: '252.667px' }}\n      label={tCommon('localizedCatalog')}\n    />\n  )\n\n  const handleSearch = (id: number, formIsValid: boolean): void => {\n    if (formIsValid) {\n      sendFilter(id)\n    } else {\n      setShowAllErrors(true)\n    }\n  }\n\n  const tabs: ITab<IPropsFiltersPreviewBoostingTab>[] = requestTypes.map(\n    (requestType, id) => {\n      switch (requestType.limitationType) {\n        case LimitationType.CATEGORY:\n          return {\n            label: requestType.previewLabel,\n            Component: FiltersPreviewBoostingTab,\n            id,\n            componentProps: {\n              onSearch: (formIsValid): void => handleSearch(id, formIsValid),\n              children: (\n                <>\n                  {DrowDownLocalizedCatalog}\n                  <TreeSelector\n                    showError={showAllErrors}\n                    sx={{\n                      minWidth: '252.667px',\n                    }}\n                    data={categories}\n                    onChange={(value: ITreeItem): void => {\n                      setCategory(value)\n                    }}\n                    value={category}\n                    placeholder={tBoost('selectCategory').toString()}\n                    required\n                    label={tCommon('category')}\n                  />\n                </>\n              ),\n            },\n          }\n        case LimitationType.SEARCH:\n          return {\n            label: requestType.previewLabel,\n            Component: FiltersPreviewBoostingTab,\n            id,\n            componentProps: {\n              onSearch: (formIsValid): void => handleSearch(id, formIsValid),\n              children: (\n                <>\n                  {DrowDownLocalizedCatalog}\n                  <SearchBar\n                    value={search}\n                    placeholder={tBoost('termSearch')}\n                    onChange={setSearch}\n                    showError={showAllErrors}\n                    onResearch={(formIsValid): void =>\n                      handleSearch(id, formIsValid)\n                    }\n                    label={tBoost('termSearch')}\n                  />\n                </>\n              ),\n            },\n          }\n      }\n      return null\n    }\n  )\n  return (\n    requestTypes.length > 0 && (\n      <CustomTabs\n        tabs={tabs}\n        onChange={(tabId: number): void => {\n          sendFilter(tabId)\n          setShowAllErrors(false)\n        }}\n      />\n    )\n  )\n}\n\nexport default FiltersPreviewBoostingTabs\n","import React, { SyntheticEvent, useState } from 'react'\nimport { Box, Tab, Tabs } from '@mui/material'\n\nimport { ITab } from '@elastic-suite/gally-admin-shared'\n\nimport TabPanel from './TabPanel'\nimport { a11yProps } from './a11yProps'\n\ninterface IProps {\n  defaultActiveId?: number\n  onChange?: (id: number) => void\n  tabs: ITab[]\n}\n\nexport default function CustomTabs(props: IProps): JSX.Element {\n  const { defaultActiveId, onChange, tabs } = props\n  const [activeId, setActiveId] = useState(defaultActiveId ?? tabs[0]?.id)\n  const activeTabExits = tabs.some((tab) => tab.id === activeId)\n  if (!activeTabExits) {\n    setActiveId(defaultActiveId ?? tabs[0]?.id)\n  }\n\n  const handleChange = (event: SyntheticEvent, id: number): void => {\n    event.preventDefault()\n    setActiveId(id)\n    if (onChange) {\n      onChange(id)\n    }\n  }\n\n  return (\n    <Box sx={{ width: '100%', marginTop: '-12px' }}>\n      <Box sx={{ borderBottom: 1, borderColor: 'divider' }}>\n        <Tabs\n          value={activeId}\n          onChange={handleChange}\n          aria-label=\"basic tabs example\"\n        >\n          {tabs.map(({ id, label }) => (\n            <Tab key={id} label={label} {...a11yProps('simple-tabpanel', id)} />\n          ))}\n        </Tabs>\n      </Box>\n      {tabs.map(({ id, Component, componentProps }) => (\n        <TabPanel key={id} value={activeId} id={id}>\n          <Component {...componentProps} active={id === activeId} />\n        </TabPanel>\n      ))}\n    </Box>\n  )\n}\n","import React, { ReactNode, useEffect, useState } from 'react'\nimport { Box } from '@mui/material'\n\ninterface IProps {\n  children?: ReactNode\n  id: number\n  value: number\n}\n\nfunction TabPanel(props: IProps): JSX.Element {\n  const { children, value, id, ...other } = props\n  const [isLoaded, setIsLoaded] = useState(false)\n\n  useEffect(() => {\n    if (value === id) {\n      setIsLoaded(true)\n    }\n  }, [value, id])\n\n  return (\n    <div\n      role=\"tabpanel\"\n      hidden={value !== id}\n      id={`simple-tabpanel-${id}`}\n      aria-labelledby={`simple-tab-${id}`}\n      {...other}\n    >\n      {(value === id || Boolean(isLoaded)) && (\n        <Box\n          sx={{\n            paddingTop: 4,\n            fontSize: '14px',\n            lineHeight: '20px',\n            fontWeight: 500,\n            fontFamily: 'var(--gally-font)',\n          }}\n        >\n          {children}\n        </Box>\n      )}\n    </div>\n  )\n}\n\nexport default TabPanel\n","export function a11yProps(\n  ariaName: string,\n  id: string | number\n): { id: string; 'aria-controls': string } {\n  return {\n    id: `simple-tab-${id}`,\n    'aria-controls': `${`${ariaName}-${id}`}`,\n  }\n}\n","import { ITabContentProps } from '@elastic-suite/gally-admin-shared'\nimport React, {\n  PropsWithChildren,\n  SyntheticEvent,\n  createContext,\n  useState,\n} from 'react'\nimport Button from '../../atoms/buttons/Button'\nimport { useTranslation } from 'next-i18next'\nimport Form from '../../atoms/form/Form'\nexport interface IPropsFiltersPreviewBoostingTab\n  extends PropsWithChildren,\n    ITabContentProps {\n  onSearch?: (formIsValid: boolean) => void\n}\nexport const FormIsValidContext = createContext(false)\nfunction FiltersPreviewBoostingTab({\n  onSearch,\n  children,\n}: IPropsFiltersPreviewBoostingTab): JSX.Element {\n  const [formIsValid, setFormIsValid] = useState(false)\n\n  const { t } = useTranslation('boost')\n  function handleSubmit(e: SyntheticEvent, formIsValid: boolean): void {\n    e.preventDefault()\n    onSearch(formIsValid)\n    setFormIsValid(formIsValid)\n  }\n\n  return (\n    <FormIsValidContext.Provider value={formIsValid}>\n      <Form\n        onSubmit={handleSubmit}\n        style={{\n          display: 'flex',\n          gap: '10px',\n          flexDirection: 'row',\n          alignItems: 'start',\n        }}\n      >\n        {children}\n        <Button sx={{ marginTop: '24px' }} type=\"submit\">\n          {t('preview')}\n        </Button>\n      </Form>\n    </FormIsValidContext.Provider>\n  )\n}\n\nexport default FiltersPreviewBoostingTab\n","import React, {\n  CSSProperties,\n  PropsWithChildren,\n  SyntheticEvent,\n  createContext,\n} from 'react'\nimport Button from '../buttons/Button'\nimport { useFormValidation } from '../../../hooks/useFormValdation'\ninterface IFormProps extends PropsWithChildren {\n  onSubmit: (event: SyntheticEvent, formIsValid: boolean) => void\n  submitButtonText?: string\n  style?: CSSProperties\n}\n\nexport const FormContext = createContext<boolean>(false)\n\nfunction Form({\n  style,\n  submitButtonText,\n  onSubmit,\n  children,\n}: IFormProps): JSX.Element {\n  const { formRef, formIsValid } = useFormValidation()\n  const handleSubmit = (event: SyntheticEvent): void =>\n    onSubmit(event, formIsValid)\n\n  return (\n    <form ref={formRef} style={style} onSubmit={handleSubmit} noValidate>\n      {children}\n\n      {submitButtonText !== undefined && (\n        <Button\n          style={{ marginTop: '8px' }}\n          type=\"submit\"\n          data-testid=\"submitButton\"\n        >\n          {submitButtonText}\n        </Button>\n      )}\n    </form>\n  )\n}\n\nexport default Form\n","import { InputAdornment } from '@mui/material'\nimport IonIcon from '../IonIcon/IonIcon'\nimport React, { useContext } from 'react'\nimport InputText from './InputText'\nimport { FormIsValidContext } from '../../molecules/FiltersPreviewBoostingTabs/FiltersPreviewBoostingTab'\n\nexport default function SearchBar({\n  value,\n  onChange,\n  onResearch,\n  placeholder,\n  label,\n  showError,\n}: {\n  value: string\n  onChange: (value: string) => void\n  onResearch: (formIsValid?: boolean) => void\n  placeholder: string\n  label: string\n  showError?: boolean\n}): JSX.Element {\n  const formIsValid = useContext(FormIsValidContext)\n\n  return (\n    <InputText\n      label={label}\n      value={value}\n      onChange={(value: string | number): void => onChange(value.toString())}\n      placeholder={placeholder}\n      endAdornment={\n        <InputAdornment\n          position=\"end\"\n          onClick={(): void => onResearch(formIsValid)}\n          sx={{ cursor: 'pointer' }}\n        >\n          <IonIcon name=\"search\" />\n        </InputAdornment>\n      }\n      showError={showError}\n      required\n    />\n  )\n}\n","import React, { useEffect, useMemo, useState } from 'react'\nimport Pagination from '../../molecules/CustomTable/Pagination/Pagination'\nimport { useGraphqlApi } from '../../../hooks'\nimport { useTranslation } from 'next-i18next'\nimport PreviewBoostingTable from './PreviewBoostingTable'\nimport {\n  IGraphqlPreviewBoost,\n  IRequestTypesOptions,\n  ISearchLimitations,\n  LimitationType,\n  LoadStatus,\n  getPreviewBoostQuery,\n} from '@elastic-suite/gally-admin-shared'\nimport { styled } from '@mui/material'\nimport { IPreviewBoostFilter } from '../../molecules/FiltersPreviewBoostingTabs/FiltersPreviewBoostingTabs'\nimport NoAttributes from '../../../components/atoms/noAttributes/NoAttributes'\n\nconst PreviewContainer = styled('div')(({ theme }) => ({\n  borderRadius: theme.shape.borderRadius,\n  padding: theme.spacing(2),\n  paddingBottom: theme.spacing(4),\n  fontFamily: 'var(--gally-font)',\n  backgroundColor: '#E2E6F3',\n  overflow: 'hidden',\n\n  '.previewArea': {\n    margin: 0,\n    padding: 0,\n    fontSize: '12px',\n    fontFamily: 'var(--gally-font)',\n    lineHeight: '18px',\n    color: theme.palette.colors.neutral['600'],\n  },\n}))\n\nexport default function PreviewBoostingTableManager({\n  filter,\n  localizedCatalog,\n  currentBoost,\n  requestTypes,\n}: {\n  filter: IPreviewBoostFilter\n  localizedCatalog: string\n  currentBoost: Record<string, unknown>\n  requestTypes: IRequestTypesOptions[]\n}): JSX.Element | null {\n  const [currentPage, setCurrentPage] = useState(0)\n  const [totalItems, setTotalItems] = useState(0)\n  const [productsBefore, setProductsBefore] = useState([])\n  const [productsAfter, setProductsAfter] = useState([])\n\n  const rowsPerPage = 10\n\n  const { t } = useTranslation('boost')\n\n  const limitationTypes = useMemo(\n    () =>\n      new Map(\n        requestTypes.map((requestType) => [\n          requestType.value,\n          requestType.limitationType,\n        ])\n      ),\n    [requestTypes]\n  )\n\n  const variables = useMemo(() => {\n    const filterValue: {\n      search?: string | number\n      category?: string | number\n    } = {}\n\n    switch (limitationTypes.get(filter.type)) {\n      case LimitationType.CATEGORY:\n        filterValue.category = filter.category\n        break\n      case LimitationType.SEARCH:\n        filterValue.search = filter.search\n        break\n    }\n\n    return {\n      localizedCatalog,\n      requestType: filter.type,\n      currentBoost: JSON.stringify({\n        ...currentBoost,\n        ...(currentBoost.searchLimitations && {\n          searchLimitations: (\n            currentBoost.searchLimitations as ISearchLimitations[]\n          ).filter((search) => search.queryText !== null),\n        }),\n      }),\n      ...filterValue,\n      currentPage: currentPage + 1,\n      pageSize: rowsPerPage,\n    }\n  }, [\n    filter,\n    localizedCatalog,\n    currentBoost,\n    currentPage,\n    rowsPerPage,\n    limitationTypes,\n  ])\n\n  const filterIsValid = useMemo<boolean>(\n    () =>\n      Boolean(\n        limitationTypes.get(filter.type) === LimitationType.SEARCH &&\n          filter.search.length > 0 &&\n          localizedCatalog\n      ) ||\n      Boolean(\n        limitationTypes.get(filter.type) === LimitationType.CATEGORY &&\n          filter.category &&\n          localizedCatalog\n      ),\n    [filter, localizedCatalog, limitationTypes]\n  )\n\n  const [{ data: previewBoostData, status }] =\n    useGraphqlApi<IGraphqlPreviewBoost>(\n      getPreviewBoostQuery(),\n      variables,\n      undefined,\n      filterIsValid\n    )\n\n  useEffect(() => {\n    setProductsBefore(previewBoostData?.previewBoost.resultsBefore || [])\n    setProductsAfter(previewBoostData?.previewBoost.resultsAfter || [])\n    setTotalItems(previewBoostData?.previewBoost.totalItems || 0)\n  }, [previewBoostData])\n\n  useEffect(() => {\n    setCurrentPage(0)\n  }, [filter])\n\n  if (!filterIsValid) {\n    return (\n      <PreviewContainer>\n        <p className=\"previewArea\">{t('previewArea')}</p>\n        <NoAttributes title={t('noFiltersPreviewMessage')} />\n      </PreviewContainer>\n    )\n  }\n\n  return (\n    <>\n      <Pagination\n        style={{\n          borderRadius: '8px',\n          marginBottom: '16px',\n          marginTop: '32px',\n        }}\n        currentPage={currentPage}\n        onPageChange={setCurrentPage}\n        rowsPerPage={rowsPerPage}\n        count={totalItems}\n        rowsPerPageOptions={[]}\n        withResults\n      />\n      <PreviewContainer>\n        <p className=\"previewArea\">{t('previewArea')}</p>\n        <PreviewBoostingTable\n          resultsBefore={productsBefore}\n          resultsAfter={productsAfter}\n          loading={status === LoadStatus.LOADING}\n        />\n        <Pagination\n          style={{ padding: '0 16px', border: 'none' }}\n          currentPage={currentPage}\n          onPageChange={setCurrentPage}\n          rowsPerPage={rowsPerPage}\n          count={totalItems}\n          rowsPerPageOptions={[]}\n          withResults\n          isBottom\n        />\n      </PreviewContainer>\n    </>\n  )\n}\n","import React, { CSSProperties, ChangeEvent, MouseEvent, ReactNode } from 'react'\nimport {\n  Box,\n  IconButtonProps,\n  LabelDisplayedRowsArgs,\n  SelectProps,\n  TablePagination,\n} from '@mui/material'\nimport { styled } from '@mui/system'\nimport { useTranslation } from 'next-i18next'\nimport { theme } from '@elastic-suite/gally-admin-shared'\n\ninterface IPaginationStyle {\n  color: string\n  fontFamily: string\n  fontSize: string\n  lineHeight: string\n}\n\nconst paginationStyle: IPaginationStyle = {\n  color: theme.palette.colors.neutral[600],\n  fontFamily: 'var(--gally-font)',\n  fontSize: '12px',\n  lineHeight: '18px',\n}\n\nconst PaginationTextContainer = styled('span')({\n  ...paginationStyle,\n})\n\nconst StyledParagraph = styled('p')({\n  fontFamily: 'var(--gally-font)',\n  fontSize: '12px',\n  fontWeight: 400,\n  color: '#424880',\n  lineHeight: '18px',\n  margin: 0,\n})\n\ninterface IProps {\n  style?: CSSProperties\n  withResults?: boolean\n  isBottom?: boolean\n  count: number\n  currentPage: number\n  rowsPerPage: number\n  rowsPerPageOptions: number[]\n  dataTestId?: string\n  onRowsPerPageChange?: (\n    event: ChangeEvent<HTMLTextAreaElement | HTMLInputElement>\n  ) => void\n  onPageChange: (page: number) => void\n}\n\nfunction Pagination(props: IProps): JSX.Element {\n  const {\n    style,\n    withResults,\n    isBottom,\n    count,\n    currentPage,\n    rowsPerPage,\n    rowsPerPageOptions,\n    onRowsPerPageChange,\n    onPageChange,\n    dataTestId,\n  } = props\n\n  const { t } = useTranslation('common')\n\n  function handlePageChange(\n    _: MouseEvent<HTMLButtonElement> | null,\n    page: number\n  ): void {\n    onPageChange(page)\n  }\n\n  function labelDisplayedRows(\n    paginationInfo: LabelDisplayedRowsArgs\n  ): ReactNode {\n    return (\n      <PaginationTextContainer>\n        <span data-testid=\"from\">{paginationInfo.from}</span> -{' '}\n        <span data-testid=\"to\">{paginationInfo.to}</span> {t('pagination.of')}{' '}\n        <span data-testid=\"count\">{paginationInfo.count}</span>\n      </PaginationTextContainer>\n    )\n  }\n\n  const labelRowsPerPage = (\n    <PaginationTextContainer>\n      {' '}\n      {t('pagination.rowsPerPage')}\n    </PaginationTextContainer>\n  )\n\n  const selectProps: Partial<SelectProps<null>> = {\n    SelectDisplayProps: {\n      style: {\n        ...paginationStyle,\n      },\n    },\n  }\n\n  const nextAndBackButtonProps: Partial<IconButtonProps<'button', unknown>> = {\n    sx: { color: theme.palette.colors.neutral['900'] },\n  }\n\n  return (\n    <Box\n      sx={{\n        ...(isBottom && {\n          borderRadius: '0 0 8px 8px',\n        }),\n        ...(!isBottom && {\n          borderRadius: '8px 8px 0 0',\n        }),\n        bgcolor: 'colors.white',\n        ...(withResults && {\n          display: 'flex',\n          flexDirection: 'row',\n          alignItems: 'center',\n          justifyContent: 'space-between',\n          backgroundColor: '#fff',\n          border: '1px solid #E2E6F3',\n          padding: '0 22px',\n        }),\n        ...style,\n      }}\n      data-testid={dataTestId}\n    >\n      {Boolean(withResults) && (\n        <StyledParagraph>{t(`result`, { count })}</StyledParagraph>\n      )}\n      <TablePagination\n        rowsPerPageOptions={rowsPerPageOptions}\n        component=\"div\"\n        count={count}\n        page={currentPage}\n        onPageChange={handlePageChange}\n        rowsPerPage={rowsPerPage}\n        onRowsPerPageChange={onRowsPerPageChange}\n        labelDisplayedRows={labelDisplayedRows}\n        labelRowsPerPage={labelRowsPerPage}\n        SelectProps={selectProps}\n        nextIconButtonProps={nextAndBackButtonProps}\n        backIconButtonProps={nextAndBackButtonProps}\n      />\n    </Box>\n  )\n}\n\nexport default Pagination\n","import React from 'react'\nimport {\n  IPreviewBoostingProducts,\n  IPreviewProduct,\n  ITableHeader,\n  ITableRow,\n} from '@elastic-suite/gally-admin-shared'\nimport CustomTable from '../CustomTable/CustomTable'\nimport FieldGuesser from '../../stateful/FieldGuesser/FieldGuesser'\nimport NoAttributes from '../../atoms/noAttributes/NoAttributes'\nimport { useTranslation } from 'next-i18next'\nimport { CircularProgress, styled } from '@mui/material'\nimport { selectConfiguration, useAppSelector } from '../../../store'\n\nconst CustomRoot = styled('div')(({ theme }) => ({\n  display: 'flex',\n  flexDirection: 'column',\n  gap: '40px',\n  padding: theme.spacing(8),\n  border: '1px solid',\n  borderColor: theme.palette.colors.neutral['300'],\n  borderRadius: theme.spacing(1),\n  background: theme.palette.colors.white,\n  textAlign: 'center',\n  alignItems: 'center',\n}))\n\nconst TableContainer = styled('div')(({ theme }) => ({\n  '.tableTitles': {\n    margin: theme.spacing(2),\n    display: 'flex',\n    flexDirection: 'row',\n    alignItems: 'center',\n    justifyContent: 'space-around',\n    fontFamily: 'var(--gally-font)',\n    p: {\n      fontSize: '14px',\n      lineHeight: '20px',\n      color: '#151A47',\n      margin: 0,\n      '&.after': {\n        fontWeight: 600,\n      },\n    },\n  },\n  table: {\n    'th, td': {\n      fontSize: '14px',\n      fontFamily: 'var(--gally-font)',\n      lineHeight: '20px',\n    },\n    th: {\n      color: '#2F3674',\n      fontWeight: 500,\n    },\n    td: {\n      color: '#151A47',\n      fontWeight: 400,\n    },\n  },\n}))\n\nconst convertProductToRow = (\n  productsBefore: IPreviewProduct[],\n  productsAfter: IPreviewProduct[]\n): ITableRow[] => {\n  const dataInfo =\n    productsBefore.length >= productsAfter.length\n      ? {\n          field: 'before',\n          products: productsBefore,\n          otherProducts: productsAfter,\n        }\n      : {\n          field: 'after',\n          products: productsAfter,\n          otherProducts: productsBefore,\n        }\n\n  return dataInfo.products.map((product, index) => {\n    const beforeProduct =\n      dataInfo.field === 'before' ? product : dataInfo.otherProducts[index]\n    const afterProduct =\n      dataInfo.field === 'after' ? product : dataInfo.otherProducts[index]\n\n    return {\n      id: product.id,\n      beforeImage: beforeProduct?.image,\n      beforeInfo: {\n        productName: beforeProduct?.name,\n        stockStatus: beforeProduct?.stock?.status,\n        price: beforeProduct?.price?.[0]?.price,\n      },\n      beforeScore: beforeProduct.score,\n      afterImage: afterProduct?.image,\n      afterInfo: {\n        productName: afterProduct?.name,\n        stockStatus: afterProduct?.stock?.status,\n        price: afterProduct?.price?.[0]?.price,\n      },\n      afterScore: {\n        scoreValue:\n          typeof afterProduct?.score === 'number'\n            ? afterProduct?.score\n            : afterProduct?.score?.scoreValue,\n      },\n      afterPosition: {\n        type:\n          afterProduct?.effect === 0\n            ? 'straight'\n            : afterProduct?.effect === 1\n            ? 'up'\n            : 'down',\n      },\n    }\n  })\n}\n\nconst globalStyle = {\n  verticalAlign: 'middle',\n}\n\nconst scoreFieldStyle = {\n  borderLeft: '1px solid #E2E6F3',\n}\n\nconst positionFieldStyle = {\n  borderLeft: '1px solid #E2E6F3',\n  textAlign: 'center ',\n  width: '5%',\n}\n\nconst tableHeaders = [\n  {\n    id: 'beforeImage',\n    name: 'beforeImage',\n    label: 'Image',\n    input: 'image',\n    editable: false,\n    sticky: false,\n    cellsStyle: {\n      ...globalStyle,\n      paddingRight: 0,\n    },\n  },\n  {\n    id: 'beforeInfo',\n    name: 'beforeInfo',\n    label: 'Info',\n    input: 'productInfo',\n    editable: false,\n    sticky: false,\n    cellsStyle: globalStyle,\n  },\n  {\n    id: 'beforeScore',\n    name: 'beforeScore',\n    label: 'Score',\n    input: 'score',\n    editable: false,\n    sticky: false,\n    headerStyle: {\n      borderRight: '2px solid #1812A0',\n    },\n    cellsStyle: {\n      borderRight: '2px solid #1812A0',\n      ...globalStyle,\n      ...scoreFieldStyle,\n    },\n  },\n  {\n    id: 'afterImage',\n    name: 'afterImage',\n    label: 'Image',\n    input: 'image',\n    editable: false,\n    sticky: false,\n    cellsStyle: {\n      ...globalStyle,\n      paddingRight: 0,\n    },\n  },\n  {\n    id: 'afterInfo',\n    name: 'afterInfo',\n    label: 'Info',\n    input: 'productInfo',\n    editable: false,\n    sticky: false,\n    cellsStyle: globalStyle,\n  },\n  {\n    id: 'afterScore',\n    name: 'afterScore',\n    label: 'Score',\n    input: 'score',\n    editable: false,\n    sticky: false,\n    cellsStyle: { ...globalStyle, ...scoreFieldStyle },\n  },\n  {\n    id: 'afterPosition',\n    name: 'afterPosition',\n    label: 'Position',\n    input: 'positionEffect',\n    editable: false,\n    sticky: false,\n    cellsStyle: { ...globalStyle, ...positionFieldStyle },\n    headerStyle: { textAlign: 'center' },\n  },\n] as ITableHeader[]\n\nfunction PreviewBoostingTable({\n  resultsBefore,\n  resultsAfter,\n  loading,\n}: IPreviewBoostingProducts & { loading?: boolean }): JSX.Element {\n  const { t } = useTranslation('boost')\n  const products = convertProductToRow(resultsBefore, resultsAfter)\n  const configuration = useAppSelector(selectConfiguration)\n\n  if (loading)\n    return (\n      <CustomRoot>\n        <CircularProgress color=\"inherit\" size=\"25px\" />\n      </CustomRoot>\n    )\n\n  if (products.length === 0)\n    return <NoAttributes title={t('noProductSearch')} />\n\n  return (\n    <>\n      <TableContainer>\n        <div className=\"tableTitles\">\n          <p className=\"before\">{t('beforeBoosting')}</p>\n          <p className=\"after\">{t('afterBoosting')}</p>\n        </div>\n        <CustomTable\n          withoutDragableColumn\n          Field={FieldGuesser}\n          tableHeaders={tableHeaders}\n          tableRows={products}\n          configuration={configuration}\n        />\n      </TableContainer>\n    </>\n  )\n}\n\nexport default PreviewBoostingTable\n","import React, {\n  ChangeEvent,\n  FunctionComponent,\n  MutableRefObject,\n  SyntheticEvent,\n  forwardRef,\n  useEffect,\n  useRef,\n  useState,\n} from 'react'\nimport { DragDropContext, DropResult } from 'react-beautiful-dnd'\n\nimport {\n  DataContentType,\n  IConfigurations,\n  IFieldGuesserProps,\n  ITableConfig,\n  ITableHeader,\n  ITableRow,\n  reorderingColumnWidth,\n  selectionColumnWidth,\n  stickyColunWidth,\n} from '@elastic-suite/gally-admin-shared'\n\nimport { useIsHorizontalOverflow } from '../../../hooks'\n\nimport {\n  StyledTable,\n  TableContainerWithCustomScrollbar,\n} from './CustomTable.styled'\nimport DraggableBody from './CustomTableBody/DraggableBody'\nimport NonDraggableBody from './CustomTableBody/NonDraggableBody'\nimport CustomTableHeader from './CustomTableHeader/CustomTableHeader'\n\nexport interface ICustomTableProps {\n  Field: FunctionComponent<IFieldGuesserProps>\n  border?: boolean\n  diffRows?: ITableRow[]\n  draggable?: boolean\n  massiveSelectionState?: boolean\n  massiveSelectionIndeterminate?: boolean\n  onReOrder?: (rows: ITableRow[]) => void\n  onRowUpdate?: (\n    id: string | number,\n    name: string,\n    value: boolean | number | string,\n    event: SyntheticEvent\n  ) => void\n  onSelection?: (rowIds: (string | number)[] | boolean) => void\n  selectedRows?: (string | number)[]\n  tableConfigs?: ITableConfig[]\n  tableHeaders: ITableHeader[]\n  tableRows: ITableRow[]\n  withSelection?: boolean\n  configuration?: IConfigurations\n  hasEditLink?: boolean\n  editLink?: string\n  withoutDragableColumn?: boolean\n  hoverableLine?: boolean\n}\n\nfunction CustomTable(\n  props: ICustomTableProps,\n  ref: MutableRefObject<HTMLDivElement>\n): JSX.Element {\n  const {\n    Field,\n    border,\n    diffRows,\n    draggable,\n    massiveSelectionState,\n    massiveSelectionIndeterminate,\n    onReOrder,\n    onRowUpdate,\n    onSelection,\n    tableConfigs,\n    tableHeaders,\n    tableRows,\n    selectedRows,\n    withSelection,\n    configuration,\n    hasEditLink,\n    editLink,\n    withoutDragableColumn,\n    hoverableLine,\n  } = props\n\n  const [scrollLength, setScrollLength] = useState<number>(0)\n  const tableRef = useRef<HTMLDivElement>()\n  const { current: refCurrent } = ref ?? tableRef\n  const { isOverflow, shadow } = useIsHorizontalOverflow(refCurrent)\n\n  useEffect(() => {\n    if (refCurrent?.scrollTo) {\n      refCurrent.scrollTo({ top: 0, left: 0, behavior: 'smooth' })\n    }\n\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [tableRows.length, tableRows?.[0]?.id, refCurrent])\n\n  /**\n   * Compute the length of the sticky part.\n   * For now, each sticky colun have a fixed width of 200px but it could ( maybe should ) be improve by seeting an array of width provide by props if needed.\n   */\n  const stickyLength =\n    tableHeaders.filter((header) => header.sticky).length * stickyColunWidth\n\n  let handleDragEnd = null\n  if (draggable) {\n    handleDragEnd = (e: DropResult): void => {\n      if (!e.destination) return\n      const tempData = Array.from(tableRows)\n      const [source_data] = tempData.splice(e.source.index, 1)\n      tempData.splice(e.destination.index, 0, source_data)\n      onReOrder?.(tempData)\n    }\n  }\n\n  /**\n   * Compute the CSS left values for the sticky part of the table.\n   * It return an array of all successive left value to use in CustomTableHeader.tsx, DraggableTableRow.tsx and CustomTableRows.tsx\n   * It gonna be provide to each row component.\n   */\n  function computeLeftCSSValues(): number[] {\n    const stickyHeaders = tableHeaders.filter((header) => header.sticky)\n    const result: number[] = [0]\n    let eachLeftvalues: number[] = [0]\n    eachLeftvalues.push(reorderingColumnWidth)\n\n    if (withSelection) {\n      eachLeftvalues.push(selectionColumnWidth)\n    }\n    if (stickyHeaders.length > 0) {\n      eachLeftvalues = eachLeftvalues.concat(\n        Array(stickyHeaders.length).fill(stickyColunWidth)\n      )\n    }\n    eachLeftvalues.reduce(\n      (leftPrevious, leftCurrent, i) => (result[i] = leftPrevious + leftCurrent)\n    )\n    return result\n  }\n  const cssLeftValues = computeLeftCSSValues()\n\n  useEffect(() => {\n    if (withSelection) {\n      setScrollLength(\n        selectionColumnWidth + stickyLength + reorderingColumnWidth\n      )\n    } else {\n      setScrollLength(stickyLength + reorderingColumnWidth)\n    }\n  }, [withSelection, stickyLength, draggable])\n\n  const styles = border\n    ? {\n        border: '2px solid #ED7465',\n        borderTop: 'none',\n        borderRadius: '0px 0px 8px 8px',\n        boxSizing: 'border-box',\n      }\n    : {}\n\n  function handleSelection(event: ChangeEvent<HTMLInputElement>): void {\n    onSelection(event.target.checked)\n  }\n\n  const newHeadersTable = hasEditLink\n    ? tableHeaders.concat([\n        {\n          id: 'actions',\n          name: 'edit',\n          label: 'Actions',\n          input: DataContentType.BUTTON,\n        },\n      ])\n    : tableHeaders\n\n  return (\n    <>\n      <DragDropContext onDragEnd={handleDragEnd}>\n        <TableContainerWithCustomScrollbar\n          ref={ref ?? tableRef}\n          sx={{\n            '&::-webkit-scrollbar-track': {\n              marginLeft: `${scrollLength}px`,\n            },\n            '&::-webkit-scrollbar-thumb': {\n              marginLeft: `${scrollLength}px`,\n            },\n            ...styles,\n          }}\n        >\n          <StyledTable\n            stickyHeader\n            sx={\n              hoverableLine\n                ? {\n                    '& tr:hover td': {\n                      backgroundColor: '#F4F7FF',\n                      cursor: 'pointer',\n                    },\n                  }\n                : {}\n            }\n          >\n            <CustomTableHeader\n              cssLeftValues={cssLeftValues}\n              isHorizontalOverflow={isOverflow}\n              massiveSelectionIndeterminate={massiveSelectionIndeterminate}\n              massiveSelectionState={massiveSelectionState}\n              onSelection={handleSelection}\n              shadow={shadow}\n              tableHeaders={newHeadersTable}\n              withSelection={withSelection}\n              withoutDragableColumn={withoutDragableColumn}\n            />\n            {Boolean(!draggable) && (\n              <NonDraggableBody\n                Field={Field}\n                cssLeftValues={cssLeftValues}\n                diffRows={diffRows}\n                isHorizontalOverflow={isOverflow}\n                onRowUpdate={onRowUpdate}\n                onSelectRows={onSelection}\n                selectedRows={selectedRows}\n                shadow={shadow}\n                tableConfigs={tableConfigs}\n                tableHeaders={newHeadersTable}\n                tableRows={tableRows}\n                withSelection={withSelection}\n                configuration={configuration}\n                hasEditLink={hasEditLink}\n                editLink={editLink}\n                withoutDragableColumn={withoutDragableColumn}\n              />\n            )}\n            {Boolean(draggable) && (\n              <DraggableBody\n                Field={Field}\n                cssLeftValues={cssLeftValues}\n                diffRows={diffRows}\n                isHorizontalOverflow={isOverflow}\n                onRowUpdate={onRowUpdate}\n                onSelectRows={onSelection}\n                selectedRows={selectedRows}\n                shadow={shadow}\n                tableConfigs={tableConfigs}\n                tableHeaders={newHeadersTable}\n                tableRows={tableRows}\n                withSelection={withSelection}\n                configuration={configuration}\n                hasEditLink={hasEditLink}\n                editLink={editLink}\n              />\n            )}\n          </StyledTable>\n        </TableContainerWithCustomScrollbar>\n      </DragDropContext>\n    </>\n  )\n}\n\nexport default forwardRef(CustomTable)\n","import { Table, TableCell, TableContainer } from '@mui/material'\nimport { styled } from '@mui/system'\n\nimport { getCustomScrollBarStyles } from '@elastic-suite/gally-admin-shared'\n\nexport const TableContainerWithCustomScrollbar = styled(TableContainer)(\n  ({ theme }) => ({\n    ...getCustomScrollBarStyles(theme),\n    maxHeight: '70vh',\n  })\n)\n\nexport const StyledTable = styled(Table)({\n  tableLayout: 'auto',\n  width: '100%',\n  height: '100%',\n  borderCollapse: 'separate',\n})\n\nexport const BaseTableCell = styled(TableCell)({\n  maxHeight: '80px',\n  maxWidth: '20%',\n  textOverflow: 'ellipsis',\n  overflow: 'hidden',\n  verticalAlign: 'middle',\n})\n\nexport const StickyTableCell = styled(BaseTableCell)({\n  position: 'sticky',\n  left: 0,\n  padding: 0,\n  height: '100%',\n  verticalAlign: 'middle',\n  '&:last-of-type': {\n    borderRight: '2px solid',\n    borderRightColor: 'colors.neutral.600',\n  },\n})\n","import React, { FunctionComponent, SyntheticEvent } from 'react'\nimport { TableBody } from '@mui/material'\nimport { Draggable, Droppable } from 'react-beautiful-dnd'\nimport {\n  IConfigurations,\n  IFieldGuesserProps,\n  ITableConfig,\n  ITableHeader,\n  ITableRow,\n} from '@elastic-suite/gally-admin-shared'\n\nimport DraggableRow from '../CustomTableRow/DraggableRow'\n\ninterface IProps {\n  Field: FunctionComponent<IFieldGuesserProps>\n  cssLeftValues: number[]\n  diffRows?: ITableRow[]\n  isHorizontalOverflow: boolean\n  onRowUpdate?: (\n    id: string | number,\n    name: string,\n    value: boolean | number | string,\n    event: SyntheticEvent\n  ) => void\n  onSelectRows: (arr: (string | number)[]) => void\n  selectedRows: (string | number)[]\n  shadow: boolean\n  tableConfigs?: ITableConfig[]\n  tableHeaders: ITableHeader[]\n  tableRows: ITableRow[]\n  withSelection: boolean\n  configuration: IConfigurations\n  hasEditLink?: boolean\n  editLink?: string\n}\n\nfunction DraggableBody(props: IProps): JSX.Element {\n  const {\n    Field,\n    cssLeftValues,\n    diffRows,\n    isHorizontalOverflow,\n    onRowUpdate,\n    onSelectRows,\n    selectedRows,\n    shadow,\n    tableConfigs,\n    tableHeaders,\n    tableRows,\n    withSelection,\n    configuration,\n    hasEditLink,\n    editLink,\n  } = props\n\n  const newTableRows = hasEditLink\n    ? tableRows.map((item) => {\n        const link = editLink\n          ? `${editLink}?id=${item.id}`\n          : `./edit?id=${item.id}`\n        return { ...item, edit: link }\n      })\n    : tableRows\n\n  return (\n    <Droppable droppableId=\"droppableTable\">\n      {(provider): JSX.Element => (\n        <TableBody ref={provider.innerRef} {...provider.droppableProps}>\n          {newTableRows.map((tableRow, index) => (\n            <Draggable\n              key={tableRow.id}\n              draggableId={String(tableRow.id)}\n              index={index}\n            >\n              {(provider): JSX.Element => (\n                <DraggableRow\n                  Field={Field}\n                  cssLeftValues={cssLeftValues}\n                  diffRow={diffRows?.[index]}\n                  isHorizontalOverflow={isHorizontalOverflow}\n                  onRowUpdate={onRowUpdate}\n                  onSelectRows={onSelectRows}\n                  provider={provider}\n                  selectedRows={selectedRows}\n                  shadow={shadow}\n                  tableConfig={tableConfigs?.[index]}\n                  tableHeaders={tableHeaders}\n                  tableRow={tableRow}\n                  withSelection={withSelection}\n                  configuration={configuration}\n                />\n              )}\n            </Draggable>\n          ))}\n          {provider.placeholder}\n        </TableBody>\n      )}\n    </Droppable>\n  )\n}\n\nexport default DraggableBody\n","import React, { ChangeEvent, FunctionComponent, SyntheticEvent } from 'react'\nimport { Box, Checkbox, TableRow } from '@mui/material'\nimport { DraggableProvided } from 'react-beautiful-dnd'\nimport {\n  IConfigurations,\n  IFieldGuesserProps,\n  IImage,\n  ITableConfig,\n  ITableHeader,\n  ITableHeaderSticky,\n  ITableRow,\n  getImageValue,\n  getPropsFromFieldState,\n} from '@elastic-suite/gally-admin-shared'\n\nimport {\n  draggableColumnStyle,\n  handleSingleRow,\n  manageStickyHeaders,\n  nonStickyStyle,\n  reorderIconStyle,\n  selectionStyle,\n  stickyStyle,\n} from '../../../../services'\n\nimport IonIcon from '../../../atoms/IonIcon/IonIcon'\nimport {\n  BaseTableCell,\n  StickyTableCell,\n} from '../../CustomTable/CustomTable.styled'\n\ninterface IProps {\n  Field: FunctionComponent<IFieldGuesserProps>\n  cssLeftValues: number[]\n  diffDefaultValues?: boolean\n  diffRow?: ITableRow\n  isHorizontalOverflow: boolean\n  onRowUpdate?: (\n    id: string | number,\n    name: string,\n    value: boolean | number | string,\n    event: SyntheticEvent\n  ) => void\n  onSelectRows: (arr: (string | number)[]) => void\n  provider: DraggableProvided\n  selectedRows: (string | number)[]\n  shadow: boolean\n  tableConfig?: ITableConfig\n  tableHeaders: ITableHeader[]\n  tableRow: ITableRow\n  withSelection: boolean\n  configuration: IConfigurations\n}\n\nfunction DraggableRow(props: IProps): JSX.Element {\n  const {\n    Field,\n    cssLeftValues,\n    diffRow,\n    isHorizontalOverflow,\n    onRowUpdate,\n    onSelectRows,\n    provider,\n    selectedRows,\n    shadow,\n    tableConfig,\n    tableHeaders,\n    tableRow,\n    withSelection,\n    configuration,\n  } = props\n  const stickyHeaders: ITableHeaderSticky[] = manageStickyHeaders(tableHeaders)\n  const nonStickyHeaders = tableHeaders.filter((header) => !header.sticky)\n  const isOnlyDraggable = !withSelection && stickyHeaders.length === 0\n\n  function handleSelectionChange(value: ChangeEvent<HTMLInputElement>): void {\n    handleSingleRow(value, tableRow.id, onSelectRows, selectedRows)\n  }\n\n  function handleChange(\n    name: string,\n    value: boolean | number | string,\n    event: SyntheticEvent\n  ): void {\n    onRowUpdate(tableRow.id, name, value, event)\n  }\n\n  return (\n    <TableRow\n      key={tableRow.id}\n      {...provider.draggableProps}\n      ref={provider.innerRef}\n    >\n      <StickyTableCell\n        sx={{\n          borderBottomColor: 'colors.neutral.300',\n          '&:hover': {\n            color: 'colors.neutral.500',\n            cursor: 'default',\n          },\n          ...draggableColumnStyle(\n            isOnlyDraggable,\n            cssLeftValues[0],\n            isHorizontalOverflow,\n            shadow\n          ),\n        }}\n        {...provider.dragHandleProps}\n      >\n        <Box sx={reorderIconStyle}>\n          <IonIcon name=\"reorder-two-outline\" />\n        </Box>\n      </StickyTableCell>\n\n      {Boolean(withSelection) && (\n        <StickyTableCell\n          sx={selectionStyle(\n            isHorizontalOverflow,\n            cssLeftValues[1],\n            shadow,\n            stickyHeaders.length\n          )}\n        >\n          <Checkbox\n            checked={selectedRows ? selectedRows.includes(tableRow.id) : false}\n            data-testid=\"draggable-single-row-selection\"\n            onChange={handleSelectionChange}\n            {...tableConfig.selection}\n          />\n        </StickyTableCell>\n      )}\n\n      {stickyHeaders.map(({ gridHeaderInfoTooltip, ...stickyHeader }, i) => (\n        <StickyTableCell\n          key={stickyHeader.name}\n          sx={{\n            ...stickyStyle(\n              cssLeftValues[i + 1 + Number(withSelection)],\n              shadow,\n              stickyHeader.isLastSticky,\n              stickyHeader.type\n            ),\n            ...stickyHeader.cellsStyle,\n          }}\n        >\n          <Field\n            {...stickyHeader}\n            diffValue={diffRow ? diffRow[stickyHeader.name] ?? null : undefined}\n            label=\"\"\n            onChange={handleChange}\n            row={tableRow}\n            value={tableRow[stickyHeader.name]}\n            {...getPropsFromFieldState(\n              tableRow,\n              stickyHeader.depends,\n              tableConfig[stickyHeader.name]\n            )}\n          />\n        </StickyTableCell>\n      ))}\n\n      {nonStickyHeaders.map(({ gridHeaderInfoTooltip, ...header }) => {\n        const value =\n          tableRow[header.name] && header.input === 'image'\n            ? getImageValue(\n                configuration['base_url/media'],\n                tableRow[header.name] as IImage | string\n              )\n            : tableRow[header.name]\n        return (\n          <BaseTableCell\n            sx={{ ...nonStickyStyle(header.type), ...header.cellsStyle }}\n            key={header.name}\n          >\n            <Field\n              {...header}\n              diffValue={diffRow ? diffRow[header.name] ?? null : undefined}\n              label=\"\"\n              onChange={handleChange}\n              row={tableRow}\n              value={value}\n              {...getPropsFromFieldState(\n                tableRow,\n                header.depends,\n                tableConfig[header.name]\n              )}\n            />\n          </BaseTableCell>\n        )\n      })}\n    </TableRow>\n  )\n}\n\nDraggableRow.defaultProps = {\n  tableConfig: {},\n}\n\nexport default DraggableRow\n","import React, { FunctionComponent, SyntheticEvent, useState } from 'react'\nimport { TableBody } from '@mui/material'\nimport {\n  IConfigurations,\n  ICustomDialog,\n  IFieldGuesserProps,\n  ITableConfig,\n  ITableHeader,\n  ITableRow,\n} from '@elastic-suite/gally-admin-shared'\n\nimport NonDraggableRow from '../CustomTableRow/NonDraggableRow'\nimport { usePopIn } from '../../../../hooks/usePopin'\nimport CustomDialog from '../../../atoms/modals/CustomDialog'\n\ninterface IProps {\n  Field: FunctionComponent<IFieldGuesserProps>\n  cssLeftValues: number[]\n  diffRows?: ITableRow[]\n  isHorizontalOverflow: boolean\n  onRowUpdate?: (\n    id: string | number,\n    name: string,\n    value: boolean | number | string,\n    event: SyntheticEvent\n  ) => void\n  onSelectRows: (arr: (string | number)[]) => void\n  selectedRows: (string | number)[]\n  shadow: boolean\n  tableConfigs?: ITableConfig[]\n  tableHeaders: ITableHeader[]\n  tableRows: ITableRow[]\n  withSelection: boolean\n  configuration: IConfigurations\n  hasEditLink?: boolean\n  editLink?: string\n  withoutDragableColumn?: boolean\n}\n\nfunction NonDraggableBody(props: IProps): JSX.Element {\n  const {\n    Field,\n    cssLeftValues,\n    diffRows,\n    isHorizontalOverflow,\n    onRowUpdate,\n    onSelectRows,\n    selectedRows,\n    shadow,\n    tableConfigs,\n    tableHeaders,\n    tableRows,\n    withSelection,\n    configuration,\n    hasEditLink,\n    editLink,\n    withoutDragableColumn,\n  } = props\n\n  const [open, handleClickOpen, handleClose] = usePopIn()\n  const [tableRowPopIn, setTableRowPopIn] = useState<ICustomDialog>()\n\n  const newTableRows = hasEditLink\n    ? tableRows.map((item) => {\n        const link = editLink\n          ? `${editLink}?id=${item.id}`\n          : `./edit?id=${item.id}`\n        return { ...item, edit: link }\n      })\n    : tableRows\n\n  function handleClick(tableRowPopIn: ICustomDialog): void {\n    setTableRowPopIn(tableRowPopIn)\n    handleClickOpen()\n  }\n\n  return (\n    <TableBody>\n      {newTableRows.map((tableRow, index) => (\n        <NonDraggableRow\n          Field={Field}\n          cssLeftValues={cssLeftValues}\n          diffRow={diffRows?.[index]}\n          isHorizontalOverflow={isHorizontalOverflow}\n          key={tableRow.id}\n          onRowUpdate={onRowUpdate}\n          onSelectRows={onSelectRows}\n          selectedRows={selectedRows}\n          shadow={shadow}\n          tableConfig={tableConfigs?.[index]}\n          tableHeaders={tableHeaders}\n          tableRow={tableRow}\n          withSelection={withSelection}\n          configuration={configuration}\n          withoutDragableColumn={withoutDragableColumn}\n          onClick={\n            tableRow.popIn ? (): void => handleClick(tableRow.popIn) : undefined\n          }\n        />\n      ))}\n      {tableRowPopIn ? (\n        <CustomDialog\n          handleClose={handleClose}\n          open={open}\n          {...tableRowPopIn}\n        />\n      ) : null}\n    </TableBody>\n  )\n}\n\nexport default NonDraggableBody\n","import React, { ChangeEvent, FunctionComponent, SyntheticEvent } from 'react'\nimport { Checkbox, TableRow } from '@mui/material'\n\nimport {\n  IConfigurations,\n  IFieldGuesserProps,\n  IImage,\n  ITableConfig,\n  ITableHeader,\n  ITableHeaderSticky,\n  ITableRow,\n  getImageValue,\n  getPropsFromFieldState,\n} from '@elastic-suite/gally-admin-shared'\n\nimport {\n  draggableColumnStyle,\n  handleSingleRow,\n  manageStickyHeaders,\n  nonStickyStyle,\n  selectionStyle,\n  stickyStyle,\n} from '../../../../services'\n\nimport { BaseTableCell, StickyTableCell } from '../CustomTable.styled'\n\ninterface IProps {\n  Field: FunctionComponent<IFieldGuesserProps>\n  cssLeftValues: number[]\n  diffRow?: ITableRow\n  isHorizontalOverflow: boolean\n  onRowUpdate?: (\n    id: string | number,\n    name: string,\n    value: boolean | number | string,\n    event: SyntheticEvent\n  ) => void\n  onSelectRows: (arr: (string | number)[]) => void\n  selectedRows: (string | number)[]\n  shadow: boolean\n  tableConfig?: ITableConfig\n  tableHeaders: ITableHeader[]\n  tableRow: ITableRow\n  withSelection: boolean\n  configuration: IConfigurations\n  withoutDragableColumn?: boolean\n  onClick?: () => void\n}\n\nfunction NonDraggableRow(props: IProps): JSX.Element {\n  const {\n    Field,\n    cssLeftValues,\n    diffRow,\n    isHorizontalOverflow,\n    onRowUpdate,\n    onSelectRows,\n    selectedRows,\n    shadow,\n    tableConfig,\n    tableHeaders,\n    tableRow,\n    withSelection,\n    configuration,\n    withoutDragableColumn,\n    onClick,\n  } = props\n  const stickyHeaders: ITableHeaderSticky[] = manageStickyHeaders(tableHeaders)\n  const nonStickyHeaders = tableHeaders.filter((header) => !header.sticky)\n  const isOnlyDraggable = !withSelection && stickyHeaders.length === 0\n\n  function handleSelectionChange(value: ChangeEvent<HTMLInputElement>): void {\n    handleSingleRow(value, tableRow.id, onSelectRows, selectedRows)\n  }\n\n  function handleChange(\n    name: string,\n    value: boolean | number | string,\n    event: SyntheticEvent\n  ): void {\n    onRowUpdate(tableRow.id, name, value, event)\n  }\n\n  return (\n    <TableRow key={tableRow.id} onClick={onClick}>\n      {Boolean(!withoutDragableColumn || withSelection) && (\n        <StickyTableCell\n          sx={{\n            borderBottomColor: 'colors.neutral.300',\n            '&:hover': {\n              color: 'colors.neutral.500',\n              cursor: 'default',\n            },\n            ...draggableColumnStyle(\n              isOnlyDraggable,\n              cssLeftValues[0],\n              isHorizontalOverflow,\n              shadow\n            ),\n          }}\n        />\n      )}\n\n      {Boolean(withSelection) && (\n        <StickyTableCell\n          sx={selectionStyle(\n            isHorizontalOverflow,\n            cssLeftValues[1],\n            shadow,\n            stickyHeaders.length\n          )}\n        >\n          <Checkbox\n            checked={selectedRows ? selectedRows.includes(tableRow.id) : false}\n            data-testid=\"non-draggable-single-row-selection\"\n            onChange={handleSelectionChange}\n            {...tableConfig.selection}\n          />\n        </StickyTableCell>\n      )}\n\n      {stickyHeaders.map(({ gridHeaderInfoTooltip, ...stickyHeader }, i) => (\n        <StickyTableCell\n          key={stickyHeader.name}\n          sx={{\n            ...stickyStyle(\n              cssLeftValues[i + 1 + Number(withSelection)],\n              shadow,\n              stickyHeader.isLastSticky,\n              stickyHeader.type\n            ),\n            ...stickyHeader.cellsStyle,\n          }}\n        >\n          <Field\n            {...stickyHeader}\n            diffValue={diffRow ? diffRow[stickyHeader.name] ?? null : undefined}\n            label=\"\"\n            onChange={handleChange}\n            row={tableRow}\n            value={tableRow[stickyHeader.name]}\n            {...getPropsFromFieldState(\n              tableRow,\n              stickyHeader.depends,\n              tableConfig[stickyHeader.name]\n            )}\n          />\n        </StickyTableCell>\n      ))}\n\n      {nonStickyHeaders.map(({ gridHeaderInfoTooltip, ...header }) => {\n        const value =\n          tableRow[header.name] && header.input === 'image'\n            ? getImageValue(\n                configuration['base_url/media'],\n                tableRow[header.name] as IImage | string\n              )\n            : tableRow[header.name]\n        return (\n          <BaseTableCell\n            sx={{ ...nonStickyStyle(header.type), ...header.cellsStyle }}\n            key={header.name}\n          >\n            <Field\n              {...header}\n              diffValue={diffRow ? diffRow[header.name] ?? null : undefined}\n              label=\"\"\n              onChange={handleChange}\n              row={tableRow}\n              value={value}\n              {...getPropsFromFieldState(\n                tableRow,\n                header.depends,\n                tableConfig[header.name]\n              )}\n            />\n          </BaseTableCell>\n        )\n      })}\n    </TableRow>\n  )\n}\n\nNonDraggableRow.defaultProps = {\n  tableConfig: {},\n}\n\nexport default NonDraggableRow\n","import React, { ChangeEvent } from 'react'\nimport { Checkbox, TableHead, TableRow } from '@mui/material'\nimport {\n  DataContentType,\n  ITableHeader,\n  ITableHeaderSticky,\n  reorderingColumnWidth,\n  selectionColumnWidth,\n  stickyColunWidth,\n} from '@elastic-suite/gally-admin-shared'\nimport { useTranslation } from 'next-i18next'\n\nimport { manageStickyHeaders, stickyBorderStyle } from '../../../../services'\n\nimport { BaseTableCell, StickyTableCell } from '../CustomTable.styled'\nimport InfoTooltip from '../../../atoms/form/InfoTooltip'\n\ninterface IProps {\n  cssLeftValues: number[]\n  isHorizontalOverflow: boolean\n  massiveSelectionIndeterminate: boolean\n  massiveSelectionState?: boolean\n  onSelection?: (e: ChangeEvent<HTMLInputElement>) => void\n  shadow: boolean\n  tableHeaders: ITableHeader[]\n  withSelection: boolean\n  withoutDragableColumn?: boolean\n}\n\nfunction CustomTableHeader(props: IProps): JSX.Element {\n  const {\n    cssLeftValues,\n    isHorizontalOverflow,\n    massiveSelectionIndeterminate,\n    massiveSelectionState,\n    onSelection,\n    shadow,\n    tableHeaders,\n    withSelection,\n    withoutDragableColumn,\n  } = props\n\n  const stickyHeaders: ITableHeaderSticky[] = manageStickyHeaders(tableHeaders)\n  const isOnlyDraggable = !withSelection && stickyHeaders.length === 0\n  const { t } = useTranslation('api')\n\n  return (\n    <TableHead>\n      <TableRow\n        sx={{\n          backgroundColor: 'neutral.light',\n        }}\n      >\n        {Boolean(!withoutDragableColumn || withSelection) && (\n          <StickyTableCell\n            sx={{\n              minWidth: `${reorderingColumnWidth}px`,\n              width: `${reorderingColumnWidth}px`,\n              borderBottomColor: 'colors.neutral.300',\n              borderTopColor: 'colors.neutral.300',\n              borderTopWidth: '1px',\n              borderTopStyle: 'solid',\n              backgroundColor: 'neutral.light',\n              ...(!isOnlyDraggable && { borderRight: 'none' }),\n              ...(isOnlyDraggable &&\n                isHorizontalOverflow &&\n                stickyBorderStyle(shadow)),\n              left: `${cssLeftValues[0]}px`,\n              zIndex: 3,\n            }}\n          >\n            &nbsp;\n          </StickyTableCell>\n        )}\n\n        {Boolean(withSelection) && (\n          <StickyTableCell\n            sx={{\n              borderBottomColor: 'colors.neutral.300',\n              borderTopColor: 'colors.neutral.300',\n              borderTopWidth: '1px',\n              borderTopStyle: 'solid',\n              backgroundColor: 'neutral.light',\n              width: `${selectionColumnWidth}px`,\n              minWidth: `${selectionColumnWidth}px`,\n              left: `${cssLeftValues[1]}px`,\n              ...(isHorizontalOverflow &&\n                stickyHeaders.length === 0 &&\n                stickyBorderStyle(shadow)),\n              zIndex: 3,\n            }}\n            key=\"header-massiveselection\"\n          >\n            <Checkbox\n              data-testid=\"massive-selection\"\n              indeterminate={massiveSelectionIndeterminate}\n              checked={massiveSelectionState}\n              onChange={onSelection}\n            />\n          </StickyTableCell>\n        )}\n\n        {stickyHeaders.map((stickyHeader, i) => (\n          <StickyTableCell\n            key={stickyHeader.name}\n            sx={{\n              left: `${cssLeftValues[i + 1 + Number(withSelection)]}px`,\n              borderBottomColor: 'colors.neutral.300',\n              borderTopColor: 'colors.neutral.300',\n              borderTopWidth: '1px',\n              borderTopStyle: 'solid',\n              backgroundColor: 'neutral.light',\n              zIndex: '1',\n              minWidth: `${stickyColunWidth}px`,\n              borderLeft: 'none',\n              ...(stickyHeader.isLastSticky && stickyBorderStyle(shadow)),\n            }}\n          >\n            {stickyHeader.label}\n            {stickyHeader.gridHeaderInfoTooltip?.trim() ? (\n              <InfoTooltip\n                title={t(stickyHeader.gridHeaderInfoTooltip)}\n                withHTMLTitle\n              />\n            ) : null}\n          </StickyTableCell>\n        ))}\n\n        {tableHeaders\n          .filter((header) => !header.sticky)\n          .map((header) => (\n            <BaseTableCell\n              key={header.name}\n              sx={{\n                height: '20px',\n                padding: '14px 16px',\n                borderBottomColor: 'colors.neutral.300',\n                borderTopColor: 'colors.neutral.300',\n                borderTopWidth: '1px',\n                borderTopStyle: 'solid',\n                backgroundColor: 'neutral.light',\n                whiteSpace: 'nowrap',\n                ...((header.type === DataContentType.SCORE ||\n                  header.type === DataContentType.PRICE) && { width: '10%' }),\n                ...(header.type === DataContentType.STOCK && {\n                  width: '15%',\n                }),\n                ...(header.type === DataContentType.STRING && {\n                  maxWidth: 'fit-content',\n                }),\n                ...header.headerStyle,\n              }}\n            >\n              {t(header.label)}\n              {header.gridHeaderInfoTooltip?.trim() ? (\n                <InfoTooltip\n                  title={t(header.gridHeaderInfoTooltip)}\n                  withHTMLTitle\n                />\n              ) : null}\n            </BaseTableCell>\n          ))}\n      </TableRow>\n    </TableHead>\n  )\n}\n\nexport default CustomTableHeader\n","import React from 'react'\nimport { styled } from '@mui/system'\n\nimport { IImage, imageIconLabels } from '@elastic-suite/gally-admin-shared'\n\nimport IonIcon from '../IonIcon/IonIcon'\nimport { useTranslation } from 'next-i18next'\n\ninterface IProps {\n  image: IImage\n}\n\nconst ImageContainer = styled('div')({\n  display: 'flex',\n})\n\nconst ImageTag = styled('img')({\n  height: 80,\n  width: 80,\n})\n\nconst Icons = styled('div')({\n  height: '80px',\n  display: 'flex',\n  flexDirection: 'column',\n  marginLeft: '5px',\n  gap: '5px',\n  flexWrap: 'wrap',\n})\n\nfunction Image(props: IProps): JSX.Element {\n  const { image } = props\n  const { t } = useTranslation('common')\n\n  return (\n    <ImageContainer>\n      <ImageTag alt={t('field.productImage')} src={image.path as string} />\n      <Icons>\n        {image.icons\n          ? image.icons.map((iconName) => (\n              <IonIcon\n                key={iconName}\n                name={iconName}\n                tooltip\n                title={t(imageIconLabels[iconName])}\n                style={{\n                  width: '15px',\n                  height: '15px',\n                  color: '#0D1274',\n                  fontSize: '14px',\n                  border: '1px solid #B5B9D9',\n                  borderRadius: '5px',\n                  padding: '4px',\n                }}\n              />\n            ))\n          : null}\n      </Icons>\n    </ImageContainer>\n  )\n}\n\nexport default Image\n","import React, { CSSProperties } from 'react'\n\nimport IonIcon from '../IonIcon/IonIcon'\nimport { TFunction, useTranslation } from 'next-i18next'\nimport {\n  IPositionEffect,\n  PositionEffectType,\n} from '@elastic-suite/gally-admin-shared'\n\ninterface IProps {\n  positionEffect: IPositionEffect\n}\ninterface IPositionEffectDetails {\n  iconName: string\n  iconTitle: string\n  style: CSSProperties\n}\n\nfunction getPositionDetails(\n  type: PositionEffectType,\n  t: TFunction\n): IPositionEffectDetails {\n  switch (type) {\n    case 'up':\n      return {\n        iconName: 'arrow-up-outline',\n        iconTitle: t('Up'),\n        style: { color: '#18753C', backgroundColor: '#E7F4EC' },\n      }\n    case 'down':\n      return {\n        iconName: 'arrow-down-outline',\n        iconTitle: t('Down'),\n        style: { color: '#A02213', backgroundColor: '#FFE7E4' },\n      }\n    case 'straight':\n      return {\n        iconName: 'reorder-two-outline',\n        iconTitle: t('Equal'),\n        style: { color: '#424880', backgroundColor: '#E7E8FF' },\n      }\n  }\n}\n\nfunction PositionEffect(props: IProps): JSX.Element {\n  const { positionEffect } = props\n\n  const { t } = useTranslation('common')\n  const positionDetails = getPositionDetails(positionEffect.type, t)\n\n  return (\n    <IonIcon\n      name={positionDetails.iconName}\n      title={positionDetails.iconTitle}\n      style={{\n        fontSize: '18px',\n        padding: '5px',\n        borderRadius: '50%',\n        ...positionDetails.style,\n      }}\n    />\n  )\n}\n\nexport default PositionEffect\n","import React, { SyntheticEvent, useContext, useEffect } from 'react'\nimport { useTranslation } from 'next-i18next'\nimport {\n  IFieldGuesserProps,\n  LoadStatus,\n} from '@elastic-suite/gally-admin-shared'\n\nimport { optionsContext } from '../../../contexts'\n\nimport DropDown from '../../atoms/form/DropDown'\n\ninterface IProps extends Omit<IFieldGuesserProps, 'onChange'> {\n  onChange: (\n    value: number | string | (number | string)[],\n    event: SyntheticEvent\n  ) => void\n  useGroups?: boolean\n  placeholder?: string\n  error?: boolean\n  helperText?: string\n  helperIcon?: string\n  dataTestId?: string\n}\n\nfunction EditableDropDownGuesser(props: IProps): JSX.Element {\n  const {\n    diffValue,\n    disabled,\n    field,\n    label,\n    multiple,\n    onChange,\n    options,\n    required,\n    value,\n    useGroups,\n    infoTooltip,\n    placeholder,\n    error,\n    helperText,\n    helperIcon,\n    showError,\n    replacementErrorsMessages,\n    dataTestId,\n  } = props\n\n  const { t } = useTranslation('common')\n  const { fieldOptions, load, statuses } = useContext(optionsContext)\n  const dropDownOptions =\n    options ?? fieldOptions.get(field.property['@id']) ?? []\n  const dirty = diffValue !== undefined && diffValue !== value\n\n  useEffect(() => {\n    if (!options && field) {\n      load(field)\n    }\n  }, [field, load, options])\n\n  // Wait to load the options before rendering to avoid problems\n  if (\n    value &&\n    dropDownOptions.length === 0 &&\n    statuses.current.get(field.property['@id']) !== LoadStatus.SUCCEEDED\n  ) {\n    return null\n  }\n\n  return (\n    <DropDown\n      showError={showError}\n      infoTooltip={infoTooltip}\n      dirty={dirty}\n      disabled={disabled}\n      helperText={\n        dirty\n          ? t('form.defaultValue', {\n              value: dropDownOptions.find(({ value }) => value === diffValue)\n                ?.label,\n            })\n          : helperText\n      }\n      error={error}\n      helperIcon={helperIcon}\n      label={label}\n      multiple={multiple}\n      options={dropDownOptions}\n      required={required}\n      value={value}\n      onChange={onChange}\n      useGroups={useGroups}\n      placeholder={\n        value instanceof Array\n          ? value?.length !== 0\n            ? ''\n            : placeholder\n          : placeholder\n      }\n      objectKeyValue={field?.gally?.options?.objectKeyValue}\n      sx={{ minWidth: '230.667px' }}\n      replacementErrorsMessages={replacementErrorsMessages}\n      dataTestId={dataTestId}\n    />\n  )\n}\n\nexport default EditableDropDownGuesser\n","import React, { SyntheticEvent, useEffect, useMemo } from 'react'\nimport {\n  DataContentType,\n  IFieldGuesserProps,\n  IInputDependencies,\n  valueInitializer,\n} from '@elastic-suite/gally-admin-shared'\nimport FieldGuesser from './FieldGuesser'\n\ninterface IProps extends Omit<IFieldGuesserProps, 'onChange' | 'value'> {\n  value?: string\n  onChange?: (val: string, event?: SyntheticEvent<Element, Event>) => void\n}\n\nfunction MultipleInput(props: IProps): JSX.Element {\n  const {\n    multipleInputConfiguration: { inputDependencies },\n    onChange,\n    value,\n    ...otherProps\n  } = props\n\n  const fields: IInputDependencies[] = useMemo(\n    () =>\n      (Array.isArray(inputDependencies)\n        ? inputDependencies\n        : [inputDependencies]\n      ).filter(\n        (inputDependency) =>\n          inputDependency.value === otherProps.data[inputDependency.field]\n      ),\n    [inputDependencies, otherProps.data]\n  )\n\n  const defaultValue = useMemo(() => {\n    const parsedValue = value ? JSON.parse(value) : {}\n    inputDependencies.forEach((field) => {\n      if (!parsedValue[field.jsonKeyValue]) {\n        parsedValue[field.jsonKeyValue] = valueInitializer(\n          field.input,\n          field.input\n        )\n      }\n    })\n    return JSON.stringify(parsedValue)\n  }, [value, inputDependencies])\n\n  // Can be improved to avoid doing too much re-rendering by changing the behavior in the ResourceForm\n  useEffect(() => {\n    if (!value && onChange) {\n      onChange(defaultValue)\n    }\n  }, [defaultValue, value, onChange])\n\n  return (\n    <>\n      {fields.map((field) => {\n        const parsedValue = JSON.parse(value || defaultValue)\n        const newValue =\n          parsedValue[field.jsonKeyValue] ??\n          JSON.parse(defaultValue)[field.jsonKeyValue]\n\n        function handleChange(\n          _name: string,\n          newValue: unknown,\n          event?: React.SyntheticEvent<Element, Event>\n        ): void {\n          const updatedValue = {\n            ...parsedValue,\n            [field.jsonKeyValue]: newValue,\n          }\n          onChange?.(JSON.stringify(updatedValue), event)\n        }\n\n        return (\n          <FieldGuesser\n            key={field.jsonKeyValue}\n            {...otherProps}\n            input={field.input as DataContentType}\n            editable\n            id={field.input}\n            value={newValue}\n            onChange={handleChange}\n          />\n        )\n      })}\n    </>\n  )\n}\n\nexport default MultipleInput\n","import React from 'react'\nimport { useApiList, useFetchApi } from '../../../hooks'\nimport RequestType from '../../atoms/form/RequestType'\nimport {\n  ICategories,\n  ILimitationsTypes,\n  IOptionsTags,\n  IRequestType,\n  IRequestTypesOptions,\n} from '@elastic-suite/gally-admin-shared'\nimport { useTranslation } from 'next-i18next'\nimport { getRequestTypeData } from '../../../services'\n\ninterface IProps {\n  data: Record<string, unknown>\n  value: IRequestType\n  onChange: (value: IRequestType) => void\n  label?: string\n  required?: boolean\n  fullWidth?: boolean\n  margin?: 'none' | 'dense' | 'normal'\n  requestTypeConfigurations?: Record<string, string>\n  infoTooltip?: string\n  placeholder?: string\n  error?: boolean\n  helperText?: string\n  helperIcon?: string\n  showError?: boolean\n  dataTestId?: string\n}\n\nfunction RequestTypeManager(props: IProps): JSX.Element | null {\n  const {\n    data,\n    value,\n    onChange,\n    requestTypeConfigurations,\n    dataTestId,\n    ...args\n  } = props\n\n  const { t: tApi } = useTranslation('api')\n\n  const [operatorOptionsApi] = useApiList<IOptionsTags>(\n    requestTypeConfigurations?.operatorOptionsApi\n  )\n  const [limitationTypeOptionsApi] = useApiList<ILimitationsTypes>(\n    requestTypeConfigurations?.limitationTypeOptionsApi\n  )\n  const [requestTypeOptionsApi] = useApiList<IRequestTypesOptions>(\n    requestTypeConfigurations?.requestTypeOptionsApi\n  )\n  const [categoriesListApi] = useFetchApi<ICategories>(\n    requestTypeConfigurations?.categoryTreeApi ?? 'categoryTree'\n  )\n\n  const operatorOptions = operatorOptionsApi?.data?.['hydra:member'].map(\n    (option) => ({ ...option, label: tApi(option.label) })\n  )\n  const limitationTypeOptions = limitationTypeOptionsApi?.data?.['hydra:member']\n  const requestTypeOptions = requestTypeOptionsApi?.data?.['hydra:member']\n  const categoriesList = categoriesListApi?.data?.categories\n\n  if (\n    !(\n      operatorOptions &&\n      limitationTypeOptions &&\n      requestTypeOptions &&\n      categoriesList &&\n      value?.requestTypes\n    )\n  ) {\n    return null\n  }\n\n  // Allows to add categoryLimitations, searchLimitations and XXXLimitations on value.\n  const requestTypeValue = getRequestTypeData(data, limitationTypeOptionsApi)\n\n  return (\n    <RequestType\n      {...args}\n      value={requestTypeValue}\n      onChange={onChange}\n      options={operatorOptions}\n      limitationsTypes={limitationTypeOptions}\n      requestTypesOptions={requestTypeOptions}\n      categoriesList={categoriesList}\n      dataTestId={dataTestId}\n    />\n  )\n}\n\nexport default RequestTypeManager\n","import React from 'react'\n\nimport {\n  ILimitationsTypes,\n  IOptionsTags,\n  IRequestType,\n  IRequestTypesOptions,\n  ITreeItem,\n} from '@elastic-suite/gally-admin-shared'\n\nimport { CustomRoot } from './RequestTypeItem.styled'\nimport DropDown from './DropDown'\nimport RequestTypeItem from './RequestTypeItem'\nimport { FormHelperText, InputLabel } from '@mui/material'\nimport InfoTooltip from './InfoTooltip'\nimport IonIcon from '../IonIcon/IonIcon'\nimport { StyledFormControl } from './InputText.styled'\n\nexport interface IProps {\n  value: IRequestType\n  onChange: (value: IRequestType) => void\n  options: IOptionsTags[]\n  limitationsTypes: ILimitationsTypes[]\n  requestTypesOptions: IRequestTypesOptions[]\n  categoriesList: ITreeItem[]\n  label?: string\n  required?: boolean\n  fullWidth?: boolean\n  margin?: 'none' | 'dense' | 'normal'\n  infoTooltip?: string\n  placeholder?: string\n  error?: boolean\n  helperText?: string | string[]\n  helperIcon?: string\n  showError?: boolean\n  dataTestId?: string\n}\n\nfunction RequestType(props: IProps): JSX.Element {\n  const {\n    value,\n    onChange,\n    options,\n    limitationsTypes,\n    requestTypesOptions,\n    categoriesList,\n    label,\n    required,\n    fullWidth,\n    margin,\n    infoTooltip,\n    placeholder,\n    error,\n    helperText,\n    helperIcon,\n    showError,\n    dataTestId,\n  } = props\n\n  function updateSelectedDropDown(list: string[] | string): void {\n    const selectedList = Array.isArray(list) ? list : [list]\n\n    const newRequestTypes = selectedList\n      .map((item) => {\n        const existingItem = value.requestTypes.find(\n          (r) => r.requestType === item\n        )\n        if (existingItem) return existingItem\n\n        const requestTypeOption = requestTypesOptions.find(\n          (opt) => opt.value === item\n        )\n        if (!requestTypeOption) return null\n\n        const { limitationType } = requestTypeOption\n        const linkedRequestTypes = requestTypesOptions.filter(\n          (opt) => opt.limitationType === limitationType\n        )\n\n        const applyToAll = value.requestTypes\n          .filter((r) =>\n            linkedRequestTypes.some((linked) => linked.value === r.requestType)\n          )\n          .every((r) => r.applyToAll)\n\n        return { requestType: item, applyToAll }\n      })\n      .filter(Boolean)\n\n    const newValue: Record<string, unknown> = {\n      ...value,\n      requestTypes: newRequestTypes,\n    }\n\n    requestTypesOptions.forEach(({ value: optionValue, limitationType }) => {\n      const key = `${limitationType}Limitations` as keyof IRequestType\n      if (!selectedList.includes(optionValue) && !value[key]) {\n        newValue[key] = []\n      }\n    })\n\n    onChange(newValue as unknown as IRequestType)\n  }\n\n  return (\n    <StyledFormControl\n      fullWidth={fullWidth}\n      margin={margin}\n      variant=\"standard\"\n      error={error}\n      className=\"requestType\"\n    >\n      {label || infoTooltip ? (\n        <InputLabel shrink sx={{ maxWidth: '90%' }} required={required}>\n          {label ? label : null}\n          {infoTooltip ? <InfoTooltip title={infoTooltip} /> : null}\n        </InputLabel>\n      ) : undefined}\n      <CustomRoot error={error}>\n        <DropDown\n          showError={showError}\n          required={required}\n          placeholder={value.requestTypes.length !== 0 ? '' : placeholder}\n          multiple\n          onChange={updateSelectedDropDown}\n          value={value.requestTypes.map((item) => item.requestType)}\n          options={requestTypesOptions}\n          dataTestId={dataTestId ? `${dataTestId}Dropdown` : null}\n        />\n        <RequestTypeItem\n          value={value}\n          showError={showError}\n          onChange={onChange}\n          limitationsTypes={limitationsTypes}\n          options={options}\n          requestTypesOptions={requestTypesOptions}\n          categoriesList={categoriesList}\n          dataTestId={dataTestId ? `${dataTestId}Item` : null}\n        />\n      </CustomRoot>\n      {Boolean(helperText) && (\n        <FormHelperText style={{ flexDirection: 'column' }}>\n          {Boolean(helperIcon) && (\n            <IonIcon\n              name={helperIcon}\n              style={{ fontSize: 18, marginRight: 2 }}\n            />\n          )}\n          {typeof helperText === 'string'\n            ? helperText\n            : helperText.map((text) => {\n                return <span key={text}>{text}</span>\n              })}\n        </FormHelperText>\n      )}\n    </StyledFormControl>\n  )\n}\n\nexport default RequestType\n","import { styled } from '@mui/system'\n\nexport const CustomRootItem = styled('div')(({ theme }) => ({\n  color: theme.palette.colors.neutral[900],\n  fontFamily: 'var(--gally-font)',\n  fontSize: theme.spacing(1.5),\n  fontWeight: '600',\n  lineHeight: '18px',\n}))\n\nconst CustomPropError = ['error']\nexport const CustomRoot = styled(CustomRootItem, {\n  shouldForwardProp: (prop: string) => !CustomPropError.includes(prop),\n})<{ error: boolean }>(({ theme, error }) => ({\n  padding: theme.spacing(2),\n  background: theme.palette.colors.neutral[200],\n  border: '1px solid',\n  borderColor: error\n    ? theme.palette.colors.primary[700]\n    : theme.palette.colors.neutral[300],\n  borderRadius: theme.spacing(1),\n  marginTop: theme.spacing(0.5),\n}))\n\nconst CustomProp = ['uniqueLine']\nexport const CustomFirstSelectedItem = styled('div', {\n  shouldForwardProp: (prop: string) => !CustomProp.includes(prop),\n})<{ uniqueLine: boolean }>(({ theme, uniqueLine }) => ({\n  marginLeft: theme.spacing(5),\n  marginTop: theme.spacing(4),\n  position: 'relative',\n  '::before': {\n    content: \"''\",\n    position: 'absolute',\n    border: '1px dotted',\n    height: '41px',\n    width: '24px',\n    borderRight: 'none',\n    borderTop: 'none',\n    top: '-32px',\n    left: '-24px',\n  },\n  ...(!uniqueLine && {\n    '::after': {\n      content: \"''\",\n      position: 'absolute',\n      border: '1px dotted',\n      height: `calc(100% + 30px)`,\n      width: '24px',\n      borderRight: 'none',\n      borderTop: 'none',\n      left: '-24px',\n      top: '10px',\n    },\n  }),\n}))\n\nexport const CustomSelectedItem = styled('div', {\n  shouldForwardProp: (prop: string) => !CustomProp.includes(prop),\n})<{ uniqueLine: boolean }>(({ theme, uniqueLine }) => ({\n  marginLeft: theme.spacing(5),\n  marginTop: theme.spacing(4),\n  position: 'relative',\n  ...(uniqueLine && {\n    '::after': {\n      content: \"''\",\n      position: 'absolute',\n      border: '1px dotted',\n      height: `calc(100% + 33px)`,\n      width: '24px',\n      borderRight: 'none',\n      borderTop: 'none',\n      top: '9px',\n      left: '-24px',\n    },\n  }),\n}))\n","import React, { useMemo } from 'react'\nimport { styled } from '@mui/system'\nimport TreeSelector from './TreeSelector'\n\nimport {\n  ICategoryLimitations,\n  ILimitationsTypes,\n  IOptionsTags,\n  IRequestType,\n  IRequestTypesOptions,\n  ISearchLimitations,\n  ITreeItem,\n  flatTree,\n  getIri,\n} from '@elastic-suite/gally-admin-shared'\n\nimport TextFieldTagsMultiple from './TextFieldTagsMultiple'\n\nimport { useTranslation } from 'next-i18next'\n\nimport Checkbox from './CheckboxWithoutError'\nimport {\n  CustomFirstSelectedItem,\n  CustomRootItem,\n  CustomSelectedItem,\n} from './RequestTypeItem.styled'\n\nconst CustomItem = styled('div')(({ theme }) => ({\n  display: 'flex',\n  gap: theme.spacing(3),\n  alignItems: 'start',\n}))\n\nconst CustomLabel = styled('div')(({ theme }) => ({\n  color: theme.palette.colors.neutral[900],\n  fontFamily: 'var(--gally-font)',\n  fontSize: theme.spacing(1.5),\n  fontWeight: '600',\n  width: '130px',\n  lineHeight: '18px',\n}))\n\nconst CustomDataLimitations = styled('div')(({ theme }) => ({\n  display: 'flex',\n  flexDirection: 'row',\n  gap: theme.spacing(2),\n  alignItems: 'center',\n  marginTop: '-12px',\n}))\n\nexport interface IRequestTypeItem {\n  value: IRequestType\n  onChange: (value: IRequestType) => void\n  options: IOptionsTags[]\n  limitationsTypes: ILimitationsTypes[]\n  requestTypesOptions: IRequestTypesOptions[]\n  categoriesList: ITreeItem[]\n  showError?: boolean\n  dataTestId?: string\n}\n\ninterface IPropsComponent {\n  disabled?: boolean\n  onChange: (data: ITreeItem[] | ISearchLimitations[]) => void\n}\n\nfunction RequestTypeItem(props: IRequestTypeItem): JSX.Element {\n  const {\n    value,\n    onChange,\n    options,\n    limitationsTypes,\n    requestTypesOptions,\n    categoriesList,\n    showError,\n    dataTestId,\n  } = props\n  const { t } = useTranslation('common')\n\n  function onChangeApplyToAll(\n    idItem: IRequestTypesOptions[],\n    val: boolean\n  ): void {\n    const requestTypeOptionValues = (idItem as IRequestTypesOptions[]).map(\n      (it) => it.value\n    )\n    const newData = value.requestTypes.map((item) => {\n      if (requestTypeOptionValues.includes(item.requestType)) {\n        return { ...item, applyToAll: val }\n      }\n      return item\n    })\n\n    const requestTypeLimitationType: Record<string, []> = {\n      // This constant is used to create an object with the '${limitationType}Limitations'\n      // as the key corresponding to the selected 'requestTypeItem' line and an empty array as the value.\n      // This new object allows resetting the values of the 'limitations' array when the checkbox is clicked.\n      [`${(idItem as IRequestTypesOptions[]).find((it) => it.limitationType)\n        .limitationType!}Limitations`]: [],\n    }\n\n    return onChange({\n      ...value,\n      ...requestTypeLimitationType,\n      requestTypes: newData,\n    })\n  }\n  function onChangeDataLimitations(\n    idItem: string,\n    val: ISearchLimitations[] | ITreeItem[]\n  ): void {\n    if (idItem === 'categoryLimitations') {\n      const newData = (val as ITreeItem[]).map((item) => {\n        return {\n          category: getIri('categories', item.id),\n        }\n      })\n      return onChange({ ...value, [idItem]: newData })\n    }\n    return onChange({ ...value, [idItem]: val })\n  }\n\n  const flatCategories: ITreeItem[] = useMemo(() => {\n    const flat: ITreeItem[] = []\n    flatTree(categoriesList, flat)\n    return flat\n  }, [categoriesList])\n\n  const limitationTypeMap = requestTypesOptions.reduce<Record<string, string>>(\n    (acc, option) => {\n      acc[option.value] = option.limitationType\n      return acc\n    },\n    {}\n  )\n\n  return (\n    <CustomRootItem>\n      {limitationsTypes.map((item, key) => {\n        const uniqLimitationTypes = new Set(\n          value.requestTypes.map((item) => limitationTypeMap[item.requestType])\n        )\n        const countLines = uniqLimitationTypes.size\n\n        const requestTypeRequestType = value.requestTypes.map(\n          (item) => item.requestType\n        )\n        const requestTypeOption = requestTypesOptions.filter(\n          (it) =>\n            it.limitationType === item.value &&\n            requestTypeRequestType.includes(it.value)\n        )\n\n        if (requestTypeOption.length === 0) {\n          return null\n        }\n\n        const concatLabel = requestTypeOption.map((it) => it.label)\n\n        const findValueInRequestTypesOptions = requestTypesOptions.find(\n          (it) =>\n            requestTypeRequestType.includes(it.value) &&\n            it.limitationType === item.value\n        )?.value\n\n        const isApplyToAll = value.requestTypes.find(\n          (it) => it.requestType === findValueInRequestTypesOptions\n        )?.applyToAll\n\n        const limitationsData: ISearchLimitations[] | ICategoryLimitations[] =\n          value[`${item.value}Limitations` as keyof IRequestType] as\n            | ISearchLimitations[]\n            | ICategoryLimitations[]\n        let uniqueLine = key + 1 < countLines\n        let CustomDiv = CustomSelectedItem\n\n        if (key === 0 || countLines === 1) {\n          uniqueLine = countLines === 1\n          CustomDiv = CustomFirstSelectedItem\n        }\n\n        const treeSelectorValue = flatCategories.filter((category) => {\n          return (limitationsData as ICategoryLimitations[]).some(\n            (it) => it?.category?.split('/')?.pop() === category.id\n          )\n        })\n\n        const propsLimitations: IPropsComponent = {\n          disabled: isApplyToAll,\n          onChange: (data: ITreeItem[] | ISearchLimitations[]): void =>\n            onChangeDataLimitations(`${item.value}Limitations`, data),\n        }\n\n        return (\n          <CustomDiv key={item.value} uniqueLine={uniqueLine}>\n            <CustomItem>\n              <CustomLabel>{concatLabel.join(' / ')}</CustomLabel>\n              <div style={{ marginTop: '-12px', width: '150px' }}>\n                <Checkbox\n                  checked={isApplyToAll}\n                  label={t(item.labelAll)}\n                  onChange={(val: boolean): void =>\n                    onChangeApplyToAll(requestTypeOption, val)\n                  }\n                  dataTestId={dataTestId ? `${dataTestId}Checkbox` : null}\n                />\n              </div>\n              <CustomDataLimitations>\n                {item.value === 'search' && (\n                  <TextFieldTagsMultiple\n                    {...propsLimitations}\n                    showError={showError}\n                    disabledValue={t(item.labelAll)}\n                    options={options}\n                    value={limitationsData as ISearchLimitations[]}\n                    dataTestId={\n                      dataTestId ? `${dataTestId}TextFieldTagsMultiple` : null\n                    }\n                  />\n                )}\n\n                {item.value === 'category' && (\n                  <TreeSelector\n                    required\n                    showError={showError}\n                    {...propsLimitations}\n                    value={isApplyToAll ? [] : treeSelectorValue}\n                    placeholder={\n                      isApplyToAll || treeSelectorValue.length === 0\n                        ? propsLimitations.disabled\n                          ? t(item.labelAll)\n                          : t('placeholder.requestType.search')\n                        : ''\n                    }\n                    data={categoriesList}\n                    sx={{ minWidth: 300 }}\n                    multiple\n                  />\n                )}\n              </CustomDataLimitations>\n            </CustomItem>\n          </CustomDiv>\n        )\n      })}\n    </CustomRootItem>\n  )\n}\n\nexport default RequestTypeItem\n","import React, { useCallback, useEffect, useState } from 'react'\nimport { styled } from '@mui/system'\nimport { FormHelperText, IconButton, InputLabel } from '@mui/material'\nimport IonIcon from '../IonIcon/IonIcon'\nimport InfoTooltip from './InfoTooltip'\nimport FormControl from './FormControl'\nimport TextFieldTags from './TextFieldTags'\nimport Button from '../buttons/Button'\n\nimport {\n  IOptionsTags,\n  ISearchLimitations,\n  ITextFieldTagsForm,\n  ITransformedLimitations,\n} from '@elastic-suite/gally-admin-shared'\nimport DropDownWithoutError from './DropDownWithoutError'\nimport { useTranslation } from 'next-i18next'\n\nconst CustomMultipleTextFieldsTags = styled('div')(({ theme }) => ({\n  display: 'flex',\n  gap: theme.spacing(2.5),\n  flexDirection: 'column',\n}))\n\nconst CustomSelectOperator = styled('div')(({ theme }) => ({\n  display: 'flex',\n  gap: theme.spacing(1),\n  alignItems: 'center',\n  flexDirection: 'row',\n}))\n\nexport interface ITextFieldTagsMultipleProps\n  extends Omit<ITextFieldTagsForm, 'size' | 'placeholder'> {\n  value: ISearchLimitations[]\n  onChange?: (value: ISearchLimitations[]) => void\n  showError?: boolean\n  dataTestId?: string\n}\n\nfunction TextFieldTagsMultiple(\n  props: ITextFieldTagsMultipleProps\n): JSX.Element {\n  const {\n    value,\n    onChange,\n    disabledValue,\n    disabled,\n    required,\n    error,\n    fullWidth,\n    helperText,\n    helperIcon,\n    label,\n    margin,\n    infoTooltip,\n    options,\n    showError,\n    dataTestId,\n  } = props\n\n  const { t } = useTranslation('common')\n\n  function transformedValue(\n    list: ISearchLimitations[]\n  ): ITransformedLimitations {\n    const transformedObject: ITransformedLimitations = {}\n    list.forEach((item) => {\n      if (transformedObject[item.operator]) {\n        transformedObject[item.operator].push(item.queryText as string)\n      } else {\n        transformedObject[item.operator] = [item.queryText as string]\n      }\n    })\n    return transformedObject\n  }\n\n  function unModifiedValue(obj: ITransformedLimitations): ISearchLimitations[] {\n    const list = [] as ISearchLimitations[]\n    for (const [key, item] of Object.entries(obj)) {\n      item.length !== 0\n        ? item.map((queryText) =>\n            list.push({\n              operator: key,\n              queryText,\n            })\n          )\n        : list.push({\n            operator: key,\n            queryText: null,\n          })\n    }\n    return list\n  }\n\n  const modifiedValue = transformedValue(value)\n\n  const addItem = useCallback(\n    (operator: string) => {\n      if (onChange)\n        onChange(unModifiedValue({ ...modifiedValue, [operator]: [] }))\n    },\n    [onChange, modifiedValue]\n  )\n\n  function removeItem(operator: string): void {\n    const newValue = { ...modifiedValue }\n    delete newValue[operator as string]\n    if (onChange) onChange(unModifiedValue(newValue))\n  }\n\n  function updateOperator(oldOperator: string, newOperator: string): void {\n    const newValue = { ...modifiedValue }\n    newValue[newOperator] = newValue[oldOperator]\n    delete newValue[oldOperator]\n    if (onChange) return onChange(unModifiedValue(newValue))\n  }\n\n  function updateValue(operator: string, data: string[]): void {\n    if (onChange)\n      return onChange(\n        unModifiedValue({\n          ...modifiedValue,\n          [operator]: data.filter((it) => it !== null),\n        })\n      )\n  }\n\n  const optionsListAvailable: (IOptionsTags & { disabled?: boolean })[] =\n    options.map((item) =>\n      modifiedValue[item.value] ? { ...item, disabled: true } : item\n    )\n\n  const [operatorValue, setOperatorValue] = useState<undefined | IOptionsTags>()\n\n  useEffect(() => {\n    if (\n      !disabled &&\n      optionsListAvailable.filter((opt) => opt.disabled).length === 0\n    ) {\n      addItem(optionsListAvailable.filter((opt) => !opt.disabled)[0].value)\n    } else {\n      setOperatorValue(\n        (operatorValue) =>\n          optionsListAvailable.find(\n            (item) => operatorValue?.value === item.value && !item?.disabled\n          ) ?? optionsListAvailable.find((item) => !item?.disabled)\n      )\n    }\n  }, [optionsListAvailable, addItem, disabled])\n\n  return (\n    <FormControl\n      error={error}\n      fullWidth={fullWidth}\n      margin={margin}\n      className=\"textFieldTagsMultiple\"\n    >\n      {Boolean(label || infoTooltip) && (\n        <div style={{ marginBottom: '4px' }}>\n          <InputLabel shrink required={required}>\n            {label}\n            {infoTooltip ? <InfoTooltip title={infoTooltip} /> : null}\n          </InputLabel>\n        </div>\n      )}\n      <CustomMultipleTextFieldsTags>\n        {disabled ? (\n          <TextFieldTags value={[]} disabledValue={disabledValue} disabled />\n        ) : (\n          Object.entries(modifiedValue).map(([key, value]) => {\n            const option = options.find((it) => it.value === key)\n            const newOptionsList = options.map((it) => {\n              if (modifiedValue[it.value] && key !== it.value) {\n                return { ...it, disabled: true }\n              }\n              return it\n            })\n            return (\n              <div\n                key={key}\n                style={{ display: 'flex', flexDirection: 'row', gap: '8px' }}\n              >\n                <div\n                  style={{\n                    padding: '16px',\n                    border: '1px solid #E2E6F3',\n                    borderRadius: '8px',\n                    display: 'flex',\n                    flexDirection: 'row',\n                    gap: '8px',\n                  }}\n                >\n                  <DropDownWithoutError\n                    required\n                    onChange={(newOption): void =>\n                      updateOperator(key, newOption as string)\n                    }\n                    value={option?.value}\n                    options={newOptionsList}\n                    sx={{ marginBottom: 1 }}\n                    dataTestId={dataTestId ? `${dataTestId}DropDown` : null}\n                  />\n                  <TextFieldTags\n                    required\n                    showError={showError}\n                    withCleanButton\n                    fullWidth={fullWidth}\n                    onChange={(value): void => updateValue(key, value)}\n                    value={value}\n                  />\n                </div>\n                {optionsListAvailable.filter((opt) => opt.disabled).length >\n                  1 && (\n                  <div style={{ display: 'flex', alignItems: 'center' }}>\n                    <IconButton onClick={(): void => removeItem(key)}>\n                      <IonIcon\n                        style={{ fontSize: '18px', color: '#424880' }}\n                        name=\"trash-outline\"\n                      />\n                    </IconButton>\n                  </div>\n                )}\n              </div>\n            )\n          })\n        )}\n        {operatorValue && !disabled ? (\n          <CustomSelectOperator>\n            <Button\n              display=\"secondary\"\n              size=\"medium\"\n              onClick={(): void =>\n                addItem(\n                  optionsListAvailable.filter((opt) => !opt.disabled)[0].value\n                )\n              }\n              endIcon={<IonIcon name=\"add\" style={{ fontSize: 24 }} />}\n              data-testid={dataTestId ? `${dataTestId}AddButton` : null}\n            >\n              {t('Add')}\n            </Button>\n          </CustomSelectOperator>\n        ) : null}\n      </CustomMultipleTextFieldsTags>\n      {Boolean(helperText) && (\n        <FormHelperText error={error}>\n          {Boolean(helperIcon) && (\n            <IonIcon\n              name={helperIcon}\n              style={{ fontSize: 18, marginRight: 2 }}\n            />\n          )}\n          {helperText}\n        </FormHelperText>\n      )}\n    </FormControl>\n  )\n}\n\nexport default TextFieldTagsMultiple\n","import React, { ForwardedRef, SyntheticEvent, useCallback } from 'react'\n\nimport { IFieldErrorProps, IValidator, useFormError } from '../../../hooks'\n\nimport TextFieldTagsWithoutError, {\n  ITextFieldTag,\n} from './TextFieldTagsWithoutError'\n\ninterface ITextFieldTagErrorProps extends IFieldErrorProps, ITextFieldTag {}\n\nfunction TextFieldTags(props: ITextFieldTagErrorProps): JSX.Element {\n  const { onChange, showError, additionalValidator, ...inputProps } = props\n\n  const validator = useCallback<IValidator>(\n    (value: string[], event: SyntheticEvent): string => {\n      if (inputProps.required && (value.length === 0 || value[0] === null)) {\n        return 'valueMissing'\n      }\n      if (additionalValidator) {\n        return additionalValidator(value, event)\n      }\n      return ''\n    },\n    [additionalValidator, inputProps.required]\n  )\n\n  const [{ ref, ...formErrorProps }] = useFormError(\n    onChange,\n    inputProps.value,\n    showError,\n    validator,\n    inputProps.disabled\n  )\n\n  return (\n    <TextFieldTagsWithoutError\n      {...inputProps}\n      {...formErrorProps}\n      error={inputProps?.error || formErrorProps?.error}\n      helperIcon={inputProps?.helperIcon || formErrorProps?.helperIcon}\n      helperText={inputProps?.helperText || formErrorProps?.helperText}\n      ref={ref as ForwardedRef<HTMLInputElement>}\n    />\n  )\n}\n\nexport default TextFieldTags\n","import React, {\n  FocusEvent,\n  FormEvent,\n  ForwardedRef,\n  forwardRef,\n  useMemo,\n  useState,\n} from 'react'\nimport { styled } from '@mui/system'\nimport Chip from '../Chip/Chip'\nimport InputTextWithoutError from './InputTextWithoutError'\nimport { FormHelperText, InputLabel } from '@mui/material'\nimport IonIcon from '../IonIcon/IonIcon'\nimport InfoTooltip from './InfoTooltip'\nimport FormControl from './FormControl'\nimport { ITextFieldTagsForm } from '@elastic-suite/gally-admin-shared'\nimport { useTranslation } from 'next-i18next'\n\nconst colorOfBorderTextFieldTagsInputInit = '#e2e6f3'\nconst colorOfBorderTextFieldTagsInputError = '#A02213'\nconst colorOfBorderTextFieldTagsInputHover = '#b5b9d9'\nconst colorOfBorderTextFieldTagsInputFocus = '#424880'\n\nconst customRootTextFieldTagsProps = ['disabled', 'error', 'focus']\nconst CustomRootTextFieldTags = styled('div', {\n  shouldForwardProp: (prop: string) =>\n    !customRootTextFieldTagsProps.includes(prop),\n})<{ disabled?: boolean; error?: boolean; focus?: boolean }>(\n  ({ theme, disabled, error, focus }) => ({\n    paddingTop: theme.spacing(1.5),\n    paddingBottom: theme.spacing(1.5),\n    paddingRight: theme.spacing(2),\n    paddingLeft: theme.spacing(2),\n    borderRadius: theme.spacing(1),\n    border: '1px solid',\n    minWidth: '350px',\n    maxWidth: '650px',\n    // borderColor: theme.palette.colors.neutral[600],\n    boxSizing: 'border-box',\n    background: theme.palette.colors.white,\n    position: 'relative',\n    gap: theme.spacing(2),\n    display: 'flex',\n    flexDirection: 'column',\n    justifyContent: 'center',\n    minHeight: disabled ? '40px' : '54px',\n    ...(disabled && {\n      paddingTop: '1px',\n      paddingBottom: '1px',\n      paddingRight: theme.spacing(1),\n      paddingLeft: theme.spacing(1),\n      borderColor: theme.palette.colors.neutral[300],\n      color: theme.palette.colors.neutral['500'],\n      WebkitTextFillColor: theme.palette.colors.neutral['500'],\n      background: theme.palette.colors.neutral[300],\n      width: 'auto',\n      maxWidth: '350px',\n      minWidth: '180px',\n    }),\n    transition: 'all 400ms',\n    borderColor: error\n      ? colorOfBorderTextFieldTagsInputError\n      : colorOfBorderTextFieldTagsInputInit,\n    ...(focus && {\n      borderColor: colorOfBorderTextFieldTagsInputFocus,\n    }),\n    ...(!error && {\n      '&:hover': {\n        borderColor: colorOfBorderTextFieldTagsInputHover,\n      },\n    }),\n  })\n)\n\nconst CustomTags = styled('div')(({ theme }) => ({\n  display: 'flex',\n  gap: theme.spacing(1),\n  flexDirection: 'row',\n  flexWrap: 'wrap',\n  alignItems: 'center',\n}))\n\nconst CustomFormTextFieldTags = styled('div')({\n  display: 'flex',\n  flexDirection: 'row',\n  alignItems: 'center',\n})\n\nconst CustomInputTextTextFieldTags = styled(InputTextWithoutError)({\n  minWidth: 'auto',\n  width: '146px',\n  border: 'none',\n  background: 'inherit',\n  '&.MuiInputBase-root': { minHeight: 0, paddingLeft: '8px' },\n})\n\nconst CustomCloseTagsByOperator = styled('div')(({ theme }) => ({\n  position: 'absolute',\n  right: '-5px',\n  top: '-5px',\n  borderRadius: '50%',\n  background: theme.palette.colors.neutral[600],\n  color: 'white',\n  display: 'flex',\n  padding: theme.spacing(0.5),\n  zIndex: '9',\n  cursor: 'pointer',\n}))\n\nexport interface ITextFieldTag extends Omit<ITextFieldTagsForm, 'options'> {\n  value?: string[]\n  withCleanButton?: boolean\n  onChange?: (value: string[]) => void\n  onRemoveItem?: () => void\n  dataTestId?: string\n}\n\nfunction TextFieldTagsWithoutError(\n  props: ITextFieldTag,\n  ref?: ForwardedRef<HTMLInputElement>\n): JSX.Element {\n  const {\n    value: inputValue,\n    onChange,\n    onRemoveItem,\n    disabled,\n    required,\n    error,\n    fullWidth,\n    helperText,\n    helperIcon,\n    label,\n    margin,\n    infoTooltip,\n    placeholder,\n    size,\n    disabledValue,\n    withCleanButton,\n    dataTestId,\n  } = props\n\n  const { t } = useTranslation('common')\n\n  const [val, setVal] = useState<string>('')\n\n  function manageTags(\n    key?: number,\n    event?:\n      | FormEvent<HTMLFormElement>\n      | FocusEvent<HTMLInputElement, Element>\n      | React.KeyboardEvent<HTMLInputElement>\n  ): void | null {\n    if (!value || !onChange) {\n      return null\n    }\n    if (event) {\n      event.preventDefault()\n      if (val === undefined || val.trim() === '') {\n        return null\n      }\n      const newTags = value.concat([val])\n      setVal('')\n      return onChange(newTags)\n    }\n\n    const newTags = value.filter((_, keyValue) => key !== keyValue)\n    return onChange(newTags)\n  }\n\n  const [focus, setFocus] = useState(false)\n\n  const value = useMemo(\n    () => inputValue.filter((el) => el !== null),\n    [inputValue]\n  )\n\n  function onBlurInputTextFieldTags(\n    e: FocusEvent<HTMLInputElement, Element>\n  ): void {\n    manageTags(undefined, e)\n    setFocus(false)\n  }\n\n  return (\n    <div style={{ position: 'relative' }}>\n      {withCleanButton === true && (\n        <CustomCloseTagsByOperator\n          data-testid={dataTestId ? `${dataTestId}CleanButton` : null}\n          onClick={(): void => {\n            if (value.length > 0) {\n              onChange([])\n            }\n          }}\n        >\n          <IonIcon name=\"close\" style={{ fontSize: 14, padding: '0px' }} />\n        </CustomCloseTagsByOperator>\n      )}\n\n      <FormControl error={error} fullWidth={fullWidth} margin={margin}>\n        {Boolean(label || infoTooltip) && (\n          <div style={{ marginBottom: '4px' }}>\n            <InputLabel shrink required={required}>\n              {label}\n              {infoTooltip ? <InfoTooltip title={infoTooltip} /> : null}\n            </InputLabel>\n          </div>\n        )}\n        <CustomRootTextFieldTags\n          disabled={disabled}\n          focus={focus}\n          error={error}\n        >\n          {onRemoveItem ? (\n            <CustomCloseTagsByOperator onClick={onRemoveItem}>\n              <IonIcon name=\"close\" style={{ fontSize: 14, padding: '0px' }} />\n            </CustomCloseTagsByOperator>\n          ) : null}\n          <CustomTags>\n            {disabled || !value ? (\n              <Chip disabled label={disabledValue} />\n            ) : (\n              value\n                .filter((it) => it)\n                .map((item: string, key: number) => {\n                  return disabled ? (\n                    // eslint-disable-next-line react/no-array-index-key\n                    <Chip disabled key={key} label={disabledValue} />\n                  ) : (\n                    <Chip\n                      // eslint-disable-next-line react/no-array-index-key\n                      key={key}\n                      label={item}\n                      onDelete={(): void | null => manageTags(key)}\n                    />\n                  )\n                })\n            )}\n            {!disabled && (\n              <CustomFormTextFieldTags>\n                <CustomInputTextTextFieldTags\n                  onFocus={(): void => {\n                    if (!error) {\n                      setFocus(true)\n                    }\n                  }}\n                  onBlur={(e): void => onBlurInputTextFieldTags(e)}\n                  value={val}\n                  size={size}\n                  placeholder={\n                    placeholder ?? t('placeholder.default.textFieldTags')\n                  }\n                  onChange={(value): void => setVal(value as string)}\n                  onKeyDown={(event): void => {\n                    if (event.code === 'Enter') manageTags(undefined, event)\n                  }}\n                  inputRef={ref}\n                  dataTestId={dataTestId ? `${dataTestId}InputText` : null}\n                />\n              </CustomFormTextFieldTags>\n            )}\n          </CustomTags>\n        </CustomRootTextFieldTags>\n        {Boolean(helperText) && (\n          <FormHelperText error={error}>\n            {Boolean(helperIcon) && (\n              <IonIcon\n                name={helperIcon as string}\n                style={{ fontSize: 18, marginRight: 2 }}\n              />\n            )}\n            {helperText}\n          </FormHelperText>\n        )}\n      </FormControl>\n    </div>\n  )\n}\n\nexport default forwardRef<HTMLInputElement, ITextFieldTag>(\n  TextFieldTagsWithoutError\n)\n","import React, { useContext, useMemo } from 'react'\n\nimport { useApiList, useResource, useRuleOperators } from '../../../hooks'\nimport {\n  IRuleCombination,\n  IRuleEngineOperators,\n  ISourceField,\n  ISourceFieldLabel,\n  RuleAttributeType,\n  getIri,\n  parseRule,\n  serializeRule,\n} from '@elastic-suite/gally-admin-shared'\n\nimport { catalogContext } from '../../../contexts'\n\nimport CombinationRules, {\n  ICombinationRulesProps,\n} from '../../atoms/rules/CombinationRules'\nimport RuleOptionsProvider from '../../stateful-providers/RuleOptionsProvider/RuleOptionsProvider'\nimport { FormHelperText, InputLabel } from '@mui/material'\nimport InfoTooltip from '../../atoms/form/InfoTooltip'\nimport IonIcon from '../../atoms/IonIcon/IonIcon'\nimport { useTranslation } from 'next-i18next'\n\nconst sourceFieldFixedFilters = {\n  'metadata.entity': 'product',\n  isUsedForRules: true,\n}\n\ninterface IRulesManagerWrapperProps\n  extends Omit<\n    ICombinationRulesProps,\n    'catalogId' | 'localizedCatalogId' | 'rule' | 'onChange'\n  > {\n  active?: boolean\n  rule?: string | IRuleCombination\n  onChange?: (value: string | IRuleCombination) => void\n  ruleOperators?: IRuleEngineOperators\n  placeholder?: string\n  label?: string\n  infoTooltip?: string\n  required?: boolean\n  error?: boolean\n  helperText?: string\n  helperIcon?: string\n  small?: boolean\n  showError?: boolean\n}\n\nfunction RulesManagerWrapper({\n  ruleOperators: defaultRuleOperators,\n  ...props\n}: IRulesManagerWrapperProps): JSX.Element {\n  const ruleOperators = useRuleOperators(defaultRuleOperators)\n\n  if (!ruleOperators) {\n    return null\n  }\n\n  return <RulesManager {...props} ruleOperators={ruleOperators} />\n}\n\ninterface IRulesManagerProps extends IRulesManagerWrapperProps {\n  ruleOperators: IRuleEngineOperators\n}\nfunction RulesManager(props: IRulesManagerProps): JSX.Element {\n  const {\n    active,\n    ruleOperators,\n    label,\n    infoTooltip,\n    required,\n    error,\n    helperText,\n    helperIcon,\n    first,\n    small,\n    ...ruleProps\n  } = props\n  const { t } = useTranslation('common')\n  const { catalogId, localizedCatalogId } = useContext(catalogContext)\n  const rowsPerPage = 200\n  const rule: IRuleCombination =\n    typeof ruleProps.rule === 'string'\n      ? parseRule(JSON.parse(ruleProps.rule))\n      : ruleProps.rule\n\n  function handleChange(rule: IRuleCombination): void {\n    if (typeof ruleProps.rule === 'string') {\n      return ruleProps.onChange(\n        JSON.stringify(serializeRule(rule, ruleOperators))\n      )\n    }\n    ruleProps.onChange(rule)\n  }\n\n  // Source fields\n  const sourceFieldResource = useResource('SourceField')\n  const filters = useMemo(() => {\n    if (ruleOperators?.operatorsValueType) {\n      return {\n        ...sourceFieldFixedFilters,\n        'type[]': Object.keys(ruleOperators.operatorsValueType),\n      }\n    }\n  }, [ruleOperators.operatorsValueType])\n  const [sourceFields] = useApiList<ISourceField>(\n    sourceFieldResource,\n    false,\n    rowsPerPage,\n    filters,\n    undefined,\n    false,\n    true\n  )\n\n  // Source field labels\n  const sourceFieldLabelResource = useResource('SourceFieldLabel')\n  const sourceFieldLabelFilters = useMemo(() => {\n    const filters: { localizedCatalog?: string } = {}\n    if (localizedCatalogId !== -1) {\n      filters.localizedCatalog = getIri(\n        'localized_catalogs',\n        localizedCatalogId\n      )\n    }\n    return filters\n  }, [localizedCatalogId])\n  const [sourceFieldLabels] = useApiList<ISourceFieldLabel>(\n    sourceFieldLabelResource,\n    false,\n    rowsPerPage,\n    sourceFieldLabelFilters,\n    undefined,\n    false,\n    true\n  )\n\n  if (!sourceFields.data || !sourceFieldLabels.data) {\n    return null\n  }\n\n  const sourceFieldLabelsMap = new Map(\n    sourceFieldLabels.data['hydra:member'].map((label) => [\n      label.sourceField,\n      label.label,\n    ])\n  )\n\n  const fields = sourceFields.data['hydra:member'].map((field) => {\n    const label = sourceFieldLabelsMap.get(getIri('source_fields', field.id))\n    return {\n      id: field.id,\n      code: field.code,\n      label: (label || field.defaultLabel) ?? '',\n      type: field.type as RuleAttributeType,\n    }\n  })\n\n  return (\n    <RuleOptionsProvider\n      catalogId={catalogId}\n      localizedCatalogId={localizedCatalogId}\n      fields={fields}\n      ruleOperators={ruleOperators}\n    >\n      {Boolean(label || infoTooltip) && (\n        <InputLabel sx={{ marginBottom: '-20px' }} shrink required={required}>\n          {label}\n          {infoTooltip ? <InfoTooltip title={infoTooltip} /> : null}\n        </InputLabel>\n      )}\n      {Boolean(active) && (\n        <CombinationRules\n          catalogId={catalogId}\n          localizedCatalogId={localizedCatalogId}\n          {...ruleProps}\n          first={first}\n          rule={rule}\n          onChange={handleChange}\n          small={small}\n        />\n      )}\n      {Boolean(helperText) && (\n        <FormHelperText\n          error={error}\n          sx={{ marginTop: !first ? '-12px' : '8px' }}\n        >\n          {Boolean(helperIcon) && (\n            <IonIcon\n              name={helperIcon}\n              style={{ fontSize: 18, marginRight: 2 }}\n            />\n          )}\n          {t(helperText)}\n        </FormHelperText>\n      )}\n    </RuleOptionsProvider>\n  )\n}\n\nRulesManager.defaultProps = {\n  first: true,\n  small: false,\n}\n\nexport default RulesManagerWrapper\n","import React, { Fragment } from 'react'\nimport { styled } from '@mui/system'\nimport { useTranslation } from 'next-i18next'\n\nimport {\n  IRule,\n  IRuleCombination,\n  RuleCombinationOperator,\n  RuleType,\n  emptyAttributeRule,\n  emptyCombinationRule,\n  isAttributeRule,\n  isCombinationRule,\n} from '@elastic-suite/gally-admin-shared'\n\nimport Button from '../buttons/Button'\nimport IonIcon from '../IonIcon/IonIcon'\n\nimport Rule from './Rule'\nimport RuleLink from './RuleLink'\n\nconst RuleAndLinkContainer = styled('div')(({ theme }) => ({\n  gap: theme.spacing(1),\n  display: 'flex',\n  flexDirection: 'row',\n  alignItems: 'center',\n  position: 'relative',\n}))\n\nconst BorderBox = styled('div')(({ theme }) => ({\n  position: 'relative',\n  paddingTop: theme.spacing(1),\n  paddingBottom: theme.spacing(1),\n  paddingRight: theme.spacing(1),\n  paddingLeft: theme.spacing(1),\n  borderRadius: theme.spacing(1),\n  border: '1px solid',\n  borderColor: theme.palette.colors.neutral[300],\n  width: 'min-content',\n  alignItems: 'baseline',\n  boxShadow: theme.palette.colors.shadow.neutral.sm,\n  display: 'flex',\n  flexDirection: 'column',\n  gap: theme.spacing(1),\n}))\n\nconst RootWithBorder = styled(BorderBox)(({ theme }) => ({\n  gap: theme.spacing(2),\n  paddingTop: theme.spacing(2),\n  paddingBottom: theme.spacing(2),\n  alignItems: 'flex-start',\n}))\n\nconst RootWithoutBorder = styled('div')(({ theme }) => ({\n  position: 'relative',\n  display: 'flex',\n  flexDirection: 'column',\n  gap: theme.spacing(1),\n  alignItems: 'flex-start',\n}))\n\nconst ChildWithBorder = styled(BorderBox)(() => ({\n  marginLeft: '40px',\n}))\n\nconst RuleLinkPlaceholder = styled('div')(() => ({\n  width: '32px',\n}))\n\nexport interface ICombinationRulesProps {\n  catalogId: number\n  first?: boolean\n  localizedCatalogId: number\n  onChange?: (rule: IRuleCombination) => void\n  onDelete?: () => void\n  rule?: IRuleCombination\n  small?: boolean\n  showError?: boolean\n}\n\nfunction CombinationRules(props: ICombinationRulesProps): JSX.Element {\n  const {\n    catalogId,\n    first,\n    localizedCatalogId,\n    onChange,\n    onDelete,\n    rule,\n    small,\n    showError,\n  } = props\n  const { t } = useTranslation('rules')\n\n  if (!rule) {\n    return null\n  }\n\n  const { children, operator } = rule\n  const Root = first ? RootWithoutBorder : RootWithBorder\n  const Child = first ? Fragment : ChildWithBorder\n  const options = [\n    { value: RuleType.COMBINATION, label: t('combinationRule') },\n    { value: RuleType.ATTRIBUTE, label: t('attributeRule') },\n  ]\n\n  function handleChildChange(key: number) {\n    return (childRule: IRule) =>\n      onChange({\n        ...rule,\n        children: children.map((item: IRule, index: number) =>\n          index === key ? childRule : item\n        ),\n      })\n  }\n\n  function handleChildDelete(key: number) {\n    return () =>\n      onChange({\n        ...rule,\n        children: children.filter((_: IRule, index: number) => index !== key),\n      })\n  }\n\n  function handleAdd(value: RuleType): void {\n    if (value === RuleType.COMBINATION) {\n      onChange({\n        ...rule,\n        children: children.concat(emptyCombinationRule),\n      })\n    } else if (value === RuleType.ATTRIBUTE) {\n      onChange({\n        ...rule,\n        children: children.concat(emptyAttributeRule),\n      })\n    }\n  }\n\n  return (\n    <Root className=\"combinationRules\">\n      <RuleAndLinkContainer>\n        <RuleLink label=\"if\" />\n        <Rule\n          catalogId={catalogId}\n          localizedCatalogId={localizedCatalogId}\n          onChange={onChange}\n          onDelete={onDelete}\n          rule={rule}\n          small={small}\n          showError={showError}\n        />\n      </RuleAndLinkContainer>\n      {Boolean(children) && (\n        <Child>\n          {children.map((item: IRule, key: number) => (\n            // eslint-disable-next-line react/no-array-index-key\n            <RuleAndLinkContainer key={key}>\n              {key !== children.length - 1 ? (\n                <RuleLink\n                  double\n                  label={\n                    operator === RuleCombinationOperator.ALL ? 'and' : 'or'\n                  }\n                  merge={key !== 0 && item.type !== RuleType.COMBINATION}\n                />\n              ) : (\n                <RuleLinkPlaceholder />\n              )}\n              {isCombinationRule(item) ? (\n                <CombinationRules\n                  catalogId={catalogId}\n                  localizedCatalogId={localizedCatalogId}\n                  onChange={handleChildChange(key)}\n                  onDelete={handleChildDelete(key)}\n                  rule={item}\n                  small={small}\n                  showError={showError}\n                />\n              ) : isAttributeRule(item) ? (\n                <Rule\n                  catalogId={catalogId}\n                  localizedCatalogId={localizedCatalogId}\n                  onChange={handleChildChange(key)}\n                  onDelete={handleChildDelete(key)}\n                  rule={item}\n                  small={small}\n                  showError={showError}\n                />\n              ) : null}\n            </RuleAndLinkContainer>\n          ))}\n          <Button\n            display=\"tertiary\"\n            onSelect={handleAdd}\n            options={options}\n            style={{ whiteSpace: 'nowrap', marginLeft: first ? '40px' : 0 }}\n          >\n            <IonIcon\n              name=\"add\"\n              style={{ marginRight: '4px', fontSize: '19px' }}\n            />\n            {t('addCondition')}\n          </Button>\n        </Child>\n      )}\n    </Root>\n  )\n}\n\nexport default CombinationRules\n","import React, { useContext, useEffect, useMemo } from 'react'\nimport { useTranslation } from 'next-i18next'\nimport {\n  IOptions,\n  IRule,\n  IRuleAttribute,\n  ITreeItem,\n  RuleAttributeType,\n  RuleType,\n  RuleValueType,\n  flatTree,\n  getAttributeRuleValueType,\n  isAttributeRule,\n  isAttributeRuleValueMultiple,\n  isCombinationRule,\n  ruleArrayValueSeparator,\n  ruleValueNumberTypes,\n} from '@elastic-suite/gally-admin-shared'\n\nimport { ruleOptionsContext } from '../../../contexts'\n\nimport IonIcon from '../IonIcon/IonIcon'\nimport { Close, CustomCombination, Root } from './Rule.styled'\nimport DropDown from '../form/DropDown'\nimport TreeSelector from '../form/TreeSelector'\nimport InputText from '../form/InputText'\nimport DatePickerError from '../form/DatePicker'\n\nfunction getInputType(valueType: RuleValueType): 'number' | 'text' {\n  if (ruleValueNumberTypes.includes(valueType)) {\n    return 'number'\n  }\n  return 'text'\n}\n\ninterface IProps {\n  catalogId: number\n  localizedCatalogId: number\n  onChange?: (rule: IRule) => void\n  onDelete?: () => void\n  rule: IRule\n  small?: boolean\n  showError?: boolean\n}\n\nfunction Rule(props: IProps): JSX.Element {\n  const {\n    catalogId,\n    showError,\n    localizedCatalogId,\n    onChange,\n    onDelete,\n    rule,\n    small,\n  } = props\n  const {\n    getAttributeOperatorOptions,\n    getAttributeType,\n    loadAttributeValueOptions,\n    operatorsValueType,\n    options,\n  } = useContext(ruleOptionsContext)\n  const { t } = useTranslation('rules')\n\n  useEffect(() => {\n    if (isAttributeRule(rule)) {\n      loadAttributeValueOptions(rule.field)\n    }\n  }, [loadAttributeValueOptions, rule])\n\n  const categories = useMemo(\n    () =>\n      (options.get(\n        `type-${RuleAttributeType.CATEGORY}-${catalogId}-${localizedCatalogId}`\n      ) ?? []) as ITreeItem[],\n    [catalogId, localizedCatalogId, options]\n  )\n  const flatCategories: ITreeItem[] = useMemo(() => {\n    const flat: ITreeItem[] = []\n    flatTree(categories, flat)\n    return flat\n  }, [categories])\n\n  function handleChange(property: string) {\n    return (value: unknown): void => onChange({ ...rule, [property]: value })\n  }\n\n  function handleCategoryChange(value: ITreeItem | ITreeItem[]): void {\n    if (value instanceof Array) {\n      onChange({\n        ...rule,\n        value: value.map((category) => category.id as string),\n      })\n    } else {\n      onChange({ ...rule, value: value.id })\n    }\n  }\n\n  function handleInputChange(multiple: boolean) {\n    return (value: string): void => {\n      if (multiple) {\n        onChange({ ...rule, value: value.split(ruleArrayValueSeparator) })\n      } else {\n        onChange({ ...rule, value })\n      }\n    }\n  }\n\n  function handleFieldChange(value: string): void {\n    onChange({\n      ...rule,\n      attribute_type: getAttributeType(value) ?? '',\n      field: value ?? '',\n      value: [],\n    } as IRuleAttribute)\n  }\n\n  function handleOperatorChange(operator: string): void {\n    const attributeRule = rule as IRuleAttribute\n    const newRule: IRuleAttribute = {\n      ...attributeRule,\n      operator,\n    }\n    const prevType = getAttributeRuleValueType(\n      attributeRule,\n      operatorsValueType\n    )\n    const newType = getAttributeRuleValueType(newRule, operatorsValueType)\n    onChange({\n      ...newRule,\n      value:\n        prevType === newType\n          ? rule.value\n          : isAttributeRuleValueMultiple(newType)\n          ? []\n          : '',\n    })\n  }\n\n  function getAttributeValueComponent(rule: IRuleAttribute): JSX.Element {\n    const { attribute_type, field, value } = rule\n    const valueType = getAttributeRuleValueType(rule, operatorsValueType)\n    const multiple = isAttributeRuleValueMultiple(valueType)\n\n    if (valueType === RuleValueType.BOOLEAN) {\n      return (\n        <DropDown\n          showError={showError}\n          onChange={handleChange('value')}\n          options={\n            (options.get(`type-${RuleValueType.BOOLEAN}`) ??\n              []) as IOptions<boolean>\n          }\n          required\n          small={small}\n          value={value}\n        />\n      )\n    } else if (attribute_type === RuleAttributeType.SELECT) {\n      return (\n        <DropDown\n          showError={showError}\n          multiple={multiple}\n          onChange={handleChange('value')}\n          options={\n            (options.get(`${field}-${localizedCatalogId}`) ??\n              []) as IOptions<unknown>\n          }\n          required\n          small={small}\n          value={value}\n        />\n      )\n    } else if (attribute_type === RuleAttributeType.CATEGORY) {\n      const treeSelectorValue =\n        value instanceof Array\n          ? flatCategories.filter((category) =>\n              (value as string[]).includes(category.id as string)\n            )\n          : flatCategories.find((category) => value === category.id) ?? null\n      return (\n        <TreeSelector\n          showError={showError}\n          data={categories}\n          multiple={multiple}\n          onChange={handleCategoryChange}\n          required\n          small={small}\n          value={treeSelectorValue}\n        />\n      )\n    } else if (attribute_type === RuleAttributeType.DATE) {\n      const datePickerValue =\n        (typeof value === 'string' && value) || value instanceof Date\n          ? new Date(value)\n          : null\n\n      return (\n        <DatePickerError\n          showError={showError}\n          value={datePickerValue}\n          required\n          onChange={handleChange('value')}\n        />\n      )\n    }\n\n    return (\n      <InputText\n        showError={showError}\n        onChange={handleInputChange(multiple)}\n        required\n        small={small}\n        type={getInputType(valueType)}\n        value={\n          multiple\n            ? (value as string[]).join(ruleArrayValueSeparator)\n            : (value as string)\n        }\n      />\n    )\n  }\n\n  let content\n  if (isCombinationRule(rule)) {\n    const { operator, value } = rule\n    content = (\n      <>\n        <DropDown\n          showError={showError}\n          onChange={handleChange('operator')}\n          options={\n            (options.get(`${RuleType.COMBINATION}-operator`) ??\n              []) as IOptions<string>\n          }\n          required\n          small={small}\n          value={operator}\n        />\n        <CustomCombination>{t('conditionsAre')}</CustomCombination>\n        <DropDown\n          showError={showError}\n          onChange={handleChange('value')}\n          options={\n            (options.get(`type-${RuleValueType.BOOLEAN}`) ??\n              []) as IOptions<boolean>\n          }\n          required\n          small={small}\n          value={value}\n        />\n      </>\n    )\n  } else if (isAttributeRule(rule)) {\n    const { field, operator } = rule\n    content = (\n      <>\n        <DropDown\n          showError={showError}\n          onChange={handleFieldChange}\n          options={\n            (options.get(`${RuleType.ATTRIBUTE}-field`) ??\n              []) as IOptions<string>\n          }\n          required\n          value={field}\n          small={small}\n        />\n        <DropDown\n          showError={showError}\n          onChange={handleOperatorChange}\n          options={getAttributeOperatorOptions(field)}\n          required\n          small={small}\n          transparent\n          value={operator}\n        />\n        {getAttributeValueComponent(rule)}\n      </>\n    )\n  }\n\n  return (\n    <Root>\n      {content}\n      <Close onClick={onDelete}>\n        <IonIcon name=\"close\" style={{ fontSize: '17.85px' }} />\n      </Close>\n    </Root>\n  )\n}\n\nexport default Rule\n","import { styled } from '@mui/system'\n\nexport const Root = styled('div')(({ theme }) => ({\n  boxSizing: 'border-box',\n  background: theme.palette.colors.neutral['200'],\n  padding: theme.spacing(1),\n  display: 'flex',\n  justifyContent: 'center',\n  width: 'max-content',\n  border: '1px solid',\n  borderColor: theme.palette.colors.neutral['300'],\n  borderRadius: theme.spacing(1),\n  alignItems: 'center',\n  gap: theme.spacing(0.5),\n}))\n\nexport const Close = styled('div')(({ theme }) => ({\n  display: 'flex',\n  cursor: 'pointer',\n  transition: 'all 500ms',\n  padding: theme.spacing(0.5),\n  borderRadius: theme.spacing(1),\n  color: theme.palette.colors.neutral['600'],\n  '&:hover': {\n    background: theme.palette.colors.neutral['300'],\n  },\n}))\n\nexport const CustomCombination = styled('div')(({ theme }) => ({\n  paddingLeft: theme.spacing(1),\n  paddingRight: theme.spacing(1),\n  color: theme.palette.colors.neutral['900'],\n  fontWeight: 400,\n  lineHeight: '18px',\n  fontSize: '12px',\n  width: 'max-content',\n}))\n","import React from 'react'\nimport { styled } from '@mui/system'\n\nconst LinkLabel = styled('div')(({ theme }) => ({\n  color: theme.palette.colors.neutral['900'],\n  fontWeight: 600,\n  fontSize: '12px',\n  lineHeight: '18px',\n  display: 'flex',\n  justifyContent: 'center',\n  alignItems: 'center',\n  fontFamily: 'var(--gally-font)',\n  width: '32px',\n  height: '26px',\n  borderRadius: '28px',\n  background: theme.palette.colors.primary['100'],\n  border: '1px solid',\n  borderColor: theme.palette.colors.primary['200'],\n  position: 'relative',\n  boxSizing: 'border-box',\n}))\n\nconst LinkLabelSimple = styled(LinkLabel)(({ theme }) => ({\n  '&:before': {\n    content: '\"\"',\n    position: 'absolute',\n    border: '1px dotted',\n    borderColor: theme.palette.colors.neutral['500'],\n    borderTop: 'none',\n    borderRight: 'none',\n    width: '22px',\n    left: '50%',\n    height: '42px',\n    top: '100%',\n  },\n}))\n\nconst LinkLabelDouble = styled(LinkLabel)(({ theme }) => ({\n  '&:before': {\n    content: '\"\"',\n    position: 'absolute',\n    border: '1px dotted',\n    borderColor: theme.palette.colors.neutral['500'],\n    borderBottom: 'none',\n    borderRight: 'none',\n    width: '22px',\n    left: '50%',\n    height: '12px',\n    bottom: '100%',\n  },\n\n  '&:after': {\n    content: '\"\"',\n    position: 'absolute',\n    border: '1px dotted',\n    borderColor: theme.palette.colors.neutral['500'],\n    borderTop: 'none',\n    borderRight: 'none',\n    width: '22px',\n    left: '50%',\n    height: '12px',\n    top: '100%',\n  },\n}))\n\nconst LinkLabelDoubleMerged = styled(LinkLabelDouble)(() => ({\n  '&:before': {\n    width: '0',\n  },\n}))\n\nconst DoubleLinkContainer = styled('div')(() => ({\n  alignSelf: 'flex-end',\n  transform: 'translateY(18px)',\n}))\n\ninterface IProps {\n  double?: boolean\n  label: string\n  merge?: boolean\n}\n\nfunction RuleLink(props: IProps): JSX.Element {\n  const { double, label, merge } = props\n\n  if (!double) {\n    return <LinkLabelSimple>{label}</LinkLabelSimple>\n  }\n\n  return (\n    <DoubleLinkContainer>\n      {merge ? (\n        <LinkLabelDoubleMerged>{label}</LinkLabelDoubleMerged>\n      ) : (\n        <LinkLabelDouble>{label}</LinkLabelDouble>\n      )}\n    </DoubleLinkContainer>\n  )\n}\n\nexport default RuleLink\n","import React, { ReactNode, useCallback, useEffect, useMemo } from 'react'\nimport { useTranslation } from 'next-i18next'\n\nimport { ruleOptionsContext } from '../../../contexts'\nimport { useResource, useSingletonLoader } from '../../../hooks'\nimport {\n  ICategories,\n  IFetchApi,\n  IHydraResponse,\n  IOptions,\n  IRuleEngineOperators,\n  ISourceFieldOption,\n  ITreeItem,\n  RuleAttributeType,\n  RuleCombinationOperator,\n  RuleType,\n  RuleValueType,\n  fetchApiUsingPagination,\n  getIri,\n  getOptionsFromEnum,\n  getOptionsFromOptionResource,\n  isError,\n} from '@elastic-suite/gally-admin-shared'\n\nexport interface IField {\n  id: number | string\n  code: string\n  label: string\n  type: RuleAttributeType\n}\n\ninterface IProps {\n  catalogId: number\n  children: ReactNode\n  fields: IField[]\n  localizedCatalogId: number\n  ruleOperators: IRuleEngineOperators\n}\n\nfunction RuleOptionsProvider(props: IProps): JSX.Element {\n  const { catalogId, children, fields, localizedCatalogId, ruleOperators } =\n    props\n  const { operators, operatorsBySourceFieldType, operatorsValueType } =\n    ruleOperators\n  const sourceFieldOptionResource = useResource('SourceFieldOption')\n  const { t } = useTranslation('rules')\n  const { fetch, map, setMap } = useSingletonLoader<\n    IOptions<unknown> | ITreeItem[]\n  >()\n\n  // Add boolean options (we have to use useEffect for translation)\n  useEffect(() => {\n    setMap((options) => {\n      const clone = new Map(options)\n      clone.set(\n        `${RuleType.COMBINATION}-operator`,\n        getOptionsFromEnum(RuleCombinationOperator, t)\n      )\n      clone.set(`type-${RuleValueType.BOOLEAN}`, [\n        { value: true, label: t('true') },\n        { value: false, label: t('false') },\n      ])\n      return clone\n    })\n  }, [setMap, t])\n\n  // Add list of fields\n  useEffect(() => {\n    setMap((options) =>\n      new Map(options).set(\n        `${RuleType.ATTRIBUTE}-field`,\n        fields.map((field) => ({\n          value: field.code,\n          label: field.label,\n        }))\n      )\n    )\n  }, [fields, setMap])\n\n  const attributeOperatorOptions = useMemo(\n    () =>\n      Object.entries(operators).map(([operator, label]) => ({\n        value: operator,\n        label: t(`operator.${label}`),\n        id: operator,\n      })),\n    [operators, t]\n  )\n\n  const getAttributeOperatorOptions = useCallback(\n    (fieldCode: string) => {\n      const field = fields.find(({ code }) => code === fieldCode)\n      if (!field) {\n        return []\n      }\n      const operators = operatorsBySourceFieldType[field.type]\n      if (!operators) {\n        return []\n      }\n      return attributeOperatorOptions.filter((option) =>\n        operators.includes(option.value)\n      )\n    },\n    [attributeOperatorOptions, fields, operatorsBySourceFieldType]\n  )\n\n  const getAttributeType = useCallback(\n    (fieldCode: string) => {\n      const field = fields.find(({ code }) => code === fieldCode)\n      if (field) {\n        return field.type\n      }\n    },\n    [fields]\n  )\n\n  const loadAttributeValueOptions = useCallback(\n    (fieldCode: string): void => {\n      const field = fields.find(({ code }) => code === fieldCode)\n      if (!field) {\n        return\n      }\n      if (field.type === RuleAttributeType.CATEGORY) {\n        // Fetch categories for current catalog/localizedCatalog\n        return fetch(\n          `type-${RuleAttributeType.CATEGORY}-${catalogId}-${localizedCatalogId}`,\n          async (fetchApi: IFetchApi) => {\n            const filters: { catalogId?: number; localizedCatalogId?: number } =\n              {}\n            if (catalogId !== -1) {\n              filters.catalogId = catalogId\n            }\n            if (localizedCatalogId !== -1) {\n              filters.localizedCatalogId = localizedCatalogId\n            }\n            const response = await fetchApi<ICategories>(\n              'categoryTree',\n              filters\n            )\n            if (!isError(response)) {\n              return response.categories\n            }\n            throw new Error('error')\n          }\n        )\n      }\n      if (field.type === RuleAttributeType.SELECT) {\n        return fetch(\n          `${field.code}-${localizedCatalogId}`,\n          async (fetchApi: IFetchApi) => {\n            const response = await fetchApiUsingPagination<\n              IHydraResponse<ISourceFieldOption>\n            >(\n              fetchApi,\n              sourceFieldOptionResource,\n              {\n                'order[position]': 'asc',\n                sourceField: getIri('source_fields', field.id),\n              },\n              undefined,\n              200\n            )\n\n            if (response.error) {\n              throw new Error('soure_field_option request error')\n            } else {\n              return getOptionsFromOptionResource(\n                response.data,\n                localizedCatalogId\n              )\n            }\n          }\n        )\n      }\n    },\n    [catalogId, fetch, fields, localizedCatalogId, sourceFieldOptionResource]\n  )\n\n  const context = useMemo(() => {\n    return {\n      getAttributeOperatorOptions,\n      getAttributeType,\n      loadAttributeValueOptions,\n      operatorsValueType,\n      options: map,\n    }\n  }, [\n    getAttributeOperatorOptions,\n    getAttributeType,\n    loadAttributeValueOptions,\n    map,\n    operatorsValueType,\n  ])\n\n  return (\n    <ruleOptionsContext.Provider value={context}>\n      {children}\n    </ruleOptionsContext.Provider>\n  )\n}\n\nexport default RuleOptionsProvider\n","import React, { ReactNode } from 'react'\n\nimport { ISynonyms } from '@elastic-suite/gally-admin-shared'\nimport { FormHelperText, IconButton, InputLabel } from '@mui/material'\nimport InfoTooltip from './InfoTooltip'\nimport IonIcon from '../IonIcon/IonIcon'\nimport { StyledFormControl } from './InputText.styled'\nimport Button from '../buttons/Button'\nimport { styled } from '@mui/system'\nimport { useTranslation } from 'next-i18next'\nimport TextFieldTags from './TextFieldTags'\n\nconst CustomPropError = ['error']\nconst CustomRoot = styled('div', {\n  shouldForwardProp: (prop: string) => !CustomPropError.includes(prop),\n})<{ error: boolean }>(({ theme, error }) => ({\n  color: theme.palette.colors.neutral[900],\n  fontFamily: 'var(--gally-font)',\n  fontSize: theme.spacing(1.5),\n  fontWeight: '600',\n  lineHeight: '18px',\n  padding: theme.spacing(2),\n  border: '1px solid',\n  borderRadius: theme.spacing(1),\n  borderColor: error\n    ? theme.palette.colors.primary[700]\n    : theme.palette.colors.neutral[300],\n  marginTop: theme.spacing(0.5),\n  width: 'fit-content',\n}))\n\nfunction synonymValidator(terms: string[]): string {\n  if (terms.length < 2) return 'synonymTermsSizeInvalid'\n  else if (terms.find((term) => term === undefined || term === ''))\n    return 'synonymTermsSizeInvalid'\n  if (terms.length !== [...new Set(terms)].length)\n    return 'synonymTermsDuplicate'\n  return ''\n}\n\nexport interface IProps {\n  value: ISynonyms\n  onChange?: (value: ISynonyms) => void\n  label?: string\n  required?: boolean\n  fullWidth?: boolean\n  margin?: 'none' | 'dense' | 'normal'\n  infoTooltip?: string\n  placeholder?: string\n  error?: boolean\n  showError?: boolean\n  helperText?: ReactNode\n  helperIcon?: string\n}\n\ninterface ISynonymFormatted {\n  id: number | string\n  terms: string[]\n}\n\nfunction iSynonymsFormattedToISynonyms(\n  synonyms: ISynonymFormatted[]\n): ISynonyms {\n  return synonyms.map((synonym) => {\n    const synonymItem =\n      typeof synonym.id === 'string' ? { '@id': synonym.id } : {}\n    return {\n      ...synonymItem,\n      terms: synonym.terms.map((term) => ({ term })),\n    }\n  })\n}\n\nfunction Synonym(props: IProps): JSX.Element {\n  const {\n    value,\n    onChange,\n    label,\n    required,\n    fullWidth,\n    margin,\n    infoTooltip,\n    placeholder,\n    error,\n    showError,\n    helperText,\n    helperIcon,\n  } = props\n\n  if (value.length === 0) {\n    onChange([{ terms: [] }])\n  }\n\n  const { t } = useTranslation('thesaurus')\n  let lastExpansionId = 0\n  const synonyms: ISynonymFormatted[] =\n    value && value instanceof Array && value.length > 0\n      ? value.map((synonym) => ({\n          id: synonym['@id'] ?? lastExpansionId++,\n          terms: synonym.terms.map((term) => term.term),\n        }))\n      : []\n\n  function addSynonym(): void {\n    const synonymsUpdated = [...synonyms]\n    if (\n      synonymsUpdated.length === 0 ||\n      synonymsUpdated[synonymsUpdated.length - 1].terms.toString() !==\n        [].toString()\n    ) {\n      synonymsUpdated.push({\n        id: lastExpansionId++,\n        terms: [],\n      })\n    }\n\n    return onChange(iSynonymsFormattedToISynonyms(synonymsUpdated))\n  }\n\n  function updateTerms(synonymId: string | number, terms: string[]): void {\n    const synonymsUpdated = [...synonyms]\n    const index = synonymsUpdated.findIndex(\n      (synonym) => synonym.id === synonymId\n    )\n\n    if (index >= 0) {\n      synonymsUpdated[index].terms = terms\n    }\n\n    return onChange(iSynonymsFormattedToISynonyms(synonymsUpdated))\n  }\n\n  function removeTerms(synonymId: string | number): void {\n    const synonymsUpdated = [...synonyms]\n    const index = synonymsUpdated.findIndex(\n      (synonym) => synonym.id === synonymId\n    )\n\n    if (index >= 0) {\n      synonymsUpdated.splice(index, 1)\n    }\n\n    return onChange(iSynonymsFormattedToISynonyms(synonymsUpdated))\n  }\n\n  return (\n    <StyledFormControl\n      fullWidth={fullWidth}\n      margin={margin}\n      variant=\"standard\"\n      error={error}\n    >\n      {label || infoTooltip ? (\n        <InputLabel shrink sx={{ maxWidth: '90%' }} required={required}>\n          {label ? label : null}\n          {infoTooltip ? <InfoTooltip title={infoTooltip} /> : null}\n        </InputLabel>\n      ) : undefined}\n      <CustomRoot error={error}>\n        <div\n          style={{\n            display: 'flex',\n            gap: '24px',\n            flexDirection: 'column',\n            marginBottom: '24px',\n          }}\n        >\n          {synonyms.map((synonym) => (\n            <div\n              style={{\n                position: 'relative',\n                display: 'flex',\n                alignItems: 'center',\n              }}\n              key={synonym.id}\n              className=\"synonym\"\n            >\n              <TextFieldTags\n                fullWidth={fullWidth}\n                showError={showError}\n                required\n                withCleanButton\n                onChange={(terms): void => {\n                  updateTerms(synonym.id, terms)\n                }}\n                value={synonym.terms}\n                placeholder={placeholder}\n                additionalValidator={synonymValidator}\n              />\n              <IconButton\n                onClick={(): void => removeTerms(synonym.id)}\n                style={{ marginLeft: 8 }}\n              >\n                <IonIcon\n                  style={{ fontSize: '18px', color: '#424880' }}\n                  name=\"trash-outline\"\n                />\n              </IconButton>\n            </div>\n          ))}\n        </div>\n        <div\n          style={{ display: 'flex', justifyContent: 'right', marginRight: 44 }}\n        >\n          <Button\n            size=\"large\"\n            display=\"secondary\"\n            endIcon={<IonIcon name=\"add\" style={{ fontSize: 24 }} />}\n            onClick={(): void => addSynonym()}\n          >\n            {t('add')}\n          </Button>\n        </div>\n      </CustomRoot>\n      {Boolean(helperText) && (\n        <FormHelperText error={error}>\n          {Boolean(helperIcon) && (\n            <IonIcon\n              name={helperIcon}\n              style={{ fontSize: 18, marginRight: 2 }}\n            />\n          )}\n          {helperText}\n        </FormHelperText>\n      )}\n    </StyledFormControl>\n  )\n}\n\nexport default Synonym\n","import React from 'react'\n\nimport { IExpansions } from '@elastic-suite/gally-admin-shared'\n\nimport { FormHelperText, IconButton, InputLabel } from '@mui/material'\nimport InfoTooltip from './InfoTooltip'\nimport IonIcon from '../IonIcon/IonIcon'\nimport { StyledFormControl } from './InputText.styled'\nimport Button from '../buttons/Button'\nimport InputText from './InputText'\nimport { styled } from '@mui/system'\nimport { useTranslation } from 'next-i18next'\nimport TextFieldTags from './TextFieldTags'\n\nconst CustomPropError = ['error']\nconst CustomRoot = styled('div', {\n  shouldForwardProp: (prop: string) => !CustomPropError.includes(prop),\n})<{ error: boolean }>(({ theme, error }) => ({\n  color: theme.palette.colors.neutral[900],\n  fontFamily: 'var(--gally-font)',\n  fontSize: theme.spacing(1.5),\n  fontWeight: '600',\n  lineHeight: '18px',\n  padding: theme.spacing(2),\n  border: '1px solid',\n  borderRadius: theme.spacing(1),\n  borderColor: error\n    ? theme.palette.colors.primary[700]\n    : theme.palette.colors.neutral[300],\n  marginTop: theme.spacing(0.5),\n  width: 'fit-content',\n  '& .MuiFormLabel-root': {\n    fontWeight: 500,\n    color: theme.palette.colors.neutral[600],\n  },\n}))\n\nexport interface IProps {\n  value: IExpansions\n  onChange?: (value: IExpansions) => void\n  label?: string\n  required?: boolean\n  fullWidth?: boolean\n  margin?: 'none' | 'dense' | 'normal'\n  infoTooltip?: string\n  placeholder?: string\n  error?: boolean\n  helperText?: string\n  helperIcon?: string\n  showError?: boolean\n}\n\ninterface IExpansionsFormatted {\n  id: number | string\n  referenceTerm: string\n  terms: string[]\n}\n\nfunction iExpansionsFormattedToIExpansions(\n  expansions: IExpansionsFormatted[]\n): IExpansions {\n  return expansions.map((expansion) => {\n    const expansionItem =\n      typeof expansion.id === 'string' ? { '@id': expansion.id } : {}\n    return {\n      ...expansionItem,\n      referenceTerm: expansion.referenceTerm,\n      terms: expansion.terms.map((term) => ({ term })),\n    }\n  })\n}\n\nfunction Expansion(props: IProps): JSX.Element {\n  const {\n    value,\n    onChange,\n    label,\n    required,\n    fullWidth,\n    margin,\n    infoTooltip,\n    placeholder,\n    error,\n    helperText,\n    helperIcon,\n    showError,\n  } = props\n\n  if (value.length === 0) {\n    onChange([{ referenceTerm: '', terms: [] }])\n  }\n\n  const { t } = useTranslation('thesaurus')\n  let lastExpansionId = 0\n  const expansions: IExpansionsFormatted[] =\n    value && value instanceof Array && value.length > 0\n      ? value.map((expansion) => ({\n          id: expansion['@id'] ?? lastExpansionId++,\n          referenceTerm: expansion.referenceTerm,\n          terms: expansion.terms.map((term) => term.term),\n        }))\n      : []\n\n  function addExpansion(): void {\n    const expansionsUpdated = [...expansions]\n    if (\n      expansionsUpdated.length === 0 ||\n      !(\n        expansionsUpdated[expansionsUpdated.length - 1].referenceTerm === '' &&\n        expansionsUpdated[expansionsUpdated.length - 1].terms.toString() ===\n          [].toString()\n      )\n    ) {\n      expansionsUpdated.push({\n        id: lastExpansionId++,\n        referenceTerm: '',\n        terms: [],\n      })\n    }\n\n    return onChange(iExpansionsFormattedToIExpansions(expansionsUpdated))\n  }\n\n  function updateTerms(\n    expansionId: string | number,\n    referenceTerm: string,\n    terms: string[]\n  ): void {\n    const expansionsUpdated = [...expansions]\n    const index = expansionsUpdated.findIndex(\n      (expansionsUpdated) => expansionsUpdated.id === expansionId\n    )\n    if (index >= 0) {\n      expansionsUpdated[index].terms = terms\n      expansionsUpdated[index].referenceTerm = referenceTerm\n    }\n    return onChange(iExpansionsFormattedToIExpansions(expansionsUpdated))\n  }\n\n  function removeTerms(expansionId: string | number): void {\n    const expansionsUpdated = [...expansions]\n    const index = expansionsUpdated.findIndex(\n      (expansion) => expansion.id === expansionId\n    )\n\n    if (index >= 0) {\n      expansionsUpdated.splice(index, 1)\n    }\n\n    return onChange(iExpansionsFormattedToIExpansions(expansionsUpdated))\n  }\n\n  return (\n    <StyledFormControl\n      fullWidth={fullWidth}\n      margin={margin}\n      variant=\"standard\"\n      error={error}\n    >\n      {label || infoTooltip ? (\n        <InputLabel shrink sx={{ maxWidth: '90%' }} required={required}>\n          {label ? label : null}\n          {infoTooltip ? <InfoTooltip title={infoTooltip} /> : null}\n        </InputLabel>\n      ) : undefined}\n      <CustomRoot error={false}>\n        <div\n          style={{\n            display: 'flex',\n            gap: '8px',\n            flexDirection: 'column',\n            marginBottom: '24px',\n          }}\n        >\n          {expansions.map((expansion) => (\n            <div\n              style={{ display: 'flex', alignItems: 'center' }}\n              key={expansion.id}\n            >\n              <div\n                style={{ position: 'relative', display: 'flex', gap: '32px' }}\n              >\n                <InputText\n                  required\n                  label={t('reference term')}\n                  placeholder={t('reference term')}\n                  value={expansion.referenceTerm}\n                  onChange={(value): void => {\n                    updateTerms(expansion.id, value as string, expansion.terms)\n                  }}\n                  showError={showError}\n                />\n                <TextFieldTags\n                  required\n                  label={t('expansion terms')}\n                  fullWidth={fullWidth}\n                  onChange={(terms): void => {\n                    updateTerms(expansion.id, expansion.referenceTerm, terms)\n                  }}\n                  value={expansion.terms}\n                  placeholder={placeholder}\n                  additionalValidator={(value: string[]): string => {\n                    if (value.length !== [...new Set(value)].length)\n                      return 'expansionTermsDuplicate'\n                    return ''\n                  }}\n                  showError={showError}\n                />\n              </div>\n              <IconButton\n                onClick={(): void => removeTerms(expansion.id)}\n                style={{ margin: '24px 0 0 8px' }}\n              >\n                <IonIcon\n                  style={{ fontSize: '18px', color: '#424880' }}\n                  name=\"trash-outline\"\n                />\n              </IconButton>\n            </div>\n          ))}\n        </div>\n        <div\n          style={{ display: 'flex', justifyContent: 'right', marginRight: 44 }}\n        >\n          <Button\n            size=\"large\"\n            display=\"secondary\"\n            endIcon={<IonIcon name=\"add\" style={{ fontSize: 24 }} />}\n            onClick={(): void => addExpansion()}\n          >\n            {t('add')}\n          </Button>\n        </div>\n      </CustomRoot>\n      {Boolean(helperText) && (\n        <FormHelperText>\n          {Boolean(helperIcon) && (\n            <IonIcon\n              name={helperIcon}\n              style={{ fontSize: 18, marginRight: 2 }}\n            />\n          )}\n          {helperText}\n        </FormHelperText>\n      )}\n    </StyledFormControl>\n  )\n}\n\nexport default Expansion\n","import React from 'react'\nimport { useApiList, useResource } from '../../../hooks'\nimport ProportionalToAttributes, {\n  IProportionalToAttributesProps,\n} from './ProportionalToAttributes'\nimport { IOption } from '@elastic-suite/gally-admin-shared'\n\nconst rowsPerPage = 200\nconst sourceFieldFixedFilters = {\n  'metadata.entity': 'product',\n}\n\nfunction ProportionalToAttributesManager(\n  props: Omit<\n    IProportionalToAttributesProps,\n    'sourceFields' | 'boostImpactOptions'\n  >\n): JSX.Element {\n  const boostImpactOptionResource = useResource('BoostImpactOption')\n  const boostAttributeValueFieldOptionsResource = useResource(\n    'BoostAttributeValueFieldOption'\n  )\n\n  const [boostImpactOptionsResponse] = useApiList<IOption<string>>(\n    boostImpactOptionResource,\n    false,\n    rowsPerPage,\n    undefined,\n    undefined,\n    false,\n    true\n  )\n\n  const [boostAttributeValueFieldOptionsResponse] = useApiList<IOption<string>>(\n    boostAttributeValueFieldOptionsResource,\n    false,\n    rowsPerPage,\n    sourceFieldFixedFilters,\n    undefined,\n    false,\n    true\n  )\n\n  if (\n    !boostImpactOptionsResponse?.data ||\n    !boostAttributeValueFieldOptionsResponse?.data\n  ) {\n    return null\n  }\n\n  return (\n    <ProportionalToAttributes\n      sourceFields={\n        boostAttributeValueFieldOptionsResponse.data['hydra:member']\n      }\n      boostImpactOptions={boostImpactOptionsResponse.data['hydra:member']}\n      {...props}\n    />\n  )\n}\n\nexport default ProportionalToAttributesManager\n","import React from 'react'\nimport RadioGroup from '../../atoms/form/RadioGroup'\nimport InputText from '../../atoms/form/InputText'\nimport DropDown from '../../atoms/form/DropDown'\nimport { IOptions } from '@elastic-suite/gally-admin-shared'\nimport { useTranslation } from 'next-i18next'\nimport { ProportionalToAttributesContainer } from './ProportionalToAttributes.styled'\nexport interface IProportionalToAttributesValue {\n  source_field_code?: string\n  boost_impact?: string\n  scale_factor: number\n}\n\nexport interface IProportionalToAttributesProps {\n  sourceFields: IOptions<string>\n  boostImpactOptions: IOptions<string>\n  value: IProportionalToAttributesValue\n  showError?: boolean\n  onChange?: (value: IProportionalToAttributesValue) => void\n}\n\nfunction ProportionalToAttributes({\n  value,\n  sourceFields,\n  boostImpactOptions,\n  showError,\n  onChange,\n}: IProportionalToAttributesProps): JSX.Element {\n  const {\n    source_field_code: sourceFieldCode,\n    boost_impact: boostImpact,\n    scale_factor: scaleFactor,\n  } = value\n  const { t } = useTranslation('boost')\n\n  function handleChange(\n    name: keyof IProportionalToAttributesValue,\n    newValue: string | number\n  ): void {\n    if (onChange)\n      onChange({\n        ...value,\n        [name]: newValue,\n      })\n  }\n\n  return (\n    <ProportionalToAttributesContainer>\n      <DropDown\n        options={sourceFields}\n        label={t('boostConfig.sourceField')}\n        value={sourceFieldCode}\n        onChange={(value: string): void =>\n          handleChange('source_field_code', value)\n        }\n        required\n        showError={showError}\n        sx={{ minWidth: '230px' }}\n        placeholder={t('boostConfig.sourceField.placeholder')}\n        fullWidth\n      />\n\n      <RadioGroup\n        options={boostImpactOptions}\n        value={boostImpact || null}\n        onChange={(value: string): void => handleChange('boost_impact', value)}\n        label={t('boostConfig.boostImpact')}\n        required\n        showError={showError}\n      />\n\n      <InputText\n        type=\"number\"\n        label={t('boostConfig.scaleFactor')}\n        required\n        inputProps={{\n          step: 'any',\n          min: 0,\n        }}\n        additionalValidator={(value: number): string => {\n          if (value <= 0) {\n            return 'scaleFactorWrongFormat'\n          }\n          return ''\n        }}\n        value={scaleFactor}\n        onChange={(value: number): void => handleChange('scale_factor', value)}\n        showError={showError}\n        infoTooltip={t('boostConfig.scaleFactorTooltip')}\n      />\n    </ProportionalToAttributesContainer>\n  )\n}\n\nexport default ProportionalToAttributes\n","import { styled } from '@mui/material'\n\nexport const ProportionalToAttributesContainer = styled('div')(({ theme }) => ({\n  display: 'flex',\n  flexDirection: 'column',\n  gap: theme.spacing(1),\n}))\n","import React, { ReactNode, useCallback, useState } from 'react'\n\nimport { useApiFilters } from '../../../hooks'\nimport {\n  DataContentType,\n  IFieldConfig,\n  IHydraMember,\n  IHydraResponse,\n  IResource,\n} from '@elastic-suite/gally-admin-shared'\n\nimport Filters from '../../molecules/Filters/Filters'\n\ninterface IProps<T extends IHydraMember> {\n  activeFilters: Record<string, unknown>\n  apiData: IHydraResponse<T>\n  children?: ReactNode\n  onFilterChange: (values: Record<string, unknown>) => void\n  onSearch: (value: string) => void\n  resource: IResource\n  searchValue: string\n  showSearch?: boolean\n}\n\nfunction FiltersGuesser<T extends IHydraMember>(props: IProps<T>): JSX.Element {\n  const {\n    activeFilters,\n    apiData,\n    children,\n    onFilterChange,\n    onSearch,\n    resource,\n    searchValue,\n    showSearch,\n  } = props\n  const filters: IFieldConfig[] = useApiFilters(apiData, resource)\n\n  const initValues = useCallback(\n    (\n      fallback: Record<string, unknown | unknown[]> = {}\n    ): Record<string, unknown | unknown[]> =>\n      Object.fromEntries(\n        filters.map((filter) => [\n          filter.id,\n          fallback[filter.id] ??\n            (filter.multiple\n              ? []\n              : filter.input === DataContentType.RANGE\n              ? ['', '']\n              : ''),\n        ])\n      ),\n    [filters]\n  )\n  const [filterValues, setFilterValues] = useState(initValues(activeFilters))\n\n  function handleApply(): void {\n    onFilterChange(filterValues)\n  }\n\n  function handleClear(filter: IFieldConfig, value: unknown): void {\n    setFilterValues((prevState) => ({\n      ...prevState,\n      [filter.id]: value,\n    }))\n    onFilterChange({\n      ...activeFilters,\n      [filter.id]: value,\n    })\n  }\n\n  function handleClearAll(): void {\n    setFilterValues(initValues())\n    onSearch('')\n    onFilterChange({})\n  }\n\n  function handleFilterChange(filter: IFieldConfig, value: unknown): void {\n    setFilterValues((prevState) => ({\n      ...prevState,\n      [filter.id]: value,\n    }))\n  }\n\n  return (\n    <Filters\n      activeValues={activeFilters}\n      filters={filters}\n      filterValues={filterValues}\n      onApply={handleApply}\n      onClear={handleClear}\n      onClearAll={handleClearAll}\n      onFilterChange={handleFilterChange}\n      onSearch={onSearch}\n      searchValue={searchValue}\n      showSearch={showSearch}\n    >\n      {children}\n    </Filters>\n  )\n}\n\nexport default FiltersGuesser\n","import React, { FormEvent, ReactNode, useContext, useState } from 'react'\nimport { useTranslation } from 'next-i18next'\nimport { Collapse, InputAdornment, Stack } from '@mui/material'\nimport {\n  IFieldConfig,\n  IFieldOptions,\n  IOption,\n  rangeSeparator,\n} from '@elastic-suite/gally-admin-shared'\n\nimport { optionsContext } from '../../../contexts'\n\nimport Button from '../../atoms/buttons/Button'\nimport Chip from '../../atoms/Chip/Chip'\nimport InputTextWithoutError from '../../atoms/form/InputTextWithoutError'\nimport IonIcon from '../../atoms/IonIcon/IonIcon'\nimport FieldGuesser from '../../stateful/FieldGuesser/FieldGuesser'\n\nimport {\n  Container,\n  ContentForm,\n  FacetteBox,\n  FilterBox,\n  FilterSecondaryButton,\n  FilterTertiaryButton,\n  FiltersBox,\n  FiltersPaper,\n  HeaderBox,\n  SearchBox,\n} from './Filters.styled'\n\ninterface IActiveFilter {\n  filter: IFieldConfig\n  label: string\n  value: unknown\n}\n\ninterface IProps {\n  activeValues: Record<string, unknown>\n  children?: ReactNode\n  filters: IFieldConfig[]\n  filterValues: Record<string, unknown>\n  onApply: () => void\n  onClear: (filter: IFieldConfig, value: unknown) => void\n  onClearAll: () => void\n  onFilterChange: (filter: IFieldConfig, value: unknown) => void\n  onSearch: (value: string) => void\n  searchValue?: string\n  showSearch?: boolean\n}\n\nfunction getActiveFilterLabel(\n  filter: IFieldConfig,\n  value: unknown,\n  fieldOptions: IFieldOptions\n): string {\n  const options =\n    filter?.options ?? fieldOptions.get(filter?.field.property['@id']) ?? []\n\n  if (filter.id.endsWith('[between]')) {\n    value = (value as (string | number)[]).join('-')\n  }\n\n  const option: IOption<unknown> = options.find((option) => {\n    return option.value === value\n  })\n\n  if (option) {\n    return `${filter?.label}: ${option.label}`\n  }\n  return `${filter?.label}: ${value}`\n}\n\nfunction getActiveFilter(\n  filter: IFieldConfig,\n  value: unknown,\n  fieldOptions: IFieldOptions\n): { filter: IFieldConfig; label: string; value: unknown } {\n  return {\n    filter,\n    label: getActiveFilterLabel(filter, value, fieldOptions),\n    value,\n  }\n}\n\nfunction Filters(props: IProps): JSX.Element {\n  const {\n    activeValues,\n    children,\n    filters,\n    filterValues,\n    onApply,\n    onClear,\n    onClearAll,\n    onFilterChange,\n    onSearch,\n    searchValue,\n    showSearch,\n  } = props\n  const [open, setOpen] = useState(false)\n  const { t } = useTranslation('api')\n  const { fieldOptions } = useContext(optionsContext)\n\n  const filterMap = new Map<string, IFieldConfig>(\n    filters.map((filter) => [filter.id, filter])\n  )\n\n  const activeFilters = Object.entries(activeValues)\n    .filter(([_, value]) => value !== '')\n    .reduce<IActiveFilter[]>((acc, [id, value]) => {\n      const filter = filterMap.get(id)\n      if (filter) {\n        if (filter.id.endsWith('[between]')) {\n          const val = value as (string | number)[]\n          if (val[0] || val[1]) {\n            acc.push(getActiveFilter(filter, val, fieldOptions))\n          }\n        } else if (filter.multiple) {\n          return acc.concat(\n            (value as unknown[]).map((v) =>\n              getActiveFilter(filter, v, fieldOptions)\n            )\n          )\n        } else {\n          acc.push(\n            getActiveFilter(\n              filter,\n              typeof value === 'boolean'\n                ? value\n                  ? t('filter.yes')\n                  : t('filter.no')\n                : value,\n              fieldOptions\n            )\n          )\n        }\n      }\n      return acc\n    }, [])\n\n  function toggleFilters(): void {\n    setOpen((prevState) => !prevState)\n  }\n\n  function handleClear(filter: IFieldConfig, value: unknown): void {\n    const filterValue = filterValues[filter.id]\n    if (filter.multiple) {\n      onClear(\n        filter,\n        (filterValue as unknown[]).filter((v) => v !== value)\n      )\n    } else {\n      onClear(filter, '')\n    }\n  }\n\n  function handleChange(name: string, value: unknown): void {\n    const filter = filters.find((filter) => filter.id === name)\n    if (filter) {\n      onFilterChange(filter, value)\n    }\n  }\n\n  function handleSubmit(event: FormEvent<HTMLFormElement>): void {\n    event.preventDefault()\n    onApply()\n  }\n\n  function chipFilterLabelWithTraduction(label: string): string {\n    const [key, value] = label.split(':')\n    return `${t(key)}: ${value}`\n  }\n\n  return (\n    <FiltersPaper elevation={0}>\n      <HeaderBox>\n        {showSearch ? (\n          <SearchBox>\n            <InputTextWithoutError\n              endAdornment={\n                <InputAdornment position=\"end\">\n                  <IonIcon name=\"search\" />\n                </InputAdornment>\n              }\n              onChange={onSearch}\n              placeholder={t('filters.search')}\n              style={{ width: '220px' }}\n              value={searchValue}\n            />\n          </SearchBox>\n        ) : null}\n        <FilterBox>\n          <FilterSecondaryButton\n            onClick={toggleFilters}\n            endIcon={<ion-icon name=\"filter-outline\" />}\n          >\n            {t('filters.filter')}\n            {activeFilters.length > 0 && ` (${activeFilters.length})`}\n          </FilterSecondaryButton>\n          <FacetteBox>\n            {activeFilters.map(({ filter, label, value }) => (\n              <Chip\n                key={`${filter.id}${rangeSeparator}${value}`}\n                label={chipFilterLabelWithTraduction(label)}\n                onDelete={(): void => handleClear(filter, value)}\n              />\n            ))}\n          </FacetteBox>\n          <FilterTertiaryButton\n            onClick={onClearAll}\n            endIcon={<ion-icon name=\"reload-outline\" />}\n          >\n            {t('filters.clearAll')}\n          </FilterTertiaryButton>\n        </FilterBox>\n      </HeaderBox>\n      <Collapse in={open} timeout=\"auto\">\n        <ContentForm onSubmit={handleSubmit}>\n          <FiltersBox>\n            {filters.map((filter) => (\n              <FieldGuesser\n                key={filter.id}\n                {...filter}\n                onChange={handleChange}\n                showError\n                label={t(filter.label)}\n                useDropdownBoolean\n                value={filterValues[filter.id]}\n              />\n            ))}\n          </FiltersBox>\n          <Stack spacing={1} direction=\"row\">\n            <Button\n              type=\"submit\"\n              endIcon={<ion-icon name=\"checkmark-done-outline\" />}\n            >\n              {t('filters.apply')}\n            </Button>\n            <Button\n              display=\"tertiary\"\n              onClick={onClearAll}\n              endIcon={<ion-icon name=\"reload-outline\" />}\n            >\n              {t('filters.clearAll')}\n            </Button>\n          </Stack>\n        </ContentForm>\n      </Collapse>\n      {Boolean(children) && <Container>{children}</Container>}\n    </FiltersPaper>\n  )\n}\n\nexport default Filters\n","import { Paper, styled } from '@mui/material'\n\nimport {\n  SecondaryButton,\n  TertiaryButton,\n} from '../../atoms/buttons/Button.styled'\n\nexport const FiltersPaper = styled(Paper)(({ theme }) => ({\n  border: `1px solid ${theme.palette.colors.neutral[300]}`,\n  marginBottom: theme.spacing(3),\n}))\n\nexport const HeaderBox = styled('div')(({ theme }) => ({\n  display: 'flex',\n  [theme.breakpoints.down('md')]: {\n    flexDirection: 'column',\n  },\n}))\n\nexport const SearchBox = styled('div')(({ theme }) => ({\n  borderColor: theme.palette.colors.neutral[300],\n  borderStyle: 'solid',\n  borderWidth: '0 1px 0 0',\n  padding: theme.spacing(2),\n  display: 'flex',\n  alignItems: 'center',\n  [theme.breakpoints.down('md')]: {\n    borderWidth: 0,\n  },\n}))\n\nexport const FilterBox = styled('div')(({ theme }) => ({\n  borderColor: theme.palette.colors.neutral[300],\n  borderStyle: 'solid',\n  borderWidth: 0,\n  alignItems: 'center',\n  display: 'flex',\n  flex: 1,\n  padding: theme.spacing(2),\n  [theme.breakpoints.down('md')]: {\n    borderWidth: '1px 0 0 0',\n  },\n}))\n\nexport const FilterSecondaryButton = styled(SecondaryButton)(() => ({\n  flexShrink: 0,\n  whiteSpace: 'nowrap',\n}))\n\nexport const FacetteBox = styled('div')(({ theme }) => ({\n  display: 'flex',\n  flexWrap: 'wrap',\n  columnGap: theme.spacing(1),\n  rowGap: theme.spacing(1),\n  paddingLeft: theme.spacing(2),\n  paddingRight: theme.spacing(2),\n}))\n\nexport const FilterTertiaryButton = styled(TertiaryButton)(() => ({\n  marginLeft: 'auto',\n  whiteSpace: 'nowrap',\n}))\n\nexport const ContentForm = styled('form')(({ theme }) => ({\n  borderColor: theme.palette.colors.neutral[300],\n  borderStyle: 'solid',\n  borderWidth: '1px 0 0 0',\n  paddingBottom: theme.spacing(2),\n  paddingLeft: theme.spacing(3),\n  paddingRight: theme.spacing(3),\n  paddingTop: theme.spacing(4),\n}))\n\nexport const FiltersBox = styled('div')(({ theme }) => ({\n  display: 'flex',\n  flexWrap: 'wrap',\n  columnGap: theme.spacing(3),\n  rowGap: theme.spacing(3),\n  paddingBottom: theme.spacing(3),\n}))\n\nexport const Container = styled('div')(({ theme }) => ({\n  borderColor: theme.palette.colors.neutral[300],\n  borderStyle: 'solid',\n  borderWidth: '1px 0 0 0',\n  paddingBottom: theme.spacing(2),\n  paddingLeft: theme.spacing(3),\n  paddingRight: theme.spacing(3),\n  paddingTop: theme.spacing(2),\n}))\n","import React, {\n  ChangeEvent,\n  FunctionComponent,\n  SyntheticEvent,\n  useRef,\n  useState,\n} from 'react'\nimport {\n  IField,\n  IFieldConfig,\n  IFieldGuesserProps,\n  IHydraMember,\n  IResource,\n  IResourceEditableMassReplace,\n  IResourceEditableMassUpdate,\n  ITableConfig,\n  ITableRow,\n  defaultPageSize,\n} from '@elastic-suite/gally-admin-shared'\n\nimport { useApiEditableFieldOptions, useApiHeaders } from '../../../hooks'\n\nimport StickyBar from '../../molecules/CustomTable/StickyBar/StickyBar'\nimport PagerTable from '../../organisms/PagerTable/PagerTable'\n\nimport FieldGuesser from '../FieldGuesser/FieldGuesser'\nimport TableStickyBar from '../TableStickyBar/TableStickyBar'\n\ninterface IProps<T extends IHydraMember> {\n  Field?: FunctionComponent<IFieldGuesserProps>\n  count?: number\n  currentPage?: number\n  diffRows?: ITableRow[]\n  onMassupdate: IResourceEditableMassUpdate<T>\n  onMassreplace: IResourceEditableMassReplace<T>\n  onPageChange: (page: number) => void\n  onRowUpdate?: (\n    id: string | number,\n    name: string,\n    value: boolean | number | string,\n    event: SyntheticEvent,\n    showError?: boolean\n  ) => void\n  resource: IResource\n  rowsPerPage?: number\n  rowsPerPageOptions?: number[]\n  onRowsPerPageChange?: (\n    event: ChangeEvent<HTMLTextAreaElement | HTMLInputElement>\n  ) => void\n  noResult?: boolean\n  tableConfigs?: ITableConfig[]\n  tableRows: ITableRow[]\n  hasEditLink?: boolean\n  editLink?: string\n  dataTestId?: string\n}\n\nfunction TableGuesser<T extends IHydraMember>(props: IProps<T>): JSX.Element {\n  const {\n    Field,\n    count,\n    currentPage,\n    diffRows,\n    onMassupdate,\n    onMassreplace,\n    onPageChange,\n    onRowUpdate,\n    resource,\n    rowsPerPage,\n    rowsPerPageOptions,\n    onRowsPerPageChange,\n    noResult,\n    tableConfigs,\n    tableRows,\n    hasEditLink,\n    editLink,\n    dataTestId,\n  } = props\n  const tableHeaders = useApiHeaders(resource) as IFieldConfig[]\n  const fieldOptions = useApiEditableFieldOptions(resource)\n\n  const tableRef = useRef<HTMLDivElement>()\n  const [selectedField, setSelectedField] = useState<IField | ''>('')\n  const [selectedValue, setSelectedValue] = useState<boolean | ''>('')\n  const [selectedRows, setSelectedRows] = useState<(string | number)[]>([])\n\n  const withSelection =\n    selectedRows?.length !== undefined &&\n    tableHeaders.some((header) => header?.editable)\n  const activeRows = tableRows.filter(\n    (_, index) => !(tableConfigs?.[index]?.selection.disabled ?? false)\n  )\n  const massiveSelectionState =\n    withSelection && selectedRows\n      ? selectedRows.length === activeRows.length\n      : false\n  const massiveSelectionIndeterminate =\n    withSelection && selectedRows.length > 0\n      ? selectedRows.length < activeRows.length\n      : false\n\n  function handleSelection(rowIds: (string | number)[] | boolean): void {\n    if (rowIds instanceof Array) {\n      setSelectedRows(rowIds)\n    } else if (rowIds) {\n      setSelectedRows(activeRows.map((row) => row.id))\n    } else {\n      setSelectedRows([])\n    }\n  }\n\n  function handleChangeField(id: IField | ''): void {\n    setSelectedField(id)\n  }\n\n  function handleChangeValue(_: string, value: boolean | ''): void {\n    setSelectedValue(value)\n  }\n\n  function handleApply(): void {\n    if (selectedField !== '') {\n      if (onMassupdate) {\n        onMassupdate(selectedRows, {\n          [selectedField.title]: selectedValue,\n        } as unknown as Partial<T>)\n      } else if (onMassreplace) {\n        onMassreplace(selectedRows, {\n          [selectedField.title]: selectedValue,\n        } as unknown as Omit<T, '@id' | '@type'>)\n      }\n    }\n  }\n\n  function handleRowUpdate(\n    id: string | number,\n    name: string,\n    value: boolean | number | string,\n    event: SyntheticEvent\n  ): void {\n    const field = tableHeaders.find((field) => field.name === name)\n    onRowUpdate(id, name, value, event, field?.showError)\n  }\n  return (\n    <>\n      <PagerTable\n        Field={Field}\n        count={count}\n        currentPage={currentPage ?? 0}\n        diffRows={diffRows}\n        massiveSelectionState={massiveSelectionState}\n        massiveSelectionIndeterminate={massiveSelectionIndeterminate}\n        onPageChange={onPageChange}\n        onRowUpdate={handleRowUpdate}\n        onSelection={handleSelection}\n        ref={tableRef}\n        rowsPerPage={rowsPerPage ?? defaultPageSize}\n        rowsPerPageOptions={rowsPerPageOptions ?? []}\n        selectedRows={selectedRows}\n        tableConfigs={tableConfigs}\n        tableHeaders={tableHeaders}\n        tableRows={tableRows}\n        onRowsPerPageChange={onRowsPerPageChange}\n        noResult={noResult}\n        withSelection={withSelection}\n        hasEditLink={hasEditLink}\n        editLink={editLink}\n        dataTestId={dataTestId}\n      />\n      <StickyBar positionRef={tableRef} show={selectedRows.length > 0}>\n        <TableStickyBar\n          field={selectedField}\n          fieldOptions={fieldOptions}\n          fieldValue={selectedValue}\n          massiveSelectionState={massiveSelectionState}\n          massiveSelectionIndeterminate={massiveSelectionIndeterminate}\n          onApply={handleApply}\n          onChangeField={handleChangeField}\n          onChangeValue={handleChangeValue}\n          onSelection={handleSelection}\n          selectedRows={selectedRows}\n          withSelection={withSelection}\n        />\n      </StickyBar>\n    </>\n  )\n}\n\nTableGuesser.defaultProps = {\n  Field: FieldGuesser,\n}\n\nexport default TableGuesser\n","import React, { MutableRefObject, ReactNode, useEffect, useRef } from 'react'\nimport { Box, styled } from '@mui/system'\n\nimport { selectSidebarState, useAppSelector } from '../../../../store'\n\nconst StickyContainer = styled(Box)({\n  display: 'flex',\n  position: 'fixed',\n  bottom: '0',\n  background:\n    'linear-gradient(0deg, rgba(21, 26, 71, 0.1) 0%, rgba(21, 26, 71, 0) 110.27%)',\n  zIndex: '4',\n  height: '112px',\n  width: '100%',\n})\n\nconst StickyActions = styled(Box)(({ theme }) => ({\n  display: 'flex',\n  backgroundColor: theme.palette.colors.white,\n  minHeight: '64px',\n  width: '100%',\n  margin: '0px 16px 16px 16px',\n  border: 'solid',\n  borderColor: theme.palette.colors.neutral[300],\n  borderWidth: '1px',\n  boxShadow:\n    '0px -8px 8px rgba(226, 230, 243, 0.2), 0px 8px 8px rgba(107, 113, 166, 0.2), 4px 4px 14px rgba(226, 230, 243, 0.5)',\n  borderRadius: '8px',\n  alignItems: 'center',\n  boxSizing: 'border-box',\n  padding: `${theme.spacing(1.5)} ${theme.spacing(4)}`,\n}))\n\nfunction getStickyBarStyles(positionRef?: MutableRefObject<HTMLDivElement>): {\n  left: string\n  width: string\n} {\n  let left = 0\n  let width = ''\n  if (positionRef?.current) {\n    const positions = positionRef.current.getBoundingClientRect()\n    left = positions.left - 32\n    width = `${positions.width + 64}px`\n  }\n  return { left: `${left}px`, width }\n}\n\ninterface IProps {\n  children: ReactNode\n  show: boolean\n  positionRef?: MutableRefObject<HTMLDivElement>\n}\n\nfunction StickyBar(props: IProps): JSX.Element {\n  const { children, positionRef, show } = props\n  const ref = useRef<HTMLDivElement>()\n\n  const sidebarState = useAppSelector(selectSidebarState)\n\n  // Recalculate styles when the sidebar is opened or closed\n  useEffect(() => {\n    if (ref.current) {\n      const { left, width } = getStickyBarStyles(positionRef)\n      ref.current.style.left = left\n      ref.current.style.width = width\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [positionRef, sidebarState]) // The additionnal dependency is needed here\n\n  // Recalculate styles when the window is resized\n  useEffect(() => {\n    function handleResize(): void {\n      if (ref.current) {\n        const { left, width } = getStickyBarStyles(positionRef)\n        ref.current.style.left = left\n        ref.current.style.width = width\n      }\n    }\n    if (typeof window !== 'undefined') {\n      window.addEventListener('resize', handleResize)\n      return () => window.removeEventListener('resize', handleResize)\n    }\n  }, [positionRef])\n\n  if (!show) {\n    return null\n  }\n\n  return (\n    <StickyContainer\n      data-testid=\"sticky-bar\"\n      ref={ref}\n      style={getStickyBarStyles(positionRef)}\n    >\n      <StickyActions>{children}</StickyActions>\n    </StickyContainer>\n  )\n}\n\nexport default StickyBar\n","import React, { ChangeEvent, MutableRefObject, forwardRef } from 'react'\nimport { styled } from '@mui/system'\n\nimport Pagination from '../../molecules/CustomTable/Pagination/Pagination'\n\nimport CustomTable, { ICustomTableProps } from '../CustomTable/CustomTable'\n\nimport { useTranslation } from 'next-i18next'\n\nconst Root = styled('div')(({ theme }) => ({\n  borderRadius: theme.shape.borderRadius,\n  border: `1px solid ${theme.palette.colors.neutral[300]}`,\n}))\n\nconst CustomNoResult = styled('div')(({ theme }) => ({\n  fontFamily: 'var(--gally-font)',\n  fontWeight: 500,\n  fontSize: 14,\n  lineHeight: '20px',\n  color: theme.palette.colors.neutral[900],\n  textAlign: 'center',\n  padding: theme.spacing(3),\n}))\n\ninterface IProps extends ICustomTableProps {\n  count: number\n  currentPage: number\n  noResult?: boolean\n  onPageChange: (page: number) => void\n  onRowsPerPageChange?: (\n    event: ChangeEvent<HTMLTextAreaElement | HTMLInputElement>\n  ) => void\n  rowsPerPage: number\n  rowsPerPageOptions: number[]\n  dataTestId?: string\n}\n\nfunction PagerTable(\n  props: IProps,\n  ref: MutableRefObject<HTMLDivElement>\n): JSX.Element {\n  const {\n    currentPage,\n    onPageChange,\n    onRowsPerPageChange,\n    rowsPerPage,\n    rowsPerPageOptions,\n    count,\n    noResult,\n    dataTestId,\n    ...tableProps\n  } = props\n  const { t } = useTranslation('common')\n\n  return (\n    <Root ref={ref}>\n      <Pagination\n        currentPage={currentPage}\n        onPageChange={onPageChange}\n        onRowsPerPageChange={onRowsPerPageChange}\n        rowsPerPage={rowsPerPage}\n        rowsPerPageOptions={rowsPerPageOptions}\n        count={count}\n        dataTestId={dataTestId ? `${dataTestId}TablePagination` : null}\n      />\n      <CustomTable {...tableProps} />\n      {noResult ? <CustomNoResult>{t('no.result')}</CustomNoResult> : null}\n      <Pagination\n        currentPage={currentPage}\n        isBottom\n        onPageChange={onPageChange}\n        onRowsPerPageChange={onRowsPerPageChange}\n        rowsPerPage={rowsPerPage}\n        rowsPerPageOptions={rowsPerPageOptions}\n        count={count}\n      />\n    </Root>\n  )\n}\n\nexport default forwardRef(PagerTable)\n","import React, { ChangeEvent, FormEvent, useState } from 'react'\nimport { useTranslation } from 'next-i18next'\nimport { Box, Checkbox } from '@mui/material'\nimport { styled } from '@mui/system'\n\nimport {\n  IField,\n  IOptions,\n  getFieldHeader,\n} from '@elastic-suite/gally-admin-shared'\n\nimport Button from '../../atoms/buttons/Button'\nimport DropDownWithoutError from '../../atoms/form/DropDownWithoutError'\n\nimport FieldGuesser from '../FieldGuesser/FieldGuesser'\nimport Form from '../../atoms/form/Form'\n\nconst ActionsButtonsContainer = styled(Box)({\n  marginLeft: 'auto',\n})\n\ninterface IProps {\n  field: IField | ''\n  fieldOptions: IOptions<IField>\n  fieldValue: unknown\n  massiveSelectionState?: boolean\n  massiveSelectionIndeterminate?: boolean\n  onApply?: () => void\n  onChangeField?: (value: IField | '') => void\n  onChangeValue?: (name: string, value: unknown) => void\n  onSelection?: (checked: boolean) => void\n  selectedRows?: (string | number)[]\n  withSelection?: boolean\n}\n\nfunction TableStickyBar(props: IProps): JSX.Element {\n  const {\n    field,\n    fieldOptions,\n    fieldValue,\n    massiveSelectionState,\n    massiveSelectionIndeterminate,\n    onApply,\n    onChangeField,\n    onChangeValue,\n    onSelection,\n    selectedRows,\n    withSelection,\n  } = props\n  const { t } = useTranslation('common')\n  const { t: tApi } = useTranslation('api')\n  const header = field ? getFieldHeader(field, tApi) : null\n\n  function handleSubmit(\n    event: FormEvent<HTMLFormElement>,\n    formIsValid: boolean\n  ): void {\n    event.preventDefault()\n    if (!formIsValid) setShowError(true)\n    else onApply()\n  }\n\n  function handleSelection(event: ChangeEvent<HTMLInputElement>): void {\n    onSelection(event.target.checked)\n  }\n\n  function handleCancelSelection(): void {\n    onSelection(false)\n  }\n\n  const [showError, setShowError] = useState(false)\n\n  return (\n    <Form\n      onSubmit={handleSubmit}\n      style={{\n        display: 'flex',\n        alignItems: 'center',\n        flex: 1,\n      }}\n    >\n      {Boolean(withSelection) && (\n        <Checkbox\n          indeterminate={massiveSelectionIndeterminate}\n          checked={massiveSelectionState}\n          onChange={handleSelection}\n        />\n      )}\n      {t('table.selected', { count: selectedRows.length })}\n      <DropDownWithoutError\n        onChange={onChangeField}\n        options={fieldOptions}\n        style={{ marginLeft: '32px', marginRight: '16px' }}\n        value={field}\n      />\n      {field !== '' && (\n        <FieldGuesser\n          {...header}\n          label=\"\"\n          onChange={onChangeValue}\n          useDropdownBoolean\n          value={fieldValue}\n          showError={showError}\n        />\n      )}\n      <ActionsButtonsContainer>\n        <Button display=\"tertiary\" onClick={handleCancelSelection}>\n          {t('table.cancel')}\n        </Button>\n        <Button sx={{ marginLeft: 1 }} type=\"submit\">\n          {t('table.apply')}\n        </Button>\n      </ActionsButtonsContainer>\n    </Form>\n  )\n}\n\nexport default TableStickyBar\n","import React, { ReactNode } from 'react'\nimport { Typography, TypographyProps } from '@mui/material'\nimport { styled } from '@mui/system'\nimport Head from 'next/head'\nimport { getHeadTitle } from '@elastic-suite/gally-admin-shared'\n\nconst Root = styled('div')(() => ({\n  display: 'flex',\n}))\n\nconst StickyRoot = styled(Root)(({ theme }) => ({\n  position: 'sticky',\n  top: '84px',\n  backgroundColor: theme.palette.background.page,\n  zIndex: 5,\n  margin: '-10px 0',\n  padding: '10px 0',\n}))\n\nconst CustomTypography = styled(Typography)(({ theme }) => ({\n  position: 'relative',\n  marginBottom: '48px',\n  flex: '1',\n  color: theme.palette.colors.neutral['900'],\n\n  '&:after': {\n    content: '\"\"',\n    display: 'block',\n    position: 'absolute',\n    width: '56px',\n    height: '4px',\n    left: '0',\n    bottom: '-12px',\n    background: theme.palette.primary.main,\n    borderRadius: '2px',\n  },\n}))\n\ninterface IProps extends TypographyProps {\n  children?: ReactNode\n  sticky?: boolean\n  title: string\n}\n\nfunction PageTitle(props: IProps): JSX.Element {\n  const { children, sticky, title, ...typographyProps } = props\n  const RootComponent = sticky ? StickyRoot : Root\n\n  return (\n    <>\n      <Head>\n        <title>{getHeadTitle(title)}</title>\n      </Head>\n      <RootComponent>\n        {title ? (\n          <CustomTypography {...typographyProps}>{title}</CustomTypography>\n        ) : null}\n        {Boolean(children) && <div>{children}</div>}\n      </RootComponent>\n    </>\n  )\n}\n\nPageTitle.defaultProps = {\n  variant: 'h1',\n}\n\nexport default PageTitle\n","import React, { ReactNode, useContext } from 'react'\nimport { Box } from '@mui/system'\n\nimport { catalogContext } from '../../../contexts'\n\ninterface IProps {\n  children: ReactNode\n  placeholder: string\n}\n\nfunction Placeholder(props: IProps): JSX.Element {\n  const { children, placeholder } = props\n  const { localizedCatalogIdWithDefault } = useContext(catalogContext)\n\n  return localizedCatalogIdWithDefault ? (\n    <>{children}</>\n  ) : (\n    <Box\n      sx={{\n        fontSize: '12px',\n        fontFamily: 'var(--gally-font)',\n        lineHeight: '18px',\n        padding: '16px 0  0 16px',\n        color: 'colors.neutral.600',\n      }}\n    >\n      {placeholder}\n    </Box>\n  )\n}\n\nexport default Placeholder\n","import React from 'react'\nimport { styled } from '@mui/system'\n\nimport {\n  ICatalog,\n  firstLetterUppercase,\n} from '@elastic-suite/gally-admin-shared'\n\nimport PopInCatalogs from './PopInCatalogs'\n\nconst CustomRoot = styled('div')(({ theme }) => ({\n  gap: theme.spacing(1),\n  display: 'flex',\n  flexDirection: 'row',\n  flexWrap: 'wrap',\n}))\n\nconst CustomLanguage = styled('div')(({ theme }) => ({\n  textAlign: 'center',\n  color: theme.palette.colors.neutral[900],\n  lineHeight: '18px',\n  paddingTop: theme.spacing(0.5),\n  paddingBottom: theme.spacing(0.5),\n  paddingRight: theme.spacing(1.5),\n  paddingLeft: theme.spacing(1.5),\n  fontSize: '12px',\n  fontWeight: '600',\n  fontFamily: 'var(--gally-font)',\n  background: theme.palette.colors.neutral[300],\n  borderRadius: '99px',\n}))\n\ninterface IProps {\n  language: string[]\n  limit: boolean\n  content?: ICatalog[]\n  order?: number\n}\nconst NB_ACTIVE_LOCALES_BY_WEBSITE = 5\n\nfunction Language({ language, order, limit, content }: IProps): JSX.Element {\n  const newLanguage = [...new Set(language)]\n\n  return (\n    <CustomRoot>\n      {newLanguage\n        ? newLanguage.map((item: string, key: number) => (\n            <div key={item}>\n              {limit === true ? (\n                key === NB_ACTIVE_LOCALES_BY_WEBSITE ? (\n                  <div>\n                    <PopInCatalogs\n                      content={content[order]}\n                      title={`+${\n                        newLanguage.length - NB_ACTIVE_LOCALES_BY_WEBSITE\n                      }`}\n                    />\n                  </div>\n                ) : (\n                  key < 5 && (\n                    <CustomLanguage key={item}>\n                      {firstLetterUppercase(item)}\n                    </CustomLanguage>\n                  )\n                )\n              ) : (\n                <CustomLanguage key={item}>\n                  {firstLetterUppercase(item)}\n                </CustomLanguage>\n              )}\n            </div>\n          ))\n        : null}\n    </CustomRoot>\n  )\n}\n\nexport default Language\n","import React, { useState } from 'react'\nimport { Dialog } from '@mui/material'\nimport { styled } from '@mui/system'\nimport { ICatalog, getUniqueLocalName } from '@elastic-suite/gally-admin-shared'\n\nimport IonIcon from '../IonIcon/IonIcon'\nimport TitleScope from '../scope/TitleScope'\nimport NbActiveLocales from '../scope/NbActiveLocales'\nimport Language from '../scope/Language'\n\nconst CustomClose = styled('div')(({ theme }) => ({\n  position: 'absolute',\n  display: 'flex',\n  top: theme.spacing(2),\n  right: theme.spacing(2),\n  cursor: 'pointer',\n  transition: 'all 500ms',\n  padding: theme.spacing(1),\n  borderRadius: 8,\n  color: theme.palette.colors.neutral['900'],\n  '&:hover': {\n    background: theme.palette.colors.neutral['200'],\n  },\n}))\n\nconst CustumOtherLanguage = styled('div')(({ theme }) => ({\n  textAlign: 'center',\n  lineHeight: '18px',\n  paddingTop: theme.spacing(0.5),\n  paddingBottom: theme.spacing(0.5),\n  paddingRight: theme.spacing(1.5),\n  paddingLeft: theme.spacing(1.5),\n  fontSize: '12px',\n  fontWeight: '600',\n  fontFamily: 'var(--gally-font)',\n  background: theme.palette.colors.neutral[300],\n  borderRadius: '99px',\n  color: theme.palette.colors.secondary[600],\n  cursor: 'pointer',\n}))\n\nconst CustomRoot = styled('div')(({ theme }) => ({\n  width: '100%',\n  display: 'flex',\n  flexDirection: 'column',\n  gap: theme.spacing(3),\n  background: theme.palette.colors.white,\n  borderRadius: 8,\n}))\n\ninterface IProps {\n  content: ICatalog\n  title: string\n}\n\nfunction PopInCatalogs({ content, title }: IProps): JSX.Element {\n  const [open, setOpen] = useState(false)\n\n  function handleClickOpen(): void {\n    setOpen(true)\n  }\n\n  function handleClose(): void {\n    setOpen(false)\n  }\n\n  return (\n    <>\n      <CustumOtherLanguage onClick={handleClickOpen}>\n        {title}\n      </CustumOtherLanguage>\n      <Dialog\n        open={open}\n        onClose={handleClose}\n        aria-labelledby=\"alert-dialog-title\"\n        aria-describedby=\"alert-dialog-description\"\n      >\n        <CustomClose onClick={handleClose}>\n          <IonIcon name=\"close\" style={{ fontSize: '17.85px' }} />\n        </CustomClose>\n        <CustomRoot>\n          <TitleScope name={content.name} />\n          <NbActiveLocales number={getUniqueLocalName(content).length} />\n          <Language language={getUniqueLocalName(content)} limit={false} />\n        </CustomRoot>\n      </Dialog>\n    </>\n  )\n}\n\nexport default PopInCatalogs\n","import React from 'react'\nimport { styled } from '@mui/system'\n\nconst CustomTitleScope = styled('div')(({ theme }) => ({\n  color: theme.palette.colors.neutral[900],\n  lineHeight: '30px',\n  fontSize: '20px',\n  fontWeight: '600',\n  fontFamily: 'var(--gally-font)',\n}))\n\ninterface IProps {\n  name: string\n}\n\nfunction TitleScope({ name }: IProps): JSX.Element {\n  return <CustomTitleScope>{name}</CustomTitleScope>\n}\n\nexport default TitleScope\n","import React from 'react'\nimport { styled } from '@mui/system'\nimport { useTranslation } from 'next-i18next'\n\nconst CustomRoot = styled('div')(({ theme }) => ({\n  display: 'flex',\n  flexDirection: 'row',\n  gap: theme.spacing(1),\n  alignItems: 'baseline',\n}))\n\nconst CustomNbActiveLocales = styled('div')(({ theme }) => ({\n  color: theme.palette.colors.primary[400],\n  lineHeight: '62px',\n  fontSize: '48px',\n  fontWeight: '700',\n  fontFamily: 'var(--gally-font)',\n}))\n\nconst CustomTexteActiveLocales = styled('div')(({ theme }) => ({\n  color: theme.palette.colors.neutral[600],\n  lineHeight: '24px',\n  fontSize: '16px',\n  fontWeight: '400',\n  fontFamily: 'var(--gally-font)',\n}))\n\ninterface IProps {\n  number: number\n}\n\nfunction NbActiveLocales({ number }: IProps): JSX.Element {\n  const { t } = useTranslation('common')\n  return (\n    <CustomRoot>\n      <CustomNbActiveLocales>{number}</CustomNbActiveLocales>\n      <CustomTexteActiveLocales>\n        {t('catalog.activeLocale', { count: number })}\n      </CustomTexteActiveLocales>\n    </CustomRoot>\n  )\n}\n\nexport default NbActiveLocales\n","import React, { ReactNode, useEffect, useState } from 'react'\n\ninterface IProps {\n  children?: ReactNode\n  id: number\n  value: number\n}\n\nfunction SubTabPanel(props: IProps): JSX.Element {\n  const { children, id, value } = props\n  const [isLoaded, setIsLoaded] = useState(false)\n\n  useEffect(() => {\n    if (value === id) {\n      setIsLoaded(true)\n    }\n  }, [value, id])\n\n  return (\n    <div\n      style={{ width: '100%', display: id === value ? 'block' : 'none' }}\n      key={id}\n    >\n      {(value === id || Boolean(isLoaded)) && children}\n    </div>\n  )\n}\n\nexport default SubTabPanel\n","import React, { useState } from 'react'\nimport { keyframes, styled } from '@mui/system'\n\nimport { ITab } from '@elastic-suite/gally-admin-shared'\n\nimport SubTabPanel from './SubTabPanel'\n\nconst CustomRoot = styled('div')(({ theme }) => ({\n  display: 'flex',\n  gap: theme.spacing(4),\n}))\n\nconst CustumRootSubTabs = styled('div')({\n  border: '1px solid #E2E6F3',\n  borderRadius: 8,\n  display: 'flex',\n  flexDirection: 'column',\n  minWidth: '232px',\n  boxSizing: 'border-box',\n  height: 'max-content',\n})\n\nconst CustomSubTabs = styled('button')(({ theme }) => ({\n  padding: theme.spacing(1),\n  borderRadius: 8,\n  marginLeft: theme.spacing(2),\n  marginRight: theme.spacing(2),\n  fontSize: '14px',\n  lineHeight: '20px',\n  fontWeight: '500',\n  color: theme.palette.colors.neutral[600],\n  transition: 'all 500ms',\n  cursor: 'pointer',\n  background: 'transparent',\n  border: 0,\n  textAlign: 'left',\n  fontFamily: 'var(--gally-font)',\n\n  '&:nth-of-type(1)': {\n    marginTop: theme.spacing(2),\n  },\n\n  '&:nth-last-of-type(1)': {\n    marginBottom: theme.spacing(2),\n  },\n  '&:hover': {\n    backgroundColor: theme.palette.colors.secondary[100],\n  },\n}))\n\nconst CustomSubTabsActive = styled(CustomSubTabs)(({ theme }) => ({\n  color: theme.palette.colors.secondary[600],\n  position: 'relative',\n  '&::after': {\n    content: \"''\",\n    position: 'absolute',\n    right: '-16px',\n    top: '50%',\n    transform: 'translateY(-50%)',\n    height: '32px',\n    width: 3,\n    opacity: 0,\n    background: theme.palette.menu.active,\n    boxShadow: '-2px 0px 4px rgba(63, 50, 230, 0.2)',\n    borderRadius: '5px 0px 0px 5px',\n    animation: `${opacity} 1500ms forwards`,\n  },\n}))\n\nconst opacity = keyframes`\n  from {\n    opacity: 0;\n  }\n\n  to {\n    opacity: 1;\n  }\n`\n\ninterface IProps {\n  defaultActiveId: number\n  onChange?: (id: number) => void\n  tabs: ITab[]\n}\n\nfunction SubTabs(props: IProps): JSX.Element {\n  const { defaultActiveId, onChange, tabs } = props\n  const [activeId, setActiveId] = useState(defaultActiveId)\n\n  function handleChange(id: number): void {\n    setActiveId(id)\n    if (onChange) {\n      onChange(id)\n    }\n  }\n\n  return (\n    <CustomRoot>\n      <CustumRootSubTabs>\n        {tabs.map(({ label, id }) =>\n          id === activeId ? (\n            <CustomSubTabsActive\n              key={id}\n              onClick={(): void => handleChange(id)}\n            >\n              {label}\n            </CustomSubTabsActive>\n          ) : (\n            <CustomSubTabs key={id} onClick={(): void => handleChange(id)}>\n              {label}\n            </CustomSubTabs>\n          )\n        )}\n      </CustumRootSubTabs>\n      {tabs.map(({ Component, componentProps, id }) => (\n        <SubTabPanel key={id} id={id} value={activeId}>\n          <Component {...componentProps} active={id === activeId} />\n        </SubTabPanel>\n      ))}\n    </CustomRoot>\n  )\n}\n\nexport default SubTabs\n","import React, { useState } from 'react'\nimport { styled } from '@mui/system'\nimport Collapse from '@mui/material/Collapse'\nimport Box from '@mui/material/Box'\n\nimport { useUser } from '../../../hooks'\n\nimport CloseComponent from '../closeComponent/CloseComponent'\nimport IonIcon from '../IonIcon/IonIcon'\nimport FormatText from '../format/FormatText'\n\nimport UserMenuShow from './UserMenuShow'\n\nconst CustomUser = styled('div')(({ theme }) => ({\n  position: 'relative',\n  alignItems: 'center',\n  display: 'flex',\n  border: '1px solid',\n  borderRadius: 8,\n  padding: theme.spacing(1),\n  gap: theme.spacing(1),\n  borderColor: theme.palette.colors.neutral['300'],\n  cursor: 'pointer',\n  background: theme.palette.background.default,\n  transition: 'background 500ms',\n  zIndex: 999,\n  '&:hover': {\n    background: theme.palette.colors.neutral[300],\n  },\n}))\n\nconst CustomUserName = styled('div')(({ theme }) => ({\n  color: theme.palette.colors.neutral['800'],\n  fontStyle: 'normal',\n  fontWeight: 600,\n  fontSize: '12px',\n  lineHeight: '18px',\n  fontFamily: 'var(--gally-font)',\n}))\n\nconst CustomArrow = styled('div')({\n  transition: 'transform 300ms',\n  display: 'flex',\n})\n\nconst CustomUserMenu = styled('div')(({ theme }) => ({\n  position: 'relative',\n  border: '1px solid',\n  borderRadius: 8,\n  marginTop: theme.spacing(0.4),\n  borderColor: theme.palette.colors.neutral['300'],\n  paddingTop: theme.spacing(1),\n  paddingBottom: theme.spacing(1),\n  paddingRight: theme.spacing(1.25),\n  paddingLeft: theme.spacing(1.25),\n  background: theme.palette.background.default,\n  width: '206px',\n  cursor: 'initial',\n  zIndex: 999,\n}))\n\nfunction UserMenu(): JSX.Element {\n  const [openUserMenu, setOpenUserMenu] = useState(false)\n  const user = useUser()\n\n  return (\n    <>\n      <Box data-testid=\"userMenu\">\n        <CustomUser onClick={(): void => setOpenUserMenu(!openUserMenu)}>\n          <IonIcon\n            name=\"person-outline\"\n            style={{ fontSize: '15px', color: '#8187B9' }}\n          />\n          <CustomUserName data-testid=\"username\">\n            <FormatText name={user?.username} toolTip firstLetterUpp />\n          </CustomUserName>\n          <CustomArrow\n            style={openUserMenu ? { transform: 'rotate(180deg)' } : {}}\n          >\n            <IonIcon\n              name=\"chevron-down\"\n              style={{ fontSize: '15px', color: '#8187B9' }}\n            />\n          </CustomArrow>\n        </CustomUser>\n        <Box sx={{ position: 'relative' }}>\n          <Collapse in={openUserMenu} sx={{ position: 'absolute', right: 0 }}>\n            <CustomUserMenu data-testid=\"userMenuContent\">\n              <UserMenuShow user={user} />\n            </CustomUserMenu>\n          </Collapse>\n        </Box>\n      </Box>\n      {openUserMenu ? (\n        <CloseComponent onClose={(): void => setOpenUserMenu(false)} />\n      ) : null}\n    </>\n  )\n}\n\nexport default UserMenu\n","import React from 'react'\nimport { useRouter } from 'next/router'\nimport { styled } from '@mui/system'\nimport {\n  IUser,\n  storageRemove,\n  tokenStorageKey,\n} from '@elastic-suite/gally-admin-shared'\n\nimport FormatText from '../format/FormatText'\n\nimport { useTranslation } from 'next-i18next'\n\nconst CustomTypoTexte = styled('div')(({ theme }) => ({\n  fontStyle: 'normal',\n  fontWeight: 600,\n  fontSize: '12px',\n  lineHeight: '18px',\n  display: 'flex',\n  flexDirection: 'column',\n  fontFamily: 'var(--gally-font)',\n  gap: theme.spacing(1),\n}))\n\nconst CustomTypoEmail = styled('div')(({ theme }) => ({\n  fontWeight: '400',\n  color: theme.palette.colors.neutral['600'],\n}))\n\nconst CustomTypoBasic = styled('div')(({ theme }) => ({\n  fontWeight: '400',\n  color: theme.palette.colors.neutral['800'],\n  cursor: 'pointer',\n}))\n\nconst CustomHr = styled('div')(({ theme }) => ({\n  width: '100%',\n  border: '1px solid',\n  margin: 0,\n  borderColor: theme.palette.colors.neutral['300'],\n}))\n\ninterface IProps {\n  user: IUser\n}\n\nfunction UserMenuShow({ user }: IProps): JSX.Element {\n  const { push } = useRouter()\n\n  const { t } = useTranslation('common')\n\n  function handleLogOut(): void {\n    storageRemove(tokenStorageKey)\n    push('/login')\n  }\n\n  return (\n    <CustomTypoTexte>\n      <CustomTypoEmail data-testid=\"userEmail\">\n        <FormatText name={user.username} toolTip firstLetterUpp />\n      </CustomTypoEmail>\n      <CustomHr />\n      <CustomTypoBasic onClick={handleLogOut} data-testid=\"logOutButton\">\n        {t('log.out')}\n      </CustomTypoBasic>\n    </CustomTypoTexte>\n  )\n}\n\nexport default UserMenuShow\n","import React, { ChangeEvent, MouseEvent, useState } from 'react'\nimport { Button, Checkbox, Menu, MenuItem } from '@mui/material'\nimport { MassiveSelectionType } from '@elastic-suite/gally-admin-shared'\nimport { useTranslation } from 'next-i18next'\n\nimport IonIcon from '../../../atoms/IonIcon/IonIcon'\n\ninterface IProps {\n  onSelection: (selection: MassiveSelectionType) => void\n  selectionState: boolean\n  indeterminateState: boolean\n}\n\nfunction MassiveSelection(props: IProps): JSX.Element {\n  const { onSelection, selectionState, indeterminateState } = props\n\n  const { t } = useTranslation('common')\n\n  const [anchorEl, setAnchorEl] = useState<HTMLElement>(null)\n  const open = Boolean(anchorEl)\n\n  function handleClick(e: MouseEvent<HTMLButtonElement>): void {\n    setAnchorEl(e.currentTarget)\n  }\n\n  function handleClose(key: string): void {\n    const massiveSelectionType =\n      MassiveSelectionType[key as keyof typeof MassiveSelectionType]\n    if (massiveSelectionType) {\n      onSelection(massiveSelectionType)\n    }\n    setAnchorEl(null)\n  }\n\n  function handleMassiveSelection(e: ChangeEvent<HTMLInputElement>): void {\n    onSelection(\n      e.target.checked\n        ? MassiveSelectionType.ALL_ON_CURRENT_PAGE\n        : MassiveSelectionType.NONE\n    )\n  }\n\n  return (\n    <>\n      <Checkbox\n        data-testid=\"massive-selection\"\n        indeterminate={indeterminateState}\n        checked={selectionState}\n        onChange={handleMassiveSelection}\n      />\n      <Button\n        data-testid=\"massive-selection-dropdown\"\n        sx={{ paddingLeft: '0' }}\n        onClick={handleClick}\n        color=\"inherit\"\n      >\n        <IonIcon name=\"chevron-down-outline\" />\n      </Button>\n      <Menu\n        data-testid=\"massive-selection-dropdown-open\"\n        anchorEl={anchorEl}\n        open={open}\n        onClose={handleClose}\n      >\n        {Object.keys(MassiveSelectionType).map((key: string) => {\n          const massiveSelectionType =\n            MassiveSelectionType[key as keyof typeof MassiveSelectionType]\n          return (\n            <MenuItem onClick={(): void => handleClose(key)} key={key}>\n              {t(massiveSelectionType)}\n            </MenuItem>\n          )\n        })}\n      </Menu>\n    </>\n  )\n}\n\nexport default MassiveSelection\n","import React from 'react'\nimport { Box, styled } from '@mui/system'\n\nimport IonIcon from '../../../atoms/IonIcon/IonIcon'\n\nconst BannerContainer = styled(Box)(({ theme }) => ({\n  height: '34px',\n  background: theme.palette.colors.gradient.default,\n  borderRadius: '8px 8px 0 0',\n  display: 'flex',\n  justifyContent: 'center',\n  alignItems: 'center',\n  padding: '8px 4px',\n  gap: '8px',\n  color: theme.palette.colors.white,\n}))\n\nconst BannerText = styled(Box)({\n  lineHeight: '18px',\n  fontSize: '12px',\n  fontWeight: '600',\n  fontFamily: 'var(--gally-font)',\n  fontStyle: 'normal',\n})\n\ninterface IProps {\n  bannerText: string\n}\n\nfunction TopProductsBanner(props: IProps): JSX.Element {\n  const { bannerText } = props\n\n  return (\n    <BannerContainer>\n      <BannerText>{bannerText}</BannerText>\n      <IonIcon name=\"push-pin\" style={{ color: 'colors.white' }} />\n    </BannerContainer>\n  )\n}\n\nexport default TopProductsBanner\n","import React from 'react'\nimport { styled } from '@mui/system'\nimport { IMenu } from '@elastic-suite/gally-admin-shared'\n\nimport Breadcrumbs from '../../../atoms/breadcrumb/Breadcrumbs'\n\nimport User from '../../layout/user/User'\n\nconst CustomRoot = styled('div')(({ theme }) => ({\n  display: 'flex',\n  flexDirection: 'row',\n  justifyContent: 'space-between',\n  alignItems: 'center',\n  paddingTop: theme.spacing(1.25),\n  paddingBottom: theme.spacing(1.25),\n  paddingRight: theme.spacing(4),\n  paddingLeft: theme.spacing(4),\n  position: 'fixed',\n  right: 0,\n  zIndex: '9',\n  height: theme.spacing(8),\n  backgroundColor: theme.palette.background.page,\n  left: 'inherit',\n  '&::before': {\n    content: '\"\"',\n    position: 'absolute',\n    border: '1px solid',\n    borderColor: theme.palette.colors.neutral['300'],\n    bottom: 0,\n    width: `calc(100% - 64px)`,\n  },\n}))\n\ninterface IProps {\n  slug?: string | string[]\n  menu?: IMenu\n  isConnected: boolean\n}\n\nfunction AppBar({ slug, menu, isConnected }: IProps): JSX.Element {\n  return (\n    <CustomRoot data-testid=\"appBar\">\n      <Breadcrumbs slug={slug} menu={menu} />\n      <User isConnected={isConnected} />\n    </CustomRoot>\n  )\n}\n\nexport default AppBar\n","import React from 'react'\nimport { styled } from '@mui/system'\n\nimport Help from '../../../atoms/help/Help'\nimport UserMenu from '../../../atoms/userMenu/UserMenu'\n\nconst CustomRoot = styled('div')(({ theme }) => ({\n  display: 'flex',\n  flexDirection: 'row',\n  gap: theme.spacing(1),\n  marginLeft: 'auto',\n}))\n\ninterface IProps {\n  isConnected: boolean\n}\n\nfunction User({ isConnected }: IProps): JSX.Element | null {\n  if (!isConnected) {\n    return null\n  }\n\n  return (\n    <CustomRoot>\n      <Help />\n      <UserMenu />\n    </CustomRoot>\n  )\n}\n\nexport default User\n","import React from 'react'\nimport { styled } from '@mui/system'\nimport {\n  IMenu,\n  IMenuChild,\n  removeFirstCharIfExist,\n} from '@elastic-suite/gally-admin-shared'\n\nimport MenuItemIcon from '../../../atoms/menu/MenuItemIcon'\nimport MenuItem from '../../../atoms/menu/MenuItem'\n\n/*\n * Create function to create path from code of the menu item\n */\nfunction slugify(code: string, depth: number): string {\n  let slug = code\n  for (let i = 0; i < depth; i++) {\n    slug = slug.replace('_', '/')\n  }\n  return slug\n}\n\nconst CustomFirstItems = styled('div')({\n  display: 'flex',\n  flexDirection: 'column',\n})\n\nconst CustomBoldStyle = styled('div')(({ theme }) => ({\n  paddingBottom: theme.spacing(3),\n}))\n\nconst CustomSecondItems = styled('div')(({ theme }) => ({\n  display: 'flex',\n  flexDirection: 'column',\n  paddingLeft: theme.spacing(2),\n}))\n\ninterface IProps {\n  childrenState: Record<string, boolean>\n  className?: string\n  menu: IMenu\n  menuItemActive: string\n  onChildToggle: (code: string, childState: boolean) => void\n  sidebarState?: boolean\n  sidebarStateTimeout?: boolean\n}\n\nconst itemRouterTabs: Record<string, boolean> = {\n  settings: true,\n  monitoring: true,\n}\n\nfunction Menu(props: IProps): JSX.Element {\n  const {\n    childrenState,\n    className,\n    menu,\n    menuItemActive,\n    onChildToggle,\n    sidebarState,\n    sidebarStateTimeout,\n  } = props\n  const words = menuItemActive.split('_')\n\n  return (\n    <div className={className}>\n      <CustomFirstItems>\n        {menu?.hierarchy.map((item: IMenuChild) => {\n          let path = removeFirstCharIfExist('/', item?.path)\n\n          if (!itemRouterTabs[item.code]) {\n            return (\n              <CustomBoldStyle key={item.code} data-testid=\"menuGroup\">\n                <MenuItemIcon\n                  code={item.code}\n                  href={path ?? slugify(item.code, 0)}\n                  isActive={words.includes(item.code)}\n                  isRoot={words[0] === item.code}\n                  label={item.label}\n                  lightStyle={false}\n                  childPadding={Boolean(item.children)}\n                  sidebarState={sidebarState}\n                  sidebarStateTimeout={sidebarStateTimeout}\n                />\n                <CustomSecondItems data-testid=\"menuGroupLinks\">\n                  {item.children?.map((item: IMenuChild) => {\n                    path = removeFirstCharIfExist('/', item?.path)\n\n                    return (\n                      <div key={item.code}>\n                        <MenuItem\n                          childrenState={childrenState}\n                          code={item.code}\n                          href={path ?? slugify(item.code, 1)}\n                          isActive={words.join('_') === item.code}\n                          isBoosts={\n                            words.length > 2 &&\n                            words.slice(0, 2).join('_') === item.code\n                              ? words[2] !== 'boosts'\n                              : null\n                          }\n                          label={item.label}\n                          menuChildren={item.children}\n                          onToggle={onChildToggle}\n                          sidebarStateTimeout={sidebarStateTimeout}\n                          words={words}\n                        />\n                      </div>\n                    )\n                  })}\n                </CustomSecondItems>\n              </CustomBoldStyle>\n            )\n          }\n          return (\n            <div key={item.code} data-testid=\"menuGroup\">\n              <MenuItemIcon\n                code={item.code}\n                href={path ?? slugify(item.code, 0)}\n                isActive={words.includes(item.code)}\n                isRoot={words[0] === item.code}\n                label={item.label}\n                lightStyle\n                childPadding={false}\n                sidebarState={sidebarState}\n                sidebarStateTimeout={sidebarStateTimeout}\n              />\n            </div>\n          )\n        })}\n      </CustomFirstItems>\n    </div>\n  )\n}\n\nexport default Menu\n","import React from 'react'\nimport { styled } from '@mui/system'\nimport {\n  ICatalog,\n  IHydraResponse,\n  ITabContentProps,\n} from '@elastic-suite/gally-admin-shared'\n\nimport TitleScope from '../../../atoms/scope/TitleScope'\nimport NbActiveLocales from '../../../atoms/scope/NbActiveLocales'\nimport Language from '../../../atoms/scope/Language'\n\nconst CustomRoot = styled('div')(({ theme }) => ({\n  width: '671px',\n  boxSizing: 'border-box',\n  display: 'flex',\n  flexDirection: 'column',\n  gap: theme.spacing(3),\n  padding: theme.spacing(4),\n  background: theme.palette.colors.white,\n  border: '1px solid #E2E6F3',\n  borderRadius: 8,\n}))\n\ninterface IProps extends ITabContentProps {\n  content: IHydraResponse<ICatalog>\n}\n\nfunction ActiveLocales({ content }: IProps): JSX.Element {\n  let languages = []\n  for (const hydraContent of content['hydra:member']) {\n    for (const localizedCatalogsContent of hydraContent.localizedCatalogs) {\n      languages.push(localizedCatalogsContent.localName)\n    }\n  }\n  languages = [...new Set(languages)]\n\n  return (\n    <CustomRoot>\n      <TitleScope name=\"Total\" />\n      <NbActiveLocales number={languages.length} />\n      <Language language={languages} limit={false} />\n    </CustomRoot>\n  )\n}\n\nexport default ActiveLocales\n","import React from 'react'\nimport { styled } from '@mui/system'\nimport { useTranslation } from 'next-i18next'\nimport {\n  ICatalog,\n  IHydraResponse,\n  ITabContentProps,\n  getUniqueLocalName,\n} from '@elastic-suite/gally-admin-shared'\n\nimport TitleScope from '../../../atoms/scope/TitleScope'\nimport NbActiveLocales from '../../../atoms/scope/NbActiveLocales'\nimport Language from '../../../atoms/scope/Language'\n\nconst CustomFullRoot = styled('div')(({ theme }) => ({\n  width: '100%',\n  display: 'flex',\n  flexDirection: 'column',\n  gap: theme.spacing(2),\n}))\n\nconst CustomNbCatalogs = styled('div')(({ theme }) => ({\n  color: theme.palette.colors.neutral[600],\n  lineHeight: '18px',\n  fontSize: '12px',\n  fontWeight: '400',\n  fontFamily: 'var(--gally-font)',\n}))\n\nconst CustomRoot = styled('div')(({ theme }) => ({\n  width: '100%',\n  display: 'grid',\n  gridGap: theme.spacing(4),\n  gridTemplateColumns: 'repeat(3,1fr)',\n}))\n\nconst CustomCatalogs = styled('div')(({ theme }) => ({\n  display: 'flex',\n  flexDirection: 'column',\n  padding: theme.spacing(4),\n  background: theme.palette.colors.white,\n  border: '1px solid #E2E6F3',\n  borderRadius: 8,\n  gap: theme.spacing(3),\n}))\n\ninterface IProps extends ITabContentProps {\n  content: IHydraResponse<ICatalog>\n}\n\nfunction Catalogs({ content }: IProps): JSX.Element {\n  const { t } = useTranslation()\n  return (\n    <CustomFullRoot>\n      <CustomNbCatalogs>\n        {content['hydra:member'].length}{' '}\n        {t('catalog.catalog', { count: content['hydra:member'].length })}\n      </CustomNbCatalogs>\n      <CustomRoot>\n        {content['hydra:member'].map((item: ICatalog, key: number) => (\n          <CustomCatalogs key={item.name}>\n            <TitleScope name={item.name} />\n            <NbActiveLocales number={getUniqueLocalName(item).length} />\n            <Language\n              order={key}\n              language={getUniqueLocalName(item)}\n              content={content['hydra:member']}\n              limit\n            />\n          </CustomCatalogs>\n        ))}\n      </CustomRoot>\n    </CustomFullRoot>\n  )\n}\n\nexport default Catalogs\n","import React from 'react'\nimport { Collapse } from '@mui/material'\nimport { styled } from '@mui/system'\nimport Link from 'next/link'\nimport Image from 'next/image'\nimport { IMenu } from '@elastic-suite/gally-admin-shared'\n\nimport Menu from '../Menu/Menu'\n\nconst CustomImgCollapse = styled('div')({\n  position: 'absolute',\n  width: 31,\n  transition: 'opacity 500ms',\n})\n\nconst CustomImgContainer = styled('div')(({ theme }) => ({\n  position: 'relative',\n  paddingBottom: theme.spacing(6),\n  paddingTop: theme.spacing(3),\n  paddingLeft: theme.spacing(2.5),\n  cursor: 'pointer',\n}))\n\nconst CustomLeftBar = styled(Collapse)({\n  borderRight: '1px solid #E2E6F3',\n  boxSizing: 'unset',\n  height: '100vh',\n  overflowY: 'scroll',\n  overflowX: 'hidden',\n  position: 'fixed',\n  left: '0',\n  top: '0',\n  scrollbarWidth: 'none',\n  '&::-webkit-scrollbar': {\n    width: 0,\n  },\n})\n\nconst CustomRoot = styled('div')(({ theme }) => ({\n  display: 'flex',\n  position: 'relative',\n  flexDirection: 'column',\n  width: 278,\n  minHeight: '100vh',\n  background: theme.palette.background.paper,\n  paddingBottom: theme.spacing(3),\n}))\n\nconst CustomMenu = styled(Menu)(({ theme }) => ({\n  marginTop: theme.spacing(2),\n  marginLeft: theme.spacing(2),\n}))\n\nconst CustomImgExtended = styled('div')({\n  position: 'absolute',\n  width: 104,\n  transition: 'opacity 500ms',\n})\n\ninterface IProps {\n  childrenState: Record<string, boolean>\n  menu: IMenu\n  menuItemActive: string\n  onChildToggle?: (code: string, childState: boolean) => void\n  sidebarState?: boolean\n  sidebarStateTimeout?: boolean\n}\n\nfunction Sidebar(props: IProps): JSX.Element {\n  const {\n    childrenState,\n    menu,\n    menuItemActive,\n    onChildToggle,\n    sidebarState,\n    sidebarStateTimeout,\n  } = props\n\n  /*\n   * Use of Collapse from mui to collapse sidebar when button is clicked\n   * see: https://mui.com/material-ui/transitions/#collapse\n   */\n\n  return (\n    <CustomLeftBar\n      in={sidebarState}\n      orientation=\"horizontal\"\n      collapsedSize={sidebarState ? 278 : 66}\n      timeout={sidebarState ? 0 : 200}\n      data-testid=\"sidebarMenu\"\n    >\n      <CustomRoot style={sidebarState ? {} : { width: 'inherit' }}>\n        <Link href=\"/admin/settings/scope/catalogs\">\n          <CustomImgContainer>\n            <CustomImgExtended\n              style={!sidebarStateTimeout ? {} : { opacity: 0 }}\n            >\n              <Image\n                src=\"/images/LogoBlinkExtended.svg\"\n                alt=\"Logo\"\n                width=\"104\"\n                height=\"29\"\n              />\n            </CustomImgExtended>\n            <CustomImgCollapse\n              style={sidebarStateTimeout ? {} : { opacity: 0 }}\n            >\n              <Image\n                src=\"/images/LogoBlinkCollapse.svg\"\n                alt=\"Logo\"\n                width=\"31\"\n                height=\"29\"\n              />\n            </CustomImgCollapse>\n          </CustomImgContainer>\n        </Link>\n        <CustomMenu\n          childrenState={childrenState}\n          menu={menu}\n          menuItemActive={menuItemActive}\n          onChildToggle={onChildToggle}\n          sidebarState={sidebarState}\n          sidebarStateTimeout={sidebarStateTimeout}\n        />\n      </CustomRoot>\n    </CustomLeftBar>\n  )\n}\n\nexport default Sidebar\n","import React, { ReactNode } from 'react'\nimport { styled } from '@mui/system'\n\nimport { getCustomScrollBarStyles } from '@elastic-suite/gally-admin-shared'\n\nconst Title = styled('div')(({ theme }) => ({\n  color: theme.palette.colors.neutral[900],\n  fontWeight: 600,\n  fontSize: '14px',\n  lineHeight: '20px',\n  fontFamily: 'var(--gally-font)',\n  padding: theme.spacing(2),\n  paddingBottom: theme.spacing(2),\n  borderTop: '1px solid',\n  borderColor: theme.palette.colors.neutral[300],\n  '&:first-of-type': {\n    borderTop: 0,\n  },\n}))\n\nconst Subtitle = styled('div')(({ theme }) => ({\n  color: theme.palette.colors.neutral[600],\n  fontWeight: 400,\n  fontSize: '12px',\n  lineHeight: '18px',\n  fontFamily: 'var(--gally-font)',\n  padding: theme.spacing(2),\n  paddingBottom: 0,\n}))\n\nconst Container = styled('div')(({ theme }) => ({\n  borderTop: '1px solid',\n  borderColor: theme.palette.colors.neutral[300],\n  overflow: 'auto',\n  ...getCustomScrollBarStyles(theme),\n  '&:not(:has(div > *))': {\n    height: 0,\n    borderTop: 0,\n  },\n}))\n\nconst PaddingBox = styled('div')(({ theme }) => ({\n  display: 'inline-block',\n  padding: theme.spacing(2),\n  '&:empty': {\n    padding: 0,\n  },\n}))\n\ninterface IProps {\n  title?: string\n  children?: ReactNode\n  subtitle?: string\n}\n\nfunction TitleBlock(props: IProps): JSX.Element {\n  const { title, children, subtitle } = props\n  return (\n    <>\n      {Boolean(title) && <Title>{title}</Title>}\n      {Boolean(children || subtitle) && (\n        <Container>\n          {Boolean(subtitle) && <Subtitle>{subtitle}</Subtitle>}\n          {Boolean(children) && <PaddingBox>{children}</PaddingBox>}\n        </Container>\n      )}\n    </>\n  )\n}\n\nexport default TitleBlock\n","import React, { ReactNode, useEffect, useRef } from 'react'\nimport { styled } from '@mui/system'\n\nconst Sentinel = styled('div')({\n  position: 'absolute',\n  top: 0,\n  left: 0,\n  right: 0,\n  height: '84px',\n})\n\nconst CustomRoot = styled('div')({\n  display: 'flex',\n  justifyContent: 'space-between',\n  flexDirection: 'row',\n})\n\nconst CustomLeftSide = styled('div')({\n  width: 402,\n  boxSizing: 'border-box',\n  flexShrink: 0,\n})\n\nconst CustomBorder = styled('div')(({ theme }) => ({\n  borderRadius: theme.spacing(1),\n  border: '1px solid',\n  borderColor: theme.palette.colors.neutral[300],\n}))\n\nconst Sticky = styled(CustomBorder)(({ theme }) => ({\n  display: 'flex',\n  flexDirection: 'column',\n  backgroundColor: theme.palette.colors.white,\n  position: 'sticky',\n  top: '100px',\n  alignSelf: 'flex-start',\n  width: 402,\n  maxHeight: 'calc(100vh - 115px)',\n  boxSizing: 'border-box',\n  '&.fixed': {\n    position: 'fixed',\n  },\n}))\n\nconst CustomRightSide = styled('div')({\n  width: `calc(100% - 390px)`,\n  boxSizing: 'border-box',\n  paddingLeft: '25px',\n})\n\ninterface IProps {\n  left: ReactNode[] | ReactNode\n  children: ReactNode\n}\n\nfunction TwoColsLayout({ left, children }: IProps): JSX.Element {\n  const colRef = useRef<HTMLDivElement>()\n  const sentinelRef = useRef<HTMLDivElement>()\n\n  useEffect(() => {\n    function handler(entries: IntersectionObserverEntry[]): void {\n      if (!entries[0].isIntersecting) {\n        colRef.current?.classList.add('fixed')\n      } else {\n        colRef.current?.classList.remove('fixed')\n      }\n    }\n\n    if (typeof window !== 'undefined' && window.IntersectionObserver) {\n      const observer = new window.IntersectionObserver(handler)\n      observer.observe(sentinelRef.current)\n      return () => observer.disconnect()\n    }\n  }, [])\n\n  return (\n    <>\n      <Sentinel ref={sentinelRef} />\n      <CustomRoot>\n        <CustomLeftSide>\n          <Sticky ref={colRef}>{left}</Sticky>\n        </CustomLeftSide>\n        <CustomRightSide>{children}</CustomRightSide>\n      </CustomRoot>\n    </>\n  )\n}\n\nexport default TwoColsLayout\n","import React, { useContext } from 'react'\nimport { styled } from '@mui/system'\nimport { useTranslation } from 'next-i18next'\nimport { IOptions } from '@elastic-suite/gally-admin-shared'\n\nimport { catalogContext } from '../../../contexts'\n\nimport DropDownWithoutError from '../../atoms/form/DropDownWithoutError'\n\nconst SwitchersContainer = styled('div')({\n  display: 'flex',\n  columnGap: '8px',\n  marginBottom: '8px',\n})\n\nfunction CatalogSwitcher(): JSX.Element {\n  const { t } = useTranslation('categories')\n  const {\n    catalogId,\n    catalogs: catalogsData,\n    localizedCatalogId,\n    setCatalogId,\n    setLocalizedCatalogId,\n  } = useContext(catalogContext)\n\n  const catalogs: IOptions<number> = catalogsData\n    ? [{ label: t('allCatalogs'), value: -1 }].concat(\n        catalogsData.map((hydraMember) => ({\n          label: hydraMember.name,\n          value: hydraMember.id as number,\n        }))\n      )\n    : [null]\n\n  function localizedCatalogs(catalogId: number): IOptions<number> {\n    return [\n      {\n        label: t('allLocales'),\n        value: -1,\n      },\n    ].concat(\n      catalogsData\n        .filter((catalog) => catalog.id === catalogId)\n        .map((catalog) =>\n          catalog.localizedCatalogs.map((localizedCatalog) => ({\n            label:\n              localizedCatalog.localName[0].toUpperCase() +\n              localizedCatalog.localName.substring(1),\n            value: localizedCatalog.id as number,\n          }))\n        )\n        .flat()\n    )\n  }\n\n  function onCatalogChange(catalogId: number): void {\n    setCatalogId(catalogId)\n    setLocalizedCatalogId(-1)\n  }\n\n  function onLocalizedCatalogChange(localizedCatalogId: number): void {\n    setLocalizedCatalogId(localizedCatalogId)\n  }\n\n  return (\n    <SwitchersContainer>\n      <DropDownWithoutError\n        style={{ fontSize: '12px' }}\n        onChange={onCatalogChange}\n        value={catalogId}\n        options={catalogs}\n        label={t('catalog.dropdown.label')}\n      />\n      {Boolean(catalogId) && catalogId !== -1 ? (\n        <DropDownWithoutError\n          style={{ fontSize: '12px' }}\n          onChange={onLocalizedCatalogChange}\n          value={localizedCatalogId}\n          options={localizedCatalogs(catalogId)}\n          label={t('localizedCatalog.dropdown.label')}\n        />\n      ) : (\n        <div style={{ width: 180 }} />\n      )}\n    </SwitchersContainer>\n  )\n}\n\nexport default CatalogSwitcher\n","import React, { useState } from 'react'\nimport { ICategories, ICategory } from '@elastic-suite/gally-admin-shared'\n\nimport Tree from '../../atoms/tree/Tree'\n\ninterface IProps {\n  categories: ICategories\n  selectedItem: ICategory\n  onSelect: (item: ICategory) => void\n}\n\nfunction CategoryTree(props: IProps): JSX.Element {\n  const { categories, selectedItem, onSelect } = props\n  const [openItems, setOpenItems] = useState<Record<string, boolean>>({})\n\n  if (!categories) {\n    return null\n  }\n\n  return (\n    <Tree\n      onChange={onSelect}\n      onToggle={setOpenItems}\n      openItems={openItems}\n      data={categories.categories}\n      value={selectedItem}\n    />\n  )\n}\n\nexport default CategoryTree\n","import React, { SyntheticEvent } from 'react'\nimport { useTranslation } from 'next-i18next'\nimport { Grid, Paper } from '@mui/material'\nimport {\n  ICategory,\n  IOptions,\n  IParsedCategoryConfiguration,\n  IRuleCombination,\n  getFieldConfig,\n  getFieldState,\n  isRuleValid,\n  isVirtualCategoryEnabled,\n} from '@elastic-suite/gally-admin-shared'\n\nimport { useResource, useRuleOperators } from '../../../hooks'\nimport { selectBundles, useAppSelector } from '../../../store'\n\nimport DropDownWithoutError from '../../atoms/form/DropDownWithoutError'\nimport Switch from '../../atoms/form/Switch'\nimport RulesManager from '../RulesManager/RulesManager'\n\ninterface IProps {\n  catConf: IParsedCategoryConfiguration\n  onChange?: (\n    name: string,\n    value: boolean | string | IRuleCombination\n  ) => void | Promise<void>\n  sortOptions: IOptions<string>\n  category: ICategory\n}\n\nfunction Merchandize({\n  catConf,\n  onChange,\n  sortOptions,\n  category,\n}: IProps): JSX.Element {\n  const { t } = useTranslation('categories')\n  const bundles = useAppSelector(selectBundles)\n  const catConfResource = useResource('CategoryConfiguration')\n  const fieldConfigMap = new Map(\n    catConfResource.supportedProperty.map((field) => [\n      field.title,\n      getFieldConfig(field),\n    ])\n  )\n\n  // Rule engine operators\n  const ruleOperators = useRuleOperators()\n\n  const isValid = !catConf?.isVirtual || isRuleValid(catConf?.virtualRule)\n\n  function handleChange(value: string | boolean, event: SyntheticEvent): void {\n    onChange((event.target as HTMLInputElement).name, value)\n  }\n\n  const isRootCategory = category.level === 1\n\n  return (\n    <Paper variant=\"outlined\" style={{ height: 'auto', padding: '22px' }}>\n      <Grid\n        container\n        justifyContent=\"flex-start\"\n        alignItems=\"flex-start\"\n        spacing={2}\n      >\n        <Grid item xs={6}>\n          <Switch\n            checked={catConf?.useNameInProductSearch ?? false}\n            infoTooltip={t('name.tooltip')}\n            label={t('name')}\n            name=\"useNameInProductSearch\"\n            onChange={handleChange}\n            {...getFieldState(\n              catConf as unknown as Record<string, unknown>,\n              fieldConfigMap.get('useNameInProductSearch')?.depends\n            )}\n          />\n        </Grid>\n        <Grid item xs={6}>\n          <DropDownWithoutError\n            infoTooltip={t('select.tooltip')}\n            label={t('select.label')}\n            name=\"defaultSorting\"\n            onChange={handleChange}\n            options={sortOptions}\n            value={catConf?.defaultSorting ?? ''}\n            required\n            {...getFieldState(\n              catConf as unknown as Record<string, unknown>,\n              fieldConfigMap.get('defaultSorting')?.depends\n            )}\n          />\n        </Grid>\n        {isVirtualCategoryEnabled(bundles) && (\n          <Grid item xs={6}>\n            <Switch\n              checked={catConf?.isVirtual ?? false}\n              infoTooltip={t('virtual.tooltip')}\n              label={t('virtual')}\n              name=\"isVirtual\"\n              disabled={isRootCategory}\n              onChange={handleChange}\n              {...getFieldState(\n                catConf as unknown as Record<string, unknown>,\n                fieldConfigMap.get('isVirtual')?.depends\n              )}\n            />\n          </Grid>\n        )}\n      </Grid>\n      {isVirtualCategoryEnabled(bundles) &&\n      ruleOperators &&\n      catConf?.isVirtual ? (\n        <Grid\n          item\n          xs={6}\n          style={{\n            display: 'flex',\n            flexDirection: 'column',\n            gap: '28px',\n            paddingTop: '16px',\n          }}\n        >\n          <RulesManager\n            label={t('virtualRule.conditions')}\n            active={catConf?.isVirtual}\n            onChange={(value): void => {\n              onChange('virtualRule', value)\n            }}\n            rule={catConf?.virtualRule}\n            ruleOperators={ruleOperators}\n            error={!isValid}\n          />\n        </Grid>\n      ) : null}\n    </Paper>\n  )\n}\n\nexport default Merchandize\n","import React, {\n  MutableRefObject,\n  useEffect,\n  useMemo,\n  useRef,\n  useState,\n} from 'react'\nimport { Box, styled } from '@mui/system'\nimport { useTranslation } from 'next-i18next'\n\nimport {\n  ICategory,\n  IGraphqlProductPosition,\n  IParsedCategoryConfiguration,\n  IProductFieldFilterInput,\n  IProductPositions,\n  IRuleEngineOperators,\n  ISortingOption,\n  LoadStatus,\n  getIdFromIri,\n  getIri,\n  getProductPosition,\n} from '@elastic-suite/gally-admin-shared'\n\nimport { useApiList, useGraphqlApi, useResource } from '../../../hooks'\n\nimport Button from '../../atoms/buttons/Button'\nimport IonIcon from '../../atoms/IonIcon/IonIcon'\nimport PageTitle from '../../atoms/PageTitle/PageTitle'\nimport StickyBar from '../../molecules/CustomTable/StickyBar/StickyBar'\n\nimport ProductsTopAndBottom from '../ProductsTopAndBottom/ProductsTopAndBottom'\nimport Merchandize from '../Merchandize/Merchandize'\nimport SearchBar from '../Merchandize/SearchBar/SearchBar'\n\nconst Layout = styled('div')(({ theme }) => ({\n  display: 'flex',\n  flexDirection: 'column',\n  gap: theme.spacing(4),\n  marginLeft: '32px',\n  marginRight: '28px',\n}))\n\nconst CustomBarTextMaxProducts = styled('div')(({ theme }) => ({\n  color: theme.palette.colors.primary['500'],\n  margin: '0 auto',\n}))\n\ninterface IProps {\n  catConf: IParsedCategoryConfiguration\n  category: ICategory\n  isLoading?: boolean\n  isValid?: boolean\n  onChange: (name: string, val: boolean | string) => void\n  onSave: (result: string) => void\n  prevCatConf: MutableRefObject<IParsedCategoryConfiguration>\n  prevProductPositions: MutableRefObject<string>\n  productGraphqlFilters?: IProductFieldFilterInput\n  hasEditLink?: boolean\n  editLink?: string\n  localizedCatalogIdWithDefault: string\n  ruleOperators: IRuleEngineOperators\n}\n\nfunction ProductsContainer(props: IProps): JSX.Element {\n  const {\n    catConf,\n    ruleOperators,\n    category,\n    isLoading,\n    isValid,\n    onChange,\n    onSave,\n    prevCatConf,\n    prevProductPositions,\n    productGraphqlFilters,\n    hasEditLink,\n    editLink,\n    localizedCatalogIdWithDefault,\n  } = props\n  const tableRef = useRef<HTMLDivElement>()\n  const [topSelectedRows, setTopSelectedRows] = useState<string[]>([])\n  const [bottomSelectedRows, setBottomSelectedRows] = useState<string[]>([])\n  const [nbBottomRows, setNbBottomRows] = useState(0)\n  const [nbTopRows, setNbTopRows] = useState(0)\n\n  const defaultSorting = catConf?.defaultSorting ?? ''\n\n  const variables = useMemo(\n    () => ({\n      localizedCatalogId: Number(localizedCatalogIdWithDefault),\n      categoryId: category?.id,\n    }),\n    [localizedCatalogIdWithDefault, category?.id]\n  )\n\n  const [productPositions, setProductPositions] =\n    useGraphqlApi<IGraphqlProductPosition>(getProductPosition, variables)\n  useEffect(() => {\n    if (productPositions.status === LoadStatus.SUCCEEDED) {\n      prevProductPositions.current =\n        productPositions.data.getPositionsCategoryProductMerchandising.result\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [productPositions.status])\n\n  const { t } = useTranslation('categories')\n\n  const showStickyBar =\n    Boolean(topSelectedRows && topSelectedRows.length > 0) ||\n    Boolean(bottomSelectedRows && bottomSelectedRows.length > 0)\n\n  function unselectAllRows(): void {\n    setTopSelectedRows([])\n    setBottomSelectedRows([])\n  }\n\n  const resourceName = 'ProductSortingOption'\n  const resourceSortingOption = useResource(resourceName)\n  const [{ data }] = useApiList<ISortingOption>(resourceSortingOption)\n\n  const sortOption = data\n    ? data[`hydra:member`].map((obj: ISortingOption) => ({\n        value: obj.code,\n        ...obj,\n      }))\n    : [{ label: 'Position', value: 'category__position' }]\n\n  const [search, setSearch] = useState('')\n  function onSearch(value: string): void {\n    setSearch(value)\n  }\n\n  const [valSearchOnChange, setValSearchOnChange] = useState('')\n  function onValSearchOnChange(value: string): void {\n    setValSearchOnChange(value)\n  }\n\n  const topProducts = productPositions.data\n    ? (JSON.parse(\n        productPositions.data.getPositionsCategoryProductMerchandising.result\n      ) as IProductPositions)\n    : []\n\n  const dirty =\n    prevCatConf.current &&\n    catConf &&\n    prevProductPositions.current &&\n    productPositions.data\n      ? Object.entries(catConf ?? {}).some(\n          ([key, val]: [key: keyof typeof catConf, val: string | boolean]) =>\n            !(\n              prevCatConf.current[key] === undefined ||\n              prevCatConf.current[key] === val\n            )\n        ) ||\n        prevProductPositions.current !==\n          productPositions.data.getPositionsCategoryProductMerchandising.result\n      : false\n  const disabled = !dirty || !isValid\n\n  function pinToTop(): void {\n    if (bottomSelectedRows.length + topProducts.length > 25) return\n    let maxPosition = Math.max(\n      ...topProducts.map((topProduct) => topProduct.position),\n      0\n    )\n    const newTopProducts = bottomSelectedRows.map((row) => ({\n      productId: getIdFromIri(row),\n      position: ++maxPosition,\n    }))\n    setProductPositions({\n      getPositionsCategoryProductMerchandising: {\n        result: JSON.stringify(topProducts.concat(newTopProducts)),\n      },\n    })\n    setBottomSelectedRows([])\n    onSearch('')\n    onValSearchOnChange('')\n  }\n\n  function pinToBottom(): void {\n    setProductPositions({\n      getPositionsCategoryProductMerchandising: {\n        result: JSON.stringify(\n          topProducts.filter(\n            ({ productId }) =>\n              !topSelectedRows.includes(getIri('products', productId))\n          )\n        ),\n      },\n    })\n    setTopSelectedRows([])\n    onSearch('')\n    onValSearchOnChange('')\n  }\n\n  function handleSave(): void {\n    onSave(\n      defaultSorting === 'category__position'\n        ? productPositions.data.getPositionsCategoryProductMerchandising.result\n        : '[]'\n    )\n  }\n\n  return (\n    <Box>\n      <Layout>\n        <PageTitle\n          sticky\n          sx={{ marginBottom: '12px' }}\n          title={category?.name ? category?.name : category?.catalogName}\n        >\n          <Button\n            disabled={disabled}\n            onClick={handleSave}\n            loading={isLoading}\n            endIcon={<ion-icon name=\"save-outline\" />}\n          >\n            {t('buttonSave')}\n          </Button>\n        </PageTitle>\n        {Boolean(catConf) && (\n          <Merchandize\n            catConf={catConf}\n            onChange={onChange}\n            sortOptions={sortOption}\n            category={category}\n          />\n        )}\n\n        <SearchBar\n          nbResults={nbBottomRows}\n          nbTopProducts={nbTopRows}\n          onSearch={onSearch}\n          sortValue={defaultSorting}\n          searchValue={valSearchOnChange}\n          onValSearchOnChange={onValSearchOnChange}\n          isInputAdornmentClickable\n        />\n        {Boolean(catConf && (!catConf.virtualRule || category?.id)) && (\n          <ProductsTopAndBottom\n            ref={tableRef}\n            category={category}\n            bottomSelectedRows={bottomSelectedRows}\n            productGraphqlFilters={productGraphqlFilters}\n            onBottomSelectedRows={setBottomSelectedRows}\n            onTopSelectedRows={setTopSelectedRows}\n            setNbBottomRows={setNbBottomRows}\n            setNbTopRows={setNbTopRows}\n            setProductPositions={setProductPositions}\n            topSelectedRows={topSelectedRows}\n            topProducts={topProducts}\n            sortValue={defaultSorting}\n            searchValue={search}\n            nbTopProducts={nbTopRows}\n            catConf={catConf}\n            ruleOperators={ruleOperators}\n            hasEditLink={hasEditLink}\n            editLink={editLink}\n          />\n        )}\n      </Layout>\n      <StickyBar positionRef={tableRef} show={showStickyBar}>\n        {t('rows.selected', {\n          count: topSelectedRows.length + bottomSelectedRows.length,\n        })}\n\n        <CustomBarTextMaxProducts>\n          {defaultSorting === 'category__position'\n            ? (topProducts.length === 25 ||\n                topProducts.length + bottomSelectedRows.length > 25) &&\n              bottomSelectedRows.length !== 0 &&\n              t('bar.textMaxProducts')\n            : t('stickybar.noPositionProduct')}\n        </CustomBarTextMaxProducts>\n        <Button display=\"tertiary\" onClick={(): void => unselectAllRows()}>\n          {t('button.cancelSelection')}\n        </Button>\n        <Button\n          sx={{ marginLeft: 1 }}\n          disabled={\n            defaultSorting !== 'category__position' ||\n            bottomSelectedRows.length === 0 ||\n            bottomSelectedRows.length + topProducts.length > 25\n          }\n          onClick={pinToTop}\n        >\n          {t('pinToTop')}\n          <IonIcon name=\"arrow-up-outline\" style={{ marginLeft: '13px' }} />\n        </Button>\n        <Button\n          sx={{ marginLeft: 1 }}\n          disabled={\n            defaultSorting !== 'category__position' ||\n            topSelectedRows.length === 0\n          }\n          onClick={pinToBottom}\n        >\n          {t('pinToBottom')}\n          <IonIcon name=\"arrow-down-outline\" style={{ marginLeft: '13px' }} />\n        </Button>\n      </StickyBar>\n    </Box>\n  )\n}\n\nexport default ProductsContainer\n","import React, {\n  Dispatch,\n  MutableRefObject,\n  SetStateAction,\n  forwardRef,\n} from 'react'\nimport { Paper } from '@mui/material'\nimport { Box, styled } from '@mui/system'\nimport { useTranslation } from 'next-i18next'\nimport {\n  ICategory,\n  IGraphqlProductPosition,\n  IParsedCategoryConfiguration,\n  IProductFieldFilterInput,\n  IProductPositions,\n  IRuleEngineOperators,\n} from '@elastic-suite/gally-admin-shared'\n\nimport { selectConfiguration, useAppSelector } from '../../../store'\n\nimport BottomTable from '../TopAndBottomTable/BottomTable'\nimport TopTable from '../TopAndBottomTable/TopTable'\n\nconst PreviewArea = styled(Box)(({ theme }) => ({\n  fontSize: '12px',\n  fontFamily: 'var(--gally-font)',\n  lineHeight: '18px',\n  padding: '16px 0  0 16px',\n  color: theme.palette.colors.neutral['600'],\n}))\n\ninterface IProps {\n  category: ICategory\n  bottomSelectedRows: (string | number)[]\n  onBottomSelectedRows: (rowIds: string[]) => void\n  onTopSelectedRows: (rowIds: string[]) => void\n  productGraphqlFilters: IProductFieldFilterInput\n  setProductPositions: Dispatch<SetStateAction<IGraphqlProductPosition>>\n  topSelectedRows: (string | number)[]\n  topProducts: IProductPositions\n  setNbBottomRows: (value: number) => void\n  setNbTopRows: (value: number) => void\n  sortValue: string\n  searchValue: string\n  nbTopProducts: number\n  catConf: IParsedCategoryConfiguration\n  ruleOperators: IRuleEngineOperators\n  hasEditLink?: boolean\n  editLink?: string\n}\n\nfunction ProductsTopAndBottom(\n  props: IProps,\n  ref: MutableRefObject<HTMLDivElement>\n): JSX.Element {\n  const {\n    category,\n    bottomSelectedRows,\n    onBottomSelectedRows,\n    onTopSelectedRows,\n    productGraphqlFilters,\n    setProductPositions,\n    topSelectedRows,\n    topProducts,\n    setNbBottomRows,\n    setNbTopRows,\n    sortValue,\n    searchValue,\n    nbTopProducts,\n    catConf,\n    ruleOperators,\n    hasEditLink,\n    editLink,\n  } = props\n  const { t } = useTranslation('categories')\n\n  const topProductsIds = topProducts.map((topProduct) => topProduct.productId)\n\n  const configuration = useAppSelector(selectConfiguration)\n\n  return (\n    configuration && (\n      <Paper variant=\"outlined\" sx={{ backgroundColor: 'colors.neutral.300' }}>\n        <PreviewArea>{t('previewArea')}</PreviewArea>\n        <Box sx={{ padding: '28px 16px 17px 16px' }}>\n          {topProducts.length !== 0 && (\n            <TopTable\n              category={category}\n              selectedRows={topSelectedRows}\n              onSelectedRows={onTopSelectedRows}\n              productGraphqlFilters={productGraphqlFilters}\n              setProductPositions={setProductPositions}\n              topProducts={topProducts}\n              topProductsIds={topProductsIds}\n              sortValue={sortValue}\n              searchValue={searchValue}\n              configuration={configuration}\n              setNbTopRows={setNbTopRows}\n              catConf={catConf}\n              ruleOperators={ruleOperators}\n              hasEditLink={hasEditLink}\n              editLink={editLink}\n            />\n          )}\n          <BottomTable\n            ref={ref}\n            category={category}\n            selectedRows={bottomSelectedRows}\n            onSelectedRows={onBottomSelectedRows}\n            productGraphqlFilters={productGraphqlFilters}\n            topProductsIds={topProductsIds}\n            setNbBottomRows={setNbBottomRows}\n            sortValue={sortValue}\n            searchValue={searchValue}\n            configuration={configuration}\n            nbTopProducts={nbTopProducts}\n            catConf={catConf}\n            ruleOperators={ruleOperators}\n            hasEditLink={hasEditLink}\n            editLink={editLink}\n          />\n        </Box>\n      </Paper>\n    )\n  )\n}\n\nexport default forwardRef(ProductsTopAndBottom)\n","import React, {\n  MutableRefObject,\n  forwardRef,\n  useContext,\n  useEffect,\n  useMemo,\n  useState,\n} from 'react'\nimport { useTranslation } from 'next-i18next'\nimport { Box } from '@mui/material'\nimport {\n  ICategory,\n  IConfigurations,\n  IGraphqlSearchProducts,\n  IParsedCategoryConfiguration,\n  IProductFieldFilterInput,\n  IRuleEngineOperators,\n  ITableRow,\n  ProductRequestType,\n  cleanBeforeSaveCatConf,\n  defaultPageSize,\n  defaultRowsPerPageOptions,\n  getSearchPreviewProductsQuery,\n  productTableheader,\n  serializeCatConf,\n} from '@elastic-suite/gally-admin-shared'\n\nimport { catalogContext } from '../../../contexts'\nimport { useGraphqlApi } from '../../../hooks'\n\nimport NoAttributes from '../../atoms/noAttributes/NoAttributes'\nimport PagerTable from '../../organisms/PagerTable/PagerTable'\n\nimport FieldGuesser from '../FieldGuesser/FieldGuesser'\n\ninterface IProps {\n  category: ICategory\n  onSelectedRows: (rowIds: string[]) => void\n  productGraphqlFilters: IProductFieldFilterInput\n  selectedRows: (string | number)[]\n  topProductsIds: string[]\n  setNbBottomRows: (value: number) => void\n  sortValue: string\n  searchValue: string\n  configuration: IConfigurations\n  nbTopProducts: number\n  catConf: IParsedCategoryConfiguration\n  ruleOperators: IRuleEngineOperators\n  hasEditLink?: boolean\n  editLink?: string\n}\n\nfunction BottomTable(\n  props: IProps,\n  ref: MutableRefObject<HTMLDivElement>\n): JSX.Element {\n  const {\n    category,\n    onSelectedRows,\n    productGraphqlFilters,\n    selectedRows,\n    topProductsIds,\n    setNbBottomRows,\n    sortValue,\n    searchValue,\n    configuration,\n    nbTopProducts,\n    catConf,\n    ruleOperators,\n    hasEditLink,\n    editLink,\n  } = props\n  const { localizedCatalogIdWithDefault } = useContext(catalogContext)\n\n  const [currentPage, setCurrentPage] = useState<number>(1)\n  const [rowsPerPage, setRowsPerPage] = useState<number>(defaultPageSize)\n  const { t } = useTranslation('categories')\n  const variables = useMemo(\n    () => ({\n      currentCategoryId: category?.id,\n      localizedCatalog: localizedCatalogIdWithDefault,\n      currentPage,\n      pageSize: rowsPerPage,\n      requestType: ProductRequestType.CATALOG,\n      sort:\n        sortValue && sortValue !== 'category__position'\n          ? { [sortValue]: 'asc' }\n          : {},\n      currentCategoryConfiguration: catConf\n        ? JSON.stringify(\n            cleanBeforeSaveCatConf(serializeCatConf(catConf, ruleOperators))\n          )\n        : undefined,\n    }),\n    [\n      category,\n      currentPage,\n      localizedCatalogIdWithDefault,\n      rowsPerPage,\n      sortValue,\n      catConf,\n      ruleOperators,\n    ]\n  )\n  const filters = productGraphqlFilters ? [productGraphqlFilters] : []\n  if (topProductsIds.length > 0 && sortValue === 'category__position') {\n    filters.push({\n      boolFilter: { _not: [{ id: { in: topProductsIds } }] },\n    })\n  }\n\n  if (searchValue) {\n    filters.push({\n      boolFilter: {\n        _should: [\n          {\n            name: { match: searchValue },\n          },\n          { sku: { eq: searchValue } },\n        ],\n      },\n    })\n  }\n\n  const [products] = useGraphqlApi<IGraphqlSearchProducts>(\n    getSearchPreviewProductsQuery(filters),\n    variables\n  )\n\n  function onPageChange(page: number): void {\n    setCurrentPage(page + 1)\n    onSelectedRows([])\n  }\n\n  const tableRows = products?.data?.products.collection ?? []\n  const withSelection = selectedRows?.length !== undefined\n  const massiveSelectionState =\n    withSelection && selectedRows\n      ? selectedRows.length === tableRows.length\n      : false\n  const massiveSelectionIndeterminate =\n    withSelection && selectedRows.length > 0\n      ? selectedRows.length < tableRows.length\n      : false\n\n  const onRowsPerPageChange = (\n    event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n  ): void => {\n    setRowsPerPage(Number(event.target.value))\n    setCurrentPage(1)\n  }\n\n  useEffect(() => {\n    setNbBottomRows(products?.data?.products.paginationInfo.totalCount || 0)\n  }, [products?.data?.products.paginationInfo.totalCount, setNbBottomRows])\n\n  function handleSelection(rowIds: (string | number)[] | boolean): void {\n    if (rowIds instanceof Array) {\n      onSelectedRows(rowIds as string[])\n    } else if (rowIds) {\n      onSelectedRows(tableRows.map((row) => row.id))\n    } else {\n      onSelectedRows([])\n    }\n  }\n\n  const hasProduct = Boolean(nbTopProducts + tableRows.length)\n\n  return (\n    <>\n      {Boolean(products?.data?.products) &&\n        (!hasProduct ? (\n          <NoAttributes title={t('noProductSearch')} />\n        ) : (\n          products.data.products.collection.length !== 0 && (\n            <Box\n              sx={\n                nbTopProducts !== 0 && sortValue === 'category__position'\n                  ? { marginTop: '24px' }\n                  : {}\n              }\n            >\n              <PagerTable\n                Field={FieldGuesser}\n                count={products.data.products.paginationInfo.totalCount}\n                currentPage={\n                  (currentPage - 1 >= 0 ? currentPage - 1 : currentPage) ?? 0\n                }\n                massiveSelectionIndeterminate={massiveSelectionIndeterminate}\n                massiveSelectionState={massiveSelectionState}\n                onPageChange={onPageChange}\n                onRowsPerPageChange={onRowsPerPageChange}\n                onSelection={handleSelection}\n                ref={ref}\n                rowsPerPage={rowsPerPage}\n                rowsPerPageOptions={defaultRowsPerPageOptions ?? []}\n                selectedRows={selectedRows}\n                tableHeaders={productTableheader}\n                tableRows={\n                  products.data.products.collection as unknown as ITableRow[]\n                }\n                withSelection={withSelection}\n                configuration={configuration}\n                hasEditLink={hasEditLink}\n                editLink={editLink}\n              />\n            </Box>\n          )\n        ))}\n    </>\n  )\n}\n\nexport default forwardRef(BottomTable)\n","import React, {\n  Dispatch,\n  SetStateAction,\n  useContext,\n  useEffect,\n  useMemo,\n} from 'react'\nimport {\n  ICategory,\n  IConfigurations,\n  IGraphqlProductPosition,\n  IGraphqlSearchProducts,\n  IParsedCategoryConfiguration,\n  IProductFieldFilterInput,\n  IProductPositions,\n  IRuleEngineOperators,\n  ITableRow,\n  LoadStatus,\n  ProductRequestType,\n  cleanBeforeSaveCatConf,\n  getIdFromIri,\n  getSearchPreviewProductsQuery,\n  productTableheader,\n  serializeCatConf,\n} from '@elastic-suite/gally-admin-shared'\n\nimport { catalogContext } from '../../../contexts'\nimport { useGraphqlApi } from '../../../hooks'\n\nimport FieldGuesser from '../FieldGuesser/FieldGuesser'\nimport TopProductsTable from '../TopProductsTable/TopProductsTable'\n\ninterface IProps {\n  category: ICategory\n  onSelectedRows: (rowIds: string[]) => void\n  productGraphqlFilters: IProductFieldFilterInput\n  selectedRows: (string | number)[]\n  setProductPositions: Dispatch<SetStateAction<IGraphqlProductPosition>>\n  topProducts: IProductPositions\n  topProductsIds: string[]\n  sortValue: string\n  configuration: IConfigurations\n  searchValue: string\n  setNbTopRows: (value: number) => void\n  catConf: IParsedCategoryConfiguration\n  ruleOperators: IRuleEngineOperators\n  hasEditLink?: boolean\n  editLink?: string\n}\n\nfunction TopTable(props: IProps): JSX.Element {\n  const {\n    category,\n    selectedRows,\n    onSelectedRows,\n    productGraphqlFilters,\n    setProductPositions,\n    topProducts,\n    topProductsIds,\n    sortValue,\n    configuration,\n    searchValue,\n    setNbTopRows,\n    catConf,\n    ruleOperators,\n    hasEditLink,\n    editLink,\n  } = props\n  const { localizedCatalogIdWithDefault } = useContext(catalogContext)\n\n  const variables = useMemo(\n    () => ({\n      currentCategoryId: category?.id,\n      localizedCatalog: localizedCatalogIdWithDefault,\n      requestType: ProductRequestType.CATALOG,\n      currentCategoryConfiguration: catConf\n        ? JSON.stringify(\n            cleanBeforeSaveCatConf(serializeCatConf(catConf, ruleOperators))\n          )\n        : undefined,\n    }),\n    [category, localizedCatalogIdWithDefault, catConf, ruleOperators]\n  )\n  const filters = productGraphqlFilters ? [productGraphqlFilters] : []\n  if (topProductsIds.length > 0) {\n    filters.push({ id: { in: topProductsIds } })\n  }\n\n  if (searchValue) {\n    filters.push({\n      boolFilter: {\n        _should: [\n          {\n            name: { match: searchValue },\n          },\n          { sku: { eq: searchValue } },\n        ],\n      },\n    })\n  }\n\n  const [products] = useGraphqlApi<IGraphqlSearchProducts>(\n    getSearchPreviewProductsQuery(filters),\n    variables\n  )\n\n  function handleReorder(rows: ITableRow[]): void {\n    let position = 0\n    const positions = rows.map((row) => ({\n      productId: getIdFromIri(String(row.id)),\n      position: ++position,\n    }))\n    setProductPositions({\n      getPositionsCategoryProductMerchandising: {\n        result: JSON.stringify(positions),\n      },\n    })\n  }\n\n  useEffect(() => {\n    setNbTopRows(products?.data?.products.paginationInfo.totalCount || 0)\n  }, [products?.data?.products.paginationInfo.totalCount, setNbTopRows])\n\n  const topProductsMap = Object.fromEntries(\n    topProducts.map(({ position, productId }) => [productId, position])\n  )\n  const tableRows =\n    (products.data?.products?.collection.sort(\n      (a, b) =>\n        topProductsMap[getIdFromIri(a.id)] - topProductsMap[getIdFromIri(b.id)]\n    ) as unknown as ITableRow[]) ?? []\n  const withSelection = selectedRows?.length !== undefined\n  const massiveSelectionState =\n    withSelection && selectedRows\n      ? selectedRows.length === tableRows.length\n      : false\n  const massiveSelectionIndeterminate =\n    withSelection && selectedRows.length > 0\n      ? selectedRows.length < tableRows.length\n      : false\n\n  function handleSelection(rowIds: (string | number)[] | boolean): void {\n    if (rowIds instanceof Array) {\n      onSelectedRows(rowIds as string[])\n    } else if (rowIds) {\n      onSelectedRows(products.data.products.collection.map((row) => row.id))\n    } else {\n      onSelectedRows([])\n    }\n  }\n\n  return (\n    products.status === LoadStatus.SUCCEEDED &&\n    sortValue === 'category__position' &&\n    tableRows.length !== 0 && (\n      <TopProductsTable\n        border\n        draggable\n        Field={FieldGuesser}\n        massiveSelectionIndeterminate={massiveSelectionIndeterminate}\n        massiveSelectionState={massiveSelectionState}\n        onReOrder={handleReorder}\n        onSelection={handleSelection}\n        selectedRows={selectedRows}\n        tableHeaders={productTableheader}\n        tableRows={tableRows}\n        withSelection={withSelection}\n        configuration={configuration}\n        hasEditLink={hasEditLink}\n        editLink={editLink}\n      />\n    )\n  )\n}\n\nexport default TopTable\n","import React from 'react'\nimport { styled } from '@mui/system'\nimport { useTranslation } from 'next-i18next'\n\nimport TopProductsBanner from '../../molecules/CustomTable/TopProductsBanner/TopProductsBanner'\nimport CustomTable, {\n  ICustomTableProps,\n} from '../../organisms/CustomTable/CustomTable'\n\nconst Container = styled('div')(({ theme }) => ({\n  borderRadius: theme.shape.borderRadius,\n  overflow: 'hidden',\n}))\n\nfunction TopProductsTable(props: ICustomTableProps): JSX.Element {\n  const { t } = useTranslation('common')\n\n  return (\n    <Container>\n      <TopProductsBanner bannerText={t('searchResults.topProducts')} />\n      <CustomTable {...props} />\n    </Container>\n  )\n}\n\nexport default TopProductsTable\n","import React, { FormEvent } from 'react'\nimport { Grid, InputAdornment, Paper } from '@mui/material'\nimport { useTranslation } from 'next-i18next'\n\nimport InputTextWithoutError, {\n  IInputTextProps,\n} from '../../../atoms/form/InputTextWithoutError'\nimport IonIcon from '../../../atoms/IonIcon/IonIcon'\n\nimport { CustomNoTopProduct, SearchResult, SearchTitle } from './Search.styled'\n\ninterface IProps extends Omit<IInputTextProps, 'ref'> {\n  nbResults: number\n  nbTopProducts: number\n  sortValue: string\n  searchValue: string\n  onSearch?: (value: string) => void\n  onValSearchOnChange?: (value: string) => void\n  isInputAdornmentClickable?: boolean\n}\n\nexport default function SearchBar(props: IProps): JSX.Element {\n  const {\n    nbResults,\n    nbTopProducts,\n    sortValue,\n    onSearch,\n    searchValue,\n    onValSearchOnChange,\n    isInputAdornmentClickable,\n    ...inputTextProps\n  } = props\n\n  const { t } = useTranslation('categories')\n\n  function handleSubmit(event: FormEvent): void {\n    event.preventDefault()\n    onSearch(searchValue)\n  }\n\n  const value = {\n    value:\n      sortValue === 'category__position' && !inputTextProps.value\n        ? nbResults + nbTopProducts\n        : nbResults,\n    result: t('searchBar.results', { count: nbResults }),\n  }\n\n  const result = t('searchBarResult', { value })\n\n  const valuePinned = {\n    value: nbTopProducts,\n    result: t('pinned.results', { count: nbTopProducts }),\n  }\n  const resultPinned = t('searchBarResult', { value: valuePinned })\n\n  function handleClick(): void {\n    onSearch(searchValue)\n  }\n\n  const hasProduct = Boolean(nbTopProducts + nbResults)\n\n  return (\n    <Paper variant=\"outlined\">\n      <Grid container justifyContent=\"space-between\" sx={{ padding: '16px' }}>\n        <Grid container direction=\"column\" sx={{ width: '100%', gap: '4px' }}>\n          <div style={{ display: 'flex', justifyContent: 'space-between' }}>\n            <div style={{ display: 'flex', flexDirection: 'column' }}>\n              <SearchTitle>{t('searchBar.title')}</SearchTitle>\n              <SearchResult>\n                {!hasProduct ? (\n                  <CustomNoTopProduct>\n                    {t('noProductSearch')}\n                  </CustomNoTopProduct>\n                ) : (\n                  <>\n                    {result}{' '}\n                    {sortValue === 'category__position' &&\n                      !inputTextProps.value &&\n                      `(${resultPinned})`}\n                  </>\n                )}\n              </SearchResult>\n            </div>\n            <form onSubmit={handleSubmit}>\n              <InputTextWithoutError\n                id=\"input-text\"\n                required={false}\n                disabled={false}\n                value={searchValue}\n                onChange={onValSearchOnChange}\n                {...inputTextProps}\n                placeholder={t('searchBar.placeholder')}\n                endAdornment={\n                  <InputAdornment\n                    position=\"end\"\n                    onClick={isInputAdornmentClickable ? handleClick : null}\n                    sx={{\n                      cursor: isInputAdornmentClickable ? 'pointer' : '',\n                    }}\n                  >\n                    <IonIcon name=\"search\" />\n                  </InputAdornment>\n                }\n              />\n            </form>\n          </div>\n          {Boolean(\n            hasProduct &&\n              nbTopProducts === 0 &&\n              sortValue === 'category__position'\n          ) && (\n            <CustomNoTopProduct>{t('labelForPinProduct')}</CustomNoTopProduct>\n          )}\n        </Grid>\n      </Grid>\n    </Paper>\n  )\n}\n","import { Grid, styled } from '@mui/material'\n\nexport const SearchTitle = styled(Grid)(() => ({\n  fontFamily: 'var(--gally-font)',\n  fontStyle: 'normal',\n  fontWeight: '600',\n  fontSize: '16px',\n  lineHeight: '24px',\n  color: '#151A47',\n}))\n\nexport const SearchResult = styled(Grid)(({ theme }) => ({\n  fontFamily: 'var(--gally-font)',\n  fontStyle: 'normal',\n  fontWeight: '400',\n  fontSize: '12px',\n  lineHeight: '18px',\n  color: '#424880',\n  display: 'flex',\n  flexDirection: 'column',\n  gap: theme.spacing(1),\n}))\n\nexport const CustomNoTopProduct = styled('div')(({ theme }) => ({\n  fontFamily: 'var(--gally-font)',\n  fontStyle: 'normal',\n  fontWeight: '400',\n  fontSize: '12px',\n  lineHeight: '18px',\n  color: theme.palette.colors.primary['500'],\n}))\n","import React, { ReactNode, useCallback, useContext, useEffect } from 'react'\nimport { styled } from '@mui/system'\nimport {\n  IMenu,\n  LoadStatus,\n  isError,\n  isValidUser,\n} from '@elastic-suite/gally-admin-shared'\n\nimport { breadcrumbContext } from '../../../contexts'\n\nimport { useApiFetch, useUser } from '../../../hooks'\nimport {\n  selectChildrenState,\n  selectMenu,\n  selectMenuItemActive,\n  selectSidebarState,\n  selectSidebarStateTimeout,\n  setChildState,\n  setMenu,\n  setMenuItemActive,\n  setSidebarState,\n  setSidebarStateTimeout,\n  useAppDispatch,\n  useAppSelector,\n} from '../../../store'\n\nimport IonIcon from '../../atoms/IonIcon/IonIcon'\nimport AppBar from '../../molecules/layout/appBar/AppBar'\nimport Sidebar from '../../molecules/layout/Sidebar/Sidebar'\n\n/*\n * TODO: THIBO: Update AppBar\n * Custom Layout to implement blueprints\n * See: https://marmelab.com/react-admin/Theming.html#using-a-custom-layout\n */\n\nconst CustomRoot = styled('div')(({ theme }) => ({\n  display: 'flex',\n  flexDirection: 'column',\n  zIndex: 1,\n  minHeight: '100vh',\n  backgroundColor: theme.palette.background.default,\n  position: 'relative',\n  fontFamily: 'var(--gally-font)',\n}))\n\nconst CustomAppFrame = styled('div')({\n  display: 'flex',\n  flexDirection: 'row',\n  overflowX: 'auto',\n  minHeight: '100vh',\n})\n\nconst CustomContentWithAppBar = styled('div')({\n  display: 'flex',\n  flexDirection: 'column',\n  flexGrow: 1,\n  width: 'auto',\n  boxSizing: 'border-box',\n  height: '100vh',\n  overflowY: 'scroll',\n  overflowX: 'hidden',\n  position: 'fixed',\n  top: '0',\n  right: '0',\n  scrollbarWidth: 'none',\n  '&::-webkit-scrollbar': {\n    width: 0,\n  },\n})\n\nconst CustomContent = styled('div')(({ theme }) => ({\n  display: 'flex',\n  flexDirection: 'column',\n  flexGrow: 2,\n  paddingTop: '156px',\n  paddingBottom: theme.spacing(5),\n  paddingLeft: theme.spacing(4),\n  paddingRight: theme.spacing(4),\n  backgroundColor: theme.palette.background.page,\n  position: 'relative',\n}))\n\nconst CustomButtonCollapse = styled('button')(({ theme }) => ({\n  display: 'flex',\n  justifyContent: 'center',\n  alignItems: 'center',\n  position: 'fixed',\n  top: theme.spacing(6),\n  background: theme.palette.background.paper,\n  border: '1px solid #E2E6F3',\n  boxSizing: 'border-box',\n  borderRadius: theme.spacing(2),\n  width: theme.spacing(4),\n  height: theme.spacing(4),\n  cursor: 'pointer',\n  zIndex: '99',\n}))\n\nconst CustomToClose = styled(CustomButtonCollapse)({\n  left: 'calc(66px - 16px)',\n  transition: 'left linear',\n})\n\nconst CustomToOpen = styled(CustomButtonCollapse)({\n  left: 'calc(279px - 16px)',\n  transition: 'left linear',\n})\n\ninterface IProps {\n  children: ReactNode\n}\n\nfunction Layout({ children }: IProps): JSX.Element {\n  const dispatch = useAppDispatch()\n  const sidebarState = useAppSelector(selectSidebarState)\n  const sidebarStateTimeout = useAppSelector(selectSidebarStateTimeout)\n  const menuItemActive = useAppSelector(selectMenuItemActive) || ''\n  const childrenState = useAppSelector(selectChildrenState)\n  const menu = useAppSelector(selectMenu)\n  const [breadcrumb] = useContext(breadcrumbContext)\n  const fetchApi = useApiFetch()\n  const user = useUser()\n\n  // Load menu\n  useEffect(() => {\n    if (user) {\n      dispatch(setMenu({ status: LoadStatus.LOADING }))\n      fetchApi<IMenu>('menu').then((json) => {\n        if (isError(json)) {\n          dispatch(setMenu({ error: json.error, status: LoadStatus.FAILED }))\n        } else {\n          dispatch(setMenu({ data: json, status: LoadStatus.SUCCEEDED }))\n        }\n      })\n    }\n  }, [dispatch, fetchApi, user])\n\n  useEffect(() => {\n    dispatch(setMenuItemActive(breadcrumb?.join('_')))\n  }, [dispatch, breadcrumb])\n\n  // function to collapse sidebar when click on button\n  function collapseSidebar(): void {\n    if (sidebarState) {\n      setTimeout(() => {\n        dispatch(setSidebarState(!sidebarState))\n      }, 500)\n    } else {\n      dispatch(setSidebarState(!sidebarState))\n    }\n    dispatch(setSidebarStateTimeout(sidebarState))\n  }\n\n  // Function to collapse or not children\n  const toggleChild = useCallback(\n    (code: string, childState: boolean) => {\n      dispatch(setChildState({ code, value: childState }))\n    },\n    [dispatch]\n  )\n\n  const isConnected = isValidUser(user)\n  const Collapse = !sidebarState ? CustomToClose : CustomToOpen\n\n  return (\n    <CustomRoot>\n      <CustomAppFrame>\n        <Sidebar\n          childrenState={childrenState}\n          menu={menu}\n          menuItemActive={menuItemActive}\n          onChildToggle={toggleChild}\n          sidebarState={sidebarState}\n          sidebarStateTimeout={sidebarStateTimeout}\n        />\n        <CustomContentWithAppBar\n          style={{\n            left: sidebarState ? '279px' : '67px',\n          }}\n        >\n          <Collapse\n            onClick={collapseSidebar}\n            data-testid=\"sidebarMenuCollapseButton\"\n          >\n            <IonIcon name=\"code-outline\" style={{ width: 18, height: 18 }} />\n          </Collapse>\n          <AppBar slug={breadcrumb} menu={menu} isConnected={isConnected} />\n          <CustomContent>{children}</CustomContent>\n        </CustomContentWithAppBar>\n      </CustomAppFrame>\n    </CustomRoot>\n  )\n}\n\nexport default Layout\n","import React, { useContext, useState } from 'react'\nimport { useTranslation } from 'next-i18next'\nimport {\n  ITabContentProps,\n  ITableConfig,\n  ITableRow,\n} from '@elastic-suite/gally-admin-shared'\n\nimport { useFilters, useResource } from '../../../hooks'\n\nimport Alert from '../../atoms/Alert/Alert'\n\nimport ResourceTable from '../ResourceTable/ResourceTable'\n\nimport Metadata from '../../atoms/metadata/Metadata'\nimport { metadataContext } from '../../../contexts'\n\nfunction SettingsAttributes(props: ITabContentProps): JSX.Element {\n  const { active } = props\n\n  const [fixedFilters, setFixedFilters] = useState<Record<string, string>>({\n    'metadata.entity': 'product',\n  })\n\n  const [\n    isVisibleAlertSettingsAttributes,\n    setIsVisibleAlertSettingsAttributes,\n  ] = useState(true)\n\n  const { t } = useTranslation('settings')\n\n  const resource = useResource('SourceField')\n  const [activeFilters, setActiveFilters] = useFilters(resource)\n\n  function getTableConfigs(rows: ITableRow[]): ITableConfig[] {\n    return rows.map((row) => ({\n      isFilterable: { disabled: Boolean(row.isSystem) },\n      isSearchable: { disabled: Boolean(row.isSystem) },\n      selection: { disabled: Boolean(row.isSystem) },\n      isSortable: { disabled: Boolean(row.isSystem) },\n      isUsedForRules: { disabled: Boolean(row.isSystem) },\n      isUsedInAutocomplete: { disabled: Boolean(row.isSystem) },\n    }))\n  }\n\n  const metadatas = useContext(metadataContext)\n\n  if (!metadatas) {\n    return null\n  }\n\n  return (\n    <>\n      {Boolean(isVisibleAlertSettingsAttributes) && (\n        <Alert\n          message={t('settingsAttributes.alert')}\n          onShut={(): void => setIsVisibleAlertSettingsAttributes(false)}\n        />\n      )}\n      <Metadata\n        setFixedFilters={setFixedFilters}\n        fixedFilters={fixedFilters['metadata.entity']}\n        metadatas={metadatas}\n      />\n      <ResourceTable\n        active={active}\n        activeFilters={activeFilters}\n        filters={fixedFilters}\n        getTableConfigs={getTableConfigs}\n        resourceName=\"SourceField\"\n        setActiveFilters={setActiveFilters}\n        showSearch\n      />\n    </>\n  )\n}\n\nexport default SettingsAttributes\n","import React from 'react'\nimport {\n  IMetadata,\n  firstLetterUppercase,\n} from '@elastic-suite/gally-admin-shared'\n\nimport { useTranslation } from 'next-i18next'\n\nimport DropDownWithoutError from '../form/DropDownWithoutError'\nimport { styled } from '@mui/system'\n\nconst CustomBlocEntity = styled('div')(({ theme }) => ({\n  border: '1px solid',\n  borderColor: theme.palette.colors.neutral[300],\n  background: theme.palette.colors.white,\n  borderRadius: theme.spacing(1),\n  marginBottom: theme.spacing(2),\n  display: 'flex',\n  gap: theme.spacing(1.5),\n  flexDirection: 'row',\n  alignItems: 'center',\n  padding: theme.spacing(2),\n}))\n\nconst CustomNameBloc = styled('div')(({ theme }) => ({\n  color: theme.palette.colors.neutral[900],\n  fontSize: theme.spacing(1.9),\n  fontWeight: 'normal',\n  lineHeight: '20px',\n}))\n\ninterface IProps {\n  metadatas: IMetadata[]\n  fixedFilters: string\n  setFixedFilters: (val: Record<string, string>) => void\n  filterField?: string\n}\n\nfunction Metadata(props: IProps): JSX.Element {\n  const { metadatas, fixedFilters, setFixedFilters, filterField } = props\n  const { t } = useTranslation('common')\n\n  const metadataOptions = metadatas?.map((item) => ({\n    label: firstLetterUppercase(item.entity),\n    value: item.entity,\n  }))\n  return (\n    <CustomBlocEntity>\n      <CustomNameBloc>{t('entity')}</CustomNameBloc>\n      <DropDownWithoutError\n        options={metadataOptions}\n        value={fixedFilters}\n        onChange={(e: string): void => {\n          const filters: Record<string, string> = {}\n          filters[filterField ? filterField : 'metadata.entity'] = e\n          setFixedFilters(filters)\n        }}\n      />\n    </CustomBlocEntity>\n  )\n}\n\nexport default Metadata\n","import React, { useMemo } from 'react'\nimport { useTranslation } from 'next-i18next'\n\nimport { useApiList, useResource, useTabs } from '../../../hooks'\nimport { IHydraCatalog, IRouterTab } from '@elastic-suite/gally-admin-shared'\n\nimport SubTabs from '../../atoms/subTabs/SubTabs'\nimport Catalogs from '../../molecules/layout/scope/Catalogs'\nimport ActiveLocales from '../../molecules/layout/scope/ActiveLocales'\n\nfunction SettingsScope(): JSX.Element {\n  const { t } = useTranslation('catalog')\n  const resourceName = 'Catalog'\n  const resource = useResource(resourceName)\n  const [catalogsFields] = useApiList<IHydraCatalog>(resource, false)\n  const { data, error } = catalogsFields\n\n  const routerTabs: IRouterTab[] = useMemo(\n    () => [\n      {\n        Component: Catalogs,\n        componentProps: { content: data },\n        default: true,\n        id: 0,\n        label: t('title.catalogs'),\n        url: '/admin/settings/scope/catalogs',\n      },\n      {\n        Component: ActiveLocales,\n        componentProps: { content: data },\n        id: 1,\n        label: t('title.activeLocales'),\n        url: '/admin/settings/scope/activeLocales',\n      },\n    ],\n    [data, t]\n  )\n  const [activeTab, handleTabChange] = useTabs(routerTabs)\n  const { id } = activeTab\n\n  if (error || !data) {\n    return null\n  }\n\n  return (\n    <SubTabs\n      defaultActiveId={id}\n      onChange={handleTabChange}\n      tabs={routerTabs}\n    />\n  )\n}\n\nexport default SettingsScope\n","import React, { FormEvent, useEffect, useState } from 'react'\n\nimport {\n  useApiFetch,\n  useLog,\n  useResource,\n  useResourceOperations,\n} from '../../../hooks'\n\nimport CustomForm from '../../organisms/CustomForm/CustomForm'\nimport Button from '../../atoms/buttons/Button'\nimport BackToLastPage from '../../atoms/backToLastPage/BackToLastPage'\nimport {\n  IErrorsForm,\n  IMainContext,\n  concatenateValuesWithLineBreaks,\n  firstLetterUppercase,\n  initResourceData,\n  isError,\n} from '@elastic-suite/gally-admin-shared'\nimport { closeSnackbar, enqueueSnackbar } from 'notistack'\nimport { useTranslation } from 'next-i18next'\nimport { Box, Theme } from '@mui/material'\nimport { useRouter } from 'next/router'\nimport PageTitle from '../../atoms/PageTitle/PageTitle'\nimport PopIn from '../../atoms/modals/PopIn'\nimport { styled } from '@mui/system'\nimport Form from '../../atoms/form/Form'\nimport { MainSectionFieldSet } from '../../organisms/CustomForm/CustomForm.styled'\n\nconst CustomDoubleButtonSticky = styled('div')(({ theme }) => ({\n  display: 'flex',\n  flexDirection: 'row',\n  gap: (theme as Theme).spacing(2),\n}))\n\ninterface IViolations {\n  propertyPath?: string\n  message?: string\n}\n\ninterface IProps {\n  id?: string\n  resourceName: string\n  title?: string\n  entityLabel?: string\n}\n\nfunction ResourceForm(props: IProps): JSX.Element {\n  const { resourceName, id, title, entityLabel } = props\n  const entity = (entityLabel ?? resourceName).toLowerCase()\n  const { t } = useTranslation('resourceForm')\n  const resource = useResource(resourceName, IMainContext.FORM)\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const { replace, create, remove } = useResourceOperations<any>(resource)\n  const [errors, setErrors] = useState<IErrorsForm>()\n\n  const router = useRouter()\n  const [isLoading, setIsLoading] = useState(false)\n\n  const [data, setData] = useState<Record<string, unknown>>(\n    id ? {} : initResourceData(resource)\n  )\n\n  const fetchApi = useApiFetch()\n  const log = useLog()\n\n  useEffect(() => {\n    if (id) {\n      fetchApi<Record<string, unknown>>(`${resource.url}/${id}`).then(\n        (json) => {\n          if (isError(json)) {\n            return router.push('./grid')\n          }\n          setData(json)\n        }\n      )\n    }\n  }, [id, fetchApi, log, resource.url, router])\n\n  function transformPropertyPath(propertyPath: string): string {\n    switch (propertyPath) {\n      case 'fromDate':\n      case 'toDate':\n        return 'doubleDatePicker'\n\n      default:\n        return propertyPath\n    }\n  }\n\n  async function sendingData(): Promise<unknown> {\n    setIsLoading(true)\n    let sendingToApi\n    if (id) {\n      sendingToApi = await replace(data)\n    } else {\n      sendingToApi = await create(data)\n    }\n    if (!isError(sendingToApi)) {\n      setData(sendingToApi)\n      enqueueSnackbar(\n        id ? t('alert.update', { entity }) : t('alert.create', { entity }),\n        {\n          onShut: closeSnackbar,\n          variant: 'success',\n        }\n      )\n      if (!id) {\n        router.push('./grid')\n        return\n      }\n    } else {\n      const newErrors: IErrorsForm = { fields: {}, global: [] }\n\n      sendingToApi?.violations?.forEach((err: IViolations) => {\n        if (err?.propertyPath && err?.message) {\n          newErrors.fields[transformPropertyPath(err?.propertyPath)] =\n            err.message\n        } else if (err?.message) {\n          newErrors.global.push(err.message)\n        }\n      })\n\n      enqueueSnackbar(t('error.form'), {\n        onShut: closeSnackbar,\n        variant: 'error',\n      })\n\n      if (newErrors.global.length !== 0) {\n        enqueueSnackbar(concatenateValuesWithLineBreaks(newErrors.global), {\n          onShut: closeSnackbar,\n          variant: 'error',\n          style: { whiteSpace: 'pre-line' },\n          autoHideDuration: Infinity,\n        })\n      }\n      setErrors(newErrors)\n    }\n    setIsLoading(false)\n  }\n\n  async function deleteData(): Promise<void> {\n    setIsLoading(true)\n    const sendingToApi = await remove(id)\n    if (!isError(sendingToApi)) {\n      enqueueSnackbar(firstLetterUppercase(t('alert.remove', { entity })), {\n        onShut: closeSnackbar,\n        variant: 'success',\n      })\n      router.push('./grid')\n      return\n    }\n    enqueueSnackbar(\n      sendingToApi?.error?.message ?? sendingToApi?.violations[0]?.message,\n      {\n        onShut: closeSnackbar,\n        variant: 'error',\n      }\n    )\n    setIsLoading(false)\n  }\n  const [showAllErrors, setShowAllErrors] = useState(false)\n\n  function handleSubmit(\n    event: FormEvent<HTMLFormElement>,\n    formIsValid: boolean\n  ): void {\n    event.preventDefault()\n    if (formIsValid) {\n      sendingData()\n    } else {\n      setShowAllErrors(true)\n    }\n  }\n\n  return (\n    <MainSectionFieldSet>\n      <Form\n        onSubmit={handleSubmit}\n        style={{\n          display: 'flex',\n          gap: 16,\n          flexDirection: 'column',\n        }}\n      >\n        {title ? (\n          <PageTitle title={title} sx={{ marginBottom: '32px' }} sticky>\n            <CustomDoubleButtonSticky>\n              <BackToLastPage urlRedirection=\"./grid\" />\n              {id ? (\n                <PopIn\n                  confirmationPopIn\n                  position=\"center\"\n                  onConfirm={deleteData}\n                  titlePopIn={t('confirmation.message.delete', { entity })}\n                  cancelName={t('cancel')}\n                  confirmName={t('confirm')}\n                  triggerElement={\n                    <Button\n                      display=\"secondary\"\n                      disabled={isLoading}\n                      data-testid=\"deleteButtonResourceForm\"\n                      endIcon={<ion-icon name=\"trash-outline\" />}\n                    >\n                      {t('delete')}\n                    </Button>\n                  }\n                  loading={isLoading}\n                />\n              ) : null}\n              <Box>\n                <Button\n                  type=\"submit\"\n                  data-testid=\"submitButtonResourceForm\"\n                  loading={isLoading}\n                  endIcon={\n                    id ? (\n                      <ion-icon name=\"save-outline\" />\n                    ) : (\n                      <ion-icon name=\"add-circle-outline\" />\n                    )\n                  }\n                >\n                  {id ? t('save') : t('create')}\n                </Button>\n              </Box>\n            </CustomDoubleButtonSticky>\n          </PageTitle>\n        ) : null}\n        <CustomForm\n          data={data}\n          showAllErrors={showAllErrors}\n          onChange={setData}\n          resource={resource}\n          errors={errors}\n        />\n      </Form>\n      <CustomForm\n        data={data}\n        showAllErrors={showAllErrors}\n        onChange={setData}\n        resource={resource}\n        errors={errors}\n        externalFieldSet\n      />\n    </MainSectionFieldSet>\n  )\n}\n\nexport default ResourceForm\n","import React from 'react'\nimport { useApiHeadersForm } from '../../../hooks'\nimport {\n  IErrorsForm,\n  IFieldConfigFormWithFieldset,\n  IOption,\n  IResource,\n} from '@elastic-suite/gally-admin-shared'\nimport FormFieldGuesser from '../../stateful/FieldGuesser/FormFieldGuesser'\nimport Tooltip from '../../atoms/modals/Tooltip'\nimport IonIcon from '../../atoms/IonIcon/IonIcon'\nimport {\n  LabelFieldSet,\n  ListItemForm,\n  MainSectionFieldSet,\n  SectionFieldSet,\n} from './CustomForm.styled'\nimport { useTranslation } from 'next-i18next'\n\ninterface IProps {\n  data?: Record<string, unknown>\n  onChange: (val: Record<string, unknown>) => void\n  resource: IResource\n  errors?: IErrorsForm\n  showAllErrors?: boolean\n  externalFieldSet?: boolean\n}\n\nfunction CustomForm(props: IProps): JSX.Element {\n  const {\n    data,\n    onChange,\n    resource,\n    errors,\n    showAllErrors,\n    externalFieldSet = false,\n  } = props\n\n  const headers = useApiHeadersForm(resource)\n  const { t } = useTranslation('api')\n\n  function handleChange(\n    name: string | Record<string, string> | IOption<string>,\n    response: unknown\n  ): void {\n    if (response instanceof Array || typeof response !== 'object') {\n      return onChange({ ...data, [name as string]: response })\n    }\n    return onChange({ ...data, ...response })\n  }\n  return (\n    <MainSectionFieldSet>\n      {headers.map((fieldset: IFieldConfigFormWithFieldset) => {\n        if (\n          (externalFieldSet && !fieldset.external) ||\n          (!externalFieldSet && fieldset.external) ||\n          fieldset.children.length === 0\n        ) {\n          return null\n        }\n\n        return (\n          <SectionFieldSet\n            key={fieldset?.position}\n            data-testid={`${fieldset.code}FieldSet`}\n          >\n            {Boolean(fieldset.label) && (\n              <LabelFieldSet>\n                {t(fieldset.label)}\n                {Boolean(fieldset.tooltip) && (\n                  <Tooltip title={t(fieldset.tooltip) as string}>\n                    <span style={{ display: 'inline-block' }}>\n                      <IonIcon name=\"informationCircle\" tooltip />\n                    </span>\n                  </Tooltip>\n                )}\n              </LabelFieldSet>\n            )}\n            <ListItemForm>\n              {fieldset.children.map((field) => {\n                return (\n                  <FormFieldGuesser\n                    key={field?.id}\n                    field={field}\n                    label={t(field?.label)}\n                    infoTooltip={t(field?.infoTooltip)}\n                    showError={showAllErrors}\n                    onChange={handleChange}\n                    editable\n                    data={data}\n                    placeholder={\n                      field?.placeholder ? t(field?.placeholder) : undefined\n                    }\n                    helperText={errors?.fields?.[field?.name]}\n                    error={Boolean(errors?.fields?.[field?.name])}\n                  />\n                )\n              })}\n            </ListItemForm>\n          </SectionFieldSet>\n        )\n      })}\n    </MainSectionFieldSet>\n  )\n}\n\nexport default CustomForm\n","import React from 'react'\nimport {\n  IFieldConfig,\n  IFieldGuesserProps,\n} from '@elastic-suite/gally-admin-shared'\n\nimport FieldGuesser from './FieldGuesser'\nimport { useValue } from '../../../services'\n\ninterface IFormFieldGuesserProps\n  extends Omit<IFieldGuesserProps, 'value' | 'id' | 'name' | 'field'> {\n  field: IFieldConfig\n}\n\nfunction FormFieldGuesser(props: IFormFieldGuesserProps): JSX.Element {\n  const { data, field, ...fieldProps } = props\n  const value = useValue(field, data)\n\n  return <FieldGuesser {...field} {...fieldProps} data={data} value={value} />\n}\n\nexport default FormFieldGuesser\n","import { styled } from '@mui/system'\n\nexport const MainSectionFieldSet = styled('div')(({ theme }) => ({\n  display: 'flex',\n  flexDirection: 'column',\n  gap: theme.spacing(4),\n  '.MuiAutocomplete-inputRoot:not(.combinationRules .MuiAutocomplete-inputRoot, .textFieldTagsMultiple .MuiAutocomplete-inputRoot)':\n    {\n      width: 300,\n      maxWidth: 300,\n    },\n}))\n\nexport const SectionFieldSet = styled('div')(({ theme }) => ({\n  display: 'flex',\n  flexDirection: 'column',\n  gap: theme.spacing(4),\n  background: theme.palette.colors.white,\n  border: '1px solid ',\n  borderColor: theme.palette.colors.neutral[300],\n  borderRadius: theme.spacing(1),\n  padding: theme.spacing(4),\n  '.switch': {\n    marginBottom: '-10px',\n  },\n}))\n\nexport const ListItemForm = styled('div')(({ theme }) => ({\n  display: 'flex',\n  flexDirection: 'column',\n  gap: theme.spacing(3),\n}))\n\nexport const LabelFieldSet = styled('div')(({ theme }) => ({\n  fontWeight: '600',\n  fontSize: '20px',\n  lineHeight: '30px',\n  color: theme.palette.colors.neutral[900],\n  display: 'flex',\n  flexDirection: 'row',\n  gap: theme.spacing(1),\n  alignItems: 'center',\n  fontFamily: 'var(--gally-font)',\n}))\n","import React, { ReactNode } from 'react'\nimport { useRouter } from 'next/router'\nimport Button from '../buttons/Button'\nimport { ButtonProps } from '@mui/material'\nimport { useTranslation } from 'next-i18next'\n\ninterface IProps extends ButtonProps {\n  urlRedirection?: string\n  children?: ReactNode\n}\n\nfunction BackToLastPage(props: IProps): JSX.Element {\n  const { urlRedirection, children, ...btnProps } = props\n  const router = useRouter()\n\n  const { t } = useTranslation('common')\n\n  function handleRedirection(): Promise<boolean> | void {\n    if (urlRedirection) {\n      return router.push(urlRedirection)\n    }\n    return router.back()\n  }\n\n  return (\n    <Button\n      display=\"tertiary\"\n      color=\"info\"\n      data-testid=\"backButton\"\n      startIcon={<ion-icon name=\"arrow-back-outline\" />}\n      {...btnProps}\n      onClick={handleRedirection}\n    >\n      {children ?? t('back')}\n    </Button>\n  )\n}\n\nexport default BackToLastPage\n","import React, { ReactNode } from 'react'\nimport { ThemeProvider } from '@mui/material/styles'\nimport { StyledEngineProvider } from '@mui/styled-engine'\nimport { Provider } from 'react-redux'\nimport { SnackbarProvider } from 'notistack'\nimport { theme } from '@elastic-suite/gally-admin-shared'\n\nimport { AppStore } from '../../../store'\n\nimport Alert from '../../atoms/Alert/Alert'\n\nimport BreadcrumbProvider from '../BreadcrumbProvider/BreadcrumbProvider'\nimport I18nProvider from '../I18nProvider/I18nProvider'\n\ninterface IProps {\n  children: ReactNode\n  store: AppStore\n}\n\nfunction AppProvider(props: IProps): JSX.Element {\n  const { children, store } = props\n\n  return (\n    <Provider store={store}>\n      <ThemeProvider theme={theme}>\n        <StyledEngineProvider injectFirst>\n          <SnackbarProvider\n            Components={{\n              default: Alert,\n              error: Alert,\n              info: Alert,\n              success: Alert,\n              warning: Alert,\n            }}\n            autoHideDuration={5000}\n            maxSnack={3}\n          >\n            <I18nProvider>\n              <BreadcrumbProvider>{children}</BreadcrumbProvider>\n            </I18nProvider>\n          </SnackbarProvider>\n        </StyledEngineProvider>\n      </ThemeProvider>\n    </Provider>\n  )\n}\n\nexport default AppProvider\n","import React, {\n  Dispatch,\n  ReactNode,\n  SetStateAction,\n  useMemo,\n  useState,\n} from 'react'\n\nimport { breadcrumbContext } from '../../../contexts'\n\ninterface IProps {\n  children: ReactNode\n}\n\nfunction BreadcrumbProvider(props: IProps): JSX.Element {\n  const { children } = props\n  const [breadcrumb, setBreadcrumb] = useState([])\n  const breadcrumbContextValue: [string[], Dispatch<SetStateAction<string[]>>] =\n    useMemo(() => [breadcrumb, setBreadcrumb], [breadcrumb])\n\n  return (\n    <breadcrumbContext.Provider value={breadcrumbContextValue}>\n      {children}\n    </breadcrumbContext.Provider>\n  )\n}\n\nexport default BreadcrumbProvider\n","import React, { useEffect, useMemo } from 'react'\nimport { TFunction, useTranslation } from 'next-i18next'\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'\nimport { Callback } from 'i18next'\n\nimport { i18nContext } from '../../../contexts'\nimport { setLanguage, useAppDispatch } from '../../../store'\nimport { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns'\nimport { Locale } from 'date-fns'\n\ninterface ILocale {\n  load: () => Promise<{ default: Locale }>\n  locale?: Locale\n}\n\nenum ILocaleAvailable {\n  FR = 'fr',\n  EN_US = 'en',\n}\n\nconst languages: Record<ILocaleAvailable, ILocale> = {\n  fr: {\n    load: () => import('date-fns/locale/fr'),\n  },\n  en: {\n    load: () => import('date-fns/locale/en-US'),\n  },\n}\ninterface IProps {\n  children: JSX.Element\n}\n\nfunction I18nProvider(props: IProps): JSX.Element {\n  const { children } = props\n  const translation = useTranslation()\n  const dispatch = useAppDispatch()\n  const { i18n } = translation\n\n  useEffect(() => {\n    if (i18n.language && i18n.language !== 'en') {\n      context.changeLanguage(i18n.language)\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [i18n.language])\n\n  useEffect(() => {\n    if (i18n.language) {\n      dispatch(setLanguage(i18n.language))\n    }\n  }, [dispatch, i18n.language])\n\n  const context = useMemo(\n    () => ({\n      changeLanguage: async (\n        language: string,\n        callback?: Callback\n      ): Promise<TFunction> => {\n        const locale = await languages[language as ILocaleAvailable].load()\n        if (languages[language as ILocaleAvailable] && locale.default) {\n          languages[language as ILocaleAvailable].locale = locale.default\n          return translation.i18n.changeLanguage(language, callback)\n        }\n        return null\n      },\n    }),\n    [translation.i18n]\n  )\n\n  return (\n    <LocalizationProvider\n      adapterLocale={languages[i18n.language as ILocaleAvailable]?.locale}\n      dateAdapter={AdapterDateFns}\n    >\n      <i18nContext.Provider value={context}>{children}</i18nContext.Provider>\n    </LocalizationProvider>\n  )\n}\n\nexport default I18nProvider\n","import {\n  IHydraCatalog,\n  IHydraResponse,\n  isError,\n  isValidUser,\n} from '@elastic-suite/gally-admin-shared'\nimport React, { ReactNode, useEffect, useState } from 'react'\n\nimport { catalogContext } from '../../../contexts'\nimport {\n  useApiFetch,\n  useCatalogs,\n  useLog,\n  useResource,\n  useUser,\n} from '../../../hooks'\n\ninterface IProps {\n  children: ReactNode\n}\n\nfunction CatalogProvider(props: IProps): JSX.Element {\n  const { children } = props\n\n  const log = useLog()\n  const fetchApi = useApiFetch()\n  const resource = useResource('Catalog')\n  const user = useUser()\n\n  const [catalogs, setCatalogs] = useState<IHydraCatalog[]>([])\n\n  useEffect(() => {\n    if (isValidUser(user)) {\n      fetchApi<IHydraResponse<IHydraCatalog>>(resource).then((json) => {\n        if (isError(json)) {\n          log(json.error)\n        } else {\n          setCatalogs(json['hydra:member'])\n        }\n      })\n    }\n  }, [fetchApi, log, resource, user])\n\n  const contextValue = useCatalogs(catalogs)\n\n  return (\n    <catalogContext.Provider value={contextValue}>\n      {children}\n    </catalogContext.Provider>\n  )\n}\n\nexport default CatalogProvider\n","import {\n  IHydraResponse,\n  IMetadata,\n  isError,\n  isValidUser,\n} from '@elastic-suite/gally-admin-shared'\nimport React, { ReactNode, useEffect, useState } from 'react'\n\nimport { metadataContext } from '../../../contexts'\nimport { useApiFetch, useLog, useResource, useUser } from '../../../hooks'\n\ninterface IProps {\n  children: ReactNode\n}\n\nfunction MetadataProvider(props: IProps): JSX.Element {\n  const { children } = props\n\n  const log = useLog()\n  const fetchApi = useApiFetch()\n  const resource = useResource('Metadata')\n  const user = useUser()\n\n  const [metadata, setMetadata] = useState<IMetadata[]>([])\n\n  useEffect(() => {\n    if (isValidUser(user)) {\n      fetchApi<IHydraResponse<IMetadata>>(resource).then((json) => {\n        if (isError(json)) {\n          log(json.error)\n        } else {\n          setMetadata(json['hydra:member'])\n        }\n      })\n    }\n  }, [fetchApi, log, resource, user])\n\n  return (\n    <metadataContext.Provider value={metadata}>\n      {children}\n    </metadataContext.Provider>\n  )\n}\n\nexport default MetadataProvider\n","import { useDataLoader } from '../../../hooks'\nimport {\n  selectApi,\n  selectBundles,\n  selectConfiguration,\n  useAppSelector,\n} from '../../../store'\n\ninterface IProps {\n  children: JSX.Element\n}\n\nfunction DataProvider(props: IProps): JSX.Element {\n  const { children } = props\n  const api = useAppSelector(selectApi)\n  const bundles = useAppSelector(selectBundles)\n  const configurations = useAppSelector(selectConfiguration)\n\n  // Load data in the store\n  useDataLoader()\n\n  if (!api || !bundles || !configurations) {\n    return null\n  }\n\n  return children\n}\n\nexport default DataProvider\n","import React, { ReactNode } from 'react'\n\nimport { optionsContext } from '../../../contexts'\nimport { useOptions } from '../../../hooks'\n\ninterface IProps {\n  children: ReactNode\n}\n\nfunction OptionsProvider(props: IProps): JSX.Element {\n  const { children } = props\n  const context = useOptions()\n  return (\n    <optionsContext.Provider value={context}>\n      {children}\n    </optionsContext.Provider>\n  )\n}\n\nexport default OptionsProvider\n","import HttpBackend from 'i18next-http-backend'\nimport ChainedBackend from 'i18next-chained-backend'\nimport LocalStorageBackend from 'i18next-localstorage-backend'\nimport { UserConfig } from 'next-i18next'\n\n// See https://github.com/i18next/i18next-http-backend/tree/master/example/next\nexport const nextI18nConfig = {\n  backend: {\n    backendOptions: [{ expirationTime: 60 * 60 * 1000 }],\n    backends:\n      typeof window !== 'undefined' ? [LocalStorageBackend, HttpBackend] : [],\n  },\n  i18n: {\n    defaultLocale: 'en',\n    locales: ['en', 'fr'],\n  },\n  serializeConfig: false,\n  use: typeof window !== 'undefined' ? [ChainedBackend] : [],\n} as unknown as UserConfig\n","import React, { FunctionComponent, useEffect } from 'react'\nimport Router, { useRouter } from 'next/router'\nimport { getDisplayName, isValidUser } from '@elastic-suite/gally-admin-shared'\n\nimport { useUser } from '../hooks'\nimport { setRequestedPath, useAppDispatch } from '../store'\n\nexport function withAuth<P extends Record<string, unknown>>(\n  Cmp: FunctionComponent<P>\n): FunctionComponent<P> {\n  function WithAuth(props: P): JSX.Element {\n    const { asPath } = useRouter()\n    const user = useUser()\n    const dispatch = useAppDispatch()\n\n    useEffect(() => {\n      if (!isValidUser(user)) {\n        dispatch(setRequestedPath(asPath))\n        Router.push('/login')\n      }\n    }, [asPath, dispatch, user])\n\n    if (!isValidUser(user)) {\n      return null\n    }\n\n    return <Cmp {...props} />\n  }\n\n  WithAuth.displayName = `WithAuth(${getDisplayName(Cmp)})`\n  return WithAuth\n}\n","import React, { FunctionComponent } from 'react'\nimport { getDisplayName } from '@elastic-suite/gally-admin-shared'\n\nimport OptionsProvider from '../components/stateful-providers/OptionsProvider/OptionsProvider'\n\nexport function withOptions<P extends Record<string, unknown>>(\n  Cmp: FunctionComponent<P>\n): FunctionComponent<P> {\n  function WithOptions(props: P): JSX.Element {\n    return (\n      <OptionsProvider>\n        <Cmp {...props} />\n      </OptionsProvider>\n    )\n  }\n\n  WithOptions.displayName = `WithOptions(${getDisplayName(Cmp)})`\n  return WithOptions\n}\n","import React, {\n  FormEvent,\n  SyntheticEvent,\n  useContext,\n  useEffect,\n  useState,\n} from 'react'\nimport { useRouter } from 'next/router'\nimport { useTranslation } from 'next-i18next'\nimport { Box, styled } from '@mui/system'\nimport { Paper } from '@mui/material'\nimport {\n  IApiSchemaOptions,\n  ICategories,\n  IExplainVariables,\n  IHydraResponse,\n  IRequestTypesOptions,\n  ITreeItem,\n  ProductRequestType,\n  getLimitationType,\n  getOptionsFromApiSchema,\n  isGraphQLValidVariables,\n} from '@elastic-suite/gally-admin-shared'\n\nimport { breadcrumbContext, catalogContext } from '../../../contexts'\nimport { withAuth, withOptions } from '../../../hocs'\nimport { useApiList, useFetchApi, useResource } from '../../../hooks'\nimport { selectConfiguration, useAppSelector } from '../../../store'\n\nimport Button from '../../../components/atoms/buttons/Button'\nimport MerchandiseBar from '../../../components/stateful/ProductPreview/MerchandiseBar'\nimport { DropDown, InputText, PageTitle } from '../../../components'\nimport TreeSelector from '../../../components/atoms/form/TreeSelector'\nimport ProductsPreviewBottom from '../../../components/stateful/ProductPreview/ProductsPreviewBottom'\nimport Form from '../../../components/atoms/form/Form'\n\nconst WrapperBlock = styled('div')(({ theme }) => ({\n  border: '1px solid',\n  borderColor: theme.palette.colors.neutral[300],\n  background: theme.palette.colors.white,\n  borderRadius: theme.spacing(1),\n  marginBottom: theme.spacing(2),\n  display: 'flex',\n  gap: theme.spacing(1.5),\n  flexDirection: 'row',\n  alignItems: 'top',\n  padding: theme.spacing(2),\n}))\n\nconst PreviewArea = styled(Box)(({ theme }) => ({\n  fontSize: '12px',\n  fontFamily: 'var(--gally-font)',\n  lineHeight: '18px',\n  paddingBottom: '18px',\n  color: theme.palette.colors.neutral['600'],\n}))\n\nconst pagesSlug = ['analyze', 'results']\n\nconst INPUT_WIDTH = 296\n\nfunction AdminAnalyzeResults(): JSX.Element {\n  const router = useRouter()\n  const [, setBreadcrumb] = useContext(breadcrumbContext)\n  const { localizedCatalogWithDefault } = useContext(catalogContext)\n\n  const [variables, setVariables] = useState<IExplainVariables>({})\n  const [variableValid, setVariableValid] = useState(false)\n  const [nbResults, setNbResults] = useState(0)\n  const [nbTopProducts, setNbTopProducts] = useState(0)\n  const [showAllErrors, setShowAllErrors] = useState(false)\n\n  const configuration = useAppSelector(selectConfiguration)\n  const { t } = useTranslation(['api', 'categories'])\n\n  useEffect(() => {\n    setBreadcrumb(pagesSlug)\n  }, [router.query, setBreadcrumb])\n\n  const localizedCatalogOptionResource = useResource(\n    'LocalizedCatalogGroupOption'\n  )\n  const [{ data: localizedCatalogData }] = useApiList<IApiSchemaOptions>(\n    localizedCatalogOptionResource,\n    false\n  )\n\n  const localizedCatalogOptions = localizedCatalogData\n    ? getOptionsFromApiSchema(\n        localizedCatalogData as IHydraResponse<IApiSchemaOptions>\n      )\n    : []\n\n  const [requestTypeData] = useApiList<IRequestTypesOptions>(\n    'explain_request_type_options',\n    false\n  )\n  const requestTypeOptions = requestTypeData?.data\n    ? getOptionsFromApiSchema(\n        requestTypeData.data as IHydraResponse<IApiSchemaOptions>\n      )\n    : []\n\n  const [categoriesListApi] = useFetchApi<ICategories>('categoryTree')\n  const categoriesList = categoriesListApi?.data?.categories\n\n  const limitationType =\n    requestTypeData?.data && variables?.requestType\n      ? getLimitationType(\n          variables?.requestType,\n          requestTypeData.data[\n            'hydra:member'\n          ] as unknown as IRequestTypesOptions[]\n        )\n      : undefined\n\n  function handleChange(\n    value: string | number | ITreeItem,\n    event: SyntheticEvent\n  ): void {\n    setVariables({\n      ...variables,\n      [(event.target as HTMLInputElement).name]: value,\n    })\n    setVariableValid(false)\n  }\n\n  function handleCategoryChange(value: ITreeItem): void {\n    setVariables({ ...variables, category: value })\n    setVariableValid(false)\n  }\n\n  function handleSubmit(\n    event: FormEvent<HTMLFormElement>,\n    formIsValid: boolean\n  ): void {\n    event.preventDefault()\n    if (formIsValid) {\n      if (isGraphQLValidVariables(variables, limitationType)) {\n        setNbResults(0)\n        setNbTopProducts(0)\n        setVariableValid(true)\n      } else {\n        setVariableValid(false)\n      }\n    } else {\n      setShowAllErrors(true)\n    }\n  }\n\n  function setProductCounts(nbResults: number, nbTopProducts: number): void {\n    setNbResults(nbResults)\n    setNbTopProducts(nbTopProducts)\n  }\n\n  if (\n    !variables.requestType &&\n    requestTypeOptions[0] &&\n    localizedCatalogOptions[0]\n  ) {\n    const defaultRequestType = requestTypeOptions.find(\n      (option) => option.value === ProductRequestType.SEARCH\n    )\n    const defaultRequestTypeValue = defaultRequestType\n      ? defaultRequestType.value\n      : requestTypeOptions[0].value\n    const defaultLocalizedCatalog = localizedCatalogOptions.find(\n      (option) => String(option.value) === localizedCatalogWithDefault?.['@id']\n    )\n    const defaultLocalizedCatalogValue = defaultLocalizedCatalog\n      ? defaultLocalizedCatalog.value\n      : localizedCatalogOptions[0].value\n\n    setVariables({\n      ...variables,\n      requestType: defaultRequestTypeValue\n        ? String(defaultRequestTypeValue)\n        : undefined,\n      localizedCatalog: defaultLocalizedCatalogValue\n        ? String(defaultLocalizedCatalogValue)\n        : undefined,\n    })\n  }\n\n  return (\n    <>\n      <PageTitle title={t('Results')} sx={{ marginBottom: '32px' }} />\n      <Form onSubmit={handleSubmit}>\n        {Boolean(\n          localizedCatalogOptions && requestTypeOptions && categoriesList\n        ) && (\n          <>\n            <WrapperBlock>\n              <DropDown\n                infoTooltip={t(\n                  'Select the localized catalog where the explain will be applied'\n                )}\n                label={t('Localized catalog')}\n                name=\"localizedCatalog\"\n                onChange={handleChange}\n                options={localizedCatalogOptions}\n                value={variables?.localizedCatalog}\n                useGroups\n                placeholder={t('Select a localized catalog')}\n                required\n                showError={showAllErrors}\n                sx={{ width: INPUT_WIDTH }}\n              />\n            </WrapperBlock>\n\n            <WrapperBlock>\n              <DropDown\n                label={t('Request type')}\n                name=\"requestType\"\n                onChange={handleChange}\n                options={requestTypeOptions}\n                value={variables?.requestType}\n                useGroups\n                placeholder={t('Select a request type')}\n                required\n                showError={showAllErrors}\n                sx={{ width: INPUT_WIDTH }}\n              />\n              {limitationType === 'category' && (\n                <TreeSelector\n                  label={t('Category')}\n                  name=\"category\"\n                  data={categoriesList}\n                  onChange={handleCategoryChange}\n                  value={variables?.category ?? null}\n                  placeholder={t('Select a category')}\n                  required\n                  showError={showAllErrors}\n                  sx={{ width: INPUT_WIDTH }}\n                />\n              )}\n\n              {limitationType === 'search' && (\n                <InputText\n                  label={t('Search term')}\n                  name=\"search\"\n                  onChange={handleChange}\n                  value={\n                    variables?.search ? String(variables.search) : undefined\n                  }\n                  placeholder={t('Indicate a term')}\n                  required\n                  showError={showAllErrors}\n                  sx={{ width: INPUT_WIDTH }}\n                />\n              )}\n              {limitationType ? (\n                <Button sx={{ marginTop: '24px', height: 40 }} type=\"submit\">\n                  {t('Explain')}\n                </Button>\n              ) : null}\n            </WrapperBlock>\n          </>\n        )}\n      </Form>\n\n      {variableValid ? (\n        <Box sx={{ marginBottom: 2 }}>\n          <MerchandiseBar nbResults={nbResults} nbTopProducts={nbTopProducts} />\n        </Box>\n      ) : null}\n\n      {variableValid && limitationType ? (\n        <Paper\n          variant=\"outlined\"\n          sx={{ backgroundColor: 'colors.neutral.300', padding: 2 }}\n        >\n          <PreviewArea>{t('previewArea', { ns: 'categories' })}</PreviewArea>\n          <ProductsPreviewBottom\n            variables={variables}\n            configuration={configuration}\n            onProductsLoaded={setProductCounts}\n            limitationType={limitationType}\n          />\n        </Paper>\n      ) : null}\n    </>\n  )\n}\n\nexport default withAuth(withOptions(AdminAnalyzeResults))\n","import React from 'react'\nimport { Grid, Paper, styled } from '@mui/material'\nimport { useTranslation } from 'next-i18next'\nimport {\n  CustomNoTopProduct,\n  SearchResult,\n  SearchTitle,\n} from '../Merchandize/SearchBar/Search.styled'\n\nconst PaperStyled = styled(Paper)(() => ({\n  display: 'flex',\n}))\n\nconst GridStyled = styled(Grid)(({ theme }) => ({\n  padding: theme.spacing(2),\n}))\n\ninterface IProps {\n  nbResults: number\n  nbTopProducts: number\n}\n\nexport default function MerchandiseBar(props: IProps): JSX.Element {\n  const { nbResults, nbTopProducts } = props\n  const { t } = useTranslation('categories')\n\n  const value = {\n    value: nbResults + nbTopProducts,\n    result: t('searchBar.results', { count: nbResults }),\n  }\n\n  const result = t('searchBarResult', { value })\n\n  const valuePinned = {\n    value: nbTopProducts,\n    result: t('pinned.results', { count: nbTopProducts }),\n  }\n  const resultPinned = t('searchBarResult', { value: valuePinned })\n\n  const hasProduct = Boolean(nbTopProducts + nbResults)\n\n  return (\n    <PaperStyled variant=\"outlined\">\n      <GridStyled container direction=\"column\">\n        <SearchTitle>\n          {t(\n            nbTopProducts + nbResults === 1\n              ? 'merchandise.singular.title'\n              : 'merchandise.plural.title'\n          )}\n        </SearchTitle>\n        <SearchResult>\n          {!hasProduct ? (\n            <CustomNoTopProduct>{t('noProductSearch')}</CustomNoTopProduct>\n          ) : (\n            <>\n              {result} {` (${resultPinned})`}\n            </>\n          )}\n        </SearchResult>\n      </GridStyled>\n    </PaperStyled>\n  )\n}\n","import React, { useEffect, useMemo, useState } from 'react'\nimport {\n  IConfigurations,\n  IExplainVariables,\n  IGraphqlSearchExplainProducts,\n  ITableRow,\n  ImageIcon,\n  LoadStatus,\n  cleanExplainGraphQLVariables,\n  defaultPageSize,\n  defaultRowsPerPageOptions,\n  getIdFromIri,\n  getSearchExplainProductsQuery,\n  productTableheader,\n} from '@elastic-suite/gally-admin-shared'\n\nimport { useGraphqlApi } from '../../../hooks'\nimport FieldGuesser from '../FieldGuesser/FieldGuesser'\nimport PagerTable from '../../organisms/PagerTable/PagerTable'\nimport NoAttributes from '../../atoms/noAttributes/NoAttributes'\nimport { useTranslation } from 'next-i18next'\nimport ExplainQueryDetails from '../../molecules/Explain/ExplainQueryDetails'\nimport ExplainDetails from '../../molecules/Explain/ExplainDetails'\n\ninterface IProps {\n  variables: IExplainVariables\n  configuration: IConfigurations\n  limitationType: string\n  onProductsLoaded?: (nbResults: number, nbTopProducts: number) => void\n}\n\nfunction ProductsPreviewBottom(props: IProps): JSX.Element {\n  const { variables, configuration, limitationType, onProductsLoaded } = props\n  const [currentPage, setCurrentPage] = useState<number>(1)\n  const [rowsPerPage, setRowsPerPage] = useState<number>(defaultPageSize)\n  const { t } = useTranslation('categories')\n\n  const variablesFormatted = useMemo(() => {\n    const cleanedVariables = cleanExplainGraphQLVariables(\n      variables,\n      limitationType\n    )\n    return {\n      requestType: cleanedVariables.requestType,\n      localizedCatalog: getIdFromIri(String(cleanedVariables.localizedCatalog)),\n      currentCategoryId: cleanedVariables?.category?.id,\n      search: cleanedVariables?.search,\n      currentPage,\n      pageSize: rowsPerPage,\n    }\n  }, [variables, currentPage, rowsPerPage, limitationType])\n\n  const [explain] = useGraphqlApi<IGraphqlSearchExplainProducts>(\n    getSearchExplainProductsQuery(),\n    variablesFormatted\n  )\n\n  const positions = explain?.data?.explain?.explainData?.extraData\n    ?.positions as Record<string, number | string>[]\n\n  const tableRows = (explain?.data?.explain?.collection\n    ? explain?.data?.explain?.collection.map((explainProduct) => {\n        return {\n          ...explainProduct,\n          score: {\n            scoreValue: explainProduct.score,\n            boostInfos: {\n              type:\n                explainProduct.boosts?.weight &&\n                explainProduct.boosts?.weight !== 1\n                  ? explainProduct.boosts?.weight > 1\n                    ? 'up'\n                    : 'down'\n                  : '',\n              boostNumber: explainProduct.boosts?.total,\n              boostMultiplicator: explainProduct.boosts?.weight,\n            },\n          },\n          image: {\n            path: explainProduct.image,\n            icons: positions?.some(\n              (position) =>\n                String(position.productId) === getIdFromIri(explainProduct.id)\n            )\n              ? [ImageIcon.PIN]\n              : [],\n          },\n          popIn: {\n            children: (\n              <ExplainDetails\n                explainProduct={explainProduct}\n                localizedCatalogId={variablesFormatted.localizedCatalog}\n              />\n            ),\n            styles: { paper: { minWidth: '835px' } },\n          },\n        }\n      })\n    : []) as unknown as ITableRow[]\n\n  useEffect(() => {\n    if (\n      typeof onProductsLoaded === 'function' &&\n      explain.status === LoadStatus.SUCCEEDED\n    ) {\n      const positions = explain.data.explain.explainData.extraData?.positions\n      onProductsLoaded(\n        explain.data.explain.paginationInfo.totalCount,\n        positions instanceof Array ? positions.length : 0\n      )\n    }\n  }, [explain, onProductsLoaded])\n\n  const onRowsPerPageChange = (\n    event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n  ): void => {\n    setRowsPerPage(Number(event.target.value))\n    setCurrentPage(1)\n  }\n\n  function onPageChange(page: number): void {\n    setCurrentPage(page + 1)\n  }\n\n  return (\n    <>\n      {tableRows.length > 0 ? (\n        <>\n          <PagerTable\n            Field={FieldGuesser}\n            count={explain.data.explain.paginationInfo.totalCount}\n            currentPage={\n              (currentPage - 1 >= 0 ? currentPage - 1 : currentPage) ?? 0\n            }\n            onPageChange={onPageChange}\n            onRowsPerPageChange={onRowsPerPageChange}\n            rowsPerPage={rowsPerPage}\n            rowsPerPageOptions={defaultRowsPerPageOptions ?? []}\n            tableHeaders={productTableheader}\n            tableRows={tableRows}\n            configuration={configuration}\n            hoverableLine\n          />\n          <ExplainQueryDetails\n            index={explain.data.explain.explainData.elasticSearchQuery.index}\n            query={JSON.parse(\n              explain.data.explain.explainData.elasticSearchQuery.query\n            )}\n            boxStyle={{\n              position: 'fixed',\n              bottom: '5%',\n              right: '2%',\n              zIndex: 4,\n            }}\n          />\n        </>\n      ) : (\n        <NoAttributes title={t('noProductSearch')} />\n      )}\n    </>\n  )\n}\n\nexport default ProductsPreviewBottom\n","import React, { CSSProperties, PropsWithChildren } from 'react'\nimport Button from '../../atoms/buttons/Button'\nimport IonIcon from '../../atoms/IonIcon/IonIcon'\nimport Popin from '../../atoms/modals/PopIn'\nimport { JSONTree } from 'react-json-tree'\nimport { IconButton, Typography } from '@mui/material'\nimport { useTranslation } from 'next-i18next'\n\nconst JSONTreeTheme = {\n  extend: {\n    scheme: 'gally theme',\n    author: 'gally',\n    base00: '#ffffff',\n    base01: '#F4F7FF',\n    base02: '#E2E6F3',\n    base03: '#8187B9',\n    base04: '#424880',\n    base05: '#2F3674',\n    base06: '#151A47',\n    base07: '#f1efee',\n    base08: '#ED7465',\n    base09: '#E64733',\n    base0A: '#d5911a',\n    base0B: '#70be54',\n    base0C: '#00ad9c',\n    base0D: '#407ee7',\n    base0E: '#6666ea',\n    base0F: '#c33ff3',\n  },\n  tree: {\n    fontFamily: 'Inter',\n    fontSize: '12px',\n    flex: '1',\n    overflow: 'auto',\n    paddingLeft: '5px',\n    margin: 0,\n  },\n}\n\nconst copyToClipboard = (text: string): void => {\n  navigator.clipboard.writeText(text)\n}\n\nconst sharedStyle = { padding: '16px' }\nconst customDialogStyles = {\n  paper: {\n    height: '100%',\n    maxHeight: '100%',\n    width: '33%',\n    borderRadius: '0px',\n    boxShadow: 'none',\n  },\n  content: { marginTop: '16px', padding: '0 16px 16px 16px' },\n  title: sharedStyle,\n  actions: sharedStyle,\n}\n\nfunction TitleTypography({ children }: PropsWithChildren): JSX.Element {\n  return (\n    <Typography\n      fontSize=\"12px\"\n      color=\"#424880\"\n      marginBottom=\"4px\"\n      lineHeight=\"18px\"\n    >\n      {children}\n    </Typography>\n  )\n}\n\ninterface IProps {\n  index: string\n  query: JSON\n  boxStyle?: CSSProperties\n}\n\nfunction ExplainQueryDetails({ index, query, boxStyle }: IProps): JSX.Element {\n  const { t } = useTranslation('explain')\n\n  const ButtonCopyToClipBoard = (\n    <Button\n      display=\"secondary\"\n      onClick={(): void => copyToClipboard(JSON.stringify(query))}\n    >\n      <IonIcon name=\"copy-outline\" style={{ fontSize: 24 }} />\n      <span style={{ marginLeft: 8 }}>{t('Copy request')}</span>\n    </Button>\n  )\n  const codeSlashButton = (\n    <IconButton\n      style={{\n        background: 'linear-gradient(47deg, #E64733 0%, #ED7465 100%)',\n        boxShadow:\n          '4px 4px 14px 0px rgba(255, 231, 228, 0.50), 0px 16px 16px 0px rgba(243, 151, 140, 0.20), 0px -8px 8px 0px rgba(255, 231, 228, 0.20)',\n        padding: '12px',\n      }}\n    >\n      <IonIcon\n        name=\"code-slash\"\n        style={{\n          color: '#fff',\n          width: '24px',\n          height: '24px',\n        }}\n      />\n    </IconButton>\n  )\n\n  return (\n    <Popin\n      triggerElement={codeSlashButton}\n      titlePopIn={t('Query details')}\n      actions={ButtonCopyToClipBoard}\n      styles={customDialogStyles}\n      boxStyle={boxStyle}\n      position=\"right\"\n    >\n      <TitleTypography>{t('query.popin.title')}</TitleTypography>\n      <Typography\n        fontSize=\"14px\"\n        color=\"#151A47\"\n        fontStyle=\"normal\"\n        fontWeight=\"500\"\n        lineHeight=\"20px\"\n        marginBottom=\"16px\"\n      >\n        {index}\n      </Typography>\n      <TitleTypography>{t('query.popin.request')}</TitleTypography>\n      {query ? (\n        <div>\n          <JSONTree\n            data={query}\n            theme={JSONTreeTheme}\n            shouldExpandNodeInitially={(): boolean => true}\n          />\n        </div>\n      ) : null}\n    </Popin>\n  )\n}\n\nexport default ExplainQueryDetails\n","import React, { CSSProperties, ReactNode, useContext, useState } from 'react'\nimport {\n  IGraphqlExplainProduct,\n  formatPrice,\n  getLocalizedCatalogFromCatalogs,\n  getStockStatusLabel,\n  roundNumber,\n} from '@elastic-suite/gally-admin-shared'\n\nimport { IRow } from '../../atoms/ReadOnlyTable/ReadOnlyTable.styled'\nimport ReadOnlyTable from '../../atoms/ReadOnlyTable/ReadOnlyTable'\nimport IonIcon from '../../atoms/IonIcon/IonIcon'\nimport PopIn from '../../atoms/modals/PopIn'\nimport { AnalyzerLegends, ExplainDetailsStyled } from './ExplainDetails.styled'\nimport { useTranslation } from 'next-i18next'\nimport { selectLanguage, useAppSelector } from '../../../store'\nimport { catalogContext } from '../../../contexts'\nimport { Collapse } from '@mui/material'\n\ninterface IProps {\n  explainProduct: IGraphqlExplainProduct\n  localizedCatalogId: string | number\n}\n\nfunction ExplainDetails(props: IProps): JSX.Element {\n  const { explainProduct, localizedCatalogId } = props\n\n  const [open, setOpen] = useState(false)\n  const { catalogs } = useContext(catalogContext)\n  const language = useAppSelector(selectLanguage)\n  const { t } = useTranslation(['explain', 'common'])\n\n  const localizedCatalog = getLocalizedCatalogFromCatalogs(\n    catalogs,\n    localizedCatalogId\n  )\n  const currency = localizedCatalog ? localizedCatalog.currency : 'EUR'\n\n  const header: IRow = {\n    cells: [\n      {\n        id: 'field',\n        value: t('Field'),\n        style: {\n          width: '344px',\n        },\n      },\n      {\n        id: 'term',\n        value: t('Term'),\n        style: {\n          width: '200px',\n        },\n      },\n      {\n        id: 'Weight',\n        value: t('Weight'),\n        style: {\n          width: '87px',\n          textAlign: 'right',\n        },\n      },\n      {\n        id: 'score',\n        value: t('Score'),\n        style: {\n          width: '107px',\n          textAlign: 'right',\n        },\n      },\n    ],\n  }\n\n  function getMatchTableRow(\n    match: Record<string, unknown>,\n    index: number,\n    isSubRow: boolean\n  ): IRow {\n    return {\n      id: `match-${index}`,\n      cells: [\n        {\n          id: `field-${index}`,\n          value: String(isSubRow ? match.originalField : match.field),\n          style: header.cells[0].style,\n        },\n        {\n          id: `term-${index}`,\n          value: String(match.query),\n          style: header.cells[1].style,\n        },\n        {\n          id: `weight-${index}`,\n          value: roundNumber(Number(Number(match.weight)), 2, true),\n          style: header.cells[2].style,\n        },\n        {\n          id: `score-${index}`,\n          value: Number(match.score),\n          style: header.cells[3].style,\n        },\n      ],\n    }\n  }\n\n  function handleToggle(): void {\n    setOpen((curr) => !curr)\n  }\n\n  function getMatchTable(\n    header: IRow,\n    explainProduct: IGraphqlExplainProduct\n  ): ReactNode {\n    let totalFieldScore = 0\n    const rows: Record<string, IRow> = {}\n\n    explainProduct.matches.forEach((match, index) => {\n      const field = String(match.field)\n      totalFieldScore += Number(match.score)\n\n      if (field in rows) {\n        if ('subRows' in rows[field]) {\n          rows[field] = {\n            ...rows[field],\n            subRows: [\n              ...rows[field].subRows,\n              getMatchTableRow(match, index, true),\n            ],\n          }\n        } else {\n          const rowsClone = JSON.parse(JSON.stringify(rows[field]))\n          rowsClone.cells[0].value = String(\n            explainProduct.matches[\n              explainProduct.matches.findIndex((item) => field === item.field)\n            ].originalField\n          )\n\n          rows[field] = {\n            ...rows[field],\n            subRows: [{ ...rowsClone }, getMatchTableRow(match, index, true)],\n          }\n          rows[field].cells[1].value = ''\n          rows[field].cells[2].value = ''\n        }\n        rows[field].cells[3].value =\n          Number(rows[field].cells[3].value) + Number(match.score)\n      } else {\n        rows[field] = getMatchTableRow(match, index, false)\n      }\n    })\n\n    const matches: IRow[] = Object.values(rows).map((match) => {\n      match.cells[3].value = roundNumber(Number(match.cells[3].value), 2, true)\n      if ('subRows' in match) {\n        match.subRows.forEach((subMatch) => {\n          subMatch.cells[3].value = roundNumber(\n            Number(subMatch.cells[3].value),\n            2,\n            true\n          )\n        })\n      }\n      return match\n    })\n\n    const body = [\n      ...matches,\n      {\n        id: 'total-field-score',\n        important: true,\n        cells: [\n          {\n            id: 'total-field-score-1',\n            value: t('Total score'),\n          },\n          {\n            id: 'total-field-score-2',\n            value: '',\n          },\n          {\n            id: 'total-field-score-3',\n            value: '',\n          },\n          {\n            id: 'total-field-score-4',\n            value:\n              Object.keys(explainProduct?.boosts).length > 0\n                ? roundNumber(Number(totalFieldScore), 2, true)\n                : roundNumber(Number(explainProduct.score), 2, true),\n            style: {\n              textAlign: 'right',\n            } as CSSProperties,\n          },\n        ],\n      },\n      {\n        id: 'total-boost-score',\n        important: true,\n        cells: [\n          {\n            id: 'total-boost-score-1',\n            value: t('Score after application of the boosts'),\n          },\n          {\n            id: 'total-boost-score-2',\n            value: '',\n          },\n          {\n            id: 'total-boost-score-3',\n            value: '',\n          },\n          {\n            id: 'total-field-score-4',\n            value: roundNumber(Number(explainProduct.score), 2, true),\n            style: {\n              textAlign: 'right',\n            } as CSSProperties,\n          },\n        ],\n      },\n    ]\n\n    return <ReadOnlyTable header={header} body={body} fullWidth />\n  }\n\n  function getIndexedContentTable(\n    explainProduct: IGraphqlExplainProduct\n  ): ReactNode {\n    const header: IRow = {\n      cells: [\n        {\n          id: 'field',\n          value: t('Field'),\n          style: {\n            width: '344px',\n          },\n        },\n        {\n          id: 'source',\n          value: t('Source'),\n          style: {\n            width: '200px',\n          },\n        },\n      ],\n    }\n\n    const body: IRow[] = explainProduct?.highlights?.map((content) => ({\n      id: String(content?.field),\n      cells: [\n        {\n          id: `${String(content?.field)}-field`,\n          value: String(content?.field),\n        },\n        {\n          id: `${String(content?.field)}-source`,\n          value:\n            content?.value instanceof Array\n              ? content.value.join(', ')\n              : String(content?.value),\n          style: {\n            fontWeight: 'normal',\n            color: '#424880',\n          },\n        },\n      ],\n    }))\n    return <ReadOnlyTable header={header} body={body} fullWidth />\n  }\n\n  return (\n    <ExplainDetailsStyled>\n      <div className=\"header\">\n        <h4>{t('Details score')}</h4>\n        <span>{explainProduct.name}</span>\n      </div>\n\n      <div className=\"general-information\">\n        <h6>{t('General information')}</h6>\n        <span>{`${t('Code')}: ${explainProduct?.sku}`}</span>\n        <span>{`${t('Price')}: ${\n          explainProduct?.price && explainProduct?.price[0]\n            ? formatPrice(explainProduct?.price[0]?.price, currency, language)\n            : ``\n        }`}</span>\n        <span>{`${t('Stock')}: ${\n          explainProduct?.stock?.status\n            ? t(getStockStatusLabel(Boolean(explainProduct.stock.status)), {\n                ns: 'common',\n              })\n            : ``\n        } `}</span>\n      </div>\n      {explainProduct.matches.length > 0 && (\n        <div className=\"item\">\n          <h6>\n            {t('Matches')}\n            <PopIn\n              triggerElement={<IonIcon name=\"help-circle-outline\" />}\n              position=\"center\"\n              boxStyle={{ display: 'inline', margin: '5px 0 0 5px' }}\n            >\n              <AnalyzerLegends>\n                <div className=\"header\">\n                  <IonIcon name=\"help-circle-outline\" />\n                  <h4>{t('Matches explanation')}</h4>\n                </div>\n                <ul>\n                  {Object.keys(explainProduct.legends).map((key) => (\n                    <li key={key}>\n                      <span className=\"field\">{`${explainProduct.legends[key].field}`}</span>\n                      : {`${explainProduct.legends[key].legend}`}\n                    </li>\n                  ))}\n                </ul>\n              </AnalyzerLegends>\n            </PopIn>\n          </h6>\n          {getMatchTable(header, explainProduct)}\n        </div>\n      )}\n\n      {explainProduct.highlights.length > 0 && (\n        <div className=\"item\">\n          <h6 className=\"collapse\">\n            {t('Indexed content')}\n            <IonIcon\n              onClick={handleToggle}\n              name={open ? 'remove-circle' : 'add-circle'}\n            />\n          </h6>\n          <Collapse in={open} timeout=\"auto\">\n            {getIndexedContentTable(explainProduct)}\n          </Collapse>\n        </div>\n      )}\n    </ExplainDetailsStyled>\n  )\n}\n\nexport default ExplainDetails\n","import React from 'react'\nimport { IRow, ReadOnlyTableRow, StyledTable } from './ReadOnlyTable.styled'\n\nexport interface IReadOnlyTable {\n  header: IRow\n  body: IRow[]\n  fullWidth?: boolean\n}\n\nfunction ReadOnlyTable({\n  header,\n  body,\n  fullWidth,\n}: IReadOnlyTable): JSX.Element {\n  return (\n    <StyledTable sx={fullWidth ? { width: '100%' } : null}>\n      <thead>\n        <ReadOnlyTableRow row={header} />\n      </thead>\n      <tbody>\n        {body.map((row) => (\n          <ReadOnlyTableRow key={row.id} row={row} />\n        ))}\n      </tbody>\n    </StyledTable>\n  )\n}\n\nexport default ReadOnlyTable\n","import React, { CSSProperties, useState } from 'react'\nimport IonIcon from '../IonIcon/IonIcon'\nimport { ToolTip } from '../modals/Tooltip.stories'\nimport { Collapse, styled } from '@mui/material'\nimport classnames from 'classnames'\n\ninterface ICell {\n  id: string\n  bold?: boolean\n  onClick?: () => void\n  tooltip?: {\n    icon: string\n    text: string\n  }\n  value: string | number\n  style?: CSSProperties\n}\n\nexport interface IRow {\n  important?: boolean\n  cells: ICell[]\n  subRows?: IRow[]\n  id?: string\n}\n\nexport const StyledTable = styled('table')(({ theme }) => ({\n  borderRadius: theme.spacing(1),\n  borderSpacing: theme.spacing(0),\n  borderCollapse: 'separate',\n  border: '1px solid #E2E6F3',\n  fontFamily: 'Inter',\n  fontSize: '14px',\n  fontStyle: 'normal',\n  fontWeight: 500,\n  lineHeight: '20px',\n  overflow: 'hidden',\n\n  '.subRows > td': {\n    borderBottom: 'none',\n\n    table: {\n      display: 'block',\n      width: '100%',\n      borderCollapse: 'collapse',\n      border: 'none',\n    },\n  },\n\n  '.subRow': {\n    backgroundColor: '#f3f7ff',\n    color: '#424880',\n\n    'th, td': {\n      padding: `${theme.spacing(1)} ${theme.spacing(2)}`,\n      borderBottom: '1px solid #E2E6F3',\n    },\n  },\n  ' & tbody > tr:last-child': {\n    'th, td': {\n      borderBottom: 'none',\n    },\n  },\n  'th,td': {\n    textAlign: 'left',\n    color: '#151A47',\n    padding: `${theme.spacing(1.75)} ${theme.spacing(2)}`,\n    borderBottom: '1px solid #E2E6F3',\n    boxSizing: 'border-box',\n\n    '.clickableValue': {\n      fontWeight: 600,\n      color: '#2C19CD',\n      backgroundColor: 'transparent',\n      border: 'none',\n      padding: 0,\n      fontSize: '14px',\n      cursor: 'pointer',\n    },\n  },\n  'tr.important': {\n    backgroundColor: '#E2E6F3',\n    td: {\n      fontWeight: 600,\n    },\n  },\n  '& > thead': {\n    backgroundColor: '#F4F7FF',\n    'td, th': {\n      fontWeight: 600,\n    },\n  },\n}))\n\nexport function ReadOnlyTableRow({\n  row,\n  subRow,\n}: {\n  row: IRow\n  subRow?: boolean\n}): JSX.Element {\n  const [open, setOpen] = useState(false)\n\n  function handleToggle(): void {\n    setOpen((curr) => !curr)\n  }\n\n  return (\n    <>\n      <tr className={classnames({ important: row.important, subRow })}>\n        {row.cells.map((cell): JSX.Element => {\n          return (\n            <td\n              key={cell.id}\n              style={{\n                ...(cell.bold && { fontWeight: 600 }),\n                ...cell?.style,\n              }}\n            >\n              {cell.onClick ? (\n                <button\n                  type=\"button\"\n                  onClick={cell?.onClick}\n                  className=\"clickableValue\"\n                >\n                  {cell.value}\n                </button>\n              ) : (\n                cell.value\n              )}\n              {Boolean(cell.tooltip) && (\n                <ToolTip\n                  title={cell.tooltip?.text}\n                  style={{ marginLeft: '8px' }}\n                >\n                  <span style={{ display: 'inline-block' }}>\n                    <IonIcon\n                      name={`${cell.tooltip?.icon}`}\n                      tooltip\n                      style={{ color: '#151A47' }}\n                    />\n                  </span>\n                </ToolTip>\n              )}\n            </td>\n          )\n        })}\n        <td style={{ width: '48px' }}>\n          {row.subRows ? (\n            <IonIcon\n              onClick={handleToggle}\n              name={`${open ? 'remove' : 'add'}-circle`}\n              style={{ color: '#8187B9', fontSize: '16px', cursor: 'pointer' }}\n            />\n          ) : null}\n        </td>\n      </tr>\n      {row.subRows ? (\n        <tr className=\"subRows\">\n          <td style={{ padding: 0 }} colSpan={row.cells.length + 1}>\n            <Collapse in={open} timeout=\"auto\" unmountOnExit>\n              <table>\n                <tbody>\n                  {row.subRows?.map(\n                    (subRow): JSX.Element => (\n                      <ReadOnlyTableRow key={subRow?.id} row={subRow} subRow />\n                    )\n                  )}\n                </tbody>\n              </table>\n            </Collapse>\n          </td>\n        </tr>\n      ) : null}\n    </>\n  )\n}\n","import React from 'react'\nimport { ComponentMeta, ComponentStory } from '@storybook/react'\n\nimport IonIcon from '../IonIcon/IonIcon'\n\nimport TooltipComponent from './Tooltip'\n\nexport default {\n  title: 'Atoms/Modals',\n  component: TooltipComponent,\n  argTypes: {\n    placement: {\n      options: [\n        'top-start',\n        'top-end',\n        'left-start',\n        'left-start',\n        'left',\n        'left-end',\n        'right-start',\n        'right',\n        'right-end',\n        'bottom-start',\n        'bottom',\n        'bottom-end',\n      ],\n      control: { type: 'select' },\n    },\n  },\n} as ComponentMeta<typeof TooltipComponent>\n\nconst Template: ComponentStory<typeof TooltipComponent> = (args) => (\n  <TooltipComponent {...args} />\n)\n\nexport const ToolTip = Template.bind({})\nToolTip.args = {\n  title: 'If the category name is used for fulltext search on products',\n  children: (\n    <span style={{ display: 'inline-block' }}>\n      <IonIcon name=\"informationCircle\" tooltip />\n    </span>\n  ),\n  placement: 'left',\n  arrow: true,\n}\n","import { styled } from '@mui/system'\n\nexport const ExplainDetailsStyled = styled('div')(({ theme }) => ({\n  width: '100%',\n  '& .header': {\n    fontSize: '18px',\n    fontWeight: 400,\n    lineHeight: '28px',\n    color: theme.palette.colors.neutral[900],\n    '& h4': {\n      fontSize: '20px',\n      fontWeight: 600,\n      lineHeight: '30px',\n      color: theme.palette.colors.neutral[900],\n      margin: 0,\n    },\n  },\n  '& h6': {\n    fontSize: '16px',\n    fontWeight: 600,\n    lineHeight: '24px',\n    color: theme.palette.colors.neutral[900],\n    margin: '0 0 8px 0',\n    '& ion-icon': {\n      fontSize: '16px',\n      color: theme.palette.colors.neutral[500],\n      '&:hover': {\n        cursor: 'pointer',\n      },\n    },\n    '&.collapse ion-icon': {\n      fontSize: '18px',\n      marginBottom: '-4px',\n      float: 'right',\n    },\n  },\n  '& .general-information': {\n    margin: '24px 0 0 0',\n    '& span': {\n      display: 'block',\n      fontSize: '14px',\n      fontWeight: 500,\n      lineHeight: '20px',\n      color: theme.palette.colors.neutral[600],\n    },\n  },\n  '& .item': {\n    margin: '48px 0 0 0',\n  },\n}))\n\nexport const AnalyzerLegends = styled('div')(({ theme }) => ({\n  '& .header': {\n    textAlign: 'center',\n    margin: '0 0 24px 0',\n    '& h4': {\n      fontSize: '20px',\n      fontWeight: 600,\n      lineHeight: '30px',\n      color: theme.palette.colors.neutral[900],\n      margin: 0,\n    },\n    '& ion-icon': {\n      fontSize: '42px',\n      color: theme.palette.colors.neutral[500],\n    },\n  },\n  '& ul li ': {\n    fontSize: '18px',\n    fontWeight: 400,\n    lineHeight: '28px',\n    color: theme.palette.colors.neutral[900],\n    margin: '0 0 16px 0',\n    '& .field': {\n      fontWeight: 900,\n    },\n  },\n}))\n","import React, { useContext, useEffect, useMemo, useRef, useState } from 'react'\nimport { useTranslation } from 'next-i18next'\nimport { useRouter } from 'next/router'\nimport { closeSnackbar, enqueueSnackbar } from 'notistack'\nimport {\n  ICategories,\n  ICategory,\n  ICategoryConfiguration,\n  IParsedCategoryConfiguration,\n  IRuleCombination,\n  LoadStatus,\n  isError,\n  isRuleValid,\n  parseCatConf,\n  savePositions,\n  serializeCatConf,\n} from '@elastic-suite/gally-admin-shared'\n\nimport { breadcrumbContext, catalogContext } from '../../../contexts'\nimport { withAuth, withOptions } from '../../../hocs'\nimport {\n  useApiFetch,\n  useApiGraphql,\n  useFetchApi,\n  useResource,\n  useResourceOperations,\n  useRuleOperators,\n} from '../../../hooks'\nimport { findCategory } from '../../../services'\n\nimport Placeholder from '../../../components/atoms/Placeholder/Placeholder'\nimport TitleBlock from '../../../components/molecules/layout/TitleBlock/TitleBlock'\nimport TwoColsLayout from '../../../components/molecules/layout/twoColsLayout/TwoColsLayout'\nimport CatalogSwitcher from '../../../components/stateful/CatalogSwitcher/CatalogSwitcher'\nimport CategoryTree from '../../../components/stateful/CategoryTree/CategoryTree'\nimport ProductsContainer from '../../../components/stateful/ProductsContainer/ProductsContainer'\n\nconst pagesSlug = ['merchandize', 'categories']\n\nfunction AdminMerchandizeCategories(): JSX.Element {\n  const router = useRouter()\n  const fetchApi = useApiFetch()\n  const { t } = useTranslation('categories')\n  const [isLoading, setIsLoading] = useState(false)\n  const { catalogId, localizedCatalogId, localizedCatalogIdWithDefault } =\n    useContext(catalogContext)\n\n  // Breadcrumb\n  const [, setBreadcrumb] = useContext(breadcrumbContext)\n  useEffect(() => {\n    setBreadcrumb(pagesSlug)\n  }, [router.query, setBreadcrumb])\n\n  // Rule engine operators\n  const ruleOperators = useRuleOperators()\n\n  // Categories\n  const [selectedCategoryItem, setSelectedCategoryItem] = useState<ICategory>()\n  const filters = useMemo(() => {\n    const filters: { catalogId?: number; localizedCatalogId?: number } = {}\n    if (catalogId && localizedCatalogId) {\n      if (catalogId !== -1) {\n        filters.catalogId = catalogId\n      }\n      if (localizedCatalogId !== -1) {\n        filters.localizedCatalogId = localizedCatalogId\n      }\n    }\n\n    return filters\n  }, [catalogId, localizedCatalogId])\n  const [categories] = useFetchApi<ICategories>('categoryTree', filters)\n  useEffect(() => {\n    if (categories.status !== LoadStatus.SUCCEEDED) {\n      return\n    }\n    setSelectedCategoryItem((prevState) => {\n      if (!categories.data.categories[0]) {\n        return undefined\n      }\n      if (prevState === undefined) {\n        return categories.data.categories[0]\n      }\n      const cat = findCategory(prevState, categories.data.categories)\n      return cat\n    })\n  }, [categories])\n\n  // Category configuration\n  const catConfResource = useResource('CategoryConfiguration')\n  const [catConf, setCatConf] = useState<IParsedCategoryConfiguration>()\n  const prevCatConf = useRef<IParsedCategoryConfiguration>()\n  const { update, create } =\n    useResourceOperations<ICategoryConfiguration>(catConfResource)\n  useEffect(() => {\n    if (\n      selectedCategoryItem?.id &&\n      categories.status === LoadStatus.SUCCEEDED\n    ) {\n      if (\n        categories?.data?.categories.find(\n          (item) => item.path === selectedCategoryItem?.path.split('/')[0]\n        )\n      ) {\n        fetchApi<ICategoryConfiguration>(\n          `${catConfResource.url}/category/${selectedCategoryItem.id}`,\n          filters\n        ).then((catConf) => {\n          if (!isError(catConf)) {\n            const parsedCatConf = parseCatConf(catConf)\n            prevCatConf.current = parsedCatConf\n            setCatConf(parsedCatConf)\n          }\n        })\n      }\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [fetchApi, selectedCategoryItem?.id, catConfResource.url, categories])\n\n  const isValid = !catConf?.isVirtual || isRuleValid(catConf?.virtualRule)\n\n  // Product positions\n  const prevProductPositions = useRef<string>('')\n\n  function handleUpdateCat(\n    name: string,\n    val: boolean | string | IRuleCombination\n  ): void {\n    setCatConf((catConf) => ({ ...catConf, [name]: val }))\n  }\n\n  function handleSelectCategory(category: ICategory): void {\n    setSelectedCategoryItem(category)\n    setCatConf(null)\n  }\n\n  const graphqlApi = useApiGraphql()\n  async function saveProductPositions(positions: string): Promise<void> {\n    const variables = {\n      categoryId: selectedCategoryItem?.id,\n      savePositionsCategory: positions,\n    }\n    const json = await graphqlApi(savePositions, variables)\n    if (!isError(json)) {\n      prevProductPositions.current = positions\n    } else {\n      throw new Error(json.error.message)\n    }\n  }\n\n  async function saveCategoryConfiguration(): Promise<void> {\n    const serializedCatConf = serializeCatConf(catConf, ruleOperators)\n    if (!catConf.id) {\n      delete serializedCatConf['@id']\n      const newCatConf = await create(serializedCatConf)\n      if (!isError(newCatConf)) {\n        const parsedCatConf = parseCatConf(newCatConf)\n        prevCatConf.current = parsedCatConf\n        setCatConf(parsedCatConf)\n      } else {\n        throw new Error(newCatConf.error.message)\n      }\n    } else {\n      const newCatConf = await update(serializedCatConf.id, serializedCatConf)\n      if (!isError(newCatConf)) {\n        const parsedCatConf = parseCatConf(newCatConf)\n        prevCatConf.current = parsedCatConf\n        setCatConf(parsedCatConf)\n      } else {\n        throw new Error(newCatConf.error.message)\n      }\n    }\n  }\n\n  async function onSave(result: string): Promise<void> {\n    setIsLoading(true)\n    const promiseGraphQlSetPositions = saveProductPositions(result)\n    const promiseApiRestVal = saveCategoryConfiguration()\n    try {\n      await Promise.all([promiseGraphQlSetPositions, promiseApiRestVal])\n      enqueueSnackbar(t('alert'), {\n        onShut: closeSnackbar,\n        variant: 'success',\n      })\n    } catch (error) {\n      enqueueSnackbar(t('alert.error'), {\n        onShut: closeSnackbar,\n        variant: 'error',\n      })\n    } finally {\n      setIsLoading(false)\n    }\n  }\n\n  return (\n    <>\n      <TwoColsLayout\n        left={\n          <TitleBlock key=\"categories\" title={t(pagesSlug.at(-1))}>\n            <CatalogSwitcher />\n            <CategoryTree\n              categories={categories.data}\n              selectedItem={selectedCategoryItem}\n              onSelect={handleSelectCategory}\n            />\n          </TitleBlock>\n        }\n      >\n        {Boolean(selectedCategoryItem?.id && localizedCatalogIdWithDefault) && (\n          <Placeholder placeholder={t('placeholder')}>\n            <ProductsContainer\n              catConf={catConf}\n              ruleOperators={ruleOperators}\n              category={selectedCategoryItem}\n              isValid={isValid}\n              onChange={handleUpdateCat}\n              onSave={onSave}\n              prevCatConf={prevCatConf}\n              prevProductPositions={prevProductPositions}\n              isLoading={isLoading}\n              localizedCatalogIdWithDefault={localizedCatalogIdWithDefault}\n            />\n          </Placeholder>\n        )}\n      </TwoColsLayout>\n    </>\n  )\n}\n\nexport default withAuth(withOptions(AdminMerchandizeCategories))\n","import Grid from '../../../../components/stateful-pages/Grid/Grid'\nimport React, { useContext, useEffect } from 'react'\nimport { withAuth, withOptions } from '../../../../hocs'\nimport { useRouter } from 'next/router'\nimport { breadcrumbContext } from '../../../../../src/contexts'\n\nconst pagesSlug = ['merchandize', 'boosts']\n\nconst propsButton = {\n  endIcon: <ion-icon name=\"add-circle-outline\" />,\n}\n\nfunction AdminBoostGrid(): JSX.Element {\n  const router = useRouter()\n  const [, setBreadcrumb] = useContext(breadcrumbContext)\n\n  useEffect(() => {\n    setBreadcrumb(pagesSlug)\n  }, [router.query, setBreadcrumb])\n\n  return (\n    <Grid\n      resourceName=\"Boost\"\n      hasNewLink\n      hasEditLink\n      propsButton={propsButton}\n    />\n  )\n}\n\nexport default withAuth(withOptions(AdminBoostGrid))\n","import React, { useContext, useEffect } from 'react'\nimport { withAuth, withOptions } from '../../../../hocs'\nimport { ResourceForm } from '../../../../components'\nimport { useRouter } from 'next/router'\nimport { breadcrumbContext } from '../../../../contexts'\nimport { useTranslation } from 'next-i18next'\n\nconst pagesSlug = ['merchandize', 'boosts']\n\nfunction AdminBoostCreate(): JSX.Element {\n  const router = useRouter()\n  const { t } = useTranslation('boost')\n  const [, setBreadcrumb] = useContext(breadcrumbContext)\n\n  useEffect(() => {\n    setBreadcrumb(pagesSlug)\n  }, [router.query, setBreadcrumb])\n\n  return <ResourceForm title={t('title.create')} resourceName=\"Boost\" />\n}\n\nexport default withAuth(withOptions(AdminBoostCreate))\n","import React, { useContext, useEffect, useState } from 'react'\nimport { withAuth, withOptions } from '../../../../hocs'\nimport { ResourceForm } from '../../../../components'\nimport { useRouter } from 'next/router'\nimport { breadcrumbContext } from '../../../../contexts'\nimport { useTranslation } from 'next-i18next'\n\nconst pagesSlug = ['merchandize', 'boosts']\n\nfunction AdminBoostEdit(): JSX.Element {\n  const router = useRouter()\n  const { t } = useTranslation('boost')\n  const [, setBreadcrumb] = useContext(breadcrumbContext)\n  const [idUpdate, setIdUpdate] = useState<string>('')\n\n  useEffect(() => {\n    setBreadcrumb(pagesSlug)\n    setIdUpdate(router?.query?.id as string)\n  }, [router.query, setBreadcrumb])\n\n  if (!idUpdate) {\n    return null\n  }\n\n  return (\n    <ResourceForm\n      title={t('title.update')}\n      resourceName=\"Boost\"\n      id={idUpdate}\n    />\n  )\n}\n\nexport default withAuth(withOptions(AdminBoostEdit))\n","import Grid from '../../../../components/stateful-pages/Grid/Grid'\nimport React, { useContext, useEffect } from 'react'\nimport { withAuth, withOptions } from '../../../../hocs'\nimport { useRouter } from 'next/router'\nimport { breadcrumbContext } from '../../../../contexts'\n\nconst pagesSlug = ['search', 'thesaurus']\n\nconst propsButton = {\n  endIcon: <ion-icon name=\"add-circle-outline\" />,\n}\n\nfunction AdminThesaurusGrid(): JSX.Element {\n  const router = useRouter()\n  const [, setBreadcrumb] = useContext(breadcrumbContext)\n\n  useEffect(() => {\n    setBreadcrumb(pagesSlug)\n  }, [router.query, setBreadcrumb])\n\n  return (\n    <Grid\n      resourceName=\"Thesaurus\"\n      hasNewLink\n      hasEditLink\n      propsButton={propsButton}\n    />\n  )\n}\n\nexport default withAuth(withOptions(AdminThesaurusGrid))\n","import React, { useContext, useEffect } from 'react'\nimport { withAuth, withOptions } from '../../../../hocs'\nimport { ResourceForm } from '../../../../components'\nimport { useRouter } from 'next/router'\nimport { breadcrumbContext } from '../../../../contexts'\nimport { useTranslation } from 'next-i18next'\n\nconst pagesSlug = ['search', 'thesaurus']\n\nfunction AdminThesaurusCreate(): JSX.Element {\n  const router = useRouter()\n  const { t } = useTranslation('thesaurus')\n  const [, setBreadcrumb] = useContext(breadcrumbContext)\n\n  useEffect(() => {\n    setBreadcrumb(pagesSlug)\n  }, [router.query, setBreadcrumb])\n\n  return <ResourceForm title={t('title.create')} resourceName=\"Thesaurus\" />\n}\n\nexport default withAuth(withOptions(AdminThesaurusCreate))\n","import React, { useContext, useEffect, useState } from 'react'\nimport { withAuth, withOptions } from '../../../../hocs'\nimport { ResourceForm } from '../../../../components'\nimport { useRouter } from 'next/router'\nimport { breadcrumbContext } from '../../../../contexts'\nimport { useTranslation } from 'next-i18next'\n\nconst pagesSlug = ['search', 'thesaurus']\n\nfunction AdminThesaurusEdit(): JSX.Element {\n  const router = useRouter()\n  const { t } = useTranslation('thesaurus')\n  const [, setBreadcrumb] = useContext(breadcrumbContext)\n  const [idUpdate, setIdUpdate] = useState<string>('')\n\n  useEffect(() => {\n    setBreadcrumb(pagesSlug)\n    setIdUpdate(router?.query?.id as string)\n  }, [router.query, setBreadcrumb])\n\n  if (!idUpdate) {\n    return null\n  }\n\n  return (\n    <ResourceForm\n      title={t('title.update')}\n      resourceName=\"Thesaurus\"\n      id={idUpdate}\n    />\n  )\n}\n\nexport default withAuth(withOptions(AdminThesaurusEdit))\n","import React, { useContext, useEffect, useState } from 'react'\nimport { useRouter } from 'next/router'\nimport { useTranslation } from 'next-i18next'\nimport { searchableAttributeUrl } from '@elastic-suite/gally-admin-shared'\n\nimport { breadcrumbContext, metadataContext } from '../../../../contexts'\nimport { withAuth, withOptions } from '../../../../hocs'\nimport { useFilters, useResource } from '../../../../hooks'\n\nimport Alert from '../../../../components/atoms/Alert/Alert'\nimport PageTitle from '../../../../components/atoms/PageTitle/PageTitle'\nimport ResourceTable from '../../../../components/stateful-pages/ResourceTable/ResourceTable'\nimport Metadata from '../../../../components/atoms/metadata/Metadata'\n\nconst pagesSlug = ['search', 'configuration', 'attributes']\n\nfunction AdminSearchFacetsConfigurationAttributes(): JSX.Element {\n  const [isVisibleAlertAttributes, setIsVisibleAlertAttributes] = useState(true)\n\n  const router = useRouter()\n  const [, setBreadcrumb] = useContext(breadcrumbContext)\n  const { t } = useTranslation('attributes')\n\n  const [fixedFilters, setFixedFilters] = useState<Record<string, string>>({\n    'metadata.entity': 'product',\n  })\n\n  useEffect(() => {\n    setBreadcrumb(pagesSlug)\n  }, [router.query, setBreadcrumb])\n\n  const resource = useResource('SourceField')\n  const [activeFilters, setActiveFilters] = useFilters(resource)\n\n  const metadatas = useContext(metadataContext)\n\n  if (!metadatas) {\n    return null\n  }\n\n  return (\n    <>\n      <PageTitle title={t(pagesSlug.at(-1))} sx={{ marginBottom: '32px' }} />\n      {Boolean(isVisibleAlertAttributes) && (\n        <Alert\n          message={t('attributes.alert')}\n          onShut={(): void => setIsVisibleAlertAttributes(false)}\n        />\n      )}\n      <Metadata\n        setFixedFilters={setFixedFilters}\n        fixedFilters={fixedFilters['metadata.entity']}\n        metadatas={metadatas}\n      />\n      <ResourceTable\n        activeFilters={activeFilters}\n        filters={fixedFilters}\n        resourceName=\"SourceField\"\n        setActiveFilters={setActiveFilters}\n        urlParams={searchableAttributeUrl}\n        showSearch\n      />\n    </>\n  )\n}\n\nexport default withAuth(withOptions(AdminSearchFacetsConfigurationAttributes))\n","import React, { useContext, useEffect, useMemo, useState } from 'react'\nimport { useRouter } from 'next/router'\nimport { useTranslation } from 'next-i18next'\nimport { ICategories, ICategory } from '@elastic-suite/gally-admin-shared'\nimport { styled } from '@mui/system'\nimport classNames from 'classnames'\n\nimport { breadcrumbContext } from '../../../contexts'\nimport { withAuth, withOptions } from '../../../hocs'\nimport { useFetchApi, useFilters, useResource } from '../../../hooks'\n\nimport TitleBlock from '../../../components/molecules/layout/TitleBlock/TitleBlock'\nimport TwoColsLayout from '../../../components/molecules/layout/twoColsLayout/TwoColsLayout'\nimport CategoryTree from '../../../components/stateful/CategoryTree/CategoryTree'\n\nimport ResourceTable from '../../../components/stateful-pages/ResourceTable/ResourceTable'\nimport IonIcon from '../../../components/atoms/IonIcon/IonIcon'\nimport PageTitle from '../../../components/atoms/PageTitle/PageTitle'\nimport Alert from '../../../components/atoms/Alert/Alert'\n\nconst ButtonSetting = styled('div')(({ theme }) => ({\n  color: theme.palette.colors.neutral[900],\n  display: 'flex',\n  alignItems: 'center',\n  justifyContent: 'center',\n  cursor: 'pointer',\n  gap: '5px',\n  '&.selected': {\n    color: theme.palette.colors.secondary[600],\n    textDecoration: 'underline',\n  },\n}))\n\nconst IonIconStyle = styled(IonIcon)(() => ({\n  width: '30px',\n  fontSize: '20px',\n}))\n\nconst DefaultButton = styled('button')(() => ({\n  fontWeight: 500,\n  fontFamily: 'var(--gally-font)',\n  lineHeight: '18px',\n  fontSize: '12px',\n  border: 'none',\n  background: 'none',\n  padding: 0,\n  cursor: 'pointer',\n  color: 'inherit',\n}))\n\nconst pagesSlug = ['search', 'facets']\n\nfunction AdminSearchFacets(): JSX.Element {\n  const router = useRouter()\n  const [, setBreadcrumb] = useContext(breadcrumbContext)\n  const { t } = useTranslation('facet')\n  const [selectedCategoryItem, setSelectedCategoryItem] = useState<ICategory>()\n\n  // Breadcrumb\n  useEffect(() => {\n    setBreadcrumb(pagesSlug)\n  }, [router.query, setBreadcrumb])\n\n  // Categories\n  const [categories] = useFetchApi<ICategories>(`categoryTree`)\n\n  // Facet configuration\n  const resource = useResource('FacetConfiguration')\n  const [activeFilters, setActiveFilters] = useFilters(resource)\n  const filters = useMemo(\n    () => ({\n      category: selectedCategoryItem?.id,\n      'sourceField.metadata.entity': 'product',\n    }),\n    [selectedCategoryItem?.id]\n  )\n\n  const [isVisibleAlertFacets, setIsVisibleAlertFacets] = useState(true)\n  const contentTitle = selectedCategoryItem?.name\n    ? selectedCategoryItem?.name\n    : selectedCategoryItem?.catalogName\n\n  return (\n    <>\n      <TwoColsLayout\n        left={[\n          <TitleBlock\n            key=\"configuration\"\n            subtitle={t('facet.configuration')}\n            title={t('facet.title')}\n          >\n            <ButtonSetting\n              className={classNames({ selected: !selectedCategoryItem })}\n              onClick={(): void => setSelectedCategoryItem(undefined)}\n            >\n              <IonIconStyle name=\"settings\" />\n              <DefaultButton>{t('facet.button.setting')}</DefaultButton>\n            </ButtonSetting>\n          </TitleBlock>,\n          <TitleBlock key=\"categories\" subtitle={t('facet.byCategory')}>\n            <CategoryTree\n              categories={categories.data}\n              selectedItem={selectedCategoryItem}\n              onSelect={setSelectedCategoryItem}\n            />\n          </TitleBlock>,\n        ]}\n      >\n        <PageTitle\n          title={contentTitle ? contentTitle : t('facets')}\n          sx={{ marginBottom: '32px' }}\n        />\n        {Boolean(isVisibleAlertFacets) && (\n          <Alert\n            message={t('facet.alert')}\n            onShut={(): void => setIsVisibleAlertFacets(false)}\n          />\n        )}\n        <ResourceTable\n          activeFilters={activeFilters}\n          setActiveFilters={setActiveFilters}\n          filters={filters}\n          resourceName=\"FacetConfiguration\"\n          diffDefaultValues\n          showSearch\n        />\n      </TwoColsLayout>\n    </>\n  )\n}\n\nexport default withAuth(withOptions(AdminSearchFacets))\n","import React, { useContext, useEffect, useState } from 'react'\nimport { useRouter } from 'next/router'\nimport { useTranslation } from 'next-i18next'\n\nimport { defaultRowsPerPageOptions } from '@elastic-suite/gally-admin-shared'\nimport { breadcrumbContext, metadataContext } from '../../../contexts'\nimport { withAuth, withOptions } from '../../../hocs'\nimport { useFilters, useResource } from '../../../hooks'\n\nimport ResourceTable from '../../../components/stateful-pages/ResourceTable/ResourceTable'\nimport PageTitle from '../../../components/atoms/PageTitle/PageTitle'\nimport Metadata from '../../../components/atoms/metadata/Metadata'\n\nconst pagesSlug = ['search', 'vector']\n\nfunction AdminSearchVector(): JSX.Element {\n  const router = useRouter()\n  const [, setBreadcrumb] = useContext(breadcrumbContext)\n  const { t } = useTranslation('vectorSearch')\n\n  const [fixedFilters, setFixedFilters] = useState<Record<string, string>>({\n    'sourceField.metadata.entity': 'product',\n  })\n\n  useEffect(() => {\n    setBreadcrumb(pagesSlug)\n  }, [router.query, setBreadcrumb])\n\n  const resource = useResource('VectorSearch')\n  const [activeFilters, setActiveFilters] = useFilters(resource)\n  const metadatas = useContext(metadataContext)\n\n  if (!metadatas) {\n    return null\n  }\n\n  return (\n    <>\n      <PageTitle title={t(pagesSlug.at(-1))} sx={{ marginBottom: '32px' }} />\n      <Metadata\n        setFixedFilters={setFixedFilters}\n        fixedFilters={fixedFilters['sourceField.metadata.entity']}\n        metadatas={metadatas}\n        filterField=\"sourceField.metadata.entity\"\n      />\n      <ResourceTable\n        activeFilters={activeFilters}\n        filters={fixedFilters}\n        resourceName=\"VectorConfiguration\"\n        setActiveFilters={setActiveFilters}\n        showSearch\n        rowsPerPage={defaultRowsPerPageOptions[1]}\n      />\n    </>\n  )\n}\n\nexport default withAuth(withOptions(AdminSearchVector))\n","import React, { useContext, useEffect, useMemo } from 'react'\nimport { useTranslation } from 'next-i18next'\nimport { useRouter } from 'next/router'\n\nimport { breadcrumbContext } from '../../../contexts'\nimport { withAuth, withOptions } from '../../../hocs'\nimport { useTabs } from '../../../hooks'\nimport { selectMenu, useAppSelector } from '../../../store'\nimport {\n  IRouterTab,\n  findBreadcrumbLabel,\n} from '@elastic-suite/gally-admin-shared'\n\nimport PageTitle from '../../../components/atoms/PageTitle/PageTitle'\nimport CustomTabs from '../../../components/molecules/layout/tabs/CustomTabs'\nimport SettingsAttributes from '../../../components/stateful-pages/SettingsAttributes/SettingsAttributes'\nimport SettingsScope from '../../../components/stateful-pages/SettingsScope/SettingsScope'\n\nconst pageSlug = 'settings'\n\nfunction AdminSettingsIndex(): JSX.Element {\n  const { t } = useTranslation(pageSlug)\n  const router = useRouter()\n  const menu = useAppSelector(selectMenu)\n  const [, setBreadcrumb] = useContext(breadcrumbContext)\n\n  useEffect(() => {\n    const { slug } = router.query\n    setBreadcrumb([pageSlug, ...slug])\n  }, [router.query, setBreadcrumb])\n\n  const routerTabs: IRouterTab[] = useMemo(\n    () => [\n      {\n        Component: SettingsScope,\n        default: true,\n        id: 0,\n        label: t('tabs.scope'),\n        url: '/admin/settings/scope',\n      },\n      {\n        // actions: <Button>{t('action.import')} (xlsx)</Button>,\n        Component: SettingsAttributes,\n        id: 1,\n        label: t('tabs.attributes'),\n        url: '/admin/settings/attributes',\n      },\n    ],\n    [t]\n  )\n  const [activeTab, handleTabChange] = useTabs(routerTabs)\n  const { actions, id } = activeTab\n\n  return (\n    <>\n      <PageTitle title={findBreadcrumbLabel(0, [pageSlug], menu.hierarchy)}>\n        {actions}\n      </PageTitle>\n      <CustomTabs\n        defaultActiveId={id}\n        onChange={handleTabChange}\n        tabs={routerTabs}\n      />\n    </>\n  )\n}\n\nexport default withAuth(withOptions(AdminSettingsIndex))\n","import React, { useContext, useEffect } from 'react'\nimport { useRouter } from 'next/router'\n\nimport { withAuth, withOptions } from '../../hocs'\nimport { breadcrumbContext } from '../../contexts'\n\nfunction AdminDashboard(): JSX.Element {\n  const router = useRouter()\n\n  const [, setBreadcrumb] = useContext(breadcrumbContext)\n\n  useEffect(() => {\n    setBreadcrumb(['dashboard'])\n  }, [router.query, setBreadcrumb])\n\n  // todo: temporary page\n  return <div>Dashboard</div>\n}\n\nexport default withAuth(withOptions(AdminDashboard))\n","import { useEffect } from 'react'\nimport Router from 'next/router'\n\nexport function AdminSettings(): null {\n  useEffect(() => {\n    if (typeof window !== 'undefined') {\n      Router.push('/admin/settings/scope/catalogs')\n    }\n  }, [])\n\n  return null\n}\n\nexport default AdminSettings\n","import React from 'react'\nimport Link from 'next/link'\n\nfunction SwaggerDocs(): JSX.Element {\n  return (\n    <div className=\"welcome\">\n      <section className=\"welcome__main\">\n        <div className=\"main__content\">\n          <div className=\"main__other\">\n            <h2>Available services:</h2>\n            <div className=\"other__bloc\">\n              <div className=\"other__circle\">\n                <Api />\n              </div>\n              <div className=\"other__content\">\n                <h3>\n                  <a href=\"/docs\">API</a>\n                </h3>\n              </div>\n            </div>\n            <div className=\"other__bloc\">\n              <div className=\"other__circle\">\n                <Admin />\n              </div>\n              <div className=\"other__content\">\n                <h3>\n                  <Link href=\"/admin/settings/scope/catalogs\">\n                    <a>Admin</a>\n                  </Link>\n                </h3>\n              </div>\n            </div>\n            <div className=\"other__bloc\">\n              <div className=\"other__circle\">\n                <Mercure />\n              </div>\n              <div className=\"other__content\">\n                <h3>\n                  <a href=\"/.well-known/mercure/ui/\">Mercure Debugger</a>\n                </h3>\n              </div>\n            </div>\n          </div>\n        </div>\n      </section>\n\n      <style>{`\n        @import url('https://fonts.googleapis.com/css?family=Open+Sans:400,700|Roboto+Slab:300,700');\n\n        body {\n          margin: 0;\n        }\n\n        .welcome {\n          height: auto;\n          width: auto;\n          text-align: center;\n          color: #1d1e1c;\n          font-family: 'Open Sans', sans-serif;\n          font-size: 14px;\n          overflow: auto;\n        }\n\n        .welcome a {\n          text-decoration: none;\n          color: #38a9b4;\n          font-weight: bold;\n        }\n\n        .welcome h1 {\n          font-family: 'Roboto Slab', serif;\n          font-weight: 300;\n          font-size: 36px;\n          margin: 0 0 10px;\n          line-height: 30px;\n        }\n\n        .welcome h1 strong {\n          font-weight: 700;\n          color: #38a9b4;\n        }\n\n        .welcome h2 {\n          text-transform: uppercase;\n          font-size: 18px;\n          font-weight: bold;\n          margin: 25px 0 5px;\n        }\n\n        .welcome h3 {\n          text-transform: uppercase;\n          font-weight: 500;\n          color: #38a9b4;\n          font-size: 16px;\n          margin: 0 0 5px;\n          display: block;\n        }\n\n        /***** TOP *****/\n\n        .welcome__top {\n          background-color: #67cece;\n          padding-bottom: 40px;\n        }\n\n        .welcome__flag {\n          transform: rotate(30deg);\n          position: fixed;\n          right: -190px;\n          top: 65px;\n          box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.2);\n          z-index: 5;\n        }\n\n        /***** MAIN *****/\n\n        .welcome__main {\n          box-shadow: 0 6px 10px 0 rgba(0, 0, 0, 0.14),\n            0 1px 18px 0 rgba(0, 0, 0, 0.12), 0 3px 5px -1px rgba(0, 0, 0, 0.3);\n          width: 80%;\n          max-width: 1100px;\n          margin-top: 100px;\n          margin-left: auto;\n          margin-right: auto;\n          transform: translateY(-50px);\n          background-color: white;\n          display: flex;\n        }\n\n        .main__aside {\n          background-color: #afe5e5;\n          width: 30%;\n          position: relative;\n          overflow: hidden;\n        }\n\n        .aside__circle,\n        .main__aside svg {\n          position: absolute;\n          left: 50%;\n          top: 50%;\n          transform: translate(-50%, -50%);\n        }\n\n        .aside__circle {\n          background-color: white;\n          border-radius: 50%;\n          width: 90%;\n          height: 0;\n          padding-bottom: 90%;\n        }\n\n        .aside__circle:after {\n          content: '';\n          width: 4px;\n          left: calc(50% - 5px);\n          top: -50%;\n          position: absolute;\n          height: 100%;\n          background-color: #1d1e1c;\n        }\n\n        .main__aside svg {\n          width: 100%;\n        }\n\n        .main__content {\n          padding: 30px;\n          text-align: left;\n          flex: auto;\n        }\n        .other__bloc {\n          display: inline-flex;\n          align-items: center;\n          border: 4px solid #afe5e5;\n          padding: 10px 20px;\n          margin: 10px 0;\n          height: 170px;\n          box-sizing: border-box;\n          text-align: left;\n          width: 40%;\n        }\n\n        .other__bloc:not(:last-of-type) {\n          margin-right: 10px;\n        }\n\n        .other__bloc h3:not(:first-child) {\n          margin-top: 15px;\n          padding-top: 5px;\n        }\n\n        .other__circle {\n          width: 110px;\n          height: 110px;\n          background-color: #afe5e5;\n          border-radius: 50%;\n          margin-right: 20px;\n        }\n\n        .other__circle svg {\n          width: 110px;\n        }\n\n        .buttons__group {\n          display: inline-flex;\n          vertical-align: center;\n        }\n\n        .buttons__group .buttons__or {\n          width: 4px;\n          position: relative;\n          text-align: center;\n        }\n\n        .buttons__group .buttons__or:before {\n          content: 'or';\n          font-size: 12px;\n          color: #aaa;\n          line-height: 18px;\n          position: absolute;\n          border-radius: 50%;\n          top: 50%;\n          left: 50%;\n          transform: translate(-50%, -50%);\n          background-color: white;\n          width: 18px;\n          height: 18px;\n        }\n\n        .buttons__group .other__button:first-child {\n          border-radius: 5px 0 0 5px;\n          padding-right: 15px;\n        }\n\n        .buttons__group .other__button:last-child {\n          border-radius: 0 5px 5px 0;\n          padding-left: 15px;\n        }\n\n        a.other__button {\n          background-color: #e0e1e2;\n          font-size: 11px;\n          color: #686e63;\n          cursor: pointer;\n          padding: 5px 10px;\n          display: inline-block;\n          transition: all ease 0.2s;\n          text-transform: uppercase;\n        }\n\n        .other__button:hover {\n          background-color: #afe5e5;\n          color: #339ba5;\n        }\n\n        .main__button {\n          display: inline-block;\n          padding: 10px 50px 10px 10px;\n          border: 3px solid #339ba5;\n          font-size: 22px;\n          color: #339ba5;\n          text-transform: uppercase;\n          margin: 15px 0;\n          overflow: hidden;\n          transition: all ease 0.3s;\n          cursor: pointer;\n          position: relative;\n        }\n\n        .main__button svg {\n          position: absolute;\n          right: 10px;\n          top: 50%;\n          transform: translateY(-50%);\n          transition: transform ease 0.2s;\n        }\n\n        .main__button:hover {\n          background-color: #afe5e5;\n        }\n\n        .main__button:hover svg {\n          transform: translateY(-50%) rotate(35deg);\n        }\n\n        /***** HELP *****/\n\n        .welcome__help {\n          background-color: white;\n          box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.2);\n          padding: 10px;\n          position: fixed;\n          right: -5px;\n          top: 50%;\n          transform: translateY(-50%);\n          border-radius: 5px;\n          text-align: center;\n        }\n\n        .welcome__help h2 {\n          color: #aaa;\n          font-size: 12px;\n          margin: 10px 0;\n        }\n\n        .help__circle {\n          width: 36px;\n          height: 36px;\n          border-radius: 50%;\n          border: 2px solid #ccc;\n          display: block;\n          margin: 10px auto;\n          transition: all ease 0.2s;\n          position: relative;\n        }\n\n        .help__circle svg {\n          position: absolute;\n          left: 50%;\n          top: 50%;\n          transform: translate(-50%, -50%);\n        }\n\n        .help__circle:hover {\n          border-color: #67cece;\n          background-color: #afe5e5;\n        }\n\n        /***** MEDIAS *****/\n\n        @media (max-width: 1200px) {\n          .main__aside,\n          .welcome__help {\n            display: none;\n          }\n          .main__content {\n            width: 100%;\n            text-align: center;\n            padding: 20px;\n          }\n        }\n\n        @media (max-width: 600px) {\n          .welcome__main {\n            width: calc(100% - 40px);\n          }\n          .welcome h1 {\n            display: none;\n          }\n          .welcome__flag,\n          .main__other {\n            display: none;\n          }\n          .main__content {\n            padding: 10px;\n          }\n        }\n      `}</style>\n    </div>\n  )\n}\nexport default SwaggerDocs\n\nfunction Admin(): JSX.Element {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width={100}\n      height={100}\n      viewBox=\"0 0 646 646\"\n    >\n      <style>\n        {`\n          .adminst0 {\n            fill: #273942;\n          }\n          .adminst1 {\n            fill: #b7cdd8;\n          }\n          .adminst2 {\n            fill: #e2e2f7;\n          }\n          .adminst3 {\n            fill: #52677a;\n          }\n          .adminst4 {\n            fill: #354f5c;\n          }\n          .adminst5 {\n            fill: #ce521f;\n          }\n          .adminst6 {\n            fill: #ebebeb;\n          }\n          .adminst7 {\n            fill: #8e96a3;\n          }\n          .adminst8 {\n            fill: #3d4d5c;\n          }\n          .adminst9 {\n            fill: #3e9697;\n          }\n          .adminst10 {\n            fill: #68b7ce;\n          }\n          .adminst11 {\n            fill: #e8e8e8;\n          }\n          .adminst12 {\n            fill: #ffffff;\n          }\n          .adminst13 {\n            fill: #828282;\n          }\n          .adminst14 {\n            fill: #cccccc;\n          }\n          .adminst15 {\n            fill: #606060;\n          }\n          .adminst16 {\n            fill: #c6c6c6;\n          }\n          .adminst17 {\n            opacity: 0.15;\n          }\n          .adminst18 {\n            fill: #1d1e1c;\n          }\n          .adminst19 {\n            fill: #ffd700;\n          }\n          .adminst20 {\n            fill: #ff9700;\n          }\n          .adminst21 {\n            fill: #ffffe8;\n          }\n          .adminst22 {\n            fill: #f2dab8;\n          }\n          .adminst23 {\n            fill: #d44d41;\n          }\n          .adminst24 {\n            opacity: 0.3;\n          }\n          .adminst25 {\n            opacity: 0.3;\n            fill: #ffffff;\n          }\n          .adminst26 {\n            fill: #f01c01;\n          }\n          .adminst27 {\n            fill: #dbdad9;\n          }\n          .adminst28 {\n            opacity: 0.4;\n            fill: #ffffff;\n          }\n          .adminst29 {\n            opacity: 0.2;\n          }\n          .adminst30 {\n            opacity: 0.2;\n            fill: #020202;\n          }\n          .adminst31 {\n            fill: #f3554b;\n          }\n          .adminst32 {\n            fill: #bf2c28;\n          }\n          .adminst33 {\n            fill: #1f6a7b;\n          }\n          .adminst34 {\n            fill: #0594af;\n          }\n          .adminst35 {\n            fill: #38a9b4;\n          }\n          .adminst36 {\n            opacity: 0.2;\n            fill: #1d1e1c;\n          }\n          .adminst37 {\n            opacity: 0.64;\n            fill: #a6d9ed;\n          }\n          .adminst38 {\n            fill-rule: evenodd;\n            clip-rule: evenodd;\n            fill: #f0f0f0;\n          }\n          .adminst39 {\n            fill-rule: evenodd;\n            clip-rule: evenodd;\n            fill: #e1dddd;\n          }\n          .adminst40 {\n            fill-rule: evenodd;\n            clip-rule: evenodd;\n            fill: #ffffff;\n          }\n          .adminst41 {\n            fill-rule: evenodd;\n            clip-rule: evenodd;\n            fill: #af3737;\n          }\n          .adminst42 {\n            fill-rule: evenodd;\n            clip-rule: evenodd;\n            fill: #990000;\n          }\n          .adminst43 {\n            fill: #990000;\n          }\n          .adminst44 {\n            fill: #510000;\n          }\n          .adminst45 {\n            opacity: 0.5;\n            fill-rule: evenodd;\n            clip-rule: evenodd;\n            fill: #8e2525;\n          }\n          .adminst46 {\n            fill: #2ba2b2;\n          }\n          .adminst47 {\n            fill: #34aac0;\n          }\n          .adminst48 {\n            fill: #f69f00;\n          }\n          .adminst49 {\n            fill: #f59e00;\n          }\n          .adminst50 {\n            opacity: 0.1;\n          }\n          .adminst51 {\n            fill: #ed9406;\n          }\n          .adminst52 {\n            fill: #c6006d;\n          }\n          .adminst53 {\n            fill: #a50263;\n          }\n          .adminst54 {\n            fill: #6ac700;\n          }\n          .adminst55 {\n            fill: #5b9904;\n          }\n          .adminst56 {\n            fill: #070707;\n          }\n        `}\n      </style>\n      <path\n        className=\"adminst0\"\n        d=\"M77.9 459.8c0 0-1.2 11.5 33.3 11.5 34.5 0 438.5 0.7 438.5 0.7s23.1 0.7 29.3-11.3L77.9 459.8z\"\n      />\n      <path\n        className=\"adminst1\"\n        d=\"M579 457.5c-2 4.3-7.8 6.5-13.8 6.5l-473.7-0.7c-6 0-12.1-3-13.7-6.7l33.2-66.2c3.8-5.8 3.3-8.5 10.2-8.5h416.2c3.3 0 7.6 2.4 10.5 8.5L579 457.5z\"\n      />\n      <path\n        className=\"adminst2\"\n        d=\"M335.3 140.7c0 1.6-1.3 2.9-2.8 2.9h-5.7c-1.6 0-2.8-1.3-2.8-2.9l0 0c0-1.6 1.3-2.9 2.8-2.9h5.7C334.1 137.8 335.3 139.1 335.3 140.7L335.3 140.7z\"\n      />\n      <polygon\n        className=\"adminst3\"\n        points=\"255.9 435.6 259.2 424.8 232.5 424.8 227.9 435.6 \"\n      />\n      <polygon\n        className=\"adminst3\"\n        points=\"262 421.1 265 411.8 239.2 411.8 235.1 421.1 \"\n      />\n      <polygon\n        className=\"adminst3\"\n        points=\"265.8 408.6 268.8 399.2 243.9 399.2 239.9 408.6 \"\n      />\n      <polygon\n        className=\"adminst3\"\n        points=\"228.4 408.6 232.2 399.2 209.1 399.2 204.3 408.6 \"\n      />\n      <polygon\n        className=\"adminst3\"\n        points=\"216.1 435.6 220.5 424.8 195.7 424.8 190.1 435.6 \"\n      />\n      <polygon\n        className=\"adminst3\"\n        points=\"223 421.1 226.9 411.8 202.9 411.8 198.1 421.1 \"\n      />\n      <polygon\n        className=\"adminst3\"\n        points=\"298.8 408.6 301 399.2 279.9 399.2 276.8 408.6 \"\n      />\n      <polygon\n        className=\"adminst3\"\n        points=\"193.2 408.6 197.9 399.2 173.1 399.2 167.5 408.6 \"\n      />\n      <polygon\n        className=\"adminst3\"\n        points=\"184.5 424.8 158.8 424.8 151.4 435.6 179.2 435.6 \"\n      />\n      <polygon\n        className=\"adminst3\"\n        points=\"186.3 421.3 191.6 412 166.5 412 160.7 421.3 \"\n      />\n      <polygon\n        className=\"adminst3\"\n        points=\"297 421.1 299 411.8 274.9 411.8 272.7 421.1 \"\n      />\n      <polygon\n        className=\"adminst3\"\n        points=\"155.3 412 132.9 412 124.6 420.6 149.4 420.6 \"\n      />\n      <polygon\n        className=\"adminst3\"\n        points=\"146 424.5 122.7 424.5 113.4 434.9 139 434.9 \"\n      />\n      <polygon\n        className=\"adminst3\"\n        points=\"157.9 408 163.2 399.2 141.7 399.2 135.4 408 \"\n      />\n      <polygon\n        className=\"adminst3\"\n        points=\"474.1 435.6 501.9 435.6 494.7 424.8 468.1 424.8 \"\n      />\n      <polygon\n        className=\"adminst3\"\n        points=\"460.7 411.8 465.9 421.1 492.7 421.1 486.3 411.8 \"\n      />\n      <polygon\n        className=\"adminst3\"\n        points=\"485.6 408.6 479.4 399.2 454.7 399.2 459.9 408.6 \"\n      />\n      <polygon\n        className=\"adminst3\"\n        points=\"413.1 421.1 408.5 411.8 385.7 411.8 389.4 421.1 \"\n      />\n      <polygon\n        className=\"adminst3\"\n        points=\"419.9 435.6 413.9 424.8 390.4 424.8 394.6 435.6 \"\n      />\n      <polygon\n        className=\"adminst3\"\n        points=\"445.7 408.6 441.7 399.2 417.6 399.2 422.8 408.6 \"\n      />\n      <polygon\n        className=\"adminst3\"\n        points=\"453.7 421.1 448.2 411.8 423.9 411.8 428.4 421.1 \"\n      />\n      <polygon\n        className=\"adminst3\"\n        points=\"434.3 435.6 460.6 435.6 454.3 424.8 429.2 424.8 \"\n      />\n      <polygon\n        className=\"adminst3\"\n        points=\"408.1 408.6 402.2 399.2 378.8 399.2 383.7 408.6 \"\n      />\n      <polygon\n        className=\"adminst3\"\n        points=\"509.3 424.8 516.2 435.6 545.5 435.6 537.3 424.8 \"\n      />\n      <polygon\n        className=\"adminst3\"\n        points=\"526.7 408.6 519.5 399.2 493.5 399.2 499.5 408.6 \"\n      />\n      <polygon\n        className=\"adminst3\"\n        points=\"507.2 421.1 535.3 421.1 528.1 411.8 501.1 411.8 \"\n      />\n      <polygon\n        className=\"adminst3\"\n        points=\"372.5 408.6 368.6 399.2 343.9 399.2 346.7 408.6 \"\n      />\n      <polygon\n        className=\"adminst3\"\n        points=\"376.1 421.1 372.2 411.8 346.5 411.8 349.4 421.1 \"\n      />\n      <polygon\n        className=\"adminst3\"\n        points=\"334.9 408.6 333.9 399.2 311 399.2 310.1 408.6 \"\n      />\n      <polygon\n        className=\"adminst3\"\n        points=\"336 421.1 334.4 411.8 310.1 411.8 308.9 421.1 \"\n      />\n      <polygon\n        className=\"adminst3\"\n        points=\"376.9 424.8 349.2 424.8 324.2 424.8 324 424.8 298.2 424.8 297.8 424.8 270.6 424.8 268.1 435.6 297 435.6 297.4 435.6 324.5 435.6 324.6 435.6 350.8 435.6 380.4 435.6 \"\n      />\n      <path\n        className=\"adminst0\"\n        d=\"M269.9 453.7l-1.4 0.7c-4.2 3.9-0.5 5 10.4 5h86.6c10.9 0 14.9-1.5 10.2-5l-1.4-0.7H269.9z\"\n      />\n      <path\n        className=\"adminst4\"\n        d=\"M364.5 446.7c-2.9-1.7-4.9-2.6-11.1-2.6l-63-0.1c-6.2 0-7.8 1-10.7 2.6l-9.8 6.9h104.3L364.5 446.7z\"\n      />\n      <path\n        className=\"adminst5\"\n        d=\"M122.9 274.2L122.9 274.2c-0.8-0.3-1.2-1.2-0.9-2l1.3-3.4 2.9 1.1 -1.3 3.4C124.6 274 123.7 274.5 122.9 274.2z\"\n      />\n      <path\n        className=\"adminst5\"\n        d=\"M139.2 280.2L139.2 280.2c-0.8-0.3-1.2-1.2-0.9-2 0 0 1.2-3.2 1.3-3.4 0.1-0.2 2.9 1.1 2.9 1.1l-1.3 3.4C140.9 280 140 280.5 139.2 280.2z\"\n      />\n      <path\n        className=\"adminst6\"\n        d=\"M122.6 273.5L122.6 273.5c-0.8-0.3-1.2-1.2-0.9-2l1.4-3.8c0.3-0.8 1.2-1.2 2-0.9l0 0c0.8 0.3 1.2 1.2 0.9 2l-1.4 3.8C124.3 273.4 123.4 273.8 122.6 273.5z\"\n      />\n      <path\n        className=\"adminst6\"\n        d=\"M138.8 279.5L138.8 279.5c-0.8-0.3-1.2-1.2-0.9-2l1.4-3.8c0.3-0.8 1.2-1.2 2-0.9v0c0.8 0.3 1.2 1.2 0.9 2l-1.4 3.8C140.5 279.3 139.6 279.8 138.8 279.5z\"\n      />\n      <rect\n        x=\"117.2\"\n        y={311}\n        transform=\"matrix(0.9384 0.3456 -0.3456 0.9384 116.1504 -22.8967)\"\n        className=\"adminst7\"\n        width=\"10.2\"\n        height=\"6.6\"\n      />\n      <rect\n        x=\"121.6\"\n        y={300}\n        transform=\"matrix(0.9384 0.3456 -0.3456 0.9384 112.6343 -25.0805)\"\n        className=\"adminst7\"\n        width=\"10.2\"\n        height=\"6.6\"\n      />\n      <rect\n        x=\"114.2\"\n        y=\"102.3\"\n        className=\"adminst8\"\n        width=\"424.9\"\n        height=\"268.5\"\n      />\n      <rect\n        x=\"130.5\"\n        y={117}\n        className=\"adminst9\"\n        width=\"392.1\"\n        height=\"232.6\"\n      />\n      <rect\n        x=\"142.9\"\n        y=\"370.9\"\n        className=\"adminst3\"\n        width=\"63.1\"\n        height=\"11.1\"\n      />\n      <rect\n        x=\"446.5\"\n        y=\"370.7\"\n        className=\"adminst3\"\n        width=\"63.1\"\n        height=\"11.3\"\n      />\n      <rect\n        x=\"128.3\"\n        y=\"116.9\"\n        className=\"adminst10\"\n        width=\"394.2\"\n        height=\"25.3\"\n      />\n      <rect\n        x=\"128.3\"\n        y=\"142.2\"\n        className=\"adminst11\"\n        width=\"394.2\"\n        height=\"210.4\"\n      />\n      <rect\n        x=\"138.7\"\n        y=\"124.9\"\n        className=\"adminst12\"\n        width=\"94.1\"\n        height=\"9.6\"\n      />\n      <rect\n        x=\"128.3\"\n        y=\"142.2\"\n        className=\"adminst12\"\n        width=\"86.5\"\n        height=\"210.4\"\n      />\n      <rect x=\"132.3\" y=\"152.8\" className=\"adminst13\" width=\"12.6\" height={7} />\n      <rect x=\"149.5\" y=\"152.8\" className=\"adminst13\" width=\"57.2\" height={7} />\n      <rect x=\"132.3\" y=\"169.7\" className=\"adminst13\" width=\"12.6\" height={7} />\n      <rect x=\"149.5\" y=\"169.7\" className=\"adminst13\" width=\"50.6\" height={7} />\n      <rect x=\"132.3\" y=\"187.6\" className=\"adminst13\" width=\"12.6\" height={7} />\n      <rect x=\"149.5\" y=\"187.6\" className=\"adminst13\" width=\"53.2\" height={7} />\n      <rect x=\"132.3\" y=\"205.5\" className=\"adminst13\" width=\"12.6\" height={7} />\n      <rect x=\"149.5\" y=\"205.5\" className=\"adminst13\" width=\"50.6\" height={7} />\n      <rect x=\"132.3\" y=\"222.6\" className=\"adminst13\" width=\"12.6\" height={7} />\n      <rect x=\"149.5\" y=\"222.6\" className=\"adminst13\" width=\"38.7\" height={7} />\n      <rect x=\"132.3\" y=\"239.5\" className=\"adminst13\" width=\"12.6\" height={7} />\n      <rect x=\"149.5\" y=\"239.5\" className=\"adminst13\" width=\"53.2\" height={7} />\n      <rect\n        x=\"224.5\"\n        y=\"153.4\"\n        className=\"adminst12\"\n        width=\"288.9\"\n        height=\"165.9\"\n      />\n      <path\n        className=\"adminst14\"\n        d=\"M513.7 319.5H224.2V153.2h289.4V319.5zM224.7 319.1h288.4V153.5H224.7V319.1z\"\n      />\n      <rect\n        x=\"224.7\"\n        y=\"319.7\"\n        className=\"adminst11\"\n        width=\"288.9\"\n        height=\"25.1\"\n      />\n      <path\n        className=\"adminst14\"\n        d=\"M513.9 345H224.5v-25.5h289.4V345zM225 344.6h288.4v-24.7H225V344.6z\"\n      />\n      <rect\n        x=\"235.5\"\n        y=\"161.1\"\n        className=\"adminst15\"\n        width=\"75.5\"\n        height=\"8.6\"\n      />\n      <rect x=\"469.4\" y={162} className=\"adminst10\" width=\"35.4\" height=\"8.6\" />\n      <rect\n        x=\"426.5\"\n        y=\"161.8\"\n        className=\"adminst10\"\n        width=\"35.4\"\n        height=\"8.6\"\n      />\n      <rect x={385} y=\"161.8\" className=\"adminst10\" width=\"35.4\" height=\"8.6\" />\n      <rect\n        x=\"224.5\"\n        y=\"319.2\"\n        className=\"adminst16\"\n        width=\"288.9\"\n        height=\"0.2\"\n      />\n      <rect\n        x=\"224.5\"\n        y=\"301.7\"\n        className=\"adminst16\"\n        width=\"288.9\"\n        height=\"0.2\"\n      />\n      <rect\n        x=\"224.5\"\n        y=\"283.7\"\n        className=\"adminst16\"\n        width=\"288.9\"\n        height=\"0.2\"\n      />\n      <rect\n        x=\"224.5\"\n        y=\"266.2\"\n        className=\"adminst16\"\n        width=\"288.9\"\n        height=\"0.2\"\n      />\n      <rect\n        x=\"224.5\"\n        y=\"249.6\"\n        className=\"adminst16\"\n        width=\"288.9\"\n        height=\"0.2\"\n      />\n      <rect\n        x=\"224.5\"\n        y=\"232.1\"\n        className=\"adminst16\"\n        width=\"288.9\"\n        height=\"0.2\"\n      />\n      <rect\n        x=\"224.5\"\n        y=\"216.5\"\n        className=\"adminst16\"\n        width=\"288.9\"\n        height=\"0.2\"\n      />\n      <rect\n        x=\"224.5\"\n        y={199}\n        className=\"adminst16\"\n        width=\"288.9\"\n        height=\"0.2\"\n      />\n      <rect\n        x=\"229.6\"\n        y=\"205.2\"\n        className=\"adminst13\"\n        width=\"61.4\"\n        height=\"6.1\"\n      />\n      <rect\n        x=\"331.3\"\n        y=\"205.2\"\n        className=\"adminst13\"\n        width=\"36.9\"\n        height=\"6.1\"\n      />\n      <rect x=\"426.6\" y=\"205.2\" className=\"adminst13\" width={10} height=\"6.1\" />\n      <rect x=\"229.6\" y={222} className=\"adminst13\" width=\"74.4\" height=\"6.1\" />\n      <rect x=\"331.3\" y={222} className=\"adminst13\" width=\"36.9\" height=\"6.1\" />\n      <rect x=\"426.6\" y={222} className=\"adminst13\" width={10} height=\"6.1\" />\n      <rect\n        x=\"229.6\"\n        y=\"237.9\"\n        className=\"adminst13\"\n        width=\"52.8\"\n        height=\"6.1\"\n      />\n      <rect\n        x=\"331.3\"\n        y=\"237.9\"\n        className=\"adminst13\"\n        width=\"36.9\"\n        height=\"6.1\"\n      />\n      <rect x=\"426.6\" y=\"237.9\" className=\"adminst13\" width={10} height=\"6.1\" />\n      <rect\n        x=\"229.6\"\n        y=\"255.1\"\n        className=\"adminst13\"\n        width=\"74.4\"\n        height=\"6.1\"\n      />\n      <rect\n        x=\"331.3\"\n        y=\"255.1\"\n        className=\"adminst13\"\n        width=\"36.9\"\n        height=\"6.1\"\n      />\n      <rect x=\"426.6\" y=\"255.1\" className=\"adminst13\" width={10} height=\"6.1\" />\n      <rect\n        x=\"229.6\"\n        y=\"271.8\"\n        className=\"adminst13\"\n        width=\"61.4\"\n        height=\"6.1\"\n      />\n      <rect\n        x=\"331.3\"\n        y=\"271.8\"\n        className=\"adminst13\"\n        width=\"36.9\"\n        height=\"6.1\"\n      />\n      <rect x=\"426.6\" y=\"271.8\" className=\"adminst13\" width={10} height=\"6.1\" />\n      <rect\n        x=\"229.6\"\n        y=\"289.6\"\n        className=\"adminst13\"\n        width=\"69.7\"\n        height=\"6.1\"\n      />\n      <rect\n        x=\"331.3\"\n        y=\"289.6\"\n        className=\"adminst13\"\n        width=\"36.9\"\n        height=\"6.1\"\n      />\n      <rect x=\"426.6\" y=\"289.6\" className=\"adminst13\" width={10} height=\"6.1\" />\n      <rect\n        x=\"229.6\"\n        y=\"307.7\"\n        className=\"adminst13\"\n        width=\"74.4\"\n        height=\"6.1\"\n      />\n      <rect\n        x=\"331.3\"\n        y=\"307.7\"\n        className=\"adminst13\"\n        width=\"36.9\"\n        height=\"6.1\"\n      />\n      <rect x=\"426.6\" y=\"307.7\" className=\"adminst13\" width={10} height=\"6.1\" />\n      <rect x=\"403.1\" y=\"205.2\" className=\"adminst13\" width={10} height=\"6.1\" />\n      <rect x=\"403.1\" y={222} className=\"adminst13\" width={10} height=\"6.1\" />\n      <rect x=\"403.1\" y=\"237.9\" className=\"adminst13\" width={10} height=\"6.1\" />\n      <rect x=\"403.1\" y=\"255.1\" className=\"adminst13\" width={10} height=\"6.1\" />\n      <rect x=\"403.1\" y=\"271.8\" className=\"adminst13\" width={10} height=\"6.1\" />\n      <rect x=\"403.1\" y=\"289.6\" className=\"adminst13\" width={10} height=\"6.1\" />\n      <rect x=\"403.1\" y=\"307.7\" className=\"adminst13\" width={10} height=\"6.1\" />\n      <rect\n        x=\"490.9\"\n        y=\"205.2\"\n        className=\"adminst10\"\n        width=\"13.5\"\n        height=\"6.1\"\n      />\n      <rect\n        x=\"467.1\"\n        y=\"205.2\"\n        className=\"adminst10\"\n        width=\"13.5\"\n        height=\"6.1\"\n      />\n      <rect x=\"490.9\" y={222} className=\"adminst10\" width=\"13.5\" height=\"6.1\" />\n      <rect x=\"467.1\" y={222} className=\"adminst10\" width=\"13.5\" height=\"6.1\" />\n      <rect\n        x=\"490.9\"\n        y=\"237.9\"\n        className=\"adminst10\"\n        width=\"13.5\"\n        height=\"6.1\"\n      />\n      <rect\n        x=\"467.1\"\n        y=\"237.9\"\n        className=\"adminst10\"\n        width=\"13.5\"\n        height=\"6.1\"\n      />\n      <rect\n        x=\"490.9\"\n        y=\"255.1\"\n        className=\"adminst10\"\n        width=\"13.5\"\n        height=\"6.1\"\n      />\n      <rect\n        x=\"467.1\"\n        y=\"255.1\"\n        className=\"adminst10\"\n        width=\"13.5\"\n        height=\"6.1\"\n      />\n      <rect\n        x=\"490.9\"\n        y=\"271.8\"\n        className=\"adminst10\"\n        width=\"13.5\"\n        height=\"6.1\"\n      />\n      <rect\n        x=\"467.1\"\n        y=\"271.8\"\n        className=\"adminst10\"\n        width=\"13.5\"\n        height=\"6.1\"\n      />\n      <rect\n        x=\"490.9\"\n        y=\"289.6\"\n        className=\"adminst10\"\n        width=\"13.5\"\n        height=\"6.1\"\n      />\n      <rect\n        x=\"467.1\"\n        y=\"289.6\"\n        className=\"adminst10\"\n        width=\"13.5\"\n        height=\"6.1\"\n      />\n      <rect\n        x=\"490.9\"\n        y=\"307.7\"\n        className=\"adminst10\"\n        width=\"13.5\"\n        height=\"6.1\"\n      />\n      <rect\n        x=\"467.1\"\n        y=\"307.7\"\n        className=\"adminst10\"\n        width=\"13.5\"\n        height=\"6.1\"\n      />\n      <circle className=\"adminst10\" cx=\"349.7\" cy=\"332.5\" r={6} />\n      <circle className=\"adminst12\" cx=\"365.5\" cy=\"332.5\" r={6} />\n      <path\n        className=\"adminst14\"\n        d=\"M365.5 338.8c-3.5 0-6.3-2.8-6.3-6.3 0-3.5 2.8-6.3 6.3-6.3 3.5 0 6.3 2.8 6.3 6.3C371.8 336 369 338.8 365.5 338.8zM365.5 326.7c-3.2 0-5.8 2.6-5.8 5.8s2.6 5.8 5.8 5.8 5.8-2.6 5.8-5.8S368.7 326.7 365.5 326.7z\"\n      />\n      <circle className=\"adminst12\" cx=\"380.7\" cy=\"332.5\" r={6} />\n      <path\n        className=\"adminst14\"\n        d=\"M380.7 338.8c-3.5 0-6.3-2.8-6.3-6.3 0-3.5 2.8-6.3 6.3-6.3 3.5 0 6.3 2.8 6.3 6.3C387 336 384.2 338.8 380.7 338.8zM380.7 326.7c-3.2 0-5.8 2.6-5.8 5.8s2.6 5.8 5.8 5.8 5.8-2.6 5.8-5.8S383.9 326.7 380.7 326.7z\"\n      />\n      <circle className=\"adminst12\" cx=\"395.6\" cy=\"332.8\" r={6} />\n      <path\n        className=\"adminst14\"\n        d=\"M395.6 339c-3.5 0-6.3-2.8-6.3-6.3 0-3.5 2.8-6.3 6.3-6.3 3.5 0 6.3 2.8 6.3 6.3C401.9 336.2 399.1 339 395.6 339zM395.6 327c-3.2 0-5.8 2.6-5.8 5.8s2.6 5.8 5.8 5.8 5.8-2.6 5.8-5.8S398.8 327 395.6 327z\"\n      />\n      <path\n        className=\"adminst12\"\n        d=\"M363.4 359.2c-0.7 24.6-17.4 43.9-38.4 43.6 -21-0.3-37.4-20.5-36.7-45.1 0.7-24.6 14.1-37.7 35.1-37.4S364.1 334.6 363.4 359.2z\"\n      />\n      <path d=\"M322.3 318c-10.9-0.2-21.3 4.7-29.2 13.5 -7.9 8.8-8.2 14-8.5 26.6 -0.4 12.6 3.5 24.5 10.9 33.5 7.4 9.1 17.5 14.2 28.4 14.4 4.7 0.1 9.1-0.8 13.3-2.4 15.8-6.1 27.2-23.1 27.8-43.9C365.7 333.4 344.2 318.3 322.3 318zM324 400.6c-19.5-0.3-34.8-19.3-34.2-42.4 0.3-11.2 0.1-15.1 7.1-22.9 4-4.5 8.7-7.8 13.8-9.8 3.7-1.4 7.5-2.1 11.4-2.1 9.3 0.1 17.9 4.7 24.1 12.7 6.3 8.1 13.8 12.1 13.4 23.4C359 382.8 343.3 400.8 324 400.6z\" />\n      <path\n        className=\"adminst18\"\n        d=\"M323.3 371.7c4.1 10.6 1.7 20.3-5.4 21.6 -7.1 1.3-16.1-6.2-20.2-16.8 -4.1-10.6-1.7-20.3 5.4-21.6C310.2 353.6 319.2 361.1 323.3 371.7z\"\n      />\n      <path\n        className=\"adminst12\"\n        d=\"M318.4 378.7c1.2 2.9-0.3 5.8-3.4 6.4 -3.1 0.6-6.6-1.2-7.8-4.1 -1.2-2.9 0.3-5.8 3.4-6.4C313.7 374 317.2 375.8 318.4 378.7z\"\n      />\n      <path\n        className=\"adminst12\"\n        d=\"M397.1 364c-0.6 20.7-15.8 37.2-33.9 37 -18.1-0.3-32.3-17.2-31.7-37.9 0.6-20.7 13.1-33.1 31.2-32.9C380.8 330.5 397.7 343.3 397.1 364z\"\n      />\n      <path d=\"M361.7 327.8c-9.5-0.1-18.6 4-25.5 11.6 -6.9 7.5-8.2 13.4-8.5 24.1 -0.3 10.7 3.1 20.9 9.5 28.6 6.5 7.8 15.3 12.1 24.8 12.3 4.1 0.1 8.1-0.7 11.9-2.1 13.9-5.4 24.3-20.2 24.8-37.7C399.3 342.2 381.2 328 361.7 327.8zM393.2 364.4c-0.4 15.1-9.2 27.8-21.1 32.4 -3.1 1.2-6.5 1.8-10 1.8 -8-0.1-15.4-3.8-20.9-10.4 -5.6-6.6-8.5-15.4-8.2-24.6 0.4-15.1 6.6-23.7 18.4-28.2 3.1-1.2 6.5-1.8 10-1.8 8 0.1 17.1 3.3 22.6 9.9C389.6 350 393.5 355.1 393.2 364.4z\" />\n      <path\n        className=\"adminst18\"\n        d=\"M363 375.5c4 8.7 2.1 16.9-4.2 18.4 -6.3 1.4-14.8-4.5-18.8-13.2 -4-8.7-2.1-16.9 4.2-18.4C350.6 360.9 359 366.8 363 375.5z\"\n      />\n      <path\n        className=\"adminst12\"\n        d=\"M357.9 380.7c1.1 2.5-0.2 5-2.9 5.6s-5.7-1-6.8-3.6c-1.1-2.5 0.2-5 2.9-5.6C353.8 376.6 356.8 378.2 357.9 380.7z\"\n      />\n      <polygon\n        className=\"adminst18\"\n        points=\"266.2 510.1 261.1 510.2 224.6 395.1 269.4 412.3 266.1 415.7 230.8 403.9 \"\n      />\n      <polygon\n        className=\"adminst18\"\n        points=\"249.6 546.7 247.5 555 197.6 396.7 273.6 426.7 269.2 430.4 204.6 404.4 \"\n      />\n      <polygon\n        className=\"adminst18\"\n        points=\"305.3 568.7 226.5 447 292.8 452.3 294.8 457.1 237.3 452.8 312.2 568.5 \"\n      />\n      <polyline\n        className=\"adminst18\"\n        points=\"319.1 413.8 321.8 489.2 316.1 488.5 311.9 409 \"\n      />\n      <path\n        className=\"adminst18\"\n        d=\"M315.8 487.8c0 0-6.6-11.3-13.5-3.9 -6.9 7.4-2.6 17.3-2.6 17.3s2.3 3.1 10.1 3.3c7.8 0.2 9.6-0.2 11-2.6 1.4-2.4 1-13.3 1-13.3L315.8 487.8z\"\n      />\n      <path\n        className=\"adminst18\"\n        d=\"M247.6 554c2 3-13.8-15.7-23-7.2 -11.2 10.3-4.3 24.1-4.3 24.1s3.8 3.3 16.4 3.1c16.5-0.3 15.2-4.6 16.2-8.8 1.8-7.1-4.5-21.9-4.5-21.9L247.6 554z\"\n      />\n      <path\n        className=\"adminst18\"\n        d=\"M261.1 507.8c0 0-3.2-10.5-10.6-3.7 -4.4 4.1-4.6 9-4 12.3 0.5 2.6 2.5 4.7 5.1 5.3 1.6 0.3 3.9 0.7 6.9 0.5 10.9-0.7 9.3-4.1 9.3-5.7 0-9.2-3.5-14.8-3.5-14.8L261.1 507.8z\"\n      />\n      <path\n        className=\"adminst18\"\n        d=\"M305.2 567.9c0 0-9.9-16.4-21.3-6.1 -11.4 10.3-2.7 23.2-2.7 23.2s3.9 4 16.8 3.8c16.9-0.3 18.2-8.9 16.9-13.2 -4.5-14.8-7.1-8-7-8.3L305.2 567.9z\"\n      />\n      <polygon\n        className=\"adminst18\"\n        points=\"415 507.4 421 507.3 438 402.1 369 440.3 370.6 449.1 430.4 412.9 \"\n      />\n      <polygon\n        className=\"adminst18\"\n        points=\"413.8 541.9 419 547.3 447.3 469.9 366.9 450.3 361.6 457.7 437.8 474.4 \"\n      />\n      <polygon\n        className=\"adminst18\"\n        points=\"344.6 569.8 355.3 483.5 321.2 458.1 319.4 464.8 348.4 488.8 338.6 569.8 \"\n      />\n      <polyline\n        className=\"adminst18\"\n        points=\"358.5 418.8 358.6 491.3 364.3 493.4 365.6 413.7 \"\n      />\n      <path\n        className=\"adminst18\"\n        d=\"M364.6 492.6c0 0 5.3-11.5 12.4-4.4s3.3 17.2 3.3 17.2 -2.2 3.2-10 3.6 -9.6 0.2-11.1-2.2c-1.5-2.4-0.2-20.2-0.2-20.2L364.6 492.6z\"\n      />\n      <path\n        className=\"adminst18\"\n        d=\"M419.7 546.3c0 0 9.3-18.8 20.9-8.9 6.5 5.6 7.3 12.5 6.8 17.5 -0.5 4.5-3.8 8.2-8.2 9.2 -2.4 0.5-5.6 1-9.7 1 -16.5 0.3-16.2-5.8-17.5-10 -2.1-7.1 2.2-14.2 2.2-14.2L419.7 546.3z\"\n      />\n      <path\n        className=\"adminst18\"\n        d=\"M420.9 505.8c0 0 5.4-13.4 13.1-6.8 4.3 3.7 4.9 8.3 4.5 11.6 -0.3 3-2.5 5.4-5.4 6.1 -1.6 0.4-3.7 0.6-6.4 0.7 -10.9 0.2-11.4-2.5-12.3-5.3 -1.4-4.7 3-16.7 3-16.7L420.9 505.8z\"\n      />\n      <path\n        className=\"adminst18\"\n        d=\"M345.5 564.5c0 0 8.4-15.9 20.2-6 11.8 9.9 5.3 23.9 5.3 23.9s-3.7 4.2-16.7 4.4c-16.9 0.3-17.9-8.1-17.4-12.5 2.4-18.5 5.6-14 5.6-14L345.5 564.5z\"\n      />\n      <path\n        className=\"adminst35\"\n        d=\"M366.6 345.4c41.6 30.2 40 53.4 13 90.6 -21.3 29.3-55.4 38.7-89.1 14.2s-29.3-55.3-8-84.7C303.9 336.2 332.9 320.9 366.6 345.4z\"\n      />\n      <path\n        className=\"adminst18\"\n        d=\"M381.9 438.8c-11.3 15.5-25.7 25.3-41.7 28.4 -17.1 3.3-35.1-1.5-52-13.8 -31.6-22.9-34.7-53.7-9-89.2 26-35.9 57.5-43.2 88.6-20.6 16.8 12.2 31.8 27.3 33.7 45.2C403.3 405.1 393.1 423.4 381.9 438.8zM284.9 368.3c-23.7 32.6-21.4 59.6 7 80.2 30.1 21.9 62.5 16.6 84.5-13.8 28-38.6 25.4-58.9-12-86.1C329 323 301.6 345.2 284.9 368.3z\"\n      />\n      <rect\n        x=\"314.7\"\n        y=\"426.8\"\n        transform=\"matrix(-0.5582 0.8297 -0.8297 -0.5582 854.7977 417.378)\"\n        className=\"adminst56\"\n        width=\"3.2\"\n        height={19}\n      />\n      <rect\n        x=\"314.7\"\n        y=\"426.8\"\n        transform=\"matrix(0.3593 0.9332 -0.9332 0.3593 609.7914 -15.6263)\"\n        className=\"adminst56\"\n        width=\"3.2\"\n        height={19}\n      />\n    </svg>\n  )\n}\n\nfunction Api(): JSX.Element {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width={100}\n      height={100}\n      viewBox=\"0 0 646 646\"\n    >\n      <style>\n        {`\n          .apist0 {\n            fill: #273942;\n          }\n          .apist1 {\n            fill: #b7cdd8;\n          }\n          .apist2 {\n            fill: #e2e2f7;\n          }\n          .apist3 {\n            fill: #52677a;\n          }\n          .apist4 {\n            fill: #354f5c;\n          }\n          .apist5 {\n            fill: #ce521f;\n          }\n          .apist6 {\n            fill: #ebebeb;\n          }\n          .apist7 {\n            fill: #8e96a3;\n          }\n          .apist8 {\n            fill: #3d4d5c;\n          }\n          .apist9 {\n            fill: #3e9697;\n          }\n          .apist10 {\n            fill: #68b7ce;\n          }\n          .apist11 {\n            fill: #e8e8e8;\n          }\n          .apist12 {\n            fill: #ffffff;\n          }\n          .apist13 {\n            fill: #828282;\n          }\n          .apist14 {\n            fill: #cccccc;\n          }\n          .apist15 {\n            fill: #606060;\n          }\n          .apist16 {\n            fill: #c6c6c6;\n          }\n          .apist17 {\n            opacity: 0.15;\n          }\n          .apist18 {\n            fill: #1d1e1c;\n          }\n          .apist19 {\n            fill: #ffd700;\n          }\n          .apist20 {\n            fill: #ff9700;\n          }\n          .apist21 {\n            fill: #ffffe8;\n          }\n          .apist22 {\n            fill: #f2dab8;\n          }\n          .apist23 {\n            fill: #d44d41;\n          }\n          .apist24 {\n            opacity: 0.3;\n          }\n          .apist25 {\n            opacity: 0.3;\n            fill: #ffffff;\n          }\n          .apist26 {\n            fill: #f01c01;\n          }\n          .apist27 {\n            fill: #dbdad9;\n          }\n          .apist28 {\n            opacity: 0.4;\n            fill: #ffffff;\n          }\n          .apist29 {\n            opacity: 0.2;\n          }\n          .apist30 {\n            opacity: 0.2;\n            fill: #020202;\n          }\n          .apist31 {\n            fill: #f3554b;\n          }\n          .apist32 {\n            fill: #bf2c28;\n          }\n          .apist33 {\n            fill: #1f6a7b;\n          }\n          .apist34 {\n            fill: #0594af;\n          }\n          .apist35 {\n            fill: #38a9b4;\n          }\n          .apist36 {\n            opacity: 0.2;\n            fill: #1d1e1c;\n          }\n          .apist37 {\n            opacity: 0.64;\n            fill: #a6d9ed;\n          }\n          .apist38 {\n            fill-rule: evenodd;\n            clip-rule: evenodd;\n            fill: #f0f0f0;\n          }\n          .apist39 {\n            fill-rule: evenodd;\n            clip-rule: evenodd;\n            fill: #e1dddd;\n          }\n          .apist40 {\n            fill-rule: evenodd;\n            clip-rule: evenodd;\n            fill: #ffffff;\n          }\n          .apist41 {\n            fill-rule: evenodd;\n            clip-rule: evenodd;\n            fill: #af3737;\n          }\n          .apist42 {\n            fill-rule: evenodd;\n            clip-rule: evenodd;\n            fill: #990000;\n          }\n          .apist43 {\n            fill: #990000;\n          }\n          .apist44 {\n            fill: #510000;\n          }\n          .apist45 {\n            opacity: 0.5;\n            fill-rule: evenodd;\n            clip-rule: evenodd;\n            fill: #8e2525;\n          }\n          .apist46 {\n            fill: #2ba2b2;\n          }\n          .apist47 {\n            fill: #34aac0;\n          }\n          .apist48 {\n            fill: #f69f00;\n          }\n          .apist49 {\n            fill: #f59e00;\n          }\n          .apist50 {\n            opacity: 0.1;\n          }\n          .apist51 {\n            fill: #ed9406;\n          }\n          .apist52 {\n            fill: #c6006d;\n          }\n          .apist53 {\n            fill: #a50263;\n          }\n          .apist54 {\n            fill: #6ac700;\n          }\n          .apist55 {\n            fill: #5b9904;\n          }\n          .apist56 {\n            fill: #070707;\n          }\n        `}\n      </style>\n      <ellipse className=\"apist17\" cx={349} cy=\"531.8\" rx=\"65.6\" ry=\"25.2\" />\n      <polyline\n        className=\"apist18\"\n        points=\"258.9 104.3 202.1 24.7 196.6 27.3 257 110.5 \"\n      />\n      <path\n        className=\"apist18\"\n        d=\"M200.5 31.9c0 0-13.3-11.2-4.5-20.9s18.5-2.3 18.5-2.3 2.7 3.8 1.3 15.6c-1.8 15.3-6.7 14.9-10.1 14.6\"\n      />\n      <polygon\n        className=\"apist18\"\n        points=\"318.9 219.3 317.5 223.6 238.2 211.9 281.3 171.1 287.3 174.3 247.7 208.9 \"\n      />\n      <path\n        className=\"apist18\"\n        d=\"M316.4 223.2c0 0-10.9 0.8-7.9 7.8 1.7 3.9 4.9 5.4 7.3 5.9 2.2 0.5 4.4-0.5 5.6-2.5 0.6-1.1 1.3-2.5 2-4.5 2.6-7.7 0.8-8.8-1-10 -3.1-2.1-12.6-1.7-12.6-1.7L316.4 223.2z\"\n      />\n      <polygon\n        className=\"apist18\"\n        points=\"350.4 153.9 353.3 151.6 324.5 95 304.1 138.5 308 142.1 324.6 102.9 \"\n      />\n      <path\n        className=\"apist18\"\n        d=\"M352.8 150.9c0 0-2.1-8.4 4-8 3.4 0.2 5.3 2.2 6.3 3.9 0.9 1.5 0.7 3.5-0.5 4.9 -0.7 0.8-1.6 1.7-2.9 2.7 -5.3 4.1-6.5 3-7.9 1.9 -2.3-1.8-4.5-9.1-4.5-9.1L352.8 150.9z\"\n      />\n      <polygon\n        className=\"apist18\"\n        points=\"337.3 138.6 339 136.3 294.1 91.9 292.1 131.7 296.7 134.2 297 98.6 \"\n      />\n      <path\n        className=\"apist18\"\n        d=\"M338.3 135.8c0 0-4.8-6.9 0.6-7.4 3-0.3 5.4 1.2 6.8 2.5 1.3 1.2 1.8 2.9 1.3 4.2 -0.3 0.7-0.8 1.6-1.5 2.7 -3.1 4.2-4.5 3.4-6.1 2.7 -2.6-1.2-7.1-7.1-7.1-7.1L338.3 135.8z\"\n      />\n      <path\n        className=\"apist19\"\n        d=\"M316.8 507c10.4-23.8-3.1-66.9-3.1-66.9l-46.8-32.7 -46.8-32.7c0 0-45 2.1-63.8 20.1 -18.8 18-41.4 68.1-41.4 68.1l27.2-13.4c0 0-37.1 40.1-36.4 101.5 0.6 61.4-0.5 88-0.5 88s24.6-10.2 82.5-30.7c57.9-20.5 82.8-69.1 82.8-69.1l-3.2 30.1C267 569.3 306.3 530.8 316.8 507z\"\n      />\n      <path\n        className=\"apist20\"\n        d=\"M313.7 440.1c0 0 13.5 43 3.1 66.9S267 569.3 267 569.3l3.2-30.1c0 0-24.9 48.6-82.8 69.1S105 639 105 639l161.9-231.6L313.7 440.1z\"\n      />\n      <path\n        className=\"apist21\"\n        d=\"M266.4 408l-35.1-24.5c0 0-32.5-1-45.1 10.3 -12.6 11.3-26.2 44.3-26.2 44.3l18.9-7.7c0 0-24.6 25.4-20.8 67.4 3.2 35.9 4.2 54.3 4.4 58.9L266.4 408z\"\n      />\n      <path\n        className=\"apist22\"\n        d=\"M266.5 407.9l35.1 24.5c0 0 12.1 30.1 5.8 45.9 -6.2 15.7-32.6 39.9-32.6 39.9l0.7-20.4c0 0-15.3 31.9-56.1 42.7 -34.8 9.3-52.5 14.8-56.8 16.2L266.5 407.9z\"\n      />\n      <path\n        className=\"apist23\"\n        d=\"M439.1 355.3c0 0 16.1 43 14.5 58.4s-15.3 38.7-39.9 63.9c-24.6 25.2-44.1 40-44.1 40l-14.7-81.1L439.1 355.3z\"\n      />\n      <path\n        className=\"apist24\"\n        d=\"M354.9 436.6l3.4 19c13.4-7.3 30.7-20.7 44.2-30.1 13.3-9.3 32.5-36.7 42.8-52.1 -3.3-10.2-6.2-18.1-6.2-18.1L354.9 436.6z\"\n      />\n      <path\n        className=\"apist23\"\n        d=\"M257.3 221.7c0 0-45.9-0.4-59.8 6.5 -13.9 6.9-31.1 27.6-46.3 59.4s-22.4 55.2-22.4 55.2l81.2-14.1L257.3 221.7z\"\n      />\n      <path\n        className=\"apist25\"\n        d=\"M246.8 220.9c-14.3 0.3-40 1.5-49.8 6.4 -13.9 6.9-31.1 27.6-46.3 59.4 -4.3 8.9-7.9 17.2-11 24.5 14.8-18.1 44.4-50.1 53-60.1C200.7 241.9 230.4 228.1 246.8 220.9z\"\n      />\n      <path\n        className=\"apist26\"\n        d=\"M537.5 186.4c12-44.1 4.5-125.7 1.2-155.1 -0.7-5.9-6.3-9.8-12-8.4 -28.8 7-108 28-145.3 54.4 -46 32.6-90.4 79.5-121.7 129 -30.7 48.5-60.8 121.4-60.7 147 0 1 0.2 2 0.5 3 2.3 6.6 13.7 33.2 58.1 64.3 44.4 31 73.3 32.6 80.3 32.5 1 0 2-0.2 3-0.5 24.1-8.7 82.2-62 117.2-107.5C493.9 298.7 522.7 240.8 537.5 186.4z\"\n      />\n      <path\n        className=\"apist23\"\n        d=\"M401.3 66.2c-7.7 3.9-14.7 8-20.7 12.2 -46 32.6-90.4 79.5-121.7 129 -13.4 21.2-26.6 46.9-37.3 71.4 18.3 24.7 45.9 58 77.3 82.7 36 28.3 74.9 42.7 98.7 49.5 21-19.6 43-43.1 59.8-64.8 35.7-46.4 64.6-104.3 79.3-158.6 2-7.2 3.4-15.4 4.4-24.3 -18.2-18-41.6-40-63.8-57.1C451.3 86.1 421.7 73.4 401.3 66.2z\"\n      />\n      <path\n        className=\"apist27\"\n        d=\"M379.4 78.7c-45.3 32.5-88.9 78.8-119.8 127.7 -9.3 14.7-18.5 31.6-26.9 48.8l0 0.1c0 0 9 43.2 76.3 91.8 51.5 37.3 94.9 40.6 112.4 40.2 13.3-13.8 26.1-28.3 36.7-42.2 35.7-46.4 64.6-104.3 79.3-158.6 0.2-0.7 0.4-1.5 0.6-2.3 -18.3-19.7-43.8-44.5-70.9-63.4C432.8 96.7 398.7 84.4 379.4 78.7z\"\n      />\n      <path\n        className=\"apist28\"\n        d=\"M379.3 79.1c-46 32.6-90.4 79.5-121.7 129s-62 124.3-60.6 148.5c0 0 2.2 9 12.5 23 9.1-35.6 29.7-97.3 74-168.3C328.2 139.9 425 73.1 489.2 34.1 453.5 44.3 405.8 60.4 379.3 79.1z\"\n      />\n      <path\n        className=\"apist29\"\n        d=\"M536.7 187.5c-14.8 54.4-43.6 112.3-79.3 158.6s-95.4 100.9-118.6 108c0 0-9.2 1-25.9-3.9 30.3-20.8 81.1-61.3 132.5-127.4 51.8-66.5 81.2-180.3 95.8-254C543.9 105.9 545.2 156.2 536.7 187.5z\"\n      />\n      <ellipse\n        transform=\"matrix(0.5728 -0.8197 0.8197 0.5728 20.8644 425.6071)\"\n        className=\"apist30\"\n        cx=\"418.8\"\n        cy=\"192.8\"\n        rx=\"58.2\"\n        ry=\"58.2\"\n      />\n      <ellipse\n        transform=\"matrix(0.5728 -0.8197 0.8197 0.5728 26.0083 422.0111)\"\n        className=\"apist31\"\n        cx=\"417.9\"\n        cy=\"186.1\"\n        rx=\"58.2\"\n        ry=\"58.2\"\n      />\n      <path\n        className=\"apist32\"\n        d=\"M383.6 235.2c-27.1-18.9-33.7-56.4-14.8-83.5 18.9-27.1 56.4-33.7 83.5-14.8s33.7 56.4 14.8 83.5S410.7 254.1 383.6 235.2zM450.3 139.7c-25.6-17.9-60.9-11.6-78.7 14 -17.9 25.6-11.6 60.9 14 78.7 25.6 17.9 60.9 11.6 78.7-14S475.8 157.6 450.3 139.7z\"\n      />\n      <ellipse\n        transform=\"matrix(0.5728 -0.8197 0.8197 0.5728 25.2004 423.3459)\"\n        className=\"apist33\"\n        cx=\"418.8\"\n        cy=\"187.5\"\n        rx=\"44.9\"\n        ry=\"44.9\"\n      />\n      <path\n        className=\"apist34\"\n        d=\"M454.9 213c3.2-4.6 5.4-9.6 6.7-14.8 -1.5-9.2-6.6-17.8-14.8-23.5 -16.2-11.3-38.6-7.4-49.9 8.8 -9.8 14.1-8.2 32.7 3 44.8C419.2 236.8 442.4 230.9 454.9 213z\"\n      />\n      <ellipse\n        transform=\"matrix(0.5728 -0.8197 0.8197 0.5728 -85.2533 408.6919)\"\n        className=\"apist30\"\n        cx=\"349.5\"\n        cy=\"286.1\"\n        rx=\"32.1\"\n        ry=\"32.1\"\n      />\n      <ellipse\n        transform=\"matrix(0.5728 -0.8197 0.8197 0.5728 -82.4164 406.7087)\"\n        className=\"apist31\"\n        cx={349}\n        cy=\"282.4\"\n        rx=\"32.1\"\n        ry=\"32.1\"\n      />\n      <path\n        className=\"apist32\"\n        d=\"M329.6 310.1c-15.3-10.7-19-31.8-8.3-47.1 10.7-15.3 31.8-19 47.1-8.3s19 31.8 8.3 47.1S344.9 320.8 329.6 310.1zM366.4 257.5c-13.7-9.6-32.7-6.2-42.4 7.5 -9.6 13.7-6.2 32.7 7.5 42.4 13.7 9.6 32.7 6.2 42.4-7.5C383.5 286.1 380.2 267.1 366.4 257.5z\"\n      />\n      <ellipse\n        transform=\"matrix(0.5728 -0.8197 0.8197 0.5728 -82.862 407.4448)\"\n        className=\"apist33\"\n        cx=\"349.5\"\n        cy=\"283.2\"\n        rx=\"24.8\"\n        ry=\"24.8\"\n      />\n      <path\n        className=\"apist34\"\n        d=\"M369.4 297.3c1.8-2.5 3-5.3 3.7-8.1 -0.8-5.1-3.6-9.8-8.2-13 -8.9-6.3-21.3-4.1-27.5 4.9 -5.4 7.8-4.5 18 1.7 24.7C349.7 310.4 362.5 307.1 369.4 297.3z\"\n      />\n      <path\n        className=\"apist23\"\n        d=\"M318.9 354.5l6.6-34 -29.7 17.9c0 0-26.3 36.9-35.4 56.8 -9.1 19.9-32.3 64.7-32.3 64.7s34-37.2 49.6-52.6C293.3 391.9 318.9 354.5 318.9 354.5z\"\n      />\n      <path\n        className=\"apist24\"\n        d=\"M325.1 321.1l-6.6 34c0 0-25.6 37.4-41.2 52.8 -15.6 15.4-49.6 52.6-49.6 52.6L325.1 321.1z\"\n      />\n      <path\n        className=\"apist35\"\n        d=\"M292 103.8c24.1 18.7 21.3 48.7 2.1 73.5 -19.2 24.8-46.6 33.8-70.7 15.1s-27.3-51.3-8.1-76.2S267.9 85.1 292 103.8z\"\n      />\n      <path\n        className=\"apist18\"\n        d=\"M295.7 179.4c-10.2 13.1-22.3 21.7-35 24.8 -13.6 3.3-27.2 0.2-39.3-9.2 -22.6-17.5-31.7-49.9-8.5-79.8 23.5-30.3 58.1-30.2 80.4-13 12 9.3 18.4 21.9 18.3 36.5C311.4 151.9 305.8 166.4 295.7 179.4zM216.8 118.3c-21.4 27.6-12.5 56.8 7.7 72.5 21.5 16.7 47.3 11.1 67.1-14.5 20.2-26 19.5-53.4-1.7-69.9C264.7 86.9 232 98.8 216.8 118.3z\"\n      />\n      <ellipse\n        transform=\"matrix(0.4265 -0.9045 0.9045 0.4265 67.3847 293.8434)\"\n        className=\"apist12\"\n        cx=\"265.4\"\n        cy=\"93.8\"\n        rx=\"14.3\"\n        ry=\"26.8\"\n      />\n      <path\n        className=\"apist18\"\n        d=\"M276.9 112.7c-5.7 0-12.1-1.6-18.3-4.5 -6.7-3.2-12.4-7.6-16-12.4 -3.8-5.1-4.9-10.2-3-14.2 1.9-4.1 6.5-6.5 12.9-6.8 6-0.3 13 1.3 19.7 4.5 6.7 3.2 12.4 7.6 16 12.4 3.8 5.1 4.9 10.2 3 14.2s-6.5 6.5-12.9 6.8C277.8 112.7 277.4 112.7 276.9 112.7zM254 78.2c-0.4 0-0.9 0-1.3 0 -5.1 0.3-8.6 2-10 4.8 -1.3 2.9-0.4 6.7 2.6 10.8 3.3 4.4 8.5 8.4 14.7 11.3 6.2 2.9 12.7 4.4 18.1 4.1 5.1-0.3 8.6-2 10-4.8 1.3-2.9 0.4-6.7-2.6-10.8 -3.3-4.4-8.5-8.4-14.7-11.3l0 0C265 79.7 259.1 78.2 254 78.2z\"\n      />\n      <ellipse\n        transform=\"matrix(0.4134 -0.9105 0.9105 0.4134 73.9771 293.7309)\"\n        className=\"apist18\"\n        cx={265}\n        cy=\"89.4\"\n        rx=\"5.5\"\n        ry=\"11.8\"\n      />\n      <ellipse\n        transform=\"matrix(0.5147 -0.8574 0.8574 0.5147 51.5636 268.5486)\"\n        className=\"apist12\"\n        cx={263}\n        cy=\"88.7\"\n        rx=\"2.6\"\n        ry=\"3.5\"\n      />\n      <ellipse\n        transform=\"matrix(0.4265 -0.9045 0.9045 0.4265 40.3973 298.7331)\"\n        className=\"apist12\"\n        cx=\"255.8\"\n        cy=\"117.5\"\n        rx=\"20.2\"\n        ry=\"35.2\"\n      />\n      <path\n        className=\"apist18\"\n        d=\"M269.4 142.9c-7 0-15-1.8-23-5.6 -8.8-4.1-16.1-10-20.7-16.5 -4.8-6.8-6-13.6-3.4-19 2.6-5.5 8.6-8.8 16.8-9.5 7.9-0.6 17.1 1.3 25.9 5.4l0 0c18.7 8.8 29.3 24.5 24.1 35.6C286.2 139.6 278.7 142.9 269.4 142.9zM242.2 95.5c-0.9 0-1.9 0-2.8 0.1 -7 0.6-12 3.2-14 7.6 -2 4.3-0.9 9.9 3.1 15.6 4.2 6.1 11.1 11.5 19.3 15.4 16.7 7.9 33.9 6.8 38.2-2.4 4.4-9.2-5.7-23.2-22.4-31l0 0C256.4 97.4 248.9 95.5 242.2 95.5z\"\n      />\n      <ellipse\n        transform=\"matrix(0.4134 -0.9105 0.9105 0.4134 46.9846 298.4734)\"\n        className=\"apist18\"\n        cx=\"255.2\"\n        cy=\"112.8\"\n        rx=\"7.8\"\n        ry={17}\n      />\n      <ellipse\n        transform=\"matrix(0.5147 -0.8574 0.8574 0.5147 27.4634 268.8198)\"\n        className=\"apist12\"\n        cx=\"251.2\"\n        cy=\"110.2\"\n        rx=\"3.3\"\n        ry=\"4.4\"\n      />\n      <polygon\n        className=\"apist18\"\n        points=\"351.9 255 317.9 159.1 277.6 167.7 282.3 172.8 316 167.9 348.6 260.1 \"\n      />\n      <path\n        className=\"apist18\"\n        d=\"M358.8 264.3c0 0 8.4 10.3-2 17.3s-17.8-2.1-17.8-2.1 -1.8-4.2 1.9-15c3.7-10.8 4.9-13.2 8-14.3C351.9 249 358.8 264.3 358.8 264.3z\"\n      />\n      <polygon\n        className=\"apist18\"\n        points=\"376.3 210.1 341 125.1 306.8 136.4 310.2 140.9 338.4 131.9 373 215.2 \"\n      />\n      <path\n        className=\"apist18\"\n        d=\"M387.5 221.5c0 0 10.4 8.4 1.6 17.4 -8.8 9-17.9 1.7-17.9 1.7s-2.6-3.8-1.2-15.1c1.4-11.3 2.1-13.9 4.8-15.7C377.6 208 387.5 221.5 387.5 221.5z\"\n      />\n      <polygon\n        className=\"apist18\"\n        points=\"308.2 288.9 290.9 223.5 278.9 194 273.5 197.1 287.1 227.8 303.2 291.5 \"\n      />\n      <path\n        className=\"apist18\"\n        d=\"M316 300.4c0 0 8.3 10.4-2.3 17.3 -10.5 6.9-17.8-2.3-17.8-2.3s-1.7-4.3 2.1-15c3.8-10.7 5.1-13.1 8.2-14.2C309.3 285.1 316 300.4 316 300.4z\"\n      />\n      <polyline\n        className=\"apist18\"\n        points=\"260 157.4 146.7 114.1 142.8 119.2 262.4 164.5 \"\n      />\n      <path\n        className=\"apist18\"\n        d=\"M150 121.4c0 0-21.5-2.6-18.9-18.6s17.6-15 17.6-15 5.4 2.1 11.9 15.3c8.6 17.1 3.2 20.1-0.5 22\"\n      />\n    </svg>\n  )\n}\n\nfunction Mercure(): JSX.Element {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      x={0}\n      y={0}\n      viewBox=\"0 0 100 100\"\n      xmlSpace=\"preserve\"\n    >\n      <style>\n        {\n          '.prefix__st1{fill:#fff}.prefix__st2,.prefix__st4{fill:#1e1f1d}.prefix__st4{opacity:.2}.prefix__st5{opacity:.1;fill:#020203}'\n        }\n      </style>\n      <circle\n        transform=\"rotate(-80.781 49.748 50.086)\"\n        cx={49.7}\n        cy={50.1}\n        fill=\"#bbe1e3\"\n        r={45.6}\n      />\n      <circle className=\"prefix__st1\" cx={30.7} cy={34.2} r={6} />\n      <circle\n        transform=\"rotate(-82.027 48.473 22.241)\"\n        className=\"prefix__st1\"\n        cx={48.5}\n        cy={22.2}\n        r={10.7}\n      />\n      <circle\n        transform=\"rotate(-72.067 68.674 36.11)\"\n        className=\"prefix__st1\"\n        cx={68.7}\n        cy={36.1}\n        r={8.9}\n      />\n      <g>\n        <path\n          className=\"prefix__st2\"\n          d=\"M36.8 75.8h-1L31.2 52l9.6 5.3-.5.9-8.1-4.5z\"\n        />\n        <path\n          id=\"prefix__XMLID_370_\"\n          className=\"prefix__st2\"\n          d=\"M27.1 72.5l-1-.1 2-17.9L41 58.6l-.2 1-11.9-3.9z\"\n        />\n        <path\n          id=\"prefix__XMLID_368_\"\n          className=\"prefix__st2\"\n          d=\"M41.6 73.1l-3.2-9.8 4.7-1 .2.9-3.6.9 2.9 8.7z\"\n        />\n        <path\n          id=\"prefix__XMLID_366_\"\n          className=\"prefix__st2\"\n          d=\"M41.7 73s-.9-1.7-2.4-.6-.6 2.5-.6 2.5.5.5 2.1.5c1.6.1 2 0 2.3-.3.3-.3-.7-3-.7-3l-.7.9z\"\n        />\n        <path\n          id=\"prefix__XMLID_364_\"\n          className=\"prefix__st2\"\n          d=\"M26.1 72.2s-1.5-2.3-3.6-.9c-2 1.4-.9 3.5-.9 3.5s.7.5 2.9.5c2.9 0 2.9-.9 3.1-1.5.4-1-.7-2.9-.7-2.9l-.8 1.3z\"\n        />\n        <path\n          id=\"prefix__XMLID_361_\"\n          className=\"prefix__st2\"\n          d=\"M36.1 75.7s-2-2.9-4.1-1.5c-2 1.4-.9 3.5-.9 3.5s.7.5 2.9.5c2.9 0 3.1-.6 3.3-1.2.4-1-.9-3.2-.9-3.2l-.3 1.9z\"\n        />\n      </g>\n      <g id=\"prefix__XMLID_345_\">\n        <path\n          id=\"prefix__XMLID_360_\"\n          className=\"prefix__st2\"\n          d=\"M61.3 75.6h1l5.1-23.7-9.8 5.1.5.9 8.2-4.4z\"\n        />\n        <path\n          id=\"prefix__XMLID_358_\"\n          className=\"prefix__st2\"\n          d=\"M71.2 72.4l.9-.1-1.7-17.9-12.9 3.9.1 1 12-3.8z\"\n        />\n        <path\n          id=\"prefix__XMLID_354_\"\n          className=\"prefix__st2\"\n          d=\"M56.6 72.8l3.3-9.8-4.6-1.1-.2 1 3.5.9-2.9 8.7z\"\n        />\n        <path\n          id=\"prefix__XMLID_352_\"\n          className=\"prefix__st2\"\n          d=\"M56.5 72.7s1-1.6 2.4-.6c1.5 1.1.6 2.5.6 2.5s-.5.4-2.1.5-2 0-2.3-.4c-.3-.4.7-3 .7-3l.7 1z\"\n        />\n        <path\n          id=\"prefix__XMLID_350_\"\n          className=\"prefix__st2\"\n          d=\"M72.1 72.1s1.6-2.3 3.6-.8.8 3.5.8 3.5-.7.5-2.9.5c-2.9 0-2.9-.9-3.1-1.5-.3-1 .8-2.9.8-2.9l.8 1.2z\"\n        />\n        <path\n          id=\"prefix__XMLID_348_\"\n          className=\"prefix__st2\"\n          d=\"M62.1 75.5s2.1-2.9 4.1-1.4c2 1.5.8 3.5.8 3.5s-.7.4-2.9.4c-2.9 0-3.1-.6-3.3-1.2-.3-1 1-3.2 1-3.2l.3 1.9z\"\n        />\n      </g>\n      <g id=\"prefix__XMLID_340_\">\n        <path\n          id=\"prefix__XMLID_344_\"\n          d=\"M59.1 52.4c1.7 5.4-1.7 9.6-7.1 11.3-5.4 1.7-10.3.1-12.1-5.3-1.7-5.4 1.8-8.6 7.1-10.3 5.5-1.6 10.4-1.1 12.1 4.3z\"\n          fill=\"#3baab4\"\n        />\n        <path\n          id=\"prefix__XMLID_341_\"\n          className=\"prefix__st2\"\n          d=\"M52.3 64.7c-3 .9-5.8.9-8.1 0-2.5-1-4.3-3.1-5.2-5.9-1.7-5.4 1-9.3 7.8-11.5 6.9-2.2 11.6-.5 13.3 4.8.9 2.9.6 5.6-1 7.9-1.4 2.1-3.8 3.8-6.8 4.7zm-5.2-16.5c-6.3 2-8.7 5.4-7.1 10.2 1.6 5.1 6.3 7.1 12.1 5.3 5.9-1.9 8.7-6.3 7.1-11.4-2-5.9-7.6-5.5-12.1-4.1z\"\n        />\n      </g>\n      <g id=\"prefix__XMLID_335_\">\n        <ellipse\n          id=\"prefix__XMLID_339_\"\n          transform=\"matrix(.00813 -1 1 .00813 -4.278 93.662)\"\n          className=\"prefix__st1\"\n          cx={45.1}\n          cy={49}\n          rx={6.9}\n          ry={6.7}\n        />\n        <path\n          id=\"prefix__XMLID_336_\"\n          className=\"prefix__st2\"\n          d=\"M44.9 56.2c-3.9 0-7-3.3-7-7.3s3.2-7.2 7.1-7.2c3.9 0 7 3.3 7 7.3-.1 4-3.2 7.3-7.1 7.2zm.1-13.8c-3.5 0-6.3 2.9-6.4 6.5 0 3.6 2.8 6.6 6.3 6.6s6.3-2.9 6.4-6.5c0-3.6-2.8-6.5-6.3-6.6z\"\n        />\n      </g>\n      <g id=\"prefix__XMLID_330_\">\n        <ellipse\n          id=\"prefix__XMLID_334_\"\n          transform=\"matrix(.00813 -1 1 .00813 4.395 104.82)\"\n          className=\"prefix__st1\"\n          cx={55}\n          cy={50.2}\n          rx={5.4}\n          ry={5.5}\n        />\n        <path\n          id=\"prefix__XMLID_331_\"\n          className=\"prefix__st2\"\n          d=\"M54.9 55.9c-3.2 0-5.8-2.6-5.8-5.8 0-3.2 2.7-5.7 5.9-5.7s5.8 2.6 5.8 5.8c-.1 3.2-2.7 5.8-5.9 5.7zm0-10.8c-2.8 0-5.2 2.2-5.2 5s2.3 5.1 5.1 5.1 5.2-2.2 5.2-5c.1-2.7-2.2-5-5.1-5.1z\"\n        />\n      </g>\n      <circle\n        id=\"prefix__XMLID_328_\"\n        className=\"prefix__st2\"\n        cx={45.5}\n        cy={49.4}\n        r={3.1}\n      />\n      <circle\n        id=\"prefix__XMLID_327_\"\n        className=\"prefix__st1\"\n        cx={47.2}\n        cy={48.9}\n        r={0.8}\n      />\n      <ellipse\n        id=\"prefix__XMLID_325_\"\n        transform=\"matrix(.00813 -1 1 .00813 4.507 105.579)\"\n        className=\"prefix__st2\"\n        cx={55.5}\n        cy={50.5}\n        rx={2.4}\n        ry={2.5}\n      />\n      <circle\n        id=\"prefix__XMLID_324_\"\n        className=\"prefix__st1\"\n        cx={55}\n        cy={50.1}\n        r={0.7}\n      />\n      <g id=\"prefix__XMLID_272_\">\n        <ellipse\n          id=\"prefix__XMLID_323_\"\n          transform=\"rotate(-1.132 65.185 77.293)\"\n          className=\"prefix__st4\"\n          cx={65.2}\n          cy={77.3}\n          rx={4.3}\n          ry={1.4}\n        />\n        <ellipse\n          id=\"prefix__XMLID_322_\"\n          transform=\"matrix(.00813 -1 1 .00813 -.088 148.78)\"\n          className=\"prefix__st4\"\n          cx={75}\n          cy={74.4}\n          rx={1.4}\n          ry={4.4}\n        />\n        <ellipse\n          id=\"prefix__XMLID_320_\"\n          transform=\"matrix(.00813 -1 1 .00813 -16.842 131.481)\"\n          className=\"prefix__st4\"\n          cx={57.9}\n          cy={74.2}\n          rx={1.4}\n          ry={3}\n        />\n      </g>\n      <g id=\"prefix__XMLID_375_\">\n        <ellipse\n          id=\"prefix__XMLID_381_\"\n          transform=\"rotate(-87.937 32.606 77.55) scale(1.00005)\"\n          className=\"prefix__st4\"\n          cx={32.6}\n          cy={77.5}\n          rx={1.4}\n          ry={4.3}\n        />\n        <ellipse\n          id=\"prefix__XMLID_380_\"\n          transform=\"matrix(.00813 -1 1 .00813 -51.829 96.813)\"\n          className=\"prefix__st4\"\n          cx={22.9}\n          cy={74.5}\n          rx={1.4}\n          ry={4.4}\n        />\n        <ellipse\n          id=\"prefix__XMLID_379_\"\n          transform=\"matrix(.00813 -1 1 .00813 -34.944 113.984)\"\n          className=\"prefix__st4\"\n          cx={40}\n          cy={74.6}\n          rx={1.4}\n          ry={3}\n        />\n      </g>\n      <path\n        id=\"prefix__XMLID_356_\"\n        className=\"prefix__st2\"\n        d=\"M78.3 52.5L61.9 63.6l-5.5-4.9.6-.7 5 4.3 15.4-10.6z\"\n      />\n      <path\n        id=\"prefix__XMLID_347_\"\n        className=\"prefix__st2\"\n        d=\"M77.2 53.1s3.1-1.1 2.2-3.5c-.9-2.3-3.2-1.6-3.2-1.6s-.7.5-1.3 2.7c-.7 2.9.2 3.1.9 3.3\"\n      />\n      <path\n        id=\"prefix__XMLID_376_\"\n        className=\"prefix__st2\"\n        d=\"M20.8 53.2l16.3 10.9 5-5.3-.7-.7-4.5 4.8-15.7-10.5z\"\n      />\n      <path\n        id=\"prefix__XMLID_362_\"\n        className=\"prefix__st2\"\n        d=\"M20.8 53.8s-3.2-.9-2.4-3.3c.8-2.4 3-1.9 3-1.9s.8.5 1.5 2.6c.9 2.8 0 3.1-.6 3.3\"\n      />\n      <path\n        className=\"prefix__st5\"\n        d=\"M26.9 38.3c2 2 5.2 2 7.2 0s2-5.2 0-7.2c0 0-1.1 3.4-2.4 4.6s-4.8 2.6-4.8 2.6z\"\n      />\n      <linearGradient\n        id=\"prefix__SVGID_1_\"\n        gradientUnits=\"userSpaceOnUse\"\n        x1={-104.708}\n        y1={-218.524}\n        x2={-95.753}\n        y2={-218.524}\n        gradientTransform=\"matrix(1.3707 .02173 -.02176 1.3727 163.251 336.41)\"\n      >\n        <stop offset={0} stopColor=\"#76c8dd\" />\n        <stop offset={1} stopColor=\"#2ab3d7\" />\n      </linearGradient>\n      <path\n        d=\"M30.5 40.4c-3.4-.1-6.1-2.9-6-6.2s2.9-6.1 6.2-6c3.4.1 6.1 2.9 6 6.2 0 3.3-2.8 6.1-6.2 6zm.2-11.8c-3.1 0-5.7 2.4-5.7 5.5s2.4 5.7 5.5 5.7 5.7-2.4 5.7-5.5c.1-3-2.4-5.6-5.5-5.7z\"\n        fill=\"url(#prefix__SVGID_1_)\"\n      />\n      <linearGradient\n        id=\"prefix__SVGID_2_\"\n        gradientUnits=\"userSpaceOnUse\"\n        x1={-103.744}\n        y1={320.571}\n        x2={-96.717}\n        y2={320.571}\n        gradientTransform=\"matrix(1.3707 .02173 .02176 -1.3727 161.031 476.425)\"\n      >\n        <stop offset={0} stopColor=\"#76c8dd\" />\n        <stop offset={1} stopColor=\"#2ab3d7\" />\n      </linearGradient>\n      <path\n        d=\"M30.7 29.4c-2.7 0-4.9 2.1-4.9 4.7 0 .8.2 1.6.5 2.3.1-.1.3-.2.4-.3 2.7-1.5 5-2.8 6.6-5.2 0 0-.2 2.7-1.7 4-.4.3-.7.5-.9.7.8-.4 1.5-.9 2-1.5 0 0-.1 1.8-1.4 2.6-.5.3-.9.5-1.4.6.8-.2 1.3-.4 1.7-.6-.4 1.1-1.1 1.7-2.3 1.9-.4 0-.8-.1-1.1-.1.7.4 1.5.6 2.3.6 2.7 0 4.9-2.1 4.9-4.7.1-2.8-2-5-4.7-5z\"\n        fill=\"url(#prefix__SVGID_2_)\"\n      />\n      <path\n        className=\"prefix__st5\"\n        d=\"M39.6 26.7c2 4.6 7.4 6.7 11.9 4.7s6.7-7.4 4.7-11.9c0 0-4.1 4.8-7 6.2-2.9 1.2-9.6 1-9.6 1z\"\n      />\n      <linearGradient\n        id=\"prefix__SVGID_3_\"\n        gradientUnits=\"userSpaceOnUse\"\n        x1={124.354}\n        y1={-308.435}\n        x2={140.301}\n        y2={-308.435}\n        gradientTransform=\"matrix(1.2945 .5263 -.506 1.2446 -278.654 336.448)\"\n      >\n        <stop offset={0} stopColor=\"#76c8dd\" />\n        <stop offset={1} stopColor=\"#2ab3d7\" />\n      </linearGradient>\n      <path\n        d=\"M44.7 32.1c-5.7-2.3-8.5-8.6-6.3-14.1s8.7-8 14.4-5.7 8.5 8.6 6.3 14.1c-2.3 5.5-8.7 8-14.4 5.7zm7.7-19c-5.2-2.1-11.1.2-13.1 5.2s.6 10.8 5.8 12.9S56.2 31 58.3 26c1.9-4.9-.7-10.8-5.9-12.9z\"\n        fill=\"url(#prefix__SVGID_3_)\"\n      />\n      <linearGradient\n        id=\"prefix__SVGID_4_\"\n        gradientUnits=\"userSpaceOnUse\"\n        x1={126.497}\n        y1={411.231}\n        x2={139.011}\n        y2={411.231}\n        gradientTransform=\"matrix(1.27 .5163 .517 -1.2718 -332.746 476.702)\"\n      >\n        <stop offset={0} stopColor=\"#76c8dd\" />\n        <stop offset={1} stopColor=\"#2ab3d7\" />\n      </linearGradient>\n      <path\n        d=\"M51.7 14.3c-4.4-1.8-9.4.3-11.2 4.7-.6 1.4-.7 2.8-.6 4.2.3-.1.6-.1.9-.2 5.4-.8 10.1-1.4 14.3-4.4 0 0-2 4.4-5.5 5.5-.8.2-1.4.4-2 .5 1.6-.2 3-.5 4.4-1.2 0 0-1.3 3-4.1 3.4-.9.2-1.7.2-2.5.2 1.4.2 2.4.2 3.2 0-1.3 1.6-2.9 2.1-5 1.6-.7-.2-1.3-.6-1.8-1 .9 1.1 2 2 3.4 2.5 4.4 1.8 9.4-.3 11.2-4.7s-.3-9.3-4.7-11.1z\"\n        fill=\"url(#prefix__SVGID_4_)\"\n      />\n      <path\n        className=\"prefix__st5\"\n        d=\"M60.5 35.5c-.5 4.1 2.4 7.9 6.5 8.4s7.9-2.4 8.4-6.5c0 0-5 1.7-7.6 1.4-2.6-.3-7.3-3.3-7.3-3.3z\"\n      />\n      <linearGradient\n        id=\"prefix__SVGID_5_\"\n        gradientUnits=\"userSpaceOnUse\"\n        x1={343.974}\n        y1={-400.692}\n        x2={357.227}\n        y2={-400.692}\n        gradientTransform=\"matrix(.822 1.0971 -1.0987 .8232 -659.793 -18.605)\"\n      >\n        <stop offset={0} stopColor=\"#76c8dd\" />\n        <stop offset={1} stopColor=\"#2ab3d7\" />\n      </linearGradient>\n      <path\n        d=\"M61.4 41.6c-3-4-2.2-9.7 1.8-12.7s9.7-2.2 12.7 1.8 2.2 9.7-1.8 12.7-9.7 2.2-12.7-1.8zm13.9-10.4c-2.7-3.7-8-4.4-11.6-1.7-3.7 2.8-4.4 8-1.7 11.6 2.7 3.7 8 4.4 11.7 1.7s4.4-7.9 1.6-11.6z\"\n        fill=\"url(#prefix__SVGID_5_)\"\n      />\n      <linearGradient\n        id=\"prefix__SVGID_6_\"\n        gradientUnits=\"userSpaceOnUse\"\n        x1={345.4}\n        y1={502.761}\n        x2={355.8}\n        y2={502.761}\n        gradientTransform=\"matrix(.822 1.0971 1.0987 -.8232 -771.86 65.363)\"\n      >\n        <stop offset={0} stopColor=\"#76c8dd\" />\n        <stop offset={1} stopColor=\"#2ab3d7\" />\n      </linearGradient>\n      <path\n        d=\"M74.4 31.8c-2.4-3.2-6.8-3.8-10-1.4-1 .7-1.7 1.7-2.2 2.7.2.1.5.1.7.2 4.2 1.7 7.8 3.3 12.1 3 0 0-3.3 2.3-6.2 1.6-.6-.2-1.2-.3-1.6-.5 1.2.6 2.4 1 3.6 1 0 0-2.2 1.6-4.4.7-.8-.3-1.4-.7-1.9-1.1.9.8 1.6 1.2 2.3 1.4-1.6.6-3 .3-4.2-1-.4-.5-.6-1-.9-1.5.2 1.2.6 2.3 1.4 3.3 2.4 3.2 6.8 3.8 10 1.4 3-2.1 3.7-6.6 1.3-9.8z\"\n        fill=\"url(#prefix__SVGID_6_)\"\n      />\n    </svg>\n  )\n}\n","import React from 'react'\nimport type { AppProps } from 'next/app'\nimport { appWithTranslation } from 'next-i18next'\n\nimport { nextI18nConfig } from '../constants'\nimport { setupStore } from '../store'\n\nimport AppProvider from '../components/stateful-providers/AppProvider/AppProvider'\nimport CatalogProvider from '../components/stateful-providers/CatalogProvider/CatalogProvider'\nimport DataProvider from '../components/stateful-providers/DataProvider/DataProvider'\nimport Layout from '../components/stateful-layout/Layout/Layout'\nimport { useRouter } from 'next/router'\nimport MetadataProvider from '../components/stateful-providers/MetadataProvider/MetadataProvider'\n\nconst store = setupStore()\n\nfunction GallyApp(props: AppProps): JSX.Element {\n  const { Component, pageProps } = props\n  const Cmp = Component\n  const router = useRouter()\n  const isLoginPage = router.route === '/login'\n\n  return (\n    <AppProvider store={store}>\n      <DataProvider>\n        <CatalogProvider>\n          <MetadataProvider>\n            {isLoginPage ? (\n              <Cmp {...pageProps} />\n            ) : (\n              <Layout>\n                <Cmp {...pageProps} />\n              </Layout>\n            )}\n          </MetadataProvider>\n        </CatalogProvider>\n      </DataProvider>\n    </AppProvider>\n  )\n}\n\nexport default appWithTranslation(GallyApp, nextI18nConfig)\n","import React, { FormEvent, useCallback, useEffect, useState } from 'react'\nimport { useTranslation } from 'next-i18next'\nimport Router from 'next/router'\nimport Head from 'next/head'\nimport { styled } from '@mui/system'\nimport {\n  ILogin,\n  isError,\n  isValidUser,\n  storageSet,\n  tokenStorageKey,\n} from '@elastic-suite/gally-admin-shared'\n\nimport { useApiFetch, useUser } from '../hooks'\nimport { selectRequestedPath, useAppSelector } from '../store'\n\nimport InputText from '../components/atoms/form/InputText'\nimport Form from '../components/atoms/form/Form'\n\nimport PageTitle from '../components/atoms/PageTitle/PageTitle'\nimport Image from 'next/image'\n\nconst CustomRoot = styled('div')({\n  width: '100vw',\n  height: '100vh',\n  display: 'flex',\n  alignItems: 'center',\n  justifyContent: 'center',\n  flexDirection: 'column',\n  background: 'rgb(250, 251, 254)',\n})\n\nconst CustomImg = styled('div')({\n  display: 'flex',\n  alignItems: 'center',\n  justifyContent: 'center',\n  marginBottom: '32px',\n})\n\nconst CustomBloc = styled('div')({\n  padding: '32px',\n  marginBottom: '6%',\n  border: '1px solid rgb(226, 230, 243)',\n  borderRadius: '8px',\n  background: 'rgb(255, 255, 255)',\n})\n\nfunction Login(): JSX.Element {\n  const { t } = useTranslation('login')\n  const user = useUser()\n  const requestedPath = useAppSelector(selectRequestedPath)\n\n  const fetchApi = useApiFetch(false)\n  const [email, setEmail] = useState('')\n  const [password, setPassword] = useState('')\n\n  const redirectToRequestedPath = useCallback(\n    () => Router.push(requestedPath ?? '/admin/settings/scope/catalogs'),\n    [requestedPath]\n  )\n\n  useEffect(() => {\n    if (isValidUser(user)) {\n      redirectToRequestedPath()\n    }\n  }, [redirectToRequestedPath, user])\n\n  const [showAllErrors, setShowAllErrors] = useState(false)\n\n  function handleSubmit(\n    event: FormEvent<HTMLFormElement>,\n    formIsValid: boolean\n  ): void {\n    event.preventDefault()\n    if (formIsValid) {\n      fetchApi<ILogin>('/authentication_token', undefined, {\n        method: 'POST',\n        body: JSON.stringify({ email, password }),\n        headers: new Headers({ 'Content-Type': 'application/json' }),\n      }).then((json) => {\n        if (!isError(json)) {\n          storageSet(tokenStorageKey, json.token)\n          redirectToRequestedPath()\n        }\n      })\n    } else {\n      setShowAllErrors(true)\n    }\n  }\n\n  const title = t('title.login')\n\n  return (\n    <CustomRoot>\n      <Head>\n        <title>{title}</title>\n      </Head>\n      <CustomBloc>\n        <CustomImg>\n          <Image\n            src=\"/images/LogoBlinkExtended.svg\"\n            alt=\"Logo\"\n            width=\"150\"\n            height=\"45\"\n          />\n        </CustomImg>\n        <PageTitle title={title} />\n        <Form onSubmit={handleSubmit} submitButtonText={t('action.login')}>\n          <InputText\n            autoComplete=\"email\"\n            fullWidth\n            type=\"email\"\n            label={t('label.email')}\n            margin=\"normal\"\n            onChange={(value: string): void => setEmail(value)}\n            value={email}\n            showError={showAllErrors}\n            additionalValidator={(value: string): string => {\n              if (!value) return 'valueMissing'\n              return ''\n            }}\n            replacementErrorsMessages={{\n              typeMismatch: 'typeMismatchEmail',\n            }}\n            dataTestId=\"emailInput\"\n          />\n          <InputText\n            autoComplete=\"current-password\"\n            fullWidth\n            label={t('label.password')}\n            margin=\"normal\"\n            onChange={(value: string): void => setPassword(value)}\n            type=\"password\"\n            value={password}\n            showError={showAllErrors}\n            additionalValidator={(value: string): string => {\n              return !value ? 'valueMissing' : ''\n            }}\n            dataTestId=\"passwordInput\"\n          />\n        </Form>\n      </CustomBloc>\n    </CustomRoot>\n  )\n}\n\nexport default Login\n","import { useEffect } from 'react'\nimport Router from 'next/router'\n\nfunction Welcome(): void {\n  useEffect(() => {\n    Router.push('/login')\n  }, [])\n\n  return null\n}\n\nexport default Welcome\n"],"mappings":"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","names":["React","forwardRef","IconButton","MuiAlert","styled","useTranslation","React","iconSrcMapping","iconAliasMapping","customIcons","IonIcon","props","_a","name","tooltip","other","__objRest","style","iconProps","__spreadProps","__spreadValues","React","IonIcon_default","StyledAlert","styled","MuiAlert","severity","theme","__spreadProps","__spreadValues","Alert","props","ref","id","message","onShut","variant","mb","t","useTranslation","handleClick","React","IconButton","IonIcon_default","Alert_default","forwardRef","React","Box","useTranslation","setBoostDetails","type","boostNumber","boostMultiplicator","t","boostText","Boost","props","boostDetail","React","Box","IonIcon_default","Boost_default","React","Typography","styled","CustomBreadCrumb","CustomBreadCrumbColorClassique","theme","CustomBreadCrumbColorLast","Breadcrumb","props","label","last","Breadcrumb_default","React","MuiBreadcrumbs","findBreadcrumbLabel","getSlugArray","Breadcrumbs","props","menu","slug","breadcrumbProps","getSlugArray","item","index","findBreadcrumbLabel","label","React","MuiBreadcrumbs","_a","_b","key","__objRest","Breadcrumb_default","__spreadValues","Breadcrumbs_default","React","styled","IconButton","MuiChip","StyledChip","styled","MuiChip","theme","disabled","Chip","props","React","__spreadProps","__spreadValues","IconButton","IonIcon_default","Chip_default","React","Box","CloseComponent","onClose","CloseComponent_default","React","forwardRef","FormControlLabel","FormHelperText","MuiCheckbox","CheckboxWithoutError","props","ref","_a","error","helperIcon","helperText","disabled","label","list","onChange","onClick","small","dataTestId","checkboxProps","__objRest","handleChange","event","React","FormControlLabel","MuiCheckbox","__spreadProps","__spreadValues","FormHelperText","IonIcon_default","CheckboxWithoutError_default","forwardRef","React","useCallback","useCallback","useLayoutEffect","useMemo","useRef","useState","Router","useTranslation","debounce","AuthError","LoadStatus","defaultPageSize","fetchApi","fetchApiUsingPagination","getListApiParameters","isError","storageRemove","tokenStorageKey","useCallback","closeSnackbar","enqueueSnackbar","log","useLog","severity","error","message","useCallback","useMemo","useRouter","IMainContext","Method","contentTypeHeader","getApiUrl","getResource","updatePropertiesAccordingToPath","createSlice","initialState","dataSlice","state","action","setData","dataReducer","selectApi","selectBundles","selectConfiguration","useDispatch","useSelector","useAppDispatch","useAppSelector","createSlice","initialState","i18nSlice","state","action","setLanguage","i18nReducer","selectLanguage","createSlice","LoadStatus","initialState","LoadStatus","menuSlice","createSlice","state","action","__spreadValues","setChildState","setMenu","setMenuItemActive","setSidebarState","setSidebarStateTimeout","menuReducer","selectChildrenState","selectMenu","selectMenuItemActive","selectSidebarState","selectSidebarStateTimeout","combineReducers","configureStore","thunk","createSlice","initialState","userSlice","state","action","setRequestedPath","userReducer","selectRequestedPath","rootReducer","combineReducers","dataReducer","i18nReducer","menuReducer","userReducer","setupStore","preloadedState","configureStore","getDefaultMiddleware","thunk","useResource","resourceName","mainContext","IMainContext","api","useAppSelector","selectApi","pathname","useRouter","useMemo","resource","getResource","__spreadProps","__spreadValues","field","updatePropertiesAccordingToPath","useResourceOperations","supportedOperation","fetchApi","useApiFetch","apiUrl","getApiUrl","update","useCallback","id","item","Method","contentTypeHeader","create","replace","remove","acc","operation","debounceDelay","useApiFetch","secure","i18n","useTranslation","log","useLog","t","useCallback","resource","searchParameters","options","__async","fetchApi","error","AuthError","storageRemove","tokenStorageKey","Router","useFetchApi","conditions","withDebounce","rowsPerPageWithPagination","response","setResponse","useState","LoadStatus","updateResponse","data","prevState","__spreadProps","__spreadValues","load","fetchApiUsingPagination","json","isError","customDebounce","useMemo","debounce","func","useLayoutEffect","useApiList","page","rowsPerPage","defaultPageSize","searchValue","withPagination","parameters","getListApiParameters","updateList","useApiEditableList","url","create","remove","replace","update","useResourceOperations","itemsToUpdate","useRef","debouncedUpdate","isValid","promises","id","updatedItems","editableUpdate","updatedItem","items","item","massEditableUpdate","ids","massEditableReplace","editableCreate","createResponse","debouncedReplace","replacedItem","editableReplace","editableRemove","removeResponse","operations","useMemo","useTranslation","getFilter","getMappings","useApiFilters","apiData","resource","mappings","mapping","useTranslation","useMemo","getFieldHeader","useMemo","useApiDoubleDatePicker","resource","useMemo","uniqueArray","element","_a","__spreadProps","__spreadValues","accumulator","current","id","item","_b","useApiHeaders","resource","t","useTranslation","transformedResource","useApiDoubleDatePicker","useMemo","field","_a","a","b","_b","getFieldHeader","FIELDSET_OTHER_KEY","useApiHeadersForm","apiHeaders","apiHeaderMap","acc","gridHeaderInfoTooltip","header","__objRest","fieldsetCode","fieldset","__spreadProps","__spreadValues","useApiEditableFieldOptions","getLocalizedCatalog","useMemo","useState","useCatalogs","catalogs","catalogId","setCatalogId","localizedCatalogId","setLocalizedCatalogId","catalog","localizedCatalog","localizedCatalogWithDefault","useEffect","LoadStatus","useSchemaLoader","useDataLoader","dispatch","useAppDispatch","log","useLog","api","useSchemaLoader","bundles","useFetchApi","configurations","useEffect","LoadStatus","setData","bundle","configuration","useEffect","useMemo","useState","useRouter","getApiFilters","getAppUrl","getFilterParameters","getPageParameter","getParametersFromUrl","getRouterUrl","getSearchParameter","useFiltersRedirect","page","activeFilters","searchValue","active","router","url","usePage","setPage","parameters","useFilters","resource","setActiveFilters","useSearch","setSearchValue","useFilterParameters","filters","useCallback","useEffect","useMemo","useRef","useState","useTranslation","getFormValidityError","useFormError","onChange","value","showError","validator","disabled","replacementErrorsMessages","error","setError","ref","t","verify","setVerify","validate","event","targetRef","_a","_b","validity","handleChange","props","useCallback","useEffect","useState","Router","useTranslation","AuthError","LoadStatus","fetchGraphql","isError","storageRemove","tokenStorageKey","useApiGraphql","secure","i18n","useTranslation","log","useLog","t","useCallback","query","variables","options","__async","fetchGraphql","error","AuthError","storageRemove","tokenStorageKey","Router","useGraphqlApi","conditions","graphqlApi","response","setResponse","useState","LoadStatus","updateResponse","data","prevState","__spreadProps","__spreadValues","load","json","isError","useEffect","useLayoutEffect","useState","useIsHorizontalOverflow","current","isOverflow","setIsOverflow","shadow","setShadow","trigger","hasOverflow","handleScroll","event","useTranslation","useCallback","useMemo","getOptionsFromApiSchema","getOptionsFromResource","getReferencedResource","hasFieldOptions","isDropdownStaticOptions","isError","isReferenceField","useCallback","useRef","useState","LoadStatus","useSingletonLoader","defaultState","fetchApi","useApiFetch","map","setMap","useState","fieldOptionsStatuses","useRef","log","useLog","updateFieldOptions","useCallback","id","options","LoadStatus","prevState","clone","loader","__async","data","err","useOptions","fetch","map","statuses","useSingletonLoader","api","useAppSelector","selectApi","t","useTranslation","load","useCallback","field","id","fetchApi","__async","_a","_b","hasFieldOptions","isDropdownStaticOptions","option","__spreadProps","__spreadValues","response","isError","getOptionsFromApiSchema","isReferenceField","getReferencedResource","getOptionsFromResource","useMemo","mapTranslated","options","useEffect","useMemo","useState","debounce","isError","isRuleValid","isVirtualCategoryEnabled","serializeRule","debounceDelay","useRuleEngineGraphqlFilters","catConf","ruleOperators","bundles","useAppSelector","selectBundles","fetchApi","useApiFetch","ruleEngineGraphqlFilters","setRuleEngineGraphqlFilters","useState","isEnabled","isVirtualCategoryEnabled","isValid","isRuleValid","debouncedFetch","useMemo","debounce","rule","__async","json","isError","useEffect","serializeRule","useEffect","useState","isError","isVirtualCategoryEnabled","useRuleOperators","ruleOperatorsDefault","ruleOperators","setRuleOperators","useState","bundles","useAppSelector","selectBundles","fetchApi","useApiFetch","useEffect","isVirtualCategoryEnabled","json","isError","useCallback","Router","useRouter","getRouterPath","useTabs","tabs","_a","asPath","pathname","activeTab","tab","handleTabChange","id","getUser","storageGet","tokenStorageKey","useMemo","useUser","token","error","useEffect","useRef","useState","useFormValidation","formRef","formIsValid","setFormIsValid","mutationObserver","_a","Checkbox","props","_a","onChange","showError","additionalValidator","inputProps","__objRest","validator","useCallback","value","event","_b","useFormError","_c","ref","formErrorProps","React","CheckboxWithoutError_default","__spreadProps","__spreadValues","Checkbox_default","React","forwardRef","MuiDatePicker","PickersDay","pickersDayClasses","styled","React","forwardRef","FormHelperText","InputLabel","findCategory","category","categories","foundCategory","recursiveFind","element","manageStickyHeaders","tableHeaders","stickyHeaders","stickyColumnCount","header","stickyHeader","index","__spreadValues","handleSingleRow","rowId","onSelectRows","selectedRows","value","stickyBorderStyle","shadow","getFormValue","value","props","required","type","getDoubleDatePickerValue","data","getRequestTypeData","limitationTypeOptionsApi","_a","requestTypeData","it","__spreadProps","__spreadValues","useValue","field","_b","useApiList","DataContentType","reorderingColumnWidth","stickyColunWidth","draggableColumnStyle","isOnlyDraggable","leftValue","isHorizontalOverflow","shadow","__spreadProps","__spreadValues","reorderingColumnWidth","stickyBorderStyle","reorderIconStyle","stickyStyle","isLastSticky","type","stickyColunWidth","DataContentType","selectionStyle","stickyColumnCount","nonStickyStyle","React","React","MuiTooltip","Tooltip","props","_a","className","tooltipProps","__objRest","React","MuiTooltip","__spreadProps","__spreadValues","Tooltip_default","InfoTooltip","title","children","noStyle","withHTMLTitle","React","Tooltip_default","IonIcon_default","InfoTooltip_default","FormControl","InputBase","styled","StyledFormControl","styled","FormControl","fullWidth","theme","__spreadValues","inputTextStyledProps","InputTextStyled","InputBase","prop","dirty","inputProps","small","transparent","type","value","width","__spreadProps","Wrapper","Suffix","InputTextWithoutError","props","ref","_a","error","fullWidth","helperText","helperIcon","id","infoTooltip","label","margin","onChange","required","suffix","value","requiredLabel","dataTestId","inputProps","InputProps","__objRest","handleChange","event","getFormValue","React","StyledFormControl","InputLabel","InfoTooltip_default","Wrapper","InputTextStyled","__spreadValues","__spreadProps","Suffix","FormHelperText","IonIcon_default","InputTextWithoutError_default","forwardRef","useTranslation","CustomPickersDay","styled","PickersDay","prop","theme","pickersDayClasses","EndIcon","React","IonIcon_default","ShowIcon","DatePickerWithoutError","props","ref","useTranslation","_a","value","onChange","onError","dataTestId","args","__objRest","onChangeDatePicker","date","utcDate","MuiDatePicker","_","__","pickersDayProps","__spreadValues","params","InputProps","inputProps","rest","readOnly","type","InputTextWithoutError_default","__spreadProps","event","DatePickerWithoutError_default","forwardRef","React","useCallback","isValid","dateValidator","value","event","required","additionalValidator","isValid","DatePicker","props","_a","onChange","showError","inputProps","__objRest","validator","useCallback","_b","_c","useFormError","_d","ref","formErrorProps","setError","handleError","reason","React","DatePickerWithoutError_default","__spreadProps","__spreadValues","DatePicker_default","React","forwardRef","Box","FormHelperText","Grid","InputLabel","useTranslation","styled","styled","FormControl_default","styled","fullWidth","margin","theme","__spreadValues","CustomBox","styled","Box","theme","DoubleDatePickerWithoutError","props","ref","_a","value","error","errors","fullWidth","helperText","helperIcon","id","infoTooltip","inputProps","label","margin","onChange","onError","required","dataTestId","args","__objRest","t","useTranslation","onChangeFrom","date","__spreadProps","__spreadValues","onChangeTo","onErrorFrom","reason","onErrorTo","React","FormControl_default","InputLabel","InfoTooltip_default","Grid","DatePickerWithoutError_default","FormHelperText","IonIcon_default","DoubleDatePickerWithoutError_default","forwardRef","React","useCallback","doubleDateValidator","value","event","required","additionalValidator","from","to","fromError","dateValidator","toError","DoubleDatePicker","props","_a","onChange","showError","replacementErrorsMessages","inputProps","__objRest","validator","useCallback","_b","useFormError","_c","ref","formErrorProps","React","DoubleDatePickerWithoutError_default","__spreadProps","__spreadValues","DoubleDatePicker_default","React","forwardRef","useMemo","useRef","Autocomplete","FormControl","ListItem","ListSubheader","useTranslation","styled","getCustomScrollBarStyles","StyledPaper","styled","theme","__spreadProps","__spreadValues","getCustomScrollBarStyles","SmallStyledPaper","DropDownWithoutError","props","ref","_b","_c","_a","disabled","fullWidth","limitTags","multiple","onChange","options","style","value","useGroups","objectKeyValue","dataTestId","otherProps","__objRest","required","small","t","useTranslation","inputRef","useRef","optionMap","useMemo","option","optionValue","val","handleChange","event","dropdownEvent","__spreadProps","__spreadValues","clearText","closeText","openText","renderOption","renderTags","label","selected","React","CheckboxWithoutError_default","e","getTagProps","index","Chip_default","ListItem","FormControl","Autocomplete","SmallStyledPaper","StyledPaper","IonIcon_default","params","ListSubheader","InputLabelProps","InputProps","inputProps","InputTextWithoutError_default","DropDownWithoutError_default","forwardRef","React","useCallback","Dropdown","props","_a","onChange","showError","additionalValidator","replacementErrorsMessages","inputProps","__objRest","validator","useCallback","value","event","_b","useFormError","_c","ref","formErrorProps","React","DropDownWithoutError_default","__spreadProps","__spreadValues","DropDown_default","React","useCallback","InputText","props","_a","onChange","showError","additionalValidator","replacementErrorsMessages","inputProps","__objRest","validator","useCallback","value","event","_b","useFormError","_c","ref","formErrorProps","React","InputTextWithoutError_default","__spreadProps","__spreadValues","InputText_default","React","FormControl","FormControlLabel","FormHelperText","InputLabel","Radio","RadioGrp","RadioGroupWithoutError","props","_a","error","helperText","helperIcon","options","onChange","infoTooltip","label","defaultValue","radioGroupProps","__objRest","foundNameDefaultValue","element","React","FormControl","InputLabel","InfoTooltip_default","RadioGrp","__spreadProps","__spreadValues","event","value","item","FormControlLabel","Radio","FormHelperText","IonIcon_default","RadioGroupWithoutError_default","React","useCallback","RadioGroup","props","_a","onChange","showError","additionalValidator","replacementErrorsMessages","inputProps","__objRest","validator","useCallback","value","event","_b","useFormError","_c","ref","formErrorProps","React","RadioGroupWithoutError_default","__spreadProps","__spreadValues","InputTextWithoutError_default","RadioGroup_default","React","useCallback","React","forwardRef","FormHelperText","InputLabel","useTranslation","React","styled","Container","props","_a","margin","divProps","__objRest","React","__spreadValues","ContainerStyled","styled","theme","__spreadProps","FirstInput","InputTextStyled","SecondInput","RangeWithoutError","props","ref","useTranslation","_a","error","fullWidth","helperText","helperIcon","id","infoTooltip","inputProps","label","margin","onChange","placeholder","required","suffix","value","type","dataTestId","InputProps","__objRest","placeholderFrom","placeholderTo","valueFrom","valueTo","handleChangeFrom","event","getFormValue","handleChangeTo","React","FormControl_default","InputLabel","InfoTooltip_default","Wrapper","FirstInput","__spreadProps","__spreadValues","SecondInput","Suffix","FormHelperText","IonIcon_default","RangeWithoutError_default","forwardRef","Range","props","_a","onChange","showError","additionalValidator","replacementErrorsMessages","inputProps","__objRest","validator","useCallback","value","event","_b","useFormError","_c","ref","formErrorProps","React","RangeWithoutError_default","__spreadProps","__spreadValues","Range_default","React","Box","styled","SliderMui","Slide","theme","CustomIndicatorsNumber","FormHelperText","InputLabel","indicatorNumber","Slider","props","error","fullWidth","helperText","helperIcon","infoTooltip","label","margin","onChange","required","value","width","dataTestId","handleChange","_","React","StyledFormControl","InputLabel","InfoTooltip_default","Box","CustomIndicatorsNumber","item","Slide","FormHelperText","IonIcon_default","Slider_default","React","FormHelperText","InputLabel","MuiSwitch","styled","FormControl","StyleFormControl","Switch","props","_a","helperIcon","helperText","infoTooltip","label","margin","onChange","required","switchProps","__objRest","handleChange","event","React","StyleFormControl","InputLabel","InfoTooltip_default","MuiSwitch","__spreadProps","__spreadValues","FormHelperText","IonIcon_default","Switch_default","React","forwardRef","FormControl","FormHelperText","InputLabel","TextareaAutosize","classNames","TextareaWithoutError","props","ref","_a","error","fullWidth","id","label","margin","maxLength","required","resizable","value","helperText","helperIcon","onChange","other","__objRest","maxLengthValue","valueString","React","FormControl","InputLabel","TextareaAutosize","__spreadProps","__spreadValues","classNames","event","FormHelperText","IonIcon_default","TextareaWithoutError_default","forwardRef","React","useCallback","TextArea","props","_a","onChange","showError","additionalValidator","inputProps","__objRest","validator","useCallback","value","event","_b","useFormError","_c","ref","formErrorProps","React","TextareaWithoutError_default","__spreadProps","__spreadValues","Textarea_default","React","forwardRef","useCallback","useMemo","useState","useAutocomplete","useTranslation","classNames","flatTree","React","parse","match","useTranslation","keyframes","styled","CustomRoot","opacity","CustomLi","theme","CustomTitle","CustomTitleBase","Underline","CustomContainer","SmallCustomContainer","CustomVirtual","CustomBtn","SmallCustomBtn","CustomTitleContainer","highlight","label","search","matches","match","parse","text","index","React","Underline","Tree","props","base","data","getItemProps","getListboxProps","multiple","onChange","onToggle","openItems","small","value","t","useTranslation","Title","CustomTitleBase","CustomTitle","Container","SmallCustomContainer","CustomContainer","Button","SmallCustomBtn","CustomBtn","handleClick","event","handleToggle","item","__spreadProps","__spreadValues","handleChecked","checked","val","CustomRoot","title","CustomLi","IonIcon_default","CustomTitleContainer","CheckboxWithoutError_default","CustomVirtual","Tree_default","IconButton","InputAdornment","Popper","styled","Root","styled","Input","InputTextWithoutError_default","EndAdornment","InputAdornment","AutocompleteClearIndicator","IconButton","theme","TreeContainer","autocompletePopupIndicatorProps","AutocompletePopupIndicator","prop","popupOpen","__spreadValues","TreePopper","Popper","TreeSelectorWithoutError","props","ref","_a","data","fullWidth","limitTags","onChangeProps","style","valueProps","other","__objRest","t","useTranslation","search","setSearch","useState","openItems","setOpenItems","options","useMemo","flat","flatTree","getOptionLabel","useCallback","option","filterOptions","onInputChange","event","handleChange","value","disabled","multiple","readOnly","small","getClearProps","getInputProps","getPopupIndicatorProps","getRootProps","getTagProps","getListboxProps","getOptionProps","dirty","id","popupOpen","focused","anchorEl","setAnchorEl","useAutocomplete","__spreadProps","__spreadValues","getItemProps","item","index","getCustomizedTagProps","params","modifiers","args","popperEl","transforms","top","hasClearIcon","Paper","SmallStyledPaper","StyledPaper","clearText","closeText","openText","startAdornment","React","Chip_default","more","Root","Input","classNames","EndAdornment","AutocompleteClearIndicator","IonIcon_default","AutocompletePopupIndicator","TreePopper","TreeContainer","Tree_default","TreeSelectorWithoutError_default","forwardRef","React","useCallback","TreeSelector","props","_a","onChange","showError","additionalValidator","inputProps","__objRest","validator","useCallback","value","event","_b","useFormError","_c","ref","formErrorProps","React","TreeSelectorWithoutError_default","__spreadProps","__spreadValues","TreeSelector_default","React","firstLetterUppercase","FormatText","props","name","max","toolTip","firstLetterUpp","newName","React","InfoTooltip_default","firstLetterUppercase","FormatText_default","React","useState","styled","Collapse","Box","React","styled","Link","CustomRoot","theme","CustomA","HelpOver","HelpOver_default","CustomHelp","styled","theme","CustomHelpInit","Help","helpVisible","setHelpVisible","useState","React","Box","IonIcon_default","Collapse","HelpOver_default","Help_default","React","Collapse","Link","keyframes","styled","slugify","code","depth","slug","i","CustomRoot","styled","CustomLineAHref","theme","CustomLineButton","CustomLineHover","CustomLinePadding","CustomChildren","Collapse","CustomLineActive","CustomIndicatorLineActive","customIndicatorLineActiveTwo","keyframes","CustomIndicatorLineActiveTwo","heightZero","CustomHeightZero","opacityFull","CustomOpacityFull","MenuItem","props","childrenState","href","isActive","isBoosts","label","menuChildren","onToggle","sidebarStateTimeout","words","childState","toggleChild","Root","Line","React","__spreadValues","Link","IonIcon_default","item","MenuItem_default","React","Link","keyframes","styled","CustomIndicatorLineActiveTwo","styled","theme","CustomRoot","CustomIndicatorLineActive","customNoChildHoverProps","CustomNoChildHover","prop","sidebarState","opacityFullDeux","keyframes","opacityFull","CustomSpan","CustomOpacityFull","heightZero","CustomHeightZero","CustomIndicatorLineActiveOpacityFullDeux","CustomIndicatorLineActiveTwoOpacityFullDeux","customClassNameStyleRootProps","CustomClassNameStyleRoot","lightStyle","customClassNameStyleProps","CustomClassNameStyle","isActive","MenuItemIcon","props","childPadding","code","href","isRoot","label","sidebarStateTimeout","Label","IndicatorLineActive","React","IonIcon_default","Link","MenuItemIcon_default","React","Box","useState","usePopIn","onConfirm","open","setOpen","useState","log","useLog","handleClickOpen","handleClose","handleConfirm","__async","result","error","React","Box","DialogActions","DialogContent","DialogTitle","Dialog","styled","getCustomScrollBarStyles","dialogProps","CustomDialogStyled","styled","Dialog","prop","position","theme","styles","__spreadValues","__spreadProps","getCustomScrollBarStyles","CustomClose","CustomTitle","React","useRef","useState","styled","CircularProgress","MenuItem","MuiMenu","styled","Button","PrimaryButton","theme","SecondaryButton","TertiaryButton","menuProps","Menu","styled","MuiMenu","prop","minWidth","theme","Button","props","_a","children","disabled","display","id","loading","onClick","onSelect","options","style","buttonProps","__objRest","buttonRef","useRef","anchorEl","setAnchorEl","useState","open","Component","PrimaryButton","SecondaryButton","TertiaryButton","styles","height","width","__spreadValues","handleOpen","event","handleClose","handleClickOption","value","React","__spreadProps","CircularProgress","option","MenuItem","Button_default","CustomDialog","open","handleClose","handleConfirm","confirmationPopIn","titlePopIn","actions","children","position","styles","cancelName","confirmName","loading","React","CustomDialogStyled","CustomClose","IonIcon_default","CustomTitle","DialogActions","Box","Button_default","DialogTitle","DialogContent","CustomDialog_default","PopIn","_a","_b","triggerElement","boxStyle","onConfirm","dialogProps","__objRest","open","handleClickOpen","handleClose","handleConfirm","usePopIn","React","Box","CustomDialog_default","__spreadValues","PopIn_default","React","styled","Link","useRouter","React","React","useEffect","useMemo","useState","useTranslation","styled","LoadStatus","defaultPageSize","defaultRowsPerPageOptions","getNameFromDefault","React","getFieldState","React","useTranslation","DataContentType","React","useContext","styled","useTranslation","DataContentType","createContext","breadcrumbContext","createContext","catalogContext","createContext","i18nContext","createContext","metadataContext","createContext","optionsContext","createContext","ruleOptionsContext","React","Box","styled","roundNumber","ScoreContainer","styled","Box","Score","props","rounded","scoreValue","type","boostNumber","boostMultiplicator","React","roundNumber","Boost_default","Score_default","React","useTranslation","getStockStatusLabel","Stock","props","stockStatus","useTranslation","label","React","Chip_default","Stock_default","React","Box","styled","formatPrice","PriceContainer","theme","Price","props","price","currency","countryCode","Price_default","Link","React","useContext","useEffect","LoadStatus","Box","React","React","FormatArray","props","values","max","valuesSliced","tooltipContent","item","React","value","index","InfoTooltip_default","FormatArray_default","FormatRowArray","props","_a","values","multipleValueFormat","content","React","item","maxChar","acc","index","FormatArray_default","FormatText_default","FormatRowArray_default","ReadableDropDownGuesser","props","_a","_b","value","field","options","multipleValueFormat","fieldOptions","load","statuses","useContext","optionsContext","dropDownOptions","useEffect","newDropDownOptions","it","LoadStatus","React","FormatRowArray_default","item","Box","ReadableDropDownGuesser_default","React","useContext","useEffect","useMemo","useRef","useState","React","useState","React","useState","Box","Tab","Tabs","React","useEffect","useState","Box","TabPanel","props","_a","children","value","id","other","__objRest","isLoaded","setIsLoaded","useState","useEffect","React","__spreadValues","Box","TabPanel_default","a11yProps","ariaName","id","CustomTabs","props","_a","_b","defaultActiveId","onChange","tabs","activeId","setActiveId","useState","tab","React","Box","Tabs","event","id","label","Tab","__spreadValues","a11yProps","Component","componentProps","TabPanel_default","__spreadProps","LimitationType","useTranslation","React","createContext","useState","useTranslation","React","createContext","FormContext","createContext","Form","style","submitButtonText","onSubmit","children","formRef","formIsValid","useFormValidation","React","event","Button_default","Form_default","FormIsValidContext","createContext","FiltersPreviewBoostingTab","onSearch","children","formIsValid","setFormIsValid","useState","t","useTranslation","handleSubmit","e","React","Form_default","Button_default","FiltersPreviewBoostingTab_default","InputAdornment","React","useContext","SearchBar","value","onChange","onResearch","placeholder","label","showError","formIsValid","useContext","FormIsValidContext","React","InputText_default","InputAdornment","IonIcon_default","FiltersPreviewBoostingTabs","onSendFilter","categories","localizedCatalogsOptions","requestTypes","onLocalizedCatalogChange","localizedCatalog","tBoost","useTranslation","tCommon","category","setCategory","useState","search","setSearch","sendFilter","tabId","showAllErrors","setShowAllErrors","DrowDownLocalizedCatalog","React","DropDown_default","value","handleSearch","id","formIsValid","tabs","requestType","LimitationType","FiltersPreviewBoostingTab_default","TreeSelector_default","SearchBar","CustomTabs","FiltersPreviewBoostingTabs_default","ProductRequestType","getIdFromIri","React","useEffect","useMemo","useState","React","Box","TablePagination","styled","useTranslation","theme","paginationStyle","theme","PaginationTextContainer","styled","__spreadValues","StyledParagraph","Pagination","props","style","withResults","isBottom","count","currentPage","rowsPerPage","rowsPerPageOptions","onRowsPerPageChange","onPageChange","dataTestId","t","useTranslation","handlePageChange","_","page","labelDisplayedRows","paginationInfo","React","labelRowsPerPage","selectProps","nextAndBackButtonProps","Box","__spreadProps","TablePagination","Pagination_default","useTranslation","React","React","forwardRef","useEffect","useRef","useState","DragDropContext","DataContentType","reorderingColumnWidth","selectionColumnWidth","stickyColunWidth","Table","TableCell","TableContainer","styled","getCustomScrollBarStyles","TableContainerWithCustomScrollbar","styled","TableContainer","theme","__spreadProps","__spreadValues","getCustomScrollBarStyles","StyledTable","Table","BaseTableCell","TableCell","StickyTableCell","React","TableBody","Draggable","Droppable","React","Box","Checkbox","TableRow","getImageValue","getPropsFromFieldState","DraggableRow","props","Field","cssLeftValues","diffRow","isHorizontalOverflow","onRowUpdate","onSelectRows","provider","selectedRows","shadow","tableConfig","tableHeaders","tableRow","withSelection","configuration","stickyHeaders","manageStickyHeaders","nonStickyHeaders","header","isOnlyDraggable","handleSelectionChange","value","handleSingleRow","handleChange","name","event","React","TableRow","__spreadProps","__spreadValues","StickyTableCell","draggableColumnStyle","Box","reorderIconStyle","IonIcon_default","selectionStyle","Checkbox","_a","i","_b","gridHeaderInfoTooltip","stickyHeader","__objRest","stickyStyle","getPropsFromFieldState","_c","_d","getImageValue","BaseTableCell","nonStickyStyle","DraggableRow_default","DraggableBody","props","Field","cssLeftValues","diffRows","isHorizontalOverflow","onRowUpdate","onSelectRows","selectedRows","shadow","tableConfigs","tableHeaders","tableRows","withSelection","configuration","hasEditLink","editLink","newTableRows","item","link","__spreadProps","__spreadValues","React","Droppable","provider","TableBody","tableRow","index","Draggable","DraggableRow_default","DraggableBody_default","React","useState","TableBody","React","Checkbox","TableRow","getImageValue","getPropsFromFieldState","NonDraggableRow","props","Field","cssLeftValues","diffRow","isHorizontalOverflow","onRowUpdate","onSelectRows","selectedRows","shadow","tableConfig","tableHeaders","tableRow","withSelection","configuration","withoutDragableColumn","onClick","stickyHeaders","manageStickyHeaders","nonStickyHeaders","header","isOnlyDraggable","handleSelectionChange","value","handleSingleRow","handleChange","name","event","React","TableRow","StickyTableCell","__spreadValues","draggableColumnStyle","selectionStyle","Checkbox","_a","i","_b","gridHeaderInfoTooltip","stickyHeader","__objRest","stickyStyle","__spreadProps","getPropsFromFieldState","_c","_d","getImageValue","BaseTableCell","nonStickyStyle","NonDraggableRow_default","NonDraggableBody","props","Field","cssLeftValues","diffRows","isHorizontalOverflow","onRowUpdate","onSelectRows","selectedRows","shadow","tableConfigs","tableHeaders","tableRows","withSelection","configuration","hasEditLink","editLink","withoutDragableColumn","open","handleClickOpen","handleClose","usePopIn","tableRowPopIn","setTableRowPopIn","useState","newTableRows","item","link","__spreadProps","__spreadValues","handleClick","React","TableBody","tableRow","index","NonDraggableRow_default","CustomDialog_default","NonDraggableBody_default","React","Checkbox","TableHead","TableRow","DataContentType","reorderingColumnWidth","selectionColumnWidth","stickyColunWidth","useTranslation","CustomTableHeader","props","cssLeftValues","isHorizontalOverflow","massiveSelectionIndeterminate","massiveSelectionState","onSelection","shadow","tableHeaders","withSelection","withoutDragableColumn","stickyHeaders","manageStickyHeaders","isOnlyDraggable","t","useTranslation","React","TableHead","TableRow","StickyTableCell","__spreadProps","__spreadValues","reorderingColumnWidth","stickyBorderStyle","selectionColumnWidth","Checkbox","stickyHeader","i","_a","stickyColunWidth","InfoTooltip_default","header","BaseTableCell","DataContentType","CustomTableHeader_default","CustomTable","props","ref","_a","Field","border","diffRows","draggable","massiveSelectionState","massiveSelectionIndeterminate","onReOrder","onRowUpdate","onSelection","tableConfigs","tableHeaders","tableRows","selectedRows","withSelection","configuration","hasEditLink","editLink","withoutDragableColumn","hoverableLine","scrollLength","setScrollLength","useState","tableRef","useRef","refCurrent","isOverflow","shadow","useIsHorizontalOverflow","useEffect","stickyLength","header","stickyColunWidth","handleDragEnd","e","tempData","source_data","computeLeftCSSValues","stickyHeaders","result","eachLeftvalues","reorderingColumnWidth","selectionColumnWidth","leftPrevious","leftCurrent","i","cssLeftValues","styles","handleSelection","event","newHeadersTable","DataContentType","React","DragDropContext","TableContainerWithCustomScrollbar","__spreadValues","StyledTable","CustomTableHeader_default","NonDraggableBody_default","DraggableBody_default","CustomTable_default","forwardRef","useTranslation","CircularProgress","styled","CustomRoot","styled","theme","TableContainer","convertProductToRow","productsBefore","productsAfter","dataInfo","product","index","_a","_b","_c","_d","_e","_f","_g","beforeProduct","afterProduct","globalStyle","scoreFieldStyle","positionFieldStyle","tableHeaders","__spreadProps","__spreadValues","PreviewBoostingTable","resultsBefore","resultsAfter","loading","t","useTranslation","products","configuration","useAppSelector","selectConfiguration","React","CircularProgress","NoAttributes_default","CustomTable_default","FieldGuesser_default","PreviewBoostingTable_default","LimitationType","LoadStatus","getPreviewBoostQuery","styled","PreviewContainer","styled","theme","PreviewBoostingTableManager","filter","localizedCatalog","currentBoost","requestTypes","currentPage","setCurrentPage","useState","totalItems","setTotalItems","productsBefore","setProductsBefore","productsAfter","setProductsAfter","rowsPerPage","t","useTranslation","limitationTypes","useMemo","requestType","variables","filterValue","LimitationType","__spreadProps","__spreadValues","search","filterIsValid","previewBoostData","status","useGraphqlApi","getPreviewBoostQuery","useEffect","React","Pagination_default","PreviewBoostingTable_default","LoadStatus","NoAttributes_default","styled","useTranslation","RequiredMessage","defaultFilter","ProductRequestType","PreviewGridBoostConfiguration","currentBoost","_a","t","filter","setFilter","useState","localizedCatalog","setLocalizedCatalog","categoriesParameters","useMemo","categoriesAPI","useFetchApi","requestTypesOptionsAPI","catalogs","useContext","catalogContext","requestTypes","_b","_c","currentRequestTypes","requestType","localizedCatalogs","localizedCatalogsId","value","getIdFromIri","hydraMember","localizedCatalogOption","boostIsValid","_d","currentBoostPrevRef","useRef","useEffect","React","FiltersPreviewBoostingTabs_default","PreviewBoostingTableManager","React","styled","imageIconLabels","useTranslation","ImageContainer","styled","ImageTag","Icons","Image","props","image","React","iconName","IonIcon_default","imageIconLabels","Image_default","React","useTranslation","getPositionDetails","type","t","PositionEffect","props","positionEffect","useTranslation","positionDetails","React","IonIcon_default","__spreadValues","PositionEffect_default","Box","styled","CustomA","theme","ReadableFieldGuesser","props","input","value","field","options","multipleValueFormat","data","t","useTranslation","language","useAppSelector","selectLanguage","localizedCatalogWithDefault","useContext","catalogContext","DataContentType","React","Chip_default","Image_default","score","Score_default","__spreadValues","Stock_default","price","Price_default","ReadableDropDownGuesser_default","Link","stockStatus","productName","PreviewGridBoostConfiguration","PositionEffect_default","FormatRowArray_default","ReadableFieldGuesser_default","React","useContext","useEffect","useTranslation","LoadStatus","EditableDropDownGuesser","props","_a","_b","_c","_d","diffValue","disabled","field","label","multiple","onChange","options","required","value","useGroups","infoTooltip","placeholder","error","helperText","helperIcon","showError","replacementErrorsMessages","dataTestId","t","useTranslation","fieldOptions","load","statuses","useContext","optionsContext","dropDownOptions","dirty","useEffect","LoadStatus","React","DropDown_default","EditableDropDownGuesser_default","React","useEffect","useMemo","valueInitializer","MultipleInput","props","_a","inputDependencies","onChange","value","otherProps","__objRest","fields","useMemo","inputDependency","defaultValue","parsedValue","field","valueInitializer","useEffect","React","newValue","handleChange","_name","event","updatedValue","__spreadProps","__spreadValues","FieldGuesser_default","MultipleInput_default","Box","React","React","styled","CustomRootItem","styled","theme","CustomPropError","CustomRoot","prop","error","CustomProp","CustomFirstSelectedItem","uniqueLine","__spreadValues","CustomSelectedItem","React","useMemo","styled","flatTree","getIri","React","useCallback","useEffect","useState","styled","FormHelperText","IconButton","InputLabel","React","useCallback","React","forwardRef","useMemo","useState","styled","FormHelperText","InputLabel","useTranslation","colorOfBorderTextFieldTagsInputInit","colorOfBorderTextFieldTagsInputError","colorOfBorderTextFieldTagsInputHover","colorOfBorderTextFieldTagsInputFocus","customRootTextFieldTagsProps","CustomRootTextFieldTags","styled","prop","theme","disabled","error","focus","__spreadValues","__spreadProps","CustomTags","CustomFormTextFieldTags","CustomInputTextTextFieldTags","InputTextWithoutError_default","CustomCloseTagsByOperator","TextFieldTagsWithoutError","props","ref","inputValue","onChange","onRemoveItem","required","fullWidth","helperText","helperIcon","label","margin","infoTooltip","placeholder","size","disabledValue","withCleanButton","dataTestId","t","useTranslation","val","setVal","useState","manageTags","key","event","value","newTags","_","keyValue","setFocus","useMemo","el","onBlurInputTextFieldTags","e","React","IonIcon_default","FormControl_default","InputLabel","InfoTooltip_default","Chip_default","it","item","FormHelperText","TextFieldTagsWithoutError_default","forwardRef","TextFieldTags","props","_a","onChange","showError","additionalValidator","inputProps","__objRest","validator","useCallback","value","event","_b","useFormError","_c","ref","formErrorProps","React","TextFieldTagsWithoutError_default","__spreadProps","__spreadValues","TextFieldTags_default","useTranslation","CustomMultipleTextFieldsTags","styled","theme","CustomSelectOperator","TextFieldTagsMultiple","props","value","onChange","disabledValue","disabled","required","error","fullWidth","helperText","helperIcon","label","margin","infoTooltip","options","showError","dataTestId","t","useTranslation","transformedValue","list","transformedObject","item","unModifiedValue","obj","key","queryText","modifiedValue","addItem","useCallback","operator","__spreadProps","__spreadValues","removeItem","newValue","updateOperator","oldOperator","newOperator","updateValue","data","it","optionsListAvailable","operatorValue","setOperatorValue","useState","useEffect","opt","_a","React","FormControl_default","InputLabel","InfoTooltip_default","TextFieldTags_default","option","newOptionsList","DropDownWithoutError_default","newOption","IconButton","IonIcon_default","Button_default","FormHelperText","TextFieldTagsMultiple_default","useTranslation","CustomItem","styled","theme","CustomLabel","CustomDataLimitations","RequestTypeItem","props","value","onChange","options","limitationsTypes","requestTypesOptions","categoriesList","showError","dataTestId","t","useTranslation","onChangeApplyToAll","idItem","val","requestTypeOptionValues","it","newData","item","__spreadProps","__spreadValues","requestTypeLimitationType","onChangeDataLimitations","getIri","flatCategories","useMemo","flat","flatTree","limitationTypeMap","acc","option","React","CustomRootItem","key","_a","_b","countLines","requestTypeRequestType","requestTypeOption","concatLabel","findValueInRequestTypesOptions","isApplyToAll","limitationsData","uniqueLine","CustomDiv","CustomSelectedItem","CustomFirstSelectedItem","treeSelectorValue","category","propsLimitations","data","CheckboxWithoutError_default","TextFieldTagsMultiple_default","TreeSelector_default","RequestTypeItem_default","FormHelperText","InputLabel","RequestType","props","value","onChange","options","limitationsTypes","requestTypesOptions","categoriesList","label","required","fullWidth","margin","infoTooltip","placeholder","error","helperText","helperIcon","showError","dataTestId","updateSelectedDropDown","list","selectedList","newRequestTypes","item","existingItem","r","requestTypeOption","opt","limitationType","linkedRequestTypes","applyToAll","linked","newValue","__spreadProps","__spreadValues","optionValue","key","React","StyledFormControl","InputLabel","InfoTooltip_default","CustomRoot","DropDown_default","RequestTypeItem_default","FormHelperText","IonIcon_default","text","RequestType_default","useTranslation","RequestTypeManager","props","_b","_c","_d","_e","_f","_a","data","value","onChange","requestTypeConfigurations","dataTestId","args","__objRest","tApi","useTranslation","operatorOptionsApi","useApiList","limitationTypeOptionsApi","requestTypeOptionsApi","categoriesListApi","useFetchApi","operatorOptions","option","__spreadProps","__spreadValues","limitationTypeOptions","requestTypeOptions","categoriesList","requestTypeValue","getRequestTypeData","React","RequestType_default","RequestTypeManager_default","React","useContext","useMemo","getIri","parseRule","serializeRule","React","Fragment","styled","useTranslation","RuleCombinationOperator","RuleType","emptyAttributeRule","emptyCombinationRule","isAttributeRule","isCombinationRule","React","useContext","useEffect","useMemo","useTranslation","RuleAttributeType","RuleType","RuleValueType","flatTree","getAttributeRuleValueType","isAttributeRule","isAttributeRuleValueMultiple","isCombinationRule","ruleArrayValueSeparator","ruleValueNumberTypes","styled","Root","theme","Close","CustomCombination","getInputType","valueType","ruleValueNumberTypes","Rule","props","_a","_b","_c","catalogId","showError","localizedCatalogId","onChange","onDelete","rule","small","getAttributeOperatorOptions","getAttributeType","loadAttributeValueOptions","operatorsValueType","options","useContext","ruleOptionsContext","t","useTranslation","useEffect","isAttributeRule","categories","useMemo","RuleAttributeType","flatCategories","flat","flatTree","handleChange","property","value","__spreadProps","__spreadValues","handleCategoryChange","category","handleInputChange","multiple","ruleArrayValueSeparator","handleFieldChange","handleOperatorChange","operator","attributeRule","newRule","prevType","getAttributeRuleValueType","newType","isAttributeRuleValueMultiple","getAttributeValueComponent","attribute_type","field","RuleValueType","React","DropDown_default","treeSelectorValue","TreeSelector_default","datePickerValue","DatePicker_default","InputText_default","content","isCombinationRule","RuleType","CustomCombination","Root","Close","IonIcon_default","Rule_default","React","styled","LinkLabel","theme","LinkLabelSimple","LinkLabelDouble","LinkLabelDoubleMerged","DoubleLinkContainer","RuleLink","props","double","label","merge","RuleLink_default","RuleAndLinkContainer","styled","theme","BorderBox","RootWithBorder","RootWithoutBorder","ChildWithBorder","RuleLinkPlaceholder","CombinationRules","props","catalogId","first","localizedCatalogId","onChange","onDelete","rule","small","showError","t","useTranslation","children","operator","Root","Child","Fragment","options","RuleType","handleChildChange","key","childRule","__spreadProps","__spreadValues","item","index","handleChildDelete","_","handleAdd","value","emptyCombinationRule","emptyAttributeRule","React","RuleLink_default","Rule_default","RuleCombinationOperator","isCombinationRule","isAttributeRule","Button_default","IonIcon_default","CombinationRules_default","React","useCallback","useEffect","useMemo","useTranslation","RuleAttributeType","RuleCombinationOperator","RuleType","RuleValueType","fetchApiUsingPagination","getIri","getOptionsFromEnum","getOptionsFromOptionResource","isError","RuleOptionsProvider","props","catalogId","children","fields","localizedCatalogId","ruleOperators","operators","operatorsBySourceFieldType","operatorsValueType","sourceFieldOptionResource","useResource","t","useTranslation","fetch","map","setMap","useSingletonLoader","useEffect","options","clone","RuleType","getOptionsFromEnum","RuleCombinationOperator","RuleValueType","field","attributeOperatorOptions","useMemo","operator","label","getAttributeOperatorOptions","useCallback","fieldCode","code","option","getAttributeType","loadAttributeValueOptions","RuleAttributeType","fetchApi","__async","filters","response","isError","fetchApiUsingPagination","getIri","getOptionsFromOptionResource","context","React","ruleOptionsContext","RuleOptionsProvider_default","FormHelperText","InputLabel","useTranslation","sourceFieldFixedFilters","RulesManagerWrapper","_a","_b","defaultRuleOperators","props","__objRest","ruleOperators","useRuleOperators","React","RulesManager","__spreadProps","__spreadValues","active","label","infoTooltip","required","error","helperText","helperIcon","first","small","ruleProps","t","useTranslation","catalogId","localizedCatalogId","useContext","catalogContext","rowsPerPage","rule","parseRule","handleChange","serializeRule","sourceFieldResource","useResource","filters","useMemo","sourceFields","useApiList","sourceFieldLabelResource","sourceFieldLabelFilters","getIri","sourceFieldLabels","sourceFieldLabelsMap","fields","field","RuleOptionsProvider_default","InputLabel","InfoTooltip_default","CombinationRules_default","FormHelperText","IonIcon_default","RulesManager_default","React","FormHelperText","IconButton","InputLabel","styled","useTranslation","CustomPropError","CustomRoot","styled","prop","theme","error","synonymValidator","terms","term","iSynonymsFormattedToISynonyms","synonyms","synonym","synonymItem","__spreadProps","__spreadValues","Synonym","props","value","onChange","label","required","fullWidth","margin","infoTooltip","placeholder","showError","helperText","helperIcon","t","useTranslation","lastExpansionId","_a","addSynonym","synonymsUpdated","updateTerms","synonymId","index","removeTerms","React","StyledFormControl","InputLabel","InfoTooltip_default","TextFieldTags_default","IconButton","IonIcon_default","Button_default","FormHelperText","Synonym_default","React","FormHelperText","IconButton","InputLabel","styled","useTranslation","CustomPropError","CustomRoot","styled","prop","theme","error","iExpansionsFormattedToIExpansions","expansions","expansion","expansionItem","__spreadProps","__spreadValues","term","Expansion","props","value","onChange","label","required","fullWidth","margin","infoTooltip","placeholder","helperText","helperIcon","showError","t","useTranslation","lastExpansionId","_a","addExpansion","expansionsUpdated","updateTerms","expansionId","referenceTerm","terms","index","removeTerms","React","StyledFormControl","InputLabel","InfoTooltip_default","InputText_default","TextFieldTags_default","IconButton","IonIcon_default","Button_default","FormHelperText","Expansion_default","React","React","useTranslation","styled","ProportionalToAttributesContainer","theme","ProportionalToAttributes","value","sourceFields","boostImpactOptions","showError","onChange","sourceFieldCode","boostImpact","scaleFactor","t","useTranslation","handleChange","name","newValue","__spreadProps","__spreadValues","React","ProportionalToAttributesContainer","DropDown_default","RadioGroup_default","InputText_default","ProportionalToAttributes_default","rowsPerPage","sourceFieldFixedFilters","ProportionalToAttributesManager","props","boostImpactOptionResource","useResource","boostAttributeValueFieldOptionsResource","boostImpactOptionsResponse","useApiList","boostAttributeValueFieldOptionsResponse","React","ProportionalToAttributes_default","__spreadValues","ProportionalToAttributesManager_default","EditableFieldGuesser","props","diffValue","input","label","multiple","name","onChange","options","useDropdownBoolean","value","required","showError","suffix","type","validation","requestTypeConfigurations","data","optionConfig","infoTooltip","placeholder","error","helperText","replacementErrorsMessages","disabled","t","useTranslation","dirty","handleChange","event","DataContentType","React","InputText_default","Range_default","Slider_default","__spreadProps","__spreadValues","_a","multipleInputConfiguration","multipleValueFormat","doubleDatePickerProps","__objRest","Box","DoubleDatePicker_default","RulesManager_default","RequestTypeManager_default","Synonym_default","Expansion_default","MultipleInput_default","EditableDropDownGuesser_default","DropDown_default","Switch_default","ProportionalToAttributesManager_default","ReadableFieldGuesser_default","EditableFieldGuesser_default","FieldGuesser","props","_a","editable","fieldProps","__objRest","_b","getFieldState","visible","fieldStateProps","React","EditableFieldGuesser_default","__spreadValues","ReadableFieldGuesser_default","FieldGuesser_default","React","useCallback","useState","DataContentType","React","useContext","useState","useTranslation","Collapse","InputAdornment","Stack","rangeSeparator","Paper","styled","FiltersPaper","styled","Paper","theme","HeaderBox","SearchBox","FilterBox","FilterSecondaryButton","SecondaryButton","FacetteBox","FilterTertiaryButton","TertiaryButton","ContentForm","FiltersBox","Container","getActiveFilterLabel","filter","value","fieldOptions","_a","_b","options","option","getActiveFilter","Filters","props","activeValues","children","filters","filterValues","onApply","onClear","onClearAll","onFilterChange","onSearch","searchValue","showSearch","open","setOpen","useState","t","useTranslation","useContext","optionsContext","filterMap","activeFilters","_","acc","id","val","toggleFilters","prevState","handleClear","filterValue","v","handleChange","name","handleSubmit","event","chipFilterLabelWithTraduction","label","key","React","FiltersPaper","HeaderBox","SearchBox","InputTextWithoutError_default","InputAdornment","IonIcon_default","FilterBox","FilterSecondaryButton","FacetteBox","Chip_default","rangeSeparator","FilterTertiaryButton","Collapse","ContentForm","FiltersBox","FieldGuesser_default","__spreadProps","__spreadValues","Stack","Button_default","Container","Filters_default","FiltersGuesser","props","activeFilters","apiData","children","onFilterChange","onSearch","resource","searchValue","showSearch","filters","useApiFilters","initValues","useCallback","fallback","filter","_a","DataContentType","filterValues","setFilterValues","useState","handleApply","handleClear","value","prevState","__spreadProps","__spreadValues","handleClearAll","handleFilterChange","React","Filters_default","FiltersGuesser_default","React","useRef","useState","defaultPageSize","React","useEffect","useRef","Box","styled","StickyContainer","styled","Box","StickyActions","theme","getStickyBarStyles","positionRef","left","width","positions","StickyBar","props","children","show","ref","useRef","sidebarState","useAppSelector","selectSidebarState","useEffect","handleResize","React","StickyBar_default","React","forwardRef","styled","useTranslation","Root","styled","theme","CustomNoResult","PagerTable","props","ref","_a","currentPage","onPageChange","onRowsPerPageChange","rowsPerPage","rowsPerPageOptions","count","noResult","dataTestId","tableProps","__objRest","t","useTranslation","React","Pagination_default","CustomTable_default","__spreadValues","PagerTable_default","forwardRef","React","useState","useTranslation","Box","Checkbox","styled","getFieldHeader","ActionsButtonsContainer","styled","Box","TableStickyBar","props","field","fieldOptions","fieldValue","massiveSelectionState","massiveSelectionIndeterminate","onApply","onChangeField","onChangeValue","onSelection","selectedRows","withSelection","t","useTranslation","tApi","header","getFieldHeader","handleSubmit","event","formIsValid","setShowError","handleSelection","handleCancelSelection","showError","useState","React","Form_default","Checkbox","DropDownWithoutError_default","FieldGuesser_default","__spreadProps","__spreadValues","Button_default","TableStickyBar_default","TableGuesser","props","Field","count","currentPage","diffRows","onMassupdate","onMassreplace","onPageChange","onRowUpdate","resource","rowsPerPage","rowsPerPageOptions","onRowsPerPageChange","noResult","tableConfigs","tableRows","hasEditLink","editLink","dataTestId","tableHeaders","useApiHeaders","fieldOptions","useApiEditableFieldOptions","tableRef","useRef","selectedField","setSelectedField","useState","selectedValue","setSelectedValue","selectedRows","setSelectedRows","withSelection","header","activeRows","_","index","_a","_b","massiveSelectionState","massiveSelectionIndeterminate","handleSelection","rowIds","row","handleChangeField","id","handleChangeValue","value","handleApply","handleRowUpdate","name","event","field","React","PagerTable_default","defaultPageSize","StickyBar_default","TableStickyBar_default","FieldGuesser_default","TableGuesser_default","FitlerContent","styled","Paragraph","theme","getProps","resourceName","t","isObjectNotEmpty","object","value","listOfDefaultFacets","ResourceTable","props","useTranslation","Field","active","activeFilters","diffDefaultValues","getTableConfigs","filters","setActiveFilters","urlParams","showSearch","hasEditLink","editLink","rowsPerPageValue","resource","useResource","page","setPage","usePage","searchValue","setSearchValue","useSearch","parameters","useFilterParameters","useFiltersRedirect","rowsPerPageOptions","defaultRowsPerPageOptions","rowsPerPage","setRowsPerPage","useState","defaultPageSize","withDebounce","setWithDebounce","resourceData","massUpdate","massReplace","replace","update","useApiEditableList","useEffect","data","error","tableRows","diffRows","useMemo","itemTableRow","newDefault","itemDefaultFacets","row","key","getNameFromDefault","diffCount","acc","index","handleFilterChange","handleSearchValue","search","handlePageChange","handleRowChange","id","name","event","showError","_a","validity","onRowsPerPageChange","handleReset","entries","item","__spreadValues","filterOrSearchAreUp","LoadStatus","React","NoAttributes_default","FiltersGuesser_default","Button_default","TableGuesser_default","FieldGuesser_default","ResourceTable_default","useTranslation","styled","isIconInButton","CustomAHref","styled","prop","theme","large","__spreadValues","Grid","props","_a","resourceName","title","newLink","hasNewLink","propsButton","otherProps","__objRest","t","useTranslation","resource","useResource","activeFilters","setActiveFilters","useFilters","React","PageTitle_default","Button_default","__spreadProps","ResourceTable_default","Grid_default","CustomRoot","styled","theme","CustomTitle","NoAttributes","props","title","btnTitle","btnHref","absolutLink","pathname","useRouter","pathnameWithoutLastFile","React","IonIcon_default","Button_default","Link","CustomAHref","NoAttributes_default","React","Typography","styled","Head","getHeadTitle","Root","styled","StickyRoot","theme","CustomTypography","Typography","PageTitle","props","_a","children","sticky","title","typographyProps","__objRest","RootComponent","React","Head","getHeadTitle","__spreadValues","PageTitle_default","React","useContext","Box","Placeholder","props","children","placeholder","localizedCatalogIdWithDefault","useContext","catalogContext","React","Box","Placeholder_default","React","styled","firstLetterUppercase","React","useState","Dialog","styled","getUniqueLocalName","React","styled","CustomTitleScope","theme","TitleScope","name","TitleScope_default","React","styled","useTranslation","CustomRoot","theme","CustomNbActiveLocales","CustomTexteActiveLocales","NbActiveLocales","number","t","NbActiveLocales_default","CustomClose","styled","theme","CustumOtherLanguage","CustomRoot","PopInCatalogs","content","title","open","setOpen","useState","handleClickOpen","handleClose","React","Dialog","IonIcon_default","TitleScope_default","NbActiveLocales_default","getUniqueLocalName","Language_default","PopInCatalogs_default","CustomRoot","styled","theme","CustomLanguage","NB_ACTIVE_LOCALES_BY_WEBSITE","Language","language","order","limit","content","newLanguage","React","item","key","PopInCatalogs_default","firstLetterUppercase","Language_default","React","useEffect","useState","SubTabPanel","props","children","id","value","isLoaded","setIsLoaded","SubTabPanel_default","React","useState","keyframes","styled","CustomRoot","styled","theme","CustumRootSubTabs","CustomSubTabs","CustomSubTabsActive","opacity","keyframes","SubTabs","props","defaultActiveId","onChange","tabs","activeId","setActiveId","useState","handleChange","id","React","label","Component","componentProps","SubTabPanel_default","__spreadProps","__spreadValues","SubTabs_default","React","useState","styled","Collapse","Box","React","useRouter","styled","storageRemove","tokenStorageKey","useTranslation","CustomTypoTexte","styled","theme","CustomTypoEmail","CustomTypoBasic","CustomHr","UserMenuShow","user","push","useRouter","handleLogOut","storageRemove","tokenStorageKey","React","FormatText_default","UserMenuShow_default","CustomUser","styled","theme","CustomUserName","CustomArrow","CustomUserMenu","UserMenu","openUserMenu","setOpenUserMenu","useState","user","useUser","React","Box","IonIcon_default","FormatText_default","Collapse","UserMenuShow_default","CloseComponent_default","UserMenu_default","React","useState","Button","Checkbox","Menu","MenuItem","MassiveSelectionType","useTranslation","MassiveSelection","props","onSelection","selectionState","indeterminateState","t","useTranslation","anchorEl","setAnchorEl","useState","open","handleClick","e","handleClose","key","massiveSelectionType","MassiveSelectionType","handleMassiveSelection","React","Checkbox","Button","IonIcon_default","Menu","MenuItem","MassiveSelection_default","React","Box","styled","BannerContainer","styled","Box","theme","BannerText","TopProductsBanner","props","bannerText","React","IonIcon_default","TopProductsBanner_default","React","styled","React","styled","CustomRoot","styled","theme","User","isConnected","React","Help_default","UserMenu_default","User_default","CustomRoot","styled","theme","AppBar","slug","menu","isConnected","React","Breadcrumbs_default","User_default","AppBar_default","React","styled","removeFirstCharIfExist","slugify","code","depth","slug","i","CustomFirstItems","styled","CustomBoldStyle","theme","CustomSecondItems","itemRouterTabs","Menu","props","childrenState","className","menu","menuItemActive","onChildToggle","sidebarState","sidebarStateTimeout","words","React","item","_a","path","removeFirstCharIfExist","MenuItemIcon_default","MenuItem_default","Menu_default","React","styled","CustomRoot","styled","theme","ActiveLocales","content","languages","hydraContent","localizedCatalogsContent","React","TitleScope_default","NbActiveLocales_default","Language_default","ActiveLocales_default","React","styled","useTranslation","getUniqueLocalName","CustomFullRoot","styled","theme","CustomNbCatalogs","CustomRoot","CustomCatalogs","Catalogs","content","t","useTranslation","React","item","key","TitleScope_default","NbActiveLocales_default","getUniqueLocalName","Language_default","Catalogs_default","React","Collapse","styled","Link","Image","CustomImgCollapse","styled","CustomImgContainer","theme","CustomLeftBar","Collapse","CustomRoot","CustomMenu","Menu_default","CustomImgExtended","Sidebar","props","childrenState","menu","menuItemActive","onChildToggle","sidebarState","sidebarStateTimeout","React","Link","Image","Sidebar_default","React","styled","getCustomScrollBarStyles","Title","styled","theme","Subtitle","Container","__spreadProps","__spreadValues","getCustomScrollBarStyles","PaddingBox","TitleBlock","props","title","children","subtitle","React","TitleBlock_default","React","useEffect","useRef","styled","Sentinel","CustomRoot","CustomLeftSide","CustomBorder","theme","Sticky","CustomRightSide","TwoColsLayout","left","children","colRef","sentinelRef","handler","entries","_a","_b","observer","TwoColsLayout_default","React","useContext","styled","useTranslation","SwitchersContainer","styled","CatalogSwitcher","t","useTranslation","catalogId","catalogsData","localizedCatalogId","setCatalogId","setLocalizedCatalogId","useContext","catalogContext","catalogs","hydraMember","localizedCatalogs","catalog","localizedCatalog","onCatalogChange","onLocalizedCatalogChange","React","DropDownWithoutError_default","CatalogSwitcher_default","React","useState","CategoryTree","props","categories","selectedItem","onSelect","openItems","setOpenItems","useState","React","Tree_default","CategoryTree_default","React","useTranslation","Grid","Paper","getFieldConfig","getFieldState","isRuleValid","isVirtualCategoryEnabled","Merchandize","catConf","onChange","sortOptions","category","_a","_b","_c","_d","_e","_f","t","useTranslation","bundles","useAppSelector","selectBundles","catConfResource","useResource","fieldConfigMap","field","getFieldConfig","ruleOperators","useRuleOperators","isValid","isRuleValid","handleChange","value","event","isRootCategory","React","Paper","Grid","Switch_default","__spreadValues","getFieldState","DropDownWithoutError_default","isVirtualCategoryEnabled","RulesManager_default","Merchandize_default","React","useEffect","useMemo","useRef","useState","Box","styled","useTranslation","LoadStatus","getIdFromIri","getIri","getProductPosition","React","forwardRef","Paper","Box","styled","useTranslation","React","forwardRef","useContext","useEffect","useMemo","useState","useTranslation","Box","ProductRequestType","cleanBeforeSaveCatConf","defaultPageSize","defaultRowsPerPageOptions","getSearchPreviewProductsQuery","productTableheader","serializeCatConf","BottomTable","props","ref","_a","_b","_c","_d","_e","_f","category","onSelectedRows","productGraphqlFilters","selectedRows","topProductsIds","setNbBottomRows","sortValue","searchValue","configuration","nbTopProducts","catConf","ruleOperators","hasEditLink","editLink","localizedCatalogIdWithDefault","useContext","catalogContext","currentPage","setCurrentPage","useState","rowsPerPage","setRowsPerPage","defaultPageSize","t","useTranslation","variables","useMemo","ProductRequestType","cleanBeforeSaveCatConf","serializeCatConf","filters","products","useGraphqlApi","getSearchPreviewProductsQuery","onPageChange","page","tableRows","withSelection","massiveSelectionState","massiveSelectionIndeterminate","onRowsPerPageChange","event","useEffect","handleSelection","rowIds","row","hasProduct","React","Box","PagerTable_default","FieldGuesser_default","defaultRowsPerPageOptions","productTableheader","NoAttributes_default","BottomTable_default","forwardRef","React","useContext","useEffect","useMemo","LoadStatus","ProductRequestType","cleanBeforeSaveCatConf","getIdFromIri","getSearchPreviewProductsQuery","productTableheader","serializeCatConf","React","styled","useTranslation","Container","styled","theme","TopProductsTable","props","t","useTranslation","React","TopProductsBanner_default","CustomTable_default","__spreadValues","TopProductsTable_default","TopTable","props","_a","_b","_c","_d","category","selectedRows","onSelectedRows","productGraphqlFilters","setProductPositions","topProducts","topProductsIds","sortValue","configuration","searchValue","setNbTopRows","catConf","ruleOperators","hasEditLink","editLink","localizedCatalogIdWithDefault","useContext","catalogContext","variables","useMemo","ProductRequestType","cleanBeforeSaveCatConf","serializeCatConf","filters","products","useGraphqlApi","getSearchPreviewProductsQuery","handleReorder","rows","position","positions","row","getIdFromIri","useEffect","topProductsMap","productId","tableRows","a","b","withSelection","massiveSelectionState","massiveSelectionIndeterminate","handleSelection","rowIds","LoadStatus","React","TopProductsTable_default","FieldGuesser_default","productTableheader","TopTable_default","PreviewArea","styled","Box","theme","ProductsTopAndBottom","props","ref","category","bottomSelectedRows","onBottomSelectedRows","onTopSelectedRows","productGraphqlFilters","setProductPositions","topSelectedRows","topProducts","setNbBottomRows","setNbTopRows","sortValue","searchValue","nbTopProducts","catConf","ruleOperators","hasEditLink","editLink","t","useTranslation","topProductsIds","topProduct","configuration","useAppSelector","selectConfiguration","React","Paper","TopTable_default","BottomTable_default","ProductsTopAndBottom_default","forwardRef","React","Grid","InputAdornment","Paper","useTranslation","Grid","styled","SearchTitle","SearchResult","theme","CustomNoTopProduct","SearchBar","props","_a","nbResults","nbTopProducts","sortValue","onSearch","searchValue","onValSearchOnChange","isInputAdornmentClickable","inputTextProps","__objRest","t","useTranslation","handleSubmit","event","value","result","valuePinned","resultPinned","handleClick","hasProduct","React","Paper","Grid","SearchTitle","SearchResult","CustomNoTopProduct","InputTextWithoutError_default","__spreadProps","__spreadValues","InputAdornment","IonIcon_default","Layout","styled","theme","CustomBarTextMaxProducts","ProductsContainer","props","_a","catConf","ruleOperators","category","isLoading","isValid","onChange","onSave","prevCatConf","prevProductPositions","productGraphqlFilters","hasEditLink","editLink","localizedCatalogIdWithDefault","tableRef","useRef","topSelectedRows","setTopSelectedRows","useState","bottomSelectedRows","setBottomSelectedRows","nbBottomRows","setNbBottomRows","nbTopRows","setNbTopRows","defaultSorting","variables","useMemo","productPositions","setProductPositions","useGraphqlApi","getProductPosition","useEffect","LoadStatus","t","useTranslation","showStickyBar","unselectAllRows","resourceSortingOption","useResource","data","useApiList","sortOption","obj","__spreadValues","search","setSearch","onSearch","value","valSearchOnChange","setValSearchOnChange","onValSearchOnChange","topProducts","disabled","key","val","pinToTop","maxPosition","topProduct","newTopProducts","row","getIdFromIri","pinToBottom","productId","getIri","handleSave","React","Box","PageTitle_default","Button_default","Merchandize_default","SearchBar","ProductsTopAndBottom_default","StickyBar_default","IonIcon_default","ProductsContainer_default","React","useCallback","useContext","useEffect","styled","LoadStatus","isError","isValidUser","CustomRoot","styled","theme","CustomAppFrame","CustomContentWithAppBar","CustomContent","CustomButtonCollapse","CustomToClose","CustomToOpen","Layout","children","dispatch","useAppDispatch","sidebarState","useAppSelector","selectSidebarState","sidebarStateTimeout","selectSidebarStateTimeout","menuItemActive","selectMenuItemActive","childrenState","selectChildrenState","menu","selectMenu","breadcrumb","useContext","breadcrumbContext","fetchApi","useApiFetch","user","useUser","useEffect","setMenu","LoadStatus","json","isError","setMenuItemActive","collapseSidebar","setSidebarState","setSidebarStateTimeout","toggleChild","useCallback","code","childState","setChildState","isConnected","isValidUser","React","Sidebar_default","IonIcon_default","AppBar_default","Layout_default","React","useContext","useState","useTranslation","React","firstLetterUppercase","useTranslation","styled","CustomBlocEntity","theme","CustomNameBloc","Metadata","props","metadatas","fixedFilters","setFixedFilters","filterField","t","useTranslation","metadataOptions","item","firstLetterUppercase","React","DropDownWithoutError_default","e","filters","Metadata_default","SettingsAttributes","props","active","fixedFilters","setFixedFilters","useState","isVisibleAlertSettingsAttributes","setIsVisibleAlertSettingsAttributes","t","useTranslation","resource","useResource","activeFilters","setActiveFilters","useFilters","getTableConfigs","rows","row","metadatas","useContext","metadataContext","React","Alert_default","Metadata_default","ResourceTable_default","SettingsAttributes_default","React","useMemo","useTranslation","SettingsScope","t","useTranslation","resource","useResource","catalogsFields","useApiList","data","error","routerTabs","useMemo","Catalogs_default","ActiveLocales_default","activeTab","handleTabChange","useTabs","id","React","SubTabs_default","SettingsScope_default","React","useEffect","useState","React","React","FormFieldGuesser","props","_a","data","field","fieldProps","__objRest","value","useValue","React","FieldGuesser_default","__spreadProps","__spreadValues","FormFieldGuesser_default","styled","MainSectionFieldSet","theme","SectionFieldSet","ListItemForm","LabelFieldSet","useTranslation","CustomForm","props","data","onChange","resource","errors","showAllErrors","externalFieldSet","headers","useApiHeadersForm","t","useTranslation","handleChange","name","response","__spreadProps","__spreadValues","React","MainSectionFieldSet","fieldset","SectionFieldSet","LabelFieldSet","Tooltip_default","IonIcon_default","ListItemForm","field","_a","_b","FormFieldGuesser_default","CustomForm_default","React","useRouter","useTranslation","BackToLastPage","props","_a","urlRedirection","children","btnProps","__objRest","router","useRouter","t","useTranslation","handleRedirection","React","Button_default","__spreadProps","__spreadValues","BackToLastPage_default","IMainContext","concatenateValuesWithLineBreaks","firstLetterUppercase","initResourceData","isError","closeSnackbar","enqueueSnackbar","useTranslation","Box","useRouter","styled","CustomDoubleButtonSticky","styled","theme","ResourceForm","props","resourceName","id","title","entityLabel","entity","t","useTranslation","resource","useResource","IMainContext","replace","create","remove","useResourceOperations","errors","setErrors","useState","router","useRouter","isLoading","setIsLoading","data","setData","initResourceData","fetchApi","useApiFetch","log","useLog","useEffect","json","isError","transformPropertyPath","propertyPath","sendingData","__async","_a","sendingToApi","newErrors","err","enqueueSnackbar","closeSnackbar","concatenateValuesWithLineBreaks","deleteData","_b","_c","firstLetterUppercase","showAllErrors","setShowAllErrors","handleSubmit","event","formIsValid","React","MainSectionFieldSet","Form_default","PageTitle_default","BackToLastPage_default","PopIn_default","Button_default","Box","CustomForm_default","ResourceForm_default","React","ThemeProvider","StyledEngineProvider","Provider","SnackbarProvider","theme","React","useMemo","useState","BreadcrumbProvider","props","children","breadcrumb","setBreadcrumb","useState","breadcrumbContextValue","useMemo","React","breadcrumbContext","BreadcrumbProvider_default","React","useEffect","useMemo","useTranslation","LocalizationProvider","AdapterDateFns","languages","I18nProvider","props","_a","children","translation","useTranslation","dispatch","useAppDispatch","i18n","useEffect","context","setLanguage","useMemo","language","callback","__async","locale","React","LocalizationProvider","AdapterDateFns","i18nContext","I18nProvider_default","AppProvider","props","children","store","React","Provider","ThemeProvider","theme","StyledEngineProvider","SnackbarProvider","Alert_default","I18nProvider_default","BreadcrumbProvider_default","AppProvider_default","isError","isValidUser","React","useEffect","useState","CatalogProvider","props","children","log","useLog","fetchApi","useApiFetch","resource","useResource","user","useUser","catalogs","setCatalogs","useState","useEffect","isValidUser","json","isError","contextValue","useCatalogs","React","catalogContext","CatalogProvider_default","isError","isValidUser","React","useEffect","useState","MetadataProvider","props","children","log","useLog","fetchApi","useApiFetch","resource","useResource","user","useUser","metadata","setMetadata","useState","useEffect","isValidUser","json","isError","React","metadataContext","MetadataProvider_default","DataProvider","props","children","api","useAppSelector","selectApi","bundles","selectBundles","configurations","selectConfiguration","useDataLoader","DataProvider_default","React","OptionsProvider","props","children","context","useOptions","React","optionsContext","OptionsProvider_default","HttpBackend","ChainedBackend","LocalStorageBackend","nextI18nConfig","React","useEffect","Router","useRouter","getDisplayName","isValidUser","withAuth","Cmp","WithAuth","props","asPath","useRouter","user","useUser","dispatch","useAppDispatch","useEffect","isValidUser","setRequestedPath","Router","React","__spreadValues","getDisplayName","React","getDisplayName","withOptions","Cmp","WithOptions","props","React","OptionsProvider_default","__spreadValues","getDisplayName","React","useContext","useEffect","useState","useRouter","useTranslation","Box","styled","Paper","ProductRequestType","getLimitationType","getOptionsFromApiSchema","isGraphQLValidVariables","React","Grid","Paper","styled","useTranslation","PaperStyled","styled","Paper","GridStyled","Grid","theme","MerchandiseBar","props","nbResults","nbTopProducts","t","useTranslation","value","result","valuePinned","resultPinned","hasProduct","React","SearchTitle","SearchResult","CustomNoTopProduct","React","useEffect","useMemo","useState","ImageIcon","LoadStatus","cleanExplainGraphQLVariables","defaultPageSize","defaultRowsPerPageOptions","getIdFromIri","getSearchExplainProductsQuery","productTableheader","useTranslation","React","JSONTree","IconButton","Typography","useTranslation","JSONTreeTheme","copyToClipboard","text","sharedStyle","customDialogStyles","TitleTypography","children","React","ExplainQueryDetails","index","query","boxStyle","t","ButtonCopyToClipBoard","Button_default","IonIcon_default","PopIn_default","ExplainQueryDetails_default","React","useContext","useState","formatPrice","getLocalizedCatalogFromCatalogs","getStockStatusLabel","roundNumber","React","React","useState","React","Template","args","React","Tooltip_default","__spreadValues","ToolTip","IonIcon_default","Collapse","styled","classnames","StyledTable","styled","theme","ReadOnlyTableRow","row","subRow","_a","open","setOpen","useState","handleToggle","curr","React","classnames","cell","_b","__spreadValues","ToolTip","IonIcon_default","Collapse","ReadOnlyTable","header","body","fullWidth","React","StyledTable","ReadOnlyTableRow","row","ReadOnlyTable_default","styled","ExplainDetailsStyled","theme","AnalyzerLegends","useTranslation","Collapse","ExplainDetails","props","_a","_b","explainProduct","localizedCatalogId","open","setOpen","useState","catalogs","useContext","catalogContext","language","useAppSelector","selectLanguage","t","useTranslation","localizedCatalog","getLocalizedCatalogFromCatalogs","currency","header","getMatchTableRow","match","index","isSubRow","roundNumber","handleToggle","curr","getMatchTable","totalFieldScore","rows","field","__spreadProps","__spreadValues","rowsClone","item","body","subMatch","React","ReadOnlyTable_default","getIndexedContentTable","content","ExplainDetailsStyled","formatPrice","getStockStatusLabel","PopIn_default","IonIcon_default","AnalyzerLegends","key","Collapse","ExplainDetails_default","ProductsPreviewBottom","props","_a","_b","_c","_d","_e","_f","_g","_h","_i","_j","variables","configuration","limitationType","onProductsLoaded","currentPage","setCurrentPage","useState","rowsPerPage","setRowsPerPage","defaultPageSize","t","useTranslation","variablesFormatted","useMemo","cleanedVariables","cleanExplainGraphQLVariables","getIdFromIri","explain","useGraphqlApi","getSearchExplainProductsQuery","positions","tableRows","explainProduct","__spreadProps","__spreadValues","position","ImageIcon","React","ExplainDetails_default","useEffect","LoadStatus","onRowsPerPageChange","event","onPageChange","page","PagerTable_default","FieldGuesser_default","defaultRowsPerPageOptions","productTableheader","ExplainQueryDetails_default","NoAttributes_default","ProductsPreviewBottom_default","WrapperBlock","styled","theme","PreviewArea","Box","pagesSlug","INPUT_WIDTH","AdminAnalyzeResults","_a","_b","router","useRouter","setBreadcrumb","useContext","breadcrumbContext","localizedCatalogWithDefault","catalogContext","variables","setVariables","useState","variableValid","setVariableValid","nbResults","setNbResults","nbTopProducts","setNbTopProducts","showAllErrors","setShowAllErrors","configuration","useAppSelector","selectConfiguration","t","useTranslation","useEffect","localizedCatalogOptionResource","useResource","localizedCatalogData","useApiList","localizedCatalogOptions","getOptionsFromApiSchema","requestTypeData","requestTypeOptions","categoriesListApi","useFetchApi","categoriesList","limitationType","getLimitationType","handleChange","value","event","__spreadProps","__spreadValues","handleCategoryChange","handleSubmit","formIsValid","isGraphQLValidVariables","setProductCounts","defaultRequestType","option","ProductRequestType","defaultRequestTypeValue","defaultLocalizedCatalog","defaultLocalizedCatalogValue","React","PageTitle_default","Form_default","DropDown_default","TreeSelector_default","InputText_default","Button_default","MerchandiseBar","Paper","ProductsPreviewBottom_default","Results_default","withAuth","withOptions","React","useContext","useEffect","useMemo","useRef","useState","useTranslation","useRouter","closeSnackbar","enqueueSnackbar","LoadStatus","isError","isRuleValid","parseCatConf","savePositions","serializeCatConf","pagesSlug","AdminMerchandizeCategories","router","useRouter","fetchApi","useApiFetch","useTranslation","isLoading","setIsLoading","useState","catalogId","localizedCatalogId","localizedCatalogIdWithDefault","useContext","catalogContext","setBreadcrumb","breadcrumbContext","useEffect","ruleOperators","useRuleOperators","selectedCategoryItem","setSelectedCategoryItem","filters","useMemo","categories","useFetchApi","LoadStatus","prevState","findCategory","catConfResource","useResource","catConf","setCatConf","prevCatConf","useRef","update","create","useResourceOperations","_a","item","isError","parsedCatConf","parseCatConf","isValid","isRuleValid","prevProductPositions","handleUpdateCat","name","val","__spreadProps","__spreadValues","handleSelectCategory","category","graphqlApi","useApiGraphql","saveProductPositions","positions","__async","variables","json","savePositions","saveCategoryConfiguration","serializedCatConf","serializeCatConf","newCatConf","onSave","result","promiseGraphQlSetPositions","promiseApiRestVal","enqueueSnackbar","closeSnackbar","error","React","TwoColsLayout_default","TitleBlock_default","CatalogSwitcher_default","CategoryTree_default","Placeholder_default","ProductsContainer_default","categories_default","withAuth","withOptions","React","useContext","useEffect","useRouter","pagesSlug","propsButton","React","AdminBoostGrid","router","useRouter","setBreadcrumb","useContext","breadcrumbContext","useEffect","Grid_default","withAuth","withOptions","React","useContext","useEffect","useRouter","useTranslation","pagesSlug","AdminBoostCreate","router","useRouter","t","setBreadcrumb","useContext","breadcrumbContext","useEffect","React","ResourceForm_default","Create_default","withAuth","withOptions","React","useContext","useEffect","useState","useRouter","useTranslation","pagesSlug","AdminBoostEdit","router","useRouter","t","setBreadcrumb","useContext","breadcrumbContext","idUpdate","setIdUpdate","useState","useEffect","_a","React","ResourceForm_default","Edit_default","withAuth","withOptions","React","useContext","useEffect","useRouter","pagesSlug","propsButton","React","AdminThesaurusGrid","router","useRouter","setBreadcrumb","useContext","breadcrumbContext","useEffect","Grid_default","withAuth","withOptions","React","useContext","useEffect","useRouter","useTranslation","pagesSlug","AdminThesaurusCreate","router","useRouter","t","setBreadcrumb","useContext","breadcrumbContext","useEffect","React","ResourceForm_default","Create_default","withAuth","withOptions","React","useContext","useEffect","useState","useRouter","useTranslation","pagesSlug","AdminThesaurusEdit","router","useRouter","t","setBreadcrumb","useContext","breadcrumbContext","idUpdate","setIdUpdate","useState","useEffect","_a","React","ResourceForm_default","Edit_default","withAuth","withOptions","React","useContext","useEffect","useState","useRouter","useTranslation","searchableAttributeUrl","pagesSlug","AdminSearchFacetsConfigurationAttributes","isVisibleAlertAttributes","setIsVisibleAlertAttributes","useState","router","useRouter","setBreadcrumb","useContext","breadcrumbContext","t","useTranslation","fixedFilters","setFixedFilters","useEffect","resource","useResource","activeFilters","setActiveFilters","useFilters","metadatas","metadataContext","React","PageTitle_default","Alert_default","Metadata_default","ResourceTable_default","searchableAttributeUrl","Attributes_default","withAuth","withOptions","React","useContext","useEffect","useMemo","useState","useRouter","useTranslation","styled","classNames","ButtonSetting","styled","theme","IonIconStyle","IonIcon_default","DefaultButton","pagesSlug","AdminSearchFacets","router","useRouter","setBreadcrumb","useContext","breadcrumbContext","useTranslation","selectedCategoryItem","setSelectedCategoryItem","useState","useEffect","categories","useFetchApi","resource","useResource","activeFilters","setActiveFilters","useFilters","filters","useMemo","isVisibleAlertFacets","setIsVisibleAlertFacets","contentTitle","React","TwoColsLayout_default","TitleBlock_default","classNames","CategoryTree_default","PageTitle_default","Alert_default","ResourceTable_default","Facets_default","withAuth","withOptions","React","useContext","useEffect","useState","useRouter","useTranslation","defaultRowsPerPageOptions","pagesSlug","AdminSearchVector","router","useRouter","setBreadcrumb","useContext","breadcrumbContext","useTranslation","fixedFilters","setFixedFilters","useState","useEffect","resource","useResource","activeFilters","setActiveFilters","useFilters","metadatas","metadataContext","React","PageTitle_default","Metadata_default","ResourceTable_default","defaultRowsPerPageOptions","Vector_default","withAuth","withOptions","React","useContext","useEffect","useMemo","useTranslation","useRouter","findBreadcrumbLabel","pageSlug","AdminSettingsIndex","t","useTranslation","router","useRouter","menu","useAppSelector","selectMenu","setBreadcrumb","useContext","breadcrumbContext","useEffect","slug","routerTabs","useMemo","SettingsScope_default","SettingsAttributes_default","activeTab","handleTabChange","useTabs","actions","id","React","PageTitle_default","findBreadcrumbLabel","CustomTabs","Index_default","withAuth","withOptions","React","useContext","useEffect","useRouter","AdminDashboard","router","useRouter","setBreadcrumb","useContext","breadcrumbContext","useEffect","React","Dashboard_default","withAuth","withOptions","useEffect","Router","AdminSettings","Settings_default","React","Link","SwaggerDocs","Api","Admin","Mercure","Docs_default","React","appWithTranslation","useRouter","store","setupStore","GallyApp","props","Component","pageProps","Cmp","isLoginPage","useRouter","React","AppProvider_default","DataProvider_default","CatalogProvider_default","MetadataProvider_default","__spreadValues","Layout_default","GallyApp_default","appWithTranslation","nextI18nConfig","React","useCallback","useEffect","useState","useTranslation","Router","Head","styled","isError","isValidUser","storageSet","tokenStorageKey","Image","CustomRoot","styled","CustomImg","CustomBloc","Login","t","useTranslation","user","useUser","requestedPath","useAppSelector","selectRequestedPath","fetchApi","useApiFetch","email","setEmail","useState","password","setPassword","redirectToRequestedPath","useCallback","Router","useEffect","isValidUser","showAllErrors","setShowAllErrors","handleSubmit","event","formIsValid","json","isError","storageSet","tokenStorageKey","title","React","Head","PageTitle_default","Form_default","InputText_default","value","Login_default","useEffect","Router","Welcome","Welcome_default"]}