mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-04-20 06:20:11 +00:00
## Summary
Create a composable for useRenderModeSetting that lets you set a setting
for either vue or litegraph and once set remembers each state
respectively.
```
useRenderModeSetting(
{ setting: 'LiteGraph.Canvas.MinFontSizeForLOD', vue: 0, litegraph: 8 },
shouldRenderVueNodes
)
```
## Screenshots (if applicable)
<img width="1611" height="997" alt="image"
src="https://github.com/user-attachments/assets/621930f2-2d21-4c86-a46d-e3e292d4e012"
/>
<img width="1611" height="997" alt="chrome_Gr1V3P6sJi"
src="https://github.com/user-attachments/assets/eb63b747-487f-4f5e-8fcf-f0d2ff97b976"
/>
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6755-feat-LOD-setting-for-LG-and-Vue-2b16d73d365081cbbf09c292ee3c0e96)
by [Unito](https://www.unito.io)
43 lines
1.2 KiB
TypeScript
43 lines
1.2 KiB
TypeScript
import type { ComputedRef } from 'vue'
|
|
import { ref, watch } from 'vue'
|
|
|
|
import { useSettingStore } from '@/platform/settings/settingStore'
|
|
import type { Settings } from '@/schemas/apiSchema'
|
|
|
|
interface RenderModeSettingConfig<TSettingKey extends keyof Settings> {
|
|
setting: TSettingKey
|
|
vue: Settings[TSettingKey]
|
|
litegraph: Settings[TSettingKey]
|
|
}
|
|
|
|
export function useRenderModeSetting<TSettingKey extends keyof Settings>(
|
|
config: RenderModeSettingConfig<TSettingKey>,
|
|
isVueMode: ComputedRef<boolean>
|
|
) {
|
|
const settingStore = useSettingStore()
|
|
const vueValue = ref(config.vue)
|
|
const litegraphValue = ref(config.litegraph)
|
|
const lastWasVue = ref<boolean | null>(null)
|
|
|
|
const load = async (vue: boolean) => {
|
|
if (lastWasVue.value === vue) return
|
|
|
|
if (lastWasVue.value !== null) {
|
|
const currentValue = settingStore.get(config.setting)
|
|
if (lastWasVue.value) {
|
|
vueValue.value = currentValue
|
|
} else {
|
|
litegraphValue.value = currentValue
|
|
}
|
|
}
|
|
|
|
await settingStore.set(
|
|
config.setting,
|
|
vue ? vueValue.value : litegraphValue.value
|
|
)
|
|
lastWasVue.value = vue
|
|
}
|
|
|
|
watch(isVueMode, load, { immediate: true })
|
|
}
|