@eui/core 22.0.0-alpha.21 → 22.0.0-alpha.22

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.
@@ -2139,7 +2139,63 @@
2139
2139
  },
2140
2140
  {
2141
2141
  "name": "Schema",
2142
- "id": "interface-Schema-4fe31ff3e9f1d34845a6b865d605e215f33552094b88c3d0eab0b180187fe64ce4d68d687516cb3d62c57d2678a103969b2dacbb18a49b26060f78096678fcce",
2142
+ "id": "interface-Schema-9c5e016857e1416ac7bbb881973e644c0f578a53bd432bb951c1676ac3f2a6631bfe3344860346a081b841217278723e0bb0bf2fa35fb869de67cb0cc8d99849",
2143
+ "file": "packages/core/schematics/add-eui-imports/index.ts",
2144
+ "deprecated": false,
2145
+ "deprecationMessage": "",
2146
+ "type": "interface",
2147
+ "sourceCode": "import { parseTemplate, TmplAstElement, TmplAstNode, TmplAstTemplate } from '@angular/compiler';\nimport { DirEntry, Rule, SchematicContext, Tree } from '@angular-devkit/schematics';\nimport * as ts from 'typescript';\nimport { logDryRun, logDryRunNote } from '../utils/dry-run';\nimport { SELECTOR_MAP, SelectorEntry, getClassNamesForArray } from './selector-map';\n\ninterface Schema {\n path?: string;\n dryRun?: boolean;\n useClassArray?: boolean;\n}\n\ninterface ImportToAdd {\n /** The symbol to add to imports array (class name or array name for spread) */\n symbol: string;\n /** Whether this should be spread (...EUI_BUTTON) */\n isSpread: boolean;\n /** ES import path */\n importPath: string;\n}\n\nexport function addEuiImports(options: Schema = {}): Rule {\n return (tree: Tree, context: SchematicContext) => {\n const scanPath = options.path ? '/' + options.path.replace(/^\\.?\\//, '').replace(/\\/$/, '') : '';\n const useClassArray = options.useClassArray ?? false;\n let filesUpdated = 0;\n\n // Index NgModules for standalone:false support\n const ngModuleIndex = buildNgModuleIndex(tree, tree.getDir(scanPath || '/'));\n\n visitDir(tree.getDir(scanPath || '/'), (path) => {\n if (!path.endsWith('.ts') || path.endsWith('.spec.ts')) return;\n\n const buffer = tree.read(path);\n if (!buffer) return;\n const source = buffer.toString('utf-8');\n\n const sourceFile = ts.createSourceFile(path, source, ts.ScriptTarget.Latest, true);\n const components = findComponentDecorators(sourceFile);\n if (components.length === 0) return;\n\n let modified = false;\n\n for (const { decorator, className: componentClassName, isNonStandalone } of components) {\n const templateHtml = getTemplateContent(tree, path, decorator, source);\n if (!templateHtml) continue;\n\n const matched = matchSelectorsInTemplate(templateHtml);\n if (matched.length === 0) continue;\n\n const importsToAdd = resolveImports(matched, useClassArray);\n if (importsToAdd.length === 0) continue;\n\n if (isNonStandalone) {\n // Find the NgModule that declares this component and add imports there\n const moduleInfo = findDeclaringModule(ngModuleIndex, componentClassName);\n if (!moduleInfo) {\n context.logger.warn(`⚠ Could not find declaring NgModule for ${componentClassName} in ${path}`);\n continue;\n }\n const moduleBuffer = tree.read(moduleInfo.path);\n if (!moduleBuffer) continue;\n const moduleSource = moduleBuffer.toString('utf-8');\n const result = addImportsToFile(moduleSource, moduleInfo.path, moduleInfo.decoratorPos, importsToAdd, useClassArray);\n if (result !== moduleSource) {\n if (options.dryRun) {\n logDryRun(context, `Would add EUI imports to NgModule in ${moduleInfo.path} for component ${componentClassName}`);\n } else {\n tree.overwrite(moduleInfo.path, result);\n }\n modified = true;\n }\n } else {\n // Standalone component — add imports directly\n const currentSource = tree.read(path)!.toString('utf-8');\n const result = addImportsToFile(currentSource, path, decorator.getStart(), importsToAdd, useClassArray);\n if (result !== currentSource) {\n if (options.dryRun) {\n logDryRun(context, `Would add EUI imports to ${path}`);\n } else {\n tree.overwrite(path, result);\n }\n modified = true;\n }\n }\n }\n\n if (modified) filesUpdated++;\n });\n\n context.logger.info(`add-eui-imports: ${filesUpdated} file(s) updated.`);\n if (options.dryRun) logDryRunNote(context);\n return tree;\n };\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('.html') && !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\n// --- Selector Matching ---\n\nfunction matchSelectorsInTemplate(html: string): SelectorEntry[] {\n const parsed = parseTemplate(html, '', { preserveWhitespaces: true });\n if (parsed.errors?.length) return [];\n\n const matched: SelectorEntry[] = [];\n visitTemplateNodes(parsed.nodes, matched);\n return matched;\n}\n\nfunction visitTemplateNodes(nodes: TmplAstNode[], matched: SelectorEntry[]): void {\n for (const node of nodes) {\n if (node instanceof TmplAstElement) {\n matchElement(node, matched);\n visitTemplateNodes(node.children, matched);\n } else if (node instanceof TmplAstTemplate) {\n visitTemplateNodes(node.children, matched);\n }\n }\n}\n\nfunction matchElement(element: TmplAstElement, matched: SelectorEntry[]): void {\n const tagName = element.name;\n const attrNames = new Set([\n ...element.attributes.map(a => a.name),\n ...element.inputs.map(i => i.name),\n ]);\n\n for (const entry of SELECTOR_MAP) {\n if (entry.element && entry.element !== tagName) continue;\n if (!entry.element && entry.attributes.length === 0) continue;\n if (!entry.attributes.every(attr => attrNames.has(attr))) continue;\n // If no element specified, at least one attribute must match on this element\n if (!entry.element && entry.attributes.length > 0 && !entry.attributes.some(attr => attrNames.has(attr))) continue;\n matched.push(entry);\n }\n}\n\n// --- Import Resolution ---\n\nfunction resolveImports(matched: SelectorEntry[], useClassArray: boolean): ImportToAdd[] {\n const seen = new Set<string>();\n const result: ImportToAdd[] = [];\n\n for (const entry of matched) {\n if (useClassArray && entry.classArray) {\n if (seen.has(entry.classArray)) continue;\n seen.add(entry.classArray);\n result.push({ symbol: entry.classArray, isSpread: true, importPath: entry.importPath });\n } else {\n if (seen.has(entry.className)) continue;\n seen.add(entry.className);\n result.push({ symbol: entry.className, isSpread: false, importPath: entry.importPath });\n }\n }\n\n return result;\n}\n\n// --- Template Extraction ---\n\nfunction getTemplateContent(tree: Tree, tsPath: string, decorator: ts.Decorator, source: string): string | null {\n const call = decorator.expression as ts.CallExpression;\n if (!call.arguments[0] || !ts.isObjectLiteralExpression(call.arguments[0])) return null;\n const metadata = call.arguments[0];\n\n for (const prop of metadata.properties) {\n if (!ts.isPropertyAssignment(prop) || !ts.isIdentifier(prop.name)) continue;\n if (prop.name.text === 'template') {\n const init = prop.initializer;\n if (ts.isStringLiteral(init) || ts.isNoSubstitutionTemplateLiteral(init)) {\n return init.text;\n }\n }\n if (prop.name.text === 'templateUrl') {\n if (ts.isStringLiteral(prop.initializer)) {\n const dir = tsPath.substring(0, tsPath.lastIndexOf('/'));\n const templateBuffer = tree.read(`${dir}/${prop.initializer.text}`);\n if (templateBuffer) return templateBuffer.toString('utf-8');\n }\n }\n }\n return null;\n}\n\n// --- Component Decorator Detection ---\n\ninterface ComponentInfo {\n decorator: ts.Decorator;\n className: string;\n isNonStandalone: boolean;\n}\n\nfunction findComponentDecorators(sourceFile: ts.SourceFile): ComponentInfo[] {\n const results: ComponentInfo[] = [];\n const visit = (node: ts.Node): void => {\n if (ts.isClassDeclaration(node) && node.name) {\n const decs = ts.getDecorators(node);\n if (decs) {\n for (const dec of decs) {\n if (ts.isCallExpression(dec.expression) && ts.isIdentifier(dec.expression.expression) && dec.expression.expression.text === 'Component') {\n const isNonStandalone = hasStandaloneFalse(dec);\n results.push({ decorator: dec, className: node.name.text, isNonStandalone });\n }\n }\n }\n }\n ts.forEachChild(node, visit);\n };\n visit(sourceFile);\n return results;\n}\n\nfunction hasStandaloneFalse(decorator: ts.Decorator): boolean {\n const call = decorator.expression as ts.CallExpression;\n if (!call.arguments[0] || !ts.isObjectLiteralExpression(call.arguments[0])) return false;\n for (const prop of call.arguments[0].properties) {\n if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name) && prop.name.text === 'standalone') {\n return prop.initializer.kind === ts.SyntaxKind.FalseKeyword;\n }\n }\n return false;\n}\n\n// --- NgModule Index ---\n\ninterface NgModuleInfo {\n path: string;\n declarations: string[];\n decoratorPos: number;\n}\n\nfunction buildNgModuleIndex(tree: Tree, dir: DirEntry): NgModuleInfo[] {\n const modules: NgModuleInfo[] = [];\n\n visitDir(dir, (path) => {\n if (!path.endsWith('.ts') || path.endsWith('.spec.ts')) return;\n\n const buffer = tree.read(path);\n if (!buffer) return;\n const source = buffer.toString('utf-8');\n if (!source.includes('NgModule')) return;\n\n const sf = ts.createSourceFile(path, source, ts.ScriptTarget.Latest, true);\n const visit = (node: ts.Node): void => {\n if (ts.isClassDeclaration(node)) {\n const decs = ts.getDecorators(node);\n if (decs) {\n for (const dec of decs) {\n if (ts.isCallExpression(dec.expression) && ts.isIdentifier(dec.expression.expression) && dec.expression.expression.text === 'NgModule') {\n const declarations = extractArrayProperty(dec, 'declarations', source);\n modules.push({ path, declarations, decoratorPos: dec.getStart() });\n }\n }\n }\n }\n ts.forEachChild(node, visit);\n };\n visit(sf);\n });\n\n return modules;\n}\n\nfunction extractArrayProperty(decorator: ts.Decorator, propName: string, source: string): string[] {\n const call = decorator.expression as ts.CallExpression;\n if (!call.arguments[0] || !ts.isObjectLiteralExpression(call.arguments[0])) return [];\n for (const prop of call.arguments[0].properties) {\n if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name) && prop.name.text === propName) {\n if (ts.isArrayLiteralExpression(prop.initializer)) {\n return prop.initializer.elements\n .filter(ts.isIdentifier)\n .map(id => id.text);\n }\n }\n }\n return [];\n}\n\nfunction findDeclaringModule(modules: NgModuleInfo[], componentClassName: string): NgModuleInfo | undefined {\n return modules.find(m => m.declarations.includes(componentClassName));\n}\n\n// --- Import Addition ---\n\nfunction addImportsToFile(source: string, filePath: string, decoratorStartHint: number, imports: ImportToAdd[], useClassArray: boolean): string {\n const sf = ts.createSourceFile(filePath, source, ts.ScriptTarget.Latest, true);\n\n // Find the imports array in the decorator closest to decoratorStartHint\n const importsArrayInfo = findDecoratorImportsArray(sf, source, decoratorStartHint);\n if (!importsArrayInfo) return source;\n\n const { arrayNode, decoratorType } = importsArrayInfo;\n\n // Determine what's already in the imports array\n const existingSymbols = new Set<string>();\n const existingSpreads = new Set<string>();\n for (const el of arrayNode.elements) {\n if (ts.isSpreadElement(el) && ts.isIdentifier(el.expression)) {\n existingSpreads.add(el.expression.text);\n } else if (ts.isIdentifier(el)) {\n existingSymbols.add(el.text);\n }\n }\n\n // Filter out already-present imports and compute what to add/remove\n const toAdd: ImportToAdd[] = [];\n const toRemoveFromArray: string[] = []; // individual class names to consolidate\n\n for (const imp of imports) {\n if (imp.isSpread) {\n if (existingSpreads.has(imp.symbol)) continue; // Already has ...EUI_X\n toAdd.push(imp);\n // Consolidate: remove individual class names covered by this array\n if (useClassArray) {\n const coveredClasses = getClassNamesForArray(imp.symbol);\n for (const cls of coveredClasses) {\n if (existingSymbols.has(cls)) toRemoveFromArray.push(cls);\n }\n }\n } else {\n if (existingSymbols.has(imp.symbol)) continue;\n // Also skip if a spread already covers this class\n const coveringArray = imports.find(i => i.isSpread && getClassNamesForArray(i.symbol).includes(imp.symbol));\n if (coveringArray && (existingSpreads.has(coveringArray.symbol) || toAdd.some(a => a.symbol === coveringArray.symbol))) continue;\n toAdd.push(imp);\n }\n }\n\n if (toAdd.length === 0 && toRemoveFromArray.length === 0) return source;\n\n // Build new array content\n let result = source;\n result = updateDecoratorImportsArray(result, filePath, arrayNode, toAdd, toRemoveFromArray);\n\n // Add ES imports\n result = addEsImports(result, filePath, toAdd);\n\n // Remove consolidated class names from ES imports\n if (toRemoveFromArray.length > 0) {\n result = removeFromEsImports(result, filePath, toRemoveFromArray);\n }\n\n return result;\n}\n\ninterface ImportsArrayInfo {\n arrayNode: ts.ArrayLiteralExpression;\n decoratorType: 'Component' | 'NgModule';\n}\n\nfunction findDecoratorImportsArray(sf: ts.SourceFile, source: string, decoratorStartHint: number): ImportsArrayInfo | null {\n let found: ImportsArrayInfo | null = null;\n\n const visit = (node: ts.Node): void => {\n if (found) return;\n if (ts.isClassDeclaration(node)) {\n const decs = ts.getDecorators(node);\n if (!decs) return;\n for (const dec of decs) {\n if (!ts.isCallExpression(dec.expression)) continue;\n if (!ts.isIdentifier(dec.expression.expression)) continue;\n const decName = dec.expression.expression.text;\n if (decName !== 'Component' && decName !== 'NgModule') continue;\n if (Math.abs(dec.getStart() - decoratorStartHint) > 5) continue; // Match by position\n\n const metadata = dec.expression.arguments[0];\n if (!ts.isObjectLiteralExpression(metadata)) continue;\n\n for (const prop of metadata.properties) {\n if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name) && prop.name.text === 'imports') {\n if (ts.isArrayLiteralExpression(prop.initializer)) {\n found = { arrayNode: prop.initializer, decoratorType: decName as 'Component' | 'NgModule' };\n return;\n }\n }\n }\n\n // No imports array found — create one\n if (!found && decName === 'Component') {\n // We need to add `imports: []` to the decorator\n // Insert after the last property\n const lastProp = metadata.properties[metadata.properties.length - 1];\n if (lastProp) {\n const insertPos = lastProp.getEnd();\n const indent = detectIndent(source, metadata.getStart());\n const insertion = `,\\n${indent} imports: []`;\n const newSource = source.slice(0, insertPos) + insertion + source.slice(insertPos);\n // Re-parse to get the array node\n const newSf = ts.createSourceFile('', newSource, ts.ScriptTarget.Latest, true);\n const newArray = findImportsArrayInSource(newSf);\n if (newArray) {\n // We can't return a node from a different source file in the general case.\n // Instead, we'll handle the \"no imports array\" case by adding it inline.\n found = null; // Will be handled separately\n }\n }\n }\n }\n }\n ts.forEachChild(node, visit);\n };\n visit(sf);\n return found;\n}\n\nfunction findImportsArrayInSource(sf: ts.SourceFile): ts.ArrayLiteralExpression | null {\n let found: ts.ArrayLiteralExpression | null = null;\n const visit = (node: ts.Node): void => {\n if (found) return;\n if (ts.isPropertyAssignment(node) && ts.isIdentifier(node.name) && node.name.text === 'imports' && ts.isArrayLiteralExpression(node.initializer)) {\n found = node.initializer;\n }\n ts.forEachChild(node, visit);\n };\n visit(sf);\n return found;\n}\n\nfunction updateDecoratorImportsArray(source: string, filePath: string, arrayNode: ts.ArrayLiteralExpression, toAdd: ImportToAdd[], toRemove: string[]): string {\n const sf = ts.createSourceFile(filePath, source, ts.ScriptTarget.Latest, true);\n\n // Rebuild the array content\n const existingElements: string[] = [];\n for (const el of arrayNode.elements) {\n const text = source.slice(el.getStart(sf), el.getEnd()).trim();\n // Check if this element should be removed (consolidation)\n if (ts.isIdentifier(el) && toRemove.includes(el.text)) continue;\n existingElements.push(text);\n }\n\n // Add new entries\n for (const imp of toAdd) {\n const entry = imp.isSpread ? `...${imp.symbol}` : imp.symbol;\n if (!existingElements.includes(entry)) {\n existingElements.push(entry);\n }\n }\n\n // Determine formatting\n const arrayStart = arrayNode.getStart(sf);\n const arrayEnd = arrayNode.getEnd();\n const originalText = source.slice(arrayStart, arrayEnd);\n const isMultiline = originalText.includes('\\n');\n\n let newArrayText: string;\n if (isMultiline || existingElements.length > 3) {\n const indent = detectIndent(source, arrayStart);\n const itemIndent = indent + ' ';\n newArrayText = `[\\n${existingElements.map(e => `${itemIndent}${e},`).join('\\n')}\\n${indent}]`;\n } else {\n newArrayText = `[${existingElements.join(', ')}]`;\n }\n\n return source.slice(0, arrayStart) + newArrayText + source.slice(arrayEnd);\n}\n\nfunction addEsImports(source: string, filePath: string, imports: ImportToAdd[]): string {\n let result = source;\n\n // Group by import path\n const byPath = new Map<string, string[]>();\n for (const imp of imports) {\n const existing = byPath.get(imp.importPath) || [];\n existing.push(imp.symbol);\n byPath.set(imp.importPath, existing);\n }\n\n for (const [importPath, symbols] of byPath) {\n const sf = ts.createSourceFile(filePath, result, ts.ScriptTarget.Latest, true);\n\n // Check if there's already an import from this path\n const existingImport = sf.statements.find(\n (s): s is ts.ImportDeclaration =>\n ts.isImportDeclaration(s) && ts.isStringLiteral(s.moduleSpecifier) && s.moduleSpecifier.text === importPath,\n );\n\n if (existingImport?.importClause?.namedBindings && ts.isNamedImports(existingImport.importClause.namedBindings)) {\n // Extend existing import\n const namedBindings = existingImport.importClause.namedBindings;\n const existingNames = namedBindings.elements.map(el => el.name.text);\n const newNames = symbols.filter(s => !existingNames.includes(s));\n if (newNames.length === 0) continue;\n\n const allNames = [...existingNames, ...newNames].sort();\n const newClause = `{ ${allNames.join(', ')} }`;\n result = result.slice(0, namedBindings.getStart(sf)) + newClause + result.slice(namedBindings.getEnd());\n } else {\n // Add new import statement\n const sortedSymbols = [...symbols].sort();\n const newImport = `import { ${sortedSymbols.join(', ')} } from '${importPath}';\\n`;\n\n // Insert after the last existing import\n const lastImport = [...sf.statements].reverse().find(ts.isImportDeclaration);\n if (lastImport) {\n const pos = lastImport.getEnd();\n result = result.slice(0, pos) + '\\n' + newImport.trimEnd() + result.slice(pos);\n } else {\n result = newImport + result;\n }\n }\n }\n\n return result;\n}\n\nfunction detectIndent(source: string, pos: number): string {\n const lineStart = source.lastIndexOf('\\n', pos - 1) + 1;\n const match = source.slice(lineStart, pos).match(/^(\\s*)/);\n return match ? match[1] : '';\n}\n\nfunction removeFromEsImports(source: string, filePath: string, symbolsToRemove: string[]): string {\n let result = source;\n const sf = ts.createSourceFile(filePath, result, ts.ScriptTarget.Latest, true);\n\n for (const stmt of sf.statements) {\n if (!ts.isImportDeclaration(stmt) || !stmt.importClause?.namedBindings || !ts.isNamedImports(stmt.importClause.namedBindings)) continue;\n const namedBindings = stmt.importClause.namedBindings;\n const existingNames = namedBindings.elements.map(el => el.name.text);\n const remaining = existingNames.filter(n => !symbolsToRemove.includes(n));\n\n if (remaining.length === existingNames.length) continue; // Nothing to remove from this import\n\n if (remaining.length === 0) {\n // Remove the entire import statement\n result = result.slice(0, stmt.getStart(sf)) + result.slice(stmt.getEnd()).replace(/^\\r?\\n/, '');\n } else {\n const newClause = `{ ${remaining.join(', ')} }`;\n result = result.slice(0, namedBindings.getStart(sf)) + newClause + result.slice(namedBindings.getEnd());\n }\n break; // Only process the first matching import for the consolidated symbols\n }\n\n return result;\n}\n",
2148
+ "displayName": "Schema",
2149
+ "properties": [
2150
+ {
2151
+ "name": "dryRun",
2152
+ "coverageIgnore": false,
2153
+ "deprecated": false,
2154
+ "deprecationMessage": "",
2155
+ "type": "boolean",
2156
+ "indexKey": "",
2157
+ "optional": true,
2158
+ "description": "",
2159
+ "line": 9,
2160
+ "rawdescription": "\n"
2161
+ },
2162
+ {
2163
+ "name": "path",
2164
+ "coverageIgnore": false,
2165
+ "deprecated": false,
2166
+ "deprecationMessage": "",
2167
+ "type": "string",
2168
+ "indexKey": "",
2169
+ "optional": true,
2170
+ "description": "",
2171
+ "line": 8,
2172
+ "rawdescription": "\n"
2173
+ },
2174
+ {
2175
+ "name": "useClassArray",
2176
+ "coverageIgnore": false,
2177
+ "deprecated": false,
2178
+ "deprecationMessage": "",
2179
+ "type": "boolean",
2180
+ "indexKey": "",
2181
+ "optional": true,
2182
+ "description": "",
2183
+ "line": 10,
2184
+ "rawdescription": "\n"
2185
+ }
2186
+ ],
2187
+ "indexSignatures": [],
2188
+ "kind": 172,
2189
+ "methods": [],
2190
+ "extends": [],
2191
+ "relationships": {
2192
+ "incoming": [],
2193
+ "outgoing": []
2194
+ }
2195
+ },
2196
+ {
2197
+ "name": "Schema",
2198
+ "id": "interface-Schema-4fe31ff3e9f1d34845a6b865d605e215f33552094b88c3d0eab0b180187fe64ce4d68d687516cb3d62c57d2678a103969b2dacbb18a49b26060f78096678fcce-1",
2143
2199
  "file": "packages/core/schematics/fix-no-multiple-empty-lines/index.ts",
2144
2200
  "deprecated": false,
2145
2201
  "deprecationMessage": "",
@@ -2176,6 +2232,9 @@
2176
2232
  "kind": 172,
2177
2233
  "methods": [],
2178
2234
  "extends": [],
2235
+ "isDuplicate": true,
2236
+ "duplicateId": 1,
2237
+ "duplicateName": "Schema-1",
2179
2238
  "relationships": {
2180
2239
  "incoming": [],
2181
2240
  "outgoing": []
@@ -2183,7 +2242,7 @@
2183
2242
  },
2184
2243
  {
2185
2244
  "name": "Schema",
2186
- "id": "interface-Schema-5cd6db1920bd5b70a44c0b8a7f7e30f600bfd16a9950f218e6d451a1755ced95b462ef9a62ee87e39bcb8c392981b8d2597895bf0a272fd8aea71f03429ed976-1",
2245
+ "id": "interface-Schema-5cd6db1920bd5b70a44c0b8a7f7e30f600bfd16a9950f218e6d451a1755ced95b462ef9a62ee87e39bcb8c392981b8d2597895bf0a272fd8aea71f03429ed976-2",
2187
2246
  "file": "packages/core/schematics/icon-migrate/schema.ts",
2188
2247
  "deprecated": false,
2189
2248
  "deprecationMessage": "",
@@ -2221,8 +2280,8 @@
2221
2280
  "methods": [],
2222
2281
  "extends": [],
2223
2282
  "isDuplicate": true,
2224
- "duplicateId": 1,
2225
- "duplicateName": "Schema-1",
2283
+ "duplicateId": 2,
2284
+ "duplicateName": "Schema-2",
2226
2285
  "relationships": {
2227
2286
  "incoming": [],
2228
2287
  "outgoing": []
@@ -2230,7 +2289,7 @@
2230
2289
  },
2231
2290
  {
2232
2291
  "name": "Schema",
2233
- "id": "interface-Schema-56b9fe60701ca349dc90e152829b0a18bb7a8a9bb303c4bac05f9764cd2e933cce0879775ca17168b4c881e202d0258af3668a2a3a1b940e561f7e4b2349b5cc-2",
2292
+ "id": "interface-Schema-56b9fe60701ca349dc90e152829b0a18bb7a8a9bb303c4bac05f9764cd2e933cce0879775ca17168b4c881e202d0258af3668a2a3a1b940e561f7e4b2349b5cc-3",
2234
2293
  "file": "packages/core/schematics/migrate/schema.ts",
2235
2294
  "deprecated": false,
2236
2295
  "deprecationMessage": "",
@@ -2280,8 +2339,8 @@
2280
2339
  "methods": [],
2281
2340
  "extends": [],
2282
2341
  "isDuplicate": true,
2283
- "duplicateId": 2,
2284
- "duplicateName": "Schema-2",
2342
+ "duplicateId": 3,
2343
+ "duplicateName": "Schema-3",
2285
2344
  "relationships": {
2286
2345
  "incoming": [],
2287
2346
  "outgoing": []
@@ -2289,7 +2348,7 @@
2289
2348
  },
2290
2349
  {
2291
2350
  "name": "Schema",
2292
- "id": "interface-Schema-e96d29c1785a16147de773cebe7ab5d4ed82aa23c6b1f7737113252a14d156e236f46f7a16340432dec900b664c8005be0aef5d0a628c2f5b8dd2ec7e41edf56-3",
2351
+ "id": "interface-Schema-e96d29c1785a16147de773cebe7ab5d4ed82aa23c6b1f7737113252a14d156e236f46f7a16340432dec900b664c8005be0aef5d0a628c2f5b8dd2ec7e41edf56-4",
2293
2352
  "file": "packages/core/schematics/migrate-eui-accent/index.ts",
2294
2353
  "deprecated": false,
2295
2354
  "deprecationMessage": "",
@@ -2327,8 +2386,8 @@
2327
2386
  "methods": [],
2328
2387
  "extends": [],
2329
2388
  "isDuplicate": true,
2330
- "duplicateId": 3,
2331
- "duplicateName": "Schema-3",
2389
+ "duplicateId": 4,
2390
+ "duplicateName": "Schema-4",
2332
2391
  "relationships": {
2333
2392
  "incoming": [],
2334
2393
  "outgoing": []
@@ -2336,7 +2395,7 @@
2336
2395
  },
2337
2396
  {
2338
2397
  "name": "Schema",
2339
- "id": "interface-Schema-585b211d989563bbec5bd67bcdb58d5f264396adbe0ed2e51d0b4a0ecaf8b3ec36d821647c170d616bb409fc603c5a4c0e699eb7511e02c6add8d8670fc9cb9f-4",
2398
+ "id": "interface-Schema-585b211d989563bbec5bd67bcdb58d5f264396adbe0ed2e51d0b4a0ecaf8b3ec36d821647c170d616bb409fc603c5a4c0e699eb7511e02c6add8d8670fc9cb9f-5",
2340
2399
  "file": "packages/core/schematics/migrate-eui-alert/index.ts",
2341
2400
  "deprecated": false,
2342
2401
  "deprecationMessage": "",
@@ -2374,8 +2433,8 @@
2374
2433
  "methods": [],
2375
2434
  "extends": [],
2376
2435
  "isDuplicate": true,
2377
- "duplicateId": 4,
2378
- "duplicateName": "Schema-4",
2436
+ "duplicateId": 5,
2437
+ "duplicateName": "Schema-5",
2379
2438
  "relationships": {
2380
2439
  "incoming": [],
2381
2440
  "outgoing": []
@@ -2383,7 +2442,7 @@
2383
2442
  },
2384
2443
  {
2385
2444
  "name": "Schema",
2386
- "id": "interface-Schema-c7e2cc0add09c97d83ec2675d59c86951681f8e2d49f133fb2f216ca98d0da1fdf892d45af31f19ecbbfd0d32f4ad70dd99e862f75725d3812f66a73ec34362c-5",
2445
+ "id": "interface-Schema-c7e2cc0add09c97d83ec2675d59c86951681f8e2d49f133fb2f216ca98d0da1fdf892d45af31f19ecbbfd0d32f4ad70dd99e862f75725d3812f66a73ec34362c-6",
2387
2446
  "file": "packages/core/schematics/migrate-eui-avatar/index.ts",
2388
2447
  "deprecated": false,
2389
2448
  "deprecationMessage": "",
@@ -2421,8 +2480,8 @@
2421
2480
  "methods": [],
2422
2481
  "extends": [],
2423
2482
  "isDuplicate": true,
2424
- "duplicateId": 5,
2425
- "duplicateName": "Schema-5",
2483
+ "duplicateId": 6,
2484
+ "duplicateName": "Schema-6",
2426
2485
  "relationships": {
2427
2486
  "incoming": [],
2428
2487
  "outgoing": []
@@ -2430,7 +2489,7 @@
2430
2489
  },
2431
2490
  {
2432
2491
  "name": "Schema",
2433
- "id": "interface-Schema-c0c08f5e83da9afa13ce8375f982fb280b9bde854e00c914f41b04d44deecd531496c2cee264b50314e92a6260c26cebe35741a2cf5ec068d8b6da5c5267539e-6",
2492
+ "id": "interface-Schema-c0c08f5e83da9afa13ce8375f982fb280b9bde854e00c914f41b04d44deecd531496c2cee264b50314e92a6260c26cebe35741a2cf5ec068d8b6da5c5267539e-7",
2434
2493
  "file": "packages/core/schematics/migrate-eui-button/index.ts",
2435
2494
  "deprecated": false,
2436
2495
  "deprecationMessage": "",
@@ -2468,8 +2527,8 @@
2468
2527
  "methods": [],
2469
2528
  "extends": [],
2470
2529
  "isDuplicate": true,
2471
- "duplicateId": 6,
2472
- "duplicateName": "Schema-6",
2530
+ "duplicateId": 7,
2531
+ "duplicateName": "Schema-7",
2473
2532
  "relationships": {
2474
2533
  "incoming": [],
2475
2534
  "outgoing": []
@@ -2477,7 +2536,7 @@
2477
2536
  },
2478
2537
  {
2479
2538
  "name": "Schema",
2480
- "id": "interface-Schema-39d3d52e788050bebc4e0b99ed0756f7e9727556cb090ae8796bd4261a56463fe1f479c322b23028cd4134d71e4d1dc44cd248ac62a9a148b5fc46a665466f7c-7",
2539
+ "id": "interface-Schema-39d3d52e788050bebc4e0b99ed0756f7e9727556cb090ae8796bd4261a56463fe1f479c322b23028cd4134d71e4d1dc44cd248ac62a9a148b5fc46a665466f7c-8",
2481
2540
  "file": "packages/core/schematics/migrate-eui-chip/index.ts",
2482
2541
  "deprecated": false,
2483
2542
  "deprecationMessage": "",
@@ -2515,8 +2574,8 @@
2515
2574
  "methods": [],
2516
2575
  "extends": [],
2517
2576
  "isDuplicate": true,
2518
- "duplicateId": 7,
2519
- "duplicateName": "Schema-7",
2577
+ "duplicateId": 8,
2578
+ "duplicateName": "Schema-8",
2520
2579
  "relationships": {
2521
2580
  "incoming": [],
2522
2581
  "outgoing": []
@@ -2524,7 +2583,7 @@
2524
2583
  },
2525
2584
  {
2526
2585
  "name": "Schema",
2527
- "id": "interface-Schema-311bef7d5e4b40b356b0fdb5e35dd89e48a5c5beec29eeb865c22c2ca1c4c4fb1fd0bb4391ed0b33825a6d1d744bc3a2e9822b347fbc686a537e15b170c279dd-8",
2586
+ "id": "interface-Schema-311bef7d5e4b40b356b0fdb5e35dd89e48a5c5beec29eeb865c22c2ca1c4c4fb1fd0bb4391ed0b33825a6d1d744bc3a2e9822b347fbc686a537e15b170c279dd-9",
2528
2587
  "file": "packages/core/schematics/migrate-eui-chip-list/index.ts",
2529
2588
  "deprecated": false,
2530
2589
  "deprecationMessage": "",
@@ -2562,8 +2621,8 @@
2562
2621
  "methods": [],
2563
2622
  "extends": [],
2564
2623
  "isDuplicate": true,
2565
- "duplicateId": 8,
2566
- "duplicateName": "Schema-8",
2624
+ "duplicateId": 9,
2625
+ "duplicateName": "Schema-9",
2567
2626
  "relationships": {
2568
2627
  "incoming": [],
2569
2628
  "outgoing": []
@@ -2571,7 +2630,7 @@
2571
2630
  },
2572
2631
  {
2573
2632
  "name": "Schema",
2574
- "id": "interface-Schema-869dfc324e9111966817cbebb3553eabfe200acfe33bb77efa71a6c46e1cba0ff5852de7b9ade3060f87264035b99591361331a9e0622daaac22b8d59146c761-9",
2633
+ "id": "interface-Schema-869dfc324e9111966817cbebb3553eabfe200acfe33bb77efa71a6c46e1cba0ff5852de7b9ade3060f87264035b99591361331a9e0622daaac22b8d59146c761-10",
2575
2634
  "file": "packages/core/schematics/migrate-eui-discussion-thread/index.ts",
2576
2635
  "deprecated": false,
2577
2636
  "deprecationMessage": "",
@@ -2609,8 +2668,8 @@
2609
2668
  "methods": [],
2610
2669
  "extends": [],
2611
2670
  "isDuplicate": true,
2612
- "duplicateId": 9,
2613
- "duplicateName": "Schema-9",
2671
+ "duplicateId": 10,
2672
+ "duplicateName": "Schema-10",
2614
2673
  "relationships": {
2615
2674
  "incoming": [],
2616
2675
  "outgoing": []
@@ -2618,7 +2677,7 @@
2618
2677
  },
2619
2678
  {
2620
2679
  "name": "Schema",
2621
- "id": "interface-Schema-375dc0924084a2acbafe4a6a32577d59f631c9a386d151180d8fb1c89e7e7cd23da9fd459e597592ed823692adb6ad2633c50baf16621f003246e8c9bb1c6ce0-10",
2680
+ "id": "interface-Schema-375dc0924084a2acbafe4a6a32577d59f631c9a386d151180d8fb1c89e7e7cd23da9fd459e597592ed823692adb6ad2633c50baf16621f003246e8c9bb1c6ce0-11",
2622
2681
  "file": "packages/core/schematics/migrate-eui-editor/index.ts",
2623
2682
  "deprecated": false,
2624
2683
  "deprecationMessage": "",
@@ -2656,8 +2715,8 @@
2656
2715
  "methods": [],
2657
2716
  "extends": [],
2658
2717
  "isDuplicate": true,
2659
- "duplicateId": 10,
2660
- "duplicateName": "Schema-10",
2718
+ "duplicateId": 11,
2719
+ "duplicateName": "Schema-11",
2661
2720
  "relationships": {
2662
2721
  "incoming": [],
2663
2722
  "outgoing": []
@@ -2665,7 +2724,7 @@
2665
2724
  },
2666
2725
  {
2667
2726
  "name": "Schema",
2668
- "id": "interface-Schema-0ee574e11dd651dd971057cb66220845e5b87b2949c69c623c8ddf7355af92a396c58c237a52a05f18c22a5332a2695b717bcfeb8ea840c4e7df8d0084c2b49c-11",
2727
+ "id": "interface-Schema-0ee574e11dd651dd971057cb66220845e5b87b2949c69c623c8ddf7355af92a396c58c237a52a05f18c22a5332a2695b717bcfeb8ea840c4e7df8d0084c2b49c-12",
2669
2728
  "file": "packages/core/schematics/migrate-eui-fieldset/index.ts",
2670
2729
  "deprecated": false,
2671
2730
  "deprecationMessage": "",
@@ -2703,8 +2762,8 @@
2703
2762
  "methods": [],
2704
2763
  "extends": [],
2705
2764
  "isDuplicate": true,
2706
- "duplicateId": 11,
2707
- "duplicateName": "Schema-11",
2765
+ "duplicateId": 12,
2766
+ "duplicateName": "Schema-12",
2708
2767
  "relationships": {
2709
2768
  "incoming": [],
2710
2769
  "outgoing": []
@@ -2712,7 +2771,7 @@
2712
2771
  },
2713
2772
  {
2714
2773
  "name": "Schema",
2715
- "id": "interface-Schema-b3ff4600c4a5ca1888c45e5baf3600fa6dc6477f1e473e5241ff6682e2929dc8950a5dfa8b1048a348dba7ad1f0ce8cc3681471933911b689e04713334ef4811-12",
2774
+ "id": "interface-Schema-b3ff4600c4a5ca1888c45e5baf3600fa6dc6477f1e473e5241ff6682e2929dc8950a5dfa8b1048a348dba7ad1f0ce8cc3681471933911b689e04713334ef4811-13",
2716
2775
  "file": "packages/core/schematics/migrate-eui-icon-svg/index.ts",
2717
2776
  "deprecated": false,
2718
2777
  "deprecationMessage": "",
@@ -2750,8 +2809,8 @@
2750
2809
  "methods": [],
2751
2810
  "extends": [],
2752
2811
  "isDuplicate": true,
2753
- "duplicateId": 12,
2754
- "duplicateName": "Schema-12",
2812
+ "duplicateId": 13,
2813
+ "duplicateName": "Schema-13",
2755
2814
  "relationships": {
2756
2815
  "incoming": [],
2757
2816
  "outgoing": []
@@ -2759,7 +2818,7 @@
2759
2818
  },
2760
2819
  {
2761
2820
  "name": "Schema",
2762
- "id": "interface-Schema-21147930d3fbc38fbb3052a2ed9e7aa2b7505e6ed8c88c28796ce7101bd2ad914726eb230dda5826647036190edec6dae7e7e1d172387cd3803aa00bcdf790be-13",
2821
+ "id": "interface-Schema-21147930d3fbc38fbb3052a2ed9e7aa2b7505e6ed8c88c28796ce7101bd2ad914726eb230dda5826647036190edec6dae7e7e1d172387cd3803aa00bcdf790be-14",
2763
2822
  "file": "packages/core/schematics/migrate-eui-icon-toggle/index.ts",
2764
2823
  "deprecated": false,
2765
2824
  "deprecationMessage": "",
@@ -2797,8 +2856,8 @@
2797
2856
  "methods": [],
2798
2857
  "extends": [],
2799
2858
  "isDuplicate": true,
2800
- "duplicateId": 13,
2801
- "duplicateName": "Schema-13",
2859
+ "duplicateId": 14,
2860
+ "duplicateName": "Schema-14",
2802
2861
  "relationships": {
2803
2862
  "incoming": [],
2804
2863
  "outgoing": []
@@ -2806,7 +2865,7 @@
2806
2865
  },
2807
2866
  {
2808
2867
  "name": "Schema",
2809
- "id": "interface-Schema-a806c1769fb526271565003a6a3ef9ab4c67e421d93ee0cb54e1f6de223807afc1f16ad294656ef614a77a91a38cc914ce41ac97ed3a8a4195a1e74a729c0c08-14",
2868
+ "id": "interface-Schema-a806c1769fb526271565003a6a3ef9ab4c67e421d93ee0cb54e1f6de223807afc1f16ad294656ef614a77a91a38cc914ce41ac97ed3a8a4195a1e74a729c0c08-15",
2810
2869
  "file": "packages/core/schematics/migrate-eui-popover/index.ts",
2811
2870
  "deprecated": false,
2812
2871
  "deprecationMessage": "",
@@ -2844,8 +2903,8 @@
2844
2903
  "methods": [],
2845
2904
  "extends": [],
2846
2905
  "isDuplicate": true,
2847
- "duplicateId": 14,
2848
- "duplicateName": "Schema-14",
2906
+ "duplicateId": 15,
2907
+ "duplicateName": "Schema-15",
2849
2908
  "relationships": {
2850
2909
  "incoming": [],
2851
2910
  "outgoing": []
@@ -2853,7 +2912,7 @@
2853
2912
  },
2854
2913
  {
2855
2914
  "name": "Schema",
2856
- "id": "interface-Schema-90e62c16ce9ada881e8d434336bb633dae9745236106ddf60964afbd11de6aa579255a13d6036b384281860eb6ed2ee329194b519c51fdaf20f79bc511d0f64f-15",
2915
+ "id": "interface-Schema-90e62c16ce9ada881e8d434336bb633dae9745236106ddf60964afbd11de6aa579255a13d6036b384281860eb6ed2ee329194b519c51fdaf20f79bc511d0f64f-16",
2857
2916
  "file": "packages/core/schematics/migrate-eui-progress-circle/index.ts",
2858
2917
  "deprecated": false,
2859
2918
  "deprecationMessage": "",
@@ -2891,8 +2950,8 @@
2891
2950
  "methods": [],
2892
2951
  "extends": [],
2893
2952
  "isDuplicate": true,
2894
- "duplicateId": 15,
2895
- "duplicateName": "Schema-15",
2953
+ "duplicateId": 16,
2954
+ "duplicateName": "Schema-16",
2896
2955
  "relationships": {
2897
2956
  "incoming": [],
2898
2957
  "outgoing": []
@@ -2900,7 +2959,7 @@
2900
2959
  },
2901
2960
  {
2902
2961
  "name": "Schema",
2903
- "id": "interface-Schema-91c9f900bf3ebb82488fb65644938ef486ceaa447cff8bfd9d710df9595d82acb267b26f3c252173bc684353f362473120226426ed7ee5d98b33e30011dd9383-16",
2962
+ "id": "interface-Schema-91c9f900bf3ebb82488fb65644938ef486ceaa447cff8bfd9d710df9595d82acb267b26f3c252173bc684353f362473120226426ed7ee5d98b33e30011dd9383-17",
2904
2963
  "file": "packages/core/schematics/migrate-eui-table/index.ts",
2905
2964
  "deprecated": false,
2906
2965
  "deprecationMessage": "",
@@ -2938,8 +2997,8 @@
2938
2997
  "methods": [],
2939
2998
  "extends": [],
2940
2999
  "isDuplicate": true,
2941
- "duplicateId": 16,
2942
- "duplicateName": "Schema-16",
3000
+ "duplicateId": 17,
3001
+ "duplicateName": "Schema-17",
2943
3002
  "relationships": {
2944
3003
  "incoming": [],
2945
3004
  "outgoing": []
@@ -2947,7 +3006,7 @@
2947
3006
  },
2948
3007
  {
2949
3008
  "name": "Schema",
2950
- "id": "interface-Schema-760dec88d3f709d5b38226e55f7cbfb1e5fabcea6c004fd46e611be1dd563b8b247e9e6c77667e5582fe7b443374ba2c4facd2b2db2985edb46c9a4a37a8a876-17",
3009
+ "id": "interface-Schema-760dec88d3f709d5b38226e55f7cbfb1e5fabcea6c004fd46e611be1dd563b8b247e9e6c77667e5582fe7b443374ba2c4facd2b2db2985edb46c9a4a37a8a876-18",
2951
3010
  "file": "packages/core/schematics/migrate-eui-tabs/index.ts",
2952
3011
  "deprecated": false,
2953
3012
  "deprecationMessage": "",
@@ -2985,8 +3044,8 @@
2985
3044
  "methods": [],
2986
3045
  "extends": [],
2987
3046
  "isDuplicate": true,
2988
- "duplicateId": 17,
2989
- "duplicateName": "Schema-17",
3047
+ "duplicateId": 18,
3048
+ "duplicateName": "Schema-18",
2990
3049
  "relationships": {
2991
3050
  "incoming": [],
2992
3051
  "outgoing": []
@@ -2994,7 +3053,7 @@
2994
3053
  },
2995
3054
  {
2996
3055
  "name": "Schema",
2997
- "id": "interface-Schema-e1cd02924eb82a618c71a0b26c081bdd020519d2699aa0e2dc98640c4e0f347c3649b967c5fc87543e41bbbfabd1304835850ccc38f40684d6521c242b2030ed-18",
3056
+ "id": "interface-Schema-e1cd02924eb82a618c71a0b26c081bdd020519d2699aa0e2dc98640c4e0f347c3649b967c5fc87543e41bbbfabd1304835850ccc38f40684d6521c242b2030ed-19",
2998
3057
  "file": "packages/core/schematics/migrate-eui-toolbar-menu/index.ts",
2999
3058
  "deprecated": false,
3000
3059
  "deprecationMessage": "",
@@ -3032,8 +3091,8 @@
3032
3091
  "methods": [],
3033
3092
  "extends": [],
3034
3093
  "isDuplicate": true,
3035
- "duplicateId": 18,
3036
- "duplicateName": "Schema-18",
3094
+ "duplicateId": 19,
3095
+ "duplicateName": "Schema-19",
3037
3096
  "relationships": {
3038
3097
  "incoming": [],
3039
3098
  "outgoing": []
@@ -3041,7 +3100,7 @@
3041
3100
  },
3042
3101
  {
3043
3102
  "name": "Schema",
3044
- "id": "interface-Schema-d36032102ed30a7ada1e3d36bb9ca41b7234b855760cac9783a25818f7ffe2097e1ebd8e808b574ddec0760f827272f6cd561f45f3eb1578f87f39ee2633730a-19",
3103
+ "id": "interface-Schema-d36032102ed30a7ada1e3d36bb9ca41b7234b855760cac9783a25818f7ffe2097e1ebd8e808b574ddec0760f827272f6cd561f45f3eb1578f87f39ee2633730a-20",
3045
3104
  "file": "packages/core/schematics/migrate-eui-tooltip/index.ts",
3046
3105
  "deprecated": false,
3047
3106
  "deprecationMessage": "",
@@ -3079,8 +3138,8 @@
3079
3138
  "methods": [],
3080
3139
  "extends": [],
3081
3140
  "isDuplicate": true,
3082
- "duplicateId": 19,
3083
- "duplicateName": "Schema-19",
3141
+ "duplicateId": 20,
3142
+ "duplicateName": "Schema-20",
3084
3143
  "relationships": {
3085
3144
  "incoming": [],
3086
3145
  "outgoing": []
@@ -3088,7 +3147,7 @@
3088
3147
  },
3089
3148
  {
3090
3149
  "name": "Schema",
3091
- "id": "interface-Schema-cac2ac952d8245647e8a48b450e8f127a36bcffb394cf2cd81fe9c0810ed02c19e5e1629dbf29a68a5c6f675aed99570e9ac04ae470e13315e20c92cc0c6c453-20",
3150
+ "id": "interface-Schema-cac2ac952d8245647e8a48b450e8f127a36bcffb394cf2cd81fe9c0810ed02c19e5e1629dbf29a68a5c6f675aed99570e9ac04ae470e13315e20c92cc0c6c453-21",
3092
3151
  "file": "packages/core/schematics/migrate-to-signals/index.ts",
3093
3152
  "deprecated": false,
3094
3153
  "deprecationMessage": "",
@@ -3126,8 +3185,8 @@
3126
3185
  "methods": [],
3127
3186
  "extends": [],
3128
3187
  "isDuplicate": true,
3129
- "duplicateId": 20,
3130
- "duplicateName": "Schema-20",
3188
+ "duplicateId": 21,
3189
+ "duplicateName": "Schema-21",
3131
3190
  "relationships": {
3132
3191
  "incoming": [],
3133
3192
  "outgoing": []
@@ -3135,7 +3194,7 @@
3135
3194
  },
3136
3195
  {
3137
3196
  "name": "Schema",
3138
- "id": "interface-Schema-817c4b549cc3eab9fcf4936acab2e71182d90a4480369f5c003cbbda10792efa587ad99d65acf049f64e7030e32589e4fabc4a6d7a5621e4fe54725ef91dc9e8-21",
3197
+ "id": "interface-Schema-817c4b549cc3eab9fcf4936acab2e71182d90a4480369f5c003cbbda10792efa587ad99d65acf049f64e7030e32589e4fabc4a6d7a5621e4fe54725ef91dc9e8-22",
3139
3198
  "file": "packages/core/schematics/migrate-to-standalone/index.ts",
3140
3199
  "deprecated": false,
3141
3200
  "deprecationMessage": "",
@@ -3173,65 +3232,6 @@
3173
3232
  "methods": [],
3174
3233
  "extends": [],
3175
3234
  "isDuplicate": true,
3176
- "duplicateId": 21,
3177
- "duplicateName": "Schema-21",
3178
- "relationships": {
3179
- "incoming": [],
3180
- "outgoing": []
3181
- }
3182
- },
3183
- {
3184
- "name": "Schema",
3185
- "id": "interface-Schema-9c5e016857e1416ac7bbb881973e644c0f578a53bd432bb951c1676ac3f2a6631bfe3344860346a081b841217278723e0bb0bf2fa35fb869de67cb0cc8d99849-22",
3186
- "file": "packages/core/schematics/add-eui-imports/index.ts",
3187
- "deprecated": false,
3188
- "deprecationMessage": "",
3189
- "type": "interface",
3190
- "sourceCode": "import { parseTemplate, TmplAstElement, TmplAstNode, TmplAstTemplate } from '@angular/compiler';\nimport { DirEntry, Rule, SchematicContext, Tree } from '@angular-devkit/schematics';\nimport * as ts from 'typescript';\nimport { logDryRun, logDryRunNote } from '../utils/dry-run';\nimport { SELECTOR_MAP, SelectorEntry, getClassNamesForArray } from './selector-map';\n\ninterface Schema {\n path?: string;\n dryRun?: boolean;\n useClassArray?: boolean;\n}\n\ninterface ImportToAdd {\n /** The symbol to add to imports array (class name or array name for spread) */\n symbol: string;\n /** Whether this should be spread (...EUI_BUTTON) */\n isSpread: boolean;\n /** ES import path */\n importPath: string;\n}\n\nexport function addEuiImports(options: Schema = {}): Rule {\n return (tree: Tree, context: SchematicContext) => {\n const scanPath = options.path ? '/' + options.path.replace(/^\\.?\\//, '').replace(/\\/$/, '') : '';\n const useClassArray = options.useClassArray ?? false;\n let filesUpdated = 0;\n\n // Index NgModules for standalone:false support\n const ngModuleIndex = buildNgModuleIndex(tree, tree.getDir(scanPath || '/'));\n\n visitDir(tree.getDir(scanPath || '/'), (path) => {\n if (!path.endsWith('.ts') || path.endsWith('.spec.ts')) return;\n\n const buffer = tree.read(path);\n if (!buffer) return;\n const source = buffer.toString('utf-8');\n\n const sourceFile = ts.createSourceFile(path, source, ts.ScriptTarget.Latest, true);\n const components = findComponentDecorators(sourceFile);\n if (components.length === 0) return;\n\n let modified = false;\n\n for (const { decorator, className: componentClassName, isNonStandalone } of components) {\n const templateHtml = getTemplateContent(tree, path, decorator, source);\n if (!templateHtml) continue;\n\n const matched = matchSelectorsInTemplate(templateHtml);\n if (matched.length === 0) continue;\n\n const importsToAdd = resolveImports(matched, useClassArray);\n if (importsToAdd.length === 0) continue;\n\n if (isNonStandalone) {\n // Find the NgModule that declares this component and add imports there\n const moduleInfo = findDeclaringModule(ngModuleIndex, componentClassName);\n if (!moduleInfo) {\n context.logger.warn(`⚠ Could not find declaring NgModule for ${componentClassName} in ${path}`);\n continue;\n }\n const moduleBuffer = tree.read(moduleInfo.path);\n if (!moduleBuffer) continue;\n const moduleSource = moduleBuffer.toString('utf-8');\n const result = addImportsToFile(moduleSource, moduleInfo.path, moduleInfo.decoratorPos, importsToAdd, useClassArray);\n if (result !== moduleSource) {\n if (options.dryRun) {\n logDryRun(context, `Would add EUI imports to NgModule in ${moduleInfo.path} for component ${componentClassName}`);\n } else {\n tree.overwrite(moduleInfo.path, result);\n }\n modified = true;\n }\n } else {\n // Standalone component — add imports directly\n const currentSource = tree.read(path)!.toString('utf-8');\n const result = addImportsToFile(currentSource, path, decorator.getStart(), importsToAdd, useClassArray);\n if (result !== currentSource) {\n if (options.dryRun) {\n logDryRun(context, `Would add EUI imports to ${path}`);\n } else {\n tree.overwrite(path, result);\n }\n modified = true;\n }\n }\n }\n\n if (modified) filesUpdated++;\n });\n\n context.logger.info(`add-eui-imports: ${filesUpdated} file(s) updated.`);\n if (options.dryRun) logDryRunNote(context);\n return tree;\n };\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('.html') && !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\n// --- Selector Matching ---\n\nfunction matchSelectorsInTemplate(html: string): SelectorEntry[] {\n const parsed = parseTemplate(html, '', { preserveWhitespaces: true });\n if (parsed.errors?.length) return [];\n\n const matched: SelectorEntry[] = [];\n visitTemplateNodes(parsed.nodes, matched);\n return matched;\n}\n\nfunction visitTemplateNodes(nodes: TmplAstNode[], matched: SelectorEntry[]): void {\n for (const node of nodes) {\n if (node instanceof TmplAstElement) {\n matchElement(node, matched);\n visitTemplateNodes(node.children, matched);\n } else if (node instanceof TmplAstTemplate) {\n visitTemplateNodes(node.children, matched);\n }\n }\n}\n\nfunction matchElement(element: TmplAstElement, matched: SelectorEntry[]): void {\n const tagName = element.name;\n const attrNames = new Set([\n ...element.attributes.map(a => a.name),\n ...element.inputs.map(i => i.name),\n ]);\n\n for (const entry of SELECTOR_MAP) {\n if (entry.element && entry.element !== tagName) continue;\n if (!entry.element && entry.attributes.length === 0) continue;\n if (!entry.attributes.every(attr => attrNames.has(attr))) continue;\n // If no element specified, at least one attribute must match on this element\n if (!entry.element && entry.attributes.length > 0 && !entry.attributes.some(attr => attrNames.has(attr))) continue;\n matched.push(entry);\n }\n}\n\n// --- Import Resolution ---\n\nfunction resolveImports(matched: SelectorEntry[], useClassArray: boolean): ImportToAdd[] {\n const seen = new Set<string>();\n const result: ImportToAdd[] = [];\n\n for (const entry of matched) {\n if (useClassArray && entry.classArray) {\n if (seen.has(entry.classArray)) continue;\n seen.add(entry.classArray);\n result.push({ symbol: entry.classArray, isSpread: true, importPath: entry.importPath });\n } else {\n if (seen.has(entry.className)) continue;\n seen.add(entry.className);\n result.push({ symbol: entry.className, isSpread: false, importPath: entry.importPath });\n }\n }\n\n return result;\n}\n\n// --- Template Extraction ---\n\nfunction getTemplateContent(tree: Tree, tsPath: string, decorator: ts.Decorator, source: string): string | null {\n const call = decorator.expression as ts.CallExpression;\n if (!call.arguments[0] || !ts.isObjectLiteralExpression(call.arguments[0])) return null;\n const metadata = call.arguments[0];\n\n for (const prop of metadata.properties) {\n if (!ts.isPropertyAssignment(prop) || !ts.isIdentifier(prop.name)) continue;\n if (prop.name.text === 'template') {\n const init = prop.initializer;\n if (ts.isStringLiteral(init) || ts.isNoSubstitutionTemplateLiteral(init)) {\n return init.text;\n }\n }\n if (prop.name.text === 'templateUrl') {\n if (ts.isStringLiteral(prop.initializer)) {\n const dir = tsPath.substring(0, tsPath.lastIndexOf('/'));\n const templateBuffer = tree.read(`${dir}/${prop.initializer.text}`);\n if (templateBuffer) return templateBuffer.toString('utf-8');\n }\n }\n }\n return null;\n}\n\n// --- Component Decorator Detection ---\n\ninterface ComponentInfo {\n decorator: ts.Decorator;\n className: string;\n isNonStandalone: boolean;\n}\n\nfunction findComponentDecorators(sourceFile: ts.SourceFile): ComponentInfo[] {\n const results: ComponentInfo[] = [];\n const visit = (node: ts.Node): void => {\n if (ts.isClassDeclaration(node) && node.name) {\n const decs = ts.getDecorators(node);\n if (decs) {\n for (const dec of decs) {\n if (ts.isCallExpression(dec.expression) && ts.isIdentifier(dec.expression.expression) && dec.expression.expression.text === 'Component') {\n const isNonStandalone = hasStandaloneFalse(dec);\n results.push({ decorator: dec, className: node.name.text, isNonStandalone });\n }\n }\n }\n }\n ts.forEachChild(node, visit);\n };\n visit(sourceFile);\n return results;\n}\n\nfunction hasStandaloneFalse(decorator: ts.Decorator): boolean {\n const call = decorator.expression as ts.CallExpression;\n if (!call.arguments[0] || !ts.isObjectLiteralExpression(call.arguments[0])) return false;\n for (const prop of call.arguments[0].properties) {\n if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name) && prop.name.text === 'standalone') {\n return prop.initializer.kind === ts.SyntaxKind.FalseKeyword;\n }\n }\n return false;\n}\n\n// --- NgModule Index ---\n\ninterface NgModuleInfo {\n path: string;\n declarations: string[];\n decoratorPos: number;\n}\n\nfunction buildNgModuleIndex(tree: Tree, dir: DirEntry): NgModuleInfo[] {\n const modules: NgModuleInfo[] = [];\n\n visitDir(dir, (path) => {\n if (!path.endsWith('.ts') || path.endsWith('.spec.ts')) return;\n\n const buffer = tree.read(path);\n if (!buffer) return;\n const source = buffer.toString('utf-8');\n if (!source.includes('NgModule')) return;\n\n const sf = ts.createSourceFile(path, source, ts.ScriptTarget.Latest, true);\n const visit = (node: ts.Node): void => {\n if (ts.isClassDeclaration(node)) {\n const decs = ts.getDecorators(node);\n if (decs) {\n for (const dec of decs) {\n if (ts.isCallExpression(dec.expression) && ts.isIdentifier(dec.expression.expression) && dec.expression.expression.text === 'NgModule') {\n const declarations = extractArrayProperty(dec, 'declarations', source);\n modules.push({ path, declarations, decoratorPos: dec.getStart() });\n }\n }\n }\n }\n ts.forEachChild(node, visit);\n };\n visit(sf);\n });\n\n return modules;\n}\n\nfunction extractArrayProperty(decorator: ts.Decorator, propName: string, source: string): string[] {\n const call = decorator.expression as ts.CallExpression;\n if (!call.arguments[0] || !ts.isObjectLiteralExpression(call.arguments[0])) return [];\n for (const prop of call.arguments[0].properties) {\n if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name) && prop.name.text === propName) {\n if (ts.isArrayLiteralExpression(prop.initializer)) {\n return prop.initializer.elements\n .filter(ts.isIdentifier)\n .map(id => id.text);\n }\n }\n }\n return [];\n}\n\nfunction findDeclaringModule(modules: NgModuleInfo[], componentClassName: string): NgModuleInfo | undefined {\n return modules.find(m => m.declarations.includes(componentClassName));\n}\n\n// --- Import Addition ---\n\nfunction addImportsToFile(source: string, filePath: string, decoratorStartHint: number, imports: ImportToAdd[], useClassArray: boolean): string {\n const sf = ts.createSourceFile(filePath, source, ts.ScriptTarget.Latest, true);\n\n // Find the imports array in the decorator closest to decoratorStartHint\n const importsArrayInfo = findDecoratorImportsArray(sf, source, decoratorStartHint);\n if (!importsArrayInfo) return source;\n\n const { arrayNode, decoratorType } = importsArrayInfo;\n\n // Determine what's already in the imports array\n const existingSymbols = new Set<string>();\n const existingSpreads = new Set<string>();\n for (const el of arrayNode.elements) {\n if (ts.isSpreadElement(el) && ts.isIdentifier(el.expression)) {\n existingSpreads.add(el.expression.text);\n } else if (ts.isIdentifier(el)) {\n existingSymbols.add(el.text);\n }\n }\n\n // Filter out already-present imports and compute what to add/remove\n const toAdd: ImportToAdd[] = [];\n const toRemoveFromArray: string[] = []; // individual class names to consolidate\n\n for (const imp of imports) {\n if (imp.isSpread) {\n if (existingSpreads.has(imp.symbol)) continue; // Already has ...EUI_X\n toAdd.push(imp);\n // Consolidate: remove individual class names covered by this array\n if (useClassArray) {\n const coveredClasses = getClassNamesForArray(imp.symbol);\n for (const cls of coveredClasses) {\n if (existingSymbols.has(cls)) toRemoveFromArray.push(cls);\n }\n }\n } else {\n if (existingSymbols.has(imp.symbol)) continue;\n // Also skip if a spread already covers this class\n const coveringArray = imports.find(i => i.isSpread && getClassNamesForArray(i.symbol).includes(imp.symbol));\n if (coveringArray && (existingSpreads.has(coveringArray.symbol) || toAdd.some(a => a.symbol === coveringArray.symbol))) continue;\n toAdd.push(imp);\n }\n }\n\n if (toAdd.length === 0 && toRemoveFromArray.length === 0) return source;\n\n // Build new array content\n let result = source;\n result = updateDecoratorImportsArray(result, filePath, arrayNode, toAdd, toRemoveFromArray);\n\n // Add ES imports\n result = addEsImports(result, filePath, toAdd);\n\n // Remove consolidated class names from ES imports\n if (toRemoveFromArray.length > 0) {\n result = removeFromEsImports(result, filePath, toRemoveFromArray);\n }\n\n return result;\n}\n\ninterface ImportsArrayInfo {\n arrayNode: ts.ArrayLiteralExpression;\n decoratorType: 'Component' | 'NgModule';\n}\n\nfunction findDecoratorImportsArray(sf: ts.SourceFile, source: string, decoratorStartHint: number): ImportsArrayInfo | null {\n let found: ImportsArrayInfo | null = null;\n\n const visit = (node: ts.Node): void => {\n if (found) return;\n if (ts.isClassDeclaration(node)) {\n const decs = ts.getDecorators(node);\n if (!decs) return;\n for (const dec of decs) {\n if (!ts.isCallExpression(dec.expression)) continue;\n if (!ts.isIdentifier(dec.expression.expression)) continue;\n const decName = dec.expression.expression.text;\n if (decName !== 'Component' && decName !== 'NgModule') continue;\n if (Math.abs(dec.getStart() - decoratorStartHint) > 5) continue; // Match by position\n\n const metadata = dec.expression.arguments[0];\n if (!ts.isObjectLiteralExpression(metadata)) continue;\n\n for (const prop of metadata.properties) {\n if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name) && prop.name.text === 'imports') {\n if (ts.isArrayLiteralExpression(prop.initializer)) {\n found = { arrayNode: prop.initializer, decoratorType: decName as 'Component' | 'NgModule' };\n return;\n }\n }\n }\n\n // No imports array found — create one\n if (!found && decName === 'Component') {\n // We need to add `imports: []` to the decorator\n // Insert after the last property\n const lastProp = metadata.properties[metadata.properties.length - 1];\n if (lastProp) {\n const insertPos = lastProp.getEnd();\n const indent = detectIndent(source, metadata.getStart());\n const insertion = `,\\n${indent} imports: []`;\n const newSource = source.slice(0, insertPos) + insertion + source.slice(insertPos);\n // Re-parse to get the array node\n const newSf = ts.createSourceFile('', newSource, ts.ScriptTarget.Latest, true);\n const newArray = findImportsArrayInSource(newSf);\n if (newArray) {\n // We can't return a node from a different source file in the general case.\n // Instead, we'll handle the \"no imports array\" case by adding it inline.\n found = null; // Will be handled separately\n }\n }\n }\n }\n }\n ts.forEachChild(node, visit);\n };\n visit(sf);\n return found;\n}\n\nfunction findImportsArrayInSource(sf: ts.SourceFile): ts.ArrayLiteralExpression | null {\n let found: ts.ArrayLiteralExpression | null = null;\n const visit = (node: ts.Node): void => {\n if (found) return;\n if (ts.isPropertyAssignment(node) && ts.isIdentifier(node.name) && node.name.text === 'imports' && ts.isArrayLiteralExpression(node.initializer)) {\n found = node.initializer;\n }\n ts.forEachChild(node, visit);\n };\n visit(sf);\n return found;\n}\n\nfunction updateDecoratorImportsArray(source: string, filePath: string, arrayNode: ts.ArrayLiteralExpression, toAdd: ImportToAdd[], toRemove: string[]): string {\n const sf = ts.createSourceFile(filePath, source, ts.ScriptTarget.Latest, true);\n\n // Rebuild the array content\n const existingElements: string[] = [];\n for (const el of arrayNode.elements) {\n const text = source.slice(el.getStart(sf), el.getEnd()).trim();\n // Check if this element should be removed (consolidation)\n if (ts.isIdentifier(el) && toRemove.includes(el.text)) continue;\n existingElements.push(text);\n }\n\n // Add new entries\n for (const imp of toAdd) {\n const entry = imp.isSpread ? `...${imp.symbol}` : imp.symbol;\n if (!existingElements.includes(entry)) {\n existingElements.push(entry);\n }\n }\n\n // Determine formatting\n const arrayStart = arrayNode.getStart(sf);\n const arrayEnd = arrayNode.getEnd();\n const originalText = source.slice(arrayStart, arrayEnd);\n const isMultiline = originalText.includes('\\n');\n\n let newArrayText: string;\n if (isMultiline || existingElements.length > 3) {\n const indent = detectIndent(source, arrayStart);\n const itemIndent = indent + ' ';\n newArrayText = `[\\n${existingElements.map(e => `${itemIndent}${e},`).join('\\n')}\\n${indent}]`;\n } else {\n newArrayText = `[${existingElements.join(', ')}]`;\n }\n\n return source.slice(0, arrayStart) + newArrayText + source.slice(arrayEnd);\n}\n\nfunction addEsImports(source: string, filePath: string, imports: ImportToAdd[]): string {\n let result = source;\n\n // Group by import path\n const byPath = new Map<string, string[]>();\n for (const imp of imports) {\n const existing = byPath.get(imp.importPath) || [];\n existing.push(imp.symbol);\n byPath.set(imp.importPath, existing);\n }\n\n for (const [importPath, symbols] of byPath) {\n const sf = ts.createSourceFile(filePath, result, ts.ScriptTarget.Latest, true);\n\n // Check if there's already an import from this path\n const existingImport = sf.statements.find(\n (s): s is ts.ImportDeclaration =>\n ts.isImportDeclaration(s) && ts.isStringLiteral(s.moduleSpecifier) && s.moduleSpecifier.text === importPath,\n );\n\n if (existingImport?.importClause?.namedBindings && ts.isNamedImports(existingImport.importClause.namedBindings)) {\n // Extend existing import\n const namedBindings = existingImport.importClause.namedBindings;\n const existingNames = namedBindings.elements.map(el => el.name.text);\n const newNames = symbols.filter(s => !existingNames.includes(s));\n if (newNames.length === 0) continue;\n\n const allNames = [...existingNames, ...newNames].sort();\n const newClause = `{ ${allNames.join(', ')} }`;\n result = result.slice(0, namedBindings.getStart(sf)) + newClause + result.slice(namedBindings.getEnd());\n } else {\n // Add new import statement\n const sortedSymbols = [...symbols].sort();\n const newImport = `import { ${sortedSymbols.join(', ')} } from '${importPath}';\\n`;\n\n // Insert after the last existing import\n const lastImport = [...sf.statements].reverse().find(ts.isImportDeclaration);\n if (lastImport) {\n const pos = lastImport.getEnd();\n result = result.slice(0, pos) + '\\n' + newImport.trimEnd() + result.slice(pos);\n } else {\n result = newImport + result;\n }\n }\n }\n\n return result;\n}\n\nfunction detectIndent(source: string, pos: number): string {\n const lineStart = source.lastIndexOf('\\n', pos - 1) + 1;\n const match = source.slice(lineStart, pos).match(/^(\\s*)/);\n return match ? match[1] : '';\n}\n\nfunction removeFromEsImports(source: string, filePath: string, symbolsToRemove: string[]): string {\n let result = source;\n const sf = ts.createSourceFile(filePath, result, ts.ScriptTarget.Latest, true);\n\n for (const stmt of sf.statements) {\n if (!ts.isImportDeclaration(stmt) || !stmt.importClause?.namedBindings || !ts.isNamedImports(stmt.importClause.namedBindings)) continue;\n const namedBindings = stmt.importClause.namedBindings;\n const existingNames = namedBindings.elements.map(el => el.name.text);\n const remaining = existingNames.filter(n => !symbolsToRemove.includes(n));\n\n if (remaining.length === existingNames.length) continue; // Nothing to remove from this import\n\n if (remaining.length === 0) {\n // Remove the entire import statement\n result = result.slice(0, stmt.getStart(sf)) + result.slice(stmt.getEnd()).replace(/^\\r?\\n/, '');\n } else {\n const newClause = `{ ${remaining.join(', ')} }`;\n result = result.slice(0, namedBindings.getStart(sf)) + newClause + result.slice(namedBindings.getEnd());\n }\n break; // Only process the first matching import for the consolidated symbols\n }\n\n return result;\n}\n",
3191
- "displayName": "Schema",
3192
- "properties": [
3193
- {
3194
- "name": "dryRun",
3195
- "coverageIgnore": false,
3196
- "deprecated": false,
3197
- "deprecationMessage": "",
3198
- "type": "boolean",
3199
- "indexKey": "",
3200
- "optional": true,
3201
- "description": "",
3202
- "line": 9,
3203
- "rawdescription": "\n"
3204
- },
3205
- {
3206
- "name": "path",
3207
- "coverageIgnore": false,
3208
- "deprecated": false,
3209
- "deprecationMessage": "",
3210
- "type": "string",
3211
- "indexKey": "",
3212
- "optional": true,
3213
- "description": "",
3214
- "line": 8,
3215
- "rawdescription": "\n"
3216
- },
3217
- {
3218
- "name": "useClassArray",
3219
- "coverageIgnore": false,
3220
- "deprecated": false,
3221
- "deprecationMessage": "",
3222
- "type": "boolean",
3223
- "indexKey": "",
3224
- "optional": true,
3225
- "description": "",
3226
- "line": 10,
3227
- "rawdescription": "\n"
3228
- }
3229
- ],
3230
- "indexSignatures": [],
3231
- "kind": 172,
3232
- "methods": [],
3233
- "extends": [],
3234
- "isDuplicate": true,
3235
3235
  "duplicateId": 22,
3236
3236
  "duplicateName": "Schema-22",
3237
3237
  "relationships": {
@@ -27692,7 +27692,7 @@
27692
27692
  },
27693
27693
  {
27694
27694
  "name": "findComponentDecorators",
27695
- "file": "packages/core/schematics/migrate-to-standalone/index.ts",
27695
+ "file": "packages/core/schematics/add-eui-imports/index.ts",
27696
27696
  "ctype": "miscellaneous",
27697
27697
  "subtype": "function",
27698
27698
  "coverageIgnore": false,
@@ -27708,7 +27708,7 @@
27708
27708
  "deprecationMessage": ""
27709
27709
  }
27710
27710
  ],
27711
- "returnType": "ts.Decorator[]",
27711
+ "returnType": "ComponentInfo[]",
27712
27712
  "jsdoctags": [
27713
27713
  {
27714
27714
  "name": "sourceFile",
@@ -27722,7 +27722,7 @@
27722
27722
  },
27723
27723
  {
27724
27724
  "name": "findComponentDecorators",
27725
- "file": "packages/core/schematics/add-eui-imports/index.ts",
27725
+ "file": "packages/core/schematics/migrate-to-standalone/index.ts",
27726
27726
  "ctype": "miscellaneous",
27727
27727
  "subtype": "function",
27728
27728
  "coverageIgnore": false,
@@ -27738,7 +27738,7 @@
27738
27738
  "deprecationMessage": ""
27739
27739
  }
27740
27740
  ],
27741
- "returnType": "ComponentInfo[]",
27741
+ "returnType": "ts.Decorator[]",
27742
27742
  "jsdoctags": [
27743
27743
  {
27744
27744
  "name": "sourceFile",
@@ -35854,7 +35854,7 @@
35854
35854
  },
35855
35855
  {
35856
35856
  "name": "visitDir",
35857
- "file": "packages/core/schematics/fix-no-multiple-empty-lines/index.ts",
35857
+ "file": "packages/core/schematics/add-eui-imports/index.ts",
35858
35858
  "ctype": "miscellaneous",
35859
35859
  "subtype": "function",
35860
35860
  "coverageIgnore": false,
@@ -35899,7 +35899,7 @@
35899
35899
  },
35900
35900
  {
35901
35901
  "name": "visitDir",
35902
- "file": "packages/core/schematics/migrate-eui-accent/index.ts",
35902
+ "file": "packages/core/schematics/fix-no-multiple-empty-lines/index.ts",
35903
35903
  "ctype": "miscellaneous",
35904
35904
  "subtype": "function",
35905
35905
  "coverageIgnore": false,
@@ -35944,7 +35944,7 @@
35944
35944
  },
35945
35945
  {
35946
35946
  "name": "visitDir",
35947
- "file": "packages/core/schematics/migrate-eui-alert/index.ts",
35947
+ "file": "packages/core/schematics/migrate-eui-accent/index.ts",
35948
35948
  "ctype": "miscellaneous",
35949
35949
  "subtype": "function",
35950
35950
  "coverageIgnore": false,
@@ -35989,7 +35989,7 @@
35989
35989
  },
35990
35990
  {
35991
35991
  "name": "visitDir",
35992
- "file": "packages/core/schematics/migrate-eui-avatar/index.ts",
35992
+ "file": "packages/core/schematics/migrate-eui-alert/index.ts",
35993
35993
  "ctype": "miscellaneous",
35994
35994
  "subtype": "function",
35995
35995
  "coverageIgnore": false,
@@ -36034,7 +36034,7 @@
36034
36034
  },
36035
36035
  {
36036
36036
  "name": "visitDir",
36037
- "file": "packages/core/schematics/migrate-eui-button/index.ts",
36037
+ "file": "packages/core/schematics/migrate-eui-avatar/index.ts",
36038
36038
  "ctype": "miscellaneous",
36039
36039
  "subtype": "function",
36040
36040
  "coverageIgnore": false,
@@ -36079,7 +36079,7 @@
36079
36079
  },
36080
36080
  {
36081
36081
  "name": "visitDir",
36082
- "file": "packages/core/schematics/migrate-eui-chip/index.ts",
36082
+ "file": "packages/core/schematics/migrate-eui-button/index.ts",
36083
36083
  "ctype": "miscellaneous",
36084
36084
  "subtype": "function",
36085
36085
  "coverageIgnore": false,
@@ -36124,7 +36124,7 @@
36124
36124
  },
36125
36125
  {
36126
36126
  "name": "visitDir",
36127
- "file": "packages/core/schematics/migrate-eui-chip-list/index.ts",
36127
+ "file": "packages/core/schematics/migrate-eui-chip/index.ts",
36128
36128
  "ctype": "miscellaneous",
36129
36129
  "subtype": "function",
36130
36130
  "coverageIgnore": false,
@@ -36169,7 +36169,7 @@
36169
36169
  },
36170
36170
  {
36171
36171
  "name": "visitDir",
36172
- "file": "packages/core/schematics/migrate-eui-discussion-thread/index.ts",
36172
+ "file": "packages/core/schematics/migrate-eui-chip-list/index.ts",
36173
36173
  "ctype": "miscellaneous",
36174
36174
  "subtype": "function",
36175
36175
  "coverageIgnore": false,
@@ -36214,7 +36214,7 @@
36214
36214
  },
36215
36215
  {
36216
36216
  "name": "visitDir",
36217
- "file": "packages/core/schematics/migrate-eui-editor/index.ts",
36217
+ "file": "packages/core/schematics/migrate-eui-discussion-thread/index.ts",
36218
36218
  "ctype": "miscellaneous",
36219
36219
  "subtype": "function",
36220
36220
  "coverageIgnore": false,
@@ -36259,7 +36259,7 @@
36259
36259
  },
36260
36260
  {
36261
36261
  "name": "visitDir",
36262
- "file": "packages/core/schematics/migrate-eui-fieldset/index.ts",
36262
+ "file": "packages/core/schematics/migrate-eui-editor/index.ts",
36263
36263
  "ctype": "miscellaneous",
36264
36264
  "subtype": "function",
36265
36265
  "coverageIgnore": false,
@@ -36304,7 +36304,7 @@
36304
36304
  },
36305
36305
  {
36306
36306
  "name": "visitDir",
36307
- "file": "packages/core/schematics/migrate-eui-icon-svg/index.ts",
36307
+ "file": "packages/core/schematics/migrate-eui-fieldset/index.ts",
36308
36308
  "ctype": "miscellaneous",
36309
36309
  "subtype": "function",
36310
36310
  "coverageIgnore": false,
@@ -36349,7 +36349,7 @@
36349
36349
  },
36350
36350
  {
36351
36351
  "name": "visitDir",
36352
- "file": "packages/core/schematics/migrate-eui-icon-toggle/index.ts",
36352
+ "file": "packages/core/schematics/migrate-eui-icon-svg/index.ts",
36353
36353
  "ctype": "miscellaneous",
36354
36354
  "subtype": "function",
36355
36355
  "coverageIgnore": false,
@@ -36394,7 +36394,7 @@
36394
36394
  },
36395
36395
  {
36396
36396
  "name": "visitDir",
36397
- "file": "packages/core/schematics/migrate-eui-popover/index.ts",
36397
+ "file": "packages/core/schematics/migrate-eui-icon-toggle/index.ts",
36398
36398
  "ctype": "miscellaneous",
36399
36399
  "subtype": "function",
36400
36400
  "coverageIgnore": false,
@@ -36439,7 +36439,7 @@
36439
36439
  },
36440
36440
  {
36441
36441
  "name": "visitDir",
36442
- "file": "packages/core/schematics/migrate-eui-progress-circle/index.ts",
36442
+ "file": "packages/core/schematics/migrate-eui-popover/index.ts",
36443
36443
  "ctype": "miscellaneous",
36444
36444
  "subtype": "function",
36445
36445
  "coverageIgnore": false,
@@ -36484,7 +36484,7 @@
36484
36484
  },
36485
36485
  {
36486
36486
  "name": "visitDir",
36487
- "file": "packages/core/schematics/migrate-eui-table/index.ts",
36487
+ "file": "packages/core/schematics/migrate-eui-progress-circle/index.ts",
36488
36488
  "ctype": "miscellaneous",
36489
36489
  "subtype": "function",
36490
36490
  "coverageIgnore": false,
@@ -36529,7 +36529,7 @@
36529
36529
  },
36530
36530
  {
36531
36531
  "name": "visitDir",
36532
- "file": "packages/core/schematics/migrate-eui-tabs/index.ts",
36532
+ "file": "packages/core/schematics/migrate-eui-table/index.ts",
36533
36533
  "ctype": "miscellaneous",
36534
36534
  "subtype": "function",
36535
36535
  "coverageIgnore": false,
@@ -36574,7 +36574,7 @@
36574
36574
  },
36575
36575
  {
36576
36576
  "name": "visitDir",
36577
- "file": "packages/core/schematics/migrate-eui-toolbar-menu/index.ts",
36577
+ "file": "packages/core/schematics/migrate-eui-tabs/index.ts",
36578
36578
  "ctype": "miscellaneous",
36579
36579
  "subtype": "function",
36580
36580
  "coverageIgnore": false,
@@ -36619,7 +36619,7 @@
36619
36619
  },
36620
36620
  {
36621
36621
  "name": "visitDir",
36622
- "file": "packages/core/schematics/migrate-eui-tooltip/index.ts",
36622
+ "file": "packages/core/schematics/migrate-eui-toolbar-menu/index.ts",
36623
36623
  "ctype": "miscellaneous",
36624
36624
  "subtype": "function",
36625
36625
  "coverageIgnore": false,
@@ -36664,7 +36664,7 @@
36664
36664
  },
36665
36665
  {
36666
36666
  "name": "visitDir",
36667
- "file": "packages/core/schematics/migrate-to-signals/index.ts",
36667
+ "file": "packages/core/schematics/migrate-eui-tooltip/index.ts",
36668
36668
  "ctype": "miscellaneous",
36669
36669
  "subtype": "function",
36670
36670
  "coverageIgnore": false,
@@ -36709,7 +36709,7 @@
36709
36709
  },
36710
36710
  {
36711
36711
  "name": "visitDir",
36712
- "file": "packages/core/schematics/migrate-to-standalone/index.ts",
36712
+ "file": "packages/core/schematics/migrate-to-signals/index.ts",
36713
36713
  "ctype": "miscellaneous",
36714
36714
  "subtype": "function",
36715
36715
  "coverageIgnore": false,
@@ -36754,7 +36754,7 @@
36754
36754
  },
36755
36755
  {
36756
36756
  "name": "visitDir",
36757
- "file": "packages/core/schematics/add-eui-imports/index.ts",
36757
+ "file": "packages/core/schematics/migrate-to-standalone/index.ts",
36758
36758
  "ctype": "miscellaneous",
36759
36759
  "subtype": "function",
36760
36760
  "coverageIgnore": false,