UNPKG

@ts-for-gir/lib

Version:

Typescript .d.ts generator from GIR for gjs

98 lines 4.08 kB
import { GenericType, GenerifiedTypeIdentifier } from "../gir.js"; const stTemplate = (version) => ({ namespace: "St", version, modifier: (namespace, inferGenerics) => { if (!inferGenerics) { return; } const Bin = namespace.assertClass("Bin"); const Button = namespace.assertClass("Button"); const ScrollView = namespace.assertClass("ScrollView"); const ScrollBar = namespace.assertClass("ScrollBar"); const Widget = namespace.assertClass("Widget"); // TODO: Create a way to propagate this generic to child classes. const Viewport = namespace.assertClass("Viewport"); const StBoxLayout = namespace.assertClass("BoxLayout"); const Clutter = namespace.assertInstalledImport("Clutter"); const Actor = Clutter.assertClass("Actor"); const Content = Clutter.assertClass("Content"); // Container was removed in Clutter-14 const Container = Number(version) < 14 ? Clutter.assertClass("Container") : null; const LayoutManager = Clutter.assertClass("LayoutManager"); const ClutterBoxLayout = Clutter.assertClass("BoxLayout"); Widget.addGeneric({ deriveFrom: Actor.getType(), default: LayoutManager.getType(), constraint: LayoutManager.getType() }); Widget.addGeneric({ deriveFrom: Actor.getType(), default: Content.getType(), constraint: Content.getType() }); Viewport.addGeneric({ deriveFrom: Widget.getType(), default: LayoutManager.getType(), constraint: LayoutManager.getType() }); Viewport.addGeneric({ deriveFrom: Widget.getType(), default: Content.getType(), constraint: Content.getType() }); if (Container) { Container.addGeneric({ default: Actor.getType(), constraint: Actor.getType() }); StBoxLayout.addGeneric({ deriveFrom: Container.getType(), default: Actor.getType(), constraint: Actor.getType() }); } if (StBoxLayout.superType) { StBoxLayout.superType = new GenerifiedTypeIdentifier(StBoxLayout.superType.name, StBoxLayout.superType.namespace, [ClutterBoxLayout.getType()]); } Bin.addGeneric({ default: Actor.getType(), constraint: Actor.getType() }); Button.addGeneric({ deriveFrom: Bin.getType(), default: Actor.getType(), constraint: Actor.getType() }); const get_hscroll_bar = ScrollView.members.find(member => member.name === "get_hscroll_bar"); const get_vscroll_bar = ScrollView.members.find(member => member.name === "get_vscroll_bar"); if (get_hscroll_bar) { const fixed_get_h = get_hscroll_bar?.copy({ returnType: ScrollBar.getType() }); const index = ScrollView.members.indexOf(get_hscroll_bar); ScrollView.members.splice(index, 1, fixed_get_h); } if (get_vscroll_bar) { const fixed_get_v = get_vscroll_bar?.copy({ returnType: ScrollBar.getType() }); const index = ScrollView.members.indexOf(get_vscroll_bar); ScrollView.members.splice(index, 1, fixed_get_v); } ScrollView.addGeneric({ deriveFrom: Bin.getType(), default: Actor.getType(), constraint: Actor.getType() }); Bin.props .filter(p => p.name === "child") .forEach(prop => { // TODO Automatically infer such changes. prop.type = new GenericType("A", Actor.getType()); }); } }); export const st1 = stTemplate("1.0"); export const st12 = stTemplate("12"); export const st13 = stTemplate("13"); export const st14 = stTemplate("14"); export const st15 = stTemplate("15"); export const st16 = stTemplate("16"); //# sourceMappingURL=st.js.map