UNPKG

@lexical/react

Version:

This package provides Lexical components and hooks for React applications.

14 lines (12 loc) 2.45 kB
/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * */ 'use strict';var d=require("@lexical/react/LexicalComposerContext"),g=require("react"),m=require("react/jsx-runtime"),t=require("@lexical/text"),u=require("@lexical/utils");let v="undefined"!==typeof window&&"undefined"!==typeof window.document&&"undefined"!==typeof window.document.createElement?g.useLayoutEffect:g.useEffect;function w(...a){return c=>{a.forEach(b=>{"function"===typeof b?b(c):null!=b&&(b.current=c)})}} let x=g.forwardRef(function({editor:a,ariaActiveDescendant:c,ariaAutoComplete:b,ariaControls:e,ariaDescribedBy:h,ariaExpanded:l,ariaLabel:y,ariaLabelledBy:z,ariaMultiline:A,ariaOwns:B,ariaRequired:C,autoCapitalize:D,className:E,id:F,role:n="textbox",spellCheck:G=!0,style:H,tabIndex:I,"data-testid":J,...K},p){let [f,q]=g.useState(a.isEditable()),r=g.useCallback(k=>{k&&k.ownerDocument&&k.ownerDocument.defaultView?a.setRootElement(k):a.setRootElement(null)},[a]),L=g.useMemo(()=>w(p,r),[r,p]);v(()=>{q(a.isEditable()); return a.registerEditableListener(k=>{q(k)})},[a]);return m.jsx("div",{...K,"aria-activedescendant":f?c:void 0,"aria-autocomplete":f?b:"none","aria-controls":f?e:void 0,"aria-describedby":h,"aria-expanded":f&&"combobox"===n?!!l:void 0,"aria-label":y,"aria-labelledby":z,"aria-multiline":A,"aria-owns":f?B:void 0,"aria-readonly":f?void 0:!0,"aria-required":C,autoCapitalize:D,className:E,contentEditable:f,"data-testid":J,id:F,ref:L,role:f?n:void 0,spellCheck:G,style:H,tabIndex:I})}); function M(a){return a.getEditorState().read(t.$canShowPlaceholderCurry(a.isComposing()))}function N(a){let [c,b]=g.useState(()=>M(a));v(()=>{function e(){let h=M(a);b(h)}e();return u.mergeRegister(a.registerUpdateListener(()=>{e()}),a.registerEditableListener(()=>{e()}))},[a]);return c}let P=g.forwardRef(O);function O(a,c){let {placeholder:b,...e}=a;[a]=d.useLexicalComposerContext();return m.jsxs(m.Fragment,{children:[m.jsx(x,{editor:a,...e,ref:c}),null!=b&&m.jsx(Q,{editor:a,content:b})]})} function Q({content:a,editor:c}){var b=N(c);let [e,h]=g.useState(c.isEditable());g.useLayoutEffect(()=>{h(c.isEditable());return c.registerEditableListener(l=>{h(l)})},[c]);if(!b)return null;b=null;"function"===typeof a?b=a(e):null!==a&&(b=a);return null===b?null:m.jsx("div",{"aria-hidden":!0,children:b})}exports.ContentEditable=P