ember-container-query 5.0.7 → 5.0.8

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 +1 @@
1
- {"version":3,"file":"container-query.d.ts","sourceRoot":"","sources":["../../src/modifiers/container-query.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,KAAK,uBAAuB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAIxD,KAAK,UAAU,GAAG;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,QAAQ,GAAG;IACd,SAAS,EAAE,MAAM,UAAU,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,KAAK,QAAQ,CAAC,CAAC,SAAS,uBAAuB,IAAI,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAEvE,KAAK,YAAY,CAAC,CAAC,SAAS,uBAAuB,IAAI,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAE1E,UAAU,+BAA+B,CAAC,CAAC,SAAS,uBAAuB;IACzE,IAAI,EAAE;QACJ,KAAK,EAAE;YACL,mBAAmB,CAAC,EAAE,MAAM,CAAC;YAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;YACvB,OAAO,CAAC,EAAE,CAAC,EACT,UAAU,EACV,YAAY,GACb,EAAE;gBACD,UAAU,EAAE,UAAU,CAAC;gBACvB,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;aAC/B,KAAK,IAAI,CAAC;SACZ,CAAC;QACF,UAAU,EAAE,EAAE,CAAC;KAChB,CAAC;IACF,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,CAAC,OAAO,OAAO,sBAAsB,CACzC,CAAC,SAAS,uBAAuB,CACjC,SAAQ,QAAQ,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC;IACpD,iBAAkC,cAAc,CAAC;IAEjD,UAAU,EAAG,UAAU,CAAC;IACxB,YAAY,EAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAE/B,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,CAAU;IAC3B,OAAO,CAAC,MAAM,CAAiD;IAE/D,IAAI,mBAAmB,IAAI,MAAM,CAEhC;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,CAE1B;gBAEW,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC;IAQ3E,MAAM,CACJ,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,cAAc,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,EAC/D,KAAK,EAAE,SAAS,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,GACnD,IAAI;IAOC,OAAO,CAAC,QAAQ;IAWxB,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,iBAAiB;CAmB1B;AAED,YAAY,EACV,UAAU,EACV,QAAQ,EACR,uBAAuB,EACvB,QAAQ,EACR,YAAY,GACb,CAAC"}
1
+ {"version":3,"file":"container-query.d.ts","sourceRoot":"","sources":["../../src/modifiers/container-query.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,KAAK,uBAAuB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAIxD,KAAK,UAAU,GAAG;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,QAAQ,GAAG;IACd,SAAS,EAAE,MAAM,UAAU,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,KAAK,QAAQ,CAAC,CAAC,SAAS,uBAAuB,IAAI,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAEvE,KAAK,YAAY,CAAC,CAAC,SAAS,uBAAuB,IAAI,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAE1E,UAAU,+BAA+B,CAAC,CAAC,SAAS,uBAAuB;IACzE,IAAI,EAAE;QACJ,KAAK,EAAE;YACL,mBAAmB,CAAC,EAAE,MAAM,CAAC;YAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;YACvB,OAAO,CAAC,EAAE,CAAC,EACT,UAAU,EACV,YAAY,GACb,EAAE;gBACD,UAAU,EAAE,UAAU,CAAC;gBACvB,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;aAC/B,KAAK,IAAI,CAAC;SACZ,CAAC;QACF,UAAU,EAAE,EAAE,CAAC;KAChB,CAAC;IACF,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,CAAC,OAAO,OAAO,sBAAsB,CACzC,CAAC,SAAS,uBAAuB,CACjC,SAAQ,QAAQ,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC;IACpD,iBAAkC,cAAc,CAAC;IAEjD,UAAU,EAAG,UAAU,CAAC;IACxB,YAAY,EAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAE/B,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,CAAU;IAC3B,OAAO,CAAC,MAAM,CAAiD;IAE/D,IAAI,mBAAmB,IAAI,MAAM,CAEhC;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,CAE1B;gBAEW,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC;IAQ3E,MAAM,CACJ,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,cAAc,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,EAC/D,KAAK,EAAE,SAAS,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,GACnD,IAAI;IAOC,OAAO,CAAC,QAAQ;IAYxB,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,iBAAiB;CAmB1B;AAED,YAAY,EACV,UAAU,EACV,QAAQ,EACR,uBAAuB,EACvB,QAAQ,EACR,YAAY,GACb,CAAC"}
@@ -38,6 +38,7 @@ class ContainerQueryModifier extends Modifier {
38
38
  onResize(resizeObserverEntry) {
39
39
  const element = resizeObserverEntry.target;
40
40
  if (this.debounce > 0) {
41
+ // eslint-disable-next-line ember/no-runloop
41
42
  debounce(this, this.queryContainer, element, this.debounce);
42
43
  return;
43
44
  }
@@ -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 type { ArgsFor, NamedArgs, PositionalArgs } from 'ember-modifier';\nimport Modifier 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 type {\n Dimensions,\n Features,\n IndexSignatureParameter,\n Metadata,\n QueryResults,\n};\n"],"names":["ContainerQueryModifier","Modifier","g","this","prototype","service","i","void 0","dimensions","queryResults","_dataAttributes","_element","_named","dataAttributePrefix","debounce","features","constructor","owner","args","registerDestructor","resizeObserver","unobserve","onResize","modify","element","_positional","named","registerResizeObserver","queryContainer","resizeObserverEntry","target","_debounce","n","action","observe","measureDimensions","evaluateQueries","resetDataAttributes","setDataAttributes","onQuery","height","clientHeight","width","clientWidth","aspectRatio","featureName","metadata","Object","entries","dimension","min","max","value","forEach","dataAttribute","removeAttribute","prefix","meetsFeature","String","setAttribute","push"],"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 type { ArgsFor, NamedArgs, PositionalArgs } from 'ember-modifier';\nimport Modifier 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 // eslint-disable-next-line ember/no-runloop\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 type {\n Dimensions,\n Features,\n IndexSignatureParameter,\n Metadata,\n QueryResults,\n};\n"],"names":["ContainerQueryModifier","Modifier","g","this","prototype","service","i","void 0","dimensions","queryResults","_dataAttributes","_element","_named","dataAttributePrefix","debounce","features","constructor","owner","args","registerDestructor","resizeObserver","unobserve","onResize","modify","element","_positional","named","registerResizeObserver","queryContainer","resizeObserverEntry","target","_debounce","n","action","observe","measureDimensions","evaluateQueries","resetDataAttributes","setDataAttributes","onQuery","height","clientHeight","width","clientWidth","aspectRatio","featureName","metadata","Object","entries","dimension","min","max","value","forEach","dataAttribute","removeAttribute","prefix","meetsFeature","String","setAttribute","push"],"mappings":";;;;;;;AA+Ce,MAAMA,sBAAsB,SAEjCC,QAAQ,CAAqC;AAAA,EAAA;AAAAC,IAAAA,CAAA,CAAAC,IAAA,CAAAC,SAAA,qBACpDC,MAAO,CAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAA,eAAA,IAAAC,CAAA,CAAAH,IAAA,qBAAAI,KAAA,CAAA,EAAA;EAERC,UAAU,CAAA;EACVC,YAAY,CAAA;AAEJC,EAAAA,eAAe,GAAa,EAAE,CAAA;EAC9BC,QAAQ,CAAA;EACRC,MAAM,CAAA;EAEd,IAAIC,mBAAmBA,GAAW;AAChC,IAAA,OAAO,IAAI,CAACD,MAAM,CAACC,mBAAmB,IAAI,iBAAiB,CAAA;AAC7D,GAAA;EAEA,IAAIC,QAAQA,GAAW;AACrB,IAAA,OAAO,IAAI,CAACF,MAAM,CAACE,QAAQ,IAAI,CAAC,CAAA;AAClC,GAAA;EAEA,IAAIC,QAAQA,GAAgB;AAC1B,IAAA,OAAO,IAAI,CAACH,MAAM,CAACG,QAAQ,IAAK,EAAkB,CAAA;AACpD,GAAA;AAEAC,EAAAA,WAAWA,CAACC,KAAY,EAAEC,IAAiD,EAAE;AAC3E,IAAA,KAAK,CAACD,KAAK,EAAEC,IAAI,CAAC,CAAA;IAElBC,kBAAkB,CAAC,IAAI,EAAE,MAAM;AAC7B,MAAA,IAAI,CAACC,cAAc,CAACC,SAAS,CAAC,IAAI,CAACV,QAAQ,EAAE,IAAI,CAACW,QAAQ,CAAC,CAAA;AAC7D,KAAC,CAAC,CAAA;AACJ,GAAA;AAEAC,EAAAA,MAAMA,CACJC,OAAgB,EAChBC,WAA+D,EAC/DC,KAAoD,EAC9C;IACN,IAAI,CAACd,MAAM,GAAGc,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,CAAChB,QAAQ,GAAG,CAAC,EAAE;AACrB;AACAiB,MAAAA,QAAS,CAAC,IAAI,EAAE,IAAI,CAACH,cAAc,EAAEJ,OAAO,EAAE,IAAI,CAACV,QAAQ,CAAC,CAAA;AAC5D,MAAA,OAAA;AACF,KAAA;AAEA,IAAA,IAAI,CAACc,cAAc,CAACJ,OAAO,CAAC,CAAA;AAC9B,GAAA;AAAC,EAAA;AAAAQ,IAAAA,CAAA,CAAA7B,IAAA,CAAAC,SAAA,eAVA6B,MAAM,CAAA,CAAA,CAAA;AAAA,GAAA;EAYCN,sBAAsBA,CAACH,OAAgB,EAAQ;AACrD,IAAA,IAAI,CAACJ,cAAc,CAACC,SAAS,CAAC,IAAI,CAACV,QAAQ,EAAE,IAAI,CAACW,QAAQ,CAAC,CAAA;IAE3D,IAAI,CAACX,QAAQ,GAAGa,OAAO,CAAA;AACvB,IAAA,IAAI,CAACJ,cAAc,CAACc,OAAO,CAAC,IAAI,CAACvB,QAAQ,EAAE,IAAI,CAACW,QAAQ,CAAC,CAAA;AAC3D,GAAA;EAEQM,cAAcA,CAACJ,OAAgB,EAAQ;AAC7C,IAAA,IAAI,CAACW,iBAAiB,CAACX,OAAO,CAAC,CAAA;IAC/B,IAAI,CAACY,eAAe,EAAE,CAAA;AACtB,IAAA,IAAI,CAACC,mBAAmB,CAACb,OAAO,CAAC,CAAA;AACjC,IAAA,IAAI,CAACc,iBAAiB,CAACd,OAAO,CAAC,CAAA;AAE/B,IAAA,IAAI,CAACZ,MAAM,CAAC2B,OAAO,GAAG;MACpB/B,UAAU,EAAE,IAAI,CAACA,UAAU;MAC3BC,YAAY,EAAE,IAAI,CAACA,YAAAA;AACrB,KAAC,CAAC,CAAA;AACJ,GAAA;EAEQ0B,iBAAiBA,CAACX,OAAgB,EAAQ;AAChD,IAAA,MAAMgB,MAAM,GAAGhB,OAAO,CAACiB,YAAY,CAAA;AACnC,IAAA,MAAMC,KAAK,GAAGlB,OAAO,CAACmB,WAAW,CAAA;IAEjC,IAAI,CAACnC,UAAU,GAAG;MAChBoC,WAAW,EAAEF,KAAK,GAAGF,MAAM;MAC3BA,MAAM;AACNE,MAAAA,KAAAA;KACD,CAAA;AACH,GAAA;AAEQN,EAAAA,eAAeA,GAAS;IAC9B,MAAM3B,YAAY,GAAG,EAAqB,CAAA;AAE1C,IAAA,KAAK,MAAM,CAACoC,WAAW,EAAEC,QAAQ,CAAC,IAAIC,MAAM,CAACC,OAAO,CAClD,IAAI,CAACjC,QACP,CAAC,EAAgC;MAC/B,MAAM;QAAEkC,SAAS;QAAEC,GAAG;AAAEC,QAAAA,GAAAA;AAAI,OAAC,GAAGL,QAAQ,CAAA;AACxC,MAAA,MAAMM,KAAK,GAAG,IAAI,CAAC5C,UAAU,CAACyC,SAAS,CAAC,CAAA;MAExCxC,YAAY,CAACoC,WAAW,CAAC,GAAGK,GAAG,IAAIE,KAAK,IAAIA,KAAK,GAAGD,GAAG,CAAA;AACzD,KAAA;IAEA,IAAI,CAAC1C,YAAY,GAAGA,YAAY,CAAA;AAClC,GAAA;EAEQ4B,mBAAmBA,CAACb,OAAgB,EAAQ;AAClD,IAAA,IAAI,CAACd,eAAe,CAAC2C,OAAO,CAAEC,aAAa,IAAK;AAC9C9B,MAAAA,OAAO,CAAC+B,eAAe,CAACD,aAAa,CAAC,CAAA;AACxC,KAAC,CAAC,CAAA;IAEF,IAAI,CAAC5C,eAAe,GAAG,EAAE,CAAA;AAC3B,GAAA;EAEQ4B,iBAAiBA,CAACd,OAAgB,EAAQ;AAChD,IAAA,MAAMgC,MAAM,GAAG,IAAI,CAAC3C,mBAAmB,CAAA;AAEvC,IAAA,KAAK,MAAM,CAACgC,WAAW,EAAEY,YAAY,CAAC,IAAIV,MAAM,CAACC,OAAO,CACtD,IAAI,CAACvC,YACP,CAAC,EAAoC;MACnC,IAAI,CAACgD,YAAY,EAAE;AACjB,QAAA,SAAA;AACF,OAAA;AAEA,MAAA,MAAMH,aAAa,GAAGE,MAAM,GACvB,CAAOA,KAAAA,EAAAA,MAAO,IAAGE,MAAM,CAACb,WAAW,CAAE,EAAC,GACtC,CAAA,KAAA,EAAOa,MAAM,CAACb,WAAW,CAAE,CAAC,CAAA,CAAA;AAEjCrB,MAAAA,OAAO,CAACmC,YAAY,CAACL,aAAa,EAAE,EAAE,CAAC,CAAA;AAEvC,MAAA,IAAI,CAAC5C,eAAe,CAACkD,IAAI,CAACN,aAAa,CAAC,CAAA;AAC1C,KAAA;AACF,GAAA;AACF;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ember-container-query",
3
- "version": "5.0.7",
3
+ "version": "5.0.8",
4
4
  "description": "Make container queries that harness the power of Ember",
5
5
  "keywords": [
6
6
  "container-queries",
@@ -49,22 +49,22 @@
49
49
  ],
50
50
  "dependencies": {
51
51
  "@embroider/addon-shim": "^1.8.7",
52
- "decorator-transforms": "^1.1.0",
53
- "ember-element-helper": "^0.8.5",
52
+ "decorator-transforms": "^1.2.1",
53
+ "ember-element-helper": "^0.8.6",
54
54
  "ember-modifier": "^3.2.7 || ^4.1.0",
55
55
  "ember-resize-observer-service": "^1.1.0"
56
56
  },
57
57
  "devDependencies": {
58
- "@babel/core": "^7.23.9",
59
- "@babel/plugin-transform-typescript": "^7.23.6",
60
- "@babel/runtime": "^7.23.9",
61
- "@embroider/addon-dev": "^4.2.1",
58
+ "@babel/core": "^7.24.4",
59
+ "@babel/plugin-transform-typescript": "^7.24.4",
60
+ "@babel/runtime": "^7.24.4",
61
+ "@embroider/addon-dev": "^4.3.1",
62
62
  "@glimmer/component": "^1.1.2",
63
63
  "@glimmer/tracking": "^1.1.2",
64
- "@glint/core": "^1.3.0",
65
- "@glint/environment-ember-loose": "^1.3.0",
66
- "@glint/environment-ember-template-imports": "^1.3.0",
67
- "@glint/template": "^1.3.0",
64
+ "@glint/core": "^1.4.0",
65
+ "@glint/environment-ember-loose": "^1.4.0",
66
+ "@glint/environment-ember-template-imports": "^1.4.0",
67
+ "@glint/template": "^1.4.0",
68
68
  "@rollup/plugin-babel": "^6.0.4",
69
69
  "@types/ember__component": "^4.0.22",
70
70
  "@types/ember__destroyable": "^4.0.5",
@@ -72,14 +72,14 @@
72
72
  "@types/ember__owner": "^4.0.9",
73
73
  "@types/ember__runloop": "^4.0.10",
74
74
  "@types/ember__service": "^4.0.9",
75
- "babel-plugin-ember-template-compilation": "^2.2.1",
75
+ "babel-plugin-ember-template-compilation": "^2.2.2",
76
76
  "concurrently": "^8.2.2",
77
- "ember-template-lint": "^5.13.0",
78
- "eslint": "^8.56.0",
77
+ "ember-template-lint": "^6.0.0",
78
+ "eslint": "^8.57.0",
79
79
  "prettier": "^3.2.5",
80
- "rollup": "^4.12.0",
80
+ "rollup": "^4.16.1",
81
81
  "rollup-plugin-copy": "^3.5.0",
82
- "typescript": "^5.3.3",
82
+ "typescript": "^5.4.5",
83
83
  "@shared-configs/ember-template-lint": "0.0.0",
84
84
  "@shared-configs/eslint-config-ember": "0.0.0",
85
85
  "@shared-configs/prettier": "0.0.0",