ember-container-query 4.0.0-alpha.5 → 4.0.0-alpha.6

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.
@@ -1,6 +1,6 @@
1
1
  import Component from '@glimmer/component';
2
2
  import { Dimensions, Features, IndexSignatureParameter, QueryResults } from "../modifiers/container-query.js";
3
- interface ContainerQueryComponentSignature<T extends IndexSignatureParameter> {
3
+ interface ContainerQuerySignature<T extends IndexSignatureParameter> {
4
4
  Args: {
5
5
  dataAttributePrefix?: string;
6
6
  debounce?: number;
@@ -17,7 +17,7 @@ interface ContainerQueryComponentSignature<T extends IndexSignatureParameter> {
17
17
  };
18
18
  Element: HTMLElement;
19
19
  }
20
- declare class ContainerQueryComponent<T extends IndexSignatureParameter> extends Component<ContainerQueryComponentSignature<T>> {
20
+ declare class ContainerQueryComponent<T extends IndexSignatureParameter> extends Component<ContainerQuerySignature<T>> {
21
21
  dimensions?: Dimensions;
22
22
  queryResults?: QueryResults<T>;
23
23
  tagName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"components/container-query.d.ts","sourceRoot":"","sources":["../src/components/container-query.ts"],"names":[],"mappings":"AAGA,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAG3C,OAAO,+DAKN,wCAAqC;AAEtC,UAAU,gCAAgC,CAAC,CAAC,SAAS,uBAAuB;IAC1E,IAAI,EAAE;QACJ,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;QACvB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,MAAM,EAAE;QACN,OAAO,EAAE;YACP;gBACE,UAAU,CAAC,EAAE,UAAU,CAAC;gBACxB,QAAQ,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;aAC5B;SACF,CAAC;KACH,CAAC;IACF,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,cAAqB,uBAAuB,CAC1C,CAAC,SAAS,uBAAuB,CACjC,SAAQ,SAAS,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC;IAC7C,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,YAAY,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAGxC,OAAO,SAA8B;IAE7B,WAAW,CAAC,EAClB,UAAU,EACV,YAAY,GACb,EAAE;QACD,UAAU,EAAE,UAAU,CAAC;QACvB,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;KAC/B,GAAG,IAAI;CAIT"}
1
+ {"version":3,"file":"components/container-query.d.ts","sourceRoot":"","sources":["../src/components/container-query.ts"],"names":[],"mappings":"AAGA,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAG3C,OAAO,+DAKN,wCAAqC;AAEtC,UAAU,uBAAuB,CAAC,CAAC,SAAS,uBAAuB;IACjE,IAAI,EAAE;QACJ,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;QACvB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,MAAM,EAAE;QACN,OAAO,EAAE;YACP;gBACE,UAAU,CAAC,EAAE,UAAU,CAAC;gBACxB,QAAQ,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;aAC5B;SACF,CAAC;KACH,CAAC;IACF,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,cAAqB,uBAAuB,CAC1C,CAAC,SAAS,uBAAuB,CACjC,SAAQ,SAAS,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;IACpC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,YAAY,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAGxC,OAAO,SAA8B;IAE7B,WAAW,CAAC,EAClB,UAAU,EACV,YAAY,GACb,EAAE;QACD,UAAU,EAAE,UAAU,CAAC;QACvB,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;KAC/B,GAAG,IAAI;CAIT"}
@@ -1 +1 @@
1
- {"version":3,"file":"container-query.js","sources":["../../src/components/container-query.hbs.js","../../src/components/container-query.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{! @glint-ignore: ember-element-helper needs to provide Glint signature }}\\n{{#let (element this.tagName) as |Tag|}}\\n <Tag\\n class=\\\"container-query\\\"\\n {{container-query\\n dataAttributePrefix=@dataAttributePrefix\\n debounce=@debounce\\n features=@features\\n onQuery=this.updateState\\n }}\\n ...attributes\\n >\\n {{yield\\n (hash\\n dimensions=this.dimensions\\n features=this.queryResults\\n )\\n }}\\n </Tag>\\n{{/let}}\")","import './container-query.css';\n\nimport { action } from '@ember/object';\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\n\nimport type {\n Dimensions,\n Features,\n IndexSignatureParameter,\n QueryResults,\n} from '../modifiers/container-query';\n\ninterface ContainerQueryComponentSignature<T extends IndexSignatureParameter> {\n Args: {\n dataAttributePrefix?: string;\n debounce?: number;\n features?: Features<T>;\n tagName?: string;\n };\n Blocks: {\n default: [\n {\n dimensions?: Dimensions;\n features?: QueryResults<T>;\n }\n ];\n };\n Element: HTMLElement;\n}\n\nexport default class ContainerQueryComponent<\n T extends IndexSignatureParameter\n> extends Component<ContainerQueryComponentSignature<T>> {\n @tracked dimensions?: Dimensions;\n @tracked queryResults?: QueryResults<T>;\n\n // The dynamic tag is restricted to be immutable\n tagName = this.args.tagName ?? 'div';\n\n @action updateState({\n dimensions,\n queryResults,\n }: {\n dimensions: Dimensions;\n queryResults: QueryResults<T>;\n }): void {\n this.dimensions = dimensions;\n this.queryResults = queryResults;\n }\n}\n"],"names":["precompileTemplate","ContainerQueryComponent","_class","Component","constructor","args","_initializerDefineProperty","_descriptor","_descriptor2","_defineProperty","tagName","updateState","dimensions","queryResults","_applyDecoratedDescriptor","prototype","tracked","configurable","enumerable","writable","initializer","action","Object","getOwnPropertyDescriptor","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;;AACA,eAAeA,kBAAkB,CAAC,geAAge,CAAC;;;AC8B9eC,IAAAA,uBAAuB,IAAAC,MAAA,GAA7B,MAAMD,uBAAuB,SAElCE,SAAS,CAAsC;AAAAC,EAAAA,WAAAA,CAAA,GAAAC,IAAA,EAAA;AAAA,IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA,CAAA;AAAAC,IAAAA,0BAAA,qBAAAC,WAAA,EAAA,IAAA,CAAA,CAAA;AAAAD,IAAAA,0BAAA,uBAAAE,YAAA,EAAA,IAAA,CAAA,CAAA;AAIvD;AAAAC,IAAAA,eAAA,kBACU,IAAI,CAACJ,IAAI,CAACK,OAAO,IAAI,KAAK,CAAA,CAAA;AAAA,GAAA;AAE5BC,EAAAA,WAAWA,CAAC;IAClBC,UAAU;AACVC,IAAAA,YAAAA;AAIF,GAAC,EAAQ;IACP,IAAI,CAACD,UAAU,GAAGA,UAAU,CAAA;IAC5B,IAAI,CAACC,YAAY,GAAGA,YAAY,CAAA;AAClC,GAAA;AACF,CAAC,GAAAN,WAAA,GAAAO,yBAAA,CAAAZ,MAAA,CAAAa,SAAA,EAAA,YAAA,EAAA,CAhBEC,OAAO,CAAA,EAAA;EAAAC,YAAA,EAAA,IAAA;EAAAC,UAAA,EAAA,IAAA;EAAAC,QAAA,EAAA,IAAA;EAAAC,WAAA,EAAA,IAAA;AAAA,CAAAZ,CAAAA,EAAAA,YAAA,GAAAM,yBAAA,CAAAZ,MAAA,CAAAa,SAAA,mBACPC,OAAO,CAAA,EAAA;EAAAC,YAAA,EAAA,IAAA;EAAAC,UAAA,EAAA,IAAA;EAAAC,QAAA,EAAA,IAAA;EAAAC,WAAA,EAAA,IAAA;AAAA,CAAAN,CAAAA,EAAAA,yBAAA,CAAAZ,MAAA,CAAAa,SAAA,EAKPM,aAAAA,EAAAA,CAAAA,MAAM,GAAAC,MAAA,CAAAC,wBAAA,CAAArB,MAAA,CAAAa,SAAA,EAAA,aAAA,CAAA,EAAAb,MAAA,CAAAa,SAAA,IAAAb,MAAA,EAAA;AATmCsB,oBAAA,CAAAC,QAAA,EAAAxB,uBAAA,CAAA;;;;"}
1
+ {"version":3,"file":"container-query.js","sources":["../../src/components/container-query.hbs.js","../../src/components/container-query.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{! @glint-ignore: ember-element-helper needs to provide Glint signature }}\\n{{#let (element this.tagName) as |Tag|}}\\n <Tag\\n class=\\\"container-query\\\"\\n {{container-query\\n dataAttributePrefix=@dataAttributePrefix\\n debounce=@debounce\\n features=@features\\n onQuery=this.updateState\\n }}\\n ...attributes\\n >\\n {{yield\\n (hash\\n dimensions=this.dimensions\\n features=this.queryResults\\n )\\n }}\\n </Tag>\\n{{/let}}\")","import './container-query.css';\n\nimport { action } from '@ember/object';\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\n\nimport type {\n Dimensions,\n Features,\n IndexSignatureParameter,\n QueryResults,\n} from '../modifiers/container-query';\n\ninterface ContainerQuerySignature<T extends IndexSignatureParameter> {\n Args: {\n dataAttributePrefix?: string;\n debounce?: number;\n features?: Features<T>;\n tagName?: string;\n };\n Blocks: {\n default: [\n {\n dimensions?: Dimensions;\n features?: QueryResults<T>;\n }\n ];\n };\n Element: HTMLElement;\n}\n\nexport default class ContainerQueryComponent<\n T extends IndexSignatureParameter\n> extends Component<ContainerQuerySignature<T>> {\n @tracked dimensions?: Dimensions;\n @tracked queryResults?: QueryResults<T>;\n\n // The dynamic tag is restricted to be immutable\n tagName = this.args.tagName ?? 'div';\n\n @action updateState({\n dimensions,\n queryResults,\n }: {\n dimensions: Dimensions;\n queryResults: QueryResults<T>;\n }): void {\n this.dimensions = dimensions;\n this.queryResults = queryResults;\n }\n}\n"],"names":["precompileTemplate","ContainerQueryComponent","_class","Component","constructor","args","_initializerDefineProperty","_descriptor","_descriptor2","_defineProperty","tagName","updateState","dimensions","queryResults","_applyDecoratedDescriptor","prototype","tracked","configurable","enumerable","writable","initializer","action","Object","getOwnPropertyDescriptor","setComponentTemplate","TEMPLATE"],"mappings":";;;;;;;;AACA,eAAeA,kBAAkB,CAAC,geAAge,CAAC;;;AC8B9eC,IAAAA,uBAAuB,IAAAC,MAAA,GAA7B,MAAMD,uBAAuB,SAElCE,SAAS,CAA6B;AAAAC,EAAAA,WAAAA,CAAA,GAAAC,IAAA,EAAA;AAAA,IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA,CAAA;AAAAC,IAAAA,0BAAA,qBAAAC,WAAA,EAAA,IAAA,CAAA,CAAA;AAAAD,IAAAA,0BAAA,uBAAAE,YAAA,EAAA,IAAA,CAAA,CAAA;AAI9C;AAAAC,IAAAA,eAAA,kBACU,IAAI,CAACJ,IAAI,CAACK,OAAO,IAAI,KAAK,CAAA,CAAA;AAAA,GAAA;AAE5BC,EAAAA,WAAWA,CAAC;IAClBC,UAAU;AACVC,IAAAA,YAAAA;AAIF,GAAC,EAAQ;IACP,IAAI,CAACD,UAAU,GAAGA,UAAU,CAAA;IAC5B,IAAI,CAACC,YAAY,GAAGA,YAAY,CAAA;AAClC,GAAA;AACF,CAAC,GAAAN,WAAA,GAAAO,yBAAA,CAAAZ,MAAA,CAAAa,SAAA,EAAA,YAAA,EAAA,CAhBEC,OAAO,CAAA,EAAA;EAAAC,YAAA,EAAA,IAAA;EAAAC,UAAA,EAAA,IAAA;EAAAC,QAAA,EAAA,IAAA;EAAAC,WAAA,EAAA,IAAA;AAAA,CAAAZ,CAAAA,EAAAA,YAAA,GAAAM,yBAAA,CAAAZ,MAAA,CAAAa,SAAA,mBACPC,OAAO,CAAA,EAAA;EAAAC,YAAA,EAAA,IAAA;EAAAC,UAAA,EAAA,IAAA;EAAAC,QAAA,EAAA,IAAA;EAAAC,WAAA,EAAA,IAAA;AAAA,CAAAN,CAAAA,EAAAA,yBAAA,CAAAZ,MAAA,CAAAa,SAAA,EAKPM,aAAAA,EAAAA,CAAAA,MAAM,GAAAC,MAAA,CAAAC,wBAAA,CAAArB,MAAA,CAAAa,SAAA,EAAA,aAAA,CAAA,EAAAb,MAAA,CAAAa,SAAA,IAAAb,MAAA,EAAA;AATmCsB,oBAAA,CAAAC,QAAA,EAAAxB,uBAAA,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"container-query.js","sources":["../../src/modifiers/container-query.ts"],"sourcesContent":["import { registerDestructor } from '@ember/destroyable';\nimport { action } from '@ember/object';\nimport type Owner from '@ember/owner';\nimport { debounce as _debounce } from '@ember/runloop';\nimport { inject as service } from '@ember/service';\nimport Modifier, { ArgsFor, NamedArgs, PositionalArgs } from 'ember-modifier';\n\ntype IndexSignatureParameter = string | number | symbol;\ntype ObjectEntry<T> = [keyof T, T[keyof T]];\ntype ObjectEntries<T> = Array<ObjectEntry<T>>;\n\ntype Dimensions = {\n aspectRatio: number;\n height: number;\n width: number;\n};\n\ntype Metadata = {\n dimension: keyof Dimensions;\n max: number;\n min: number;\n};\n\ntype Features<T extends IndexSignatureParameter> = Record<T, Metadata>;\n\ntype QueryResults<T extends IndexSignatureParameter> = Record<T, boolean>;\n\ninterface ContainerQueryModifierSignature<T extends IndexSignatureParameter> {\n Args: {\n Named: {\n dataAttributePrefix?: string;\n debounce?: number;\n features?: Features<T>;\n onQuery?: ({\n dimensions,\n queryResults,\n }: {\n dimensions: Dimensions;\n queryResults: QueryResults<T>;\n }) => void;\n };\n Positional: [];\n };\n Element: Element;\n}\n\nexport default class ContainerQueryModifier<\n T extends IndexSignatureParameter\n> extends Modifier<ContainerQueryModifierSignature<T>> {\n @service private declare readonly resizeObserver;\n\n dimensions!: Dimensions;\n queryResults!: QueryResults<T>;\n\n private _dataAttributes: Array<string> = [];\n private _element?: Element;\n private _named!: NamedArgs<ContainerQueryModifierSignature<T>>;\n\n get dataAttributePrefix(): string {\n return this._named.dataAttributePrefix ?? 'container-query';\n }\n\n get debounce(): number {\n return this._named.debounce ?? 0;\n }\n\n get features(): Features<T> {\n return this._named.features ?? ({} as Features<T>);\n }\n\n constructor(owner: Owner, args: ArgsFor<ContainerQueryModifierSignature<T>>) {\n super(owner, args);\n\n registerDestructor(this, () => {\n this.resizeObserver.unobserve(this._element, this.onResize);\n });\n }\n\n modify(\n element: Element,\n _positional: PositionalArgs<ContainerQueryModifierSignature<T>>,\n named: NamedArgs<ContainerQueryModifierSignature<T>>\n ): void {\n this._named = named;\n\n this.registerResizeObserver(element);\n this.queryContainer(element);\n }\n\n @action private onResize(resizeObserverEntry: ResizeObserverEntry): void {\n const element = resizeObserverEntry.target;\n\n if (this.debounce > 0) {\n _debounce(this, this.queryContainer, element, this.debounce);\n return;\n }\n\n this.queryContainer(element);\n }\n\n private registerResizeObserver(element: Element): void {\n this.resizeObserver.unobserve(this._element, this.onResize);\n\n this._element = element;\n this.resizeObserver.observe(this._element, this.onResize);\n }\n\n private queryContainer(element: Element): void {\n this.measureDimensions(element);\n this.evaluateQueries();\n this.resetDataAttributes(element);\n this.setDataAttributes(element);\n\n this._named.onQuery?.({\n dimensions: this.dimensions,\n queryResults: this.queryResults,\n });\n }\n\n private measureDimensions(element: Element): void {\n const height = element.clientHeight;\n const width = element.clientWidth;\n\n this.dimensions = {\n aspectRatio: width / height,\n height,\n width,\n };\n }\n\n private evaluateQueries(): void {\n const queryResults = {} as QueryResults<T>;\n\n for (const [featureName, metadata] of Object.entries(\n this.features\n ) as ObjectEntries<Features<T>>) {\n const { dimension, min, max } = metadata;\n const value = this.dimensions[dimension];\n\n queryResults[featureName] = min <= value && value < max;\n }\n\n this.queryResults = queryResults;\n }\n\n private resetDataAttributes(element: Element): void {\n this._dataAttributes.forEach((dataAttribute) => {\n element.removeAttribute(dataAttribute);\n });\n\n this._dataAttributes = [];\n }\n\n private setDataAttributes(element: Element): void {\n const prefix = this.dataAttributePrefix;\n\n for (const [featureName, meetsFeature] of Object.entries(\n this.queryResults\n ) as ObjectEntries<QueryResults<T>>) {\n if (!meetsFeature) {\n continue;\n }\n\n const dataAttribute = prefix\n ? `data-${prefix}-${String(featureName)}`\n : `data-${String(featureName)}`;\n\n element.setAttribute(dataAttribute, '');\n\n this._dataAttributes.push(dataAttribute);\n }\n }\n}\n\nexport {\n Dimensions,\n Features,\n IndexSignatureParameter,\n Metadata,\n QueryResults,\n};\n"],"names":["ContainerQueryModifier","_class","Modifier","dataAttributePrefix","_named","debounce","features","constructor","owner","args","_initializerDefineProperty","_descriptor","_defineProperty","registerDestructor","resizeObserver","unobserve","_element","onResize","modify","element","_positional","named","registerResizeObserver","queryContainer","resizeObserverEntry","target","_debounce","observe","measureDimensions","evaluateQueries","resetDataAttributes","setDataAttributes","onQuery","dimensions","queryResults","height","clientHeight","width","clientWidth","aspectRatio","featureName","metadata","Object","entries","dimension","min","max","value","_dataAttributes","forEach","dataAttribute","removeAttribute","prefix","meetsFeature","String","setAttribute","push","_applyDecoratedDescriptor","prototype","service","configurable","enumerable","writable","initializer","action","getOwnPropertyDescriptor"],"mappings":"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"}
1
+ {"version":3,"file":"container-query.js","sources":["../../src/modifiers/container-query.ts"],"sourcesContent":["import { registerDestructor } from '@ember/destroyable';\nimport { action } from '@ember/object';\nimport type Owner from '@ember/owner';\nimport { debounce as _debounce } from '@ember/runloop';\nimport { inject as service } from '@ember/service';\nimport Modifier, { ArgsFor, NamedArgs, PositionalArgs } from 'ember-modifier';\n\ntype IndexSignatureParameter = string | number | symbol;\ntype ObjectEntry<T> = [keyof T, T[keyof T]];\ntype ObjectEntries<T> = ObjectEntry<T>[];\n\ntype Dimensions = {\n aspectRatio: number;\n height: number;\n width: number;\n};\n\ntype Metadata = {\n dimension: keyof Dimensions;\n max: number;\n min: number;\n};\n\ntype Features<T extends IndexSignatureParameter> = Record<T, Metadata>;\n\ntype QueryResults<T extends IndexSignatureParameter> = Record<T, boolean>;\n\ninterface ContainerQueryModifierSignature<T extends IndexSignatureParameter> {\n Args: {\n Named: {\n dataAttributePrefix?: string;\n debounce?: number;\n features?: Features<T>;\n onQuery?: ({\n dimensions,\n queryResults,\n }: {\n dimensions: Dimensions;\n queryResults: QueryResults<T>;\n }) => void;\n };\n Positional: [];\n };\n Element: Element;\n}\n\nexport default class ContainerQueryModifier<\n T extends IndexSignatureParameter\n> extends Modifier<ContainerQueryModifierSignature<T>> {\n @service private declare readonly resizeObserver;\n\n dimensions!: Dimensions;\n queryResults!: QueryResults<T>;\n\n private _dataAttributes: string[] = [];\n private _element?: Element;\n private _named!: NamedArgs<ContainerQueryModifierSignature<T>>;\n\n get dataAttributePrefix(): string {\n return this._named.dataAttributePrefix ?? 'container-query';\n }\n\n get debounce(): number {\n return this._named.debounce ?? 0;\n }\n\n get features(): Features<T> {\n return this._named.features ?? ({} as Features<T>);\n }\n\n constructor(owner: Owner, args: ArgsFor<ContainerQueryModifierSignature<T>>) {\n super(owner, args);\n\n registerDestructor(this, () => {\n this.resizeObserver.unobserve(this._element, this.onResize);\n });\n }\n\n modify(\n element: Element,\n _positional: PositionalArgs<ContainerQueryModifierSignature<T>>,\n named: NamedArgs<ContainerQueryModifierSignature<T>>\n ): void {\n this._named = named;\n\n this.registerResizeObserver(element);\n this.queryContainer(element);\n }\n\n @action private onResize(resizeObserverEntry: ResizeObserverEntry): void {\n const element = resizeObserverEntry.target;\n\n if (this.debounce > 0) {\n _debounce(this, this.queryContainer, element, this.debounce);\n return;\n }\n\n this.queryContainer(element);\n }\n\n private registerResizeObserver(element: Element): void {\n this.resizeObserver.unobserve(this._element, this.onResize);\n\n this._element = element;\n this.resizeObserver.observe(this._element, this.onResize);\n }\n\n private queryContainer(element: Element): void {\n this.measureDimensions(element);\n this.evaluateQueries();\n this.resetDataAttributes(element);\n this.setDataAttributes(element);\n\n this._named.onQuery?.({\n dimensions: this.dimensions,\n queryResults: this.queryResults,\n });\n }\n\n private measureDimensions(element: Element): void {\n const height = element.clientHeight;\n const width = element.clientWidth;\n\n this.dimensions = {\n aspectRatio: width / height,\n height,\n width,\n };\n }\n\n private evaluateQueries(): void {\n const queryResults = {} as QueryResults<T>;\n\n for (const [featureName, metadata] of Object.entries(\n this.features\n ) as ObjectEntries<Features<T>>) {\n const { dimension, min, max } = metadata;\n const value = this.dimensions[dimension];\n\n queryResults[featureName] = min <= value && value < max;\n }\n\n this.queryResults = queryResults;\n }\n\n private resetDataAttributes(element: Element): void {\n this._dataAttributes.forEach((dataAttribute) => {\n element.removeAttribute(dataAttribute);\n });\n\n this._dataAttributes = [];\n }\n\n private setDataAttributes(element: Element): void {\n const prefix = this.dataAttributePrefix;\n\n for (const [featureName, meetsFeature] of Object.entries(\n this.queryResults\n ) as ObjectEntries<QueryResults<T>>) {\n if (!meetsFeature) {\n continue;\n }\n\n const dataAttribute = prefix\n ? `data-${prefix}-${String(featureName)}`\n : `data-${String(featureName)}`;\n\n element.setAttribute(dataAttribute, '');\n\n this._dataAttributes.push(dataAttribute);\n }\n }\n}\n\nexport {\n Dimensions,\n Features,\n IndexSignatureParameter,\n Metadata,\n QueryResults,\n};\n"],"names":["ContainerQueryModifier","_class","Modifier","dataAttributePrefix","_named","debounce","features","constructor","owner","args","_initializerDefineProperty","_descriptor","_defineProperty","registerDestructor","resizeObserver","unobserve","_element","onResize","modify","element","_positional","named","registerResizeObserver","queryContainer","resizeObserverEntry","target","_debounce","observe","measureDimensions","evaluateQueries","resetDataAttributes","setDataAttributes","onQuery","dimensions","queryResults","height","clientHeight","width","clientWidth","aspectRatio","featureName","metadata","Object","entries","dimension","min","max","value","_dataAttributes","forEach","dataAttribute","removeAttribute","prefix","meetsFeature","String","setAttribute","push","_applyDecoratedDescriptor","prototype","service","configurable","enumerable","writable","initializer","action","getOwnPropertyDescriptor"],"mappings":";;;;;;;;AA8CqBA,IAAAA,sBAAsB,IAAAC,MAAA,GAA5B,MAAMD,sBAAsB,SAEjCE,QAAQ,CAAqC;EAUrD,IAAIC,mBAAmBA,GAAW;AAChC,IAAA,OAAO,IAAI,CAACC,MAAM,CAACD,mBAAmB,IAAI,iBAAiB,CAAA;AAC7D,GAAA;EAEA,IAAIE,QAAQA,GAAW;AACrB,IAAA,OAAO,IAAI,CAACD,MAAM,CAACC,QAAQ,IAAI,CAAC,CAAA;AAClC,GAAA;EAEA,IAAIC,QAAQA,GAAgB;AAC1B,IAAA,OAAO,IAAI,CAACF,MAAM,CAACE,QAAQ,IAAK,EAAkB,CAAA;AACpD,GAAA;AAEAC,EAAAA,WAAWA,CAACC,KAAY,EAAEC,IAAiD,EAAE;AAC3E,IAAA,KAAK,CAACD,KAAK,EAAEC,IAAI,CAAC,CAAA;AAACC,IAAAA,0BAAA,yBAAAC,WAAA,EAAA,IAAA,CAAA,CAAA;IAAAC,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IAAAA,eAAA,CAAA,IAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAAAA,IAAAA,eAAA,0BAjBe,EAAE,CAAA,CAAA;IAAAA,eAAA,CAAA,IAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IAAAA,eAAA,CAAA,IAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IAmBpCC,kBAAkB,CAAC,IAAI,EAAE,MAAM;AAC7B,MAAA,IAAI,CAACC,cAAc,CAACC,SAAS,CAAC,IAAI,CAACC,QAAQ,EAAE,IAAI,CAACC,QAAQ,CAAC,CAAA;AAC7D,KAAC,CAAC,CAAA;AACJ,GAAA;AAEAC,EAAAA,MAAMA,CACJC,OAAgB,EAChBC,WAA+D,EAC/DC,KAAoD,EAC9C;IACN,IAAI,CAACjB,MAAM,GAAGiB,KAAK,CAAA;AAEnB,IAAA,IAAI,CAACC,sBAAsB,CAACH,OAAO,CAAC,CAAA;AACpC,IAAA,IAAI,CAACI,cAAc,CAACJ,OAAO,CAAC,CAAA;AAC9B,GAAA;EAEgBF,QAAQA,CAACO,mBAAwC,EAAQ;AACvE,IAAA,MAAML,OAAO,GAAGK,mBAAmB,CAACC,MAAM,CAAA;AAE1C,IAAA,IAAI,IAAI,CAACpB,QAAQ,GAAG,CAAC,EAAE;AACrBqB,MAAAA,QAAS,CAAC,IAAI,EAAE,IAAI,CAACH,cAAc,EAAEJ,OAAO,EAAE,IAAI,CAACd,QAAQ,CAAC,CAAA;AAC5D,MAAA,OAAA;AACF,KAAA;AAEA,IAAA,IAAI,CAACkB,cAAc,CAACJ,OAAO,CAAC,CAAA;AAC9B,GAAA;EAEQG,sBAAsBA,CAACH,OAAgB,EAAQ;AACrD,IAAA,IAAI,CAACL,cAAc,CAACC,SAAS,CAAC,IAAI,CAACC,QAAQ,EAAE,IAAI,CAACC,QAAQ,CAAC,CAAA;IAE3D,IAAI,CAACD,QAAQ,GAAGG,OAAO,CAAA;AACvB,IAAA,IAAI,CAACL,cAAc,CAACa,OAAO,CAAC,IAAI,CAACX,QAAQ,EAAE,IAAI,CAACC,QAAQ,CAAC,CAAA;AAC3D,GAAA;EAEQM,cAAcA,CAACJ,OAAgB,EAAQ;AAC7C,IAAA,IAAI,CAACS,iBAAiB,CAACT,OAAO,CAAC,CAAA;IAC/B,IAAI,CAACU,eAAe,EAAE,CAAA;AACtB,IAAA,IAAI,CAACC,mBAAmB,CAACX,OAAO,CAAC,CAAA;AACjC,IAAA,IAAI,CAACY,iBAAiB,CAACZ,OAAO,CAAC,CAAA;AAE/B,IAAA,IAAI,CAACf,MAAM,CAAC4B,OAAO,GAAG;MACpBC,UAAU,EAAE,IAAI,CAACA,UAAU;MAC3BC,YAAY,EAAE,IAAI,CAACA,YAAAA;AACrB,KAAC,CAAC,CAAA;AACJ,GAAA;EAEQN,iBAAiBA,CAACT,OAAgB,EAAQ;AAChD,IAAA,MAAMgB,MAAM,GAAGhB,OAAO,CAACiB,YAAY,CAAA;AACnC,IAAA,MAAMC,KAAK,GAAGlB,OAAO,CAACmB,WAAW,CAAA;IAEjC,IAAI,CAACL,UAAU,GAAG;MAChBM,WAAW,EAAEF,KAAK,GAAGF,MAAM;MAC3BA,MAAM;AACNE,MAAAA,KAAAA;KACD,CAAA;AACH,GAAA;AAEQR,EAAAA,eAAeA,GAAS;IAC9B,MAAMK,YAAY,GAAG,EAAqB,CAAA;AAE1C,IAAA,KAAK,MAAM,CAACM,WAAW,EAAEC,QAAQ,CAAC,IAAIC,MAAM,CAACC,OAAO,CAClD,IAAI,CAACrC,QAAQ,CACd,EAAgC;MAC/B,MAAM;QAAEsC,SAAS;QAAEC,GAAG;AAAEC,QAAAA,GAAAA;AAAI,OAAC,GAAGL,QAAQ,CAAA;AACxC,MAAA,MAAMM,KAAK,GAAG,IAAI,CAACd,UAAU,CAACW,SAAS,CAAC,CAAA;MAExCV,YAAY,CAACM,WAAW,CAAC,GAAGK,GAAG,IAAIE,KAAK,IAAIA,KAAK,GAAGD,GAAG,CAAA;AACzD,KAAA;IAEA,IAAI,CAACZ,YAAY,GAAGA,YAAY,CAAA;AAClC,GAAA;EAEQJ,mBAAmBA,CAACX,OAAgB,EAAQ;AAClD,IAAA,IAAI,CAAC6B,eAAe,CAACC,OAAO,CAAEC,aAAa,IAAK;AAC9C/B,MAAAA,OAAO,CAACgC,eAAe,CAACD,aAAa,CAAC,CAAA;AACxC,KAAC,CAAC,CAAA;IAEF,IAAI,CAACF,eAAe,GAAG,EAAE,CAAA;AAC3B,GAAA;EAEQjB,iBAAiBA,CAACZ,OAAgB,EAAQ;AAChD,IAAA,MAAMiC,MAAM,GAAG,IAAI,CAACjD,mBAAmB,CAAA;AAEvC,IAAA,KAAK,MAAM,CAACqC,WAAW,EAAEa,YAAY,CAAC,IAAIX,MAAM,CAACC,OAAO,CACtD,IAAI,CAACT,YAAY,CAClB,EAAoC;MACnC,IAAI,CAACmB,YAAY,EAAE;AACjB,QAAA,SAAA;AACF,OAAA;AAEA,MAAA,MAAMH,aAAa,GAAGE,MAAM,GACvB,CAAOA,KAAAA,EAAAA,MAAO,IAAGE,MAAM,CAACd,WAAW,CAAE,EAAC,GACtC,CAAA,KAAA,EAAOc,MAAM,CAACd,WAAW,CAAE,CAAC,CAAA,CAAA;AAEjCrB,MAAAA,OAAO,CAACoC,YAAY,CAACL,aAAa,EAAE,EAAE,CAAC,CAAA;AAEvC,MAAA,IAAI,CAACF,eAAe,CAACQ,IAAI,CAACN,aAAa,CAAC,CAAA;AAC1C,KAAA;AACF,GAAA;AACF,CAAC,GAAAvC,WAAA,GAAA8C,yBAAA,CAAAxD,MAAA,CAAAyD,SAAA,EAAA,gBAAA,EAAA,CA3HEC,MAAO,CAAA,EAAA;EAAAC,YAAA,EAAA,IAAA;EAAAC,UAAA,EAAA,IAAA;EAAAC,QAAA,EAAA,IAAA;EAAAC,WAAA,EAAA,IAAA;AAAA,CAAAN,CAAAA,EAAAA,yBAAA,CAAAxD,MAAA,CAAAyD,SAAA,EAwCPM,UAAAA,EAAAA,CAAAA,MAAM,GAAAtB,MAAA,CAAAuB,wBAAA,CAAAhE,MAAA,CAAAyD,SAAA,EAAA,UAAA,CAAA,EAAAzD,MAAA,CAAAyD,SAAA,IAAAzD,MAAA;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ember-container-query",
3
- "version": "4.0.0-alpha.5",
3
+ "version": "4.0.0-alpha.6",
4
4
  "description": "Container queries using Ember modifiers",
5
5
  "keywords": [
6
6
  "container-queries",
@@ -62,32 +62,33 @@
62
62
  "ember-resize-observer-service": "^1.1.0"
63
63
  },
64
64
  "devDependencies": {
65
- "@babel/core": "^7.21.0",
65
+ "@babel/core": "^7.21.4",
66
66
  "@babel/plugin-proposal-class-properties": "^7.18.6",
67
67
  "@babel/plugin-proposal-decorators": "^7.21.0",
68
- "@babel/preset-typescript": "^7.21.0",
68
+ "@babel/preset-typescript": "^7.21.4",
69
69
  "@embroider/addon-dev": "^3.0.0",
70
- "@gavant/glint-template-types": "^0.3.2",
71
- "@glint/core": "^v1.0.0-beta.3",
72
- "@glint/environment-ember-loose": "^v1.0.0-beta.3",
73
- "@glint/template": "^v1.0.0-beta.3",
70
+ "@gavant/glint-template-types": "^0.3.3",
71
+ "@glint/core": "^v1.0.0-beta.4",
72
+ "@glint/environment-ember-loose": "^v1.0.0-beta.4",
73
+ "@glint/template": "^v1.0.0-beta.4",
74
74
  "@tsconfig/ember": "^2.0.0",
75
- "@typescript-eslint/eslint-plugin": "^5.54.1",
76
- "@typescript-eslint/parser": "^5.54.1",
77
- "ember-template-lint": "^5.6.0",
75
+ "@typescript-eslint/eslint-plugin": "^5.57.1",
76
+ "@typescript-eslint/parser": "^5.57.1",
77
+ "concurrently": "^8.0.1",
78
+ "ember-template-lint": "^5.7.2",
78
79
  "ember-template-lint-plugin-prettier": "^4.1.0",
79
- "eslint": "^8.35.0",
80
- "eslint-config-prettier": "^8.7.0",
81
- "eslint-plugin-ember": "^11.4.7",
82
- "eslint-plugin-n": "^15.6.1",
80
+ "eslint": "^8.38.0",
81
+ "eslint-config-prettier": "^8.8.0",
82
+ "eslint-plugin-ember": "^11.5.1",
83
+ "eslint-plugin-n": "^15.7.0",
83
84
  "eslint-plugin-prettier": "^4.2.1",
84
85
  "eslint-plugin-simple-import-sort": "^10.0.0",
85
- "eslint-plugin-typescript-sort-keys": "^2.1.0",
86
- "prettier": "^2.8.4",
87
- "rollup": "^3.18.0",
86
+ "eslint-plugin-typescript-sort-keys": "^2.3.0",
87
+ "prettier": "^2.8.7",
88
+ "rollup": "^3.20.2",
88
89
  "rollup-plugin-copy": "^3.4.0",
89
90
  "rollup-plugin-ts": "^3.2.0",
90
- "typescript": "^4.9.5"
91
+ "typescript": "^5.0.4"
91
92
  },
92
93
  "engines": {
93
94
  "node": "14.* || 16.* || >= 18"