{"version":3,"file":"EditFolderDialog.mjs","sources":["../../../../admin/src/components/EditFolderDialog/EditFolderDialog.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useNotification } from '@strapi/admin/strapi-admin';\nimport { Button, Field, Flex, Grid, Loader, Modal, Typography } from '@strapi/design-system';\nimport { Form, Formik, FormikErrors } from 'formik';\nimport isEmpty from 'lodash/isEmpty';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { useBulkRemove } from '../../hooks/useBulkRemove';\nimport { useEditFolder } from '../../hooks/useEditFolder';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { useMediaLibraryPermissions } from '../../hooks/useMediaLibraryPermissions';\nimport { useTracking } from '../../hooks/useTracking';\nimport { findRecursiveFolderByValue, getTrad, getAPIInnerErrors } from '../../utils';\nimport { ContextInfo } from '../ContextInfo/ContextInfo';\nimport { SelectTree } from '../SelectTree/SelectTree';\n\nimport { EditFolderModalHeader } from './ModalHeader/ModalHeader';\nimport { RemoveFolderDialog } from './RemoveFolderDialog';\n\nimport type { FolderDefinition } from '../../../../shared/contracts/folders';\nimport type { FetchError } from '@strapi/admin/strapi-admin';\n\nconst folderSchema = yup.object({\n  name: yup.string().required(),\n  parent: yup\n    .object({\n      label: yup.string(),\n      value: yup.number().nullable(true),\n    })\n    .nullable(true),\n});\n\ninterface ValuesSubmit {\n  name: string;\n  parent: null | { label?: string; value?: number };\n}\n\nexport interface EditFolderDialogProps {\n  parentFolderId?: string | number | null;\n  location?: string;\n  folder?: FolderDefinition;\n  open?: boolean;\n  onClose: (payload?: { created?: boolean | undefined } | boolean) => void;\n}\n\nexport const EditFolderContent = ({\n  onClose,\n  folder,\n  location,\n  parentFolderId,\n}: EditFolderDialogProps) => {\n  const { data: folderStructure, isLoading: folderStructureIsLoading } = useFolderStructure({\n    enabled: true,\n  });\n  const { canCreate, isLoading: isLoadingPermissions, canUpdate } = useMediaLibraryPermissions();\n  const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n  const { formatMessage, formatDate } = useIntl();\n  const { trackUsage } = useTracking();\n  const { editFolder, isLoading: isEditFolderLoading } = useEditFolder();\n  const { remove } = useBulkRemove();\n  const { toggleNotification } = useNotification();\n  const isLoading = isLoadingPermissions || folderStructureIsLoading;\n  const isEditing = !!folder;\n  const formDisabled = (folder && !canUpdate) || (!folder && !canCreate);\n  const initialFormData: ValuesSubmit = !folderStructureIsLoading\n    ? {\n        name: folder?.name ?? '',\n        parent: {\n          /* ideally we would use folderStructure[0].value, but since it is null\n         react complains about rendering null as field value */\n          value: parentFolderId ? parseInt(parentFolderId.toString(), 10) : undefined,\n          label: parentFolderId\n            ? folderStructure &&\n              findRecursiveFolderByValue(folderStructure, parseInt(parentFolderId.toString(), 10))\n                ?.label\n            : folderStructure?.[0].label,\n        },\n      }\n    : {\n        name: '',\n        parent: null,\n      };\n\n  const formRef = React.useRef<HTMLFormElement>(null);\n\n  const handleKeyDown =\n    (handleSubmit: (event: React.FormEvent<HTMLFormElement>) => void) =>\n    (event: React.KeyboardEvent<HTMLFormElement>) => {\n      if (event.key === 'Enter') {\n        if (event.target instanceof HTMLInputElement) {\n          handleSubmit(event);\n          event.preventDefault();\n        }\n      }\n    };\n\n  const handleSubmit = async (\n    values: ValuesSubmit,\n    { setErrors }: { setErrors: (errors: FormikErrors<ValuesSubmit>) => void }\n  ) => {\n    try {\n      await editFolder(\n        {\n          ...values,\n          parent: values.parent?.value ?? null,\n        },\n        folder?.id\n      );\n\n      toggleNotification({\n        type: 'success',\n        message: isEditing\n          ? formatMessage({\n              id: getTrad('modal.folder-notification-edited-success'),\n              defaultMessage: 'Folder successfully edited',\n            })\n          : formatMessage({\n              id: getTrad('modal.folder-notification-created-success'),\n              defaultMessage: 'Folder successfully created',\n            }),\n      });\n\n      if (isEditing) {\n        const didChangeLocation = parentFolderId\n          ? parseInt(parentFolderId.toString(), 10) !== values.parent?.value\n          : parentFolderId === null && !!values.parent?.value;\n        trackUsage('didEditMediaLibraryElements', {\n          location,\n          type: 'folder',\n          changeLocation: didChangeLocation,\n        });\n      } else {\n        trackUsage('didAddMediaLibraryFolders', { location: location! });\n      }\n\n      onClose({ created: true });\n    } catch (err) {\n      const errors = getAPIInnerErrors(err as FetchError, { getTrad });\n      const formikErrors = Object.entries(errors!).reduce(\n        (acc: Record<string, string>, [key, error]) => {\n          acc[key] = error.defaultMessage;\n\n          return acc;\n        },\n        {}\n      );\n\n      if (!isEmpty(formikErrors)) {\n        setErrors(formikErrors);\n      }\n    }\n  };\n\n  const handleDelete = async () => {\n    if (folder) {\n      await remove([folder]);\n    }\n\n    setShowConfirmDialog(false);\n    onClose();\n  };\n\n  if (isLoading) {\n    return (\n      <>\n        <EditFolderModalHeader isEditing={isEditing} />\n        <Modal.Body>\n          <Flex justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n            <Loader>\n              {formatMessage({\n                id: getTrad('content.isLoading'),\n                defaultMessage: 'Content is loading.',\n              })}\n            </Loader>\n          </Flex>\n        </Modal.Body>\n      </>\n    );\n  }\n\n  return (\n    <>\n      <Formik\n        validationSchema={folderSchema}\n        validateOnChange={false}\n        onSubmit={handleSubmit}\n        initialValues={initialFormData}\n      >\n        {({ values, errors, handleChange, setFieldValue, handleSubmit }) => (\n          <Form noValidate ref={formRef} onKeyDown={handleKeyDown(handleSubmit)}>\n            <EditFolderModalHeader isEditing={isEditing} />\n            <Modal.Body>\n              <Grid.Root gap={4}>\n                {isEditing && (\n                  <Grid.Item xs={12} col={12} direction=\"column\" alignItems=\"stretch\">\n                    <ContextInfo\n                      blocks={[\n                        {\n                          label: formatMessage({\n                            id: getTrad('modal.folder.create.elements'),\n                            defaultMessage: 'Elements',\n                          }),\n                          value: formatMessage(\n                            {\n                              id: getTrad('modal.folder.elements.count'),\n                              defaultMessage: '{folderCount} folders, {assetCount} assets',\n                            },\n                            {\n                              assetCount: folder?.files?.count ?? 0,\n                              folderCount: folder?.children?.count ?? 0,\n                            }\n                          ),\n                        },\n\n                        {\n                          label: formatMessage({\n                            id: getTrad('modal.folder.create.creation-date'),\n                            defaultMessage: 'Creation Date',\n                          }),\n                          value: formatDate(new Date(folder.createdAt!)),\n                        },\n                      ]}\n                    />\n                  </Grid.Item>\n                )}\n\n                <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n                  <Field.Root\n                    name=\"name\"\n                    error={typeof errors.name === 'string' ? errors.name : undefined}\n                  >\n                    <Field.Label>\n                      {formatMessage({\n                        id: getTrad('form.input.label.folder-name'),\n                        defaultMessage: 'Name',\n                      })}\n                    </Field.Label>\n                    <Field.Input\n                      value={values.name}\n                      onChange={handleChange}\n                      disabled={formDisabled}\n                    />\n                    <Field.Error />\n                  </Field.Root>\n                </Grid.Item>\n\n                <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n                  <Field.Root id=\"folder-parent\">\n                    <Field.Label>\n                      {formatMessage({\n                        id: getTrad('form.input.label.folder-location'),\n                        defaultMessage: 'Location',\n                      })}\n                    </Field.Label>\n\n                    <SelectTree\n                      options={folderStructure!}\n                      onChange={(value) => {\n                        setFieldValue('parent', value);\n                      }}\n                      isDisabled={formDisabled}\n                      defaultValue={values.parent!}\n                      name=\"parent\"\n                      menuPortalTarget={document.querySelector('body')}\n                      inputId=\"folder-parent\"\n                      disabled={formDisabled}\n                      error={typeof errors.parent === 'string' ? errors.parent : undefined}\n                      ariaErrorMessage=\"folder-parent-error\"\n                    />\n\n                    {errors.parent && (\n                      <Typography\n                        variant=\"pi\"\n                        tag=\"p\"\n                        id=\"folder-parent-error\"\n                        textColor=\"danger600\"\n                      >\n                        {typeof errors.parent === 'string' ? errors.parent : undefined}\n                      </Typography>\n                    )}\n                  </Field.Root>\n                </Grid.Item>\n              </Grid.Root>\n            </Modal.Body>\n            <Modal.Footer>\n              <Button onClick={() => onClose()} variant=\"tertiary\" name=\"cancel\">\n                {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n              </Button>\n              <Flex gap={2}>\n                {isEditing && canUpdate && (\n                  <Button\n                    type=\"button\"\n                    variant=\"danger-light\"\n                    onClick={() => setShowConfirmDialog(true)}\n                    name=\"delete\"\n                    disabled={!canUpdate || isEditFolderLoading}\n                  >\n                    {formatMessage({\n                      id: getTrad('modal.folder.create.delete'),\n                      defaultMessage: 'Delete folder',\n                    })}\n                  </Button>\n                )}\n\n                <Button\n                  name=\"submit\"\n                  loading={isEditFolderLoading}\n                  disabled={formDisabled}\n                  type=\"submit\"\n                >\n                  {formatMessage(\n                    isEditing\n                      ? { id: getTrad('modal.folder.edit.submit'), defaultMessage: 'Save' }\n                      : { id: getTrad('modal.folder.create.submit'), defaultMessage: 'Create' }\n                  )}\n                </Button>\n              </Flex>\n            </Modal.Footer>\n          </Form>\n        )}\n      </Formik>\n      <RemoveFolderDialog\n        open={showConfirmDialog}\n        onClose={() => setShowConfirmDialog(false)}\n        onConfirm={handleDelete}\n      />\n    </>\n  );\n};\n\nexport const EditFolderDialog = ({ open, onClose, ...restProps }: EditFolderDialogProps) => {\n  return (\n    <Modal.Root open={open} onOpenChange={onClose}>\n      <Modal.Content>\n        <EditFolderContent {...restProps} onClose={onClose} open={open} />\n      </Modal.Content>\n    </Modal.Root>\n  );\n};\n"],"names":["folderSchema","yup","object","name","string","required","parent","label","value","number","nullable","EditFolderContent","onClose","folder","location","parentFolderId","data","folderStructure","isLoading","folderStructureIsLoading","useFolderStructure","enabled","canCreate","isLoadingPermissions","canUpdate","useMediaLibraryPermissions","showConfirmDialog","setShowConfirmDialog","React","useState","formatMessage","formatDate","useIntl","trackUsage","useTracking","editFolder","isEditFolderLoading","useEditFolder","remove","useBulkRemove","toggleNotification","useNotification","isEditing","formDisabled","initialFormData","parseInt","toString","undefined","findRecursiveFolderByValue","formRef","useRef","handleKeyDown","handleSubmit","event","key","target","HTMLInputElement","preventDefault","values","setErrors","id","type","message","getTrad","defaultMessage","didChangeLocation","changeLocation","created","err","errors","getAPIInnerErrors","formikErrors","Object","entries","reduce","acc","error","isEmpty","handleDelete","_jsxs","_Fragment","_jsx","EditFolderModalHeader","Modal","Body","Flex","justifyContent","paddingTop","paddingBottom","Loader","Formik","validationSchema","validateOnChange","onSubmit","initialValues","handleChange","setFieldValue","Form","noValidate","ref","onKeyDown","Grid","Root","gap","Item","xs","col","direction","alignItems","ContextInfo","blocks","assetCount","files","count","folderCount","children","Date","createdAt","Field","Label","Input","onChange","disabled","Error","SelectTree","options","isDisabled","defaultValue","menuPortalTarget","document","querySelector","inputId","ariaErrorMessage","Typography","variant","tag","textColor","Footer","Button","onClick","loading","RemoveFolderDialog","open","onConfirm","EditFolderDialog","restProps","onOpenChange","Content"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,MAAMA,YAAAA,GAAeC,GAAAA,CAAIC,MAAM,CAAC;IAC9BC,IAAAA,EAAMF,GAAAA,CAAIG,MAAM,EAAA,CAAGC,QAAQ,EAAA;IAC3BC,MAAAA,EAAQL,GAAAA,CACLC,MAAM,CAAC;AACNK,QAAAA,KAAAA,EAAON,IAAIG,MAAM,EAAA;AACjBI,QAAAA,KAAAA,EAAOP,GAAAA,CAAIQ,MAAM,EAAA,CAAGC,QAAQ,CAAC,IAAA;AAC/B,KAAA,CAAA,CACCA,QAAQ,CAAC,IAAA;AACd,CAAA,CAAA;AAeO,MAAMC,iBAAAA,GAAoB,CAAC,EAChCC,OAAO,EACPC,MAAM,EACNC,QAAQ,EACRC,cAAc,EACQ,GAAA;IACtB,MAAM,EAAEC,MAAMC,eAAe,EAAEC,WAAWC,wBAAwB,EAAE,GAAGC,kBAAAA,CAAmB;QACxFC,OAAAA,EAAS;AACX,KAAA,CAAA;IACA,MAAM,EAAEC,SAAS,EAAEJ,SAAAA,EAAWK,oBAAoB,EAAEC,SAAS,EAAE,GAAGC,0BAAAA,EAAAA;AAClE,IAAA,MAAM,CAACC,iBAAAA,EAAmBC,oBAAAA,CAAqB,GAAGC,KAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AACjE,IAAA,MAAM,EAAEC,aAAa,EAAEC,UAAU,EAAE,GAAGC,OAAAA,EAAAA;IACtC,MAAM,EAAEC,UAAU,EAAE,GAAGC,WAAAA,EAAAA;AACvB,IAAA,MAAM,EAAEC,UAAU,EAAEjB,SAAAA,EAAWkB,mBAAmB,EAAE,GAAGC,aAAAA,EAAAA;IACvD,MAAM,EAAEC,MAAM,EAAE,GAAGC,aAAAA,EAAAA;IACnB,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,eAAAA,EAAAA;AAC/B,IAAA,MAAMvB,YAAYK,oBAAAA,IAAwBJ,wBAAAA;IAC1C,MAAMuB,SAAAA,GAAY,CAAC,CAAC7B,MAAAA;AACpB,IAAA,MAAM8B,eAAe,MAAC9B,IAAU,CAACW,SAAAA,IAAe,CAACX,UAAU,CAACS,SAAAA;IAC5D,MAAMsB,eAAAA,GAAgC,CAACzB,wBAAAA,GACnC;AACEhB,QAAAA,IAAAA,EAAMU,QAAQV,IAAAA,IAAQ,EAAA;QACtBG,MAAAA,EAAQ;AACN;AACmD,gEACnDE,OAAOO,cAAAA,GAAiB8B,QAAAA,CAAS9B,cAAAA,CAAe+B,QAAQ,IAAI,EAAA,CAAA,GAAMC,SAAAA;AAClExC,YAAAA,KAAAA,EAAOQ,cAAAA,GACHE,eAAAA,IACA+B,0BAAAA,CAA2B/B,eAAAA,EAAiB4B,QAAAA,CAAS9B,cAAAA,CAAe+B,QAAQ,EAAA,EAAI,EAAA,CAAA,CAAA,EAC5EvC,KAAAA,GACJU,eAAAA,GAAkB,EAAE,CAACV;AAC3B;KACF,GACA;QACEJ,IAAAA,EAAM,EAAA;QACNG,MAAAA,EAAQ;AACV,KAAA;IAEJ,MAAM2C,OAAAA,GAAUrB,KAAAA,CAAMsB,MAAM,CAAkB,IAAA,CAAA;IAE9C,MAAMC,aAAAA,GACJ,CAACC,YAAAA,GACD,CAACC,KAAAA,GAAAA;YACC,IAAIA,KAAAA,CAAMC,GAAG,KAAK,OAAA,EAAS;gBACzB,IAAID,KAAAA,CAAME,MAAM,YAAYC,gBAAAA,EAAkB;oBAC5CJ,YAAAA,CAAaC,KAAAA,CAAAA;AACbA,oBAAAA,KAAAA,CAAMI,cAAc,EAAA;AACtB,gBAAA;AACF,YAAA;AACF,QAAA,CAAA;AAEF,IAAA,MAAML,YAAAA,GAAe,OACnBM,MAAAA,EACA,EAAEC,SAAS,EAA+D,GAAA;QAE1E,IAAI;AACF,YAAA,MAAMxB,UAAAA,CACJ;AACE,gBAAA,GAAGuB,MAAM;gBACTpD,MAAAA,EAAQoD,MAAAA,CAAOpD,MAAM,EAAEE,KAAAA,IAAS;AAClC,aAAA,EACAK,MAAAA,EAAQ+C,EAAAA,CAAAA;YAGVpB,kBAAAA,CAAmB;gBACjBqB,IAAAA,EAAM,SAAA;AACNC,gBAAAA,OAAAA,EAASpB,YACLZ,aAAAA,CAAc;AACZ8B,oBAAAA,EAAAA,EAAIG,OAAAA,CAAQ,0CAAA,CAAA;oBACZC,cAAAA,EAAgB;AAClB,iBAAA,CAAA,GACAlC,aAAAA,CAAc;AACZ8B,oBAAAA,EAAAA,EAAIG,OAAAA,CAAQ,2CAAA,CAAA;oBACZC,cAAAA,EAAgB;AAClB,iBAAA;AACN,aAAA,CAAA;AAEA,YAAA,IAAItB,SAAAA,EAAW;AACb,gBAAA,MAAMuB,oBAAoBlD,cAAAA,GACtB8B,QAAAA,CAAS9B,cAAAA,CAAe+B,QAAQ,IAAI,EAAA,CAAA,KAAQY,MAAAA,CAAOpD,MAAM,EAAEE,QAC3DO,cAAAA,KAAmB,IAAA,IAAQ,CAAC,CAAC2C,MAAAA,CAAOpD,MAAM,EAAEE,KAAAA;AAChDyB,gBAAAA,UAAAA,CAAW,6BAAA,EAA+B;AACxCnB,oBAAAA,QAAAA;oBACA+C,IAAAA,EAAM,QAAA;oBACNK,cAAAA,EAAgBD;AAClB,iBAAA,CAAA;YACF,CAAA,MAAO;AACLhC,gBAAAA,UAAAA,CAAW,2BAAA,EAA6B;oBAAEnB,QAAAA,EAAUA;AAAU,iBAAA,CAAA;AAChE,YAAA;YAEAF,OAAAA,CAAQ;gBAAEuD,OAAAA,EAAS;AAAK,aAAA,CAAA;AAC1B,QAAA,CAAA,CAAE,OAAOC,GAAAA,EAAK;YACZ,MAAMC,MAAAA,GAASC,kBAAkBF,GAAAA,EAAmB;AAAEL,gBAAAA;AAAQ,aAAA,CAAA;YAC9D,MAAMQ,YAAAA,GAAeC,MAAAA,CAAOC,OAAO,CAACJ,MAAAA,CAAAA,CAASK,MAAM,CACjD,CAACC,GAAAA,EAA6B,CAACrB,GAAAA,EAAKsB,KAAAA,CAAM,GAAA;AACxCD,gBAAAA,GAAG,CAACrB,GAAAA,CAAI,GAAGsB,KAAAA,CAAMZ,cAAc;gBAE/B,OAAOW,GAAAA;AACT,YAAA,CAAA,EACA,EAAC,CAAA;YAGH,IAAI,CAACE,QAAQN,YAAAA,CAAAA,EAAe;gBAC1BZ,SAAAA,CAAUY,YAAAA,CAAAA;AACZ,YAAA;AACF,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMO,YAAAA,GAAe,UAAA;AACnB,QAAA,IAAIjE,MAAAA,EAAQ;AACV,YAAA,MAAMyB,MAAAA,CAAO;AAACzB,gBAAAA;AAAO,aAAA,CAAA;AACvB,QAAA;QAEAc,oBAAAA,CAAqB,KAAA,CAAA;AACrBf,QAAAA,OAAAA,EAAAA;AACF,IAAA,CAAA;AAEA,IAAA,IAAIM,SAAAA,EAAW;QACb,qBACE6D,IAAA,CAAAC,QAAA,EAAA;;8BACEC,GAAA,CAACC,qBAAAA,EAAAA;oBAAsBxC,SAAAA,EAAWA;;AAClC,8BAAAuC,GAAA,CAACE,MAAMC,IAAI,EAAA;AACT,oBAAA,QAAA,gBAAAH,GAAA,CAACI,IAAAA,EAAAA;wBAAKC,cAAAA,EAAe,QAAA;wBAASC,UAAAA,EAAY,CAAA;wBAAGC,aAAAA,EAAe,CAAA;AAC1D,wBAAA,QAAA,gBAAAP,GAAA,CAACQ,MAAAA,EAAAA;sCACE3D,aAAAA,CAAc;AACb8B,gCAAAA,EAAAA,EAAIG,OAAAA,CAAQ,mBAAA,CAAA;gCACZC,cAAAA,EAAgB;AAClB,6BAAA;;;;;;AAMZ,IAAA;IAEA,qBACEe,IAAA,CAAAC,QAAA,EAAA;;0BACEC,GAAA,CAACS,MAAAA,EAAAA;gBACCC,gBAAAA,EAAkB3F,YAAAA;gBAClB4F,gBAAAA,EAAkB,KAAA;gBAClBC,QAAAA,EAAUzC,YAAAA;gBACV0C,aAAAA,EAAelD,eAAAA;AAEd,gBAAA,QAAA,EAAA,CAAC,EAAEc,MAAM,EAAEW,MAAM,EAAE0B,YAAY,EAAEC,aAAa,EAAE5C,YAAY,EAAE,iBAC7D2B,IAAA,CAACkB,IAAAA,EAAAA;wBAAKC,UAAU,EAAA,IAAA;wBAACC,GAAAA,EAAKlD,OAAAA;AAASmD,wBAAAA,SAAAA,EAAWjD,aAAAA,CAAcC,YAAAA,CAAAA;;0CACtD6B,GAAA,CAACC,qBAAAA,EAAAA;gCAAsBxC,SAAAA,EAAWA;;AAClC,0CAAAuC,GAAA,CAACE,MAAMC,IAAI,EAAA;wDACTL,IAAA,CAACsB,KAAKC,IAAI,EAAA;oCAACC,GAAAA,EAAK,CAAA;;wCACb7D,SAAAA,kBACCuC,GAAA,CAACoB,KAAKG,IAAI,EAAA;4CAACC,EAAAA,EAAI,EAAA;4CAAIC,GAAAA,EAAK,EAAA;4CAAIC,SAAAA,EAAU,QAAA;4CAASC,UAAAA,EAAW,SAAA;AACxD,4CAAA,QAAA,gBAAA3B,GAAA,CAAC4B,WAAAA,EAAAA;gDACCC,MAAAA,EAAQ;AACN,oDAAA;AACEvG,wDAAAA,KAAAA,EAAOuB,aAAAA,CAAc;AACnB8B,4DAAAA,EAAAA,EAAIG,OAAAA,CAAQ,8BAAA,CAAA;4DACZC,cAAAA,EAAgB;AAClB,yDAAA,CAAA;AACAxD,wDAAAA,KAAAA,EAAOsB,aAAAA,CACL;AACE8B,4DAAAA,EAAAA,EAAIG,OAAAA,CAAQ,6BAAA,CAAA;4DACZC,cAAAA,EAAgB;yDAClB,EACA;4DACE+C,UAAAA,EAAYlG,MAAAA,EAAQmG,OAAOC,KAAAA,IAAS,CAAA;4DACpCC,WAAAA,EAAarG,MAAAA,EAAQsG,UAAUF,KAAAA,IAAS;AAC1C,yDAAA;AAEJ,qDAAA;AAEA,oDAAA;AACE1G,wDAAAA,KAAAA,EAAOuB,aAAAA,CAAc;AACnB8B,4DAAAA,EAAAA,EAAIG,OAAAA,CAAQ,mCAAA,CAAA;4DACZC,cAAAA,EAAgB;AAClB,yDAAA,CAAA;AACAxD,wDAAAA,KAAAA,EAAOuB,UAAAA,CAAW,IAAIqF,IAAAA,CAAKvG,MAAAA,CAAOwG,SAAS,CAAA;AAC7C;AACD;;;AAKP,sDAAApC,GAAA,CAACoB,KAAKG,IAAI,EAAA;4CAACC,EAAAA,EAAI,EAAA;4CAAIC,GAAAA,EAAK,CAAA;4CAAGC,SAAAA,EAAU,QAAA;4CAASC,UAAAA,EAAW,SAAA;oEACvD7B,IAAA,CAACuC,MAAMhB,IAAI,EAAA;gDACTnG,IAAAA,EAAK,MAAA;AACLyE,gDAAAA,KAAAA,EAAO,OAAOP,MAAAA,CAAOlE,IAAI,KAAK,QAAA,GAAWkE,MAAAA,CAAOlE,IAAI,GAAG4C,SAAAA;;AAEvD,kEAAAkC,GAAA,CAACqC,MAAMC,KAAK,EAAA;kEACTzF,aAAAA,CAAc;AACb8B,4DAAAA,EAAAA,EAAIG,OAAAA,CAAQ,8BAAA,CAAA;4DACZC,cAAAA,EAAgB;AAClB,yDAAA;;AAEF,kEAAAiB,GAAA,CAACqC,MAAME,KAAK,EAAA;AACVhH,wDAAAA,KAAAA,EAAOkD,OAAOvD,IAAI;wDAClBsH,QAAAA,EAAU1B,YAAAA;wDACV2B,QAAAA,EAAU/E;;AAEZ,kEAAAsC,GAAA,CAACqC,MAAMK,KAAK,EAAA,EAAA;;;;AAIhB,sDAAA1C,GAAA,CAACoB,KAAKG,IAAI,EAAA;4CAACC,EAAAA,EAAI,EAAA;4CAAIC,GAAAA,EAAK,CAAA;4CAAGC,SAAAA,EAAU,QAAA;4CAASC,UAAAA,EAAW,SAAA;oEACvD7B,IAAA,CAACuC,MAAMhB,IAAI,EAAA;gDAAC1C,EAAAA,EAAG,eAAA;;AACb,kEAAAqB,GAAA,CAACqC,MAAMC,KAAK,EAAA;kEACTzF,aAAAA,CAAc;AACb8B,4DAAAA,EAAAA,EAAIG,OAAAA,CAAQ,kCAAA,CAAA;4DACZC,cAAAA,EAAgB;AAClB,yDAAA;;kEAGFiB,GAAA,CAAC2C,UAAAA,EAAAA;wDACCC,OAAAA,EAAS5G,eAAAA;AACTwG,wDAAAA,QAAAA,EAAU,CAACjH,KAAAA,GAAAA;AACTwF,4DAAAA,aAAAA,CAAc,QAAA,EAAUxF,KAAAA,CAAAA;AAC1B,wDAAA,CAAA;wDACAsH,UAAAA,EAAYnF,YAAAA;AACZoF,wDAAAA,YAAAA,EAAcrE,OAAOpD,MAAM;wDAC3BH,IAAAA,EAAK,QAAA;wDACL6H,gBAAAA,EAAkBC,QAAAA,CAASC,aAAa,CAAC,MAAA,CAAA;wDACzCC,OAAAA,EAAQ,eAAA;wDACRT,QAAAA,EAAU/E,YAAAA;AACViC,wDAAAA,KAAAA,EAAO,OAAOP,MAAAA,CAAO/D,MAAM,KAAK,QAAA,GAAW+D,MAAAA,CAAO/D,MAAM,GAAGyC,SAAAA;wDAC3DqF,gBAAAA,EAAiB;;oDAGlB/D,MAAAA,CAAO/D,MAAM,kBACZ2E,GAAA,CAACoD,UAAAA,EAAAA;wDACCC,OAAAA,EAAQ,IAAA;wDACRC,GAAAA,EAAI,GAAA;wDACJ3E,EAAAA,EAAG,qBAAA;wDACH4E,SAAAA,EAAU,WAAA;AAET,wDAAA,QAAA,EAAA,OAAOnE,OAAO/D,MAAM,KAAK,QAAA,GAAW+D,MAAAA,CAAO/D,MAAM,GAAGyC;;;;;;;;AAOjE,0CAAAgC,IAAA,CAACI,MAAMsD,MAAM,EAAA;;kDACXxD,GAAA,CAACyD,MAAAA,EAAAA;AAAOC,wCAAAA,OAAAA,EAAS,IAAM/H,OAAAA,EAAAA;wCAAW0H,OAAAA,EAAQ,UAAA;wCAAWnI,IAAAA,EAAK,QAAA;kDACvD2B,aAAAA,CAAc;4CAAE8B,EAAAA,EAAI,QAAA;4CAAUI,cAAAA,EAAgB;AAAS,yCAAA;;kDAE1De,IAAA,CAACM,IAAAA,EAAAA;wCAAKkB,GAAAA,EAAK,CAAA;;AACR7D,4CAAAA,SAAAA,IAAalB,2BACZyD,GAAA,CAACyD,MAAAA,EAAAA;gDACC7E,IAAAA,EAAK,QAAA;gDACLyE,OAAAA,EAAQ,cAAA;AACRK,gDAAAA,OAAAA,EAAS,IAAMhH,oBAAAA,CAAqB,IAAA,CAAA;gDACpCxB,IAAAA,EAAK,QAAA;AACLuH,gDAAAA,QAAAA,EAAU,CAAClG,SAAAA,IAAaY,mBAAAA;0DAEvBN,aAAAA,CAAc;AACb8B,oDAAAA,EAAAA,EAAIG,OAAAA,CAAQ,4BAAA,CAAA;oDACZC,cAAAA,EAAgB;AAClB,iDAAA;;0DAIJiB,GAAA,CAACyD,MAAAA,EAAAA;gDACCvI,IAAAA,EAAK,QAAA;gDACLyI,OAAAA,EAASxG,mBAAAA;gDACTsF,QAAAA,EAAU/E,YAAAA;gDACVkB,IAAAA,EAAK,QAAA;AAEJ/B,gDAAAA,QAAAA,EAAAA,aAAAA,CACCY,SAAAA,GACI;AAAEkB,oDAAAA,EAAAA,EAAIG,OAAAA,CAAQ,0BAAA,CAAA;oDAA6BC,cAAAA,EAAgB;iDAAO,GAClE;AAAEJ,oDAAAA,EAAAA,EAAIG,OAAAA,CAAQ,4BAAA,CAAA;oDAA+BC,cAAAA,EAAgB;AAAS,iDAAA;;;;;;;;;0BAQxFiB,GAAA,CAAC4D,kBAAAA,EAAAA;gBACCC,IAAAA,EAAMpH,iBAAAA;AACNd,gBAAAA,OAAAA,EAAS,IAAMe,oBAAAA,CAAqB,KAAA,CAAA;gBACpCoH,SAAAA,EAAWjE;;;;AAInB;AAEO,MAAMkE,mBAAmB,CAAC,EAAEF,IAAI,EAAElI,OAAO,EAAE,GAAGqI,SAAAA,EAAkC,GAAA;IACrF,qBACEhE,GAAA,CAACE,MAAMmB,IAAI,EAAA;QAACwC,IAAAA,EAAMA,IAAAA;QAAMI,YAAAA,EAActI,OAAAA;gCACpCqE,GAAA,CAACE,MAAMgE,OAAO,EAAA;AACZ,YAAA,QAAA,gBAAAlE,GAAA,CAACtE,iBAAAA,EAAAA;AAAmB,gBAAA,GAAGsI,SAAS;gBAAErI,OAAAA,EAASA,OAAAA;gBAASkI,IAAAA,EAAMA;;;;AAIlE;;;;"}