{"version":3,"file":"TransactionChangeLog.mjs","names":["React","useMemo","useState","useTranslation","ReactJsonView","Divider","UdpTabs","Typography","SYSTEM_ENTITY_PROPERTIES","VIEW_MODES","SUMMARY","RAW","KEYS_TO_IGNORE","SummaryView","t0","$","_c","changes","t","t1","defaultValue","t2","t3","t4","t5","t6","t7","t8","t9","item","field","previousValue","JSON","stringify","currentValue","map","RawView","oldData","newData","Symbol","for","TransactionChangeLog","viewMode","setViewMode","handleTabChange","event","newId","tabList","id","label","keys","Set","Object","differences","forEach","key","delete","oldValue","newValue","isDifferent","push"],"sources":["../../../../../../src/udp/pages/UdpTransactionsPage/components/transactionHistory/TransactionChangeLog.jsx"],"sourcesContent":["import React, { useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport ReactJsonView from '@microlink/react-json-view';\n\nimport { Divider, UdpTabs } from '../../../../../UI/index.ts';\nimport { Typography } from '../../../../../UI/dataDisplay/typography/index.ts';\nimport { SYSTEM_ENTITY_PROPERTIES } from '../../../../../utilities/entities/entityUtilities';\n\nimport './TransactionChangeLog.css';\n\nconst VIEW_MODES = {\n  SUMMARY: 'summary',\n  RAW: 'raw'\n};\n\nconst KEYS_TO_IGNORE = [\n  ...SYSTEM_ENTITY_PROPERTIES,\n  'id',\n  'rfirfiProjectContact',\n  'udpTags'\n];\n\nconst SummaryView = ({ changes, t }) => {\n  return (\n    <>\n      <div className='tcl__grid-primary-headers'>\n        <Typography variant='inherit'>\n          {t('transactions.history.field', { defaultValue: 'Field' })}\n        </Typography>\n        <Typography variant='inherit'>\n          {t('transactions.history.previous', { defaultValue: 'Previous' })}\n        </Typography>\n        <Typography variant='inherit'>\n          {t('transactions.history.current', { defaultValue: 'Current' })}\n        </Typography>\n      </div>\n\n      {changes.map((item) => (\n        <div key={item.field} className='tcl__row'>\n          <div className='tcl__grid-field'>\n            <span className='tcl__grid-mobile-label'>\n              <Typography variant='inherit'>\n                {t('transactions.history.field', { defaultValue: 'Field' })}:\n              </Typography>\n            </span>\n            <Typography variant='inherit'>{item.field}</Typography>\n          </div>\n\n          <div className='tcl__grid-old-value'>\n            <span className='tcl__grid-mobile-label'>\n              <Typography variant='inherit'>\n                {t('transactions.history.was', { defaultValue: 'Was' })}:\n              </Typography>\n            </span>\n            <Typography variant='inherit'>\n              {item.previousValue\n                ? JSON.stringify(item.previousValue)\n                : `(${t('transactions.history.empty', {\n                    defaultValue: 'Empty'\n                  })})`}\n            </Typography>\n          </div>\n\n          <div className='tcl__grid-new-value'>\n            <span className='tcl__grid-mobile-label'>\n              <Typography variant='inherit'>\n                {t('transactions.history.now', { defaultValue: 'Now' })}:\n              </Typography>\n            </span>\n            <Typography variant='inherit'>\n              {item.currentValue\n                ? JSON.stringify(item.currentValue)\n                : `(${t('transactions.history.empty', {\n                    defaultValue: 'Empty'\n                  })})`}\n            </Typography>\n          </div>\n        </div>\n      ))}\n    </>\n  );\n};\n\nconst RawView = ({ oldData, newData }) => {\n  const { t } = useTranslation();\n\n  return (\n    <>\n      <div className='tcl__raw-view'>\n        <ReactJsonView\n          name={t('transactions.history.previous', {\n            defaultValue: 'Previous'\n          })}\n          src={oldData}\n          displayDataTypes={false}\n        />\n      </div>\n\n      <Divider />\n\n      <div className='tcl__raw-view'>\n        <ReactJsonView\n          name={t('transactions.history.current', { defaultValue: 'Current' })}\n          src={newData}\n          displayDataTypes={false}\n        />\n      </div>\n    </>\n  );\n};\n\nexport const TransactionChangeLog = ({ oldData, newData }) => {\n  const [viewMode, setViewMode] = useState(VIEW_MODES.SUMMARY);\n\n  const { t } = useTranslation();\n\n  const handleTabChange = (event, newId) => {\n    setViewMode(newId);\n  };\n\n  const tabList = useMemo(\n    () => [\n      {\n        id: VIEW_MODES.SUMMARY,\n        label: t('transactions.history.summary', { defaultValue: 'Summary' })\n      },\n      {\n        id: VIEW_MODES.RAW,\n        label: t('transactions.history.rawJson', { defaultValue: 'Raw JSON' })\n      }\n    ],\n    [t]\n  );\n\n  oldData = oldData ?? {};\n\n  const changes = useMemo(() => {\n    const keys = new Set([...Object.keys(oldData), ...Object.keys(newData)]);\n    const differences = [];\n\n    KEYS_TO_IGNORE.forEach((key) => keys.delete(key));\n\n    keys.forEach((key) => {\n      const oldValue = oldData[key] ?? null;\n      const newValue = newData[key] ?? null;\n      const isDifferent = JSON.stringify(oldValue) !== JSON.stringify(newValue);\n\n      if (isDifferent) {\n        differences.push({\n          field: key,\n          previousValue: oldValue,\n          currentValue: newValue\n        });\n      }\n    });\n\n    return differences;\n  }, [oldData, newData]);\n\n  return (\n    <div className='tcl'>\n      <div className='tcl__header'>\n        <div className='tcl__title'>\n          <Typography variant='inherit'>\n            {t('transactions.history.changeLog', {\n              defaultValue: 'Change log'\n            })}\n          </Typography>\n        </div>\n        <UdpTabs\n          value={viewMode}\n          onChange={handleTabChange}\n          tabList={tabList}\n        />\n      </div>\n\n      {viewMode === VIEW_MODES.SUMMARY && (\n        <SummaryView changes={changes} t={t} />\n      )}\n\n      {viewMode === VIEW_MODES.RAW && (\n        <RawView oldData={oldData} newData={newData} />\n      )}\n    </div>\n  );\n};\n"],"mappings":"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"}