UNPKG

ember-container-query

Version:

Make container queries that harness the power of Ember

53 lines (52 loc) 1.92 kB
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 ContainerQueryModifierSignature<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 ContainerQueryModifier<T extends IndexSignatureParameter> extends Modifier<ContainerQueryModifierSignature<T>> { private readonly resizeObserver; 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<ContainerQueryModifierSignature<T>>); private evaluateQueries; private measureDimensions; modify(element: Element, _positional: PositionalArgs<ContainerQueryModifierSignature<T>>, named: NamedArgs<ContainerQueryModifierSignature<T>>): void; private queryContainer; private registerResizeObserver; private resetDataAttributes; private setDataAttributes; private onResize; } export type { Dimensions, Features, IndexSignatureParameter, Metadata, QueryResults, };