import { createEffect, onCleanup } from 'solid-js'; import { invoke } from '@tauri-apps/api/core'; import { DisplayView } from './display-view'; import { DisplayListContainer } from './display-list-container'; import { displayStore, setDisplayStore } from '../../stores/display.store'; import { LedStripConfigContainer } from '../../models/led-strip-config'; import { setLedStripStore } from '../../stores/led-strip.store'; import { listen } from '@tauri-apps/api/event'; import { LedStripPartsSorter } from './led-strip-parts-sorter'; import { createStore } from 'solid-js/store'; import { LedStripConfigurationContext, LedStripConfigurationContextType, } from '../../contexts/led-strip-configuration.context'; export const LedStripConfiguration = () => { createEffect(() => { invoke('list_display_info').then((displays) => { setDisplayStore({ displays: JSON.parse(displays), }); }); invoke('read_led_strip_configs').then((configs) => { setLedStripStore(configs); }); }); // listen to config_changed event createEffect(() => { const unlisten = listen('config_changed', (event) => { const { strips, mappers } = event.payload as LedStripConfigContainer; setLedStripStore({ strips, mappers, }); }); onCleanup(() => { unlisten.then((unlisten) => unlisten()); }); }); // listen to led_colors_changed event createEffect(() => { const unlisten = listen('led_colors_changed', (event) => { if (!window.document.hidden) { const colors = event.payload; setLedStripStore({ colors, }); } }); onCleanup(() => { unlisten.then((unlisten) => unlisten()); }); }); // listen to led_sorted_colors_changed event createEffect(() => { const unlisten = listen('led_sorted_colors_changed', (event) => { if (!window.document.hidden) { const sortedColors = event.payload; setLedStripStore({ sortedColors, }); } }); onCleanup(() => { unlisten.then((unlisten) => unlisten()); }); }); const [ledStripConfiguration, setLedStripConfiguration] = createStore< LedStripConfigurationContextType[0] >({ selectedStripPart: null, }); const ledStripConfigurationContextValue: LedStripConfigurationContextType = [ ledStripConfiguration, { setSelectedStripPart: (v) => { setLedStripConfiguration({ selectedStripPart: v, }); }, }, ]; return (

灯条配置

显示器数量
{displayStore.displays.length}
{/* LED Strip Sorter Panel */}
灯条排序
实时预览
💡 提示:拖拽灯条段落来调整顺序,双击可反转方向
{/* Display Configuration Panel */}
显示器配置
可视化编辑
{displayStore.displays.map((display) => { return ; })}
💡 提示:鼠标滚轮调整灯条长度,悬停查看详细信息
); };