(snap)
| 1876 | } |
| 1877 | |
| 1878 | function applyStateSnapshot(snap) { |
| 1879 | historyLocked = true; |
| 1880 | screens = snap.screens || []; |
| 1881 | activeScreenId = snap.activeScreenId || (screens[0] && screens[0].id) || null; |
| 1882 | assets = snap.assets || []; |
| 1883 | dispWidth = snap.dispWidth || 240; |
| 1884 | dispHeight = snap.dispHeight || 320; |
| 1885 | bgColor = snap.bgColor || "#000000"; |
| 1886 | useSprite = !!snap.useSprite; |
| 1887 | snapToGrid = !!snap.snapToGrid; |
| 1888 | gridSize = snap.gridSize || 4; |
| 1889 | driverMode = snap.driverMode || "tft"; |
| 1890 | u8g2PresetId = snap.u8g2PresetId || "ssd1306_128x64_i2c_f"; |
| 1891 | ensureAssetsDefaults(); |
| 1892 | ensureAllElementDefaults(); |
| 1893 | ensureAllElementsHaveFonts(); |
| 1894 | initFontList(); |
| 1895 | tftSettingsState = snap.tftSettingsState || { |
| 1896 | rotation: 0, |
| 1897 | colorDepth: 16, |
| 1898 | backlight: "none", |
| 1899 | touch: "none" |
| 1900 | }; |
| 1901 | oledSettingsState = snap.oledSettingsState || { |
| 1902 | rotation: 0, |
| 1903 | contrast: 127, |
| 1904 | flipMode: "none", |
| 1905 | fontMode: "transparent", |
| 1906 | powerSave: "off" |
| 1907 | }; |
| 1908 | |
| 1909 | dispWidthInput.value = dispWidth; |
| 1910 | dispHeightInput.value = dispHeight; |
| 1911 | bgColorInput.value = bgColor; |
| 1912 | useSpriteCheckbox.checked = useSprite; |
| 1913 | snapCheckbox.checked = snapToGrid; |
| 1914 | gridSizeInput.value = gridSize; |
| 1915 | displayDriverSelect.value = driverMode; |
| 1916 | u8g2PresetSelect.value = u8g2PresetId; |
| 1917 | |
| 1918 | refreshScreenUI(); |
| 1919 | if (activeScreenId && screens.some((s) => s.id === activeScreenId)) { |
| 1920 | setActiveScreen(activeScreenId, false); |
| 1921 | } else if (screens[0]) { |
| 1922 | setActiveScreen(screens[0].id, false); |
| 1923 | } |
| 1924 | updateDisplaySettingsVisibility(); |
| 1925 | updatePreviewSize(); |
| 1926 | renderElements(); |
| 1927 | updatePropsInputs(); |
| 1928 | updateCode(); |
| 1929 | historyLocked = false; |
| 1930 | } |
| 1931 | |
| 1932 | function pushHistory() { |
| 1933 | if (historyLocked) return; |
no test coverage detected