@contentful/field-editor-rich-text 3.4.19 → 3.4.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=require("react"),n=e(t),i=require("@contentful/field-editor-reference"),o=require("@contentful/field-editor-shared"),l=require("@contentful/rich-text-types"),r=require("@udecode/plate-core"),s=require("emotion"),a=e(require("fast-deep-equal")),c=e(require("lodash/noop")),d=require("slate-react"),u=require("@udecode/plate-serializer-docx"),m=require("@udecode/plate-break"),p=require("@udecode/plate-reset-node"),E=require("react-popper"),y=require("@contentful/f36-components"),h=require("@contentful/f36-utils"),f=e(require("constate")),S=e(require("is-hotkey")),g=require("slate"),L=e(require("lodash/find")),C=e(require("lodash/flow")),T=e(require("lodash/get")),b=e(require("@contentful/f36-tokens")),I=require("@contentful/f36-icons"),A=require("@udecode/plate-list"),k=e(require("lodash/castArray")),N=require("@udecode/plate-basic-marks"),v=e(require("is-plain-obj")),D=require("@udecode/plate-paragraph"),B=require("@udecode/plate-select"),O=require("@udecode/plate-table"),R=require("@contentful/contentful-slatejs-adapter"),K=require("@contentful/rich-text-plain-text-renderer"),x=require("@udecode/plate-trailing-block"),w=e(require("lodash/debounce")),M=e(require("prop-types"));const _=d.useReadOnly,P=r.usePlateEditorRef,H=r.usePlateEditorState;function z(e){const{entry:t,field:n}=e;return`rich-text-editor-${t.getSys().id}-${n.id}-${n.locale}`}const F=t.createContext(""),q=F.Provider;function U(e){const n=t.useContext(F);if(e)return e;if(!n)throw new Error("could not find editor id. Please ensure the component is wrapped in <ContentfulEditorIdProvider> ");return n}function Y(e){const t=U(e);return H(t)}const G=(e,t)=>r.withoutNormalizing(e,t),$=(e,t)=>{r.focusEditor(e,t)},W=(e,t,n={exactMatch:!1,suppressThrow:!1})=>r.toSlatePoint(e,t,n);function V({sdk:e}){return t.useMemo(()=>e,[])}const[j,X]=f(V),Q=(e,t)=>r.getEditorString(e,t),Z=e=>r.isText(e),J=(e,t)=>r.getStartPoint(e,t),ee=(e,t)=>r.isSelectionAtBlockStart(e,t),te=(e,t)=>r.getBlockAbove(e,t),ne=(e,t,n)=>r.getNodeEntry(e,t,n),ie=(e,t)=>r.getNodeEntries(e,t),oe=(e,t,n)=>r.getParentNode(e,t,n),le=(e,t)=>r.someNode(e,t),re=e=>g.Text.isText(e[0])?[]:r.getChildren(e),se=(e,t)=>g.Node.get(e,t),ae=e=>r.isCollapsed(e),ce=(e,t,n)=>r.getRange(e,t,n),de=e=>g.Range.edges(e),ue=e=>g.Range.end(e),me=(e,t)=>r.getAboveNode(e,t),pe=(e,t,n)=>r.getCommonNode(e,t,n),Ee=(e,t)=>r.findNode(e,t),ye=(e,t)=>r.isMarkActive(e,t),he=e=>r.isEditor(e),fe=e=>r.isElement(e),Se=(e,t)=>r.findNodePath(e,t),ge=(e,t)=>g.Path.isAncestor(e,t),Le=(e,t)=>r.isAncestorEmpty(e,t),Ce=e=>g.Path.parent(e),Te=e=>g.Path.next(e),be=e=>g.Path.previous(e),Ie=e=>r.getLastChildPath(e),Ae=e=>r.isFirstChild(e),ke=(e,t)=>r.isLastChild(e,t),Ne=(e,t,n)=>r.match(e,t,n),ve=(e,t)=>r.someHtmlElement(e,t),De=(e,t)=>r.getPluginType(e,t),Be=(e,t)=>r.setSelection(e,t),Oe=(e,t)=>r.select(e,t),Re=(e,t)=>r.moveSelection(e,t),Ke=(e,t)=>r.collapseSelection(e,t),xe=(e,t,n)=>{r.setNodes(e,t,n)},we=(e,t,n)=>r.insertNodes(e,t,n),Me=(e,t)=>r.splitNodes(e,t),_e=(e,t)=>r.liftNodes(e,t),Pe=(e,t)=>r.unwrapNodes(e,t),He=(e,t,n)=>r.wrapNodes(e,t,n),ze=(e,t,n)=>{r.removeMark(e,{key:t,at:n})},Fe=(e,t,n)=>r.insertText(e,t,n),qe=(e,t)=>{r.deleteText(e,t)},Ue=(e,t)=>{r.removeNodes(e,t)},Ye=(e,t)=>{r.moveNodes(e,t)},Ge="undefined"!=typeof navigator&&/Version\/[\d.]+.*Safari/.test(navigator.userAgent),$e=/(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9.]+)(:?\s|$)/.test(navigator.userAgent),We=[l.INLINES.HYPERLINK,l.INLINES.ENTRY_HYPERLINK,l.INLINES.ASSET_HYPERLINK];function Ve(e,t){const[n]=Array.from(ie(e,{match:e=>fe(e)&&e.type===t}));return!!n}function je(e){return 1===e.length}function Xe(e,t,n){var i;if(!(n=n??(null==(i=e.selection)?void 0:i.focus.path)))return[];const o=Array.isArray(t)?t:[t];for(let t=0;t<n.length;t++){const i=ne(e,n.slice(0,t+1));if(o.includes(i[0].type))return i}return[]}function Qe(e,t){if(!e)return!1;const[n]=Xe(e,t);return!!n}function Ze(e){Re(e,{distance:1,unit:"offset"})}function Je(e,t){we(e,{type:l.BLOCKS.PARAGRAPH,children:[{text:""}],data:{},isVoid:!1},t)}function et(e){if(!e)return!1;const[t]=Array.from(ie(e,{match:e=>!he(e)&&fe(e)&&We.includes(e.type)}));return!!t}function tt(e){Pe(e,{match:e=>!he(e)&&fe(e)&&We.includes(e.type)})}const nt=Object.values(l.INLINES),it=e=>Z(e)||fe(e)&&nt.includes(e.type),ot=e=>{const t=window.scrollX,n=window.scrollY;$(e),Ge&&setTimeout((function(){window.scrollTo(t,n)}),0)};function lt(e,t,n){((e,t,n)=>{r.toggleNodeType(e,t,n)})(e,t,n),xe(e,{data:{}})}const rt=[l.BLOCKS.DOCUMENT,l.BLOCKS.PARAGRAPH,"text"],st=(e,t,n)=>{const i=((e,t)=>C(e=>L(e,t),e=>T(e,t))(e.validations))(e,t);return void 0===i||rt.concat(i).includes(n)},at=(e,t)=>st(e,"enabledNodeTypes",t),ct=(e,t)=>st(e,"enabledMarks",t);async function dt(e,t,n){return(await e.space.getEntries({content_type:t.sys.id,query:n})).items.map(n=>{const i=o.entityHelpers.getEntityDescription({contentType:t,entity:n,localeCode:e.field.locale,defaultLocaleCode:e.locales.default}),l=o.entityHelpers.getEntryTitle({entry:n,contentType:t,localeCode:e.field.locale,defaultLocaleCode:e.locales.default,defaultTitle:"Untitled"});return{contentTypeName:t.name,displayTitle:l,id:n.sys.contentType.sys.id,description:i,entry:n}})}function ut(e,t,n){if(null==e||!e.selection)return;const i=((e,t)=>({type:e,data:{target:{sys:{id:t.sys.id,type:"Link",linkType:t.sys.type}}},children:[{text:""}],isVoid:!0}))(t,n);e.selection&&Q(e,e.selection.focus.path)?we(e,i):xe(e,i),ot(e)}const mt=e=>{const[,t]=me(e),n=ce(e,t);Oe(e,n.focus.path),ze(e,"command-prompt",n),qe(e)},pt=e=>{const[,t]=me(e),n=ce(e,t);n.focus.offset-n.anchor.offset>1&&qe(e,{at:n.focus,distance:n.focus.offset-1,reverse:!0})};function Et(e){return{inlineAllowed:at(e.field,l.INLINES.EMBEDDED_ENTRY),entriesAllowed:at(e.field,l.BLOCKS.EMBEDDED_ENTRY),assetsAllowed:at(e.field,l.BLOCKS.EMBEDDED_ASSET)}}const yt={container:s.css({position:"absolute",zIndex:b.zIndexNotification,fontWeight:b.fontWeightNormal,fontStyle:"normal",fontFamily:b.fontStackPrimary,"ul, ol, dl":{listStyle:"none",marginLeft:0}}),menuPoper:s.css({zIndex:b.zIndexModal}),menuContent:s.css({width:"400px",maxHeight:"300px"}),menuList:s.css({overflow:"auto",maxHeight:"200px"}),menuItem:s.css({display:"block",width:"100%",background:"none",border:0,margin:0,outline:"none",fontSize:b.fontSizeM,lineHeight:b.lineHeightM,fontWeight:b.fontWeightNormal,position:"relative",textAlign:"left",padding:`${b.spacingXs} ${b.spacingM}`,wordBreak:"break-word",whiteSpace:"break-spaces",cursor:"pointer",hyphens:"auto",minWidth:"150px",textDecoration:"none",color:b.gray800,"&:hover":{backgroundColor:b.gray100},"&:disabled":{opacity:.5,cursor:"auto"}}),menuItemSelected:s.css({boxShadow:"inset "+b.glowPrimary,borderRadius:b.borderRadiusMedium}),menuDivider:s.css({border:"none",width:"100%",height:"1px",background:b.gray300,margin:b.spacingXs+" 0"}),menuHeader:s.css({zIndex:b.zIndexDefault,top:0,backgroundColor:b.gray100,padding:b.spacingM}),menuFooter:s.css({position:"sticky",bottom:0,backgroundColor:b.gray100,padding:b.spacingM}),footerList:s.css({listStyle:"none",color:b.gray600,fontSize:b.fontSizeM}),thumbnail:s.css({width:"30px",height:"30px",objectFit:"cover"})},ht=({commandGroup:e,selectedItem:n})=>t.createElement("section",{key:e.group},t.createElement(y.SectionHeading,{as:"h3",marginBottom:"spacingS",marginTop:"spacingS",marginLeft:"spacingM",marginRight:"spacingM"},e.group),e.commands.map(e=>t.createElement("button",{key:e.id,id:e.id,className:s.cx(yt.menuItem,{[yt.menuItemSelected]:e.id===n}),onClick:e.callback},e.label)),t.createElement("hr",{className:yt.menuDivider,"aria-orientation":"horizontal"})),ft=({command:e,selectedItem:n})=>t.createElement("button",{key:e.id,id:e.id,className:s.cx(yt.menuItem,{[yt.menuItemSelected]:e.id===n}),onClick:e.callback},t.createElement(y.Flex,{alignItems:"center",gap:"spacingS"},e.thumbnail&&t.createElement("img",{width:"30",height:"30",src:e.thumbnail,alt:"",className:yt.thumbnail}),t.createElement("span",null,e.label))),St=({command:e})=>t.createElement("button",{key:e.id,id:e.id,className:yt.menuItem},e.label),gt=({commandItems:e,selectedItem:n})=>t.createElement(t.Fragment,null,e.map(e=>"group"in e?t.createElement(ht,{commandGroup:e,selectedItem:n}):e.callback?t.createElement(ft,{command:e,selectedItem:n}):t.createElement(St,{command:e}))),Lt=({query:e,editor:n,textContainer:i})=>{const r=X(),s=t.useRef(null),a=E.usePopper(i,null==s?void 0:s.current,{placement:"bottom-start"}),c=((e,n,i)=>{const r=e.space.getCachedContentTypes(),{inlineAllowed:s,entriesAllowed:a,assetsAllowed:c}=function(e,t){const n=!Qe(t,l.BLOCKS.TABLE),{inlineAllowed:i,entriesAllowed:o,assetsAllowed:r}=Et(e);return{inlineAllowed:i,entriesAllowed:o&&n,assetsAllowed:r&&n}}(e,i),[d,u]=t.useState(()=>{const t=t=>({id:t.sys.id,label:"Embed "+t.name,callback:()=>{dt(e,t,n).then(e=>{pt(i),u(e.length?e.map(e=>({id:`${e.id}-${e.displayTitle.replace(/\W+/g,"-").toLowerCase()}`,label:e.displayTitle,callback:()=>{if(mt(i),i.selection){const t=i.selection;i.insertSoftBreak(),ut(i,l.BLOCKS.EMBEDDED_ENTRY,e.entry),Oe(i,t),i.tracking.onCommandPaletteAction("insert",{nodeType:l.BLOCKS.EMBEDDED_ENTRY})}}})):[{id:"no-results",label:"No results"}])})}}),d=t=>({id:t.sys.id+"-inline",label:`Embed ${t.name} - Inline`,callback:()=>{dt(e,t,n).then(e=>{pt(i),u(e.length?e.map(e=>({id:`${e.id}-${e.displayTitle.replace(/\W+/g,"-").toLowerCase()}`,label:e.displayTitle,callback:()=>{const t={type:l.INLINES.EMBEDDED_ENTRY,children:[{text:""}],data:{target:{sys:{id:e.id,type:"Link",linkType:"Entry"}}}};mt(i),we(i,t),i.insertText(""),i.tracking.onCommandPaletteAction("insert",{nodeType:l.INLINES.EMBEDDED_ENTRY})}})):[{id:"no-results",label:"No results"}])})}}),m=a||s?r.map(e=>({group:e.name,commands:a&&s?[t(e),d(e)]:a?[t(e)]:[d(e)]})):[];if(c){const t={group:"Assets",commands:[{id:"embed-asset",label:"Embed Asset",callback:()=>{(async function(e,t){return(await e.space.getAssets({query:t})).items.map(t=>({contentTypeName:"Asset",displayTitle:o.entityHelpers.getAssetTitle({asset:t,localeCode:e.field.locale,defaultLocaleCode:e.locales.default,defaultTitle:"Untitled"}),id:t.sys.id,entity:t,thumbnail:t.fields.file&&t.fields.file[e.field.locale]&&t.fields.file[e.field.locale].url+"?h=30"}))})(e,n).then(e=>{pt(i),u(e.length?e.map(e=>({id:`${e.id}-${e.displayTitle.replace(/\W+/g,"-").toLowerCase()}`,label:e.displayTitle,thumbnail:e.thumbnail,callback:()=>{if(mt(i),i.selection){const t=i.selection;i.insertSoftBreak(),ut(i,l.BLOCKS.EMBEDDED_ASSET,e.entity),Oe(i,t),i.tracking.onCommandPaletteAction("insert",{nodeType:l.BLOCKS.EMBEDDED_ASSET})}}})):[{id:"no-results",label:"No results"}])})}}]};return[...m,t]}return m});return n?d.reduce((e,t)=>("group"in t?t.commands.filter(e=>e.label.toLowerCase().includes(n.toLowerCase())).length>0&&e.push(t):t.label.toLowerCase().includes(n.toLowerCase())&&e.push(t),e),[]):d})(r,e,n),{selectedItem:d,isOpen:u}=((e,n)=>{const[i,o]=t.useState(()=>e.length?"group"in e[0]?e[0].commands[0].id:e[0].id:""),[l,r]=t.useState(e.length>0);return t.useEffect(()=>{if(!n.current)return;const t=Array.from(n.current.querySelectorAll("button")),l=t.find(e=>e.id===i),r=l?t.indexOf(l):0;function s(e){if(S("up",e)){if(e.preventDefault(),0===r)return;o(t[r-1].id),t[r-1].scrollIntoView({block:"nearest",inline:"start"})}else if(S("down",e)){if(e.preventDefault(),r===t.length-1)return;o(t[r+1].id),t[r+1].scrollIntoView({block:"nearest",inline:"start"})}else S("enter",e)&&(e.preventDefault(),l&&(o(""),l.click()))}return!l&&t.length&&(o(t[0].id),t[0].scrollIntoView({block:"nearest",inline:"start"})),e.length&&window.addEventListener("keydown",s),()=>window.removeEventListener("keydown",s)},[e,n,i]),t.useEffect(()=>{const e=e=>{n.current&&!n.current.contains(e.target)&&r(!1)};return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[n]),{selectedItem:i,isOpen:l}})(c,s);return c.length?t.createElement("div",{className:yt.container,tabIndex:-1,contentEditable:!1},t.createElement("div",{role:"alert"},t.createElement(y.ScreenReaderOnly,null,"Richtext commands. Currently focused item: ",d,". Press ",t.createElement("kbd",null,"enter")," to select, ",t.createElement("kbd",null,"arrows")," to navigate, ",t.createElement("kbd",null,"escape")," to close.")),t.createElement(h.Portal,null,t.createElement("div",{"aria-hidden":!0,ref:s,className:yt.menuPoper,style:a.styles.popper,...a.attributes.popper},t.createElement(y.Popover,{isOpen:u,usePortal:!1,autoFocus:!1},t.createElement(y.Popover.Trigger,null,t.createElement("span",null)),t.createElement(y.Popover.Content,{className:yt.menuContent,testId:"rich-text-commands"},t.createElement("header",{className:yt.menuHeader},t.createElement(y.SectionHeading,{marginBottom:"none"},"Richtext commands")),t.createElement("div",{className:yt.menuList,"data-test-id":"rich-text-commands-list"},t.createElement(gt,{commandItems:c,selectedItem:d})),t.createElement("footer",{className:yt.menuFooter},t.createElement(y.Stack,{as:"ul",margin:"none",padding:"none",spacing:"spacingS",className:yt.footerList},t.createElement("li",null,t.createElement("kbd",null,"↑"),t.createElement("kbd",null,"↓")," to navigate"),t.createElement("li",null,t.createElement("kbd",null,"↵")," to confirm"),t.createElement("li",null,t.createElement("kbd",null,"esc")," to close")))))))):null},Ct=e=>{const n=t.useMemo(()=>{return(t=e.text.text).startsWith("/")?t.slice(1):t;var t},[e.text.text]),i=e.editor,[o,l]=t.useState();return t.createElement("span",{ref:e=>{l(e)},...e.attributes},e.children,t.createElement(Lt,{query:n,editor:i,textContainer:o}))};function Tt(){const e=[l.BLOCKS.EMBEDDED_ENTRY,l.BLOCKS.EMBEDDED_ASSET,l.BLOCKS.HR,l.INLINES.EMBEDDED_ENTRY],t={TABLE:[l.INLINES.EMBEDDED_ENTRY]};return{key:"DragAndDropPlugin",handlers:{onDrop:n=>i=>{const[o]=Array.from(ie(n,{match:t=>e.includes(t.type)}));if(!o)return!1;const[l]=o;if(!i.nativeEvent.target)return!1;const r=function(e){const t=[];for(t.push(e);e.parentNode;)t.unshift(e.parentNode),e=e.parentNode;return t}(i.nativeEvent.target).some(e=>{var n;return!(!t[e.nodeName]||null!=(n=t[e.nodeName])&&n.includes(l.type))});return r||n.history.undos.push([]),r}}}}function bt(e){return function(t){const i=function(e){const t=U(void 0);return P(t)}(),o=n.useCallback(()=>null==i?void 0:i.tracking.onViewportAction("linkRendered"),[i]);return n.createElement(e,{...t,onEntityFetchComplete:o})}}const It=t.memo(e=>void 0===e.asset?t.createElement(y.AssetCard,{size:"default",isLoading:!0}):"failed"===e.asset?t.createElement(i.MissingEntityCard,{entityType:"Asset",isDisabled:e.isDisabled,onRemove:e.onRemove}):t.createElement(i.WrappedAssetCard,{getEntityScheduledActions:e.loadEntityScheduledActions,size:"small",isSelected:e.isSelected,isDisabled:e.isDisabled,localeCode:e.locale,defaultLocaleCode:e.sdk.locales.default,asset:e.asset,onEdit:e.onEdit,onRemove:e.isDisabled?void 0:e.onRemove,isClickable:!1}),a);function At(e){const{onEntityFetchComplete:n}=e,{data:o,status:l}=i.useEntity("Asset",e.assetId),{getEntityScheduledActions:r}=i.useEntityLoader(),s=t.useCallback(()=>r("Asset",e.assetId),[r,e.assetId]);return t.useEffect(()=>{"success"===l&&(null==n||n())},[n,l]),t.createElement(It,{asset:o,sdk:e.sdk,isDisabled:e.isDisabled,isSelected:e.isSelected,loadEntityScheduledActions:s,locale:e.locale,onEdit:e.onEdit,onRemove:e.onRemove})}It.displayName="InternalAssetCard";const kt=t.memo(e=>{const{entry:n,sdk:o,loadEntityScheduledActions:l}=e;if(void 0===n)return t.createElement(y.EntryCard,{isLoading:!0});if("failed"===n)return t.createElement(i.MissingEntityCard,{entityType:"Entry",isDisabled:e.isDisabled,onRemove:e.onRemove});const r=o.space.getCachedContentTypes().find(e=>e.sys.id===n.sys.contentType.sys.id);return t.createElement(i.WrappedEntryCard,{size:"default",getAsset:e.sdk.space.getAsset,getEntityScheduledActions:l,isSelected:e.isSelected,isDisabled:e.isDisabled,localeCode:e.locale,defaultLocaleCode:e.sdk.locales.default,contentType:r,entry:n,onEdit:e.onEdit,onRemove:e.isDisabled?void 0:e.onRemove,isClickable:!1})},a);kt.displayName="ReferenceCard";const Nt=e=>{const{entryId:n,onEntityFetchComplete:o}=e,{data:l,status:r}=i.useEntity("Entry",n),{getEntityScheduledActions:s}=i.useEntityLoader(),a=t.useCallback(()=>s("Entry",n),[s,n]);return t.useEffect(()=>{"success"===r&&(null==o||o())},[o,r]),t.createElement(kt,{entry:l,sdk:e.sdk,locale:e.locale,isDisabled:e.isDisabled,isSelected:e.isSelected,onEdit:e.onEdit,onRemove:e.onRemove,loadEntityScheduledActions:a})},vt={root:s.css({marginBottom:"1.25rem !important",display:"block"}),container:s.css({display:"inline-block",verticalAlign:"text-top",width:"100%"})};function Dt(e){const{attributes:t,children:i,element:o,onEntityFetchComplete:l}=e,r=d.useSelected(),s=Y(),a=X(),c=d.useReadOnly(),{id:u,linkType:m}=o.data.target.sys,p=n.useCallback(()=>("Asset"===m?a.navigator.openAsset:a.navigator.openEntry)(u,{slideIn:!0}),[a,u,m]),E=n.useCallback(()=>{if(!s)return;const e=Se(s,o);Ue(s,{at:e})},[s,o]);return n.createElement("div",{...t,className:vt.root,"data-entity-type":m,"data-entity-id":u,contentEditable:!!$e&&void 0,draggable:!!$e||void 0},n.createElement("div",{contentEditable:!$e&&void 0,draggable:!!$e||void 0,className:vt.container},"Entry"===m&&n.createElement(Nt,{sdk:a,entryId:u,locale:a.field.locale,isDisabled:c,isSelected:r,onRemove:E,onEdit:p,onEntityFetchComplete:l}),"Asset"===m&&n.createElement(At,{sdk:a,assetId:u,locale:a.field.locale,isDisabled:c,isSelected:r,onRemove:E,onEdit:p,onEntityFetchComplete:l})),i)}function Bt(e,t){return C(e=>L(e,"nodes"),e=>T(e,["nodes",t]),e=>L(e,"linkContentType"),e=>T(e,"linkContentType",[]))(e.validations)}function Ot(e,t){return{entityType:Rt(t),locale:e.locale||null,contentTypes:Bt(e,t)}}function Rt(e){const t=e.split("-");if(-1!==t.indexOf("entry"))return"Entry";if(-1!==t.indexOf("asset"))return"Asset";throw new Error(`RichText node type \`${e}\` has no associated \`entityType\``)}function Kt(e){const t=new Set;let n,i,o=!1;const l=()=>({wasClosed:o,isActive:!o&&i===n}),r=e.onSlideInNavigation(({oldSlideLevel:e,newSlideLevel:s})=>{void 0===n&&(n=e),i=s,s<n&&(o=!0,r(),t.clear()),l().isActive&&s!==e&&t.forEach(e=>e())});return{status:l,onActive:function(e){return o?c:(l().isActive&&e(),t.add(e),()=>t.delete(e))},unwatch:function(){r(),t.clear()}}}async function xt(e,t,n,i){i("openCreateEmbedDialog",{nodeType:e});const{field:o,dialogs:s}=t,a=Ot(o,e),c="Asset"===a.entityType?s.selectSingleAsset:s.selectSingleEntry,d={...a,withCreate:!0},u=Kt(t.navigator),m=await c(d);m?(function(e,t,n){if(null==e||!e.selection)return;const i=((e,t)=>({type:e,data:{target:{sys:{id:t.sys.id,type:"Link",linkType:t.sys.type}}},children:[{text:""}],isVoid:!0}))(t,n);e.selection&&Q(e,e.selection.focus.path)?we(e,i):xe(e,i)}(n,e,m),function(e){const t=me(e,{match:{type:[l.BLOCKS.EMBEDDED_ASSET,l.BLOCKS.EMBEDDED_ENTRY]}});if(!t)return;const n=t[1].length-1,i=((e,t)=>r.getLastNodeByLevel(e,t))(e,n),o=l.TEXT_CONTAINERS.includes((null==i?void 0:i[0].type)??"");0===n||o||Je(e),Ze(e)}(n),i("insert",{nodeType:e})):i("cancelCreateEmbedDialog",{nodeType:e}),u.onActive(()=>{u.unwatch(),ot(n)})}const wt=s.css({marginRight:"10px"});function Mt({isDisabled:e,nodeType:t,onClose:i}){const o=Y(),l=X(),r=function(e){const t=e.toLowerCase().split("-");if(t.includes("entry"))return"Entry";if(t.includes("asset"))return"Asset";throw new Error(`Node type \`${e}\` has no associated \`entityType\``)}(t);return n.createElement(y.Menu.Item,{disabled:e,className:"rich-text__"+t+"-list-item",onClick:async e=>{e.preventDefault(),o&&(i(),await xt(t,l,o,o.tracking.onToolbarAction))},testId:"toolbar-toggle-"+t},n.createElement(y.Flex,{alignItems:"center",flexDirection:"row"},n.createElement(y.Icon,{as:"Asset"===r?I.AssetIcon:I.EmbeddedEntryBlockIcon,className:"rich-text__embedded-entry-list-icon "+wt,variant:"secondary"}),n.createElement("span",null,r)))}const _t={[l.BLOCKS.EMBEDDED_ENTRY]:"Entry",[l.BLOCKS.EMBEDDED_ASSET]:"Asset"};function Pt(e,t){return(n,{options:{hotkey:i}})=>o=>{const[,l]=Xe(n,e);if(l){const e="Backspace"===o.key;("Delete"===o.key||e)&&(o.preventDefault(),Ue(n,{at:l}))}else i&&S(i,o)&&xt(e,t,n,n.tracking.onShortcutAction)}}const Ht=(e,t)=>n=>({key:e,type:e,isElement:!0,isVoid:!0,component:bt(Dt),options:{hotkey:t},handlers:{onKeyDown:Pt(e,n)},deserializeHtml:{rules:[{validAttribute:{"data-entity-type":_t[e]}}],withoutChildren:!0,getNode:t=>({type:e,children:[{text:""}],isVoid:!0,data:{target:{sys:{id:t.getAttribute("data-entity-id"),linkType:t.getAttribute("data-entity-type"),type:"Link"}}}})}}),zt=Ht(l.BLOCKS.EMBEDDED_ENTRY,"mod+shift+e"),Ft=Ht(l.BLOCKS.EMBEDDED_ASSET,"mod+shift+a"),{getEntryTitle:qt,getEntryStatus:Ut}=o.entityHelpers,Yt={scheduledIcon:s.css({verticalAlign:"text-bottom",marginRight:b.spacing2Xs})};function Gt(e){const{data:t,status:o}=i.useEntity("Entry",e.entryId),{getEntityScheduledActions:r}=i.useEntityLoader(),s=e.sdk.space.getCachedContentTypes(),{onEntityFetchComplete:a}=e,c=n.useMemo(()=>{if(t&&s)return s.find(e=>e.sys.id===t.sys.contentType.sys.id)},[s,t]);n.useEffect(()=>{"success"===o&&(null==a||a())},[o,a]);const d=c?c.name:"",u=n.useMemo(()=>qt({entry:t,contentType:c,localeCode:e.sdk.field.locale,defaultLocaleCode:e.sdk.locales.default,defaultTitle:"Untitled"}),[t,c,e.sdk.field.locale,e.sdk.locales.default]);if("error"===o)return n.createElement(y.InlineEntryCard,{title:"Entry missing or inaccessible",testId:l.INLINES.EMBEDDED_ENTRY,isSelected:e.isSelected});if("loading"===o)return n.createElement(y.InlineEntryCard,{isLoading:!0});const m=Ut(t.sys);return"deleted"===m?n.createElement(y.InlineEntryCard,{title:"Entry missing or inaccessible",testId:l.INLINES.EMBEDDED_ENTRY,isSelected:e.isSelected,actions:[n.createElement(y.MenuItem,{key:"remove",onClick:e.onRemove,testId:"delete"},"Remove")]}):n.createElement(y.InlineEntryCard,{testId:l.INLINES.EMBEDDED_ENTRY,isSelected:e.isSelected,title:`${d}: ${u}`,status:m,actions:[n.createElement(y.MenuItem,{key:"edit",onClick:e.onEdit},"Edit"),n.createElement(y.MenuItem,{key:"remove",onClick:e.onRemove,disabled:e.isDisabled,testId:"delete"},"Remove")]},n.createElement(i.ScheduledIconWithTooltip,{getEntityScheduledActions:()=>r("Entry",e.entryId),entityType:"Entry",entityId:t.sys.id},n.createElement(I.ClockIcon,{className:Yt.scheduledIcon,variant:"muted",testId:"scheduled-icon"})),n.createElement(y.Text,null,u))}function $t(e){return{type:l.INLINES.EMBEDDED_ENTRY,children:[{text:""}],data:{target:{sys:{id:e,type:"Link",linkType:"Entry"}}}}}const Wt={icon:s.css({marginRight:"10px"}),root:s.css({display:"inline-block",margin:"0 "+b.spacing2Xs,fontSize:"inherit",span:{userSelect:"none"}})};function Vt(e){const n=Y(),i=X(),o=d.useSelected(),{id:l}=e.element.data.target.sys,r=d.useReadOnly();return t.createElement("span",{...e.attributes,className:Wt.root,"data-embedded-entity-inline-id":l,contentEditable:!!$e&&void 0,draggable:!!$e||void 0},t.createElement("span",{contentEditable:!$e&&void 0,draggable:!!$e||void 0},t.createElement(Gt,{sdk:i,entryId:l,isSelected:o,isDisabled:r,onRemove:function(){if(!n)return;const t=Se(n,e.element);Ue(n,{at:t})},onEdit:function(){return i.navigator.openEntry(l,{slideIn:{waitForClose:!0}}).then(()=>{n&&ot(n)})},onEntityFetchComplete:e.onEntityFetchComplete})),e.children)}async function jt(e,t,n){n("openCreateEmbedDialog",{nodeType:l.INLINES.EMBEDDED_ENTRY});const i={...Ot(t.field,l.INLINES.EMBEDDED_ENTRY),withCreate:!0},o=Kt(t.navigator),r=await t.dialogs.selectSingleEntry(i);r?(we(e,$t(r.sys.id)),n("insert",{nodeType:l.INLINES.EMBEDDED_ENTRY})):n("cancelCreateEmbedDialog",{nodeType:l.INLINES.EMBEDDED_ENTRY}),o.onActive(()=>{o.unwatch(),ot(e)})}function Xt(e){const n=Y(),i=X();return t.createElement(y.Menu.Item,{disabled:e.isDisabled,className:"rich-text__entry-link-block-button",testId:"toolbar-toggle-"+l.INLINES.EMBEDDED_ENTRY,onClick:async function(t){t.preventDefault(),n&&(e.onClose(),await jt(n,i,n.tracking.onToolbarAction),Ze(n))}},t.createElement(y.Flex,{alignItems:"center",flexDirection:"row"},t.createElement(I.EmbeddedEntryInlineIcon,{variant:"secondary",className:"rich-text__embedded-entry-list-icon "+Wt.icon}),t.createElement("span",null,"Inline entry")))}function Qt(e){return{key:l.INLINES.EMBEDDED_ENTRY,type:l.INLINES.EMBEDDED_ENTRY,isElement:!0,isInline:!0,isVoid:!0,component:bt(Vt),options:{hotkey:"mod+shift+2"},handlers:{onKeyDown:Zt(e)},deserializeHtml:{rules:[{validAttribute:"data-embedded-entity-inline-id"}],withoutChildren:!0,getNode:e=>$t(e.getAttribute("data-embedded-entity-inline-id"))}}}function Zt(e){return function(t,{options:{hotkey:n}}){return function(i){t&&n&&S(n,i)&&jt(t,e,t.tracking.onShortcutAction)}}}const Jt={dropdown:{root:s.css`
1
+ "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=require("react"),n=e(t),i=require("@contentful/field-editor-reference"),o=require("@contentful/field-editor-shared"),l=require("@contentful/rich-text-types"),r=require("@udecode/plate-core"),s=require("emotion"),a=e(require("fast-deep-equal")),c=e(require("lodash/noop")),d=require("slate-react"),u=require("@udecode/plate-serializer-docx"),m=require("@udecode/plate-break"),p=require("@udecode/plate-reset-node"),E=require("react-popper"),y=require("@contentful/f36-components"),h=require("@contentful/f36-utils"),f=e(require("constate")),S=e(require("is-hotkey")),g=require("slate"),L=e(require("lodash/find")),C=e(require("lodash/flow")),T=e(require("lodash/get")),b=e(require("@contentful/f36-tokens")),I=require("@contentful/f36-icons"),A=require("@udecode/plate-list"),k=e(require("lodash/castArray")),N=require("@udecode/plate-basic-marks"),v=e(require("is-plain-obj")),D=require("@udecode/plate-paragraph"),B=require("@udecode/plate-select"),O=require("@udecode/plate-table"),R=require("@contentful/contentful-slatejs-adapter"),K=require("@contentful/rich-text-plain-text-renderer"),x=require("@udecode/plate-trailing-block"),w=e(require("lodash/debounce")),M=e(require("prop-types"));const _=d.useReadOnly,P=r.usePlateEditorRef,H=r.usePlateEditorState;function z(e){const{entry:t,field:n}=e;return`rich-text-editor-${t.getSys().id}-${n.id}-${n.locale}`}const F=t.createContext(""),q=F.Provider;function U(e){const n=t.useContext(F);if(e)return e;if(!n)throw new Error("could not find editor id. Please ensure the component is wrapped in <ContentfulEditorIdProvider> ");return n}function Y(e){const t=U(e);return H(t)}const G=(e,t)=>r.withoutNormalizing(e,t),$=(e,t)=>{r.focusEditor(e,t)},W=(e,t,n={exactMatch:!1,suppressThrow:!1})=>r.toSlatePoint(e,t,n);function V({sdk:e}){return t.useMemo(()=>e,[])}const[j,X]=f(V),Q=(e,t)=>r.getEditorString(e,t),Z=e=>r.isText(e),J=(e,t)=>r.getStartPoint(e,t),ee=(e,t)=>r.isSelectionAtBlockStart(e,t),te=(e,t)=>r.getBlockAbove(e,t),ne=(e,t,n)=>r.getNodeEntry(e,t,n),ie=(e,t)=>r.getNodeEntries(e,t),oe=(e,t,n)=>r.getParentNode(e,t,n),le=(e,t)=>r.someNode(e,t),re=e=>g.Text.isText(e[0])?[]:r.getChildren(e),se=(e,t)=>g.Node.get(e,t),ae=e=>r.isCollapsed(e),ce=(e,t,n)=>r.getRange(e,t,n),de=e=>g.Range.edges(e),ue=e=>g.Range.end(e),me=(e,t)=>r.getAboveNode(e,t),pe=(e,t,n)=>r.getCommonNode(e,t,n),Ee=(e,t)=>r.findNode(e,t),ye=(e,t)=>r.isMarkActive(e,t),he=e=>r.isEditor(e),fe=e=>r.isElement(e),Se=(e,t)=>r.findNodePath(e,t),ge=(e,t)=>g.Path.isAncestor(e,t),Le=(e,t)=>r.isAncestorEmpty(e,t),Ce=e=>g.Path.parent(e),Te=e=>g.Path.next(e),be=e=>g.Path.previous(e),Ie=e=>r.getLastChildPath(e),Ae=e=>r.isFirstChild(e),ke=(e,t)=>r.isLastChild(e,t),Ne=(e,t,n)=>r.match(e,t,n),ve=(e,t)=>r.someHtmlElement(e,t),De=(e,t)=>r.getPluginType(e,t),Be=(e,t)=>r.setSelection(e,t),Oe=(e,t)=>r.select(e,t),Re=(e,t)=>r.moveSelection(e,t),Ke=(e,t)=>r.collapseSelection(e,t),xe=(e,t,n)=>{r.setNodes(e,t,n)},we=(e,t,n)=>r.insertNodes(e,t,n),Me=(e,t)=>r.splitNodes(e,t),_e=(e,t)=>r.liftNodes(e,t),Pe=(e,t)=>r.unwrapNodes(e,t),He=(e,t,n)=>r.wrapNodes(e,t,n),ze=(e,t,n)=>{r.removeMark(e,{key:t,at:n})},Fe=(e,t,n)=>r.insertText(e,t,n),qe=(e,t)=>{r.deleteText(e,t)},Ue=(e,t)=>{r.removeNodes(e,t)},Ye=(e,t)=>{r.moveNodes(e,t)},Ge="undefined"!=typeof navigator&&/Version\/[\d.]+.*Safari/.test(navigator.userAgent),$e=/(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9.]+)(:?\s|$)/.test(navigator.userAgent),We=[l.INLINES.HYPERLINK,l.INLINES.ENTRY_HYPERLINK,l.INLINES.ASSET_HYPERLINK];function Ve(e,t){const[n]=Array.from(ie(e,{match:e=>fe(e)&&e.type===t}));return!!n}function je(e){return 1===e.length}function Xe(e,t,n){var i;if(!(n=n??(null==(i=e.selection)?void 0:i.focus.path)))return[];const o=Array.isArray(t)?t:[t];for(let t=0;t<n.length;t++){const i=ne(e,n.slice(0,t+1));if(o.includes(i[0].type))return i}return[]}function Qe(e,t){if(!e)return!1;const[n]=Xe(e,t);return!!n}function Ze(e){Re(e,{distance:1,unit:"offset"})}function Je(e,t){we(e,{type:l.BLOCKS.PARAGRAPH,children:[{text:""}],data:{},isVoid:!1},t)}function et(e){if(!e)return!1;const[t]=Array.from(ie(e,{match:e=>!he(e)&&fe(e)&&We.includes(e.type)}));return!!t}function tt(e){Pe(e,{match:e=>!he(e)&&fe(e)&&We.includes(e.type)})}const nt=Object.values(l.INLINES),it=e=>Z(e)||fe(e)&&nt.includes(e.type),ot=e=>{const t=window.scrollX,n=window.scrollY;$(e),Ge&&setTimeout((function(){window.scrollTo(t,n)}),0)};function lt(e,t,n){((e,t,n)=>{r.toggleNodeType(e,t,n)})(e,t,n),xe(e,{data:{}})}const rt=[l.BLOCKS.DOCUMENT,l.BLOCKS.PARAGRAPH,"text"],st=(e,t,n)=>{const i=((e,t)=>C(e=>L(e,t),e=>T(e,t))(e.validations))(e,t);return void 0===i||rt.concat(i).includes(n)},at=(e,t)=>st(e,"enabledNodeTypes",t),ct=(e,t)=>st(e,"enabledMarks",t);async function dt(e,t,n){return(await e.space.getEntries({content_type:t.sys.id,query:n})).items.map(n=>{const i=o.entityHelpers.getEntityDescription({contentType:t,entity:n,localeCode:e.field.locale,defaultLocaleCode:e.locales.default}),l=o.entityHelpers.getEntryTitle({entry:n,contentType:t,localeCode:e.field.locale,defaultLocaleCode:e.locales.default,defaultTitle:"Untitled"});return{contentTypeName:t.name,displayTitle:l,id:n.sys.contentType.sys.id,description:i,entry:n}})}function ut(e,t,n){if(null==e||!e.selection)return;const i=((e,t)=>({type:e,data:{target:{sys:{id:t.sys.id,type:"Link",linkType:t.sys.type}}},children:[{text:""}],isVoid:!0}))(t,n);e.selection&&Q(e,e.selection.focus.path)?we(e,i):xe(e,i),ot(e)}const mt=e=>{const[,t]=me(e),n=ce(e,t);Oe(e,n.focus.path),ze(e,"command-prompt",n),qe(e)},pt=e=>{const[,t]=me(e),n=ce(e,t);n.focus.offset-n.anchor.offset>1&&qe(e,{at:n.focus,distance:n.focus.offset-1,reverse:!0})};function Et(e){return{inlineAllowed:at(e.field,l.INLINES.EMBEDDED_ENTRY),entriesAllowed:at(e.field,l.BLOCKS.EMBEDDED_ENTRY),assetsAllowed:at(e.field,l.BLOCKS.EMBEDDED_ASSET)}}const yt={container:s.css({position:"absolute",zIndex:b.zIndexNotification,fontWeight:b.fontWeightNormal,fontStyle:"normal",fontFamily:b.fontStackPrimary,"ul, ol, dl":{listStyle:"none",marginLeft:0}}),menuPoper:s.css({zIndex:b.zIndexModal}),menuContent:s.css({width:"400px",maxHeight:"300px"}),menuList:s.css({overflow:"auto",maxHeight:"200px"}),menuItem:s.css({display:"block",width:"100%",background:"none",border:0,margin:0,outline:"none",fontSize:b.fontSizeM,lineHeight:b.lineHeightM,fontWeight:b.fontWeightNormal,position:"relative",textAlign:"left",padding:`${b.spacingXs} ${b.spacingM}`,wordBreak:"break-word",whiteSpace:"break-spaces",cursor:"pointer",hyphens:"auto",minWidth:"150px",textDecoration:"none",color:b.gray800,"&:hover":{backgroundColor:b.gray100},"&:disabled":{opacity:.5,cursor:"auto"}}),menuItemSelected:s.css({boxShadow:"inset "+b.glowPrimary,borderRadius:b.borderRadiusMedium}),menuDivider:s.css({border:"none",width:"100%",height:"1px",background:b.gray300,margin:b.spacingXs+" 0"}),menuHeader:s.css({zIndex:b.zIndexDefault,top:0,backgroundColor:b.gray100,padding:b.spacingM}),menuFooter:s.css({position:"sticky",bottom:0,backgroundColor:b.gray100,padding:b.spacingM}),footerList:s.css({listStyle:"none",color:b.gray600,fontSize:b.fontSizeM}),thumbnail:s.css({width:"30px",height:"30px",objectFit:"cover"})},ht=({commandGroup:e,selectedItem:n})=>t.createElement("section",{key:e.group},t.createElement(y.SectionHeading,{as:"h3",marginBottom:"spacingS",marginTop:"spacingS",marginLeft:"spacingM",marginRight:"spacingM"},e.group),e.commands.map(e=>t.createElement("button",{key:e.id,id:e.id,className:s.cx(yt.menuItem,{[yt.menuItemSelected]:e.id===n}),onClick:e.callback},e.label)),t.createElement("hr",{className:yt.menuDivider,"aria-orientation":"horizontal"})),ft=({command:e,selectedItem:n})=>t.createElement("button",{key:e.id,id:e.id,className:s.cx(yt.menuItem,{[yt.menuItemSelected]:e.id===n}),onClick:e.callback},t.createElement(y.Flex,{alignItems:"center",gap:"spacingS"},e.thumbnail&&t.createElement("img",{width:"30",height:"30",src:e.thumbnail,alt:"",className:yt.thumbnail}),t.createElement("span",null,e.label))),St=({command:e})=>t.createElement("button",{key:e.id,id:e.id,className:yt.menuItem},e.label),gt=({commandItems:e,selectedItem:n})=>t.createElement(t.Fragment,null,e.map(e=>"group"in e?t.createElement(ht,{commandGroup:e,selectedItem:n}):e.callback?t.createElement(ft,{command:e,selectedItem:n}):t.createElement(St,{command:e}))),Lt=({query:e,editor:n,textContainer:i})=>{const r=X(),s=t.useRef(null),a=E.usePopper(i,null==s?void 0:s.current,{placement:"bottom-start"}),c=((e,n,i)=>{const r=e.space.getCachedContentTypes(),{inlineAllowed:s,entriesAllowed:a,assetsAllowed:c}=function(e,t){const n=!Qe(t,l.BLOCKS.TABLE),{inlineAllowed:i,entriesAllowed:o,assetsAllowed:r}=Et(e);return{inlineAllowed:i,entriesAllowed:o&&n,assetsAllowed:r&&n}}(e,i),[d,u]=t.useState(()=>{const t=t=>({id:t.sys.id,label:"Embed "+t.name,callback:()=>{dt(e,t,n).then(e=>{pt(i),u(e.length?e.map(e=>({id:`${e.id}-${e.displayTitle.replace(/\W+/g,"-").toLowerCase()}`,label:e.displayTitle,callback:()=>{if(mt(i),i.selection){const t=i.selection;i.insertSoftBreak(),ut(i,l.BLOCKS.EMBEDDED_ENTRY,e.entry),Oe(i,t),i.tracking.onCommandPaletteAction("insert",{nodeType:l.BLOCKS.EMBEDDED_ENTRY})}}})):[{id:"no-results",label:"No results"}])})}}),d=t=>({id:t.sys.id+"-inline",label:`Embed ${t.name} - Inline`,callback:()=>{dt(e,t,n).then(e=>{pt(i),u(e.length?e.map(e=>({id:`${e.id}-${e.displayTitle.replace(/\W+/g,"-").toLowerCase()}`,label:e.displayTitle,callback:()=>{const t={type:l.INLINES.EMBEDDED_ENTRY,children:[{text:""}],data:{target:{sys:{id:e.id,type:"Link",linkType:"Entry"}}}};mt(i),we(i,t),i.insertText(""),i.tracking.onCommandPaletteAction("insert",{nodeType:l.INLINES.EMBEDDED_ENTRY})}})):[{id:"no-results",label:"No results"}])})}}),m=a||s?r.map(e=>({group:e.name,commands:a&&s?[t(e),d(e)]:a?[t(e)]:[d(e)]})):[];if(c){const t={group:"Assets",commands:[{id:"embed-asset",label:"Embed Asset",callback:()=>{(async function(e,t){return(await e.space.getAssets({query:t})).items.map(t=>({contentTypeName:"Asset",displayTitle:o.entityHelpers.getAssetTitle({asset:t,localeCode:e.field.locale,defaultLocaleCode:e.locales.default,defaultTitle:"Untitled"}),id:t.sys.id,entity:t,thumbnail:t.fields.file&&t.fields.file[e.field.locale]&&t.fields.file[e.field.locale].url+"?h=30"}))})(e,n).then(e=>{pt(i),u(e.length?e.map(e=>({id:`${e.id}-${e.displayTitle.replace(/\W+/g,"-").toLowerCase()}`,label:e.displayTitle,thumbnail:e.thumbnail,callback:()=>{if(mt(i),i.selection){const t=i.selection;i.insertSoftBreak(),ut(i,l.BLOCKS.EMBEDDED_ASSET,e.entity),Oe(i,t),i.tracking.onCommandPaletteAction("insert",{nodeType:l.BLOCKS.EMBEDDED_ASSET})}}})):[{id:"no-results",label:"No results"}])})}}]};return[...m,t]}return m});return n?d.reduce((e,t)=>("group"in t?t.commands.filter(e=>e.label.toLowerCase().includes(n.toLowerCase())).length>0&&e.push(t):t.label.toLowerCase().includes(n.toLowerCase())&&e.push(t),e),[]):d})(r,e,n),{selectedItem:d,isOpen:u}=((e,n)=>{const[i,o]=t.useState(()=>e.length?"group"in e[0]?e[0].commands[0].id:e[0].id:""),[l,r]=t.useState(e.length>0);return t.useEffect(()=>{if(!n.current)return;const t=Array.from(n.current.querySelectorAll("button")),l=t.find(e=>e.id===i),r=l?t.indexOf(l):0;function s(e){if(S("up",e)){if(e.preventDefault(),0===r)return;o(t[r-1].id),t[r-1].scrollIntoView({block:"nearest",inline:"start"})}else if(S("down",e)){if(e.preventDefault(),r===t.length-1)return;o(t[r+1].id),t[r+1].scrollIntoView({block:"nearest",inline:"start"})}else S("enter",e)&&(e.preventDefault(),l&&(o(""),l.click()))}return!l&&t.length&&(o(t[0].id),t[0].scrollIntoView({block:"nearest",inline:"start"})),e.length&&window.addEventListener("keydown",s),()=>window.removeEventListener("keydown",s)},[e,n,i]),t.useEffect(()=>{const e=e=>{n.current&&!n.current.contains(e.target)&&r(!1)};return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[n]),{selectedItem:i,isOpen:l}})(c,s);return c.length?t.createElement("div",{className:yt.container,tabIndex:-1,contentEditable:!1},t.createElement("div",{role:"alert"},t.createElement(y.ScreenReaderOnly,null,"Richtext commands. Currently focused item: ",d,". Press ",t.createElement("kbd",null,"enter")," to select, ",t.createElement("kbd",null,"arrows")," to navigate, ",t.createElement("kbd",null,"escape")," to close.")),t.createElement(h.Portal,null,t.createElement("div",{"aria-hidden":!0,ref:s,className:yt.menuPoper,style:a.styles.popper,...a.attributes.popper},t.createElement(y.Popover,{isOpen:u,usePortal:!1,autoFocus:!1},t.createElement(y.Popover.Trigger,null,t.createElement("span",null)),t.createElement(y.Popover.Content,{className:yt.menuContent,testId:"rich-text-commands"},t.createElement("header",{className:yt.menuHeader},t.createElement(y.SectionHeading,{marginBottom:"none"},"Richtext commands")),t.createElement("div",{className:yt.menuList,"data-test-id":"rich-text-commands-list"},t.createElement(gt,{commandItems:c,selectedItem:d})),t.createElement("footer",{className:yt.menuFooter},t.createElement(y.Stack,{as:"ul",margin:"none",padding:"none",spacing:"spacingS",className:yt.footerList},t.createElement("li",null,t.createElement("kbd",null,"↑"),t.createElement("kbd",null,"↓")," to navigate"),t.createElement("li",null,t.createElement("kbd",null,"↵")," to confirm"),t.createElement("li",null,t.createElement("kbd",null,"esc")," to close")))))))):null},Ct=e=>{const n=t.useMemo(()=>{return(t=e.text.text).startsWith("/")?t.slice(1):t;var t},[e.text.text]),i=e.editor,[o,l]=t.useState();return t.createElement("span",{ref:e=>{l(e)},...e.attributes},e.children,t.createElement(Lt,{query:n,editor:i,textContainer:o}))};function Tt(){const e=[l.BLOCKS.EMBEDDED_ENTRY,l.BLOCKS.EMBEDDED_ASSET,l.BLOCKS.HR,l.INLINES.EMBEDDED_ENTRY],t={TABLE:[l.INLINES.EMBEDDED_ENTRY]};return{key:"DragAndDropPlugin",handlers:{onDrop:n=>i=>{const[o]=Array.from(ie(n,{match:t=>e.includes(t.type)}));if(!o)return!1;const[l]=o;if(!i.nativeEvent.target)return!1;const r=function(e){const t=[];for(t.push(e);e.parentNode;)t.unshift(e.parentNode),e=e.parentNode;return t}(i.nativeEvent.target).some(e=>{var n;return!(!t[e.nodeName]||null!=(n=t[e.nodeName])&&n.includes(l.type))});return r||n.history.undos.push([]),r}}}}function bt(e){return function(t){const i=function(e){const t=U(void 0);return P(t)}(),o=n.useCallback(()=>null==i?void 0:i.tracking.onViewportAction("linkRendered"),[i]);return n.createElement(e,{...t,onEntityFetchComplete:o})}}const It=t.memo(e=>void 0===e.asset?t.createElement(y.AssetCard,{size:"default",isLoading:!0}):"failed"===e.asset?t.createElement(i.MissingEntityCard,{entityType:"Asset",isDisabled:e.isDisabled,onRemove:e.onRemove}):t.createElement(i.WrappedAssetCard,{getEntityScheduledActions:e.loadEntityScheduledActions,size:"small",isSelected:e.isSelected,isDisabled:e.isDisabled,localeCode:e.locale,defaultLocaleCode:e.sdk.locales.default,asset:e.asset,onEdit:e.onEdit,onRemove:e.isDisabled?void 0:e.onRemove,isClickable:!1}),a);function At(e){const{onEntityFetchComplete:n}=e,{data:o,status:l}=i.useEntity("Asset",e.assetId),{getEntityScheduledActions:r}=i.useEntityLoader(),s=t.useCallback(()=>r("Asset",e.assetId),[r,e.assetId]);return t.useEffect(()=>{"success"===l&&(null==n||n())},[n,l]),t.createElement(It,{asset:o,sdk:e.sdk,isDisabled:e.isDisabled,isSelected:e.isSelected,loadEntityScheduledActions:s,locale:e.locale,onEdit:e.onEdit,onRemove:e.onRemove})}It.displayName="InternalAssetCard";const kt=t.memo(e=>{const{entry:n,sdk:o,loadEntityScheduledActions:l}=e;if(void 0===n)return t.createElement(y.EntryCard,{isLoading:!0});if("failed"===n)return t.createElement(i.MissingEntityCard,{entityType:"Entry",isDisabled:e.isDisabled,onRemove:e.onRemove});const r=o.space.getCachedContentTypes().find(e=>e.sys.id===n.sys.contentType.sys.id);return t.createElement(i.WrappedEntryCard,{size:"default",getAsset:e.sdk.space.getAsset,getEntityScheduledActions:l,isSelected:e.isSelected,isDisabled:e.isDisabled,localeCode:e.locale,defaultLocaleCode:e.sdk.locales.default,contentType:r,entry:n,onEdit:e.onEdit,onRemove:e.isDisabled?void 0:e.onRemove,isClickable:!1})},a);kt.displayName="ReferenceCard";const Nt=e=>{const{entryId:n,onEntityFetchComplete:o}=e,{data:l,status:r}=i.useEntity("Entry",n),{getEntityScheduledActions:s}=i.useEntityLoader(),a=t.useCallback(()=>s("Entry",n),[s,n]);return t.useEffect(()=>{"success"===r&&(null==o||o())},[o,r]),t.createElement(kt,{entry:l,sdk:e.sdk,locale:e.locale,isDisabled:e.isDisabled,isSelected:e.isSelected,onEdit:e.onEdit,onRemove:e.onRemove,loadEntityScheduledActions:a})},vt={root:s.css({marginBottom:"1.25rem !important",display:"block"}),container:s.css({display:"inline-block",verticalAlign:"text-top",width:"100%"})};function Dt(e){const{attributes:t,children:i,element:o,onEntityFetchComplete:l}=e,r=d.useSelected(),s=Y(),a=X(),c=d.useReadOnly(),{id:u,linkType:m}=o.data.target.sys,p=n.useCallback(()=>("Asset"===m?a.navigator.openAsset:a.navigator.openEntry)(u,{slideIn:!0}),[a,u,m]),E=n.useCallback(()=>{if(!s)return;const e=Se(s,o);Ue(s,{at:e})},[s,o]);return n.createElement("div",{...t,className:vt.root,"data-entity-type":m,"data-entity-id":u,contentEditable:!!$e&&void 0,draggable:!!$e||void 0},n.createElement("div",{contentEditable:!$e&&void 0,draggable:!!$e||void 0,className:vt.container},"Entry"===m&&n.createElement(Nt,{sdk:a,entryId:u,locale:a.field.locale,isDisabled:c,isSelected:r,onRemove:E,onEdit:p,onEntityFetchComplete:l}),"Asset"===m&&n.createElement(At,{sdk:a,assetId:u,locale:a.field.locale,isDisabled:c,isSelected:r,onRemove:E,onEdit:p,onEntityFetchComplete:l})),i)}function Bt(e,t){return C(e=>L(e,"nodes"),e=>T(e,["nodes",t]),e=>L(e,"linkContentType"),e=>T(e,"linkContentType",[]))(e.validations)}function Ot(e,t){return{entityType:Rt(t),locale:e.locale||null,contentTypes:Bt(e,t)}}function Rt(e){const t=e.split("-");if(-1!==t.indexOf("entry"))return"Entry";if(-1!==t.indexOf("asset"))return"Asset";throw new Error(`RichText node type \`${e}\` has no associated \`entityType\``)}function Kt(e){const t=new Set;let n,i,o=!1;const l=()=>({wasClosed:o,isActive:!o&&i===n}),r=e.onSlideInNavigation(({oldSlideLevel:e,newSlideLevel:s})=>{void 0===n&&(n=e),i=s,s<n&&(o=!0,r(),t.clear()),l().isActive&&s!==e&&t.forEach(e=>e())});return{status:l,onActive:function(e){return o?c:(l().isActive&&e(),t.add(e),()=>t.delete(e))},unwatch:function(){r(),t.clear()}}}async function xt(e,t,n,i){i("openCreateEmbedDialog",{nodeType:e});const{field:o,dialogs:s}=t,a=Ot(o,e),c="Asset"===a.entityType?s.selectSingleAsset:s.selectSingleEntry,d={...a,withCreate:!0},{selection:u}=n,m=Kt(t.navigator),p=await c(d);p?(Oe(n,u),function(e,t,n){if(null==e||!e.selection)return;const i=((e,t)=>({type:e,data:{target:{sys:{id:t.sys.id,type:"Link",linkType:t.sys.type}}},children:[{text:""}],isVoid:!0}))(t,n);e.selection&&Q(e,e.selection.focus.path)?we(e,i):xe(e,i)}(n,e,p),function(e){const t=me(e,{match:{type:[l.BLOCKS.EMBEDDED_ASSET,l.BLOCKS.EMBEDDED_ENTRY]}});if(!t)return;const n=t[1].length-1,i=((e,t)=>r.getLastNodeByLevel(e,t))(e,n),o=l.TEXT_CONTAINERS.includes((null==i?void 0:i[0].type)??"");0===n||o||Je(e),Ze(e)}(n),i("insert",{nodeType:e})):i("cancelCreateEmbedDialog",{nodeType:e}),m.onActive(()=>{m.unwatch(),ot(n)})}const wt=s.css({marginRight:"10px"});function Mt({isDisabled:e,nodeType:t,onClose:i}){const o=Y(),l=X(),r=function(e){const t=e.toLowerCase().split("-");if(t.includes("entry"))return"Entry";if(t.includes("asset"))return"Asset";throw new Error(`Node type \`${e}\` has no associated \`entityType\``)}(t);return n.createElement(y.Menu.Item,{disabled:e,className:"rich-text__"+t+"-list-item",onClick:async e=>{e.preventDefault(),o&&(i(),await xt(t,l,o,o.tracking.onToolbarAction))},testId:"toolbar-toggle-"+t},n.createElement(y.Flex,{alignItems:"center",flexDirection:"row"},n.createElement(y.Icon,{as:"Asset"===r?I.AssetIcon:I.EmbeddedEntryBlockIcon,className:"rich-text__embedded-entry-list-icon "+wt,variant:"secondary"}),n.createElement("span",null,r)))}const _t={[l.BLOCKS.EMBEDDED_ENTRY]:"Entry",[l.BLOCKS.EMBEDDED_ASSET]:"Asset"};function Pt(e,t){return(n,{options:{hotkey:i}})=>o=>{const[,l]=Xe(n,e);if(l){const e="Backspace"===o.key;("Delete"===o.key||e)&&(o.preventDefault(),Ue(n,{at:l}))}else i&&S(i,o)&&xt(e,t,n,n.tracking.onShortcutAction)}}const Ht=(e,t)=>n=>({key:e,type:e,isElement:!0,isVoid:!0,component:bt(Dt),options:{hotkey:t},handlers:{onKeyDown:Pt(e,n)},deserializeHtml:{rules:[{validAttribute:{"data-entity-type":_t[e]}}],withoutChildren:!0,getNode:t=>({type:e,children:[{text:""}],isVoid:!0,data:{target:{sys:{id:t.getAttribute("data-entity-id"),linkType:t.getAttribute("data-entity-type"),type:"Link"}}}})}}),zt=Ht(l.BLOCKS.EMBEDDED_ENTRY,"mod+shift+e"),Ft=Ht(l.BLOCKS.EMBEDDED_ASSET,"mod+shift+a"),{getEntryTitle:qt,getEntryStatus:Ut}=o.entityHelpers,Yt={scheduledIcon:s.css({verticalAlign:"text-bottom",marginRight:b.spacing2Xs})};function Gt(e){const{data:t,status:o}=i.useEntity("Entry",e.entryId),{getEntityScheduledActions:r}=i.useEntityLoader(),s=e.sdk.space.getCachedContentTypes(),{onEntityFetchComplete:a}=e,c=n.useMemo(()=>{if(t&&s)return s.find(e=>e.sys.id===t.sys.contentType.sys.id)},[s,t]);n.useEffect(()=>{"success"===o&&(null==a||a())},[o,a]);const d=c?c.name:"",u=n.useMemo(()=>qt({entry:t,contentType:c,localeCode:e.sdk.field.locale,defaultLocaleCode:e.sdk.locales.default,defaultTitle:"Untitled"}),[t,c,e.sdk.field.locale,e.sdk.locales.default]);if("error"===o)return n.createElement(y.InlineEntryCard,{title:"Entry missing or inaccessible",testId:l.INLINES.EMBEDDED_ENTRY,isSelected:e.isSelected});if("loading"===o)return n.createElement(y.InlineEntryCard,{isLoading:!0});const m=Ut(t.sys);return"deleted"===m?n.createElement(y.InlineEntryCard,{title:"Entry missing or inaccessible",testId:l.INLINES.EMBEDDED_ENTRY,isSelected:e.isSelected,actions:[n.createElement(y.MenuItem,{key:"remove",onClick:e.onRemove,testId:"delete"},"Remove")]}):n.createElement(y.InlineEntryCard,{testId:l.INLINES.EMBEDDED_ENTRY,isSelected:e.isSelected,title:`${d}: ${u}`,status:m,actions:[n.createElement(y.MenuItem,{key:"edit",onClick:e.onEdit},"Edit"),n.createElement(y.MenuItem,{key:"remove",onClick:e.onRemove,disabled:e.isDisabled,testId:"delete"},"Remove")]},n.createElement(i.ScheduledIconWithTooltip,{getEntityScheduledActions:()=>r("Entry",e.entryId),entityType:"Entry",entityId:t.sys.id},n.createElement(I.ClockIcon,{className:Yt.scheduledIcon,variant:"muted",testId:"scheduled-icon"})),n.createElement(y.Text,null,u))}function $t(e){return{type:l.INLINES.EMBEDDED_ENTRY,children:[{text:""}],data:{target:{sys:{id:e,type:"Link",linkType:"Entry"}}}}}const Wt={icon:s.css({marginRight:"10px"}),root:s.css({display:"inline-block",margin:"0 "+b.spacing2Xs,fontSize:"inherit",span:{userSelect:"none"}})};function Vt(e){const n=Y(),i=X(),o=d.useSelected(),{id:l}=e.element.data.target.sys,r=d.useReadOnly();return t.createElement("span",{...e.attributes,className:Wt.root,"data-embedded-entity-inline-id":l,contentEditable:!!$e&&void 0,draggable:!!$e||void 0},t.createElement("span",{contentEditable:!$e&&void 0,draggable:!!$e||void 0},t.createElement(Gt,{sdk:i,entryId:l,isSelected:o,isDisabled:r,onRemove:function(){if(!n)return;const t=Se(n,e.element);Ue(n,{at:t})},onEdit:function(){return i.navigator.openEntry(l,{slideIn:{waitForClose:!0}}).then(()=>{n&&ot(n)})},onEntityFetchComplete:e.onEntityFetchComplete})),e.children)}async function jt(e,t,n){n("openCreateEmbedDialog",{nodeType:l.INLINES.EMBEDDED_ENTRY});const i={...Ot(t.field,l.INLINES.EMBEDDED_ENTRY),withCreate:!0},{selection:o}=e,r=Kt(t.navigator),s=await t.dialogs.selectSingleEntry(i);s?(Oe(e,o),we(e,$t(s.sys.id)),n("insert",{nodeType:l.INLINES.EMBEDDED_ENTRY})):n("cancelCreateEmbedDialog",{nodeType:l.INLINES.EMBEDDED_ENTRY}),r.onActive(()=>{r.unwatch(),ot(e)})}function Xt(e){const n=Y(),i=X();return t.createElement(y.Menu.Item,{disabled:e.isDisabled,className:"rich-text__entry-link-block-button",testId:"toolbar-toggle-"+l.INLINES.EMBEDDED_ENTRY,onClick:async function(t){t.preventDefault(),n&&(e.onClose(),await jt(n,i,n.tracking.onToolbarAction),Ze(n))}},t.createElement(y.Flex,{alignItems:"center",flexDirection:"row"},t.createElement(I.EmbeddedEntryInlineIcon,{variant:"secondary",className:"rich-text__embedded-entry-list-icon "+Wt.icon}),t.createElement("span",null,"Inline entry")))}function Qt(e){return{key:l.INLINES.EMBEDDED_ENTRY,type:l.INLINES.EMBEDDED_ENTRY,isElement:!0,isInline:!0,isVoid:!0,component:bt(Vt),options:{hotkey:"mod+shift+2"},handlers:{onKeyDown:Zt(e)},deserializeHtml:{rules:[{validAttribute:"data-embedded-entity-inline-id"}],withoutChildren:!0,getNode:e=>$t(e.getAttribute("data-embedded-entity-inline-id"))}}}function Zt(e){return function(t,{options:{hotkey:n}}){return function(i){t&&n&&S(n,i)&&jt(t,e,t.tracking.onShortcutAction)}}}const Jt={dropdown:{root:s.css`
2
2
  font-weight: ${b.fontWeightDemiBold};
3
3
  `,[l.BLOCKS.PARAGRAPH]:s.css`
4
4
  font-size: ${b.fontSizeL};