1
0

MenuItem.swift 817 B

1234567891011121314151617181920212223
  1. /// An item of a ``Menu`` or ``CommandMenu``.
  2. public enum MenuItem {
  3. /// A button.
  4. case button(Button<TupleView1<Text>>)
  5. /// Text.
  6. case text(Text)
  7. /// A toggle.
  8. case toggle(Toggle)
  9. /// A separator.
  10. case separator(Divider)
  11. /// A submenu.
  12. case submenu(Menu)
  13. /// A menu item with an environment modifier.
  14. ///
  15. /// We can't directly store the environment modifier because that would need
  16. /// a generic in order for us to tease things apart again, so we store
  17. /// closures that give us the values we need. We can't precompute the values
  18. /// themselves because that would require ``MenuItemsBuilder`` to be `@MainActor`.
  19. case modifiedEnvironment(
  20. @MainActor () -> MenuItem,
  21. @MainActor () -> (EnvironmentValues) -> EnvironmentValues
  22. )
  23. }