{"version":3,"file":"NotesScreen.mjs","names":["React","useCallback","useEffect","useMemo","useRef","useState","UdpRichTextField","makeStyles","TextField","LinearProgress","Field","Form","FluentTextFieldAutoComplete","useTranslation","useActionState","constructBusinessObjectArrFromTree","LayoutUnit","UdpEnums","useHandleAxiosSnackbar","useUser","differenceWith","executeQueryAdHoc","getBaseMethod","executeQueryWithParameters","ShortcutContentFinder","AmbientCard","useShellStore","getSearchObject","useStyles","root","row","display","justifyContent","input","height","padding","formTextInput","fontSize","labelRoot","NotesScreen","props","$","_c","formRef","onSubmit","shortcutContentFinderEnabled","id","viewOnly","reloadNotes","note","setNote","t0","Symbol","for","typeOptions","setTypeOptions","t1","templateOptions","setTemplateOptions","noteId","setNoteId","t2","existingNoteFiledFor","setExistingNoteFiledFor","existingNoteObj","setExistingNoteObj","loading","setLoading","classes","t","actionState","shellHidden","_temp","menuListState","catalogPromotedEntities","handleSuccessSnackbar","handleErrorSnackbar","user","editorRef","t3","bb0","menuList","length","selectedMenuIndex","selectedMenu","t4","Udp_Note","noteGetFullApiMethod","t5","Udp_Note_Type","noteTypeSearchApiMethod","t6","Udp_Note_Template","noteTemplateSearchApiMethod","t7","createNoteApiMethod","t8","updateNoteApiMethod","t9","Udp_Note_Filed_For","createNoteFiledForApiMethod","t10","deleteNoteFiledForApiMethod","disabled","t11","currentTenantId","familyName","firstName","values","response","data","requestBody","tenantId","typeCode","type","code","subject","content","unityUserId","userDisplayName","apiMethodId","catch","e","defaultValue","e_0","status","handleSaveNote","noteFiledForToComparator","_temp2","t12","values_0","notedIdToFileFor","noteFiledForToDelete","fileTo","noteFiledForToCreate","deletedPromises","forEach","nftd","data_0","value","push","Promise","all","map","_temp4","then","responses","console","warn","createdPromises","nftc","data_1","entityBusinessKey","_temp6","responses_0","response_0","matchingNoteFiledFor","find","nftc_0","handleNoteFiledFor","t13","values_1","notedIdToFileFor_0","handleOnSubmit","t14","note_0","handleTextEditorChange","t15","current","form","change","option","onTemplateChange","t16","shortcutContent","insertTextAtCursor","handleShortcutOnSelect","t17","options","t18","fileToOptions","getTypeOptions","options_0","filterElements","searchObject","data_2","typesResponse","pageList","t19","t20","getTemplateOptions","options_1","filterElements_0","searchObject_0","data_3","templatesResponse","t21","t22","t23","getExistingNote","existingNoteObj_0","data_4","noteResponse","e_3","error","t24","t25","initialFileTos","filter","option_0","noteFiledFor","nff","t26","t27","initialType","option_1","t28","t29","t30","t31","t32","t33","t34","t35","t36","t37","width","t38","t39","t40","t41","marginLeft","t42","t43","t44","t45","t46","t47","t48","t49","t50","t51","t52","event","target","t53","t54","t55","t56","t57","state","nftc1","nftc2","_temp3","e_1","p","_temp5","e_2","p_0"],"sources":["../../src/notes/NotesScreen.jsx"],"sourcesContent":["import React, {\n  useCallback,\n  useEffect,\n  useMemo,\n  useRef,\n  useState\n} from 'react';\nimport { UdpRichTextField } from '../UI/fluent-web-components/UdpRichTextField';\nimport { makeStyles, TextField, LinearProgress } from '@material-ui/core';\nimport { Field, Form } from '../utilities/form';\nimport { FluentTextFieldAutoComplete } from '../UI/inputs/textField/FluentTextFieldAutoComplete';\nimport { useTranslation } from 'react-i18next';\nimport { useActionState } from '../hooks/useActions';\nimport { constructBusinessObjectArrFromTree } from '../utilities/tree/TreeUtilities';\nimport { LayoutUnit } from '../layout/LayoutUnit';\nimport { UdpEnums } from '../enums/unitySystemEnums';\nimport { useHandleAxiosSnackbar } from '../utilities/apiHelpers';\nimport { useUser } from '../utilities/auth/useUser';\nimport { differenceWith } from 'lodash-es';\nimport {\n  executeQueryAdHoc,\n  getBaseMethod,\n  executeQueryWithParameters\n} from '../udp/utilities/methodUtils';\nimport { ShortcutContentFinder } from '../udp/ShortcutContent/ShortcutContentFinder';\nimport { AmbientCard } from '../UI/surfaces/cards/AmbientCard';\nimport { useShellStore } from '../stores/shellStore';\nimport { getSearchObject } from '../utilities/search/SearchUtilities';\n\nconst useStyles = makeStyles(() => ({\n  root: {},\n  row: {\n    display: 'flex',\n    justifyContent: 'space-between'\n  },\n  input: {\n    height: 34,\n    padding: 0\n  },\n  formTextInput: {\n    fontSize: 14\n  },\n  labelRoot: {\n    fontSize: 14\n  }\n}));\n\nexport const NotesScreen = (props) => {\n  const {\n    formRef,\n    onSubmit,\n    shortcutContentFinderEnabled,\n    id,\n    viewOnly,\n    reloadNotes\n  } = props;\n  const [note, setNote] = useState('');\n  const [typeOptions, setTypeOptions] = useState([]);\n  const [templateOptions, setTemplateOptions] = useState([]);\n  const [noteId, setNoteId] = useState(id || '');\n  const [existingNoteFiledFor, setExistingNoteFiledFor] = useState([]);\n  const [existingNoteObj, setExistingNoteObj] = useState(null);\n  const [loading, setLoading] = useState(false);\n  const classes = useStyles(props);\n  const { t } = useTranslation();\n  const actionState = useActionState();\n  const shellHidden = useShellStore((state) => state.shellHidden);\n  const { menuListState, catalogPromotedEntities } = actionState;\n  const { handleSuccessSnackbar, handleErrorSnackbar } =\n    useHandleAxiosSnackbar();\n  const user = useUser();\n  const editorRef = useRef(null);\n\n  const selectedMenu = useMemo(() => {\n    if (menuListState.menuList.length) {\n      return menuListState.menuList[menuListState.selectedMenuIndex] || null;\n    }\n    return null;\n  }, [menuListState]);\n\n  const noteGetFullApiMethod = useMemo(() => {\n    return getBaseMethod(\n      UdpEnums.Udp_Note,\n      'unityBaseGetFullMethod',\n      catalogPromotedEntities\n    );\n  }, [catalogPromotedEntities]);\n\n  const noteTypeSearchApiMethod = useMemo(() => {\n    return getBaseMethod(\n      UdpEnums.Udp_Note_Type,\n      'unityBaseSearchMethod',\n      catalogPromotedEntities\n    );\n  }, [catalogPromotedEntities]);\n\n  const noteTemplateSearchApiMethod = useMemo(() => {\n    return getBaseMethod(\n      UdpEnums.Udp_Note_Template,\n      'unityBaseSearchMethod',\n      catalogPromotedEntities\n    );\n  }, [catalogPromotedEntities]);\n\n  const createNoteApiMethod = useMemo(() => {\n    return getBaseMethod(\n      UdpEnums.Udp_Note,\n      'unityBaseCreateMethod',\n      catalogPromotedEntities\n    );\n  }, [catalogPromotedEntities]);\n\n  const updateNoteApiMethod = useMemo(() => {\n    return getBaseMethod(\n      UdpEnums.Udp_Note,\n      'unityBaseUpdateMethod',\n      catalogPromotedEntities\n    );\n  }, [catalogPromotedEntities]);\n\n  const createNoteFiledForApiMethod = useMemo(() => {\n    return getBaseMethod(\n      UdpEnums.Udp_Note_Filed_For,\n      'unityBaseCreateMethod',\n      catalogPromotedEntities\n    );\n  }, [catalogPromotedEntities]);\n\n  const deleteNoteFiledForApiMethod = useMemo(() => {\n    return getBaseMethod(\n      UdpEnums.Udp_Note_Filed_For,\n      'unityBaseDeleteMethod',\n      catalogPromotedEntities\n    );\n  }, [catalogPromotedEntities]);\n\n  const disabled = useMemo(() => {\n    return viewOnly;\n  }, [viewOnly]);\n\n  const handleSaveNote = useCallback(\n    async (values) => {\n      let response = null;\n      const data = {\n        requestBody: {\n          tenantId: user?.currentTenantId,\n          typeCode: values?.type?.code,\n          subject: values?.subject,\n          content: values?.note,\n          unityUserId: user?.id,\n          userDisplayName: `${user?.firstName} ${user?.familyName}`\n        }\n      };\n      if (noteId) {\n        if (updateNoteApiMethod) {\n          // Set the url parameter for updating note\n          data['{iD}'] = noteId;\n          response = await executeQueryWithParameters(\n            { data },\n            updateNoteApiMethod.apiMethodId\n          ).catch((e) =>\n            handleErrorSnackbar(\n              e,\n              t('notes.errors.updateFailed', {\n                defaultValue: 'Could not Update Note'\n              })\n            )\n          );\n        } else {\n          handleErrorSnackbar(\n            null,\n            t('notes.errors.updateMethodNotPromoted', {\n              defaultValue: 'Update Note Method Not Promoted'\n            })\n          );\n        }\n      } else {\n        if (createNoteApiMethod) {\n          response = await executeQueryWithParameters(\n            { data },\n            createNoteApiMethod.apiMethodId\n          ).catch((e) =>\n            handleErrorSnackbar(\n              e,\n              t('notes.errors.saveFailed', {\n                defaultValue: 'Could not Save Note'\n              })\n            )\n          );\n        } else {\n          handleErrorSnackbar(\n            null,\n            t('notes.errors.createMethodNotPromoted', {\n              defaultValue: 'Create Note Method Not Promoted'\n            })\n          );\n        }\n      }\n\n      if (response?.status === 200) {\n        if (!noteId) {\n          setNoteId(response.data.id || '');\n          handleSuccessSnackbar(\n            t('notes.snackbar.saved', { defaultValue: 'Note Saved' })\n          );\n        } else {\n          handleSuccessSnackbar(\n            t('notes.snackbar.updated', { defaultValue: 'Note Updated' })\n          );\n        }\n        if (reloadNotes) {\n          reloadNotes();\n        }\n        return response.data.id || noteId;\n      }\n\n      return noteId;\n    },\n    [\n      createNoteApiMethod,\n      updateNoteApiMethod,\n      noteId,\n      setNoteId,\n      handleErrorSnackbar,\n      handleSuccessSnackbar,\n      user,\n      reloadNotes,\n      t\n    ]\n  );\n\n  const noteFiledForToComparator = (nftc1, nftc2) => {\n    return nftc1?.value === nftc2?.value;\n  };\n\n  const handleNoteFiledFor = useCallback(\n    async (values, notedIdToFileFor) => {\n      // Get the noteFiledFor objects to delete\n      const noteFiledForToDelete = differenceWith(\n        existingNoteFiledFor,\n        values?.fileTo,\n        noteFiledForToComparator\n      );\n\n      // Get the noteFiledFor objects to create\n      const noteFiledForToCreate = differenceWith(\n        values?.fileTo,\n        existingNoteFiledFor,\n        noteFiledForToComparator\n      );\n\n      if (notedIdToFileFor) {\n        if (deleteNoteFiledForApiMethod) {\n          const deletedPromises = [];\n          noteFiledForToDelete.forEach((nftd) => {\n            const data = {};\n            data['{noteID}'] = notedIdToFileFor;\n            data['{entityBusinessKey}'] = nftd.value;\n            deletedPromises.push(\n              executeQueryWithParameters(\n                { data },\n                deleteNoteFiledForApiMethod.apiMethodId\n              )\n            );\n          });\n\n          await Promise.all(deletedPromises.map((p) => p.catch((e) => e))).then(\n            (responses) => {\n              if (responses.length !== deletedPromises.length) {\n                console.warn(`Not all Note Filed For deleted`);\n              }\n            }\n          );\n        } else {\n          handleErrorSnackbar(\n            null,\n            t('notes.errors.deleteFiledForMethodNotPromoted', {\n              defaultValue: 'Delete Note Filed For Method Not Promoted'\n            })\n          );\n        }\n\n        if (createNoteFiledForApiMethod) {\n          const createdPromises = [];\n          noteFiledForToCreate.forEach((nftc) => {\n            const data = {\n              requestBody: {\n                noteId: notedIdToFileFor,\n                entityBusinessKey: nftc.value\n              }\n            };\n            createdPromises.push(\n              executeQueryWithParameters(\n                { data },\n                createNoteFiledForApiMethod.apiMethodId\n              )\n            );\n          });\n          await Promise.all(createdPromises.map((p) => p.catch((e) => e))).then(\n            (responses) => {\n              responses.forEach((response) => {\n                if (response.status === 200) {\n                  const entityBusinessKey = response.data.entityBusinessKey;\n                  const matchingNoteFiledFor = noteFiledForToCreate.find(\n                    (nftc) => nftc.value === entityBusinessKey\n                  );\n                  if (!matchingNoteFiledFor) {\n                    console.warn(\n                      `Note Filed For not created for all file to entities`\n                    );\n                  }\n                }\n              });\n            }\n          );\n          setExistingNoteFiledFor(values?.fileTo);\n        } else {\n          handleErrorSnackbar(\n            null,\n            t('notes.errors.createFiledForMethodNotPromoted', {\n              defaultValue: 'Create Note Filed For Method Not Promoted'\n            })\n          );\n        }\n      }\n    },\n    [\n      createNoteFiledForApiMethod,\n      deleteNoteFiledForApiMethod,\n      handleErrorSnackbar,\n      existingNoteFiledFor,\n      setExistingNoteFiledFor,\n      t\n    ]\n  );\n\n  const handleOnSubmit = useCallback(\n    async (values) => {\n      if (onSubmit) {\n        onSubmit({ note, ...values });\n      } else {\n        const notedIdToFileFor = await handleSaveNote({ note, ...values });\n        await handleNoteFiledFor({ note, ...values }, notedIdToFileFor);\n      }\n    },\n    [note, onSubmit, handleSaveNote, handleNoteFiledFor]\n  );\n\n  const handleTextEditorChange = (note) => {\n    setNote(note);\n  };\n\n  const onTemplateChange = useCallback(\n    (value) => {\n      formRef?.current?.form?.change('subject', value?.subject || '');\n      const type = typeOptions.find((option) => option.code === value.typeCode);\n      formRef?.current?.form?.change('type', type || null);\n      setNote(value?.content || '');\n    },\n    [setNote, formRef, typeOptions]\n  );\n\n  const handleShortcutOnSelect = useCallback((shortcutContent) => {\n    // The editor emits its change event after the insert, which flows back through\n    // handleTextEditorChange — no manual state write is needed here.\n    void editorRef?.current?.insertTextAtCursor(shortcutContent);\n  }, []);\n\n  const fileToOptions = useMemo(() => {\n    let options = [];\n    if (selectedMenu) {\n      options = constructBusinessObjectArrFromTree(selectedMenu);\n    }\n    return options;\n  }, [selectedMenu]);\n\n  useEffect(() => {\n    // TODO: use getAll noteTypes\n    const getTypeOptions = async () => {\n      let options = [];\n      if (noteTypeSearchApiMethod) {\n        const filterElements = [];\n        const searchObject = getSearchObject(filterElements, 1, 200, true);\n        const data = { data: searchObject };\n        const typesResponse = await executeQueryAdHoc(\n          data,\n          noteTypeSearchApiMethod.apiMethodId\n        );\n        if (typesResponse?.status === 200) {\n          options = typesResponse.data?.pageList;\n        }\n      }\n      setTypeOptions(options);\n    };\n    getTypeOptions();\n  }, [noteTypeSearchApiMethod, setTypeOptions, user]);\n\n  useEffect(() => {\n    // TODO: use getAll noteTemplates\n    const getTemplateOptions = async () => {\n      let options = [];\n      if (noteTemplateSearchApiMethod) {\n        const filterElements = [];\n        const searchObject = getSearchObject(filterElements, 1, 200, true);\n        const data = { data: searchObject };\n        const templatesResponse = await executeQueryAdHoc(\n          data,\n          noteTemplateSearchApiMethod.apiMethodId\n        );\n        if (templatesResponse?.status === 200) {\n          options = templatesResponse.data?.pageList;\n        }\n      }\n      setTemplateOptions(options);\n    };\n    getTemplateOptions();\n  }, [noteTemplateSearchApiMethod, setTemplateOptions, user]);\n\n  useEffect(() => {\n    const getExistingNote = async () => {\n      let existingNoteObj = null;\n      const data = {};\n      if (noteGetFullApiMethod) {\n        setLoading(true);\n        data['{iD}'] = id;\n        const noteResponse = await executeQueryWithParameters(\n          { data },\n          noteGetFullApiMethod.apiMethodId\n        ).catch((e) => {\n          console.error(e);\n          setLoading(false);\n        });\n        if (noteResponse?.status === 200) {\n          existingNoteObj = noteResponse.data;\n        }\n      }\n      setExistingNoteObj(existingNoteObj);\n      setNote(existingNoteObj?.content);\n      setLoading(false);\n    };\n    if (id) {\n      getExistingNote();\n    }\n  }, [id, noteGetFullApiMethod]);\n\n  useEffect(() => {\n    if (!existingNoteObj || !fileToOptions?.length) {\n      return;\n    }\n    const initialFileTos = fileToOptions.filter((option) => {\n      return existingNoteObj.noteFiledFor.find(\n        (nff) => option.value === nff.entityBusinessKey\n      );\n    });\n    setExistingNoteFiledFor(initialFileTos);\n    formRef?.current?.form?.change('fileTo', initialFileTos);\n  }, [existingNoteObj, fileToOptions, formRef]);\n\n  useEffect(() => {\n    if (!existingNoteObj || !typeOptions?.length) {\n      return;\n    }\n    const initialType = typeOptions.find(\n      (option) => option.code === existingNoteObj.typeCode\n    );\n    formRef?.current?.form?.change('type', initialType || null);\n  }, [existingNoteObj, typeOptions, formRef]);\n\n  useEffect(() => {\n    if (!existingNoteObj) {\n      return;\n    }\n    formRef?.current?.form?.change('subject', existingNoteObj?.subject || '');\n  }, [existingNoteObj, formRef]);\n\n  return (\n    <div className={classes.root}>\n      {loading && <LinearProgress color='secondary' />}\n      <AmbientCard fullWidth={true} header={true}>\n        <Form onSubmit={handleOnSubmit} ref={formRef}>\n          <Field\n            component={FluentTextFieldAutoComplete}\n            label={t('notes.form.fileTo', { defaultValue: 'File To' })}\n            name='fileTo'\n            id='fileTo'\n            fullWidth\n            variant='outlined'\n            margin='dense'\n            size='small'\n            options={fileToOptions || []}\n            optionKey={'label'}\n            required={true}\n            limitTags={!viewOnly ? 2 : -1}\n            isMultiple={true}\n            disabled={disabled}\n          />\n          <div className={classes.row}>\n            <div style={{ width: '100%' }}>\n              <Field\n                component={FluentTextFieldAutoComplete}\n                label={t('notes.form.type', { defaultValue: 'Type' })}\n                name='type'\n                id='type'\n                fullWidth\n                variant='outlined'\n                margin='dense'\n                size='small'\n                options={typeOptions || []}\n                optionKey={'name'}\n                required={true}\n                disabled={disabled}\n              />\n            </div>\n            {!viewOnly && (\n              <div style={{ width: '100%', marginLeft: 8 }}>\n                <Field\n                  component={FluentTextFieldAutoComplete}\n                  label={t('notes.form.template', { defaultValue: 'Template' })}\n                  name='template'\n                  id='template'\n                  fullWidth\n                  variant='outlined'\n                  margin='dense'\n                  size='small'\n                  options={templateOptions || []}\n                  optionKey={'name'}\n                  additionalOnChangeAction={onTemplateChange}\n                />\n              </div>\n            )}\n          </div>\n          <Field\n            component={TextField}\n            label={t('notes.form.subject', { defaultValue: 'Subject' })}\n            name='subject'\n            id='subject'\n            fullWidth\n            variant='outlined'\n            size='small'\n            margin='dense'\n            required\n            disabled={disabled}\n            InputProps={{\n              classes: {\n                root: classes?.input,\n                input: classes?.formTextInput\n              }\n            }}\n            InputLabelProps={{\n              classes: {\n                root: classes?.labelRoot\n              }\n            }}\n          />\n          <LayoutUnit unit='nudge' />\n          <UdpRichTextField\n            ref={editorRef}\n            ariaLabel={t('notes.form.details', { defaultValue: 'Details' })}\n            value={note}\n            onChange={(event) => handleTextEditorChange(event.target.value)}\n            readonly={disabled}\n          />\n        </Form>\n      </AmbientCard>\n      <LayoutUnit unit='nudge' />\n      {shortcutContentFinderEnabled && (\n        <AmbientCard\n          fullWidth={true}\n          header={true}\n          lastChildBottomPadding={'0px'}\n          cardContentHeight={`calc(100vh - ${shellHidden ? '568px' : '623px'})`}\n        >\n          <ShortcutContentFinder onSelect={handleShortcutOnSelect} />\n        </AmbientCard>\n      )}\n    </div>\n  );\n};\n"],"mappings":"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"}