@bloklabs/vue 1.2.6 → 1.3.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 CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`vue`),t=require(`@bloklabs/core`),n=require(`@bloklabs/core/adapters`);var r=new WeakMap;function i(e,t){r.set(e,t)}function a(e){return r.get(e)}function o(e){r.delete(e)}function s(e){"@babel/helpers - typeof";return s=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},s(e)}function c(e,t){if(s(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(s(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function l(e){var t=c(e,`string`);return s(t)==`symbol`?t:t+``}function u(e,t,n){return(t=l(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function d(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 f(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?d(Object(n),!0).forEach(function(t){u(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):d(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var p=Symbol(`BLOK_DEFAULT_CONFIG`);function m(t){(0,e.provide)(p,t)}function h(){return(0,e.inject)(p,{})}function g(e,t){if(Object.keys(e).length===0)return t;let n=f({},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=f(f({},e.tools),t.tools)),n}var _=`__blokPortalRegistry`,v=()=>{let t=(0,e.reactive)(new Map);return{entries:t,register(n,r){t.set(n,(0,e.markRaw)(r))},unregister(e){t.delete(e)},setProps(e,n){let r=t.get(e);r!==void 0&&Object.assign(r.props,n)}}},y=new WeakMap;function b(e,t){y.set(e,t)}function x(e){return y.get(e)}function S(e){y.delete(e)}var C=(e,t)=>{if(typeof e!=`object`||!e)return e;let n={};for(let[i,a]of Object.entries(e)){var r;let e=typeof a==`function`?a:a==null?void 0:a.class;if(!(typeof e==`function`&&e.__isBlokVueBlock===!0)){n[i]=a;continue}let o=typeof a==`function`?{class:a}:f({},a);o.config=f(f({},(r=o.config)==null?{}:r),{},{[_]:t}),n[i]=o}return n};function w(r,a){let s=(0,e.shallowRef)(null),c=(0,e.inject)(p,{}),l=()=>g(c,(0,e.toValue)(r)),u={current:null,holder:null,lastRenderedData:l().data,seededEditor:null,renderChain:Promise.resolve()},d=()=>{let t=f({},g((0,e.toRaw)(c),(0,e.toRaw)((0,e.toValue)(r))));return delete t.holder,t.data!==void 0&&(t.data=(0,e.toRaw)(t.data)),t},m=()=>{if(u.current!==null){o(u.current),S(u.current);try{u.current.destroy()}catch(e){}}u.current=null,u.holder=null,s.value=null},h=()=>{let e=document.createElement(`div`);u.holder=e;let n=d(),r=v();n.tools!==void 0&&(n.tools=C(n.tools,r)),typeof n.onSave==`function`&&(n.onSave=(...e)=>{var t,n;u.lastRenderedData=e[0],(t=(n=l()).onSave)==null||t.call(n,...e)});let a=new t.Blok(f(f({},n),{},{holder:e}));u.current=a,i(a,e),b(a,r),a.isReady.then(()=>{u.current===a&&(s.value=a)}).catch(()=>{u.current===a&&m()})};return(0,e.watch)([s,()=>(0,n.normalizeReadOnlyConfig)(l().readOnly).enabled],([e,t])=>{e&&e.readOnly.set(t)},{immediate:!0}),(0,e.watch)([s,()=>l().theme],([e,t])=>{e&&t!==void 0&&e.theme.set(t)},{immediate:!0}),(0,e.watch)([s,()=>l().width],([e,t])=>{e&&t!==void 0&&e.width.set(t)},{immediate:!0}),(0,e.watch)([s,()=>l().placeholder],([e,t])=>{e&&t!==void 0&&e.placeholder.set(t)},{immediate:!0}),(0,e.watch)([s,()=>l().autofocus],([e,t])=>{e&&t&&e.focus()},{immediate:!0}),(0,e.watch)([s,()=>l().data],([t,r])=>{if(!(!t||r===void 0)){if(u.seededEditor!==t){u.seededEditor=t,u.lastRenderedData=r;return}(0,n.deepEqual)(r,u.lastRenderedData)||(u.lastRenderedData=r,u.renderChain=u.renderChain.catch(()=>void 0).then(()=>t.render((0,e.toRaw)(r))))}},{immediate:!0}),a!==void 0&&(0,e.watch)(()=>(0,e.toValue)(a),()=>{m(),h()}),(0,e.onMounted)(h),(0,e.onBeforeUnmount)(m),s}var T=`block changed`;function E(t){let r=(0,e.shallowRef)(0),i=()=>{let n=(0,e.toValue)(t);return n===null?null:(0,e.toRaw)(n)},a=()=>{r.value},o=(0,e.shallowRef)(n.EMPTY_API),s={editor:null,handler:null},c=()=>{s.editor!==null&&s.handler!==null&&s.editor.off(T,s.handler),s.editor=null,s.handler=null};return(0,e.watch)(()=>i(),e=>{if(c(),r.value+=1,e===null){o.value=n.EMPTY_API;return}let t=()=>{r.value+=1};e.on(T,t),s.editor=e,s.handler=t,o.value=(0,n.createBlocksApiForEditor)(e,a)},{immediate:!0}),(0,e.onScopeDispose)(c),{getById:e=>o.value.getById(e),getChildren:e=>o.value.getChildren(e),insert:e=>o.value.insert(e),insertMany:e=>o.value.insertMany(e),insertTree:e=>o.value.insertTree(e),insertMarkdown:(e,t)=>o.value.insertMarkdown(e,t),exportMarkdown:()=>o.value.exportMarkdown(),move:(e,t)=>o.value.move(e,t),nest:(e,t)=>o.value.nest(e,t),unnest:e=>o.value.unnest(e),remove:e=>o.value.remove(e),update:(e,t,n)=>o.value.update(e,t,n),convert:(e,t,n,r)=>o.value.convert(e,t,n,r),transact:e=>o.value.transact(e),transactWithoutCapture:e=>o.value.transactWithoutCapture(e),getBlocksCount:()=>o.value.getBlocksCount(),getCurrentBlockIndex:()=>o.value.getCurrentBlockIndex(),getBlockByIndex:e=>o.value.getBlockByIndex(e),getBlockByElement:e=>o.value.getBlockByElement(e),getBlockData:e=>o.value.getBlockData(e),getBlockIndex:e=>o.value.getBlockIndex(e),composeBlockData:e=>o.value.composeBlockData(e),renderFromHTML:e=>o.value.renderFromHTML(e),insertOutputData:(e,t)=>o.value.insertOutputData(e,t),splitBlock:(e,t,n,r,i)=>o.value.splitBlock(e,t,n,r,i),insertInsideParent:(e,t,n)=>o.value.insertInsideParent(e,t,n),render:e=>o.value.render(e),clear:()=>o.value.clear(),isSyncingFromYjs:()=>o.value.isSyncingFromYjs()}}var D=(0,e.defineComponent)({name:`BlockErrorBoundary`,setup(t,{slots:n}){return(0,e.onErrorCaptured)(()=>!1),()=>{var e;return(e=n.default)==null?void 0:e.call(n)}}}),O=(0,e.defineComponent)({name:`BlockPortalHost`,props:{registry:{type:Object,required:!0}},setup(t){return()=>(0,e.h)(e.Fragment,Array.from(t.registry.entries.entries()).map(([t,n])=>(0,e.h)(e.Teleport,{key:t,to:n.hostEl},[(0,e.h)(D,null,{default:()=>(0,e.h)(n.component,n.props)})])))}}),k=(0,e.defineComponent)({name:`BlokContent`,props:{editor:{type:Object,default:null}},setup(t){let n=(0,e.ref)(null),r=t=>{if(n.value===null||t===null)return;let r=a((0,e.toRaw)(t));r!==void 0&&n.value.appendChild(r)},i=t=>{var n;t!==null&&((n=a((0,e.toRaw)(t)))==null||n.remove())};return(0,e.onMounted)(()=>{r(t.editor)}),(0,e.watch)(()=>t.editor,(e,t)=>{i(t==null?null:t),r(e)}),(0,e.onBeforeUnmount)(()=>{i(t.editor)}),()=>{let r=t.editor,i=r===null?void 0:x((0,e.toRaw)(r));return(0,e.h)(`div`,{ref:n},i===void 0?[]:[(0,e.h)(O,{registry:i})])}}}),A=`autofocus.defaultBlock.dataModel.placeholder.sanitizer.hideToolbar.maxHistoryLength.historyDebounceTime.newGroupDelay.globalUndoRedo.tools.data.minHeight.logLevel.readOnly.i18n.link.linkPaste.inlineToolbar.tunes.style.theme.scrollToBlock.user.resolveUser.notifierPosition.notifier.width.onBeforeRender.onBeforePaste.onEnter`.split(`.`),j=(0,e.defineComponent)({name:`BlokEditor`,inheritAttrs:!1,props:{autofocus:{type:Boolean,default:void 0},defaultBlock:{type:String,default:void 0},dataModel:{type:String,default:void 0},placeholder:{type:[String,Boolean],default:void 0},sanitizer:{type:Object,default:void 0},hideToolbar:{type:Boolean,default:void 0},maxHistoryLength:{type:Number,default:void 0},historyDebounceTime:{type:Number,default:void 0},newGroupDelay:{type:Number,default:void 0},globalUndoRedo:{type:Boolean,default:void 0},tools:{type:Object,default:void 0},data:{type:Object,default:void 0},minHeight:{type:Number,default:void 0},logLevel:{type:String,default:void 0},readOnly:{type:Boolean,default:void 0},i18n:{type:Object,default:void 0},link:{type:Object,default:void 0},linkPaste:{type:Object,default:void 0},inlineToolbar:{type:[Array,Boolean],default:void 0},tunes:{type:Array,default:void 0},style:{type:Object,default:void 0},theme:{type:String,default:void 0},scrollToBlock:{type:Object,default:void 0},user:{type:Object,default:void 0},resolveUser:{type:Function,default:void 0},notifierPosition:{type:String,default:void 0},notifier:{type:Function,default:void 0},width:{type:String,default:void 0},onBeforeRender:{type:Function,default:void 0},onBeforePaste:{type:Function,default:void 0},onEnter:{type:Function,default:void 0},recreateKey:{type:null}},emits:{ready:e=>!0,change:e=>!0,save:e=>!0,"update:data":e=>!0,"after-render":e=>!0,"theme-change":e=>!0,"blocks-rendered":e=>!0,"block-rendered":e=>!0},setup(t,{emit:n,expose:r,attrs:i}){let a=(0,e.getCurrentInstance)(),o=e=>{let t=a==null?void 0:a.vnode.props;return t!=null&&e in t},s=()=>{let e={};for(let n of A){let r=t[n];r!==void 0&&(e[n]=r)}return o(`onChange`)&&(e.onChange=(e,t)=>{n(`change`,{api:e,event:t})}),(o(`onSave`)||o(`onUpdate:data`))&&(e.onSave=e=>{n(`update:data`,e),n(`save`,e)}),o(`onAfterRender`)&&(e.onAfterRender=e=>{n(`after-render`,e)}),o(`onThemeChange`)&&(e.onThemeChange=e=>{n(`theme-change`,e)}),e},c=w(()=>s(),()=>t.recreateKey);(0,e.watch)(c,(e,t,r)=>{if(e===null)return;let i=[];if(o(`onBlocksRendered`)){let t=e=>n(`blocks-rendered`,e);e.on(`blocks:rendered`,t),i.push([`blocks:rendered`,t])}if(o(`onBlockRendered`)){let t=e=>n(`block-rendered`,e);e.on(`block:rendered`,t),i.push([`block:rendered`,t])}r(()=>{for(let[t,n]of i)e.off(t,n)})});let l={last:null};return(0,e.watch)(c,e=>{e!==null&&e!==l.last&&(l.last=e,n(`ready`,e))}),r({instance:(0,e.computed)(()=>c.value),save:()=>{var e;return(e=c.value)==null?void 0:e.save()},focus:e=>{var t;(t=c.value)==null||t.focus(e)},render:e=>{var t;return(t=c.value)==null?void 0:t.render(e)}}),()=>(0,e.h)(k,f({editor:c.value},i))}});function M(t){var r;let i=(0,e.defineComponent)({name:`VueBlock(${t.type})`,props:{ctx:{type:Object,required:!0}},setup(e){return t.setup(e.ctx)}});return r=class{static get toolbox(){return t.toolbox}static get isReadOnlySupported(){return!0}constructor(r){var i,a;this.hostEl=null,this.pendingDispatch=!1,this.commit=e=>{let r=(0,n.fillDefaults)(t.propSchema,f(f({},this.mirror),e));(0,n.deepEqual)(r,this.mirror)||(this.mirror=r,this.lastRendered=r,this.dataRef.value=r,this.flushDispatch())},this.blockApi=r.block;let o=(i=r.config)==null?{}:i;this.registry=o[_];let s=r.api;this.pointerDrag=()=>{var e;return(s==null||(e=s.blocks)==null?void 0:e.isPointerDragActive)===!0},this.mirror=(0,n.fillDefaults)(t.propSchema,(0,e.toRaw)((a=r.data)==null?{}:a)),this.lastRendered=this.mirror,this.dataRef=(0,e.shallowRef)(this.mirror),this.readOnlyRef=(0,e.shallowRef)(r.readOnly);let c=this.blockApi;this.childrenComponent=(0,e.defineComponent)({name:`VueBlockChildren(${t.type})`,setup(){let t=(0,e.ref)(null),r=()=>{t.value!==null&&(0,n.mountChildBlocks)(t.value,c.getChildren())};return(0,e.onMounted)(r),(0,e.onUpdated)(r),()=>(0,e.h)(`div`,{ref:t,[n.DATA_ATTR.nestedBlocks]:``})}})}render(){var e;let t=document.createElement(`div`);t.setAttribute(`data-blok-mutation-free`,`true`),this.hostEl=t;let n={data:this.dataRef,commit:this.commit,block:this.blockApi,readOnly:this.readOnlyRef,BlockChildren:this.childrenComponent};return(e=this.registry)==null||e.register(this.blockApi.id,{hostEl:t,component:i,props:{ctx:n}}),t}rendered(){var e;(e=t.onRendered)==null||e.call(t,this.blockApi)}save(){return this.mirror}async setData(r){var i=this;let a=(0,n.fillDefaults)(t.propSchema,(0,e.toRaw)(r==null?{}:r));return(0,n.deepEqual)(a,i.lastRendered)?!0:(i.mirror=a,i.lastRendered=a,i.dataRef.value=a,await(0,e.nextTick)(),!0)}setReadOnly(e){this.readOnlyRef.value=e}moved(){var e;(e=t.onMoved)==null||e.call(t,this.blockApi)}removed(){var e,n;(e=this.registry)==null||e.unregister(this.blockApi.id),(n=t.onRemoved)==null||n.call(t,this.blockApi)}destroy(){var e;(e=this.registry)==null||e.unregister(this.blockApi.id)}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)}},r.__isBlokVueBlock=!0,r}exports.BLOK_DEFAULT_CONFIG=p,exports.BlokContent=k,exports.BlokEditor=j,exports.createVueBlock=M,exports.provideBlok=m,exports.useBlocks=E,exports.useBlok=w,exports.useBlokDefaults=h;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("vue"),t=require("@bloklabs/core"),n=require("@bloklabs/core/adapters");var r=new WeakMap;function i(e,t){r.set(e,t)}function a(e){return r.get(e)}function o(e){r.delete(e)}function s(e){"@babel/helpers - typeof";return s=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},s(e)}function c(e,t){if(s(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(s(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function l(e){var t=c(e,`string`);return s(t)==`symbol`?t:t+``}function u(e,t,n){return(t=l(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function d(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 f(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?d(Object(n),!0).forEach(function(t){u(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):d(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var p=Symbol(`BLOK_DEFAULT_CONFIG`);function m(t){(0,e.provide)(p,t)}function h(){return(0,e.inject)(p,{})}function g(e,t){if(Object.keys(e).length===0)return t;let n=f({},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=f(f({},e.tools),t.tools)),n}var _=`__blokPortalRegistry`,v=()=>{let t=(0,e.reactive)(new Map);return{entries:t,register(n,r){t.set(n,(0,e.markRaw)(r))},unregister(e){t.delete(e)},setProps(e,n){let r=t.get(e);r!==void 0&&Object.assign(r.props,n)}}},y=new WeakMap;function b(e,t){y.set(e,t)}function x(e){return y.get(e)}function S(e){y.delete(e)}var C=(e,t)=>{if(typeof e!=`object`||!e)return e;let n={};for(let[i,a]of Object.entries(e)){var r;let e=typeof a==`function`?a:a==null?void 0:a.class;if(!(typeof e==`function`&&e.__isBlokVueBlock===!0)){n[i]=a;continue}let o=typeof a==`function`?{class:a}:f({},a);o.config=f(f({},(r=o.config)==null?{}:r),{},{[_]:t}),n[i]=o}return n};function w(r,a){let s=(0,e.shallowRef)(null),c=(0,e.inject)(p,{}),l=()=>g(c,(0,e.toValue)(r)),u={current:null,holder:null,lastRenderedData:l().data,seededEditor:null,renderChain:Promise.resolve()},d=()=>{let t=f({},g((0,e.toRaw)(c),(0,e.toRaw)((0,e.toValue)(r))));return delete t.holder,t.data!==void 0&&(t.data=(0,e.toRaw)(t.data)),t},m=()=>{if(u.current!==null){o(u.current),S(u.current);try{u.current.destroy()}catch(e){}}u.current=null,u.holder=null,s.value=null},h=()=>{let e=document.createElement(`div`);u.holder=e;let n=d(),r=v();n.tools!==void 0&&(n.tools=C(n.tools,r)),typeof n.onSave==`function`&&(n.onSave=(...e)=>{var t,n;u.lastRenderedData=e[0],(t=(n=l()).onSave)==null||t.call(n,...e)});let a=new t.Blok(f(f({},n),{},{holder:e}));u.current=a,i(a,e),b(a,r),a.isReady.then(()=>{u.current===a&&(s.value=a)}).catch(()=>{u.current===a&&m()})};(0,e.watch)([s,()=>(0,n.normalizeReadOnlyConfig)(l().readOnly).enabled],([e,t])=>{e&&e.readOnly.set(t)},{immediate:!0}),(0,e.watch)([s,()=>l().theme],([e,t])=>{e&&t!==void 0&&e.theme.set(t)},{immediate:!0}),(0,e.watch)([s,()=>l().width],([e,t])=>{e&&t!==void 0&&e.width.set(t)},{immediate:!0}),(0,e.watch)([s,()=>l().placeholder],([e,t])=>{e&&t!==void 0&&e.placeholder.set(t)},{immediate:!0});let _={value:void 0};return(0,e.watch)([s,()=>{var e;return(e=l().style)==null?void 0:e.tokens}],([e,t])=>{!e||t===void 0||(0,n.deepEqual)(t,_.value)||(_.value=f({},t),e.tokens.set(t))},{immediate:!0,deep:!0}),(0,e.watch)([s,()=>l().autofocus],([e,t])=>{e&&t&&e.focus()},{immediate:!0}),(0,e.watch)([s,()=>l().data],([t,r])=>{if(!(!t||r===void 0)){if(u.seededEditor!==t){u.seededEditor=t,u.lastRenderedData=r;return}(0,n.deepEqual)(r,u.lastRenderedData)||(u.lastRenderedData=r,u.renderChain=u.renderChain.catch(()=>void 0).then(()=>t.render((0,e.toRaw)(r))))}},{immediate:!0}),a!==void 0&&(0,e.watch)(()=>(0,e.toValue)(a),()=>{m(),h()}),(0,e.onMounted)(h),(0,e.onBeforeUnmount)(m),s}var T=`block changed`;function E(t){let r=(0,e.shallowRef)(0),i=()=>{let n=(0,e.toValue)(t);return n===null?null:(0,e.toRaw)(n)},a=()=>{r.value},o=(0,e.shallowRef)(n.EMPTY_API),s={editor:null,handler:null},c=()=>{s.editor!==null&&s.handler!==null&&s.editor.off(T,s.handler),s.editor=null,s.handler=null};return(0,e.watch)(()=>i(),e=>{if(c(),r.value+=1,e===null){o.value=n.EMPTY_API;return}let t=()=>{r.value+=1};e.on(T,t),s.editor=e,s.handler=t,o.value=(0,n.createBlocksApiForEditor)(e,a)},{immediate:!0}),(0,e.onScopeDispose)(c),{getById:e=>o.value.getById(e),getChildren:e=>o.value.getChildren(e),insert:e=>o.value.insert(e),insertMany:e=>o.value.insertMany(e),insertTree:e=>o.value.insertTree(e),insertMarkdown:(e,t)=>o.value.insertMarkdown(e,t),exportMarkdown:()=>o.value.exportMarkdown(),move:(e,t)=>o.value.move(e,t),nest:(e,t)=>o.value.nest(e,t),unnest:e=>o.value.unnest(e),remove:e=>o.value.remove(e),update:(e,t,n)=>o.value.update(e,t,n),convert:(e,t,n,r)=>o.value.convert(e,t,n,r),transact:e=>o.value.transact(e),transactWithoutCapture:e=>o.value.transactWithoutCapture(e),getBlocksCount:()=>o.value.getBlocksCount(),getCurrentBlockIndex:()=>o.value.getCurrentBlockIndex(),getBlockByIndex:e=>o.value.getBlockByIndex(e),getBlockByElement:e=>o.value.getBlockByElement(e),getBlockData:e=>o.value.getBlockData(e),getBlockIndex:e=>o.value.getBlockIndex(e),composeBlockData:e=>o.value.composeBlockData(e),renderFromHTML:e=>o.value.renderFromHTML(e),insertOutputData:(e,t)=>o.value.insertOutputData(e,t),splitBlock:(e,t,n,r,i)=>o.value.splitBlock(e,t,n,r,i),insertInsideParent:(e,t,n)=>o.value.insertInsideParent(e,t,n),render:e=>o.value.render(e),clear:()=>o.value.clear(),isSyncingFromYjs:()=>o.value.isSyncingFromYjs()}}var D=(0,e.defineComponent)({name:`BlockErrorBoundary`,setup(t,{slots:n}){return(0,e.onErrorCaptured)(()=>!1),()=>{var e;return(e=n.default)==null?void 0:e.call(n)}}}),O=(0,e.defineComponent)({name:`BlockPortalHost`,props:{registry:{type:Object,required:!0}},setup(t){return()=>(0,e.h)(e.Fragment,Array.from(t.registry.entries.entries()).map(([t,n])=>(0,e.h)(e.Teleport,{key:t,to:n.hostEl},[(0,e.h)(D,null,{default:()=>(0,e.h)(n.component,n.props)})])))}}),k=(0,e.defineComponent)({name:`BlokContent`,props:{editor:{type:Object,default:null}},setup(t){let n=(0,e.ref)(null),r=t=>{if(n.value===null||t===null)return;let r=a((0,e.toRaw)(t));r!==void 0&&n.value.appendChild(r)},i=t=>{var n;t!==null&&((n=a((0,e.toRaw)(t)))==null||n.remove())};return(0,e.onMounted)(()=>{r(t.editor)}),(0,e.watch)(()=>t.editor,(e,t)=>{i(t==null?null:t),r(e)}),(0,e.onBeforeUnmount)(()=>{i(t.editor)}),()=>{let r=t.editor,i=r===null?void 0:x((0,e.toRaw)(r));return(0,e.h)(`div`,{ref:n},i===void 0?[]:[(0,e.h)(O,{registry:i})])}}}),A=`autofocus.defaultBlock.dataModel.placeholder.sanitizer.hideToolbar.maxHistoryLength.historyDebounceTime.newGroupDelay.globalUndoRedo.tools.data.minHeight.logLevel.readOnly.i18n.link.linkPaste.inlineToolbar.tunes.style.theme.scrollToBlock.user.resolveUser.notifierPosition.notifier.width.onBeforeRender.onBeforePaste.onEnter`.split(`.`),j=(0,e.defineComponent)({name:`BlokEditor`,inheritAttrs:!1,props:{autofocus:{type:Boolean,default:void 0},defaultBlock:{type:String,default:void 0},dataModel:{type:String,default:void 0},placeholder:{type:[String,Boolean],default:void 0},sanitizer:{type:Object,default:void 0},hideToolbar:{type:Boolean,default:void 0},maxHistoryLength:{type:Number,default:void 0},historyDebounceTime:{type:Number,default:void 0},newGroupDelay:{type:Number,default:void 0},globalUndoRedo:{type:Boolean,default:void 0},tools:{type:Object,default:void 0},data:{type:Object,default:void 0},minHeight:{type:Number,default:void 0},logLevel:{type:String,default:void 0},readOnly:{type:Boolean,default:void 0},i18n:{type:Object,default:void 0},link:{type:Object,default:void 0},linkPaste:{type:Object,default:void 0},inlineToolbar:{type:[Array,Boolean],default:void 0},tunes:{type:Array,default:void 0},style:{type:Object,default:void 0},theme:{type:String,default:void 0},scrollToBlock:{type:Object,default:void 0},user:{type:Object,default:void 0},resolveUser:{type:Function,default:void 0},notifierPosition:{type:String,default:void 0},notifier:{type:Function,default:void 0},width:{type:String,default:void 0},onBeforeRender:{type:Function,default:void 0},onBeforePaste:{type:Function,default:void 0},onEnter:{type:Function,default:void 0},recreateKey:{type:null}},emits:{ready:e=>!0,change:e=>!0,save:e=>!0,"update:data":e=>!0,"after-render":e=>!0,"theme-change":e=>!0,"blocks-rendered":e=>!0,"block-rendered":e=>!0},setup(t,{emit:n,expose:r,attrs:i}){let a=(0,e.getCurrentInstance)(),o=e=>{let t=a==null?void 0:a.vnode.props;return t!=null&&e in t},s=()=>{let e={};for(let n of A){let r=t[n];r!==void 0&&(e[n]=r)}return o(`onChange`)&&(e.onChange=(e,t)=>{n(`change`,{api:e,event:t})}),(o(`onSave`)||o(`onUpdate:data`))&&(e.onSave=e=>{n(`update:data`,e),n(`save`,e)}),o(`onAfterRender`)&&(e.onAfterRender=e=>{n(`after-render`,e)}),o(`onThemeChange`)&&(e.onThemeChange=e=>{n(`theme-change`,e)}),e},c=w(()=>s(),()=>t.recreateKey);(0,e.watch)(c,(e,t,r)=>{if(e===null)return;let i=[];if(o(`onBlocksRendered`)){let t=e=>n(`blocks-rendered`,e);e.on(`blocks:rendered`,t),i.push([`blocks:rendered`,t])}if(o(`onBlockRendered`)){let t=e=>n(`block-rendered`,e);e.on(`block:rendered`,t),i.push([`block:rendered`,t])}r(()=>{for(let[t,n]of i)e.off(t,n)})});let l={last:null};return(0,e.watch)(c,e=>{e!==null&&e!==l.last&&(l.last=e,n(`ready`,e))}),r({instance:(0,e.computed)(()=>c.value),save:()=>{var e;return(e=c.value)==null?void 0:e.save()},focus:e=>{var t;(t=c.value)==null||t.focus(e)},render:e=>{var t;return(t=c.value)==null?void 0:t.render(e)}}),()=>(0,e.h)(k,f({editor:c.value},i))}});function M(t){var r;let i=(0,e.defineComponent)({name:`VueBlock(${t.type})`,props:{ctx:{type:Object,required:!0}},setup(e){return t.setup(e.ctx)}});return r=class{static get toolbox(){return t.toolbox}static get isReadOnlySupported(){return!0}constructor(r){var i,a;this.hostEl=null,this.pendingDispatch=!1,this.commit=e=>{let r=(0,n.fillDefaults)(t.propSchema,f(f({},this.mirror),e));(0,n.deepEqual)(r,this.mirror)||(this.mirror=r,this.lastRendered=r,this.dataRef.value=r,this.flushDispatch())},this.blockApi=r.block;let o=(i=r.config)==null?{}:i;this.registry=o[_];let s=r.api;this.pointerDrag=()=>{var e;return(s==null||(e=s.blocks)==null?void 0:e.isPointerDragActive)===!0},this.mirror=(0,n.fillDefaults)(t.propSchema,(0,e.toRaw)((a=r.data)==null?{}:a)),this.lastRendered=this.mirror,this.dataRef=(0,e.shallowRef)(this.mirror),this.readOnlyRef=(0,e.shallowRef)(r.readOnly);let c=this.blockApi;this.childrenComponent=(0,e.defineComponent)({name:`VueBlockChildren(${t.type})`,setup(){let t=(0,e.ref)(null),r=()=>{t.value!==null&&(0,n.mountChildBlocks)(t.value,c.getChildren())};return(0,e.onMounted)(r),(0,e.onUpdated)(r),()=>(0,e.h)(`div`,{ref:t,[n.DATA_ATTR.nestedBlocks]:``})}})}render(){var e;let t=document.createElement(`div`);t.setAttribute(`data-blok-mutation-free`,`true`),this.hostEl=t;let n={data:this.dataRef,commit:this.commit,block:this.blockApi,readOnly:this.readOnlyRef,BlockChildren:this.childrenComponent};return(e=this.registry)==null||e.register(this.blockApi.id,{hostEl:t,component:i,props:{ctx:n}}),t}rendered(){var e;(e=t.onRendered)==null||e.call(t,this.blockApi)}save(){return this.mirror}async setData(r){var i=this;let a=(0,n.fillDefaults)(t.propSchema,(0,e.toRaw)(r==null?{}:r));return(0,n.deepEqual)(a,i.lastRendered)?!0:(i.mirror=a,i.lastRendered=a,i.dataRef.value=a,await(0,e.nextTick)(),!0)}setReadOnly(e){this.readOnlyRef.value=e}moved(){var e;(e=t.onMoved)==null||e.call(t,this.blockApi)}removed(){var e,n;(e=this.registry)==null||e.unregister(this.blockApi.id),(n=t.onRemoved)==null||n.call(t,this.blockApi)}destroy(){var e;(e=this.registry)==null||e.unregister(this.blockApi.id)}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)}},r.__isBlokVueBlock=!0,r}exports.BLOK_DEFAULT_CONFIG=p,exports.BlokContent=k,exports.BlokEditor=j,exports.createVueBlock=M,exports.provideBlok=m,exports.useBlocks=E,exports.useBlok=w,exports.useBlokDefaults=h;
package/dist/index.mjs CHANGED
@@ -1,19 +1,19 @@
1
- import { Fragment as e, Teleport as t, computed as n, defineComponent as r, getCurrentInstance as i, h as a, inject as o, markRaw as s, nextTick as c, onBeforeUnmount as l, onErrorCaptured as u, onMounted as d, onScopeDispose as f, onUpdated as p, provide as m, reactive as h, ref as g, shallowRef as _, toRaw as v, toValue as y, watch as b } from "vue";
2
- import { Blok as x } from "@bloklabs/core";
3
- import { DATA_ATTR as S, EMPTY_API as C, createBlocksApiForEditor as w, deepEqual as T, fillDefaults as E, mountChildBlocks as D, normalizeReadOnlyConfig as O } from "@bloklabs/core/adapters";
1
+ import { Fragment as e, Teleport as t, computed as n, defineComponent as r, getCurrentInstance as i, h as a, inject as o, markRaw as s, nextTick as c, onBeforeUnmount as l, onErrorCaptured as u, onMounted as d, onScopeDispose as f, onUpdated as p, provide as m, reactive as ee, ref as h, shallowRef as g, toRaw as _, toValue as v, watch as y } from "vue";
2
+ import { Blok as b } from "@bloklabs/core";
3
+ import { DATA_ATTR as x, EMPTY_API as S, createBlocksApiForEditor as C, deepEqual as w, fillDefaults as T, mountChildBlocks as E, normalizeReadOnlyConfig as D } from "@bloklabs/core/adapters";
4
4
  //#region src/holder-map.ts
5
- var k = /* @__PURE__ */ new WeakMap();
6
- function A(e, t) {
7
- k.set(e, t);
5
+ var O = /* @__PURE__ */ new WeakMap();
6
+ function k(e, t) {
7
+ O.set(e, t);
8
8
  }
9
- function j(e) {
10
- return k.get(e);
9
+ function A(e) {
10
+ return O.get(e);
11
11
  }
12
- function ee(e) {
13
- k.delete(e);
12
+ function j(e) {
13
+ O.delete(e);
14
14
  }
15
15
  //#endregion
16
- //#region \0@oxc-project+runtime@0.126.0/helpers/typeof.js
16
+ //#region \0@oxc-project+runtime@0.139.0/helpers/esm/typeof.js
17
17
  function M(e) {
18
18
  "@babel/helpers - typeof";
19
19
  return M = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(e) {
@@ -23,7 +23,7 @@ function M(e) {
23
23
  }, M(e);
24
24
  }
25
25
  //#endregion
26
- //#region \0@oxc-project+runtime@0.126.0/helpers/toPrimitive.js
26
+ //#region \0@oxc-project+runtime@0.139.0/helpers/esm/toPrimitive.js
27
27
  function N(e, t) {
28
28
  if (M(e) != "object" || !e) return e;
29
29
  var n = e[Symbol.toPrimitive];
@@ -35,13 +35,13 @@ function N(e, t) {
35
35
  return (t === "string" ? String : Number)(e);
36
36
  }
37
37
  //#endregion
38
- //#region \0@oxc-project+runtime@0.126.0/helpers/toPropertyKey.js
38
+ //#region \0@oxc-project+runtime@0.139.0/helpers/esm/toPropertyKey.js
39
39
  function P(e) {
40
40
  var t = N(e, "string");
41
41
  return M(t) == "symbol" ? t : t + "";
42
42
  }
43
43
  //#endregion
44
- //#region \0@oxc-project+runtime@0.126.0/helpers/defineProperty.js
44
+ //#region \0@oxc-project+runtime@0.139.0/helpers/esm/defineProperty.js
45
45
  function F(e, t, n) {
46
46
  return (t = P(t)) in e ? Object.defineProperty(e, t, {
47
47
  value: n,
@@ -51,7 +51,7 @@ function F(e, t, n) {
51
51
  }) : e[t] = n, e;
52
52
  }
53
53
  //#endregion
54
- //#region \0@oxc-project+runtime@0.126.0/helpers/objectSpread2.js
54
+ //#region \0@oxc-project+runtime@0.139.0/helpers/esm/objectSpread2.js
55
55
  function I(e, t) {
56
56
  var n = Object.keys(e);
57
57
  if (Object.getOwnPropertySymbols) {
@@ -94,7 +94,7 @@ function V(e, t) {
94
94
  //#endregion
95
95
  //#region src/block-portal-registry.ts
96
96
  var H = "__blokPortalRegistry", U = () => {
97
- let e = h(/* @__PURE__ */ new Map());
97
+ let e = ee(/* @__PURE__ */ new Map());
98
98
  return {
99
99
  entries: e,
100
100
  register(t, n) {
@@ -136,18 +136,18 @@ var J = (e, t) => {
136
136
  return n;
137
137
  };
138
138
  function Y(e, t) {
139
- let n = _(null), r = o(R, {}), i = () => V(r, y(e)), a = {
139
+ let n = g(null), r = o(R, {}), i = () => V(r, v(e)), a = {
140
140
  current: null,
141
141
  holder: null,
142
142
  lastRenderedData: i().data,
143
143
  seededEditor: null,
144
144
  renderChain: Promise.resolve()
145
145
  }, s = () => {
146
- let t = L({}, V(v(r), v(y(e))));
147
- return delete t.holder, t.data !== void 0 && (t.data = v(t.data)), t;
146
+ let t = L({}, V(_(r), _(v(e))));
147
+ return delete t.holder, t.data !== void 0 && (t.data = _(t.data)), t;
148
148
  }, c = () => {
149
149
  if (a.current !== null) {
150
- ee(a.current), q(a.current);
150
+ j(a.current), q(a.current);
151
151
  try {
152
152
  a.current.destroy();
153
153
  } catch (e) {}
@@ -161,32 +161,42 @@ function Y(e, t) {
161
161
  var t, n;
162
162
  a.lastRenderedData = e[0], (t = (n = i()).onSave) == null || t.call(n, ...e);
163
163
  });
164
- let o = new x(L(L({}, t), {}, { holder: e }));
165
- a.current = o, A(o, e), G(o, r), o.isReady.then(() => {
164
+ let o = new b(L(L({}, t), {}, { holder: e }));
165
+ a.current = o, k(o, e), G(o, r), o.isReady.then(() => {
166
166
  a.current === o && (n.value = o);
167
167
  }).catch(() => {
168
168
  a.current === o && c();
169
169
  });
170
170
  };
171
- return b([n, () => O(i().readOnly).enabled], ([e, t]) => {
171
+ y([n, () => D(i().readOnly).enabled], ([e, t]) => {
172
172
  e && e.readOnly.set(t);
173
- }, { immediate: !0 }), b([n, () => i().theme], ([e, t]) => {
173
+ }, { immediate: !0 }), y([n, () => i().theme], ([e, t]) => {
174
174
  e && t !== void 0 && e.theme.set(t);
175
- }, { immediate: !0 }), b([n, () => i().width], ([e, t]) => {
175
+ }, { immediate: !0 }), y([n, () => i().width], ([e, t]) => {
176
176
  e && t !== void 0 && e.width.set(t);
177
- }, { immediate: !0 }), b([n, () => i().placeholder], ([e, t]) => {
177
+ }, { immediate: !0 }), y([n, () => i().placeholder], ([e, t]) => {
178
178
  e && t !== void 0 && e.placeholder.set(t);
179
- }, { immediate: !0 }), b([n, () => i().autofocus], ([e, t]) => {
179
+ }, { immediate: !0 });
180
+ let f = { value: void 0 };
181
+ return y([n, () => {
182
+ var e;
183
+ return (e = i().style) == null ? void 0 : e.tokens;
184
+ }], ([e, t]) => {
185
+ !e || t === void 0 || w(t, f.value) || (f.value = L({}, t), e.tokens.set(t));
186
+ }, {
187
+ immediate: !0,
188
+ deep: !0
189
+ }), y([n, () => i().autofocus], ([e, t]) => {
180
190
  e && t && e.focus();
181
- }, { immediate: !0 }), b([n, () => i().data], ([e, t]) => {
191
+ }, { immediate: !0 }), y([n, () => i().data], ([e, t]) => {
182
192
  if (!(!e || t === void 0)) {
183
193
  if (a.seededEditor !== e) {
184
194
  a.seededEditor = e, a.lastRenderedData = t;
185
195
  return;
186
196
  }
187
- T(t, a.lastRenderedData) || (a.lastRenderedData = t, a.renderChain = a.renderChain.catch(() => void 0).then(() => e.render(v(t))));
197
+ w(t, a.lastRenderedData) || (a.lastRenderedData = t, a.renderChain = a.renderChain.catch(() => void 0).then(() => e.render(_(t))));
188
198
  }
189
- }, { immediate: !0 }), t !== void 0 && b(() => y(t), () => {
199
+ }, { immediate: !0 }), t !== void 0 && y(() => v(t), () => {
190
200
  c(), u();
191
201
  }), d(u), l(c), n;
192
202
  }
@@ -194,26 +204,26 @@ function Y(e, t) {
194
204
  //#region src/useBlocks.ts
195
205
  var X = "block changed";
196
206
  function Z(e) {
197
- let t = _(0), n = () => {
198
- let t = y(e);
199
- return t === null ? null : v(t);
207
+ let t = g(0), n = () => {
208
+ let t = v(e);
209
+ return t === null ? null : _(t);
200
210
  }, r = () => {
201
211
  t.value;
202
- }, i = _(C), a = {
212
+ }, i = g(S), a = {
203
213
  editor: null,
204
214
  handler: null
205
215
  }, o = () => {
206
216
  a.editor !== null && a.handler !== null && a.editor.off(X, a.handler), a.editor = null, a.handler = null;
207
217
  };
208
- return b(() => n(), (e) => {
218
+ return y(() => n(), (e) => {
209
219
  if (o(), t.value += 1, e === null) {
210
- i.value = C;
220
+ i.value = S;
211
221
  return;
212
222
  }
213
223
  let n = () => {
214
224
  t.value += 1;
215
225
  };
216
- e.on(X, n), a.editor = e, a.handler = n, i.value = w(e, r);
226
+ e.on(X, n), a.editor = e, a.handler = n, i.value = C(e, r);
217
227
  }, { immediate: !0 }), f(o), {
218
228
  getById: (e) => i.value.getById(e),
219
229
  getChildren: (e) => i.value.getChildren(e),
@@ -275,22 +285,22 @@ var Q = r({
275
285
  default: null
276
286
  } },
277
287
  setup(e) {
278
- let t = g(null), n = (e) => {
288
+ let t = h(null), n = (e) => {
279
289
  if (t.value === null || e === null) return;
280
- let n = j(v(e));
290
+ let n = A(_(e));
281
291
  n !== void 0 && t.value.appendChild(n);
282
292
  }, r = (e) => {
283
293
  var t;
284
- e !== null && ((t = j(v(e))) == null || t.remove());
294
+ e !== null && ((t = A(_(e))) == null || t.remove());
285
295
  };
286
296
  return d(() => {
287
297
  n(e.editor);
288
- }), b(() => e.editor, (e, t) => {
298
+ }), y(() => e.editor, (e, t) => {
289
299
  r(t == null ? null : t), n(e);
290
300
  }), l(() => {
291
301
  r(e.editor);
292
302
  }), () => {
293
- let n = e.editor, r = n === null ? void 0 : K(v(n));
303
+ let n = e.editor, r = n === null ? void 0 : K(_(n));
294
304
  return a("div", { ref: t }, r === void 0 ? [] : [a(te, { registry: r })]);
295
305
  };
296
306
  }
@@ -457,7 +467,7 @@ var Q = r({
457
467
  t("theme-change", e);
458
468
  }), n;
459
469
  }, u = Y(() => l(), () => e.recreateKey);
460
- b(u, (e, n, r) => {
470
+ y(u, (e, n, r) => {
461
471
  if (e === null) return;
462
472
  let i = [];
463
473
  if (c("onBlocksRendered")) {
@@ -473,7 +483,7 @@ var Q = r({
473
483
  });
474
484
  });
475
485
  let d = { last: null };
476
- return b(u, (e) => {
486
+ return y(u, (e) => {
477
487
  e !== null && e !== d.last && (d.last = e, t("ready", e));
478
488
  }), r({
479
489
  instance: n(() => u.value),
@@ -516,8 +526,8 @@ function ie(e) {
516
526
  constructor(t) {
517
527
  var n, i;
518
528
  this.hostEl = null, this.pendingDispatch = !1, this.commit = (t) => {
519
- let n = E(e.propSchema, L(L({}, this.mirror), t));
520
- T(n, this.mirror) || (this.mirror = n, this.lastRendered = n, this.dataRef.value = n, this.flushDispatch());
529
+ let n = T(e.propSchema, L(L({}, this.mirror), t));
530
+ w(n, this.mirror) || (this.mirror = n, this.lastRendered = n, this.dataRef.value = n, this.flushDispatch());
521
531
  }, this.blockApi = t.block;
522
532
  let o = (n = t.config) == null ? {} : n;
523
533
  this.registry = o[H];
@@ -525,17 +535,17 @@ function ie(e) {
525
535
  this.pointerDrag = () => {
526
536
  var e;
527
537
  return (s == null || (e = s.blocks) == null ? void 0 : e.isPointerDragActive) === !0;
528
- }, this.mirror = E(e.propSchema, v((i = t.data) == null ? {} : i)), this.lastRendered = this.mirror, this.dataRef = _(this.mirror), this.readOnlyRef = _(t.readOnly);
538
+ }, this.mirror = T(e.propSchema, _((i = t.data) == null ? {} : i)), this.lastRendered = this.mirror, this.dataRef = g(this.mirror), this.readOnlyRef = g(t.readOnly);
529
539
  let c = this.blockApi;
530
540
  this.childrenComponent = r({
531
541
  name: `VueBlockChildren(${e.type})`,
532
542
  setup() {
533
- let e = g(null), t = () => {
534
- e.value !== null && D(e.value, c.getChildren());
543
+ let e = h(null), t = () => {
544
+ e.value !== null && E(e.value, c.getChildren());
535
545
  };
536
546
  return d(t), p(t), () => a("div", {
537
547
  ref: e,
538
- [S.nestedBlocks]: ""
548
+ [x.nestedBlocks]: ""
539
549
  });
540
550
  }
541
551
  });
@@ -566,8 +576,8 @@ function ie(e) {
566
576
  }
567
577
  async setData(t) {
568
578
  var n = this;
569
- let r = E(e.propSchema, v(t == null ? {} : t));
570
- return T(r, n.lastRendered) ? !0 : (n.mirror = r, n.lastRendered = r, n.dataRef.value = r, await c(), !0);
579
+ let r = T(e.propSchema, _(t == null ? {} : t));
580
+ return w(r, n.lastRendered) ? !0 : (n.mirror = r, n.lastRendered = r, n.dataRef.value = r, await c(), !0);
571
581
  }
572
582
  setReadOnly(e) {
573
583
  this.readOnlyRef.value = e;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bloklabs/vue",
3
- "version": "1.2.6",
3
+ "version": "1.3.0",
4
4
  "description": "Vue 3 bindings for the Blok editor",
5
5
  "license": "Apache-2.0",
6
6
  "author": "JackUait",
@@ -33,7 +33,7 @@
33
33
  "build": "yarn run -T vite build --mode production"
34
34
  },
35
35
  "peerDependencies": {
36
- "@bloklabs/core": "^1.2.6",
36
+ "@bloklabs/core": "^1.3.0",
37
37
  "vue": "^3.5.0"
38
38
  }
39
39
  }
package/src/BlokEditor.ts CHANGED
@@ -131,7 +131,7 @@ export const BlokEditor = defineComponent({
131
131
  };
132
132
  }
133
133
 
134
- return config as UseBlokConfig;
134
+ return config;
135
135
  };
136
136
 
137
137
  const editor = useBlok(
@@ -52,7 +52,7 @@ export const createBlockPortalRegistry = (): BlockPortalRegistry => {
52
52
  const entries = reactive(new Map<string, BlockPortalEntry>());
53
53
 
54
54
  return {
55
- entries: entries as ReadonlyMap<string, BlockPortalEntry>,
55
+ entries: entries,
56
56
  register(id: string, entry: BlockPortalEntry): void {
57
57
  // markRaw so the reactive Map (which must still track add/delete) does NOT
58
58
  // deep-proxy the entry — a proxied component DEFINITION or DOM host would
@@ -218,7 +218,7 @@ export function createVueBlock<Data = BlockToolData>(
218
218
 
219
219
  public save(): BlockToolData {
220
220
  // The complete, frozen, toRaw-clean mirror — never the DOM, never partial.
221
- return this.mirror as BlockToolData;
221
+ return this.mirror;
222
222
  }
223
223
 
224
224
  public async setData(newData: BlockToolData): Promise<boolean> {
@@ -61,5 +61,5 @@ export function mergeBlokDefaults(
61
61
  merged.tools = { ...defaults.tools, ...config.tools };
62
62
  }
63
63
 
64
- return merged as UseBlokConfig;
64
+ return merged;
65
65
  }
package/src/useBlok.ts CHANGED
@@ -51,7 +51,7 @@ const injectPortalRegistry = (tools: unknown, registry: BlockPortalRegistry): un
51
51
  typeof entry === 'function' ? { class: entry } : { ...(entry as Record<string, unknown>) };
52
52
 
53
53
  base.config = {
54
- ...((base.config as Record<string, unknown> | undefined) ?? {}),
54
+ ...((base.config) ?? {}),
55
55
  [BLOK_PORTAL_REGISTRY_CONFIG_KEY]: registry,
56
56
  };
57
57
  result[name] = base;
@@ -176,7 +176,7 @@ export function useBlok(
176
176
  };
177
177
  }
178
178
 
179
- const blok = new BlokRuntime({ ...snapshot, holder }) as unknown as Blok;
179
+ const blok = new BlokRuntime({ ...snapshot, holder });
180
180
 
181
181
  state.current = blok;
182
182
  setHolder(blok, holder);
@@ -239,6 +239,25 @@ export function useBlok(
239
239
  { immediate: true }
240
240
  );
241
241
 
242
+ // Theme tokens were construction-only, so a host with a live light/dark
243
+ // toggle had to recreate the editor or hand-write the global stylesheet Blok
244
+ // already injects. Deep-equal-deduped because `tokens` is typically a fresh
245
+ // object literal; `deep: true` so mutating the same object still propagates.
246
+ const appliedTokens: { value: Record<string, string> | undefined } = { value: undefined };
247
+
248
+ watch(
249
+ [editor, () => mergedConfig().style?.tokens],
250
+ ([ed, tokens]) => {
251
+ if (!ed || tokens === undefined || deepEqual(tokens, appliedTokens.value)) {
252
+ return;
253
+ }
254
+
255
+ appliedTokens.value = { ...tokens };
256
+ ed.tokens.set(tokens);
257
+ },
258
+ { immediate: true, deep: true }
259
+ );
260
+
242
261
  watch(
243
262
  [editor, () => mergedConfig().autofocus],
244
263
  ([ed, autofocus]) => {