mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-05-04 21:22:07 +00:00
## Summary follow up https://github.com/Comfy-Org/ComfyUI_frontend/pull/9851 fix https://github.com/Comfy-Org/ComfyUI_frontend/issues/9877 and https://github.com/Comfy-Org/ComfyUI_frontend/issues/9878 - Make useUpstreamValue generic to eliminate as Bounds/CurvePoint[] casts - Change isBoundsObject to type predicate (value is Bounds) - Reuse WidgetState from widgetValueStore instead of duplicate interface - Add length >= 2 guard in isCurvePointArray for empty arrays - Add disabled guard in effectiveBounds setter - Add unit tests for singleValueExtractor and boundsExtractor ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-9908-fix-address-PR-review-feedback-for-upstream-value-composable-3236d73d365081f7a01dcb416732544a) by [Unito](https://www.unito.io) --------- Co-authored-by: GitHub Action <action@github.com>
46 lines
987 B
Vue
46 lines
987 B
Vue
<template>
|
|
<CurveEditor
|
|
:model-value="effectivePoints"
|
|
:disabled="isDisabled"
|
|
@update:model-value="modelValue = $event"
|
|
/>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import { computed } from 'vue'
|
|
|
|
import {
|
|
singleValueExtractor,
|
|
useUpstreamValue
|
|
} from '@/composables/useUpstreamValue'
|
|
import type { SimplifiedWidget } from '@/types/simplifiedWidget'
|
|
|
|
import CurveEditor from './CurveEditor.vue'
|
|
import { isCurvePointArray } from './curveUtils'
|
|
import type { CurvePoint } from './types'
|
|
|
|
const { widget } = defineProps<{
|
|
widget: SimplifiedWidget
|
|
}>()
|
|
|
|
const modelValue = defineModel<CurvePoint[]>({
|
|
default: () => [
|
|
[0, 0],
|
|
[1, 1]
|
|
]
|
|
})
|
|
|
|
const isDisabled = computed(() => !!widget.options?.disabled)
|
|
|
|
const upstreamValue = useUpstreamValue(
|
|
() => widget.linkedUpstream,
|
|
singleValueExtractor(isCurvePointArray)
|
|
)
|
|
|
|
const effectivePoints = computed(() =>
|
|
isDisabled.value && upstreamValue.value
|
|
? upstreamValue.value
|
|
: modelValue.value
|
|
)
|
|
</script>
|