UNPKG

@blocknote/react

Version:

A "Notion-style" block-based extensible text editor built on top of Prosemirror and Tiptap.

2 lines 11 kB
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,o)=>(o=n==null?{}:e(i(n)),s(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n));let l=require("react"),u=require("@floating-ui/react"),d=require("use-sync-external-store/shim/with-selector"),f=require("fast-deep-equal/es6/react.js");f=c(f,1);let p=require("react/jsx-runtime"),m=require("@blocknote/core"),h=require("@tiptap/core");var g=(0,l.createContext)(void 0);function _(e){return(0,l.useContext)(g)}function v(e){let t=_(e);if(!t?.editor)throw Error(`useBlockNoteEditor was called outside of a BlockNoteContext provider or BlockNoteView component`);return t.editor}function y(e,t=e=>e){return(0,d.useSyncExternalStoreWithSelector)(e.subscribe,()=>e.state,()=>e.state,t,b)}function b(e,t){if(Object.is(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[n,r]of e)if(!t.has(n)||!Object.is(r,t.get(n)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();let n=x(e);return n.length===x(t).length&&n.every(n=>Object.prototype.hasOwnProperty.call(t,n)&&Object.is(e[n],t[n]))}function x(e){return Object.keys(e).concat(Object.getOwnPropertySymbols(e))}function S(e,t){let n=(t?.editor??v()).getExtension(e);if(!n)throw Error(`Extension not found`,{cause:{plugin:e}});return n}function C(e,t){let{store:n}=S(e,t);if(!n)throw Error(`Store not found on plugin`,{cause:{plugin:e}});return y(n,t?.selector)}var w=typeof window<`u`?l.useLayoutEffect:l.useEffect,T=class{transactionNumber=0;lastTransactionNumber=0;lastSnapshot;editor;subscribers=new Set;constructor(e){this.editor=e,this.lastSnapshot={editor:e,transactionNumber:0},this.getSnapshot=this.getSnapshot.bind(this),this.getServerSnapshot=this.getServerSnapshot.bind(this),this.watch=this.watch.bind(this),this.subscribe=this.subscribe.bind(this)}getSnapshot(){return this.transactionNumber===this.lastTransactionNumber?this.lastSnapshot:(this.lastTransactionNumber=this.transactionNumber,this.lastSnapshot={editor:this.editor,transactionNumber:this.transactionNumber},this.lastSnapshot)}getServerSnapshot(){return{editor:null,transactionNumber:0}}subscribe(e){return this.subscribers.add(e),()=>{this.subscribers.delete(e)}}watch(e,t){if(this.editor=e,this.editor){let e=()=>{this.transactionNumber+=1,this.subscribers.forEach(e=>e())},n=this.editor._tiptapEditor,r={all:[`transaction`,`create`,`mount`,`unmount`],mount:[`create`,`mount`,`unmount`],selection:[`selectionUpdate`],change:[`update`]};for(let i of r[t])n.on(i,e);return()=>{for(let i of r[t])n.off(i,e)}}}};function E(e){let t=_(),n=e.editor||t?.editor||null,r=e.on||`all`,[i]=(0,l.useState)(()=>new T(n)),a=(0,d.useSyncExternalStoreWithSelector)(i.subscribe,i.getSnapshot,i.getServerSnapshot,e.selector,e.equalityFn??f.default);return w(()=>i.watch(n,r),[n,i,r]),(0,l.useDebugValue)(a),a}function D(e){let t=_();if(e||=t?.editor,!e)throw Error("'editor' is required in `useEditorDOMElement`, either from BlockNoteContext or as a function argument");return E({editor:e,selector:e=>e.editor.domElement,equalityFn:(e,t)=>e===t,on:`mount`})}var O=(0,l.createContext)(void 0);function k(){return(0,l.useContext)(O)}var A=typeof window<`u`?l.useInsertionEffect:l.useEffect,j=(0,l.createContext)(null);function M(){let e=(0,l.useContext)(j),t=D();return e||(t?.parentElement??null)}function N(e){return(0,p.jsx)(j.Provider,{value:null,children:e.children})}function P(e){let{target:t,children:n}=e,r=v(),i=k()?.applyThemedRoot,[a]=(0,l.useState)(()=>typeof document>`u`?null:document.createElement(`div`));return A(()=>{if(!(!a||!t))return t.appendChild(a),()=>a.remove()},[a,t]),A(()=>{!a||!t||i?.(a)},[a,t,i]),A(()=>{if(!(!a||!t))return r.registerPortalElement(a),()=>r.unregisterPortalElement(a)},[r,a,t]),t===void 0?n:(0,p.jsx)(j.Provider,{value:a,children:n})}function F(){let[e]=(0,l.useState)(()=>{if(typeof document>`u`)return null;let e=document.createElement(`span`);return e.className=`bn-portal-anchor`,e}),t=(0,l.useCallback)(t=>{t&&e&&e.parentElement!==t&&t.appendChild(e)},[e]);return{anchor:e,holder:(0,p.jsx)(`span`,{ref:t,className:I,style:{position:`absolute`,width:0,height:0,overflow:`visible`}})}}var I=`bn-portal-anchor-holder`;function L(e){return Array.from(e.childNodes).some(e=>!(e instanceof Element&&e.classList.contains(I)))}function R(e){let{anchor:t,holder:n}=F(),r=M(),i=t??r,a=typeof e.children==`function`?e.children(i):e.children;return(0,p.jsxs)(p.Fragment,{children:[n,(0,p.jsx)(j.Provider,{value:i,children:a})]})}function z(e){let t=new DOMRect,n=`getBoundingClientRect`in e?()=>e.getBoundingClientRect():()=>e.element.getBoundingClientRect();return()=>e.element&&(e.cacheMountedBoundingClientRect??!0)?(e.element.isConnected&&(t=n()),t):n()}function B(e,t){return e?t?(n,r,i)=>{let a=e(n,r,i),o=t(n,r,i);return()=>{a?.(),o?.()}}:e:t}var V=e=>{let t=v(),n=M(),{whileElementsMounted:r,middleware:i,...a}=e.useFloatingOptions??{},{refs:o,floatingStyles:s,context:c,middlewareData:d}=(0,u.useFloating)({whileElementsMounted:B(u.autoUpdate,e.useFloatingOptions?.whileElementsMounted),middleware:[...i??[],(0,u.hide)()],...a}),{isMounted:f,styles:m}=(0,u.useTransitionStyles)(c,e.useTransitionStylesProps),{status:h}=(0,u.useTransitionStatus)(c,e.useTransitionStatusProps),g=(0,u.useDismiss)(c,e.useDismissProps),_=(0,u.useHover)(c,{enabled:!1,...e.useHoverProps}),{getFloatingProps:y}=(0,u.useInteractions)([g,_]),b=(0,l.useRef)(``),x=(0,l.useRef)(null),S=(0,u.useMergeRefs)([x,o.setFloating]);if((0,l.useEffect)(()=>{if(e.reference){let n=`element`in e.reference?e.reference.element:void 0;n!==void 0&&(e.focusManagerProps?.disabled||!t.isWithinEditor(n))&&o.setReference(n);let r=`getClientRects`in e.reference?e.reference.getClientRects:void 0;o.setPositionReference({getBoundingClientRect:z(e.reference),...r?{getClientRects:r}:{},contextElement:n})}},[e.reference,o,e.focusManagerProps?.disabled,t]),(0,l.useEffect)(()=>{(h===`initial`||h===`open`)&&x.current&&L(x.current)&&(b.current=x.current.innerHTML)},[h,e.reference,e.children]),!f||!n)return!1;let C={...e.elementProps,style:{display:`flex`,...e.elementProps?.style,zIndex:`calc(var(--bn-ui-base-z-index, 0) + ${e.elementProps?.style?.zIndex||0})`,...s,...m,...d.hide?.referenceHidden?{visibility:`hidden`}:{}},...y()};return h===`close`?(0,p.jsx)(u.FloatingPortal,{root:n,children:(0,p.jsx)(`div`,{ref:S,...C,dangerouslySetInnerHTML:{__html:b.current}})}):e.focusManagerProps?.disabled?(0,p.jsx)(u.FloatingPortal,{root:n,children:(0,p.jsx)(`div`,{ref:S,...C,children:(0,p.jsx)(R,{children:e.children})})}):(0,p.jsx)(u.FloatingPortal,{root:n,children:(0,p.jsx)(u.FloatingFocusManager,{...e.focusManagerProps,context:c,children:(0,p.jsx)(`div`,{ref:S,...C,children:(0,p.jsx)(R,{children:e.children})})})})},H=(0,l.createContext)(void 0);function U(){return(0,l.useContext)(H)}function W(){return _().editor.dictionary}var G=e=>{let{position:t,children:n,...r}=e,{from:i,to:a}=t||{},o=v(),s=D(),c=(0,l.useMemo)(()=>{if(i!==void 0&&a!==void 0)return{element:s?.firstElementChild||void 0,getBoundingClientRect:()=>(0,h.posToDOMRect)(o.prosemirrorView,i,a??i)}},[o,s,i,a]);return(0,p.jsx)(V,{reference:c,...r,children:t!==void 0&&n})},K=(e={},t=[])=>(0,l.useMemo)(()=>{let t=m.BlockNoteEditor.create(e);return window&&(window.ProseMirror=t._tiptapEditor),t},t),q=e=>{let[t,n]=(0,l.useState)(!1),r=E({editor:e.editor,selector:({editor:e})=>e.isEmpty}),i=U(),a=(0,l.useCallback)(()=>{n(!0)},[]),o=(0,l.useCallback)(()=>{n(!1)},[]);return(0,l.useEffect)(()=>{e.editable&&e.autoFocus&&e.editor.focus()},[e.autoFocus,e.editable,e.editor]),(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(i.Comments.Editor,{autoFocus:e.autoFocus,className:`bn-comment-editor`,editor:e.editor,onFocus:a,onBlur:o,editable:e.editable}),e.actions&&(0,p.jsx)(`div`,{className:`bn-comment-actions-wrapper`,children:e.actions({isFocused:t,isEmpty:r})})]})},{textColor:J,backgroundColor:Y,...X}=m.defaultStyleSpecs,Z=m.BlockNoteSchema.create({blockSpecs:{paragraph:(0,m.createParagraphBlockSpec)()},styleSpecs:X});function Q(e){return!e.hasUnsavedContent||!e.confirmBeforeDiscard||(e.confirm??(e=>window.confirm(e)))(e.message)}Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"D",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"E",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"O",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return w}}); //# sourceMappingURL=confirmDiscardUnsavedComment-CwhAQZ3p.cjs.map