ember-container-query
Version:
Make container queries that harness the power of Ember
53 lines • 1.9 kB
TypeScript
import type Owner from '@ember/owner';
import type { ArgsFor, NamedArgs, PositionalArgs } from 'ember-modifier';
import Modifier from 'ember-modifier';
type IndexSignatureParameter = string | number | symbol;
type Dimensions = {
aspectRatio: number;
height: number;
width: number;
};
type Metadata = {
dimension: keyof Dimensions;
max: number;
min: number;
};
type Features<T extends IndexSignatureParameter> = Record<T, Metadata>;
type QueryResults<T extends IndexSignatureParameter> = Record<T, boolean>;
interface ContainerQuerySignature<T extends IndexSignatureParameter> {
Args: {
Named: {
dataAttributePrefix?: string;
debounce?: number;
features?: Features<T>;
onQuery?: ({ dimensions, queryResults, }: {
dimensions: Dimensions;
queryResults: QueryResults<T>;
}) => void;
};
Positional: [];
};
Element: Element;
}
export default class ContainerQuery<T extends IndexSignatureParameter> extends Modifier<ContainerQuerySignature<T>> {
#private;
private _dataAttributes;
private _element?;
private _named;
dimensions: Dimensions;
queryResults: QueryResults<T>;
get dataAttributePrefix(): string;
get debounce(): number;
get features(): Features<T>;
constructor(owner: Owner, args: ArgsFor<ContainerQuerySignature<T>>);
private evaluateQueries;
private measureDimensions;
modify(element: Element, _positional: PositionalArgs<ContainerQuerySignature<T>>, named: NamedArgs<ContainerQuerySignature<T>>): void;
private queryContainer;
private registerResizeObserver;
private resetDataAttributes;
private setDataAttributes;
private onResize;
}
export type { Dimensions, Features, IndexSignatureParameter, Metadata, QueryResults, };
//# sourceMappingURL=container-query.d.ts.map