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
|
@@ -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;
|
|
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": "
|
|
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.
|
|
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.
|
|
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.
|
|
66
|
-
"@glint/template": "^1.7.
|
|
67
|
-
"@glint/tsserver-plugin": "^2.1
|
|
68
|
-
"@
|
|
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": "
|
|
71
|
+
"ember-source": "~6.11.0",
|
|
76
72
|
"ember-template-lint": "^7.9.3",
|
|
77
|
-
"eslint": "^9.39.
|
|
73
|
+
"eslint": "^9.39.4",
|
|
78
74
|
"prettier": "^3.8.1",
|
|
79
|
-
"rollup": "^4.
|
|
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": "
|
|
83
|
+
"node": "22.* || >= 24"
|
|
84
84
|
},
|
|
85
85
|
"ember": {
|
|
86
86
|
"edition": "octane"
|