import { TemplateResult } from 'lit-html';
import { O as OutsideClickResolution } from './outside-click-rZ3Di_WX.cjs';
type Constructor = new (...args: unknown[]) => T;
type RenderableElement = HTMLElement & {
render?(): TemplateResult | null | undefined;
afterRender?(): void;
wrapRender?(commit: () => void, context: RenderContext): void;
onAttributeChange?(name: string, oldValue: string | null, newValue: string | null): void;
requestRender?(): void;
renderRoot?: ShadowRoot | HTMLElement;
};
type TemplateValue = TemplateResult | null | undefined | ((this: TElement, host: TElement) => TemplateResult | null | undefined);
interface ComponentOptions {
tag: string;
template?: TemplateValue;
styles?: string;
styleUrls?: string[];
observedAttributes?: string[];
shadowMode?: ShadowRootMode;
autoSlot?: boolean;
}
interface RenderContext {
fragment: DocumentFragment;
root: ShadowRoot | HTMLElement;
}
declare const Component: (options: ComponentOptions) => & {
observedAttributes?: string[];
}>(Base: TBase, _context: ClassDecoratorContext) => TBase;
type ListenHost = HTMLElement & {
renderRoot?: ShadowRoot | DocumentFragment | HTMLElement;
};
type ListenTargetResolver = 'document' | 'window' | 'shadow' | 'root' | 'light' | EventTarget | ((host: THost) => EventTarget | null | undefined);
type Predicate = (event: TEvent, matched: TElement | null) => boolean;
interface ListenOptions {
selector?: string;
target?: ListenTargetResolver;
prevent?: boolean;
stop?: boolean;
stopImmediate?: boolean;
once?: boolean;
passive?: boolean;
capture?: boolean;
when?: Predicate;
}
declare function Listen(eventName: keyof HTMLElementEventMap | string, selectorOrOptions?: string | ListenOptions): (originalMethod: (this: THost, event: TEvent, matched?: TElement | null) => unknown, context: ClassMethodDecoratorContext) => void;
type OutsideClickHost = HTMLElement & {
connectedCallback?: (...args: unknown[]) => unknown;
disconnectedCallback?: (...args: unknown[]) => unknown;
afterRender?: (...args: unknown[]) => unknown;
};
interface OutsideClickOptions {
resolve?: (host: THost) => OutsideClickResolution | null | undefined;
owner?: (host: THost) => HTMLElement | null | undefined;
content?: (host: THost) => HTMLElement | null | undefined;
triggers?: (host: THost) => Array;
disabled?: (host: THost) => boolean;
}
declare function OutsideClick(options?: OutsideClickOptions): (originalMethod: (this: THost, event: TEvent) => unknown, context: ClassMethodDecoratorContext) => void;
type RenderHost$1 = HTMLElement & {
requestRender?(): void;
render?(): void;
connectedCallback?(): void;
disconnectedCallback?(...args: unknown[]): void;
};
type PropTypeDescriptor = BooleanConstructor | NumberConstructor | StringConstructor | ObjectConstructor | ArrayConstructor | 'boolean' | 'number' | 'string' | 'json';
type Formatter = (this: THost, value: TValue) => string | null | undefined;
type Parser = (this: THost, value: string | null) => TValue;
interface PropOptions {
attribute?: string;
reflect?: boolean;
type?: PropTypeDescriptor;
parse?: Parser;
format?: Formatter;
defaultValue?: TValue | ((this: THost) => TValue);
compare?: (previous: TValue, next: TValue) => boolean;
onChange?: (this: THost, next: TValue, previous: TValue) => void;
onAttributeChange?: (this: THost, next: TValue, previous: TValue) => void;
}
declare function Prop(options?: PropOptions): (accessor: ClassAccessorDecoratorTarget, context: ClassAccessorDecoratorContext) => ClassAccessorDecoratorResult;
type QueryRoot = 'shadow' | 'light' | 'document';
type QueryHost = HTMLElement & {
renderRoot?: ShadowRoot | DocumentFragment | HTMLElement;
};
type QueryFallback = TResult | ((host: THost) => TResult);
interface BaseQueryOptions {
from?: QueryRoot;
fallback?: QueryFallback;
}
interface QueryAllOptions extends BaseQueryOptions {
all: true;
closest?: false;
}
interface QueryClosestOptions extends BaseQueryOptions {
closest: true;
all?: false;
}
interface QuerySingleOptions extends BaseQueryOptions {
all?: false;
closest?: false;
}
type QueryOptions = QueryAllOptions | QueryClosestOptions | QuerySingleOptions;
type QueryReturnType> = TOptions extends QueryAllOptions ? TElement[] : TOptions extends QueryClosestOptions ? Element | null : TElement | null;
type QueryDecorator> = (target: ClassAccessorDecoratorTarget> | undefined, context: ClassFieldDecoratorContext> | ClassAccessorDecoratorContext>) => ClassAccessorDecoratorResult> | undefined;
declare function Query>(selector: string, userOptions: TOptions): QueryDecorator;
declare function Query(selector: string): QueryDecorator>;
type RenderHost = HTMLElement & {
requestRender?(): void;
render?(): void;
};
interface WatchOptions {
compare?: (previous: TValue, next: TValue) => boolean;
onChange?: (this: THost, next: TValue, previous: TValue) => void;
transform?: (this: THost, initial: TValue) => TValue;
}
declare function Watch(options?: WatchOptions): (accessor: ClassAccessorDecoratorTarget, context: ClassAccessorDecoratorContext) => ClassAccessorDecoratorResult;
export { Component, Listen, OutsideClick, Prop, Query, type RenderContext, Watch };