import { AllControls, ControlsList, ReturnControls } from "../ControlTypings/Typing"; import Iris from "@rbxts/iris"; import { GetStoryProps, InferControlType, StoryBase, StoryCleanup, StoryCreationKey, StoryInfo, } from "./Typing"; import { ControlGroup } from "../ControlTypings/ControlUtils"; interface WithIris { use?: "iris"; iris: typeof Iris; } type InferIrisControlGroup = { [K in keyof T]: Iris.State>; }; type InferIrisControls = { [K in keyof T]: T[K] extends ControlGroup ? InferIrisControlGroup : T[K] extends AllControls ? Iris.State> : never; }; type IrisControlProps = { controls: T extends ReturnControls ? InferIrisControls : never; }; type InferIrisProps = GetStoryProps>; type IrisStory = T & StoryBase & WithIris & StoryCreationKey, StoryCleanup | void | undefined>;