lexical-vue
Version:
An extensible Vue 3 web text-editor based on Lexical.
42 lines (41 loc) • 1.38 kB
JavaScript
import { useDefaults } from "vue-vine";
import { defineComponent, toRefs, watchEffect } from "vue";
import { namedSignals } from "@lexical/extension";
import { registerClickableLink } from "@lexical/link";
import { useLexicalComposer } from "./LexicalComposer.vine.js";
const ClickableLinkPlugin = (()=>{
const __vine = defineComponent({
name: 'ClickableLinkPlugin',
props: {
newTab: {
type: Boolean,
default: true
},
disabled: {
type: Boolean,
default: false
}
},
setup (__props, param) {
let { expose: __expose } = param;
__expose();
const props = useDefaults(__props, {
newTab: ()=>true,
disabled: ()=>false
});
const { newTab, disabled } = toRefs(props);
const editor = useLexicalComposer();
watchEffect((onInvalidate)=>{
const unregister = registerClickableLink(editor, namedSignals({
disabled: props.disabled,
newTab: props.newTab
}));
onInvalidate(unregister);
});
return (_ctx, _cache)=>null;
}
});
__vine.__vue_vine = true;
return __vine;
})();
export { ClickableLinkPlugin };