@angular/upgrade
Version:
Angular - the library for easing update from v1 to v2
1 lines • 153 kB
Source Map (JSON)
{"version":3,"file":"static.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/upgrade/src/common/src/component_info.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/upgrade/src/common/src/util.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/upgrade/src/common/src/downgrade_component_adapter.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/upgrade/src/common/src/promise_util.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/upgrade/src/common/src/downgrade_component.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/upgrade/src/common/src/downgrade_injectable.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/upgrade/src/common/src/security/trusted_types.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/upgrade/src/common/src/upgrade_helper.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/upgrade/static/src/angular1_providers.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/upgrade/static/src/util.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/upgrade/static/src/downgrade_module.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/upgrade/static/src/upgrade_component.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/upgrade/static/src/upgrade_module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\n/**\n * A `PropertyBinding` represents a mapping between a property name\n * and an attribute name. It is parsed from a string of the form\n * `\"prop: attr\"`; or simply `\"propAndAttr\" where the property\n * and attribute have the same identifier.\n */\nexport class PropertyBinding {\n bracketAttr: string;\n bracketParenAttr: string;\n parenAttr: string;\n onAttr: string;\n bindAttr: string;\n bindonAttr: string;\n\n constructor(\n public prop: string,\n public attr: string,\n ) {\n this.bracketAttr = `[${this.attr}]`;\n this.parenAttr = `(${this.attr})`;\n this.bracketParenAttr = `[(${this.attr})]`;\n const capitalAttr = this.attr.charAt(0).toUpperCase() + this.attr.slice(1);\n this.onAttr = `on${capitalAttr}`;\n this.bindAttr = `bind${capitalAttr}`;\n this.bindonAttr = `bindon${capitalAttr}`;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Injector, Type, ɵNG_MOD_DEF} from '@angular/core';\n\nimport {\n element as angularElement,\n IAugmentedJQuery,\n IInjectorService,\n INgModelController,\n IRootScopeService,\n} from './angular1';\nimport {\n $ROOT_ELEMENT,\n $ROOT_SCOPE,\n DOWNGRADED_MODULE_COUNT_KEY,\n UPGRADE_APP_TYPE_KEY,\n} from './constants';\n\nconst DIRECTIVE_PREFIX_REGEXP = /^(?:x|data)[:\\-_]/i;\nconst DIRECTIVE_SPECIAL_CHARS_REGEXP = /[:\\-_]+(.)/g;\n\nexport function onError(e: any) {\n // TODO: (misko): We seem to not have a stack trace here!\n console.error(e, e.stack);\n throw e;\n}\n\n/**\n * Clean the jqLite/jQuery data on the element and all its descendants.\n * Equivalent to how jqLite/jQuery invoke `cleanData()` on an Element when removed:\n * https://github.com/angular/angular.js/blob/2e72ea13fa98bebf6ed4b5e3c45eaf5f990ed16f/src/jqLite.js#L349-L355\n * https://github.com/jquery/jquery/blob/6984d1747623dbc5e87fd6c261a5b6b1628c107c/src/manipulation.js#L182\n *\n * NOTE:\n * `cleanData()` will also invoke the AngularJS `$destroy` DOM event on the element:\n * https://github.com/angular/angular.js/blob/2e72ea13fa98bebf6ed4b5e3c45eaf5f990ed16f/src/Angular.js#L1932-L1945\n *\n * @param node The DOM node whose data needs to be cleaned.\n */\nexport function cleanData(node: Node): void {\n angularElement.cleanData([node]);\n if (isParentNode(node)) {\n angularElement.cleanData(node.querySelectorAll('*'));\n }\n}\n\nexport function controllerKey(name: string): string {\n return '$' + name + 'Controller';\n}\n\n/**\n * Destroy an AngularJS app given the app `$injector`.\n *\n * NOTE: Destroying an app is not officially supported by AngularJS, but try to do our best by\n * destroying `$rootScope` and clean the jqLite/jQuery data on `$rootElement` and all\n * descendants.\n *\n * @param $injector The `$injector` of the AngularJS app to destroy.\n */\nexport function destroyApp($injector: IInjectorService): void {\n const $rootElement: IAugmentedJQuery = $injector.get($ROOT_ELEMENT);\n const $rootScope: IRootScopeService = $injector.get($ROOT_SCOPE);\n\n $rootScope.$destroy();\n cleanData($rootElement[0]);\n}\n\nexport function directiveNormalize(name: string): string {\n return name\n .replace(DIRECTIVE_PREFIX_REGEXP, '')\n .replace(DIRECTIVE_SPECIAL_CHARS_REGEXP, (_, letter) => letter.toUpperCase());\n}\n\nexport function getTypeName(type: Type<any>): string {\n // Return the name of the type or the first line of its stringified version.\n return (type as any).overriddenName || type.name || type.toString().split('\\n')[0];\n}\n\nexport function getDowngradedModuleCount($injector: IInjectorService): number {\n return $injector.has(DOWNGRADED_MODULE_COUNT_KEY)\n ? $injector.get(DOWNGRADED_MODULE_COUNT_KEY)\n : 0;\n}\n\nexport function getUpgradeAppType($injector: IInjectorService): UpgradeAppType {\n return $injector.has(UPGRADE_APP_TYPE_KEY)\n ? $injector.get(UPGRADE_APP_TYPE_KEY)\n : UpgradeAppType.None;\n}\n\nexport function isFunction(value: any): value is Function {\n return typeof value === 'function';\n}\n\nexport function isNgModuleType(value: any): value is Type<unknown> {\n // NgModule class should have the `ɵmod` static property attached by AOT or JIT compiler.\n return isFunction(value) && !!value[ɵNG_MOD_DEF];\n}\n\nfunction isParentNode(node: Node | ParentNode): node is ParentNode {\n return isFunction((node as unknown as ParentNode).querySelectorAll);\n}\n\nexport function validateInjectionKey(\n $injector: IInjectorService,\n downgradedModule: string,\n injectionKey: string,\n attemptedAction: string,\n): void {\n const upgradeAppType = getUpgradeAppType($injector);\n const downgradedModuleCount = getDowngradedModuleCount($injector);\n\n // Check for common errors.\n switch (upgradeAppType) {\n case UpgradeAppType.Dynamic:\n case UpgradeAppType.Static:\n if (downgradedModule) {\n throw new Error(\n `Error while ${attemptedAction}: 'downgradedModule' unexpectedly specified.\\n` +\n \"You should not specify a value for 'downgradedModule', unless you are downgrading \" +\n \"more than one Angular module (via 'downgradeModule()').\",\n );\n }\n break;\n case UpgradeAppType.Lite:\n if (!downgradedModule && downgradedModuleCount >= 2) {\n throw new Error(\n `Error while ${attemptedAction}: 'downgradedModule' not specified.\\n` +\n 'This application contains more than one downgraded Angular module, thus you need to ' +\n \"always specify 'downgradedModule' when downgrading components and injectables.\",\n );\n }\n\n if (!$injector.has(injectionKey)) {\n throw new Error(\n `Error while ${attemptedAction}: Unable to find the specified downgraded module.\\n` +\n 'Did you forget to downgrade an Angular module or include it in the AngularJS ' +\n 'application?',\n );\n }\n\n break;\n default:\n throw new Error(\n `Error while ${attemptedAction}: Not a valid '@angular/upgrade' application.\\n` +\n 'Did you forget to downgrade an Angular module or include it in the AngularJS ' +\n 'application?',\n );\n }\n}\n\nexport class Deferred<R> {\n promise: Promise<R>;\n resolve!: (value: R | PromiseLike<R>) => void;\n reject!: (error?: any) => void;\n\n constructor() {\n this.promise = new Promise((res, rej) => {\n this.resolve = res;\n this.reject = rej;\n });\n }\n}\n\nexport interface LazyModuleRef {\n injector?: Injector;\n promise?: Promise<Injector>;\n}\n\nexport const enum UpgradeAppType {\n // App NOT using `@angular/upgrade`. (This should never happen in an `ngUpgrade` app.)\n None,\n\n // App using the deprecated `@angular/upgrade` APIs (a.k.a. dynamic `ngUpgrade`).\n Dynamic,\n\n // App using `@angular/upgrade/static` with `UpgradeModule`.\n Static,\n\n // App using @angular/upgrade/static` with `downgradeModule()` (a.k.a `ngUpgrade`-lite ).\n Lite,\n}\n\n/**\n * @return Whether the passed-in component implements the subset of the\n * `ControlValueAccessor` interface needed for AngularJS `ng-model`\n * compatibility.\n */\nfunction supportsNgModel(component: any) {\n return (\n typeof component.writeValue === 'function' && typeof component.registerOnChange === 'function'\n );\n}\n\n/**\n * Glue the AngularJS `NgModelController` (if it exists) to the component\n * (if it implements the needed subset of the `ControlValueAccessor` interface).\n */\nexport function hookupNgModel(ngModel: INgModelController, component: any) {\n if (ngModel && supportsNgModel(component)) {\n ngModel.$render = () => {\n component.writeValue(ngModel.$viewValue);\n };\n component.registerOnChange(ngModel.$setViewValue.bind(ngModel));\n if (typeof component.registerOnTouched === 'function') {\n component.registerOnTouched(ngModel.$setTouched.bind(ngModel));\n }\n }\n}\n\n/**\n * Test two values for strict equality, accounting for the fact that `NaN !== NaN`.\n */\nexport function strictEquals(val1: any, val2: any): boolean {\n return val1 === val2 || (val1 !== val1 && val2 !== val2);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n ApplicationRef,\n ChangeDetectorRef,\n ComponentRef,\n createComponent,\n EnvironmentInjector,\n type EventEmitter,\n Injector,\n type ɵInputSignalNode as InputSignalNode,\n OnChanges,\n type OutputEmitterRef,\n reflectComponentType,\n ɵSIGNAL as SIGNAL,\n SimpleChange,\n SimpleChanges,\n StaticProvider,\n Testability,\n TestabilityRegistry,\n Type,\n} from '@angular/core';\n\nimport {\n IAttributes,\n IAugmentedJQuery,\n ICompileService,\n INgModelController,\n IParseService,\n IScope,\n} from './angular1';\nimport {PropertyBinding} from './component_info';\nimport {$SCOPE} from './constants';\nimport {cleanData, getTypeName, hookupNgModel, strictEquals} from './util';\n\nconst INITIAL_VALUE = {\n __UNINITIALIZED__: true,\n};\n\nexport class DowngradeComponentAdapter {\n private implementsOnChanges = false;\n private inputChangeCount: number = 0;\n private inputChanges: SimpleChanges = {};\n private componentScope: IScope;\n\n constructor(\n private element: IAugmentedJQuery,\n private attrs: IAttributes,\n private scope: IScope,\n private ngModel: INgModelController,\n private environmentInjector: EnvironmentInjector,\n private parentInjector: Injector,\n private $compile: ICompileService,\n private $parse: IParseService,\n private component: Type<any>,\n private wrapCallback: <T>(cb: () => T) => () => T,\n private readonly unsafelyOverwriteSignalInputs: boolean,\n ) {\n this.componentScope = scope.$new();\n }\n\n compileContents(): Node[][] {\n const compiledProjectableNodes: Node[][] = [];\n const projectableNodes: Node[][] = this.groupProjectableNodes();\n const linkFns = projectableNodes.map((nodes) => this.$compile(nodes));\n\n this.element.empty!();\n\n linkFns.forEach((linkFn) => {\n linkFn(this.scope, (clone: Node[]) => {\n compiledProjectableNodes.push(clone);\n this.element.append!(clone);\n });\n });\n\n return compiledProjectableNodes;\n }\n\n createComponentAndSetup(\n projectableNodes: Node[][],\n manuallyAttachView = false,\n propagateDigest = true,\n ): ComponentRef<any> {\n const component = this.createComponent(projectableNodes);\n this.setupInputs(manuallyAttachView, propagateDigest, component);\n this.setupOutputs(component.componentRef);\n this.registerCleanup(component.componentRef);\n\n return component.componentRef;\n }\n\n private createComponent(projectableNodes: Node[][]): ComponentInfo {\n const providers: StaticProvider[] = [{provide: $SCOPE, useValue: this.componentScope}];\n const childInjector = Injector.create({\n providers: providers,\n parent: this.parentInjector,\n name: 'DowngradeComponentAdapter',\n });\n\n const componentRef = createComponent(this.component, {\n elementInjector: childInjector,\n environmentInjector: this.environmentInjector,\n projectableNodes,\n hostElement: this.element[0] as Element,\n });\n const viewChangeDetector = componentRef.injector.get(ChangeDetectorRef);\n const changeDetector = componentRef.changeDetectorRef;\n\n // testability hook is commonly added during component bootstrap in\n // packages/core/src/application_ref.bootstrap()\n // in downgraded application, component creation will take place here as well as adding the\n // testability hook.\n const testability = componentRef.injector.get(Testability, null);\n if (testability) {\n componentRef.injector\n .get(TestabilityRegistry)\n .registerApplication(componentRef.location.nativeElement, testability);\n }\n\n hookupNgModel(this.ngModel, componentRef.instance);\n\n return {viewChangeDetector, componentRef, changeDetector};\n }\n\n private setupInputs(\n manuallyAttachView: boolean,\n propagateDigest = true,\n {componentRef, changeDetector, viewChangeDetector}: ComponentInfo,\n ): void {\n const attrs = this.attrs;\n const inputs = reflectComponentType(this.component)?.inputs ?? [];\n for (const input of inputs) {\n const inputBinding = new PropertyBinding(input.propName, input.templateName);\n let expr: string | null = null;\n\n if (Object.hasOwn(attrs, inputBinding.attr)) {\n const observeFn = ((prop, isSignal) => {\n let prevValue = INITIAL_VALUE;\n return (currValue: any) => {\n // Initially, both `$observe()` and `$watch()` will call this function.\n if (!strictEquals(prevValue, currValue)) {\n if (prevValue === INITIAL_VALUE) {\n prevValue = currValue;\n }\n\n this.updateInput(componentRef, prop, prevValue, currValue, isSignal);\n prevValue = currValue;\n }\n };\n })(inputBinding.prop, input.isSignal);\n attrs.$observe(inputBinding.attr, observeFn);\n\n // Use `$watch()` (in addition to `$observe()`) in order to initialize the input in time\n // for `ngOnChanges()`. This is necessary if we are already in a `$digest`, which means that\n // `ngOnChanges()` (which is called by a watcher) will run before the `$observe()` callback.\n let unwatch: Function | null = this.componentScope.$watch(() => {\n unwatch!();\n unwatch = null;\n observeFn(attrs[inputBinding.attr]);\n });\n } else if (Object.hasOwn(attrs, inputBinding.bindAttr)) {\n expr = attrs[inputBinding.bindAttr];\n } else if (Object.hasOwn(attrs, inputBinding.bracketAttr)) {\n expr = attrs[inputBinding.bracketAttr];\n } else if (Object.hasOwn(attrs, inputBinding.bindonAttr)) {\n expr = attrs[inputBinding.bindonAttr];\n } else if (Object.hasOwn(attrs, inputBinding.bracketParenAttr)) {\n expr = attrs[inputBinding.bracketParenAttr];\n }\n if (expr != null) {\n const watchFn = (\n (prop, isSignal) => (currValue: unknown, prevValue: unknown) =>\n this.updateInput(componentRef, prop, prevValue, currValue, isSignal)\n )(inputBinding.prop, input.isSignal);\n this.componentScope.$watch(expr, watchFn);\n }\n }\n\n // Invoke `ngOnChanges()` and Change Detection (when necessary)\n const detectChanges = () => changeDetector.detectChanges();\n const prototype = this.component.prototype;\n this.implementsOnChanges = !!(prototype && (<OnChanges>prototype).ngOnChanges);\n\n this.componentScope.$watch(\n () => this.inputChangeCount,\n this.wrapCallback(() => {\n // Invoke `ngOnChanges()`\n if (this.implementsOnChanges) {\n const inputChanges = this.inputChanges;\n this.inputChanges = {};\n (<OnChanges>componentRef.instance).ngOnChanges(inputChanges);\n }\n\n viewChangeDetector.markForCheck();\n\n // If opted out of propagating digests, invoke change detection when inputs change.\n if (!propagateDigest) {\n detectChanges();\n }\n }),\n );\n\n // If not opted out of propagating digests, invoke change detection on every digest\n if (propagateDigest) {\n this.componentScope.$watch(this.wrapCallback(detectChanges));\n }\n\n // If necessary, attach the view so that it will be dirty-checked.\n // (Allow time for the initial input values to be set and `ngOnChanges()` to be called.)\n if (manuallyAttachView || !propagateDigest) {\n let unwatch: Function | null = this.componentScope.$watch(() => {\n unwatch!();\n unwatch = null;\n\n const appRef = this.parentInjector.get<ApplicationRef>(ApplicationRef);\n appRef.attachView(componentRef.hostView);\n });\n }\n }\n\n private setupOutputs(componentRef: ComponentRef<any>) {\n const attrs = this.attrs;\n const outputs = reflectComponentType(this.component)?.outputs ?? [];\n for (const output of outputs) {\n const outputBindings = new PropertyBinding(output.propName, output.templateName);\n const bindonAttr = outputBindings.bindonAttr.substring(\n 0,\n outputBindings.bindonAttr.length - 6,\n );\n const bracketParenAttr = `[(${outputBindings.bracketParenAttr.substring(\n 2,\n outputBindings.bracketParenAttr.length - 8,\n )})]`;\n // order below is important - first update bindings then evaluate expressions\n if (Object.hasOwn(attrs, bindonAttr)) {\n this.subscribeToOutput(componentRef, outputBindings, attrs[bindonAttr], true);\n }\n if (Object.hasOwn(attrs, bracketParenAttr)) {\n this.subscribeToOutput(componentRef, outputBindings, attrs[bracketParenAttr], true);\n }\n if (Object.hasOwn(attrs, outputBindings.onAttr)) {\n this.subscribeToOutput(componentRef, outputBindings, attrs[outputBindings.onAttr]);\n }\n if (Object.hasOwn(attrs, outputBindings.parenAttr)) {\n this.subscribeToOutput(componentRef, outputBindings, attrs[outputBindings.parenAttr]);\n }\n }\n }\n\n private subscribeToOutput(\n componentRef: ComponentRef<any>,\n output: PropertyBinding,\n expr: string,\n isAssignment: boolean = false,\n ) {\n const getter = this.$parse(expr);\n const setter = getter.assign;\n if (isAssignment && !setter) {\n throw new Error(`Expression '${expr}' is not assignable!`);\n }\n const emitter = componentRef.instance[output.prop] as EventEmitter<any> | OutputEmitterRef<any>;\n if (emitter) {\n const subscription = emitter.subscribe(\n isAssignment\n ? (v: any) => setter!(this.scope, v)\n : (v: any) => getter(this.scope, {'$event': v}),\n );\n componentRef.onDestroy(() => subscription.unsubscribe());\n } else {\n throw new Error(\n `Missing emitter '${output.prop}' on component '${getTypeName(this.component)}'!`,\n );\n }\n }\n\n private registerCleanup(componentRef: ComponentRef<any>) {\n const testabilityRegistry = componentRef.injector.get(TestabilityRegistry);\n const destroyComponentRef = this.wrapCallback(() => componentRef.destroy());\n let destroyed = false;\n\n this.element.on!('$destroy', () => {\n // The `$destroy` event may have been triggered by the `cleanData()` call in the\n // `componentScope` `$destroy` handler below. In that case, we don't want to call\n // `componentScope.$destroy()` again.\n if (!destroyed) this.componentScope.$destroy();\n });\n this.componentScope.$on('$destroy', () => {\n if (!destroyed) {\n destroyed = true;\n testabilityRegistry.unregisterApplication(componentRef.location.nativeElement);\n\n // The `componentScope` might be getting destroyed, because an ancestor element is being\n // removed/destroyed. If that is the case, jqLite/jQuery would normally invoke `cleanData()`\n // on the removed element and all descendants.\n // https://github.com/angular/angular.js/blob/2e72ea13fa98bebf6ed4b5e3c45eaf5f990ed16f/src/jqLite.js#L349-L355\n // https://github.com/jquery/jquery/blob/6984d1747623dbc5e87fd6c261a5b6b1628c107c/src/manipulation.js#L182\n //\n // Here, however, `destroyComponentRef()` may under some circumstances remove the element\n // from the DOM and therefore it will no longer be a descendant of the removed element when\n // `cleanData()` is called. This would result in a memory leak, because the element's data\n // and event handlers (and all objects directly or indirectly referenced by them) would be\n // retained.\n //\n // To ensure the element is always properly cleaned up, we manually call `cleanData()` on\n // this element and its descendants before destroying the `ComponentRef`.\n cleanData(this.element[0]);\n\n destroyComponentRef();\n }\n });\n }\n\n private updateInput(\n componentRef: ComponentRef<any>,\n prop: string,\n prevValue: any,\n currValue: any,\n isSignal: boolean,\n ) {\n if (this.implementsOnChanges) {\n this.inputChanges[prop] = new SimpleChange(prevValue, currValue, prevValue === currValue);\n }\n\n this.inputChangeCount++;\n const instanceProp = componentRef.instance[prop];\n const node = instanceProp?.[SIGNAL] as InputSignalNode<unknown, unknown> | undefined;\n // Model signals are writable signal inputs (they expose `.set()` and `applyValueToInputSignal`).\n // Overwriting them would destroy the internal OutputEmitterRef that setupOutputs() already\n // subscribed to, severing the Angular→AngularJS two-way binding. Always use\n // applyValueToInputSignal for model signals regardless of the unsafelyOverwriteSignalInputs\n // flag. Check applyValueToInputSignal (not just .set) to distinguish model() from a plain\n // WritableSignal used with @Input(), which also has .set() but does not support this method.\n const isModelSignal =\n node != null &&\n typeof instanceProp.set === 'function' &&\n typeof node.applyValueToInputSignal === 'function';\n if (isModelSignal || (isSignal && !this.unsafelyOverwriteSignalInputs)) {\n node!.applyValueToInputSignal(node!, currValue);\n } else {\n componentRef.instance[prop] = currValue;\n }\n }\n\n private groupProjectableNodes() {\n let ngContentSelectors = reflectComponentType(this.component)?.ngContentSelectors ?? [];\n return groupNodesBySelector(ngContentSelectors, this.element.contents!());\n }\n}\n\n/**\n * Group a set of DOM nodes into `ngContent` groups, based on the given content selectors.\n */\nexport function groupNodesBySelector(\n ngContentSelectors: readonly string[],\n nodes: Node[],\n): Node[][] {\n const projectableNodes: Node[][] = [];\n\n for (let i = 0, ii = ngContentSelectors.length; i < ii; ++i) {\n projectableNodes[i] = [];\n }\n\n for (let j = 0, jj = nodes.length; j < jj; ++j) {\n const node = nodes[j];\n const ngContentIndex = findMatchingNgContentIndex(node, ngContentSelectors);\n if (ngContentIndex != null) {\n projectableNodes[ngContentIndex].push(node);\n }\n }\n\n return projectableNodes;\n}\n\nfunction findMatchingNgContentIndex(\n element: any,\n ngContentSelectors: readonly string[],\n): number | null {\n const ngContentIndices: number[] = [];\n let wildcardNgContentIndex: number = -1;\n for (let i = 0; i < ngContentSelectors.length; i++) {\n const selector = ngContentSelectors[i];\n if (selector === '*') {\n wildcardNgContentIndex = i;\n } else {\n if (matchesSelector(element, selector)) {\n ngContentIndices.push(i);\n }\n }\n }\n ngContentIndices.sort();\n\n if (wildcardNgContentIndex !== -1) {\n ngContentIndices.push(wildcardNgContentIndex);\n }\n return ngContentIndices.length ? ngContentIndices[0] : null;\n}\n\nfunction matchesSelector(el: any, selector: string): boolean {\n const elProto = <any>Element.prototype;\n\n return el.nodeType === Node.ELEMENT_NODE\n ? // matches is supported by all browsers from 2014 onwards except non-chromium edge\n (elProto.matches ?? elProto.msMatchesSelector).call(el, selector)\n : false;\n}\n\ninterface ComponentInfo {\n componentRef: ComponentRef<any>;\n changeDetector: ChangeDetectorRef;\n viewChangeDetector: ChangeDetectorRef;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {isFunction} from './util';\n\nexport interface Thenable<T> {\n then(callback: (value: T) => any): any;\n}\n\nexport function isThenable<T>(obj: unknown): obj is Thenable<T> {\n return !!obj && isFunction((obj as any).then);\n}\n\n/**\n * Synchronous, promise-like object.\n */\nexport class SyncPromise<T> {\n protected value: T | undefined;\n private resolved = false;\n private callbacks: ((value: T) => unknown)[] = [];\n\n static all<T>(valuesOrPromises: (T | Thenable<T>)[]): SyncPromise<T[]> {\n const aggrPromise = new SyncPromise<T[]>();\n\n let resolvedCount = 0;\n const results: T[] = [];\n const resolve = (idx: number, value: T) => {\n results[idx] = value;\n if (++resolvedCount === valuesOrPromises.length) aggrPromise.resolve(results);\n };\n\n valuesOrPromises.forEach((p, idx) => {\n if (isThenable(p)) {\n p.then((v) => resolve(idx, v));\n } else {\n resolve(idx, p);\n }\n });\n\n return aggrPromise;\n }\n\n resolve(value: T): void {\n // Do nothing, if already resolved.\n if (this.resolved) return;\n\n this.value = value;\n this.resolved = true;\n\n // Run the queued callbacks.\n this.callbacks.forEach((callback) => callback(value));\n this.callbacks.length = 0;\n }\n\n then(callback: (value: T) => unknown): void {\n if (this.resolved) {\n callback(this.value!);\n } else {\n this.callbacks.push(callback);\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {EnvironmentInjector, Injector, NgZone, Type} from '@angular/core';\n\nimport {\n IAnnotatedFunction,\n IAttributes,\n IAugmentedJQuery,\n ICompileService,\n IDirective,\n IInjectorService,\n INgModelController,\n IParseService,\n IScope,\n} from './angular1';\nimport {\n $COMPILE,\n $INJECTOR,\n $PARSE,\n INJECTOR_KEY,\n LAZY_MODULE_REF,\n REQUIRE_INJECTOR,\n REQUIRE_NG_MODEL,\n} from './constants';\nimport {DowngradeComponentAdapter} from './downgrade_component_adapter';\nimport {SyncPromise, Thenable} from './promise_util';\nimport {\n controllerKey,\n getDowngradedModuleCount,\n getTypeName,\n getUpgradeAppType,\n LazyModuleRef,\n UpgradeAppType,\n validateInjectionKey,\n} from './util';\n\n/**\n * @description\n *\n * A helper function that allows an Angular component to be used from AngularJS.\n *\n * *Part of the [upgrade/static](api?query=upgrade%2Fstatic)\n * library for hybrid upgrade apps that support AOT compilation*\n *\n * This helper function returns a factory function to be used for registering\n * an AngularJS wrapper directive for \"downgrading\" an Angular component.\n *\n * @usageNotes\n * ### Examples\n *\n * Let's assume that you have an Angular component called `ng2Heroes` that needs\n * to be made available in AngularJS templates.\n *\n * {@example upgrade/static/ts/full/module.ts region=\"ng2-heroes\"}\n *\n * We must create an AngularJS [directive](https://docs.angularjs.org/guide/directive)\n * that will make this Angular component available inside AngularJS templates.\n * The `downgradeComponent()` function returns a factory function that we\n * can use to define the AngularJS directive that wraps the \"downgraded\" component.\n *\n * {@example upgrade/static/ts/full/module.ts region=\"ng2-heroes-wrapper\"}\n *\n * For more details and examples on downgrading Angular components to AngularJS components please\n * visit the [Upgrade guide](https://angular.io/guide/upgrade#using-angular-components-from-angularjs-code).\n *\n * @param info contains information about the Component that is being downgraded:\n *\n * - `component: Type<any>`: The type of the Component that will be downgraded\n * - `downgradedModule?: string`: The name of the downgraded module (if any) that the component\n * \"belongs to\", as returned by a call to `downgradeModule()`. It is the module, whose\n * corresponding Angular module will be bootstrapped, when the component needs to be instantiated.\n * <br />\n * (This option is only necessary when using `downgradeModule()` to downgrade more than one\n * Angular module.)\n * - `propagateDigest?: boolean`: Whether to perform {@link /api/core/ChangeDetectorRef#detectChanges detectChanges} on the\n * component on every {@link https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$digest $digest}.\n * If set to `false`, change detection will still be performed when any of the component's inputs changes.\n * (Default: true)\n *\n * @returns a factory function that can be used to register the component in an\n * AngularJS module.\n *\n * @publicApi\n */\nexport function downgradeComponent(info: {\n component: Type<any>;\n downgradedModule?: string;\n propagateDigest?: boolean;\n /** @deprecated since v4. This parameter is no longer used */\n inputs?: string[];\n /** @deprecated since v4. This parameter is no longer used */\n outputs?: string[];\n /** @deprecated since v4. This parameter is no longer used */\n selectors?: string[];\n}): any /* angular.IInjectable */ {\n const directiveFactory: IAnnotatedFunction = function (\n $compile: ICompileService,\n $injector: IInjectorService,\n $parse: IParseService,\n ): IDirective {\n const unsafelyOverwriteSignalInputs =\n (info as {unsafelyOverwriteSignalInputs?: boolean}).unsafelyOverwriteSignalInputs ?? false;\n // When using `downgradeModule()`, we need to handle certain things specially. For example:\n // - We always need to attach the component view to the `ApplicationRef` for it to be\n // dirty-checked.\n // - We need to ensure callbacks to Angular APIs (e.g. change detection) are run inside the\n // Angular zone.\n // NOTE: This is not needed, when using `UpgradeModule`, because `$digest()` will be run\n // inside the Angular zone (except if explicitly escaped, in which case we shouldn't\n // force it back in).\n const isNgUpgradeLite = getUpgradeAppType($injector) === UpgradeAppType.Lite;\n const wrapCallback: <T>(cb: () => T) => typeof cb = !isNgUpgradeLite\n ? (cb) => cb\n : (cb) => () => (NgZone.isInAngularZone() ? cb() : ngZone.run(cb));\n let ngZone: NgZone;\n\n // When downgrading multiple modules, special handling is needed wrt injectors.\n const hasMultipleDowngradedModules = isNgUpgradeLite && getDowngradedModuleCount($injector) > 1;\n\n return {\n restrict: 'E',\n terminal: true,\n require: [REQUIRE_INJECTOR, REQUIRE_NG_MODEL],\n // Controller needs to be set so that `angular-component-router.js` (from beta Angular 2)\n // configuration properties can be made available. See:\n // See G3: javascript/angular2/angular1_router_lib.js\n // https://github.com/angular/angular.js/blob/47bf11ee94664367a26ed8c91b9b586d3dd420f5/src/ng/compile.js#L1670-L1691.\n controller: function () {},\n link: (scope: IScope, element: IAugmentedJQuery, attrs: IAttributes, required: any[]) => {\n // We might have to compile the contents asynchronously, because this might have been\n // triggered by `UpgradeNg1ComponentAdapterBuilder`, before the Angular templates have\n // been compiled.\n\n const ngModel: INgModelController = required[1];\n const parentInjector: Injector | Thenable<Injector> | undefined = required[0];\n let moduleInjector: Injector | Thenable<Injector> | undefined = undefined;\n let ranAsync = false;\n\n if (!parentInjector || hasMultipleDowngradedModules) {\n const downgradedModule = info.downgradedModule || '';\n const lazyModuleRefKey = `${LAZY_MODULE_REF}${downgradedModule}`;\n const attemptedAction = `instantiating component '${getTypeName(info.component)}'`;\n\n validateInjectionKey($injector, downgradedModule, lazyModuleRefKey, attemptedAction);\n\n const lazyModuleRef = $injector.get(lazyModuleRefKey) as LazyModuleRef;\n moduleInjector = lazyModuleRef.injector ?? lazyModuleRef.promise;\n }\n\n // Notes:\n //\n // There are two injectors: `finalModuleInjector` and `finalParentInjector` (they might be\n // the same instance, but that is irrelevant):\n // - `finalModuleInjector` is used to retrieve `ComponentFactoryResolver`, thus it must be\n // on the same tree as the `NgModule` that declares this downgraded component.\n // - `finalParentInjector` is used for all other injection purposes.\n // (Note that Angular knows to only traverse the component-tree part of that injector,\n // when looking for an injectable and then switch to the module injector.)\n //\n // There are basically three cases:\n // - If there is no parent component (thus no `parentInjector`), we bootstrap the downgraded\n // `NgModule` and use its injector as both `finalModuleInjector` and\n // `finalParentInjector`.\n // - If there is a parent component (and thus a `parentInjector`) and we are sure that it\n // belongs to the same `NgModule` as this downgraded component (e.g. because there is only\n // one downgraded module, we use that `parentInjector` as both `finalModuleInjector` and\n // `finalParentInjector`.\n // - If there is a parent component, but it may belong to a different `NgModule`, then we\n // use the `parentInjector` as `finalParentInjector` and this downgraded component's\n // declaring `NgModule`'s injector as `finalModuleInjector`.\n // Note 1: If the `NgModule` is already bootstrapped, we just get its injector (we don't\n // bootstrap again).\n // Note 2: It is possible that (while there are multiple downgraded modules) this\n // downgraded component and its parent component both belong to the same NgModule.\n // In that case, we could have used the `parentInjector` as both\n // `finalModuleInjector` and `finalParentInjector`, but (for simplicity) we are\n // treating this case as if they belong to different `NgModule`s. That doesn't\n // really affect anything, since `parentInjector` has `moduleInjector` as ancestor\n // and trying to resolve `ComponentFactoryResolver` from either one will return\n // the same instance.\n\n // If there is a parent component, use its injector as parent injector.\n // If this is a \"top-level\" Angular component, use the module injector.\n const finalParentInjector = parentInjector || moduleInjector!;\n\n // If this is a \"top-level\" Angular component or the parent component may belong to a\n // different `NgModule`, use the module injector for module-specific dependencies.\n // If there is a parent component that belongs to the same `NgModule`, use its injector.\n const finalModuleInjector = moduleInjector || parentInjector!;\n\n const doDowngrade = (injector: Injector, moduleInjector: Injector) => {\n const injectorPromise = new ParentInjectorPromise(element);\n const facade = new DowngradeComponentAdapter(\n element,\n attrs,\n scope,\n ngModel,\n moduleInjector.get(EnvironmentInjector),\n injector,\n $compile,\n $parse,\n info.component,\n wrapCallback,\n unsafelyOverwriteSignalInputs,\n );\n\n const projectableNodes = facade.compileContents();\n const componentRef = facade.createComponentAndSetup(\n projectableNodes,\n isNgUpgradeLite,\n info.propagateDigest,\n );\n\n injectorPromise.resolve(componentRef.injector);\n\n if (ranAsync) {\n // If this is run async, it is possible that it is not run inside a\n // digest and initial input values will not be detected.\n scope.$evalAsync(() => {});\n }\n };\n\n const downgradeFn = !isNgUpgradeLite\n ? doDowngrade\n : (pInjector: Injector, mInjector: Injector) => {\n if (!ngZone) {\n ngZone = pInjector.get(NgZone);\n }\n\n wrapCallback(() => doDowngrade(pInjector, mInjector))();\n };\n\n // NOTE:\n // Not using `ParentInjectorPromise.all()` (which is inherited from `SyncPromise`), because\n // Closure Compiler (or some related tool) complains:\n // `TypeError: ...$src$downgrade_component_ParentInjectorPromise.all is not a function`\n SyncPromise.all([finalParentInjector, finalModuleInjector]).then(([pInjector, mInjector]) =>\n downgradeFn(pInjector, mInjector),\n );\n\n ranAsync = true;\n },\n };\n };\n\n // bracket-notation because of closure - see #14441\n directiveFactory['$inject'] = [$COMPILE, $INJECTOR, $PARSE];\n return directiveFactory;\n}\n\n/**\n * Synchronous promise-like object to wrap parent injectors,\n * to preserve the synchronous nature of AngularJS's `$compile`.\n */\nclass ParentInjectorPromise extends SyncPromise<Injector> {\n private injectorKey: string = controllerKey(INJECTOR_KEY);\n\n constructor(private element: IAugmentedJQuery) {\n super();\n\n // Store the promise on the element.\n element.data!(this.injectorKey, this);\n }\n\n override resolve(injector: Injector): void {\n // Store the real injector on the element.\n this.element.data!(this.injectorKey, injector);\n\n // Release the element to prevent memory leaks.\n this.element = null!;\n\n // Resolve the promise.\n super.resolve(injector);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Injector} from '@angular/core';\n\nimport {IInjectorService} from './angular1';\nimport {$INJECTOR, INJECTOR_KEY} from './constants';\nimport {getTypeName, isFunction, validateInjectionKey} from './util';\n\n/**\n * @description\n *\n * A helper function to allow an Angular service to be accessible from AngularJS.\n *\n * *Part of the [upgrade/static](api?query=upgrade%2Fstatic)\n * library for hybrid upgrade apps that support AOT compilation*\n *\n * This helper function returns a factory function that provides access to the Angular\n * service identified by the `token` parameter.\n *\n * @usageNotes\n * ### Examples\n *\n * First ensure that the service to be downgraded is provided in an `NgModule`\n * that will be part of the upgrade application. For example, let's assume we have\n * defined `HeroesService`\n *\n * {@example upgrade/static/ts/full/module.ts region=\"ng2-heroes-service\"}\n *\n * and that we have included this in our upgrade app `NgModule`\n *\n * {@example upgrade/static/ts/full/module.ts region=\"ng2-module\"}\n *\n * Now we can register the `downgradeInjectable` factory function for the service\n * on an AngularJS module.\n *\n * {@example upgrade/static/ts/full/module.ts region=\"downgrade-ng2-heroes-service\"}\n *\n * Inside an AngularJS component's controller we can get hold of the\n * downgraded service via the name we gave when downgrading.\n *\n * {@example upgrade/static/ts/full/module.ts region=\"example-app\"}\n *\n * <div class=\"docs-alert docs-alert-important\">\n *\n * When using `downgradeModule()`, downgraded injectables will not be available until the Angular\n * module that provides them is instantiated. In order to be safe, you need to ensure that the\n * downgraded injectables are not used anywhere _outside_ the part of the app where it is\n * guaranteed that their module has been instantiated.\n *\n * For example, it is _OK_ to use a downgraded service in an upgraded component that is only used\n * from a downgraded Angular component provided by the same Angular module as the injectable, but\n * it is _not OK_ to use it in an AngularJS component that may be used independently of Angular or\n * use it in a downgraded Angular component from a different module.\n *\n * </div>\n *\n * @param token an `InjectionToken` that identifies a service provided from Angular.\n * @param downgradedModule the name of the downgraded module (if any) that the injectable\n * \"belongs to\", as returned by a call to `downgradeModule()`. It is the module, whose injector will\n * be used for instantiating the injectable.<br />\n * (This option is only necessary when using `downgradeModule()` to downgrade more than one Angular\n * module.)\n *\n * @returns a [factory function](https://docs.angularjs.org/guide/di) that can be\n * used to register the service on an AngularJS module.\n *\n * @publicApi\n */\nexport function downgradeInjectable(token: any, downgradedModule: string = ''): Function {\n const factory = function ($injector: IInjectorService) {\n const injectorKey = `${INJECTOR_KEY}${downgradedModule}`;\n const injectableName = isFunction(token) ? getTypeName(token) : String(token);\n const attemptedAction = `instantiating injectable '${injectableName}'`;\n\n validateInjectionKey($injector, downgradedModule, injectorKey, attemptedAction);\n\n try {\n const injector: Injector = $injector.get(injectorKey);\n return injector.get(token);\n } catch (err) {\n throw new Error(`Error while ${attemptedAction}: ${(err as Error).message || err}`);\n }\n };\n (factory as any)['$inject'] = [$INJECTOR];\n\n return factory;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\n/**\n * @fileoverview\n * A module to facilitate use of a Trusted Types policy internally within\n * the upgrade package. It lazily constructs the Trusted Types policy, providing\n * helper utilities for promoting strings to Trusted Types. When Trusted Types\n * are not available, strings are used as a fallback.\n * @security All use of this module is security-sensitive and should go through\n * security review.\n */\n\nimport {TrustedHTML, TrustedTypePolicy, TrustedTypePolicyFactory} from './trusted_types_defs';\n\n/**\n * The Trusted Types policy, or null if Trusted Types are not\n * enabled/supported, or undefined if the policy has not been created yet.\n */\nlet policy: TrustedTypePolicy | null | undefined;\n\n/**\n * Returns the Trusted Types policy, or null if Trusted Types are not\n * enabled/supported. The first call to this function will create the policy.\n */\nfunction getPolicy(): TrustedTypePolicy | null {\n if (policy === undefined) {\n policy = null;\n const windowWithTrustedTypes = window as unknown as {trustedTypes?: TrustedTypePolicyFactory};\n if (windowWithTrustedTypes.trustedTypes) {\n try {\n policy = windowWithTrustedTypes.trustedTypes.createPolicy('angular#unsafe-upgrade', {\n createHTML: (s: string) => s,\n });\n } catch {\n // trustedTypes.createPolicy throws if called with a name that is\n // already registered, even in report-only mode. Until the API changes,\n // catch the error not to break the applications functionally. In such\n // cases, the code will fall back to using strings.\n }\n }\n }\n return policy;\n}\n\n/**\n * Unsafely promote a legacy AngularJS template to a TrustedHTML, falling back\n * to strings when Trusted Types are not available.\n * @security This is a security-sensitive function; any use of this function\n * must go through security review. In particular, the template string should\n * always be under full control of the application author, as untrusted input\n * can cause an XSS vulnerability.\n */\nexport function trustedHTMLFromLegacyTemplate(html: string): TrustedHTML | string {\n return getPolicy()?.createHTML(html) || html;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ElementRef, Injector, SimpleChanges} from '@angular/core';\n\nimport {\n DirectiveRequireProperty,\n element as angularElement,\n IAugmentedJQuery,\n ICloneAttachFunction,\n ICompileService,\n IController,\n IControllerService,\n IDirective,\n IHttpBackendService,\n IInjectorService,\n ILinkFn,\n IScope,\n ITemplateCacheService,\n SingleOrListOrMap,\n} from './angular1';\nimport {$COMPILE, $CONTROLLER, $HTTP_BACKEND, $INJECTOR, $TEMPLATE_CACHE} from './constants';\nimport {cleanData, controllerKey, directiveNormalize, isFunction} from './util';\nimport {TrustedHTML} from './security/trusted_types_defs';\nimport {trustedHTMLFromLegacyTemplate} from './security/trusted_types';\n\n// Constants\nconst REQUIRE_PREFIX_RE = /^(\\^\\^?)?(\\?)?(\\^\\^?)?/;\n\n// Interfaces\nexport interface IBindingDestination {\n [key: string]: any;\n $onChanges?: (changes: SimpleChanges) => void;\n}\n\nexport interface IControllerInstance extends IBindingDestination {\n $doCheck?: () => void;\n $onDestroy?: () => void;\n $onInit?: () => void;\n $postLink?: () => void;\n}\n\n// Classes\nexport class UpgradeHelper {\n public readonly $injector: IInjectorService;\n public readonly element: Element;\n public readonly $element: IAugmentedJQuery;\n public readonly directive: IDirective;\n\n private readonly $compile: ICompileService;\n private readonly $controller: IControllerService;\n\n constructor(\n injector: Injector,\n private name: string,\n elementRef: ElementRef,\n directive?: IDirective,\n ) {\n this.$injector = injector.get($INJECTOR);\n this.$compile = this.$injector.get($COMPILE);\n this.$controller = this.$injector.get($CONTROLLER);\n\n this.element = elementRef.nativeElement;\n this.$element = angularElement(this.element);\n\n this.directive = directive ?? UpgradeHelper.getDirective(this.$injector, name);\n }\n\n static getDirective($injector: IInjectorService, name: string): IDirective {\n const directives: IDirective[] = $injector.get(name + 'Directive');\n if (directives.length > 1) {\n throw new Error(`Only support single directive definition for: ${name}`);\n }\n\n const directive = directives[0];\n\n // AngularJS will transform `link: xyz` to `compile: () => xyz`. So we can only tell there was a\n // user-defined `compile` if there is no `link`. In other cases, we will just ignore `compile`.\n if (directive.compile && !directive.link) notSupported(name, 'compile');\n if (directive.replace) notSupported(name, 'replace');\n if (directive.terminal) notSupported(name, 'terminal');\n\n return directive;\n }\n\n static getTemplate(\n $injector: IInjectorService,\n directive: IDirective,\n fetchRemoteTemplate = false,\n $element?: IAugmentedJQuery,\n ): string | TrustedHTML | Promise<string | TrustedHTML> {\n if (directive.template !== undefined) {\n return trustedHTMLFromLegacyTemplate(getOrCall<string>(directive.template, $element));\n } else if (directive.templateUrl) {\n const $templateCache = $injector.get($TEMPLATE_CACHE) as ITemplateCacheService;\n const url = getOrCall<string>(directive.templateUrl, $element);\n const template = $templateCache.get(url);\n\n if (template !== undefined) {\n return trustedHTMLFromLegacyTemplate(template);\n } else if (!fetchRemoteTemplate) {\n throw new Error('loading directive templates asynchronously is not supported');\n }\n\n return new Promise((resolve, reject) => {\n const $httpBackend = $injector.get($HTTP_BACKEND) as IHttpBackendService;\n $httpBackend('GET', url, null, (status: number, response: string) => {\n if (status === 200) {\n resolve(trustedHTMLFromLegacyTemplate($templateCache.put(url, response)));\n } else {\n reject(`GET component template from '${url}' returned '${status}: ${response}'`);\n }\n });\n });\n } else {\n throw new Error(`Directive '${directive.name}' is not a component, it is missing template.`);\n }\n }\n\n buildController(controllerType: IController, $scope: IScope) {\n // TODO: Document that we do not pre-assign bindings on the controller instance.\n // Quoted properties below so that this code can be optimized with Closure Compiler.\n const locals = {'$scope': $scope, '$element': this.$element};\n const controller = this.$controller(controllerType, locals, null, this.directive.controllerAs);\n\n this.$element.data?.(controllerKey(this.directive.name!), controller);\n\n return controller;\n }\n\n compileTemplate(template?: string | TrustedHTML): ILinkFn {\n if (template === undefined) {\n template = UpgradeHelper.getTemplate(this.$injector, this.directive, false, this.$element) as\n | string\n | TrustedHTML;\n }\n\n return this.compileHtml(template);\n }\n\n onDestroy($scope: IScope, controllerInstance?: any) {\n if (controllerInstance && isFunction(controllerInstance.$onDestroy)) {\n controllerInstance.$onDestroy();\n }\n $scope.$destroy();\n cleanData(this.element);\n }\n\n prepareTransclusion(): ILinkFn | undefined {\n const transclude = this.directive.transclude;\n const contentChildNodes = this.extractChildNodes();\n const attachChildrenFn: ILinkFn = (scope, cloneAttachFn) => {\n // Since AngularJS v1.5.8, `cloneAttachFn` will try to destroy the transclusion scope if\n // `$template` is empty. Since the transcluded content comes from Angular, not AngularJS,\n // there will be no transclusion scope here.\n // Provide a dummy `scope.$destroy()` method to prevent `cloneAttachFn` from throwing.\n scope = scope || {$destroy: () => undefined};\n return cloneAttachFn!($template, scope);\n };\n let $template = contentChildNodes;\n\n if (transclude) {\n const slots = Object.create(null);\n\n if (typeof transclude === 'object') {\n $template = [];\n\n const slotMap = Object.create(null);\n const filledSlots = Object.create(null);\n\n // Parse the element selectors.\n Object.keys(transclude).forEach((slotName) => {\n let selector = transclude[slotName];\n const optional = selector.charAt(0) === '?';\n selector = optional ? selector.substring(1) : selector;\n\n slotMap[selector] = slotName;\n slots[slotName] = null; // `null`: Defined but not yet filled.\n filledSlots[slotName] = optional; // Consider optional slots as filled.\n });\n\n // Add the matching elements into their slot.\n contentChildNodes.forEach((node) => {\n const slotName = slotMap[directiveNormalize(node.nodeName.toLowerCase())];\n if (slotName) {\n filledSlots[slotName] = true;\n slots[slotName] = slots[slotName] || [];\n slots[slotName].push(node);\n } else {\n $template.push(node);\n }\n });\n\n // Check for required slots that were not filled.\n Object.keys(filledSlots).forEach((slotName) => {\n if (!filledSlots[slotName]) {\n throw new Error(`Required transclusion slot '${slotName}' on directive: ${this.name}`);\n }\n });\n\n Object.keys(slots)\n .filter((slotName) => slots[slotName])\n .forEach((slotName) => {\n const nodes = slots[slotName];\n slots[slotName] = (scope: IScope, cloneAttach: ICloneAttachFunction) => {\n return cloneAttach!(nodes, scope);\n };\n });\n }\n\n // Attach `$$slots` to default slot transclude fn.\n attachChildrenFn.$$slots = slots;\n\n // AngularJS v1.6+ ignores empty or whitespace-only transcluded text nodes. But Angular\n // removes all text content after the first interpolation and updates it later, after\n // evaluating the expressions. This would result in AngularJS failing to recognize text\n // nodes that start with an interpolation as transcluded content and use the fallback\n // content instead.\n // To avoid this issue, we add a\n // [zero-width non-joiner character](https://en.wikipedia.org/wiki/Zero-width_non-joiner)\n // to empty text nodes (which can only be a result of Angular removing their initial content).\n // NOTE: Transcluded text content that starts with whitespace followed by an interpolation\n // will still fail to be detected by AngularJS v1.6+\n $template.forEach((node) => {\n if (node.nodeType === Node.TEXT_NODE && !node.nodeValue) {\n node.nodeValue = '\\u200C';\n }\n });\n }\n\n return attachChildrenFn;\n }\n\n resolveAndBindRequiredControllers(controllerInstance: IControllerInstance | null) {\n const directiveRequire = this.getDirectiveRequire();\n const requiredControllers = this.resolveRequire(directiveRequire);\n\n if (controllerInstance && this.directive.bindToController && isMap(directiveRequire)) {\n const requiredControllersMap = requiredControllers as {[key: string]: IControllerInstance};\n Object.keys(requiredControllersMap).forEach((key) => {\n controllerInstance[key] = requiredControllersMap[key];\n });\n }\n\n return requiredControllers;\n }\n\n private compileHtml(html: string | TrustedHTML): ILinkFn {\n this.element.innerHTML = html;\n return this.$compile(this.element.childNodes);\n }\n\n private extractChildNodes(): Node[] {\n const childNodes: Node[] = [];\n let childNode: Node | null;\n\n while ((childNode = this.element.firstChild)) {\n (childNode as Element | Comment | Text).remove();\n childNodes.push(childNode);\n }\n\n return childNodes;\n }\n\n private getDirectiveRequire(): DirectiveRequireProperty {\n const require = this.directive.require || (this.directive.controller && this.directive.name)!;\n\n if (isMap(require)) {\n Object.entries(require).forEach(([key, value]) => {\n const match = value.match(REQUIRE_PREFIX_RE)!;\n const name = value.substring(match[0].length);\n\n if (!name) {\n require[key] = match[0] + key;\n }\n });\n }\n\n return require;\n }\n\n private resolveRequire(\n require: DirectiveRequireProperty,\n ): SingleOrListOrMap<IControllerInstance> | null {\n if (!require) {\n return null;\n } else if (Array.isArray(require)) {\n return require.map((req) => this.resolveRequire(req));\n } else if (typeof require === 'object') {\n const value: {[key: string]: IControllerInstance} = {};\n Object.keys(require).forEach((key) => (value[key] = this.resolveRequire(require[key])!));\n return value;\n } else if (typeof require === 'string') {\n const match = require.match(REQUIRE_PREFIX_RE)!;\n const inheritType = match[1] || match[3];\n\n const name = require.substring(match[0].length);\n const isOptional = !!match[2];\n const searchParents = !!inheritType;\n const startOnParent = inheritType === '^^';\n\n const ctrlKey = controllerKey(name);\n const elem = startOnParent ? this.$element.parent!() : this.$element;\n const value = searchParents ? elem.inheritedData!(ctrlKey) : elem.data!(ctrlKey);\n\n if (!value && !isOptional) {\n throw new Error(\n `Unable to find required '${require}' in upgraded directive '${this.name}'.`,\n );\n }\n\n return value;\n } else {\n throw new Error(\n `Unrecognized 'require' syntax on upgraded directive '${this.name}': ${require}`,\n );\n }\n }\n}\n\nfunction getOrCall<T>(property: T | Function, ...args: any[]): T {\n return isFunction(property) ? property(...args) : property;\n}\n\n// NOTE: Only works for `typeof T !== 'object'`.\nfunction isMap<T>(value: SingleOrListOrMap<T>): value is {[key: string]: T} {\n return value && !Array.isArray(value) && typeof value === 'object';\n}\n\nfunction notSupported(name: string, feature: string) {\n throw new Error(`Upgraded directive '${name}' contains unsupported feature: '${feature}'.`);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {IInjectorService} from '../../src/common/src/angular1';\n\n// We have to do a little dance to get the ng1 injector into the module injector.\n// We store the ng1 injector so that the provider in the module injector can access it\n// Then we \"get\" the ng1 injector from the module injector, which triggers the provider to read\n// the stored injector and release the reference to it.\nlet tempInjectorRef: IInjectorService | null = null;\nexport function setTempInjectorRef(injector: IInjectorService) {\n tempInjectorRef = injector;\n}\nexport function injectorFactory() {\n if (!tempInjectorRef) {\n throw new Error('Trying to get the AngularJS injector before it being set.');\n }\n\n const injector: IInjectorService = tempInjectorRef;\n tempInjectorRef = null; // clear the value to prevent memory leaks\n return injector;\n}\n\nexport function rootScopeFactory(i: IInjectorService) {\n return i.get('$rootScope');\n}\n\nexport function compileFactory(i: IInjectorService) {\n return i.get('$compile');\n}\n\nexport function parseFactory(i: IInjectorService) {\n return i.get('$parse');\n}\n\nexport const angular1Providers = [\n // We must use exported named functions for the ng2 factories to keep the compiler happy:\n // > Metadata collected contains an error that will be reported at runtime:\n // > Function calls are not supported.\n // > Consider replacing the function or lambda with a reference to an exported function\n {provide: '$injector', useFactory: injectorFactory, deps: []},\n {provide: '$rootScope', useFactory: rootScopeFactory, deps: ['$injector']},\n {provide: '$compile', useFactory: compileFactory, deps: ['$injector']},\n {provide: '$parse', useFactory: parseFactory, deps: ['$injector']},\n];\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Injector,\n ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR,\n} from '@angular/core';\n\nexport class NgAdapterInjector implements Injector {\n constructor(private modInjector: Injector) {}\n\n // When Angular locate a service in the component injector tree, the not found value is set to\n // `NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR`. In such a case we should not walk up to the module\n // injector.\n // AngularJS only supports a single tree and should always check the module injector.\n get(token: any, notFoundValue?: any): any {\n if (notFoundValue === NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR) {\n return notFoundValue;\n }\n\n return this.modInjector.get(token, notFoundValue);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Injector,\n NgModuleFactory,\n NgModuleRef,\n PlatformRef,\n StaticProvider,\n Type,\n ɵinternalProvideZoneChangeDetection as internalProvideZoneChangeDetection,\n} from '@angular/core';\nimport {platformBrowser} from '@angular/platform-browser';\n\nimport {ɵangular1, ɵconstants, ɵutil} from '../common';\n\nimport {angular1Providers, setTempInjectorRef} from './angular1_providers';\nimport {NgAdapterInjector} from './util';\n\nlet moduleUid = 0;\n\n/**\n * @description\n *\n * A helper function for creating an AngularJS module that can bootstrap an Angular module\n * \"on-demand\" (possibly lazily) when a {@link downgradeComponent downgraded component} needs to be\n * instantiated.\n *\n * *Part of the [upgrade/static](api?query=upgrade/static) library for hybrid upgrade apps that\n * support AOT compilation.*\n *\n * It allows loading/bootstrapping the Angular part of a hybrid application lazily and not having to\n * pay the cost up-front. For example, you can have an AngularJS application that uses Angular for\n * specific routes and only instantiate the Angular modules if/when the user visits one of these\n * routes.\n *\n * The Angular module will be bootstrapped once (when requested for the first time) and the same\n * reference will be used from that point onwards.\n *\n * `downgradeModule()` requires either an `NgModuleFactory`, `NgModule` class or a function:\n * - `NgModuleFactory`: If you pass an `NgModuleFactory`, it will be used to instantiate a module\n * using `platformBrowser`'s {@link PlatformRef#bootstrapModuleFactory bootstrapModuleFactory()}.\n * NOTE: this type of the argument is deprecated. Please either provide an `NgModule` class or a\n * bootstrap function instead.\n * - `NgModule` class: If you pass an NgModule class, it will be used to instantiate a module\n * using `platformBrowser`'s {@link PlatformRef#bootstrapModule bootstrapModule()}.\n * - `Function`: If you pass a function, it is expected to return a promise resolving to an\n * `NgModuleRef`. The function is called with an array of extra {@link StaticProvider Providers}\n * that are expected to be available from the returned `NgModuleRef`'s `Injector`.\n *\n * `downgradeModule()` returns the name of the created AngularJS wrapper module. You can use it to\n * declare a dependency in your main AngularJS module.\n *\n * {@example upgrade/static/ts/lite/module.ts region=\"basic-how-to\"}\n *\n * For more details on how to use `downgradeModule()` see\n * [Upgrading for Performance](https://angular.io/guide/upgrade).\n *\n * @usageNotes\n *\n * Apart from `UpgradeModule`, you can use the rest of the `upgrade/static` helpers as usual to\n * build a hybrid application. Note that the Angular pieces (e.g. downgraded services) will not be\n * available until the downgraded module has been bootstrapped, i.e. by instantiating a downgraded\n * component.\n *\n * <div class=\"docs-alert docs-alert-important\">\n *\n * You cannot use `downgradeModule()` and `UpgradeModule` in the same hybrid application.<br />\n * Use one or the other.\n *\n * </div>\n *\n * ### Differences with `UpgradeModule`\n *\n * Besides their different API, there are two important internal differences between\n * `downgradeModule()` and `UpgradeModule` that affect the behavior of hybrid applications:\n *\n * 1. Unlike `UpgradeModule`, `downgradeModule()` does not bootstrap the main AngularJS module\n * inside the {@link NgZone Angular zone}.\n * 2. Unlike `UpgradeModule`, `downgradeModule()` does not automatically run a\n * [$digest()](https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$digest) when changes are\n * detected in the Angular part of the application.\n *\n * What this means is that applications using `UpgradeModule` will run change detection more\n * frequently in order to ensure that both frameworks are properly notified about possible changes.\n * This will inevitably result in more change detection runs than necessary.\n *\n * `downgradeModule()`, on the other side, does not try to tie the two change detection systems as\n * tightly, restricting the explicit change detection runs only to cases where it knows it is\n * necessary (e.g. when the inputs of a downgraded component change). This improves performance,\n * especially in change-detection-heavy applications, but leaves it up to the developer to manually\n * notify each framework as needed.\n *\n * For a more detailed discussion of the differences and their implications, see\n * [Upgrading for Performance](https://angular.io/guide/upgrade).\n *\n * <div class=\"docs-alert docs-alert-helpful\">\n *\n * You can manually trigger a change detection run in AngularJS using\n * [scope.$apply(...)](https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$apply) or\n * [$rootScope.$digest()](https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$digest).\n *\n * You can manually trigger a change detection run in Angular using {@link NgZone#run\n * ngZone.run(...)}.\n *\n * </div>\n *\n * ### Downgrading multiple modules\n *\n * It is possible to downgrade multiple modules and include them in an AngularJS application. In\n * that case, each downgraded module will be bootstrapped when an associated downgraded component or\n * injectable needs to be instantiated.\n *\n * Things to keep in mind, when downgrading multiple modules:\n *\n * - Each downgraded component/injectable needs to be explicitly associated with a downgraded\n * module. See `downgradeComponent()` and `downgradeInjectable()` for more details.\n *\n * - If you want some injectables to be shared among all downgraded modules, you can provide them as\n * `StaticProvider`s, when creating the `PlatformRef` (e.g. via `platformBrowser` or\n * `platformBrowserDynamic`).\n *\n * - When using {@link PlatformRef#bootstrapModule `bootstrapModule()`} or\n * {@link PlatformRef#bootstrapModuleFactory `bootstrapModuleFactory()`} to bootstrap the\n * downgraded modules, each one is considered a \"root\" module. As a consequence, a new instance\n * will be created for every injectable provided in `\"root\"` (via\n * {@link /api/core/Injectable#providedIn providedIn}\n * If this is not your intention, you can have a shared module (that will act as act as the \"root\"\n * module) and create all downgraded modules using that module's injector:\n *\n * {@example upgrade/static/ts/lite-multi-shared/module.ts region=\"shared-root-module\"}\n *\n * @publicApi\n */\nexport function downgradeModule<T>(\n moduleOrBootstrapFn: Type<T> | ((extraProviders: StaticProvider[]) => Promise<NgModuleRef<T>>),\n): string;\n/**\n * @description\n *\n * A helper function for creating an AngularJS module that can bootstrap an Angular module\n * \"on-demand\" (possibly lazily) when a {@link downgradeComponent downgraded component} needs to be\n * instantiated.\n *\n * *Part of the [upgrade/static](api?query=upgrade/static) library for hybrid upgrade apps that\n * support AOT compilation.*\n *\n * It allows loading/bootstrapping the Angular part of a hybrid application lazily and not having to\n * pay the cost up-front. For example, you can have an AngularJS application that uses Angular for\n * specific routes and only instantiate the Angular modules if/when the user visits one of these\n * routes.\n *\n * The Angular module will be bootstrapped once (when requested for the first time) and the same\n * reference will be used from that point onwards.\n *\n * `downgradeModule()` requires either an `NgModuleFactory`, `NgModule` class or a function:\n * - `NgModuleFactory`: If you pass an `NgModuleFactory`, it will be used to instantiate a module\n * using `platformBrowser`'s {@link PlatformRef#bootstrapModuleFactory bootstrapModuleFactory()}.\n * NOTE: this type of the argument is deprecated. Please either provide an `NgModule` class or a\n * bootstrap function instead.\n * - `NgModule` class: If you pass an NgModule class, it will be used to instantiate a module\n * using `platformBrowser`'s {@link PlatformRef#bootstrapModule bootstrapModule()}.\n * - `Function`: If you pass a function, it is expected to return a promise resolving to an\n * `NgModuleRef`. The function is called with an array of extra {@link StaticProvider Providers}\n * that are expected to be available from the returned `NgModuleRef`'s `Injector`.\n *\n * `downgradeModule()` returns the name of the created AngularJS wrapper module. You can use it to\n * declare a dependency in your main AngularJS module.\n *\n * {@example upgrade/static/ts/lite/module.ts region=\"basic-how-to\"}\n *\n * For more details on how to use `downgradeModule()` see\n * [Upgrading for Performance](https://angular.io/guide/upgrade).\n *\n * @usageNotes\n *\n * Apart from `UpgradeModule`, you can use the rest of the `upgrade/static` helpers as usual to\n * build a hybrid application. Note that the Angular pieces (e.g. downgraded services) will not be\n * available until the downgraded module has been bootstrapped, i.e. by instantiating a downgraded\n * component.\n *\n * <div class=\"docs-alert docs-alert-important\">\n *\n * You cannot use `downgradeModule()` and `UpgradeModule` in the same hybrid application.<br />\n * Use one or the other.\n *\n * </div>\n *\n * ### Differences with `UpgradeModule`\n *\n * Besides their different API, there are two important internal differences between\n * `downgradeModule()` and `UpgradeModule` that affect the behavior of hybrid applications:\n *\n * 1. Unlike `UpgradeModule`, `downgradeModule()` does not bootstrap the main AngularJS module\n * inside the {@link NgZone Angular zone}.\n * 2. Unlike `UpgradeModule`, `downgradeModule()` does not automatically run a\n * [$digest()](https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$digest) when changes are\n * detected in the Angular part of the application.\n *\n * What this means is that applications using `UpgradeModule` will run change detection more\n * frequently in order to ensure that both frameworks are properly notified about possible changes.\n * This will inevitably result in more change detection runs than necessary.\n *\n * `downgradeModule()`, on the other side, does not try to tie the two change detection systems as\n * tightly, restricting the explicit change detection runs only to cases where it knows it is\n * necessary (e.g. when the inputs of a downgraded component change). This improves performance,\n * especially in change-detection-heavy applications, but leaves it up to the developer to manually\n * notify each framework as needed.\n *\n * For a more detailed discussion of the differences and their implications, see\n * [Upgrading for Performance](https://angular.io/guide/upgrade).\n *\n * <div class=\"docs-alert docs-alert-helpful\">\n *\n * You can manually trigger a change detection run in AngularJS using\n * [scope.$apply(...)](https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$apply) or\n * [$rootScope.$digest()](https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$digest).\n *\n * You can manually trigger a change detection run in Angular using {@link NgZone#run\n * ngZone.run(...)}.\n *\n * </div>\n *\n * ### Downgrading multiple modules\n *\n * It is possible to downgrade multiple modules and include them in an AngularJS application. In\n * that case, each downgraded module will be bootstrapped when an associated downgraded component or\n * injectable needs to be instantiated.\n *\n * Things to keep in mind, when downgrading multiple modules:\n *\n * - Each downgraded component/injectable needs to be explicitly associated with a downgraded\n * module. See `downgradeComponent()` and `downgradeInjectable()` for more details.\n *\n * - If you want some injectables to be shared among all downgraded modules, you can provide them as\n * `StaticProvider`s, when creating the `PlatformRef` (e.g. via `platformBrowser` or\n * `platformBrowserDynamic`).\n *\n * - When using {@link PlatformRef#bootstrapModule `bootstrapModule()`} or\n * {@link PlatformRef#bootstrapModuleFactory `bootstrapModuleFactory()`} to bootstrap the\n * downgraded modules, each one is considered a \"root\" module. As a consequence, a new instance\n * will be created for every injectable provided in `\"root\"` (via\n * {@link /api/core/Injectable#providedIn providedIn}\n * If this is not your intention, you can have a shared module (that will act as act as the \"root\"\n * module) and create all downgraded modules using that module's injector:\n *\n * {@example upgrade/static/ts/lite-multi-shared/module.ts region=\"shared-root-module\"}\n *\n * @publicApi\n *\n * @deprecated Passing `NgModuleFactory` as the `downgradeModule` function argument is deprecated,\n * please pass an NgModule class reference instead.\n */\nexport function downgradeModule<T>(moduleOrBootstrapFn: NgModuleFactory<T>): string;\n/**\n * @description\n *\n * A helper function for creating an AngularJS module that can bootstrap an Angular module\n * \"on-demand\" (possibly lazily) when a {@link downgradeComponent downgraded component} needs to be\n * instantiated.\n *\n * *Part of the [upgrade/static](api?query=upgrade/static) library for hybrid upgrade apps that\n * support AOT compilation.*\n *\n * It allows loading/bootstrapping the Angular part of a hybrid application lazily and not having to\n * pay the cost up-front. For example, you can have an AngularJS application that uses Angular for\n * specific routes and only instantiate the Angular modules if/when the user visits one of these\n * routes.\n *\n * The Angular module will be bootstrapped once (when requested for the first time) and the same\n * reference will be used from that point onwards.\n *\n * `downgradeModule()` requires either an `NgModuleFactory`, `NgModule` class or a function:\n * - `NgModuleFactory`: If you pass an `NgModuleFactory`, it will be used to instantiate a module\n * using `platformBrowser`'s {@link PlatformRef#bootstrapModuleFactory bootstrapModuleFactory()}.\n * NOTE: this type of the argument is deprecated. Please either provide an `NgModule` class or a\n * bootstrap function instead.\n * - `NgModule` class: If you pass an NgModule class, it will be used to instantiate a module\n * using `platformBrowser`'s {@link PlatformRef#bootstrapModule bootstrapModule()}.\n * - `Function`: If you pass a function, it is expected to return a promise resolving to an\n * `NgModuleRef`. The function is called with an array of extra {@link StaticProvider Providers}\n * that are expected to be available from the returned `NgModuleRef`'s `Injector`.\n *\n * `downgradeModule()` returns the name of the created AngularJS wrapper module. You can use it to\n * declare a dependency in your main AngularJS module.\n *\n * {@example upgrade/static/ts/lite/module.ts region=\"basic-how-to\"}\n *\n * For more details on how to use `downgradeModule()` see\n * [Upgrading for Performance](https://angular.io/guide/upgrade).\n *\n * @usageNotes\n *\n * Apart from `UpgradeModule`, you can use the rest of the `upgrade/static` helpers as usual to\n * build a hybrid application. Note that the Angular pieces (e.g. downgraded services) will not be\n * available until the downgraded module has been bootstrapped, i.e. by instantiating a downgraded\n * component.\n *\n * <div class=\"docs-alert docs-alert-important\">\n *\n * You cannot use `downgradeModule()` and `UpgradeModule` in the same hybrid application.<br />\n * Use one or the other.\n *\n * </div>\n *\n * ### Differences with `UpgradeModule`\n *\n * Besides their different API, there are two important internal differences between\n * `downgradeModule()` and `UpgradeModule` that affect the behavior of hybrid applications:\n *\n * 1. Unlike `UpgradeModule`, `downgradeModule()` does not bootstrap the main AngularJS module\n * inside the {@link NgZone Angular zone}.\n * 2. Unlike `UpgradeModule`, `downgradeModule()` does not automatically run a\n * [$digest()](https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$digest) when changes are\n * detected in the Angular part of the application.\n *\n * What this means is that applications using `UpgradeModule` will run change detection more\n * frequently in order to ensure that both frameworks are properly notified about possible changes.\n * This will inevitably result in more change detection runs than necessary.\n *\n * `downgradeModule()`, on the other side, does not try to tie the two change detection systems as\n * tightly, restricting the explicit change detection runs only to cases where it knows it is\n * necessary (e.g. when the inputs of a downgraded component change). This improves performance,\n * especially in change-detection-heavy applications, but leaves it up to the developer to manually\n * notify each framework as needed.\n *\n * For a more detailed discussion of the differences and their implications, see\n * [Upgrading for Performance](https://angular.io/guide/upgrade).\n *\n * <div class=\"docs-alert docs-alert-helpful\">\n *\n * You can manually trigger a change detection run in AngularJS using\n * [scope.$apply(...)](https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$apply) or\n * [$rootScope.$digest()](https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$digest).\n *\n * You can manually trigger a change detection run in Angular using {@link NgZone#run\n * ngZone.run(...)}.\n *\n * </div>\n *\n * ### Downgrading multiple modules\n *\n * It is possible to downgrade multiple modules and include them in an AngularJS application. In\n * that case, each downgraded module will be bootstrapped when an associated downgraded component or\n * injectable needs to be instantiated.\n *\n * Things to keep in mind, when downgrading multiple modules:\n *\n * - Each downgraded component/injectable needs to be explicitly associated with a downgraded\n * module. See `downgradeComponent()` and `downgradeInjectable()` for more details.\n *\n * - If you want some injectables to be shared among all downgraded modules, you can provide them as\n * `StaticProvider`s, when creating the `PlatformRef` (e.g. via `platformBrowser` or\n * `platformBrowserDynamic`).\n *\n * - When using {@link PlatformRef#bootstrapModule `bootstrapModule()`} or\n * {@link PlatformRef#bootstrapModuleFactory `bootstrapModuleFactory()`} to bootstrap the\n * downgraded modules, each one is considered a \"root\" module. As a consequence, a new instance\n * will be created for every injectable provided in `\"root\"` (via\n * {@link /api/core/Injectable#providedIn providedIn}\n * If this is not your intention, you can have a shared module (that will act as act as the \"root\"\n * module) and create all downgraded modules using that module's injector:\n *\n * {@example upgrade/static/ts/lite-multi-shared/module.ts region=\"shared-root-module\"}\n *\n * @publicApi\n */\nexport function downgradeModule<T>(\n moduleOrBootstrapFn:\n Type<T> | NgModuleFactory<T> | ((extraProviders: StaticProvider[]) => Promise<NgModuleRef<T>>),\n): string {\n const lazyModuleName = `${ɵconstants.UPGRADE_MODULE_NAME}.lazy${++moduleUid}`;\n const lazyModuleRefKey = `${ɵconstants.LAZY_MODULE_REF}${lazyModuleName}`;\n const lazyInjectorKey = `${ɵconstants.INJECTOR_KEY}${lazyModuleName}`;\n\n let bootstrapFn: (extraProviders: StaticProvider[]) => Promise<NgModuleRef<T>>;\n if (ɵutil.isNgModuleType(moduleOrBootstrapFn)) {\n // NgModule class\n bootstrapFn = (extraProviders: StaticProvider[]) =>\n platformBrowser(extraProviders).bootstrapModule(moduleOrBootstrapFn, {\n applicationProviders: [internalProvideZoneChangeDetection({})],\n });\n } else if (!ɵutil.isFunction(moduleOrBootstrapFn)) {\n // NgModule factory\n bootstrapFn = (extraProviders: StaticProvider[]) =>\n platformBrowser(extraProviders).bootstrapModuleFactory(moduleOrBootstrapFn, {\n applicationProviders: [internalProvideZoneChangeDetection({})],\n });\n } else {\n // bootstrap function\n bootstrapFn = moduleOrBootstrapFn;\n }\n\n let injector: Injector;\n\n // Create an ng1 module to bootstrap.\n ɵangular1\n .module_(lazyModuleName, [])\n .constant(ɵconstants.UPGRADE_APP_TYPE_KEY, ɵutil.UpgradeAppType.Lite)\n .factory(ɵconstants.INJECTOR_KEY, [lazyInjectorKey, identity])\n .factory(lazyInjectorKey, () => {\n if (!injector) {\n throw new Error(\n 'Trying to get the Angular injector before bootstrapping the corresponding ' +\n 'Angular module.',\n );\n }\n return injector;\n })\n .factory(ɵconstants.LAZY_MODULE_REF, [lazyModuleRefKey, identity])\n .factory(lazyModuleRefKey, [\n ɵconstants.$INJECTOR,\n ($injector: ɵangular1.IInjectorService) => {\n setTempInjectorRef($injector);\n const result: ɵutil.LazyModuleRef = {\n promise: bootstrapFn(angular1Providers).then((ref) => {\n injector = result.injector = new NgAdapterInjector(ref.injector);\n injector.get(ɵconstants.$INJECTOR);\n\n // Destroy the AngularJS app once the Angular `PlatformRef` is destroyed.\n // This does not happen in a typical SPA scenario, but it might be useful for\n // other use-cases where disposing of an Angular/AngularJS app is necessary\n // (such as Hot Module Replacement (HMR)).\n // See https://github.com/angular/angular/issues/39935.\n injector.get(PlatformRef).onDestroy(() => ɵutil.destroyApp($injector));\n\n return injector;\n }),\n };\n return result;\n },\n ])\n .config([\n ɵconstants.$INJECTOR,\n ɵconstants.$PROVIDE,\n ($injector: ɵangular1.IInjectorService, $provide: ɵangular1.IProvideService) => {\n $provide.constant(\n ɵconstants.DOWNGRADED_MODULE_COUNT_KEY,\n ɵutil.getDowngradedModuleCount($injector) + 1,\n );\n },\n ]);\n\n return lazyModuleName;\n}\n\nfunction identity<T = any>(x: T): T {\n return x;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Directive,\n DoCheck,\n ElementRef,\n EventEmitter,\n Injector,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n} from '@angular/core';\n\nimport {ɵangular1, ɵconstants, ɵupgradeHelper, ɵutil} from '../common';\n\nconst NOT_SUPPORTED: any = 'NOT_SUPPORTED';\nconst INITIAL_VALUE = {\n __UNINITIALIZED__: true,\n};\n\nclass Bindings {\n twoWayBoundProperties: string[] = [];\n twoWayBoundLastValues: any[] = [];\n\n expressionBoundProperties: string[] = [];\n\n propertyToOutputMap: {[propName: string]: string} = {};\n}\n\n/**\n * @description\n *\n * A helper class that allows an AngularJS component to be used from Angular.\n *\n * *Part of the [upgrade/static](api?query=upgrade%2Fstatic)\n * library for hybrid upgrade apps that support AOT compilation.*\n *\n * This helper class should be used as a base class for creating Angular directives\n * that wrap AngularJS components that need to be \"upgraded\".\n *\n * @usageNotes\n * ### Examples\n *\n * Let's assume that you have an AngularJS component called `ng1Hero` that needs\n * to be made available in Angular templates.\n *\n * {@example upgrade/static/ts/full/module.ts region=\"ng1-hero\"}\n *\n * We must create a `Directive` that will make this AngularJS component\n * available inside Angular templates.\n *\n * {@example upgrade/static/ts/full/module.ts region=\"ng1-hero-wrapper\"}\n *\n * In this example you can see that we must derive from the `UpgradeComponent`\n * base class but also provide an {@link Directive `@Directive`} decorator. This is\n * because the AOT compiler requires that this information is statically available at\n * compile time.\n *\n * Note that we must do the following:\n * * specify the directive's selector (`ng1-hero`)\n * * specify all inputs and outputs that the AngularJS component expects\n * * derive from `UpgradeComponent`\n * * call the base class from the constructor, passing\n * * the AngularJS name of the component (`ng1Hero`)\n * * the `ElementRef` and `Injector` for the component wrapper\n *\n * @publicApi\n * @extensible\n */\n@Directive()\nexport class UpgradeComponent implements OnInit, OnChanges, DoCheck, OnDestroy {\n private helper: ɵupgradeHelper.UpgradeHelper;\n\n private $element: ɵangular1.IAugmentedJQuery;\n private $componentScope: ɵangular1.IScope;\n\n private directive: ɵangular1.IDirective;\n private bindings: Bindings;\n\n private controllerInstance?: ɵupgradeHelper.IControllerInstance;\n private bindingDestination?: ɵupgradeHelper.IBindingDestination;\n\n // We will be instantiating the controller in the `ngOnInit` hook, when the\n // first `ngOnChanges` will have been already triggered. We store the\n // `SimpleChanges` and \"play them back\" later.\n private pendingChanges: SimpleChanges | null = null;\n\n private unregisterDoCheckWatcher?: Function;\n\n /**\n * Create a new `UpgradeComponent` instance. You should not normally need to do this.\n * Instead you should derive a new class from this one and call the super constructor\n * from the base class.\n *\n * {@example upgrade/static/ts/full/module.ts region=\"ng1-hero-wrapper\" }\n *\n * * The `name` parameter should be the name of the AngularJS directive.\n * * The `elementRef` and `injector` parameters should be acquired from Angular by dependency\n * injection into the base class constructor.\n */\n constructor(name: string, elementRef: ElementRef, injector: Injector) {\n this.helper = new ɵupgradeHelper.UpgradeHelper(injector, name, elementRef);\n\n this.$element = this.helper.$element;\n\n this.directive = this.helper.directive;\n this.bindings = this.initializeBindings(this.directive, name);\n\n // We ask for the AngularJS scope from the Angular injector, since\n // we will put the new component scope onto the new injector for each component\n const $parentScope = injector.get(ɵconstants.$SCOPE);\n // QUESTION 1: Should we create an isolated scope if the scope is only true?\n // QUESTION 2: Should we make the scope accessible through `$element.scope()/isolateScope()`?\n this.$componentScope = $parentScope.$new(!!this.directive.scope);\n\n this.initializeOutputs();\n }\n\n /** @docs-private */\n ngOnInit() {\n // Collect contents, insert and compile template\n const attachChildNodes: ɵangular1.ILinkFn | undefined = this.helper.prepareTransclusion();\n const linkFn = this.helper.compileTemplate();\n\n // Instantiate controller\n const controllerType = this.directive.controller;\n const bindToController = this.directive.bindToController;\n let controllerInstance = controllerType\n ? this.helper.buildController(controllerType, this.$componentScope)\n : undefined;\n let bindingDestination: ɵupgradeHelper.IBindingDestination;\n\n if (!bindToController) {\n bindingDestination = this.$componentScope;\n } else if (controllerType && controllerInstance) {\n bindingDestination = controllerInstance;\n } else {\n throw new Error(\n `Upgraded directive '${this.directive.name}' specifies 'bindToController' but no controller.`,\n );\n }\n this.controllerInstance = controllerInstance;\n this.bindingDestination = bindingDestination;\n\n // Set up outputs\n this.bindOutputs(bindingDestination);\n\n // Require other controllers\n const requiredControllers = this.helper.resolveAndBindRequiredControllers(controllerInstance);\n\n // Hook: $onChanges\n if (this.pendingChanges) {\n this.forwardChanges(this.pendingChanges, bindingDestination);\n this.pendingChanges = null;\n }\n\n // Hook: $onInit\n if (this.controllerInstance && ɵutil.isFunction(this.controllerInstance.$onInit)) {\n this.controllerInstance.$onInit();\n }\n\n // Hook: $doCheck\n if (controllerInstance && ɵutil.isFunction(controllerInstance.$doCheck)) {\n const callDoCheck = () => controllerInstance?.$doCheck?.();\n\n this.unregisterDoCheckWatcher = this.$componentScope.$parent.$watch(callDoCheck);\n callDoCheck();\n }\n\n // Linking\n const link = this.directive.link;\n const preLink = typeof link == 'object' && link.pre;\n const postLink = typeof link == 'object' ? link.post : link;\n const attrs: ɵangular1.IAttributes = NOT_SUPPORTED;\n const transcludeFn: ɵangular1.ITranscludeFunction = NOT_SUPPORTED;\n if (preLink) {\n preLink(this.$componentScope, this.$element, attrs, requiredControllers, transcludeFn);\n }\n\n linkFn(this.$componentScope, null!, {parentBoundTranscludeFn: attachChildNodes});\n\n if (postLink) {\n postLink(this.$componentScope, this.$element, attrs, requiredControllers, transcludeFn);\n }\n\n // Hook: $postLink\n if (this.controllerInstance && ɵutil.isFunction(this.controllerInstance.$postLink)) {\n this.controllerInstance.$postLink();\n }\n }\n\n /** @docs-private */\n ngOnChanges(changes: SimpleChanges) {\n if (!this.bindingDestination) {\n this.pendingChanges = changes;\n } else {\n this.forwardChanges(changes, this.bindingDestination);\n }\n }\n\n /** @docs-private */\n ngDoCheck() {\n const twoWayBoundProperties = this.bindings.twoWayBoundProperties;\n const twoWayBoundLastValues = this.bindings.twoWayBoundLastValues;\n const propertyToOutputMap = this.bindings.propertyToOutputMap;\n\n twoWayBoundProperties.forEach((propName, idx) => {\n const newValue = this.bindingDestination?.[propName];\n const oldValue = twoWayBoundLastValues[idx];\n\n if (!Object.is(newValue, oldValue)) {\n const outputName = propertyToOutputMap[propName];\n const eventEmitter: EventEmitter<any> = (this as any)[outputName];\n\n eventEmitter.emit(newValue);\n twoWayBoundLastValues[idx] = newValue;\n }\n });\n }\n\n /** @docs-private */\n ngOnDestroy() {\n if (ɵutil.isFunction(this.unregisterDoCheckWatcher)) {\n this.unregisterDoCheckWatcher();\n }\n this.helper.onDestroy(this.$componentScope, this.controllerInstance);\n }\n\n private initializeBindings(directive: ɵangular1.IDirective, name: string) {\n const btcIsObject = typeof directive.bindToController === 'object';\n if (btcIsObject && Object.keys(directive.scope!).length) {\n throw new Error(\n `Binding definitions on scope and controller at the same time is not supported.`,\n );\n }\n\n const context = btcIsObject ? directive.bindToController : directive.scope;\n const bindings = new Bindings();\n\n if (typeof context == 'object') {\n Object.keys(context).forEach((propName) => {\n const definition = context[propName];\n const bindingType = definition.charAt(0);\n\n // QUESTION: What about `=*`? Ignore? Throw? Support?\n\n switch (bindingType) {\n case '@':\n case '<':\n // We don't need to do anything special. They will be defined as inputs on the\n // upgraded component facade and the change propagation will be handled by\n // `ngOnChanges()`.\n break;\n case '=':\n bindings.twoWayBoundProperties.push(propName);\n bindings.twoWayBoundLastValues.push(INITIAL_VALUE);\n bindings.propertyToOutputMap[propName] = propName + 'Change';\n break;\n case '&':\n bindings.expressionBoundProperties.push(propName);\n bindings.propertyToOutputMap[propName] = propName;\n break;\n default:\n let json = JSON.stringify(context);\n throw new Error(\n `Unexpected mapping '${bindingType}' in '${json}' in '${name}' directive.`,\n );\n }\n });\n }\n\n return bindings;\n }\n\n private initializeOutputs() {\n // Initialize the outputs for `=` and `&` bindings\n this.bindings.twoWayBoundProperties\n .concat(this.bindings.expressionBoundProperties)\n .forEach((propName) => {\n const outputName = this.bindings.propertyToOutputMap[propName];\n (this as any)[outputName] = new EventEmitter();\n });\n }\n\n private bindOutputs(bindingDestination: ɵupgradeHelper.IBindingDestination) {\n // Bind `&` bindings to the corresponding outputs\n this.bindings.expressionBoundProperties.forEach((propName) => {\n const outputName = this.bindings.propertyToOutputMap[propName];\n const emitter: EventEmitter<any> = (this as any)[outputName];\n\n bindingDestination[propName] = (value: any) => emitter.emit(value);\n });\n }\n\n private forwardChanges(\n changes: SimpleChanges,\n bindingDestination: ɵupgradeHelper.IBindingDestination,\n ) {\n // Forward input changes to `bindingDestination`\n Object.keys(changes).forEach(\n (propName) => (bindingDestination[propName] = changes[propName].currentValue),\n );\n\n if (ɵutil.isFunction(bindingDestination.$onChanges)) {\n bindingDestination.$onChanges(changes);\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Injector,\n ApplicationRef,\n NgModule,\n NgZone,\n PlatformRef,\n Testability,\n ɵNoopNgZone,\n ɵinternalProvideZoneChangeDetection,\n} from '@angular/core';\n\nimport {ɵangular1, ɵconstants, ɵutil} from '../common';\n\nimport {angular1Providers, setTempInjectorRef} from './angular1_providers';\nimport {NgAdapterInjector} from './util';\n\n/**\n * @description\n *\n * An `NgModule`, which you import to provide AngularJS core services,\n * and has an instance method used to bootstrap the hybrid upgrade application.\n *\n * *Part of the [upgrade/static](api?query=upgrade/static)\n * library for hybrid upgrade apps that support AOT compilation*\n *\n * The `upgrade/static` package contains helpers that allow AngularJS and Angular components\n * to be used together inside a hybrid upgrade application, which supports AOT compilation.\n *\n * Specifically, the classes and functions in the `upgrade/static` module allow the following:\n *\n * 1. Creation of an Angular directive that wraps and exposes an AngularJS component so\n * that it can be used in an Angular template. See `UpgradeComponent`.\n * 2. Creation of an AngularJS directive that wraps and exposes an Angular component so\n * that it can be used in an AngularJS template. See `downgradeComponent`.\n * 3. Creation of an Angular root injector provider that wraps and exposes an AngularJS\n * service so that it can be injected into an Angular context. See\n * {@link UpgradeModule#upgrading-an-angularjs-service Upgrading an AngularJS service} below.\n * 4. Creation of an AngularJS service that wraps and exposes an Angular injectable\n * so that it can be injected into an AngularJS context. See `downgradeInjectable`.\n * 5. Bootstrapping of a hybrid Angular application which contains both of the frameworks\n * coexisting in a single application.\n *\n * @usageNotes\n *\n * ```ts\n * import {UpgradeModule} from '@angular/upgrade/static';\n * ```\n *\n * See also the {@link UpgradeModule#examples examples} below.\n *\n * ### Mental Model\n *\n * When reasoning about how a hybrid application works it is useful to have a mental model which\n * describes what is happening and explains what is happening at the lowest level.\n *\n * 1. There are two independent frameworks running in a single application, each framework treats\n * the other as a black box.\n * 2. Each DOM element on the page is owned exactly by one framework. Whichever framework\n * instantiated the element is the owner. Each framework only updates/interacts with its own\n * DOM elements and ignores others.\n * 3. AngularJS directives always execute inside the AngularJS framework codebase regardless of\n * where they are instantiated.\n * 4. Angular components always execute inside the Angular framework codebase regardless of\n * where they are instantiated.\n * 5. An AngularJS component can be \"upgraded\"\" to an Angular component. This is achieved by\n * defining an Angular directive, which bootstraps the AngularJS component at its location\n * in the DOM. See `UpgradeComponent`.\n * 6. An Angular component can be \"downgraded\" to an AngularJS component. This is achieved by\n * defining an AngularJS directive, which bootstraps the Angular component at its location\n * in the DOM. See `downgradeComponent`.\n * 7. Whenever an \"upgraded\"/\"downgraded\" component is instantiated the host element is owned by\n * the framework doing the instantiation. The other framework then instantiates and owns the\n * view for that component.\n * 1. This implies that the component bindings will always follow the semantics of the\n * instantiation framework.\n * 2. The DOM attributes are parsed by the framework that owns the current template. So\n * attributes in AngularJS templates must use kebab-case, while AngularJS templates must use\n * camelCase.\n * 3. However the template binding syntax will always use the Angular style, e.g. square\n * brackets (`[...]`) for property binding.\n * 8. Angular is bootstrapped first; AngularJS is bootstrapped second. AngularJS always owns the\n * root component of the application.\n * 9. The new application is running in an Angular zone, and therefore it no longer needs calls to\n * `$apply()`.\n *\n * ### The `UpgradeModule` class\n *\n * This class is an `NgModule`, which you import to provide AngularJS core services,\n * and has an instance method used to bootstrap the hybrid upgrade application.\n *\n * * Core AngularJS services<br />\n * Importing this `NgModule` will add providers for the core\n * [AngularJS services](https://docs.angularjs.org/api/ng/service) to the root injector.\n *\n * * Bootstrap<br />\n * The runtime instance of this class contains a {@link UpgradeModule#bootstrap `bootstrap()`}\n * method, which you use to bootstrap the top level AngularJS module onto an element in the\n * DOM for the hybrid upgrade app.\n *\n * It also contains properties to access the {@link UpgradeModule#injector root injector}, the\n * bootstrap `NgZone` and the\n * [AngularJS $injector](https://docs.angularjs.org/api/auto/service/$injector).\n *\n * ### Examples\n *\n * Import the `UpgradeModule` into your top level Angular {@link NgModule NgModule}.\n *\n * {@example upgrade/static/ts/full/module.ts region='ng2-module'}\n *\n * Then inject `UpgradeModule` into your Angular `NgModule` and use it to bootstrap the top level\n * [AngularJS module](https://docs.angularjs.org/api/ng/type/angular.Module) in the\n * `ngDoBootstrap()` method.\n *\n * {@example upgrade/static/ts/full/module.ts region='bootstrap-ng1'}\n *\n * Finally, kick off the whole process, by bootstrapping your top level Angular `NgModule`.\n *\n * {@example upgrade/static/ts/full/module.ts region='bootstrap-ng2'}\n *\n * ### Upgrading an AngularJS service\n *\n * There is no specific API for upgrading an AngularJS service. Instead you should just follow the\n * following recipe:\n *\n * Let's say you have an AngularJS service:\n *\n * {@example upgrade/static/ts/full/module.ts region=\"ng1-text-formatter-service\"}\n *\n * Then you should define an Angular provider to be included in your `NgModule` `providers`\n * property.\n *\n * {@example upgrade/static/ts/full/module.ts region=\"upgrade-ng1-service\"}\n *\n * Then you can use the \"upgraded\" AngularJS service by injecting it into an Angular component\n * or service.\n *\n * {@example upgrade/static/ts/full/module.ts region=\"use-ng1-upgraded-service\"}\n *\n * @publicApi\n */\n@NgModule({providers: [angular1Providers, ɵinternalProvideZoneChangeDetection({})]})\nexport class UpgradeModule {\n /**\n * The AngularJS `$injector` for the upgrade application.\n */\n public $injector: any; /*angular.IInjectorService*/\n /** The Angular Injector **/\n public injector: Injector;\n private readonly applicationRef: ApplicationRef;\n\n constructor(\n /** The root `Injector` for the upgrade application. */\n injector: Injector,\n /** The bootstrap zone for the upgrade application */\n public ngZone: NgZone,\n /**\n * The owning `NgModuleRef`s `PlatformRef` instance.\n * This is used to tie the lifecycle of the bootstrapped AngularJS apps to that of the Angular\n * `PlatformRef`.\n */\n private platformRef: PlatformRef,\n ) {\n this.injector = new NgAdapterInjector(injector);\n this.applicationRef = this.injector.get(ApplicationRef);\n }\n\n /**\n * Bootstrap an AngularJS application from this NgModule\n * @param element the element on which to bootstrap the AngularJS application\n * @param [modules] the AngularJS modules to bootstrap for this application\n * @param [config] optional extra AngularJS bootstrap configuration\n * @return The value returned by\n * [angular.bootstrap()](https://docs.angularjs.org/api/ng/function/angular.bootstrap).\n */\n bootstrap(\n element: Element,\n modules: string[] = [],\n config?: any /*angular.IAngularBootstrapConfig*/,\n ): any /*ReturnType<typeof angular.bootstrap>*/ {\n const INIT_MODULE_NAME = ɵconstants.UPGRADE_MODULE_NAME + '.init';\n\n // Create an ng1 module to bootstrap\n ɵangular1\n .module_(INIT_MODULE_NAME, [])\n\n .constant(ɵconstants.UPGRADE_APP_TYPE_KEY, ɵutil.UpgradeAppType.Static)\n\n .value(ɵconstants.INJECTOR_KEY, this.injector)\n\n .factory(ɵconstants.LAZY_MODULE_REF, [\n ɵconstants.INJECTOR_KEY,\n (injector: Injector) => ({injector}) as ɵutil.LazyModuleRef,\n ])\n\n .config([\n ɵconstants.$PROVIDE,\n ɵconstants.$INJECTOR,\n ($provide: ɵangular1.IProvideService, $injector: ɵangular1.IInjectorService) => {\n if ($injector.has(ɵconstants.$$TESTABILITY)) {\n $provide.decorator(ɵconstants.$$TESTABILITY, [\n ɵconstants.$DELEGATE,\n (testabilityDelegate: ɵangular1.ITestabilityService) => {\n const originalWhenStable: Function = testabilityDelegate.whenStable;\n const injector = this.injector;\n // Cannot use arrow function below because we need the context\n const newWhenStable = function (callback: Function) {\n originalWhenStable.call(testabilityDelegate, function () {\n const ng2Testability: Testability = injector.get(Testability);\n if (ng2Testability.isStable()) {\n callback();\n } else {\n ng2Testability.whenStable(newWhenStable.bind(testabilityDelegate, callback));\n }\n });\n };\n\n testabilityDelegate.whenStable = newWhenStable;\n return testabilityDelegate;\n },\n ]);\n }\n\n if ($injector.has(ɵconstants.$INTERVAL)) {\n $provide.decorator(ɵconstants.$INTERVAL, [\n ɵconstants.$DELEGATE,\n (intervalDelegate: ɵangular1.IIntervalService) => {\n // Wrap the $interval service so that setInterval is called outside NgZone,\n // but the callback is still invoked within it. This is so that $interval\n // won't block stability, which preserves the behavior from AngularJS.\n let wrappedInterval = (\n fn: Function,\n delay: number,\n count?: number,\n invokeApply?: boolean,\n ...pass: any[]\n ) => {\n return this.ngZone.runOutsideAngular(() => {\n return intervalDelegate(\n (...args: any[]) => {\n // Run callback in the next VM turn - $interval calls\n // $rootScope.$apply, and running the callback in NgZone will\n // cause a '$digest already in progress' error if it's in the\n // same vm turn.\n setTimeout(() => {\n this.ngZone.run(() => fn(...args));\n });\n },\n delay,\n count,\n invokeApply,\n ...pass,\n );\n });\n };\n\n (Object.keys(intervalDelegate) as (keyof ɵangular1.IIntervalService)[]).forEach(\n (prop) => ((wrappedInterval as any)[prop] = intervalDelegate[prop]),\n );\n\n // the `flush` method will be present when ngMocks is used\n if (Object.hasOwn(intervalDelegate, 'flush')) {\n (wrappedInterval as any)['flush'] = () => {\n (intervalDelegate as any)['flush']();\n return wrappedInterval;\n };\n }\n\n return wrappedInterval;\n },\n ]);\n }\n },\n ])\n\n .run([\n ɵconstants.$INJECTOR,\n ($injector: ɵangular1.IInjectorService) => {\n this.$injector = $injector;\n const $rootScope = $injector.get('$rootScope');\n\n // Initialize the ng1 $injector provider\n setTempInjectorRef($injector);\n this.injector.get(ɵconstants.$INJECTOR);\n\n // Put the injector on the DOM, so that it can be \"required\"\n ɵangular1.element(element).data!(\n ɵutil.controllerKey(ɵconstants.INJECTOR_KEY),\n this.injector,\n );\n\n // Destroy the AngularJS app once the Angular `PlatformRef` is destroyed.\n // This does not happen in a typical SPA scenario, but it might be useful for\n // other use-cases where disposing of an Angular/AngularJS app is necessary\n // (such as Hot Module Replacement (HMR)).\n // See https://github.com/angular/angular/issues/39935.\n this.platformRef.onDestroy(() => ɵutil.destroyApp($injector));\n\n // Wire up the ng1 rootScope to run a digest cycle whenever the zone settles\n // We need to do this in the next tick so that we don't prevent the bootup stabilizing\n setTimeout(() => {\n const synchronize = () => {\n this.ngZone.run(() => {\n if ($rootScope.$$phase) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n console.warn(\n 'A digest was triggered while one was already in progress. This may mean that something is triggering digests outside the Angular zone.',\n );\n }\n\n $rootScope.$evalAsync();\n } else {\n $rootScope.$digest();\n }\n });\n };\n const subscription =\n // We _DO NOT_ usually want to have any code that does one thing for zoneless and another for ZoneJS.\n // This is only here because there is not enough coverage for hybrid apps anymore so we cannot\n // be confident that making UpgradeModule work with zoneless is a non-breaking change.\n this.ngZone instanceof ɵNoopNgZone\n ? (this.applicationRef as any).afterTick.subscribe(() => synchronize())\n : this.ngZone.onMicrotaskEmpty.subscribe(() => synchronize());\n $rootScope.$on('$destroy', () => {\n subscription.unsubscribe();\n });\n }, 0);\n },\n ]);\n\n const upgradeModule = ɵangular1.module_(\n ɵconstants.UPGRADE_MODULE_NAME,\n [INIT_MODULE_NAME].concat(modules),\n );\n\n // Make sure resumeBootstrap() only exists if the current bootstrap is deferred\n const windowAngular = (window as any)['angular'];\n windowAngular.resumeBootstrap = undefined;\n\n // Bootstrap the AngularJS application inside our zone\n const returnValue = this.ngZone.run(() =>\n ɵangular1.bootstrap(element, [upgradeModule.name], config),\n );\n\n // Patch resumeBootstrap() to run inside the ngZone\n if (windowAngular.resumeBootstrap) {\n const originalResumeBootstrap: () => void = windowAngular.resumeBootstrap;\n const ngZone = this.ngZone;\n windowAngular.resumeBootstrap = function () {\n let args = arguments;\n windowAngular.resumeBootstrap = originalResumeBootstrap;\n return ngZone.run(() => windowAngular.resumeBootstrap.apply(this, args));\n };\n }\n\n return returnValue;\n }\n}\n"],"names":["angularElement","ɵNG_MOD_DEF","INITIAL_VALUE","SIGNAL","NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR","ɵconstants.UPGRADE_MODULE_NAME","ɵconstants.LAZY_MODULE_REF","ɵconstants.INJECTOR_KEY","ɵutil.isNgModuleType","internalProvideZoneChangeDetection","ɵutil.isFunction","ɵangular1.module_","ɵconstants.UPGRADE_APP_TYPE_KEY","ɵconstants.$INJECTOR","ɵutil.destroyApp","ɵconstants.$PROVIDE","ɵconstants.DOWNGRADED_MODULE_COUNT_KEY","ɵutil.getDowngradedModuleCount","ɵupgradeHelper.UpgradeHelper","ɵconstants.$SCOPE","element","ɵconstants.$$TESTABILITY","ɵconstants.$DELEGATE","ɵconstants.$INTERVAL","ɵangular1.element","ɵutil.controllerKey","ɵNoopNgZone","ɵangular1.bootstrap","ɵinternalProvideZoneChangeDetection"],"mappings":"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"}