You've already forked obsidian-visualiser
Rework the structure to handle suppression (using ID instead of index). Add create history and removing.
This commit is contained in:
@@ -38,17 +38,16 @@ import type { Direction } from '~/shared/canvas.util';
|
||||
import FakeA from '../prose/FakeA.vue';
|
||||
import type { CanvasNode } from '~/types/canvas';
|
||||
|
||||
const { node, index, zoom } = defineProps<{
|
||||
const { node, zoom } = defineProps<{
|
||||
node: CanvasNode
|
||||
index: number
|
||||
zoom: number
|
||||
}>();
|
||||
|
||||
const emit = defineEmits<{
|
||||
(e: 'select', index: number): void,
|
||||
(e: 'edit', index: number): void,
|
||||
(e: 'move', index: number, x: number, y: number): void,
|
||||
(e: 'resize', index: number, x: number, y: number, w: number, h: number): void,
|
||||
(e: 'select', id: string): void,
|
||||
(e: 'edit', id: string): void,
|
||||
(e: 'move', id: string, x: number, y: number): void,
|
||||
(e: 'resize', id: string, x: number, y: number, w: number, h: number): void,
|
||||
}>();
|
||||
|
||||
const dom = useTemplateRef('dom');
|
||||
@@ -59,7 +58,7 @@ function selectNode(e: Event) {
|
||||
return;
|
||||
|
||||
focusing.value = true;
|
||||
emit('select', index);
|
||||
emit('select', node.id);
|
||||
|
||||
dom.value?.addEventListener('mousedown', dragstart, { passive: true });
|
||||
}
|
||||
@@ -70,7 +69,7 @@ function editNode(e: Event) {
|
||||
e.stopImmediatePropagation();
|
||||
|
||||
dom.value?.removeEventListener('mousedown', dragstart);
|
||||
emit('edit', index);
|
||||
emit('edit', node.id);
|
||||
}
|
||||
function resizeNode(e: MouseEvent, x: number, y: number, w: number, h: number) {
|
||||
e.stopImmediatePropagation();
|
||||
@@ -88,7 +87,7 @@ function resizeNode(e: MouseEvent, x: number, y: number, w: number, h: number) {
|
||||
const resizeend = (e: MouseEvent) => {
|
||||
if(e.button !== 0)
|
||||
return;
|
||||
emit('resize', index, node.x - startx, node.y - starty, node.width - startw, node.height - starth);
|
||||
emit('resize', node.id, node.x - startx, node.y - starty, node.width - startw, node.height - starth);
|
||||
|
||||
window.removeEventListener('mousemove', resizemove);
|
||||
window.removeEventListener('mouseup', resizeend);
|
||||
@@ -123,7 +122,7 @@ const dragend = (e: MouseEvent) => {
|
||||
window.removeEventListener('mouseup', dragend);
|
||||
|
||||
if(node.x - lastx !== 0 && node.y - lasty !== 0)
|
||||
emit('move', index, node.x - lastx, node.y - lasty);
|
||||
emit('move', node.id, node.x - lastx, node.y - lasty);
|
||||
};
|
||||
const dragstart = (e: MouseEvent) => {
|
||||
if(e.button !== 0)
|
||||
@@ -135,7 +134,7 @@ const dragstart = (e: MouseEvent) => {
|
||||
window.addEventListener('mouseup', dragend, { passive: true });
|
||||
};
|
||||
|
||||
defineExpose({ unselect, dom });
|
||||
defineExpose({ unselect, dom, ...node });
|
||||
|
||||
const style = computed(() => {
|
||||
return node.color ? node.color?.class ?
|
||||
|
||||
Reference in New Issue
Block a user