()
| 40 | }; |
| 41 | |
| 42 | export default function App() { |
| 43 | const [state, setState] = useState<AppState>({ |
| 44 | code: "", |
| 45 | selectedFramework: "HTML", |
| 46 | isLoading: true, |
| 47 | htmlPreview: emptyPreview, |
| 48 | settings: null, |
| 49 | colors: [], |
| 50 | gradients: [], |
| 51 | warnings: [], |
| 52 | }); |
| 53 | |
| 54 | const rootStyles = getComputedStyle(document.documentElement); |
| 55 | const figmaColorBgValue = rootStyles |
| 56 | .getPropertyValue("--figma-color-bg") |
| 57 | .trim(); |
| 58 | |
| 59 | useEffect(() => { |
| 60 | window.onmessage = (event: MessageEvent) => { |
| 61 | const untypedMessage = event.data.pluginMessage as Message; |
| 62 | console.log("[ui] message received:", untypedMessage); |
| 63 | |
| 64 | switch (untypedMessage.type) { |
| 65 | case "conversionStart": |
| 66 | setState((prevState) => ({ |
| 67 | ...prevState, |
| 68 | code: "", |
| 69 | isLoading: true, |
| 70 | })); |
| 71 | break; |
| 72 | |
| 73 | case "code": |
| 74 | const conversionMessage = untypedMessage as ConversionMessage; |
| 75 | setState((prevState) => ({ |
| 76 | ...prevState, |
| 77 | ...conversionMessage, |
| 78 | selectedFramework: conversionMessage.settings.framework, |
| 79 | isLoading: false, |
| 80 | })); |
| 81 | break; |
| 82 | |
| 83 | case "pluginSettingsChanged": |
| 84 | const settingsMessage = untypedMessage as SettingsChangedMessage; |
| 85 | setState((prevState) => ({ |
| 86 | ...prevState, |
| 87 | settings: settingsMessage.settings, |
| 88 | selectedFramework: settingsMessage.settings.framework, |
| 89 | })); |
| 90 | break; |
| 91 | |
| 92 | case "empty": |
| 93 | // const emptyMessage = untypedMessage as EmptyMessage; |
| 94 | setState((prevState) => ({ |
| 95 | ...prevState, |
| 96 | code: "", |
| 97 | htmlPreview: emptyPreview, |
| 98 | warnings: [], |
| 99 | colors: [], |
nothing calls this directly
no test coverage detected