UNPKG

softchatjs-react

Version:
1 lines 5.05 kB
{"version":3,"sources":["../../../src/components/options-panel/options-panel.tsx","../../../src/components/text/text.tsx"],"sourcesContent":["import { Dispatch, SetStateAction, useEffect, useState } from \"react\";\r\nimport Avartar from \"../avartar/avartar\";\r\n\r\nimport styles from \"./options-panel.module.css\";\r\nimport Text from \"../text/text\";\r\nimport ChatClient, { Message } from \"softchatjs-core\";\r\n\r\ntype ConversationListProps = {\r\n message: Message;\r\n setEditDetails: Dispatch<\r\n SetStateAction<\r\n | { message: Message; isEditing?: boolean; isReplying?: boolean }\r\n | undefined\r\n >\r\n >;\r\n canEdit?: boolean;\r\n openEmojiPanel: () => void;\r\n optionsMenuRef: any;\r\n mousePosition: {\r\n x: number;\r\n y: number;\r\n };\r\n conversationId: string;\r\n client: ChatClient;\r\n closeOptionsMenu: () => void;\r\n textInputRef: any;\r\n};\r\n\r\nconst OptionsPanel = (props: ConversationListProps) => {\r\n const {\r\n setEditDetails,\r\n message,\r\n canEdit,\r\n openEmojiPanel,\r\n optionsMenuRef,\r\n mousePosition: position,\r\n client,\r\n conversationId,\r\n closeOptionsMenu,\r\n textInputRef,\r\n } = props;\r\n\r\n const options = [\r\n {\r\n title: \"Edit message\",\r\n onPress: () => {\r\n setEditDetails({\r\n message,\r\n isEditing: true,\r\n });\r\n closeOptionsMenu();\r\n },\r\n enabled: canEdit,\r\n },\r\n\r\n {\r\n title: \"Reply\",\r\n onPress: () => {\r\n setEditDetails({\r\n message,\r\n isReplying: true,\r\n });\r\n closeOptionsMenu();\r\n textInputRef.current?.focus();\r\n },\r\n enabled: true,\r\n },\r\n {\r\n title: \"Add reaction\",\r\n onPress: () => {\r\n openEmojiPanel();\r\n },\r\n enabled: true,\r\n },\r\n {\r\n title: \"Delete\",\r\n onPress: () => {\r\n const msClient = client.messageClient(conversationId);\r\n msClient.deleteMessage(message.messageId, message.to, conversationId);\r\n },\r\n enabled: canEdit,\r\n },\r\n ];\r\n\r\n return (\r\n <div ref={optionsMenuRef} className={`${styles.options}`}>\r\n <ul>\r\n {options.map((item, index) => {\r\n if (item.enabled) {\r\n return (\r\n <li key={index} onClick={item.onPress}>\r\n <Text size=\"sm\" text={item.title} />\r\n </li>\r\n );\r\n }\r\n })}\r\n </ul>\r\n </div>\r\n );\r\n};\r\n\r\nexport default OptionsPanel;\r\n","import React from \"react\";\r\nimport styles from \"./text.module.css\";\r\n\r\ntype TextProps = {\r\n text: string;\r\n styles?: React.CSSProperties | undefined;\r\n weight?: \"bold\" | \"medium\";\r\n size?: \"sm\" | \"md\" | \"xs\";\r\n};\r\n\r\nconst Text = (props: TextProps) => {\r\n const textWeight = {\r\n bold: styles.textBold,\r\n medium: `${styles.textMedium}`,\r\n };\r\n\r\n const textSize: any = {\r\n sm: styles.textSmall,\r\n md: styles.textSizeMd,\r\n xs: styles.textExtraSmall,\r\n };\r\n\r\n return (\r\n <p\r\n style={props.styles}\r\n className={`${styles.text} ${textWeight[props.weight || \"medium\"]} ${\r\n textSize[props.size || \"md\"]\r\n }`}\r\n >\r\n {props.text}\r\n </p>\r\n );\r\n};\r\n\r\nexport default Text;\r\n"],"mappings":"AAGA,OAAOA,MAAY,oCCFnB,OAAOC,MAAY,iCAsBf,cAAAC,MAAA,oBAbJ,IAAMC,EAAQC,GAAqB,CACjC,IAAMC,EAAa,CACjB,KAAMJ,EAAO,SACb,OAAQ,GAAGA,EAAO,UAAU,EAC9B,EAEMK,EAAgB,CACpB,GAAIL,EAAO,UACX,GAAIA,EAAO,WACX,GAAIA,EAAO,cACb,EAEA,OACEC,EAAC,KACC,MAAOE,EAAM,OACb,UAAW,GAAGH,EAAO,IAAI,IAAII,EAAWD,EAAM,QAAU,QAAQ,CAAC,IAC/DE,EAASF,EAAM,MAAQ,IAAI,CAC7B,GAEC,SAAAA,EAAM,KACT,CAEJ,EAEOG,EAAQJ,EDyDC,cAAAK,MAAA,oBA/DhB,IAAMC,EAAgBC,GAAiC,CACrD,GAAM,CACJ,eAAAC,EACA,QAAAC,EACA,QAAAC,EACA,eAAAC,EACA,eAAAC,EACA,cAAeC,EACf,OAAAC,EACA,eAAAC,EACA,iBAAAC,EACA,aAAAC,CACF,EAAIV,EAEEW,EAAU,CACd,CACE,MAAO,eACP,QAAS,IAAM,CACbV,EAAe,CACb,QAAAC,EACA,UAAW,EACb,CAAC,EACDO,EAAiB,CACnB,EACA,QAASN,CACX,EAEA,CACE,MAAO,QACP,QAAS,IAAM,CACbF,EAAe,CACb,QAAAC,EACA,WAAY,EACd,CAAC,EACDO,EAAiB,EACjBC,EAAa,SAAS,MAAM,CAC9B,EACA,QAAS,EACX,EACA,CACE,MAAO,eACP,QAAS,IAAM,CACbN,EAAe,CACjB,EACA,QAAS,EACX,EACA,CACE,MAAO,SACP,QAAS,IAAM,CACIG,EAAO,cAAcC,CAAc,EAC3C,cAAcN,EAAQ,UAAWA,EAAQ,GAAIM,CAAc,CACtE,EACA,QAASL,CACX,CACF,EAEA,OACEL,EAAC,OAAI,IAAKO,EAAgB,UAAW,GAAGO,EAAO,OAAO,GACpD,SAAAd,EAAC,MACE,SAAAa,EAAQ,IAAI,CAACE,EAAMC,IAAU,CAC5B,GAAID,EAAK,QACP,OACEf,EAAC,MAAe,QAASe,EAAK,QAC5B,SAAAf,EAACiB,EAAA,CAAK,KAAK,KAAK,KAAMF,EAAK,MAAO,GAD3BC,CAET,CAGN,CAAC,EACH,EACF,CAEJ,EAEOE,EAAQjB","names":["styles","styles","jsx","Text","props","textWeight","textSize","text_default","jsx","OptionsPanel","props","setEditDetails","message","canEdit","openEmojiPanel","optionsMenuRef","position","client","conversationId","closeOptionsMenu","textInputRef","options","styles","item","index","text_default","options_panel_default"]}