1 package expo.interfaces.devmenu.items
2 
3 import android.os.Bundle
4 
5 interface DevMenuItemsContainerInterface {
getRootItemsnull6   fun getRootItems(): List<DevMenuScreenItem>
7   fun getAllItems(): List<DevMenuScreenItem>
8 }
9 
10 fun DevMenuItemsContainerInterface.serializeItems(): Array<Bundle> =
11   getRootItems()
12     .map { it.serialize() }
13     .toTypedArray()
14 
getItemsOfTypenull15 inline fun <reified T> DevMenuItemsContainerInterface.getItemsOfType(): List<T> {
16   return getAllItems().filterIsInstance<T>()
17 }
18 
19 interface DevMenuDSLItemsContainerInterface : DevMenuItemsContainerInterface {
groupnull20   fun group(init: DevMenuGroup.() -> Unit): DevMenuGroup
21   fun action(actionId: String, action: () -> Unit, init: DevMenuAction.() -> Unit): DevMenuAction
22   fun link(target: String, init: DevMenuLink.() -> Unit): DevMenuLink
23   fun selectionList(init: DevMenuSelectionList.() -> Unit): DevMenuSelectionList
24 }
25 
26 fun screen(name: String, init: DevMenuScreen.() -> Unit): DevMenuScreen {
27   val screen = DevMenuScreen(name)
28   screen.init()
29   return screen
30 }
31