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 getItemsOfTypenull15inline 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