Spaces:
Running
Running
<script lang="ts"> | |
import { type NodeProps, useSvelteFlow } from '@xyflow/svelte'; | |
import NodeParameter from './NodeParameter.svelte'; | |
type $$Props = NodeProps; | |
export let containerStyle = ''; | |
export let id: $$Props['id']; id; | |
export let data: $$Props['data']; | |
export let dragHandle: $$Props['dragHandle'] = undefined; dragHandle; | |
export let type: $$Props['type'] = undefined; type; | |
export let selected: $$Props['selected'] = undefined; selected; | |
export let isConnectable: $$Props['isConnectable'] = undefined; isConnectable; | |
export let zIndex: $$Props['zIndex'] = undefined; zIndex; | |
export let width: $$Props['width'] = undefined; width; | |
export let height: $$Props['height'] = undefined; height; | |
export let dragging: $$Props['dragging']; dragging; | |
export let targetPosition: $$Props['targetPosition'] = undefined; targetPosition; | |
export let sourcePosition: $$Props['sourcePosition'] = undefined; sourcePosition; | |
export let positionAbsoluteX: $$Props['positionAbsoluteX'] = undefined; positionAbsoluteX; | |
export let positionAbsoluteY: $$Props['positionAbsoluteY'] = undefined; positionAbsoluteY; | |
function asPx(n: number | undefined) { | |
return n ? n + 'px' : undefined; | |
} | |
const { updateNodeData } = useSvelteFlow(); | |
$: metaParams = data.meta?.params; | |
</script> | |
<div class="area" style:width={asPx(width)} style:height={asPx(height)} style={containerStyle}> | |
<div class="title"> | |
{data.title} | |
</div> | |
{#each Object.entries(data.params) as [name, value]} | |
<NodeParameter | |
{name} | |
{value} | |
meta={metaParams?.[name]} | |
onChange={(newValue) => updateNodeData(id, { params: { ...data.params, [name]: newValue } })} | |
/> | |
{/each} | |
</div> | |
<style> | |
.area { | |
border-radius: 10px; | |
border: 3px dashed oklch(75% 0.2 55); | |
z-index: 0 ; | |
} | |
.title { | |
color: oklch(75% 0.2 55); | |
width: 100%; | |
text-align: center; | |
top: -1.5em; | |
position: absolute; | |
-webkit-text-stroke: 5px white; | |
paint-order: stroke fill; | |
font-weight: bold; | |
} | |
</style> | |