@bloklabs/react 1.12.0 → 1.13.0
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.
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +195 -189
- package/package.json +2 -2
- package/src/config-keys.ts +4 -0
- package/src/useBlok.ts +40 -0
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("react"),t=require("@bloklabs/core"),n=require("@bloklabs/core/adapters"),r=require("react/jsx-runtime"),i=require("@bloklabs/core/locales"),a=require("react-dom"),o=require("@bloklabs/core/view"),s=require("react-dom/client");var c=new WeakMap;function l(e,t){c.set(e,t)}function u(e){return c.get(e)}function d(e){c.delete(e)}function f(e){"@babel/helpers - typeof";return f=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},f(e)}function p(e,t){if(f(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(f(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function m(e){var t=p(e,`string`);return f(t)==`symbol`?t:t+``}function h(e,t,n){return(t=m(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function g(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function _(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?g(Object(n),!0).forEach(function(t){h(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):g(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var v=(0,e.createContext)({});function y({defaults:e,children:t}){return(0,r.jsx)(v.Provider,{value:e,children:t})}function b(){return(0,e.useContext)(v)}function ee(e,t){if(Object.keys(e).length===0)return t;let n=_({},e);for(let e of Object.keys(t)){let r=t[e];r!==void 0&&(n[e]=r)}return(e.tools!==void 0||t.tools!==void 0)&&(n.tools=_(_({},e.tools),t.tools)),n}var x=`__blokPortalRegistry`,S=`__blokToolName`,C=()=>{let e={snapshot:new Map},t=new Set,n=new Map,r=n=>{e.snapshot=n,t.forEach(e=>e())};return{register(t,i){let a=new Map(e.snapshot),o=i.toolName===void 0?void 0:n.get(i.toolName);a.set(t,o===void 0?i:_(_({},i),{},{props:_(_({},i.props),{},{config:o})})),r(a)},unregister(t,n){let i=e.snapshot.get(t);if(i===void 0||n!==void 0&&i.hostEl!==n)return;let a=new Map(e.snapshot);a.delete(t),r(a)},setProps(t,n){let i=e.snapshot.get(t);if(i===void 0)return;let a=new Map(e.snapshot);a.set(t,_(_({},i),{},{props:_(_({},i.props),n)})),r(a)},setToolConfig(t,i){n.set(t,i);let a=[...e.snapshot].filter(([,e])=>e.toolName===t);if(a.length===0)return;let o=new Map(e.snapshot);for(let[e,t]of a)o.set(e,_(_({},t),{},{props:_(_({},t.props),{},{config:i})}));r(o)},subscribe(e){return t.add(e),()=>{t.delete(e)}},getSnapshot(){return e.snapshot}}},w=new WeakMap;function te(e,t){w.set(e,t)}function T(e){return w.get(e)}function E(e){w.delete(e)}var D=new WeakMap;function ne(e,t){D.set(e,t)}function O(e){return D.get(e)}function k(e){D.delete(e)}var A=e=>{if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null},j=(e,t)=>t.reduce((e,t)=>{if(Array.isArray(e))return typeof t==`number`?e[t]:void 0;if(A(e))return e[t]},e),re=(e,t)=>{let n=(e,t)=>{if(typeof e==`function`)return typeof t==`function`?t:e;if(Array.isArray(e)){let r=Array.isArray(t)?t:[];return e.map((e,t)=>n(e,r[t]))}if(A(e)){let r=A(t)?t:{},i={};for(let[t,a]of Object.entries(e))i[t]=n(a,r[t]);return i}return e},r=n(t,e);return A(r)?r:{}},ie=(e,t)=>{if(!A(e))return e;let n={};for(let[r,i]of Object.entries(e)){if(!A(i)||!A(i.config)){n[r]=i;continue}let e=new WeakSet,a=(n,i)=>{if(typeof n==`function`){let e=n;return function(...n){let a=t(),o=A(a)?a[r]:void 0,s=j(A(o)?o.config:void 0,i);return Reflect.apply(typeof s==`function`?s:e,this,n)}}if(Array.isArray(n))return e.has(n)?n:(e.add(n),n.map((e,t)=>a(e,[...i,t])));if(A(n)){if(e.has(n))return n;e.add(n);let t={};for(let[e,r]of Object.entries(n))t[e]=a(r,[...i,e]);return t}return n};n[r]=_(_({},i),{},{config:a(i.config,[])})}return n},M=e=>{let t=typeof e==`function`?e:e==null?void 0:e.class;return typeof t==`function`&&t.__isBlokReactBlock===!0},N=e=>{let t=typeof e==`function`?e:e==null?void 0:e.class;return typeof t==`function`&&t.__isBlokReactInlineTool===!0},ae=(e,t)=>{if(typeof e!=`object`||!e)return e;let n={};for(let[i,a]of Object.entries(e)){var r;if(!M(a)&&!N(a)){n[i]=a;continue}let e=typeof a==`function`?{class:a}:_({},a);e.config=_(_({},(r=e.config)==null?{}:r),{},{[x]:t,[S]:i});let o=e.class.__buildPortalToolbox,s=typeof o==`function`&&e.toolbox===void 0?o(t,i):void 0;s!==void 0&&(e.toolbox=s),n[i]=e}return n};function P(r,i){var a,o;let s=ee((0,e.useContext)(v),r),[c,u]=(0,e.useState)(null),f=(0,e.useRef)(s);f.current=s;let p=(0,e.useRef)({editor:null,holder:null,destroyTimeout:null,isDestroyed:!1,isEditorReady:!1,depsToken:null}),m=(0,e.useMemo)(()=>({}),i==null?[]:i),h=(0,e.useRef)(s.data),g=(0,e.useRef)((0,n.createEmittedEchoWindow)()),y=(0,e.useRef)(null),b=(0,e.useRef)(s.data),x=(0,e.useRef)(Promise.resolve()),S=(0,e.useRef)(void 0),w=(0,e.useRef)(null),T=(0,e.useRef)(void 0),D=(0,e.useRef)(new Map),O=(0,e.useRef)(new Map),A=(0,e.useRef)(null),j=(0,e.useRef)({onChange:!1,onSave:!1,onEnter:!1,onSubmit:!1,onBeforeRender:!1,onAfterRender:!1});(0,e.useEffect)(()=>{var e;if(typeof window>`u`)return;let n=p.current;if(n.destroyTimeout!==null&&(clearTimeout(n.destroyTimeout),n.destroyTimeout=null),n.editor!==null&&!n.isDestroyed&&n.depsToken===m)return n.isEditorReady&&u(n.editor),()=>{F(n,u)};if(n.editor!==null&&!n.isDestroyed){d(n.editor),E(n.editor),k(n.editor);try{n.editor.destroy()}catch(e){}n.editor=null,n.holder=null,n.isDestroyed=!0,n.isEditorReady=!1,u(null)}let r=document.createElement(`div`);n.holder=r,n.isDestroyed=!1,n.isEditorReady=!1,n.depsToken=m;let i=f.current,a=C(),o=i.tools===void 0?void 0:ie(i.tools,()=>f.current.tools),s=o===void 0?void 0:ae(o,a);w.current=a,T.current=o,D.current=new Map,O.current=new Map(Object.entries((e=i.tools)==null?{}:e).map(([e,t])=>[e,typeof t==`object`&&t?t.toolbox:void 0]));let c={onChange:(...e)=>{var t,n;(t=(n=f.current).onChange)==null||t.call(n,...e)},onSave:(...e)=>{var t,n;h.current=e[0],g.current.record(e[0]),(t=(n=f.current).onSave)==null||t.call(n,...e)},onEnter:(...e)=>{var t,n;return(t=(n=f.current).onEnter)==null?void 0:t.call(n,...e)},onSubmit:(...e)=>{var t,n;(t=(n=f.current).onSubmit)==null||t.call(n,...e)},onBeforeRender:(...e)=>{var t,n,r;return(t=(n=(r=f.current).onBeforeRender)==null?void 0:n.call(r,...e))==null?e[0]:t},onAfterRender:(...e)=>{var t,n;(t=(n=f.current).onAfterRender)==null||t.call(n,...e)}};A.current=c;let v={onChange:i.onChange!==void 0,onSave:i.onSave!==void 0,onEnter:i.onEnter!==void 0,onSubmit:i.onSubmit!==void 0,onBeforeRender:i.onBeforeRender!==void 0,onAfterRender:i.onAfterRender!==void 0};j.current=v;let y=new t.Blok(_(_(_(_(_(_(_(_({},i),s===void 0?{}:{tools:s}),{},{holder:r,onReady:(...e)=>{var t,n;(t=(n=f.current).onReady)==null||t.call(n,...e)}},v.onChange?{onChange:c.onChange}:{}),v.onSave?{onSave:c.onSave}:{}),v.onEnter?{onEnter:c.onEnter}:{}),v.onSubmit?{onSubmit:c.onSubmit}:{}),v.onBeforeRender?{onBeforeRender:c.onBeforeRender}:{}),v.onAfterRender?{onAfterRender:c.onAfterRender}:{}));return n.editor=y,b.current=i.data,l(y,r),te(y,a),ne(y,{markRendered:e=>{g.current.clear(),h.current=e,S.current=void 0}}),y.isReady.then(()=>{n.editor===y&&!n.isDestroyed&&(n.isEditorReady=!0,u(y))}).catch(()=>{if(n.editor===y&&!n.isDestroyed){d(y),E(y),k(y);try{y.destroy()}catch(e){}n.editor=null,n.holder=null,n.isDestroyed=!0,n.isEditorReady=!1,u(null)}}),()=>{F(n,u)}},[m]),(0,e.useEffect)(()=>{let e=w.current,t=p.current;if(e===null||t.editor===null||t.isDestroyed)return;let r=f.current.tools;if(typeof r!=`object`||!r)return;let i=T.current;for(let[t,o]of Object.entries(r)){var a;if(!M(o))continue;let r=typeof o==`function`||(a=o.config)==null?{}:a,s=i==null?void 0:i[t],c=re(typeof s==`object`&&s?s.config:void 0,r),l=D.current.get(t);if(l!==void 0&&(0,n.deepEqual)(c,l))continue;let u=Object.freeze(c);D.current.set(t,u),e.setToolConfig(t,u)}}),(0,e.useEffect)(()=>{let e=p.current;if(e.editor===null||e.isDestroyed||!e.isEditorReady)return;let t=f.current.tools;if(!(typeof t!=`object`||!t))for(let[i,a]of Object.entries(t)){var r;if(!O.current.has(i))continue;let t=typeof a==`object`&&a?a.toolbox:void 0;(0,n.deepEqual)(t,O.current.get(i))||(O.current.set(i,t),(r=e.editor.tools)==null||r.update(i,{toolbox:t}))}}),(0,e.useEffect)(()=>{let e=p.current,t=A.current;if(e.editor===null||e.isDestroyed||!e.isEditorReady||t===null)return;let n=f.current,r=j.current,i={},a={value:!1},o=(e,i)=>{let o=n[e]!==void 0;o!==r[e]&&(r[e]=o,a.value=!0,i(o?t[e]:void 0))};o(`onChange`,e=>{i.onChange=e}),o(`onSave`,e=>{i.onSave=e}),o(`onEnter`,e=>{i.onEnter=e}),o(`onSubmit`,e=>{i.onSubmit=e}),o(`onBeforeRender`,e=>{i.onBeforeRender=e}),o(`onAfterRender`,e=>{i.onAfterRender=e}),a.value&&e.editor.handlers.set(i)});let N=typeof s.readOnly==`object`&&s.readOnly!==null,{enabled:P,hideControls:I}=(0,n.normalizeReadOnlyConfig)(s.readOnly);(0,e.useEffect)(()=>{c!==null&&(N?c.readOnly.set(P,{hideControls:I}):c.readOnly.set(P))},[c,P,I,N]);let{hideToolbar:L}=s;(0,e.useEffect)(()=>{c===null||L===void 0||c.toolbar.setHidden(L)},[c,L]);let{toolbarPosition:R}=s;(0,e.useEffect)(()=>{c===null||R===void 0||c.toolbar.setPosition(R)},[c,R]);let{inlineToolbar:z}=s;(0,e.useEffect)(()=>{c===null||z===void 0||c.tools.setInlineToolbar(z)},[c,z===void 0?void 0:JSON.stringify(z)]);let{autofocus:B}=s;(0,e.useEffect)(()=>{c===null||!B||c.focus()},[c,B]);let{theme:V}=s;(0,e.useEffect)(()=>{c===null||V===void 0||c.theme.set(V)},[c,V]);let{width:H}=s;(0,e.useEffect)(()=>{c===null||H===void 0||c.width.set(H)},[c,H]);let U=(a=s.style)==null?void 0:a.tokens,W=(0,e.useRef)((o=s.style)==null?void 0:o.tokens);(0,e.useEffect)(()=>{c===null||U===void 0||(0,n.deepEqual)(U,W.current)||(W.current=U,c.tokens.set(U))},[c,U]);let{i18n:G}=s,K=(0,e.useRef)(s.i18n);(0,e.useEffect)(()=>{if(c===null||G===void 0||(0,n.deepEqual)(G,K.current))return;K.current=G;let{locale:e,messages:t,direction:r}=G;c.i18n.update(_(_(_({},e===void 0?{}:{locale:e}),t===void 0?{}:{messages:t}),r===void 0?{}:{direction:r}))},[c,G]);let{placeholder:q}=s;(0,e.useEffect)(()=>{c===null||q===void 0||c.placeholder.set(q)},[c,q]);let{data:J}=s;return(0,e.useEffect)(()=>{if(c===null||J===void 0)return;let e=p.current;if(e.editor!==c||e.isDestroyed)return;if(y.current!==c&&(y.current=c,S.current=void 0,g.current.clear(),(0,n.deepEqual)(J,b.current))){h.current=J;return}let t=h.current,r=S.current;t!==void 0&&(0,n.equalsOutputData)(J,t)||r!==void 0&&(0,n.equalsOutputData)(J,r)||g.current.matches(J)||(g.current.clear(),S.current=J,x.current=x.current.catch(()=>void 0).then(()=>c.render((0,n.toRenderableData)(J))).then(()=>{h.current=J},()=>{}).then(()=>{S.current===J&&(S.current=void 0)}))},[c,J]),c}function F(e,t){e.destroyTimeout=setTimeout(()=>{if(e.editor!==null){d(e.editor),E(e.editor),k(e.editor);try{e.editor.destroy()}catch(e){}e.editor=null,e.holder=null,e.isDestroyed=!0,e.isEditorReady=!1,e.destroyTimeout=null,t(null)}},0)}var I=class extends e.Component{constructor(...e){super(...e),this.state={failed:!1}}static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(){}render(){return this.state.failed?null:this.props.children}};function L({registry:t}){let n=(0,e.useSyncExternalStore)(t.subscribe,t.getSnapshot,t.getSnapshot);return(0,r.jsx)(r.Fragment,{children:Array.from(n.entries()).map(([e,t])=>{let n=t.component;return(0,a.createPortal)((0,r.jsx)(I,{children:(0,r.jsx)(n,_({},t.props))}),t.hostEl,e)})})}var R=(0,e.createContext)(null);function z(){return(0,e.useContext)(R)}function B(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.includes(r))continue;n[r]=e[r]}return n}function V(e,t){if(e==null)return{};var n,r,i=B(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.includes(n)||{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var H=[`editor`];function U(e){var t,n;if(typeof window>`u`)return;let r=window.location.hash.slice(1);r!==``&&((t=(n=e.blocks).scrollToBlock)==null||t.call(n,W(r)))}function W(e){try{return decodeURIComponent(e)}catch(t){return e}}var G=(0,e.forwardRef)(function(t,n){let{editor:i}=t,a=V(t,H),o=(0,e.useRef)(null),s=e=>{if(o.current=e,typeof n==`function`)n(e);else if(n!=null){let t=n;t.current=e}};(0,e.useEffect)(()=>{if(i===null||o.current===null)return;let e=u(i);if(e!==void 0)return o.current.appendChild(e),U(i),()=>{e.remove()}},[i]);let c=i===null?void 0:T(i);return(0,r.jsx)(`div`,_(_({ref:s},a),{},{children:c===void 0?null:(0,r.jsx)(R.Provider,{value:i,children:(0,r.jsx)(L,{registry:c})})}))}),K=`autofocus.defaultBlock.dataModel.placeholder.sanitizer.hideToolbar.toolbarPosition.maxHistoryLength.historyDebounceTime.newGroupDelay.globalUndoRedo.tools.data.minHeight.logLevel.readOnly.i18n.link.linkPaste.onBeforePaste.onReady.onChange.onSave.onError.onEnter.onSubmit.onBeforeRender.onAfterRender.inlineToolbar.tunes.style.theme.onThemeChange.scrollToBlock.user.resolveUser.notifierPosition.notifier.width.migrations.uploader.captureClicksBelowEditor`.split(`.`),q=[`deps`,`onReady`,`locale`,`onBlocksRendered`,`onBlockRendered`],J=new Set(K),oe=(0,e.forwardRef)(function(t,n){let{deps:i,onReady:a,locale:o,onBlocksRendered:s,onBlockRendered:c}=t,l=V(t,q),u={},d={};for(let e of Object.keys(l)){let t=l[e];J.has(e)?u[e]=t:d[e]=t}if(o!==void 0){let e=u.i18n;u.i18n=_(_({},e),{},{locale:o})}let f=P(u,i);(0,e.useImperativeHandle)(n,()=>f,[f]);let p=(0,e.useRef)(a);p.current=a;let m=(0,e.useRef)(null);(0,e.useEffect)(()=>{if(f!==null&&m.current!==f){var e;m.current=f,(e=p.current)==null||e.call(p,f)}},[f]);let h=(0,e.useRef)(s);h.current=s;let g=(0,e.useRef)(c);g.current=c;let v=!!s,y=!!c;return(0,e.useEffect)(()=>{if(f===null)return;let e=[];if(v){let t=e=>{var t;return(t=h.current)==null?void 0:t.call(h,e)};f.on(`blocks:rendered`,t),e.push([`blocks:rendered`,t])}if(y){let t=e=>{var t;return(t=g.current)==null?void 0:t.call(g,e)};f.on(`block:rendered`,t),e.push([`block:rendered`,t])}return()=>{for(let[t,n]of e)f.off(t,n)}},[f,v,y]),(0,r.jsx)(G,_({editor:f},d))});function se(){let t=(0,e.useRef)(null);return(0,e.useMemo)(()=>({ref:e=>{t.current=e},get current(){return t.current},get isReady(){return t.current!==null},focus:e=>{var n,r;return(n=(r=t.current)==null?void 0:r.focus(e))!=null&&n},clear:()=>{let e=t.current;return e===null?Promise.resolve():e.clear().then(()=>{var t;(t=O(e))==null||t.markRendered(n.EMPTY_OUTPUT_DATA)})},save:()=>t.current===null?Promise.resolve(null):t.current.save(),render:e=>{let n=t.current;return n===null?Promise.resolve():n.render(e).then(()=>{var t;(t=O(n))==null||t.markRendered(e)})},setReadOnly:e=>{let n=t.current;return n===null?Promise.resolve(!1):n.readOnly.set(e==null?!n.readOnly.isEnabled:e)}}),[])}var Y=`block changed`;function ce(t,r={}){var i;let a=(i=r.within)==null?null:i,o=(0,e.useRef)(0),s=(0,e.useRef)(t);s.current!==t&&(s.current=t,o.current=0);let c=(0,e.useCallback)(e=>{if(t===null)return()=>void 0;let r=r=>{a!==null&&!(0,n.changeTouchesSubtree)(t,r,a)||(o.current+=1,e())};return t.on(Y,r),()=>t.off(Y,r)},[t,a]),l=(0,e.useCallback)(()=>o.current,[]);return(0,e.useSyncExternalStore)(c,l,l),(0,e.useMemo)(()=>t===null?n.EMPTY_API:(0,n.createBlocksApiForEditor)(t),[t])}function le(n={}){let{within:r,settleOn:i}=n,[a,o]=(0,e.useState)(!1);return(0,e.useEffect)(()=>{let e=()=>{var e;let n=r instanceof Element?r:(e=r==null?void 0:r.current)==null?null:e;o(r!==void 0&&n===null?!1:t.Blok.readyState({within:n,settleOn:i}).ready)};return e(),t.Blok.subscribeReady(e)},[r,i]),a}var ue=new Set([`area`,`base`,`br`,`col`,`embed`,`hr`,`img`,`input`,`link`,`meta`,`param`,`source`,`track`,`wbr`]),de=new Set([`disabled`,`open`,`controls`,`autoplay`,`loop`,`muted`,`required`,`multiple`,`playsinline`,`reversed`,`hidden`,`default`,`novalidate`,`allowfullscreen`,`itemscope`]),X={class:`className`,for:`htmlFor`,colspan:`colSpan`,rowspan:`rowSpan`,tabindex:`tabIndex`,readonly:`readOnly`,srcset:`srcSet`,srclang:`srcLang`,datetime:`dateTime`,autoplay:`autoPlay`,playsinline:`playsInline`,novalidate:`noValidate`,allowfullscreen:`allowFullScreen`,crossorigin:`crossOrigin`,referrerpolicy:`referrerPolicy`,contenteditable:`contentEditable`,spellcheck:`spellCheck`,maxlength:`maxLength`,minlength:`minLength`,usemap:`useMap`,itemscope:`itemScope`},fe=e=>{let t={};for(let n of e.split(`;`)){let e=n.indexOf(`:`);if(e===-1)continue;let r=n.slice(0,e).trim(),i=n.slice(e+1).trim();if(r===``||i===``)continue;let a=r.startsWith(`--`)?r:r.toLowerCase().replace(/-([a-z])/g,(e,t)=>t.toUpperCase());t[a]=i}return t},pe=(e,t)=>{let n={key:t};for(let[t,a]of Object.entries(e)){var r;if(t===`style`){n.style=fe(a);continue}if(t===`checked`){n.defaultChecked=!0;continue}if(t===`value`){n.defaultValue=a;continue}if(de.has(t)){var i;n[(i=X[t])==null?t:i]=!0;continue}n[(r=X[t])==null?t:r]=a}return n},Z=t=>t.map((t,n)=>{if(`text`in t)return t.text;let r=pe(t.attrs,n);return ue.has(t.tag)||t.children.length===0?(0,e.createElement)(t.tag,r):(0,e.createElement)(t.tag,r,...Z(t.children))}),Q=(t,n)=>{let r=n==null?void 0:n.schema,i=n==null?void 0:n.renderers,a=n==null?void 0:n.onUnknownBlock,s=n==null?void 0:n.toolAttributes,c=n==null?void 0:n.blockIds,l=n==null?void 0:n.transformUrl,u=n==null?void 0:n.inlineRenderers,d=n==null?void 0:n.classes;return(0,e.useMemo)(()=>(0,e.createElement)(e.Fragment,null,...Z((0,o.blocksToViewNodes)(t,{schema:r,renderers:i,onUnknownBlock:a,toolAttributes:s,blockIds:c,transformUrl:l,inlineRenderers:u,classes:d}))),[t,r,i,a,s,c,l,u,d])},me=[`data`,`schema`,`renderers`,`onUnknownBlock`,`toolAttributes`,`blockIds`,`transformUrl`,`inlineRenderers`,`classes`],he=e=>{let{data:t,schema:n,renderers:i,onUnknownBlock:a,toolAttributes:o,blockIds:s,transformUrl:c,inlineRenderers:l,classes:u}=e,d=V(e,me),f=Q(t,{schema:n,renderers:i,onUnknownBlock:a,toolAttributes:o,blockIds:s,transformUrl:c,inlineRenderers:l,classes:u==null||u});return(0,r.jsx)(`div`,_(_({"data-blok-interface":`view`},d),{},{children:f}))},ge=[`icon`,`title`],_e=[`commit`,`readOnly`],ve=[x,S],ye=(e,t,r)=>{var i;e==null||(i=e.events)==null||i.emit(n.BlockChildrenMounted,{blockId:t,childIds:r.map(e=>e.id)})},be=new Set([void 0,`user`,`api`,`convert`]),xe=[`toolbox`,`isReadOnlySupported`,`__isBlokReactBlock`,`__buildPortalToolbox`];function Se(t){var i,o;let c=e=>{if(typeof document>`u`)return null;let t=document.createElement(`div`),n=(0,s.createRoot)(t);(0,a.flushSync)(()=>{n.render(e)});let r=t.innerHTML;return n.unmount(),r===``?null:r},l=t=>{let{icon:n,title:r}=t,i=_({},V(t,ge));if(typeof r==`string`&&(i.title=r),!(0,e.isValidElement)(n))return n!==void 0&&(i.icon=n),{entry:i,deferred:!1};let a=c(n);return a===null?(i.icon=n,{entry:i,deferred:!0}):(i.icon=a,{entry:i,deferred:!1})},u=()=>{if(t.toolbox===void 0)return{value:void 0,complete:!0};let e=(Array.isArray(t.toolbox)?t.toolbox:[t.toolbox]).map(e=>l(e)),n=e.every(e=>!e.deferred),r=e.map(e=>e.entry);return{value:Array.isArray(t.toolbox)?r:r[0],complete:n}},d=(n,i)=>{if(t.toolbox===void 0)return;let a=Array.isArray(t.toolbox)?t.toolbox:[t.toolbox];if(!a.some(t=>(0,e.isValidElement)(t.title)))return;let o=a.map((t,a)=>{let{entry:o,deferred:s}=l(t);if(s&&delete o.icon,!(0,e.isValidElement)(t.title))return o;let c=document.createElement(`span`);c.setAttribute(`data-blok-mutation-free`,`true`);let u=t.title,d=()=>(0,r.jsx)(r.Fragment,{children:u});return d.displayName=`BlokToolboxTitle(${i})`,n.register(`__blok-toolbox-title__:${i}:${a}`,{hostEl:c,component:d,props:{},toolName:i}),_(_({},o),{},{titleEl:c})});return Array.isArray(t.toolbox)?o:o[0]},f={resolved:!1,value:void 0},p=()=>{if(f.resolved)return f.value;let{value:e,complete:t}=u();return t&&(f.value=e,f.resolved=!0),e},m=t.viewComponent===void 0?t.component:e=>{let n=t.viewComponent;if(e.readOnly&&n!==void 0){let{commit:t,readOnly:i}=e;return(0,r.jsx)(n,_({},V(e,_e)))}let i=t.component;return(0,r.jsx)(i,_({},e))},h=(i=class{static get toolbox(){return p()}static __buildPortalToolbox(e,t){return d(e,t)}static get isReadOnlySupported(){return!0}constructor(i){var a,o,s;this.mountSignalled=!1,this.hostEl=null,this.pendingDispatch=!1,this.anchorEl=null,this.toolbarAnchorRef=e=>{this.anchorEl=e},this.commit=e=>{var r;let i=(0,n.fillDefaults)(t.propSchema,_(_({},this.mirror),e));(0,n.deepEqual)(i,this.mirror)||(this.mirror=i,this.lastRendered=i,(r=this.registry)==null||r.setProps(this.blockApi.id,{data:i}),this.flushDispatch())},this.blockApi=i.block;let c=(a=i.config)==null?{}:a;this.registry=c[x];let l=c[S];this.toolName=typeof l==`string`?l:void 0;let u={};for(let[e,t]of Object.entries(c))ve.includes(e)||(u[e]=t);this.toolConfig=Object.freeze(u),this.api=i.api;let d=i.api;this.pointerDrag=()=>{var e;return(d==null||(e=d.blocks)==null?void 0:e.isPointerDragActive)===!0},this.mirror=(0,n.fillDefaults)(t.propSchema,(o=i.data)==null?{}:o),this.lastRendered=this.mirror,this.readOnly=i.readOnly,this.origin=(s=i.origin)==null?`api`:s;let f=this.blockApi,p=this.api;this.childrenComponent=function({childAttributes:t,childContentAttributes:i}){let a=(0,e.useRef)(null),o=(0,e.useRef)((0,n.createChildDecorationLedger)());return(0,e.useEffect)(()=>{if(a.current===null)return;let e=f.getChildren();(0,n.mountChildBlocks)(a.current,e),(0,n.applyChildDecoration)(o.current,e,{childAttributes:t,childContentAttributes:i}),ye(p,f.id,e)}),(0,r.jsx)(`div`,{ref:a,[n.DATA_ATTR.nestedBlocks]:``})},this.entryComponent=this.buildEntryComponent()}buildEntryComponent(){let n=t.onMounted,i=t.onCreated;if(n===void 0&&i===void 0)return m;let a=m,o=()=>{if(this.mountSignalled)return;this.mountSignalled=!0;let e={origin:this.origin,api:this.api};n==null||n(this.blockApi,e),be.has(this.origin)&&(i==null||i(this.blockApi,e))},s=t=>((0,e.useEffect)(o,[]),(0,r.jsx)(a,_({},t)));return s.displayName=`BlokBlockMount(${t.type})`,s}render(){var e;let t=document.createElement(`div`);return t.setAttribute(`data-blok-mutation-free`,`true`),this.hostEl=t,(e=this.registry)==null||e.register(this.blockApi.id,{hostEl:t,component:this.entryComponent,props:this.buildProps(),toolName:this.toolName}),t}rendered(){var e;(e=t.onRendered)==null||e.call(t,this.blockApi)}save(){return this.mirror}async setData(e){var r=this;let i=(0,n.fillDefaults)(t.propSchema,e==null?{}:e);return(0,n.deepEqual)(i,r.lastRendered)?!0:(r.mirror=i,r.lastRendered=i,r.pushProps({data:i}),!0)}setReadOnly(e){this.readOnly=e,this.pushProps({readOnly:e})}getToolbarAnchorElement(){var e;let n=this.anchorEl;if(n!==null&&n.isConnected)return n;let r=this.hostEl;if(!(r===null||t.getToolbarAnchorElement===void 0))return(e=t.getToolbarAnchorElement(r,this.blockApi))==null?void 0:e}moved(){var e;(e=t.onMoved)==null||e.call(t,this.blockApi)}removed(){var e,n,r;(e=this.registry)==null||e.unregister(this.blockApi.id,(n=this.hostEl)==null?void 0:n),(r=t.onRemoved)==null||r.call(t,this.blockApi)}destroy(){var e,t;(e=this.registry)==null||e.unregister(this.blockApi.id,(t=this.hostEl)==null?void 0:t)}buildProps(){return{data:this.mirror,commit:this.commit,block:this.blockApi,api:this.api,readOnly:this.readOnly,config:this.toolConfig,BlockChildren:this.childrenComponent,toolbarAnchorRef:this.toolbarAnchorRef}}pushProps(e){let t=this.registry;t!==void 0&&(0,a.flushSync)(()=>{t.setProps(this.blockApi.id,e)})}flushDispatch(){if(!this.pointerDrag()){this.pendingDispatch=!1,this.blockApi.dispatchChange();return}if(this.pendingDispatch)return;this.pendingDispatch=!0;let e=()=>{if(this.pointerDrag()){requestAnimationFrame(e);return}this.pendingDispatch=!1,this.blockApi.dispatchChange()};requestAnimationFrame(e)}},i.__isBlokReactBlock=!0,i);for(let[e,n]of Object.entries((o=t.statics)==null?{}:o))xe.includes(e)||Object.defineProperty(h,e,{value:n,writable:!0,enumerable:!0,configurable:!0});return h}var Ce=[x,S],we=e=>`__blok-inline-tool__:${e}:${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`,$=(0,e.createContext)(null);function Te(){let t=(0,e.useContext)($);if(t===null)throw Error(`useInlineTool() must be called from a component rendered by createReactInlineTool`);return t}function Ee(t){var i;return i=class{static get type(){return t.type}static get title(){return t.title}static get titleKey(){var e;return(e=t.titleKey)==null?t.type:e}static get shortcut(){return t.shortcut}static get mark(){return t.mark}static get sanitize(){return t.sanitize===void 0?t.mark===void 0?void 0:(0,n.markSanitizerConfig)(t.mark):t.sanitize}static get isReadOnlySupported(){var e;return(e=t.isReadOnlySupported)!=null&&e}constructor(e){var n;this.active=!1,this.registered=!1;let r=(n=e==null?void 0:e.config)==null?{}:n;this.api=e==null?void 0:e.api,this.registry=r[x];let i=r[S];this.toolName=typeof i==`string`?i:t.type,this.portalKey=we(this.toolName);let a={};for(let[e,t]of Object.entries(r))Ce.includes(e)||(a[e]=t);this.toolConfig=Object.freeze(a),this.portalComponent=this.createPortalComponent()}render(){let e=document.createElement(`div`);return e.setAttribute(`data-blok-mutation-free`,`true`),this.registry!==void 0&&(this.registry.register(this.portalKey,{hostEl:e,component:this.portalComponent,props:{active:this.active,config:this.toolConfig},toolName:this.toolName}),this.registered=!0),{name:this.toolName,title:t.title,icon:e,onActivate:()=>{this.activate()},isActive:()=>this.refreshActiveState()}}destroy(){var e;this.registered&&(this.registered=!1,(e=this.registry)==null||e.unregister(this.portalKey))}activate(){var e;if(typeof t.surround==`function`){let e=window.getSelection();if(!e||e.rangeCount===0)return;t.surround(e.getRangeAt(0),this.api);return}t.mark!==void 0&&((e=this.api)==null?void 0:e.marks)!==void 0&&this.api.marks.toggle(t.mark)}refreshActiveState(){let e=this.computeActiveState();if(e!==this.active&&(this.active=e,this.registered)){var t;(t=this.registry)==null||t.setProps(this.portalKey,{active:e})}return e}computeActiveState(){var e;return typeof t.checkState==`function`?!!t.checkState(window.getSelection(),this.api):t.mark!==void 0&&((e=this.api)==null?void 0:e.marks)!==void 0&&this.api.marks.has(t.mark)}createPortalComponent(){let n=this.api,i=t.mark,a=t.component,o=i!==void 0&&(n==null?void 0:n.marks)!==void 0?{has:()=>n.marks.has(i),toggle:e=>n.marks.toggle(i,e),apply:e=>n.marks.apply(i,e),remove:()=>n.marks.remove(i),read:()=>n.marks.read(i)}:null,s=t=>{let i=(0,e.useMemo)(()=>({active:t.active,config:t.config,api:n,mark:o}),[t.active,t.config]);return(0,r.jsx)($.Provider,{value:i,children:(0,r.jsx)(a,{active:t.active,config:t.config})})};return s.displayName=`BlokInlineTool(${this.toolName})`,s}},i.__isBlokReactInlineTool=!0,i.isInline=!0,i}exports.BLOK_PORTAL_REGISTRY_CONFIG_KEY=x,exports.BLOK_TOOL_NAME_CONFIG_KEY=S,exports.BlockPortalHost=L,exports.BlokContent=G,exports.BlokEditor=oe,exports.BlokProvider=y,exports.BlokView=he,exports.createBlockPortalRegistry=C,exports.createReactBlock=Se,exports.createReactInlineTool=Ee,Object.defineProperty(exports,"getDirection",{enumerable:!0,get:function(){return i.getDirection}}),Object.defineProperty(exports,"normalizeLocale",{enumerable:!0,get:function(){return i.normalizeLocale}}),exports.useBlocks=ce,exports.useBlok=P,exports.useBlokDefaults=b,exports.useBlokHandle=se,exports.useBlokInstance=z,exports.useBlokReady=le,exports.useBlokView=Q,exports.useInlineTool=Te;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("react"),t=require("@bloklabs/core"),n=require("@bloklabs/core/adapters"),r=require("react/jsx-runtime"),i=require("@bloklabs/core/locales"),a=require("react-dom"),o=require("@bloklabs/core/view"),s=require("react-dom/client");var c=new WeakMap;function l(e,t){c.set(e,t)}function u(e){return c.get(e)}function d(e){c.delete(e)}function f(e){"@babel/helpers - typeof";return f=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},f(e)}function p(e,t){if(f(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(f(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function m(e){var t=p(e,`string`);return f(t)==`symbol`?t:t+``}function h(e,t,n){return(t=m(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function g(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function _(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?g(Object(n),!0).forEach(function(t){h(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):g(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var v=(0,e.createContext)({});function y({defaults:e,children:t}){return(0,r.jsx)(v.Provider,{value:e,children:t})}function b(){return(0,e.useContext)(v)}function x(e,t){if(Object.keys(e).length===0)return t;let n=_({},e);for(let e of Object.keys(t)){let r=t[e];r!==void 0&&(n[e]=r)}return(e.tools!==void 0||t.tools!==void 0)&&(n.tools=_(_({},e.tools),t.tools)),n}var S=`__blokPortalRegistry`,C=`__blokToolName`,w=()=>{let e={snapshot:new Map},t=new Set,n=new Map,r=n=>{e.snapshot=n,t.forEach(e=>e())};return{register(t,i){let a=new Map(e.snapshot),o=i.toolName===void 0?void 0:n.get(i.toolName);a.set(t,o===void 0?i:_(_({},i),{},{props:_(_({},i.props),{},{config:o})})),r(a)},unregister(t,n){let i=e.snapshot.get(t);if(i===void 0||n!==void 0&&i.hostEl!==n)return;let a=new Map(e.snapshot);a.delete(t),r(a)},setProps(t,n){let i=e.snapshot.get(t);if(i===void 0)return;let a=new Map(e.snapshot);a.set(t,_(_({},i),{},{props:_(_({},i.props),n)})),r(a)},setToolConfig(t,i){n.set(t,i);let a=[...e.snapshot].filter(([,e])=>e.toolName===t);if(a.length===0)return;let o=new Map(e.snapshot);for(let[e,t]of a)o.set(e,_(_({},t),{},{props:_(_({},t.props),{},{config:i})}));r(o)},subscribe(e){return t.add(e),()=>{t.delete(e)}},getSnapshot(){return e.snapshot}}},T=new WeakMap;function ee(e,t){T.set(e,t)}function E(e){return T.get(e)}function D(e){T.delete(e)}var O=new WeakMap;function te(e,t){O.set(e,t)}function k(e){return O.get(e)}function A(e){O.delete(e)}var j=e=>{if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null},M=(e,t)=>t.reduce((e,t)=>{if(Array.isArray(e))return typeof t==`number`?e[t]:void 0;if(j(e))return e[t]},e),ne=(e,t)=>{let n=(e,t)=>{if(typeof e==`function`)return typeof t==`function`?t:e;if(Array.isArray(e)){let r=Array.isArray(t)?t:[];return e.map((e,t)=>n(e,r[t]))}if(j(e)){let r=j(t)?t:{},i={};for(let[t,a]of Object.entries(e))i[t]=n(a,r[t]);return i}return e},r=n(t,e);return j(r)?r:{}},re=(e,t)=>{if(!j(e))return e;let n={};for(let[r,i]of Object.entries(e)){if(!j(i)||!j(i.config)){n[r]=i;continue}let e=new WeakSet,a=(n,i)=>{if(typeof n==`function`){let e=n;return function(...n){let a=t(),o=j(a)?a[r]:void 0,s=M(j(o)?o.config:void 0,i);return Reflect.apply(typeof s==`function`?s:e,this,n)}}if(Array.isArray(n))return e.has(n)?n:(e.add(n),n.map((e,t)=>a(e,[...i,t])));if(j(n)){if(e.has(n))return n;e.add(n);let t={};for(let[e,r]of Object.entries(n))t[e]=a(r,[...i,e]);return t}return n};n[r]=_(_({},i),{},{config:a(i.config,[])})}return n},ie=e=>`[Blok] \`data\` is ignored while collaboration is on: the document lives on the sync service and is shared with everyone editing it, so replacing it from this editor would overwrite their work. To replace the whole document, call POST /sync/${e==null?`{doc}`:e}/reset on your server — it reloads the document from your own document endpoint and every open editor picks it up. To change part of it, use the blocks API (insert/update/delete).`,N=e=>{let t=typeof e==`function`?e:e==null?void 0:e.class;return typeof t==`function`&&t.__isBlokReactBlock===!0},P=e=>{let t=typeof e==`function`?e:e==null?void 0:e.class;return typeof t==`function`&&t.__isBlokReactInlineTool===!0},ae=(e,t)=>{if(typeof e!=`object`||!e)return e;let n={};for(let[i,a]of Object.entries(e)){var r;if(!N(a)&&!P(a)){n[i]=a;continue}let e=typeof a==`function`?{class:a}:_({},a);e.config=_(_({},(r=e.config)==null?{}:r),{},{[S]:t,[C]:i});let o=e.class.__buildPortalToolbox,s=typeof o==`function`&&e.toolbox===void 0?o(t,i):void 0;s!==void 0&&(e.toolbox=s),n[i]=e}return n};function F(r,i){var a,o;let s=x((0,e.useContext)(v),r),[c,u]=(0,e.useState)(null),f=(0,e.useRef)(s);f.current=s;let p=(0,e.useRef)({editor:null,holder:null,destroyTimeout:null,isDestroyed:!1,isEditorReady:!1,depsToken:null}),m=(0,e.useMemo)(()=>({}),i==null?[]:i),h=(0,e.useRef)(s.data),g=(0,e.useRef)((0,n.createEmittedEchoWindow)()),y=(0,e.useRef)(null),b=(0,e.useRef)(s.data),S=(0,e.useRef)(s.collaboration),C=(0,e.useRef)(Promise.resolve()),T=(0,e.useRef)(!1),E=(0,e.useRef)(void 0),O=(0,e.useRef)(null),k=(0,e.useRef)(void 0),j=(0,e.useRef)(new Map),M=(0,e.useRef)(new Map),P=(0,e.useRef)(null),F=(0,e.useRef)({onChange:!1,onSave:!1,onEnter:!1,onSubmit:!1,onBeforeRender:!1,onAfterRender:!1});(0,e.useEffect)(()=>{var e;if(typeof window>`u`)return;let n=p.current;if(n.destroyTimeout!==null&&(clearTimeout(n.destroyTimeout),n.destroyTimeout=null),n.editor!==null&&!n.isDestroyed&&n.depsToken===m)return n.isEditorReady&&u(n.editor),()=>{I(n,u)};if(n.editor!==null&&!n.isDestroyed){d(n.editor),D(n.editor),A(n.editor);try{n.editor.destroy()}catch(e){}n.editor=null,n.holder=null,n.isDestroyed=!0,n.isEditorReady=!1,u(null)}let r=document.createElement(`div`);n.holder=r,n.isDestroyed=!1,n.isEditorReady=!1,n.depsToken=m;let i=f.current,a=w(),o=i.tools===void 0?void 0:re(i.tools,()=>f.current.tools),s=o===void 0?void 0:ae(o,a);O.current=a,k.current=o,j.current=new Map,M.current=new Map(Object.entries((e=i.tools)==null?{}:e).map(([e,t])=>[e,typeof t==`object`&&t?t.toolbox:void 0]));let c={onChange:(...e)=>{var t,n;(t=(n=f.current).onChange)==null||t.call(n,...e)},onSave:(...e)=>{var t,n;h.current=e[0],g.current.record(e[0]),(t=(n=f.current).onSave)==null||t.call(n,...e)},onEnter:(...e)=>{var t,n;return(t=(n=f.current).onEnter)==null?void 0:t.call(n,...e)},onSubmit:(...e)=>{var t,n;(t=(n=f.current).onSubmit)==null||t.call(n,...e)},onBeforeRender:(...e)=>{var t,n,r;return(t=(n=(r=f.current).onBeforeRender)==null?void 0:n.call(r,...e))==null?e[0]:t},onAfterRender:(...e)=>{var t,n;(t=(n=f.current).onAfterRender)==null||t.call(n,...e)}};P.current=c;let v={onChange:i.onChange!==void 0,onSave:i.onSave!==void 0,onEnter:i.onEnter!==void 0,onSubmit:i.onSubmit!==void 0,onBeforeRender:i.onBeforeRender!==void 0,onAfterRender:i.onAfterRender!==void 0};F.current=v;let y=_(_(_(_(_(_(_(_({},i),s===void 0?{}:{tools:s}),{},{holder:r,onReady:(...e)=>{var t,n;(t=(n=f.current).onReady)==null||t.call(n,...e)}},v.onChange?{onChange:c.onChange}:{}),v.onSave?{onSave:c.onSave}:{}),v.onEnter?{onEnter:c.onEnter}:{}),v.onSubmit?{onSubmit:c.onSubmit}:{}),v.onBeforeRender?{onBeforeRender:c.onBeforeRender}:{}),v.onAfterRender?{onAfterRender:c.onAfterRender}:{}),x=new t.Blok(y);return n.editor=x,b.current=i.data,S.current=i.collaboration,l(x,r),ee(x,a),te(x,{markRendered:e=>{g.current.clear(),h.current=e,E.current=void 0}}),x.isReady.then(()=>{n.editor===x&&!n.isDestroyed&&(n.isEditorReady=!0,u(x))}).catch(()=>{if(n.editor===x&&!n.isDestroyed){d(x),D(x),A(x);try{x.destroy()}catch(e){}n.editor=null,n.holder=null,n.isDestroyed=!0,n.isEditorReady=!1,u(null)}}),()=>{I(n,u)}},[m]),(0,e.useEffect)(()=>{let e=O.current,t=p.current;if(e===null||t.editor===null||t.isDestroyed)return;let r=f.current.tools;if(typeof r!=`object`||!r)return;let i=k.current;for(let[t,o]of Object.entries(r)){var a;if(!N(o))continue;let r=typeof o==`function`||(a=o.config)==null?{}:a,s=i==null?void 0:i[t],c=ne(typeof s==`object`&&s?s.config:void 0,r),l=j.current.get(t);if(l!==void 0&&(0,n.deepEqual)(c,l))continue;let u=Object.freeze(c);j.current.set(t,u),e.setToolConfig(t,u)}}),(0,e.useEffect)(()=>{let e=p.current;if(e.editor===null||e.isDestroyed||!e.isEditorReady)return;let t=f.current.tools;if(!(typeof t!=`object`||!t))for(let[i,a]of Object.entries(t)){var r;if(!M.current.has(i))continue;let t=typeof a==`object`&&a?a.toolbox:void 0,o=M.current.get(i);(0,n.deepEqual)(t,o)||(M.current.set(i,t),(r=e.editor.tools)==null||r.update(i,{toolbox:t}))}}),(0,e.useEffect)(()=>{let e=p.current,t=P.current;if(e.editor===null||e.isDestroyed||!e.isEditorReady||t===null)return;let n=f.current,r=F.current,i={},a={value:!1},o=(e,i)=>{let o=n[e]!==void 0;o!==r[e]&&(r[e]=o,a.value=!0,i(o?t[e]:void 0))};o(`onChange`,e=>{i.onChange=e}),o(`onSave`,e=>{i.onSave=e}),o(`onEnter`,e=>{i.onEnter=e}),o(`onSubmit`,e=>{i.onSubmit=e}),o(`onBeforeRender`,e=>{i.onBeforeRender=e}),o(`onAfterRender`,e=>{i.onAfterRender=e}),a.value&&e.editor.handlers.set(i)});let L=typeof s.readOnly==`object`&&s.readOnly!==null,{enabled:R,hideControls:z}=(0,n.normalizeReadOnlyConfig)(s.readOnly);(0,e.useEffect)(()=>{c!==null&&(L?c.readOnly.set(R,{hideControls:z}):c.readOnly.set(R))},[c,R,z,L]);let{hideToolbar:B}=s;(0,e.useEffect)(()=>{c!==null&&B!==void 0&&c.toolbar.setHidden(B)},[c,B]);let{toolbarPosition:V}=s;(0,e.useEffect)(()=>{c!==null&&V!==void 0&&c.toolbar.setPosition(V)},[c,V]);let{inlineToolbar:H}=s,U=H===void 0?void 0:JSON.stringify(H);(0,e.useEffect)(()=>{c!==null&&H!==void 0&&c.tools.setInlineToolbar(H)},[c,U]);let{autofocus:W}=s;(0,e.useEffect)(()=>{c===null||!W||c.focus()},[c,W]);let{theme:G}=s;(0,e.useEffect)(()=>{c!==null&&G!==void 0&&c.theme.set(G)},[c,G]);let{width:K}=s;(0,e.useEffect)(()=>{c!==null&&K!==void 0&&c.width.set(K)},[c,K]);let q=(a=s.style)==null?void 0:a.tokens,J=(0,e.useRef)((o=s.style)==null?void 0:o.tokens);(0,e.useEffect)(()=>{c!==null&&q!==void 0&&((0,n.deepEqual)(q,J.current)||(J.current=q,c.tokens.set(q)))},[c,q]);let{i18n:Y}=s,X=(0,e.useRef)(s.i18n);(0,e.useEffect)(()=>{if(c===null||Y===void 0||(0,n.deepEqual)(Y,X.current))return;X.current=Y;let{locale:e,messages:t,direction:r}=Y;c.i18n.update(_(_(_({},e===void 0?{}:{locale:e}),t===void 0?{}:{messages:t}),r===void 0?{}:{direction:r}))},[c,Y]);let{placeholder:Z}=s;(0,e.useEffect)(()=>{c!==null&&Z!==void 0&&c.placeholder.set(Z)},[c,Z]);let{data:Q}=s;return(0,e.useEffect)(()=>{if(c===null||Q===void 0)return;let e=p.current;if(e.editor!==c||e.isDestroyed)return;if(y.current!==c&&(y.current=c,E.current=void 0,g.current.clear(),(0,n.deepEqual)(Q,b.current))){h.current=Q;return}let t=h.current,r=E.current;if(t!==void 0&&(0,n.equalsOutputData)(Q,t)||r!==void 0&&(0,n.equalsOutputData)(Q,r)||g.current.matches(Q))return;let i=S.current;if(i!==void 0){T.current||(T.current=!0,console.warn(ie(i.doc)));return}g.current.clear(),E.current=Q,C.current=C.current.catch(()=>void 0).then(()=>c.render((0,n.toRenderableData)(Q))).then(()=>{h.current=Q},()=>{}).then(()=>{E.current===Q&&(E.current=void 0)})},[c,Q]),c}function I(e,t){e.destroyTimeout=setTimeout(()=>{if(e.editor!==null){d(e.editor),D(e.editor),A(e.editor);try{e.editor.destroy()}catch(e){}e.editor=null,e.holder=null,e.isDestroyed=!0,e.isEditorReady=!1,e.destroyTimeout=null,t(null)}},0)}var L=class extends e.Component{constructor(...e){super(...e),this.state={failed:!1}}static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(){}render(){return this.state.failed?null:this.props.children}};function R({registry:t}){let n=(0,e.useSyncExternalStore)(t.subscribe,t.getSnapshot,t.getSnapshot);return(0,r.jsx)(r.Fragment,{children:Array.from(n.entries()).map(([e,t])=>{let n=t.component;return(0,a.createPortal)((0,r.jsx)(L,{children:(0,r.jsx)(n,_({},t.props))}),t.hostEl,e)})})}var z=(0,e.createContext)(null);function B(){return(0,e.useContext)(z)}function V(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.includes(r))continue;n[r]=e[r]}return n}function H(e,t){if(e==null)return{};var n,r,i=V(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.includes(n)||{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var U=[`editor`];function W(e){var t,n;if(typeof window>`u`)return;let r=window.location.hash.slice(1);r!==``&&((t=(n=e.blocks).scrollToBlock)==null||t.call(n,G(r)))}function G(e){try{return decodeURIComponent(e)}catch(t){return e}}var K=(0,e.forwardRef)(function(t,n){let{editor:i}=t,a=H(t,U),o=(0,e.useRef)(null),s=e=>{if(o.current=e,typeof n==`function`)n(e);else if(n!=null){let t=n;t.current=e}};(0,e.useEffect)(()=>{if(i===null||o.current===null)return;let e=u(i);if(e!==void 0)return o.current.appendChild(e),W(i),()=>{e.remove()}},[i]);let c=i===null?void 0:E(i);return(0,r.jsx)(`div`,_(_({ref:s},a),{},{children:c===void 0?null:(0,r.jsx)(z.Provider,{value:i,children:(0,r.jsx)(R,{registry:c})})}))}),q=`autofocus.defaultBlock.dataModel.placeholder.sanitizer.hideToolbar.toolbarPosition.maxHistoryLength.historyDebounceTime.newGroupDelay.globalUndoRedo.tools.data.minHeight.logLevel.readOnly.i18n.link.linkPaste.onBeforePaste.onReady.onChange.onSave.onError.onEnter.onSubmit.onBeforeRender.onAfterRender.inlineToolbar.tunes.style.theme.onThemeChange.scrollToBlock.user.resolveUser.notifierPosition.notifier.width.migrations.uploader.server.ticket.persistence.collaboration.captureClicksBelowEditor`.split(`.`),J=[`deps`,`onReady`,`locale`,`onBlocksRendered`,`onBlockRendered`],Y=new Set(q),X=(0,e.forwardRef)(function(t,n){let{deps:i,onReady:a,locale:o,onBlocksRendered:s,onBlockRendered:c}=t,l=H(t,J),u={},d={};for(let e of Object.keys(l)){let t=l[e];Y.has(e)?u[e]=t:d[e]=t}if(o!==void 0){let e=u.i18n;u.i18n=_(_({},e),{},{locale:o})}let f=F(u,i);(0,e.useImperativeHandle)(n,()=>f,[f]);let p=(0,e.useRef)(a);p.current=a;let m=(0,e.useRef)(null);(0,e.useEffect)(()=>{if(f!==null&&m.current!==f){var e;m.current=f,(e=p.current)==null||e.call(p,f)}},[f]);let h=(0,e.useRef)(s);h.current=s;let g=(0,e.useRef)(c);g.current=c;let v=!!s,y=!!c;return(0,e.useEffect)(()=>{if(f===null)return;let e=[];if(v){let t=e=>{var t;return(t=h.current)==null?void 0:t.call(h,e)};f.on(`blocks:rendered`,t),e.push([`blocks:rendered`,t])}if(y){let t=e=>{var t;return(t=g.current)==null?void 0:t.call(g,e)};f.on(`block:rendered`,t),e.push([`block:rendered`,t])}return()=>{for(let[t,n]of e)f.off(t,n)}},[f,v,y]),(0,r.jsx)(K,_({editor:f},d))});function Z(){let t=(0,e.useRef)(null);return(0,e.useMemo)(()=>({ref:e=>{t.current=e},get current(){return t.current},get isReady(){return t.current!==null},focus:e=>{var n,r;return(n=(r=t.current)==null?void 0:r.focus(e))!=null&&n},clear:()=>{let e=t.current;return e===null?Promise.resolve():e.clear().then(()=>{var t;(t=k(e))==null||t.markRendered(n.EMPTY_OUTPUT_DATA)})},save:()=>t.current===null?Promise.resolve(null):t.current.save(),render:e=>{let n=t.current;return n===null?Promise.resolve():n.render(e).then(()=>{var t;(t=k(n))==null||t.markRendered(e)})},setReadOnly:e=>{let n=t.current;return n===null?Promise.resolve(!1):n.readOnly.set(e==null?!n.readOnly.isEnabled:e)}}),[])}var Q=`block changed`;function oe(t,r={}){var i;let a=(i=r.within)==null?null:i,o=(0,e.useRef)(0),s=(0,e.useRef)(t);s.current!==t&&(s.current=t,o.current=0);let c=(0,e.useCallback)(e=>{if(t===null)return()=>void 0;let r=r=>{a!==null&&!(0,n.changeTouchesSubtree)(t,r,a)||(o.current+=1,e())};return t.on(Q,r),()=>t.off(Q,r)},[t,a]),l=(0,e.useCallback)(()=>o.current,[]);return(0,e.useSyncExternalStore)(c,l,l),(0,e.useMemo)(()=>t===null?n.EMPTY_API:(0,n.createBlocksApiForEditor)(t),[t])}function se(n={}){let{within:r,settleOn:i}=n,[a,o]=(0,e.useState)(!1);return(0,e.useEffect)(()=>{let e=()=>{var e;let n=r instanceof Element?r:(e=r==null?void 0:r.current)==null?null:e;o(r!==void 0&&n===null?!1:t.Blok.readyState({within:n,settleOn:i}).ready)};return e(),t.Blok.subscribeReady(e)},[r,i]),a}var ce=new Set([`area`,`base`,`br`,`col`,`embed`,`hr`,`img`,`input`,`link`,`meta`,`param`,`source`,`track`,`wbr`]),le=new Set([`disabled`,`open`,`controls`,`autoplay`,`loop`,`muted`,`required`,`multiple`,`playsinline`,`reversed`,`hidden`,`default`,`novalidate`,`allowfullscreen`,`itemscope`]),ue={class:`className`,for:`htmlFor`,colspan:`colSpan`,rowspan:`rowSpan`,tabindex:`tabIndex`,readonly:`readOnly`,srcset:`srcSet`,srclang:`srcLang`,datetime:`dateTime`,autoplay:`autoPlay`,playsinline:`playsInline`,novalidate:`noValidate`,allowfullscreen:`allowFullScreen`,crossorigin:`crossOrigin`,referrerpolicy:`referrerPolicy`,contenteditable:`contentEditable`,spellcheck:`spellCheck`,maxlength:`maxLength`,minlength:`minLength`,usemap:`useMap`,itemscope:`itemScope`},de=e=>{let t={};for(let n of e.split(`;`)){let e=n.indexOf(`:`);if(e===-1)continue;let r=n.slice(0,e).trim(),i=n.slice(e+1).trim();if(r===``||i===``)continue;let a=r.startsWith(`--`)?r:r.toLowerCase().replace(/-([a-z])/g,(e,t)=>t.toUpperCase());t[a]=i}return t},fe=(e,t)=>{let n={key:t};for(let[t,a]of Object.entries(e)){var r;if(t===`style`){n.style=de(a);continue}if(t===`checked`){n.defaultChecked=!0;continue}if(t===`value`){n.defaultValue=a;continue}if(le.has(t)){var i;n[(i=ue[t])==null?t:i]=!0;continue}n[(r=ue[t])==null?t:r]=a}return n},pe=t=>t.map((t,n)=>{if(`text`in t)return t.text;let r=fe(t.attrs,n);return ce.has(t.tag)||t.children.length===0?(0,e.createElement)(t.tag,r):(0,e.createElement)(t.tag,r,...pe(t.children))}),me=(t,n)=>{let r=n==null?void 0:n.schema,i=n==null?void 0:n.renderers,a=n==null?void 0:n.onUnknownBlock,s=n==null?void 0:n.toolAttributes,c=n==null?void 0:n.blockIds,l=n==null?void 0:n.transformUrl,u=n==null?void 0:n.inlineRenderers,d=n==null?void 0:n.classes;return(0,e.useMemo)(()=>(0,e.createElement)(e.Fragment,null,...pe((0,o.blocksToViewNodes)(t,{schema:r,renderers:i,onUnknownBlock:a,toolAttributes:s,blockIds:c,transformUrl:l,inlineRenderers:u,classes:d}))),[t,r,i,a,s,c,l,u,d])},he=[`data`,`schema`,`renderers`,`onUnknownBlock`,`toolAttributes`,`blockIds`,`transformUrl`,`inlineRenderers`,`classes`],ge=e=>{let{data:t,schema:n,renderers:i,onUnknownBlock:a,toolAttributes:o,blockIds:s,transformUrl:c,inlineRenderers:l,classes:u}=e,d=H(e,he),f=me(t,{schema:n,renderers:i,onUnknownBlock:a,toolAttributes:o,blockIds:s,transformUrl:c,inlineRenderers:l,classes:u==null||u});return(0,r.jsx)(`div`,_(_({"data-blok-interface":`view`},d),{},{children:f}))},_e=[`icon`,`title`],ve=[`commit`,`readOnly`],ye=[S,C],be=(e,t,r)=>{var i;e==null||(i=e.events)==null||i.emit(n.BlockChildrenMounted,{blockId:t,childIds:r.map(e=>e.id)})},xe=new Set([void 0,`user`,`api`,`convert`]),Se=[`toolbox`,`isReadOnlySupported`,`__isBlokReactBlock`,`__buildPortalToolbox`];function Ce(t){var i,o;let c=e=>{if(typeof document>`u`)return null;let t=document.createElement(`div`),n=(0,s.createRoot)(t);(0,a.flushSync)(()=>{n.render(e)});let r=t.innerHTML;return n.unmount(),r===``?null:r},l=t=>{let{icon:n,title:r}=t,i=_({},H(t,_e));if(typeof r==`string`&&(i.title=r),!(0,e.isValidElement)(n))return n!==void 0&&(i.icon=n),{entry:i,deferred:!1};let a=c(n);return a===null?(i.icon=n,{entry:i,deferred:!0}):(i.icon=a,{entry:i,deferred:!1})},u=()=>{if(t.toolbox===void 0)return{value:void 0,complete:!0};let e=(Array.isArray(t.toolbox)?t.toolbox:[t.toolbox]).map(e=>l(e)),n=e.every(e=>!e.deferred),r=e.map(e=>e.entry);return{value:Array.isArray(t.toolbox)?r:r[0],complete:n}},d=(n,i)=>{if(t.toolbox===void 0)return;let a=Array.isArray(t.toolbox)?t.toolbox:[t.toolbox];if(!a.some(t=>(0,e.isValidElement)(t.title)))return;let o=a.map((t,a)=>{let{entry:o,deferred:s}=l(t);if(s&&delete o.icon,!(0,e.isValidElement)(t.title))return o;let c=document.createElement(`span`);c.setAttribute(`data-blok-mutation-free`,`true`);let u=t.title,d=()=>(0,r.jsx)(r.Fragment,{children:u});return d.displayName=`BlokToolboxTitle(${i})`,n.register(`__blok-toolbox-title__:${i}:${a}`,{hostEl:c,component:d,props:{},toolName:i}),_(_({},o),{},{titleEl:c})});return Array.isArray(t.toolbox)?o:o[0]},f={resolved:!1,value:void 0},p=()=>{if(f.resolved)return f.value;let{value:e,complete:t}=u();return t&&(f.value=e,f.resolved=!0),e},m=t.viewComponent===void 0?t.component:e=>{let n=t.viewComponent;if(e.readOnly&&n!==void 0){let{commit:t,readOnly:i}=e,a=H(e,ve);return(0,r.jsx)(n,_({},a))}let i=t.component;return(0,r.jsx)(i,_({},e))},h=(i=class{static get toolbox(){return p()}static __buildPortalToolbox(e,t){return d(e,t)}static get isReadOnlySupported(){return!0}constructor(i){var a,o,s;this.mountSignalled=!1,this.hostEl=null,this.pendingDispatch=!1,this.anchorEl=null,this.toolbarAnchorRef=e=>{this.anchorEl=e},this.commit=e=>{var r;let i=(0,n.fillDefaults)(t.propSchema,_(_({},this.mirror),e));(0,n.deepEqual)(i,this.mirror)||(this.mirror=i,this.lastRendered=i,(r=this.registry)==null||r.setProps(this.blockApi.id,{data:i}),this.flushDispatch())},this.blockApi=i.block;let c=(a=i.config)==null?{}:a;this.registry=c[S];let l=c[C];this.toolName=typeof l==`string`?l:void 0;let u={};for(let[e,t]of Object.entries(c))ye.includes(e)||(u[e]=t);this.toolConfig=Object.freeze(u),this.api=i.api;let d=i.api;this.pointerDrag=()=>{var e;return(d==null||(e=d.blocks)==null?void 0:e.isPointerDragActive)===!0},this.mirror=(0,n.fillDefaults)(t.propSchema,(o=i.data)==null?{}:o),this.lastRendered=this.mirror,this.readOnly=i.readOnly,this.origin=(s=i.origin)==null?`api`:s;let f=this.blockApi,p=this.api;this.childrenComponent=function({childAttributes:t,childContentAttributes:i}){let a=(0,e.useRef)(null),o=(0,e.useRef)((0,n.createChildDecorationLedger)());return(0,e.useEffect)(()=>{if(a.current===null)return;let e=f.getChildren();(0,n.mountChildBlocks)(a.current,e),(0,n.applyChildDecoration)(o.current,e,{childAttributes:t,childContentAttributes:i}),be(p,f.id,e)}),(0,r.jsx)(`div`,{ref:a,[n.DATA_ATTR.nestedBlocks]:``})},this.entryComponent=this.buildEntryComponent()}buildEntryComponent(){let n=t.onMounted,i=t.onCreated;if(n===void 0&&i===void 0)return m;let a=m,o=()=>{if(this.mountSignalled)return;this.mountSignalled=!0;let e={origin:this.origin,api:this.api};n==null||n(this.blockApi,e),xe.has(this.origin)&&(i==null||i(this.blockApi,e))},s=t=>((0,e.useEffect)(o,[]),(0,r.jsx)(a,_({},t)));return s.displayName=`BlokBlockMount(${t.type})`,s}render(){var e;let t=document.createElement(`div`);return t.setAttribute(`data-blok-mutation-free`,`true`),this.hostEl=t,(e=this.registry)==null||e.register(this.blockApi.id,{hostEl:t,component:this.entryComponent,props:this.buildProps(),toolName:this.toolName}),t}rendered(){var e;(e=t.onRendered)==null||e.call(t,this.blockApi)}save(){return this.mirror}async setData(e){var r=this;let i=(0,n.fillDefaults)(t.propSchema,e==null?{}:e);return(0,n.deepEqual)(i,r.lastRendered)?!0:(r.mirror=i,r.lastRendered=i,r.pushProps({data:i}),!0)}setReadOnly(e){this.readOnly=e,this.pushProps({readOnly:e})}getToolbarAnchorElement(){var e;let n=this.anchorEl;if(n!==null&&n.isConnected)return n;let r=this.hostEl;if(r!==null&&t.getToolbarAnchorElement!==void 0)return(e=t.getToolbarAnchorElement(r,this.blockApi))==null?void 0:e}moved(){var e;(e=t.onMoved)==null||e.call(t,this.blockApi)}removed(){var e,n,r;(e=this.registry)==null||e.unregister(this.blockApi.id,(n=this.hostEl)==null?void 0:n),(r=t.onRemoved)==null||r.call(t,this.blockApi)}destroy(){var e,t;(e=this.registry)==null||e.unregister(this.blockApi.id,(t=this.hostEl)==null?void 0:t)}buildProps(){return{data:this.mirror,commit:this.commit,block:this.blockApi,api:this.api,readOnly:this.readOnly,config:this.toolConfig,BlockChildren:this.childrenComponent,toolbarAnchorRef:this.toolbarAnchorRef}}pushProps(e){let t=this.registry;t!==void 0&&(0,a.flushSync)(()=>{t.setProps(this.blockApi.id,e)})}flushDispatch(){if(!this.pointerDrag()){this.pendingDispatch=!1,this.blockApi.dispatchChange();return}if(this.pendingDispatch)return;this.pendingDispatch=!0;let e=()=>{if(this.pointerDrag()){requestAnimationFrame(e);return}this.pendingDispatch=!1,this.blockApi.dispatchChange()};requestAnimationFrame(e)}},i.__isBlokReactBlock=!0,i);for(let[e,n]of Object.entries((o=t.statics)==null?{}:o))Se.includes(e)||Object.defineProperty(h,e,{value:n,writable:!0,enumerable:!0,configurable:!0});return h}var we=[S,C],Te=e=>`__blok-inline-tool__:${e}:${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`,$=(0,e.createContext)(null);function Ee(){let t=(0,e.useContext)($);if(t===null)throw Error(`useInlineTool() must be called from a component rendered by createReactInlineTool`);return t}function De(t){var i;return i=class{static get type(){return t.type}static get title(){return t.title}static get titleKey(){var e;return(e=t.titleKey)==null?t.type:e}static get shortcut(){return t.shortcut}static get mark(){return t.mark}static get sanitize(){return t.sanitize===void 0?t.mark===void 0?void 0:(0,n.markSanitizerConfig)(t.mark):t.sanitize}static get isReadOnlySupported(){var e;return(e=t.isReadOnlySupported)!=null&&e}constructor(e){var n;this.active=!1,this.registered=!1;let r=(n=e==null?void 0:e.config)==null?{}:n;this.api=e==null?void 0:e.api,this.registry=r[S];let i=r[C];this.toolName=typeof i==`string`?i:t.type,this.portalKey=Te(this.toolName);let a={};for(let[e,t]of Object.entries(r))we.includes(e)||(a[e]=t);this.toolConfig=Object.freeze(a),this.portalComponent=this.createPortalComponent()}render(){let e=document.createElement(`div`);return e.setAttribute(`data-blok-mutation-free`,`true`),this.registry!==void 0&&(this.registry.register(this.portalKey,{hostEl:e,component:this.portalComponent,props:{active:this.active,config:this.toolConfig},toolName:this.toolName}),this.registered=!0),{name:this.toolName,title:t.title,icon:e,onActivate:()=>{this.activate()},isActive:()=>this.refreshActiveState()}}destroy(){var e;this.registered&&(this.registered=!1,(e=this.registry)==null||e.unregister(this.portalKey))}activate(){var e;if(typeof t.surround==`function`){let e=window.getSelection();if(!e||e.rangeCount===0)return;t.surround(e.getRangeAt(0),this.api);return}t.mark!==void 0&&((e=this.api)==null?void 0:e.marks)!==void 0&&this.api.marks.toggle(t.mark)}refreshActiveState(){let e=this.computeActiveState();if(e!==this.active&&(this.active=e,this.registered)){var t;(t=this.registry)==null||t.setProps(this.portalKey,{active:e})}return e}computeActiveState(){var e;return typeof t.checkState==`function`?!!t.checkState(window.getSelection(),this.api):t.mark!==void 0&&((e=this.api)==null?void 0:e.marks)!==void 0&&this.api.marks.has(t.mark)}createPortalComponent(){let n=this.api,i=t.mark,a=t.component,o=i!==void 0&&(n==null?void 0:n.marks)!==void 0?{has:()=>n.marks.has(i),toggle:e=>n.marks.toggle(i,e),apply:e=>n.marks.apply(i,e),remove:()=>n.marks.remove(i),read:()=>n.marks.read(i)}:null,s=t=>{let i=(0,e.useMemo)(()=>({active:t.active,config:t.config,api:n,mark:o}),[t.active,t.config]);return(0,r.jsx)($.Provider,{value:i,children:(0,r.jsx)(a,{active:t.active,config:t.config})})};return s.displayName=`BlokInlineTool(${this.toolName})`,s}},i.__isBlokReactInlineTool=!0,i.isInline=!0,i}exports.BLOK_PORTAL_REGISTRY_CONFIG_KEY=S,exports.BLOK_TOOL_NAME_CONFIG_KEY=C,exports.BlockPortalHost=R,exports.BlokContent=K,exports.BlokEditor=X,exports.BlokProvider=y,exports.BlokView=ge,exports.createBlockPortalRegistry=w,exports.createReactBlock=Ce,exports.createReactInlineTool=De,Object.defineProperty(exports,"getDirection",{enumerable:!0,get:function(){return i.getDirection}}),Object.defineProperty(exports,"normalizeLocale",{enumerable:!0,get:function(){return i.normalizeLocale}}),exports.useBlocks=oe,exports.useBlok=F,exports.useBlokDefaults=b,exports.useBlokHandle=Z,exports.useBlokInstance=B,exports.useBlokReady=se,exports.useBlokView=me,exports.useInlineTool=Ee;
|
package/dist/index.mjs
CHANGED
|
@@ -11,44 +11,44 @@ var I = /* @__PURE__ */ new WeakMap();
|
|
|
11
11
|
function ie(e, t) {
|
|
12
12
|
I.set(e, t);
|
|
13
13
|
}
|
|
14
|
-
function
|
|
14
|
+
function ae(e) {
|
|
15
15
|
return I.get(e);
|
|
16
16
|
}
|
|
17
|
-
function
|
|
17
|
+
function L(e) {
|
|
18
18
|
I.delete(e);
|
|
19
19
|
}
|
|
20
20
|
//#endregion
|
|
21
|
-
//#region \0@oxc-project+runtime@0.
|
|
22
|
-
function
|
|
21
|
+
//#region \0@oxc-project+runtime@0.147.0/helpers/esm/typeof.js
|
|
22
|
+
function R(e) {
|
|
23
23
|
"@babel/helpers - typeof";
|
|
24
|
-
return
|
|
24
|
+
return R = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(e) {
|
|
25
25
|
return typeof e;
|
|
26
26
|
} : function(e) {
|
|
27
27
|
return e && typeof Symbol == "function" && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
|
|
28
|
-
},
|
|
28
|
+
}, R(e);
|
|
29
29
|
}
|
|
30
30
|
//#endregion
|
|
31
|
-
//#region \0@oxc-project+runtime@0.
|
|
32
|
-
function
|
|
33
|
-
if (
|
|
31
|
+
//#region \0@oxc-project+runtime@0.147.0/helpers/esm/toPrimitive.js
|
|
32
|
+
function z(e, t) {
|
|
33
|
+
if (R(e) != "object" || !e) return e;
|
|
34
34
|
var n = e[Symbol.toPrimitive];
|
|
35
35
|
if (n !== void 0) {
|
|
36
36
|
var r = n.call(e, t || "default");
|
|
37
|
-
if (
|
|
37
|
+
if (R(r) != "object") return r;
|
|
38
38
|
throw TypeError("@@toPrimitive must return a primitive value.");
|
|
39
39
|
}
|
|
40
40
|
return (t === "string" ? String : Number)(e);
|
|
41
41
|
}
|
|
42
42
|
//#endregion
|
|
43
|
-
//#region \0@oxc-project+runtime@0.
|
|
44
|
-
function
|
|
45
|
-
var t =
|
|
46
|
-
return
|
|
43
|
+
//#region \0@oxc-project+runtime@0.147.0/helpers/esm/toPropertyKey.js
|
|
44
|
+
function B(e) {
|
|
45
|
+
var t = z(e, "string");
|
|
46
|
+
return R(t) == "symbol" ? t : t + "";
|
|
47
47
|
}
|
|
48
48
|
//#endregion
|
|
49
|
-
//#region \0@oxc-project+runtime@0.
|
|
50
|
-
function
|
|
51
|
-
return (t =
|
|
49
|
+
//#region \0@oxc-project+runtime@0.147.0/helpers/esm/defineProperty.js
|
|
50
|
+
function V(e, t, n) {
|
|
51
|
+
return (t = B(t)) in e ? Object.defineProperty(e, t, {
|
|
52
52
|
value: n,
|
|
53
53
|
enumerable: !0,
|
|
54
54
|
configurable: !0,
|
|
@@ -56,8 +56,8 @@ function H(e, t, n) {
|
|
|
56
56
|
}) : e[t] = n, e;
|
|
57
57
|
}
|
|
58
58
|
//#endregion
|
|
59
|
-
//#region \0@oxc-project+runtime@0.
|
|
60
|
-
function
|
|
59
|
+
//#region \0@oxc-project+runtime@0.147.0/helpers/esm/objectSpread2.js
|
|
60
|
+
function H(e, t) {
|
|
61
61
|
var n = Object.keys(e);
|
|
62
62
|
if (Object.getOwnPropertySymbols) {
|
|
63
63
|
var r = Object.getOwnPropertySymbols(e);
|
|
@@ -67,12 +67,12 @@ function U(e, t) {
|
|
|
67
67
|
}
|
|
68
68
|
return n;
|
|
69
69
|
}
|
|
70
|
-
function
|
|
70
|
+
function U(e) {
|
|
71
71
|
for (var t = 1; t < arguments.length; t++) {
|
|
72
72
|
var n = arguments[t] == null ? {} : arguments[t];
|
|
73
|
-
t % 2 ?
|
|
74
|
-
|
|
75
|
-
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) :
|
|
73
|
+
t % 2 ? H(Object(n), !0).forEach(function(t) {
|
|
74
|
+
V(e, t, n[t]);
|
|
75
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : H(Object(n)).forEach(function(t) {
|
|
76
76
|
Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t));
|
|
77
77
|
});
|
|
78
78
|
}
|
|
@@ -80,24 +80,24 @@ function W(e) {
|
|
|
80
80
|
}
|
|
81
81
|
//#endregion
|
|
82
82
|
//#region src/provide-blok.tsx
|
|
83
|
-
var
|
|
84
|
-
function
|
|
85
|
-
return /* @__PURE__ */ k(
|
|
83
|
+
var W = n({});
|
|
84
|
+
function G({ defaults: e, children: t }) {
|
|
85
|
+
return /* @__PURE__ */ k(W.Provider, {
|
|
86
86
|
value: e,
|
|
87
87
|
children: t
|
|
88
88
|
});
|
|
89
89
|
}
|
|
90
|
-
function
|
|
91
|
-
return s(
|
|
90
|
+
function K() {
|
|
91
|
+
return s(W);
|
|
92
92
|
}
|
|
93
93
|
function oe(e, t) {
|
|
94
94
|
if (Object.keys(e).length === 0) return t;
|
|
95
|
-
let n =
|
|
95
|
+
let n = U({}, e);
|
|
96
96
|
for (let e of Object.keys(t)) {
|
|
97
97
|
let r = t[e];
|
|
98
98
|
r !== void 0 && (n[e] = r);
|
|
99
99
|
}
|
|
100
|
-
return (e.tools !== void 0 || t.tools !== void 0) && (n.tools =
|
|
100
|
+
return (e.tools !== void 0 || t.tools !== void 0) && (n.tools = U(U({}, e.tools), t.tools)), n;
|
|
101
101
|
}
|
|
102
102
|
//#endregion
|
|
103
103
|
//#region src/block-portal-registry.ts
|
|
@@ -108,7 +108,7 @@ var q = "__blokPortalRegistry", J = "__blokToolName", se = () => {
|
|
|
108
108
|
return {
|
|
109
109
|
register(t, i) {
|
|
110
110
|
let a = new Map(e.snapshot), o = i.toolName === void 0 ? void 0 : n.get(i.toolName);
|
|
111
|
-
a.set(t, o === void 0 ? i :
|
|
111
|
+
a.set(t, o === void 0 ? i : U(U({}, i), {}, { props: U(U({}, i.props), {}, { config: o }) })), r(a);
|
|
112
112
|
},
|
|
113
113
|
unregister(t, n) {
|
|
114
114
|
let i = e.snapshot.get(t);
|
|
@@ -120,14 +120,14 @@ var q = "__blokPortalRegistry", J = "__blokToolName", se = () => {
|
|
|
120
120
|
let i = e.snapshot.get(t);
|
|
121
121
|
if (i === void 0) return;
|
|
122
122
|
let a = new Map(e.snapshot);
|
|
123
|
-
a.set(t,
|
|
123
|
+
a.set(t, U(U({}, i), {}, { props: U(U({}, i.props), n) })), r(a);
|
|
124
124
|
},
|
|
125
125
|
setToolConfig(t, i) {
|
|
126
126
|
n.set(t, i);
|
|
127
127
|
let a = [...e.snapshot].filter(([, e]) => e.toolName === t);
|
|
128
128
|
if (a.length === 0) return;
|
|
129
129
|
let o = new Map(e.snapshot);
|
|
130
|
-
for (let [e, t] of a) o.set(e,
|
|
130
|
+
for (let [e, t] of a) o.set(e, U(U({}, t), {}, { props: U(U({}, t.props), {}, { config: i }) }));
|
|
131
131
|
r(o);
|
|
132
132
|
},
|
|
133
133
|
subscribe(e) {
|
|
@@ -211,26 +211,26 @@ var Q = (e) => {
|
|
|
211
211
|
}
|
|
212
212
|
return n;
|
|
213
213
|
};
|
|
214
|
-
n[r] =
|
|
214
|
+
n[r] = U(U({}, i), {}, { config: a(i.config, []) });
|
|
215
215
|
}
|
|
216
216
|
return n;
|
|
217
|
-
}, ge = (e) => {
|
|
217
|
+
}, ge = (e) => `[Blok] \`data\` is ignored while collaboration is on: the document lives on the sync service and is shared with everyone editing it, so replacing it from this editor would overwrite their work. To replace the whole document, call POST /sync/${e == null ? "{doc}" : e}/reset on your server — it reloads the document from your own document endpoint and every open editor picks it up. To change part of it, use the blocks API (insert/update/delete).`, _e = (e) => {
|
|
218
218
|
let t = typeof e == "function" ? e : e == null ? void 0 : e.class;
|
|
219
219
|
return typeof t == "function" && t.__isBlokReactBlock === !0;
|
|
220
|
-
},
|
|
220
|
+
}, ve = (e) => {
|
|
221
221
|
let t = typeof e == "function" ? e : e == null ? void 0 : e.class;
|
|
222
222
|
return typeof t == "function" && t.__isBlokReactInlineTool === !0;
|
|
223
|
-
},
|
|
223
|
+
}, ye = (e, t) => {
|
|
224
224
|
if (typeof e != "object" || !e) return e;
|
|
225
225
|
let n = {};
|
|
226
226
|
for (let [i, a] of Object.entries(e)) {
|
|
227
227
|
var r;
|
|
228
|
-
if (!
|
|
228
|
+
if (!_e(a) && !ve(a)) {
|
|
229
229
|
n[i] = a;
|
|
230
230
|
continue;
|
|
231
231
|
}
|
|
232
|
-
let e = typeof a == "function" ? { class: a } :
|
|
233
|
-
e.config =
|
|
232
|
+
let e = typeof a == "function" ? { class: a } : U({}, a);
|
|
233
|
+
e.config = U(U({}, (r = e.config) == null ? {} : r), {}, {
|
|
234
234
|
[q]: t,
|
|
235
235
|
[J]: i
|
|
236
236
|
});
|
|
@@ -239,9 +239,9 @@ var Q = (e) => {
|
|
|
239
239
|
}
|
|
240
240
|
return n;
|
|
241
241
|
};
|
|
242
|
-
function
|
|
242
|
+
function be(e, t) {
|
|
243
243
|
var n, r;
|
|
244
|
-
let i = oe(s(
|
|
244
|
+
let i = oe(s(W), e), [a, o] = f(null), l = d(i);
|
|
245
245
|
l.current = i;
|
|
246
246
|
let p = d({
|
|
247
247
|
editor: null,
|
|
@@ -250,7 +250,7 @@ function ye(e, t) {
|
|
|
250
250
|
isDestroyed: !1,
|
|
251
251
|
isEditorReady: !1,
|
|
252
252
|
depsToken: null
|
|
253
|
-
}), h = u(() => ({}), t == null ? [] : t), g = d(i.data), _ = d(ee()), v = d(null), y = d(i.data), b = d(Promise.resolve()),
|
|
253
|
+
}), h = u(() => ({}), t == null ? [] : t), g = d(i.data), _ = d(ee()), v = d(null), y = d(i.data), b = d(i.collaboration), x = d(Promise.resolve()), S = d(!1), C = d(void 0), T = d(null), E = d(void 0), D = d(/* @__PURE__ */ new Map()), O = d(/* @__PURE__ */ new Map()), k = d(null), A = d({
|
|
254
254
|
onChange: !1,
|
|
255
255
|
onSave: !1,
|
|
256
256
|
onEnter: !1,
|
|
@@ -263,10 +263,10 @@ function ye(e, t) {
|
|
|
263
263
|
if (typeof window > "u") return;
|
|
264
264
|
let t = p.current;
|
|
265
265
|
if (t.destroyTimeout !== null && (clearTimeout(t.destroyTimeout), t.destroyTimeout = null), t.editor !== null && !t.isDestroyed && t.depsToken === h) return t.isEditorReady && o(t.editor), () => {
|
|
266
|
-
|
|
266
|
+
xe(t, o);
|
|
267
267
|
};
|
|
268
268
|
if (t.editor !== null && !t.isDestroyed) {
|
|
269
|
-
|
|
269
|
+
L(t.editor), X(t.editor), fe(t.editor);
|
|
270
270
|
try {
|
|
271
271
|
t.editor.destroy();
|
|
272
272
|
} catch (e) {}
|
|
@@ -274,8 +274,8 @@ function ye(e, t) {
|
|
|
274
274
|
}
|
|
275
275
|
let n = document.createElement("div");
|
|
276
276
|
t.holder = n, t.isDestroyed = !1, t.isEditorReady = !1, t.depsToken = h;
|
|
277
|
-
let r = l.current, i = se(), a = r.tools === void 0 ? void 0 : he(r.tools, () => l.current.tools), s = a === void 0 ? void 0 :
|
|
278
|
-
|
|
277
|
+
let r = l.current, i = se(), a = r.tools === void 0 ? void 0 : he(r.tools, () => l.current.tools), s = a === void 0 ? void 0 : ye(a, i);
|
|
278
|
+
T.current = i, E.current = a, D.current = /* @__PURE__ */ new Map(), O.current = new Map(Object.entries((e = r.tools) == null ? {} : e).map(([e, t]) => [e, typeof t == "object" && t ? t.toolbox : void 0]));
|
|
279
279
|
let c = {
|
|
280
280
|
onChange: (...e) => {
|
|
281
281
|
var t, n;
|
|
@@ -302,7 +302,7 @@ function ye(e, t) {
|
|
|
302
302
|
(t = (n = l.current).onAfterRender) == null || t.call(n, ...e);
|
|
303
303
|
}
|
|
304
304
|
};
|
|
305
|
-
|
|
305
|
+
k.current = c;
|
|
306
306
|
let u = {
|
|
307
307
|
onChange: r.onChange !== void 0,
|
|
308
308
|
onSave: r.onSave !== void 0,
|
|
@@ -311,42 +311,42 @@ function ye(e, t) {
|
|
|
311
311
|
onBeforeRender: r.onBeforeRender !== void 0,
|
|
312
312
|
onAfterRender: r.onAfterRender !== void 0
|
|
313
313
|
};
|
|
314
|
-
|
|
315
|
-
let d =
|
|
314
|
+
A.current = u;
|
|
315
|
+
let d = U(U(U(U(U(U(U(U({}, r), s === void 0 ? {} : { tools: s }), {}, {
|
|
316
316
|
holder: n,
|
|
317
317
|
onReady: (...e) => {
|
|
318
318
|
var t, n;
|
|
319
319
|
(t = (n = l.current).onReady) == null || t.call(n, ...e);
|
|
320
320
|
}
|
|
321
|
-
}, u.onChange ? { onChange: c.onChange } : {}), u.onSave ? { onSave: c.onSave } : {}), u.onEnter ? { onEnter: c.onEnter } : {}), u.onSubmit ? { onSubmit: c.onSubmit } : {}), u.onBeforeRender ? { onBeforeRender: c.onBeforeRender } : {}), u.onAfterRender ? { onAfterRender: c.onAfterRender } : {}));
|
|
322
|
-
return t.editor =
|
|
323
|
-
_.current.clear(), g.current = e,
|
|
324
|
-
} }),
|
|
325
|
-
t.editor ===
|
|
321
|
+
}, u.onChange ? { onChange: c.onChange } : {}), u.onSave ? { onSave: c.onSave } : {}), u.onEnter ? { onEnter: c.onEnter } : {}), u.onSubmit ? { onSubmit: c.onSubmit } : {}), u.onBeforeRender ? { onBeforeRender: c.onBeforeRender } : {}), u.onAfterRender ? { onAfterRender: c.onAfterRender } : {}), f = new m(d);
|
|
322
|
+
return t.editor = f, y.current = r.data, b.current = r.collaboration, ie(f, n), ce(f, i), ue(f, { markRendered: (e) => {
|
|
323
|
+
_.current.clear(), g.current = e, C.current = void 0;
|
|
324
|
+
} }), f.isReady.then(() => {
|
|
325
|
+
t.editor === f && !t.isDestroyed && (t.isEditorReady = !0, o(f));
|
|
326
326
|
}).catch(() => {
|
|
327
|
-
if (t.editor ===
|
|
328
|
-
|
|
327
|
+
if (t.editor === f && !t.isDestroyed) {
|
|
328
|
+
L(f), X(f), fe(f);
|
|
329
329
|
try {
|
|
330
|
-
|
|
330
|
+
f.destroy();
|
|
331
331
|
} catch (e) {}
|
|
332
332
|
t.editor = null, t.holder = null, t.isDestroyed = !0, t.isEditorReady = !1, o(null);
|
|
333
333
|
}
|
|
334
334
|
}), () => {
|
|
335
|
-
|
|
335
|
+
xe(t, o);
|
|
336
336
|
};
|
|
337
337
|
}, [h]), c(() => {
|
|
338
|
-
let e =
|
|
338
|
+
let e = T.current, t = p.current;
|
|
339
339
|
if (e === null || t.editor === null || t.isDestroyed) return;
|
|
340
340
|
let n = l.current.tools;
|
|
341
341
|
if (typeof n != "object" || !n) return;
|
|
342
|
-
let r =
|
|
342
|
+
let r = E.current;
|
|
343
343
|
for (let [t, a] of Object.entries(n)) {
|
|
344
344
|
var i;
|
|
345
|
-
if (!
|
|
346
|
-
let n = typeof a == "function" || (i = a.config) == null ? {} : i, o = r == null ? void 0 : r[t], s = me(typeof o == "object" && o ? o.config : void 0, n), c =
|
|
345
|
+
if (!_e(a)) continue;
|
|
346
|
+
let n = typeof a == "function" || (i = a.config) == null ? {} : i, o = r == null ? void 0 : r[t], s = me(typeof o == "object" && o ? o.config : void 0, n), c = D.current.get(t);
|
|
347
347
|
if (c !== void 0 && w(s, c)) continue;
|
|
348
348
|
let l = Object.freeze(s);
|
|
349
|
-
|
|
349
|
+
D.current.set(t, l), e.setToolConfig(t, l);
|
|
350
350
|
}
|
|
351
351
|
}), c(() => {
|
|
352
352
|
let e = p.current;
|
|
@@ -354,14 +354,14 @@ function ye(e, t) {
|
|
|
354
354
|
let t = l.current.tools;
|
|
355
355
|
if (!(typeof t != "object" || !t)) for (let [r, i] of Object.entries(t)) {
|
|
356
356
|
var n;
|
|
357
|
-
if (!
|
|
358
|
-
let t = typeof i == "object" && i ? i.toolbox : void 0;
|
|
359
|
-
w(t,
|
|
357
|
+
if (!O.current.has(r)) continue;
|
|
358
|
+
let t = typeof i == "object" && i ? i.toolbox : void 0, a = O.current.get(r);
|
|
359
|
+
w(t, a) || (O.current.set(r, t), (n = e.editor.tools) == null || n.update(r, { toolbox: t }));
|
|
360
360
|
}
|
|
361
361
|
}), c(() => {
|
|
362
|
-
let e = p.current, t =
|
|
362
|
+
let e = p.current, t = k.current;
|
|
363
363
|
if (e.editor === null || e.isDestroyed || !e.isEditorReady || t === null) return;
|
|
364
|
-
let n = l.current, r =
|
|
364
|
+
let n = l.current, r = A.current, i = {}, a = { value: !1 }, o = (e, i) => {
|
|
365
365
|
let o = n[e] !== void 0;
|
|
366
366
|
o !== r[e] && (r[e] = o, a.value = !0, i(o ? t[e] : void 0));
|
|
367
367
|
};
|
|
@@ -379,75 +379,81 @@ function ye(e, t) {
|
|
|
379
379
|
i.onAfterRender = e;
|
|
380
380
|
}), a.value && e.editor.handlers.set(i);
|
|
381
381
|
});
|
|
382
|
-
let
|
|
382
|
+
let j = typeof i.readOnly == "object" && i.readOnly !== null, { enabled: M, hideControls: N } = ne(i.readOnly);
|
|
383
383
|
c(() => {
|
|
384
|
-
a !== null && (
|
|
384
|
+
a !== null && (j ? a.readOnly.set(M, { hideControls: N }) : a.readOnly.set(M));
|
|
385
385
|
}, [
|
|
386
386
|
a,
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
387
|
+
M,
|
|
388
|
+
N,
|
|
389
|
+
j
|
|
390
390
|
]);
|
|
391
|
-
let { hideToolbar:
|
|
392
|
-
c(() => {
|
|
393
|
-
a === null || M === void 0 || a.toolbar.setHidden(M);
|
|
394
|
-
}, [a, M]);
|
|
395
|
-
let { toolbarPosition: N } = i;
|
|
391
|
+
let { hideToolbar: P } = i;
|
|
396
392
|
c(() => {
|
|
397
|
-
a
|
|
398
|
-
}, [a,
|
|
399
|
-
let {
|
|
393
|
+
a !== null && P !== void 0 && a.toolbar.setHidden(P);
|
|
394
|
+
}, [a, P]);
|
|
395
|
+
let { toolbarPosition: F } = i;
|
|
400
396
|
c(() => {
|
|
401
|
-
a
|
|
402
|
-
}, [a, P === void 0 ? void 0 : JSON.stringify(P)]);
|
|
403
|
-
let { autofocus: F } = i;
|
|
404
|
-
c(() => {
|
|
405
|
-
a === null || !F || a.focus();
|
|
397
|
+
a !== null && F !== void 0 && a.toolbar.setPosition(F);
|
|
406
398
|
}, [a, F]);
|
|
407
|
-
let {
|
|
399
|
+
let { inlineToolbar: I } = i, ae = I === void 0 ? void 0 : JSON.stringify(I);
|
|
408
400
|
c(() => {
|
|
409
|
-
a
|
|
410
|
-
}, [a,
|
|
411
|
-
let {
|
|
401
|
+
a !== null && I !== void 0 && a.tools.setInlineToolbar(I);
|
|
402
|
+
}, [a, ae]);
|
|
403
|
+
let { autofocus: R } = i;
|
|
412
404
|
c(() => {
|
|
413
|
-
a === null ||
|
|
414
|
-
}, [a,
|
|
415
|
-
let
|
|
405
|
+
a === null || !R || a.focus();
|
|
406
|
+
}, [a, R]);
|
|
407
|
+
let { theme: z } = i;
|
|
416
408
|
c(() => {
|
|
417
|
-
a
|
|
409
|
+
a !== null && z !== void 0 && a.theme.set(z);
|
|
418
410
|
}, [a, z]);
|
|
419
|
-
let {
|
|
411
|
+
let { width: B } = i;
|
|
412
|
+
c(() => {
|
|
413
|
+
a !== null && B !== void 0 && a.width.set(B);
|
|
414
|
+
}, [a, B]);
|
|
415
|
+
let V = (n = i.style) == null ? void 0 : n.tokens, H = d((r = i.style) == null ? void 0 : r.tokens);
|
|
420
416
|
c(() => {
|
|
421
|
-
|
|
422
|
-
H.current = V;
|
|
423
|
-
let { locale: e, messages: t, direction: n } = V;
|
|
424
|
-
a.i18n.update(W(W(W({}, e === void 0 ? {} : { locale: e }), t === void 0 ? {} : { messages: t }), n === void 0 ? {} : { direction: n }));
|
|
417
|
+
a !== null && V !== void 0 && (w(V, H.current) || (H.current = V, a.tokens.set(V)));
|
|
425
418
|
}, [a, V]);
|
|
426
|
-
let {
|
|
419
|
+
let { i18n: G } = i, K = d(i.i18n);
|
|
427
420
|
c(() => {
|
|
428
|
-
a === null ||
|
|
429
|
-
|
|
430
|
-
|
|
421
|
+
if (a === null || G === void 0 || w(G, K.current)) return;
|
|
422
|
+
K.current = G;
|
|
423
|
+
let { locale: e, messages: t, direction: n } = G;
|
|
424
|
+
a.i18n.update(U(U(U({}, e === void 0 ? {} : { locale: e }), t === void 0 ? {} : { messages: t }), n === void 0 ? {} : { direction: n }));
|
|
425
|
+
}, [a, G]);
|
|
426
|
+
let { placeholder: q } = i;
|
|
427
|
+
c(() => {
|
|
428
|
+
a !== null && q !== void 0 && a.placeholder.set(q);
|
|
429
|
+
}, [a, q]);
|
|
430
|
+
let { data: J } = i;
|
|
431
431
|
return c(() => {
|
|
432
|
-
if (a === null ||
|
|
432
|
+
if (a === null || J === void 0) return;
|
|
433
433
|
let e = p.current;
|
|
434
434
|
if (e.editor !== a || e.isDestroyed) return;
|
|
435
|
-
if (v.current !== a && (v.current = a,
|
|
436
|
-
g.current =
|
|
435
|
+
if (v.current !== a && (v.current = a, C.current = void 0, _.current.clear(), w(J, y.current))) {
|
|
436
|
+
g.current = J;
|
|
437
|
+
return;
|
|
438
|
+
}
|
|
439
|
+
let t = g.current, n = C.current;
|
|
440
|
+
if (t !== void 0 && te(J, t) || n !== void 0 && te(J, n) || _.current.matches(J)) return;
|
|
441
|
+
let r = b.current;
|
|
442
|
+
if (r !== void 0) {
|
|
443
|
+
S.current || (S.current = !0, console.warn(ge(r.doc)));
|
|
437
444
|
return;
|
|
438
445
|
}
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
g.current = K;
|
|
446
|
+
_.current.clear(), C.current = J, x.current = x.current.catch(() => void 0).then(() => a.render(re(J))).then(() => {
|
|
447
|
+
g.current = J;
|
|
442
448
|
}, () => {}).then(() => {
|
|
443
|
-
|
|
444
|
-
})
|
|
445
|
-
}, [a,
|
|
449
|
+
C.current === J && (C.current = void 0);
|
|
450
|
+
});
|
|
451
|
+
}, [a, J]), a;
|
|
446
452
|
}
|
|
447
|
-
function
|
|
453
|
+
function xe(e, t) {
|
|
448
454
|
e.destroyTimeout = setTimeout(() => {
|
|
449
455
|
if (e.editor !== null) {
|
|
450
|
-
|
|
456
|
+
L(e.editor), X(e.editor), fe(e.editor);
|
|
451
457
|
try {
|
|
452
458
|
e.editor.destroy();
|
|
453
459
|
} catch (e) {}
|
|
@@ -457,7 +463,7 @@ function be(e, t) {
|
|
|
457
463
|
}
|
|
458
464
|
//#endregion
|
|
459
465
|
//#region src/BlockPortalHost.tsx
|
|
460
|
-
var
|
|
466
|
+
var Se = class extends e {
|
|
461
467
|
constructor(...e) {
|
|
462
468
|
super(...e), this.state = { failed: !1 };
|
|
463
469
|
}
|
|
@@ -469,22 +475,22 @@ var xe = class extends e {
|
|
|
469
475
|
return this.state.failed ? null : this.props.children;
|
|
470
476
|
}
|
|
471
477
|
};
|
|
472
|
-
function
|
|
478
|
+
function Ce({ registry: e }) {
|
|
473
479
|
let t = p(e.subscribe, e.getSnapshot, e.getSnapshot);
|
|
474
480
|
return /* @__PURE__ */ k(O, { children: Array.from(t.entries()).map(([e, t]) => {
|
|
475
481
|
let n = t.component;
|
|
476
|
-
return M(/* @__PURE__ */ k(
|
|
482
|
+
return M(/* @__PURE__ */ k(Se, { children: /* @__PURE__ */ k(n, U({}, t.props)) }), t.hostEl, e);
|
|
477
483
|
}) });
|
|
478
484
|
}
|
|
479
485
|
//#endregion
|
|
480
486
|
//#region src/blok-instance-context.ts
|
|
481
|
-
var
|
|
482
|
-
function
|
|
483
|
-
return s(
|
|
487
|
+
var we = n(null);
|
|
488
|
+
function Te() {
|
|
489
|
+
return s(we);
|
|
484
490
|
}
|
|
485
491
|
//#endregion
|
|
486
|
-
//#region \0@oxc-project+runtime@0.
|
|
487
|
-
function
|
|
492
|
+
//#region \0@oxc-project+runtime@0.147.0/helpers/esm/objectWithoutPropertiesLoose.js
|
|
493
|
+
function Ee(e, t) {
|
|
488
494
|
if (e == null) return {};
|
|
489
495
|
var n = {};
|
|
490
496
|
for (var r in e) if ({}.hasOwnProperty.call(e, r)) {
|
|
@@ -494,10 +500,10 @@ function Te(e, t) {
|
|
|
494
500
|
return n;
|
|
495
501
|
}
|
|
496
502
|
//#endregion
|
|
497
|
-
//#region \0@oxc-project+runtime@0.
|
|
503
|
+
//#region \0@oxc-project+runtime@0.147.0/helpers/esm/objectWithoutProperties.js
|
|
498
504
|
function $(e, t) {
|
|
499
505
|
if (e == null) return {};
|
|
500
|
-
var n, r, i =
|
|
506
|
+
var n, r, i = Ee(e, t);
|
|
501
507
|
if (Object.getOwnPropertySymbols) {
|
|
502
508
|
var a = Object.getOwnPropertySymbols(e);
|
|
503
509
|
for (r = 0; r < a.length; r++) n = a[r], t.includes(n) || {}.propertyIsEnumerable.call(e, n) && (i[n] = e[n]);
|
|
@@ -506,22 +512,22 @@ function $(e, t) {
|
|
|
506
512
|
}
|
|
507
513
|
//#endregion
|
|
508
514
|
//#region src/BlokContent.tsx
|
|
509
|
-
var
|
|
510
|
-
function
|
|
515
|
+
var De = ["editor"];
|
|
516
|
+
function Oe(e) {
|
|
511
517
|
var t, n;
|
|
512
518
|
if (typeof window > "u") return;
|
|
513
519
|
let r = window.location.hash.slice(1);
|
|
514
|
-
r !== "" && ((t = (n = e.blocks).scrollToBlock) == null || t.call(n,
|
|
520
|
+
r !== "" && ((t = (n = e.blocks).scrollToBlock) == null || t.call(n, ke(r)));
|
|
515
521
|
}
|
|
516
|
-
function
|
|
522
|
+
function ke(e) {
|
|
517
523
|
try {
|
|
518
524
|
return decodeURIComponent(e);
|
|
519
525
|
} catch (t) {
|
|
520
526
|
return e;
|
|
521
527
|
}
|
|
522
528
|
}
|
|
523
|
-
var
|
|
524
|
-
let { editor: n } = e, r = $(e,
|
|
529
|
+
var Ae = i(function(e, t) {
|
|
530
|
+
let { editor: n } = e, r = $(e, De), i = d(null), a = (e) => {
|
|
525
531
|
if (i.current = e, typeof t == "function") t(e);
|
|
526
532
|
else if (t != null) {
|
|
527
533
|
let n = t;
|
|
@@ -530,33 +536,33 @@ var ke = i(function(e, t) {
|
|
|
530
536
|
};
|
|
531
537
|
c(() => {
|
|
532
538
|
if (n === null || i.current === null) return;
|
|
533
|
-
let e =
|
|
534
|
-
if (e !== void 0) return i.current.appendChild(e),
|
|
539
|
+
let e = ae(n);
|
|
540
|
+
if (e !== void 0) return i.current.appendChild(e), Oe(n), () => {
|
|
535
541
|
e.remove();
|
|
536
542
|
};
|
|
537
543
|
}, [n]);
|
|
538
544
|
let o = n === null ? void 0 : le(n);
|
|
539
|
-
return /* @__PURE__ */ k("div",
|
|
545
|
+
return /* @__PURE__ */ k("div", U(U({ ref: a }, r), {}, { children: o === void 0 ? null : /* @__PURE__ */ k(we.Provider, {
|
|
540
546
|
value: n,
|
|
541
|
-
children: /* @__PURE__ */ k(
|
|
547
|
+
children: /* @__PURE__ */ k(Ce, { registry: o })
|
|
542
548
|
}) }));
|
|
543
|
-
}),
|
|
549
|
+
}), je = /* @__PURE__ */ "autofocus.defaultBlock.dataModel.placeholder.sanitizer.hideToolbar.toolbarPosition.maxHistoryLength.historyDebounceTime.newGroupDelay.globalUndoRedo.tools.data.minHeight.logLevel.readOnly.i18n.link.linkPaste.onBeforePaste.onReady.onChange.onSave.onError.onEnter.onSubmit.onBeforeRender.onAfterRender.inlineToolbar.tunes.style.theme.onThemeChange.scrollToBlock.user.resolveUser.notifierPosition.notifier.width.migrations.uploader.server.ticket.persistence.collaboration.captureClicksBelowEditor".split("."), Me = [
|
|
544
550
|
"deps",
|
|
545
551
|
"onReady",
|
|
546
552
|
"locale",
|
|
547
553
|
"onBlocksRendered",
|
|
548
554
|
"onBlockRendered"
|
|
549
|
-
],
|
|
550
|
-
let { deps: n, onReady: r, locale: i, onBlocksRendered: a, onBlockRendered: o } = e, s = $(e,
|
|
555
|
+
], Ne = new Set(je), Pe = i(function(e, t) {
|
|
556
|
+
let { deps: n, onReady: r, locale: i, onBlocksRendered: a, onBlockRendered: o } = e, s = $(e, Me), u = {}, f = {};
|
|
551
557
|
for (let e of Object.keys(s)) {
|
|
552
558
|
let t = s[e];
|
|
553
|
-
|
|
559
|
+
Ne.has(e) ? u[e] = t : f[e] = t;
|
|
554
560
|
}
|
|
555
561
|
if (i !== void 0) {
|
|
556
562
|
let e = u.i18n;
|
|
557
|
-
u.i18n =
|
|
563
|
+
u.i18n = U(U({}, e), {}, { locale: i });
|
|
558
564
|
}
|
|
559
|
-
let p =
|
|
565
|
+
let p = be(u, n);
|
|
560
566
|
l(t, () => p, [p]);
|
|
561
567
|
let m = d(r);
|
|
562
568
|
m.current = r;
|
|
@@ -596,11 +602,11 @@ var ke = i(function(e, t) {
|
|
|
596
602
|
p,
|
|
597
603
|
v,
|
|
598
604
|
y
|
|
599
|
-
]), /* @__PURE__ */ k(
|
|
605
|
+
]), /* @__PURE__ */ k(Ae, U({ editor: p }, f));
|
|
600
606
|
});
|
|
601
607
|
//#endregion
|
|
602
608
|
//#region src/useBlokHandle.ts
|
|
603
|
-
function
|
|
609
|
+
function Fe() {
|
|
604
610
|
let e = d(null);
|
|
605
611
|
return u(() => ({
|
|
606
612
|
ref: (t) => {
|
|
@@ -639,8 +645,8 @@ function Pe() {
|
|
|
639
645
|
}
|
|
640
646
|
//#endregion
|
|
641
647
|
//#region src/useBlocks.ts
|
|
642
|
-
var
|
|
643
|
-
function
|
|
648
|
+
var Ie = "block changed";
|
|
649
|
+
function Le(e, t = {}) {
|
|
644
650
|
var n;
|
|
645
651
|
let r = (n = t.within) == null ? null : n, i = d(0), a = d(e);
|
|
646
652
|
a.current !== e && (a.current = e, i.current = 0);
|
|
@@ -649,13 +655,13 @@ function Ie(e, t = {}) {
|
|
|
649
655
|
let n = (n) => {
|
|
650
656
|
r !== null && !b(e, n, r) || (i.current += 1, t());
|
|
651
657
|
};
|
|
652
|
-
return e.on(
|
|
658
|
+
return e.on(Ie, n), () => e.off(Ie, n);
|
|
653
659
|
}, [e, r]), c = o(() => i.current, []);
|
|
654
660
|
return p(s, c, c), u(() => e === null ? _ : x(e), [e]);
|
|
655
661
|
}
|
|
656
662
|
//#endregion
|
|
657
663
|
//#region src/useBlokReady.ts
|
|
658
|
-
function
|
|
664
|
+
function Re(e = {}) {
|
|
659
665
|
let { within: t, settleOn: n } = e, [r, i] = f(!1);
|
|
660
666
|
return c(() => {
|
|
661
667
|
let e = () => {
|
|
@@ -671,7 +677,7 @@ function Le(e = {}) {
|
|
|
671
677
|
}
|
|
672
678
|
//#endregion
|
|
673
679
|
//#region src/view-nodes-to-react.ts
|
|
674
|
-
var
|
|
680
|
+
var ze = /* @__PURE__ */ new Set([
|
|
675
681
|
"area",
|
|
676
682
|
"base",
|
|
677
683
|
"br",
|
|
@@ -686,7 +692,7 @@ var Re = /* @__PURE__ */ new Set([
|
|
|
686
692
|
"source",
|
|
687
693
|
"track",
|
|
688
694
|
"wbr"
|
|
689
|
-
]),
|
|
695
|
+
]), Be = /* @__PURE__ */ new Set([
|
|
690
696
|
"disabled",
|
|
691
697
|
"open",
|
|
692
698
|
"controls",
|
|
@@ -702,7 +708,7 @@ var Re = /* @__PURE__ */ new Set([
|
|
|
702
708
|
"novalidate",
|
|
703
709
|
"allowfullscreen",
|
|
704
710
|
"itemscope"
|
|
705
|
-
]),
|
|
711
|
+
]), Ve = {
|
|
706
712
|
class: "className",
|
|
707
713
|
for: "htmlFor",
|
|
708
714
|
colspan: "colSpan",
|
|
@@ -724,7 +730,7 @@ var Re = /* @__PURE__ */ new Set([
|
|
|
724
730
|
minlength: "minLength",
|
|
725
731
|
usemap: "useMap",
|
|
726
732
|
itemscope: "itemScope"
|
|
727
|
-
},
|
|
733
|
+
}, He = (e) => {
|
|
728
734
|
let t = {};
|
|
729
735
|
for (let n of e.split(";")) {
|
|
730
736
|
let e = n.indexOf(":");
|
|
@@ -735,12 +741,12 @@ var Re = /* @__PURE__ */ new Set([
|
|
|
735
741
|
t[a] = i;
|
|
736
742
|
}
|
|
737
743
|
return t;
|
|
738
|
-
},
|
|
744
|
+
}, Ue = (e, t) => {
|
|
739
745
|
let n = { key: t };
|
|
740
746
|
for (let [t, a] of Object.entries(e)) {
|
|
741
747
|
var r;
|
|
742
748
|
if (t === "style") {
|
|
743
|
-
n.style =
|
|
749
|
+
n.style = He(a);
|
|
744
750
|
continue;
|
|
745
751
|
}
|
|
746
752
|
if (t === "checked") {
|
|
@@ -751,21 +757,21 @@ var Re = /* @__PURE__ */ new Set([
|
|
|
751
757
|
n.defaultValue = a;
|
|
752
758
|
continue;
|
|
753
759
|
}
|
|
754
|
-
if (
|
|
760
|
+
if (Be.has(t)) {
|
|
755
761
|
var i;
|
|
756
|
-
n[(i =
|
|
762
|
+
n[(i = Ve[t]) == null ? t : i] = !0;
|
|
757
763
|
continue;
|
|
758
764
|
}
|
|
759
|
-
n[(r =
|
|
765
|
+
n[(r = Ve[t]) == null ? t : r] = a;
|
|
760
766
|
}
|
|
761
767
|
return n;
|
|
762
|
-
},
|
|
768
|
+
}, We = (e) => e.map((e, t) => {
|
|
763
769
|
if ("text" in e) return e.text;
|
|
764
|
-
let n =
|
|
765
|
-
return
|
|
766
|
-
}),
|
|
770
|
+
let n = Ue(e.attrs, t);
|
|
771
|
+
return ze.has(e.tag) || e.children.length === 0 ? r(e.tag, n) : r(e.tag, n, ...We(e.children));
|
|
772
|
+
}), Ge = (e, n) => {
|
|
767
773
|
let i = n == null ? void 0 : n.schema, a = n == null ? void 0 : n.renderers, o = n == null ? void 0 : n.onUnknownBlock, s = n == null ? void 0 : n.toolAttributes, c = n == null ? void 0 : n.blockIds, l = n == null ? void 0 : n.transformUrl, d = n == null ? void 0 : n.inlineRenderers, f = n == null ? void 0 : n.classes;
|
|
768
|
-
return u(() => r(t, null, ...
|
|
774
|
+
return u(() => r(t, null, ...We(P(e, {
|
|
769
775
|
schema: i,
|
|
770
776
|
renderers: a,
|
|
771
777
|
onUnknownBlock: o,
|
|
@@ -785,7 +791,7 @@ var Re = /* @__PURE__ */ new Set([
|
|
|
785
791
|
d,
|
|
786
792
|
f
|
|
787
793
|
]);
|
|
788
|
-
},
|
|
794
|
+
}, Ke = [
|
|
789
795
|
"data",
|
|
790
796
|
"schema",
|
|
791
797
|
"renderers",
|
|
@@ -795,8 +801,8 @@ var Re = /* @__PURE__ */ new Set([
|
|
|
795
801
|
"transformUrl",
|
|
796
802
|
"inlineRenderers",
|
|
797
803
|
"classes"
|
|
798
|
-
],
|
|
799
|
-
let { data: t, schema: n, renderers: r, onUnknownBlock: i, toolAttributes: a, blockIds: o, transformUrl: s, inlineRenderers: c, classes: l } = e, u = $(e,
|
|
804
|
+
], qe = (e) => {
|
|
805
|
+
let { data: t, schema: n, renderers: r, onUnknownBlock: i, toolAttributes: a, blockIds: o, transformUrl: s, inlineRenderers: c, classes: l } = e, u = $(e, Ke), d = Ge(t, {
|
|
800
806
|
schema: n,
|
|
801
807
|
renderers: r,
|
|
802
808
|
onUnknownBlock: i,
|
|
@@ -806,25 +812,25 @@ var Re = /* @__PURE__ */ new Set([
|
|
|
806
812
|
inlineRenderers: c,
|
|
807
813
|
classes: l == null || l
|
|
808
814
|
});
|
|
809
|
-
return /* @__PURE__ */ k("div",
|
|
810
|
-
},
|
|
815
|
+
return /* @__PURE__ */ k("div", U(U({ "data-blok-interface": "view" }, u), {}, { children: d }));
|
|
816
|
+
}, Je = ["icon", "title"], Ye = ["commit", "readOnly"], Xe = [q, J], Ze = (e, t, n) => {
|
|
811
817
|
var r;
|
|
812
818
|
e == null || (r = e.events) == null || r.emit(h, {
|
|
813
819
|
blockId: t,
|
|
814
820
|
childIds: n.map((e) => e.id)
|
|
815
821
|
});
|
|
816
|
-
},
|
|
822
|
+
}, Qe = /* @__PURE__ */ new Set([
|
|
817
823
|
void 0,
|
|
818
824
|
"user",
|
|
819
825
|
"api",
|
|
820
826
|
"convert"
|
|
821
|
-
]),
|
|
827
|
+
]), $e = [
|
|
822
828
|
"toolbox",
|
|
823
829
|
"isReadOnlySupported",
|
|
824
830
|
"__isBlokReactBlock",
|
|
825
831
|
"__buildPortalToolbox"
|
|
826
832
|
];
|
|
827
|
-
function
|
|
833
|
+
function et(e) {
|
|
828
834
|
var t, n;
|
|
829
835
|
let r = (e) => {
|
|
830
836
|
if (typeof document > "u") return null;
|
|
@@ -835,7 +841,7 @@ function $e(e) {
|
|
|
835
841
|
let r = t.innerHTML;
|
|
836
842
|
return n.unmount(), r === "" ? null : r;
|
|
837
843
|
}, i = (e) => {
|
|
838
|
-
let { icon: t, title: n } = e, i =
|
|
844
|
+
let { icon: t, title: n } = e, i = U({}, $(e, Je));
|
|
839
845
|
if (typeof n == "string" && (i.title = n), !a(t)) return t !== void 0 && (i.icon = t), {
|
|
840
846
|
entry: i,
|
|
841
847
|
deferred: !1
|
|
@@ -873,7 +879,7 @@ function $e(e) {
|
|
|
873
879
|
component: u,
|
|
874
880
|
props: {},
|
|
875
881
|
toolName: n
|
|
876
|
-
}),
|
|
882
|
+
}), U(U({}, o), {}, { titleEl: c });
|
|
877
883
|
});
|
|
878
884
|
return Array.isArray(e.toolbox) ? o : o[0];
|
|
879
885
|
}, l = {
|
|
@@ -886,11 +892,11 @@ function $e(e) {
|
|
|
886
892
|
}, f = e.viewComponent === void 0 ? e.component : (t) => {
|
|
887
893
|
let n = e.viewComponent;
|
|
888
894
|
if (t.readOnly && n !== void 0) {
|
|
889
|
-
let { commit: e, readOnly: r } = t;
|
|
890
|
-
return /* @__PURE__ */ k(n,
|
|
895
|
+
let { commit: e, readOnly: r } = t, i = $(t, Ye);
|
|
896
|
+
return /* @__PURE__ */ k(n, U({}, i));
|
|
891
897
|
}
|
|
892
898
|
let r = e.component;
|
|
893
|
-
return /* @__PURE__ */ k(r,
|
|
899
|
+
return /* @__PURE__ */ k(r, U({}, t));
|
|
894
900
|
}, p = (t = class {
|
|
895
901
|
static get toolbox() {
|
|
896
902
|
return u();
|
|
@@ -907,7 +913,7 @@ function $e(e) {
|
|
|
907
913
|
this.anchorEl = e;
|
|
908
914
|
}, this.commit = (t) => {
|
|
909
915
|
var n;
|
|
910
|
-
let r = T(e.propSchema,
|
|
916
|
+
let r = T(e.propSchema, U(U({}, this.mirror), t));
|
|
911
917
|
C(r, this.mirror) || (this.mirror = r, this.lastRendered = r, (n = this.registry) == null || n.setProps(this.blockApi.id, { data: r }), this.flushDispatch());
|
|
912
918
|
}, this.blockApi = t.block;
|
|
913
919
|
let a = (n = t.config) == null ? {} : n;
|
|
@@ -915,7 +921,7 @@ function $e(e) {
|
|
|
915
921
|
let o = a[J];
|
|
916
922
|
this.toolName = typeof o == "string" ? o : void 0;
|
|
917
923
|
let s = {};
|
|
918
|
-
for (let [e, t] of Object.entries(a))
|
|
924
|
+
for (let [e, t] of Object.entries(a)) Xe.includes(e) || (s[e] = t);
|
|
919
925
|
this.toolConfig = Object.freeze(s), this.api = t.api;
|
|
920
926
|
let l = t.api;
|
|
921
927
|
this.pointerDrag = () => {
|
|
@@ -931,7 +937,7 @@ function $e(e) {
|
|
|
931
937
|
D(n.current, i), y(r.current, i, {
|
|
932
938
|
childAttributes: e,
|
|
933
939
|
childContentAttributes: t
|
|
934
|
-
}),
|
|
940
|
+
}), Ze(f, u.id, i);
|
|
935
941
|
}), /* @__PURE__ */ k("div", {
|
|
936
942
|
ref: n,
|
|
937
943
|
[g.nestedBlocks]: ""
|
|
@@ -948,8 +954,8 @@ function $e(e) {
|
|
|
948
954
|
origin: this.origin,
|
|
949
955
|
api: this.api
|
|
950
956
|
};
|
|
951
|
-
t == null || t(this.blockApi, e),
|
|
952
|
-
}, a = (e) => (c(i, []), /* @__PURE__ */ k(r,
|
|
957
|
+
t == null || t(this.blockApi, e), Qe.has(this.origin) && (n == null || n(this.blockApi, e));
|
|
958
|
+
}, a = (e) => (c(i, []), /* @__PURE__ */ k(r, U({}, e)));
|
|
953
959
|
return a.displayName = `BlokBlockMount(${e.type})`, a;
|
|
954
960
|
}
|
|
955
961
|
render() {
|
|
@@ -982,7 +988,7 @@ function $e(e) {
|
|
|
982
988
|
let n = this.anchorEl;
|
|
983
989
|
if (n !== null && n.isConnected) return n;
|
|
984
990
|
let r = this.hostEl;
|
|
985
|
-
if (
|
|
991
|
+
if (r !== null && e.getToolbarAnchorElement !== void 0) return (t = e.getToolbarAnchorElement(r, this.blockApi)) == null ? void 0 : t;
|
|
986
992
|
}
|
|
987
993
|
moved() {
|
|
988
994
|
var t;
|
|
@@ -1031,7 +1037,7 @@ function $e(e) {
|
|
|
1031
1037
|
requestAnimationFrame(e);
|
|
1032
1038
|
}
|
|
1033
1039
|
}, t.__isBlokReactBlock = !0, t);
|
|
1034
|
-
for (let [t, r] of Object.entries((n = e.statics) == null ? {} : n))
|
|
1040
|
+
for (let [t, r] of Object.entries((n = e.statics) == null ? {} : n)) $e.includes(t) || Object.defineProperty(p, t, {
|
|
1035
1041
|
value: r,
|
|
1036
1042
|
writable: !0,
|
|
1037
1043
|
enumerable: !0,
|
|
@@ -1041,13 +1047,13 @@ function $e(e) {
|
|
|
1041
1047
|
}
|
|
1042
1048
|
//#endregion
|
|
1043
1049
|
//#region src/createReactInlineTool.tsx
|
|
1044
|
-
var
|
|
1045
|
-
function
|
|
1046
|
-
let e = s(
|
|
1050
|
+
var tt = [q, J], nt = (e) => `__blok-inline-tool__:${e}:${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`, rt = n(null);
|
|
1051
|
+
function it() {
|
|
1052
|
+
let e = s(rt);
|
|
1047
1053
|
if (e === null) throw Error("useInlineTool() must be called from a component rendered by createReactInlineTool");
|
|
1048
1054
|
return e;
|
|
1049
1055
|
}
|
|
1050
|
-
function
|
|
1056
|
+
function at(e) {
|
|
1051
1057
|
var t;
|
|
1052
1058
|
return t = class {
|
|
1053
1059
|
static get type() {
|
|
@@ -1079,9 +1085,9 @@ function it(e) {
|
|
|
1079
1085
|
let r = (n = t == null ? void 0 : t.config) == null ? {} : n;
|
|
1080
1086
|
this.api = t == null ? void 0 : t.api, this.registry = r[q];
|
|
1081
1087
|
let i = r[J];
|
|
1082
|
-
this.toolName = typeof i == "string" ? i : e.type, this.portalKey =
|
|
1088
|
+
this.toolName = typeof i == "string" ? i : e.type, this.portalKey = nt(this.toolName);
|
|
1083
1089
|
let a = {};
|
|
1084
|
-
for (let [e, t] of Object.entries(r))
|
|
1090
|
+
for (let [e, t] of Object.entries(r)) tt.includes(e) || (a[e] = t);
|
|
1085
1091
|
this.toolConfig = Object.freeze(a), this.portalComponent = this.createPortalComponent();
|
|
1086
1092
|
}
|
|
1087
1093
|
render() {
|
|
@@ -1144,7 +1150,7 @@ function it(e) {
|
|
|
1144
1150
|
api: t,
|
|
1145
1151
|
mark: i
|
|
1146
1152
|
}), [e.active, e.config]);
|
|
1147
|
-
return /* @__PURE__ */ k(
|
|
1153
|
+
return /* @__PURE__ */ k(rt.Provider, {
|
|
1148
1154
|
value: n,
|
|
1149
1155
|
children: /* @__PURE__ */ k(r, {
|
|
1150
1156
|
active: e.active,
|
|
@@ -1157,4 +1163,4 @@ function it(e) {
|
|
|
1157
1163
|
}, t.__isBlokReactInlineTool = !0, t.isInline = !0, t;
|
|
1158
1164
|
}
|
|
1159
1165
|
//#endregion
|
|
1160
|
-
export { q as BLOK_PORTAL_REGISTRY_CONFIG_KEY, J as BLOK_TOOL_NAME_CONFIG_KEY,
|
|
1166
|
+
export { q as BLOK_PORTAL_REGISTRY_CONFIG_KEY, J as BLOK_TOOL_NAME_CONFIG_KEY, Ce as BlockPortalHost, Ae as BlokContent, Pe as BlokEditor, G as BlokProvider, qe as BlokView, se as createBlockPortalRegistry, et as createReactBlock, at as createReactInlineTool, A as getDirection, j as normalizeLocale, Le as useBlocks, be as useBlok, K as useBlokDefaults, Fe as useBlokHandle, Te as useBlokInstance, Re as useBlokReady, Ge as useBlokView, it as useInlineTool };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bloklabs/react",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.13.0",
|
|
4
4
|
"description": "React block editor — official React bindings for Blok, the headless Notion-like rich text editor. Hooks and components that render blocks and save to JSON.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "JackUait",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"test": "yarn run -T vitest run"
|
|
55
55
|
},
|
|
56
56
|
"peerDependencies": {
|
|
57
|
-
"@bloklabs/core": "^1.
|
|
57
|
+
"@bloklabs/core": "^1.13.0",
|
|
58
58
|
"react": "^18.0.0 || ^19.0.0",
|
|
59
59
|
"react-dom": "^18.0.0 || ^19.0.0"
|
|
60
60
|
}
|
package/src/config-keys.ts
CHANGED
package/src/useBlok.ts
CHANGED
|
@@ -32,6 +32,19 @@ interface EditorInstanceState {
|
|
|
32
32
|
depsToken: Record<string, unknown> | null;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
+
/**
|
|
36
|
+
* Warning text for a controlled `data` change the adapter refuses to render
|
|
37
|
+
* under collaboration. Kept verbatim in all three adapters (they share no code).
|
|
38
|
+
* @param doc - the collaboration document id, for the reset endpoint in the text
|
|
39
|
+
* @returns the message to warn with, once per adapter instance
|
|
40
|
+
*/
|
|
41
|
+
const collaborationDataIgnoredMessage = (doc?: string): string =>
|
|
42
|
+
'[Blok] `data` is ignored while collaboration is on: the document lives on the sync service ' +
|
|
43
|
+
'and is shared with everyone editing it, so replacing it from this editor would overwrite their work. ' +
|
|
44
|
+
`To replace the whole document, call POST /sync/${doc ?? '{doc}'}/reset on your server — ` +
|
|
45
|
+
'it reloads the document from your own document endpoint and every open editor picks it up. ' +
|
|
46
|
+
'To change part of it, use the blocks API (insert/update/delete).';
|
|
47
|
+
|
|
35
48
|
/**
|
|
36
49
|
* Inject the editor's portal registry into every `createReactBlock` tool's
|
|
37
50
|
* config (vanilla tools are left untouched), returning a NEW tools object so
|
|
@@ -165,7 +178,16 @@ export function useBlok(configInput: UseBlokConfig, deps?: DependencyList): Blok
|
|
|
165
178
|
// undefined-at-mount then loaded, or changed before the editor finished
|
|
166
179
|
// initializing — still renders instead of being mistaken for the seed.
|
|
167
180
|
const constructedDataRef = useRef(config.data);
|
|
181
|
+
// The `collaboration` the live editor was CONSTRUCTED with. The key is
|
|
182
|
+
// mount-fixed, so dropping it from the prop (`collaboration: on ? {...} :
|
|
183
|
+
// undefined`) cannot turn a live session into a single-player editor —
|
|
184
|
+
// reading the current prop instead would let that change fall through into
|
|
185
|
+
// render(), which refuses under collaboration and rejects with nothing
|
|
186
|
+
// surfaced anywhere.
|
|
187
|
+
const constructedCollaborationRef = useRef(config.collaboration);
|
|
168
188
|
const renderChainRef = useRef<Promise<void>>(Promise.resolve());
|
|
189
|
+
// One collaboration warning per hook instance (see the data effect).
|
|
190
|
+
const collaborationWarnedRef = useRef(false);
|
|
169
191
|
// The content of the render currently queued/in-flight (distinct from
|
|
170
192
|
// `lastRenderedDataRef`, which tracks the last SUCCESSFULLY rendered content).
|
|
171
193
|
// Used to dedupe a re-queue of the same in-flight content without advancing the
|
|
@@ -351,6 +373,7 @@ export function useBlok(configInput: UseBlokConfig, deps?: DependencyList): Blok
|
|
|
351
373
|
// Remember what this editor was seeded with so the reactive-`data` effect can
|
|
352
374
|
// tell a genuine post-construction change from the construction value itself.
|
|
353
375
|
constructedDataRef.current = currentConfig.data;
|
|
376
|
+
constructedCollaborationRef.current = currentConfig.collaboration;
|
|
354
377
|
setHolder(blok, holder);
|
|
355
378
|
setRegistry(blok, registry);
|
|
356
379
|
// Imperative-content channel: `useBlokHandle().clear()` / `.render()` change
|
|
@@ -797,6 +820,23 @@ export function useBlok(configInput: UseBlokConfig, deps?: DependencyList): Blok
|
|
|
797
820
|
return;
|
|
798
821
|
}
|
|
799
822
|
|
|
823
|
+
// Under collaboration the document belongs to the sync service, and render()
|
|
824
|
+
// refuses a wholesale replace — so don't attempt one. The prop's premise
|
|
825
|
+
// ("this value IS the document") does not hold here. Decided against the
|
|
826
|
+
// MOUNTED config, never the current prop: `collaboration` is mount-fixed,
|
|
827
|
+
// so a host that drops the key is still driving a collaboration session and
|
|
828
|
+
// deserves the warning rather than a silently rejected render.
|
|
829
|
+
const mountedCollaboration = constructedCollaborationRef.current;
|
|
830
|
+
|
|
831
|
+
if (mountedCollaboration !== undefined) {
|
|
832
|
+
if (!collaborationWarnedRef.current) {
|
|
833
|
+
collaborationWarnedRef.current = true;
|
|
834
|
+
console.warn(collaborationDataIgnoredMessage(mountedCollaboration.doc));
|
|
835
|
+
}
|
|
836
|
+
|
|
837
|
+
return;
|
|
838
|
+
}
|
|
839
|
+
|
|
800
840
|
// Genuinely external content takes over: earlier emitted payloads are moot,
|
|
801
841
|
// and keeping them could wrongly no-op a later deliberate revert to one.
|
|
802
842
|
echoWindowRef.current.clear();
|