Loading interactive Python kernel...
import%20math%0Aimport%20marimo%20as%20mo
mo.md(%0A%20%20%20%20r%22%22%22%0A%20%20%20%20%23%20Marimo%20Widgets%20Smoke%20Test%0A%0A%20%20%20%20This%20page%20exercises%20the%20Quartz%20marimo-islands%20bridge%3A%20hydrated%20widgets%2C%0A%20%20%20%20reactive%20cells%2C%20tables%2C%20layout%20helpers%2C%20and%20markdown%20updates.%0A%20%20%20%20%22%22%22%0A)
amplitude%20%3D%20mo.ui.slider(start%3D1%2C%20stop%3D10%2C%20value%3D4%2C%20step%3D1%2C%20label%3D%22amplitude%22)%0Afrequency%20%3D%20mo.ui.slider(start%3D1%2C%20stop%3D8%2C%20value%3D3%2C%20step%3D1%2C%20label%3D%22frequency%22)%0Aphase%20%3D%20mo.ui.range_slider(start%3D0%2C%20stop%3D6%2C%20value%3D%5B1%2C%204%5D%2C%20step%3D1%2C%20label%3D%22active%20phase%22)%0Aenabled%20%3D%20mo.ui.switch(value%3DTrue%2C%20label%3D%22animate%22)%0Amode%20%3D%20mo.ui.dropdown(%5B%22sine%22%2C%20%22square%22%2C%20%22triangle%22%5D%2C%20value%3D%22sine%22%2C%20label%3D%22wave%22)%0Apalette%20%3D%20mo.ui.radio(%5B%22rust%22%2C%20%22sage%22%2C%20%22slate%22%5D%2C%20value%3D%22rust%22%2C%20label%3D%22palette%22)%0A%0Amo.vstack(%0A%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20mo.hstack(%5Bamplitude%2C%20frequency%5D%2C%20widths%3D%22equal%22%2C%20gap%3D1)%2C%0A%20%20%20%20%20%20%20%20mo.hstack(%5Bphase%2C%20enabled%5D%2C%20widths%3D%22equal%22%2C%20gap%3D1)%2C%0A%20%20%20%20%20%20%20%20mo.hstack(%5Bmode%2C%20palette%5D%2C%20widths%3D%22equal%22%2C%20gap%3D1)%2C%0A%20%20%20%20%5D%2C%0A%20%20%20%20gap%3D1%2C%0A)
rows%20%3D%20%5B%5D%0Astart%2C%20stop%20%3D%20phase.value%0A%0Afor%20step%20in%20range(12)%3A%0A%20%20%20%20x%20%3D%20step%20%2F%2011%0A%20%20%20%20theta%20%3D%20x%20*%20math.tau%20*%20frequency.value%0A%20%20%20%20if%20mode.value%20%3D%3D%20%22square%22%3A%0A%20%20%20%20%20%20%20%20raw%20%3D%201%20if%20math.sin(theta)%20%3E%3D%200%20else%20-1%0A%20%20%20%20elif%20mode.value%20%3D%3D%20%22triangle%22%3A%0A%20%20%20%20%20%20%20%20raw%20%3D%202%20*%20abs(2%20*%20((x%20*%20frequency.value)%20%25%201)%20-%201)%20-%201%0A%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20raw%20%3D%20math.sin(theta)%0A%0A%20%20%20%20active%20%3D%20start%20%3C%3D%20step%20%3C%3D%20stop%20and%20enabled.value%0A%20%20%20%20rows.append(%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22step%22%3A%20step%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22active%22%3A%20active%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22wave%22%3A%20mode.value%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22palette%22%3A%20palette.value%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22value%22%3A%20round(raw%20*%20amplitude.value%20if%20active%20else%200%2C%203)%2C%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20)
max_value%20%3D%20max(abs(row%5B%22value%22%5D)%20for%20row%20in%20rows)%0Amo.md(%0A%20%20%20%20f%22%22%22%0A%20%20%20%20**%7Bmode.value.title()%7D**%20wave%2C%20amplitude%20**%7Bamplitude.value%7D**%2C%0A%20%20%20%20frequency%20**%7Bfrequency.value%7D**%2C%20palette%20**%7Bpalette.value%7D**.%0A%0A%20%20%20%20Active%20phase%20window%3A%20**%7Bphase.value%5B0%5D%7D%20to%20%7Bphase.value%5B1%5D%7D**.%0A%20%20%20%20Animation%20switch%3A%20**%7B%22on%22%20if%20enabled.value%20else%20%22off%22%7D**.%0A%20%20%20%20Max%20absolute%20value%3A%20**%7Bmax_value%3A.3f%7D**.%0A%20%20%20%20%22%22%22%0A)
mo.ui.table(%0A%20%20%20%20rows%2C%0A%20%20%20%20page_size%3D6%2C%0A%20%20%20%20selection%3D%22single%22%2C%0A%20%20%20%20show_column_summaries%3DTrue%2C%0A%20%20%20%20label%3D%22computed%20wave%20samples%22%2C%0A)