diff --git a/.changeset/tricky-feet-doubt.md b/.changeset/tricky-feet-doubt.md
new file mode 100644
index 0000000..60ceea3
--- /dev/null
+++ b/.changeset/tricky-feet-doubt.md
@@ -0,0 +1,5 @@
+---
+'@nextlint/svelte': patch
+---
+
+Fix didnt respect image plugin options
diff --git a/packages/svelte/package.json b/packages/svelte/package.json
index 6afadc3..747a2b3 100644
--- a/packages/svelte/package.json
+++ b/packages/svelte/package.json
@@ -30,8 +30,8 @@
"!dist/**/*.spec.*"
],
"peerDependencies": {
- "svelte": "*",
- "shikiji": "0.9.19"
+ "shikiji": "0.9.19",
+ "svelte": "*"
},
"dependencies": {
"@floating-ui/dom": "^1.5.3",
diff --git a/packages/svelte/src/lib/Editor.svelte b/packages/svelte/src/lib/Editor.svelte
index 274472b..6f59d38 100644
--- a/packages/svelte/src/lib/Editor.svelte
+++ b/packages/svelte/src/lib/Editor.svelte
@@ -1,6 +1,6 @@
-
-
-
-
-
-
diff --git a/packages/svelte/src/lib/components/BubbleMenu/BubbleMenu.svelte b/packages/svelte/src/lib/components/BubbleMenu/BubbleMenu.svelte
index 4bb77ee..9ef9c96 100644
--- a/packages/svelte/src/lib/components/BubbleMenu/BubbleMenu.svelte
+++ b/packages/svelte/src/lib/components/BubbleMenu/BubbleMenu.svelte
@@ -32,7 +32,12 @@
const locked = createLockScrollStore();
- const IGNORE_BLOCK_MENU = ['figure', 'NextlintCodeBlock'];
+ const IGNORE_BLOCK_MENU = [
+ 'figure',
+ 'NextlintCodeBlock',
+ 'selectImage',
+ 'doc'
+ ];
$: visibleNode = (() => {
const resolver = $editor.state.selection.$from;
@@ -53,7 +58,6 @@
}
return node;
})();
- console.log('visiblEnode', visibleNode);
$: {
locked.set(!!visibleNode);
}
@@ -96,6 +100,8 @@
$editor!.off('selectionUpdate', updateBubbleState);
locked.set(false);
});
+ $: {
+ }
diff --git a/packages/svelte/src/lib/node-view/SvelteNodeViewRenderer.ts b/packages/svelte/src/lib/node-view/SvelteNodeViewRenderer.ts
index 258d3f8..f42973d 100644
--- a/packages/svelte/src/lib/node-view/SvelteNodeViewRenderer.ts
+++ b/packages/svelte/src/lib/node-view/SvelteNodeViewRenderer.ts
@@ -6,14 +6,15 @@ import {
NodeView,
type Editor,
type NodeViewProps,
- type NodeViewRendererProps
+ type NodeViewRendererProps,
+ type NodeViewRendererOptions as TNodeViewRendererOptions
} from '@tiptap/core';
-import {writable, type Writable} from 'svelte/store';
+import {get, writable, type Writable} from 'svelte/store';
import {SvelteRenderer} from './SvelteRenderer';
-class SvelteNodeView
+export class SvelteNodeView
extends NodeView
implements ProseMirrorNodeView
{
@@ -21,10 +22,13 @@ class SvelteNodeView
store!: Writable;
constructor(
- nodeViewOptions: NodeViewRendererOptions,
+ readonly options: NodeViewRendererOptions,
props: NodeViewRendererProps
) {
- super(nodeViewOptions.component, props);
+ super(options.component, props, {
+ stopEvent: options.stopEvent || null,
+ ignoreMutation: options.ignoreMutation || null
+ });
this.store = writable({
editor: this.editor,
node: this.node,
@@ -36,7 +40,14 @@ class SvelteNodeView
deleteNode: () => this.deleteNode()
});
- this.renderer = new SvelteRenderer(nodeViewOptions, this.store);
+ this.renderer = new SvelteRenderer(
+ {
+ component: options.component,
+ contentAs: options.contentAs,
+ domAs: options.domAs
+ },
+ this.store
+ );
}
override get dom() {
@@ -61,27 +72,35 @@ class SvelteNodeView
return true;
}
- selectNode() {
+ selectNode = () => {
this.store.update(store => {
store.selected = true;
return store;
});
- }
+ };
- deselectNode() {
+ deselectNode = () => {
this.store.update(store => {
store.selected = false;
return store;
});
- }
+ };
+
+ toggleNodeSelection = () => {
+ if (get(this.store).selected) {
+ this.deselectNode();
+ return;
+ }
+ return this.selectNode();
+ };
destroy() {
- console.log('destroy');
this.renderer.destroy();
}
}
-export interface NodeViewRendererOptions {
+export interface NodeViewRendererOptions
+ extends Partial {
component: ComponentType;
contentAs?: string;
domAs?: string;
diff --git a/packages/svelte/src/lib/node-view/SvelteRenderer.ts b/packages/svelte/src/lib/node-view/SvelteRenderer.ts
index c6f9447..c983ea8 100644
--- a/packages/svelte/src/lib/node-view/SvelteRenderer.ts
+++ b/packages/svelte/src/lib/node-view/SvelteRenderer.ts
@@ -26,14 +26,15 @@ export class SvelteRenderer {
this.context = {
props,
contentRef: (element: HTMLElement) => {
- element.setAttribute('data-node-view-content', '');
+ element.setAttribute('data-node-view-content', 'true');
+ element.style.whiteSpace = 'inherit';
this.contentElement = element;
}
};
// Create dom node
this.element = document.createElement(domAs || 'div');
- this.element.setAttribute('data-node-view-wrapper', '');
+ this.element.setAttribute('data-node-view-root', 'true');
this.component = new Component({
target: this.element,
diff --git a/packages/svelte/src/lib/plugins/figure/Figure.svelte b/packages/svelte/src/lib/plugins/figure/Figure.svelte
index dee83eb..27d5104 100644
--- a/packages/svelte/src/lib/plugins/figure/Figure.svelte
+++ b/packages/svelte/src/lib/plugins/figure/Figure.svelte
@@ -1,17 +1,20 @@
@@ -20,18 +23,57 @@
data-node-type="figure"
data-align={attrs.direction}
style="position:relative;"
- class="figure"
- class:selected
+ class="relative"
>
+ {#if selected}
+
+
+
+
+
+
+
+
+ {/if}
- {node.textContent}
+
+ {node.textContent || 'description...'}
+