ember-container-query 6.1.7 → 7.0.1

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.
package/README.md CHANGED
@@ -267,7 +267,7 @@ export default class Chart extends Component {
267
267
  ## Compatibility
268
268
 
269
269
  - Ember.js v4.12 or above
270
- - Node.js v20 or above
270
+ - Node.js v22 or above
271
271
 
272
272
 
273
273
  ## Contributing
@@ -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;AAEtC,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAGtC,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,uBAAuB,CAAC,CAAC,SAAS,uBAAuB;IACjE,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,cAAc,CACjC,CAAC,SAAS,uBAAuB,CACjC,SAAQ,QAAQ,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAC5C,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,CAAU;IAC3B,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,eAAe,CAAwB;IAE/C,UAAU,EAAG,UAAU,CAAC;IACxB,YAAY,EAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAE/B,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,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAUnE,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,iBAAiB;IAWzB,MAAM,CACJ,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,cAAc,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,EACvD,KAAK,EAAE,SAAS,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,GAC3C,IAAI;IAOP,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,iBAAiB;IAoBjB,OAAO,CAAC,QAAQ;CAWzB;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;AAEtC,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAGtC,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,uBAAuB,CAAC,CAAC,SAAS,uBAAuB;IACjE,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,cAAc,CACjC,CAAC,SAAS,uBAAuB,CACjC,SAAQ,QAAQ,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAC5C,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,CAAU;IAC3B,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,eAAe,CAAwB;IAE/C,UAAU,EAAG,UAAU,CAAC;IACxB,YAAY,EAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAE/B,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,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAWnE,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,iBAAiB;IAWzB,MAAM,CACJ,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,cAAc,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,EACvD,KAAK,EAAE,SAAS,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,GAC3C,IAAI;IAOP,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,iBAAiB;IAoBjB,OAAO,CAAC,QAAQ;CAWzB;AAED,YAAY,EACV,UAAU,EACV,QAAQ,EACR,uBAAuB,EACvB,QAAQ,EACR,YAAY,GACb,CAAC"}
@@ -25,6 +25,7 @@ let ContainerQuery$1 = class ContainerQuery extends Modifier {
25
25
  super(owner, args);
26
26
  registerDestructor(this, () => {
27
27
  if (this._element) {
28
+ // eslint-disable-next-line @typescript-eslint/unbound-method
28
29
  this._resizeObserver.unobserve(this._element, this.onResize);
29
30
  }
30
31
  });
@@ -68,9 +69,11 @@ let ContainerQuery$1 = class ContainerQuery extends Modifier {
68
69
  }
69
70
  registerResizeObserver(element) {
70
71
  if (this._element) {
72
+ // eslint-disable-next-line @typescript-eslint/unbound-method
71
73
  this._resizeObserver.unobserve(this._element, this.onResize);
72
74
  }
73
75
  this._element = element;
76
+ // eslint-disable-next-line @typescript-eslint/unbound-method
74
77
  this._resizeObserver.observe(this._element, this.onResize);
75
78
  }
76
79
  resetDataAttributes(element) {
@@ -93,7 +96,7 @@ let ContainerQuery$1 = class ContainerQuery extends Modifier {
93
96
  onResize(resizeObserverEntry) {
94
97
  const element = resizeObserverEntry.target;
95
98
  if (this.debounce > 0) {
96
- // eslint-disable-next-line ember/no-runloop
99
+ // eslint-disable-next-line @typescript-eslint/unbound-method, ember/no-runloop
97
100
  debounce(this, this.queryContainer, element, this.debounce);
98
101
  return;
99
102
  }
@@ -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 type { ArgsFor, NamedArgs, PositionalArgs } from 'ember-modifier';\nimport Modifier from 'ember-modifier';\nimport { resizeObserver } from 'ember-primitives/resize-observer';\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 ContainerQuerySignature<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 ContainerQuery<\n T extends IndexSignatureParameter,\n> extends Modifier<ContainerQuerySignature<T>> {\n private _dataAttributes: string[] = [];\n private _element?: Element;\n private _named!: NamedArgs<ContainerQuerySignature<T>>;\n private _resizeObserver = resizeObserver(this);\n\n dimensions!: Dimensions;\n queryResults!: QueryResults<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<ContainerQuerySignature<T>>) {\n super(owner, args);\n\n registerDestructor(this, () => {\n if (this._element) {\n this._resizeObserver.unobserve(this._element, this.onResize);\n }\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 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 modify(\n element: Element,\n _positional: PositionalArgs<ContainerQuerySignature<T>>,\n named: NamedArgs<ContainerQuerySignature<T>>,\n ): void {\n this._named = named;\n\n this.registerResizeObserver(element);\n this.queryContainer(element);\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 registerResizeObserver(element: Element): void {\n if (this._element) {\n this._resizeObserver.unobserve(this._element, this.onResize);\n }\n\n this._element = element;\n this._resizeObserver.observe(this._element, this.onResize);\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 @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\nexport type {\n Dimensions,\n Features,\n IndexSignatureParameter,\n Metadata,\n QueryResults,\n};\n"],"names":["ContainerQuery","Modifier","_dataAttributes","_element","_named","_resizeObserver","resizeObserver","dimensions","queryResults","dataAttributePrefix","debounce","features","constructor","owner","args","registerDestructor","unobserve","onResize","evaluateQueries","featureName","metadata","Object","entries","dimension","min","max","value","measureDimensions","element","height","clientHeight","width","clientWidth","aspectRatio","modify","_positional","named","registerResizeObserver","queryContainer","resetDataAttributes","setDataAttributes","onQuery","observe","forEach","dataAttribute","removeAttribute","prefix","meetsFeature","String","setAttribute","push","resizeObserverEntry","target","_debounce","n","prototype","action"],"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 type { ArgsFor, NamedArgs, PositionalArgs } from 'ember-modifier';\nimport Modifier from 'ember-modifier';\nimport { resizeObserver } from 'ember-primitives/resize-observer';\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 ContainerQuerySignature<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 ContainerQuery<\n T extends IndexSignatureParameter,\n> extends Modifier<ContainerQuerySignature<T>> {\n private _dataAttributes: string[] = [];\n private _element?: Element;\n private _named!: NamedArgs<ContainerQuerySignature<T>>;\n private _resizeObserver = resizeObserver(this);\n\n dimensions!: Dimensions;\n queryResults!: QueryResults<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<ContainerQuerySignature<T>>) {\n super(owner, args);\n\n registerDestructor(this, () => {\n if (this._element) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this._resizeObserver.unobserve(this._element, this.onResize);\n }\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 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 modify(\n element: Element,\n _positional: PositionalArgs<ContainerQuerySignature<T>>,\n named: NamedArgs<ContainerQuerySignature<T>>,\n ): void {\n this._named = named;\n\n this.registerResizeObserver(element);\n this.queryContainer(element);\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 registerResizeObserver(element: Element): void {\n if (this._element) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this._resizeObserver.unobserve(this._element, this.onResize);\n }\n\n this._element = element;\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this._resizeObserver.observe(this._element, this.onResize);\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 @action private onResize(resizeObserverEntry: ResizeObserverEntry): void {\n const element = resizeObserverEntry.target;\n\n if (this.debounce > 0) {\n // eslint-disable-next-line @typescript-eslint/unbound-method, ember/no-runloop\n _debounce(this, this.queryContainer, element, this.debounce);\n return;\n }\n\n this.queryContainer(element);\n }\n}\n\nexport type {\n Dimensions,\n Features,\n IndexSignatureParameter,\n Metadata,\n QueryResults,\n};\n"],"names":["ContainerQuery","Modifier","_dataAttributes","_element","_named","_resizeObserver","resizeObserver","dimensions","queryResults","dataAttributePrefix","debounce","features","constructor","owner","args","registerDestructor","unobserve","onResize","evaluateQueries","featureName","metadata","Object","entries","dimension","min","max","value","measureDimensions","element","height","clientHeight","width","clientWidth","aspectRatio","modify","_positional","named","registerResizeObserver","queryContainer","resetDataAttributes","setDataAttributes","onQuery","observe","forEach","dataAttribute","removeAttribute","prefix","meetsFeature","String","setAttribute","push","resizeObserverEntry","target","_debounce","n","prototype","action"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ember-container-query",
3
- "version": "6.1.7",
3
+ "version": "7.0.1",
4
4
  "description": "Make container queries that harness the power of Ember",
5
5
  "keywords": [
6
6
  "container-queries",
@@ -53,34 +53,34 @@
53
53
  "decorator-transforms": "^2.3.1",
54
54
  "ember-element-helper": "^0.8.8",
55
55
  "ember-modifier": "^4.3.0",
56
- "ember-primitives": "^0.53.0"
56
+ "ember-primitives": "^0.55.0"
57
57
  },
58
58
  "devDependencies": {
59
59
  "@babel/core": "^7.29.0",
60
60
  "@babel/plugin-transform-typescript": "^7.28.6",
61
- "@babel/runtime": "^7.28.6",
61
+ "@babel/runtime": "^7.29.2",
62
62
  "@embroider/addon-dev": "^8.3.0",
63
63
  "@glimmer/component": "^2.0.0",
64
64
  "@glimmer/tracking": "^1.1.2",
65
- "@glint/ember-tsc": "^1.1.1",
66
- "@glint/template": "^1.7.4",
67
- "@glint/tsserver-plugin": "^2.1.0",
68
- "@ijlee2-frontend-configs/ember-template-lint": "^2.3.2",
69
- "@ijlee2-frontend-configs/eslint-config-ember": "^2.6.1",
70
- "@ijlee2-frontend-configs/prettier": "^2.4.1",
71
- "@rollup/plugin-babel": "^6.1.0",
72
- "@tsconfig/ember": "^3.0.12",
65
+ "@glint/ember-tsc": "^1.4.0",
66
+ "@glint/template": "^1.7.7",
67
+ "@glint/tsserver-plugin": "^2.3.1",
68
+ "@rollup/plugin-babel": "^7.0.0",
73
69
  "babel-plugin-ember-template-compilation": "^4.0.0",
74
70
  "concurrently": "^9.2.1",
75
- "ember-source": "^6.10.1",
71
+ "ember-source": "~6.11.0",
76
72
  "ember-template-lint": "^7.9.3",
77
- "eslint": "^9.39.2",
73
+ "eslint": "^9.39.4",
78
74
  "prettier": "^3.8.1",
79
- "rollup": "^4.57.1",
80
- "typescript": "^5.9.3"
75
+ "rollup": "^4.60.1",
76
+ "typescript": "^5.9.3",
77
+ "@shared-configs/ember-template-lint": "0.0.0",
78
+ "@shared-configs/eslint-config-ember": "0.0.0",
79
+ "@shared-configs/prettier": "0.0.0",
80
+ "@shared-configs/typescript": "0.0.0"
81
81
  },
82
82
  "engines": {
83
- "node": "20.* || >= 22"
83
+ "node": "22.* || >= 24"
84
84
  },
85
85
  "ember": {
86
86
  "edition": "octane"