{"version":3,"file":"EditableMessageList.mjs","names":["editableMessageMessages","Flexbox"],"sources":["../../../src/chat/EditableMessageList/EditableMessageList.tsx"],"sourcesContent":["'use client';\n\nimport isEqual from 'fast-deep-equal';\nimport { Plus, Trash } from 'lucide-react';\nimport { memo, useEffect, useReducer } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport Button from '@/Button';\nimport ControlInput from '@/EditableText/ControlInput';\nimport { Flexbox } from '@/Flex';\nimport editableMessageMessages from '@/i18n/resources/en/editableMessage';\nimport { useTranslation } from '@/i18n/useTranslation';\nimport Select from '@/Select';\n\nimport { messagesReducer } from './messageReducer';\nimport { type EditableMessageListProps } from './type';\n\nconst EditableMessageList = memo<EditableMessageListProps>(\n  ({ disabled, dataSources, onChange, texts }) => {\n    const [chatMessages, dispatch] = useReducer(messagesReducer, dataSources);\n    const { t } = useTranslation(editableMessageMessages);\n\n    const addPropsText = texts?.addProps ?? t('editableMessage.addProps');\n    const deleteText = texts?.delete ?? t('editableMessage.delete');\n    const inputPlaceholderText = texts?.inputPlaceholder ?? t('editableMessage.inputPlaceholder');\n    const outputPlaceholderText =\n      texts?.outputPlaceholder ?? t('editableMessage.outputPlaceholder');\n    const systemText = texts?.system ?? t('editableMessage.system');\n    const inputText = texts?.input ?? t('editableMessage.input');\n    const outputText = texts?.output ?? t('editableMessage.output');\n\n    useEffect(() => {\n      if (!isEqual(dataSources, chatMessages)) {\n        onChange?.(chatMessages);\n      }\n    }, [chatMessages]);\n\n    return dataSources ? (\n      <Flexbox gap={12}>\n        {chatMessages.map((item, index) => (\n          <Flexbox\n            horizontal\n            align={'center'}\n            gap={8}\n            key={`${index}-${item.content}`}\n            width={'100%'}\n          >\n            <Select\n              disabled={disabled}\n              style={{ width: 120 }}\n              styles={{ popup: { root: { zIndex: 100 } } }}\n              value={item.role}\n              options={[\n                { label: systemText, value: 'system' },\n                { label: inputText, value: 'user' },\n                { label: outputText, value: 'assistant' },\n              ]}\n              onChange={(value) => {\n                dispatch({ index, role: value, type: 'updateMessageRole' });\n              }}\n            />\n            <ControlInput\n              disabled={disabled}\n              placeholder={item.role === 'user' ? inputPlaceholderText : outputPlaceholderText}\n              value={item.content}\n              onChange={(e) => {\n                dispatch({ index, message: e, type: 'updateMessage' });\n              }}\n            />\n            <ActionIcon\n              icon={Trash}\n              title={deleteText}\n              variant={'filled'}\n              onClick={() => {\n                dispatch({ index, type: 'deleteMessage' });\n              }}\n            />\n          </Flexbox>\n        ))}\n\n        <Button\n          block\n          disabled={disabled}\n          icon={Plus}\n          onClick={() => {\n            const lastMeg = chatMessages.at(-1);\n\n            dispatch({\n              message: { content: '', role: lastMeg?.role === 'user' ? 'assistant' : 'user' },\n              type: 'addMessage',\n            });\n          }}\n        >\n          {addPropsText}\n        </Button>\n      </Flexbox>\n    ) : undefined;\n  },\n  isEqual,\n);\n\nEditableMessageList.displayName = 'EditableMessageList';\n\nexport default EditableMessageList;\n"],"mappings":";;;;;;;;;;;;;;AAiBA,MAAM,sBAAsB,MACzB,EAAE,UAAU,aAAa,UAAU,YAAY;CAC9C,MAAM,CAAC,cAAc,YAAY,WAAW,iBAAiB,YAAY;CACzE,MAAM,EAAE,MAAM,eAAeA,wBAAwB;CAErD,MAAM,eAAe,OAAO,YAAY,EAAE,2BAA2B;CACrE,MAAM,aAAa,OAAO,UAAU,EAAE,yBAAyB;CAC/D,MAAM,uBAAuB,OAAO,oBAAoB,EAAE,mCAAmC;CAC7F,MAAM,wBACJ,OAAO,qBAAqB,EAAE,oCAAoC;CACpE,MAAM,aAAa,OAAO,UAAU,EAAE,yBAAyB;CAC/D,MAAM,YAAY,OAAO,SAAS,EAAE,wBAAwB;CAC5D,MAAM,aAAa,OAAO,UAAU,EAAE,yBAAyB;AAE/D,iBAAgB;AACd,MAAI,CAAC,QAAQ,aAAa,aAAa,CACrC,YAAW,aAAa;IAEzB,CAAC,aAAa,CAAC;AAElB,QAAO,cACL,qBAACC,mBAAD;EAAS,KAAK;YAAd,CACG,aAAa,KAAK,MAAM,UACvB,qBAACA,mBAAD;GACE,YAAA;GACA,OAAO;GACP,KAAK;GAEL,OAAO;aALT;IAOE,oBAAC,QAAD;KACY;KACV,OAAO,EAAE,OAAO,KAAK;KACrB,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,KAAK,EAAE,EAAE;KAC5C,OAAO,KAAK;KACZ,SAAS;MACP;OAAE,OAAO;OAAY,OAAO;OAAU;MACtC;OAAE,OAAO;OAAW,OAAO;OAAQ;MACnC;OAAE,OAAO;OAAY,OAAO;OAAa;MAC1C;KACD,WAAW,UAAU;AACnB,eAAS;OAAE;OAAO,MAAM;OAAO,MAAM;OAAqB,CAAC;;KAE7D,CAAA;IACF,oBAAC,cAAD;KACY;KACV,aAAa,KAAK,SAAS,SAAS,uBAAuB;KAC3D,OAAO,KAAK;KACZ,WAAW,MAAM;AACf,eAAS;OAAE;OAAO,SAAS;OAAG,MAAM;OAAiB,CAAC;;KAExD,CAAA;IACF,oBAAC,YAAD;KACE,MAAM;KACN,OAAO;KACP,SAAS;KACT,eAAe;AACb,eAAS;OAAE;OAAO,MAAM;OAAiB,CAAC;;KAE5C,CAAA;IACM;KAjCH,GAAG,MAAM,GAAG,KAAK,UAiCd,CACV,EAEF,oBAAC,QAAD;GACE,OAAA;GACU;GACV,MAAM;GACN,eAAe;AAGb,aAAS;KACP,SAAS;MAAE,SAAS;MAAI,MAHV,aAAa,GAAG,GAAG,EAGM,SAAS,SAAS,cAAc;MAAQ;KAC/E,MAAM;KACP,CAAC;;aAGH;GACM,CAAA,CACD;MACR,KAAA;GAEN,QACD;AAED,oBAAoB,cAAc"}