File size: 1,345 Bytes
c6535db
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

import { useImagePreviewWidget } from '@/composable/widgets/imagePreviewWidget.js'

const CANVAS_IMAGE_PREVIEW_WIDGET = '$$canvas-image-preview'

/**
 * Composable for handling canvas image previews in nodes
 */
export function useNodeCanvasImagePreview() {
    const imagePreviewWidget = useImagePreviewWidget()
    /**
     * Shows canvas image preview for a node
     * @param node The graph node to show the preview for
     */
    function showCanvasImagePreview(node) {
        if (!node.imgs?.length) return
        if (!node.widgets) return

        if (!node.widgets.find((w) => w.name === CANVAS_IMAGE_PREVIEW_WIDGET)) {
            imagePreviewWidget(node, {
                type: 'IMAGE_PREVIEW',
                name: CANVAS_IMAGE_PREVIEW_WIDGET
            })
        }
    }

    /**
     * Removes canvas image preview from a node
     * @param node The graph node to remove the preview from
     */
    function removeCanvasImagePreview(node) {
        if (!node.widgets) return

        const widgetIdx = node.widgets.findIndex(
            (w) => w.name === CANVAS_IMAGE_PREVIEW_WIDGET
        )

        if (widgetIdx > -1) {
            node.widgets[widgetIdx].onRemove?.()
            node.widgets.splice(widgetIdx, 1)
        }
    }

    return {
        showCanvasImagePreview,
        removeCanvasImagePreview
    }
}