@eui/core 22.0.0-alpha.2 → 22.0.0-alpha.20

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.
Files changed (34) hide show
  1. package/CHANGELOG.md +386 -0
  2. package/docs/changelog.html +604 -0
  3. package/docs/directives/TranslateMockDirective.html +0 -6
  4. package/docs/interfaces/Edit-4.html +395 -0
  5. package/docs/interfaces/MigrateResult.html +356 -0
  6. package/docs/interfaces/Schema-12.html +1 -1
  7. package/docs/interfaces/Schema-13.html +1 -1
  8. package/docs/interfaces/Schema-14.html +1 -1
  9. package/docs/interfaces/Schema-15.html +1 -1
  10. package/docs/interfaces/Schema-21.html +1 -1
  11. package/docs/interfaces/Schema-22.html +368 -0
  12. package/docs/js/menu-wc.js +15 -6
  13. package/docs/js/search/search_index.js +2 -2
  14. package/docs/json/TranslateMockDirective.md +1 -1
  15. package/docs/json/documentation.json +2104 -228
  16. package/docs/llms.txt +97 -30
  17. package/docs/miscellaneous/functions.html +1544 -103
  18. package/docs/miscellaneous/variables.html +446 -39
  19. package/docs/overview.html +1 -1
  20. package/docs/properties.html +1 -1
  21. package/fesm2022/eui-core.mjs +5 -5
  22. package/fesm2022/eui-core.mjs.map +1 -1
  23. package/package.json +2 -2
  24. package/schematics/collection.json +5 -0
  25. package/schematics/migrate-all/index.js +1 -0
  26. package/schematics/migrate-all/index.js.map +1 -1
  27. package/schematics/migrate-to-signals/index.d.ts +24 -0
  28. package/schematics/migrate-to-signals/index.js +514 -0
  29. package/schematics/migrate-to-signals/index.js.map +1 -0
  30. package/schematics/migrate-to-signals/signal-map.d.ts +17 -0
  31. package/schematics/migrate-to-signals/signal-map.js +354 -0
  32. package/schematics/migrate-to-signals/signal-map.js.map +1 -0
  33. package/types/eui-core.d.ts +2 -2
  34. package/types/eui-core.d.ts.map +1 -1
@@ -2,7 +2,7 @@
2
2
  "pipes": [
3
3
  {
4
4
  "name": "TranslateMockPipe",
5
- "id": "pipe-TranslateMockPipe-a6db37044983724bfab8f8eb6fbaf6bb1f4b1de1651ef5303a344a4b606cbe68e1bf0bdbe45bd473e1c77e446058e133e85517ed7e8fda4b4be59a70ef96bd06",
5
+ "id": "pipe-TranslateMockPipe-d42afa990d476989657d92ef3f9c88346ef461191fc8641719f83d538694483a6f785c8618d8ee729faee7c37e723a1fdfcac95badfa6e5259f869ebe95cccad",
6
6
  "file": "packages/core/src/lib/mocks/translate.module.mock.ts",
7
7
  "type": "pipe",
8
8
  "coverageIgnore": false,
@@ -28,7 +28,7 @@
28
28
  "optional": false,
29
29
  "returnType": "string",
30
30
  "typeParameters": [],
31
- "line": 63,
31
+ "line": 74,
32
32
  "deprecated": false,
33
33
  "deprecationMessage": "",
34
34
  "rawdescription": "\n",
@@ -50,7 +50,7 @@
50
50
  ],
51
51
  "standalone": false,
52
52
  "ngname": "translate",
53
- "sourceCode": "import { AfterViewChecked, Directive, ElementRef, Input, NgModule, Pipe, PipeTransform, inject, signal } from '@angular/core';\nimport { LangChangeEvent, TranslateLoader, TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\n\nexport const TRANSLATED_STRING = 'i18n';\nexport const DEFAULT_LANGUAGE = 'en';\n\nexport class TranslateServiceMock {\n onLangChangeSubject: Subject<LangChangeEvent> = new Subject();\n onTranslationChangeSubject: Subject<string> = new Subject();\n onFallbackLangChangeSubject: Subject<string> = new Subject();\n isLoadedSubject: BehaviorSubject<boolean> = new BehaviorSubject(true);\n\n onLangChange: Observable<LangChangeEvent> = this.onLangChangeSubject.asObservable();\n onTranslationChange: Observable<string> = this.onTranslationChangeSubject.asObservable();\n onFallbackLangChange: Observable<string> = this.onFallbackLangChangeSubject.asObservable();\n isLoaded: Observable<boolean> = this.isLoadedSubject.asObservable();\n\n currentLang = signal<string | null>(null);\n\n languages: string[] = [DEFAULT_LANGUAGE];\n\n get(content: string): Observable<string> {\n return of(TRANSLATED_STRING + content);\n }\n\n use(lang: string): void {\n this.currentLang.set(lang);\n this.onLangChangeSubject.next({ lang } as LangChangeEvent);\n }\n\n addLangs(langs: string[]): void {\n this.languages = [...this.languages, ...langs];\n }\n\n getBrowserLang(): string {\n return DEFAULT_LANGUAGE;\n }\n\n getLangs(): string[] {\n return this.languages;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getTranslation(): Observable<any> {\n return of({});\n }\n\n instant(key: string | string[]): string {\n return TRANSLATED_STRING + key.toString();\n }\n\n setFallbackLang(lang: string): void {\n this.onFallbackLangChangeSubject.next(lang);\n }\n}\n\n@Pipe({ name: 'translate' })\nexport class TranslateMockPipe implements PipeTransform {\n transform(text: string): string {\n return !text ? TRANSLATED_STRING : `${text}-${TRANSLATED_STRING}`;\n }\n}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[translate]',\n})\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport class TranslateMockDirective implements AfterViewChecked {\n @Input()\n translateParams: any;\n\n private readonly _element = inject(ElementRef);\n\n ngAfterViewChecked(): void {\n this._element.nativeElement.innerText += TRANSLATED_STRING;\n }\n}\n\nexport class TranslateLoaderMock implements TranslateLoader {\n getTranslation(): Observable<Record<string, string>> {\n return of({});\n }\n}\n\n@NgModule({\n imports: [TranslateMockPipe, TranslateMockDirective],\n exports: [TranslateMockPipe, TranslateMockDirective],\n providers: [\n { provide: TranslateService, useClass: TranslateServiceMock },\n { provide: TranslateLoader, useClass: TranslateLoaderMock },\n ],\n})\nexport class TranslateMockModule {}\n",
53
+ "sourceCode": "import {\n AfterViewChecked,\n Directive,\n ElementRef,\n Input,\n NgModule,\n Pipe,\n PipeTransform,\n inject,\n signal,\n input,\n} from '@angular/core';\nimport { LangChangeEvent, TranslateLoader, TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\n\nexport const TRANSLATED_STRING = 'i18n';\nexport const DEFAULT_LANGUAGE = 'en';\n\nexport class TranslateServiceMock {\n onLangChangeSubject: Subject<LangChangeEvent> = new Subject();\n onTranslationChangeSubject: Subject<string> = new Subject();\n onFallbackLangChangeSubject: Subject<string> = new Subject();\n isLoadedSubject: BehaviorSubject<boolean> = new BehaviorSubject(true);\n\n onLangChange: Observable<LangChangeEvent> = this.onLangChangeSubject.asObservable();\n onTranslationChange: Observable<string> = this.onTranslationChangeSubject.asObservable();\n onFallbackLangChange: Observable<string> = this.onFallbackLangChangeSubject.asObservable();\n isLoaded: Observable<boolean> = this.isLoadedSubject.asObservable();\n\n currentLang = signal<string | null>(null);\n\n languages: string[] = [DEFAULT_LANGUAGE];\n\n get(content: string): Observable<string> {\n return of(TRANSLATED_STRING + content);\n }\n\n use(lang: string): void {\n this.currentLang.set(lang);\n this.onLangChangeSubject.next({ lang } as LangChangeEvent);\n }\n\n addLangs(langs: string[]): void {\n this.languages = [...this.languages, ...langs];\n }\n\n getBrowserLang(): string {\n return DEFAULT_LANGUAGE;\n }\n\n getLangs(): string[] {\n return this.languages;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getTranslation(): Observable<any> {\n return of({});\n }\n\n instant(key: string | string[]): string {\n return TRANSLATED_STRING + key.toString();\n }\n\n setFallbackLang(lang: string): void {\n this.onFallbackLangChangeSubject.next(lang);\n }\n}\n\n@Pipe({ name: 'translate' })\nexport class TranslateMockPipe implements PipeTransform {\n transform(text: string): string {\n return !text ? TRANSLATED_STRING : `${text}-${TRANSLATED_STRING}`;\n }\n}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[translate]',\n})\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport class TranslateMockDirective implements AfterViewChecked {\n readonly translateParams = input();\n\n private readonly _element = inject(ElementRef);\n\n ngAfterViewChecked(): void {\n this._element.nativeElement.innerText += TRANSLATED_STRING;\n }\n}\n\nexport class TranslateLoaderMock implements TranslateLoader {\n getTranslation(): Observable<Record<string, string>> {\n return of({});\n }\n}\n\n@NgModule({\n imports: [TranslateMockPipe, TranslateMockDirective],\n exports: [TranslateMockPipe, TranslateMockDirective],\n providers: [\n { provide: TranslateService, useClass: TranslateServiceMock },\n { provide: TranslateLoader, useClass: TranslateLoaderMock },\n ],\n})\nexport class TranslateMockModule {}\n",
54
54
  "relationships": {
55
55
  "incoming": [
56
56
  {
@@ -1025,6 +1025,65 @@
1025
1025
  "outgoing": []
1026
1026
  }
1027
1027
  },
1028
+ {
1029
+ "name": "Edit",
1030
+ "id": "interface-Edit-cac2ac952d8245647e8a48b450e8f127a36bcffb394cf2cd81fe9c0810ed02c19e5e1629dbf29a68a5c6f675aed99570e9ac04ae470e13315e20c92cc0c6c453-4",
1031
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
1032
+ "deprecated": false,
1033
+ "deprecationMessage": "",
1034
+ "type": "interface",
1035
+ "sourceCode": "import { DirEntry, Rule, SchematicContext, Tree } from '@angular-devkit/schematics';\nimport { parseTemplate, TmplAstElement, TmplAstNode } from '@angular/compiler';\nimport * as ts from 'typescript';\nimport { logDryRun, logDryRunNote } from '../utils/dry-run';\nimport { EUI_SIGNAL_MAP, EUI_SELECTOR_TO_CLASS } from './signal-map';\n\ninterface Schema {\n path?: string;\n dryRun?: boolean;\n}\n\ninterface Edit {\n start: number;\n end: number;\n replacement: string;\n}\n\n/**\n * Migrates consumer code that accesses EUI component instances programmatically.\n *\n * When EUI migrated @Input() → input(), @ViewChild() → viewChild(), and\n * @ContentChild() → contentChild(), properties that were plain class fields\n * became signal getters. Consumers who access them via @ViewChild need to\n * change `comp.prop` to `comp.prop()`.\n *\n * This schematic:\n * 1. Finds @ViewChild / @ContentChild fields typed as EUI component classes\n * 2. Resolves untyped @ViewChild('refName') by reading the component template\n * and matching #refName to an EUI element tag/selector\n * 3. Tracks which local variable names hold EUI component references (incl. aliases)\n * 4. Rewrites property accesses on those references: `ref.prop` → `ref.prop()`\n * (only for properties listed in the signal map)\n * 5. Does NOT touch template bindings — those are unaffected by signal migrations\n */\nexport function migrateToSignals(options: Schema = {}): Rule {\n return (tree: Tree, context: SchematicContext) => {\n const scanPath = options.path ? '/' + options.path.replace(/^\\.?\\//, '').replace(/\\/$/, '') : '';\n let fileCount = 0;\n let propCount = 0;\n\n visitDir(tree.getDir(scanPath || '/'), (path) => {\n if (!path.endsWith('.ts')) return;\n // Skip spec files — test code may use different patterns\n if (path.endsWith('.spec.ts')) return;\n\n const buffer = tree.read(path);\n if (!buffer) return;\n\n const original = buffer.toString('utf-8');\n\n // Fast bail: file must mention at least one EUI class name or have\n // ViewChild/ContentChild with string refs (which might reference EUI elements)\n if (!hasEuiReference(original) && !hasStringRefQuery(original)) return;\n\n const result = migrateTypeScript(original, path, tree, context); if (result.source !== original) {\n if (options.dryRun) {\n logDryRun(context, `Would migrate ${result.editCount} signal property access(es) in ${path}`);\n } else {\n tree.overwrite(path, result.source);\n }\n fileCount++;\n propCount += result.editCount;\n }\n });\n\n context.logger.info(`Migrated ${propCount} property access(es) to signal getters in ${fileCount} file(s).`);\n if (options.dryRun) {\n logDryRunNote(context);\n }\n return tree;\n };\n}\n\n/** Quick check: does the file reference any EUI class name from the signal map? */\nfunction hasEuiReference(source: string): boolean {\n for (const className of Object.keys(EUI_SIGNAL_MAP)) {\n if (source.includes(className)) return true;\n }\n return false;\n}\n\n/** Quick check: does the file have @ViewChild('...') or @ContentChild('...') with string refs? */\nfunction hasStringRefQuery(source: string): boolean {\n return /(@ViewChild|@ContentChild|@ViewChildren|@ContentChildren)\\s*\\(\\s*['\"]/.test(source);\n}\n\ninterface MigrateResult {\n source: string;\n editCount: number;\n}\n\nfunction migrateTypeScript(source: string, filePath: string, tree: Tree, context: SchematicContext): MigrateResult {\n const sourceFile = ts.createSourceFile(filePath, source, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);\n const edits: Edit[] = [];\n\n // Phase 0: Build template ref map (#refName → EUI class name) from the component's template\n const templateRefMap = buildTemplateRefMap(sourceFile, source, filePath, tree);\n\n // Phase 1: Collect all variables/properties typed as EUI classes\n const euiRefs = collectEuiReferences(sourceFile, source, templateRefMap);\n\n if (euiRefs.size === 0) {\n return { source, editCount: 0 };\n }\n\n // Phase 2: Find property accesses on those references and rewrite signal props\n const visitNode = (node: ts.Node): void => {\n // Match: ref.prop (PropertyAccessExpression)\n if (ts.isPropertyAccessExpression(node)) {\n const rewrite = tryRewritePropertyAccess(node, euiRefs, sourceFile, source);\n if (rewrite) {\n edits.push(rewrite);\n }\n }\n ts.forEachChild(node, visitNode);\n };\n\n ts.forEachChild(sourceFile, visitNode);\n\n if (edits.length === 0) {\n return { source, editCount: 0 };\n }\n\n return {\n source: applyEdits(source, edits),\n editCount: edits.length,\n };\n}\n\n/**\n * Scans the source file for class properties or variables typed as EUI component classes.\n * Returns a map: localName → Set of signal property names.\n *\n * Handles:\n * @ViewChild(EuiXxxComponent) name: EuiXxxComponent;\n * @ViewChild(EuiXxxComponent) name!: EuiXxxComponent;\n * @ViewChild('ref') name: EuiXxxComponent;\n * @ContentChild(EuiXxxComponent) name: EuiXxxComponent;\n * @ViewChild('ref') name: ElementRef; (resolved via template #ref → EUI selector)\n * someVar: EuiXxxComponent; (typed class field, even without decorator)\n * const alias = this.viewChildRef; (alias tracking)\n */\nfunction collectEuiReferences(\n sourceFile: ts.SourceFile,\n source: string,\n templateRefMap: Map<string, string>,\n): Map<string, ReadonlySet<string>> {\n const refs = new Map<string, ReadonlySet<string>>();\n\n // Pass 1: collect directly-typed references\n const visitDirect = (node: ts.Node): void => {\n // Class property declarations\n if (ts.isPropertyDeclaration(node) && node.name && ts.isIdentifier(node.name)) {\n const euiClass = resolveEuiClassName(node, sourceFile, templateRefMap);\n if (euiClass && EUI_SIGNAL_MAP[euiClass]) {\n refs.set(node.name.text, EUI_SIGNAL_MAP[euiClass]);\n }\n }\n\n // Variable declarations (const x: EuiXxxComponent = ...)\n if (ts.isVariableDeclaration(node) && ts.isIdentifier(node.name)) {\n const typeName = getTypeAnnotationName(node.type);\n if (typeName && EUI_SIGNAL_MAP[typeName]) {\n refs.set(node.name.text, EUI_SIGNAL_MAP[typeName]);\n }\n }\n\n // Parameter declarations (method(ref: EuiXxxComponent))\n if (ts.isParameter(node) && ts.isIdentifier(node.name)) {\n const typeName = getTypeAnnotationName(node.type);\n if (typeName && EUI_SIGNAL_MAP[typeName]) {\n refs.set(node.name.text, EUI_SIGNAL_MAP[typeName]);\n }\n }\n\n ts.forEachChild(node, visitDirect);\n };\n\n ts.forEachChild(sourceFile, visitDirect);\n\n // Pass 2: track aliases — variables assigned from already-tracked references\n // e.g. const alias = this.viewChildRef; or const alias = someParam;\n const visitAlias = (node: ts.Node): void => {\n if (ts.isVariableDeclaration(node) && ts.isIdentifier(node.name) && node.initializer) {\n // Skip if already tracked (has explicit type annotation)\n if (refs.has(node.name.text)) {\n ts.forEachChild(node, visitAlias);\n return;\n }\n\n const aliasedRef = resolveRefName(node.initializer);\n if (aliasedRef && refs.has(aliasedRef)) {\n refs.set(node.name.text, refs.get(aliasedRef)!);\n }\n }\n\n ts.forEachChild(node, visitAlias);\n };\n\n ts.forEachChild(sourceFile, visitAlias);\n return refs;\n}\n\n/**\n * Resolves the EUI class name from a property declaration.\n * Checks: type annotation → decorator class argument → template ref map.\n */\nfunction resolveEuiClassName(\n node: ts.PropertyDeclaration,\n sourceFile: ts.SourceFile,\n templateRefMap: Map<string, string>,\n): string | null {\n // Check type annotation first\n const typeName = getTypeAnnotationName(node.type);\n if (typeName && EUI_SIGNAL_MAP[typeName]) {\n return typeName;\n }\n\n // Check generic type argument: ElementRef<EuiXxxComponent>\n if (node.type && ts.isTypeReferenceNode(node.type) && node.type.typeArguments?.length) {\n const genericArg = getTypeAnnotationName(node.type.typeArguments[0]);\n if (genericArg && EUI_SIGNAL_MAP[genericArg]) {\n return genericArg;\n }\n }\n\n // Check decorator arguments: @ViewChild(EuiXxxComponent) or @ViewChild('refName')\n if (node.modifiers) {\n for (const modifier of node.modifiers) {\n if (!ts.isDecorator(modifier)) continue;\n if (!ts.isCallExpression(modifier.expression)) continue;\n\n const decoratorName = getDecoratorName(modifier.expression);\n if (!decoratorName) continue;\n if (!['ViewChild', 'ViewChildren', 'ContentChild', 'ContentChildren'].includes(decoratorName)) continue;\n\n const args = modifier.expression.arguments;\n if (args.length > 0) {\n const firstArg = args[0];\n\n // @ViewChild(EuiXxxComponent) — class reference\n if (ts.isIdentifier(firstArg) && EUI_SIGNAL_MAP[firstArg.text]) {\n return firstArg.text;\n }\n\n // @ViewChild('refName') — string template ref, resolve via template\n if (ts.isStringLiteralLike(firstArg)) {\n const refName = firstArg.text;\n const euiClass = templateRefMap.get(refName);\n if (euiClass && EUI_SIGNAL_MAP[euiClass]) {\n return euiClass;\n }\n }\n }\n }\n }\n\n return null;\n}\n\nfunction getDecoratorName(callExpr: ts.CallExpression): string | null {\n if (ts.isIdentifier(callExpr.expression)) {\n return callExpr.expression.text;\n }\n return null;\n}\n\nfunction getTypeAnnotationName(typeNode: ts.TypeNode | undefined): string | null {\n if (!typeNode) return null;\n if (ts.isTypeReferenceNode(typeNode) && ts.isIdentifier(typeNode.typeName)) {\n return typeNode.typeName.text;\n }\n return null;\n}\n\n/**\n * Checks if a property access `ref.prop` should be rewritten to `ref.prop()`.\n *\n * We rewrite if:\n * - `ref` is tracked in euiRefs\n * - `prop` is in the signal set for that EUI class\n * - The access is NOT already a call expression (not `ref.prop()` or `ref.prop(args)`)\n * - The access is NOT a write target (not `ref.prop = value`)\n * - The access is NOT a template binding argument (those are unaffected)\n */\nfunction tryRewritePropertyAccess(\n node: ts.PropertyAccessExpression,\n euiRefs: Map<string, ReadonlySet<string>>,\n sourceFile: ts.SourceFile,\n source: string,\n): Edit | null {\n const propName = node.name.text;\n\n // Resolve the reference name — handle `this.ref.prop` and `ref.prop`\n const refName = resolveRefName(node.expression);\n if (!refName) return null;\n\n const signalProps = euiRefs.get(refName);\n if (!signalProps || !signalProps.has(propName)) return null;\n\n // Skip if parent is already a call expression on this property: ref.prop(...)\n if (ts.isCallExpression(node.parent) && node.parent.expression === node) {\n return null;\n }\n\n // Skip if this is the left side of an assignment: ref.prop = value\n if (ts.isBinaryExpression(node.parent) &&\n node.parent.operatorToken.kind === ts.SyntaxKind.EqualsToken &&\n node.parent.left === node) {\n return null;\n }\n\n // Skip if this is a compound assignment: ref.prop += value, ref.prop &&= value, etc.\n if (ts.isBinaryExpression(node.parent) && isAssignmentOperator(node.parent.operatorToken.kind) && node.parent.left === node) {\n return null;\n }\n\n // Skip if this is used with delete: delete ref.prop\n if (ts.isDeleteExpression(node.parent) && node.parent.expression === node) {\n return null;\n }\n\n // Skip if inside a typeof: typeof ref.prop\n if (ts.isTypeOfExpression(node.parent) && node.parent.expression === node) {\n return null;\n }\n\n // Skip property access chains that go deeper: ref.prop.something → ref.prop().something\n // This IS correct — we still want to add ()\n\n // Rewrite: insert () after the property name\n const end = node.name.getEnd();\n return {\n start: end,\n end: end,\n replacement: '()',\n };\n}\n\nfunction isAssignmentOperator(kind: ts.SyntaxKind): boolean {\n return kind >= ts.SyntaxKind.FirstAssignment && kind <= ts.SyntaxKind.LastAssignment;\n}\n\n/**\n * Resolves a reference name from an expression.\n * Handles: `ref`, `this.ref`, `this._ref`\n */\nfunction resolveRefName(expr: ts.Expression): string | null {\n // Direct identifier: ref.prop\n if (ts.isIdentifier(expr)) {\n return expr.text;\n }\n\n // this.ref.prop\n if (ts.isPropertyAccessExpression(expr) && expr.expression.kind === ts.SyntaxKind.ThisKeyword) {\n return expr.name.text;\n }\n\n return null;\n}\n\n// ---------------------------------------------------------------------------\n// Template ref resolution\n// ---------------------------------------------------------------------------\n\n/**\n * Builds a map of template reference variable names (#ref) to EUI class names.\n *\n * Parses the component's template (inline or external) and finds elements like:\n * <eui-alert #myAlert> → myAlert → EuiAlertComponent\n * <input euiAutocomplete #ac> → ac → EuiAutocompleteComponent\n *\n * Returns Map<refName, euiClassName>.\n */\nfunction buildTemplateRefMap(\n sourceFile: ts.SourceFile,\n source: string,\n filePath: string,\n tree: Tree,\n): Map<string, string> {\n const refMap = new Map<string, string>();\n\n // Find @Component decorator\n const componentMeta = findComponentMetadata(sourceFile, source);\n if (!componentMeta) return refMap;\n\n let templateSource: string | null = null;\n\n if (componentMeta.inlineTemplate !== null) {\n templateSource = componentMeta.inlineTemplate;\n } else if (componentMeta.templateUrl) {\n // Resolve templateUrl relative to the TS file\n const dir = filePath.substring(0, filePath.lastIndexOf('/'));\n const templatePath = `${dir}/${componentMeta.templateUrl}`;\n const buffer = tree.read(templatePath);\n if (buffer) {\n templateSource = buffer.toString('utf-8');\n }\n }\n\n if (!templateSource) return refMap;\n\n // Parse the template and collect #refs\n try {\n const parsed = parseTemplate(templateSource, '', { preserveWhitespaces: true });\n collectTemplateRefs(parsed.nodes, refMap);\n } catch {\n // Template parse failure — silently skip (might be malformed or use third-party syntax)\n }\n\n return refMap;\n}\n\n/**\n * Extracts @Component metadata: templateUrl or inline template content.\n */\nfunction findComponentMetadata(\n sourceFile: ts.SourceFile,\n source: string,\n): { templateUrl: string | null; inlineTemplate: string | null } | null {\n let result: { templateUrl: string | null; inlineTemplate: string | null } | null = null;\n\n const visit = (node: ts.Node): void => {\n if (result) return;\n\n if (ts.isDecorator(node) && ts.isCallExpression(node.expression)) {\n const name = getDecoratorName(node.expression);\n if (name !== 'Component') {\n ts.forEachChild(node, visit);\n return;\n }\n\n const args = node.expression.arguments;\n if (args.length === 0 || !ts.isObjectLiteralExpression(args[0])) {\n ts.forEachChild(node, visit);\n return;\n }\n\n const meta: { templateUrl: string | null; inlineTemplate: string | null } = {\n templateUrl: null,\n inlineTemplate: null,\n };\n\n for (const prop of args[0].properties) {\n if (!ts.isPropertyAssignment(prop) || !ts.isIdentifier(prop.name)) continue;\n\n if (prop.name.text === 'templateUrl') {\n const init = unwrapExpression(prop.initializer);\n if (ts.isStringLiteralLike(init)) {\n meta.templateUrl = init.text;\n }\n }\n\n if (prop.name.text === 'template') {\n const init = unwrapExpression(prop.initializer);\n if (ts.isStringLiteralLike(init)) {\n meta.inlineTemplate = init.text;\n } else if (ts.isNoSubstitutionTemplateLiteral(init)) {\n meta.inlineTemplate = init.text;\n }\n }\n }\n\n result = meta;\n return;\n }\n\n ts.forEachChild(node, visit);\n };\n\n ts.forEachChild(sourceFile, visit);\n return result;\n}\n\nfunction unwrapExpression(expression: ts.Expression): ts.Expression {\n let current = expression;\n while (ts.isParenthesizedExpression(current)) current = current.expression;\n return current;\n}\n\n/**\n * Recursively walks template AST nodes, collecting #refName → EUI class name mappings.\n *\n * For each element with a template reference (#ref), we try to resolve its EUI class:\n * 1. Match element tag name against EUI_SELECTOR_TO_CLASS (e.g. 'eui-alert' → EuiAlertComponent)\n * 2. Match element attributes against attribute selectors (e.g. [euiAutocomplete] → EuiAutocompleteComponent)\n */\nfunction collectTemplateRefs(nodes: TmplAstNode[], refMap: Map<string, string>): void {\n for (const node of nodes) {\n if (node instanceof TmplAstElement) {\n if (node.references && node.references.length > 0) {\n const euiClass = resolveElementToEuiClass(node);\n if (euiClass) {\n for (const ref of node.references) {\n refMap.set(ref.name, euiClass);\n }\n }\n }\n collectTemplateRefs(node.children, refMap);\n }\n }\n}\n\n/**\n * Given a template element, resolves it to an EUI class name by checking:\n * 1. Tag name: <eui-alert> → look up 'eui-alert' in EUI_SELECTOR_TO_CLASS\n * 2. Attribute selectors: <input euiAutocomplete> → look up 'input[euiAutocomplete]' or '[euiAutocomplete]'\n */\nfunction resolveElementToEuiClass(element: TmplAstElement): string | null {\n const tag = element.name;\n\n // Direct tag match: eui-alert, eui-dialog, etc.\n if (EUI_SELECTOR_TO_CLASS[tag]) {\n return EUI_SELECTOR_TO_CLASS[tag];\n }\n\n // Attribute selector match: check all attributes against known patterns\n const allAttrNames = [\n ...element.attributes.map((a) => a.name),\n ...element.inputs.map((i) => i.name),\n ];\n\n for (const attrName of allAttrNames) {\n // Try tag[attr] pattern first (e.g. 'button[euiButton]', 'input[euiAutocomplete]')\n const tagAttrSelector = `${tag}[${attrName}]`;\n if (EUI_SELECTOR_TO_CLASS[tagAttrSelector]) {\n return EUI_SELECTOR_TO_CLASS[tagAttrSelector];\n }\n\n // Try [attr] pattern (e.g. '[euiTooltip]', '[euiLoading]')\n const attrSelector = `[${attrName}]`;\n if (EUI_SELECTOR_TO_CLASS[attrSelector]) {\n return EUI_SELECTOR_TO_CLASS[attrSelector];\n }\n }\n\n return null;\n}\n\n// ---------------------------------------------------------------------------\n// Edit helpers\n// ---------------------------------------------------------------------------\n\nfunction applyEdits(source: string, edits: Edit[]): string {\n const unique = deduplicateEdits(edits);\n let result = source;\n for (const edit of unique.sort((a, b) => b.start - a.start)) {\n result = result.slice(0, edit.start) + edit.replacement + result.slice(edit.end);\n }\n return result;\n}\n\nfunction deduplicateEdits(edits: Edit[]): Edit[] {\n const seen = new Map<string, Edit>();\n for (const edit of edits) {\n const key = `${edit.start}:${edit.end}`;\n seen.set(key, edit);\n }\n return Array.from(seen.values());\n}\n\nfunction visitDir(dir: DirEntry, callback: (path: string) => void): void {\n for (const file of dir.subfiles) {\n if (file.endsWith('.d.ts')) continue;\n if (!file.endsWith('.ts')) continue;\n callback(`${dir.path}/${file}`);\n }\n for (const sub of dir.subdirs) {\n if (sub === 'node_modules' || sub === 'dist') continue;\n visitDir(dir.dir(sub), callback);\n }\n}\n",
1036
+ "displayName": "Edit",
1037
+ "properties": [
1038
+ {
1039
+ "name": "end",
1040
+ "coverageIgnore": false,
1041
+ "deprecated": false,
1042
+ "deprecationMessage": "",
1043
+ "type": "number",
1044
+ "indexKey": "",
1045
+ "optional": false,
1046
+ "description": "",
1047
+ "line": 14,
1048
+ "rawdescription": "\n"
1049
+ },
1050
+ {
1051
+ "name": "replacement",
1052
+ "coverageIgnore": false,
1053
+ "deprecated": false,
1054
+ "deprecationMessage": "",
1055
+ "type": "string",
1056
+ "indexKey": "",
1057
+ "optional": false,
1058
+ "description": "",
1059
+ "line": 15,
1060
+ "rawdescription": "\n"
1061
+ },
1062
+ {
1063
+ "name": "start",
1064
+ "coverageIgnore": false,
1065
+ "deprecated": false,
1066
+ "deprecationMessage": "",
1067
+ "type": "number",
1068
+ "indexKey": "",
1069
+ "optional": false,
1070
+ "description": "",
1071
+ "line": 13,
1072
+ "rawdescription": "\n"
1073
+ }
1074
+ ],
1075
+ "indexSignatures": [],
1076
+ "kind": 172,
1077
+ "methods": [],
1078
+ "extends": [],
1079
+ "isDuplicate": true,
1080
+ "duplicateId": 4,
1081
+ "duplicateName": "Edit-4",
1082
+ "relationships": {
1083
+ "incoming": [],
1084
+ "outgoing": []
1085
+ }
1086
+ },
1028
1087
  {
1029
1088
  "name": "EuiComponentEntry",
1030
1089
  "id": "interface-EuiComponentEntry-e1068f4f156ce8f48ed51476e062ee969ff7e7d064af3045181da54f7aba582003387dd6cf5412d907b9637791a85232c11b467fbdfa8c5545d9e7c3e181e873",
@@ -1642,12 +1701,12 @@
1642
1701
  },
1643
1702
  {
1644
1703
  "name": "MigrateAllSchema",
1645
- "id": "interface-MigrateAllSchema-37175caf2db4e728d285d5a8d2261bef3f77ac6b132960846be25241de1387993b11f30e57a3c71bb7a5a5b2b8ebcae465c22562e7b570e634ab547299274e59",
1704
+ "id": "interface-MigrateAllSchema-9f5c8421d830e497010dd27404a71efd86022343f3a2f75cfe42a96145e90bbd446cb032e3768b3f4698f469ea0b07a13a087f6eefc0fce74196e29ec8785099",
1646
1705
  "file": "packages/core/schematics/migrate-all/index.ts",
1647
1706
  "deprecated": false,
1648
1707
  "deprecationMessage": "",
1649
1708
  "type": "interface",
1650
- "sourceCode": "import { Rule, chain, schematic } from '@angular-devkit/schematics';\n\nexport interface MigrateAllSchema {\n path?: string;\n dryRun?: boolean;\n mwp?: boolean;\n useClassArray?: boolean;\n}\n\nexport function migrateAll(options: MigrateAllSchema): Rule {\n const base = { path: options.path || './src', dryRun: options.dryRun || false };\n\n return chain([\n schematic('migrate', { ...base, mwp: options.mwp || false }),\n schematic('migrate-eui-tabs', base),\n schematic('migrate-to-standalone', base),\n schematic('migrate-eui-alert', base),\n schematic('migrate-eui-progress-circle', base),\n schematic('migrate-eui-popover', base),\n schematic('migrate-eui-icon-toggle', base),\n schematic('migrate-eui-icon-svg', base),\n schematic('migrate-eui-fieldset', base),\n schematic('migrate-eui-avatar', base),\n schematic('migrate-eui-editor', base),\n schematic('migrate-eui-discussion-thread', base),\n schematic('migrate-eui-button', base),\n schematic('migrate-eui-accent', base),\n schematic('migrate-eui-toolbar-menu', base),\n schematic('migrate-eui-table', base),\n schematic('migrate-eui-chip-list', base),\n schematic('migrate-eui-chip', base),\n schematic('migrate-eui-tooltip', base),\n schematic('add-eui-imports', { ...base, useClassArray: options.useClassArray || false }),\n schematic('fix-no-multiple-empty-lines', base),\n ]);\n}\n",
1709
+ "sourceCode": "import { Rule, chain, schematic } from '@angular-devkit/schematics';\n\nexport interface MigrateAllSchema {\n path?: string;\n dryRun?: boolean;\n mwp?: boolean;\n useClassArray?: boolean;\n}\n\nexport function migrateAll(options: MigrateAllSchema): Rule {\n const base = { path: options.path || './src', dryRun: options.dryRun || false };\n\n return chain([\n schematic('migrate', { ...base, mwp: options.mwp || false }),\n schematic('migrate-eui-tabs', base),\n schematic('migrate-to-standalone', base),\n schematic('migrate-eui-alert', base),\n schematic('migrate-eui-progress-circle', base),\n schematic('migrate-eui-popover', base),\n schematic('migrate-eui-icon-toggle', base),\n schematic('migrate-eui-icon-svg', base),\n schematic('migrate-eui-fieldset', base),\n schematic('migrate-eui-avatar', base),\n schematic('migrate-eui-editor', base),\n schematic('migrate-eui-discussion-thread', base),\n schematic('migrate-eui-button', base),\n schematic('migrate-eui-accent', base),\n schematic('migrate-eui-toolbar-menu', base),\n schematic('migrate-eui-table', base),\n schematic('migrate-eui-chip-list', base),\n schematic('migrate-eui-chip', base),\n schematic('migrate-eui-tooltip', base),\n schematic('migrate-to-signals', base),\n schematic('add-eui-imports', { ...base, useClassArray: options.useClassArray || false }),\n schematic('fix-no-multiple-empty-lines', base),\n ]);\n}\n",
1651
1710
  "displayName": "MigrateAllSchema",
1652
1711
  "properties": [
1653
1712
  {
@@ -1708,6 +1767,50 @@
1708
1767
  "outgoing": []
1709
1768
  }
1710
1769
  },
1770
+ {
1771
+ "name": "MigrateResult",
1772
+ "id": "interface-MigrateResult-cac2ac952d8245647e8a48b450e8f127a36bcffb394cf2cd81fe9c0810ed02c19e5e1629dbf29a68a5c6f675aed99570e9ac04ae470e13315e20c92cc0c6c453",
1773
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
1774
+ "deprecated": false,
1775
+ "deprecationMessage": "",
1776
+ "type": "interface",
1777
+ "sourceCode": "import { DirEntry, Rule, SchematicContext, Tree } from '@angular-devkit/schematics';\nimport { parseTemplate, TmplAstElement, TmplAstNode } from '@angular/compiler';\nimport * as ts from 'typescript';\nimport { logDryRun, logDryRunNote } from '../utils/dry-run';\nimport { EUI_SIGNAL_MAP, EUI_SELECTOR_TO_CLASS } from './signal-map';\n\ninterface Schema {\n path?: string;\n dryRun?: boolean;\n}\n\ninterface Edit {\n start: number;\n end: number;\n replacement: string;\n}\n\n/**\n * Migrates consumer code that accesses EUI component instances programmatically.\n *\n * When EUI migrated @Input() → input(), @ViewChild() → viewChild(), and\n * @ContentChild() → contentChild(), properties that were plain class fields\n * became signal getters. Consumers who access them via @ViewChild need to\n * change `comp.prop` to `comp.prop()`.\n *\n * This schematic:\n * 1. Finds @ViewChild / @ContentChild fields typed as EUI component classes\n * 2. Resolves untyped @ViewChild('refName') by reading the component template\n * and matching #refName to an EUI element tag/selector\n * 3. Tracks which local variable names hold EUI component references (incl. aliases)\n * 4. Rewrites property accesses on those references: `ref.prop` → `ref.prop()`\n * (only for properties listed in the signal map)\n * 5. Does NOT touch template bindings — those are unaffected by signal migrations\n */\nexport function migrateToSignals(options: Schema = {}): Rule {\n return (tree: Tree, context: SchematicContext) => {\n const scanPath = options.path ? '/' + options.path.replace(/^\\.?\\//, '').replace(/\\/$/, '') : '';\n let fileCount = 0;\n let propCount = 0;\n\n visitDir(tree.getDir(scanPath || '/'), (path) => {\n if (!path.endsWith('.ts')) return;\n // Skip spec files — test code may use different patterns\n if (path.endsWith('.spec.ts')) return;\n\n const buffer = tree.read(path);\n if (!buffer) return;\n\n const original = buffer.toString('utf-8');\n\n // Fast bail: file must mention at least one EUI class name or have\n // ViewChild/ContentChild with string refs (which might reference EUI elements)\n if (!hasEuiReference(original) && !hasStringRefQuery(original)) return;\n\n const result = migrateTypeScript(original, path, tree, context); if (result.source !== original) {\n if (options.dryRun) {\n logDryRun(context, `Would migrate ${result.editCount} signal property access(es) in ${path}`);\n } else {\n tree.overwrite(path, result.source);\n }\n fileCount++;\n propCount += result.editCount;\n }\n });\n\n context.logger.info(`Migrated ${propCount} property access(es) to signal getters in ${fileCount} file(s).`);\n if (options.dryRun) {\n logDryRunNote(context);\n }\n return tree;\n };\n}\n\n/** Quick check: does the file reference any EUI class name from the signal map? */\nfunction hasEuiReference(source: string): boolean {\n for (const className of Object.keys(EUI_SIGNAL_MAP)) {\n if (source.includes(className)) return true;\n }\n return false;\n}\n\n/** Quick check: does the file have @ViewChild('...') or @ContentChild('...') with string refs? */\nfunction hasStringRefQuery(source: string): boolean {\n return /(@ViewChild|@ContentChild|@ViewChildren|@ContentChildren)\\s*\\(\\s*['\"]/.test(source);\n}\n\ninterface MigrateResult {\n source: string;\n editCount: number;\n}\n\nfunction migrateTypeScript(source: string, filePath: string, tree: Tree, context: SchematicContext): MigrateResult {\n const sourceFile = ts.createSourceFile(filePath, source, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);\n const edits: Edit[] = [];\n\n // Phase 0: Build template ref map (#refName → EUI class name) from the component's template\n const templateRefMap = buildTemplateRefMap(sourceFile, source, filePath, tree);\n\n // Phase 1: Collect all variables/properties typed as EUI classes\n const euiRefs = collectEuiReferences(sourceFile, source, templateRefMap);\n\n if (euiRefs.size === 0) {\n return { source, editCount: 0 };\n }\n\n // Phase 2: Find property accesses on those references and rewrite signal props\n const visitNode = (node: ts.Node): void => {\n // Match: ref.prop (PropertyAccessExpression)\n if (ts.isPropertyAccessExpression(node)) {\n const rewrite = tryRewritePropertyAccess(node, euiRefs, sourceFile, source);\n if (rewrite) {\n edits.push(rewrite);\n }\n }\n ts.forEachChild(node, visitNode);\n };\n\n ts.forEachChild(sourceFile, visitNode);\n\n if (edits.length === 0) {\n return { source, editCount: 0 };\n }\n\n return {\n source: applyEdits(source, edits),\n editCount: edits.length,\n };\n}\n\n/**\n * Scans the source file for class properties or variables typed as EUI component classes.\n * Returns a map: localName → Set of signal property names.\n *\n * Handles:\n * @ViewChild(EuiXxxComponent) name: EuiXxxComponent;\n * @ViewChild(EuiXxxComponent) name!: EuiXxxComponent;\n * @ViewChild('ref') name: EuiXxxComponent;\n * @ContentChild(EuiXxxComponent) name: EuiXxxComponent;\n * @ViewChild('ref') name: ElementRef; (resolved via template #ref → EUI selector)\n * someVar: EuiXxxComponent; (typed class field, even without decorator)\n * const alias = this.viewChildRef; (alias tracking)\n */\nfunction collectEuiReferences(\n sourceFile: ts.SourceFile,\n source: string,\n templateRefMap: Map<string, string>,\n): Map<string, ReadonlySet<string>> {\n const refs = new Map<string, ReadonlySet<string>>();\n\n // Pass 1: collect directly-typed references\n const visitDirect = (node: ts.Node): void => {\n // Class property declarations\n if (ts.isPropertyDeclaration(node) && node.name && ts.isIdentifier(node.name)) {\n const euiClass = resolveEuiClassName(node, sourceFile, templateRefMap);\n if (euiClass && EUI_SIGNAL_MAP[euiClass]) {\n refs.set(node.name.text, EUI_SIGNAL_MAP[euiClass]);\n }\n }\n\n // Variable declarations (const x: EuiXxxComponent = ...)\n if (ts.isVariableDeclaration(node) && ts.isIdentifier(node.name)) {\n const typeName = getTypeAnnotationName(node.type);\n if (typeName && EUI_SIGNAL_MAP[typeName]) {\n refs.set(node.name.text, EUI_SIGNAL_MAP[typeName]);\n }\n }\n\n // Parameter declarations (method(ref: EuiXxxComponent))\n if (ts.isParameter(node) && ts.isIdentifier(node.name)) {\n const typeName = getTypeAnnotationName(node.type);\n if (typeName && EUI_SIGNAL_MAP[typeName]) {\n refs.set(node.name.text, EUI_SIGNAL_MAP[typeName]);\n }\n }\n\n ts.forEachChild(node, visitDirect);\n };\n\n ts.forEachChild(sourceFile, visitDirect);\n\n // Pass 2: track aliases — variables assigned from already-tracked references\n // e.g. const alias = this.viewChildRef; or const alias = someParam;\n const visitAlias = (node: ts.Node): void => {\n if (ts.isVariableDeclaration(node) && ts.isIdentifier(node.name) && node.initializer) {\n // Skip if already tracked (has explicit type annotation)\n if (refs.has(node.name.text)) {\n ts.forEachChild(node, visitAlias);\n return;\n }\n\n const aliasedRef = resolveRefName(node.initializer);\n if (aliasedRef && refs.has(aliasedRef)) {\n refs.set(node.name.text, refs.get(aliasedRef)!);\n }\n }\n\n ts.forEachChild(node, visitAlias);\n };\n\n ts.forEachChild(sourceFile, visitAlias);\n return refs;\n}\n\n/**\n * Resolves the EUI class name from a property declaration.\n * Checks: type annotation → decorator class argument → template ref map.\n */\nfunction resolveEuiClassName(\n node: ts.PropertyDeclaration,\n sourceFile: ts.SourceFile,\n templateRefMap: Map<string, string>,\n): string | null {\n // Check type annotation first\n const typeName = getTypeAnnotationName(node.type);\n if (typeName && EUI_SIGNAL_MAP[typeName]) {\n return typeName;\n }\n\n // Check generic type argument: ElementRef<EuiXxxComponent>\n if (node.type && ts.isTypeReferenceNode(node.type) && node.type.typeArguments?.length) {\n const genericArg = getTypeAnnotationName(node.type.typeArguments[0]);\n if (genericArg && EUI_SIGNAL_MAP[genericArg]) {\n return genericArg;\n }\n }\n\n // Check decorator arguments: @ViewChild(EuiXxxComponent) or @ViewChild('refName')\n if (node.modifiers) {\n for (const modifier of node.modifiers) {\n if (!ts.isDecorator(modifier)) continue;\n if (!ts.isCallExpression(modifier.expression)) continue;\n\n const decoratorName = getDecoratorName(modifier.expression);\n if (!decoratorName) continue;\n if (!['ViewChild', 'ViewChildren', 'ContentChild', 'ContentChildren'].includes(decoratorName)) continue;\n\n const args = modifier.expression.arguments;\n if (args.length > 0) {\n const firstArg = args[0];\n\n // @ViewChild(EuiXxxComponent) — class reference\n if (ts.isIdentifier(firstArg) && EUI_SIGNAL_MAP[firstArg.text]) {\n return firstArg.text;\n }\n\n // @ViewChild('refName') — string template ref, resolve via template\n if (ts.isStringLiteralLike(firstArg)) {\n const refName = firstArg.text;\n const euiClass = templateRefMap.get(refName);\n if (euiClass && EUI_SIGNAL_MAP[euiClass]) {\n return euiClass;\n }\n }\n }\n }\n }\n\n return null;\n}\n\nfunction getDecoratorName(callExpr: ts.CallExpression): string | null {\n if (ts.isIdentifier(callExpr.expression)) {\n return callExpr.expression.text;\n }\n return null;\n}\n\nfunction getTypeAnnotationName(typeNode: ts.TypeNode | undefined): string | null {\n if (!typeNode) return null;\n if (ts.isTypeReferenceNode(typeNode) && ts.isIdentifier(typeNode.typeName)) {\n return typeNode.typeName.text;\n }\n return null;\n}\n\n/**\n * Checks if a property access `ref.prop` should be rewritten to `ref.prop()`.\n *\n * We rewrite if:\n * - `ref` is tracked in euiRefs\n * - `prop` is in the signal set for that EUI class\n * - The access is NOT already a call expression (not `ref.prop()` or `ref.prop(args)`)\n * - The access is NOT a write target (not `ref.prop = value`)\n * - The access is NOT a template binding argument (those are unaffected)\n */\nfunction tryRewritePropertyAccess(\n node: ts.PropertyAccessExpression,\n euiRefs: Map<string, ReadonlySet<string>>,\n sourceFile: ts.SourceFile,\n source: string,\n): Edit | null {\n const propName = node.name.text;\n\n // Resolve the reference name — handle `this.ref.prop` and `ref.prop`\n const refName = resolveRefName(node.expression);\n if (!refName) return null;\n\n const signalProps = euiRefs.get(refName);\n if (!signalProps || !signalProps.has(propName)) return null;\n\n // Skip if parent is already a call expression on this property: ref.prop(...)\n if (ts.isCallExpression(node.parent) && node.parent.expression === node) {\n return null;\n }\n\n // Skip if this is the left side of an assignment: ref.prop = value\n if (ts.isBinaryExpression(node.parent) &&\n node.parent.operatorToken.kind === ts.SyntaxKind.EqualsToken &&\n node.parent.left === node) {\n return null;\n }\n\n // Skip if this is a compound assignment: ref.prop += value, ref.prop &&= value, etc.\n if (ts.isBinaryExpression(node.parent) && isAssignmentOperator(node.parent.operatorToken.kind) && node.parent.left === node) {\n return null;\n }\n\n // Skip if this is used with delete: delete ref.prop\n if (ts.isDeleteExpression(node.parent) && node.parent.expression === node) {\n return null;\n }\n\n // Skip if inside a typeof: typeof ref.prop\n if (ts.isTypeOfExpression(node.parent) && node.parent.expression === node) {\n return null;\n }\n\n // Skip property access chains that go deeper: ref.prop.something → ref.prop().something\n // This IS correct — we still want to add ()\n\n // Rewrite: insert () after the property name\n const end = node.name.getEnd();\n return {\n start: end,\n end: end,\n replacement: '()',\n };\n}\n\nfunction isAssignmentOperator(kind: ts.SyntaxKind): boolean {\n return kind >= ts.SyntaxKind.FirstAssignment && kind <= ts.SyntaxKind.LastAssignment;\n}\n\n/**\n * Resolves a reference name from an expression.\n * Handles: `ref`, `this.ref`, `this._ref`\n */\nfunction resolveRefName(expr: ts.Expression): string | null {\n // Direct identifier: ref.prop\n if (ts.isIdentifier(expr)) {\n return expr.text;\n }\n\n // this.ref.prop\n if (ts.isPropertyAccessExpression(expr) && expr.expression.kind === ts.SyntaxKind.ThisKeyword) {\n return expr.name.text;\n }\n\n return null;\n}\n\n// ---------------------------------------------------------------------------\n// Template ref resolution\n// ---------------------------------------------------------------------------\n\n/**\n * Builds a map of template reference variable names (#ref) to EUI class names.\n *\n * Parses the component's template (inline or external) and finds elements like:\n * <eui-alert #myAlert> → myAlert → EuiAlertComponent\n * <input euiAutocomplete #ac> → ac → EuiAutocompleteComponent\n *\n * Returns Map<refName, euiClassName>.\n */\nfunction buildTemplateRefMap(\n sourceFile: ts.SourceFile,\n source: string,\n filePath: string,\n tree: Tree,\n): Map<string, string> {\n const refMap = new Map<string, string>();\n\n // Find @Component decorator\n const componentMeta = findComponentMetadata(sourceFile, source);\n if (!componentMeta) return refMap;\n\n let templateSource: string | null = null;\n\n if (componentMeta.inlineTemplate !== null) {\n templateSource = componentMeta.inlineTemplate;\n } else if (componentMeta.templateUrl) {\n // Resolve templateUrl relative to the TS file\n const dir = filePath.substring(0, filePath.lastIndexOf('/'));\n const templatePath = `${dir}/${componentMeta.templateUrl}`;\n const buffer = tree.read(templatePath);\n if (buffer) {\n templateSource = buffer.toString('utf-8');\n }\n }\n\n if (!templateSource) return refMap;\n\n // Parse the template and collect #refs\n try {\n const parsed = parseTemplate(templateSource, '', { preserveWhitespaces: true });\n collectTemplateRefs(parsed.nodes, refMap);\n } catch {\n // Template parse failure — silently skip (might be malformed or use third-party syntax)\n }\n\n return refMap;\n}\n\n/**\n * Extracts @Component metadata: templateUrl or inline template content.\n */\nfunction findComponentMetadata(\n sourceFile: ts.SourceFile,\n source: string,\n): { templateUrl: string | null; inlineTemplate: string | null } | null {\n let result: { templateUrl: string | null; inlineTemplate: string | null } | null = null;\n\n const visit = (node: ts.Node): void => {\n if (result) return;\n\n if (ts.isDecorator(node) && ts.isCallExpression(node.expression)) {\n const name = getDecoratorName(node.expression);\n if (name !== 'Component') {\n ts.forEachChild(node, visit);\n return;\n }\n\n const args = node.expression.arguments;\n if (args.length === 0 || !ts.isObjectLiteralExpression(args[0])) {\n ts.forEachChild(node, visit);\n return;\n }\n\n const meta: { templateUrl: string | null; inlineTemplate: string | null } = {\n templateUrl: null,\n inlineTemplate: null,\n };\n\n for (const prop of args[0].properties) {\n if (!ts.isPropertyAssignment(prop) || !ts.isIdentifier(prop.name)) continue;\n\n if (prop.name.text === 'templateUrl') {\n const init = unwrapExpression(prop.initializer);\n if (ts.isStringLiteralLike(init)) {\n meta.templateUrl = init.text;\n }\n }\n\n if (prop.name.text === 'template') {\n const init = unwrapExpression(prop.initializer);\n if (ts.isStringLiteralLike(init)) {\n meta.inlineTemplate = init.text;\n } else if (ts.isNoSubstitutionTemplateLiteral(init)) {\n meta.inlineTemplate = init.text;\n }\n }\n }\n\n result = meta;\n return;\n }\n\n ts.forEachChild(node, visit);\n };\n\n ts.forEachChild(sourceFile, visit);\n return result;\n}\n\nfunction unwrapExpression(expression: ts.Expression): ts.Expression {\n let current = expression;\n while (ts.isParenthesizedExpression(current)) current = current.expression;\n return current;\n}\n\n/**\n * Recursively walks template AST nodes, collecting #refName → EUI class name mappings.\n *\n * For each element with a template reference (#ref), we try to resolve its EUI class:\n * 1. Match element tag name against EUI_SELECTOR_TO_CLASS (e.g. 'eui-alert' → EuiAlertComponent)\n * 2. Match element attributes against attribute selectors (e.g. [euiAutocomplete] → EuiAutocompleteComponent)\n */\nfunction collectTemplateRefs(nodes: TmplAstNode[], refMap: Map<string, string>): void {\n for (const node of nodes) {\n if (node instanceof TmplAstElement) {\n if (node.references && node.references.length > 0) {\n const euiClass = resolveElementToEuiClass(node);\n if (euiClass) {\n for (const ref of node.references) {\n refMap.set(ref.name, euiClass);\n }\n }\n }\n collectTemplateRefs(node.children, refMap);\n }\n }\n}\n\n/**\n * Given a template element, resolves it to an EUI class name by checking:\n * 1. Tag name: <eui-alert> → look up 'eui-alert' in EUI_SELECTOR_TO_CLASS\n * 2. Attribute selectors: <input euiAutocomplete> → look up 'input[euiAutocomplete]' or '[euiAutocomplete]'\n */\nfunction resolveElementToEuiClass(element: TmplAstElement): string | null {\n const tag = element.name;\n\n // Direct tag match: eui-alert, eui-dialog, etc.\n if (EUI_SELECTOR_TO_CLASS[tag]) {\n return EUI_SELECTOR_TO_CLASS[tag];\n }\n\n // Attribute selector match: check all attributes against known patterns\n const allAttrNames = [\n ...element.attributes.map((a) => a.name),\n ...element.inputs.map((i) => i.name),\n ];\n\n for (const attrName of allAttrNames) {\n // Try tag[attr] pattern first (e.g. 'button[euiButton]', 'input[euiAutocomplete]')\n const tagAttrSelector = `${tag}[${attrName}]`;\n if (EUI_SELECTOR_TO_CLASS[tagAttrSelector]) {\n return EUI_SELECTOR_TO_CLASS[tagAttrSelector];\n }\n\n // Try [attr] pattern (e.g. '[euiTooltip]', '[euiLoading]')\n const attrSelector = `[${attrName}]`;\n if (EUI_SELECTOR_TO_CLASS[attrSelector]) {\n return EUI_SELECTOR_TO_CLASS[attrSelector];\n }\n }\n\n return null;\n}\n\n// ---------------------------------------------------------------------------\n// Edit helpers\n// ---------------------------------------------------------------------------\n\nfunction applyEdits(source: string, edits: Edit[]): string {\n const unique = deduplicateEdits(edits);\n let result = source;\n for (const edit of unique.sort((a, b) => b.start - a.start)) {\n result = result.slice(0, edit.start) + edit.replacement + result.slice(edit.end);\n }\n return result;\n}\n\nfunction deduplicateEdits(edits: Edit[]): Edit[] {\n const seen = new Map<string, Edit>();\n for (const edit of edits) {\n const key = `${edit.start}:${edit.end}`;\n seen.set(key, edit);\n }\n return Array.from(seen.values());\n}\n\nfunction visitDir(dir: DirEntry, callback: (path: string) => void): void {\n for (const file of dir.subfiles) {\n if (file.endsWith('.d.ts')) continue;\n if (!file.endsWith('.ts')) continue;\n callback(`${dir.path}/${file}`);\n }\n for (const sub of dir.subdirs) {\n if (sub === 'node_modules' || sub === 'dist') continue;\n visitDir(dir.dir(sub), callback);\n }\n}\n",
1778
+ "displayName": "MigrateResult",
1779
+ "properties": [
1780
+ {
1781
+ "name": "editCount",
1782
+ "coverageIgnore": false,
1783
+ "deprecated": false,
1784
+ "deprecationMessage": "",
1785
+ "type": "number",
1786
+ "indexKey": "",
1787
+ "optional": false,
1788
+ "description": "",
1789
+ "line": 89,
1790
+ "rawdescription": "\n"
1791
+ },
1792
+ {
1793
+ "name": "source",
1794
+ "coverageIgnore": false,
1795
+ "deprecated": false,
1796
+ "deprecationMessage": "",
1797
+ "type": "string",
1798
+ "indexKey": "",
1799
+ "optional": false,
1800
+ "description": "",
1801
+ "line": 88,
1802
+ "rawdescription": "\n"
1803
+ }
1804
+ ],
1805
+ "indexSignatures": [],
1806
+ "kind": 172,
1807
+ "methods": [],
1808
+ "extends": [],
1809
+ "relationships": {
1810
+ "incoming": [],
1811
+ "outgoing": []
1812
+ }
1813
+ },
1711
1814
  {
1712
1815
  "name": "MigrationResult",
1713
1816
  "id": "interface-MigrationResult-760dec88d3f709d5b38226e55f7cbfb1e5fabcea6c004fd46e611be1dd563b8b247e9e6c77667e5582fe7b443374ba2c4facd2b2db2985edb46c9a4a37a8a876",
@@ -3044,7 +3147,54 @@
3044
3147
  },
3045
3148
  {
3046
3149
  "name": "Schema",
3047
- "id": "interface-Schema-817c4b549cc3eab9fcf4936acab2e71182d90a4480369f5c003cbbda10792efa587ad99d65acf049f64e7030e32589e4fabc4a6d7a5621e4fe54725ef91dc9e8-21",
3150
+ "id": "interface-Schema-cac2ac952d8245647e8a48b450e8f127a36bcffb394cf2cd81fe9c0810ed02c19e5e1629dbf29a68a5c6f675aed99570e9ac04ae470e13315e20c92cc0c6c453-21",
3151
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
3152
+ "deprecated": false,
3153
+ "deprecationMessage": "",
3154
+ "type": "interface",
3155
+ "sourceCode": "import { DirEntry, Rule, SchematicContext, Tree } from '@angular-devkit/schematics';\nimport { parseTemplate, TmplAstElement, TmplAstNode } from '@angular/compiler';\nimport * as ts from 'typescript';\nimport { logDryRun, logDryRunNote } from '../utils/dry-run';\nimport { EUI_SIGNAL_MAP, EUI_SELECTOR_TO_CLASS } from './signal-map';\n\ninterface Schema {\n path?: string;\n dryRun?: boolean;\n}\n\ninterface Edit {\n start: number;\n end: number;\n replacement: string;\n}\n\n/**\n * Migrates consumer code that accesses EUI component instances programmatically.\n *\n * When EUI migrated @Input() → input(), @ViewChild() → viewChild(), and\n * @ContentChild() → contentChild(), properties that were plain class fields\n * became signal getters. Consumers who access them via @ViewChild need to\n * change `comp.prop` to `comp.prop()`.\n *\n * This schematic:\n * 1. Finds @ViewChild / @ContentChild fields typed as EUI component classes\n * 2. Resolves untyped @ViewChild('refName') by reading the component template\n * and matching #refName to an EUI element tag/selector\n * 3. Tracks which local variable names hold EUI component references (incl. aliases)\n * 4. Rewrites property accesses on those references: `ref.prop` → `ref.prop()`\n * (only for properties listed in the signal map)\n * 5. Does NOT touch template bindings — those are unaffected by signal migrations\n */\nexport function migrateToSignals(options: Schema = {}): Rule {\n return (tree: Tree, context: SchematicContext) => {\n const scanPath = options.path ? '/' + options.path.replace(/^\\.?\\//, '').replace(/\\/$/, '') : '';\n let fileCount = 0;\n let propCount = 0;\n\n visitDir(tree.getDir(scanPath || '/'), (path) => {\n if (!path.endsWith('.ts')) return;\n // Skip spec files — test code may use different patterns\n if (path.endsWith('.spec.ts')) return;\n\n const buffer = tree.read(path);\n if (!buffer) return;\n\n const original = buffer.toString('utf-8');\n\n // Fast bail: file must mention at least one EUI class name or have\n // ViewChild/ContentChild with string refs (which might reference EUI elements)\n if (!hasEuiReference(original) && !hasStringRefQuery(original)) return;\n\n const result = migrateTypeScript(original, path, tree, context); if (result.source !== original) {\n if (options.dryRun) {\n logDryRun(context, `Would migrate ${result.editCount} signal property access(es) in ${path}`);\n } else {\n tree.overwrite(path, result.source);\n }\n fileCount++;\n propCount += result.editCount;\n }\n });\n\n context.logger.info(`Migrated ${propCount} property access(es) to signal getters in ${fileCount} file(s).`);\n if (options.dryRun) {\n logDryRunNote(context);\n }\n return tree;\n };\n}\n\n/** Quick check: does the file reference any EUI class name from the signal map? */\nfunction hasEuiReference(source: string): boolean {\n for (const className of Object.keys(EUI_SIGNAL_MAP)) {\n if (source.includes(className)) return true;\n }\n return false;\n}\n\n/** Quick check: does the file have @ViewChild('...') or @ContentChild('...') with string refs? */\nfunction hasStringRefQuery(source: string): boolean {\n return /(@ViewChild|@ContentChild|@ViewChildren|@ContentChildren)\\s*\\(\\s*['\"]/.test(source);\n}\n\ninterface MigrateResult {\n source: string;\n editCount: number;\n}\n\nfunction migrateTypeScript(source: string, filePath: string, tree: Tree, context: SchematicContext): MigrateResult {\n const sourceFile = ts.createSourceFile(filePath, source, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);\n const edits: Edit[] = [];\n\n // Phase 0: Build template ref map (#refName → EUI class name) from the component's template\n const templateRefMap = buildTemplateRefMap(sourceFile, source, filePath, tree);\n\n // Phase 1: Collect all variables/properties typed as EUI classes\n const euiRefs = collectEuiReferences(sourceFile, source, templateRefMap);\n\n if (euiRefs.size === 0) {\n return { source, editCount: 0 };\n }\n\n // Phase 2: Find property accesses on those references and rewrite signal props\n const visitNode = (node: ts.Node): void => {\n // Match: ref.prop (PropertyAccessExpression)\n if (ts.isPropertyAccessExpression(node)) {\n const rewrite = tryRewritePropertyAccess(node, euiRefs, sourceFile, source);\n if (rewrite) {\n edits.push(rewrite);\n }\n }\n ts.forEachChild(node, visitNode);\n };\n\n ts.forEachChild(sourceFile, visitNode);\n\n if (edits.length === 0) {\n return { source, editCount: 0 };\n }\n\n return {\n source: applyEdits(source, edits),\n editCount: edits.length,\n };\n}\n\n/**\n * Scans the source file for class properties or variables typed as EUI component classes.\n * Returns a map: localName → Set of signal property names.\n *\n * Handles:\n * @ViewChild(EuiXxxComponent) name: EuiXxxComponent;\n * @ViewChild(EuiXxxComponent) name!: EuiXxxComponent;\n * @ViewChild('ref') name: EuiXxxComponent;\n * @ContentChild(EuiXxxComponent) name: EuiXxxComponent;\n * @ViewChild('ref') name: ElementRef; (resolved via template #ref → EUI selector)\n * someVar: EuiXxxComponent; (typed class field, even without decorator)\n * const alias = this.viewChildRef; (alias tracking)\n */\nfunction collectEuiReferences(\n sourceFile: ts.SourceFile,\n source: string,\n templateRefMap: Map<string, string>,\n): Map<string, ReadonlySet<string>> {\n const refs = new Map<string, ReadonlySet<string>>();\n\n // Pass 1: collect directly-typed references\n const visitDirect = (node: ts.Node): void => {\n // Class property declarations\n if (ts.isPropertyDeclaration(node) && node.name && ts.isIdentifier(node.name)) {\n const euiClass = resolveEuiClassName(node, sourceFile, templateRefMap);\n if (euiClass && EUI_SIGNAL_MAP[euiClass]) {\n refs.set(node.name.text, EUI_SIGNAL_MAP[euiClass]);\n }\n }\n\n // Variable declarations (const x: EuiXxxComponent = ...)\n if (ts.isVariableDeclaration(node) && ts.isIdentifier(node.name)) {\n const typeName = getTypeAnnotationName(node.type);\n if (typeName && EUI_SIGNAL_MAP[typeName]) {\n refs.set(node.name.text, EUI_SIGNAL_MAP[typeName]);\n }\n }\n\n // Parameter declarations (method(ref: EuiXxxComponent))\n if (ts.isParameter(node) && ts.isIdentifier(node.name)) {\n const typeName = getTypeAnnotationName(node.type);\n if (typeName && EUI_SIGNAL_MAP[typeName]) {\n refs.set(node.name.text, EUI_SIGNAL_MAP[typeName]);\n }\n }\n\n ts.forEachChild(node, visitDirect);\n };\n\n ts.forEachChild(sourceFile, visitDirect);\n\n // Pass 2: track aliases — variables assigned from already-tracked references\n // e.g. const alias = this.viewChildRef; or const alias = someParam;\n const visitAlias = (node: ts.Node): void => {\n if (ts.isVariableDeclaration(node) && ts.isIdentifier(node.name) && node.initializer) {\n // Skip if already tracked (has explicit type annotation)\n if (refs.has(node.name.text)) {\n ts.forEachChild(node, visitAlias);\n return;\n }\n\n const aliasedRef = resolveRefName(node.initializer);\n if (aliasedRef && refs.has(aliasedRef)) {\n refs.set(node.name.text, refs.get(aliasedRef)!);\n }\n }\n\n ts.forEachChild(node, visitAlias);\n };\n\n ts.forEachChild(sourceFile, visitAlias);\n return refs;\n}\n\n/**\n * Resolves the EUI class name from a property declaration.\n * Checks: type annotation → decorator class argument → template ref map.\n */\nfunction resolveEuiClassName(\n node: ts.PropertyDeclaration,\n sourceFile: ts.SourceFile,\n templateRefMap: Map<string, string>,\n): string | null {\n // Check type annotation first\n const typeName = getTypeAnnotationName(node.type);\n if (typeName && EUI_SIGNAL_MAP[typeName]) {\n return typeName;\n }\n\n // Check generic type argument: ElementRef<EuiXxxComponent>\n if (node.type && ts.isTypeReferenceNode(node.type) && node.type.typeArguments?.length) {\n const genericArg = getTypeAnnotationName(node.type.typeArguments[0]);\n if (genericArg && EUI_SIGNAL_MAP[genericArg]) {\n return genericArg;\n }\n }\n\n // Check decorator arguments: @ViewChild(EuiXxxComponent) or @ViewChild('refName')\n if (node.modifiers) {\n for (const modifier of node.modifiers) {\n if (!ts.isDecorator(modifier)) continue;\n if (!ts.isCallExpression(modifier.expression)) continue;\n\n const decoratorName = getDecoratorName(modifier.expression);\n if (!decoratorName) continue;\n if (!['ViewChild', 'ViewChildren', 'ContentChild', 'ContentChildren'].includes(decoratorName)) continue;\n\n const args = modifier.expression.arguments;\n if (args.length > 0) {\n const firstArg = args[0];\n\n // @ViewChild(EuiXxxComponent) — class reference\n if (ts.isIdentifier(firstArg) && EUI_SIGNAL_MAP[firstArg.text]) {\n return firstArg.text;\n }\n\n // @ViewChild('refName') — string template ref, resolve via template\n if (ts.isStringLiteralLike(firstArg)) {\n const refName = firstArg.text;\n const euiClass = templateRefMap.get(refName);\n if (euiClass && EUI_SIGNAL_MAP[euiClass]) {\n return euiClass;\n }\n }\n }\n }\n }\n\n return null;\n}\n\nfunction getDecoratorName(callExpr: ts.CallExpression): string | null {\n if (ts.isIdentifier(callExpr.expression)) {\n return callExpr.expression.text;\n }\n return null;\n}\n\nfunction getTypeAnnotationName(typeNode: ts.TypeNode | undefined): string | null {\n if (!typeNode) return null;\n if (ts.isTypeReferenceNode(typeNode) && ts.isIdentifier(typeNode.typeName)) {\n return typeNode.typeName.text;\n }\n return null;\n}\n\n/**\n * Checks if a property access `ref.prop` should be rewritten to `ref.prop()`.\n *\n * We rewrite if:\n * - `ref` is tracked in euiRefs\n * - `prop` is in the signal set for that EUI class\n * - The access is NOT already a call expression (not `ref.prop()` or `ref.prop(args)`)\n * - The access is NOT a write target (not `ref.prop = value`)\n * - The access is NOT a template binding argument (those are unaffected)\n */\nfunction tryRewritePropertyAccess(\n node: ts.PropertyAccessExpression,\n euiRefs: Map<string, ReadonlySet<string>>,\n sourceFile: ts.SourceFile,\n source: string,\n): Edit | null {\n const propName = node.name.text;\n\n // Resolve the reference name — handle `this.ref.prop` and `ref.prop`\n const refName = resolveRefName(node.expression);\n if (!refName) return null;\n\n const signalProps = euiRefs.get(refName);\n if (!signalProps || !signalProps.has(propName)) return null;\n\n // Skip if parent is already a call expression on this property: ref.prop(...)\n if (ts.isCallExpression(node.parent) && node.parent.expression === node) {\n return null;\n }\n\n // Skip if this is the left side of an assignment: ref.prop = value\n if (ts.isBinaryExpression(node.parent) &&\n node.parent.operatorToken.kind === ts.SyntaxKind.EqualsToken &&\n node.parent.left === node) {\n return null;\n }\n\n // Skip if this is a compound assignment: ref.prop += value, ref.prop &&= value, etc.\n if (ts.isBinaryExpression(node.parent) && isAssignmentOperator(node.parent.operatorToken.kind) && node.parent.left === node) {\n return null;\n }\n\n // Skip if this is used with delete: delete ref.prop\n if (ts.isDeleteExpression(node.parent) && node.parent.expression === node) {\n return null;\n }\n\n // Skip if inside a typeof: typeof ref.prop\n if (ts.isTypeOfExpression(node.parent) && node.parent.expression === node) {\n return null;\n }\n\n // Skip property access chains that go deeper: ref.prop.something → ref.prop().something\n // This IS correct — we still want to add ()\n\n // Rewrite: insert () after the property name\n const end = node.name.getEnd();\n return {\n start: end,\n end: end,\n replacement: '()',\n };\n}\n\nfunction isAssignmentOperator(kind: ts.SyntaxKind): boolean {\n return kind >= ts.SyntaxKind.FirstAssignment && kind <= ts.SyntaxKind.LastAssignment;\n}\n\n/**\n * Resolves a reference name from an expression.\n * Handles: `ref`, `this.ref`, `this._ref`\n */\nfunction resolveRefName(expr: ts.Expression): string | null {\n // Direct identifier: ref.prop\n if (ts.isIdentifier(expr)) {\n return expr.text;\n }\n\n // this.ref.prop\n if (ts.isPropertyAccessExpression(expr) && expr.expression.kind === ts.SyntaxKind.ThisKeyword) {\n return expr.name.text;\n }\n\n return null;\n}\n\n// ---------------------------------------------------------------------------\n// Template ref resolution\n// ---------------------------------------------------------------------------\n\n/**\n * Builds a map of template reference variable names (#ref) to EUI class names.\n *\n * Parses the component's template (inline or external) and finds elements like:\n * <eui-alert #myAlert> → myAlert → EuiAlertComponent\n * <input euiAutocomplete #ac> → ac → EuiAutocompleteComponent\n *\n * Returns Map<refName, euiClassName>.\n */\nfunction buildTemplateRefMap(\n sourceFile: ts.SourceFile,\n source: string,\n filePath: string,\n tree: Tree,\n): Map<string, string> {\n const refMap = new Map<string, string>();\n\n // Find @Component decorator\n const componentMeta = findComponentMetadata(sourceFile, source);\n if (!componentMeta) return refMap;\n\n let templateSource: string | null = null;\n\n if (componentMeta.inlineTemplate !== null) {\n templateSource = componentMeta.inlineTemplate;\n } else if (componentMeta.templateUrl) {\n // Resolve templateUrl relative to the TS file\n const dir = filePath.substring(0, filePath.lastIndexOf('/'));\n const templatePath = `${dir}/${componentMeta.templateUrl}`;\n const buffer = tree.read(templatePath);\n if (buffer) {\n templateSource = buffer.toString('utf-8');\n }\n }\n\n if (!templateSource) return refMap;\n\n // Parse the template and collect #refs\n try {\n const parsed = parseTemplate(templateSource, '', { preserveWhitespaces: true });\n collectTemplateRefs(parsed.nodes, refMap);\n } catch {\n // Template parse failure — silently skip (might be malformed or use third-party syntax)\n }\n\n return refMap;\n}\n\n/**\n * Extracts @Component metadata: templateUrl or inline template content.\n */\nfunction findComponentMetadata(\n sourceFile: ts.SourceFile,\n source: string,\n): { templateUrl: string | null; inlineTemplate: string | null } | null {\n let result: { templateUrl: string | null; inlineTemplate: string | null } | null = null;\n\n const visit = (node: ts.Node): void => {\n if (result) return;\n\n if (ts.isDecorator(node) && ts.isCallExpression(node.expression)) {\n const name = getDecoratorName(node.expression);\n if (name !== 'Component') {\n ts.forEachChild(node, visit);\n return;\n }\n\n const args = node.expression.arguments;\n if (args.length === 0 || !ts.isObjectLiteralExpression(args[0])) {\n ts.forEachChild(node, visit);\n return;\n }\n\n const meta: { templateUrl: string | null; inlineTemplate: string | null } = {\n templateUrl: null,\n inlineTemplate: null,\n };\n\n for (const prop of args[0].properties) {\n if (!ts.isPropertyAssignment(prop) || !ts.isIdentifier(prop.name)) continue;\n\n if (prop.name.text === 'templateUrl') {\n const init = unwrapExpression(prop.initializer);\n if (ts.isStringLiteralLike(init)) {\n meta.templateUrl = init.text;\n }\n }\n\n if (prop.name.text === 'template') {\n const init = unwrapExpression(prop.initializer);\n if (ts.isStringLiteralLike(init)) {\n meta.inlineTemplate = init.text;\n } else if (ts.isNoSubstitutionTemplateLiteral(init)) {\n meta.inlineTemplate = init.text;\n }\n }\n }\n\n result = meta;\n return;\n }\n\n ts.forEachChild(node, visit);\n };\n\n ts.forEachChild(sourceFile, visit);\n return result;\n}\n\nfunction unwrapExpression(expression: ts.Expression): ts.Expression {\n let current = expression;\n while (ts.isParenthesizedExpression(current)) current = current.expression;\n return current;\n}\n\n/**\n * Recursively walks template AST nodes, collecting #refName → EUI class name mappings.\n *\n * For each element with a template reference (#ref), we try to resolve its EUI class:\n * 1. Match element tag name against EUI_SELECTOR_TO_CLASS (e.g. 'eui-alert' → EuiAlertComponent)\n * 2. Match element attributes against attribute selectors (e.g. [euiAutocomplete] → EuiAutocompleteComponent)\n */\nfunction collectTemplateRefs(nodes: TmplAstNode[], refMap: Map<string, string>): void {\n for (const node of nodes) {\n if (node instanceof TmplAstElement) {\n if (node.references && node.references.length > 0) {\n const euiClass = resolveElementToEuiClass(node);\n if (euiClass) {\n for (const ref of node.references) {\n refMap.set(ref.name, euiClass);\n }\n }\n }\n collectTemplateRefs(node.children, refMap);\n }\n }\n}\n\n/**\n * Given a template element, resolves it to an EUI class name by checking:\n * 1. Tag name: <eui-alert> → look up 'eui-alert' in EUI_SELECTOR_TO_CLASS\n * 2. Attribute selectors: <input euiAutocomplete> → look up 'input[euiAutocomplete]' or '[euiAutocomplete]'\n */\nfunction resolveElementToEuiClass(element: TmplAstElement): string | null {\n const tag = element.name;\n\n // Direct tag match: eui-alert, eui-dialog, etc.\n if (EUI_SELECTOR_TO_CLASS[tag]) {\n return EUI_SELECTOR_TO_CLASS[tag];\n }\n\n // Attribute selector match: check all attributes against known patterns\n const allAttrNames = [\n ...element.attributes.map((a) => a.name),\n ...element.inputs.map((i) => i.name),\n ];\n\n for (const attrName of allAttrNames) {\n // Try tag[attr] pattern first (e.g. 'button[euiButton]', 'input[euiAutocomplete]')\n const tagAttrSelector = `${tag}[${attrName}]`;\n if (EUI_SELECTOR_TO_CLASS[tagAttrSelector]) {\n return EUI_SELECTOR_TO_CLASS[tagAttrSelector];\n }\n\n // Try [attr] pattern (e.g. '[euiTooltip]', '[euiLoading]')\n const attrSelector = `[${attrName}]`;\n if (EUI_SELECTOR_TO_CLASS[attrSelector]) {\n return EUI_SELECTOR_TO_CLASS[attrSelector];\n }\n }\n\n return null;\n}\n\n// ---------------------------------------------------------------------------\n// Edit helpers\n// ---------------------------------------------------------------------------\n\nfunction applyEdits(source: string, edits: Edit[]): string {\n const unique = deduplicateEdits(edits);\n let result = source;\n for (const edit of unique.sort((a, b) => b.start - a.start)) {\n result = result.slice(0, edit.start) + edit.replacement + result.slice(edit.end);\n }\n return result;\n}\n\nfunction deduplicateEdits(edits: Edit[]): Edit[] {\n const seen = new Map<string, Edit>();\n for (const edit of edits) {\n const key = `${edit.start}:${edit.end}`;\n seen.set(key, edit);\n }\n return Array.from(seen.values());\n}\n\nfunction visitDir(dir: DirEntry, callback: (path: string) => void): void {\n for (const file of dir.subfiles) {\n if (file.endsWith('.d.ts')) continue;\n if (!file.endsWith('.ts')) continue;\n callback(`${dir.path}/${file}`);\n }\n for (const sub of dir.subdirs) {\n if (sub === 'node_modules' || sub === 'dist') continue;\n visitDir(dir.dir(sub), callback);\n }\n}\n",
3156
+ "displayName": "Schema",
3157
+ "properties": [
3158
+ {
3159
+ "name": "dryRun",
3160
+ "coverageIgnore": false,
3161
+ "deprecated": false,
3162
+ "deprecationMessage": "",
3163
+ "type": "boolean",
3164
+ "indexKey": "",
3165
+ "optional": true,
3166
+ "description": "",
3167
+ "line": 9,
3168
+ "rawdescription": "\n"
3169
+ },
3170
+ {
3171
+ "name": "path",
3172
+ "coverageIgnore": false,
3173
+ "deprecated": false,
3174
+ "deprecationMessage": "",
3175
+ "type": "string",
3176
+ "indexKey": "",
3177
+ "optional": true,
3178
+ "description": "",
3179
+ "line": 8,
3180
+ "rawdescription": "\n"
3181
+ }
3182
+ ],
3183
+ "indexSignatures": [],
3184
+ "kind": 172,
3185
+ "methods": [],
3186
+ "extends": [],
3187
+ "isDuplicate": true,
3188
+ "duplicateId": 21,
3189
+ "duplicateName": "Schema-21",
3190
+ "relationships": {
3191
+ "incoming": [],
3192
+ "outgoing": []
3193
+ }
3194
+ },
3195
+ {
3196
+ "name": "Schema",
3197
+ "id": "interface-Schema-817c4b549cc3eab9fcf4936acab2e71182d90a4480369f5c003cbbda10792efa587ad99d65acf049f64e7030e32589e4fabc4a6d7a5621e4fe54725ef91dc9e8-22",
3048
3198
  "file": "packages/core/schematics/migrate-to-standalone/index.ts",
3049
3199
  "deprecated": false,
3050
3200
  "deprecationMessage": "",
@@ -3082,8 +3232,8 @@
3082
3232
  "methods": [],
3083
3233
  "extends": [],
3084
3234
  "isDuplicate": true,
3085
- "duplicateId": 21,
3086
- "duplicateName": "Schema-21",
3235
+ "duplicateId": 22,
3236
+ "duplicateName": "Schema-22",
3087
3237
  "relationships": {
3088
3238
  "incoming": [],
3089
3239
  "outgoing": []
@@ -19523,13 +19673,13 @@
19523
19673
  },
19524
19674
  {
19525
19675
  "name": "TranslateLoaderMock",
19526
- "id": "class-TranslateLoaderMock-a6db37044983724bfab8f8eb6fbaf6bb1f4b1de1651ef5303a344a4b606cbe68e1bf0bdbe45bd473e1c77e446058e133e85517ed7e8fda4b4be59a70ef96bd06",
19676
+ "id": "class-TranslateLoaderMock-d42afa990d476989657d92ef3f9c88346ef461191fc8641719f83d538694483a6f785c8618d8ee729faee7c37e723a1fdfcac95badfa6e5259f869ebe95cccad",
19527
19677
  "file": "packages/core/src/lib/mocks/translate.module.mock.ts",
19528
19678
  "coverageIgnore": false,
19529
19679
  "deprecated": false,
19530
19680
  "deprecationMessage": "",
19531
19681
  "type": "class",
19532
- "sourceCode": "import { AfterViewChecked, Directive, ElementRef, Input, NgModule, Pipe, PipeTransform, inject, signal } from '@angular/core';\nimport { LangChangeEvent, TranslateLoader, TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\n\nexport const TRANSLATED_STRING = 'i18n';\nexport const DEFAULT_LANGUAGE = 'en';\n\nexport class TranslateServiceMock {\n onLangChangeSubject: Subject<LangChangeEvent> = new Subject();\n onTranslationChangeSubject: Subject<string> = new Subject();\n onFallbackLangChangeSubject: Subject<string> = new Subject();\n isLoadedSubject: BehaviorSubject<boolean> = new BehaviorSubject(true);\n\n onLangChange: Observable<LangChangeEvent> = this.onLangChangeSubject.asObservable();\n onTranslationChange: Observable<string> = this.onTranslationChangeSubject.asObservable();\n onFallbackLangChange: Observable<string> = this.onFallbackLangChangeSubject.asObservable();\n isLoaded: Observable<boolean> = this.isLoadedSubject.asObservable();\n\n currentLang = signal<string | null>(null);\n\n languages: string[] = [DEFAULT_LANGUAGE];\n\n get(content: string): Observable<string> {\n return of(TRANSLATED_STRING + content);\n }\n\n use(lang: string): void {\n this.currentLang.set(lang);\n this.onLangChangeSubject.next({ lang } as LangChangeEvent);\n }\n\n addLangs(langs: string[]): void {\n this.languages = [...this.languages, ...langs];\n }\n\n getBrowserLang(): string {\n return DEFAULT_LANGUAGE;\n }\n\n getLangs(): string[] {\n return this.languages;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getTranslation(): Observable<any> {\n return of({});\n }\n\n instant(key: string | string[]): string {\n return TRANSLATED_STRING + key.toString();\n }\n\n setFallbackLang(lang: string): void {\n this.onFallbackLangChangeSubject.next(lang);\n }\n}\n\n@Pipe({ name: 'translate' })\nexport class TranslateMockPipe implements PipeTransform {\n transform(text: string): string {\n return !text ? TRANSLATED_STRING : `${text}-${TRANSLATED_STRING}`;\n }\n}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[translate]',\n})\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport class TranslateMockDirective implements AfterViewChecked {\n @Input()\n translateParams: any;\n\n private readonly _element = inject(ElementRef);\n\n ngAfterViewChecked(): void {\n this._element.nativeElement.innerText += TRANSLATED_STRING;\n }\n}\n\nexport class TranslateLoaderMock implements TranslateLoader {\n getTranslation(): Observable<Record<string, string>> {\n return of({});\n }\n}\n\n@NgModule({\n imports: [TranslateMockPipe, TranslateMockDirective],\n exports: [TranslateMockPipe, TranslateMockDirective],\n providers: [\n { provide: TranslateService, useClass: TranslateServiceMock },\n { provide: TranslateLoader, useClass: TranslateLoaderMock },\n ],\n})\nexport class TranslateMockModule {}\n",
19682
+ "sourceCode": "import {\n AfterViewChecked,\n Directive,\n ElementRef,\n Input,\n NgModule,\n Pipe,\n PipeTransform,\n inject,\n signal,\n input,\n} from '@angular/core';\nimport { LangChangeEvent, TranslateLoader, TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\n\nexport const TRANSLATED_STRING = 'i18n';\nexport const DEFAULT_LANGUAGE = 'en';\n\nexport class TranslateServiceMock {\n onLangChangeSubject: Subject<LangChangeEvent> = new Subject();\n onTranslationChangeSubject: Subject<string> = new Subject();\n onFallbackLangChangeSubject: Subject<string> = new Subject();\n isLoadedSubject: BehaviorSubject<boolean> = new BehaviorSubject(true);\n\n onLangChange: Observable<LangChangeEvent> = this.onLangChangeSubject.asObservable();\n onTranslationChange: Observable<string> = this.onTranslationChangeSubject.asObservable();\n onFallbackLangChange: Observable<string> = this.onFallbackLangChangeSubject.asObservable();\n isLoaded: Observable<boolean> = this.isLoadedSubject.asObservable();\n\n currentLang = signal<string | null>(null);\n\n languages: string[] = [DEFAULT_LANGUAGE];\n\n get(content: string): Observable<string> {\n return of(TRANSLATED_STRING + content);\n }\n\n use(lang: string): void {\n this.currentLang.set(lang);\n this.onLangChangeSubject.next({ lang } as LangChangeEvent);\n }\n\n addLangs(langs: string[]): void {\n this.languages = [...this.languages, ...langs];\n }\n\n getBrowserLang(): string {\n return DEFAULT_LANGUAGE;\n }\n\n getLangs(): string[] {\n return this.languages;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getTranslation(): Observable<any> {\n return of({});\n }\n\n instant(key: string | string[]): string {\n return TRANSLATED_STRING + key.toString();\n }\n\n setFallbackLang(lang: string): void {\n this.onFallbackLangChangeSubject.next(lang);\n }\n}\n\n@Pipe({ name: 'translate' })\nexport class TranslateMockPipe implements PipeTransform {\n transform(text: string): string {\n return !text ? TRANSLATED_STRING : `${text}-${TRANSLATED_STRING}`;\n }\n}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[translate]',\n})\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport class TranslateMockDirective implements AfterViewChecked {\n readonly translateParams = input();\n\n private readonly _element = inject(ElementRef);\n\n ngAfterViewChecked(): void {\n this._element.nativeElement.innerText += TRANSLATED_STRING;\n }\n}\n\nexport class TranslateLoaderMock implements TranslateLoader {\n getTranslation(): Observable<Record<string, string>> {\n return of({});\n }\n}\n\n@NgModule({\n imports: [TranslateMockPipe, TranslateMockDirective],\n exports: [TranslateMockPipe, TranslateMockDirective],\n providers: [\n { provide: TranslateService, useClass: TranslateServiceMock },\n { provide: TranslateLoader, useClass: TranslateLoaderMock },\n ],\n})\nexport class TranslateMockModule {}\n",
19533
19683
  "displayName": "TranslateLoaderMock",
19534
19684
  "inputsClass": [],
19535
19685
  "outputsClass": [],
@@ -19542,7 +19692,7 @@
19542
19692
  "optional": false,
19543
19693
  "returnType": "Observable<Record<string, string>>",
19544
19694
  "typeParameters": [],
19545
- "line": 85,
19695
+ "line": 95,
19546
19696
  "deprecated": false,
19547
19697
  "deprecationMessage": "",
19548
19698
  "rawdescription": "\n",
@@ -19568,13 +19718,13 @@
19568
19718
  },
19569
19719
  {
19570
19720
  "name": "TranslateServiceMock",
19571
- "id": "class-TranslateServiceMock-a6db37044983724bfab8f8eb6fbaf6bb1f4b1de1651ef5303a344a4b606cbe68e1bf0bdbe45bd473e1c77e446058e133e85517ed7e8fda4b4be59a70ef96bd06",
19721
+ "id": "class-TranslateServiceMock-d42afa990d476989657d92ef3f9c88346ef461191fc8641719f83d538694483a6f785c8618d8ee729faee7c37e723a1fdfcac95badfa6e5259f869ebe95cccad",
19572
19722
  "file": "packages/core/src/lib/mocks/translate.module.mock.ts",
19573
19723
  "coverageIgnore": false,
19574
19724
  "deprecated": false,
19575
19725
  "deprecationMessage": "",
19576
19726
  "type": "class",
19577
- "sourceCode": "import { AfterViewChecked, Directive, ElementRef, Input, NgModule, Pipe, PipeTransform, inject, signal } from '@angular/core';\nimport { LangChangeEvent, TranslateLoader, TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\n\nexport const TRANSLATED_STRING = 'i18n';\nexport const DEFAULT_LANGUAGE = 'en';\n\nexport class TranslateServiceMock {\n onLangChangeSubject: Subject<LangChangeEvent> = new Subject();\n onTranslationChangeSubject: Subject<string> = new Subject();\n onFallbackLangChangeSubject: Subject<string> = new Subject();\n isLoadedSubject: BehaviorSubject<boolean> = new BehaviorSubject(true);\n\n onLangChange: Observable<LangChangeEvent> = this.onLangChangeSubject.asObservable();\n onTranslationChange: Observable<string> = this.onTranslationChangeSubject.asObservable();\n onFallbackLangChange: Observable<string> = this.onFallbackLangChangeSubject.asObservable();\n isLoaded: Observable<boolean> = this.isLoadedSubject.asObservable();\n\n currentLang = signal<string | null>(null);\n\n languages: string[] = [DEFAULT_LANGUAGE];\n\n get(content: string): Observable<string> {\n return of(TRANSLATED_STRING + content);\n }\n\n use(lang: string): void {\n this.currentLang.set(lang);\n this.onLangChangeSubject.next({ lang } as LangChangeEvent);\n }\n\n addLangs(langs: string[]): void {\n this.languages = [...this.languages, ...langs];\n }\n\n getBrowserLang(): string {\n return DEFAULT_LANGUAGE;\n }\n\n getLangs(): string[] {\n return this.languages;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getTranslation(): Observable<any> {\n return of({});\n }\n\n instant(key: string | string[]): string {\n return TRANSLATED_STRING + key.toString();\n }\n\n setFallbackLang(lang: string): void {\n this.onFallbackLangChangeSubject.next(lang);\n }\n}\n\n@Pipe({ name: 'translate' })\nexport class TranslateMockPipe implements PipeTransform {\n transform(text: string): string {\n return !text ? TRANSLATED_STRING : `${text}-${TRANSLATED_STRING}`;\n }\n}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[translate]',\n})\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport class TranslateMockDirective implements AfterViewChecked {\n @Input()\n translateParams: any;\n\n private readonly _element = inject(ElementRef);\n\n ngAfterViewChecked(): void {\n this._element.nativeElement.innerText += TRANSLATED_STRING;\n }\n}\n\nexport class TranslateLoaderMock implements TranslateLoader {\n getTranslation(): Observable<Record<string, string>> {\n return of({});\n }\n}\n\n@NgModule({\n imports: [TranslateMockPipe, TranslateMockDirective],\n exports: [TranslateMockPipe, TranslateMockDirective],\n providers: [\n { provide: TranslateService, useClass: TranslateServiceMock },\n { provide: TranslateLoader, useClass: TranslateLoaderMock },\n ],\n})\nexport class TranslateMockModule {}\n",
19727
+ "sourceCode": "import {\n AfterViewChecked,\n Directive,\n ElementRef,\n Input,\n NgModule,\n Pipe,\n PipeTransform,\n inject,\n signal,\n input,\n} from '@angular/core';\nimport { LangChangeEvent, TranslateLoader, TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\n\nexport const TRANSLATED_STRING = 'i18n';\nexport const DEFAULT_LANGUAGE = 'en';\n\nexport class TranslateServiceMock {\n onLangChangeSubject: Subject<LangChangeEvent> = new Subject();\n onTranslationChangeSubject: Subject<string> = new Subject();\n onFallbackLangChangeSubject: Subject<string> = new Subject();\n isLoadedSubject: BehaviorSubject<boolean> = new BehaviorSubject(true);\n\n onLangChange: Observable<LangChangeEvent> = this.onLangChangeSubject.asObservable();\n onTranslationChange: Observable<string> = this.onTranslationChangeSubject.asObservable();\n onFallbackLangChange: Observable<string> = this.onFallbackLangChangeSubject.asObservable();\n isLoaded: Observable<boolean> = this.isLoadedSubject.asObservable();\n\n currentLang = signal<string | null>(null);\n\n languages: string[] = [DEFAULT_LANGUAGE];\n\n get(content: string): Observable<string> {\n return of(TRANSLATED_STRING + content);\n }\n\n use(lang: string): void {\n this.currentLang.set(lang);\n this.onLangChangeSubject.next({ lang } as LangChangeEvent);\n }\n\n addLangs(langs: string[]): void {\n this.languages = [...this.languages, ...langs];\n }\n\n getBrowserLang(): string {\n return DEFAULT_LANGUAGE;\n }\n\n getLangs(): string[] {\n return this.languages;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getTranslation(): Observable<any> {\n return of({});\n }\n\n instant(key: string | string[]): string {\n return TRANSLATED_STRING + key.toString();\n }\n\n setFallbackLang(lang: string): void {\n this.onFallbackLangChangeSubject.next(lang);\n }\n}\n\n@Pipe({ name: 'translate' })\nexport class TranslateMockPipe implements PipeTransform {\n transform(text: string): string {\n return !text ? TRANSLATED_STRING : `${text}-${TRANSLATED_STRING}`;\n }\n}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[translate]',\n})\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport class TranslateMockDirective implements AfterViewChecked {\n readonly translateParams = input();\n\n private readonly _element = inject(ElementRef);\n\n ngAfterViewChecked(): void {\n this._element.nativeElement.innerText += TRANSLATED_STRING;\n }\n}\n\nexport class TranslateLoaderMock implements TranslateLoader {\n getTranslation(): Observable<Record<string, string>> {\n return of({});\n }\n}\n\n@NgModule({\n imports: [TranslateMockPipe, TranslateMockDirective],\n exports: [TranslateMockPipe, TranslateMockDirective],\n providers: [\n { provide: TranslateService, useClass: TranslateServiceMock },\n { provide: TranslateLoader, useClass: TranslateLoaderMock },\n ],\n})\nexport class TranslateMockModule {}\n",
19578
19728
  "displayName": "TranslateServiceMock",
19579
19729
  "inputsClass": [],
19580
19730
  "outputsClass": [],
@@ -19589,7 +19739,7 @@
19589
19739
  "indexKey": "",
19590
19740
  "optional": false,
19591
19741
  "description": "",
19592
- "line": 21,
19742
+ "line": 32,
19593
19743
  "rawdescription": "\n"
19594
19744
  },
19595
19745
  {
@@ -19602,7 +19752,7 @@
19602
19752
  "indexKey": "",
19603
19753
  "optional": false,
19604
19754
  "description": "",
19605
- "line": 19,
19755
+ "line": 30,
19606
19756
  "rawdescription": "\n"
19607
19757
  },
19608
19758
  {
@@ -19615,7 +19765,7 @@
19615
19765
  "indexKey": "",
19616
19766
  "optional": false,
19617
19767
  "description": "",
19618
- "line": 14,
19768
+ "line": 25,
19619
19769
  "rawdescription": "\n"
19620
19770
  },
19621
19771
  {
@@ -19628,7 +19778,7 @@
19628
19778
  "indexKey": "",
19629
19779
  "optional": false,
19630
19780
  "description": "",
19631
- "line": 23,
19781
+ "line": 34,
19632
19782
  "rawdescription": "\n"
19633
19783
  },
19634
19784
  {
@@ -19641,7 +19791,7 @@
19641
19791
  "indexKey": "",
19642
19792
  "optional": false,
19643
19793
  "description": "",
19644
- "line": 18,
19794
+ "line": 29,
19645
19795
  "rawdescription": "\n"
19646
19796
  },
19647
19797
  {
@@ -19654,7 +19804,7 @@
19654
19804
  "indexKey": "",
19655
19805
  "optional": false,
19656
19806
  "description": "",
19657
- "line": 13,
19807
+ "line": 24,
19658
19808
  "rawdescription": "\n"
19659
19809
  },
19660
19810
  {
@@ -19667,7 +19817,7 @@
19667
19817
  "indexKey": "",
19668
19818
  "optional": false,
19669
19819
  "description": "",
19670
- "line": 16,
19820
+ "line": 27,
19671
19821
  "rawdescription": "\n"
19672
19822
  },
19673
19823
  {
@@ -19680,7 +19830,7 @@
19680
19830
  "indexKey": "",
19681
19831
  "optional": false,
19682
19832
  "description": "",
19683
- "line": 11,
19833
+ "line": 22,
19684
19834
  "rawdescription": "\n"
19685
19835
  },
19686
19836
  {
@@ -19693,7 +19843,7 @@
19693
19843
  "indexKey": "",
19694
19844
  "optional": false,
19695
19845
  "description": "",
19696
- "line": 17,
19846
+ "line": 28,
19697
19847
  "rawdescription": "\n"
19698
19848
  },
19699
19849
  {
@@ -19706,7 +19856,7 @@
19706
19856
  "indexKey": "",
19707
19857
  "optional": false,
19708
19858
  "description": "",
19709
- "line": 12,
19859
+ "line": 23,
19710
19860
  "rawdescription": "\n"
19711
19861
  }
19712
19862
  ],
@@ -19727,7 +19877,7 @@
19727
19877
  "optional": false,
19728
19878
  "returnType": "void",
19729
19879
  "typeParameters": [],
19730
- "line": 34,
19880
+ "line": 45,
19731
19881
  "deprecated": false,
19732
19882
  "deprecationMessage": "",
19733
19883
  "rawdescription": "\n",
@@ -19762,7 +19912,7 @@
19762
19912
  "optional": false,
19763
19913
  "returnType": "Observable<string>",
19764
19914
  "typeParameters": [],
19765
- "line": 25,
19915
+ "line": 36,
19766
19916
  "deprecated": false,
19767
19917
  "deprecationMessage": "",
19768
19918
  "rawdescription": "\n",
@@ -19788,7 +19938,7 @@
19788
19938
  "optional": false,
19789
19939
  "returnType": "string",
19790
19940
  "typeParameters": [],
19791
- "line": 38,
19941
+ "line": 49,
19792
19942
  "deprecated": false,
19793
19943
  "deprecationMessage": "",
19794
19944
  "rawdescription": "\n",
@@ -19801,7 +19951,7 @@
19801
19951
  "optional": false,
19802
19952
  "returnType": "string[]",
19803
19953
  "typeParameters": [],
19804
- "line": 42,
19954
+ "line": 53,
19805
19955
  "deprecated": false,
19806
19956
  "deprecationMessage": "",
19807
19957
  "rawdescription": "\n",
@@ -19814,7 +19964,7 @@
19814
19964
  "optional": false,
19815
19965
  "returnType": "Observable<any>",
19816
19966
  "typeParameters": [],
19817
- "line": 48,
19967
+ "line": 59,
19818
19968
  "deprecated": false,
19819
19969
  "deprecationMessage": "",
19820
19970
  "rawdescription": "\n",
@@ -19836,7 +19986,7 @@
19836
19986
  "optional": false,
19837
19987
  "returnType": "string",
19838
19988
  "typeParameters": [],
19839
- "line": 52,
19989
+ "line": 63,
19840
19990
  "deprecated": false,
19841
19991
  "deprecationMessage": "",
19842
19992
  "rawdescription": "\n",
@@ -19871,7 +20021,7 @@
19871
20021
  "optional": false,
19872
20022
  "returnType": "void",
19873
20023
  "typeParameters": [],
19874
- "line": 56,
20024
+ "line": 67,
19875
20025
  "deprecated": false,
19876
20026
  "deprecationMessage": "",
19877
20027
  "rawdescription": "\n",
@@ -19906,7 +20056,7 @@
19906
20056
  "optional": false,
19907
20057
  "returnType": "void",
19908
20058
  "typeParameters": [],
19909
- "line": 29,
20059
+ "line": 40,
19910
20060
  "deprecated": false,
19911
20061
  "deprecationMessage": "",
19912
20062
  "rawdescription": "\n",
@@ -21031,27 +21181,31 @@
21031
21181
  "directives": [
21032
21182
  {
21033
21183
  "name": "TranslateMockDirective",
21034
- "id": "directive-TranslateMockDirective-a6db37044983724bfab8f8eb6fbaf6bb1f4b1de1651ef5303a344a4b606cbe68e1bf0bdbe45bd473e1c77e446058e133e85517ed7e8fda4b4be59a70ef96bd06",
21184
+ "id": "directive-TranslateMockDirective-d42afa990d476989657d92ef3f9c88346ef461191fc8641719f83d538694483a6f785c8618d8ee729faee7c37e723a1fdfcac95badfa6e5259f869ebe95cccad",
21035
21185
  "file": "packages/core/src/lib/mocks/translate.module.mock.ts",
21036
21186
  "type": "directive",
21037
21187
  "description": "",
21038
21188
  "rawdescription": "\n",
21039
- "sourceCode": "import { AfterViewChecked, Directive, ElementRef, Input, NgModule, Pipe, PipeTransform, inject, signal } from '@angular/core';\nimport { LangChangeEvent, TranslateLoader, TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\n\nexport const TRANSLATED_STRING = 'i18n';\nexport const DEFAULT_LANGUAGE = 'en';\n\nexport class TranslateServiceMock {\n onLangChangeSubject: Subject<LangChangeEvent> = new Subject();\n onTranslationChangeSubject: Subject<string> = new Subject();\n onFallbackLangChangeSubject: Subject<string> = new Subject();\n isLoadedSubject: BehaviorSubject<boolean> = new BehaviorSubject(true);\n\n onLangChange: Observable<LangChangeEvent> = this.onLangChangeSubject.asObservable();\n onTranslationChange: Observable<string> = this.onTranslationChangeSubject.asObservable();\n onFallbackLangChange: Observable<string> = this.onFallbackLangChangeSubject.asObservable();\n isLoaded: Observable<boolean> = this.isLoadedSubject.asObservable();\n\n currentLang = signal<string | null>(null);\n\n languages: string[] = [DEFAULT_LANGUAGE];\n\n get(content: string): Observable<string> {\n return of(TRANSLATED_STRING + content);\n }\n\n use(lang: string): void {\n this.currentLang.set(lang);\n this.onLangChangeSubject.next({ lang } as LangChangeEvent);\n }\n\n addLangs(langs: string[]): void {\n this.languages = [...this.languages, ...langs];\n }\n\n getBrowserLang(): string {\n return DEFAULT_LANGUAGE;\n }\n\n getLangs(): string[] {\n return this.languages;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getTranslation(): Observable<any> {\n return of({});\n }\n\n instant(key: string | string[]): string {\n return TRANSLATED_STRING + key.toString();\n }\n\n setFallbackLang(lang: string): void {\n this.onFallbackLangChangeSubject.next(lang);\n }\n}\n\n@Pipe({ name: 'translate' })\nexport class TranslateMockPipe implements PipeTransform {\n transform(text: string): string {\n return !text ? TRANSLATED_STRING : `${text}-${TRANSLATED_STRING}`;\n }\n}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[translate]',\n})\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport class TranslateMockDirective implements AfterViewChecked {\n @Input()\n translateParams: any;\n\n private readonly _element = inject(ElementRef);\n\n ngAfterViewChecked(): void {\n this._element.nativeElement.innerText += TRANSLATED_STRING;\n }\n}\n\nexport class TranslateLoaderMock implements TranslateLoader {\n getTranslation(): Observable<Record<string, string>> {\n return of({});\n }\n}\n\n@NgModule({\n imports: [TranslateMockPipe, TranslateMockDirective],\n exports: [TranslateMockPipe, TranslateMockDirective],\n providers: [\n { provide: TranslateService, useClass: TranslateServiceMock },\n { provide: TranslateLoader, useClass: TranslateLoaderMock },\n ],\n})\nexport class TranslateMockModule {}\n",
21189
+ "sourceCode": "import {\n AfterViewChecked,\n Directive,\n ElementRef,\n Input,\n NgModule,\n Pipe,\n PipeTransform,\n inject,\n signal,\n input,\n} from '@angular/core';\nimport { LangChangeEvent, TranslateLoader, TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\n\nexport const TRANSLATED_STRING = 'i18n';\nexport const DEFAULT_LANGUAGE = 'en';\n\nexport class TranslateServiceMock {\n onLangChangeSubject: Subject<LangChangeEvent> = new Subject();\n onTranslationChangeSubject: Subject<string> = new Subject();\n onFallbackLangChangeSubject: Subject<string> = new Subject();\n isLoadedSubject: BehaviorSubject<boolean> = new BehaviorSubject(true);\n\n onLangChange: Observable<LangChangeEvent> = this.onLangChangeSubject.asObservable();\n onTranslationChange: Observable<string> = this.onTranslationChangeSubject.asObservable();\n onFallbackLangChange: Observable<string> = this.onFallbackLangChangeSubject.asObservable();\n isLoaded: Observable<boolean> = this.isLoadedSubject.asObservable();\n\n currentLang = signal<string | null>(null);\n\n languages: string[] = [DEFAULT_LANGUAGE];\n\n get(content: string): Observable<string> {\n return of(TRANSLATED_STRING + content);\n }\n\n use(lang: string): void {\n this.currentLang.set(lang);\n this.onLangChangeSubject.next({ lang } as LangChangeEvent);\n }\n\n addLangs(langs: string[]): void {\n this.languages = [...this.languages, ...langs];\n }\n\n getBrowserLang(): string {\n return DEFAULT_LANGUAGE;\n }\n\n getLangs(): string[] {\n return this.languages;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getTranslation(): Observable<any> {\n return of({});\n }\n\n instant(key: string | string[]): string {\n return TRANSLATED_STRING + key.toString();\n }\n\n setFallbackLang(lang: string): void {\n this.onFallbackLangChangeSubject.next(lang);\n }\n}\n\n@Pipe({ name: 'translate' })\nexport class TranslateMockPipe implements PipeTransform {\n transform(text: string): string {\n return !text ? TRANSLATED_STRING : `${text}-${TRANSLATED_STRING}`;\n }\n}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[translate]',\n})\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport class TranslateMockDirective implements AfterViewChecked {\n readonly translateParams = input();\n\n private readonly _element = inject(ElementRef);\n\n ngAfterViewChecked(): void {\n this._element.nativeElement.innerText += TRANSLATED_STRING;\n }\n}\n\nexport class TranslateLoaderMock implements TranslateLoader {\n getTranslation(): Observable<Record<string, string>> {\n return of({});\n }\n}\n\n@NgModule({\n imports: [TranslateMockPipe, TranslateMockDirective],\n exports: [TranslateMockPipe, TranslateMockDirective],\n providers: [\n { provide: TranslateService, useClass: TranslateServiceMock },\n { provide: TranslateLoader, useClass: TranslateLoaderMock },\n ],\n})\nexport class TranslateMockModule {}\n",
21040
21190
  "selector": "[translate]",
21041
21191
  "providers": [],
21042
21192
  "hostDirectives": [],
21043
21193
  "standalone": false,
21044
21194
  "inputsClass": [
21045
21195
  {
21046
- "coverageIgnore": false,
21047
21196
  "name": "translateParams",
21197
+ "coverageIgnore": false,
21048
21198
  "deprecated": false,
21049
21199
  "deprecationMessage": "",
21050
- "rawdescription": "\n",
21200
+ "indexKey": "",
21201
+ "optional": false,
21051
21202
  "description": "",
21052
- "line": 75,
21053
- "type": "any",
21054
- "decorators": []
21203
+ "line": 85,
21204
+ "rawdescription": "\n",
21205
+ "modifierKind": [
21206
+ 148
21207
+ ],
21208
+ "required": false
21055
21209
  }
21056
21210
  ],
21057
21211
  "outputsClass": [],
@@ -21068,7 +21222,7 @@
21068
21222
  "optional": false,
21069
21223
  "returnType": "void",
21070
21224
  "typeParameters": [],
21071
- "line": 79,
21225
+ "line": 89,
21072
21226
  "deprecated": false,
21073
21227
  "deprecationMessage": "",
21074
21228
  "rawdescription": "\n",
@@ -21918,13 +22072,13 @@
21918
22072
  },
21919
22073
  {
21920
22074
  "name": "TranslateMockModule",
21921
- "id": "module-TranslateMockModule-a6db37044983724bfab8f8eb6fbaf6bb1f4b1de1651ef5303a344a4b606cbe68e1bf0bdbe45bd473e1c77e446058e133e85517ed7e8fda4b4be59a70ef96bd06",
22075
+ "id": "module-TranslateMockModule-d42afa990d476989657d92ef3f9c88346ef461191fc8641719f83d538694483a6f785c8618d8ee729faee7c37e723a1fdfcac95badfa6e5259f869ebe95cccad",
21922
22076
  "description": "",
21923
22077
  "deprecationMessage": "",
21924
22078
  "deprecated": false,
21925
22079
  "file": "packages/core/src/lib/mocks/translate.module.mock.ts",
21926
22080
  "methods": [],
21927
- "sourceCode": "/* istanbul ignore file */\n\nimport { AfterViewChecked, Directive, ElementRef, Input, NgModule, Pipe, PipeTransform, inject, signal } from '@angular/core';\nimport { LangChangeEvent, TranslateLoader, TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\n\nexport const TRANSLATED_STRING = 'i18n';\nexport const DEFAULT_LANGUAGE = 'en';\n\nexport class TranslateServiceMock {\n onLangChangeSubject: Subject<LangChangeEvent> = new Subject();\n onTranslationChangeSubject: Subject<string> = new Subject();\n onFallbackLangChangeSubject: Subject<string> = new Subject();\n isLoadedSubject: BehaviorSubject<boolean> = new BehaviorSubject(true);\n\n onLangChange: Observable<LangChangeEvent> = this.onLangChangeSubject.asObservable();\n onTranslationChange: Observable<string> = this.onTranslationChangeSubject.asObservable();\n onFallbackLangChange: Observable<string> = this.onFallbackLangChangeSubject.asObservable();\n isLoaded: Observable<boolean> = this.isLoadedSubject.asObservable();\n\n currentLang = signal<string | null>(null);\n\n languages: string[] = [DEFAULT_LANGUAGE];\n\n get(content: string): Observable<string> {\n return of(TRANSLATED_STRING + content);\n }\n\n use(lang: string): void {\n this.currentLang.set(lang);\n this.onLangChangeSubject.next({ lang } as LangChangeEvent);\n }\n\n addLangs(langs: string[]): void {\n this.languages = [...this.languages, ...langs];\n }\n\n getBrowserLang(): string {\n return DEFAULT_LANGUAGE;\n }\n\n getLangs(): string[] {\n return this.languages;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getTranslation(): Observable<any> {\n return of({});\n }\n\n instant(key: string | string[]): string {\n return TRANSLATED_STRING + key.toString();\n }\n\n setFallbackLang(lang: string): void {\n this.onFallbackLangChangeSubject.next(lang);\n }\n}\n\n@Pipe({ name: 'translate' })\nexport class TranslateMockPipe implements PipeTransform {\n transform(text: string): string {\n return !text ? TRANSLATED_STRING : `${text}-${TRANSLATED_STRING}`;\n }\n}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[translate]',\n})\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport class TranslateMockDirective implements AfterViewChecked {\n @Input()\n translateParams: any;\n\n private readonly _element = inject(ElementRef);\n\n ngAfterViewChecked(): void {\n this._element.nativeElement.innerText += TRANSLATED_STRING;\n }\n}\n\nexport class TranslateLoaderMock implements TranslateLoader {\n getTranslation(): Observable<Record<string, string>> {\n return of({});\n }\n}\n\n@NgModule({\n imports: [TranslateMockPipe, TranslateMockDirective],\n exports: [TranslateMockPipe, TranslateMockDirective],\n providers: [\n { provide: TranslateService, useClass: TranslateServiceMock },\n { provide: TranslateLoader, useClass: TranslateLoaderMock },\n ],\n})\nexport class TranslateMockModule {}\n",
22081
+ "sourceCode": "/* istanbul ignore file */\n\nimport {\n AfterViewChecked,\n Directive,\n ElementRef,\n Input,\n NgModule,\n Pipe,\n PipeTransform,\n inject,\n signal,\n input,\n} from '@angular/core';\nimport { LangChangeEvent, TranslateLoader, TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\n\nexport const TRANSLATED_STRING = 'i18n';\nexport const DEFAULT_LANGUAGE = 'en';\n\nexport class TranslateServiceMock {\n onLangChangeSubject: Subject<LangChangeEvent> = new Subject();\n onTranslationChangeSubject: Subject<string> = new Subject();\n onFallbackLangChangeSubject: Subject<string> = new Subject();\n isLoadedSubject: BehaviorSubject<boolean> = new BehaviorSubject(true);\n\n onLangChange: Observable<LangChangeEvent> = this.onLangChangeSubject.asObservable();\n onTranslationChange: Observable<string> = this.onTranslationChangeSubject.asObservable();\n onFallbackLangChange: Observable<string> = this.onFallbackLangChangeSubject.asObservable();\n isLoaded: Observable<boolean> = this.isLoadedSubject.asObservable();\n\n currentLang = signal<string | null>(null);\n\n languages: string[] = [DEFAULT_LANGUAGE];\n\n get(content: string): Observable<string> {\n return of(TRANSLATED_STRING + content);\n }\n\n use(lang: string): void {\n this.currentLang.set(lang);\n this.onLangChangeSubject.next({ lang } as LangChangeEvent);\n }\n\n addLangs(langs: string[]): void {\n this.languages = [...this.languages, ...langs];\n }\n\n getBrowserLang(): string {\n return DEFAULT_LANGUAGE;\n }\n\n getLangs(): string[] {\n return this.languages;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getTranslation(): Observable<any> {\n return of({});\n }\n\n instant(key: string | string[]): string {\n return TRANSLATED_STRING + key.toString();\n }\n\n setFallbackLang(lang: string): void {\n this.onFallbackLangChangeSubject.next(lang);\n }\n}\n\n@Pipe({ name: 'translate' })\nexport class TranslateMockPipe implements PipeTransform {\n transform(text: string): string {\n return !text ? TRANSLATED_STRING : `${text}-${TRANSLATED_STRING}`;\n }\n}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[translate]',\n})\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport class TranslateMockDirective implements AfterViewChecked {\n readonly translateParams = input();\n\n private readonly _element = inject(ElementRef);\n\n ngAfterViewChecked(): void {\n this._element.nativeElement.innerText += TRANSLATED_STRING;\n }\n}\n\nexport class TranslateLoaderMock implements TranslateLoader {\n getTranslation(): Observable<Record<string, string>> {\n return of({});\n }\n}\n\n@NgModule({\n imports: [TranslateMockPipe, TranslateMockDirective],\n exports: [TranslateMockPipe, TranslateMockDirective],\n providers: [\n { provide: TranslateService, useClass: TranslateServiceMock },\n { provide: TranslateLoader, useClass: TranslateLoaderMock },\n ],\n})\nexport class TranslateMockModule {}\n",
21928
22082
  "children": [
21929
22083
  {
21930
22084
  "type": "providers",
@@ -22534,6 +22688,32 @@
22534
22688
  "type": "[]",
22535
22689
  "defaultValue": "['euiButton', 'euiList', 'euiListItem']"
22536
22690
  },
22691
+ {
22692
+ "name": "EUI_SELECTOR_TO_CLASS",
22693
+ "ctype": "miscellaneous",
22694
+ "subtype": "variable",
22695
+ "file": "packages/core/schematics/migrate-to-signals/signal-map.ts",
22696
+ "coverageIgnore": false,
22697
+ "deprecated": false,
22698
+ "deprecationMessage": "",
22699
+ "type": "Record<string, string>",
22700
+ "defaultValue": "{\n '[euiBase]': 'BaseStatesDirective',\n '[euiDropdownItem]': 'EuiDropdownItemComponent',\n '[euiIconColored]': 'EuiIconColorComponent',\n '[euiListItem]': 'EuiListItemComponent',\n '[euiLoading]': 'EuiLoadingDirective',\n '[euiScrollHandler]': 'EuiScrollHandlerDirective',\n '[euiScrollTo]': 'EuiSmoothScrollToDirective',\n '[euiTemplate]': 'EuiTemplateDirective',\n '[euiTooltip]': 'EuiTooltipDirective',\n '[formControlName][euiEditorMaxlength]': 'EuiEditorMaxlengthDirective',\n 'a[euiButton]': 'EuiButtonComponent',\n 'button[euiButton]': 'EuiButtonComponent',\n 'div[euiAlert]': 'EuiAlertComponent',\n 'div[euiAvatar]': 'EuiAvatarComponent',\n 'div[euiBadge]': 'EuiBadgeComponent',\n 'div[euiInputGroupAddOnItem]': 'EuiInputGroupAddOnItemComponent',\n 'div[euiInputGroupAddOn]': 'EuiInputGroupAddOnComponent',\n 'div[euiInputGroup]': 'EuiInputGroupComponent',\n 'div[euiStatusBadge]': 'EuiStatusBadgeComponent',\n 'eds-tab-body': 'EdsTabBody',\n 'eds-tab-header': 'EdsTabHeader',\n 'eds-tabs': 'EdsTabs',\n 'eui-alert': 'EuiAlertComponent',\n 'eui-app': 'AppComponent',\n 'eui-app-side-container': 'EuiAppSideContainerComponent',\n 'eui-app-sidebar-drawer': 'EuiAppSidebarDrawerComponent',\n 'eui-app-sidebar-header-user-profile': 'EuiAppSidebarHeaderUserProfileComponent',\n 'eui-app-sidebar-menu': 'EuiAppSidebarMenuComponent',\n 'eui-app-toolbar': 'EuiAppToolbarComponent',\n 'eui-app-top-message': 'EuiAppTopMessageComponent',\n 'eui-autocomplete': 'EuiAutocompleteComponent',\n 'eui-autocomplete-panel': 'EuiAutocompletePanelComponent',\n 'eui-avatar': 'EuiAvatarComponent',\n 'eui-avatar-badge': 'EuiAvatarBadgeComponent',\n 'eui-avatar-image': 'EuiAvatarImageComponent',\n 'eui-badge': 'EuiBadgeComponent',\n 'eui-banner': 'EuiBannerComponent',\n 'eui-block-document': 'EuiBlockDocumentComponent',\n 'eui-breadcrumb-item': 'EuiBreadcrumbItemComponent',\n 'eui-button-group': 'EuiButtonGroupComponent',\n 'eui-card': 'EuiCardComponent',\n 'eui-card-footer-menu-content': 'EuiCardFooterMenuContentComponent',\n 'eui-card-header': 'EuiCardHeaderComponent',\n 'eui-card-header-left-content': 'EuiCardHeaderLeftContentComponent',\n 'eui-card-media': 'EuiCardMediaComponent',\n 'eui-chip': 'EuiChipComponent',\n 'eui-chip-button': 'EuiChipButtonComponent',\n 'eui-chip-group': 'EuiChipGroupComponent',\n 'eui-chip-list-append-content': 'EuiChipListAppendContentDirective',\n 'eui-comment-item': 'EuiCommentItemComponent',\n 'eui-comment-textarea': 'EuiCommentTextareaComponent',\n 'eui-comment-thread': 'EuiCommentThreadComponent',\n 'eui-content-card': 'EuiContentCardComponent',\n 'eui-content-card-header-end': 'EuiContentCardHeaderEndComponent',\n 'eui-dashboard-card': 'EuiDashboardCardComponent',\n 'eui-dashboard-card-content-header-icon': 'EuiDashboardCardContentHeaderIconComponent',\n 'eui-date-block': 'EuiDateBlockComponent',\n 'eui-date-range-selector': 'EuiDateRangeSelectorComponent',\n 'eui-datepicker': 'EuiDatepickerComponent',\n 'eui-dialog': 'EuiDialogComponent',\n 'eui-dialog-container': 'EuiDialogContainerComponent',\n 'eui-dimmer': 'EuiDimmerComponent',\n 'eui-discussion-thread': 'EuiDiscussionThreadComponent',\n 'eui-discussion-thread-item': 'EuiDiscussionThreadItemComponent',\n 'eui-dropdown': 'EuiDropdownComponent',\n 'eui-dropdown-item': 'EuiDropdownItemComponent',\n 'eui-dropdown[euiDropdownTree]': 'EuiDropdownTreeDirective',\n 'eui-editor': 'EuiEditorComponent',\n 'eui-editor-counters': 'EuiEditorCountersComponent',\n 'eui-editor-json-view': 'EuiEditorJsonViewComponent',\n 'eui-feedback-message': 'EuiFeedbackMessageComponent',\n 'eui-file-preview': 'EuiFilePreviewComponent',\n 'eui-file-upload': 'EuiFileUploadComponent',\n 'eui-file-upload-progress': 'EuiFileUploadProgressComponent',\n 'eui-footer': 'EuiFooterComponent',\n 'eui-growl': 'EuiGrowlComponent',\n 'eui-header': 'EuiHeaderComponent',\n 'eui-header-app': 'EuiHeaderAppComponent',\n 'eui-header-app-name-logo': 'EuiHeaderAppNameLogoComponent',\n 'eui-header-logo': 'EuiHeaderLogoComponent',\n 'eui-header-search': 'EuiHeaderSearchComponent',\n 'eui-header-user-profile': 'EuiHeaderUserProfileComponent',\n 'eui-icon-button': 'EuiIconButtonComponent',\n 'eui-icon-button-expander': 'EuiIconButtonExpanderComponent',\n 'eui-icon-colored': 'EuiIconColorComponent',\n 'eui-icon-input': 'EuiIconInputComponent',\n 'eui-icon-state': 'EuiIconStateComponent',\n 'eui-icon-svg': 'EuiIconSvgComponent',\n 'eui-icon-toggle': 'EuiIconToggleComponent',\n 'eui-input-button': 'EuiInputButtonComponent',\n 'eui-input-group-addon': 'EuiInputGroupAddOnComponent',\n 'eui-input-group-addon-item': 'EuiInputGroupAddOnItemComponent',\n 'eui-language-selector': 'EuiLanguageSelectorComponent',\n 'eui-list-item': 'EuiListItemComponent',\n 'eui-menu': 'EuiMenuComponent',\n 'eui-menu-item': 'EuiMenuItemComponent',\n 'eui-message-box': 'EuiMessageBoxComponent',\n 'eui-navbar-item': 'EuiNavbarItemComponent',\n 'eui-notification-item': 'EuiNotificationItemComponent',\n 'eui-notification-item-v2': 'EuiNotificationItemV2Component',\n 'eui-notifications': 'EuiNotificationsComponent',\n 'eui-notifications-v2': 'EuiNotificationsV2Component',\n 'eui-overlay': 'EuiOverlayComponent',\n 'eui-overlay-header-title': 'EuiOverlayHeaderTitleComponent',\n 'eui-page': 'EuiPageComponent',\n 'eui-page-column': 'EuiPageColumnComponent',\n 'eui-page-columns': 'EuiPageColumnsComponent',\n 'eui-page-footer': 'EuiPageFooterComponent',\n 'eui-page-header': 'EuiPageHeaderComponent',\n 'eui-page-hero-header': 'EuiPageHeroHeaderComponent',\n 'eui-page-panel': 'EuiPagePanelComponent',\n 'eui-page-top-content': 'EuiPageTopContentComponent',\n 'eui-paginator': 'EuiPaginatorComponent',\n 'eui-popover': 'EuiPopoverComponent',\n 'eui-progress-bar': 'EuiProgressBarComponent',\n 'eui-progress-circle': 'EuiProgressCircleComponent',\n 'eui-rating': 'EuiRatingComponent',\n 'eui-resizable': 'EuiResizableComponent',\n 'eui-section-header': 'EuiSectionHeaderComponent',\n 'eui-section-header-icon': 'EuiSectionHeaderIconComponent',\n 'eui-sidebar-toggle': 'EuiSidebarToggleComponent',\n 'eui-skeleton': 'EuiSkeletonComponent',\n 'eui-slide-toggle': 'EuiSlideToggleComponent',\n 'eui-slider': 'EuiSliderComponent',\n 'eui-status-badge': 'EuiStatusBadgeComponent',\n 'eui-tab': 'EuiTabComponent',\n 'eui-tab-body': 'EuiTabBodyComponent',\n 'eui-tab-header': 'EuiTabHeaderComponent',\n 'eui-table': 'EuiTableComponent',\n 'eui-table-filter': 'EuiTableFilterComponent',\n 'eui-tabs': 'EuiTabsComponent',\n 'eui-timeline': 'EuiTimelineComponent',\n 'eui-timeline-item': 'EuiTimelineItemComponent',\n 'eui-timepicker': 'EuiTimepickerComponent',\n 'eui-toggle-group': 'EuiToggleGroupComponent',\n 'eui-toggle-group-item': 'EuiToggleGroupItemComponent',\n 'eui-toolbar-app': 'EuiToolbarAppComponent',\n 'eui-toolbar-items': 'EuiToolbarItemsComponent',\n 'eui-toolbar-logo': 'EuiToolbarLogoComponent',\n 'eui-toolbar-mega-menu': 'EuiToolbarMegaMenuComponent',\n 'eui-toolbar-mega-menu-container': 'EuiToolbarMegaMenuContainerComponent',\n 'eui-toolbar-navbar-item': 'EuiToolbarNavbarItemComponent',\n 'eui-toolbar-search': 'EuiToolbarSearchComponent',\n 'eui-toolbar-selector': 'EuiToolbarSelectorComponent',\n 'eui-tooltip-container.component': 'EuiTooltipContainerComponent',\n 'eui-tree': 'EuiTreeComponent',\n 'eui-tree-list': 'EuiTreeListComponent',\n 'eui-tree-list-item': 'EuiTreeListItemComponent',\n 'eui-tree-list-toolbar': 'EuiTreeListToolbarComponent',\n 'eui-tree[euiTreeFormControl]': 'EuiTreeFormControlDirective',\n 'eui-user-profile': 'EuiUserProfileComponent',\n 'eui-user-profile-card': 'EuiUserProfileCardComponent',\n 'eui-wizard': 'EuiWizardComponent',\n euiFieldsetLabelRightContent: 'EuiFieldsetLabelRightContentTagDirective',\n 'i[euiIconSvg]': 'EuiIconSvgComponent',\n 'input[euiAutocomplete]': 'EuiAutocompleteComponent',\n 'input[euiClearable]': 'EuiClearableDirective',\n 'input[euiInputCheckBox]': 'EuiInputCheckboxComponent',\n 'input[euiInputRadio]': 'EuiInputRadioComponent',\n 'input[euiInput]': 'InputDirective',\n 'li[euiChipButton]': 'EuiChipButtonComponent',\n 'li[euiChip]': 'EuiChipComponent',\n 'option:not([eclSelectOption]):not([eclMultiselectOption])': 'EuiNgSelectOptionDirective',\n 'option[euiOption]': 'EuiNgSelectOptionDirective',\n 'quill-editor': 'QuillEditorComponent',\n 'select[euiSelect]': 'EuiSelectComponent',\n 'span[euiAvatar]': 'EuiAvatarComponent',\n 'span[euiBadge]': 'EuiBadgeComponent',\n 'span[euiChipButton]': 'EuiChipButtonComponent',\n 'span[euiChip]': 'EuiChipComponent',\n 'span[euiIconColored]': 'EuiIconColorComponent',\n 'span[euiIconSvg]': 'EuiIconSvgComponent',\n 'span[euiStatusBadge]': 'EuiStatusBadgeComponent',\n 'table[euiTable]': 'EuiTableComponent',\n 'th[isSortable]': 'EuiTableSortableColComponent',\n 'tr[isDataSelectable]': 'EuiTableSelectableRowComponent',\n 'tr[isHeaderSelectable]': 'EuiTableSelectableHeaderComponent',\n}",
22701
+ "rawdescription": "Map of component/directive selectors to their class names.\nUsed to resolve",
22702
+ "description": "<p>Map of component/directive selectors to their class names.\nUsed to resolve</p>\n"
22703
+ },
22704
+ {
22705
+ "name": "EUI_SIGNAL_MAP",
22706
+ "ctype": "miscellaneous",
22707
+ "subtype": "variable",
22708
+ "file": "packages/core/schematics/migrate-to-signals/signal-map.ts",
22709
+ "coverageIgnore": false,
22710
+ "deprecated": false,
22711
+ "deprecationMessage": "",
22712
+ "type": "Record<string, ReadonlySet<string>>",
22713
+ "defaultValue": "{\n AppComponent: new Set(['appSubTitle', 'isShrinkHeaderActive', 'isSidebarHidden', 'isSidebarOpen', 'themeClass']),\n BaseStatesDirective: new Set(['euiBranding', 'euiClearable', 'euiCompact', 'euiDanger', 'euiDisabled', 'euiEnd', 'euiHighlighted', 'euiInfo', 'euiInverse', 'euiInverted', 'euiLoading', 'euiOutline', 'euiPrimary', 'euiResponsive', 'euiRounded', 'euiSecondary', 'euiSecondaryLight', 'euiSize2XL', 'euiSize2XS', 'euiSize3XL', 'euiSize4XL', 'euiSize5XL', 'euiSize6XL', 'euiSizeAuto', 'euiSizeL', 'euiSizeM', 'euiSizeS', 'euiSizeVariant', 'euiSizeXL', 'euiSizeXS', 'euiStart', 'euiSuccess', 'euiVariant', 'euiWarning']),\n EdsTabBody: new Set(['templateRef']),\n EdsTabHeader: new Set(['templateRef']),\n EdsTabs: new Set(['edsTabListItems', 'edsTabsHeaders', 'edsTabsHeadersContainer', 'edsTabsRightContent']),\n EuiAlertComponent: new Set(['cssClasses']),\n EuiAppSideContainerComponent: new Set(['euiResizableMinWidth', 'euiResizablePosition', 'hasOverlayClosedOnClickOutside', 'isActive', 'isOverlayActive']),\n EuiAppSidebarDrawerComponent: new Set(['isExpanded']),\n EuiAppSidebarHeaderUserProfileComponent: new Set(['avatarUrl', 'hasProfileDrawer', 'hasTabNavigation', 'hasToggle', 'hasWelcomeLabel', 'impersonateLabel', 'isOnline', 'isShowAvatarInitials', 'isShowUserInfos', 'welcomeLabel']),\n EuiAppSidebarMenuComponent: new Set(['expandAllItems', 'hasBoldRootLevel', 'hasCollapsedInitials', 'hasFilter', 'hasIcons', 'hasIconsLabels', 'hasScrollToItem', 'hasTooltip', 'hasTooltipOnExpanded', 'hasTooltipOnlyOnExpanded', 'isCollapsed', 'isFlat', 'items', 'menu']),\n EuiAppToolbarComponent: new Set(['euiSecondary']),\n EuiAppTopMessageComponent: new Set(['appTopMessage', 'hasCustomContent', 'isCloseable', 'isVisible']),\n EuiAutocompleteComponent: new Set(['autocompletePanel', 'input', 'inputContainerRef', 'templatePortalContent', 'templates']),\n EuiAutocompletePanelComponent: new Set(['virtualScrolling']),\n EuiAvatarBadgeComponent: new Set(['isPositionBottom']),\n EuiAvatarComponent: new Set(['ariaLabel', 'colorPalette', 'e2eAttr', 'hasNoBackground', 'hasShadow', 'isReverse', 'isShapeSquare']),\n EuiAvatarImageComponent: new Set(['imageUrl']),\n EuiBadgeComponent: new Set(['ariaLabel', 'charReplacement', 'colorPalette', 'content', 'e2eAttr', 'euiDottedBadge', 'euiIconBadge', 'maxCharCount']),\n EuiBannerComponent: new Set(['e2eAttr', 'euiInverse', 'euiPositionCenter', 'euiPositionTop', 'imageUrl', 'isVideoBanner']),\n EuiBlockDocumentComponent: new Set(['isBlocked']),\n EuiBreadcrumbItemComponent: new Set(['ariaLabel', 'iconSvgName', 'id', 'label', 'link', 'navigationExtras']),\n EuiButtonComponent: new Set(['e2eAttr', 'euiAvatarButton', 'euiBasicButton', 'euiBlockButton', 'euiCTAButton', 'euiDisabled', 'euiIconButton', 'euiLineWrap', 'hasNoFocusRing', 'id', 'isChecked', 'isCompact']),\n EuiButtonGroupComponent: new Set(['isCheckboxButtons', 'isRadioButtons']),\n EuiCardComponent: new Set(['e2eAttr', 'euiCollapsed', 'euiCollapsible', 'euiHoverable', 'euiNoContentPadding', 'euiNoShadow', 'euiSelected', 'euiUrgent', 'hasLeftExpander', 'isCompact']),\n EuiCardFooterMenuContentComponent: new Set(['tooltipText']),\n EuiCardHeaderComponent: new Set(['collapseLabel', 'expandLabel', 'hasBottomExpander', 'hasFullTitle', 'hasHeaderClickToggle', 'isClickeable', 'isHeaderMultilines']),\n EuiCardHeaderLeftContentComponent: new Set(['isTopAligned']),\n EuiCardMediaComponent: new Set(['imageClickUrl', 'imageClickUrlExternal', 'imageDescription', 'imageHeight', 'imageLegend', 'imageUrl']),\n EuiChipButtonComponent: new Set(['cssClasses', 'e2eAttr', 'euiInternalId', 'id', 'isFilled', 'tooltipMessage']),\n EuiChipComponent: new Set(['chipLabel', 'colorPalette', 'cssClasses', 'data', 'e2eAttr', 'euiInternalId', 'id', 'isChipRemovable', 'isFilled', 'tooltipMessage']),\n EuiChipGroupComponent: new Set(['cssClasses']),\n EuiChipListAppendContentDirective: new Set(['ariaLabel', 'cssClasses']),\n EuiClearableDirective: new Set(['euiClearable']),\n EuiCommentItemComponent: new Set(['authorAvatarUrl', 'authorName', 'comment', 'commentCharLimit', 'createdAt', 'currentAuthorAvatarUrl', 'hasChildren', 'nbSubCommentItems', 'subCommentItems']),\n EuiCommentTextareaComponent: new Set(['currentAuthorAvatarUrl', 'placeholder']),\n EuiCommentThreadComponent: new Set(['currentAuthorAvatarUrl', 'hasTextarea', 'isCollapsable', 'isOpen', 'nbSubCommentItems', 'placeholder', 'subCommentItems', 'textareaPosition']),\n EuiContentCardComponent: new Set(['e2eAttr', 'isBookmarkable', 'isBookmarked', 'isCollapsed', 'isCollapsible', 'isSelectable', 'isSelected']),\n EuiContentCardHeaderEndComponent: new Set(['bookmarkAccessKey']),\n EuiDashboardCardComponent: new Set(['colorPalette', 'e2eAttr', 'hasNoBackgroundAvatar', 'iconLabel', 'iconSvgName', 'iconSvgSize', 'imageUrl', 'isClickeable', 'isFlat', 'isFlatAvatar', 'isHorizontal', 'isStacked', 'label', 'labelMaxLines', 'subLabel', 'subLabelMaxLines', 'url', 'urlExternal', 'urlExternalTarget']),\n EuiDashboardCardContentHeaderIconComponent: new Set(['icon']),\n EuiDateBlockComponent: new Set(['blockDate', 'dateFormat', 'e2eAttr']),\n EuiDateRangeSelectorComponent: new Set(['comparisonEnd', 'comparisonStart', 'e2eAttr', 'endDateDefaultValue', 'firstInputAriaLabel', 'firstInputPlaceholder', 'hasSeconds', 'isClearable', 'isDisabled', 'isReadOnly', 'isResponsive', 'isTimeRange', 'islongDateFormat', 'maxDate', 'minDate', 'secondInputAriaLabel', 'secondInputPlaceholder', 'startDateDefaultValue', 'startDateId', 'startView', 'stepHours', 'stepMinutes', 'stepSeconds', 'togglerIconSvg', 'togglerLabel']),\n EuiDatepickerComponent: new Set(['calendar', 'customHeader', 'customPanelClass', 'dateClass', 'dateOutputFormat', 'datepickerFilter', 'e2eAttr', 'hasNoButton', 'hasSeconds', 'inputAriaLabel', 'inputId', 'inputRef', 'isButtonDisabled', 'isClearable', 'isDatepickerBlock', 'isDatetimepicker', 'isDisabled', 'isInputDisabled', 'isOneInputField', 'isPickerDisabled', 'isReadOnly', 'isShownOnInputClick', 'maxDate', 'minDate', 'placeholder', 'restrictToRegex', 'startView', 'stepHours', 'stepMinutes', 'stepSeconds', 'templatePortalRef', 'togglerIconSvg', 'togglerLabel', 'type', 'value']),\n EuiDialogComponent: new Set(['acceptLabel', 'classList', 'dismissLabel', 'e2eAttr', 'hasAcceptButton', 'hasCloseButton', 'hasClosedOnClickOutside', 'hasClosedOnEscape', 'hasDismissButton', 'hasFooter', 'hasMobileCustomSize', 'hasNoBodyPadding', 'height', 'isDraggable', 'isFullScreen', 'isHandleCloseOnAccept', 'isHandleCloseOnClickOutside', 'isHandleCloseOnClose', 'isHandleCloseOnDismiss', 'isHandleCloseOnEscape', 'isMessageBox', 'templateRefContent', 'templateRefFooter', 'templateRefHeader', 'title', 'verticalPosition', 'width']),\n EuiDialogContainerComponent: new Set(['closeButtonAriaLabel', 'dialogBody']),\n EuiDimmerComponent: new Set(['cssClasses', 'e2eAttr', 'isDimmerActive']),\n EuiDiscussionThreadComponent: new Set(['items', 'subTitleLabel', 'titleLabel', 'tooltip']),\n EuiDiscussionThreadItemComponent: new Set(['author', 'body', 'date', 'id', 'isOdd', 'tooltip', 'typeClass']),\n EuiDropdownComponent: new Set(['e2eAttr', 'euiDisabled', 'euiDropdownItems', 'hasClosedOnClickInside', 'hasTabNavigation', 'height', 'isBlock', 'isDropDownRightAligned', 'isExpandOnHover', 'isLabelUpdatedFromSelectedItem', 'isRightClickEnabled', 'isTriggerToggle', 'position', 'subDropdownPosition', 'tabIndex', 'templatePortalContent', 'triggerRef', 'width']),\n EuiDropdownItemComponent: new Set(['isActive', 'isFocus']),\n EuiDropdownTreeDirective: new Set(['buttonTemplateRef', 'euiTree']),\n EuiEditorComponent: new Set(['customToolbarConfig', 'customToolbarPosition', 'debug', 'e2eAttr', 'formats', 'height', 'id', 'isEnabledOnFocus', 'isMinimalToolbar', 'isReadOnly', 'modules', 'placeholder', 'showCounters', 'tabindex', 'theme']),\n EuiEditorCountersComponent: new Set(['charactersCounter', 'charactersLabel', 'hasCharactersCounter', 'hasWordsCounter', 'isMaxLengthValid', 'wordsCounter', 'wordsLabel']),\n EuiEditorJsonViewComponent: new Set(['content', 'theme']),\n EuiEditorMaxlengthDirective: new Set(['euiEditorMaxlength', 'format', 'isShowMaxlength']),\n EuiFeedbackMessageComponent: new Set(['cssClasses', 'isMuted']),\n EuiFieldsetLabelRightContentTagDirective: new Set(['e2eAttr', 'hasDefaultIcon', 'hasLeftExpander', 'iconClass', 'iconSvgFillColor', 'iconSvgName', 'id', 'isExpandable', 'isExpanded', 'isFirst', 'isLarge', 'label', 'templates']),\n EuiFilePreviewComponent: new Set(['file', 'hasPreview', 'hasPreviewAsIcon', 'hasPreviewAsImage', 'index', 'isFileObject', 'isFilenameDisplayed', 'isFilesizeDisplayed', 'isFiletypeDisplayed', 'isItemsClickable', 'previewAsIconConfig', 'templates', 'uploadedFileTemplate']),\n EuiFileUploadComponent: new Set(['accept', 'e2eAttr', 'fileInputs', 'hasDragArea', 'hasPreview', 'hasPreviewAsIcon', 'hasPreviewAsImage', 'hasProgressBar', 'hasResetButton', 'hasTotalSizeDisplayed', 'isItemsClickable', 'isMultiple', 'maxFiles', 'progress', 'templates']),\n EuiFileUploadProgressComponent: new Set(['progress']),\n EuiFooterComponent: new Set(['euiPrimary']),\n EuiGrowlComponent: new Set(['ariaLive', 'callback', 'closeAllSticky', 'cssClasses', 'e2eAttr', 'life', 'position', 'sticky', 'value']),\n EuiHeaderAppComponent: new Set(['appName', 'appShortName', 'appSubTitle']),\n EuiHeaderAppNameLogoComponent: new Set(['homeUrl', 'logoAltText', 'logoFilename']),\n EuiHeaderComponent: new Set(['rightContent']),\n EuiHeaderLogoComponent: new Set(['homeUrl', 'logoHeight', 'logoUrl', 'logoWidth']),\n EuiHeaderSearchComponent: new Set(['placeholder']),\n EuiHeaderUserProfileComponent: new Set(['avatarUrl', 'hasTabNavigation', 'hasWelcomeLabel', 'impersonateLabel', 'isShowAvatarInitials', 'isShowUserInfos', 'subInfos', 'userProfile', 'welcomeLabel']),\n EuiIconButtonComponent: new Set(['ariaLabel', 'euiDisabled', 'euiRounded', 'fillColor', 'hasFocusHoverBg', 'hasFocusHoverColor', 'hasNoPadding', 'hasOverflowHover', 'icon', 'iconUrl', 'size', 'tabindex']),\n EuiIconButtonExpanderComponent: new Set(['ariaLabel', 'euiDisabled', 'fillColor', 'isDirectionForward', 'isExpanded', 'size']),\n EuiIconColorComponent: new Set(['iconClass']),\n EuiIconInputComponent: new Set(['cssClasses', 'euiIconPositionEnd', 'euiIconPositionStart']),\n EuiIconStateComponent: new Set(['ariaLabel', 'cssClasses', 'size']),\n EuiIconSvgComponent: new Set(['euiEnd', 'euiStart', 'fillColor', 'focusable', 'iconUrl', 'isInputIcon', 'isLoading', 'style', 'transform']),\n EuiIconToggleComponent: new Set(['ariaLabel', 'e2eAttr', 'iconSvgFillColorOff', 'iconSvgFillColorOn', 'iconSvgNameOff', 'iconSvgNameOn', 'iconSvgSize', 'id', 'isChecked', 'isReadOnly', 'keyboardAccessKey', 'tabindex']),\n EuiInputButtonComponent: new Set(['cssClasses', 'euiButtonPositionEnd', 'euiButtonPositionStart']),\n EuiInputCheckboxComponent: new Set(['isInvalid']),\n EuiInputGroupAddOnComponent: new Set(['e2eAttr']),\n EuiInputGroupAddOnItemComponent: new Set(['e2eAttr']),\n EuiInputGroupComponent: new Set(['e2eAttr']),\n EuiInputRadioComponent: new Set(['isInvalid']),\n EuiLanguageSelectorComponent: new Set(['cssClasses', 'euiPrimary', 'hasLanguageSelection', 'isShowDropDown', 'isShowModal', 'isToolbarSelector']),\n EuiListItemComponent: new Set(['cssClasses', 'e2eAttr', 'isActive']),\n EuiLoadingDirective: new Set(['euiLoading']),\n EuiMenuComponent: new Set(['expandAllItems', 'externalLinkLabel', 'filterValue', 'fragmentId', 'hasBoldRootLevel', 'hasCollapsedInitials', 'hasFilter', 'hasIcons', 'hasIconsLabels', 'hasScrollToItem', 'hasTooltip', 'hasTooltipOnExpanded', 'hasTooltipOnlyOnExpanded', 'isCollapsed', 'isFlat', 'items', 'menubar', 'searchFilterLabel']),\n EuiMenuItemComponent: new Set(['hasBoldRootLevel', 'hasCollapsedInitials', 'hasExpandIcon', 'hasIcon', 'hasIconLabel', 'hasTooltip', 'hasTooltipOnExpanded', 'hasTooltipOnlyOnExpanded', 'isCollapsed', 'item', 'parent']),\n EuiMessageBoxComponent: new Set(['acceptLabel', 'dismissLabel', 'e2eAttr', 'hasAcceptButton', 'hasDismissButton', 'hasNoBodyPadding', 'height', 'isDraggable', 'isHandleCloseOnAccept', 'isHandleCloseOnClose', 'isHandleCloseOnDismiss', 'templateRefContent', 'templateRefFooter', 'title', 'width']),\n EuiNavbarItemComponent: new Set(['id', 'isActive', 'label']),\n EuiNgSelectOptionDirective: new Set(['label', 'selected']),\n EuiNotificationItemComponent: new Set(['dateFormat', 'isShowMarkAsRead', 'item', 'markAsReadLabel']),\n EuiNotificationItemV2Component: new Set(['dateFormat', 'isShowMarkAsRead', 'item', 'markAsReadLabel']),\n EuiNotificationsComponent: new Set(['count', 'customUnreadCount', 'dateFormat', 'headerHideLabel', 'headerTitleLabel', 'isHidePanelOnViewAllAction', 'isShowHideButton', 'isShowMarkAllAsReadButton', 'isShowMarkAsRead', 'isShowRefreshButton', 'isShowSettingsButton', 'isShowViewAllAction', 'items', 'markAllAsReadLabel', 'markAsReadLabel', 'markAsUnReadLabel', 'nbUnreadCount', 'noNotificationFoundLabel', 'noNotificationFoundLink', 'refreshLabel', 'settingsLabel', 'totalLabel', 'unreadLabel', 'viewAllNotificationsLabel']),\n EuiNotificationsV2Component: new Set(['count', 'dateFormat', 'headerHideLabel', 'headerTitleLabel', 'headerUnreadCountLabel', 'headerUnreadSinceLastCheckCountLabel', 'isHidePanelOnViewAllAction', 'isShowMarkAllAsReadButton', 'isShowMarkAsRead', 'isShowRefreshButton', 'isShowSettingsButton', 'isShowViewAllAction', 'items', 'markAllAsReadLabel', 'markAsReadLabel', 'markAsUnReadLabel', 'noNotificationFoundLabel', 'noNotificationFoundLink', 'refreshLabel', 'settingsLabel', 'totalLabel', 'unreadCount', 'unreadLabel', 'unreadSinceLastCheckCount', 'viewAllNotificationsLabel']),\n EuiOverlayComponent: new Set(['ariaLabel', 'euiHighlighted', 'fixedWidth', 'hasClosedOnClickOutside', 'isActive', 'position', 'width']),\n EuiOverlayHeaderTitleComponent: new Set(['headerTitleCount', 'headerTitleHideLabel', 'headerTitleLabel']),\n EuiPageColumnComponent: new Set(['autocloseContainerWidth', 'collapseAriaLabel', 'expandAriaLabel', 'hasHeaderBodyShrinkable', 'hasSidebarMenu', 'hasSubColumns', 'hasSubPanels', 'isAutocloseOnContainerResize', 'isAutocloseOnMobile', 'isCollapsed', 'isCollapsedHidden', 'isCollapsedWithIcons', 'isCollapsible', 'isHighlighted', 'isRightCollapsible', 'label', 'subLabel']),\n EuiPageColumnsComponent: new Set(['hasPreventMobileRendering']),\n EuiPageComponent: new Set(['columns']),\n EuiPageFooterComponent: new Set(['e2eAttr']),\n EuiPageHeaderComponent: new Set(['collapsedLabel', 'expandedLabel', 'isCollapsed', 'isCollapsible', 'isHeaderMultilines', 'label', 'labelTooltip', 'subLabel', 'subLabelTooltip']),\n EuiPageHeroHeaderComponent: new Set(['label', 'subLabel']),\n EuiPagePanelComponent: new Set(['collapseAriaLabel', 'collapsedLabel', 'expandAriaLabel', 'isCollapsed', 'isCollapsible', 'isRightCollapsible']),\n EuiPageTopContentComponent: new Set(['e2eAttr']),\n EuiPaginatorComponent: new Set(['e2eAttr', 'hasDynamicLength', 'hasPageNumberNavigation', 'hasPageNumberNavigationCompact', 'hasPageSize', 'isBasicMode', 'isHidden', 'length', 'nbPageNumberNavigation', 'page', 'pageSize', 'pageSizeOptions']),\n EuiPopoverComponent: new Set(['hasBackDrop', 'hasCloseButton', 'hasNoContentPadding', 'isDismissable', 'position', 'templatePortalContent', 'title', 'width']),\n EuiProgressBarComponent: new Set(['e2eAttr', 'hasStatusIcon', 'isIndeterminate', 'label', 'progress']),\n EuiProgressCircleComponent: new Set(['ariaLabel', 'labelValueEl', 'tabindex']),\n EuiRatingComponent: new Set(['ariaLabel', 'cssClasses', 'euiDisabled', 'numberOfStars', 'rating', 'ratingButtons']),\n EuiResizableComponent: new Set(['cssClasses']),\n EuiScrollHandlerDirective: new Set(['euiScrollHandler', 'euiScrollHandlerElement', 'toggleActiveHeight', 'toggleClass']),\n EuiSectionHeaderComponent: new Set(['e2eAttr', 'id', 'isExpandable', 'isExpanded', 'isFirst']),\n EuiSectionHeaderIconComponent: new Set(['icon']),\n EuiSelectComponent: new Set(['ariaLabel', 'isInvalid', 'placeholder', 'readonly']),\n EuiSidebarToggleComponent: new Set(['e2eAttr', 'iconSvgFillColor']),\n EuiSkeletonComponent: new Set(['cssClasses']),\n EuiSlideToggleComponent: new Set(['ariaLabel', 'cssClasses', 'disabled', 'iconSvgFillColorOff', 'iconSvgFillColorOn', 'iconSvgNameOff', 'iconSvgNameOn', 'id', 'isChecked']),\n EuiSliderComponent: new Set(['cssClasses', 'endHandler', 'endHandlerContainer', 'endInputRange', 'formattedEndValue', 'formattedStartValue', 'handlers', 'inputRanges', 'sliderContainer', 'startHandler', 'startHandlerContainer', 'startInputRange', 'trackActive']),\n EuiSmoothScrollToDirective: new Set(['callbackAfter', 'callbackBefore', 'containerId', 'duration', 'easing', 'middleAlign', 'offset', 'scrollIf', 'scrollOnClick', 'scrollTo']),\n EuiStatusBadgeComponent: new Set(['ariaLabel', 'colorPalette', 'cssClasses', 'e2eAttr', 'euiDottedBadge']),\n EuiTabBodyComponent: new Set(['hasNoContentPadding', 'templateRef']),\n EuiTabComponent: new Set(['e2eAttr', 'euiVariant', 'id', 'isClosable', 'isDisabled', 'isHandleActivateTab', 'isHandleCloseOnClose', 'isVisible', 'tooltip', 'url']),\n EuiTabHeaderComponent: new Set(['templateRef']),\n EuiTableComponent: new Set(['data', 'filter', 'hasStickyCols', 'hasStickyFooter', 'hasStickyHeader', 'isAsync', 'isColsOrderable', 'isLoading', 'isSelectOnlyVisibleRows', 'isTableBordered', 'isTableCompact', 'isTableFixedLayout', 'isTableResponsive', 'isVirtualScroll', 'isVirtualScrollCache', 'itemSize', 'paginator', 'preselectedRows', 'propId', 'tbodyRef', 'templates', 'tfootRef', 'theadRef', 'virtualScrollAsyncItemsLength', 'virtualScrollNbRows']),\n EuiTableFilterComponent: new Set(['filterInput', 'placeholder']),\n EuiTableSelectableHeaderComponent: new Set(['isHeaderSelectable']),\n EuiTableSelectableRowComponent: new Set(['isChecked', 'isDataSelectable', 'isKeyboardSelectable', 'isSingleSelectable']),\n EuiTableSortableColComponent: new Set(['defaultOrder', 'euiDropdown', 'isMultiSortable', 'sortDisabled']),\n EuiTabsComponent: new Set(['activeTabIndex', 'ariaLabel', 'e2eAttr', 'euiTabListItems', 'euiTabsHeaders', 'euiTabsHeadersContainer', 'euiTabsRightContent', 'isFlat', 'isMainNavigation']),\n EuiTemplateDirective: new Set(['name', 'type']),\n EuiTimelineComponent: new Set(['cssClasses', 'e2eAttr', 'isLeftAligned']),\n EuiTimelineItemComponent: new Set(['cssClasses', 'date', 'dateStyleClass', 'e2eAttr', 'isGroup', 'isLeftAligned', 'label', 'subLabel', 'time', 'timeStyleClass']),\n EuiTimepickerComponent: new Set(['e2eAttr', 'hasSeconds', 'iconSize', 'inputId', 'isDisabled', 'isOneInputField', 'isreadOnly', 'placeholder', 'stepHours', 'stepMinutes', 'stepSeconds', 'timeMask']),\n EuiToggleGroupComponent: new Set(['isFluid', 'isMultiple']),\n EuiToggleGroupItemComponent: new Set(['id', 'isChecked']),\n EuiToolbarAppComponent: new Set(['appName', 'appSubTitle']),\n EuiToolbarItemsComponent: new Set(['euiEnd', 'euiPositionRight']),\n EuiToolbarLogoComponent: new Set(['homeUrl', 'logoAltText', 'logoHeight', 'logoUrl', 'logoWidth']),\n EuiToolbarMegaMenuComponent: new Set(['ariaLabel', 'id', 'items', 'menuItemLinks', 'subMenuComponent', 'templatePortalContent']),\n EuiToolbarMegaMenuContainerComponent: new Set(['activeMenu', 'ariaLabel', 'megaMenuItemsGrouped', 'submenuItemLinks']),\n EuiToolbarNavbarItemComponent: new Set(['id', 'isActive', 'label']),\n EuiToolbarSearchComponent: new Set(['hasExpandAnimation', 'hasSearchButton', 'isAutocomplete', 'isInputText', 'panelWidth', 'placeholderLabel', 'searchResults', 'templates']),\n EuiToolbarSelectorComponent: new Set(['euiDisabled', 'iconSvgName', 'label']),\n EuiTooltipContainerComponent: new Set(['cssClasses']),\n EuiTooltipDirective: new Set(['contentAlignment', 'e2eAttr', 'euiTooltipAccent', 'euiTooltipDanger', 'euiTooltipInfo', 'euiTooltipPrimary', 'euiTooltipSecondary', 'euiTooltipSuccess', 'euiTooltipWarning', 'hideDelay', 'isDisabled', 'position', 'showDelay']),\n EuiTreeComponent: new Set(['autoTranslate', 'cdkScrollableRef', 'collapsedSvgIconClass', 'customNodeSelectFn', 'e2eAttr', 'expandedSvgIconClass', 'highlightPath', 'isClickTogglingNode', 'isMultiselect', 'isRecursiveParentSelection', 'isRecursiveSelection', 'isSingleSelect', 'nodeContentMetadataTemplateRef', 'nodeTemplateRef', 'rightContextMenuTemplateRef', 'showLines', 'showUnderlinedLinks', 'treeComponentInstance', 'virtualScrollPageSize', 'virtualScrollThreshold']),\n EuiTreeFormControlDirective: new Set(['euiTreeControlModelMapper', 'euiTreeControlValueSetter']),\n EuiTreeListComponent: new Set(['ariaLabel', 'collapseAllLabel', 'e2eAttr', 'expandAllLabel', 'filterFunction', 'filterLabel', 'hasItemsUrl', 'isExpanded', 'isShowToolbar', 'isShowToolbarToggle', 'tabindex', 'toolbarFilterValue']),\n EuiTreeListItemComponent: new Set(['focusable', 'isActive', 'isAlwaysExpanded', 'isDisplaySubLinksOnHover', 'isNavigateOnlyOnLabelClick', 'label', 'linkUrl', 'subLinks', 'url']),\n EuiTreeListToolbarComponent: new Set(['collapseAllLabel', 'e2eAttr', 'expandAllLabel', 'filterLabel', 'hasLabels', 'isFilterVisible', 'isToggleVisible', 'isVisible']),\n EuiUserProfileCardComponent: new Set(['avatarUrl', 'impersonateLabel', 'isShowAvatar', 'isShowAvatarInitials', 'isShowClose', 'isShowUserInfos', 'profileCardHideLabel', 'reverseNameOrder', 'showDetailsLabel']),\n EuiUserProfileComponent: new Set(['avatarUrl', 'dropContentWidth', 'dropdown', 'euiStatusDanger', 'euiStatusSecondary', 'euiStatusSuccess', 'hasMenu', 'hasTabNavigation', 'hasToggle', 'hasWelcomeLabel', 'impersonateLabel', 'isHeaderUserProfile', 'isMobileOnly', 'isReverse', 'isShowAvatarInitials', 'isShowUserInfos', 'isToolbarUserProfile', 'reverseNameOrder', 'statusVariant', 'subInfos', 'welcomeLabel']),\n EuiWizardComponent: new Set(['activeStepIndex', 'canBeFocused', 'childrenSteps', 'e2eAttr', 'isCustomContent', 'isNavigationAllowed', 'isShowStepTitle', 'steps', 'tabindex']),\n InputDirective: new Set(['disabled', 'euiDanger', 'euiDisabled', 'placeholder', 'readonly']),\n QuillEditorComponent: new Set(['bounds', 'customOptions', 'customToolbarPosition', 'debug', 'format', 'formats', 'hasImageFeature', 'id', 'maxLength', 'minLength', 'modules', 'placeholder', 'preserveWhitespace', 'readOnly', 'required', 'sanitize', 'scrollingContainer', 'strict', 'styles', 'theme', 'trackChanges', 'valueGetter', 'valueSetter']),\n}",
22714
+ "rawdescription": "Auto-generated map of EUI component classes whose",
22715
+ "description": "<p>Auto-generated map of EUI component classes whose</p>\n"
22716
+ },
22537
22717
  {
22538
22718
  "name": "EUI_TIMEZONES",
22539
22719
  "ctype": "miscellaneous",
@@ -24696,6 +24876,51 @@
24696
24876
  }
24697
24877
  ]
24698
24878
  },
24879
+ {
24880
+ "name": "applyEdits",
24881
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
24882
+ "ctype": "miscellaneous",
24883
+ "subtype": "function",
24884
+ "coverageIgnore": false,
24885
+ "deprecated": false,
24886
+ "deprecationMessage": "",
24887
+ "rawdescription": "",
24888
+ "description": "",
24889
+ "displayName": "applyEdits",
24890
+ "args": [
24891
+ {
24892
+ "name": "source",
24893
+ "type": "string",
24894
+ "deprecated": false,
24895
+ "deprecationMessage": ""
24896
+ },
24897
+ {
24898
+ "name": "edits",
24899
+ "deprecated": false,
24900
+ "deprecationMessage": ""
24901
+ }
24902
+ ],
24903
+ "returnType": "string",
24904
+ "jsdoctags": [
24905
+ {
24906
+ "name": "source",
24907
+ "type": "string",
24908
+ "deprecated": false,
24909
+ "deprecationMessage": "",
24910
+ "tagName": {
24911
+ "text": "param"
24912
+ }
24913
+ },
24914
+ {
24915
+ "name": "edits",
24916
+ "deprecated": false,
24917
+ "deprecationMessage": "",
24918
+ "tagName": {
24919
+ "text": "param"
24920
+ }
24921
+ }
24922
+ ]
24923
+ },
24699
24924
  {
24700
24925
  "name": "applyReplacements",
24701
24926
  "file": "packages/core/schematics/migrate-to-standalone/index.ts",
@@ -24958,6 +25183,81 @@
24958
25183
  "args": [],
24959
25184
  "returnType": "SelectorEntry[]"
24960
25185
  },
25186
+ {
25187
+ "name": "buildTemplateRefMap",
25188
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
25189
+ "ctype": "miscellaneous",
25190
+ "subtype": "function",
25191
+ "coverageIgnore": false,
25192
+ "deprecated": false,
25193
+ "deprecationMessage": "",
25194
+ "rawdescription": "Builds a map of template reference variable names (#ref) to EUI class names.\n\nParses the component's template (inline or external) and finds elements like:\n <eui-alert #myAlert> → myAlert → EuiAlertComponent\n <input euiAutocomplete #ac> → ac → EuiAutocompleteComponent\n\nReturns Map<refName, euiClassName>.",
25195
+ "description": "<p>Builds a map of template reference variable names (#ref) to EUI class names.</p>\n<p>Parses the component&#39;s template (inline or external) and finds elements like:\n &lt;eui-alert #myAlert&gt; → myAlert → EuiAlertComponent\n &lt;input euiAutocomplete #ac&gt; → ac → EuiAutocompleteComponent</p>\n<p>Returns Map&lt;refName, euiClassName&gt;.</p>\n",
25196
+ "displayName": "buildTemplateRefMap",
25197
+ "args": [
25198
+ {
25199
+ "name": "sourceFile",
25200
+ "deprecated": false,
25201
+ "deprecationMessage": ""
25202
+ },
25203
+ {
25204
+ "name": "source",
25205
+ "type": "string",
25206
+ "deprecated": false,
25207
+ "deprecationMessage": ""
25208
+ },
25209
+ {
25210
+ "name": "filePath",
25211
+ "type": "string",
25212
+ "deprecated": false,
25213
+ "deprecationMessage": ""
25214
+ },
25215
+ {
25216
+ "name": "tree",
25217
+ "type": "Tree",
25218
+ "deprecated": false,
25219
+ "deprecationMessage": ""
25220
+ }
25221
+ ],
25222
+ "returnType": "Map<string, string>",
25223
+ "jsdoctags": [
25224
+ {
25225
+ "name": "sourceFile",
25226
+ "deprecated": false,
25227
+ "deprecationMessage": "",
25228
+ "tagName": {
25229
+ "text": "param"
25230
+ }
25231
+ },
25232
+ {
25233
+ "name": "source",
25234
+ "type": "string",
25235
+ "deprecated": false,
25236
+ "deprecationMessage": "",
25237
+ "tagName": {
25238
+ "text": "param"
25239
+ }
25240
+ },
25241
+ {
25242
+ "name": "filePath",
25243
+ "type": "string",
25244
+ "deprecated": false,
25245
+ "deprecationMessage": "",
25246
+ "tagName": {
25247
+ "text": "param"
25248
+ }
25249
+ },
25250
+ {
25251
+ "name": "tree",
25252
+ "type": "Tree",
25253
+ "deprecated": false,
25254
+ "deprecationMessage": "",
25255
+ "tagName": {
25256
+ "text": "param"
25257
+ }
25258
+ }
25259
+ ]
25260
+ },
24961
25261
  {
24962
25262
  "name": "buildTruncatePipeEdit",
24963
25263
  "file": "packages/core/schematics/migrate-eui-chip-list/index.ts",
@@ -25200,6 +25500,66 @@
25200
25500
  }
25201
25501
  ]
25202
25502
  },
25503
+ {
25504
+ "name": "collectEuiReferences",
25505
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
25506
+ "ctype": "miscellaneous",
25507
+ "subtype": "function",
25508
+ "coverageIgnore": false,
25509
+ "deprecated": false,
25510
+ "deprecationMessage": "",
25511
+ "rawdescription": "Scans the source file for class properties or variables typed as EUI component classes.\nReturns a map: localName → Set of signal property names.\n\nHandles:",
25512
+ "description": "<p>Scans the source file for class properties or variables typed as EUI component classes.\nReturns a map: localName → Set of signal property names.</p>\n<p>Handles:</p>\n",
25513
+ "displayName": "collectEuiReferences",
25514
+ "args": [
25515
+ {
25516
+ "name": "sourceFile",
25517
+ "deprecated": false,
25518
+ "deprecationMessage": ""
25519
+ },
25520
+ {
25521
+ "name": "source",
25522
+ "type": "string",
25523
+ "deprecated": false,
25524
+ "deprecationMessage": ""
25525
+ },
25526
+ {
25527
+ "name": "templateRefMap",
25528
+ "type": "Map",
25529
+ "deprecated": false,
25530
+ "deprecationMessage": ""
25531
+ }
25532
+ ],
25533
+ "returnType": "Map<string, ReadonlySet<string>>",
25534
+ "jsdoctags": [
25535
+ {
25536
+ "name": "sourceFile",
25537
+ "deprecated": false,
25538
+ "deprecationMessage": "",
25539
+ "tagName": {
25540
+ "text": "param"
25541
+ }
25542
+ },
25543
+ {
25544
+ "name": "source",
25545
+ "type": "string",
25546
+ "deprecated": false,
25547
+ "deprecationMessage": "",
25548
+ "tagName": {
25549
+ "text": "param"
25550
+ }
25551
+ },
25552
+ {
25553
+ "name": "templateRefMap",
25554
+ "type": "Map",
25555
+ "deprecated": false,
25556
+ "deprecationMessage": "",
25557
+ "tagName": {
25558
+ "text": "param"
25559
+ }
25560
+ }
25561
+ ]
25562
+ },
25203
25563
  {
25204
25564
  "name": "collectInputRemovals",
25205
25565
  "file": "packages/core/schematics/migrate-eui-table/index.ts",
@@ -26293,6 +26653,51 @@
26293
26653
  }
26294
26654
  ]
26295
26655
  },
26656
+ {
26657
+ "name": "collectTemplateRefs",
26658
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
26659
+ "ctype": "miscellaneous",
26660
+ "subtype": "function",
26661
+ "coverageIgnore": false,
26662
+ "deprecated": false,
26663
+ "deprecationMessage": "",
26664
+ "rawdescription": "Recursively walks template AST nodes, collecting #refName → EUI class name mappings.\n\nFor each element with a template reference (#ref), we try to resolve its EUI class:\n1. Match element tag name against EUI_SELECTOR_TO_CLASS (e.g. 'eui-alert' → EuiAlertComponent)\n2. Match element attributes against attribute selectors (e.g. [euiAutocomplete] → EuiAutocompleteComponent)",
26665
+ "description": "<p>Recursively walks template AST nodes, collecting #refName → EUI class name mappings.</p>\n<p>For each element with a template reference (#ref), we try to resolve its EUI class:</p>\n<ol>\n<li>Match element tag name against EUI_SELECTOR_TO_CLASS (e.g. &#39;eui-alert&#39; → EuiAlertComponent)</li>\n<li>Match element attributes against attribute selectors (e.g. [euiAutocomplete] → EuiAutocompleteComponent)</li>\n</ol>\n",
26666
+ "displayName": "collectTemplateRefs",
26667
+ "args": [
26668
+ {
26669
+ "name": "nodes",
26670
+ "deprecated": false,
26671
+ "deprecationMessage": ""
26672
+ },
26673
+ {
26674
+ "name": "refMap",
26675
+ "type": "Map",
26676
+ "deprecated": false,
26677
+ "deprecationMessage": ""
26678
+ }
26679
+ ],
26680
+ "returnType": "void",
26681
+ "jsdoctags": [
26682
+ {
26683
+ "name": "nodes",
26684
+ "deprecated": false,
26685
+ "deprecationMessage": "",
26686
+ "tagName": {
26687
+ "text": "param"
26688
+ }
26689
+ },
26690
+ {
26691
+ "name": "refMap",
26692
+ "type": "Map",
26693
+ "deprecated": false,
26694
+ "deprecationMessage": "",
26695
+ "tagName": {
26696
+ "text": "param"
26697
+ }
26698
+ }
26699
+ ]
26700
+ },
26296
26701
  {
26297
26702
  "name": "ConsoleHttpErrorCallbackFn",
26298
26703
  "file": "packages/core/src/lib/services/errors/http-error-handler-callback-functions.ts",
@@ -26691,6 +27096,36 @@
26691
27096
  }
26692
27097
  ]
26693
27098
  },
27099
+ {
27100
+ "name": "deduplicateEdits",
27101
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
27102
+ "ctype": "miscellaneous",
27103
+ "subtype": "function",
27104
+ "coverageIgnore": false,
27105
+ "deprecated": false,
27106
+ "deprecationMessage": "",
27107
+ "rawdescription": "",
27108
+ "description": "",
27109
+ "displayName": "deduplicateEdits",
27110
+ "args": [
27111
+ {
27112
+ "name": "edits",
27113
+ "deprecated": false,
27114
+ "deprecationMessage": ""
27115
+ }
27116
+ ],
27117
+ "returnType": "Edit[]",
27118
+ "jsdoctags": [
27119
+ {
27120
+ "name": "edits",
27121
+ "deprecated": false,
27122
+ "deprecationMessage": "",
27123
+ "tagName": {
27124
+ "text": "param"
27125
+ }
27126
+ }
27127
+ ]
27128
+ },
26694
27129
  {
26695
27130
  "name": "defaultMemoize",
26696
27131
  "file": "packages/core/src/lib/services/store/ngrx_kit.ts",
@@ -27315,6 +27750,51 @@
27315
27750
  }
27316
27751
  ]
27317
27752
  },
27753
+ {
27754
+ "name": "findComponentMetadata",
27755
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
27756
+ "ctype": "miscellaneous",
27757
+ "subtype": "function",
27758
+ "coverageIgnore": false,
27759
+ "deprecated": false,
27760
+ "deprecationMessage": "",
27761
+ "rawdescription": "Extracts",
27762
+ "description": "<p>Extracts</p>\n",
27763
+ "displayName": "findComponentMetadata",
27764
+ "args": [
27765
+ {
27766
+ "name": "sourceFile",
27767
+ "deprecated": false,
27768
+ "deprecationMessage": ""
27769
+ },
27770
+ {
27771
+ "name": "source",
27772
+ "type": "string",
27773
+ "deprecated": false,
27774
+ "deprecationMessage": ""
27775
+ }
27776
+ ],
27777
+ "returnType": "literal type | null",
27778
+ "jsdoctags": [
27779
+ {
27780
+ "name": "sourceFile",
27781
+ "deprecated": false,
27782
+ "deprecationMessage": "",
27783
+ "tagName": {
27784
+ "text": "param"
27785
+ }
27786
+ },
27787
+ {
27788
+ "name": "source",
27789
+ "type": "string",
27790
+ "deprecated": false,
27791
+ "deprecationMessage": "",
27792
+ "tagName": {
27793
+ "text": "param"
27794
+ }
27795
+ }
27796
+ ]
27797
+ },
27318
27798
  {
27319
27799
  "name": "findDeclaringModule",
27320
27800
  "file": "packages/core/schematics/add-eui-imports/index.ts",
@@ -27988,6 +28468,36 @@
27988
28468
  "args": [],
27989
28469
  "returnType": "Provider[]"
27990
28470
  },
28471
+ {
28472
+ "name": "getDecoratorName",
28473
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
28474
+ "ctype": "miscellaneous",
28475
+ "subtype": "function",
28476
+ "coverageIgnore": false,
28477
+ "deprecated": false,
28478
+ "deprecationMessage": "",
28479
+ "rawdescription": "",
28480
+ "description": "",
28481
+ "displayName": "getDecoratorName",
28482
+ "args": [
28483
+ {
28484
+ "name": "callExpr",
28485
+ "deprecated": false,
28486
+ "deprecationMessage": ""
28487
+ }
28488
+ ],
28489
+ "returnType": "string | null",
28490
+ "jsdoctags": [
28491
+ {
28492
+ "name": "callExpr",
28493
+ "deprecated": false,
28494
+ "deprecationMessage": "",
28495
+ "tagName": {
28496
+ "text": "param"
28497
+ }
28498
+ }
28499
+ ]
28500
+ },
27991
28501
  {
27992
28502
  "name": "getDependencyProviders",
27993
28503
  "file": "packages/core/src/lib/services/app/eui-startup.ts",
@@ -28653,6 +29163,36 @@
28653
29163
  }
28654
29164
  ]
28655
29165
  },
29166
+ {
29167
+ "name": "getTypeAnnotationName",
29168
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
29169
+ "ctype": "miscellaneous",
29170
+ "subtype": "function",
29171
+ "coverageIgnore": false,
29172
+ "deprecated": false,
29173
+ "deprecationMessage": "",
29174
+ "rawdescription": "",
29175
+ "description": "",
29176
+ "displayName": "getTypeAnnotationName",
29177
+ "args": [
29178
+ {
29179
+ "name": "typeNode",
29180
+ "deprecated": false,
29181
+ "deprecationMessage": ""
29182
+ }
29183
+ ],
29184
+ "returnType": "string | null",
29185
+ "jsdoctags": [
29186
+ {
29187
+ "name": "typeNode",
29188
+ "deprecated": false,
29189
+ "deprecationMessage": "",
29190
+ "tagName": {
29191
+ "text": "param"
29192
+ }
29193
+ }
29194
+ ]
29195
+ },
28656
29196
  {
28657
29197
  "name": "GrowlHttpErrorCallbackFn",
28658
29198
  "file": "packages/core/src/lib/services/errors/http-error-handler-callback-functions.ts",
@@ -28779,6 +29319,38 @@
28779
29319
  }
28780
29320
  ]
28781
29321
  },
29322
+ {
29323
+ "name": "hasEuiReference",
29324
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
29325
+ "ctype": "miscellaneous",
29326
+ "subtype": "function",
29327
+ "coverageIgnore": false,
29328
+ "deprecated": false,
29329
+ "deprecationMessage": "",
29330
+ "rawdescription": "Quick check: does the file reference any EUI class name from the signal map?",
29331
+ "description": "<p>Quick check: does the file reference any EUI class name from the signal map?</p>\n",
29332
+ "displayName": "hasEuiReference",
29333
+ "args": [
29334
+ {
29335
+ "name": "source",
29336
+ "type": "string",
29337
+ "deprecated": false,
29338
+ "deprecationMessage": ""
29339
+ }
29340
+ ],
29341
+ "returnType": "boolean",
29342
+ "jsdoctags": [
29343
+ {
29344
+ "name": "source",
29345
+ "type": "string",
29346
+ "deprecated": false,
29347
+ "deprecationMessage": "",
29348
+ "tagName": {
29349
+ "text": "param"
29350
+ }
29351
+ }
29352
+ ]
29353
+ },
28782
29354
  {
28783
29355
  "name": "hasEuiTableAttribute",
28784
29356
  "file": "packages/core/schematics/migrate-eui-table/index.ts",
@@ -28901,6 +29473,38 @@
28901
29473
  }
28902
29474
  ]
28903
29475
  },
29476
+ {
29477
+ "name": "hasStringRefQuery",
29478
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
29479
+ "ctype": "miscellaneous",
29480
+ "subtype": "function",
29481
+ "coverageIgnore": false,
29482
+ "deprecated": false,
29483
+ "deprecationMessage": "",
29484
+ "rawdescription": "Quick check: does the file have",
29485
+ "description": "<p>Quick check: does the file have</p>\n",
29486
+ "displayName": "hasStringRefQuery",
29487
+ "args": [
29488
+ {
29489
+ "name": "source",
29490
+ "type": "string",
29491
+ "deprecated": false,
29492
+ "deprecationMessage": ""
29493
+ }
29494
+ ],
29495
+ "returnType": "boolean",
29496
+ "jsdoctags": [
29497
+ {
29498
+ "name": "source",
29499
+ "type": "string",
29500
+ "deprecated": false,
29501
+ "deprecationMessage": "",
29502
+ "tagName": {
29503
+ "text": "param"
29504
+ }
29505
+ }
29506
+ ]
29507
+ },
28904
29508
  {
28905
29509
  "name": "iconMigrate",
28906
29510
  "file": "packages/core/schematics/icon-migrate/index.ts",
@@ -29086,6 +29690,36 @@
29086
29690
  }
29087
29691
  ]
29088
29692
  },
29693
+ {
29694
+ "name": "isAssignmentOperator",
29695
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
29696
+ "ctype": "miscellaneous",
29697
+ "subtype": "function",
29698
+ "coverageIgnore": false,
29699
+ "deprecated": false,
29700
+ "deprecationMessage": "",
29701
+ "rawdescription": "",
29702
+ "description": "",
29703
+ "displayName": "isAssignmentOperator",
29704
+ "args": [
29705
+ {
29706
+ "name": "kind",
29707
+ "deprecated": false,
29708
+ "deprecationMessage": ""
29709
+ }
29710
+ ],
29711
+ "returnType": "boolean",
29712
+ "jsdoctags": [
29713
+ {
29714
+ "name": "kind",
29715
+ "deprecated": false,
29716
+ "deprecationMessage": "",
29717
+ "tagName": {
29718
+ "text": "param"
29719
+ }
29720
+ }
29721
+ ]
29722
+ },
29089
29723
  {
29090
29724
  "name": "isAvatarElement",
29091
29725
  "file": "packages/core/schematics/migrate-eui-avatar/index.ts",
@@ -32795,6 +33429,40 @@
32795
33429
  }
32796
33430
  ]
32797
33431
  },
33432
+ {
33433
+ "name": "migrateToSignals",
33434
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
33435
+ "ctype": "miscellaneous",
33436
+ "subtype": "function",
33437
+ "coverageIgnore": false,
33438
+ "deprecated": false,
33439
+ "deprecationMessage": "",
33440
+ "rawdescription": "Migrates consumer code that accesses EUI component instances programmatically.\n\nWhen EUI migrated",
33441
+ "description": "<p>Migrates consumer code that accesses EUI component instances programmatically.</p>\n<p>When EUI migrated</p>\n",
33442
+ "displayName": "migrateToSignals",
33443
+ "args": [
33444
+ {
33445
+ "name": "options",
33446
+ "type": "Schema",
33447
+ "deprecated": false,
33448
+ "deprecationMessage": "",
33449
+ "defaultValue": "{}"
33450
+ }
33451
+ ],
33452
+ "returnType": "Rule",
33453
+ "jsdoctags": [
33454
+ {
33455
+ "name": "options",
33456
+ "type": "Schema",
33457
+ "deprecated": false,
33458
+ "deprecationMessage": "",
33459
+ "defaultValue": "{}",
33460
+ "tagName": {
33461
+ "text": "param"
33462
+ }
33463
+ }
33464
+ ]
33465
+ },
32798
33466
  {
32799
33467
  "name": "migrateToStandalone",
32800
33468
  "file": "packages/core/schematics/migrate-to-standalone/index.ts",
@@ -33015,6 +33683,83 @@
33015
33683
  }
33016
33684
  ]
33017
33685
  },
33686
+ {
33687
+ "name": "migrateTypeScript",
33688
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
33689
+ "ctype": "miscellaneous",
33690
+ "subtype": "function",
33691
+ "coverageIgnore": false,
33692
+ "deprecated": false,
33693
+ "deprecationMessage": "",
33694
+ "rawdescription": "",
33695
+ "description": "",
33696
+ "displayName": "migrateTypeScript",
33697
+ "args": [
33698
+ {
33699
+ "name": "source",
33700
+ "type": "string",
33701
+ "deprecated": false,
33702
+ "deprecationMessage": ""
33703
+ },
33704
+ {
33705
+ "name": "filePath",
33706
+ "type": "string",
33707
+ "deprecated": false,
33708
+ "deprecationMessage": ""
33709
+ },
33710
+ {
33711
+ "name": "tree",
33712
+ "type": "Tree",
33713
+ "deprecated": false,
33714
+ "deprecationMessage": ""
33715
+ },
33716
+ {
33717
+ "name": "context",
33718
+ "type": "SchematicContext",
33719
+ "deprecated": false,
33720
+ "deprecationMessage": ""
33721
+ }
33722
+ ],
33723
+ "returnType": "MigrateResult",
33724
+ "jsdoctags": [
33725
+ {
33726
+ "name": "source",
33727
+ "type": "string",
33728
+ "deprecated": false,
33729
+ "deprecationMessage": "",
33730
+ "tagName": {
33731
+ "text": "param"
33732
+ }
33733
+ },
33734
+ {
33735
+ "name": "filePath",
33736
+ "type": "string",
33737
+ "deprecated": false,
33738
+ "deprecationMessage": "",
33739
+ "tagName": {
33740
+ "text": "param"
33741
+ }
33742
+ },
33743
+ {
33744
+ "name": "tree",
33745
+ "type": "Tree",
33746
+ "deprecated": false,
33747
+ "deprecationMessage": "",
33748
+ "tagName": {
33749
+ "text": "param"
33750
+ }
33751
+ },
33752
+ {
33753
+ "name": "context",
33754
+ "type": "SchematicContext",
33755
+ "deprecated": false,
33756
+ "deprecationMessage": "",
33757
+ "tagName": {
33758
+ "text": "param"
33759
+ }
33760
+ }
33761
+ ]
33762
+ },
33018
33763
  {
33019
33764
  "name": "parseSelector",
33020
33765
  "file": "packages/core/schematics/add-eui-imports/selector-map.ts",
@@ -34101,6 +34846,96 @@
34101
34846
  }
34102
34847
  ]
34103
34848
  },
34849
+ {
34850
+ "name": "resolveElementToEuiClass",
34851
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
34852
+ "ctype": "miscellaneous",
34853
+ "subtype": "function",
34854
+ "coverageIgnore": false,
34855
+ "deprecated": false,
34856
+ "deprecationMessage": "",
34857
+ "rawdescription": "Given a template element, resolves it to an EUI class name by checking:\n1. Tag name: <eui-alert> → look up 'eui-alert' in EUI_SELECTOR_TO_CLASS\n2. Attribute selectors: <input euiAutocomplete> → look up 'input[euiAutocomplete]' or '[euiAutocomplete]'",
34858
+ "description": "<p>Given a template element, resolves it to an EUI class name by checking:</p>\n<ol>\n<li>Tag name: <eui-alert> → look up &#39;eui-alert&#39; in EUI_SELECTOR_TO_CLASS</li>\n<li>Attribute selectors: <input euiAutocomplete> → look up &#39;input[euiAutocomplete]&#39; or &#39;[euiAutocomplete]&#39;</li>\n</ol>\n",
34859
+ "displayName": "resolveElementToEuiClass",
34860
+ "args": [
34861
+ {
34862
+ "name": "element",
34863
+ "type": "TmplAstElement",
34864
+ "deprecated": false,
34865
+ "deprecationMessage": ""
34866
+ }
34867
+ ],
34868
+ "returnType": "string | null",
34869
+ "jsdoctags": [
34870
+ {
34871
+ "name": "element",
34872
+ "type": "TmplAstElement",
34873
+ "deprecated": false,
34874
+ "deprecationMessage": "",
34875
+ "tagName": {
34876
+ "text": "param"
34877
+ }
34878
+ }
34879
+ ]
34880
+ },
34881
+ {
34882
+ "name": "resolveEuiClassName",
34883
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
34884
+ "ctype": "miscellaneous",
34885
+ "subtype": "function",
34886
+ "coverageIgnore": false,
34887
+ "deprecated": false,
34888
+ "deprecationMessage": "",
34889
+ "rawdescription": "Resolves the EUI class name from a property declaration.\nChecks: type annotation → decorator class argument → template ref map.",
34890
+ "description": "<p>Resolves the EUI class name from a property declaration.\nChecks: type annotation → decorator class argument → template ref map.</p>\n",
34891
+ "displayName": "resolveEuiClassName",
34892
+ "args": [
34893
+ {
34894
+ "name": "node",
34895
+ "deprecated": false,
34896
+ "deprecationMessage": ""
34897
+ },
34898
+ {
34899
+ "name": "sourceFile",
34900
+ "deprecated": false,
34901
+ "deprecationMessage": ""
34902
+ },
34903
+ {
34904
+ "name": "templateRefMap",
34905
+ "type": "Map",
34906
+ "deprecated": false,
34907
+ "deprecationMessage": ""
34908
+ }
34909
+ ],
34910
+ "returnType": "string | null",
34911
+ "jsdoctags": [
34912
+ {
34913
+ "name": "node",
34914
+ "deprecated": false,
34915
+ "deprecationMessage": "",
34916
+ "tagName": {
34917
+ "text": "param"
34918
+ }
34919
+ },
34920
+ {
34921
+ "name": "sourceFile",
34922
+ "deprecated": false,
34923
+ "deprecationMessage": "",
34924
+ "tagName": {
34925
+ "text": "param"
34926
+ }
34927
+ },
34928
+ {
34929
+ "name": "templateRefMap",
34930
+ "type": "Map",
34931
+ "deprecated": false,
34932
+ "deprecationMessage": "",
34933
+ "tagName": {
34934
+ "text": "param"
34935
+ }
34936
+ }
34937
+ ]
34938
+ },
34104
34939
  {
34105
34940
  "name": "resolveIcon",
34106
34941
  "file": "packages/core/schematics/icon-migrate/index.ts",
@@ -34178,6 +35013,36 @@
34178
35013
  }
34179
35014
  ]
34180
35015
  },
35016
+ {
35017
+ "name": "resolveRefName",
35018
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
35019
+ "ctype": "miscellaneous",
35020
+ "subtype": "function",
35021
+ "coverageIgnore": false,
35022
+ "deprecated": false,
35023
+ "deprecationMessage": "",
35024
+ "rawdescription": "Resolves a reference name from an expression.\nHandles: `ref`, `this.ref`, `this._ref`",
35025
+ "description": "<p>Resolves a reference name from an expression.\nHandles: <code>ref</code>, <code>this.ref</code>, <code>this._ref</code></p>\n",
35026
+ "displayName": "resolveRefName",
35027
+ "args": [
35028
+ {
35029
+ "name": "expr",
35030
+ "deprecated": false,
35031
+ "deprecationMessage": ""
35032
+ }
35033
+ ],
35034
+ "returnType": "string | null",
35035
+ "jsdoctags": [
35036
+ {
35037
+ "name": "expr",
35038
+ "deprecated": false,
35039
+ "deprecationMessage": "",
35040
+ "tagName": {
35041
+ "text": "param"
35042
+ }
35043
+ }
35044
+ ]
35045
+ },
34181
35046
  {
34182
35047
  "name": "sessionStorageSync",
34183
35048
  "file": "packages/core/src/lib/services/store/reducers/meta.reducers.ts",
@@ -34362,27 +35227,70 @@
34362
35227
  ]
34363
35228
  },
34364
35229
  {
34365
- "name": "unwrapExpression",
34366
- "file": "packages/core/schematics/migrate-eui-accent/index.ts",
35230
+ "name": "tryRewritePropertyAccess",
35231
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
34367
35232
  "ctype": "miscellaneous",
34368
35233
  "subtype": "function",
34369
35234
  "coverageIgnore": false,
34370
35235
  "deprecated": false,
34371
35236
  "deprecationMessage": "",
34372
- "rawdescription": "",
34373
- "description": "",
34374
- "displayName": "unwrapExpression",
35237
+ "rawdescription": "Checks if a property access `ref.prop` should be rewritten to `ref.prop()`.\n\nWe rewrite if:\n- `ref` is tracked in euiRefs\n- `prop` is in the signal set for that EUI class\n- The access is NOT already a call expression (not `ref.prop()` or `ref.prop(args)`)\n- The access is NOT a write target (not `ref.prop = value`)\n- The access is NOT a template binding argument (those are unaffected)",
35238
+ "description": "<p>Checks if a property access <code>ref.prop</code> should be rewritten to <code>ref.prop()</code>.</p>\n<p>We rewrite if:</p>\n<ul>\n<li><code>ref</code> is tracked in euiRefs</li>\n<li><code>prop</code> is in the signal set for that EUI class</li>\n<li>The access is NOT already a call expression (not <code>ref.prop()</code> or <code>ref.prop(args)</code>)</li>\n<li>The access is NOT a write target (not <code>ref.prop = value</code>)</li>\n<li>The access is NOT a template binding argument (those are unaffected)</li>\n</ul>\n",
35239
+ "displayName": "tryRewritePropertyAccess",
34375
35240
  "args": [
34376
35241
  {
34377
- "name": "expression",
35242
+ "name": "node",
35243
+ "deprecated": false,
35244
+ "deprecationMessage": ""
35245
+ },
35246
+ {
35247
+ "name": "euiRefs",
35248
+ "type": "Map",
35249
+ "deprecated": false,
35250
+ "deprecationMessage": ""
35251
+ },
35252
+ {
35253
+ "name": "sourceFile",
35254
+ "deprecated": false,
35255
+ "deprecationMessage": ""
35256
+ },
35257
+ {
35258
+ "name": "source",
35259
+ "type": "string",
34378
35260
  "deprecated": false,
34379
35261
  "deprecationMessage": ""
34380
35262
  }
34381
35263
  ],
34382
- "returnType": "ts.Expression",
35264
+ "returnType": "Edit | null",
34383
35265
  "jsdoctags": [
34384
35266
  {
34385
- "name": "expression",
35267
+ "name": "node",
35268
+ "deprecated": false,
35269
+ "deprecationMessage": "",
35270
+ "tagName": {
35271
+ "text": "param"
35272
+ }
35273
+ },
35274
+ {
35275
+ "name": "euiRefs",
35276
+ "type": "Map",
35277
+ "deprecated": false,
35278
+ "deprecationMessage": "",
35279
+ "tagName": {
35280
+ "text": "param"
35281
+ }
35282
+ },
35283
+ {
35284
+ "name": "sourceFile",
35285
+ "deprecated": false,
35286
+ "deprecationMessage": "",
35287
+ "tagName": {
35288
+ "text": "param"
35289
+ }
35290
+ },
35291
+ {
35292
+ "name": "source",
35293
+ "type": "string",
34386
35294
  "deprecated": false,
34387
35295
  "deprecationMessage": "",
34388
35296
  "tagName": {
@@ -34393,7 +35301,37 @@
34393
35301
  },
34394
35302
  {
34395
35303
  "name": "unwrapExpression",
34396
- "file": "packages/core/schematics/migrate-eui-button/index.ts",
35304
+ "file": "packages/core/schematics/migrate-eui-accent/index.ts",
35305
+ "ctype": "miscellaneous",
35306
+ "subtype": "function",
35307
+ "coverageIgnore": false,
35308
+ "deprecated": false,
35309
+ "deprecationMessage": "",
35310
+ "rawdescription": "",
35311
+ "description": "",
35312
+ "displayName": "unwrapExpression",
35313
+ "args": [
35314
+ {
35315
+ "name": "expression",
35316
+ "deprecated": false,
35317
+ "deprecationMessage": ""
35318
+ }
35319
+ ],
35320
+ "returnType": "ts.Expression",
35321
+ "jsdoctags": [
35322
+ {
35323
+ "name": "expression",
35324
+ "deprecated": false,
35325
+ "deprecationMessage": "",
35326
+ "tagName": {
35327
+ "text": "param"
35328
+ }
35329
+ }
35330
+ ]
35331
+ },
35332
+ {
35333
+ "name": "unwrapExpression",
35334
+ "file": "packages/core/schematics/migrate-eui-button/index.ts",
34397
35335
  "ctype": "miscellaneous",
34398
35336
  "subtype": "function",
34399
35337
  "coverageIgnore": false,
@@ -34691,6 +35629,36 @@
34691
35629
  }
34692
35630
  ]
34693
35631
  },
35632
+ {
35633
+ "name": "unwrapExpression",
35634
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
35635
+ "ctype": "miscellaneous",
35636
+ "subtype": "function",
35637
+ "coverageIgnore": false,
35638
+ "deprecated": false,
35639
+ "deprecationMessage": "",
35640
+ "rawdescription": "",
35641
+ "description": "",
35642
+ "displayName": "unwrapExpression",
35643
+ "args": [
35644
+ {
35645
+ "name": "expression",
35646
+ "deprecated": false,
35647
+ "deprecationMessage": ""
35648
+ }
35649
+ ],
35650
+ "returnType": "ts.Expression",
35651
+ "jsdoctags": [
35652
+ {
35653
+ "name": "expression",
35654
+ "deprecated": false,
35655
+ "deprecationMessage": "",
35656
+ "tagName": {
35657
+ "text": "param"
35658
+ }
35659
+ }
35660
+ ]
35661
+ },
34694
35662
  {
34695
35663
  "name": "updateDecoratorImportsArray",
34696
35664
  "file": "packages/core/schematics/add-eui-imports/index.ts",
@@ -35741,7 +36709,7 @@
35741
36709
  },
35742
36710
  {
35743
36711
  "name": "visitDir",
35744
- "file": "packages/core/schematics/migrate-to-standalone/index.ts",
36712
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
35745
36713
  "ctype": "miscellaneous",
35746
36714
  "subtype": "function",
35747
36715
  "coverageIgnore": false,
@@ -35785,8 +36753,8 @@
35785
36753
  ]
35786
36754
  },
35787
36755
  {
35788
- "name": "visitExpressionForPipes",
35789
- "file": "packages/core/schematics/migrate-eui-table/index.ts",
36756
+ "name": "visitDir",
36757
+ "file": "packages/core/schematics/migrate-to-standalone/index.ts",
35790
36758
  "ctype": "miscellaneous",
35791
36759
  "subtype": "function",
35792
36760
  "coverageIgnore": false,
@@ -35794,16 +36762,16 @@
35794
36762
  "deprecationMessage": "",
35795
36763
  "rawdescription": "",
35796
36764
  "description": "",
35797
- "displayName": "visitExpressionForPipes",
36765
+ "displayName": "visitDir",
35798
36766
  "args": [
35799
36767
  {
35800
- "name": "expr",
35801
- "type": "AST",
36768
+ "name": "dir",
36769
+ "type": "DirEntry",
35802
36770
  "deprecated": false,
35803
36771
  "deprecationMessage": ""
35804
36772
  },
35805
36773
  {
35806
- "name": "edits",
36774
+ "name": "callback",
35807
36775
  "deprecated": false,
35808
36776
  "deprecationMessage": ""
35809
36777
  }
@@ -35811,8 +36779,8 @@
35811
36779
  "returnType": "void",
35812
36780
  "jsdoctags": [
35813
36781
  {
35814
- "name": "expr",
35815
- "type": "AST",
36782
+ "name": "dir",
36783
+ "type": "DirEntry",
35816
36784
  "deprecated": false,
35817
36785
  "deprecationMessage": "",
35818
36786
  "tagName": {
@@ -35820,7 +36788,7 @@
35820
36788
  }
35821
36789
  },
35822
36790
  {
35823
- "name": "edits",
36791
+ "name": "callback",
35824
36792
  "deprecated": false,
35825
36793
  "deprecationMessage": "",
35826
36794
  "tagName": {
@@ -35830,8 +36798,8 @@
35830
36798
  ]
35831
36799
  },
35832
36800
  {
35833
- "name": "visitNodes",
35834
- "file": "packages/core/schematics/migrate-eui-accent/index.ts",
36801
+ "name": "visitExpressionForPipes",
36802
+ "file": "packages/core/schematics/migrate-eui-table/index.ts",
35835
36803
  "ctype": "miscellaneous",
35836
36804
  "subtype": "function",
35837
36805
  "coverageIgnore": false,
@@ -35839,10 +36807,11 @@
35839
36807
  "deprecationMessage": "",
35840
36808
  "rawdescription": "",
35841
36809
  "description": "",
35842
- "displayName": "visitNodes",
36810
+ "displayName": "visitExpressionForPipes",
35843
36811
  "args": [
35844
36812
  {
35845
- "name": "nodes",
36813
+ "name": "expr",
36814
+ "type": "AST",
35846
36815
  "deprecated": false,
35847
36816
  "deprecationMessage": ""
35848
36817
  },
@@ -35855,7 +36824,8 @@
35855
36824
  "returnType": "void",
35856
36825
  "jsdoctags": [
35857
36826
  {
35858
- "name": "nodes",
36827
+ "name": "expr",
36828
+ "type": "AST",
35859
36829
  "deprecated": false,
35860
36830
  "deprecationMessage": "",
35861
36831
  "tagName": {
@@ -35874,93 +36844,7 @@
35874
36844
  },
35875
36845
  {
35876
36846
  "name": "visitNodes",
35877
- "file": "packages/core/schematics/migrate-eui-alert/index.ts",
35878
- "ctype": "miscellaneous",
35879
- "subtype": "function",
35880
- "coverageIgnore": false,
35881
- "deprecated": false,
35882
- "deprecationMessage": "",
35883
- "rawdescription": "",
35884
- "description": "",
35885
- "displayName": "visitNodes",
35886
- "args": [
35887
- {
35888
- "name": "nodes",
35889
- "deprecated": false,
35890
- "deprecationMessage": ""
35891
- },
35892
- {
35893
- "name": "removals",
35894
- "deprecated": false,
35895
- "deprecationMessage": ""
35896
- }
35897
- ],
35898
- "returnType": "void",
35899
- "jsdoctags": [
35900
- {
35901
- "name": "nodes",
35902
- "deprecated": false,
35903
- "deprecationMessage": "",
35904
- "tagName": {
35905
- "text": "param"
35906
- }
35907
- },
35908
- {
35909
- "name": "removals",
35910
- "deprecated": false,
35911
- "deprecationMessage": "",
35912
- "tagName": {
35913
- "text": "param"
35914
- }
35915
- }
35916
- ]
35917
- },
35918
- {
35919
- "name": "visitNodes",
35920
- "file": "packages/core/schematics/migrate-eui-avatar/index.ts",
35921
- "ctype": "miscellaneous",
35922
- "subtype": "function",
35923
- "coverageIgnore": false,
35924
- "deprecated": false,
35925
- "deprecationMessage": "",
35926
- "rawdescription": "",
35927
- "description": "",
35928
- "displayName": "visitNodes",
35929
- "args": [
35930
- {
35931
- "name": "nodes",
35932
- "deprecated": false,
35933
- "deprecationMessage": ""
35934
- },
35935
- {
35936
- "name": "removals",
35937
- "deprecated": false,
35938
- "deprecationMessage": ""
35939
- }
35940
- ],
35941
- "returnType": "void",
35942
- "jsdoctags": [
35943
- {
35944
- "name": "nodes",
35945
- "deprecated": false,
35946
- "deprecationMessage": "",
35947
- "tagName": {
35948
- "text": "param"
35949
- }
35950
- },
35951
- {
35952
- "name": "removals",
35953
- "deprecated": false,
35954
- "deprecationMessage": "",
35955
- "tagName": {
35956
- "text": "param"
35957
- }
35958
- }
35959
- ]
35960
- },
35961
- {
35962
- "name": "visitNodes",
35963
- "file": "packages/core/schematics/migrate-eui-button/index.ts",
36847
+ "file": "packages/core/schematics/migrate-eui-accent/index.ts",
35964
36848
  "ctype": "miscellaneous",
35965
36849
  "subtype": "function",
35966
36850
  "coverageIgnore": false,
@@ -36003,7 +36887,7 @@
36003
36887
  },
36004
36888
  {
36005
36889
  "name": "visitNodes",
36006
- "file": "packages/core/schematics/migrate-eui-chip/index.ts",
36890
+ "file": "packages/core/schematics/migrate-eui-alert/index.ts",
36007
36891
  "ctype": "miscellaneous",
36008
36892
  "subtype": "function",
36009
36893
  "coverageIgnore": false,
@@ -36046,65 +36930,7 @@
36046
36930
  },
36047
36931
  {
36048
36932
  "name": "visitNodes",
36049
- "file": "packages/core/schematics/migrate-eui-chip-list/index.ts",
36050
- "ctype": "miscellaneous",
36051
- "subtype": "function",
36052
- "coverageIgnore": false,
36053
- "deprecated": false,
36054
- "deprecationMessage": "",
36055
- "rawdescription": "",
36056
- "description": "",
36057
- "displayName": "visitNodes",
36058
- "args": [
36059
- {
36060
- "name": "nodes",
36061
- "deprecated": false,
36062
- "deprecationMessage": ""
36063
- },
36064
- {
36065
- "name": "source",
36066
- "type": "string",
36067
- "deprecated": false,
36068
- "deprecationMessage": ""
36069
- },
36070
- {
36071
- "name": "edits",
36072
- "deprecated": false,
36073
- "deprecationMessage": ""
36074
- }
36075
- ],
36076
- "returnType": "void",
36077
- "jsdoctags": [
36078
- {
36079
- "name": "nodes",
36080
- "deprecated": false,
36081
- "deprecationMessage": "",
36082
- "tagName": {
36083
- "text": "param"
36084
- }
36085
- },
36086
- {
36087
- "name": "source",
36088
- "type": "string",
36089
- "deprecated": false,
36090
- "deprecationMessage": "",
36091
- "tagName": {
36092
- "text": "param"
36093
- }
36094
- },
36095
- {
36096
- "name": "edits",
36097
- "deprecated": false,
36098
- "deprecationMessage": "",
36099
- "tagName": {
36100
- "text": "param"
36101
- }
36102
- }
36103
- ]
36104
- },
36105
- {
36106
- "name": "visitNodes",
36107
- "file": "packages/core/schematics/migrate-eui-discussion-thread/index.ts",
36933
+ "file": "packages/core/schematics/migrate-eui-avatar/index.ts",
36108
36934
  "ctype": "miscellaneous",
36109
36935
  "subtype": "function",
36110
36936
  "coverageIgnore": false,
@@ -36119,12 +36945,6 @@
36119
36945
  "deprecated": false,
36120
36946
  "deprecationMessage": ""
36121
36947
  },
36122
- {
36123
- "name": "source",
36124
- "type": "string",
36125
- "deprecated": false,
36126
- "deprecationMessage": ""
36127
- },
36128
36948
  {
36129
36949
  "name": "removals",
36130
36950
  "deprecated": false,
@@ -36141,15 +36961,6 @@
36141
36961
  "text": "param"
36142
36962
  }
36143
36963
  },
36144
- {
36145
- "name": "source",
36146
- "type": "string",
36147
- "deprecated": false,
36148
- "deprecationMessage": "",
36149
- "tagName": {
36150
- "text": "param"
36151
- }
36152
- },
36153
36964
  {
36154
36965
  "name": "removals",
36155
36966
  "deprecated": false,
@@ -36162,7 +36973,209 @@
36162
36973
  },
36163
36974
  {
36164
36975
  "name": "visitNodes",
36165
- "file": "packages/core/schematics/migrate-eui-editor/index.ts",
36976
+ "file": "packages/core/schematics/migrate-eui-button/index.ts",
36977
+ "ctype": "miscellaneous",
36978
+ "subtype": "function",
36979
+ "coverageIgnore": false,
36980
+ "deprecated": false,
36981
+ "deprecationMessage": "",
36982
+ "rawdescription": "",
36983
+ "description": "",
36984
+ "displayName": "visitNodes",
36985
+ "args": [
36986
+ {
36987
+ "name": "nodes",
36988
+ "deprecated": false,
36989
+ "deprecationMessage": ""
36990
+ },
36991
+ {
36992
+ "name": "edits",
36993
+ "deprecated": false,
36994
+ "deprecationMessage": ""
36995
+ }
36996
+ ],
36997
+ "returnType": "void",
36998
+ "jsdoctags": [
36999
+ {
37000
+ "name": "nodes",
37001
+ "deprecated": false,
37002
+ "deprecationMessage": "",
37003
+ "tagName": {
37004
+ "text": "param"
37005
+ }
37006
+ },
37007
+ {
37008
+ "name": "edits",
37009
+ "deprecated": false,
37010
+ "deprecationMessage": "",
37011
+ "tagName": {
37012
+ "text": "param"
37013
+ }
37014
+ }
37015
+ ]
37016
+ },
37017
+ {
37018
+ "name": "visitNodes",
37019
+ "file": "packages/core/schematics/migrate-eui-chip/index.ts",
37020
+ "ctype": "miscellaneous",
37021
+ "subtype": "function",
37022
+ "coverageIgnore": false,
37023
+ "deprecated": false,
37024
+ "deprecationMessage": "",
37025
+ "rawdescription": "",
37026
+ "description": "",
37027
+ "displayName": "visitNodes",
37028
+ "args": [
37029
+ {
37030
+ "name": "nodes",
37031
+ "deprecated": false,
37032
+ "deprecationMessage": ""
37033
+ },
37034
+ {
37035
+ "name": "removals",
37036
+ "deprecated": false,
37037
+ "deprecationMessage": ""
37038
+ }
37039
+ ],
37040
+ "returnType": "void",
37041
+ "jsdoctags": [
37042
+ {
37043
+ "name": "nodes",
37044
+ "deprecated": false,
37045
+ "deprecationMessage": "",
37046
+ "tagName": {
37047
+ "text": "param"
37048
+ }
37049
+ },
37050
+ {
37051
+ "name": "removals",
37052
+ "deprecated": false,
37053
+ "deprecationMessage": "",
37054
+ "tagName": {
37055
+ "text": "param"
37056
+ }
37057
+ }
37058
+ ]
37059
+ },
37060
+ {
37061
+ "name": "visitNodes",
37062
+ "file": "packages/core/schematics/migrate-eui-chip-list/index.ts",
37063
+ "ctype": "miscellaneous",
37064
+ "subtype": "function",
37065
+ "coverageIgnore": false,
37066
+ "deprecated": false,
37067
+ "deprecationMessage": "",
37068
+ "rawdescription": "",
37069
+ "description": "",
37070
+ "displayName": "visitNodes",
37071
+ "args": [
37072
+ {
37073
+ "name": "nodes",
37074
+ "deprecated": false,
37075
+ "deprecationMessage": ""
37076
+ },
37077
+ {
37078
+ "name": "source",
37079
+ "type": "string",
37080
+ "deprecated": false,
37081
+ "deprecationMessage": ""
37082
+ },
37083
+ {
37084
+ "name": "edits",
37085
+ "deprecated": false,
37086
+ "deprecationMessage": ""
37087
+ }
37088
+ ],
37089
+ "returnType": "void",
37090
+ "jsdoctags": [
37091
+ {
37092
+ "name": "nodes",
37093
+ "deprecated": false,
37094
+ "deprecationMessage": "",
37095
+ "tagName": {
37096
+ "text": "param"
37097
+ }
37098
+ },
37099
+ {
37100
+ "name": "source",
37101
+ "type": "string",
37102
+ "deprecated": false,
37103
+ "deprecationMessage": "",
37104
+ "tagName": {
37105
+ "text": "param"
37106
+ }
37107
+ },
37108
+ {
37109
+ "name": "edits",
37110
+ "deprecated": false,
37111
+ "deprecationMessage": "",
37112
+ "tagName": {
37113
+ "text": "param"
37114
+ }
37115
+ }
37116
+ ]
37117
+ },
37118
+ {
37119
+ "name": "visitNodes",
37120
+ "file": "packages/core/schematics/migrate-eui-discussion-thread/index.ts",
37121
+ "ctype": "miscellaneous",
37122
+ "subtype": "function",
37123
+ "coverageIgnore": false,
37124
+ "deprecated": false,
37125
+ "deprecationMessage": "",
37126
+ "rawdescription": "",
37127
+ "description": "",
37128
+ "displayName": "visitNodes",
37129
+ "args": [
37130
+ {
37131
+ "name": "nodes",
37132
+ "deprecated": false,
37133
+ "deprecationMessage": ""
37134
+ },
37135
+ {
37136
+ "name": "source",
37137
+ "type": "string",
37138
+ "deprecated": false,
37139
+ "deprecationMessage": ""
37140
+ },
37141
+ {
37142
+ "name": "removals",
37143
+ "deprecated": false,
37144
+ "deprecationMessage": ""
37145
+ }
37146
+ ],
37147
+ "returnType": "void",
37148
+ "jsdoctags": [
37149
+ {
37150
+ "name": "nodes",
37151
+ "deprecated": false,
37152
+ "deprecationMessage": "",
37153
+ "tagName": {
37154
+ "text": "param"
37155
+ }
37156
+ },
37157
+ {
37158
+ "name": "source",
37159
+ "type": "string",
37160
+ "deprecated": false,
37161
+ "deprecationMessage": "",
37162
+ "tagName": {
37163
+ "text": "param"
37164
+ }
37165
+ },
37166
+ {
37167
+ "name": "removals",
37168
+ "deprecated": false,
37169
+ "deprecationMessage": "",
37170
+ "tagName": {
37171
+ "text": "param"
37172
+ }
37173
+ }
37174
+ ]
37175
+ },
37176
+ {
37177
+ "name": "visitNodes",
37178
+ "file": "packages/core/schematics/migrate-eui-editor/index.ts",
36166
37179
  "ctype": "miscellaneous",
36167
37180
  "subtype": "function",
36168
37181
  "coverageIgnore": false,
@@ -38539,6 +39552,34 @@
38539
39552
  "defaultValue": "'euiAccent'"
38540
39553
  }
38541
39554
  ],
39555
+ "packages/core/schematics/migrate-to-signals/signal-map.ts": [
39556
+ {
39557
+ "name": "EUI_SELECTOR_TO_CLASS",
39558
+ "ctype": "miscellaneous",
39559
+ "subtype": "variable",
39560
+ "file": "packages/core/schematics/migrate-to-signals/signal-map.ts",
39561
+ "coverageIgnore": false,
39562
+ "deprecated": false,
39563
+ "deprecationMessage": "",
39564
+ "type": "Record<string, string>",
39565
+ "defaultValue": "{\n '[euiBase]': 'BaseStatesDirective',\n '[euiDropdownItem]': 'EuiDropdownItemComponent',\n '[euiIconColored]': 'EuiIconColorComponent',\n '[euiListItem]': 'EuiListItemComponent',\n '[euiLoading]': 'EuiLoadingDirective',\n '[euiScrollHandler]': 'EuiScrollHandlerDirective',\n '[euiScrollTo]': 'EuiSmoothScrollToDirective',\n '[euiTemplate]': 'EuiTemplateDirective',\n '[euiTooltip]': 'EuiTooltipDirective',\n '[formControlName][euiEditorMaxlength]': 'EuiEditorMaxlengthDirective',\n 'a[euiButton]': 'EuiButtonComponent',\n 'button[euiButton]': 'EuiButtonComponent',\n 'div[euiAlert]': 'EuiAlertComponent',\n 'div[euiAvatar]': 'EuiAvatarComponent',\n 'div[euiBadge]': 'EuiBadgeComponent',\n 'div[euiInputGroupAddOnItem]': 'EuiInputGroupAddOnItemComponent',\n 'div[euiInputGroupAddOn]': 'EuiInputGroupAddOnComponent',\n 'div[euiInputGroup]': 'EuiInputGroupComponent',\n 'div[euiStatusBadge]': 'EuiStatusBadgeComponent',\n 'eds-tab-body': 'EdsTabBody',\n 'eds-tab-header': 'EdsTabHeader',\n 'eds-tabs': 'EdsTabs',\n 'eui-alert': 'EuiAlertComponent',\n 'eui-app': 'AppComponent',\n 'eui-app-side-container': 'EuiAppSideContainerComponent',\n 'eui-app-sidebar-drawer': 'EuiAppSidebarDrawerComponent',\n 'eui-app-sidebar-header-user-profile': 'EuiAppSidebarHeaderUserProfileComponent',\n 'eui-app-sidebar-menu': 'EuiAppSidebarMenuComponent',\n 'eui-app-toolbar': 'EuiAppToolbarComponent',\n 'eui-app-top-message': 'EuiAppTopMessageComponent',\n 'eui-autocomplete': 'EuiAutocompleteComponent',\n 'eui-autocomplete-panel': 'EuiAutocompletePanelComponent',\n 'eui-avatar': 'EuiAvatarComponent',\n 'eui-avatar-badge': 'EuiAvatarBadgeComponent',\n 'eui-avatar-image': 'EuiAvatarImageComponent',\n 'eui-badge': 'EuiBadgeComponent',\n 'eui-banner': 'EuiBannerComponent',\n 'eui-block-document': 'EuiBlockDocumentComponent',\n 'eui-breadcrumb-item': 'EuiBreadcrumbItemComponent',\n 'eui-button-group': 'EuiButtonGroupComponent',\n 'eui-card': 'EuiCardComponent',\n 'eui-card-footer-menu-content': 'EuiCardFooterMenuContentComponent',\n 'eui-card-header': 'EuiCardHeaderComponent',\n 'eui-card-header-left-content': 'EuiCardHeaderLeftContentComponent',\n 'eui-card-media': 'EuiCardMediaComponent',\n 'eui-chip': 'EuiChipComponent',\n 'eui-chip-button': 'EuiChipButtonComponent',\n 'eui-chip-group': 'EuiChipGroupComponent',\n 'eui-chip-list-append-content': 'EuiChipListAppendContentDirective',\n 'eui-comment-item': 'EuiCommentItemComponent',\n 'eui-comment-textarea': 'EuiCommentTextareaComponent',\n 'eui-comment-thread': 'EuiCommentThreadComponent',\n 'eui-content-card': 'EuiContentCardComponent',\n 'eui-content-card-header-end': 'EuiContentCardHeaderEndComponent',\n 'eui-dashboard-card': 'EuiDashboardCardComponent',\n 'eui-dashboard-card-content-header-icon': 'EuiDashboardCardContentHeaderIconComponent',\n 'eui-date-block': 'EuiDateBlockComponent',\n 'eui-date-range-selector': 'EuiDateRangeSelectorComponent',\n 'eui-datepicker': 'EuiDatepickerComponent',\n 'eui-dialog': 'EuiDialogComponent',\n 'eui-dialog-container': 'EuiDialogContainerComponent',\n 'eui-dimmer': 'EuiDimmerComponent',\n 'eui-discussion-thread': 'EuiDiscussionThreadComponent',\n 'eui-discussion-thread-item': 'EuiDiscussionThreadItemComponent',\n 'eui-dropdown': 'EuiDropdownComponent',\n 'eui-dropdown-item': 'EuiDropdownItemComponent',\n 'eui-dropdown[euiDropdownTree]': 'EuiDropdownTreeDirective',\n 'eui-editor': 'EuiEditorComponent',\n 'eui-editor-counters': 'EuiEditorCountersComponent',\n 'eui-editor-json-view': 'EuiEditorJsonViewComponent',\n 'eui-feedback-message': 'EuiFeedbackMessageComponent',\n 'eui-file-preview': 'EuiFilePreviewComponent',\n 'eui-file-upload': 'EuiFileUploadComponent',\n 'eui-file-upload-progress': 'EuiFileUploadProgressComponent',\n 'eui-footer': 'EuiFooterComponent',\n 'eui-growl': 'EuiGrowlComponent',\n 'eui-header': 'EuiHeaderComponent',\n 'eui-header-app': 'EuiHeaderAppComponent',\n 'eui-header-app-name-logo': 'EuiHeaderAppNameLogoComponent',\n 'eui-header-logo': 'EuiHeaderLogoComponent',\n 'eui-header-search': 'EuiHeaderSearchComponent',\n 'eui-header-user-profile': 'EuiHeaderUserProfileComponent',\n 'eui-icon-button': 'EuiIconButtonComponent',\n 'eui-icon-button-expander': 'EuiIconButtonExpanderComponent',\n 'eui-icon-colored': 'EuiIconColorComponent',\n 'eui-icon-input': 'EuiIconInputComponent',\n 'eui-icon-state': 'EuiIconStateComponent',\n 'eui-icon-svg': 'EuiIconSvgComponent',\n 'eui-icon-toggle': 'EuiIconToggleComponent',\n 'eui-input-button': 'EuiInputButtonComponent',\n 'eui-input-group-addon': 'EuiInputGroupAddOnComponent',\n 'eui-input-group-addon-item': 'EuiInputGroupAddOnItemComponent',\n 'eui-language-selector': 'EuiLanguageSelectorComponent',\n 'eui-list-item': 'EuiListItemComponent',\n 'eui-menu': 'EuiMenuComponent',\n 'eui-menu-item': 'EuiMenuItemComponent',\n 'eui-message-box': 'EuiMessageBoxComponent',\n 'eui-navbar-item': 'EuiNavbarItemComponent',\n 'eui-notification-item': 'EuiNotificationItemComponent',\n 'eui-notification-item-v2': 'EuiNotificationItemV2Component',\n 'eui-notifications': 'EuiNotificationsComponent',\n 'eui-notifications-v2': 'EuiNotificationsV2Component',\n 'eui-overlay': 'EuiOverlayComponent',\n 'eui-overlay-header-title': 'EuiOverlayHeaderTitleComponent',\n 'eui-page': 'EuiPageComponent',\n 'eui-page-column': 'EuiPageColumnComponent',\n 'eui-page-columns': 'EuiPageColumnsComponent',\n 'eui-page-footer': 'EuiPageFooterComponent',\n 'eui-page-header': 'EuiPageHeaderComponent',\n 'eui-page-hero-header': 'EuiPageHeroHeaderComponent',\n 'eui-page-panel': 'EuiPagePanelComponent',\n 'eui-page-top-content': 'EuiPageTopContentComponent',\n 'eui-paginator': 'EuiPaginatorComponent',\n 'eui-popover': 'EuiPopoverComponent',\n 'eui-progress-bar': 'EuiProgressBarComponent',\n 'eui-progress-circle': 'EuiProgressCircleComponent',\n 'eui-rating': 'EuiRatingComponent',\n 'eui-resizable': 'EuiResizableComponent',\n 'eui-section-header': 'EuiSectionHeaderComponent',\n 'eui-section-header-icon': 'EuiSectionHeaderIconComponent',\n 'eui-sidebar-toggle': 'EuiSidebarToggleComponent',\n 'eui-skeleton': 'EuiSkeletonComponent',\n 'eui-slide-toggle': 'EuiSlideToggleComponent',\n 'eui-slider': 'EuiSliderComponent',\n 'eui-status-badge': 'EuiStatusBadgeComponent',\n 'eui-tab': 'EuiTabComponent',\n 'eui-tab-body': 'EuiTabBodyComponent',\n 'eui-tab-header': 'EuiTabHeaderComponent',\n 'eui-table': 'EuiTableComponent',\n 'eui-table-filter': 'EuiTableFilterComponent',\n 'eui-tabs': 'EuiTabsComponent',\n 'eui-timeline': 'EuiTimelineComponent',\n 'eui-timeline-item': 'EuiTimelineItemComponent',\n 'eui-timepicker': 'EuiTimepickerComponent',\n 'eui-toggle-group': 'EuiToggleGroupComponent',\n 'eui-toggle-group-item': 'EuiToggleGroupItemComponent',\n 'eui-toolbar-app': 'EuiToolbarAppComponent',\n 'eui-toolbar-items': 'EuiToolbarItemsComponent',\n 'eui-toolbar-logo': 'EuiToolbarLogoComponent',\n 'eui-toolbar-mega-menu': 'EuiToolbarMegaMenuComponent',\n 'eui-toolbar-mega-menu-container': 'EuiToolbarMegaMenuContainerComponent',\n 'eui-toolbar-navbar-item': 'EuiToolbarNavbarItemComponent',\n 'eui-toolbar-search': 'EuiToolbarSearchComponent',\n 'eui-toolbar-selector': 'EuiToolbarSelectorComponent',\n 'eui-tooltip-container.component': 'EuiTooltipContainerComponent',\n 'eui-tree': 'EuiTreeComponent',\n 'eui-tree-list': 'EuiTreeListComponent',\n 'eui-tree-list-item': 'EuiTreeListItemComponent',\n 'eui-tree-list-toolbar': 'EuiTreeListToolbarComponent',\n 'eui-tree[euiTreeFormControl]': 'EuiTreeFormControlDirective',\n 'eui-user-profile': 'EuiUserProfileComponent',\n 'eui-user-profile-card': 'EuiUserProfileCardComponent',\n 'eui-wizard': 'EuiWizardComponent',\n euiFieldsetLabelRightContent: 'EuiFieldsetLabelRightContentTagDirective',\n 'i[euiIconSvg]': 'EuiIconSvgComponent',\n 'input[euiAutocomplete]': 'EuiAutocompleteComponent',\n 'input[euiClearable]': 'EuiClearableDirective',\n 'input[euiInputCheckBox]': 'EuiInputCheckboxComponent',\n 'input[euiInputRadio]': 'EuiInputRadioComponent',\n 'input[euiInput]': 'InputDirective',\n 'li[euiChipButton]': 'EuiChipButtonComponent',\n 'li[euiChip]': 'EuiChipComponent',\n 'option:not([eclSelectOption]):not([eclMultiselectOption])': 'EuiNgSelectOptionDirective',\n 'option[euiOption]': 'EuiNgSelectOptionDirective',\n 'quill-editor': 'QuillEditorComponent',\n 'select[euiSelect]': 'EuiSelectComponent',\n 'span[euiAvatar]': 'EuiAvatarComponent',\n 'span[euiBadge]': 'EuiBadgeComponent',\n 'span[euiChipButton]': 'EuiChipButtonComponent',\n 'span[euiChip]': 'EuiChipComponent',\n 'span[euiIconColored]': 'EuiIconColorComponent',\n 'span[euiIconSvg]': 'EuiIconSvgComponent',\n 'span[euiStatusBadge]': 'EuiStatusBadgeComponent',\n 'table[euiTable]': 'EuiTableComponent',\n 'th[isSortable]': 'EuiTableSortableColComponent',\n 'tr[isDataSelectable]': 'EuiTableSelectableRowComponent',\n 'tr[isHeaderSelectable]': 'EuiTableSelectableHeaderComponent',\n}",
39566
+ "rawdescription": "Map of component/directive selectors to their class names.\nUsed to resolve",
39567
+ "description": "<p>Map of component/directive selectors to their class names.\nUsed to resolve</p>\n"
39568
+ },
39569
+ {
39570
+ "name": "EUI_SIGNAL_MAP",
39571
+ "ctype": "miscellaneous",
39572
+ "subtype": "variable",
39573
+ "file": "packages/core/schematics/migrate-to-signals/signal-map.ts",
39574
+ "coverageIgnore": false,
39575
+ "deprecated": false,
39576
+ "deprecationMessage": "",
39577
+ "type": "Record<string, ReadonlySet<string>>",
39578
+ "defaultValue": "{\n AppComponent: new Set(['appSubTitle', 'isShrinkHeaderActive', 'isSidebarHidden', 'isSidebarOpen', 'themeClass']),\n BaseStatesDirective: new Set(['euiBranding', 'euiClearable', 'euiCompact', 'euiDanger', 'euiDisabled', 'euiEnd', 'euiHighlighted', 'euiInfo', 'euiInverse', 'euiInverted', 'euiLoading', 'euiOutline', 'euiPrimary', 'euiResponsive', 'euiRounded', 'euiSecondary', 'euiSecondaryLight', 'euiSize2XL', 'euiSize2XS', 'euiSize3XL', 'euiSize4XL', 'euiSize5XL', 'euiSize6XL', 'euiSizeAuto', 'euiSizeL', 'euiSizeM', 'euiSizeS', 'euiSizeVariant', 'euiSizeXL', 'euiSizeXS', 'euiStart', 'euiSuccess', 'euiVariant', 'euiWarning']),\n EdsTabBody: new Set(['templateRef']),\n EdsTabHeader: new Set(['templateRef']),\n EdsTabs: new Set(['edsTabListItems', 'edsTabsHeaders', 'edsTabsHeadersContainer', 'edsTabsRightContent']),\n EuiAlertComponent: new Set(['cssClasses']),\n EuiAppSideContainerComponent: new Set(['euiResizableMinWidth', 'euiResizablePosition', 'hasOverlayClosedOnClickOutside', 'isActive', 'isOverlayActive']),\n EuiAppSidebarDrawerComponent: new Set(['isExpanded']),\n EuiAppSidebarHeaderUserProfileComponent: new Set(['avatarUrl', 'hasProfileDrawer', 'hasTabNavigation', 'hasToggle', 'hasWelcomeLabel', 'impersonateLabel', 'isOnline', 'isShowAvatarInitials', 'isShowUserInfos', 'welcomeLabel']),\n EuiAppSidebarMenuComponent: new Set(['expandAllItems', 'hasBoldRootLevel', 'hasCollapsedInitials', 'hasFilter', 'hasIcons', 'hasIconsLabels', 'hasScrollToItem', 'hasTooltip', 'hasTooltipOnExpanded', 'hasTooltipOnlyOnExpanded', 'isCollapsed', 'isFlat', 'items', 'menu']),\n EuiAppToolbarComponent: new Set(['euiSecondary']),\n EuiAppTopMessageComponent: new Set(['appTopMessage', 'hasCustomContent', 'isCloseable', 'isVisible']),\n EuiAutocompleteComponent: new Set(['autocompletePanel', 'input', 'inputContainerRef', 'templatePortalContent', 'templates']),\n EuiAutocompletePanelComponent: new Set(['virtualScrolling']),\n EuiAvatarBadgeComponent: new Set(['isPositionBottom']),\n EuiAvatarComponent: new Set(['ariaLabel', 'colorPalette', 'e2eAttr', 'hasNoBackground', 'hasShadow', 'isReverse', 'isShapeSquare']),\n EuiAvatarImageComponent: new Set(['imageUrl']),\n EuiBadgeComponent: new Set(['ariaLabel', 'charReplacement', 'colorPalette', 'content', 'e2eAttr', 'euiDottedBadge', 'euiIconBadge', 'maxCharCount']),\n EuiBannerComponent: new Set(['e2eAttr', 'euiInverse', 'euiPositionCenter', 'euiPositionTop', 'imageUrl', 'isVideoBanner']),\n EuiBlockDocumentComponent: new Set(['isBlocked']),\n EuiBreadcrumbItemComponent: new Set(['ariaLabel', 'iconSvgName', 'id', 'label', 'link', 'navigationExtras']),\n EuiButtonComponent: new Set(['e2eAttr', 'euiAvatarButton', 'euiBasicButton', 'euiBlockButton', 'euiCTAButton', 'euiDisabled', 'euiIconButton', 'euiLineWrap', 'hasNoFocusRing', 'id', 'isChecked', 'isCompact']),\n EuiButtonGroupComponent: new Set(['isCheckboxButtons', 'isRadioButtons']),\n EuiCardComponent: new Set(['e2eAttr', 'euiCollapsed', 'euiCollapsible', 'euiHoverable', 'euiNoContentPadding', 'euiNoShadow', 'euiSelected', 'euiUrgent', 'hasLeftExpander', 'isCompact']),\n EuiCardFooterMenuContentComponent: new Set(['tooltipText']),\n EuiCardHeaderComponent: new Set(['collapseLabel', 'expandLabel', 'hasBottomExpander', 'hasFullTitle', 'hasHeaderClickToggle', 'isClickeable', 'isHeaderMultilines']),\n EuiCardHeaderLeftContentComponent: new Set(['isTopAligned']),\n EuiCardMediaComponent: new Set(['imageClickUrl', 'imageClickUrlExternal', 'imageDescription', 'imageHeight', 'imageLegend', 'imageUrl']),\n EuiChipButtonComponent: new Set(['cssClasses', 'e2eAttr', 'euiInternalId', 'id', 'isFilled', 'tooltipMessage']),\n EuiChipComponent: new Set(['chipLabel', 'colorPalette', 'cssClasses', 'data', 'e2eAttr', 'euiInternalId', 'id', 'isChipRemovable', 'isFilled', 'tooltipMessage']),\n EuiChipGroupComponent: new Set(['cssClasses']),\n EuiChipListAppendContentDirective: new Set(['ariaLabel', 'cssClasses']),\n EuiClearableDirective: new Set(['euiClearable']),\n EuiCommentItemComponent: new Set(['authorAvatarUrl', 'authorName', 'comment', 'commentCharLimit', 'createdAt', 'currentAuthorAvatarUrl', 'hasChildren', 'nbSubCommentItems', 'subCommentItems']),\n EuiCommentTextareaComponent: new Set(['currentAuthorAvatarUrl', 'placeholder']),\n EuiCommentThreadComponent: new Set(['currentAuthorAvatarUrl', 'hasTextarea', 'isCollapsable', 'isOpen', 'nbSubCommentItems', 'placeholder', 'subCommentItems', 'textareaPosition']),\n EuiContentCardComponent: new Set(['e2eAttr', 'isBookmarkable', 'isBookmarked', 'isCollapsed', 'isCollapsible', 'isSelectable', 'isSelected']),\n EuiContentCardHeaderEndComponent: new Set(['bookmarkAccessKey']),\n EuiDashboardCardComponent: new Set(['colorPalette', 'e2eAttr', 'hasNoBackgroundAvatar', 'iconLabel', 'iconSvgName', 'iconSvgSize', 'imageUrl', 'isClickeable', 'isFlat', 'isFlatAvatar', 'isHorizontal', 'isStacked', 'label', 'labelMaxLines', 'subLabel', 'subLabelMaxLines', 'url', 'urlExternal', 'urlExternalTarget']),\n EuiDashboardCardContentHeaderIconComponent: new Set(['icon']),\n EuiDateBlockComponent: new Set(['blockDate', 'dateFormat', 'e2eAttr']),\n EuiDateRangeSelectorComponent: new Set(['comparisonEnd', 'comparisonStart', 'e2eAttr', 'endDateDefaultValue', 'firstInputAriaLabel', 'firstInputPlaceholder', 'hasSeconds', 'isClearable', 'isDisabled', 'isReadOnly', 'isResponsive', 'isTimeRange', 'islongDateFormat', 'maxDate', 'minDate', 'secondInputAriaLabel', 'secondInputPlaceholder', 'startDateDefaultValue', 'startDateId', 'startView', 'stepHours', 'stepMinutes', 'stepSeconds', 'togglerIconSvg', 'togglerLabel']),\n EuiDatepickerComponent: new Set(['calendar', 'customHeader', 'customPanelClass', 'dateClass', 'dateOutputFormat', 'datepickerFilter', 'e2eAttr', 'hasNoButton', 'hasSeconds', 'inputAriaLabel', 'inputId', 'inputRef', 'isButtonDisabled', 'isClearable', 'isDatepickerBlock', 'isDatetimepicker', 'isDisabled', 'isInputDisabled', 'isOneInputField', 'isPickerDisabled', 'isReadOnly', 'isShownOnInputClick', 'maxDate', 'minDate', 'placeholder', 'restrictToRegex', 'startView', 'stepHours', 'stepMinutes', 'stepSeconds', 'templatePortalRef', 'togglerIconSvg', 'togglerLabel', 'type', 'value']),\n EuiDialogComponent: new Set(['acceptLabel', 'classList', 'dismissLabel', 'e2eAttr', 'hasAcceptButton', 'hasCloseButton', 'hasClosedOnClickOutside', 'hasClosedOnEscape', 'hasDismissButton', 'hasFooter', 'hasMobileCustomSize', 'hasNoBodyPadding', 'height', 'isDraggable', 'isFullScreen', 'isHandleCloseOnAccept', 'isHandleCloseOnClickOutside', 'isHandleCloseOnClose', 'isHandleCloseOnDismiss', 'isHandleCloseOnEscape', 'isMessageBox', 'templateRefContent', 'templateRefFooter', 'templateRefHeader', 'title', 'verticalPosition', 'width']),\n EuiDialogContainerComponent: new Set(['closeButtonAriaLabel', 'dialogBody']),\n EuiDimmerComponent: new Set(['cssClasses', 'e2eAttr', 'isDimmerActive']),\n EuiDiscussionThreadComponent: new Set(['items', 'subTitleLabel', 'titleLabel', 'tooltip']),\n EuiDiscussionThreadItemComponent: new Set(['author', 'body', 'date', 'id', 'isOdd', 'tooltip', 'typeClass']),\n EuiDropdownComponent: new Set(['e2eAttr', 'euiDisabled', 'euiDropdownItems', 'hasClosedOnClickInside', 'hasTabNavigation', 'height', 'isBlock', 'isDropDownRightAligned', 'isExpandOnHover', 'isLabelUpdatedFromSelectedItem', 'isRightClickEnabled', 'isTriggerToggle', 'position', 'subDropdownPosition', 'tabIndex', 'templatePortalContent', 'triggerRef', 'width']),\n EuiDropdownItemComponent: new Set(['isActive', 'isFocus']),\n EuiDropdownTreeDirective: new Set(['buttonTemplateRef', 'euiTree']),\n EuiEditorComponent: new Set(['customToolbarConfig', 'customToolbarPosition', 'debug', 'e2eAttr', 'formats', 'height', 'id', 'isEnabledOnFocus', 'isMinimalToolbar', 'isReadOnly', 'modules', 'placeholder', 'showCounters', 'tabindex', 'theme']),\n EuiEditorCountersComponent: new Set(['charactersCounter', 'charactersLabel', 'hasCharactersCounter', 'hasWordsCounter', 'isMaxLengthValid', 'wordsCounter', 'wordsLabel']),\n EuiEditorJsonViewComponent: new Set(['content', 'theme']),\n EuiEditorMaxlengthDirective: new Set(['euiEditorMaxlength', 'format', 'isShowMaxlength']),\n EuiFeedbackMessageComponent: new Set(['cssClasses', 'isMuted']),\n EuiFieldsetLabelRightContentTagDirective: new Set(['e2eAttr', 'hasDefaultIcon', 'hasLeftExpander', 'iconClass', 'iconSvgFillColor', 'iconSvgName', 'id', 'isExpandable', 'isExpanded', 'isFirst', 'isLarge', 'label', 'templates']),\n EuiFilePreviewComponent: new Set(['file', 'hasPreview', 'hasPreviewAsIcon', 'hasPreviewAsImage', 'index', 'isFileObject', 'isFilenameDisplayed', 'isFilesizeDisplayed', 'isFiletypeDisplayed', 'isItemsClickable', 'previewAsIconConfig', 'templates', 'uploadedFileTemplate']),\n EuiFileUploadComponent: new Set(['accept', 'e2eAttr', 'fileInputs', 'hasDragArea', 'hasPreview', 'hasPreviewAsIcon', 'hasPreviewAsImage', 'hasProgressBar', 'hasResetButton', 'hasTotalSizeDisplayed', 'isItemsClickable', 'isMultiple', 'maxFiles', 'progress', 'templates']),\n EuiFileUploadProgressComponent: new Set(['progress']),\n EuiFooterComponent: new Set(['euiPrimary']),\n EuiGrowlComponent: new Set(['ariaLive', 'callback', 'closeAllSticky', 'cssClasses', 'e2eAttr', 'life', 'position', 'sticky', 'value']),\n EuiHeaderAppComponent: new Set(['appName', 'appShortName', 'appSubTitle']),\n EuiHeaderAppNameLogoComponent: new Set(['homeUrl', 'logoAltText', 'logoFilename']),\n EuiHeaderComponent: new Set(['rightContent']),\n EuiHeaderLogoComponent: new Set(['homeUrl', 'logoHeight', 'logoUrl', 'logoWidth']),\n EuiHeaderSearchComponent: new Set(['placeholder']),\n EuiHeaderUserProfileComponent: new Set(['avatarUrl', 'hasTabNavigation', 'hasWelcomeLabel', 'impersonateLabel', 'isShowAvatarInitials', 'isShowUserInfos', 'subInfos', 'userProfile', 'welcomeLabel']),\n EuiIconButtonComponent: new Set(['ariaLabel', 'euiDisabled', 'euiRounded', 'fillColor', 'hasFocusHoverBg', 'hasFocusHoverColor', 'hasNoPadding', 'hasOverflowHover', 'icon', 'iconUrl', 'size', 'tabindex']),\n EuiIconButtonExpanderComponent: new Set(['ariaLabel', 'euiDisabled', 'fillColor', 'isDirectionForward', 'isExpanded', 'size']),\n EuiIconColorComponent: new Set(['iconClass']),\n EuiIconInputComponent: new Set(['cssClasses', 'euiIconPositionEnd', 'euiIconPositionStart']),\n EuiIconStateComponent: new Set(['ariaLabel', 'cssClasses', 'size']),\n EuiIconSvgComponent: new Set(['euiEnd', 'euiStart', 'fillColor', 'focusable', 'iconUrl', 'isInputIcon', 'isLoading', 'style', 'transform']),\n EuiIconToggleComponent: new Set(['ariaLabel', 'e2eAttr', 'iconSvgFillColorOff', 'iconSvgFillColorOn', 'iconSvgNameOff', 'iconSvgNameOn', 'iconSvgSize', 'id', 'isChecked', 'isReadOnly', 'keyboardAccessKey', 'tabindex']),\n EuiInputButtonComponent: new Set(['cssClasses', 'euiButtonPositionEnd', 'euiButtonPositionStart']),\n EuiInputCheckboxComponent: new Set(['isInvalid']),\n EuiInputGroupAddOnComponent: new Set(['e2eAttr']),\n EuiInputGroupAddOnItemComponent: new Set(['e2eAttr']),\n EuiInputGroupComponent: new Set(['e2eAttr']),\n EuiInputRadioComponent: new Set(['isInvalid']),\n EuiLanguageSelectorComponent: new Set(['cssClasses', 'euiPrimary', 'hasLanguageSelection', 'isShowDropDown', 'isShowModal', 'isToolbarSelector']),\n EuiListItemComponent: new Set(['cssClasses', 'e2eAttr', 'isActive']),\n EuiLoadingDirective: new Set(['euiLoading']),\n EuiMenuComponent: new Set(['expandAllItems', 'externalLinkLabel', 'filterValue', 'fragmentId', 'hasBoldRootLevel', 'hasCollapsedInitials', 'hasFilter', 'hasIcons', 'hasIconsLabels', 'hasScrollToItem', 'hasTooltip', 'hasTooltipOnExpanded', 'hasTooltipOnlyOnExpanded', 'isCollapsed', 'isFlat', 'items', 'menubar', 'searchFilterLabel']),\n EuiMenuItemComponent: new Set(['hasBoldRootLevel', 'hasCollapsedInitials', 'hasExpandIcon', 'hasIcon', 'hasIconLabel', 'hasTooltip', 'hasTooltipOnExpanded', 'hasTooltipOnlyOnExpanded', 'isCollapsed', 'item', 'parent']),\n EuiMessageBoxComponent: new Set(['acceptLabel', 'dismissLabel', 'e2eAttr', 'hasAcceptButton', 'hasDismissButton', 'hasNoBodyPadding', 'height', 'isDraggable', 'isHandleCloseOnAccept', 'isHandleCloseOnClose', 'isHandleCloseOnDismiss', 'templateRefContent', 'templateRefFooter', 'title', 'width']),\n EuiNavbarItemComponent: new Set(['id', 'isActive', 'label']),\n EuiNgSelectOptionDirective: new Set(['label', 'selected']),\n EuiNotificationItemComponent: new Set(['dateFormat', 'isShowMarkAsRead', 'item', 'markAsReadLabel']),\n EuiNotificationItemV2Component: new Set(['dateFormat', 'isShowMarkAsRead', 'item', 'markAsReadLabel']),\n EuiNotificationsComponent: new Set(['count', 'customUnreadCount', 'dateFormat', 'headerHideLabel', 'headerTitleLabel', 'isHidePanelOnViewAllAction', 'isShowHideButton', 'isShowMarkAllAsReadButton', 'isShowMarkAsRead', 'isShowRefreshButton', 'isShowSettingsButton', 'isShowViewAllAction', 'items', 'markAllAsReadLabel', 'markAsReadLabel', 'markAsUnReadLabel', 'nbUnreadCount', 'noNotificationFoundLabel', 'noNotificationFoundLink', 'refreshLabel', 'settingsLabel', 'totalLabel', 'unreadLabel', 'viewAllNotificationsLabel']),\n EuiNotificationsV2Component: new Set(['count', 'dateFormat', 'headerHideLabel', 'headerTitleLabel', 'headerUnreadCountLabel', 'headerUnreadSinceLastCheckCountLabel', 'isHidePanelOnViewAllAction', 'isShowMarkAllAsReadButton', 'isShowMarkAsRead', 'isShowRefreshButton', 'isShowSettingsButton', 'isShowViewAllAction', 'items', 'markAllAsReadLabel', 'markAsReadLabel', 'markAsUnReadLabel', 'noNotificationFoundLabel', 'noNotificationFoundLink', 'refreshLabel', 'settingsLabel', 'totalLabel', 'unreadCount', 'unreadLabel', 'unreadSinceLastCheckCount', 'viewAllNotificationsLabel']),\n EuiOverlayComponent: new Set(['ariaLabel', 'euiHighlighted', 'fixedWidth', 'hasClosedOnClickOutside', 'isActive', 'position', 'width']),\n EuiOverlayHeaderTitleComponent: new Set(['headerTitleCount', 'headerTitleHideLabel', 'headerTitleLabel']),\n EuiPageColumnComponent: new Set(['autocloseContainerWidth', 'collapseAriaLabel', 'expandAriaLabel', 'hasHeaderBodyShrinkable', 'hasSidebarMenu', 'hasSubColumns', 'hasSubPanels', 'isAutocloseOnContainerResize', 'isAutocloseOnMobile', 'isCollapsed', 'isCollapsedHidden', 'isCollapsedWithIcons', 'isCollapsible', 'isHighlighted', 'isRightCollapsible', 'label', 'subLabel']),\n EuiPageColumnsComponent: new Set(['hasPreventMobileRendering']),\n EuiPageComponent: new Set(['columns']),\n EuiPageFooterComponent: new Set(['e2eAttr']),\n EuiPageHeaderComponent: new Set(['collapsedLabel', 'expandedLabel', 'isCollapsed', 'isCollapsible', 'isHeaderMultilines', 'label', 'labelTooltip', 'subLabel', 'subLabelTooltip']),\n EuiPageHeroHeaderComponent: new Set(['label', 'subLabel']),\n EuiPagePanelComponent: new Set(['collapseAriaLabel', 'collapsedLabel', 'expandAriaLabel', 'isCollapsed', 'isCollapsible', 'isRightCollapsible']),\n EuiPageTopContentComponent: new Set(['e2eAttr']),\n EuiPaginatorComponent: new Set(['e2eAttr', 'hasDynamicLength', 'hasPageNumberNavigation', 'hasPageNumberNavigationCompact', 'hasPageSize', 'isBasicMode', 'isHidden', 'length', 'nbPageNumberNavigation', 'page', 'pageSize', 'pageSizeOptions']),\n EuiPopoverComponent: new Set(['hasBackDrop', 'hasCloseButton', 'hasNoContentPadding', 'isDismissable', 'position', 'templatePortalContent', 'title', 'width']),\n EuiProgressBarComponent: new Set(['e2eAttr', 'hasStatusIcon', 'isIndeterminate', 'label', 'progress']),\n EuiProgressCircleComponent: new Set(['ariaLabel', 'labelValueEl', 'tabindex']),\n EuiRatingComponent: new Set(['ariaLabel', 'cssClasses', 'euiDisabled', 'numberOfStars', 'rating', 'ratingButtons']),\n EuiResizableComponent: new Set(['cssClasses']),\n EuiScrollHandlerDirective: new Set(['euiScrollHandler', 'euiScrollHandlerElement', 'toggleActiveHeight', 'toggleClass']),\n EuiSectionHeaderComponent: new Set(['e2eAttr', 'id', 'isExpandable', 'isExpanded', 'isFirst']),\n EuiSectionHeaderIconComponent: new Set(['icon']),\n EuiSelectComponent: new Set(['ariaLabel', 'isInvalid', 'placeholder', 'readonly']),\n EuiSidebarToggleComponent: new Set(['e2eAttr', 'iconSvgFillColor']),\n EuiSkeletonComponent: new Set(['cssClasses']),\n EuiSlideToggleComponent: new Set(['ariaLabel', 'cssClasses', 'disabled', 'iconSvgFillColorOff', 'iconSvgFillColorOn', 'iconSvgNameOff', 'iconSvgNameOn', 'id', 'isChecked']),\n EuiSliderComponent: new Set(['cssClasses', 'endHandler', 'endHandlerContainer', 'endInputRange', 'formattedEndValue', 'formattedStartValue', 'handlers', 'inputRanges', 'sliderContainer', 'startHandler', 'startHandlerContainer', 'startInputRange', 'trackActive']),\n EuiSmoothScrollToDirective: new Set(['callbackAfter', 'callbackBefore', 'containerId', 'duration', 'easing', 'middleAlign', 'offset', 'scrollIf', 'scrollOnClick', 'scrollTo']),\n EuiStatusBadgeComponent: new Set(['ariaLabel', 'colorPalette', 'cssClasses', 'e2eAttr', 'euiDottedBadge']),\n EuiTabBodyComponent: new Set(['hasNoContentPadding', 'templateRef']),\n EuiTabComponent: new Set(['e2eAttr', 'euiVariant', 'id', 'isClosable', 'isDisabled', 'isHandleActivateTab', 'isHandleCloseOnClose', 'isVisible', 'tooltip', 'url']),\n EuiTabHeaderComponent: new Set(['templateRef']),\n EuiTableComponent: new Set(['data', 'filter', 'hasStickyCols', 'hasStickyFooter', 'hasStickyHeader', 'isAsync', 'isColsOrderable', 'isLoading', 'isSelectOnlyVisibleRows', 'isTableBordered', 'isTableCompact', 'isTableFixedLayout', 'isTableResponsive', 'isVirtualScroll', 'isVirtualScrollCache', 'itemSize', 'paginator', 'preselectedRows', 'propId', 'tbodyRef', 'templates', 'tfootRef', 'theadRef', 'virtualScrollAsyncItemsLength', 'virtualScrollNbRows']),\n EuiTableFilterComponent: new Set(['filterInput', 'placeholder']),\n EuiTableSelectableHeaderComponent: new Set(['isHeaderSelectable']),\n EuiTableSelectableRowComponent: new Set(['isChecked', 'isDataSelectable', 'isKeyboardSelectable', 'isSingleSelectable']),\n EuiTableSortableColComponent: new Set(['defaultOrder', 'euiDropdown', 'isMultiSortable', 'sortDisabled']),\n EuiTabsComponent: new Set(['activeTabIndex', 'ariaLabel', 'e2eAttr', 'euiTabListItems', 'euiTabsHeaders', 'euiTabsHeadersContainer', 'euiTabsRightContent', 'isFlat', 'isMainNavigation']),\n EuiTemplateDirective: new Set(['name', 'type']),\n EuiTimelineComponent: new Set(['cssClasses', 'e2eAttr', 'isLeftAligned']),\n EuiTimelineItemComponent: new Set(['cssClasses', 'date', 'dateStyleClass', 'e2eAttr', 'isGroup', 'isLeftAligned', 'label', 'subLabel', 'time', 'timeStyleClass']),\n EuiTimepickerComponent: new Set(['e2eAttr', 'hasSeconds', 'iconSize', 'inputId', 'isDisabled', 'isOneInputField', 'isreadOnly', 'placeholder', 'stepHours', 'stepMinutes', 'stepSeconds', 'timeMask']),\n EuiToggleGroupComponent: new Set(['isFluid', 'isMultiple']),\n EuiToggleGroupItemComponent: new Set(['id', 'isChecked']),\n EuiToolbarAppComponent: new Set(['appName', 'appSubTitle']),\n EuiToolbarItemsComponent: new Set(['euiEnd', 'euiPositionRight']),\n EuiToolbarLogoComponent: new Set(['homeUrl', 'logoAltText', 'logoHeight', 'logoUrl', 'logoWidth']),\n EuiToolbarMegaMenuComponent: new Set(['ariaLabel', 'id', 'items', 'menuItemLinks', 'subMenuComponent', 'templatePortalContent']),\n EuiToolbarMegaMenuContainerComponent: new Set(['activeMenu', 'ariaLabel', 'megaMenuItemsGrouped', 'submenuItemLinks']),\n EuiToolbarNavbarItemComponent: new Set(['id', 'isActive', 'label']),\n EuiToolbarSearchComponent: new Set(['hasExpandAnimation', 'hasSearchButton', 'isAutocomplete', 'isInputText', 'panelWidth', 'placeholderLabel', 'searchResults', 'templates']),\n EuiToolbarSelectorComponent: new Set(['euiDisabled', 'iconSvgName', 'label']),\n EuiTooltipContainerComponent: new Set(['cssClasses']),\n EuiTooltipDirective: new Set(['contentAlignment', 'e2eAttr', 'euiTooltipAccent', 'euiTooltipDanger', 'euiTooltipInfo', 'euiTooltipPrimary', 'euiTooltipSecondary', 'euiTooltipSuccess', 'euiTooltipWarning', 'hideDelay', 'isDisabled', 'position', 'showDelay']),\n EuiTreeComponent: new Set(['autoTranslate', 'cdkScrollableRef', 'collapsedSvgIconClass', 'customNodeSelectFn', 'e2eAttr', 'expandedSvgIconClass', 'highlightPath', 'isClickTogglingNode', 'isMultiselect', 'isRecursiveParentSelection', 'isRecursiveSelection', 'isSingleSelect', 'nodeContentMetadataTemplateRef', 'nodeTemplateRef', 'rightContextMenuTemplateRef', 'showLines', 'showUnderlinedLinks', 'treeComponentInstance', 'virtualScrollPageSize', 'virtualScrollThreshold']),\n EuiTreeFormControlDirective: new Set(['euiTreeControlModelMapper', 'euiTreeControlValueSetter']),\n EuiTreeListComponent: new Set(['ariaLabel', 'collapseAllLabel', 'e2eAttr', 'expandAllLabel', 'filterFunction', 'filterLabel', 'hasItemsUrl', 'isExpanded', 'isShowToolbar', 'isShowToolbarToggle', 'tabindex', 'toolbarFilterValue']),\n EuiTreeListItemComponent: new Set(['focusable', 'isActive', 'isAlwaysExpanded', 'isDisplaySubLinksOnHover', 'isNavigateOnlyOnLabelClick', 'label', 'linkUrl', 'subLinks', 'url']),\n EuiTreeListToolbarComponent: new Set(['collapseAllLabel', 'e2eAttr', 'expandAllLabel', 'filterLabel', 'hasLabels', 'isFilterVisible', 'isToggleVisible', 'isVisible']),\n EuiUserProfileCardComponent: new Set(['avatarUrl', 'impersonateLabel', 'isShowAvatar', 'isShowAvatarInitials', 'isShowClose', 'isShowUserInfos', 'profileCardHideLabel', 'reverseNameOrder', 'showDetailsLabel']),\n EuiUserProfileComponent: new Set(['avatarUrl', 'dropContentWidth', 'dropdown', 'euiStatusDanger', 'euiStatusSecondary', 'euiStatusSuccess', 'hasMenu', 'hasTabNavigation', 'hasToggle', 'hasWelcomeLabel', 'impersonateLabel', 'isHeaderUserProfile', 'isMobileOnly', 'isReverse', 'isShowAvatarInitials', 'isShowUserInfos', 'isToolbarUserProfile', 'reverseNameOrder', 'statusVariant', 'subInfos', 'welcomeLabel']),\n EuiWizardComponent: new Set(['activeStepIndex', 'canBeFocused', 'childrenSteps', 'e2eAttr', 'isCustomContent', 'isNavigationAllowed', 'isShowStepTitle', 'steps', 'tabindex']),\n InputDirective: new Set(['disabled', 'euiDanger', 'euiDisabled', 'placeholder', 'readonly']),\n QuillEditorComponent: new Set(['bounds', 'customOptions', 'customToolbarPosition', 'debug', 'format', 'formats', 'hasImageFeature', 'id', 'maxLength', 'minLength', 'modules', 'placeholder', 'preserveWhitespace', 'readOnly', 'required', 'sanitize', 'scrollingContainer', 'strict', 'styles', 'theme', 'trackChanges', 'valueGetter', 'valueSetter']),\n}",
39579
+ "rawdescription": "Auto-generated map of EUI component classes whose",
39580
+ "description": "<p>Auto-generated map of EUI component classes whose</p>\n"
39581
+ }
39582
+ ],
38542
39583
  "packages/core/src/lib/helpers/format-helpers.ts": [
38543
39584
  {
38544
39585
  "name": "formatNumber",
@@ -47666,6 +48707,841 @@
47666
48707
  ]
47667
48708
  }
47668
48709
  ],
48710
+ "packages/core/schematics/migrate-to-signals/index.ts": [
48711
+ {
48712
+ "name": "applyEdits",
48713
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
48714
+ "ctype": "miscellaneous",
48715
+ "subtype": "function",
48716
+ "coverageIgnore": false,
48717
+ "deprecated": false,
48718
+ "deprecationMessage": "",
48719
+ "rawdescription": "",
48720
+ "description": "",
48721
+ "displayName": "applyEdits",
48722
+ "args": [
48723
+ {
48724
+ "name": "source",
48725
+ "type": "string",
48726
+ "deprecated": false,
48727
+ "deprecationMessage": ""
48728
+ },
48729
+ {
48730
+ "name": "edits",
48731
+ "deprecated": false,
48732
+ "deprecationMessage": ""
48733
+ }
48734
+ ],
48735
+ "returnType": "string",
48736
+ "jsdoctags": [
48737
+ {
48738
+ "name": "source",
48739
+ "type": "string",
48740
+ "deprecated": false,
48741
+ "deprecationMessage": "",
48742
+ "tagName": {
48743
+ "text": "param"
48744
+ }
48745
+ },
48746
+ {
48747
+ "name": "edits",
48748
+ "deprecated": false,
48749
+ "deprecationMessage": "",
48750
+ "tagName": {
48751
+ "text": "param"
48752
+ }
48753
+ }
48754
+ ]
48755
+ },
48756
+ {
48757
+ "name": "buildTemplateRefMap",
48758
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
48759
+ "ctype": "miscellaneous",
48760
+ "subtype": "function",
48761
+ "coverageIgnore": false,
48762
+ "deprecated": false,
48763
+ "deprecationMessage": "",
48764
+ "rawdescription": "Builds a map of template reference variable names (#ref) to EUI class names.\n\nParses the component's template (inline or external) and finds elements like:\n <eui-alert #myAlert> → myAlert → EuiAlertComponent\n <input euiAutocomplete #ac> → ac → EuiAutocompleteComponent\n\nReturns Map<refName, euiClassName>.",
48765
+ "description": "<p>Builds a map of template reference variable names (#ref) to EUI class names.</p>\n<p>Parses the component&#39;s template (inline or external) and finds elements like:\n &lt;eui-alert #myAlert&gt; → myAlert → EuiAlertComponent\n &lt;input euiAutocomplete #ac&gt; → ac → EuiAutocompleteComponent</p>\n<p>Returns Map&lt;refName, euiClassName&gt;.</p>\n",
48766
+ "displayName": "buildTemplateRefMap",
48767
+ "args": [
48768
+ {
48769
+ "name": "sourceFile",
48770
+ "deprecated": false,
48771
+ "deprecationMessage": ""
48772
+ },
48773
+ {
48774
+ "name": "source",
48775
+ "type": "string",
48776
+ "deprecated": false,
48777
+ "deprecationMessage": ""
48778
+ },
48779
+ {
48780
+ "name": "filePath",
48781
+ "type": "string",
48782
+ "deprecated": false,
48783
+ "deprecationMessage": ""
48784
+ },
48785
+ {
48786
+ "name": "tree",
48787
+ "type": "Tree",
48788
+ "deprecated": false,
48789
+ "deprecationMessage": ""
48790
+ }
48791
+ ],
48792
+ "returnType": "Map<string, string>",
48793
+ "jsdoctags": [
48794
+ {
48795
+ "name": "sourceFile",
48796
+ "deprecated": false,
48797
+ "deprecationMessage": "",
48798
+ "tagName": {
48799
+ "text": "param"
48800
+ }
48801
+ },
48802
+ {
48803
+ "name": "source",
48804
+ "type": "string",
48805
+ "deprecated": false,
48806
+ "deprecationMessage": "",
48807
+ "tagName": {
48808
+ "text": "param"
48809
+ }
48810
+ },
48811
+ {
48812
+ "name": "filePath",
48813
+ "type": "string",
48814
+ "deprecated": false,
48815
+ "deprecationMessage": "",
48816
+ "tagName": {
48817
+ "text": "param"
48818
+ }
48819
+ },
48820
+ {
48821
+ "name": "tree",
48822
+ "type": "Tree",
48823
+ "deprecated": false,
48824
+ "deprecationMessage": "",
48825
+ "tagName": {
48826
+ "text": "param"
48827
+ }
48828
+ }
48829
+ ]
48830
+ },
48831
+ {
48832
+ "name": "collectEuiReferences",
48833
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
48834
+ "ctype": "miscellaneous",
48835
+ "subtype": "function",
48836
+ "coverageIgnore": false,
48837
+ "deprecated": false,
48838
+ "deprecationMessage": "",
48839
+ "rawdescription": "Scans the source file for class properties or variables typed as EUI component classes.\nReturns a map: localName → Set of signal property names.\n\nHandles:",
48840
+ "description": "<p>Scans the source file for class properties or variables typed as EUI component classes.\nReturns a map: localName → Set of signal property names.</p>\n<p>Handles:</p>\n",
48841
+ "displayName": "collectEuiReferences",
48842
+ "args": [
48843
+ {
48844
+ "name": "sourceFile",
48845
+ "deprecated": false,
48846
+ "deprecationMessage": ""
48847
+ },
48848
+ {
48849
+ "name": "source",
48850
+ "type": "string",
48851
+ "deprecated": false,
48852
+ "deprecationMessage": ""
48853
+ },
48854
+ {
48855
+ "name": "templateRefMap",
48856
+ "type": "Map",
48857
+ "deprecated": false,
48858
+ "deprecationMessage": ""
48859
+ }
48860
+ ],
48861
+ "returnType": "Map<string, ReadonlySet<string>>",
48862
+ "jsdoctags": [
48863
+ {
48864
+ "name": "sourceFile",
48865
+ "deprecated": false,
48866
+ "deprecationMessage": "",
48867
+ "tagName": {
48868
+ "text": "param"
48869
+ }
48870
+ },
48871
+ {
48872
+ "name": "source",
48873
+ "type": "string",
48874
+ "deprecated": false,
48875
+ "deprecationMessage": "",
48876
+ "tagName": {
48877
+ "text": "param"
48878
+ }
48879
+ },
48880
+ {
48881
+ "name": "templateRefMap",
48882
+ "type": "Map",
48883
+ "deprecated": false,
48884
+ "deprecationMessage": "",
48885
+ "tagName": {
48886
+ "text": "param"
48887
+ }
48888
+ }
48889
+ ]
48890
+ },
48891
+ {
48892
+ "name": "collectTemplateRefs",
48893
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
48894
+ "ctype": "miscellaneous",
48895
+ "subtype": "function",
48896
+ "coverageIgnore": false,
48897
+ "deprecated": false,
48898
+ "deprecationMessage": "",
48899
+ "rawdescription": "Recursively walks template AST nodes, collecting #refName → EUI class name mappings.\n\nFor each element with a template reference (#ref), we try to resolve its EUI class:\n1. Match element tag name against EUI_SELECTOR_TO_CLASS (e.g. 'eui-alert' → EuiAlertComponent)\n2. Match element attributes against attribute selectors (e.g. [euiAutocomplete] → EuiAutocompleteComponent)",
48900
+ "description": "<p>Recursively walks template AST nodes, collecting #refName → EUI class name mappings.</p>\n<p>For each element with a template reference (#ref), we try to resolve its EUI class:</p>\n<ol>\n<li>Match element tag name against EUI_SELECTOR_TO_CLASS (e.g. &#39;eui-alert&#39; → EuiAlertComponent)</li>\n<li>Match element attributes against attribute selectors (e.g. [euiAutocomplete] → EuiAutocompleteComponent)</li>\n</ol>\n",
48901
+ "displayName": "collectTemplateRefs",
48902
+ "args": [
48903
+ {
48904
+ "name": "nodes",
48905
+ "deprecated": false,
48906
+ "deprecationMessage": ""
48907
+ },
48908
+ {
48909
+ "name": "refMap",
48910
+ "type": "Map",
48911
+ "deprecated": false,
48912
+ "deprecationMessage": ""
48913
+ }
48914
+ ],
48915
+ "returnType": "void",
48916
+ "jsdoctags": [
48917
+ {
48918
+ "name": "nodes",
48919
+ "deprecated": false,
48920
+ "deprecationMessage": "",
48921
+ "tagName": {
48922
+ "text": "param"
48923
+ }
48924
+ },
48925
+ {
48926
+ "name": "refMap",
48927
+ "type": "Map",
48928
+ "deprecated": false,
48929
+ "deprecationMessage": "",
48930
+ "tagName": {
48931
+ "text": "param"
48932
+ }
48933
+ }
48934
+ ]
48935
+ },
48936
+ {
48937
+ "name": "deduplicateEdits",
48938
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
48939
+ "ctype": "miscellaneous",
48940
+ "subtype": "function",
48941
+ "coverageIgnore": false,
48942
+ "deprecated": false,
48943
+ "deprecationMessage": "",
48944
+ "rawdescription": "",
48945
+ "description": "",
48946
+ "displayName": "deduplicateEdits",
48947
+ "args": [
48948
+ {
48949
+ "name": "edits",
48950
+ "deprecated": false,
48951
+ "deprecationMessage": ""
48952
+ }
48953
+ ],
48954
+ "returnType": "Edit[]",
48955
+ "jsdoctags": [
48956
+ {
48957
+ "name": "edits",
48958
+ "deprecated": false,
48959
+ "deprecationMessage": "",
48960
+ "tagName": {
48961
+ "text": "param"
48962
+ }
48963
+ }
48964
+ ]
48965
+ },
48966
+ {
48967
+ "name": "findComponentMetadata",
48968
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
48969
+ "ctype": "miscellaneous",
48970
+ "subtype": "function",
48971
+ "coverageIgnore": false,
48972
+ "deprecated": false,
48973
+ "deprecationMessage": "",
48974
+ "rawdescription": "Extracts",
48975
+ "description": "<p>Extracts</p>\n",
48976
+ "displayName": "findComponentMetadata",
48977
+ "args": [
48978
+ {
48979
+ "name": "sourceFile",
48980
+ "deprecated": false,
48981
+ "deprecationMessage": ""
48982
+ },
48983
+ {
48984
+ "name": "source",
48985
+ "type": "string",
48986
+ "deprecated": false,
48987
+ "deprecationMessage": ""
48988
+ }
48989
+ ],
48990
+ "returnType": "literal type | null",
48991
+ "jsdoctags": [
48992
+ {
48993
+ "name": "sourceFile",
48994
+ "deprecated": false,
48995
+ "deprecationMessage": "",
48996
+ "tagName": {
48997
+ "text": "param"
48998
+ }
48999
+ },
49000
+ {
49001
+ "name": "source",
49002
+ "type": "string",
49003
+ "deprecated": false,
49004
+ "deprecationMessage": "",
49005
+ "tagName": {
49006
+ "text": "param"
49007
+ }
49008
+ }
49009
+ ]
49010
+ },
49011
+ {
49012
+ "name": "getDecoratorName",
49013
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
49014
+ "ctype": "miscellaneous",
49015
+ "subtype": "function",
49016
+ "coverageIgnore": false,
49017
+ "deprecated": false,
49018
+ "deprecationMessage": "",
49019
+ "rawdescription": "",
49020
+ "description": "",
49021
+ "displayName": "getDecoratorName",
49022
+ "args": [
49023
+ {
49024
+ "name": "callExpr",
49025
+ "deprecated": false,
49026
+ "deprecationMessage": ""
49027
+ }
49028
+ ],
49029
+ "returnType": "string | null",
49030
+ "jsdoctags": [
49031
+ {
49032
+ "name": "callExpr",
49033
+ "deprecated": false,
49034
+ "deprecationMessage": "",
49035
+ "tagName": {
49036
+ "text": "param"
49037
+ }
49038
+ }
49039
+ ]
49040
+ },
49041
+ {
49042
+ "name": "getTypeAnnotationName",
49043
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
49044
+ "ctype": "miscellaneous",
49045
+ "subtype": "function",
49046
+ "coverageIgnore": false,
49047
+ "deprecated": false,
49048
+ "deprecationMessage": "",
49049
+ "rawdescription": "",
49050
+ "description": "",
49051
+ "displayName": "getTypeAnnotationName",
49052
+ "args": [
49053
+ {
49054
+ "name": "typeNode",
49055
+ "deprecated": false,
49056
+ "deprecationMessage": ""
49057
+ }
49058
+ ],
49059
+ "returnType": "string | null",
49060
+ "jsdoctags": [
49061
+ {
49062
+ "name": "typeNode",
49063
+ "deprecated": false,
49064
+ "deprecationMessage": "",
49065
+ "tagName": {
49066
+ "text": "param"
49067
+ }
49068
+ }
49069
+ ]
49070
+ },
49071
+ {
49072
+ "name": "hasEuiReference",
49073
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
49074
+ "ctype": "miscellaneous",
49075
+ "subtype": "function",
49076
+ "coverageIgnore": false,
49077
+ "deprecated": false,
49078
+ "deprecationMessage": "",
49079
+ "rawdescription": "Quick check: does the file reference any EUI class name from the signal map?",
49080
+ "description": "<p>Quick check: does the file reference any EUI class name from the signal map?</p>\n",
49081
+ "displayName": "hasEuiReference",
49082
+ "args": [
49083
+ {
49084
+ "name": "source",
49085
+ "type": "string",
49086
+ "deprecated": false,
49087
+ "deprecationMessage": ""
49088
+ }
49089
+ ],
49090
+ "returnType": "boolean",
49091
+ "jsdoctags": [
49092
+ {
49093
+ "name": "source",
49094
+ "type": "string",
49095
+ "deprecated": false,
49096
+ "deprecationMessage": "",
49097
+ "tagName": {
49098
+ "text": "param"
49099
+ }
49100
+ }
49101
+ ]
49102
+ },
49103
+ {
49104
+ "name": "hasStringRefQuery",
49105
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
49106
+ "ctype": "miscellaneous",
49107
+ "subtype": "function",
49108
+ "coverageIgnore": false,
49109
+ "deprecated": false,
49110
+ "deprecationMessage": "",
49111
+ "rawdescription": "Quick check: does the file have",
49112
+ "description": "<p>Quick check: does the file have</p>\n",
49113
+ "displayName": "hasStringRefQuery",
49114
+ "args": [
49115
+ {
49116
+ "name": "source",
49117
+ "type": "string",
49118
+ "deprecated": false,
49119
+ "deprecationMessage": ""
49120
+ }
49121
+ ],
49122
+ "returnType": "boolean",
49123
+ "jsdoctags": [
49124
+ {
49125
+ "name": "source",
49126
+ "type": "string",
49127
+ "deprecated": false,
49128
+ "deprecationMessage": "",
49129
+ "tagName": {
49130
+ "text": "param"
49131
+ }
49132
+ }
49133
+ ]
49134
+ },
49135
+ {
49136
+ "name": "isAssignmentOperator",
49137
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
49138
+ "ctype": "miscellaneous",
49139
+ "subtype": "function",
49140
+ "coverageIgnore": false,
49141
+ "deprecated": false,
49142
+ "deprecationMessage": "",
49143
+ "rawdescription": "",
49144
+ "description": "",
49145
+ "displayName": "isAssignmentOperator",
49146
+ "args": [
49147
+ {
49148
+ "name": "kind",
49149
+ "deprecated": false,
49150
+ "deprecationMessage": ""
49151
+ }
49152
+ ],
49153
+ "returnType": "boolean",
49154
+ "jsdoctags": [
49155
+ {
49156
+ "name": "kind",
49157
+ "deprecated": false,
49158
+ "deprecationMessage": "",
49159
+ "tagName": {
49160
+ "text": "param"
49161
+ }
49162
+ }
49163
+ ]
49164
+ },
49165
+ {
49166
+ "name": "migrateToSignals",
49167
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
49168
+ "ctype": "miscellaneous",
49169
+ "subtype": "function",
49170
+ "coverageIgnore": false,
49171
+ "deprecated": false,
49172
+ "deprecationMessage": "",
49173
+ "rawdescription": "Migrates consumer code that accesses EUI component instances programmatically.\n\nWhen EUI migrated",
49174
+ "description": "<p>Migrates consumer code that accesses EUI component instances programmatically.</p>\n<p>When EUI migrated</p>\n",
49175
+ "displayName": "migrateToSignals",
49176
+ "args": [
49177
+ {
49178
+ "name": "options",
49179
+ "type": "Schema",
49180
+ "deprecated": false,
49181
+ "deprecationMessage": "",
49182
+ "defaultValue": "{}"
49183
+ }
49184
+ ],
49185
+ "returnType": "Rule",
49186
+ "jsdoctags": [
49187
+ {
49188
+ "name": "options",
49189
+ "type": "Schema",
49190
+ "deprecated": false,
49191
+ "deprecationMessage": "",
49192
+ "defaultValue": "{}",
49193
+ "tagName": {
49194
+ "text": "param"
49195
+ }
49196
+ }
49197
+ ]
49198
+ },
49199
+ {
49200
+ "name": "migrateTypeScript",
49201
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
49202
+ "ctype": "miscellaneous",
49203
+ "subtype": "function",
49204
+ "coverageIgnore": false,
49205
+ "deprecated": false,
49206
+ "deprecationMessage": "",
49207
+ "rawdescription": "",
49208
+ "description": "",
49209
+ "displayName": "migrateTypeScript",
49210
+ "args": [
49211
+ {
49212
+ "name": "source",
49213
+ "type": "string",
49214
+ "deprecated": false,
49215
+ "deprecationMessage": ""
49216
+ },
49217
+ {
49218
+ "name": "filePath",
49219
+ "type": "string",
49220
+ "deprecated": false,
49221
+ "deprecationMessage": ""
49222
+ },
49223
+ {
49224
+ "name": "tree",
49225
+ "type": "Tree",
49226
+ "deprecated": false,
49227
+ "deprecationMessage": ""
49228
+ },
49229
+ {
49230
+ "name": "context",
49231
+ "type": "SchematicContext",
49232
+ "deprecated": false,
49233
+ "deprecationMessage": ""
49234
+ }
49235
+ ],
49236
+ "returnType": "MigrateResult",
49237
+ "jsdoctags": [
49238
+ {
49239
+ "name": "source",
49240
+ "type": "string",
49241
+ "deprecated": false,
49242
+ "deprecationMessage": "",
49243
+ "tagName": {
49244
+ "text": "param"
49245
+ }
49246
+ },
49247
+ {
49248
+ "name": "filePath",
49249
+ "type": "string",
49250
+ "deprecated": false,
49251
+ "deprecationMessage": "",
49252
+ "tagName": {
49253
+ "text": "param"
49254
+ }
49255
+ },
49256
+ {
49257
+ "name": "tree",
49258
+ "type": "Tree",
49259
+ "deprecated": false,
49260
+ "deprecationMessage": "",
49261
+ "tagName": {
49262
+ "text": "param"
49263
+ }
49264
+ },
49265
+ {
49266
+ "name": "context",
49267
+ "type": "SchematicContext",
49268
+ "deprecated": false,
49269
+ "deprecationMessage": "",
49270
+ "tagName": {
49271
+ "text": "param"
49272
+ }
49273
+ }
49274
+ ]
49275
+ },
49276
+ {
49277
+ "name": "resolveElementToEuiClass",
49278
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
49279
+ "ctype": "miscellaneous",
49280
+ "subtype": "function",
49281
+ "coverageIgnore": false,
49282
+ "deprecated": false,
49283
+ "deprecationMessage": "",
49284
+ "rawdescription": "Given a template element, resolves it to an EUI class name by checking:\n1. Tag name: <eui-alert> → look up 'eui-alert' in EUI_SELECTOR_TO_CLASS\n2. Attribute selectors: <input euiAutocomplete> → look up 'input[euiAutocomplete]' or '[euiAutocomplete]'",
49285
+ "description": "<p>Given a template element, resolves it to an EUI class name by checking:</p>\n<ol>\n<li>Tag name: <eui-alert> → look up &#39;eui-alert&#39; in EUI_SELECTOR_TO_CLASS</li>\n<li>Attribute selectors: <input euiAutocomplete> → look up &#39;input[euiAutocomplete]&#39; or &#39;[euiAutocomplete]&#39;</li>\n</ol>\n",
49286
+ "displayName": "resolveElementToEuiClass",
49287
+ "args": [
49288
+ {
49289
+ "name": "element",
49290
+ "type": "TmplAstElement",
49291
+ "deprecated": false,
49292
+ "deprecationMessage": ""
49293
+ }
49294
+ ],
49295
+ "returnType": "string | null",
49296
+ "jsdoctags": [
49297
+ {
49298
+ "name": "element",
49299
+ "type": "TmplAstElement",
49300
+ "deprecated": false,
49301
+ "deprecationMessage": "",
49302
+ "tagName": {
49303
+ "text": "param"
49304
+ }
49305
+ }
49306
+ ]
49307
+ },
49308
+ {
49309
+ "name": "resolveEuiClassName",
49310
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
49311
+ "ctype": "miscellaneous",
49312
+ "subtype": "function",
49313
+ "coverageIgnore": false,
49314
+ "deprecated": false,
49315
+ "deprecationMessage": "",
49316
+ "rawdescription": "Resolves the EUI class name from a property declaration.\nChecks: type annotation → decorator class argument → template ref map.",
49317
+ "description": "<p>Resolves the EUI class name from a property declaration.\nChecks: type annotation → decorator class argument → template ref map.</p>\n",
49318
+ "displayName": "resolveEuiClassName",
49319
+ "args": [
49320
+ {
49321
+ "name": "node",
49322
+ "deprecated": false,
49323
+ "deprecationMessage": ""
49324
+ },
49325
+ {
49326
+ "name": "sourceFile",
49327
+ "deprecated": false,
49328
+ "deprecationMessage": ""
49329
+ },
49330
+ {
49331
+ "name": "templateRefMap",
49332
+ "type": "Map",
49333
+ "deprecated": false,
49334
+ "deprecationMessage": ""
49335
+ }
49336
+ ],
49337
+ "returnType": "string | null",
49338
+ "jsdoctags": [
49339
+ {
49340
+ "name": "node",
49341
+ "deprecated": false,
49342
+ "deprecationMessage": "",
49343
+ "tagName": {
49344
+ "text": "param"
49345
+ }
49346
+ },
49347
+ {
49348
+ "name": "sourceFile",
49349
+ "deprecated": false,
49350
+ "deprecationMessage": "",
49351
+ "tagName": {
49352
+ "text": "param"
49353
+ }
49354
+ },
49355
+ {
49356
+ "name": "templateRefMap",
49357
+ "type": "Map",
49358
+ "deprecated": false,
49359
+ "deprecationMessage": "",
49360
+ "tagName": {
49361
+ "text": "param"
49362
+ }
49363
+ }
49364
+ ]
49365
+ },
49366
+ {
49367
+ "name": "resolveRefName",
49368
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
49369
+ "ctype": "miscellaneous",
49370
+ "subtype": "function",
49371
+ "coverageIgnore": false,
49372
+ "deprecated": false,
49373
+ "deprecationMessage": "",
49374
+ "rawdescription": "Resolves a reference name from an expression.\nHandles: `ref`, `this.ref`, `this._ref`",
49375
+ "description": "<p>Resolves a reference name from an expression.\nHandles: <code>ref</code>, <code>this.ref</code>, <code>this._ref</code></p>\n",
49376
+ "displayName": "resolveRefName",
49377
+ "args": [
49378
+ {
49379
+ "name": "expr",
49380
+ "deprecated": false,
49381
+ "deprecationMessage": ""
49382
+ }
49383
+ ],
49384
+ "returnType": "string | null",
49385
+ "jsdoctags": [
49386
+ {
49387
+ "name": "expr",
49388
+ "deprecated": false,
49389
+ "deprecationMessage": "",
49390
+ "tagName": {
49391
+ "text": "param"
49392
+ }
49393
+ }
49394
+ ]
49395
+ },
49396
+ {
49397
+ "name": "tryRewritePropertyAccess",
49398
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
49399
+ "ctype": "miscellaneous",
49400
+ "subtype": "function",
49401
+ "coverageIgnore": false,
49402
+ "deprecated": false,
49403
+ "deprecationMessage": "",
49404
+ "rawdescription": "Checks if a property access `ref.prop` should be rewritten to `ref.prop()`.\n\nWe rewrite if:\n- `ref` is tracked in euiRefs\n- `prop` is in the signal set for that EUI class\n- The access is NOT already a call expression (not `ref.prop()` or `ref.prop(args)`)\n- The access is NOT a write target (not `ref.prop = value`)\n- The access is NOT a template binding argument (those are unaffected)",
49405
+ "description": "<p>Checks if a property access <code>ref.prop</code> should be rewritten to <code>ref.prop()</code>.</p>\n<p>We rewrite if:</p>\n<ul>\n<li><code>ref</code> is tracked in euiRefs</li>\n<li><code>prop</code> is in the signal set for that EUI class</li>\n<li>The access is NOT already a call expression (not <code>ref.prop()</code> or <code>ref.prop(args)</code>)</li>\n<li>The access is NOT a write target (not <code>ref.prop = value</code>)</li>\n<li>The access is NOT a template binding argument (those are unaffected)</li>\n</ul>\n",
49406
+ "displayName": "tryRewritePropertyAccess",
49407
+ "args": [
49408
+ {
49409
+ "name": "node",
49410
+ "deprecated": false,
49411
+ "deprecationMessage": ""
49412
+ },
49413
+ {
49414
+ "name": "euiRefs",
49415
+ "type": "Map",
49416
+ "deprecated": false,
49417
+ "deprecationMessage": ""
49418
+ },
49419
+ {
49420
+ "name": "sourceFile",
49421
+ "deprecated": false,
49422
+ "deprecationMessage": ""
49423
+ },
49424
+ {
49425
+ "name": "source",
49426
+ "type": "string",
49427
+ "deprecated": false,
49428
+ "deprecationMessage": ""
49429
+ }
49430
+ ],
49431
+ "returnType": "Edit | null",
49432
+ "jsdoctags": [
49433
+ {
49434
+ "name": "node",
49435
+ "deprecated": false,
49436
+ "deprecationMessage": "",
49437
+ "tagName": {
49438
+ "text": "param"
49439
+ }
49440
+ },
49441
+ {
49442
+ "name": "euiRefs",
49443
+ "type": "Map",
49444
+ "deprecated": false,
49445
+ "deprecationMessage": "",
49446
+ "tagName": {
49447
+ "text": "param"
49448
+ }
49449
+ },
49450
+ {
49451
+ "name": "sourceFile",
49452
+ "deprecated": false,
49453
+ "deprecationMessage": "",
49454
+ "tagName": {
49455
+ "text": "param"
49456
+ }
49457
+ },
49458
+ {
49459
+ "name": "source",
49460
+ "type": "string",
49461
+ "deprecated": false,
49462
+ "deprecationMessage": "",
49463
+ "tagName": {
49464
+ "text": "param"
49465
+ }
49466
+ }
49467
+ ]
49468
+ },
49469
+ {
49470
+ "name": "unwrapExpression",
49471
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
49472
+ "ctype": "miscellaneous",
49473
+ "subtype": "function",
49474
+ "coverageIgnore": false,
49475
+ "deprecated": false,
49476
+ "deprecationMessage": "",
49477
+ "rawdescription": "",
49478
+ "description": "",
49479
+ "displayName": "unwrapExpression",
49480
+ "args": [
49481
+ {
49482
+ "name": "expression",
49483
+ "deprecated": false,
49484
+ "deprecationMessage": ""
49485
+ }
49486
+ ],
49487
+ "returnType": "ts.Expression",
49488
+ "jsdoctags": [
49489
+ {
49490
+ "name": "expression",
49491
+ "deprecated": false,
49492
+ "deprecationMessage": "",
49493
+ "tagName": {
49494
+ "text": "param"
49495
+ }
49496
+ }
49497
+ ]
49498
+ },
49499
+ {
49500
+ "name": "visitDir",
49501
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
49502
+ "ctype": "miscellaneous",
49503
+ "subtype": "function",
49504
+ "coverageIgnore": false,
49505
+ "deprecated": false,
49506
+ "deprecationMessage": "",
49507
+ "rawdescription": "",
49508
+ "description": "",
49509
+ "displayName": "visitDir",
49510
+ "args": [
49511
+ {
49512
+ "name": "dir",
49513
+ "type": "DirEntry",
49514
+ "deprecated": false,
49515
+ "deprecationMessage": ""
49516
+ },
49517
+ {
49518
+ "name": "callback",
49519
+ "deprecated": false,
49520
+ "deprecationMessage": ""
49521
+ }
49522
+ ],
49523
+ "returnType": "void",
49524
+ "jsdoctags": [
49525
+ {
49526
+ "name": "dir",
49527
+ "type": "DirEntry",
49528
+ "deprecated": false,
49529
+ "deprecationMessage": "",
49530
+ "tagName": {
49531
+ "text": "param"
49532
+ }
49533
+ },
49534
+ {
49535
+ "name": "callback",
49536
+ "deprecated": false,
49537
+ "deprecationMessage": "",
49538
+ "tagName": {
49539
+ "text": "param"
49540
+ }
49541
+ }
49542
+ ]
49543
+ }
49544
+ ],
47669
49545
  "packages/core/schematics/migrate-to-standalone/index.ts": [
47670
49546
  {
47671
49547
  "name": "applyReplacements",