@blockslides/vue-3 0.2.0 → 0.4.1
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.d.ts +0 -3
- package/dist/index.js +109 -361
- package/package.json +7 -15
- package/src/index.ts +1 -4
- package/dist/FloatingMenu-BKkixozS.js +0 -226
- package/dist/FloatingMenu-By8Qi7tW.cjs +0 -1
- package/dist/menus/BubbleMenu.d.ts +0 -6
- package/dist/menus/FloatingMenu.d.ts +0 -6
- package/dist/menus/index.d.ts +0 -3
- package/dist/menus.cjs +0 -1
- package/dist/menus.d.ts +0 -1
- package/dist/menus.js +0 -6
- package/dist/useSlideEditor.d.ts +0 -36
- package/src/SlideEditor.vue +0 -54
- package/src/menus/BubbleMenu.ts +0 -111
- package/src/menus/BubbleMenuPreset.vue +0 -137
- package/src/menus/FloatingMenu.ts +0 -84
- package/src/menus/index.ts +0 -3
- package/src/useSlideEditor.ts +0 -255
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("@blockslides/core"),o=require("vue"),j=require("@blockslides/ai-context"),O=require("@blockslides/extension-kit"),f=require("./FloatingMenu-By8Qi7tW.cjs");function x(r){return o.customRef((e,t)=>({get(){return e(),r},set(n){r=n,requestAnimationFrame(()=>{requestAnimationFrame(()=>{t()})})}}))}class _ extends g.Editor{constructor(e={}){return super(e),this.contentComponent=null,this.appContext=null,this.reactiveState=x(this.view.state),this.reactiveExtensionStorage=x(this.extensionStorage),this.on("beforeTransaction",({nextState:t})=>{this.reactiveState.value=t,this.reactiveExtensionStorage.value=this.extensionStorage}),o.markRaw(this)}get state(){return this.reactiveState?this.reactiveState.value:this.view.state}get storage(){return this.reactiveExtensionStorage?this.reactiveExtensionStorage.value:super.storage}registerPlugin(e,t){const n=super.registerPlugin(e,t);return this.reactiveState&&(this.reactiveState.value=n),n}unregisterPlugin(e){const t=super.unregisterPlugin(e);return this.reactiveState&&t&&(this.reactiveState.value=t),t}}const P=o.defineComponent({name:"EditorContent",props:{editor:{default:null,type:Object}},setup(r){const e=o.ref(),t=o.getCurrentInstance();return o.watchEffect(()=>{const n=r.editor;n&&n.options.element&&e.value&&o.nextTick(()=>{var s;if(!e.value||!((s=n.view.dom)!=null&&s.parentNode))return;const i=o.unref(e.value);e.value.append(...n.view.dom.parentNode.childNodes),n.contentComponent=t.ctx._,t&&(n.appContext={...t.appContext,provides:t.provides}),n.setOptions({element:i}),n.createNodeViews()})}),o.onBeforeUnmount(()=>{const n=r.editor;n&&(n.contentComponent=null,n.appContext=null)}),{rootEl:e}},render(){return o.h("div",{ref:r=>{this.rootEl=r}})}}),V=o.defineComponent({name:"NodeViewContent",props:{as:{type:String,default:"div"}},render(){return o.h(this.as,{style:{whiteSpace:"pre-wrap"},"data-node-view-content":""})}}),B=o.defineComponent({name:"NodeViewWrapper",props:{as:{type:String,default:"div"}},inject:["onDragStart","decorationClasses"],render(){var r,e;return o.h(this.as,{class:this.decorationClasses,style:{whiteSpace:"normal"},"data-node-view-wrapper":"",onDragstart:this.onDragStart},(e=(r=this.$slots).default)==null?void 0:e.call(r))}}),M=(r={})=>{console.log("[useEditor] THE OPTIONS ARE:",r),console.log("[useEditor] Creating editor with options:",r),console.log("[useEditor] options.enableCoreExtensions:",r.enableCoreExtensions),console.log("[useEditor] options.injectCSS:",r.injectCSS);const e=o.shallowRef();return o.onMounted(()=>{var t;console.log("[useEditor] onMounted - Creating Editor instance"),console.log("[useEditor] onMounted - options:",r),console.log("[useEditor] onMounted - options.enableCoreExtensions:",r.enableCoreExtensions),e.value=new _(r),console.log("[useEditor] Editor instance created:",e.value),console.log("[useEditor] Editor view:",(t=e.value)==null?void 0:t.view)}),o.onBeforeUnmount(()=>{var i,s,d,a;console.log("[useEditor] onBeforeUnmount - Cleaning up editor");const t=(s=(i=e.value)==null?void 0:i.view.dom)==null?void 0:s.parentNode,n=t==null?void 0:t.cloneNode(!0);(d=t==null?void 0:t.parentNode)==null||d.replaceChild(n,t),(a=e.value)==null||a.destroy()}),e},q=()=>({type:"doc",content:[{type:"slide",attrs:{size:"16x9",className:"",id:"slide-1",backgroundMode:"none",backgroundColor:null,backgroundImage:null,backgroundOverlayColor:null,backgroundOverlayOpacity:null},content:[{type:"column",attrs:{align:"center",padding:"lg",margin:null,gap:"md",backgroundColor:"#ffffff",backgroundImage:null,borderRadius:null,border:null,fill:!0,width:null,height:null,justify:"center"},content:[{type:"heading",attrs:{align:null,padding:null,margin:null,gap:null,backgroundColor:null,backgroundImage:null,borderRadius:null,border:null,fill:null,width:null,height:null,justify:null,id:"1fc4664c-333d-4203-a3f1-3ad27a54c535","data-toc-id":"1fc4664c-333d-4203-a3f1-3ad27a54c535",level:1},content:[{type:"text",text:"Lorem ipsum dolor sit amet"}]},{type:"paragraph",attrs:{align:null,padding:null,margin:null,gap:null,backgroundColor:null,backgroundImage:null,borderRadius:null,border:null,fill:null,width:null,height:null,justify:null},content:[{type:"text",text:"Consectetur adipiscing elit. Sed do eiusmod tempor incididunt. "}]}]}]}]}),D=r=>({showPresets:!0,presets:r,presetBackground:"#0f172a",presetForeground:"#e5e7eb"}),R={renderMode:"dynamic",hoverOutline:{color:"#3b82f6",width:"1.5px",offset:"4px"},hoverOutlineCascade:!1},k=(r={})=>{console.log("[useSlideEditor] Called with props:",r);const{content:e,onChange:t,extensions:n,extensionKitOptions:i,presetTemplates:s,onEditorReady:d,theme:a="light",editorProps:u,onUpdate:c,...h}=r;console.log("[useSlideEditor] editorOptions:",h),console.log("[useSlideEditor] editorOptions.enableCoreExtensions:",h.enableCoreExtensions),console.log("[useSlideEditor] editorOptions.injectCSS:",h.injectCSS),console.log("[useSlideEditor] Content:",e),console.log("[useSlideEditor] ExtensionKitOptions:",i);const S=o.computed(()=>s??j.templatesV1.listPresetTemplates()),y=o.computed(()=>{const l=(i==null?void 0:i.addSlideButton)===!1?!1:{...D(S.value),...(i==null?void 0:i.addSlideButton)??{}},p=(i==null?void 0:i.slide)===!1?!1:{...R,...(i==null?void 0:i.slide)??{}},b={...i,addSlideButton:l,slide:p};return console.log("[useSlideEditor] mergedExtensionKitOptions:",b),console.log("[useSlideEditor] addSlideButton config:",b.addSlideButton),console.log("[useSlideEditor] presets:",S.value),b}),v=o.computed(()=>{console.log("[useSlideEditor] Configuring ExtensionKit with options:",y.value);const l=O.ExtensionKit.configure(y.value);console.log("[useSlideEditor] ExtensionKit configured:",l),console.log("[useSlideEditor] ExtensionKit name:",l.name);const p=n?[l,...n]:[l];return console.log("[useSlideEditor] Final extensions array:",p),p}),w=e??q();console.log("[useSlideEditor] Initial content resolved:",w),console.log("[useSlideEditor] Resolved extensions:",v.value);const m={content:w,extensions:v.value,theme:a,editorProps:{attributes:{autocomplete:"off",autocorrect:"off",autocapitalize:"off",class:"min-h-full min-w-full",...(u==null?void 0:u.attributes)??{}},...u},...h,onUpdate:l=>{console.log("[useSlideEditor] onUpdate called");const p=l.editor.getJSON();t==null||t(p,l.editor),c==null||c(l)}};console.log("[useSlideEditor] Final editor config:",m),console.log("[useSlideEditor] Final editor config enableCoreExtensions:",m.enableCoreExtensions),console.log("[useSlideEditor] Final editor config injectCSS:",m.injectCSS);const E=M(m);return console.log("[useSlideEditor] Editor ref created:",E),o.watch(E,l=>{console.log("[useSlideEditor] Editor watch triggered, newEditor:",l),l&&!l.isDestroyed?(console.log("[useSlideEditor] ✅ Calling onEditorReady"),d==null||d(l)):console.log("[useSlideEditor] ❌ Editor not ready or destroyed")},{immediate:!0}),{editor:E,presets:S}},A={class:"bs-viewport"},F=o.defineComponent({__name:"SlideEditor",props:{bubbleMenuPreset:{type:[Boolean,Object],default:!0},className:{},style:{},content:{},onChange:{},extensions:{},extensionKitOptions:{},presetTemplates:{},onEditorReady:{},element:{},theme:{},injectCSS:{type:Boolean},injectNonce:{},autofocus:{type:[String,Number,Boolean,null]},editable:{type:Boolean},editorProps:{},parseOptions:{},coreExtensionOptions:{},enableInputRules:{type:[Array,Boolean]},enablePasteRules:{type:[Array,Boolean]},enableCoreExtensions:{type:[Boolean,Object]},enableContentCheck:{type:Boolean},emitContentError:{type:Boolean},onBeforeCreate:{},onCreate:{},onMount:{},onUnmount:{},onContentError:{},onUpdate:{},onSelectionUpdate:{},onTransaction:{},onFocus:{},onBlur:{},onDestroy:{},onPaste:{},onDrop:{},onDelete:{}},setup(r){console.log("[SlideEditor.vue] Component loading");const e=r;console.log("[SlideEditor.vue] Props:",e),console.log("[SlideEditor.vue] Props.enableCoreExtensions:",e.enableCoreExtensions),console.log("[SlideEditor.vue] Props.injectCSS:",e.injectCSS);const{bubbleMenuPreset:t,className:n,style:i,...s}=e;console.log("[SlideEditor.vue] Hook props:",s),console.log("[SlideEditor.vue] hookProps.enableCoreExtensions:",s.enableCoreExtensions),console.log("[SlideEditor.vue] hookProps.injectCSS:",s.injectCSS);const{editor:d,presets:a}=k(s);console.log("[SlideEditor.vue] Editor from useSlideEditor:",d);const u=o.computed(()=>e.bubbleMenuPreset===!1?null:e.bubbleMenuPreset===!0?{}:e.bubbleMenuPreset);return o.watch(d,c=>{console.log("[SlideEditor.vue] Editor watch - newEditor:",c),console.log("[SlideEditor.vue] Editor exists:",!!c)},{immediate:!0}),o.onMounted(()=>{console.log("[SlideEditor.vue] Component mounted"),console.log("[SlideEditor.vue] Editor value:",d.value)}),(c,h)=>o.unref(d)?(o.openBlock(),o.createElementBlock("div",{key:0,class:o.normalizeClass(o.unref(n)),style:o.normalizeStyle(o.unref(i))},[o.createElementVNode("div",A,[o.createVNode(o.unref(P),{editor:o.unref(d)},null,8,["editor"]),u.value?(o.openBlock(),o.createBlock(f._sfc_main,o.mergeProps({key:0,editor:o.unref(d)},u.value),null,16,["editor"])):o.createCommentVNode("",!0)])],6)):o.createCommentVNode("",!0)}});class C{constructor(e,{props:t={},editor:n}){this.destroyed=!1,this.editor=n,this.component=o.markRaw(e),this.el=document.createElement("div"),this.props=o.reactive(t),this.renderedComponent=this.renderComponent()}get element(){return this.renderedComponent.el}get ref(){var e,t,n,i;return(t=(e=this.renderedComponent.vNode)==null?void 0:e.component)!=null&&t.exposed?this.renderedComponent.vNode.component.exposed:(i=(n=this.renderedComponent.vNode)==null?void 0:n.component)==null?void 0:i.proxy}renderComponent(){if(this.destroyed)return this.renderedComponent;let e=o.h(this.component,this.props);return this.editor.appContext&&(e.appContext=this.editor.appContext),typeof document<"u"&&this.el&&o.render(e,this.el),{vNode:e,destroy:()=>{this.el&&o.render(null,this.el),this.el=null,e=null},el:this.el?this.el.firstElementChild:null}}updateProps(e={}){this.destroyed||(Object.entries(e).forEach(([t,n])=>{this.props[t]=n}),this.renderComponent())}destroy(){this.destroyed||(this.destroyed=!0,this.renderedComponent.destroy())}}const U={editor:{type:Object,required:!0},mark:{type:Object,required:!0},extension:{type:Object,required:!0},inline:{type:Boolean,required:!0},view:{type:Object,required:!0},updateAttributes:{type:Function,required:!0},HTMLAttributes:{type:Object,required:!0}},I=o.defineComponent({name:"MarkViewContent",props:{as:{type:String,default:"span"}},render(){return o.h(this.as,{style:{whiteSpace:"inherit"},"data-mark-view-content":""})}});class N extends g.MarkView{constructor(e,t,n){super(e,t,n);const i={...t,updateAttributes:this.updateAttributes.bind(this)},s=o.defineComponent({extends:{...e},props:Object.keys(i),template:this.component.template,setup:d=>{var a;return(a=e.setup)==null?void 0:a.call(e,d,{expose:()=>{}})},__scopeId:e.__scopeId,__cssModules:e.__cssModules,__name:e.__name,__file:e.__file});this.renderer=new C(s,{editor:this.editor,props:i})}get dom(){return this.renderer.element}get contentDOM(){return this.dom.querySelector("[data-mark-view-content]")}updateAttributes(e){const t=o.toRaw(this.mark);super.updateAttributes(e,t)}destroy(){this.renderer.destroy()}}function T(r,e={}){return t=>t.editor.contentComponent?new N(r,t,e):{}}const W={editor:{type:Object,required:!0},node:{type:Object,required:!0},decorations:{type:Object,required:!0},selected:{type:Boolean,required:!0},extension:{type:Object,required:!0},getPos:{type:Function,required:!0},updateAttributes:{type:Function,required:!0},deleteNode:{type:Function,required:!0},view:{type:Object,required:!0},innerDecorations:{type:Object,required:!0},HTMLAttributes:{type:Object,required:!0}};class L extends g.NodeView{constructor(){super(...arguments),this.cachedExtensionWithSyncedStorage=null}get extensionWithSyncedStorage(){if(!this.cachedExtensionWithSyncedStorage){const e=this.editor,t=this.extension;this.cachedExtensionWithSyncedStorage=new Proxy(t,{get(n,i,s){return i==="storage"?e.storage[t.name]??{}:Reflect.get(n,i,s)}})}return this.cachedExtensionWithSyncedStorage}mount(){const e={editor:this.editor,node:this.node,decorations:this.decorations,innerDecorations:this.innerDecorations,view:this.view,selected:!1,extension:this.extensionWithSyncedStorage,HTMLAttributes:this.HTMLAttributes,getPos:()=>this.getPos(),updateAttributes:(i={})=>this.updateAttributes(i),deleteNode:()=>this.deleteNode()},t=this.onDragStart.bind(this);this.decorationClasses=o.ref(this.getDecorationClasses());const n=o.defineComponent({extends:{...this.component},props:Object.keys(e),template:this.component.template,setup:i=>{var s,d;return o.provide("onDragStart",t),o.provide("decorationClasses",this.decorationClasses),(d=(s=this.component).setup)==null?void 0:d.call(s,i,{expose:()=>{}})},__scopeId:this.component.__scopeId,__cssModules:this.component.__cssModules,__name:this.component.__name,__file:this.component.__file});this.handleSelectionUpdate=this.handleSelectionUpdate.bind(this),this.editor.on("selectionUpdate",this.handleSelectionUpdate),this.renderer=new C(n,{editor:this.editor,props:e})}get dom(){if(!this.renderer.element||!this.renderer.element.hasAttribute("data-node-view-wrapper"))throw Error("Please use the NodeViewWrapper component for your node view.");return this.renderer.element}get contentDOM(){return this.node.isLeaf?null:this.dom.querySelector("[data-node-view-content]")}handleSelectionUpdate(){const{from:e,to:t}=this.editor.state.selection,n=this.getPos();if(typeof n=="number")if(e<=n&&t>=n+this.node.nodeSize){if(this.renderer.props.selected)return;this.selectNode()}else{if(!this.renderer.props.selected)return;this.deselectNode()}}update(e,t,n){const i=s=>{this.decorationClasses.value=this.getDecorationClasses(),this.renderer.updateProps(s)};if(typeof this.options.update=="function"){const s=this.node,d=this.decorations,a=this.innerDecorations;return this.node=e,this.decorations=t,this.innerDecorations=n,this.options.update({oldNode:s,oldDecorations:d,newNode:e,newDecorations:t,oldInnerDecorations:a,innerDecorations:n,updateProps:()=>i({node:e,decorations:t,innerDecorations:n,extension:this.extensionWithSyncedStorage})})}return e.type!==this.node.type?!1:(e===this.node&&this.decorations===t&&this.innerDecorations===n||(this.node=e,this.decorations=t,this.innerDecorations=n,i({node:e,decorations:t,innerDecorations:n,extension:this.extensionWithSyncedStorage})),!0)}selectNode(){this.renderer.updateProps({selected:!0}),this.renderer.element&&this.renderer.element.classList.add("ProseMirror-selectednode")}deselectNode(){this.renderer.updateProps({selected:!1}),this.renderer.element&&this.renderer.element.classList.remove("ProseMirror-selectednode")}getDecorationClasses(){return this.decorations.flatMap(e=>e.type.attrs.class).join(" ")}destroy(){this.renderer.destroy(),this.editor.off("selectionUpdate",this.handleSelectionUpdate)}}function z(r,e){return t=>{if(!t.editor.contentComponent)return{};const n=typeof r=="function"&&"__vccOpts"in r?r.__vccOpts:r;return new L(n,t,e)}}exports.BubbleMenu=f.BubbleMenu;exports.BubbleMenuPreset=f._sfc_main;exports.FloatingMenu=f.FloatingMenu;exports.Editor=_;exports.EditorContent=P;exports.MarkViewContent=I;exports.NodeViewContent=V;exports.NodeViewWrapper=B;exports.SlideEditor=F;exports.VueMarkView=N;exports.VueMarkViewRenderer=T;exports.VueNodeViewRenderer=z;exports.VueRenderer=C;exports.markViewProps=U;exports.nodeViewProps=W;exports.useEditor=M;exports.useSlideEditor=k;Object.keys(g).forEach(r=>{r!=="default"&&!Object.prototype.hasOwnProperty.call(exports,r)&&Object.defineProperty(exports,r,{enumerable:!0,get:()=>g[r]})});
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("@blockslides/core"),n=require("vue");function p(o){return n.customRef((e,t)=>({get(){return e(),o},set(r){o=r,requestAnimationFrame(()=>{requestAnimationFrame(()=>{t()})})}}))}class h extends u.Editor{constructor(e={}){return super(e),this.contentComponent=null,this.appContext=null,this.reactiveState=p(this.view.state),this.reactiveExtensionStorage=p(this.extensionStorage),this.on("beforeTransaction",({nextState:t})=>{this.reactiveState.value=t,this.reactiveExtensionStorage.value=this.extensionStorage}),n.markRaw(this)}get state(){return this.reactiveState?this.reactiveState.value:this.view.state}get storage(){return this.reactiveExtensionStorage?this.reactiveExtensionStorage.value:super.storage}registerPlugin(e,t){const r=super.registerPlugin(e,t);return this.reactiveState&&(this.reactiveState.value=r),r}unregisterPlugin(e){const t=super.unregisterPlugin(e);return this.reactiveState&&t&&(this.reactiveState.value=t),t}}const m=n.defineComponent({name:"EditorContent",props:{editor:{default:null,type:Object}},setup(o){const e=n.ref(),t=n.getCurrentInstance();return n.watchEffect(()=>{const r=o.editor;r&&r.options.element&&e.value&&n.nextTick(()=>{var s;if(!e.value||!((s=r.view.dom)!=null&&s.parentNode))return;const i=n.unref(e.value);e.value.append(...r.view.dom.parentNode.childNodes),r.contentComponent=t.ctx._,t&&(r.appContext={...t.appContext,provides:t.provides}),r.setOptions({element:i}),r.createNodeViews()})}),n.onBeforeUnmount(()=>{const r=o.editor;r&&(r.contentComponent=null,r.appContext=null)}),{rootEl:e}},render(){return n.h("div",{ref:o=>{this.rootEl=o}})}}),f=n.defineComponent({name:"NodeViewContent",props:{as:{type:String,default:"div"}},render(){return n.h(this.as,{style:{whiteSpace:"pre-wrap"},"data-node-view-content":""})}}),y=n.defineComponent({name:"NodeViewWrapper",props:{as:{type:String,default:"div"}},inject:["onDragStart","decorationClasses"],render(){var o,e;return n.h(this.as,{class:this.decorationClasses,style:{whiteSpace:"normal"},"data-node-view-wrapper":"",onDragstart:this.onDragStart},(e=(o=this.$slots).default)==null?void 0:e.call(o))}}),w=(o={})=>{const e=n.shallowRef();return n.onMounted(()=>{e.value=new h(o)}),n.onBeforeUnmount(()=>{var i,s,d,a;const t=(s=(i=e.value)==null?void 0:i.view.dom)==null?void 0:s.parentNode,r=t==null?void 0:t.cloneNode(!0);(d=t==null?void 0:t.parentNode)==null||d.replaceChild(r,t),(a=e.value)==null||a.destroy()}),e};class c{constructor(e,{props:t={},editor:r}){this.destroyed=!1,this.editor=r,this.component=n.markRaw(e),this.el=document.createElement("div"),this.props=n.reactive(t),this.renderedComponent=this.renderComponent()}get element(){return this.renderedComponent.el}get ref(){var e,t,r,i;return(t=(e=this.renderedComponent.vNode)==null?void 0:e.component)!=null&&t.exposed?this.renderedComponent.vNode.component.exposed:(i=(r=this.renderedComponent.vNode)==null?void 0:r.component)==null?void 0:i.proxy}renderComponent(){if(this.destroyed)return this.renderedComponent;let e=n.h(this.component,this.props);return this.editor.appContext&&(e.appContext=this.editor.appContext),typeof document<"u"&&this.el&&n.render(e,this.el),{vNode:e,destroy:()=>{this.el&&n.render(null,this.el),this.el=null,e=null},el:this.el?this.el.firstElementChild:null}}updateProps(e={}){this.destroyed||(Object.entries(e).forEach(([t,r])=>{this.props[t]=r}),this.renderComponent())}destroy(){this.destroyed||(this.destroyed=!0,this.renderedComponent.destroy())}}const v={editor:{type:Object,required:!0},mark:{type:Object,required:!0},extension:{type:Object,required:!0},inline:{type:Boolean,required:!0},view:{type:Object,required:!0},updateAttributes:{type:Function,required:!0},HTMLAttributes:{type:Object,required:!0}},g=n.defineComponent({name:"MarkViewContent",props:{as:{type:String,default:"span"}},render(){return n.h(this.as,{style:{whiteSpace:"inherit"},"data-mark-view-content":""})}});class l extends u.MarkView{constructor(e,t,r){super(e,t,r);const i={...t,updateAttributes:this.updateAttributes.bind(this)},s=n.defineComponent({extends:{...e},props:Object.keys(i),template:this.component.template,setup:d=>{var a;return(a=e.setup)==null?void 0:a.call(e,d,{expose:()=>{}})},__scopeId:e.__scopeId,__cssModules:e.__cssModules,__name:e.__name,__file:e.__file});this.renderer=new c(s,{editor:this.editor,props:i})}get dom(){return this.renderer.element}get contentDOM(){return this.dom.querySelector("[data-mark-view-content]")}updateAttributes(e){const t=n.toRaw(this.mark);super.updateAttributes(e,t)}destroy(){this.renderer.destroy()}}function C(o,e={}){return t=>t.editor.contentComponent?new l(o,t,e):{}}const S={editor:{type:Object,required:!0},node:{type:Object,required:!0},decorations:{type:Object,required:!0},selected:{type:Boolean,required:!0},extension:{type:Object,required:!0},getPos:{type:Function,required:!0},updateAttributes:{type:Function,required:!0},deleteNode:{type:Function,required:!0},view:{type:Object,required:!0},innerDecorations:{type:Object,required:!0},HTMLAttributes:{type:Object,required:!0}};class x extends u.NodeView{constructor(){super(...arguments),this.cachedExtensionWithSyncedStorage=null}get extensionWithSyncedStorage(){if(!this.cachedExtensionWithSyncedStorage){const e=this.editor,t=this.extension;this.cachedExtensionWithSyncedStorage=new Proxy(t,{get(r,i,s){return i==="storage"?e.storage[t.name]??{}:Reflect.get(r,i,s)}})}return this.cachedExtensionWithSyncedStorage}mount(){const e={editor:this.editor,node:this.node,decorations:this.decorations,innerDecorations:this.innerDecorations,view:this.view,selected:!1,extension:this.extensionWithSyncedStorage,HTMLAttributes:this.HTMLAttributes,getPos:()=>this.getPos(),updateAttributes:(i={})=>this.updateAttributes(i),deleteNode:()=>this.deleteNode()},t=this.onDragStart.bind(this);this.decorationClasses=n.ref(this.getDecorationClasses());const r=n.defineComponent({extends:{...this.component},props:Object.keys(e),template:this.component.template,setup:i=>{var s,d;return n.provide("onDragStart",t),n.provide("decorationClasses",this.decorationClasses),(d=(s=this.component).setup)==null?void 0:d.call(s,i,{expose:()=>{}})},__scopeId:this.component.__scopeId,__cssModules:this.component.__cssModules,__name:this.component.__name,__file:this.component.__file});this.handleSelectionUpdate=this.handleSelectionUpdate.bind(this),this.editor.on("selectionUpdate",this.handleSelectionUpdate),this.renderer=new c(r,{editor:this.editor,props:e})}get dom(){if(!this.renderer.element||!this.renderer.element.hasAttribute("data-node-view-wrapper"))throw Error("Please use the NodeViewWrapper component for your node view.");return this.renderer.element}get contentDOM(){return this.node.isLeaf?null:this.dom.querySelector("[data-node-view-content]")}handleSelectionUpdate(){const{from:e,to:t}=this.editor.state.selection,r=this.getPos();if(typeof r=="number")if(e<=r&&t>=r+this.node.nodeSize){if(this.renderer.props.selected)return;this.selectNode()}else{if(!this.renderer.props.selected)return;this.deselectNode()}}update(e,t,r){const i=s=>{this.decorationClasses.value=this.getDecorationClasses(),this.renderer.updateProps(s)};if(typeof this.options.update=="function"){const s=this.node,d=this.decorations,a=this.innerDecorations;return this.node=e,this.decorations=t,this.innerDecorations=r,this.options.update({oldNode:s,oldDecorations:d,newNode:e,newDecorations:t,oldInnerDecorations:a,innerDecorations:r,updateProps:()=>i({node:e,decorations:t,innerDecorations:r,extension:this.extensionWithSyncedStorage})})}return e.type!==this.node.type?!1:(e===this.node&&this.decorations===t&&this.innerDecorations===r||(this.node=e,this.decorations=t,this.innerDecorations=r,i({node:e,decorations:t,innerDecorations:r,extension:this.extensionWithSyncedStorage})),!0)}selectNode(){this.renderer.updateProps({selected:!0}),this.renderer.element&&this.renderer.element.classList.add("ProseMirror-selectednode")}deselectNode(){this.renderer.updateProps({selected:!1}),this.renderer.element&&this.renderer.element.classList.remove("ProseMirror-selectednode")}getDecorationClasses(){return this.decorations.flatMap(e=>e.type.attrs.class).join(" ")}destroy(){this.renderer.destroy(),this.editor.off("selectionUpdate",this.handleSelectionUpdate)}}function b(o,e){return t=>{if(!t.editor.contentComponent)return{};const r=typeof o=="function"&&"__vccOpts"in o?o.__vccOpts:o;return new x(r,t,e)}}exports.Editor=h;exports.EditorContent=m;exports.MarkViewContent=g;exports.NodeViewContent=f;exports.NodeViewWrapper=y;exports.VueMarkView=l;exports.VueMarkViewRenderer=C;exports.VueNodeViewRenderer=b;exports.VueRenderer=c;exports.markViewProps=v;exports.nodeViewProps=S;exports.useEditor=w;Object.keys(u).forEach(o=>{o!=="default"&&!Object.prototype.hasOwnProperty.call(exports,o)&&Object.defineProperty(exports,o,{enumerable:!0,get:()=>u[o]})});
|
package/dist/index.d.ts
CHANGED
|
@@ -3,10 +3,7 @@ export * from './EditorContent.js';
|
|
|
3
3
|
export * from './NodeViewContent.js';
|
|
4
4
|
export * from './NodeViewWrapper.js';
|
|
5
5
|
export * from './useEditor.js';
|
|
6
|
-
export * from './useSlideEditor.js';
|
|
7
|
-
export { default as SlideEditor } from './SlideEditor.vue';
|
|
8
6
|
export * from './VueMarkViewRenderer.js';
|
|
9
7
|
export * from './VueNodeViewRenderer.js';
|
|
10
8
|
export * from './VueRenderer.js';
|
|
11
9
|
export * from '../../core/src';
|
|
12
|
-
export * from './menus/index.js';
|