@nexusui/components
Version:
These are custom components specially-developed for NexusUI applications. They will make your life easier by giving you out-of-the-box implementations for various high-level UI elements that you can drop directly into your application.
2 lines (1 loc) • 3.71 kB
JavaScript
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),a=require("lexical"),t=require("@lexical/react/LexicalComposerContext"),i=require("@lexical/react/useLexicalIsTextContentEmpty"),l=require("@mui/material/Stack"),s=require("@mui/icons-material/AlternateEmail"),n=require("@mui/icons-material/Send"),o=require("@mui/icons-material/Link"),r=require("@mui/icons-material/LocalOfferOutlined"),c=require("@mui/icons-material/AttachFile"),d=require("@mui/icons-material/Close"),u=require("@mui/material/IconButton"),m=require("@mui/material/Tooltip"),x=require("react"),f=require("@mui/material/Divider"),p=require("../command/index.js"),C=require("./AttachmentsPlugin.js"),h=require("../../../ActionGroup/ActionGroup.container.js");function j(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var T=j(l),A=j(s),L=j(n),g=j(o),S=j(r),k=j(c),q=j(d),y=j(u),_=j(m),b=j(f);const E="NexusRichTextToolbar";exports.ToolbarPlugin=l=>{const{state:s,onSave:n,onCancel:o,isDataChanged:r,hasAttachments:c,acceptableMimeTypes:d=C.ACCEPTABLE_IMAGE_TYPES,max:u=5,moreActions:m,defaultExpanded:f=!1,t:j}=l,[M]=t.useLexicalComposerContext(),N=i.useLexicalIsTextContentEmpty(M)&&!c,O=x.useRef(null),$=e=>({color:"grey.600",...e.applyStyles("dark",{color:"grey.400"})}),G=()=>{n?.(M)},v=x.useMemo((()=>({tagSomeone:j("Tag someone"),insertLink:j("insertLink"),attachFile:j("attachFile"),addTags:j("addTags"),send:j("addComment"),save:j("Save"),cancel:j("Cancel")})),[j]),D=x.useMemo((()=>[{label:v.tagSomeone,icon:e.jsx(A.default,{fontSize:"small",sx:$}),"data-testid":`${E}-tagSomeone`,className:`${E}-tagSomeone`,onClick:()=>{M.focus(),M.dispatchCommand(a.CONTROLLED_TEXT_INSERTION_COMMAND,N?"@":" @")}},{label:v.attachFile,icon:e.jsx(k.default,{fontSize:"small",sx:$}),"data-testid":`${E}-attachFile`,className:`${E}-attachFile`,onClick:()=>{O.current&&O.current.click()}},{label:v.insertLink,icon:e.jsx(g.default,{fontSize:"small",sx:$}),"data-testid":`${E}-insertLink`,className:`${E}-insertLink`,onClick:()=>{M.focus(),M.dispatchCommand(p.TOGGLE_INSERT_LINK_MODAL_COMMAND,"")}},{label:v.addTags,icon:e.jsx(S.default,{fontSize:"small",sx:$}),"data-testid":`${E}-addTags`,className:`${E}-addTags`,onClick:()=>{M.focus(),M.dispatchCommand(p.TOGGLE_ADD_TAGS_COMMAND,!0)}}]),[v,M,N]),I=x.useMemo((()=>m&&m.length>0?[...D,...m.map((e=>({...e,onClick:a=>{e?.onClick(a,M)}})))]:D),[m,D,M]),z="edit"===s||!N||f;return e.jsxs(T.default,{sx:{display:z?"normal":"none",height:"40px"},className:`${E}-root`,"data-testid":`${E}-root`,children:[e.jsx(b.default,{}),e.jsxs(T.default,{direction:"row",justifyContent:"space-between",alignItems:"center",flex:1,sx:{px:1.5},children:[e.jsx(h.ActionGroup,{actions:I,max:u,size:"small",moreActionsTooltipProps:{title:j("moreTools")}}),e.jsx("input",{type:"file",multiple:!0,accept:d.map((e=>e.endsWith("/")?`${e}*`:e)).join(),style:{display:"none"},id:"file-upload",ref:O,onChange:e=>{M.focus(),M.dispatchCommand(p.TOGGLE_ATTACH_FILE_COMMAND,e)}}),"add"===s?e.jsx(y.default,{disabled:N,color:"primary","aria-label":v.send,"data-testid":`${E}-sendButton`,onClick:G,children:e.jsx(L.default,{})}):e.jsxs(T.default,{"data-testid":"edit-buttons",direction:"row",justifyContent:"flex-end",children:[e.jsx(_.default,{title:v.cancel,arrow:!0,children:e.jsx(y.default,{size:"small","aria-label":v.cancel,"data-testid":`${E}-cancelButton`,onClick:o,children:e.jsx(q.default,{fontSize:"small"})})}),e.jsx(_.default,{title:v.save,arrow:!0,children:e.jsx("span",{children:e.jsx(y.default,{size:"small",color:"primary","aria-label":v.save,"data-testid":`${E}-saveButton`,disabled:!r||N,onClick:G,children:e.jsx(L.default,{fontSize:"small"})})})})]})]})]})};