UNPKG

carbon-react

Version:

A library of reusable React components for easily building user interfaces.

2 lines (1 loc) • 8.79 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("@lexical/react/LexicalComposer"),t=require("@lexical/react/LexicalClickableLinkPlugin"),n=require("@lexical/react/LexicalErrorBoundary"),i=require("@lexical/react/LexicalHistoryPlugin"),a=require("@lexical/react/LexicalMarkdownShortcutPlugin"),l=require("@lexical/react/LexicalRichTextPlugin"),o=require("@lexical/react/LexicalLinkPlugin"),s=require("@lexical/react/LexicalListPlugin"),u=require("@lexical/react/LexicalOnChangePlugin"),c=require("lexical"),d=require("react"),_=require("../../__internal__/label/label.component.js"),p=require("../../hooks/__internal__/useLocale/useLocale.js"),x=require("../../__internal__/utils/logger/index.js"),g=require("./__internal__/__utils__/constants.js"),j=require("./__internal__/__plugins__/AutoLinker/auto-link.component.js"),f=require("./__internal__/__plugins__/LinkMonitor/link-monitor.plugin.js"),m=require("./__internal__/__plugins__/StyledSpanEnter/styled-span-enter.plugin.js");require("./__internal__/__plugins__/useCursorAtEnd/index.js");var h=require("./text-editor.context.js"),v=require("./text-editor.style.js"),b=require("./__internal__/__utils__/helpers.js"),y=require("../../__internal__/hint-text/hint-text.component.js"),q=require("../../__internal__/validation-message/validation-message.component.js"),w=require("../textbox/textbox.style.js");require("../../style/utils/filter-styled-system-padding-props.js");var P=require("../../style/utils/filter-styled-system-margin-props.js"),O=require("../../__internal__/utils/helpers/tags/tags.js"),E=require("./__internal__/__ui__/ReadOnlyEditor/read-only-rte.component.js"),L=require("./__internal__/__utils__/theme.js"),C=require("./__internal__/__ui__/CharacterCounter/character-counter.component.js"),T=require("./__internal__/__ui__/ContentEditor/content-editor.component.js");require("./__internal__/__ui__/LinkPreviewer/link-previewer.style.js"),require("@lexical/react/LexicalComposerContext"),require("@lexical/react/LexicalTypeaheadMenuPlugin"),require("react-dom"),require("./__internal__/__ui__/Mentions/constants.js"),require("./__internal__/__ui__/Mentions/mentions.style.js"),require("../tooltip/tooltip.component.js"),require("../portrait/portrait.style.js");var S=require("./__internal__/__ui__/Placeholder/placeholder.component.js"),k=require("./__internal__/__ui__/Toolbar/toolbar.component.js");function M(e){return e&&e.__esModule?e:{default:e}}var $=M(d);function F(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function H(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{},n=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(t).filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})))),n.forEach((function(r){F(e,r,t[r])}))}return e}let R=!1,B=!1,z=!1;const A=d.forwardRef(((M,F)=>{var A,D,I,{characterLimit:W=3e3,error:N,footer:V,header:U,inputHint:K,labelText:X,namespace:G=g.COMPONENT_PREFIX,onBlur:J,onCancel:Q,onChange:Y,onFocus:Z,onLinkAdded:ee,onSave:re,placeholder:te,previews:ne=[],readOnly:ie=!1,required:ae=!1,rows:le,size:oe="medium",warning:se,customPlugins:ue,validationMessagePositionTop:ce=!1,toolbarControls:de}=M,_e=function(e,r){if(null==e)return{};var t,n,i=function(e,r){if(null==e)return{};var t,n,i={},a=Object.keys(e);for(n=0;n<a.length;n++)t=a[n],r.indexOf(t)>=0||(i[t]=e[t]);return i}(e,r);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)t=a[n],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}(M,["characterLimit","error","footer","header","inputHint","labelText","namespace","onBlur","onCancel","onChange","onFocus","onLinkAdded","onSave","placeholder","previews","readOnly","required","rows","size","warning","customPlugins","validationMessagePositionTop","toolbarControls"]);!R&&_e.value&&(R=!0,x.default.deprecate("`value` is deprecated in TextEditor and support will soon be removed. Please use `initialValue` instead.")),!B&&Q&&(B=!0,x.default.deprecate("`onCancel` is deprecated in TextEditor and support will soon be removed. Please ensure that `TextEditor` is used as a part of a `Form` component, which will handle the cancel functionality.")),!z&&re&&(z=!0,x.default.deprecate("`onSave` is deprecated in TextEditor and support will soon be removed. Please ensure that `TextEditor` is used as a part of a `Form` component, which will handle the save functionality."));const pe=d.useRef(null!==(I=null!==(D=_e.initialValue)&&void 0!==D?D:_e.value)&&void 0!==I?I:b.createEmpty()),xe=p.default(),[ge,je]=d.useState(void 0),fe=d.useRef(null),[me,he]=d.useState(!1);d.useImperativeHandle(F,(()=>({focus(){var e;null===(e=fe.current)||void 0===e||e.focus()}})),[]),d.useEffect((()=>{const e=null==fe?void 0:fe.current,r=()=>{he(!0)},t=()=>{he(!1)};return null==e||e.addEventListener("focus",r),null==e||e.addEventListener("blur",t),()=>{null==e||e.removeEventListener("focus",r),null==e||e.removeEventListener("blur",t)}}),[fe]);const ve=d.useMemo((()=>({namespace:G,nodes:g.MARKDOWN_NODES,onError:e=>x.default.error(e.message),theme:L.getTheme(),editorState:pe.current,editable:!ie})),[G,ie]),be=d.useCallback(((e,r)=>{const t=e.read((()=>c.$getRoot().getChildren().map((e=>e.getTextContent())).join("\n\n")));if(Y){const e=b.SerializeLexical(r);null==Y||Y(t,e)}if(W>0){const e=W-t.length;je(e<0?xe.textEditor.characterLimit(Math.abs(e)):void 0)}}),[W,xe.textEditor,Y]),ye=d.useCallback((e=>{if(!e.isEditable())return;if(!Q)return;const r=e.parseEditorState(pe.current);e.setEditorState(r),Q()}),[Q]),qe=d.useMemo((()=>({namespace:G,onCancel:Q?ye:void 0,onSave:re,toolbarControls:de})),[ye,G,Q,re,de]),we=se||ge,Pe=()=>{switch(oe){case"large":return"var(--spacing150)";case"small":return"var(--spacing050)";default:return"var(--spacing100)"}};return e.jsx(v.StyledTextEditorWrapper,(Oe=H({"data-role":`${G}-editor-wrapper`,onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||null==J||J(e)},onFocus:e=>{e.currentTarget.contains(e.relatedTarget)||null==Z||Z(e)}},P.default(_e),O.default("text-editor",_e)),Ee=null!=(Ee={children:e.jsxs(h.default.Provider,{value:{onLinkAdded:ee},children:[e.jsx(_.default,{isRequired:ae,labelId:`${G}-label`,children:X}),K&&!ie&&e.jsx(y.HintText,{id:`${G}-input-hint`,marginBottom:Pe(),children:K}),e.jsx(r.LexicalComposer,{initialConfig:ve,children:e.jsxs(v.StyledWrapper,{"data-role":`${G}-wrapper`,children:[ce&&e.jsxs(e.Fragment,{children:[e.jsx(q.default,{error:N,warning:we,validationId:`${G}-validation-message`,"data-role":`${G}-validation-message`,validationMessagePositionTop:ce}),(N||we)&&e.jsx(w.default,{warning:!(N||!we)})]}),e.jsxs(v.StyledEditorToolbarWrapper,{"data-role":`${G}-editor-toolbar-wrapper`,error:!!N,id:`${G}-editor-toolbar-wrapper`,children:[U&&e.jsx(v.StyledHeaderWrapper,{"data-role":`${G}-header-wrapper`,children:U}),ie?e.jsx(E.default,{"aria-label":X,initialValue:(null===(A=fe.current)||void 0===A?void 0:A.innerHTML)||pe.current,size:oe}):e.jsxs(e.Fragment,{children:[e.jsx(k.default,H({contentEditorRef:fe,hasHeader:Boolean(U),size:oe},qe)),e.jsxs(v.StyledTextEditor,{"data-role":`${G}-editor`,error:!!N,children:[e.jsx(l.RichTextPlugin,{contentEditable:e.jsx(T.default,{ref:fe,inputHint:K,isFocused:me,namespace:G,previews:ne,rows:le,readOnly:ie,required:ae,error:!!N,warning:!!se||!!ge,validationMessagePositionTop:ce,size:oe}),placeholder:e.jsx(S.default,{namespace:G,text:te}),ErrorBoundary:n.LexicalErrorBoundary}),e.jsx(s.ListPlugin,{}),e.jsx(i.HistoryPlugin,{}),e.jsx(a.MarkdownShortcutPlugin,{}),e.jsx(u.OnChangePlugin,{onChange:be,ignoreHistoryMergeTagChange:!0,ignoreSelectionChange:!0}),e.jsx(o.LinkPlugin,{validateUrl:b.validateUrl}),e.jsx(t.ClickableLinkPlugin,{newTab:!0}),e.jsx(j.default,{}),e.jsx(m.default,{}),$.default.Children.toArray(ue)]})]}),V&&e.jsx(v.StyledFooterWrapper,{"data-role":`${G}-footer-wrapper`,size:oe,children:V}),e.jsx(f.default,{})]}),!ce&&e.jsxs(e.Fragment,{children:[e.jsx(q.default,{error:N,warning:we,validationId:`${G}-validation-message`,"data-role":`${G}-validation-message`,validationMessagePositionTop:ce}),(N||we)&&e.jsx(w.default,{warning:!(N||!we)})]}),W>0&&!ie&&e.jsx(C.default,{isFocused:me,maxChars:W,namespace:G,marginTop:Pe()})]})})]})})?Ee:{},Object.getOwnPropertyDescriptors?Object.defineProperties(Oe,Object.getOwnPropertyDescriptors(Ee)):function(e){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r.push.apply(r,t)}return r}(Object(Ee)).forEach((function(e){Object.defineProperty(Oe,e,Object.getOwnPropertyDescriptor(Ee,e))})),Oe));var Oe,Ee}));exports.TextEditor=A,exports.default=A;