11/**
2- * @license Angular v20.0.0-next.3 +sha-6d3849f
2+ * @license Angular v20.0.0-next.4 +sha-98bf4d5
33 * (c) 2010-2025 Google LLC. https://angular.io/
44 * License: MIT
55 */
@@ -1320,14 +1320,13 @@ class TemplateLiteralElementExpr extends Expression {
13201320 constructor(text, sourceSpan, rawText) {
13211321 super(STRING_TYPE, sourceSpan);
13221322 this.text = text;
1323- // If `rawText` is not provided, try to extract the raw string from its
1324- // associated `sourceSpan`. If that is also not available, "fake" the raw
1325- // string instead by escaping the following control sequences:
1323+ // If `rawText` is not provided, "fake" the raw string by escaping the following sequences:
13261324 // - "\" would otherwise indicate that the next character is a control character.
13271325 // - "`" and "${" are template string control sequences that would otherwise prematurely
13281326 // indicate the end of the template literal element.
1329- this.rawText =
1330- rawText ?? sourceSpan?.toString() ?? escapeForTemplateLiteral(escapeSlashes(text));
1327+ // Note that we can't rely on the `sourceSpan` here, because it may be incorrect (see
1328+ // https://github.com/angular/angular/pull/60267#discussion_r1986402524).
1329+ this.rawText = rawText ?? escapeForTemplateLiteral(escapeSlashes(text));
13311330 }
13321331 visitExpression(visitor, context) {
13331332 return visitor.visitTemplateLiteralElementExpr(this, context);
@@ -27392,10 +27391,16 @@ class BindingParser {
2739227391 const prop = this._schemaRegistry.getMappedPropName(propName);
2739327392 return calcPossibleSecurityContexts(this._schemaRegistry, selector, prop, isAttribute);
2739427393 }
27394+ parseEventListenerName(rawName) {
27395+ const [target, eventName] = splitAtColon(rawName, [null, rawName]);
27396+ return { eventName: eventName, target };
27397+ }
27398+ parseAnimationEventName(rawName) {
27399+ const matches = splitAtPeriod(rawName, [rawName, null]);
27400+ return { eventName: matches[0], phase: matches[1] === null ? null : matches[1].toLowerCase() };
27401+ }
2739527402 _parseAnimationEvent(name, expression, sourceSpan, handlerSpan, targetEvents, keySpan) {
27396- const matches = splitAtPeriod(name, [name, '']);
27397- const eventName = matches[0];
27398- const phase = matches[1].toLowerCase();
27403+ const { eventName, phase } = this.parseAnimationEventName(name);
2739927404 const ast = this._parseAction(expression, handlerSpan);
2740027405 targetEvents.push(new ParsedEvent(eventName, phase, ParsedEventType.Animation, ast, sourceSpan, handlerSpan, keySpan));
2740127406 if (eventName.length === 0) {
@@ -27412,7 +27417,7 @@ class BindingParser {
2741227417 }
2741327418 _parseRegularEvent(name, expression, isAssignmentEvent, sourceSpan, handlerSpan, targetMatchableAttrs, targetEvents, keySpan) {
2741427419 // long format: 'target: eventName'
27415- const [target, eventName] = splitAtColon (name, [null, name] );
27420+ const { eventName, target } = this.parseEventListenerName (name);
2741627421 const prevErrorCount = this.errors.length;
2741727422 const ast = this._parseAction(expression, handlerSpan);
2741827423 const isValid = this.errors.length === prevErrorCount;
@@ -33055,7 +33060,7 @@ const MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION = '18.0.0';
3305533060function compileDeclareClassMetadata(metadata) {
3305633061 const definitionMap = new DefinitionMap();
3305733062 definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$5));
33058- definitionMap.set('version', literal('20.0.0-next.3 +sha-6d3849f '));
33063+ definitionMap.set('version', literal('20.0.0-next.4 +sha-98bf4d5 '));
3305933064 definitionMap.set('ngImport', importExpr(Identifiers.core));
3306033065 definitionMap.set('type', metadata.type);
3306133066 definitionMap.set('decorators', metadata.decorators);
@@ -33073,7 +33078,7 @@ function compileComponentDeclareClassMetadata(metadata, dependencies) {
3307333078 callbackReturnDefinitionMap.set('ctorParameters', metadata.ctorParameters ?? literal(null));
3307433079 callbackReturnDefinitionMap.set('propDecorators', metadata.propDecorators ?? literal(null));
3307533080 definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION));
33076- definitionMap.set('version', literal('20.0.0-next.3 +sha-6d3849f '));
33081+ definitionMap.set('version', literal('20.0.0-next.4 +sha-98bf4d5 '));
3307733082 definitionMap.set('ngImport', importExpr(Identifiers.core));
3307833083 definitionMap.set('type', metadata.type);
3307933084 definitionMap.set('resolveDeferredDeps', compileComponentMetadataAsyncResolver(dependencies));
@@ -33168,7 +33173,7 @@ function createDirectiveDefinitionMap(meta) {
3316833173 const definitionMap = new DefinitionMap();
3316933174 const minVersion = getMinimumVersionForPartialOutput(meta);
3317033175 definitionMap.set('minVersion', literal(minVersion));
33171- definitionMap.set('version', literal('20.0.0-next.3 +sha-6d3849f '));
33176+ definitionMap.set('version', literal('20.0.0-next.4 +sha-98bf4d5 '));
3317233177 // e.g. `type: MyDirective`
3317333178 definitionMap.set('type', meta.type.value);
3317433179 if (meta.isStandalone !== undefined) {
@@ -33584,7 +33589,7 @@ const MINIMUM_PARTIAL_LINKER_VERSION$4 = '12.0.0';
3358433589function compileDeclareFactoryFunction(meta) {
3358533590 const definitionMap = new DefinitionMap();
3358633591 definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$4));
33587- definitionMap.set('version', literal('20.0.0-next.3 +sha-6d3849f '));
33592+ definitionMap.set('version', literal('20.0.0-next.4 +sha-98bf4d5 '));
3358833593 definitionMap.set('ngImport', importExpr(Identifiers.core));
3358933594 definitionMap.set('type', meta.type.value);
3359033595 definitionMap.set('deps', compileDependencies(meta.deps));
@@ -33619,7 +33624,7 @@ function compileDeclareInjectableFromMetadata(meta) {
3361933624function createInjectableDefinitionMap(meta) {
3362033625 const definitionMap = new DefinitionMap();
3362133626 definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$3));
33622- definitionMap.set('version', literal('20.0.0-next.3 +sha-6d3849f '));
33627+ definitionMap.set('version', literal('20.0.0-next.4 +sha-98bf4d5 '));
3362333628 definitionMap.set('ngImport', importExpr(Identifiers.core));
3362433629 definitionMap.set('type', meta.type.value);
3362533630 // Only generate providedIn property if it has a non-null value
@@ -33670,7 +33675,7 @@ function compileDeclareInjectorFromMetadata(meta) {
3367033675function createInjectorDefinitionMap(meta) {
3367133676 const definitionMap = new DefinitionMap();
3367233677 definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$2));
33673- definitionMap.set('version', literal('20.0.0-next.3 +sha-6d3849f '));
33678+ definitionMap.set('version', literal('20.0.0-next.4 +sha-98bf4d5 '));
3367433679 definitionMap.set('ngImport', importExpr(Identifiers.core));
3367533680 definitionMap.set('type', meta.type.value);
3367633681 definitionMap.set('providers', meta.providers);
@@ -33703,7 +33708,7 @@ function createNgModuleDefinitionMap(meta) {
3370333708 throw new Error('Invalid path! Local compilation mode should not get into the partial compilation path');
3370433709 }
3370533710 definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$1));
33706- definitionMap.set('version', literal('20.0.0-next.3 +sha-6d3849f '));
33711+ definitionMap.set('version', literal('20.0.0-next.4 +sha-98bf4d5 '));
3370733712 definitionMap.set('ngImport', importExpr(Identifiers.core));
3370833713 definitionMap.set('type', meta.type.value);
3370933714 // We only generate the keys in the metadata if the arrays contain values.
@@ -33754,7 +33759,7 @@ function compileDeclarePipeFromMetadata(meta) {
3375433759function createPipeDefinitionMap(meta) {
3375533760 const definitionMap = new DefinitionMap();
3375633761 definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION));
33757- definitionMap.set('version', literal('20.0.0-next.3 +sha-6d3849f '));
33762+ definitionMap.set('version', literal('20.0.0-next.4 +sha-98bf4d5 '));
3375833763 definitionMap.set('ngImport', importExpr(Identifiers.core));
3375933764 // e.g. `type: MyPipe`
3376033765 definitionMap.set('type', meta.type.value);
@@ -33912,7 +33917,7 @@ function compileHmrUpdateCallback(definitions, constantStatements, meta) {
3391233917 * @description
3391333918 * Entry point for all public APIs of the compiler package.
3391433919 */
33915- const VERSION = new Version('20.0.0-next.3 +sha-6d3849f ');
33920+ const VERSION = new Version('20.0.0-next.4 +sha-98bf4d5 ');
3391633921
3391733922//////////////////////////////////////
3391833923// THIS FILE HAS GLOBAL SIDE EFFECT //
0 commit comments