@gtkx/runtime 2.0.0-beta.1 → 2.0.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +43 -40
- package/dist/descriptors.d.ts +2 -1
- package/dist/descriptors.d.ts.map +1 -1
- package/dist/descriptors.js +5 -1
- package/dist/descriptors.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +17 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +13 -0
- package/dist/internal.js.map +1 -1
- package/dist/lifecycle.js +1 -1
- package/dist/lifecycle.js.map +1 -1
- package/dist/listeners.d.ts +3 -13
- package/dist/listeners.d.ts.map +1 -1
- package/dist/listeners.js +12 -12
- package/dist/listeners.js.map +1 -1
- package/dist/mixin.d.ts +5 -3
- package/dist/mixin.d.ts.map +1 -1
- package/dist/mixin.js +36 -9
- package/dist/mixin.js.map +1 -1
- package/dist/object.d.ts +14 -3
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +20 -27
- package/dist/object.js.map +1 -1
- package/dist/properties.d.ts +4 -2
- package/dist/properties.d.ts.map +1 -1
- package/dist/properties.js +69 -16
- package/dist/properties.js.map +1 -1
- package/dist/property-brand.d.ts +5 -0
- package/dist/property-brand.d.ts.map +1 -0
- package/dist/property-brand.js +5 -0
- package/dist/property-brand.js.map +1 -0
- package/dist/register-class.d.ts +102 -20
- package/dist/register-class.d.ts.map +1 -1
- package/dist/register-class.js +19 -37
- package/dist/register-class.js.map +1 -1
- package/dist/registry.d.ts +1 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +4 -4
- package/dist/registry.js.map +1 -1
- package/dist/signal-brand.d.ts +12 -0
- package/dist/signal-brand.d.ts.map +1 -0
- package/dist/signal-brand.js +6 -0
- package/dist/signal-brand.js.map +1 -0
- package/dist/signal.d.ts +39 -2
- package/dist/signal.d.ts.map +1 -1
- package/dist/signal.js +75 -5
- package/dist/signal.js.map +1 -1
- package/dist/type.d.ts.map +1 -1
- package/dist/type.js +1 -1
- package/dist/type.js.map +1 -1
- package/dist/value.d.ts +2 -1
- package/dist/value.d.ts.map +1 -1
- package/dist/value.js +28 -7
- package/dist/value.js.map +1 -1
- package/package.json +7 -5
- package/src/descriptors.ts +7 -0
- package/src/index.ts +2 -2
- package/src/internal.ts +42 -0
- package/src/lifecycle.ts +1 -1
- package/src/listeners.ts +21 -26
- package/src/mixin.ts +55 -9
- package/src/object.ts +57 -7
- package/src/properties.ts +94 -17
- package/src/property-brand.ts +5 -0
- package/src/register-class.ts +296 -95
- package/src/registry.ts +4 -4
- package/src/signal-brand.ts +29 -0
- package/src/signal.ts +177 -6
- package/src/type.ts +1 -1
- package/src/value.ts +40 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-class.d.ts","sourceRoot":"","sources":["../src/register-class.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"register-class.d.ts","sourceRoot":"","sources":["../src/register-class.ts"],"names":[],"mappings":"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"}
|
package/dist/register-class.js
CHANGED
|
@@ -3,8 +3,10 @@ import { getParentClass, kebabCase, walkClassChain } from "@gtkx/utils";
|
|
|
3
3
|
import { wrapCallback } from "./callback.js";
|
|
4
4
|
import { insertMixinLayer } from "./mixin.js";
|
|
5
5
|
import { buildPropertyDispatch, GET_PROPERTY_VFUNC, makeGetProperty, makeSetProperty, SET_PROPERTY_VFUNC, toNativeProperties, } from "./properties.js";
|
|
6
|
+
import { descriptorFreePropertySpec, propertyMapOverride, writablePropertyMapOverride, } from "./property-brand.js";
|
|
6
7
|
import { getClassStructClass, getClassType, getInterfaceMixin, getTypeClassHandle, markDerivedClass, registerClassType, wrapHandle, } from "./registry.js";
|
|
7
|
-
import {
|
|
8
|
+
import { classSignalMember, naturalSignalMember, signalEmitMapOverride, signalMapOverride, } from "./signal-brand.js";
|
|
9
|
+
import { canonicalSignalName, connectClosureSignal, emitDeclaredSignal, installSignalDispatch, overrideSignalClassClosure, signalForHandlerName, signalIdFor, } from "./signal.js";
|
|
8
10
|
import { TYPE_INTERFACE, TYPE_INVALID, TYPE_NONE, typeFundamental, typeInterfacePrerequisites, typeInterfaces, typeIsA, typeName, } from "./type.js";
|
|
9
11
|
import { findClassVfuncDescriptor, findInterfaceVfuncDescriptor } from "./vfunc.js";
|
|
10
12
|
const INSTANCE_ARG_INDEX = 0;
|
|
@@ -49,7 +51,7 @@ function registerClass(klass, options = {}) {
|
|
|
49
51
|
markDerivedClass(klass);
|
|
50
52
|
installSignalOverrides(newType, methods);
|
|
51
53
|
applyInterfaceMixins(klass, adoptedTypes, inheritedNames);
|
|
52
|
-
installDeclaredSignalMethods(klass, signals.table
|
|
54
|
+
installDeclaredSignalMethods(klass, signals.table);
|
|
53
55
|
invokeClassInit(options, newType);
|
|
54
56
|
return klass;
|
|
55
57
|
}
|
|
@@ -261,7 +263,6 @@ function buildPropertyVfunc(klass, methodName, fn, isValueOut) {
|
|
|
261
263
|
fn: wrapVfunc(fn, argDescriptors, descriptor),
|
|
262
264
|
};
|
|
263
265
|
}
|
|
264
|
-
const canonicalSignalName = (name) => name.replaceAll("_", "-");
|
|
265
266
|
function assertLowerCaseSignalName(klass, name) {
|
|
266
267
|
if (!UPPER_CASE_PATTERN.test(name)) {
|
|
267
268
|
return;
|
|
@@ -333,43 +334,24 @@ function resolveDeclaredSignals(klass, signals) {
|
|
|
333
334
|
}
|
|
334
335
|
return { native, table };
|
|
335
336
|
}
|
|
336
|
-
function
|
|
337
|
-
if (inherited === undefined) {
|
|
338
|
-
throw new Error(`Unknown signal '${signal}'`);
|
|
339
|
-
}
|
|
340
|
-
return inherited;
|
|
341
|
-
}
|
|
342
|
-
function installDeclaredConnect(proto, findDeclared) {
|
|
343
|
-
const inheritedConnect = proto.connect;
|
|
344
|
-
proto.connect = function connect(signal, handler, isAfter) {
|
|
345
|
-
if (findDeclared(signal) === undefined) {
|
|
346
|
-
return inheritedSignalMethod(inheritedConnect, signal).call(this, signal, handler, isAfter);
|
|
347
|
-
}
|
|
348
|
-
return connectClosureSignal(this, signal, handler, isAfter ?? false);
|
|
349
|
-
};
|
|
350
|
-
}
|
|
351
|
-
function installDeclaredEmit(proto, findDeclared) {
|
|
352
|
-
const inheritedEmit = proto.emit;
|
|
353
|
-
proto.emit = function emit(sigName, ...args) {
|
|
354
|
-
const declared = findDeclared(sigName);
|
|
355
|
-
if (declared === undefined) {
|
|
356
|
-
return inheritedSignalMethod(inheritedEmit, sigName).call(this, sigName, ...args);
|
|
357
|
-
}
|
|
358
|
-
return emitDeclaredSignal(this, sigName, declared, args);
|
|
359
|
-
};
|
|
360
|
-
}
|
|
361
|
-
function installDeclaredSignalMethods(klass, table, definedNames) {
|
|
337
|
+
function installDeclaredSignalMethods(klass, table) {
|
|
362
338
|
if (table.size === 0) {
|
|
363
339
|
return;
|
|
364
340
|
}
|
|
365
|
-
const
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
341
|
+
const findDeclared = (signal) => table.get(canonicalSignalName(signal));
|
|
342
|
+
installSignalDispatch(klass, table.keys().toArray(), {
|
|
343
|
+
connect(instance, signal, handler, isAfter) {
|
|
344
|
+
findDeclared(signal);
|
|
345
|
+
return connectClosureSignal(instance, signal, handler, isAfter ?? false);
|
|
346
|
+
},
|
|
347
|
+
emit(instance, signal, args) {
|
|
348
|
+
const declared = findDeclared(signal);
|
|
349
|
+
if (declared === undefined) {
|
|
350
|
+
throw new Error(`Unknown signal '${signal}'`);
|
|
351
|
+
}
|
|
352
|
+
return emitDeclaredSignal(instance, signal, declared, args);
|
|
353
|
+
},
|
|
354
|
+
});
|
|
373
355
|
}
|
|
374
356
|
function toNativeInterface(binding) {
|
|
375
357
|
const nativeInterface = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-class.js","sourceRoot":"","sources":["../src/register-class.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Descriptor } from \"@gtkx/native\";\nimport {\n registerClass as nativeRegisterClass,\n type RegisterClassInterface as NativeRegisterClassInterface,\n type RegisterClassOptions as NativeRegisterClassOptions,\n type RegisterClassSignal as NativeRegisterClassSignal,\n type RegisterClassVfunc as NativeRegisterClassVfunc,\n} from \"@gtkx/native\";\nimport { type AnyClass, getParentClass, kebabCase, walkClassChain } from \"@gtkx/utils\";\nimport { wrapCallback } from \"./callback.js\";\nimport { insertMixinLayer } from \"./mixin.js\";\nimport {\n buildPropertyDispatch,\n GET_PROPERTY_VFUNC,\n makeGetProperty,\n makeSetProperty,\n type PropertyDispatch,\n type PropertySpec,\n SET_PROPERTY_VFUNC,\n toNativeProperties,\n} from \"./properties.js\";\nimport {\n getClassStructClass,\n getClassType,\n getInterfaceMixin,\n getTypeClassHandle,\n markDerivedClass,\n registerClassType,\n type VfuncDescriptor,\n wrapHandle,\n} from \"./registry.js\";\nimport {\n connectClosureSignal,\n type DeclaredSignalTypes,\n emitDeclaredSignal,\n getSignalBaseName,\n overrideSignalClassClosure,\n signalForHandlerName,\n type SignalHandler,\n signalIdFor,\n} from \"./signal.js\";\nimport {\n TYPE_INTERFACE,\n TYPE_INVALID,\n TYPE_NONE,\n type TypedClass,\n typeFundamental,\n typeInterfacePrerequisites,\n typeInterfaces,\n typeIsA,\n typeName,\n} from \"./type.js\";\nimport { findClassVfuncDescriptor, findInterfaceVfuncDescriptor } from \"./vfunc.js\";\n\n/** A generated interface value, such as `Gio.ListModel`, accepted by {@link registerClass}. */\ntype Interface<TImpl> = AnyClass & {\n /** Type-level slot holding the interface's `Impl` type; no value ever carries it. */\n __impl__: (impl: Partial<TImpl> & object) => void;\n};\n\n/** Converts underscores in a property name to canonical dashes. */\ntype Dashed<TName extends string> = TName extends `${infer THead}_${infer TTail}`\n ? Dashed<`${THead}-${TTail}`>\n : TName;\n\n/** Converts a dashed property name to its JavaScript spelling. */\ntype Camelized<TName extends string> = TName extends `${infer THead}-${infer TTail}`\n ? `${THead}${Capitalize<Camelized<TTail>>}`\n : TName;\n\n/** Property-map keys in the camelCase spelling hooks use. */\ntype InstalledNames<TProperties> = string extends keyof TProperties\n ? never\n : Camelized<Dashed<keyof TProperties & string>>;\n\n/** Declared signal names in their original and canonical spellings. */\ntype DeclaredSignalBase<TSignals> = (keyof TSignals & string) | Dashed<keyof TSignals & string>;\n/** Declared signal names, including detailed forms. */\ntype DeclaredSignalName<TSignals> = DeclaredSignalBase<TSignals> | `${DeclaredSignalBase<TSignals>}::${string}`;\n\n/** Signal methods added for declared names. */\ntype DeclaredSignalMethods<TSignals> = {\n /** Type-level map used by signal hooks. */\n __signals__?: Record<DeclaredSignalBase<TSignals>, (...args: never[]) => unknown>;\n /** Connects a handler. */\n connect(\n signal: DeclaredSignalName<TSignals>,\n handler: (...args: never[]) => unknown,\n isAfter?: boolean,\n ): number;\n /** Emits a signal. */\n emit(sigName: DeclaredSignalName<TSignals>, ...args: unknown[]): unknown;\n /** Connects a removable handler. */\n on(sigName: DeclaredSignalName<TSignals>, callback: (...args: unknown[]) => unknown, isAfter?: boolean): unknown;\n /** Connects a one-shot handler. */\n once(sigName: DeclaredSignalName<TSignals>, callback: (...args: unknown[]) => unknown, isAfter?: boolean): unknown;\n /** Disconnects a handler. */\n off(sigName: DeclaredSignalName<TSignals>, callback: (...args: unknown[]) => unknown): unknown;\n};\n\n/** A registered instance with declared signal methods and property metadata. */\ntype RegisteredInstance<TInstance, TProperties, TSignals> = TInstance &\n DeclaredSignalMethods<TSignals> & {\n /** Type-level map from installed property name to value type; no value ever carries it. */\n __properties__: Pick<TInstance, InstalledNames<TProperties> & keyof TInstance>;\n };\n\n/** A registered class's construct signature and prototype. */\ntype RegisteredConstructor<TClass, TArgs extends unknown[], TInstance> = {\n /** Object the class's instances inherit from. */\n prototype: TInstance;\n} & (TClass extends new (...args: never) => unknown\n ? new (...args: TArgs) => TInstance\n : abstract new (...args: TArgs) => TInstance);\n\n/** The statics a registered class keeps from the class it was, joined with {@link RegisteredConstructor}. */\ntype RegisteredParts<TClass, TArgs extends unknown[], TInstance> = Omit<TClass, \"prototype\"> &\n RegisteredConstructor<TClass, TArgs, TInstance>;\n\n/** The registered class with its declared properties and signals. */\ntype RegisteredClass<TClass extends AnyClass, TProperties, TSignals> =\n TClass extends abstract new (...args: infer TArgs) => infer TInstance\n ? RegisteredParts<TClass, TArgs, RegisteredInstance<TInstance, TProperties, TSignals>>\n : never;\n\n/** A numeric GType or a generated or registered wrapper class. */\ntype SignalGType = bigint | AnyClass<TypedClass>;\n\n/** A signal installed by {@link registerClass}. */\ntype SignalSpec = {\n /** `GObject.SignalFlags` bit mask, defaulting to `RUN_FIRST`. */\n flags?: number;\n /** Argument GTypes, defaulting to none. */\n paramTypes?: SignalGType[];\n /** Return GType, defaulting to none. */\n returnType?: SignalGType;\n /** Combines handler results; omitted means the last result wins. */\n accumulator?: \"first-wins\" | \"true-handled\";\n};\n\n/** What {@link registerClass} adds to the new GType beyond the vtable slots it discovers on the class. */\ntype RegisterClassOptions<\n TInstance extends object,\n TProperties extends Record<string, PropertySpec>,\n TSignals extends Record<string, SignalSpec>,\n> = {\n /** Registered GType name, defaulting to the class name. */\n typeName?: string;\n /** Prevents direct construction while allowing registered subclasses. */\n abstract?: boolean;\n /** CSS node name for a `Gtk.Widget` subclass. */\n cssName?: string;\n /**\n * Runs once after registration with the wrapped class struct. An exception propagates after\n * the static GType has already been registered and cannot be undone.\n */\n classInit?(typeStruct: object): void;\n /** Interfaces implemented through matching `vfunc` methods. */\n implements?: Interface<TInstance>[];\n /**\n * ParamSpecs keyed by their JavaScript property names. Keys and ParamSpec names must canonicalize\n * to the same member. Writes validate flags, types, and ranges and notify only on changes.\n * Nullish values require a nullable GType; constructor `undefined` means omitted. An existing\n * camelCase accessor remains authoritative.\n */\n properties?: TProperties;\n /**\n * New canonical signal names and specs. Declared GTypes validate emissions, and a matching\n * `on<SignalName>` method becomes the default handler.\n */\n signals?: TSignals;\n};\n\n/** {@link RegisterClassOptions} with the widest instance and property types {@link registerClass} accepts. */\ntype AnyRegisterClassOptions = RegisterClassOptions<object, Record<string, PropertySpec>, Record<string, SignalSpec>>;\ntype VfuncFn = NativeRegisterClassVfunc[\"fn\"];\ntype DiscoveredVfunc = VfuncDescriptor & { methodName: string; fn: VfuncFn };\ntype MethodTable = Map<string, VfuncFn>;\ntype InstanceMembers = { methods: MethodTable; names: Set<string>; inheritedNames: Set<string> };\n\ntype InterfaceVfuncBinding = {\n gtype: bigint;\n vfuncs: DiscoveredVfunc[];\n};\n\ntype PropertyVfuncSource = {\n klass: AnyClass;\n methods: MethodTable;\n dispatch: PropertyDispatch;\n adoptedTypes: bigint[];\n};\n\ntype PropertyVfuncSpec = {\n methodName: string;\n isValueOut: boolean;\n makeDispatch: (dispatch: PropertyDispatch) => VfuncFn;\n};\n\ntype ArgPatch = { isCallerAllocated: true } | { isCallScoped: true };\ntype DeclaredSignals = { native: NativeRegisterClassSignal[]; table: Map<string, DeclaredSignalTypes> };\n\ntype SignalMethodHost = {\n connect?: (signal: string, handler: SignalHandler, isAfter?: boolean) => number;\n emit?: (sigName: string, ...args: unknown[]) => unknown;\n};\n\nconst INSTANCE_ARG_INDEX = 0;\nconst VALUE_ARG_INDEX = 2;\nconst TEARDOWN_VFUNC_NAMES: Set<string> = new Set([\"dispose\", \"finalize\"]);\nconst ASYNC_INITABLE_TYPE_NAME = \"GAsyncInitable\";\nconst INIT_ASYNC_METHOD_NAME = \"vfuncInitAsync\";\n\nconst PROPERTY_VFUNC_SPECS: PropertyVfuncSpec[] = [\n { methodName: GET_PROPERTY_VFUNC, isValueOut: true, makeDispatch: makeGetProperty },\n { methodName: SET_PROPERTY_VFUNC, isValueOut: false, makeDispatch: makeSetProperty },\n];\n\nconst PROPERTY_VFUNC_NAMES: Set<string> = new Set(PROPERTY_VFUNC_SPECS.map((spec) => spec.methodName));\nconst VFUNC_METHOD_PATTERN = /^vfunc[A-Z0-9]/;\nconst TYPE_NAME_PATTERN = /^[A-Za-z_][A-Za-z0-9\\-_+]{2,}$/;\nconst UPPER_CASE_PATTERN = /[A-Z]/;\nconst SIGNAL_OVERRIDE_PATTERN = /^on[A-Z]/;\n\n/**\n * Registers a wrapper subclass as a GType with discovered vfuncs, properties, signals, and interfaces.\n * Vfuncs must be prototype methods; function-valued fields never reach the vtable. A matching\n * `on<SignalName>` method becomes the signal's default handler.\n *\n * `vfuncConstructed` runs before field initializers and the constructor body. Native-created\n * instances never run the JavaScript constructor, so native-required state belongs in properties\n * or `vfuncConstructed`. A new `Gio.AsyncInitable` must implement `vfuncInitAsync`.\n *\n * @param klass The wrapper subclass to register.\n * @param options Additional GType configuration.\n * @returns The registered class with declared properties and signals in its type.\n * @throws For invalid parents, names, interfaces, vfuncs, properties, signals, or widget options.\n * A `classInit` exception propagates after the static type has been registered and cannot be undone.\n */\nfunction registerClass<\n T extends AnyClass,\n TProperties extends Record<string, PropertySpec> = Record<never, PropertySpec>,\n TSignals extends Record<string, SignalSpec> = Record<never, SignalSpec>,\n>(\n klass: T,\n options?: RegisterClassOptions<T[\"prototype\"], TProperties, TSignals>,\n): RegisteredClass<T, TProperties, TSignals>;\n\nfunction registerClass(klass: AnyClass, options: AnyRegisterClassOptions = {}): AnyClass {\n const parentType = resolveParentType(klass);\n\n if (parentType === TYPE_INVALID) {\n throw new TypeError(`registerClass: ${klass.name} must extend a registered wrapper class`);\n }\n\n const name = resolveTypeName(klass, options);\n const declaredTypes = resolveInterfaceTypes(klass, options.implements ?? []);\n assertInterfacePrerequisites(klass, parentType, declaredTypes);\n const adoptedTypes = declaredTypes.filter((gtype) => !typeIsA(parentType, gtype));\n const properties = options.properties ?? {};\n const signals = resolveDeclaredSignals(klass, options.signals ?? {});\n const members = collectInstanceMembers(klass);\n const { methods, inheritedNames } = members;\n checkAsyncInitable(klass, adoptedTypes, methods);\n const dispatch = buildPropertyDispatch({ klass, properties, adoptedTypes });\n\n const classVfuncs = [\n ...discoverClassVfuncs(klass, methods),\n ...propertyVfuncs({ klass, methods, dispatch, adoptedTypes }),\n ];\n\n const claimedMethodNames = new Set(classVfuncs.map((vfunc) => vfunc.methodName));\n const interfaceBindings = discoverInterfaceBindings(methods, parentType, declaredTypes, claimedMethodNames);\n assertClaimedVfuncs(klass, methods, claimedMethodNames, interfaceBindings);\n\n const nativeOptions = withNativeSignals(\n toNativeOptions(classVfuncs, interfaceBindings, properties, options),\n signals.native,\n );\n\n const newType: bigint = nativeRegisterClass(name, parentType, nativeOptions);\n registerClassType(klass, newType);\n markDerivedClass(klass);\n installSignalOverrides(newType, methods);\n applyInterfaceMixins(klass, adoptedTypes, inheritedNames);\n installDeclaredSignalMethods(klass, signals.table, members.names);\n invokeClassInit(options, newType);\n\n return klass;\n}\n\nfunction invokeClassInit(options: AnyRegisterClassOptions, newType: bigint): void {\n if (options.classInit === undefined) {\n return;\n }\n\n const structClass = getClassStructClass(newType);\n\n if (structClass === undefined) {\n throw new Error(\"registerClass: no ancestor of the new type registers a class struct wrapper\");\n }\n\n options.classInit(wrapHandle(getTypeClassHandle(newType), structClass));\n}\n\nfunction resolveTypeName(klass: AnyClass, options: AnyRegisterClassOptions): string {\n const name = options.typeName ?? klass.name;\n\n if (!name) {\n throw new TypeError(\"registerClass: cannot derive a GType name (anonymous class with no typeName option)\");\n }\n\n if (!TYPE_NAME_PATTERN.test(name)) {\n throw new TypeError(\n `registerClass: '${name}' is not a valid GType name (a letter or underscore, then at ` +\n \"least two more characters, all from A-Z, a-z, 0-9, '-', '_' and '+')\",\n );\n }\n\n return name;\n}\n\nfunction resolveInterfaceType(klass: AnyClass, entry: AnyClass): bigint {\n const gtype = getClassType(entry);\n\n if (typeFundamental(gtype) !== TYPE_INTERFACE) {\n const label = typeof entry === \"function\" ? entry.name : String(entry);\n\n throw new TypeError(\n `registerClass: ${klass.name} lists '${label}' in implements, which is not a registered interface`,\n );\n }\n\n return gtype;\n}\n\nfunction resolveInterfaceTypes(klass: AnyClass, entries: AnyClass[]): bigint[] {\n return [...new Set(entries.map((entry) => resolveInterfaceType(klass, entry)))];\n}\n\nfunction checkAsyncInitable(klass: AnyClass, adoptedTypes: bigint[], methods: MethodTable): void {\n const isAsyncInitable = adoptedTypes.some((gtype) => typeName(gtype) === ASYNC_INITABLE_TYPE_NAME);\n\n if (isAsyncInitable && !methods.has(INIT_ASYNC_METHOD_NAME)) {\n throw new TypeError(\n `registerClass: ${klass.name} implements Gio.AsyncInitable without overriding 'vfuncInitAsync'; ` +\n \"the default 'init_async' would run 'vfuncInit' on a worker thread\",\n );\n }\n}\n\nfunction applyInterfaceMixins(klass: AnyClass, adoptedTypes: bigint[], inheritedNames: Set<string>): void {\n for (const gtype of adoptedTypes) {\n const mixin = getInterfaceMixin(gtype);\n\n if (mixin !== undefined) {\n insertMixinLayer(klass, mixin, inheritedNames);\n }\n }\n}\n\nfunction resolveParentType(klass: AnyClass): bigint {\n return (\n walkClassChain(getParentClass(klass), (cls) => {\n const gtype = getClassType(cls);\n\n return gtype === TYPE_INVALID ? undefined : gtype;\n }) ?? TYPE_INVALID\n );\n}\n\nfunction addOwnMember(members: InstanceMembers, proto: object, name: string, isInherited: boolean): void {\n if (name === \"constructor\") {\n return;\n }\n\n if (isInherited) {\n members.inheritedNames.add(name);\n }\n\n if (members.names.has(name)) {\n return;\n }\n\n members.names.add(name);\n const descriptor = Object.getOwnPropertyDescriptor(proto, name);\n\n if (typeof descriptor?.value === \"function\") {\n members.methods.set(name, descriptor.value as VfuncFn);\n }\n}\n\nfunction addOwnMembers(members: InstanceMembers, klass: AnyClass, isInherited: boolean): void {\n const proto = (klass as { prototype?: object }).prototype;\n\n if (proto === undefined) {\n return;\n }\n\n for (const name of Object.getOwnPropertyNames(proto)) {\n addOwnMember(members, proto, name, isInherited);\n }\n}\n\nfunction collectInstanceMembers(klass: AnyClass): InstanceMembers {\n const members: InstanceMembers = { methods: new Map(), names: new Set(), inheritedNames: new Set() };\n let cls: AnyClass | null = klass;\n\n while (cls !== null && getClassType(cls) === TYPE_INVALID) {\n addOwnMembers(members, cls, cls !== klass);\n cls = getParentClass(cls);\n }\n\n return members;\n}\n\nfunction buildDiscoveredVfunc(\n fn: VfuncFn,\n methodName: string,\n resolveDescriptor: (methodName: string) => VfuncDescriptor | undefined,\n skip: Set<string> | undefined,\n): DiscoveredVfunc | undefined {\n if (skip?.has(methodName)) {\n return undefined;\n }\n\n const descriptor = resolveDescriptor(methodName);\n\n if (!descriptor) {\n return undefined;\n }\n\n const argDescriptors = slotArgDescriptors(descriptor);\n\n return {\n ...descriptor,\n methodName,\n argDescriptors,\n fn: wrapVfunc(fn, argDescriptors, descriptor),\n };\n}\n\nfunction collectDiscoveredVfuncs(\n methods: MethodTable,\n resolveDescriptor: (methodName: string) => VfuncDescriptor | undefined,\n skip?: Set<string>,\n): DiscoveredVfunc[] {\n const result: DiscoveredVfunc[] = [];\n\n for (const [methodName, fn] of methods) {\n const discovered = buildDiscoveredVfunc(fn, methodName, resolveDescriptor, skip);\n\n if (discovered) {\n result.push(discovered);\n }\n }\n\n return result;\n}\n\nfunction discoverClassVfuncs(klass: AnyClass, methods: MethodTable): DiscoveredVfunc[] {\n return collectDiscoveredVfuncs(\n methods,\n (methodName) => findClassVfuncDescriptor(klass, methodName) ?? undefined,\n PROPERTY_VFUNC_NAMES,\n );\n}\n\nfunction wrapVfunc(\n fn: VfuncFn,\n argDescriptors: NativeRegisterClassVfunc[\"argDescriptors\"],\n descriptor: VfuncDescriptor,\n): VfuncFn {\n return wrapCallback(\n fn as (...args: unknown[]) => unknown,\n { argDescriptors, returnDescriptor: descriptor.returnDescriptor },\n \"vfunc\",\n );\n}\n\nconst claimedVfuncNames = (\n claimedMethodNames: Set<string>,\n interfaceBindings: InterfaceVfuncBinding[],\n): Set<string> => {\n const claimed = new Set(claimedMethodNames);\n\n for (const binding of interfaceBindings) {\n for (const vfunc of binding.vfuncs) {\n claimed.add(vfunc.methodName);\n }\n }\n\n return claimed;\n};\n\nconst isPrerequisiteMet = (parentType: bigint, declaredTypes: bigint[], prerequisite: bigint): boolean =>\n typeIsA(parentType, prerequisite) || declaredTypes.includes(prerequisite);\n\nfunction assertPrerequisitesFor(klass: AnyClass, parentType: bigint, declaredTypes: bigint[], iface: bigint): void {\n for (const prerequisite of typeInterfacePrerequisites(iface)) {\n if (!isPrerequisiteMet(parentType, declaredTypes, prerequisite)) {\n throw new TypeError(\n `registerClass: ${klass.name} does not meet prerequisite ` +\n `'${typeName(prerequisite) ?? String(prerequisite)}' of interface ` +\n `'${typeName(iface) ?? String(iface)}'`,\n );\n }\n }\n}\n\nfunction assertInterfacePrerequisites(klass: AnyClass, parentType: bigint, declaredTypes: bigint[]): void {\n for (const iface of declaredTypes) {\n assertPrerequisitesFor(klass, parentType, declaredTypes, iface);\n }\n}\n\nfunction assertClaimedVfuncs(\n klass: AnyClass,\n methods: MethodTable,\n claimedMethodNames: Set<string>,\n interfaceBindings: InterfaceVfuncBinding[],\n): void {\n const claimed = claimedVfuncNames(claimedMethodNames, interfaceBindings);\n\n for (const methodName of methods.keys()) {\n if (VFUNC_METHOD_PATTERN.test(methodName) && !claimed.has(methodName)) {\n throw new Error(\n `registerClass: ${klass.name}.${methodName} matches no vtable slot on any ancestor ` +\n \"or implemented interface, so the override would never be called; check the name against \" +\n \"the parent class's virtual methods\",\n );\n }\n }\n}\n\nfunction discoverInterfaceBindings(\n methods: MethodTable,\n parentGtype: bigint,\n declaredTypes: bigint[],\n claimedMethodNames: Set<string>,\n): InterfaceVfuncBinding[] {\n const declared: Set<bigint> = new Set(declaredTypes);\n const gtypes: Set<bigint> = new Set([...typeInterfaces(parentGtype), ...declaredTypes]);\n const bindings: InterfaceVfuncBinding[] = [];\n\n for (const gtype of gtypes) {\n const vfuncs = discoverInterfaceVfuncs(methods, gtype, claimedMethodNames);\n\n if (vfuncs.length > 0 || declared.has(gtype)) {\n bindings.push({ gtype, vfuncs });\n }\n }\n\n return bindings;\n}\n\nfunction discoverInterfaceVfuncs(\n methods: MethodTable,\n interfaceGtype: bigint,\n claimedMethodNames: Set<string>,\n): DiscoveredVfunc[] {\n return collectDiscoveredVfuncs(\n methods,\n (methodName) => findInterfaceVfuncDescriptor(interfaceGtype, methodName),\n claimedMethodNames,\n );\n}\n\nconst hasDispatchedProperties = (dispatch: PropertyDispatch, adoptedTypes: bigint[]): boolean =>\n dispatch.accessors.length > 0 || adoptedTypes.length > 0;\n\nfunction propertyVfuncFor(\n source: PropertyVfuncSource,\n spec: PropertyVfuncSpec,\n): DiscoveredVfunc | undefined {\n const { klass, methods, dispatch, adoptedTypes } = source;\n\n const dispatched = hasDispatchedProperties(dispatch, adoptedTypes)\n ? spec.makeDispatch(dispatch)\n : undefined;\n\n const fn = methods.get(spec.methodName) ?? dispatched;\n\n return fn === undefined ? undefined : buildPropertyVfunc(klass, spec.methodName, fn, spec.isValueOut);\n}\n\nfunction propertyVfuncs(source: PropertyVfuncSource): DiscoveredVfunc[] {\n return PROPERTY_VFUNC_SPECS.map((spec) => propertyVfuncFor(source, spec)).filter(\n (vfunc) => vfunc !== undefined,\n );\n}\n\nfunction markArg(argDescriptors: Descriptor[], index: number, patch: ArgPatch): Descriptor[] {\n return argDescriptors.map((arg, at) => (at === index ? { ...arg, ...patch } : arg));\n}\n\nfunction isTeardownSlot(descriptor: VfuncDescriptor): boolean {\n return (\n TEARDOWN_VFUNC_NAMES.has(descriptor.vfuncName) &&\n descriptor.argDescriptors[INSTANCE_ARG_INDEX]?.kind === \"object\"\n );\n}\n\nfunction slotArgDescriptors(descriptor: VfuncDescriptor): Descriptor[] {\n if (!isTeardownSlot(descriptor)) {\n return descriptor.argDescriptors;\n }\n\n return markArg(descriptor.argDescriptors, INSTANCE_ARG_INDEX, { isCallScoped: true });\n}\n\nfunction buildPropertyVfunc(\n klass: AnyClass,\n methodName: string,\n fn: VfuncFn,\n isValueOut: boolean,\n): DiscoveredVfunc {\n const descriptor = findClassVfuncDescriptor(klass, methodName);\n\n if (!descriptor) {\n throw new Error(`registerClass: the parent class exposes no '${methodName}' vtable slot`);\n }\n\n const argDescriptors = isValueOut\n ? markArg(descriptor.argDescriptors, VALUE_ARG_INDEX, { isCallerAllocated: true })\n : descriptor.argDescriptors;\n\n return {\n ...descriptor,\n methodName,\n argDescriptors,\n fn: wrapVfunc(fn, argDescriptors, descriptor),\n };\n}\n\nconst canonicalSignalName = (name: string): string => name.replaceAll(\"_\", \"-\");\n\nfunction assertLowerCaseSignalName(klass: AnyClass, name: string): void {\n if (!UPPER_CASE_PATTERN.test(name)) {\n return;\n }\n\n throw new TypeError(\n `registerClass: ${klass.name} declares the signal '${name}'; GObject would carry it under that ` +\n \"exact spelling, out of reach of both its dashed spelling and its default handler; \" +\n `declare it as '${kebabCase(name)}'`,\n );\n}\n\nfunction overriddenSignalId(type: bigint, methodName: string): number {\n if (!SIGNAL_OVERRIDE_PATTERN.test(methodName)) {\n return 0;\n }\n\n const signal = signalForHandlerName(type, methodName);\n\n return signal === undefined ? 0 : signalIdFor(type, signal);\n}\n\nfunction installSignalOverrides(newType: bigint, methods: MethodTable): void {\n for (const [methodName, fn] of methods) {\n const signalId = overriddenSignalId(newType, methodName);\n\n if (signalId === 0) {\n continue;\n }\n\n const handler = fn as (...args: unknown[]) => unknown;\n\n overrideSignalClassClosure(newType, signalId, (...args: unknown[]) =>\n handler.apply(args[0], args.slice(1)),\n );\n }\n}\n\nfunction resolveSignalGType(klass: AnyClass, signalName: string, role: string, entry: SignalGType): bigint {\n if (typeof entry === \"bigint\") {\n return entry;\n }\n\n const gtype = getClassType(entry);\n\n if (gtype === TYPE_INVALID) {\n throw new TypeError(\n `registerClass: signal '${signalName}' of ${klass.name} names a class with no registered ` +\n `GType as its ${role}`,\n );\n }\n\n return gtype;\n}\n\nfunction resolveSignalReturnType(klass: AnyClass, name: string, spec: SignalSpec): bigint | undefined {\n if (spec.returnType === undefined) {\n return undefined;\n }\n\n const returnType = resolveSignalGType(klass, name, \"return type\", spec.returnType);\n\n return returnType === TYPE_NONE ? undefined : returnType;\n}\n\nfunction resolveDeclaredSignal(\n klass: AnyClass,\n name: string,\n spec: SignalSpec,\n): { native: NativeRegisterClassSignal; declared: DeclaredSignalTypes } {\n const paramTypes = (spec.paramTypes ?? []).map((entry, index) =>\n resolveSignalGType(klass, name, `parameter ${String(index)}`, entry),\n );\n\n const returnType = resolveSignalReturnType(klass, name, spec);\n const native: NativeRegisterClassSignal = { name, paramTypes };\n const declared: DeclaredSignalTypes = { paramTypes };\n\n if (spec.flags !== undefined) {\n native.flags = spec.flags;\n }\n\n if (spec.accumulator !== undefined) {\n native.accumulator = spec.accumulator;\n }\n\n if (returnType !== undefined) {\n native.returnType = returnType;\n declared.returnType = returnType;\n }\n\n return { native, declared };\n}\n\nfunction resolveDeclaredSignals(klass: AnyClass, signals: Record<string, SignalSpec>): DeclaredSignals {\n const native: NativeRegisterClassSignal[] = [];\n const table: Map<string, DeclaredSignalTypes> = new Map();\n\n for (const [name, spec] of Object.entries(signals)) {\n assertLowerCaseSignalName(klass, name);\n const resolved = resolveDeclaredSignal(klass, name, spec);\n native.push(resolved.native);\n table.set(canonicalSignalName(name), resolved.declared);\n }\n\n return { native, table };\n}\n\nfunction inheritedSignalMethod<T>(inherited: T | undefined, signal: string): T {\n if (inherited === undefined) {\n throw new Error(`Unknown signal '${signal}'`);\n }\n\n return inherited;\n}\n\nfunction installDeclaredConnect(\n proto: SignalMethodHost,\n findDeclared: (signal: string) => DeclaredSignalTypes | undefined,\n): void {\n const inheritedConnect = proto.connect;\n\n proto.connect = function connect(\n this: object,\n signal: string,\n handler: SignalHandler,\n isAfter?: boolean,\n ): number {\n if (findDeclared(signal) === undefined) {\n return inheritedSignalMethod(inheritedConnect, signal).call(this, signal, handler, isAfter);\n }\n\n return connectClosureSignal(this, signal, handler, isAfter ?? false);\n };\n}\n\nfunction installDeclaredEmit(\n proto: SignalMethodHost,\n findDeclared: (signal: string) => DeclaredSignalTypes | undefined,\n): void {\n const inheritedEmit = proto.emit;\n\n proto.emit = function emit(this: object, sigName: string, ...args: unknown[]): unknown {\n const declared = findDeclared(sigName);\n\n if (declared === undefined) {\n return inheritedSignalMethod(inheritedEmit, sigName).call(this, sigName, ...args);\n }\n\n return emitDeclaredSignal(this, sigName, declared, args);\n };\n}\n\nfunction installDeclaredSignalMethods(\n klass: AnyClass,\n table: Map<string, DeclaredSignalTypes>,\n definedNames: Set<string>,\n): void {\n if (table.size === 0) {\n return;\n }\n\n const proto = klass.prototype as SignalMethodHost;\n\n const findDeclared = (signal: string): DeclaredSignalTypes | undefined =>\n table.get(canonicalSignalName(getSignalBaseName(signal)));\n\n if (!definedNames.has(\"connect\")) {\n installDeclaredConnect(proto, findDeclared);\n }\n\n if (!definedNames.has(\"emit\")) {\n installDeclaredEmit(proto, findDeclared);\n }\n}\n\nfunction toNativeInterface(binding: InterfaceVfuncBinding): NativeRegisterClassInterface {\n const nativeInterface: NativeRegisterClassInterface = {\n type: binding.gtype,\n vfuncs: [...binding.vfuncs],\n };\n\n const vtableSize = binding.vfuncs[0]?.vtableSize;\n\n if (vtableSize !== undefined) {\n nativeInterface.vtableSize = vtableSize;\n }\n\n return nativeInterface;\n}\n\nfunction withNativeSignals(\n options: NativeRegisterClassOptions | undefined,\n signals: NativeRegisterClassSignal[],\n): NativeRegisterClassOptions | undefined {\n if (signals.length === 0) {\n return options;\n }\n\n return { ...options, signals };\n}\n\nfunction applyNativeTypeOptions(options: NativeRegisterClassOptions, source: AnyRegisterClassOptions): void {\n if (source.abstract ?? false) {\n options.abstract = true;\n }\n\n if (source.cssName !== undefined) {\n options.cssName = source.cssName;\n }\n}\n\nfunction toNativeOptions(\n classVfuncs: DiscoveredVfunc[],\n interfaceBindings: InterfaceVfuncBinding[],\n properties: Record<string, PropertySpec>,\n source: AnyRegisterClassOptions,\n): NativeRegisterClassOptions | undefined {\n const options: NativeRegisterClassOptions = {};\n applyNativeTypeOptions(options, source);\n\n if (Object.keys(properties).length > 0) {\n options.properties = toNativeProperties(properties);\n }\n\n if (classVfuncs.length > 0) {\n options.vfuncs = [...classVfuncs];\n }\n\n if (interfaceBindings.length > 0) {\n options.interfaces = interfaceBindings.map((binding) => toNativeInterface(binding));\n }\n\n return Object.keys(options).length > 0 ? options : undefined;\n}\n\nexport { type Interface, registerClass, type SignalGType, type SignalSpec };\n"]}
|
|
1
|
+
{"version":3,"file":"register-class.js","sourceRoot":"","sources":["../src/register-class.ts"],"names":[],"mappings":"AACA,OAAO,EACH,aAAa,IAAI,mBAAmB,GAKvC,MAAM,cAAc,CAAC;AACtB,OAAO,EAAiB,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EACH,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,eAAe,EAGf,kBAAkB,EAClB,kBAAkB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACH,0BAA0B,EAC1B,mBAAmB,EACnB,2BAA2B,GAC9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACH,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EAEjB,UAAU,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EACH,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACH,mBAAmB,EACnB,oBAAoB,EAEpB,kBAAkB,EAClB,qBAAqB,EACrB,0BAA0B,EAC1B,oBAAoB,EACpB,WAAW,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EACH,cAAc,EACd,YAAY,EACZ,SAAS,EAET,eAAe,EACf,0BAA0B,EAC1B,cAAc,EACd,OAAO,EACP,QAAQ,GACX,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAgYpF,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,oBAAoB,GAAgB,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAC3E,MAAM,wBAAwB,GAAG,gBAAgB,CAAC;AAClD,MAAM,sBAAsB,GAAG,gBAAgB,CAAC;AAEhD,MAAM,oBAAoB,GAAwB;IAC9C,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,eAAe,EAAE;IACnF,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE;CACvF,CAAC;AAEF,MAAM,oBAAoB,GAAgB,IAAI,GAAG,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACvG,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AAC9C,MAAM,iBAAiB,GAAG,gCAAgC,CAAC;AAC3D,MAAM,kBAAkB,GAAG,OAAO,CAAC;AACnC,MAAM,uBAAuB,GAAG,UAAU,CAAC;AA2B3C,SAAS,aAAa,CAAC,KAAe,EAAE,UAAmC,EAAE;IACzE,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAE5C,IAAI,UAAU,KAAK,YAAY,EAAE,CAAC;QAC9B,MAAM,IAAI,SAAS,CAAC,kBAAkB,KAAK,CAAC,IAAI,yCAAyC,CAAC,CAAC;IAC/F,CAAC;IAED,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7C,MAAM,aAAa,GAAG,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IAC7E,4BAA4B,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;IAC/D,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IAClF,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;IAC5C,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IACrE,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;IAC5C,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;IAE5E,MAAM,WAAW,GAAG;QAChB,GAAG,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC;QACtC,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;KAChE,CAAC;IAEF,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IACjF,MAAM,iBAAiB,GAAG,yBAAyB,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC;IAC5G,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;IAE3E,MAAM,aAAa,GAAG,iBAAiB,CACnC,eAAe,CAAC,WAAW,EAAE,iBAAiB,EAAE,UAAU,EAAE,OAAO,CAAC,EACpE,OAAO,CAAC,MAAM,CACjB,CAAC;IAEF,MAAM,OAAO,GAAW,mBAAmB,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;IAC7E,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAClC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACxB,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACzC,oBAAoB,CAAC,KAAK,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;IAC1D,4BAA4B,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACnD,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAElC,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,eAAe,CAAC,OAAgC,EAAE,OAAe;IACtE,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO;IACX,CAAC;IAED,MAAM,WAAW,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAEjD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;IACnG,CAAC;IAED,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,eAAe,CAAC,KAAe,EAAE,OAAgC;IACtE,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC;IAE5C,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,MAAM,IAAI,SAAS,CAAC,qFAAqF,CAAC,CAAC;IAC/G,CAAC;IAED,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,SAAS,CACf,mBAAmB,IAAI,+DAA+D;YACtF,sEAAsE,CACzE,CAAC;IACN,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAe,EAAE,KAAe;IAC1D,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IAElC,IAAI,eAAe,CAAC,KAAK,CAAC,KAAK,cAAc,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEvE,MAAM,IAAI,SAAS,CACf,kBAAkB,KAAK,CAAC,IAAI,WAAW,KAAK,sDAAsD,CACrG,CAAC;IACN,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAe,EAAE,OAAmB;IAC/D,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAe,EAAE,YAAsB,EAAE,OAAoB;IACrF,MAAM,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,wBAAwB,CAAC,CAAC;IAEnG,IAAI,eAAe,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,SAAS,CACf,kBAAkB,KAAK,CAAC,IAAI,qEAAqE;YACjG,mEAAmE,CACtE,CAAC;IACN,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAe,EAAE,YAAsB,EAAE,cAA2B;IAC9F,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEvC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;QACnD,CAAC;IACL,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAe;IACtC,OAAO,CACH,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;QAC1C,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAEhC,OAAO,KAAK,KAAK,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;IACtD,CAAC,CAAC,IAAI,YAAY,CACrB,CAAC;AACN,CAAC;AAED,SAAS,YAAY,CAAC,OAAwB,EAAE,KAAa,EAAE,IAAY,EAAE,WAAoB;IAC7F,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;QACzB,OAAO;IACX,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QACd,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,OAAO;IACX,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxB,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAEhE,IAAI,OAAO,UAAU,EAAE,KAAK,KAAK,UAAU,EAAE,CAAC;QAC1C,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,KAAgB,CAAC,CAAC;IAC3D,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,OAAwB,EAAE,KAAe,EAAE,WAAoB;IAClF,MAAM,KAAK,GAAI,KAAgC,CAAC,SAAS,CAAC;IAE1D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO;IACX,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;QACnD,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IACpD,CAAC;AACL,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAe;IAC3C,MAAM,OAAO,GAAoB,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,cAAc,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;IACrG,IAAI,GAAG,GAAoB,KAAK,CAAC;IAEjC,OAAO,GAAG,KAAK,IAAI,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,YAAY,EAAE,CAAC;QACxD,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC;QAC3C,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,SAAS,oBAAoB,CACzB,EAAW,EACX,UAAkB,EAClB,iBAAsE,EACtE,IAA6B;IAE7B,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,UAAU,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAEjD,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,cAAc,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAEtD,OAAO;QACH,GAAG,UAAU;QACb,UAAU;QACV,cAAc;QACd,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,cAAc,EAAE,UAAU,CAAC;KAChD,CAAC;AACN,CAAC;AAED,SAAS,uBAAuB,CAC5B,OAAoB,EACpB,iBAAsE,EACtE,IAAkB;IAElB,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,KAAK,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,oBAAoB,CAAC,EAAE,EAAE,UAAU,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;QAEjF,IAAI,UAAU,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAe,EAAE,OAAoB;IAC9D,OAAO,uBAAuB,CAC1B,OAAO,EACP,CAAC,UAAU,EAAE,EAAE,CAAC,wBAAwB,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,SAAS,EACxE,oBAAoB,CACvB,CAAC;AACN,CAAC;AAED,SAAS,SAAS,CACd,EAAW,EACX,cAA0D,EAC1D,UAA2B;IAE3B,OAAO,YAAY,CACf,EAAqC,EACrC,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,CAAC,gBAAgB,EAAE,EACjE,OAAO,CACV,CAAC;AACN,CAAC;AAED,MAAM,iBAAiB,GAAG,CACtB,kBAA+B,EAC/B,iBAA0C,EAC/B,EAAE;IACb,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAE5C,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACtC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAClC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,UAAkB,EAAE,aAAuB,EAAE,YAAoB,EAAW,EAAE,CACrG,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAE9E,SAAS,sBAAsB,CAAC,KAAe,EAAE,UAAkB,EAAE,aAAuB,EAAE,KAAa;IACvG,KAAK,MAAM,YAAY,IAAI,0BAA0B,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3D,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,aAAa,EAAE,YAAY,CAAC,EAAE,CAAC;YAC9D,MAAM,IAAI,SAAS,CACf,kBAAkB,KAAK,CAAC,IAAI,8BAA8B;gBAC1D,IAAI,QAAQ,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,iBAAiB;gBACnE,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAC1C,CAAC;QACN,CAAC;IACL,CAAC;AACL,CAAC;AAED,SAAS,4BAA4B,CAAC,KAAe,EAAE,UAAkB,EAAE,aAAuB;IAC9F,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;QAChC,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;IACpE,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CACxB,KAAe,EACf,OAAoB,EACpB,kBAA+B,EAC/B,iBAA0C;IAE1C,MAAM,OAAO,GAAG,iBAAiB,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;IAEzE,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QACtC,IAAI,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,KAAK,CACX,kBAAkB,KAAK,CAAC,IAAI,IAAI,UAAU,0CAA0C;gBACpF,0FAA0F;gBAC1F,oCAAoC,CACvC,CAAC;QACN,CAAC;IACL,CAAC;AACL,CAAC;AAED,SAAS,yBAAyB,CAC9B,OAAoB,EACpB,WAAmB,EACnB,aAAuB,EACvB,kBAA+B;IAE/B,MAAM,QAAQ,GAAgB,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;IACrD,MAAM,MAAM,GAAgB,IAAI,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC;IACxF,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAE7C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC;QAE3E,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACrC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,SAAS,uBAAuB,CAC5B,OAAoB,EACpB,cAAsB,EACtB,kBAA+B;IAE/B,OAAO,uBAAuB,CAC1B,OAAO,EACP,CAAC,UAAU,EAAE,EAAE,CAAC,4BAA4B,CAAC,cAAc,EAAE,UAAU,CAAC,EACxE,kBAAkB,CACrB,CAAC;AACN,CAAC;AAED,MAAM,uBAAuB,GAAG,CAAC,QAA0B,EAAE,YAAsB,EAAW,EAAE,CAC5F,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;AAE7D,SAAS,gBAAgB,CACrB,MAA2B,EAC3B,IAAuB;IAEvB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IAE1D,MAAM,UAAU,GAAG,uBAAuB,CAAC,QAAQ,EAAE,YAAY,CAAC;QAC9D,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;QAC7B,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC;IAEtD,OAAO,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC1G,CAAC;AAED,SAAS,cAAc,CAAC,MAA2B;IAC/C,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAC5E,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CACjC,CAAC;AACN,CAAC;AAED,SAAS,OAAO,CAAC,cAA4B,EAAE,KAAa,EAAE,KAAe;IACzE,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACxF,CAAC;AAED,SAAS,cAAc,CAAC,UAA2B;IAC/C,OAAO,CACH,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;QAC9C,UAAU,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE,IAAI,KAAK,QAAQ,CACnE,CAAC;AACN,CAAC;AAED,SAAS,kBAAkB,CAAC,UAA2B;IACnD,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,OAAO,UAAU,CAAC,cAAc,CAAC;IACrC,CAAC;IAED,OAAO,OAAO,CAAC,UAAU,CAAC,cAAc,EAAE,kBAAkB,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1F,CAAC;AAED,SAAS,kBAAkB,CACvB,KAAe,EACf,UAAkB,EAClB,EAAW,EACX,UAAmB;IAEnB,MAAM,UAAU,GAAG,wBAAwB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAE/D,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,+CAA+C,UAAU,eAAe,CAAC,CAAC;IAC9F,CAAC;IAED,MAAM,cAAc,GAAG,UAAU;QAC7B,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,EAAE,eAAe,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;QAClF,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC;IAEhC,OAAO;QACH,GAAG,UAAU;QACb,UAAU;QACV,cAAc;QACd,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,cAAc,EAAE,UAAU,CAAC;KAChD,CAAC;AACN,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAe,EAAE,IAAY;IAC5D,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,OAAO;IACX,CAAC;IAED,MAAM,IAAI,SAAS,CACf,kBAAkB,KAAK,CAAC,IAAI,yBAAyB,IAAI,uCAAuC;QAChG,oFAAoF;QACpF,kBAAkB,SAAS,CAAC,IAAI,CAAC,GAAG,CACvC,CAAC;AACN,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAE,UAAkB;IACxD,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5C,OAAO,CAAC,CAAC;IACb,CAAC;IAED,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAEtD,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAe,EAAE,OAAoB;IACjE,KAAK,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAEzD,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACjB,SAAS;QACb,CAAC;QAED,MAAM,OAAO,GAAG,EAAqC,CAAC;QAEtD,0BAA0B,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CACjE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CACxC,CAAC;IACN,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAe,EAAE,UAAkB,EAAE,IAAY,EAAE,KAAkB;IAC7F,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IAElC,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;QACzB,MAAM,IAAI,SAAS,CACf,0BAA0B,UAAU,QAAQ,KAAK,CAAC,IAAI,oCAAoC;YAC1F,gBAAgB,IAAI,EAAE,CACzB,CAAC;IACN,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAe,EAAE,IAAY,EAAE,IAAgB;IAC5E,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAEnF,OAAO,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;AAC7D,CAAC;AAED,SAAS,qBAAqB,CAC1B,KAAe,EACf,IAAY,EACZ,IAAgB;IAEhB,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAC5D,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CACvE,CAAC;IAEF,MAAM,UAAU,GAAG,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9D,MAAM,MAAM,GAA8B,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAC/D,MAAM,QAAQ,GAAwB,EAAE,UAAU,EAAE,CAAC;IAErD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAC9B,CAAC;IAED,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IAC1C,CAAC;IAED,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;QAC/B,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;IACrC,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAe,EAAE,OAAmC;IAChF,MAAM,MAAM,GAAgC,EAAE,CAAC;IAC/C,MAAM,KAAK,GAAqC,IAAI,GAAG,EAAE,CAAC;IAE1D,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,yBAAyB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1D,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC7B,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED,SAAS,4BAA4B,CACjC,KAAe,EACf,KAAuC;IAEvC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO;IACX,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,MAAc,EAAmC,EAAE,CACrE,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;IAE3C,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE;QACjD,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;YACtC,YAAY,CAAC,MAAM,CAAC,CAAC;YAErB,OAAO,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,IAAI,KAAK,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI;YACvB,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;YAEtC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,GAAG,CAAC,CAAC;YAClD,CAAC;YAED,OAAO,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QAChE,CAAC;KACJ,CAAC,CAAC;AACP,CAAC;AAED,SAAS,iBAAiB,CAAC,OAA8B;IACrD,MAAM,eAAe,GAAiC;QAClD,IAAI,EAAE,OAAO,CAAC,KAAK;QACnB,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;KAC9B,CAAC;IAEF,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC;IAEjD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC3B,eAAe,CAAC,UAAU,GAAG,UAAU,CAAC;IAC5C,CAAC;IAED,OAAO,eAAe,CAAC;AAC3B,CAAC;AAED,SAAS,iBAAiB,CACtB,OAA+C,EAC/C,OAAoC;IAEpC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC;AACnC,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAmC,EAAE,MAA+B;IAChG,IAAI,MAAM,CAAC,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC3B,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IACrC,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CACpB,WAA8B,EAC9B,iBAA0C,EAC1C,UAAwC,EACxC,MAA+B;IAE/B,MAAM,OAAO,GAA+B,EAAE,CAAC;IAC/C,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAExC,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,UAAU,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACjE,CAAC;AAED,OAAO,EAAkB,aAAa,EAAqC,CAAC","sourcesContent":["import type { Descriptor } from \"@gtkx/native\";\nimport {\n registerClass as nativeRegisterClass,\n type RegisterClassInterface as NativeRegisterClassInterface,\n type RegisterClassOptions as NativeRegisterClassOptions,\n type RegisterClassSignal as NativeRegisterClassSignal,\n type RegisterClassVfunc as NativeRegisterClassVfunc,\n} from \"@gtkx/native\";\nimport { type AnyClass, getParentClass, kebabCase, walkClassChain } from \"@gtkx/utils\";\nimport { wrapCallback } from \"./callback.js\";\nimport { insertMixinLayer } from \"./mixin.js\";\nimport {\n buildPropertyDispatch,\n GET_PROPERTY_VFUNC,\n makeGetProperty,\n makeSetProperty,\n type PropertyDispatch,\n type PropertySpec,\n SET_PROPERTY_VFUNC,\n toNativeProperties,\n} from \"./properties.js\";\nimport {\n descriptorFreePropertySpec,\n propertyMapOverride,\n writablePropertyMapOverride,\n} from \"./property-brand.js\";\nimport {\n getClassStructClass,\n getClassType,\n getInterfaceMixin,\n getTypeClassHandle,\n markDerivedClass,\n registerClassType,\n type VfuncDescriptor,\n wrapHandle,\n} from \"./registry.js\";\nimport {\n classSignalMember,\n naturalSignalMember,\n signalEmitMapOverride,\n signalMapOverride,\n} from \"./signal-brand.js\";\nimport {\n canonicalSignalName,\n connectClosureSignal,\n type DeclaredSignalTypes,\n emitDeclaredSignal,\n installSignalDispatch,\n overrideSignalClassClosure,\n signalForHandlerName,\n signalIdFor,\n} from \"./signal.js\";\nimport {\n TYPE_INTERFACE,\n TYPE_INVALID,\n TYPE_NONE,\n type TypedClass,\n typeFundamental,\n typeInterfacePrerequisites,\n typeInterfaces,\n typeIsA,\n typeName,\n} from \"./type.js\";\nimport { findClassVfuncDescriptor, findInterfaceVfuncDescriptor } from \"./vfunc.js\";\n\n/** A generated interface value, such as `Gio.ListModel`, accepted by {@link registerClass}. */\ntype Interface<TImpl, TInstance = object> = AnyClass & {\n /** Type-level slot holding the interface's `Impl` type; no value ever carries it. */\n __impl__: (impl: Partial<TImpl> & object) => TInstance;\n};\n\n/** Converts underscores in a property name to canonical dashes. */\ntype Dashed<TName extends string> = TName extends `${infer THead}_${infer TTail}`\n ? Dashed<`${THead}-${TTail}`>\n : TName;\n\n/** Converts a dashed property name to its JavaScript spelling. */\ntype Camelized<TName extends string> = TName extends `${infer THead}-${infer TTail}`\n ? `${THead}${Capitalize<Camelized<TTail>>}`\n : TName;\n\n/** Property-map keys in the camelCase spelling hooks use. */\ntype InstalledNames<TProperties> = string extends keyof TProperties\n ? never\n : Camelized<Dashed<keyof TProperties & string>>;\n\n/** Declared signal names in their original and canonical spellings. */\ntype DeclaredSignalBase<TSignals> = (keyof TSignals & string) | Dashed<keyof TSignals & string>;\n/** Declared signal names, including detailed forms. */\ntype DeclaredSignalName<TSignals> = DeclaredSignalBase<TSignals> | `${DeclaredSignalBase<TSignals>}::${string}`;\n\n/** Signal methods added for declared names. */\ntype DeclaredSignalMethods<TSignals, TBlockedMembers extends PropertyKey> = {\n /** Type-level map used by signal hooks. */\n __signals__?: Record<DeclaredSignalName<TSignals>, (...args: never[]) => unknown>;\n} &\nPick<\n {\n connect(\n signal: DeclaredSignalName<TSignals>,\n handler: (...args: never[]) => unknown,\n isAfter?: boolean,\n ): number;\n emit(sigName: DeclaredSignalName<TSignals>, ...args: unknown[]): unknown;\n on(sigName: DeclaredSignalName<TSignals>, callback: (...args: never[]) => unknown, isAfter?: boolean): unknown;\n once(\n sigName: DeclaredSignalName<TSignals>,\n callback: (...args: never[]) => unknown,\n isAfter?: boolean,\n ): unknown;\n off(sigName: DeclaredSignalName<TSignals>, callback: (...args: never[]) => unknown): unknown;\n },\n Exclude<\"connect\" | \"emit\" | \"off\" | \"on\" | \"once\", TBlockedMembers>\n>;\n\n/** A registered instance with declared signal methods and property metadata. */\ntype RegisteredInstance<\n TInstance,\n TProperties,\n TSignals,\n TInterfaces extends readonly Interface<TInstance>[],\n TRemainingInterfaces extends readonly Interface<TInstance>[] = TInterfaces,\n TMemberSurface = object,\n TSignalSurface = TInstance extends { [signalMapOverride]?: infer TResolver }\n ? TResolver extends () => infer TMap\n ? NonNullable<TMap>\n : TInstance extends { __signals__?: infer TMap }\n ? NonNullable<TMap>\n : object\n : TInstance extends { __signals__?: infer TMap }\n ? NonNullable<TMap>\n : object,\n TSignalEmitSurface = TInstance extends { [signalEmitMapOverride]?: infer TResolver }\n ? TResolver extends () => infer TMap\n ? NonNullable<TMap>\n : TInstance extends { __signalEmit__?: infer TMap }\n ? NonNullable<TMap>\n : object\n : TInstance extends { __signalEmit__?: infer TMap }\n ? NonNullable<TMap>\n : object,\n TPropertySurface = TInstance extends { [propertyMapOverride]?: infer TResolver }\n ? TResolver extends () => infer TMap\n ? NonNullable<TMap>\n : TInstance extends { __properties__?: infer TMap }\n ? NonNullable<TMap>\n : object\n : TInstance extends { __properties__?: infer TMap }\n ? NonNullable<TMap>\n : object,\n TWritablePropertySurface = TInstance extends { [writablePropertyMapOverride]?: infer TResolver }\n ? TResolver extends () => infer TMap\n ? NonNullable<TMap>\n : TInstance extends { __writableProperties__?: infer TMap }\n ? NonNullable<TMap>\n : object\n : TInstance extends { __writableProperties__?: infer TMap }\n ? NonNullable<TMap>\n : object,\n TNaturalInstanceMembers extends PropertyKey = TInstance extends {\n [naturalSignalMember]?: infer TMembers;\n }\n ? keyof NonNullable<TMembers>\n : never,\n TClassInstanceSignals extends PropertyKey = TInstance extends {\n [classSignalMember]?: infer TMembers;\n }\n ? keyof NonNullable<TMembers>\n : never,\n TLegacySignalMembers extends PropertyKey = \"connect\" | \"disconnect\" | \"emit\" | \"off\" | \"on\" | \"once\",\n TInstalledPropertyCandidate = TInstance & TMemberSurface,\n TRegisteredPropertySurface = Omit<TPropertySurface, InstalledNames<TProperties>> &\n Pick<\n TInstalledPropertyCandidate,\n (string extends keyof TProperties\n ? never\n : {\n [K in keyof TProperties & string]: TProperties[K] extends {\n readonly [descriptorFreePropertySpec]: true;\n }\n ? Camelized<Dashed<K>>\n : never;\n }[keyof TProperties & string]) & {\n [K in keyof TInstalledPropertyCandidate]-?: Extract<\n TInstalledPropertyCandidate[K],\n (...args: never[]) => unknown\n > extends never\n ? K\n : never;\n }[keyof TInstalledPropertyCandidate]\n >,\n TRegisteredWritablePropertySurface = Omit<TWritablePropertySurface, InstalledNames<TProperties>> &\n Pick<\n TInstalledPropertyCandidate,\n (string extends keyof TProperties\n ? never\n : {\n [K in keyof TProperties & string]: TProperties[K] extends {\n readonly [descriptorFreePropertySpec]: true;\n }\n ? Camelized<Dashed<K>>\n : never;\n }[keyof TProperties & string]) & {\n [K in keyof TInstalledPropertyCandidate]-?: Extract<\n TInstalledPropertyCandidate[K],\n (...args: never[]) => unknown\n > extends never\n ? (<U>(probe: U) => U extends { [P in K]: TInstalledPropertyCandidate[P] } ? 1 : 2) extends\n (<U>(probe: U) =>\n U extends { -readonly [P in K]: TInstalledPropertyCandidate[P] } ? 1 : 2)\n ? K\n : never\n : never;\n }[keyof TInstalledPropertyCandidate]\n >,\n> = TRemainingInterfaces extends readonly [\n infer TInterface extends Interface<TInstance>,\n ...infer TRest extends readonly Interface<TInstance>[],\n]\n ? (ReturnType<TInterface[\"__impl__\"]> extends infer TInterfaceInstance extends object\n ? RegisteredInstance<\n TInstance,\n TProperties,\n TSignals,\n TInterfaces,\n TRest,\n TMemberSurface &\n Omit<\n TInterfaceInstance,\n | keyof TInstance |\n keyof TMemberSurface |\n \"__properties__\" |\n \"__writableProperties__\" |\n \"__signalEmit__\" |\n \"__signals__\" |\n TLegacySignalMembers\n > & {\n [K in Extract<\n TInterfaceInstance extends { [naturalSignalMember]?: infer TMembers }\n ? keyof NonNullable<TMembers>\n : never,\n TLegacySignalMembers\n > as K extends TNaturalInstanceMembers | keyof TMemberSurface\n ? never\n : K]: K extends keyof TInterfaceInstance ? TInterfaceInstance[K] : never;\n },\n TInterfaceInstance extends { __signals__?: infer TNextSignalMap } ? Omit<\n TSignalSurface,\n keyof {\n [K in keyof NonNullable<TNextSignalMap> as K extends string\n ? Dashed<\n K extends `${infer TBase}::${string}` ? TBase : K\n > extends TClassInstanceSignals | Dashed<keyof TSignals & string>\n ? never\n : K\n : K]: NonNullable<TNextSignalMap>[K];\n }\n > & {\n [K in keyof NonNullable<TNextSignalMap> as K extends string\n ? Dashed<\n K extends `${infer TBase}::${string}` ? TBase : K\n > extends TClassInstanceSignals | Dashed<keyof TSignals & string>\n ? never\n : K\n : K]: NonNullable<TNextSignalMap>[K];\n }\n : TSignalSurface,\n TInterfaceInstance extends { __signalEmit__?: infer TNextSignalEmitMap } ? Omit<\n TSignalEmitSurface,\n keyof {\n [K in keyof NonNullable<TNextSignalEmitMap> as K extends string\n ? Dashed<\n K extends `${infer TBase}::${string}` ? TBase : K\n > extends TClassInstanceSignals | Dashed<keyof TSignals & string>\n ? never\n : K\n : K]: NonNullable<TNextSignalEmitMap>[K];\n }\n > & {\n [K in keyof NonNullable<TNextSignalEmitMap> as K extends string\n ? Dashed<\n K extends `${infer TBase}::${string}` ? TBase : K\n > extends TClassInstanceSignals | Dashed<keyof TSignals & string>\n ? never\n : K\n : K]: NonNullable<TNextSignalEmitMap>[K];\n }\n : TSignalEmitSurface,\n TPropertySurface &\n Omit<\n TInterfaceInstance extends { [propertyMapOverride]?: infer TResolver }\n ? TResolver extends () => infer TMap\n ? NonNullable<TMap>\n : TInterfaceInstance extends { __properties__?: infer TMap }\n ? NonNullable<TMap>\n : object\n : TInterfaceInstance extends { __properties__?: infer TMap }\n ? NonNullable<TMap>\n : object,\n keyof TPropertySurface\n >,\n TWritablePropertySurface &\n Omit<\n TInterfaceInstance extends { [writablePropertyMapOverride]?: infer TResolver }\n ? TResolver extends () => infer TMap\n ? NonNullable<TMap>\n : TInterfaceInstance extends { __writableProperties__?: infer TMap }\n ? NonNullable<TMap>\n : object\n : TInterfaceInstance extends { __writableProperties__?: infer TMap }\n ? NonNullable<TMap>\n : object,\n keyof TWritablePropertySurface\n >,\n TNaturalInstanceMembers,\n TClassInstanceSignals,\n TLegacySignalMembers\n >\n : never) : TInstance &\n TMemberSurface &\n DeclaredSignalMethods<\n TSignals,\n TNaturalInstanceMembers | Extract<keyof TMemberSurface, TLegacySignalMembers>\n > & {\n [naturalSignalMember]?: Record<\n TNaturalInstanceMembers | Extract<keyof TMemberSurface, TLegacySignalMembers>,\n true\n >;\n [classSignalMember]?: Record<\n TClassInstanceSignals | Dashed<keyof TSignals & string>,\n true\n >;\n [signalMapOverride]?: () => Omit<TSignalSurface, DeclaredSignalName<TSignals>> &\n Record<DeclaredSignalName<TSignals>, (...args: never[]) => unknown>;\n [signalEmitMapOverride]?: () => Omit<TSignalEmitSurface, DeclaredSignalName<TSignals>> &\n Record<DeclaredSignalName<TSignals>, { args: unknown[]; result: unknown }>;\n [propertyMapOverride]?: () => TRegisteredPropertySurface;\n [writablePropertyMapOverride]?: () => TRegisteredWritablePropertySurface;\n __properties__: TRegisteredPropertySurface;\n __writableProperties__: TRegisteredWritablePropertySurface;\n };\n\n/** A registered class's construct signature and prototype. */\ntype RegisteredConstructor<TClass, TArgs extends unknown[], TInstance> = {\n /** Object the class's instances inherit from. */\n prototype: TInstance;\n} & (TClass extends new (...args: never) => unknown\n ? new (...args: TArgs) => TInstance\n : abstract new (...args: TArgs) => TInstance);\n\n/** The statics a registered class keeps from the class it was, joined with {@link RegisteredConstructor}. */\ntype RegisteredParts<TClass, TArgs extends unknown[], TInstance> = Omit<TClass, \"prototype\"> &\n RegisteredConstructor<TClass, TArgs, TInstance>;\n\n/** The registered class with its declared properties and signals. */\ntype RegisteredClass<\n TClass extends AnyClass,\n TProperties,\n TSignals,\n TInterfaces extends readonly Interface<TClass[\"prototype\"]>[],\n> =\n TClass extends abstract new (...args: infer TArgs) => infer TInstance\n ? RegisteredParts<TClass, TArgs, RegisteredInstance<TInstance, TProperties, TSignals, TInterfaces>>\n : never;\n\n/** A numeric GType or a generated or registered wrapper class. */\ntype SignalGType = bigint | AnyClass<TypedClass>;\n\n/** A signal installed by {@link registerClass}. */\ntype SignalSpec = {\n /** `GObject.SignalFlags` bit mask, defaulting to `RUN_FIRST`. */\n flags?: number;\n /** Argument GTypes, defaulting to none. */\n paramTypes?: SignalGType[];\n /** Return GType, defaulting to none. */\n returnType?: SignalGType;\n /** Combines handler results; omitted means the last result wins. */\n accumulator?: \"first-wins\" | \"true-handled\";\n};\n\n/** What {@link registerClass} adds to the new GType beyond the vtable slots it discovers on the class. */\ntype RegisterClassOptions<\n TInstance extends object,\n TProperties extends Record<string, PropertySpec>,\n TSignals extends Record<string, SignalSpec>,\n TInterfaces extends readonly Interface<TInstance>[],\n> = {\n /** Registered GType name, defaulting to the class name. */\n typeName?: string;\n /** Prevents direct construction while allowing registered subclasses. */\n abstract?: boolean;\n /** CSS node name for a `Gtk.Widget` subclass. */\n cssName?: string;\n /**\n * Runs once after registration with the wrapped class struct. An exception propagates after\n * the static GType has already been registered and cannot be undone.\n */\n classInit?(typeStruct: object): void;\n /** Interfaces implemented through matching `vfunc` methods. */\n implements?: TInterfaces;\n /**\n * ParamSpecs keyed by their JavaScript property names. Keys and ParamSpec names must canonicalize\n * to the same member. Writes validate flags, types, and ranges and notify only on changes.\n * Nullish values require a nullable GType; constructor `undefined` means omitted. An existing\n * camelCase accessor remains authoritative.\n */\n properties?: TProperties;\n /**\n * New canonical signal names and specs. Declared GTypes validate emissions, and a matching\n * `on<SignalName>` method becomes the default handler.\n */\n signals?: TSignals;\n};\n\n/** {@link RegisterClassOptions} with the widest instance and property types {@link registerClass} accepts. */\ntype AnyRegisterClassOptions = RegisterClassOptions<\n object,\n Record<string, PropertySpec>,\n Record<string, SignalSpec>,\n Interface<object>[]\n>;\ntype VfuncFn = NativeRegisterClassVfunc[\"fn\"];\ntype DiscoveredVfunc = VfuncDescriptor & { methodName: string; fn: VfuncFn };\ntype MethodTable = Map<string, VfuncFn>;\ntype InstanceMembers = { methods: MethodTable; names: Set<string>; inheritedNames: Set<string> };\n\ntype InterfaceVfuncBinding = {\n gtype: bigint;\n vfuncs: DiscoveredVfunc[];\n};\n\ntype PropertyVfuncSource = {\n klass: AnyClass;\n methods: MethodTable;\n dispatch: PropertyDispatch;\n adoptedTypes: bigint[];\n};\n\ntype PropertyVfuncSpec = {\n methodName: string;\n isValueOut: boolean;\n makeDispatch: (dispatch: PropertyDispatch) => VfuncFn;\n};\n\ntype ArgPatch = { isCallerAllocated: true } | { isCallScoped: true };\ntype DeclaredSignals = { native: NativeRegisterClassSignal[]; table: Map<string, DeclaredSignalTypes> };\n\nconst INSTANCE_ARG_INDEX = 0;\nconst VALUE_ARG_INDEX = 2;\nconst TEARDOWN_VFUNC_NAMES: Set<string> = new Set([\"dispose\", \"finalize\"]);\nconst ASYNC_INITABLE_TYPE_NAME = \"GAsyncInitable\";\nconst INIT_ASYNC_METHOD_NAME = \"vfuncInitAsync\";\n\nconst PROPERTY_VFUNC_SPECS: PropertyVfuncSpec[] = [\n { methodName: GET_PROPERTY_VFUNC, isValueOut: true, makeDispatch: makeGetProperty },\n { methodName: SET_PROPERTY_VFUNC, isValueOut: false, makeDispatch: makeSetProperty },\n];\n\nconst PROPERTY_VFUNC_NAMES: Set<string> = new Set(PROPERTY_VFUNC_SPECS.map((spec) => spec.methodName));\nconst VFUNC_METHOD_PATTERN = /^vfunc[A-Z0-9]/;\nconst TYPE_NAME_PATTERN = /^[A-Za-z_][A-Za-z0-9\\-_+]{2,}$/;\nconst UPPER_CASE_PATTERN = /[A-Z]/;\nconst SIGNAL_OVERRIDE_PATTERN = /^on[A-Z]/;\n\n/**\n * Registers a wrapper subclass as a GType with discovered vfuncs, properties, signals, and interfaces.\n * Vfuncs must be prototype methods; function-valued fields never reach the vtable. A matching\n * `on<SignalName>` method becomes the signal's default handler.\n *\n * `vfuncConstructed` runs before field initializers and the constructor body. Native-created\n * instances never run the JavaScript constructor, so native-required state belongs in properties\n * or `vfuncConstructed`. A new `Gio.AsyncInitable` must implement `vfuncInitAsync`.\n *\n * @param klass The wrapper subclass to register.\n * @param options Additional GType configuration.\n * @returns The registered class with declared properties and signals in its type.\n * @throws For invalid parents, names, interfaces, vfuncs, properties, signals, or widget options.\n * A `classInit` exception propagates after the static type has been registered and cannot be undone.\n */\nfunction registerClass<\n T extends AnyClass,\n TProperties extends Record<string, PropertySpec> = Record<never, PropertySpec>,\n TSignals extends Record<string, SignalSpec> = Record<never, SignalSpec>,\n const TInterfaces extends readonly Interface<T[\"prototype\"]>[] = readonly Interface<T[\"prototype\"]>[],\n>(\n klass: T,\n options?: RegisterClassOptions<T[\"prototype\"], TProperties, TSignals, TInterfaces>,\n): RegisteredClass<T, TProperties, TSignals, TInterfaces>;\n\nfunction registerClass(klass: AnyClass, options: AnyRegisterClassOptions = {}): AnyClass {\n const parentType = resolveParentType(klass);\n\n if (parentType === TYPE_INVALID) {\n throw new TypeError(`registerClass: ${klass.name} must extend a registered wrapper class`);\n }\n\n const name = resolveTypeName(klass, options);\n const declaredTypes = resolveInterfaceTypes(klass, options.implements ?? []);\n assertInterfacePrerequisites(klass, parentType, declaredTypes);\n const adoptedTypes = declaredTypes.filter((gtype) => !typeIsA(parentType, gtype));\n const properties = options.properties ?? {};\n const signals = resolveDeclaredSignals(klass, options.signals ?? {});\n const members = collectInstanceMembers(klass);\n const { methods, inheritedNames } = members;\n checkAsyncInitable(klass, adoptedTypes, methods);\n const dispatch = buildPropertyDispatch({ klass, properties, adoptedTypes });\n\n const classVfuncs = [\n ...discoverClassVfuncs(klass, methods),\n ...propertyVfuncs({ klass, methods, dispatch, adoptedTypes }),\n ];\n\n const claimedMethodNames = new Set(classVfuncs.map((vfunc) => vfunc.methodName));\n const interfaceBindings = discoverInterfaceBindings(methods, parentType, declaredTypes, claimedMethodNames);\n assertClaimedVfuncs(klass, methods, claimedMethodNames, interfaceBindings);\n\n const nativeOptions = withNativeSignals(\n toNativeOptions(classVfuncs, interfaceBindings, properties, options),\n signals.native,\n );\n\n const newType: bigint = nativeRegisterClass(name, parentType, nativeOptions);\n registerClassType(klass, newType);\n markDerivedClass(klass);\n installSignalOverrides(newType, methods);\n applyInterfaceMixins(klass, adoptedTypes, inheritedNames);\n installDeclaredSignalMethods(klass, signals.table);\n invokeClassInit(options, newType);\n\n return klass;\n}\n\nfunction invokeClassInit(options: AnyRegisterClassOptions, newType: bigint): void {\n if (options.classInit === undefined) {\n return;\n }\n\n const structClass = getClassStructClass(newType);\n\n if (structClass === undefined) {\n throw new Error(\"registerClass: no ancestor of the new type registers a class struct wrapper\");\n }\n\n options.classInit(wrapHandle(getTypeClassHandle(newType), structClass));\n}\n\nfunction resolveTypeName(klass: AnyClass, options: AnyRegisterClassOptions): string {\n const name = options.typeName ?? klass.name;\n\n if (!name) {\n throw new TypeError(\"registerClass: cannot derive a GType name (anonymous class with no typeName option)\");\n }\n\n if (!TYPE_NAME_PATTERN.test(name)) {\n throw new TypeError(\n `registerClass: '${name}' is not a valid GType name (a letter or underscore, then at ` +\n \"least two more characters, all from A-Z, a-z, 0-9, '-', '_' and '+')\",\n );\n }\n\n return name;\n}\n\nfunction resolveInterfaceType(klass: AnyClass, entry: AnyClass): bigint {\n const gtype = getClassType(entry);\n\n if (typeFundamental(gtype) !== TYPE_INTERFACE) {\n const label = typeof entry === \"function\" ? entry.name : String(entry);\n\n throw new TypeError(\n `registerClass: ${klass.name} lists '${label}' in implements, which is not a registered interface`,\n );\n }\n\n return gtype;\n}\n\nfunction resolveInterfaceTypes(klass: AnyClass, entries: AnyClass[]): bigint[] {\n return [...new Set(entries.map((entry) => resolveInterfaceType(klass, entry)))];\n}\n\nfunction checkAsyncInitable(klass: AnyClass, adoptedTypes: bigint[], methods: MethodTable): void {\n const isAsyncInitable = adoptedTypes.some((gtype) => typeName(gtype) === ASYNC_INITABLE_TYPE_NAME);\n\n if (isAsyncInitable && !methods.has(INIT_ASYNC_METHOD_NAME)) {\n throw new TypeError(\n `registerClass: ${klass.name} implements Gio.AsyncInitable without overriding 'vfuncInitAsync'; ` +\n \"the default 'init_async' would run 'vfuncInit' on a worker thread\",\n );\n }\n}\n\nfunction applyInterfaceMixins(klass: AnyClass, adoptedTypes: bigint[], inheritedNames: Set<string>): void {\n for (const gtype of adoptedTypes) {\n const mixin = getInterfaceMixin(gtype);\n\n if (mixin !== undefined) {\n insertMixinLayer(klass, mixin, inheritedNames);\n }\n }\n}\n\nfunction resolveParentType(klass: AnyClass): bigint {\n return (\n walkClassChain(getParentClass(klass), (cls) => {\n const gtype = getClassType(cls);\n\n return gtype === TYPE_INVALID ? undefined : gtype;\n }) ?? TYPE_INVALID\n );\n}\n\nfunction addOwnMember(members: InstanceMembers, proto: object, name: string, isInherited: boolean): void {\n if (name === \"constructor\") {\n return;\n }\n\n if (isInherited) {\n members.inheritedNames.add(name);\n }\n\n if (members.names.has(name)) {\n return;\n }\n\n members.names.add(name);\n const descriptor = Object.getOwnPropertyDescriptor(proto, name);\n\n if (typeof descriptor?.value === \"function\") {\n members.methods.set(name, descriptor.value as VfuncFn);\n }\n}\n\nfunction addOwnMembers(members: InstanceMembers, klass: AnyClass, isInherited: boolean): void {\n const proto = (klass as { prototype?: object }).prototype;\n\n if (proto === undefined) {\n return;\n }\n\n for (const name of Object.getOwnPropertyNames(proto)) {\n addOwnMember(members, proto, name, isInherited);\n }\n}\n\nfunction collectInstanceMembers(klass: AnyClass): InstanceMembers {\n const members: InstanceMembers = { methods: new Map(), names: new Set(), inheritedNames: new Set() };\n let cls: AnyClass | null = klass;\n\n while (cls !== null && getClassType(cls) === TYPE_INVALID) {\n addOwnMembers(members, cls, cls !== klass);\n cls = getParentClass(cls);\n }\n\n return members;\n}\n\nfunction buildDiscoveredVfunc(\n fn: VfuncFn,\n methodName: string,\n resolveDescriptor: (methodName: string) => VfuncDescriptor | undefined,\n skip: Set<string> | undefined,\n): DiscoveredVfunc | undefined {\n if (skip?.has(methodName)) {\n return undefined;\n }\n\n const descriptor = resolveDescriptor(methodName);\n\n if (!descriptor) {\n return undefined;\n }\n\n const argDescriptors = slotArgDescriptors(descriptor);\n\n return {\n ...descriptor,\n methodName,\n argDescriptors,\n fn: wrapVfunc(fn, argDescriptors, descriptor),\n };\n}\n\nfunction collectDiscoveredVfuncs(\n methods: MethodTable,\n resolveDescriptor: (methodName: string) => VfuncDescriptor | undefined,\n skip?: Set<string>,\n): DiscoveredVfunc[] {\n const result: DiscoveredVfunc[] = [];\n\n for (const [methodName, fn] of methods) {\n const discovered = buildDiscoveredVfunc(fn, methodName, resolveDescriptor, skip);\n\n if (discovered) {\n result.push(discovered);\n }\n }\n\n return result;\n}\n\nfunction discoverClassVfuncs(klass: AnyClass, methods: MethodTable): DiscoveredVfunc[] {\n return collectDiscoveredVfuncs(\n methods,\n (methodName) => findClassVfuncDescriptor(klass, methodName) ?? undefined,\n PROPERTY_VFUNC_NAMES,\n );\n}\n\nfunction wrapVfunc(\n fn: VfuncFn,\n argDescriptors: NativeRegisterClassVfunc[\"argDescriptors\"],\n descriptor: VfuncDescriptor,\n): VfuncFn {\n return wrapCallback(\n fn as (...args: unknown[]) => unknown,\n { argDescriptors, returnDescriptor: descriptor.returnDescriptor },\n \"vfunc\",\n );\n}\n\nconst claimedVfuncNames = (\n claimedMethodNames: Set<string>,\n interfaceBindings: InterfaceVfuncBinding[],\n): Set<string> => {\n const claimed = new Set(claimedMethodNames);\n\n for (const binding of interfaceBindings) {\n for (const vfunc of binding.vfuncs) {\n claimed.add(vfunc.methodName);\n }\n }\n\n return claimed;\n};\n\nconst isPrerequisiteMet = (parentType: bigint, declaredTypes: bigint[], prerequisite: bigint): boolean =>\n typeIsA(parentType, prerequisite) || declaredTypes.includes(prerequisite);\n\nfunction assertPrerequisitesFor(klass: AnyClass, parentType: bigint, declaredTypes: bigint[], iface: bigint): void {\n for (const prerequisite of typeInterfacePrerequisites(iface)) {\n if (!isPrerequisiteMet(parentType, declaredTypes, prerequisite)) {\n throw new TypeError(\n `registerClass: ${klass.name} does not meet prerequisite ` +\n `'${typeName(prerequisite) ?? String(prerequisite)}' of interface ` +\n `'${typeName(iface) ?? String(iface)}'`,\n );\n }\n }\n}\n\nfunction assertInterfacePrerequisites(klass: AnyClass, parentType: bigint, declaredTypes: bigint[]): void {\n for (const iface of declaredTypes) {\n assertPrerequisitesFor(klass, parentType, declaredTypes, iface);\n }\n}\n\nfunction assertClaimedVfuncs(\n klass: AnyClass,\n methods: MethodTable,\n claimedMethodNames: Set<string>,\n interfaceBindings: InterfaceVfuncBinding[],\n): void {\n const claimed = claimedVfuncNames(claimedMethodNames, interfaceBindings);\n\n for (const methodName of methods.keys()) {\n if (VFUNC_METHOD_PATTERN.test(methodName) && !claimed.has(methodName)) {\n throw new Error(\n `registerClass: ${klass.name}.${methodName} matches no vtable slot on any ancestor ` +\n \"or implemented interface, so the override would never be called; check the name against \" +\n \"the parent class's virtual methods\",\n );\n }\n }\n}\n\nfunction discoverInterfaceBindings(\n methods: MethodTable,\n parentGtype: bigint,\n declaredTypes: bigint[],\n claimedMethodNames: Set<string>,\n): InterfaceVfuncBinding[] {\n const declared: Set<bigint> = new Set(declaredTypes);\n const gtypes: Set<bigint> = new Set([...typeInterfaces(parentGtype), ...declaredTypes]);\n const bindings: InterfaceVfuncBinding[] = [];\n\n for (const gtype of gtypes) {\n const vfuncs = discoverInterfaceVfuncs(methods, gtype, claimedMethodNames);\n\n if (vfuncs.length > 0 || declared.has(gtype)) {\n bindings.push({ gtype, vfuncs });\n }\n }\n\n return bindings;\n}\n\nfunction discoverInterfaceVfuncs(\n methods: MethodTable,\n interfaceGtype: bigint,\n claimedMethodNames: Set<string>,\n): DiscoveredVfunc[] {\n return collectDiscoveredVfuncs(\n methods,\n (methodName) => findInterfaceVfuncDescriptor(interfaceGtype, methodName),\n claimedMethodNames,\n );\n}\n\nconst hasDispatchedProperties = (dispatch: PropertyDispatch, adoptedTypes: bigint[]): boolean =>\n dispatch.accessors.length > 0 || adoptedTypes.length > 0;\n\nfunction propertyVfuncFor(\n source: PropertyVfuncSource,\n spec: PropertyVfuncSpec,\n): DiscoveredVfunc | undefined {\n const { klass, methods, dispatch, adoptedTypes } = source;\n\n const dispatched = hasDispatchedProperties(dispatch, adoptedTypes)\n ? spec.makeDispatch(dispatch)\n : undefined;\n\n const fn = methods.get(spec.methodName) ?? dispatched;\n\n return fn === undefined ? undefined : buildPropertyVfunc(klass, spec.methodName, fn, spec.isValueOut);\n}\n\nfunction propertyVfuncs(source: PropertyVfuncSource): DiscoveredVfunc[] {\n return PROPERTY_VFUNC_SPECS.map((spec) => propertyVfuncFor(source, spec)).filter(\n (vfunc) => vfunc !== undefined,\n );\n}\n\nfunction markArg(argDescriptors: Descriptor[], index: number, patch: ArgPatch): Descriptor[] {\n return argDescriptors.map((arg, at) => (at === index ? { ...arg, ...patch } : arg));\n}\n\nfunction isTeardownSlot(descriptor: VfuncDescriptor): boolean {\n return (\n TEARDOWN_VFUNC_NAMES.has(descriptor.vfuncName) &&\n descriptor.argDescriptors[INSTANCE_ARG_INDEX]?.kind === \"object\"\n );\n}\n\nfunction slotArgDescriptors(descriptor: VfuncDescriptor): Descriptor[] {\n if (!isTeardownSlot(descriptor)) {\n return descriptor.argDescriptors;\n }\n\n return markArg(descriptor.argDescriptors, INSTANCE_ARG_INDEX, { isCallScoped: true });\n}\n\nfunction buildPropertyVfunc(\n klass: AnyClass,\n methodName: string,\n fn: VfuncFn,\n isValueOut: boolean,\n): DiscoveredVfunc {\n const descriptor = findClassVfuncDescriptor(klass, methodName);\n\n if (!descriptor) {\n throw new Error(`registerClass: the parent class exposes no '${methodName}' vtable slot`);\n }\n\n const argDescriptors = isValueOut\n ? markArg(descriptor.argDescriptors, VALUE_ARG_INDEX, { isCallerAllocated: true })\n : descriptor.argDescriptors;\n\n return {\n ...descriptor,\n methodName,\n argDescriptors,\n fn: wrapVfunc(fn, argDescriptors, descriptor),\n };\n}\n\nfunction assertLowerCaseSignalName(klass: AnyClass, name: string): void {\n if (!UPPER_CASE_PATTERN.test(name)) {\n return;\n }\n\n throw new TypeError(\n `registerClass: ${klass.name} declares the signal '${name}'; GObject would carry it under that ` +\n \"exact spelling, out of reach of both its dashed spelling and its default handler; \" +\n `declare it as '${kebabCase(name)}'`,\n );\n}\n\nfunction overriddenSignalId(type: bigint, methodName: string): number {\n if (!SIGNAL_OVERRIDE_PATTERN.test(methodName)) {\n return 0;\n }\n\n const signal = signalForHandlerName(type, methodName);\n\n return signal === undefined ? 0 : signalIdFor(type, signal);\n}\n\nfunction installSignalOverrides(newType: bigint, methods: MethodTable): void {\n for (const [methodName, fn] of methods) {\n const signalId = overriddenSignalId(newType, methodName);\n\n if (signalId === 0) {\n continue;\n }\n\n const handler = fn as (...args: unknown[]) => unknown;\n\n overrideSignalClassClosure(newType, signalId, (...args: unknown[]) =>\n handler.apply(args[0], args.slice(1)),\n );\n }\n}\n\nfunction resolveSignalGType(klass: AnyClass, signalName: string, role: string, entry: SignalGType): bigint {\n if (typeof entry === \"bigint\") {\n return entry;\n }\n\n const gtype = getClassType(entry);\n\n if (gtype === TYPE_INVALID) {\n throw new TypeError(\n `registerClass: signal '${signalName}' of ${klass.name} names a class with no registered ` +\n `GType as its ${role}`,\n );\n }\n\n return gtype;\n}\n\nfunction resolveSignalReturnType(klass: AnyClass, name: string, spec: SignalSpec): bigint | undefined {\n if (spec.returnType === undefined) {\n return undefined;\n }\n\n const returnType = resolveSignalGType(klass, name, \"return type\", spec.returnType);\n\n return returnType === TYPE_NONE ? undefined : returnType;\n}\n\nfunction resolveDeclaredSignal(\n klass: AnyClass,\n name: string,\n spec: SignalSpec,\n): { native: NativeRegisterClassSignal; declared: DeclaredSignalTypes } {\n const paramTypes = (spec.paramTypes ?? []).map((entry, index) =>\n resolveSignalGType(klass, name, `parameter ${String(index)}`, entry),\n );\n\n const returnType = resolveSignalReturnType(klass, name, spec);\n const native: NativeRegisterClassSignal = { name, paramTypes };\n const declared: DeclaredSignalTypes = { paramTypes };\n\n if (spec.flags !== undefined) {\n native.flags = spec.flags;\n }\n\n if (spec.accumulator !== undefined) {\n native.accumulator = spec.accumulator;\n }\n\n if (returnType !== undefined) {\n native.returnType = returnType;\n declared.returnType = returnType;\n }\n\n return { native, declared };\n}\n\nfunction resolveDeclaredSignals(klass: AnyClass, signals: Record<string, SignalSpec>): DeclaredSignals {\n const native: NativeRegisterClassSignal[] = [];\n const table: Map<string, DeclaredSignalTypes> = new Map();\n\n for (const [name, spec] of Object.entries(signals)) {\n assertLowerCaseSignalName(klass, name);\n const resolved = resolveDeclaredSignal(klass, name, spec);\n native.push(resolved.native);\n table.set(canonicalSignalName(name), resolved.declared);\n }\n\n return { native, table };\n}\n\nfunction installDeclaredSignalMethods(\n klass: AnyClass,\n table: Map<string, DeclaredSignalTypes>,\n): void {\n if (table.size === 0) {\n return;\n }\n\n const findDeclared = (signal: string): DeclaredSignalTypes | undefined =>\n table.get(canonicalSignalName(signal));\n\n installSignalDispatch(klass, table.keys().toArray(), {\n connect(instance, signal, handler, isAfter): number {\n findDeclared(signal);\n\n return connectClosureSignal(instance, signal, handler, isAfter ?? false);\n },\n emit(instance, signal, args): unknown {\n const declared = findDeclared(signal);\n\n if (declared === undefined) {\n throw new Error(`Unknown signal '${signal}'`);\n }\n\n return emitDeclaredSignal(instance, signal, declared, args);\n },\n });\n}\n\nfunction toNativeInterface(binding: InterfaceVfuncBinding): NativeRegisterClassInterface {\n const nativeInterface: NativeRegisterClassInterface = {\n type: binding.gtype,\n vfuncs: [...binding.vfuncs],\n };\n\n const vtableSize = binding.vfuncs[0]?.vtableSize;\n\n if (vtableSize !== undefined) {\n nativeInterface.vtableSize = vtableSize;\n }\n\n return nativeInterface;\n}\n\nfunction withNativeSignals(\n options: NativeRegisterClassOptions | undefined,\n signals: NativeRegisterClassSignal[],\n): NativeRegisterClassOptions | undefined {\n if (signals.length === 0) {\n return options;\n }\n\n return { ...options, signals };\n}\n\nfunction applyNativeTypeOptions(options: NativeRegisterClassOptions, source: AnyRegisterClassOptions): void {\n if (source.abstract ?? false) {\n options.abstract = true;\n }\n\n if (source.cssName !== undefined) {\n options.cssName = source.cssName;\n }\n}\n\nfunction toNativeOptions(\n classVfuncs: DiscoveredVfunc[],\n interfaceBindings: InterfaceVfuncBinding[],\n properties: Record<string, PropertySpec>,\n source: AnyRegisterClassOptions,\n): NativeRegisterClassOptions | undefined {\n const options: NativeRegisterClassOptions = {};\n applyNativeTypeOptions(options, source);\n\n if (Object.keys(properties).length > 0) {\n options.properties = toNativeProperties(properties);\n }\n\n if (classVfuncs.length > 0) {\n options.vfuncs = [...classVfuncs];\n }\n\n if (interfaceBindings.length > 0) {\n options.interfaces = interfaceBindings.map((binding) => toNativeInterface(binding));\n }\n\n return Object.keys(options).length > 0 ? options : undefined;\n}\n\nexport { type Interface, registerClass, type SignalGType, type SignalSpec };\n"]}
|
package/dist/registry.d.ts
CHANGED
|
@@ -169,7 +169,7 @@ declare function registerInterface(cls: AnyClass, type: bigint, mixin: Mixin, la
|
|
|
169
169
|
* @param interfaces Registered interface classes to adopt, in order.
|
|
170
170
|
* @throws If an entry is not a registered interface.
|
|
171
171
|
*/
|
|
172
|
-
declare function installInterfaces(cls: AnyClass, interfaces: AnyClass[]): void;
|
|
172
|
+
declare function installInterfaces(cls: AnyClass, interfaces: AnyClass[], inheritedOverrides?: string[]): void;
|
|
173
173
|
/**
|
|
174
174
|
* Wraps a native handle in a JS wrapper instance. With no class, resolves and
|
|
175
175
|
* reuses the wrapper for the handle's runtime GType (composing interface mixins),
|
package/dist/registry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,cAAc,EAKnB,KAAK,MAAM,EACX,KAAK,kBAAkB,IAAI,wBAAwB,EAGtD,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,KAAK,QAAQ,EAAkB,MAAM,aAAa,CAAC;AAC5D,OAAO,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/registry.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getFundamentalWrapper, getType, getTypeClass, getWrapper, setFundamentalWrapper, setWrapper, } from "@gtkx/native";
|
|
2
2
|
import { walkClassChain } from "@gtkx/utils";
|
|
3
|
-
import { copyLayerMembers, installMixins } from "./mixin.js";
|
|
3
|
+
import { copyLayerMembers, createMixinLayer, installMixins } from "./mixin.js";
|
|
4
4
|
import { TYPE_INVALID, TYPE_OBJECT, typeFundamental, typeInterfaces, typeIsA, typeName, typeParent, } from "./type.js";
|
|
5
5
|
const classRegistry = new Map();
|
|
6
6
|
const classStructRegistry = new Map();
|
|
@@ -225,7 +225,7 @@ function registerInterface(cls, type, mixin, layout) {
|
|
|
225
225
|
* @param interfaces Registered interface classes to adopt, in order.
|
|
226
226
|
* @throws If an entry is not a registered interface.
|
|
227
227
|
*/
|
|
228
|
-
function installInterfaces(cls, interfaces) {
|
|
228
|
+
function installInterfaces(cls, interfaces, inheritedOverrides = []) {
|
|
229
229
|
const mixins = interfaces.map((iface) => {
|
|
230
230
|
const mixin = getInterfaceMixin(getClassType(iface));
|
|
231
231
|
if (mixin === undefined) {
|
|
@@ -233,7 +233,7 @@ function installInterfaces(cls, interfaces) {
|
|
|
233
233
|
}
|
|
234
234
|
return mixin;
|
|
235
235
|
});
|
|
236
|
-
installMixins(cls, mixins);
|
|
236
|
+
installMixins(cls, mixins, inheritedOverrides);
|
|
237
237
|
}
|
|
238
238
|
function wrapHandle(handle, cls) {
|
|
239
239
|
if (handle === null || handle === undefined) {
|
|
@@ -305,7 +305,7 @@ function applyInterfaceMixin(cls, type, baseType, applied) {
|
|
|
305
305
|
return cls;
|
|
306
306
|
}
|
|
307
307
|
applied.add(type);
|
|
308
|
-
return mixin(
|
|
308
|
+
return createMixinLayer(cls, mixin, new Set());
|
|
309
309
|
}
|
|
310
310
|
function createComposedClass(base, runtimeType) {
|
|
311
311
|
const baseType = getClassType(base);
|