+ {#if $nodeGraph.updateImportsExports}
+ {#each $nodeGraph.updateImportsExports.imports as frontendImport, index}
+ {#if frontendImport}
+ {@const frontendOutput = frontendImport.port}
+
+ {#each frontendImport.wires as wire}
+
+ {/each}
+
-
(hoveringImportIndex = index)}
- on:pointerleave={() => (hoveringImportIndex = undefined)}
- class="edit-import-export import"
- class:separator-bottom={index === 0 && $nodeGraph.updateImportsExports.addImportExport}
- class:separator-top={index === 1 && $nodeGraph.updateImportsExports.addImportExport}
- style:--offset-left={($nodeGraph.updateImportsExports.importPosition.x - 8) / 24}
- style:--offset-top={($nodeGraph.updateImportsExports.importPosition.y - 8) / 24 + index}
- >
- {#if editingNameImportIndex == index}
-
e.key === "Enter" && setEditingImportName(e)}
- />
- {:else}
-
setEditingImportNameIndex(index, frontendOutput.name)}>
- {frontendOutput.name}
-
+
(hoveringImportIndex = index)}
+ on:pointerleave={() => (hoveringImportIndex = undefined)}
+ class="edit-import-export import"
+ class:separator-bottom={index === 0 && $nodeGraph.updateImportsExports.addImportExport}
+ class:separator-top={index === 1 && $nodeGraph.updateImportsExports.addImportExport}
+ style:--offset-left={($nodeGraph.updateImportsExports.importPosition.x - 8) / 24}
+ style:--offset-top={($nodeGraph.updateImportsExports.importPosition.y - 8) / 24 + index}
+ >
+ {#if editingNameImportIndex == index}
+
e.key === "Enter" && setEditingImportName(e)}
+ />
+ {:else}
+
setEditingImportNameIndex(index, frontendOutput.name)}>
+ {frontendOutput.name}
+
+ {/if}
+ {#if (hoveringImportIndex === index || editingNameImportIndex === index) && $nodeGraph.updateImportsExports.addImportExport}
+
{
+ /* Button is purely visual, clicking is handled in NodeGraphMessage::PointerDown */
+ }}
+ />
+ {#if index > 0}
+
{/if}
- {#if (hoveringImportIndex === index || editingNameImportIndex === index) && $nodeGraph.updateImportsExports.addImportExport}
- {
- /* Button is purely visual, clicking is handled in NodeGraphMessage::PointerDown */
- }}
- />
- {#if index > 0}
-
- {/if}
- {/if}
-
- {:else}
-
- editor.handle.addPrimaryImport()} />
-
- {/if}
- {/each}
-
- {#each $nodeGraph.updateImportsExports.exports as frontendInput, index}
- {#if frontendInput}
-
-
(hoveringExportIndex = index)}
- on:pointerleave={() => (hoveringExportIndex = undefined)}
- class="edit-import-export export"
- class:separator-bottom={index === 0 && $nodeGraph.updateImportsExports.addImportExport}
- class:separator-top={index === 1 && $nodeGraph.updateImportsExports.addImportExport}
- style:--offset-left={($nodeGraph.updateImportsExports.exportPosition.x - 8) / 24}
- style:--offset-top={($nodeGraph.updateImportsExports.exportPosition.y - 8) / 24 + index}
- >
- {#if (hoveringExportIndex === index || editingNameExportIndex === index) && $nodeGraph.updateImportsExports.addImportExport}
- {#if index > 0}
-
- {/if}
-
{
- /* Button is purely visual, clicking is handled in NodeGraphMessage::PointerDown */
- }}
- />
- {/if}
- {#if editingNameExportIndex === index}
- e.key === "Enter" && setEditingExportName(e)}
- />
- {:else}
- setEditingExportNameIndex(index, frontendInput.name)}>
- {frontendInput.name}
-
- {/if}
-
- {:else}
-
- editor.handle.addPrimaryExport()} />
-
- {/if}
- {/each}
-
- {#if $nodeGraph.updateImportsExports.addImportExport == true}
+ {/if}
+
+ {:else}
- editor.handle.addSecondaryImport()} />
+ editor.handle.addPrimaryImport()} />
+ {/if}
+ {/each}
+
+ {#each $nodeGraph.updateImportsExports.exports.exports as frontendExport, index}
+ {#if frontendExport}
+ {@const frontendInput = frontendExport.port}
+ {#if frontendExport.wire}
+
+ {/if}
+
+
(hoveringExportIndex = index)}
+ on:pointerleave={() => (hoveringExportIndex = undefined)}
+ class="edit-import-export export"
+ class:separator-bottom={index === 0 && $nodeGraph.updateImportsExports.addImportExport}
+ class:separator-top={index === 1 && $nodeGraph.updateImportsExports.addImportExport}
+ style:--offset-left={($nodeGraph.updateImportsExports.exportPosition.x - 8) / 24}
+ style:--offset-top={($nodeGraph.updateImportsExports.exportPosition.y - 8) / 24 + index}
+ >
+ {#if (hoveringExportIndex === index || editingNameExportIndex === index) && $nodeGraph.updateImportsExports.addImportExport}
+ {#if index > 0}
+
+ {/if}
+
{
+ /* Button is purely visual, clicking is handled in NodeGraphMessage::PointerDown */
+ }}
+ />
+ {/if}
+ {#if editingNameExportIndex === index}
+ e.key === "Enter" && setEditingExportName(e)}
+ />
+ {:else}
+ setEditingExportNameIndex(index, frontendInput.name)}>
+ {frontendInput.name}
+
+ {/if}
+
+ {:else}
- editor.handle.addSecondaryExport()} />
-
- {/if}
-
- {#if $nodeGraph.reorderImportIndex !== undefined}
- {@const position = {
- x: Number($nodeGraph.updateImportsExports.importPosition.x),
- y: Number($nodeGraph.updateImportsExports.importPosition.y) + Number($nodeGraph.reorderImportIndex) * 24,
- }}
-
- {/if}
-
- {#if $nodeGraph.reorderExportIndex !== undefined}
- {@const position = {
- x: Number($nodeGraph.updateImportsExports.exportPosition.x),
- y: Number($nodeGraph.updateImportsExports.exportPosition.y) + Number($nodeGraph.reorderExportIndex) * 24,
- }}
-
- {/if}
- {/if}
-
-
-
- {#each Array.from($nodeGraph.nodesToRender) as [nodeId, nodeToRender]}
- {#if nodeToRender.nodeOrLayer.layer !== undefined}
- {@const nodeMetadata = nodeToRender.metadata}
- {@const layer = nodeToRender.nodeOrLayer.layer}
- {@const clipPathId = String(Math.random()).substring(2)}
- {@const layerAreaWidth = $nodeGraph.layerWidths.get(nodeToRender.metadata.nodeId) || 8}
- {@const layerChainWidth = layer.chainWidth !== 0 ? layer.chainWidth + 0.5 : 0}
- {@const description = (nodeMetadata.reference && $nodeGraph.nodeDescriptions.get(nodeMetadata.reference)) || undefined}
-
- {#if nodeMetadata.errors}
-
{layer.errors}
-
{layer.errors}
- {/if}
-
- {#if $nodeGraph.thumbnails.has(nodeId)}
- {@html $nodeGraph.thumbnails.get(nodeId)}
- {/if}
-
-
-
-
-
-
- {#if layer.sideInput}
-
- {/if}
-
-
- {nodeMetadata.displayName}
-
-
-
{
- /* Button is purely visual, clicking is handled in NodeGraphMessage::PointerDown */
- }}
- tooltip={nodeMetadata.visible ? "Visible" : "Hidden"}
- />
-
-
+ editor.handle.addPrimaryExport()} />
{/if}
{/each}
-
-
-
- {#each Array.from($nodeGraph.nodesToRender) as [nodeId, nodeToRender]}
- {#if nodeToRender.nodeOrLayer.node !== undefined && $nodeGraph.visibleNodes.has(nodeId)}
- {@const nodeMetadata = nodeToRender.metadata}
- {@const node = nodeToRender.nodeOrLayer.node}
- {@const exposedInputsOutputs = collectExposedInputsOutputs(node.inputs, node.outputs)}
- {@const clipPathId = String(Math.random()).substring(2)}
- {@const description = (nodeMetadata.reference && $nodeGraph.nodeDescriptions.get(nodeMetadata.reference)) || undefined}
-
- {#if nodeMetadata.errors}
-
{node.errors}
-
{node.errors}
- {/if}
-
-
-
-
- {nodeMetadata.displayName}
-
-
- {#if exposedInputsOutputs.length > 0}
-
- {#each exposedInputsOutputs as [input, output]}
-
-
- {input?.name ?? output?.name ?? ""}
-
-
- {/each}
-
- {/if}
-
-
-
-
- {#each node.outputs as output}
- {#if output !== undefined}
-
- {outputTooltip(output)}
-
-
- {/if}
- {/each}
-
-
-
-
-
-
-
-
-
- {/if}
- {/each}
-
-