🚀 Big News:Socket Has Acquired Secure Annex.Learn More
Socket
Book a DemoSign in
Socket

@angular/material

Package Overview
Dependencies
Maintainers
2
Versions
699
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@angular/material - npm Package Compare versions

Comparing version
21.2.7
to
21.2.8
+1
-1
fesm2022/_animation-chunk.mjs.map

@@ -1,1 +0,1 @@

{"version":3,"file":"_animation-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/animation/animation.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\nimport {MediaMatcher} from '@angular/cdk/layout';\nimport {ANIMATION_MODULE_TYPE, inject, InjectionToken} from '@angular/core';\n\n/** Object used to configure the animation in Angular Material. */\nexport interface AnimationsConfig {\n /** Whether all animations should be disabled. */\n animationsDisabled?: boolean;\n}\n\n/** Injection token used to configure the animations in Angular Material. */\nexport const MATERIAL_ANIMATIONS = new InjectionToken<AnimationsConfig>('MATERIAL_ANIMATIONS');\n\nlet reducedMotion: boolean | null = null;\n\n/**\n * Gets the the configured animations state.\n * @docs-private\n */\nexport function _getAnimationsState(): 'enabled' | 'di-disabled' | 'reduced-motion' {\n if (\n inject(MATERIAL_ANIMATIONS, {optional: true})?.animationsDisabled ||\n inject(ANIMATION_MODULE_TYPE, {optional: true}) === 'NoopAnimations'\n ) {\n return 'di-disabled';\n }\n\n reducedMotion ??= inject(MediaMatcher).matchMedia('(prefers-reduced-motion)').matches;\n return reducedMotion ? 'reduced-motion' : 'enabled';\n}\n\n/**\n * Returns whether animations have been disabled by DI. Must be called in a DI context.\n * @docs-private\n */\nexport function _animationsDisabled(): boolean {\n return _getAnimationsState() !== 'enabled';\n}\n"],"names":["MATERIAL_ANIMATIONS","InjectionToken","reducedMotion","_getAnimationsState","inject","optional","animationsDisabled","ANIMATION_MODULE_TYPE","MediaMatcher","matchMedia","matches","_animationsDisabled"],"mappings":";;;MAkBaA,mBAAmB,GAAG,IAAIC,cAAc,CAAmB,qBAAqB;AAE7F,IAAIC,aAAa,GAAmB,IAAI;SAMxBC,mBAAmBA,GAAA;EACjC,IACEC,MAAM,CAACJ,mBAAmB,EAAE;AAACK,IAAAA,QAAQ,EAAE;AAAI,GAAC,CAAC,EAAEC,kBAAkB,IACjEF,MAAM,CAACG,qBAAqB,EAAE;AAACF,IAAAA,QAAQ,EAAE;GAAK,CAAC,KAAK,gBAAgB,EACpE;AACA,IAAA,OAAO,aAAa;AACtB,EAAA;EAEAH,aAAa,KAAKE,MAAM,CAACI,YAAY,CAAC,CAACC,UAAU,CAAC,0BAA0B,CAAC,CAACC,OAAO;AACrF,EAAA,OAAOR,aAAa,GAAG,gBAAgB,GAAG,SAAS;AACrD;SAMgBS,mBAAmBA,GAAA;AACjC,EAAA,OAAOR,mBAAmB,EAAE,KAAK,SAAS;AAC5C;;;;"}
{"version":3,"file":"_animation-chunk.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/core/animation/animation.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\nimport {MediaMatcher} from '@angular/cdk/layout';\nimport {ANIMATION_MODULE_TYPE, inject, InjectionToken} from '@angular/core';\n\n/** Object used to configure the animation in Angular Material. */\nexport interface AnimationsConfig {\n /** Whether all animations should be disabled. */\n animationsDisabled?: boolean;\n}\n\n/** Injection token used to configure the animations in Angular Material. */\nexport const MATERIAL_ANIMATIONS = new InjectionToken<AnimationsConfig>('MATERIAL_ANIMATIONS');\n\nlet reducedMotion: boolean | null = null;\n\n/**\n * Gets the the configured animations state.\n * @docs-private\n */\nexport function _getAnimationsState(): 'enabled' | 'di-disabled' | 'reduced-motion' {\n if (\n inject(MATERIAL_ANIMATIONS, {optional: true})?.animationsDisabled ||\n inject(ANIMATION_MODULE_TYPE, {optional: true}) === 'NoopAnimations'\n ) {\n return 'di-disabled';\n }\n\n reducedMotion ??= inject(MediaMatcher).matchMedia('(prefers-reduced-motion)').matches;\n return reducedMotion ? 'reduced-motion' : 'enabled';\n}\n\n/**\n * Returns whether animations have been disabled by DI. Must be called in a DI context.\n * @docs-private\n */\nexport function _animationsDisabled(): boolean {\n return _getAnimationsState() !== 'enabled';\n}\n"],"names":["MATERIAL_ANIMATIONS","InjectionToken","reducedMotion","_getAnimationsState","inject","optional","animationsDisabled","ANIMATION_MODULE_TYPE","MediaMatcher","matchMedia","matches","_animationsDisabled"],"mappings":";;;MAkBaA,mBAAmB,GAAG,IAAIC,cAAc,CAAmB,qBAAqB;AAE7F,IAAIC,aAAa,GAAmB,IAAI;SAMxBC,mBAAmBA,GAAA;EACjC,IACEC,MAAM,CAACJ,mBAAmB,EAAE;AAACK,IAAAA,QAAQ,EAAE;AAAI,GAAC,CAAC,EAAEC,kBAAkB,IACjEF,MAAM,CAACG,qBAAqB,EAAE;AAACF,IAAAA,QAAQ,EAAE;GAAK,CAAC,KAAK,gBAAgB,EACpE;AACA,IAAA,OAAO,aAAa;AACtB,EAAA;EAEAH,aAAa,KAAKE,MAAM,CAACI,YAAY,CAAC,CAACC,UAAU,CAAC,0BAA0B,CAAC,CAACC,OAAO;AACrF,EAAA,OAAOR,aAAa,GAAG,gBAAgB,GAAG,SAAS;AACrD;SAMgBS,mBAAmBA,GAAA;AACjC,EAAA,OAAOR,mBAAmB,EAAE,KAAK,SAAS;AAC5C;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"_date-formats-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/datetime/date-adapter.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/datetime/date-formats.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\nimport {inject, InjectionToken, LOCALE_ID} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\n\n/** InjectionToken for datepicker that can be used to override default locale code. */\nexport const MAT_DATE_LOCALE = new InjectionToken<{}>('MAT_DATE_LOCALE', {\n providedIn: 'root',\n factory: () => inject(LOCALE_ID),\n});\n\nconst NOT_IMPLEMENTED = 'Method not implemented';\n\n/** Adapts type `D` to be usable as a date by cdk-based components that work with dates. */\nexport abstract class DateAdapter<D, L = any> {\n /** The locale to use for all dates. */\n protected locale!: L;\n protected readonly _localeChanges = new Subject<void>();\n\n /** A stream that emits when the locale changes. */\n readonly localeChanges: Observable<void> = this._localeChanges;\n\n /**\n * Gets the year component of the given date.\n * @param date The date to extract the year from.\n * @returns The year component.\n */\n abstract getYear(date: D): number;\n\n /**\n * Gets the month component of the given date.\n * @param date The date to extract the month from.\n * @returns The month component (0-indexed, 0 = January).\n */\n abstract getMonth(date: D): number;\n\n /**\n * Gets the date of the month component of the given date.\n * @param date The date to extract the date of the month from.\n * @returns The month component (1-indexed, 1 = first of month).\n */\n abstract getDate(date: D): number;\n\n /**\n * Gets the day of the week component of the given date.\n * @param date The date to extract the day of the week from.\n * @returns The month component (0-indexed, 0 = Sunday).\n */\n abstract getDayOfWeek(date: D): number;\n\n /**\n * Gets a list of names for the months.\n * @param style The naming style (e.g. long = 'January', short = 'Jan', narrow = 'J').\n * @returns An ordered list of all month names, starting with January.\n */\n abstract getMonthNames(style: 'long' | 'short' | 'narrow'): string[];\n\n /**\n * Gets a list of names for the dates of the month.\n * @returns An ordered list of all date of the month names, starting with '1'.\n */\n abstract getDateNames(): string[];\n\n /**\n * Gets a list of names for the days of the week.\n * @param style The naming style (e.g. long = 'Sunday', short = 'Sun', narrow = 'S').\n * @returns An ordered list of all weekday names, starting with Sunday.\n */\n abstract getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[];\n\n /**\n * Gets the name for the year of the given date.\n * @param date The date to get the year name for.\n * @returns The name of the given year (e.g. '2017').\n */\n abstract getYearName(date: D): string;\n\n /**\n * Gets the first day of the week.\n * @returns The first day of the week (0-indexed, 0 = Sunday).\n */\n abstract getFirstDayOfWeek(): number;\n\n /**\n * Gets the number of days in the month of the given date.\n * @param date The date whose month should be checked.\n * @returns The number of days in the month of the given date.\n */\n abstract getNumDaysInMonth(date: D): number;\n\n /**\n * Clones the given date.\n * @param date The date to clone\n * @returns A new date equal to the given date.\n */\n abstract clone(date: D): D;\n\n /**\n * Creates a date with the given year, month, and date. Does not allow over/under-flow of the\n * month and date.\n * @param year The full year of the date. (e.g. 89 means the year 89, not the year 1989).\n * @param month The month of the date (0-indexed, 0 = January). Must be an integer 0 - 11.\n * @param date The date of month of the date. Must be an integer 1 - length of the given month.\n * @returns The new date, or null if invalid.\n */\n abstract createDate(year: number, month: number, date: number): D;\n\n /**\n * Gets today's date.\n * @returns Today's date.\n */\n abstract today(): D;\n\n /**\n * Parses a date from a user-provided value.\n * @param value The value to parse.\n * @param parseFormat The expected format of the value being parsed\n * (type is implementation-dependent).\n * @returns The parsed date.\n */\n abstract parse(value: any, parseFormat: any): D | null;\n\n /**\n * Formats a date as a string according to the given format.\n * @param date The value to format.\n * @param displayFormat The format to use to display the date as a string.\n * @returns The formatted date string.\n */\n abstract format(date: D, displayFormat: any): string;\n\n /**\n * Adds the given number of years to the date. Years are counted as if flipping 12 pages on the\n * calendar for each year and then finding the closest date in the new month. For example when\n * adding 1 year to Feb 29, 2016, the resulting date will be Feb 28, 2017.\n * @param date The date to add years to.\n * @param years The number of years to add (may be negative).\n * @returns A new date equal to the given one with the specified number of years added.\n */\n abstract addCalendarYears(date: D, years: number): D;\n\n /**\n * Adds the given number of months to the date. Months are counted as if flipping a page on the\n * calendar for each month and then finding the closest date in the new month. For example when\n * adding 1 month to Jan 31, 2017, the resulting date will be Feb 28, 2017.\n * @param date The date to add months to.\n * @param months The number of months to add (may be negative).\n * @returns A new date equal to the given one with the specified number of months added.\n */\n abstract addCalendarMonths(date: D, months: number): D;\n\n /**\n * Adds the given number of days to the date. Days are counted as if moving one cell on the\n * calendar for each day.\n * @param date The date to add days to.\n * @param days The number of days to add (may be negative).\n * @returns A new date equal to the given one with the specified number of days added.\n */\n abstract addCalendarDays(date: D, days: number): D;\n\n /**\n * Gets the RFC 3339 compatible string (https://tools.ietf.org/html/rfc3339) for the given date.\n * This method is used to generate date strings that are compatible with native HTML attributes\n * such as the `min` or `max` attribute of an `<input>`.\n * @param date The date to get the ISO date string for.\n * @returns The ISO date string date string.\n */\n abstract toIso8601(date: D): string;\n\n /**\n * Checks whether the given object is considered a date instance by this DateAdapter.\n * @param obj The object to check\n * @returns Whether the object is a date instance.\n */\n abstract isDateInstance(obj: any): boolean;\n\n /**\n * Checks whether the given date is valid.\n * @param date The date to check.\n * @returns Whether the date is valid.\n */\n abstract isValid(date: D): boolean;\n\n /**\n * Gets date instance that is not valid.\n * @returns An invalid date.\n */\n abstract invalid(): D;\n\n /**\n * Sets the time of one date to the time of another.\n * @param target Date whose time will be set.\n * @param hours New hours to set on the date object.\n * @param minutes New minutes to set on the date object.\n * @param seconds New seconds to set on the date object.\n */\n setTime(target: D, hours: number, minutes: number, seconds: number): D {\n throw new Error(NOT_IMPLEMENTED);\n }\n\n /**\n * Gets the hours component of the given date.\n * @param date The date to extract the hours from.\n */\n getHours(date: D): number {\n throw new Error(NOT_IMPLEMENTED);\n }\n\n /**\n * Gets the minutes component of the given date.\n * @param date The date to extract the minutes from.\n */\n getMinutes(date: D): number {\n throw new Error(NOT_IMPLEMENTED);\n }\n\n /**\n * Gets the seconds component of the given date.\n * @param date The date to extract the seconds from.\n */\n getSeconds(date: D): number {\n throw new Error(NOT_IMPLEMENTED);\n }\n\n /**\n * Parses a date with a specific time from a user-provided value.\n * @param value The value to parse.\n * @param parseFormat The expected format of the value being parsed\n * (type is implementation-dependent).\n */\n parseTime(value: any, parseFormat: any): D | null {\n throw new Error(NOT_IMPLEMENTED);\n }\n\n /**\n * Adds an amount of seconds to the specified date.\n * @param date Date to which to add the seconds.\n * @param amount Amount of seconds to add to the date.\n */\n addSeconds(date: D, amount: number): D {\n throw new Error(NOT_IMPLEMENTED);\n }\n\n /**\n * Given a potential date object, returns that same date object if it is\n * a valid date, or `null` if it's not a valid date.\n * @param obj The object to check.\n * @returns A date or `null`.\n */\n getValidDateOrNull(obj: unknown): D | null {\n return this.isDateInstance(obj) && this.isValid(obj as D) ? (obj as D) : null;\n }\n\n /**\n * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n * string). The default implementation does not allow any deserialization, it simply checks that\n * the given value is already a valid date object or null. The `<mat-datepicker>` will call this\n * method on all of its `@Input()` properties that accept dates. It is therefore possible to\n * support passing values from your backend directly to these properties by overriding this method\n * to also deserialize the format used by your backend.\n * @param value The value to be deserialized into a date object.\n * @returns The deserialized date object, either a valid date, null if the value can be\n * deserialized into a null date (e.g. the empty string), or an invalid date.\n */\n deserialize(value: any): D | null {\n if (value == null || (this.isDateInstance(value) && this.isValid(value))) {\n return value;\n }\n return this.invalid();\n }\n\n /**\n * Sets the locale used for all dates.\n * @param locale The new locale.\n */\n setLocale(locale: L) {\n this.locale = locale;\n this._localeChanges.next();\n }\n\n /**\n * Compares two dates.\n * @param first The first date to compare.\n * @param second The second date to compare.\n * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\n * a number greater than 0 if the first date is later.\n */\n compareDate(first: D, second: D): number {\n return (\n this.getYear(first) - this.getYear(second) ||\n this.getMonth(first) - this.getMonth(second) ||\n this.getDate(first) - this.getDate(second)\n );\n }\n\n /**\n * Compares the time values of two dates.\n * @param first First date to compare.\n * @param second Second date to compare.\n * @returns 0 if the times are equal, a number less than 0 if the first time is earlier,\n * a number greater than 0 if the first time is later.\n */\n compareTime(first: D, second: D): number {\n return (\n this.getHours(first) - this.getHours(second) ||\n this.getMinutes(first) - this.getMinutes(second) ||\n this.getSeconds(first) - this.getSeconds(second)\n );\n }\n\n /**\n * Checks if two dates are equal.\n * @param first The first date to check.\n * @param second The second date to check.\n * @returns Whether the two dates are equal.\n * Null dates are considered equal to other null dates.\n */\n sameDate(first: D | null, second: D | null): boolean {\n if (first && second) {\n let firstValid = this.isValid(first);\n let secondValid = this.isValid(second);\n if (firstValid && secondValid) {\n return !this.compareDate(first, second);\n }\n return firstValid == secondValid;\n }\n return first == second;\n }\n\n /**\n * Checks if the times of two dates are equal.\n * @param first The first date to check.\n * @param second The second date to check.\n * @returns Whether the times of the two dates are equal.\n * Null dates are considered equal to other null dates.\n */\n sameTime(first: D | null, second: D | null): boolean {\n if (first && second) {\n const firstValid = this.isValid(first);\n const secondValid = this.isValid(second);\n if (firstValid && secondValid) {\n return !this.compareTime(first, second);\n }\n return firstValid == secondValid;\n }\n return first == second;\n }\n\n /**\n * Clamp the given date between min and max dates.\n * @param date The date to clamp.\n * @param min The minimum value to allow. If null or omitted no min is enforced.\n * @param max The maximum value to allow. If null or omitted no max is enforced.\n * @returns `min` if `date` is less than `min`, `max` if date is greater than `max`,\n * otherwise `date`.\n */\n clampDate(date: D, min?: D | null, max?: D | null): D {\n if (min && this.compareDate(date, min) < 0) {\n return min;\n }\n if (max && this.compareDate(date, max) > 0) {\n return max;\n }\n return date;\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 {InjectionToken} from '@angular/core';\n\nexport type MatDateFormats = {\n parse: {\n dateInput: any;\n timeInput?: any;\n };\n display: {\n dateInput: any;\n monthLabel?: any;\n monthYearLabel: any;\n dateA11yLabel: any;\n monthYearA11yLabel: any;\n timeInput?: any;\n timeOptionLabel?: any;\n };\n};\n\nexport const MAT_DATE_FORMATS = new InjectionToken<MatDateFormats>('mat-date-formats');\n"],"names":["MAT_DATE_LOCALE","InjectionToken","providedIn","factory","inject","LOCALE_ID","NOT_IMPLEMENTED","DateAdapter","locale","_localeChanges","Subject","localeChanges","setTime","target","hours","minutes","seconds","Error","getHours","date","getMinutes","getSeconds","parseTime","value","parseFormat","addSeconds","amount","getValidDateOrNull","obj","isDateInstance","isValid","deserialize","invalid","setLocale","next","compareDate","first","second","getYear","getMonth","getDate","compareTime","sameDate","firstValid","secondValid","sameTime","clampDate","min","max","MAT_DATE_FORMATS"],"mappings":";;;MAYaA,eAAe,GAAG,IAAIC,cAAc,CAAK,iBAAiB,EAAE;AACvEC,EAAAA,UAAU,EAAE,MAAM;AAClBC,EAAAA,OAAO,EAAEA,MAAMC,MAAM,CAACC,SAAS;AAChC,CAAA;AAED,MAAMC,eAAe,GAAG,wBAAwB;MAG1BC,WAAW,CAAA;EAErBC,MAAM;AACGC,EAAAA,cAAc,GAAG,IAAIC,OAAO,EAAQ;EAG9CC,aAAa,GAAqB,IAAI,CAACF,cAAc;EA+K9DG,OAAOA,CAACC,MAAS,EAAEC,KAAa,EAAEC,OAAe,EAAEC,OAAe,EAAA;AAChE,IAAA,MAAM,IAAIC,KAAK,CAACX,eAAe,CAAC;AAClC,EAAA;EAMAY,QAAQA,CAACC,IAAO,EAAA;AACd,IAAA,MAAM,IAAIF,KAAK,CAACX,eAAe,CAAC;AAClC,EAAA;EAMAc,UAAUA,CAACD,IAAO,EAAA;AAChB,IAAA,MAAM,IAAIF,KAAK,CAACX,eAAe,CAAC;AAClC,EAAA;EAMAe,UAAUA,CAACF,IAAO,EAAA;AAChB,IAAA,MAAM,IAAIF,KAAK,CAACX,eAAe,CAAC;AAClC,EAAA;AAQAgB,EAAAA,SAASA,CAACC,KAAU,EAAEC,WAAgB,EAAA;AACpC,IAAA,MAAM,IAAIP,KAAK,CAACX,eAAe,CAAC;AAClC,EAAA;AAOAmB,EAAAA,UAAUA,CAACN,IAAO,EAAEO,MAAc,EAAA;AAChC,IAAA,MAAM,IAAIT,KAAK,CAACX,eAAe,CAAC;AAClC,EAAA;EAQAqB,kBAAkBA,CAACC,GAAY,EAAA;AAC7B,IAAA,OAAO,IAAI,CAACC,cAAc,CAACD,GAAG,CAAC,IAAI,IAAI,CAACE,OAAO,CAACF,GAAQ,CAAC,GAAIA,GAAS,GAAG,IAAI;AAC/E,EAAA;EAcAG,WAAWA,CAACR,KAAU,EAAA;AACpB,IAAA,IAAIA,KAAK,IAAI,IAAI,IAAK,IAAI,CAACM,cAAc,CAACN,KAAK,CAAC,IAAI,IAAI,CAACO,OAAO,CAACP,KAAK,CAAE,EAAE;AACxE,MAAA,OAAOA,KAAK;AACd,IAAA;AACA,IAAA,OAAO,IAAI,CAACS,OAAO,EAAE;AACvB,EAAA;EAMAC,SAASA,CAACzB,MAAS,EAAA;IACjB,IAAI,CAACA,MAAM,GAAGA,MAAM;AACpB,IAAA,IAAI,CAACC,cAAc,CAACyB,IAAI,EAAE;AAC5B,EAAA;AASAC,EAAAA,WAAWA,CAACC,KAAQ,EAAEC,MAAS,EAAA;AAC7B,IAAA,OACE,IAAI,CAACC,OAAO,CAACF,KAAK,CAAC,GAAG,IAAI,CAACE,OAAO,CAACD,MAAM,CAAC,IAC1C,IAAI,CAACE,QAAQ,CAACH,KAAK,CAAC,GAAG,IAAI,CAACG,QAAQ,CAACF,MAAM,CAAC,IAC5C,IAAI,CAACG,OAAO,CAACJ,KAAK,CAAC,GAAG,IAAI,CAACI,OAAO,CAACH,MAAM,CAAC;AAE9C,EAAA;AASAI,EAAAA,WAAWA,CAACL,KAAQ,EAAEC,MAAS,EAAA;AAC7B,IAAA,OACE,IAAI,CAACnB,QAAQ,CAACkB,KAAK,CAAC,GAAG,IAAI,CAAClB,QAAQ,CAACmB,MAAM,CAAC,IAC5C,IAAI,CAACjB,UAAU,CAACgB,KAAK,CAAC,GAAG,IAAI,CAAChB,UAAU,CAACiB,MAAM,CAAC,IAChD,IAAI,CAAChB,UAAU,CAACe,KAAK,CAAC,GAAG,IAAI,CAACf,UAAU,CAACgB,MAAM,CAAC;AAEpD,EAAA;AASAK,EAAAA,QAAQA,CAACN,KAAe,EAAEC,MAAgB,EAAA;IACxC,IAAID,KAAK,IAAIC,MAAM,EAAE;AACnB,MAAA,IAAIM,UAAU,GAAG,IAAI,CAACb,OAAO,CAACM,KAAK,CAAC;AACpC,MAAA,IAAIQ,WAAW,GAAG,IAAI,CAACd,OAAO,CAACO,MAAM,CAAC;MACtC,IAAIM,UAAU,IAAIC,WAAW,EAAE;QAC7B,OAAO,CAAC,IAAI,CAACT,WAAW,CAACC,KAAK,EAAEC,MAAM,CAAC;AACzC,MAAA;MACA,OAAOM,UAAU,IAAIC,WAAW;AAClC,IAAA;IACA,OAAOR,KAAK,IAAIC,MAAM;AACxB,EAAA;AASAQ,EAAAA,QAAQA,CAACT,KAAe,EAAEC,MAAgB,EAAA;IACxC,IAAID,KAAK,IAAIC,MAAM,EAAE;AACnB,MAAA,MAAMM,UAAU,GAAG,IAAI,CAACb,OAAO,CAACM,KAAK,CAAC;AACtC,MAAA,MAAMQ,WAAW,GAAG,IAAI,CAACd,OAAO,CAACO,MAAM,CAAC;MACxC,IAAIM,UAAU,IAAIC,WAAW,EAAE;QAC7B,OAAO,CAAC,IAAI,CAACH,WAAW,CAACL,KAAK,EAAEC,MAAM,CAAC;AACzC,MAAA;MACA,OAAOM,UAAU,IAAIC,WAAW;AAClC,IAAA;IACA,OAAOR,KAAK,IAAIC,MAAM;AACxB,EAAA;AAUAS,EAAAA,SAASA,CAAC3B,IAAO,EAAE4B,GAAc,EAAEC,GAAc,EAAA;AAC/C,IAAA,IAAID,GAAG,IAAI,IAAI,CAACZ,WAAW,CAAChB,IAAI,EAAE4B,GAAG,CAAC,GAAG,CAAC,EAAE;AAC1C,MAAA,OAAOA,GAAG;AACZ,IAAA;AACA,IAAA,IAAIC,GAAG,IAAI,IAAI,CAACb,WAAW,CAAChB,IAAI,EAAE6B,GAAG,CAAC,GAAG,CAAC,EAAE;AAC1C,MAAA,OAAOA,GAAG;AACZ,IAAA;AACA,IAAA,OAAO7B,IAAI;AACb,EAAA;AACD;;MCzVY8B,gBAAgB,GAAG,IAAIhD,cAAc,CAAiB,kBAAkB;;;;"}
{"version":3,"file":"_date-formats-chunk.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/core/datetime/date-adapter.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/core/datetime/date-formats.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\nimport {inject, InjectionToken, LOCALE_ID} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\n\n/** InjectionToken for datepicker that can be used to override default locale code. */\nexport const MAT_DATE_LOCALE = new InjectionToken<{}>('MAT_DATE_LOCALE', {\n providedIn: 'root',\n factory: () => inject(LOCALE_ID),\n});\n\nconst NOT_IMPLEMENTED = 'Method not implemented';\n\n/** Adapts type `D` to be usable as a date by cdk-based components that work with dates. */\nexport abstract class DateAdapter<D, L = any> {\n /** The locale to use for all dates. */\n protected locale!: L;\n protected readonly _localeChanges = new Subject<void>();\n\n /** A stream that emits when the locale changes. */\n readonly localeChanges: Observable<void> = this._localeChanges;\n\n /**\n * Gets the year component of the given date.\n * @param date The date to extract the year from.\n * @returns The year component.\n */\n abstract getYear(date: D): number;\n\n /**\n * Gets the month component of the given date.\n * @param date The date to extract the month from.\n * @returns The month component (0-indexed, 0 = January).\n */\n abstract getMonth(date: D): number;\n\n /**\n * Gets the date of the month component of the given date.\n * @param date The date to extract the date of the month from.\n * @returns The month component (1-indexed, 1 = first of month).\n */\n abstract getDate(date: D): number;\n\n /**\n * Gets the day of the week component of the given date.\n * @param date The date to extract the day of the week from.\n * @returns The month component (0-indexed, 0 = Sunday).\n */\n abstract getDayOfWeek(date: D): number;\n\n /**\n * Gets a list of names for the months.\n * @param style The naming style (e.g. long = 'January', short = 'Jan', narrow = 'J').\n * @returns An ordered list of all month names, starting with January.\n */\n abstract getMonthNames(style: 'long' | 'short' | 'narrow'): string[];\n\n /**\n * Gets a list of names for the dates of the month.\n * @returns An ordered list of all date of the month names, starting with '1'.\n */\n abstract getDateNames(): string[];\n\n /**\n * Gets a list of names for the days of the week.\n * @param style The naming style (e.g. long = 'Sunday', short = 'Sun', narrow = 'S').\n * @returns An ordered list of all weekday names, starting with Sunday.\n */\n abstract getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[];\n\n /**\n * Gets the name for the year of the given date.\n * @param date The date to get the year name for.\n * @returns The name of the given year (e.g. '2017').\n */\n abstract getYearName(date: D): string;\n\n /**\n * Gets the first day of the week.\n * @returns The first day of the week (0-indexed, 0 = Sunday).\n */\n abstract getFirstDayOfWeek(): number;\n\n /**\n * Gets the number of days in the month of the given date.\n * @param date The date whose month should be checked.\n * @returns The number of days in the month of the given date.\n */\n abstract getNumDaysInMonth(date: D): number;\n\n /**\n * Clones the given date.\n * @param date The date to clone\n * @returns A new date equal to the given date.\n */\n abstract clone(date: D): D;\n\n /**\n * Creates a date with the given year, month, and date. Does not allow over/under-flow of the\n * month and date.\n * @param year The full year of the date. (e.g. 89 means the year 89, not the year 1989).\n * @param month The month of the date (0-indexed, 0 = January). Must be an integer 0 - 11.\n * @param date The date of month of the date. Must be an integer 1 - length of the given month.\n * @returns The new date, or null if invalid.\n */\n abstract createDate(year: number, month: number, date: number): D;\n\n /**\n * Gets today's date.\n * @returns Today's date.\n */\n abstract today(): D;\n\n /**\n * Parses a date from a user-provided value.\n * @param value The value to parse.\n * @param parseFormat The expected format of the value being parsed\n * (type is implementation-dependent).\n * @returns The parsed date.\n */\n abstract parse(value: any, parseFormat: any): D | null;\n\n /**\n * Formats a date as a string according to the given format.\n * @param date The value to format.\n * @param displayFormat The format to use to display the date as a string.\n * @returns The formatted date string.\n */\n abstract format(date: D, displayFormat: any): string;\n\n /**\n * Adds the given number of years to the date. Years are counted as if flipping 12 pages on the\n * calendar for each year and then finding the closest date in the new month. For example when\n * adding 1 year to Feb 29, 2016, the resulting date will be Feb 28, 2017.\n * @param date The date to add years to.\n * @param years The number of years to add (may be negative).\n * @returns A new date equal to the given one with the specified number of years added.\n */\n abstract addCalendarYears(date: D, years: number): D;\n\n /**\n * Adds the given number of months to the date. Months are counted as if flipping a page on the\n * calendar for each month and then finding the closest date in the new month. For example when\n * adding 1 month to Jan 31, 2017, the resulting date will be Feb 28, 2017.\n * @param date The date to add months to.\n * @param months The number of months to add (may be negative).\n * @returns A new date equal to the given one with the specified number of months added.\n */\n abstract addCalendarMonths(date: D, months: number): D;\n\n /**\n * Adds the given number of days to the date. Days are counted as if moving one cell on the\n * calendar for each day.\n * @param date The date to add days to.\n * @param days The number of days to add (may be negative).\n * @returns A new date equal to the given one with the specified number of days added.\n */\n abstract addCalendarDays(date: D, days: number): D;\n\n /**\n * Gets the RFC 3339 compatible string (https://tools.ietf.org/html/rfc3339) for the given date.\n * This method is used to generate date strings that are compatible with native HTML attributes\n * such as the `min` or `max` attribute of an `<input>`.\n * @param date The date to get the ISO date string for.\n * @returns The ISO date string date string.\n */\n abstract toIso8601(date: D): string;\n\n /**\n * Checks whether the given object is considered a date instance by this DateAdapter.\n * @param obj The object to check\n * @returns Whether the object is a date instance.\n */\n abstract isDateInstance(obj: any): boolean;\n\n /**\n * Checks whether the given date is valid.\n * @param date The date to check.\n * @returns Whether the date is valid.\n */\n abstract isValid(date: D): boolean;\n\n /**\n * Gets date instance that is not valid.\n * @returns An invalid date.\n */\n abstract invalid(): D;\n\n /**\n * Sets the time of one date to the time of another.\n * @param target Date whose time will be set.\n * @param hours New hours to set on the date object.\n * @param minutes New minutes to set on the date object.\n * @param seconds New seconds to set on the date object.\n */\n setTime(target: D, hours: number, minutes: number, seconds: number): D {\n throw new Error(NOT_IMPLEMENTED);\n }\n\n /**\n * Gets the hours component of the given date.\n * @param date The date to extract the hours from.\n */\n getHours(date: D): number {\n throw new Error(NOT_IMPLEMENTED);\n }\n\n /**\n * Gets the minutes component of the given date.\n * @param date The date to extract the minutes from.\n */\n getMinutes(date: D): number {\n throw new Error(NOT_IMPLEMENTED);\n }\n\n /**\n * Gets the seconds component of the given date.\n * @param date The date to extract the seconds from.\n */\n getSeconds(date: D): number {\n throw new Error(NOT_IMPLEMENTED);\n }\n\n /**\n * Parses a date with a specific time from a user-provided value.\n * @param value The value to parse.\n * @param parseFormat The expected format of the value being parsed\n * (type is implementation-dependent).\n */\n parseTime(value: any, parseFormat: any): D | null {\n throw new Error(NOT_IMPLEMENTED);\n }\n\n /**\n * Adds an amount of seconds to the specified date.\n * @param date Date to which to add the seconds.\n * @param amount Amount of seconds to add to the date.\n */\n addSeconds(date: D, amount: number): D {\n throw new Error(NOT_IMPLEMENTED);\n }\n\n /**\n * Given a potential date object, returns that same date object if it is\n * a valid date, or `null` if it's not a valid date.\n * @param obj The object to check.\n * @returns A date or `null`.\n */\n getValidDateOrNull(obj: unknown): D | null {\n return this.isDateInstance(obj) && this.isValid(obj as D) ? (obj as D) : null;\n }\n\n /**\n * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n * string). The default implementation does not allow any deserialization, it simply checks that\n * the given value is already a valid date object or null. The `<mat-datepicker>` will call this\n * method on all of its `@Input()` properties that accept dates. It is therefore possible to\n * support passing values from your backend directly to these properties by overriding this method\n * to also deserialize the format used by your backend.\n * @param value The value to be deserialized into a date object.\n * @returns The deserialized date object, either a valid date, null if the value can be\n * deserialized into a null date (e.g. the empty string), or an invalid date.\n */\n deserialize(value: any): D | null {\n if (value == null || (this.isDateInstance(value) && this.isValid(value))) {\n return value;\n }\n return this.invalid();\n }\n\n /**\n * Sets the locale used for all dates.\n * @param locale The new locale.\n */\n setLocale(locale: L) {\n this.locale = locale;\n this._localeChanges.next();\n }\n\n /**\n * Compares two dates.\n * @param first The first date to compare.\n * @param second The second date to compare.\n * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\n * a number greater than 0 if the first date is later.\n */\n compareDate(first: D, second: D): number {\n return (\n this.getYear(first) - this.getYear(second) ||\n this.getMonth(first) - this.getMonth(second) ||\n this.getDate(first) - this.getDate(second)\n );\n }\n\n /**\n * Compares the time values of two dates.\n * @param first First date to compare.\n * @param second Second date to compare.\n * @returns 0 if the times are equal, a number less than 0 if the first time is earlier,\n * a number greater than 0 if the first time is later.\n */\n compareTime(first: D, second: D): number {\n return (\n this.getHours(first) - this.getHours(second) ||\n this.getMinutes(first) - this.getMinutes(second) ||\n this.getSeconds(first) - this.getSeconds(second)\n );\n }\n\n /**\n * Checks if two dates are equal.\n * @param first The first date to check.\n * @param second The second date to check.\n * @returns Whether the two dates are equal.\n * Null dates are considered equal to other null dates.\n */\n sameDate(first: D | null, second: D | null): boolean {\n if (first && second) {\n let firstValid = this.isValid(first);\n let secondValid = this.isValid(second);\n if (firstValid && secondValid) {\n return !this.compareDate(first, second);\n }\n return firstValid == secondValid;\n }\n return first == second;\n }\n\n /**\n * Checks if the times of two dates are equal.\n * @param first The first date to check.\n * @param second The second date to check.\n * @returns Whether the times of the two dates are equal.\n * Null dates are considered equal to other null dates.\n */\n sameTime(first: D | null, second: D | null): boolean {\n if (first && second) {\n const firstValid = this.isValid(first);\n const secondValid = this.isValid(second);\n if (firstValid && secondValid) {\n return !this.compareTime(first, second);\n }\n return firstValid == secondValid;\n }\n return first == second;\n }\n\n /**\n * Clamp the given date between min and max dates.\n * @param date The date to clamp.\n * @param min The minimum value to allow. If null or omitted no min is enforced.\n * @param max The maximum value to allow. If null or omitted no max is enforced.\n * @returns `min` if `date` is less than `min`, `max` if date is greater than `max`,\n * otherwise `date`.\n */\n clampDate(date: D, min?: D | null, max?: D | null): D {\n if (min && this.compareDate(date, min) < 0) {\n return min;\n }\n if (max && this.compareDate(date, max) > 0) {\n return max;\n }\n return date;\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 {InjectionToken} from '@angular/core';\n\nexport type MatDateFormats = {\n parse: {\n dateInput: any;\n timeInput?: any;\n };\n display: {\n dateInput: any;\n monthLabel?: any;\n monthYearLabel: any;\n dateA11yLabel: any;\n monthYearA11yLabel: any;\n timeInput?: any;\n timeOptionLabel?: any;\n };\n};\n\nexport const MAT_DATE_FORMATS = new InjectionToken<MatDateFormats>('mat-date-formats');\n"],"names":["MAT_DATE_LOCALE","InjectionToken","providedIn","factory","inject","LOCALE_ID","NOT_IMPLEMENTED","DateAdapter","locale","_localeChanges","Subject","localeChanges","setTime","target","hours","minutes","seconds","Error","getHours","date","getMinutes","getSeconds","parseTime","value","parseFormat","addSeconds","amount","getValidDateOrNull","obj","isDateInstance","isValid","deserialize","invalid","setLocale","next","compareDate","first","second","getYear","getMonth","getDate","compareTime","sameDate","firstValid","secondValid","sameTime","clampDate","min","max","MAT_DATE_FORMATS"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"_date-range-input-harness-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/datepicker/testing/datepicker-input-harness-base.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/datepicker/testing/calendar-cell-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/datepicker/testing/calendar-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/datepicker/testing/datepicker-trigger-harness-base.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/datepicker/testing/datepicker-input-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/datepicker/testing/date-range-input-harness.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\nimport {ComponentHarnessConstructor, HarnessPredicate} from '@angular/cdk/testing';\nimport {MatFormFieldControlHarnessBase} from '@angular/material/form-field/testing/control';\nimport {DatepickerInputHarnessFilters} from './datepicker-harness-filters';\n\n/** Sets up the filter predicates for a datepicker input harness. */\nexport function getInputPredicate<T extends MatDatepickerInputHarnessBase>(\n type: ComponentHarnessConstructor<T>,\n options: DatepickerInputHarnessFilters,\n): HarnessPredicate<T> {\n return new HarnessPredicate(type, options)\n .addOption('value', options.value, (harness, value) => {\n return HarnessPredicate.stringMatches(harness.getValue(), value);\n })\n .addOption('placeholder', options.placeholder, (harness, placeholder) => {\n return HarnessPredicate.stringMatches(harness.getPlaceholder(), placeholder);\n })\n .addOption('label', options.label, (harness, label) => {\n return HarnessPredicate.stringMatches(harness.getLabel(), label);\n });\n}\n\n/** Base class for datepicker input harnesses. */\nexport abstract class MatDatepickerInputHarnessBase extends MatFormFieldControlHarnessBase {\n /** Whether the input is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('disabled');\n }\n\n /** Whether the input is required. */\n async isRequired(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('required');\n }\n\n /** Gets the value of the input. */\n async getValue(): Promise<string> {\n // The \"value\" property of the native input is always defined.\n return await (await this.host()).getProperty<string>('value');\n }\n\n /**\n * Sets the value of the input. The value will be set by simulating\n * keypresses that correspond to the given value.\n */\n async setValue(newValue: string): Promise<void> {\n const inputEl = await this.host();\n await inputEl.clear();\n\n // We don't want to send keys for the value if the value is an empty\n // string in order to clear the value. Sending keys with an empty string\n // still results in unnecessary focus events.\n if (newValue) {\n await inputEl.sendKeys(newValue);\n }\n\n await inputEl.dispatchEvent('change');\n }\n\n /** Gets the placeholder of the input. */\n async getPlaceholder(): Promise<string> {\n return await (await this.host()).getProperty<string>('placeholder');\n }\n\n /**\n * Focuses the input and returns a promise that indicates when the\n * action is complete.\n */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /**\n * Blurs the input and returns a promise that indicates when the\n * action is complete.\n */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the input is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /** Gets the formatted minimum date for the input's value. */\n async getMin(): Promise<string | null> {\n return (await this.host()).getAttribute('min');\n }\n\n /** Gets the formatted maximum date for the input's value. */\n async getMax(): Promise<string | null> {\n return (await this.host()).getAttribute('max');\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 {HarnessPredicate, ComponentHarness} from '@angular/cdk/testing';\nimport {CalendarCellHarnessFilters} from './datepicker-harness-filters';\n\n/** Harness for interacting with a standard Material calendar cell in tests. */\nexport class MatCalendarCellHarness extends ComponentHarness {\n static hostSelector = '.mat-calendar-body-cell';\n\n /** Reference to the inner content element inside the cell. */\n private _content = this.locatorFor('.mat-calendar-body-cell-content');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatCalendarCellHarness`\n * that meets certain criteria.\n * @param options Options for filtering which cell instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: CalendarCellHarnessFilters = {}): HarnessPredicate<MatCalendarCellHarness> {\n return new HarnessPredicate(MatCalendarCellHarness, options)\n .addOption('text', options.text, (harness, text) => {\n return HarnessPredicate.stringMatches(harness.getText(), text);\n })\n .addOption('selected', options.selected, async (harness, selected) => {\n return (await harness.isSelected()) === selected;\n })\n .addOption('active', options.active, async (harness, active) => {\n return (await harness.isActive()) === active;\n })\n .addOption('disabled', options.disabled, async (harness, disabled) => {\n return (await harness.isDisabled()) === disabled;\n })\n .addOption('today', options.today, async (harness, today) => {\n return (await harness.isToday()) === today;\n })\n .addOption('inRange', options.inRange, async (harness, inRange) => {\n return (await harness.isInRange()) === inRange;\n })\n .addOption(\n 'inComparisonRange',\n options.inComparisonRange,\n async (harness, inComparisonRange) => {\n return (await harness.isInComparisonRange()) === inComparisonRange;\n },\n )\n .addOption('inPreviewRange', options.inPreviewRange, async (harness, inPreviewRange) => {\n return (await harness.isInPreviewRange()) === inPreviewRange;\n });\n }\n\n /** Gets the text of the calendar cell. */\n async getText(): Promise<string> {\n return (await this._content()).text();\n }\n\n /** Gets the aria-label of the calendar cell. */\n async getAriaLabel(): Promise<string> {\n // We're guaranteed for the `aria-label` to be defined\n // since this is a private element that we control.\n return (await this.host()).getAttribute('aria-label') as Promise<string>;\n }\n\n /** Whether the cell is selected. */\n async isSelected(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-pressed')) === 'true';\n }\n\n /** Whether the cell is disabled. */\n async isDisabled(): Promise<boolean> {\n return this._hasState('disabled');\n }\n\n /** Whether the cell is currently activated using keyboard navigation. */\n async isActive(): Promise<boolean> {\n return this._hasState('active');\n }\n\n /** Whether the cell represents today's date. */\n async isToday(): Promise<boolean> {\n return (await this._content()).hasClass('mat-calendar-body-today');\n }\n\n /** Selects the calendar cell. Won't do anything if the cell is disabled. */\n async select(): Promise<void> {\n return (await this.host()).click();\n }\n\n /** Hovers over the calendar cell. */\n async hover(): Promise<void> {\n return (await this.host()).hover();\n }\n\n /** Moves the mouse away from the calendar cell. */\n async mouseAway(): Promise<void> {\n return (await this.host()).mouseAway();\n }\n\n /** Focuses the calendar cell. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Removes focus from the calendar cell. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the cell is the start of the main range. */\n async isRangeStart(): Promise<boolean> {\n return this._hasState('range-start');\n }\n\n /** Whether the cell is the end of the main range. */\n async isRangeEnd(): Promise<boolean> {\n return this._hasState('range-end');\n }\n\n /** Whether the cell is part of the main range. */\n async isInRange(): Promise<boolean> {\n return this._hasState('in-range');\n }\n\n /** Whether the cell is the start of the comparison range. */\n async isComparisonRangeStart(): Promise<boolean> {\n return this._hasState('comparison-start');\n }\n\n /** Whether the cell is the end of the comparison range. */\n async isComparisonRangeEnd(): Promise<boolean> {\n return this._hasState('comparison-end');\n }\n\n /** Whether the cell is inside of the comparison range. */\n async isInComparisonRange(): Promise<boolean> {\n return this._hasState('in-comparison-range');\n }\n\n /** Whether the cell is the start of the preview range. */\n async isPreviewRangeStart(): Promise<boolean> {\n return this._hasState('preview-start');\n }\n\n /** Whether the cell is the end of the preview range. */\n async isPreviewRangeEnd(): Promise<boolean> {\n return this._hasState('preview-end');\n }\n\n /** Whether the cell is inside of the preview range. */\n async isInPreviewRange(): Promise<boolean> {\n return this._hasState('in-preview');\n }\n\n /** Returns whether the cell has a particular CSS class-based state. */\n private async _hasState(name: string): Promise<boolean> {\n return (await this.host()).hasClass(`mat-calendar-body-${name}`);\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 {HarnessPredicate, ComponentHarness} from '@angular/cdk/testing';\nimport {CalendarHarnessFilters, CalendarCellHarnessFilters} from './datepicker-harness-filters';\nimport {MatCalendarCellHarness} from './calendar-cell-harness';\n\n/** Possible views of a `MatCalendarHarness`. */\nexport enum CalendarView {\n MONTH,\n YEAR,\n MULTI_YEAR,\n}\n\n/** Harness for interacting with a standard Material calendar in tests. */\nexport class MatCalendarHarness extends ComponentHarness {\n static hostSelector = '.mat-calendar';\n\n /** Queries for the calendar's period toggle button. */\n private _periodButton = this.locatorFor('.mat-calendar-period-button');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatCalendarHarness`\n * that meets certain criteria.\n * @param options Options for filtering which calendar instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: CalendarHarnessFilters = {}): HarnessPredicate<MatCalendarHarness> {\n return new HarnessPredicate(MatCalendarHarness, options);\n }\n\n /**\n * Gets a list of cells inside the calendar.\n * @param filter Optionally filters which cells are included.\n */\n async getCells(filter: CalendarCellHarnessFilters = {}): Promise<MatCalendarCellHarness[]> {\n return this.locatorForAll(MatCalendarCellHarness.with(filter))();\n }\n\n /** Gets the current view that is being shown inside the calendar. */\n async getCurrentView(): Promise<CalendarView> {\n if (await this.locatorForOptional('mat-multi-year-view')()) {\n return CalendarView.MULTI_YEAR;\n }\n\n if (await this.locatorForOptional('mat-year-view')()) {\n return CalendarView.YEAR;\n }\n\n return CalendarView.MONTH;\n }\n\n /** Gets the label of the current calendar view. */\n async getCurrentViewLabel(): Promise<string> {\n return (await this._periodButton()).text();\n }\n\n /** Changes the calendar view by clicking on the view toggle button. */\n async changeView(): Promise<void> {\n return (await this._periodButton()).click();\n }\n\n /** Goes to the next page of the current view (e.g. next month when inside the month view). */\n async next(): Promise<void> {\n return (await this.locatorFor('.mat-calendar-next-button')()).click();\n }\n\n /**\n * Goes to the previous page of the current view\n * (e.g. previous month when inside the month view).\n */\n async previous(): Promise<void> {\n return (await this.locatorFor('.mat-calendar-previous-button')()).click();\n }\n\n /**\n * Selects a cell in the current calendar view.\n * @param filter An optional filter to apply to the cells. The first cell matching the filter\n * will be selected.\n */\n async selectCell(filter: CalendarCellHarnessFilters = {}): Promise<void> {\n const cells = await this.getCells(filter);\n if (!cells.length) {\n throw Error(`Cannot find calendar cell matching filter ${JSON.stringify(filter)}`);\n }\n await cells[0].select();\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 {ComponentHarness, LocatorFactory, parallel, TestElement} from '@angular/cdk/testing';\nimport {CalendarHarnessFilters} from './datepicker-harness-filters';\nimport {MatCalendarHarness} from './calendar-harness';\n\n/** Interface for a test harness that can open and close a calendar. */\nexport interface DatepickerTrigger {\n isCalendarOpen(): Promise<boolean>;\n openCalendar(): Promise<void>;\n closeCalendar(): Promise<void>;\n hasCalendar(): Promise<boolean>;\n getCalendar(filter?: CalendarHarnessFilters): Promise<MatCalendarHarness>;\n}\n\n/** Base class for harnesses that can trigger a calendar. */\nexport abstract class DatepickerTriggerHarnessBase\n extends ComponentHarness\n implements DatepickerTrigger\n{\n /** Whether the trigger is disabled. */\n abstract isDisabled(): Promise<boolean>;\n\n /** Whether the calendar associated with the trigger is open. */\n abstract isCalendarOpen(): Promise<boolean>;\n\n /** Opens the calendar associated with the trigger. */\n protected abstract _openCalendar(): Promise<void>;\n\n /** Opens the calendar if the trigger is enabled and it has a calendar. */\n async openCalendar(): Promise<void> {\n const [isDisabled, hasCalendar] = await parallel(() => [this.isDisabled(), this.hasCalendar()]);\n\n if (!isDisabled && hasCalendar) {\n return this._openCalendar();\n }\n }\n\n /** Closes the calendar if it is open. */\n async closeCalendar(): Promise<void> {\n if (await this.isCalendarOpen()) {\n await closeCalendar(getCalendarId(this.host()), this.documentRootLocatorFactory());\n // This is necessary so that we wait for the closing animation to finish in touch UI mode.\n await this.forceStabilize();\n }\n }\n\n /** Gets whether there is a calendar associated with the trigger. */\n async hasCalendar(): Promise<boolean> {\n return (await getCalendarId(this.host())) != null;\n }\n\n /**\n * Gets the `MatCalendarHarness` that is associated with the trigger.\n * @param filter Optionally filters which calendar is included.\n */\n async getCalendar(filter: CalendarHarnessFilters = {}): Promise<MatCalendarHarness> {\n return getCalendar(filter, this.host(), this.documentRootLocatorFactory());\n }\n}\n\n/** Gets the ID of the calendar that a particular test element can trigger. */\nexport async function getCalendarId(host: Promise<TestElement>): Promise<string | null> {\n return (await host).getAttribute('data-mat-calendar');\n}\n\n/** Closes the calendar with a specific ID. */\nexport async function closeCalendar(\n calendarId: Promise<string | null>,\n documentLocator: LocatorFactory,\n) {\n // We close the calendar by clicking on the backdrop, even though all datepicker variants\n // have the ability to close by pressing escape. The backdrop is preferrable, because the\n // escape key has multiple functions inside a range picker (either cancel the current range\n // or close the calendar). Since we don't have access to set the ID on the backdrop in all\n // cases, we set a unique class instead which is the same as the calendar's ID and suffixed\n // with `-backdrop`.\n const backdropSelector = `.${await calendarId}-backdrop`;\n return (await documentLocator.locatorFor(backdropSelector)()).click();\n}\n\n/** Gets the test harness for a calendar associated with a particular host. */\nexport async function getCalendar(\n filter: CalendarHarnessFilters,\n host: Promise<TestElement>,\n documentLocator: LocatorFactory,\n): Promise<MatCalendarHarness> {\n const calendarId = await getCalendarId(host);\n\n if (!calendarId) {\n throw Error(`Element is not associated with a calendar`);\n }\n\n return documentLocator.locatorFor(\n MatCalendarHarness.with({\n ...filter,\n selector: `#${calendarId}`,\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 {HarnessPredicate, parallel, TestKey} from '@angular/cdk/testing';\nimport {DatepickerInputHarnessFilters, CalendarHarnessFilters} from './datepicker-harness-filters';\nimport {MatDatepickerInputHarnessBase, getInputPredicate} from './datepicker-input-harness-base';\nimport {MatCalendarHarness} from './calendar-harness';\nimport {\n DatepickerTrigger,\n closeCalendar,\n getCalendarId,\n getCalendar,\n} from './datepicker-trigger-harness-base';\n\n/** Harness for interacting with a standard Material datepicker inputs in tests. */\nexport class MatDatepickerInputHarness\n extends MatDatepickerInputHarnessBase\n implements DatepickerTrigger\n{\n static hostSelector = '.mat-datepicker-input';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatDatepickerInputHarness`\n * that meets certain criteria.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: DatepickerInputHarnessFilters = {},\n ): HarnessPredicate<MatDatepickerInputHarness> {\n return getInputPredicate(MatDatepickerInputHarness, options);\n }\n\n /** Gets whether the calendar associated with the input is open. */\n async isCalendarOpen(): Promise<boolean> {\n // `aria-owns` is set only if there's an open datepicker so we can use it as an indicator.\n const host = await this.host();\n return (await host.getAttribute('aria-owns')) != null;\n }\n\n /** Opens the calendar associated with the input. */\n async openCalendar(): Promise<void> {\n const [isDisabled, hasCalendar] = await parallel(() => [this.isDisabled(), this.hasCalendar()]);\n\n if (!isDisabled && hasCalendar) {\n // Alt + down arrow is the combination for opening the calendar with the keyboard.\n const host = await this.host();\n return host.sendKeys({alt: true}, TestKey.DOWN_ARROW);\n }\n }\n\n /** Closes the calendar associated with the input. */\n async closeCalendar(): Promise<void> {\n if (await this.isCalendarOpen()) {\n await closeCalendar(getCalendarId(this.host()), this.documentRootLocatorFactory());\n // This is necessary so that we wait for the closing animation to finish in touch UI mode.\n await this.forceStabilize();\n }\n }\n\n /** Whether a calendar is associated with the input. */\n async hasCalendar(): Promise<boolean> {\n return (await getCalendarId(this.host())) != null;\n }\n\n /**\n * Gets the `MatCalendarHarness` that is associated with the trigger.\n * @param filter Optionally filters which calendar is included.\n */\n async getCalendar(filter: CalendarHarnessFilters = {}): Promise<MatCalendarHarness> {\n return getCalendar(filter, this.host(), this.documentRootLocatorFactory());\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 {HarnessPredicate, parallel, TestKey} from '@angular/cdk/testing';\nimport {MatDatepickerInputHarnessBase, getInputPredicate} from './datepicker-input-harness-base';\nimport {DatepickerTriggerHarnessBase} from './datepicker-trigger-harness-base';\nimport {\n DatepickerInputHarnessFilters,\n DateRangeInputHarnessFilters,\n} from './datepicker-harness-filters';\n\n/** Harness for interacting with a standard Material date range start input in tests. */\nexport class MatStartDateHarness extends MatDatepickerInputHarnessBase {\n static hostSelector = '.mat-start-date';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatStartDateHarness`\n * that meets certain criteria.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: DatepickerInputHarnessFilters = {}): HarnessPredicate<MatStartDateHarness> {\n return getInputPredicate(MatStartDateHarness, options);\n }\n}\n\n/** Harness for interacting with a standard Material date range end input in tests. */\nexport class MatEndDateHarness extends MatDatepickerInputHarnessBase {\n static hostSelector = '.mat-end-date';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatEndDateHarness`\n * that meets certain criteria.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: DatepickerInputHarnessFilters = {}): HarnessPredicate<MatEndDateHarness> {\n return getInputPredicate(MatEndDateHarness, options);\n }\n}\n\n/** Harness for interacting with a standard Material date range input in tests. */\nexport class MatDateRangeInputHarness extends DatepickerTriggerHarnessBase {\n static hostSelector = '.mat-date-range-input';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatDateRangeInputHarness`\n * that meets certain criteria.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: DateRangeInputHarnessFilters = {},\n ): HarnessPredicate<MatDateRangeInputHarness> {\n return new HarnessPredicate(MatDateRangeInputHarness, options)\n .addOption('value', options.value, (harness, value) =>\n HarnessPredicate.stringMatches(harness.getValue(), value),\n )\n .addOption('label', options.label, (harness, label) => {\n return HarnessPredicate.stringMatches(harness.getLabel(), label);\n });\n }\n\n /** Gets the combined value of the start and end inputs, including the separator. */\n async getValue(): Promise<string> {\n const [start, end, separator] = await parallel(() => [\n this.getStartInput().then(input => input.getValue()),\n this.getEndInput().then(input => input.getValue()),\n this.getSeparator(),\n ]);\n\n return start + `${end ? ` ${separator} ${end}` : ''}`;\n }\n\n /** Gets the inner start date input inside the range input. */\n async getStartInput(): Promise<MatStartDateHarness> {\n // Don't pass in filters here since the start input is required and there can only be one.\n return this.locatorFor(MatStartDateHarness)();\n }\n\n /** Gets the inner start date input inside the range input. */\n async getEndInput(): Promise<MatEndDateHarness> {\n // Don't pass in filters here since the end input is required and there can only be one.\n return this.locatorFor(MatEndDateHarness)();\n }\n\n /**\n * Gets the label for the range input, if it exists. This might be provided by a label element or\n * by the `aria-label` attribute.\n */\n async getLabel(): Promise<string | null> {\n // Directly copied from MatFormFieldControlHarnessBase. This class already has a parent so it\n // cannot extend MatFormFieldControlHarnessBase for the functionality.\n const documentRootLocator = this.documentRootLocatorFactory();\n const labelId = await (await this.host()).getAttribute('aria-labelledby');\n const labelText = await (await this.host()).getAttribute('aria-label');\n const hostId = await (await this.host()).getAttribute('id');\n\n if (labelId) {\n // First, try to find the label by following [aria-labelledby]\n const labelEl = await documentRootLocator.locatorForOptional(`[id=\"${labelId}\"]`)();\n return labelEl ? labelEl.text() : null;\n } else if (labelText) {\n // If that doesn't work, return [aria-label] if it exists\n return labelText;\n } else if (hostId) {\n // Finally, search the DOM for a label that points to the host element\n const labelEl = await documentRootLocator.locatorForOptional(`[for=\"${hostId}\"]`)();\n return labelEl ? labelEl.text() : null;\n }\n return null;\n }\n\n /** Gets the separator text between the values of the two inputs. */\n async getSeparator(): Promise<string> {\n return (await this.locatorFor('.mat-date-range-input-separator')()).text();\n }\n\n /** Gets whether the range input is disabled. */\n async isDisabled(): Promise<boolean> {\n // We consider the input as disabled if both of the sub-inputs are disabled.\n const [startDisabled, endDisabled] = await parallel(() => [\n this.getStartInput().then(input => input.isDisabled()),\n this.getEndInput().then(input => input.isDisabled()),\n ]);\n\n return startDisabled && endDisabled;\n }\n\n /** Gets whether the range input is required. */\n async isRequired(): Promise<boolean> {\n return (await this.host()).hasClass('mat-date-range-input-required');\n }\n\n /** Opens the calendar associated with the input. */\n async isCalendarOpen(): Promise<boolean> {\n // `aria-owns` is set on both inputs only if there's an\n // open range picker so we can use it as an indicator.\n const startHost = await (await this.getStartInput()).host();\n return (await startHost.getAttribute('aria-owns')) != null;\n }\n\n protected async _openCalendar(): Promise<void> {\n // Alt + down arrow is the combination for opening the calendar with the keyboard.\n const startHost = await (await this.getStartInput()).host();\n return startHost.sendKeys({alt: true}, TestKey.DOWN_ARROW);\n }\n}\n"],"names":["getInputPredicate","type","options","HarnessPredicate","addOption","value","harness","stringMatches","getValue","placeholder","getPlaceholder","label","getLabel","MatDatepickerInputHarnessBase","MatFormFieldControlHarnessBase","isDisabled","host","getProperty","isRequired","setValue","newValue","inputEl","clear","sendKeys","dispatchEvent","focus","blur","isFocused","getMin","getAttribute","getMax","MatCalendarCellHarness","ComponentHarness","hostSelector","_content","locatorFor","with","text","getText","selected","isSelected","active","isActive","disabled","today","isToday","inRange","isInRange","inComparisonRange","isInComparisonRange","inPreviewRange","isInPreviewRange","getAriaLabel","_hasState","hasClass","select","click","hover","mouseAway","isRangeStart","isRangeEnd","isComparisonRangeStart","isComparisonRangeEnd","isPreviewRangeStart","isPreviewRangeEnd","name","CalendarView","MatCalendarHarness","_periodButton","getCells","filter","locatorForAll","getCurrentView","locatorForOptional","MULTI_YEAR","YEAR","MONTH","getCurrentViewLabel","changeView","next","previous","selectCell","cells","length","Error","JSON","stringify","DatepickerTriggerHarnessBase","openCalendar","hasCalendar","parallel","_openCalendar","closeCalendar","isCalendarOpen","getCalendarId","documentRootLocatorFactory","forceStabilize","getCalendar","calendarId","documentLocator","backdropSelector","selector","MatDatepickerInputHarness","alt","TestKey","DOWN_ARROW","MatStartDateHarness","MatEndDateHarness","MatDateRangeInputHarness","start","end","separator","getStartInput","then","input","getEndInput","getSeparator","documentRootLocator","labelId","labelText","hostId","labelEl","startDisabled","endDisabled","startHost"],"mappings":"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"}
{"version":3,"file":"_date-range-input-harness-chunk.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/datepicker/testing/datepicker-input-harness-base.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/datepicker/testing/calendar-cell-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/datepicker/testing/calendar-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/datepicker/testing/datepicker-trigger-harness-base.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/datepicker/testing/datepicker-input-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/datepicker/testing/date-range-input-harness.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\nimport {ComponentHarnessConstructor, HarnessPredicate} from '@angular/cdk/testing';\nimport {MatFormFieldControlHarnessBase} from '@angular/material/form-field/testing/control';\nimport {DatepickerInputHarnessFilters} from './datepicker-harness-filters';\n\n/** Sets up the filter predicates for a datepicker input harness. */\nexport function getInputPredicate<T extends MatDatepickerInputHarnessBase>(\n type: ComponentHarnessConstructor<T>,\n options: DatepickerInputHarnessFilters,\n): HarnessPredicate<T> {\n return new HarnessPredicate(type, options)\n .addOption('value', options.value, (harness, value) => {\n return HarnessPredicate.stringMatches(harness.getValue(), value);\n })\n .addOption('placeholder', options.placeholder, (harness, placeholder) => {\n return HarnessPredicate.stringMatches(harness.getPlaceholder(), placeholder);\n })\n .addOption('label', options.label, (harness, label) => {\n return HarnessPredicate.stringMatches(harness.getLabel(), label);\n });\n}\n\n/** Base class for datepicker input harnesses. */\nexport abstract class MatDatepickerInputHarnessBase extends MatFormFieldControlHarnessBase {\n /** Whether the input is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('disabled');\n }\n\n /** Whether the input is required. */\n async isRequired(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('required');\n }\n\n /** Gets the value of the input. */\n async getValue(): Promise<string> {\n // The \"value\" property of the native input is always defined.\n return await (await this.host()).getProperty<string>('value');\n }\n\n /**\n * Sets the value of the input. The value will be set by simulating\n * keypresses that correspond to the given value.\n */\n async setValue(newValue: string): Promise<void> {\n const inputEl = await this.host();\n await inputEl.clear();\n\n // We don't want to send keys for the value if the value is an empty\n // string in order to clear the value. Sending keys with an empty string\n // still results in unnecessary focus events.\n if (newValue) {\n await inputEl.sendKeys(newValue);\n }\n\n await inputEl.dispatchEvent('change');\n }\n\n /** Gets the placeholder of the input. */\n async getPlaceholder(): Promise<string> {\n return await (await this.host()).getProperty<string>('placeholder');\n }\n\n /**\n * Focuses the input and returns a promise that indicates when the\n * action is complete.\n */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /**\n * Blurs the input and returns a promise that indicates when the\n * action is complete.\n */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the input is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /** Gets the formatted minimum date for the input's value. */\n async getMin(): Promise<string | null> {\n return (await this.host()).getAttribute('min');\n }\n\n /** Gets the formatted maximum date for the input's value. */\n async getMax(): Promise<string | null> {\n return (await this.host()).getAttribute('max');\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 {HarnessPredicate, ComponentHarness} from '@angular/cdk/testing';\nimport {CalendarCellHarnessFilters} from './datepicker-harness-filters';\n\n/** Harness for interacting with a standard Material calendar cell in tests. */\nexport class MatCalendarCellHarness extends ComponentHarness {\n static hostSelector = '.mat-calendar-body-cell';\n\n /** Reference to the inner content element inside the cell. */\n private _content = this.locatorFor('.mat-calendar-body-cell-content');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatCalendarCellHarness`\n * that meets certain criteria.\n * @param options Options for filtering which cell instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: CalendarCellHarnessFilters = {}): HarnessPredicate<MatCalendarCellHarness> {\n return new HarnessPredicate(MatCalendarCellHarness, options)\n .addOption('text', options.text, (harness, text) => {\n return HarnessPredicate.stringMatches(harness.getText(), text);\n })\n .addOption('selected', options.selected, async (harness, selected) => {\n return (await harness.isSelected()) === selected;\n })\n .addOption('active', options.active, async (harness, active) => {\n return (await harness.isActive()) === active;\n })\n .addOption('disabled', options.disabled, async (harness, disabled) => {\n return (await harness.isDisabled()) === disabled;\n })\n .addOption('today', options.today, async (harness, today) => {\n return (await harness.isToday()) === today;\n })\n .addOption('inRange', options.inRange, async (harness, inRange) => {\n return (await harness.isInRange()) === inRange;\n })\n .addOption(\n 'inComparisonRange',\n options.inComparisonRange,\n async (harness, inComparisonRange) => {\n return (await harness.isInComparisonRange()) === inComparisonRange;\n },\n )\n .addOption('inPreviewRange', options.inPreviewRange, async (harness, inPreviewRange) => {\n return (await harness.isInPreviewRange()) === inPreviewRange;\n });\n }\n\n /** Gets the text of the calendar cell. */\n async getText(): Promise<string> {\n return (await this._content()).text();\n }\n\n /** Gets the aria-label of the calendar cell. */\n async getAriaLabel(): Promise<string> {\n // We're guaranteed for the `aria-label` to be defined\n // since this is a private element that we control.\n return (await this.host()).getAttribute('aria-label') as Promise<string>;\n }\n\n /** Whether the cell is selected. */\n async isSelected(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-pressed')) === 'true';\n }\n\n /** Whether the cell is disabled. */\n async isDisabled(): Promise<boolean> {\n return this._hasState('disabled');\n }\n\n /** Whether the cell is currently activated using keyboard navigation. */\n async isActive(): Promise<boolean> {\n return this._hasState('active');\n }\n\n /** Whether the cell represents today's date. */\n async isToday(): Promise<boolean> {\n return (await this._content()).hasClass('mat-calendar-body-today');\n }\n\n /** Selects the calendar cell. Won't do anything if the cell is disabled. */\n async select(): Promise<void> {\n return (await this.host()).click();\n }\n\n /** Hovers over the calendar cell. */\n async hover(): Promise<void> {\n return (await this.host()).hover();\n }\n\n /** Moves the mouse away from the calendar cell. */\n async mouseAway(): Promise<void> {\n return (await this.host()).mouseAway();\n }\n\n /** Focuses the calendar cell. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Removes focus from the calendar cell. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the cell is the start of the main range. */\n async isRangeStart(): Promise<boolean> {\n return this._hasState('range-start');\n }\n\n /** Whether the cell is the end of the main range. */\n async isRangeEnd(): Promise<boolean> {\n return this._hasState('range-end');\n }\n\n /** Whether the cell is part of the main range. */\n async isInRange(): Promise<boolean> {\n return this._hasState('in-range');\n }\n\n /** Whether the cell is the start of the comparison range. */\n async isComparisonRangeStart(): Promise<boolean> {\n return this._hasState('comparison-start');\n }\n\n /** Whether the cell is the end of the comparison range. */\n async isComparisonRangeEnd(): Promise<boolean> {\n return this._hasState('comparison-end');\n }\n\n /** Whether the cell is inside of the comparison range. */\n async isInComparisonRange(): Promise<boolean> {\n return this._hasState('in-comparison-range');\n }\n\n /** Whether the cell is the start of the preview range. */\n async isPreviewRangeStart(): Promise<boolean> {\n return this._hasState('preview-start');\n }\n\n /** Whether the cell is the end of the preview range. */\n async isPreviewRangeEnd(): Promise<boolean> {\n return this._hasState('preview-end');\n }\n\n /** Whether the cell is inside of the preview range. */\n async isInPreviewRange(): Promise<boolean> {\n return this._hasState('in-preview');\n }\n\n /** Returns whether the cell has a particular CSS class-based state. */\n private async _hasState(name: string): Promise<boolean> {\n return (await this.host()).hasClass(`mat-calendar-body-${name}`);\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 {HarnessPredicate, ComponentHarness} from '@angular/cdk/testing';\nimport {CalendarHarnessFilters, CalendarCellHarnessFilters} from './datepicker-harness-filters';\nimport {MatCalendarCellHarness} from './calendar-cell-harness';\n\n/** Possible views of a `MatCalendarHarness`. */\nexport enum CalendarView {\n MONTH,\n YEAR,\n MULTI_YEAR,\n}\n\n/** Harness for interacting with a standard Material calendar in tests. */\nexport class MatCalendarHarness extends ComponentHarness {\n static hostSelector = '.mat-calendar';\n\n /** Queries for the calendar's period toggle button. */\n private _periodButton = this.locatorFor('.mat-calendar-period-button');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatCalendarHarness`\n * that meets certain criteria.\n * @param options Options for filtering which calendar instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: CalendarHarnessFilters = {}): HarnessPredicate<MatCalendarHarness> {\n return new HarnessPredicate(MatCalendarHarness, options);\n }\n\n /**\n * Gets a list of cells inside the calendar.\n * @param filter Optionally filters which cells are included.\n */\n async getCells(filter: CalendarCellHarnessFilters = {}): Promise<MatCalendarCellHarness[]> {\n return this.locatorForAll(MatCalendarCellHarness.with(filter))();\n }\n\n /** Gets the current view that is being shown inside the calendar. */\n async getCurrentView(): Promise<CalendarView> {\n if (await this.locatorForOptional('mat-multi-year-view')()) {\n return CalendarView.MULTI_YEAR;\n }\n\n if (await this.locatorForOptional('mat-year-view')()) {\n return CalendarView.YEAR;\n }\n\n return CalendarView.MONTH;\n }\n\n /** Gets the label of the current calendar view. */\n async getCurrentViewLabel(): Promise<string> {\n return (await this._periodButton()).text();\n }\n\n /** Changes the calendar view by clicking on the view toggle button. */\n async changeView(): Promise<void> {\n return (await this._periodButton()).click();\n }\n\n /** Goes to the next page of the current view (e.g. next month when inside the month view). */\n async next(): Promise<void> {\n return (await this.locatorFor('.mat-calendar-next-button')()).click();\n }\n\n /**\n * Goes to the previous page of the current view\n * (e.g. previous month when inside the month view).\n */\n async previous(): Promise<void> {\n return (await this.locatorFor('.mat-calendar-previous-button')()).click();\n }\n\n /**\n * Selects a cell in the current calendar view.\n * @param filter An optional filter to apply to the cells. The first cell matching the filter\n * will be selected.\n */\n async selectCell(filter: CalendarCellHarnessFilters = {}): Promise<void> {\n const cells = await this.getCells(filter);\n if (!cells.length) {\n throw Error(`Cannot find calendar cell matching filter ${JSON.stringify(filter)}`);\n }\n await cells[0].select();\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 {ComponentHarness, LocatorFactory, parallel, TestElement} from '@angular/cdk/testing';\nimport {CalendarHarnessFilters} from './datepicker-harness-filters';\nimport {MatCalendarHarness} from './calendar-harness';\n\n/** Interface for a test harness that can open and close a calendar. */\nexport interface DatepickerTrigger {\n isCalendarOpen(): Promise<boolean>;\n openCalendar(): Promise<void>;\n closeCalendar(): Promise<void>;\n hasCalendar(): Promise<boolean>;\n getCalendar(filter?: CalendarHarnessFilters): Promise<MatCalendarHarness>;\n}\n\n/** Base class for harnesses that can trigger a calendar. */\nexport abstract class DatepickerTriggerHarnessBase\n extends ComponentHarness\n implements DatepickerTrigger\n{\n /** Whether the trigger is disabled. */\n abstract isDisabled(): Promise<boolean>;\n\n /** Whether the calendar associated with the trigger is open. */\n abstract isCalendarOpen(): Promise<boolean>;\n\n /** Opens the calendar associated with the trigger. */\n protected abstract _openCalendar(): Promise<void>;\n\n /** Opens the calendar if the trigger is enabled and it has a calendar. */\n async openCalendar(): Promise<void> {\n const [isDisabled, hasCalendar] = await parallel(() => [this.isDisabled(), this.hasCalendar()]);\n\n if (!isDisabled && hasCalendar) {\n return this._openCalendar();\n }\n }\n\n /** Closes the calendar if it is open. */\n async closeCalendar(): Promise<void> {\n if (await this.isCalendarOpen()) {\n await closeCalendar(getCalendarId(this.host()), this.documentRootLocatorFactory());\n // This is necessary so that we wait for the closing animation to finish in touch UI mode.\n await this.forceStabilize();\n }\n }\n\n /** Gets whether there is a calendar associated with the trigger. */\n async hasCalendar(): Promise<boolean> {\n return (await getCalendarId(this.host())) != null;\n }\n\n /**\n * Gets the `MatCalendarHarness` that is associated with the trigger.\n * @param filter Optionally filters which calendar is included.\n */\n async getCalendar(filter: CalendarHarnessFilters = {}): Promise<MatCalendarHarness> {\n return getCalendar(filter, this.host(), this.documentRootLocatorFactory());\n }\n}\n\n/** Gets the ID of the calendar that a particular test element can trigger. */\nexport async function getCalendarId(host: Promise<TestElement>): Promise<string | null> {\n return (await host).getAttribute('data-mat-calendar');\n}\n\n/** Closes the calendar with a specific ID. */\nexport async function closeCalendar(\n calendarId: Promise<string | null>,\n documentLocator: LocatorFactory,\n) {\n // We close the calendar by clicking on the backdrop, even though all datepicker variants\n // have the ability to close by pressing escape. The backdrop is preferrable, because the\n // escape key has multiple functions inside a range picker (either cancel the current range\n // or close the calendar). Since we don't have access to set the ID on the backdrop in all\n // cases, we set a unique class instead which is the same as the calendar's ID and suffixed\n // with `-backdrop`.\n const backdropSelector = `.${await calendarId}-backdrop`;\n return (await documentLocator.locatorFor(backdropSelector)()).click();\n}\n\n/** Gets the test harness for a calendar associated with a particular host. */\nexport async function getCalendar(\n filter: CalendarHarnessFilters,\n host: Promise<TestElement>,\n documentLocator: LocatorFactory,\n): Promise<MatCalendarHarness> {\n const calendarId = await getCalendarId(host);\n\n if (!calendarId) {\n throw Error(`Element is not associated with a calendar`);\n }\n\n return documentLocator.locatorFor(\n MatCalendarHarness.with({\n ...filter,\n selector: `#${calendarId}`,\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 {HarnessPredicate, parallel, TestKey} from '@angular/cdk/testing';\nimport {DatepickerInputHarnessFilters, CalendarHarnessFilters} from './datepicker-harness-filters';\nimport {MatDatepickerInputHarnessBase, getInputPredicate} from './datepicker-input-harness-base';\nimport {MatCalendarHarness} from './calendar-harness';\nimport {\n DatepickerTrigger,\n closeCalendar,\n getCalendarId,\n getCalendar,\n} from './datepicker-trigger-harness-base';\n\n/** Harness for interacting with a standard Material datepicker inputs in tests. */\nexport class MatDatepickerInputHarness\n extends MatDatepickerInputHarnessBase\n implements DatepickerTrigger\n{\n static hostSelector = '.mat-datepicker-input';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatDatepickerInputHarness`\n * that meets certain criteria.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: DatepickerInputHarnessFilters = {},\n ): HarnessPredicate<MatDatepickerInputHarness> {\n return getInputPredicate(MatDatepickerInputHarness, options);\n }\n\n /** Gets whether the calendar associated with the input is open. */\n async isCalendarOpen(): Promise<boolean> {\n // `aria-owns` is set only if there's an open datepicker so we can use it as an indicator.\n const host = await this.host();\n return (await host.getAttribute('aria-owns')) != null;\n }\n\n /** Opens the calendar associated with the input. */\n async openCalendar(): Promise<void> {\n const [isDisabled, hasCalendar] = await parallel(() => [this.isDisabled(), this.hasCalendar()]);\n\n if (!isDisabled && hasCalendar) {\n // Alt + down arrow is the combination for opening the calendar with the keyboard.\n const host = await this.host();\n return host.sendKeys({alt: true}, TestKey.DOWN_ARROW);\n }\n }\n\n /** Closes the calendar associated with the input. */\n async closeCalendar(): Promise<void> {\n if (await this.isCalendarOpen()) {\n await closeCalendar(getCalendarId(this.host()), this.documentRootLocatorFactory());\n // This is necessary so that we wait for the closing animation to finish in touch UI mode.\n await this.forceStabilize();\n }\n }\n\n /** Whether a calendar is associated with the input. */\n async hasCalendar(): Promise<boolean> {\n return (await getCalendarId(this.host())) != null;\n }\n\n /**\n * Gets the `MatCalendarHarness` that is associated with the trigger.\n * @param filter Optionally filters which calendar is included.\n */\n async getCalendar(filter: CalendarHarnessFilters = {}): Promise<MatCalendarHarness> {\n return getCalendar(filter, this.host(), this.documentRootLocatorFactory());\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 {HarnessPredicate, parallel, TestKey} from '@angular/cdk/testing';\nimport {MatDatepickerInputHarnessBase, getInputPredicate} from './datepicker-input-harness-base';\nimport {DatepickerTriggerHarnessBase} from './datepicker-trigger-harness-base';\nimport {\n DatepickerInputHarnessFilters,\n DateRangeInputHarnessFilters,\n} from './datepicker-harness-filters';\n\n/** Harness for interacting with a standard Material date range start input in tests. */\nexport class MatStartDateHarness extends MatDatepickerInputHarnessBase {\n static hostSelector = '.mat-start-date';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatStartDateHarness`\n * that meets certain criteria.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: DatepickerInputHarnessFilters = {}): HarnessPredicate<MatStartDateHarness> {\n return getInputPredicate(MatStartDateHarness, options);\n }\n}\n\n/** Harness for interacting with a standard Material date range end input in tests. */\nexport class MatEndDateHarness extends MatDatepickerInputHarnessBase {\n static hostSelector = '.mat-end-date';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatEndDateHarness`\n * that meets certain criteria.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: DatepickerInputHarnessFilters = {}): HarnessPredicate<MatEndDateHarness> {\n return getInputPredicate(MatEndDateHarness, options);\n }\n}\n\n/** Harness for interacting with a standard Material date range input in tests. */\nexport class MatDateRangeInputHarness extends DatepickerTriggerHarnessBase {\n static hostSelector = '.mat-date-range-input';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatDateRangeInputHarness`\n * that meets certain criteria.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: DateRangeInputHarnessFilters = {},\n ): HarnessPredicate<MatDateRangeInputHarness> {\n return new HarnessPredicate(MatDateRangeInputHarness, options)\n .addOption('value', options.value, (harness, value) =>\n HarnessPredicate.stringMatches(harness.getValue(), value),\n )\n .addOption('label', options.label, (harness, label) => {\n return HarnessPredicate.stringMatches(harness.getLabel(), label);\n });\n }\n\n /** Gets the combined value of the start and end inputs, including the separator. */\n async getValue(): Promise<string> {\n const [start, end, separator] = await parallel(() => [\n this.getStartInput().then(input => input.getValue()),\n this.getEndInput().then(input => input.getValue()),\n this.getSeparator(),\n ]);\n\n return start + `${end ? ` ${separator} ${end}` : ''}`;\n }\n\n /** Gets the inner start date input inside the range input. */\n async getStartInput(): Promise<MatStartDateHarness> {\n // Don't pass in filters here since the start input is required and there can only be one.\n return this.locatorFor(MatStartDateHarness)();\n }\n\n /** Gets the inner start date input inside the range input. */\n async getEndInput(): Promise<MatEndDateHarness> {\n // Don't pass in filters here since the end input is required and there can only be one.\n return this.locatorFor(MatEndDateHarness)();\n }\n\n /**\n * Gets the label for the range input, if it exists. This might be provided by a label element or\n * by the `aria-label` attribute.\n */\n async getLabel(): Promise<string | null> {\n // Directly copied from MatFormFieldControlHarnessBase. This class already has a parent so it\n // cannot extend MatFormFieldControlHarnessBase for the functionality.\n const documentRootLocator = this.documentRootLocatorFactory();\n const labelId = await (await this.host()).getAttribute('aria-labelledby');\n const labelText = await (await this.host()).getAttribute('aria-label');\n const hostId = await (await this.host()).getAttribute('id');\n\n if (labelId) {\n // First, try to find the label by following [aria-labelledby]\n const labelEl = await documentRootLocator.locatorForOptional(`[id=\"${labelId}\"]`)();\n return labelEl ? labelEl.text() : null;\n } else if (labelText) {\n // If that doesn't work, return [aria-label] if it exists\n return labelText;\n } else if (hostId) {\n // Finally, search the DOM for a label that points to the host element\n const labelEl = await documentRootLocator.locatorForOptional(`[for=\"${hostId}\"]`)();\n return labelEl ? labelEl.text() : null;\n }\n return null;\n }\n\n /** Gets the separator text between the values of the two inputs. */\n async getSeparator(): Promise<string> {\n return (await this.locatorFor('.mat-date-range-input-separator')()).text();\n }\n\n /** Gets whether the range input is disabled. */\n async isDisabled(): Promise<boolean> {\n // We consider the input as disabled if both of the sub-inputs are disabled.\n const [startDisabled, endDisabled] = await parallel(() => [\n this.getStartInput().then(input => input.isDisabled()),\n this.getEndInput().then(input => input.isDisabled()),\n ]);\n\n return startDisabled && endDisabled;\n }\n\n /** Gets whether the range input is required. */\n async isRequired(): Promise<boolean> {\n return (await this.host()).hasClass('mat-date-range-input-required');\n }\n\n /** Opens the calendar associated with the input. */\n async isCalendarOpen(): Promise<boolean> {\n // `aria-owns` is set on both inputs only if there's an\n // open range picker so we can use it as an indicator.\n const startHost = await (await this.getStartInput()).host();\n return (await startHost.getAttribute('aria-owns')) != null;\n }\n\n protected async _openCalendar(): Promise<void> {\n // Alt + down arrow is the combination for opening the calendar with the keyboard.\n const startHost = await (await this.getStartInput()).host();\n return startHost.sendKeys({alt: true}, TestKey.DOWN_ARROW);\n }\n}\n"],"names":["getInputPredicate","type","options","HarnessPredicate","addOption","value","harness","stringMatches","getValue","placeholder","getPlaceholder","label","getLabel","MatDatepickerInputHarnessBase","MatFormFieldControlHarnessBase","isDisabled","host","getProperty","isRequired","setValue","newValue","inputEl","clear","sendKeys","dispatchEvent","focus","blur","isFocused","getMin","getAttribute","getMax","MatCalendarCellHarness","ComponentHarness","hostSelector","_content","locatorFor","with","text","getText","selected","isSelected","active","isActive","disabled","today","isToday","inRange","isInRange","inComparisonRange","isInComparisonRange","inPreviewRange","isInPreviewRange","getAriaLabel","_hasState","hasClass","select","click","hover","mouseAway","isRangeStart","isRangeEnd","isComparisonRangeStart","isComparisonRangeEnd","isPreviewRangeStart","isPreviewRangeEnd","name","CalendarView","MatCalendarHarness","_periodButton","getCells","filter","locatorForAll","getCurrentView","locatorForOptional","MULTI_YEAR","YEAR","MONTH","getCurrentViewLabel","changeView","next","previous","selectCell","cells","length","Error","JSON","stringify","DatepickerTriggerHarnessBase","openCalendar","hasCalendar","parallel","_openCalendar","closeCalendar","isCalendarOpen","getCalendarId","documentRootLocatorFactory","forceStabilize","getCalendar","calendarId","documentLocator","backdropSelector","selector","MatDatepickerInputHarness","alt","TestKey","DOWN_ARROW","MatStartDateHarness","MatEndDateHarness","MatDateRangeInputHarness","start","end","separator","getStartInput","then","input","getEndInput","getSeparator","documentRootLocator","labelId","labelText","hostId","labelEl","startDisabled","endDisabled","startHost"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"_error-options-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/error/error-options.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\nimport {Injectable} from '@angular/core';\nimport {FormGroupDirective, NgForm, AbstractControl} from '@angular/forms';\n\n/** Error state matcher that matches when a control is invalid and dirty. */\n@Injectable()\nexport class ShowOnDirtyErrorStateMatcher implements ErrorStateMatcher {\n isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return !!(control && control.invalid && (control.dirty || (form && form.submitted)));\n }\n}\n\n/** Provider that defines how form controls behave with regards to displaying error messages. */\n@Injectable({providedIn: 'root'})\nexport class ErrorStateMatcher {\n isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return !!(control && control.invalid && (control.touched || (form && form.submitted)));\n }\n}\n"],"names":["ShowOnDirtyErrorStateMatcher","isErrorState","control","form","invalid","dirty","submitted","deps","target","i0","ɵɵFactoryTarget","Injectable","decorators","ErrorStateMatcher","touched","ɵprov","ɵɵngDeclareInjectable","minVersion","version","ngImport","type","providedIn"],"mappings":";;;MAaaA,4BAA4B,CAAA;AACvCC,EAAAA,YAAYA,CAACC,OAA+B,EAAEC,IAAwC,EAAA;AACpF,IAAA,OAAO,CAAC,EAAED,OAAO,IAAIA,OAAO,CAACE,OAAO,KAAKF,OAAO,CAACG,KAAK,IAAKF,IAAI,IAAIA,IAAI,CAACG,SAAU,CAAC,CAAC;AACtF,EAAA;;;;;UAHWN,4BAA4B;AAAAO,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;;;;;UAA5BX;AAA4B,GAAA,CAAA;;;;;;QAA5BA,4BAA4B;AAAAY,EAAAA,UAAA,EAAA,CAAA;UADxCD;;;MASYE,iBAAiB,CAAA;AAC5BZ,EAAAA,YAAYA,CAACC,OAA+B,EAAEC,IAAwC,EAAA;AACpF,IAAA,OAAO,CAAC,EAAED,OAAO,IAAIA,OAAO,CAACE,OAAO,KAAKF,OAAO,CAACY,OAAO,IAAKX,IAAI,IAAIA,IAAI,CAACG,SAAU,CAAC,CAAC;AACxF,EAAA;;;;;UAHWO,iBAAiB;AAAAN,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;AAAjB,EAAA,OAAAI,KAAA,GAAAN,EAAA,CAAAO,qBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,QAAA,EAAAV,EAAA;AAAAW,IAAAA,IAAA,EAAAP,iBAAiB;gBADL;AAAM,GAAA,CAAA;;;;;;QAClBA,iBAAiB;AAAAD,EAAAA,UAAA,EAAA,CAAA;UAD7BD,UAAU;WAAC;AAACU,MAAAA,UAAU,EAAE;KAAO;;;;;;"}
{"version":3,"file":"_error-options-chunk.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/core/error/error-options.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\nimport {Injectable} from '@angular/core';\nimport {FormGroupDirective, NgForm, AbstractControl} from '@angular/forms';\n\n/** Error state matcher that matches when a control is invalid and dirty. */\n@Injectable()\nexport class ShowOnDirtyErrorStateMatcher implements ErrorStateMatcher {\n isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return !!(control && control.invalid && (control.dirty || (form && form.submitted)));\n }\n}\n\n/** Provider that defines how form controls behave with regards to displaying error messages. */\n@Injectable({providedIn: 'root'})\nexport class ErrorStateMatcher {\n isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return !!(control && control.invalid && (control.touched || (form && form.submitted)));\n }\n}\n"],"names":["ShowOnDirtyErrorStateMatcher","isErrorState","control","form","invalid","dirty","submitted","deps","target","i0","ɵɵFactoryTarget","Injectable","decorators","ErrorStateMatcher","touched","ɵprov","ɵɵngDeclareInjectable","minVersion","version","ngImport","type","providedIn"],"mappings":";;;MAaaA,4BAA4B,CAAA;AACvCC,EAAAA,YAAYA,CAACC,OAA+B,EAAEC,IAAwC,EAAA;AACpF,IAAA,OAAO,CAAC,EAAED,OAAO,IAAIA,OAAO,CAACE,OAAO,KAAKF,OAAO,CAACG,KAAK,IAAKF,IAAI,IAAIA,IAAI,CAACG,SAAU,CAAC,CAAC;AACtF,EAAA;;;;;UAHWN,4BAA4B;AAAAO,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;;;;;UAA5BX;AAA4B,GAAA,CAAA;;;;;;QAA5BA,4BAA4B;AAAAY,EAAAA,UAAA,EAAA,CAAA;UADxCD;;;MASYE,iBAAiB,CAAA;AAC5BZ,EAAAA,YAAYA,CAACC,OAA+B,EAAEC,IAAwC,EAAA;AACpF,IAAA,OAAO,CAAC,EAAED,OAAO,IAAIA,OAAO,CAACE,OAAO,KAAKF,OAAO,CAACY,OAAO,IAAKX,IAAI,IAAIA,IAAI,CAACG,SAAU,CAAC,CAAC;AACxF,EAAA;;;;;UAHWO,iBAAiB;AAAAN,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;AAAjB,EAAA,OAAAI,KAAA,GAAAN,EAAA,CAAAO,qBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,QAAA,EAAAV,EAAA;AAAAW,IAAAA,IAAA,EAAAP,iBAAiB;gBADL;AAAM,GAAA,CAAA;;;;;;QAClBA,iBAAiB;AAAAD,EAAAA,UAAA,EAAA,CAAA;UAD7BD,UAAU;WAAC;AAACU,MAAAA,UAAU,EAAE;KAAO;;;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"_error-state-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/common-behaviors/error-state.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\nimport {AbstractControl, FormGroupDirective, NgControl, NgForm} from '@angular/forms';\nimport {Subject} from 'rxjs';\nimport {ErrorStateMatcher as _ErrorStateMatcher} from '../error/error-options';\n\n// Declare ErrorStateMatcher as an interface to have compatibility with Closure Compiler.\ninterface ErrorStateMatcher extends _ErrorStateMatcher {}\n\n/**\n * Class that tracks the error state of a component.\n * @docs-private\n */\nexport class _ErrorStateTracker {\n /** Whether the tracker is currently in an error state. */\n errorState = false;\n\n /** User-defined matcher for the error state. */\n matcher!: ErrorStateMatcher;\n\n constructor(\n private _defaultMatcher: ErrorStateMatcher | null,\n public ngControl: NgControl | null,\n private _parentFormGroup: FormGroupDirective | null,\n private _parentForm: NgForm | null,\n private _stateChanges: Subject<void>,\n ) {}\n\n /** Updates the error state based on the provided error state matcher. */\n updateErrorState() {\n const oldState = this.errorState;\n const parent = this._parentFormGroup || this._parentForm;\n const matcher = this.matcher || this._defaultMatcher;\n const control = this.ngControl ? (this.ngControl.control as AbstractControl) : null;\n const newState = matcher?.isErrorState(control, parent) ?? false;\n\n if (newState !== oldState) {\n this.errorState = newState;\n this._stateChanges.next();\n }\n }\n}\n"],"names":["_ErrorStateTracker","_defaultMatcher","ngControl","_parentFormGroup","_parentForm","_stateChanges","errorState","matcher","constructor","updateErrorState","oldState","parent","control","newState","isErrorState","next"],"mappings":"MAmBaA,kBAAkB,CAAA;EAQnBC,eAAA;EACDC,SAAA;EACCC,gBAAA;EACAC,WAAA;EACAC,aAAA;AAVVC,EAAAA,UAAU,GAAG,KAAK;EAGlBC,OAAO;EAEPC,WAAAA,CACUP,eAAyC,EAC1CC,SAA2B,EAC1BC,gBAA2C,EAC3CC,WAA0B,EAC1BC,aAA4B,EAAA;IAJ5B,IAAA,CAAAJ,eAAe,GAAfA,eAAe;IAChB,IAAA,CAAAC,SAAS,GAATA,SAAS;IACR,IAAA,CAAAC,gBAAgB,GAAhBA,gBAAgB;IAChB,IAAA,CAAAC,WAAW,GAAXA,WAAW;IACX,IAAA,CAAAC,aAAa,GAAbA,aAAa;AACpB,EAAA;AAGHI,EAAAA,gBAAgBA,GAAA;AACd,IAAA,MAAMC,QAAQ,GAAG,IAAI,CAACJ,UAAU;IAChC,MAAMK,MAAM,GAAG,IAAI,CAACR,gBAAgB,IAAI,IAAI,CAACC,WAAW;IACxD,MAAMG,OAAO,GAAG,IAAI,CAACA,OAAO,IAAI,IAAI,CAACN,eAAe;AACpD,IAAA,MAAMW,OAAO,GAAG,IAAI,CAACV,SAAS,GAAI,IAAI,CAACA,SAAS,CAACU,OAA2B,GAAG,IAAI;IACnF,MAAMC,QAAQ,GAAGN,OAAO,EAAEO,YAAY,CAACF,OAAO,EAAED,MAAM,CAAC,IAAI,KAAK;IAEhE,IAAIE,QAAQ,KAAKH,QAAQ,EAAE;MACzB,IAAI,CAACJ,UAAU,GAAGO,QAAQ;AAC1B,MAAA,IAAI,CAACR,aAAa,CAACU,IAAI,EAAE;AAC3B,IAAA;AACF,EAAA;AACD;;;;"}
{"version":3,"file":"_error-state-chunk.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/core/common-behaviors/error-state.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\nimport {AbstractControl, FormGroupDirective, NgControl, NgForm} from '@angular/forms';\nimport {Subject} from 'rxjs';\nimport {ErrorStateMatcher as _ErrorStateMatcher} from '../error/error-options';\n\n// Declare ErrorStateMatcher as an interface to have compatibility with Closure Compiler.\ninterface ErrorStateMatcher extends _ErrorStateMatcher {}\n\n/**\n * Class that tracks the error state of a component.\n * @docs-private\n */\nexport class _ErrorStateTracker {\n /** Whether the tracker is currently in an error state. */\n errorState = false;\n\n /** User-defined matcher for the error state. */\n matcher!: ErrorStateMatcher;\n\n constructor(\n private _defaultMatcher: ErrorStateMatcher | null,\n public ngControl: NgControl | null,\n private _parentFormGroup: FormGroupDirective | null,\n private _parentForm: NgForm | null,\n private _stateChanges: Subject<void>,\n ) {}\n\n /** Updates the error state based on the provided error state matcher. */\n updateErrorState() {\n const oldState = this.errorState;\n const parent = this._parentFormGroup || this._parentForm;\n const matcher = this.matcher || this._defaultMatcher;\n const control = this.ngControl ? (this.ngControl.control as AbstractControl) : null;\n const newState = matcher?.isErrorState(control, parent) ?? false;\n\n if (newState !== oldState) {\n this.errorState = newState;\n this._stateChanges.next();\n }\n }\n}\n"],"names":["_ErrorStateTracker","_defaultMatcher","ngControl","_parentFormGroup","_parentForm","_stateChanges","errorState","matcher","constructor","updateErrorState","oldState","parent","control","newState","isErrorState","next"],"mappings":"MAmBaA,kBAAkB,CAAA;EAQnBC,eAAA;EACDC,SAAA;EACCC,gBAAA;EACAC,WAAA;EACAC,aAAA;AAVVC,EAAAA,UAAU,GAAG,KAAK;EAGlBC,OAAO;EAEPC,WAAAA,CACUP,eAAyC,EAC1CC,SAA2B,EAC1BC,gBAA2C,EAC3CC,WAA0B,EAC1BC,aAA4B,EAAA;IAJ5B,IAAA,CAAAJ,eAAe,GAAfA,eAAe;IAChB,IAAA,CAAAC,SAAS,GAATA,SAAS;IACR,IAAA,CAAAC,gBAAgB,GAAhBA,gBAAgB;IAChB,IAAA,CAAAC,WAAW,GAAXA,WAAW;IACX,IAAA,CAAAC,aAAa,GAAbA,aAAa;AACpB,EAAA;AAGHI,EAAAA,gBAAgBA,GAAA;AACd,IAAA,MAAMC,QAAQ,GAAG,IAAI,CAACJ,UAAU;IAChC,MAAMK,MAAM,GAAG,IAAI,CAACR,gBAAgB,IAAI,IAAI,CAACC,WAAW;IACxD,MAAMG,OAAO,GAAG,IAAI,CAACA,OAAO,IAAI,IAAI,CAACN,eAAe;AACpD,IAAA,MAAMW,OAAO,GAAG,IAAI,CAACV,SAAS,GAAI,IAAI,CAACA,SAAS,CAACU,OAA2B,GAAG,IAAI;IACnF,MAAMC,QAAQ,GAAGN,OAAO,EAAEO,YAAY,CAACF,OAAO,EAAED,MAAM,CAAC,IAAI,KAAK;IAEhE,IAAIE,QAAQ,KAAKH,QAAQ,EAAE;MACzB,IAAI,CAACJ,UAAU,GAAGO,QAAQ;AAC1B,MAAA,IAAI,CAACR,aAAa,CAACU,IAAI,EAAE;AAC3B,IAAA;AACF,EAAA;AACD;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"_icon-button-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/button/button-base.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/button/icon-button.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/button/icon-button.html"],"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\nimport {FocusMonitor, FocusOrigin} from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n booleanAttribute,\n Directive,\n ElementRef,\n inject,\n InjectionToken,\n Input,\n NgZone,\n numberAttribute,\n OnDestroy,\n Renderer2,\n} from '@angular/core';\nimport {_animationsDisabled, _StructuralStylesLoader, MatRippleLoader, ThemePalette} from '../core';\nimport {_CdkPrivateStyleLoader} from '@angular/cdk/private';\n\n/**\n * Possible appearances for a `MatButton`.\n * See https://m3.material.io/components/buttons/overview\n */\nexport type MatButtonAppearance = 'text' | 'filled' | 'elevated' | 'outlined' | 'tonal';\n\n/** Object that can be used to configure the default options for the button component. */\nexport interface MatButtonConfig {\n /** Whether disabled buttons should be interactive. */\n disabledInteractive?: boolean;\n\n /** Default palette color to apply to buttons. */\n color?: ThemePalette;\n\n /** Default appearance for plain buttons (not icon buttons or FABs). */\n defaultAppearance?: MatButtonAppearance;\n}\n\n/** Injection token that can be used to provide the default options the button component. */\nexport const MAT_BUTTON_CONFIG = new InjectionToken<MatButtonConfig>('MAT_BUTTON_CONFIG');\n\nfunction transformTabIndex(value: unknown): number | undefined {\n return value == null ? undefined : numberAttribute(value);\n}\n\n/** Base class for all buttons. */\n@Directive({\n host: {\n // Add a class that applies to all buttons. This makes it easier to target if somebody\n // wants to target all Material buttons.\n 'class': 'mat-mdc-button-base',\n '[class]': 'color ? \"mat-\" + color : \"\"',\n '[attr.disabled]': '_getDisabledAttribute()',\n '[attr.aria-disabled]': '_getAriaDisabled()',\n '[attr.tabindex]': '_getTabIndex()',\n '[class.mat-mdc-button-disabled]': 'disabled',\n '[class.mat-mdc-button-disabled-interactive]': 'disabledInteractive',\n '[class.mat-unthemed]': '!color',\n '[class._mat-animation-noopable]': '_animationsDisabled',\n },\n})\nexport class MatButtonBase implements AfterViewInit, OnDestroy {\n _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n protected _ngZone = inject(NgZone);\n protected _animationsDisabled = _animationsDisabled();\n\n protected readonly _config = inject(MAT_BUTTON_CONFIG, {optional: true});\n private readonly _focusMonitor = inject(FocusMonitor);\n private _cleanupClick: (() => void) | undefined;\n private _renderer = inject(Renderer2);\n\n /**\n * Handles the lazy creation of the MatButton ripple.\n * Used to improve initial load time of large applications.\n */\n protected _rippleLoader: MatRippleLoader = inject(MatRippleLoader);\n\n /** Whether the button is set on an anchor node. */\n protected _isAnchor: boolean;\n\n /** Whether this button is a FAB. Used to apply the correct class on the ripple. */\n protected _isFab = false;\n\n /**\n * Theme color of the button. This API is supported in M2 themes only, it has\n * no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/button/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input() color?: string | null;\n\n /** Whether the ripple effect is disabled or not. */\n @Input({transform: booleanAttribute})\n get disableRipple(): boolean {\n return this._disableRipple;\n }\n set disableRipple(value: any) {\n this._disableRipple = value;\n this._updateRippleDisabled();\n }\n private _disableRipple: boolean = false;\n\n /** Whether the button is disabled. */\n @Input({transform: booleanAttribute})\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: any) {\n this._disabled = value;\n this._updateRippleDisabled();\n }\n private _disabled: boolean = false;\n\n /** `aria-disabled` value of the button. */\n @Input({transform: booleanAttribute, alias: 'aria-disabled'})\n ariaDisabled: boolean | undefined;\n\n /**\n * Natively disabled buttons prevent focus and any pointer events from reaching the button.\n * In some scenarios this might not be desirable, because it can prevent users from finding out\n * why the button is disabled (e.g. via tooltip). This is also useful for buttons that may\n * become disabled when activated, which would cause focus to be transferred to the document\n * body instead of remaining on the button.\n *\n * Enabling this input will change the button so that it is styled to be disabled and will be\n * marked as `aria-disabled`, but it will allow the button to receive events and focus.\n *\n * Note that by enabling this, you need to set the `tabindex` yourself if the button isn't\n * meant to be tabbable and you have to prevent the button action (e.g. form submissions).\n */\n @Input({transform: booleanAttribute})\n disabledInteractive: boolean;\n\n /** Tab index for the button. */\n @Input({transform: transformTabIndex})\n tabIndex!: number;\n\n /**\n * Backwards-compatibility input that handles pre-existing `[tabindex]` bindings.\n * @docs-private\n */\n @Input({alias: 'tabindex', transform: transformTabIndex})\n set _tabindex(value: number) {\n this.tabIndex = value;\n }\n\n constructor(...args: unknown[]);\n\n constructor() {\n inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);\n const element = this._elementRef.nativeElement;\n\n this._isAnchor = element.tagName === 'A';\n this.disabledInteractive = this._config?.disabledInteractive ?? false;\n this.color = this._config?.color ?? null;\n this._rippleLoader?.configureRipple(element, {className: 'mat-mdc-button-ripple'});\n }\n\n ngAfterViewInit() {\n this._focusMonitor.monitor(this._elementRef, true);\n\n // Some internal tests depend on the timing of this,\n // otherwise we could bind it in the constructor.\n if (this._isAnchor) {\n this._setupAsAnchor();\n }\n }\n\n ngOnDestroy() {\n this._cleanupClick?.();\n this._focusMonitor.stopMonitoring(this._elementRef);\n this._rippleLoader?.destroyRipple(this._elementRef.nativeElement);\n }\n\n /** Focuses the button. */\n focus(origin: FocusOrigin = 'program', options?: FocusOptions): void {\n if (origin) {\n this._focusMonitor.focusVia(this._elementRef.nativeElement, origin, options);\n } else {\n this._elementRef.nativeElement.focus(options);\n }\n }\n\n protected _getAriaDisabled() {\n if (this.ariaDisabled != null) {\n return this.ariaDisabled;\n }\n\n if (this._isAnchor) {\n return this.disabled || null;\n }\n\n return this.disabled && this.disabledInteractive ? true : null;\n }\n\n protected _getDisabledAttribute() {\n return this.disabledInteractive || !this.disabled ? null : true;\n }\n\n private _updateRippleDisabled(): void {\n this._rippleLoader?.setDisabled(\n this._elementRef.nativeElement,\n this.disableRipple || this.disabled,\n );\n }\n\n protected _getTabIndex() {\n if (this._isAnchor) {\n return this.disabled && !this.disabledInteractive ? -1 : this.tabIndex;\n }\n return this.tabIndex;\n }\n\n private _setupAsAnchor() {\n this._cleanupClick = this._ngZone.runOutsideAngular(() =>\n this._renderer.listen(this._elementRef.nativeElement, 'click', (event: Event) => {\n if (this.disabled) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }),\n );\n }\n}\n\n// tslint:disable:variable-name\n/**\n * Anchor button base.\n */\nexport const MatAnchorBase = MatButtonBase;\nexport type MatAnchorBase = MatButtonBase;\n// tslint:enable:variable-name\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 {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\nimport {MatButtonBase} from './button-base';\n\n/**\n * Material Design icon button component. This type of button displays a single interactive icon for\n * users to perform an action.\n * See https://material.io/develop/web/components/buttons/icon-buttons/\n */\n@Component({\n selector: `button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]`,\n templateUrl: 'icon-button.html',\n styleUrls: ['icon-button.css', 'button-high-contrast.css'],\n host: {\n 'class': 'mdc-icon-button mat-mdc-icon-button',\n },\n exportAs: 'matButton, matAnchor',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatIconButton extends MatButtonBase {\n constructor(...args: unknown[]);\n\n constructor() {\n super();\n this._rippleLoader.configureRipple(this._elementRef.nativeElement, {centered: true});\n }\n}\n\n// tslint:disable:variable-name\n/**\n * Material Design icon button component for anchor elements. This button displays a single\n * interaction icon that allows users to navigate across different routes or pages.\n * See https://material.io/develop/web/components/buttons/icon-buttons/\n */\nexport const MatIconAnchor = MatIconButton;\nexport type MatIconAnchor = MatIconButton;\n// tslint:enable:variable-name\n","<span class=\"mat-mdc-button-persistent-ripple mdc-icon-button__ripple\"></span>\n\n<ng-content></ng-content>\n\n<!--\n The indicator can't be directly on the button, because MDC uses ::before for high contrast\n indication and it can't be on the ripple, because it has a border radius and overflow: hidden.\n-->\n<span class=\"mat-focus-indicator\"></span>\n\n<span class=\"mat-mdc-button-touch-target\"></span>\n"],"names":["MAT_BUTTON_CONFIG","InjectionToken","transformTabIndex","value","undefined","numberAttribute","MatButtonBase","_elementRef","inject","ElementRef","_ngZone","NgZone","_animationsDisabled","_config","optional","_focusMonitor","FocusMonitor","_cleanupClick","_renderer","Renderer2","_rippleLoader","MatRippleLoader","_isAnchor","_isFab","color","disableRipple","_disableRipple","_updateRippleDisabled","disabled","_disabled","ariaDisabled","disabledInteractive","tabIndex","_tabindex","constructor","_CdkPrivateStyleLoader","load","_StructuralStylesLoader","element","nativeElement","tagName","configureRipple","className","ngAfterViewInit","monitor","_setupAsAnchor","ngOnDestroy","stopMonitoring","destroyRipple","focus","origin","options","focusVia","_getAriaDisabled","_getDisabledAttribute","setDisabled","_getTabIndex","runOutsideAngular","listen","event","preventDefault","stopImmediatePropagation","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","inputs","booleanAttribute","host","properties","classAttribute","ngImport","decorators","args","Input","transform","alias","MatIconButton","centered","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","selector","exportAs","template","MatIconAnchor"],"mappings":"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"}
{"version":3,"file":"_icon-button-chunk.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/button/button-base.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/button/icon-button.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/button/icon-button.html"],"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\nimport {FocusMonitor, FocusOrigin} from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n booleanAttribute,\n Directive,\n ElementRef,\n inject,\n InjectionToken,\n Input,\n NgZone,\n numberAttribute,\n OnDestroy,\n Renderer2,\n} from '@angular/core';\nimport {_animationsDisabled, _StructuralStylesLoader, MatRippleLoader, ThemePalette} from '../core';\nimport {_CdkPrivateStyleLoader} from '@angular/cdk/private';\n\n/**\n * Possible appearances for a `MatButton`.\n * See https://m3.material.io/components/buttons/overview\n */\nexport type MatButtonAppearance = 'text' | 'filled' | 'elevated' | 'outlined' | 'tonal';\n\n/** Object that can be used to configure the default options for the button component. */\nexport interface MatButtonConfig {\n /** Whether disabled buttons should be interactive. */\n disabledInteractive?: boolean;\n\n /** Default palette color to apply to buttons. */\n color?: ThemePalette;\n\n /** Default appearance for plain buttons (not icon buttons or FABs). */\n defaultAppearance?: MatButtonAppearance;\n}\n\n/** Injection token that can be used to provide the default options the button component. */\nexport const MAT_BUTTON_CONFIG = new InjectionToken<MatButtonConfig>('MAT_BUTTON_CONFIG');\n\nfunction transformTabIndex(value: unknown): number | undefined {\n return value == null ? undefined : numberAttribute(value);\n}\n\n/** Base class for all buttons. */\n@Directive({\n host: {\n // Add a class that applies to all buttons. This makes it easier to target if somebody\n // wants to target all Material buttons.\n 'class': 'mat-mdc-button-base',\n '[class]': 'color ? \"mat-\" + color : \"\"',\n '[attr.disabled]': '_getDisabledAttribute()',\n '[attr.aria-disabled]': '_getAriaDisabled()',\n '[attr.tabindex]': '_getTabIndex()',\n '[class.mat-mdc-button-disabled]': 'disabled',\n '[class.mat-mdc-button-disabled-interactive]': 'disabledInteractive',\n '[class.mat-unthemed]': '!color',\n '[class._mat-animation-noopable]': '_animationsDisabled',\n },\n})\nexport class MatButtonBase implements AfterViewInit, OnDestroy {\n _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n protected _ngZone = inject(NgZone);\n protected _animationsDisabled = _animationsDisabled();\n\n protected readonly _config = inject(MAT_BUTTON_CONFIG, {optional: true});\n private readonly _focusMonitor = inject(FocusMonitor);\n private _cleanupClick: (() => void) | undefined;\n private _renderer = inject(Renderer2);\n\n /**\n * Handles the lazy creation of the MatButton ripple.\n * Used to improve initial load time of large applications.\n */\n protected _rippleLoader: MatRippleLoader = inject(MatRippleLoader);\n\n /** Whether the button is set on an anchor node. */\n protected _isAnchor: boolean;\n\n /** Whether this button is a FAB. Used to apply the correct class on the ripple. */\n protected _isFab = false;\n\n /**\n * Theme color of the button. This API is supported in M2 themes only, it has\n * no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/button/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input() color?: string | null;\n\n /** Whether the ripple effect is disabled or not. */\n @Input({transform: booleanAttribute})\n get disableRipple(): boolean {\n return this._disableRipple;\n }\n set disableRipple(value: any) {\n this._disableRipple = value;\n this._updateRippleDisabled();\n }\n private _disableRipple: boolean = false;\n\n /** Whether the button is disabled. */\n @Input({transform: booleanAttribute})\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: any) {\n this._disabled = value;\n this._updateRippleDisabled();\n }\n private _disabled: boolean = false;\n\n /** `aria-disabled` value of the button. */\n @Input({transform: booleanAttribute, alias: 'aria-disabled'})\n ariaDisabled: boolean | undefined;\n\n /**\n * Natively disabled buttons prevent focus and any pointer events from reaching the button.\n * In some scenarios this might not be desirable, because it can prevent users from finding out\n * why the button is disabled (e.g. via tooltip). This is also useful for buttons that may\n * become disabled when activated, which would cause focus to be transferred to the document\n * body instead of remaining on the button.\n *\n * Enabling this input will change the button so that it is styled to be disabled and will be\n * marked as `aria-disabled`, but it will allow the button to receive events and focus.\n *\n * Note that by enabling this, you need to set the `tabindex` yourself if the button isn't\n * meant to be tabbable and you have to prevent the button action (e.g. form submissions).\n */\n @Input({transform: booleanAttribute})\n disabledInteractive: boolean;\n\n /** Tab index for the button. */\n @Input({transform: transformTabIndex})\n tabIndex!: number;\n\n /**\n * Backwards-compatibility input that handles pre-existing `[tabindex]` bindings.\n * @docs-private\n */\n @Input({alias: 'tabindex', transform: transformTabIndex})\n set _tabindex(value: number) {\n this.tabIndex = value;\n }\n\n constructor(...args: unknown[]);\n\n constructor() {\n inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);\n const element = this._elementRef.nativeElement;\n\n this._isAnchor = element.tagName === 'A';\n this.disabledInteractive = this._config?.disabledInteractive ?? false;\n this.color = this._config?.color ?? null;\n this._rippleLoader?.configureRipple(element, {className: 'mat-mdc-button-ripple'});\n }\n\n ngAfterViewInit() {\n this._focusMonitor.monitor(this._elementRef, true);\n\n // Some internal tests depend on the timing of this,\n // otherwise we could bind it in the constructor.\n if (this._isAnchor) {\n this._setupAsAnchor();\n }\n }\n\n ngOnDestroy() {\n this._cleanupClick?.();\n this._focusMonitor.stopMonitoring(this._elementRef);\n this._rippleLoader?.destroyRipple(this._elementRef.nativeElement);\n }\n\n /** Focuses the button. */\n focus(origin: FocusOrigin = 'program', options?: FocusOptions): void {\n if (origin) {\n this._focusMonitor.focusVia(this._elementRef.nativeElement, origin, options);\n } else {\n this._elementRef.nativeElement.focus(options);\n }\n }\n\n protected _getAriaDisabled() {\n if (this.ariaDisabled != null) {\n return this.ariaDisabled;\n }\n\n if (this._isAnchor) {\n return this.disabled || null;\n }\n\n return this.disabled && this.disabledInteractive ? true : null;\n }\n\n protected _getDisabledAttribute() {\n return this.disabledInteractive || !this.disabled ? null : true;\n }\n\n private _updateRippleDisabled(): void {\n this._rippleLoader?.setDisabled(\n this._elementRef.nativeElement,\n this.disableRipple || this.disabled,\n );\n }\n\n protected _getTabIndex() {\n if (this._isAnchor) {\n return this.disabled && !this.disabledInteractive ? -1 : this.tabIndex;\n }\n return this.tabIndex;\n }\n\n private _setupAsAnchor() {\n this._cleanupClick = this._ngZone.runOutsideAngular(() =>\n this._renderer.listen(this._elementRef.nativeElement, 'click', (event: Event) => {\n if (this.disabled) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }),\n );\n }\n}\n\n// tslint:disable:variable-name\n/**\n * Anchor button base.\n */\nexport const MatAnchorBase = MatButtonBase;\nexport type MatAnchorBase = MatButtonBase;\n// tslint:enable:variable-name\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 {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\nimport {MatButtonBase} from './button-base';\n\n/**\n * Material Design icon button component. This type of button displays a single interactive icon for\n * users to perform an action.\n * See https://material.io/develop/web/components/buttons/icon-buttons/\n */\n@Component({\n selector: `button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]`,\n templateUrl: 'icon-button.html',\n styleUrls: ['icon-button.css', 'button-high-contrast.css'],\n host: {\n 'class': 'mdc-icon-button mat-mdc-icon-button',\n },\n exportAs: 'matButton, matAnchor',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatIconButton extends MatButtonBase {\n constructor(...args: unknown[]);\n\n constructor() {\n super();\n this._rippleLoader.configureRipple(this._elementRef.nativeElement, {centered: true});\n }\n}\n\n// tslint:disable:variable-name\n/**\n * Material Design icon button component for anchor elements. This button displays a single\n * interaction icon that allows users to navigate across different routes or pages.\n * See https://material.io/develop/web/components/buttons/icon-buttons/\n */\nexport const MatIconAnchor = MatIconButton;\nexport type MatIconAnchor = MatIconButton;\n// tslint:enable:variable-name\n","<span class=\"mat-mdc-button-persistent-ripple mdc-icon-button__ripple\"></span>\n\n<ng-content></ng-content>\n\n<!--\n The indicator can't be directly on the button, because MDC uses ::before for high contrast\n indication and it can't be on the ripple, because it has a border radius and overflow: hidden.\n-->\n<span class=\"mat-focus-indicator\"></span>\n\n<span class=\"mat-mdc-button-touch-target\"></span>\n"],"names":["MAT_BUTTON_CONFIG","InjectionToken","transformTabIndex","value","undefined","numberAttribute","MatButtonBase","_elementRef","inject","ElementRef","_ngZone","NgZone","_animationsDisabled","_config","optional","_focusMonitor","FocusMonitor","_cleanupClick","_renderer","Renderer2","_rippleLoader","MatRippleLoader","_isAnchor","_isFab","color","disableRipple","_disableRipple","_updateRippleDisabled","disabled","_disabled","ariaDisabled","disabledInteractive","tabIndex","_tabindex","constructor","_CdkPrivateStyleLoader","load","_StructuralStylesLoader","element","nativeElement","tagName","configureRipple","className","ngAfterViewInit","monitor","_setupAsAnchor","ngOnDestroy","stopMonitoring","destroyRipple","focus","origin","options","focusVia","_getAriaDisabled","_getDisabledAttribute","setDisabled","_getTabIndex","runOutsideAngular","listen","event","preventDefault","stopImmediatePropagation","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","inputs","booleanAttribute","host","properties","classAttribute","ngImport","decorators","args","Input","transform","alias","MatIconButton","centered","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","selector","exportAs","template","MatIconAnchor"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"_icon-registry-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/icon/icon-registry.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\nimport {TrustedHTML, trustedHTMLFromString} from '@angular/cdk/private';\nimport {HttpClient, HttpErrorResponse} from '@angular/common/http';\nimport {\n ErrorHandler,\n Inject,\n Injectable,\n OnDestroy,\n Optional,\n SecurityContext,\n DOCUMENT,\n} from '@angular/core';\nimport {DomSanitizer, SafeHtml, SafeResourceUrl} from '@angular/platform-browser';\nimport {forkJoin, Observable, of as observableOf, throwError as observableThrow} from 'rxjs';\nimport {catchError, finalize, map, share, tap} from 'rxjs/operators';\n\n/**\n * Returns an exception to be thrown in the case when attempting to\n * load an icon with a name that cannot be found.\n * @docs-private\n */\nexport function getMatIconNameNotFoundError(iconName: string): Error {\n return Error(`Unable to find icon with the name \"${iconName}\"`);\n}\n\n/**\n * Returns an exception to be thrown when the consumer attempts to use\n * `<mat-icon>` without including @angular/common/http.\n * @docs-private\n */\nexport function getMatIconNoHttpProviderError(): Error {\n return Error(\n 'Could not find HttpClient for use with Angular Material icons. ' +\n 'Please add provideHttpClient() to your providers.',\n );\n}\n\n/**\n * Returns an exception to be thrown when a URL couldn't be sanitized.\n * @param url URL that was attempted to be sanitized.\n * @docs-private\n */\nexport function getMatIconFailedToSanitizeUrlError(url: SafeResourceUrl): Error {\n return Error(\n `The URL provided to MatIconRegistry was not trusted as a resource URL ` +\n `via Angular's DomSanitizer. Attempted URL was \"${url}\".`,\n );\n}\n\n/**\n * Returns an exception to be thrown when a HTML string couldn't be sanitized.\n * @param literal HTML that was attempted to be sanitized.\n * @docs-private\n */\nexport function getMatIconFailedToSanitizeLiteralError(literal: SafeHtml): Error {\n return Error(\n `The literal provided to MatIconRegistry was not trusted as safe HTML by ` +\n `Angular's DomSanitizer. Attempted literal was \"${literal}\".`,\n );\n}\n\n/** Options that can be used to configure how an icon or the icons in an icon set are presented. */\nexport interface IconOptions {\n /** View box to set on the icon. */\n viewBox?: string;\n\n /** Whether or not to fetch the icon or icon set using HTTP credentials. */\n withCredentials?: boolean;\n}\n\n/**\n * Function that will be invoked by the icon registry when trying to resolve the\n * URL from which to fetch an icon. The returned URL will be used to make a request for the icon.\n */\nexport type IconResolver = (\n name: string,\n namespace: string,\n) => SafeResourceUrl | SafeResourceUrlWithIconOptions | null;\n\n/** Object that specifies a URL from which to fetch an icon and the options to use for it. */\nexport interface SafeResourceUrlWithIconOptions {\n url: SafeResourceUrl;\n options: IconOptions;\n}\n\n/**\n * Configuration for an icon, including the URL and possibly the cached SVG element.\n * @docs-private\n */\nclass SvgIconConfig {\n svgElement: SVGElement | null = null;\n\n constructor(\n public url: SafeResourceUrl,\n public svgText: TrustedHTML | null,\n public options?: IconOptions,\n ) {}\n}\n\n/** Icon configuration whose content has already been loaded. */\ntype LoadedSvgIconConfig = SvgIconConfig & {svgText: TrustedHTML};\n\n/**\n * Service to register and display icons used by the `<mat-icon>` component.\n * - Registers icon URLs by namespace and name.\n * - Registers icon set URLs by namespace.\n * - Registers aliases for CSS classes, for use with icon fonts.\n * - Loads icons from URLs and extracts individual icons from icon sets.\n */\n@Injectable({providedIn: 'root'})\nexport class MatIconRegistry implements OnDestroy {\n private _document: Document;\n\n /**\n * URLs and cached SVG elements for individual icons. Keys are of the format \"[namespace]:[icon]\".\n */\n private _svgIconConfigs = new Map<string, SvgIconConfig>();\n\n /**\n * SvgIconConfig objects and cached SVG elements for icon sets, keyed by namespace.\n * Multiple icon sets can be registered under the same namespace.\n */\n private _iconSetConfigs = new Map<string, SvgIconConfig[]>();\n\n /** Cache for icons loaded by direct URLs. */\n private _cachedIconsByUrl = new Map<string, SVGElement>();\n\n /** In-progress icon fetches. Used to coalesce multiple requests to the same URL. */\n private _inProgressUrlFetches = new Map<string, Observable<TrustedHTML>>();\n\n /** Map from font identifiers to their CSS class names. Used for icon fonts. */\n private _fontCssClassesByAlias = new Map<string, string>();\n\n /** Registered icon resolver functions. */\n private _resolvers: IconResolver[] = [];\n\n /**\n * The CSS classes to apply when an `<mat-icon>` component has no icon name, url, or font\n * specified. The default 'material-icons' value assumes that the material icon font has been\n * loaded as described at https://google.github.io/material-design-icons/#icon-font-for-the-web\n */\n private _defaultFontSetClass = ['material-icons', 'mat-ligature-font'];\n\n constructor(\n @Optional() private _httpClient: HttpClient,\n private _sanitizer: DomSanitizer,\n @Optional() @Inject(DOCUMENT) document: any,\n private readonly _errorHandler: ErrorHandler,\n ) {\n this._document = document;\n }\n\n /**\n * Registers an icon by URL in the default namespace.\n * @param iconName Name under which the icon should be registered.\n * @param url\n */\n addSvgIcon(iconName: string, url: SafeResourceUrl, options?: IconOptions): this {\n return this.addSvgIconInNamespace('', iconName, url, options);\n }\n\n /**\n * Registers an icon using an HTML string in the default namespace.\n * @param iconName Name under which the icon should be registered.\n * @param literal SVG source of the icon.\n */\n addSvgIconLiteral(iconName: string, literal: SafeHtml, options?: IconOptions): this {\n return this.addSvgIconLiteralInNamespace('', iconName, literal, options);\n }\n\n /**\n * Registers an icon by URL in the specified namespace.\n * @param namespace Namespace in which the icon should be registered.\n * @param iconName Name under which the icon should be registered.\n * @param url\n */\n addSvgIconInNamespace(\n namespace: string,\n iconName: string,\n url: SafeResourceUrl,\n options?: IconOptions,\n ): this {\n return this._addSvgIconConfig(namespace, iconName, new SvgIconConfig(url, null, options));\n }\n\n /**\n * Registers an icon resolver function with the registry. The function will be invoked with the\n * name and namespace of an icon when the registry tries to resolve the URL from which to fetch\n * the icon. The resolver is expected to return a `SafeResourceUrl` that points to the icon,\n * an object with the icon URL and icon options, or `null` if the icon is not supported. Resolvers\n * will be invoked in the order in which they have been registered.\n * @param resolver Resolver function to be registered.\n */\n addSvgIconResolver(resolver: IconResolver): this {\n this._resolvers.push(resolver);\n return this;\n }\n\n /**\n * Registers an icon using an HTML string in the specified namespace.\n * @param namespace Namespace in which the icon should be registered.\n * @param iconName Name under which the icon should be registered.\n * @param literal SVG source of the icon.\n */\n addSvgIconLiteralInNamespace(\n namespace: string,\n iconName: string,\n literal: SafeHtml,\n options?: IconOptions,\n ): this {\n const cleanLiteral = this._sanitizer.sanitize(SecurityContext.HTML, literal);\n\n // TODO: add an ngDevMode check\n if (!cleanLiteral) {\n throw getMatIconFailedToSanitizeLiteralError(literal);\n }\n\n // Security: The literal is passed in as SafeHtml, and is thus trusted.\n const trustedLiteral = trustedHTMLFromString(cleanLiteral);\n return this._addSvgIconConfig(\n namespace,\n iconName,\n new SvgIconConfig('', trustedLiteral, options),\n );\n }\n\n /**\n * Registers an icon set by URL in the default namespace.\n * @param url\n */\n addSvgIconSet(url: SafeResourceUrl, options?: IconOptions): this {\n return this.addSvgIconSetInNamespace('', url, options);\n }\n\n /**\n * Registers an icon set using an HTML string in the default namespace.\n * @param literal SVG source of the icon set.\n */\n addSvgIconSetLiteral(literal: SafeHtml, options?: IconOptions): this {\n return this.addSvgIconSetLiteralInNamespace('', literal, options);\n }\n\n /**\n * Registers an icon set by URL in the specified namespace.\n * @param namespace Namespace in which to register the icon set.\n * @param url\n */\n addSvgIconSetInNamespace(namespace: string, url: SafeResourceUrl, options?: IconOptions): this {\n return this._addSvgIconSetConfig(namespace, new SvgIconConfig(url, null, options));\n }\n\n /**\n * Registers an icon set using an HTML string in the specified namespace.\n * @param namespace Namespace in which to register the icon set.\n * @param literal SVG source of the icon set.\n */\n addSvgIconSetLiteralInNamespace(\n namespace: string,\n literal: SafeHtml,\n options?: IconOptions,\n ): this {\n const cleanLiteral = this._sanitizer.sanitize(SecurityContext.HTML, literal);\n\n if (!cleanLiteral) {\n throw getMatIconFailedToSanitizeLiteralError(literal);\n }\n\n // Security: The literal is passed in as SafeHtml, and is thus trusted.\n const trustedLiteral = trustedHTMLFromString(cleanLiteral);\n return this._addSvgIconSetConfig(namespace, new SvgIconConfig('', trustedLiteral, options));\n }\n\n /**\n * Defines an alias for CSS class names to be used for icon fonts. Creating an matIcon\n * component with the alias as the fontSet input will cause the class name to be applied\n * to the `<mat-icon>` element.\n *\n * If the registered font is a ligature font, then don't forget to also include the special\n * class `mat-ligature-font` to allow the usage via attribute. So register like this:\n *\n * ```ts\n * iconRegistry.registerFontClassAlias('f1', 'font1 mat-ligature-font');\n * ```\n *\n * And use like this:\n *\n * ```html\n * <mat-icon fontSet=\"f1\" fontIcon=\"home\"></mat-icon>\n * ```\n *\n * @param alias Alias for the font.\n * @param classNames Class names override to be used instead of the alias.\n */\n registerFontClassAlias(alias: string, classNames: string = alias): this {\n this._fontCssClassesByAlias.set(alias, classNames);\n return this;\n }\n\n /**\n * Returns the CSS class name associated with the alias by a previous call to\n * registerFontClassAlias. If no CSS class has been associated, returns the alias unmodified.\n */\n classNameForFontAlias(alias: string): string {\n return this._fontCssClassesByAlias.get(alias) || alias;\n }\n\n /**\n * Sets the CSS classes to be used for icon fonts when an `<mat-icon>` component does not\n * have a fontSet input value, and is not loading an icon by name or URL.\n */\n setDefaultFontSetClass(...classNames: string[]): this {\n this._defaultFontSetClass = classNames;\n return this;\n }\n\n /**\n * Returns the CSS classes to be used for icon fonts when an `<mat-icon>` component does not\n * have a fontSet input value, and is not loading an icon by name or URL.\n */\n getDefaultFontSetClass(): string[] {\n return this._defaultFontSetClass;\n }\n\n /**\n * Returns an Observable that produces the icon (as an `<svg>` DOM element) from the given URL.\n * The response from the URL may be cached so this will not always cause an HTTP request, but\n * the produced element will always be a new copy of the originally fetched icon. (That is,\n * it will not contain any modifications made to elements previously returned).\n *\n * @param safeUrl URL from which to fetch the SVG icon.\n */\n getSvgIconFromUrl(safeUrl: SafeResourceUrl): Observable<SVGElement> {\n const url = this._sanitizer.sanitize(SecurityContext.RESOURCE_URL, safeUrl);\n\n if (!url) {\n throw getMatIconFailedToSanitizeUrlError(safeUrl);\n }\n\n const cachedIcon = this._cachedIconsByUrl.get(url);\n\n if (cachedIcon) {\n return observableOf(cloneSvg(cachedIcon));\n }\n\n return this._loadSvgIconFromConfig(new SvgIconConfig(safeUrl, null)).pipe(\n tap(svg => this._cachedIconsByUrl.set(url!, svg)),\n map(svg => cloneSvg(svg)),\n );\n }\n\n /**\n * Returns an Observable that produces the icon (as an `<svg>` DOM element) with the given name\n * and namespace. The icon must have been previously registered with addIcon or addIconSet;\n * if not, the Observable will throw an error.\n *\n * @param name Name of the icon to be retrieved.\n * @param namespace Namespace in which to look for the icon.\n */\n getNamedSvgIcon(name: string, namespace: string = ''): Observable<SVGElement> {\n const key = iconKey(namespace, name);\n let config = this._svgIconConfigs.get(key);\n\n // Return (copy of) cached icon if possible.\n if (config) {\n return this._getSvgFromConfig(config);\n }\n\n // Otherwise try to resolve the config from one of the resolver functions.\n config = this._getIconConfigFromResolvers(namespace, name);\n\n if (config) {\n this._svgIconConfigs.set(key, config);\n return this._getSvgFromConfig(config);\n }\n\n // See if we have any icon sets registered for the namespace.\n const iconSetConfigs = this._iconSetConfigs.get(namespace);\n\n if (iconSetConfigs) {\n return this._getSvgFromIconSetConfigs(name, iconSetConfigs);\n }\n\n return observableThrow(getMatIconNameNotFoundError(key));\n }\n\n ngOnDestroy() {\n this._resolvers = [];\n this._svgIconConfigs.clear();\n this._iconSetConfigs.clear();\n this._cachedIconsByUrl.clear();\n }\n\n /**\n * Returns the cached icon for a SvgIconConfig if available, or fetches it from its URL if not.\n */\n private _getSvgFromConfig(config: SvgIconConfig): Observable<SVGElement> {\n if (config.svgText) {\n // We already have the SVG element for this icon, return a copy.\n return observableOf(cloneSvg(this._svgElementFromConfig(config as LoadedSvgIconConfig)));\n } else {\n // Fetch the icon from the config's URL, cache it, and return a copy.\n return this._loadSvgIconFromConfig(config).pipe(map(svg => cloneSvg(svg)));\n }\n }\n\n /**\n * Attempts to find an icon with the specified name in any of the SVG icon sets.\n * First searches the available cached icons for a nested element with a matching name, and\n * if found copies the element to a new `<svg>` element. If not found, fetches all icon sets\n * that have not been cached, and searches again after all fetches are completed.\n * The returned Observable produces the SVG element if possible, and throws\n * an error if no icon with the specified name can be found.\n */\n private _getSvgFromIconSetConfigs(\n name: string,\n iconSetConfigs: SvgIconConfig[],\n ): Observable<SVGElement> {\n // For all the icon set SVG elements we've fetched, see if any contain an icon with the\n // requested name.\n const namedIcon = this._extractIconWithNameFromAnySet(name, iconSetConfigs);\n\n if (namedIcon) {\n // We could cache namedIcon in _svgIconConfigs, but since we have to make a copy every\n // time anyway, there's probably not much advantage compared to just always extracting\n // it from the icon set.\n return observableOf(namedIcon);\n }\n\n // Not found in any cached icon sets. If there are icon sets with URLs that we haven't\n // fetched, fetch them now and look for iconName in the results.\n const iconSetFetchRequests: Observable<TrustedHTML | null>[] = iconSetConfigs\n .filter(iconSetConfig => !iconSetConfig.svgText)\n .map(iconSetConfig => {\n return this._loadSvgIconSetFromConfig(iconSetConfig).pipe(\n catchError((err: HttpErrorResponse) => {\n const url = this._sanitizer.sanitize(SecurityContext.RESOURCE_URL, iconSetConfig.url);\n\n // Swallow errors fetching individual URLs so the\n // combined Observable won't necessarily fail.\n const errorMessage = `Loading icon set URL: ${url} failed: ${err.message}`;\n this._errorHandler.handleError(new Error(errorMessage));\n return observableOf(null);\n }),\n );\n });\n\n // Fetch all the icon set URLs. When the requests complete, every IconSet should have a\n // cached SVG element (unless the request failed), and we can check again for the icon.\n return forkJoin(iconSetFetchRequests).pipe(\n map(() => {\n const foundIcon = this._extractIconWithNameFromAnySet(name, iconSetConfigs);\n\n // TODO: add an ngDevMode check\n if (!foundIcon) {\n throw getMatIconNameNotFoundError(name);\n }\n\n return foundIcon;\n }),\n );\n }\n\n /**\n * Searches the cached SVG elements for the given icon sets for a nested icon element whose \"id\"\n * tag matches the specified name. If found, copies the nested element to a new SVG element and\n * returns it. Returns null if no matching element is found.\n */\n private _extractIconWithNameFromAnySet(\n iconName: string,\n iconSetConfigs: SvgIconConfig[],\n ): SVGElement | null {\n // Iterate backwards, so icon sets added later have precedence.\n for (let i = iconSetConfigs.length - 1; i >= 0; i--) {\n const config = iconSetConfigs[i];\n\n // Parsing the icon set's text into an SVG element can be expensive. We can avoid some of\n // the parsing by doing a quick check using `indexOf` to see if there's any chance for the\n // icon to be in the set. This won't be 100% accurate, but it should help us avoid at least\n // some of the parsing.\n if (config.svgText && config.svgText.toString().indexOf(iconName) > -1) {\n const svg = this._svgElementFromConfig(config as LoadedSvgIconConfig);\n const foundIcon = this._extractSvgIconFromSet(svg, iconName, config.options);\n if (foundIcon) {\n return foundIcon;\n }\n }\n }\n return null;\n }\n\n /**\n * Loads the content of the icon URL specified in the SvgIconConfig and creates an SVG element\n * from it.\n */\n private _loadSvgIconFromConfig(config: SvgIconConfig): Observable<SVGElement> {\n return this._fetchIcon(config).pipe(\n tap(svgText => (config.svgText = svgText)),\n map(() => this._svgElementFromConfig(config as LoadedSvgIconConfig)),\n );\n }\n\n /**\n * Loads the content of the icon set URL specified in the\n * SvgIconConfig and attaches it to the config.\n */\n private _loadSvgIconSetFromConfig(config: SvgIconConfig): Observable<TrustedHTML | null> {\n if (config.svgText) {\n return observableOf(null);\n }\n\n return this._fetchIcon(config).pipe(tap(svgText => (config.svgText = svgText)));\n }\n\n /**\n * Searches the cached element of the given SvgIconConfig for a nested icon element whose \"id\"\n * tag matches the specified name. If found, copies the nested element to a new SVG element and\n * returns it. Returns null if no matching element is found.\n */\n private _extractSvgIconFromSet(\n iconSet: SVGElement,\n iconName: string,\n options?: IconOptions,\n ): SVGElement | null {\n // Use the `id=\"iconName\"` syntax in order to escape special\n // characters in the ID (versus using the #iconName syntax).\n const iconSource = iconSet.querySelector(`[id=\"${iconName}\"]`);\n\n if (!iconSource) {\n return null;\n }\n\n // Clone the element and remove the ID to prevent multiple elements from being added\n // to the page with the same ID.\n const iconElement = iconSource.cloneNode(true) as Element;\n iconElement.removeAttribute('id');\n\n // If the icon node is itself an <svg> node, clone and return it directly. If not, set it as\n // the content of a new <svg> node.\n if (iconElement.nodeName.toLowerCase() === 'svg') {\n return this._setSvgAttributes(iconElement as SVGElement, options);\n }\n\n // If the node is a <symbol>, it won't be rendered so we have to convert it into <svg>. Note\n // that the same could be achieved by referring to it via <use href=\"#id\">, however the <use>\n // tag is problematic on Firefox, because it needs to include the current page path.\n if (iconElement.nodeName.toLowerCase() === 'symbol') {\n return this._setSvgAttributes(this._toSvgElement(iconElement), options);\n }\n\n // createElement('SVG') doesn't work as expected; the DOM ends up with\n // the correct nodes, but the SVG content doesn't render. Instead we\n // have to create an empty SVG node using innerHTML and append its content.\n // Elements created using DOMParser.parseFromString have the same problem.\n // http://stackoverflow.com/questions/23003278/svg-innerhtml-in-firefox-can-not-display\n const svg = this._svgElementFromString(trustedHTMLFromString('<svg></svg>'));\n // Clone the node so we don't remove it from the parent icon set element.\n svg.appendChild(iconElement);\n\n return this._setSvgAttributes(svg, options);\n }\n\n /**\n * Creates a DOM element from the given SVG string.\n */\n private _svgElementFromString(str: TrustedHTML): SVGElement {\n const div = this._document.createElement('DIV');\n div.innerHTML = str as unknown as string;\n const svg = div.querySelector('svg') as SVGElement;\n\n // TODO: add an ngDevMode check\n if (!svg) {\n throw Error('<svg> tag not found');\n }\n\n return svg;\n }\n\n /**\n * Converts an element into an SVG node by cloning all of its children.\n */\n private _toSvgElement(element: Element): SVGElement {\n const svg = this._svgElementFromString(trustedHTMLFromString('<svg></svg>'));\n const attributes = element.attributes;\n\n // Copy over all the attributes from the `symbol` to the new SVG, except the id.\n for (let i = 0; i < attributes.length; i++) {\n const {name, value} = attributes[i];\n\n if (name !== 'id') {\n svg.setAttribute(name, value);\n }\n }\n\n for (let i = 0; i < element.childNodes.length; i++) {\n if (element.childNodes[i].nodeType === this._document.ELEMENT_NODE) {\n svg.appendChild(element.childNodes[i].cloneNode(true));\n }\n }\n\n return svg;\n }\n\n /**\n * Sets the default attributes for an SVG element to be used as an icon.\n */\n private _setSvgAttributes(svg: SVGElement, options?: IconOptions): SVGElement {\n svg.setAttribute('fit', '');\n svg.setAttribute('height', '100%');\n svg.setAttribute('width', '100%');\n svg.setAttribute('preserveAspectRatio', 'xMidYMid meet');\n svg.setAttribute('focusable', 'false'); // Disable IE11 default behavior to make SVGs focusable.\n\n if (options && options.viewBox) {\n svg.setAttribute('viewBox', options.viewBox);\n }\n\n return svg;\n }\n\n /**\n * Returns an Observable which produces the string contents of the given icon. Results may be\n * cached, so future calls with the same URL may not cause another HTTP request.\n */\n private _fetchIcon(iconConfig: SvgIconConfig): Observable<TrustedHTML> {\n const {url: safeUrl, options} = iconConfig;\n const withCredentials = options?.withCredentials ?? false;\n\n if (!this._httpClient) {\n throw getMatIconNoHttpProviderError();\n }\n\n // TODO: add an ngDevMode check\n if (safeUrl == null) {\n throw Error(`Cannot fetch icon from URL \"${safeUrl}\".`);\n }\n\n const url = this._sanitizer.sanitize(SecurityContext.RESOURCE_URL, safeUrl);\n\n // TODO: add an ngDevMode check\n if (!url) {\n throw getMatIconFailedToSanitizeUrlError(safeUrl);\n }\n\n // Store in-progress fetches to avoid sending a duplicate request for a URL when there is\n // already a request in progress for that URL. It's necessary to call share() on the\n // Observable returned by http.get() so that multiple subscribers don't cause multiple XHRs.\n const inProgressFetch = this._inProgressUrlFetches.get(url);\n\n if (inProgressFetch) {\n return inProgressFetch;\n }\n\n const req = this._httpClient.get(url, {responseType: 'text', withCredentials}).pipe(\n map(svg => {\n // Security: This SVG is fetched from a SafeResourceUrl, and is thus\n // trusted HTML.\n return trustedHTMLFromString(svg);\n }),\n finalize(() => this._inProgressUrlFetches.delete(url)),\n share(),\n );\n\n this._inProgressUrlFetches.set(url, req);\n return req;\n }\n\n /**\n * Registers an icon config by name in the specified namespace.\n * @param namespace Namespace in which to register the icon config.\n * @param iconName Name under which to register the config.\n * @param config Config to be registered.\n */\n private _addSvgIconConfig(namespace: string, iconName: string, config: SvgIconConfig): this {\n this._svgIconConfigs.set(iconKey(namespace, iconName), config);\n return this;\n }\n\n /**\n * Registers an icon set config in the specified namespace.\n * @param namespace Namespace in which to register the icon config.\n * @param config Config to be registered.\n */\n private _addSvgIconSetConfig(namespace: string, config: SvgIconConfig): this {\n const configNamespace = this._iconSetConfigs.get(namespace);\n\n if (configNamespace) {\n configNamespace.push(config);\n } else {\n this._iconSetConfigs.set(namespace, [config]);\n }\n\n return this;\n }\n\n /** Parses a config's text into an SVG element. */\n private _svgElementFromConfig(config: LoadedSvgIconConfig): SVGElement {\n if (!config.svgElement) {\n const svg = this._svgElementFromString(config.svgText);\n this._setSvgAttributes(svg, config.options);\n config.svgElement = svg;\n }\n\n return config.svgElement;\n }\n\n /** Tries to create an icon config through the registered resolver functions. */\n private _getIconConfigFromResolvers(namespace: string, name: string): SvgIconConfig | undefined {\n for (let i = 0; i < this._resolvers.length; i++) {\n const result = this._resolvers[i](name, namespace);\n\n if (result) {\n return isSafeUrlWithOptions(result)\n ? new SvgIconConfig(result.url, null, result.options)\n : new SvgIconConfig(result, null);\n }\n }\n\n return undefined;\n }\n}\n\n/** Clones an SVGElement while preserving type information. */\nfunction cloneSvg(svg: SVGElement): SVGElement {\n return svg.cloneNode(true) as SVGElement;\n}\n\n/** Returns the cache key to use for an icon namespace and name. */\nfunction iconKey(namespace: string, name: string) {\n return namespace + ':' + name;\n}\n\nfunction isSafeUrlWithOptions(value: any): value is SafeResourceUrlWithIconOptions {\n return !!(value.url && value.options);\n}\n"],"names":["getMatIconNameNotFoundError","iconName","Error","getMatIconNoHttpProviderError","getMatIconFailedToSanitizeUrlError","url","getMatIconFailedToSanitizeLiteralError","literal","SvgIconConfig","svgText","options","svgElement","constructor","MatIconRegistry","_httpClient","_sanitizer","_errorHandler","_document","_svgIconConfigs","Map","_iconSetConfigs","_cachedIconsByUrl","_inProgressUrlFetches","_fontCssClassesByAlias","_resolvers","_defaultFontSetClass","document","addSvgIcon","addSvgIconInNamespace","addSvgIconLiteral","addSvgIconLiteralInNamespace","namespace","_addSvgIconConfig","addSvgIconResolver","resolver","push","cleanLiteral","sanitize","SecurityContext","HTML","trustedLiteral","trustedHTMLFromString","addSvgIconSet","addSvgIconSetInNamespace","addSvgIconSetLiteral","addSvgIconSetLiteralInNamespace","_addSvgIconSetConfig","registerFontClassAlias","alias","classNames","set","classNameForFontAlias","get","setDefaultFontSetClass","getDefaultFontSetClass","getSvgIconFromUrl","safeUrl","RESOURCE_URL","cachedIcon","observableOf","cloneSvg","_loadSvgIconFromConfig","pipe","tap","svg","map","getNamedSvgIcon","name","key","iconKey","config","_getSvgFromConfig","_getIconConfigFromResolvers","iconSetConfigs","_getSvgFromIconSetConfigs","observableThrow","ngOnDestroy","clear","_svgElementFromConfig","namedIcon","_extractIconWithNameFromAnySet","iconSetFetchRequests","filter","iconSetConfig","_loadSvgIconSetFromConfig","catchError","err","errorMessage","message","handleError","forkJoin","foundIcon","i","length","toString","indexOf","_extractSvgIconFromSet","_fetchIcon","iconSet","iconSource","querySelector","iconElement","cloneNode","removeAttribute","nodeName","toLowerCase","_setSvgAttributes","_toSvgElement","_svgElementFromString","appendChild","str","div","createElement","innerHTML","element","attributes","value","setAttribute","childNodes","nodeType","ELEMENT_NODE","viewBox","iconConfig","withCredentials","inProgressFetch","req","responseType","finalize","delete","share","configNamespace","result","isSafeUrlWithOptions","undefined","ɵfac","i0","ɵɵngDeclareFactory","minVersion","version","ngImport","type","DOCUMENT","optional","token","ErrorHandler","target","ɵɵFactoryTarget","Injectable","ɵprov","ɵɵngDeclareInjectable","decorators","providedIn","Optional","Inject"],"mappings":"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"}
{"version":3,"file":"_icon-registry-chunk.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/icon/icon-registry.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\nimport {TrustedHTML, trustedHTMLFromString} from '@angular/cdk/private';\nimport {HttpClient, HttpErrorResponse} from '@angular/common/http';\nimport {\n ErrorHandler,\n Inject,\n Injectable,\n OnDestroy,\n Optional,\n SecurityContext,\n DOCUMENT,\n} from '@angular/core';\nimport {DomSanitizer, SafeHtml, SafeResourceUrl} from '@angular/platform-browser';\nimport {forkJoin, Observable, of as observableOf, throwError as observableThrow} from 'rxjs';\nimport {catchError, finalize, map, share, tap} from 'rxjs/operators';\n\n/**\n * Returns an exception to be thrown in the case when attempting to\n * load an icon with a name that cannot be found.\n * @docs-private\n */\nexport function getMatIconNameNotFoundError(iconName: string): Error {\n return Error(`Unable to find icon with the name \"${iconName}\"`);\n}\n\n/**\n * Returns an exception to be thrown when the consumer attempts to use\n * `<mat-icon>` without including @angular/common/http.\n * @docs-private\n */\nexport function getMatIconNoHttpProviderError(): Error {\n return Error(\n 'Could not find HttpClient for use with Angular Material icons. ' +\n 'Please add provideHttpClient() to your providers.',\n );\n}\n\n/**\n * Returns an exception to be thrown when a URL couldn't be sanitized.\n * @param url URL that was attempted to be sanitized.\n * @docs-private\n */\nexport function getMatIconFailedToSanitizeUrlError(url: SafeResourceUrl): Error {\n return Error(\n `The URL provided to MatIconRegistry was not trusted as a resource URL ` +\n `via Angular's DomSanitizer. Attempted URL was \"${url}\".`,\n );\n}\n\n/**\n * Returns an exception to be thrown when a HTML string couldn't be sanitized.\n * @param literal HTML that was attempted to be sanitized.\n * @docs-private\n */\nexport function getMatIconFailedToSanitizeLiteralError(literal: SafeHtml): Error {\n return Error(\n `The literal provided to MatIconRegistry was not trusted as safe HTML by ` +\n `Angular's DomSanitizer. Attempted literal was \"${literal}\".`,\n );\n}\n\n/** Options that can be used to configure how an icon or the icons in an icon set are presented. */\nexport interface IconOptions {\n /** View box to set on the icon. */\n viewBox?: string;\n\n /** Whether or not to fetch the icon or icon set using HTTP credentials. */\n withCredentials?: boolean;\n}\n\n/**\n * Function that will be invoked by the icon registry when trying to resolve the\n * URL from which to fetch an icon. The returned URL will be used to make a request for the icon.\n */\nexport type IconResolver = (\n name: string,\n namespace: string,\n) => SafeResourceUrl | SafeResourceUrlWithIconOptions | null;\n\n/** Object that specifies a URL from which to fetch an icon and the options to use for it. */\nexport interface SafeResourceUrlWithIconOptions {\n url: SafeResourceUrl;\n options: IconOptions;\n}\n\n/**\n * Configuration for an icon, including the URL and possibly the cached SVG element.\n * @docs-private\n */\nclass SvgIconConfig {\n svgElement: SVGElement | null = null;\n\n constructor(\n public url: SafeResourceUrl,\n public svgText: TrustedHTML | null,\n public options?: IconOptions,\n ) {}\n}\n\n/** Icon configuration whose content has already been loaded. */\ntype LoadedSvgIconConfig = SvgIconConfig & {svgText: TrustedHTML};\n\n/**\n * Service to register and display icons used by the `<mat-icon>` component.\n * - Registers icon URLs by namespace and name.\n * - Registers icon set URLs by namespace.\n * - Registers aliases for CSS classes, for use with icon fonts.\n * - Loads icons from URLs and extracts individual icons from icon sets.\n */\n@Injectable({providedIn: 'root'})\nexport class MatIconRegistry implements OnDestroy {\n private _document: Document;\n\n /**\n * URLs and cached SVG elements for individual icons. Keys are of the format \"[namespace]:[icon]\".\n */\n private _svgIconConfigs = new Map<string, SvgIconConfig>();\n\n /**\n * SvgIconConfig objects and cached SVG elements for icon sets, keyed by namespace.\n * Multiple icon sets can be registered under the same namespace.\n */\n private _iconSetConfigs = new Map<string, SvgIconConfig[]>();\n\n /** Cache for icons loaded by direct URLs. */\n private _cachedIconsByUrl = new Map<string, SVGElement>();\n\n /** In-progress icon fetches. Used to coalesce multiple requests to the same URL. */\n private _inProgressUrlFetches = new Map<string, Observable<TrustedHTML>>();\n\n /** Map from font identifiers to their CSS class names. Used for icon fonts. */\n private _fontCssClassesByAlias = new Map<string, string>();\n\n /** Registered icon resolver functions. */\n private _resolvers: IconResolver[] = [];\n\n /**\n * The CSS classes to apply when an `<mat-icon>` component has no icon name, url, or font\n * specified. The default 'material-icons' value assumes that the material icon font has been\n * loaded as described at https://google.github.io/material-design-icons/#icon-font-for-the-web\n */\n private _defaultFontSetClass = ['material-icons', 'mat-ligature-font'];\n\n constructor(\n @Optional() private _httpClient: HttpClient,\n private _sanitizer: DomSanitizer,\n @Optional() @Inject(DOCUMENT) document: any,\n private readonly _errorHandler: ErrorHandler,\n ) {\n this._document = document;\n }\n\n /**\n * Registers an icon by URL in the default namespace.\n * @param iconName Name under which the icon should be registered.\n * @param url\n */\n addSvgIcon(iconName: string, url: SafeResourceUrl, options?: IconOptions): this {\n return this.addSvgIconInNamespace('', iconName, url, options);\n }\n\n /**\n * Registers an icon using an HTML string in the default namespace.\n * @param iconName Name under which the icon should be registered.\n * @param literal SVG source of the icon.\n */\n addSvgIconLiteral(iconName: string, literal: SafeHtml, options?: IconOptions): this {\n return this.addSvgIconLiteralInNamespace('', iconName, literal, options);\n }\n\n /**\n * Registers an icon by URL in the specified namespace.\n * @param namespace Namespace in which the icon should be registered.\n * @param iconName Name under which the icon should be registered.\n * @param url\n */\n addSvgIconInNamespace(\n namespace: string,\n iconName: string,\n url: SafeResourceUrl,\n options?: IconOptions,\n ): this {\n return this._addSvgIconConfig(namespace, iconName, new SvgIconConfig(url, null, options));\n }\n\n /**\n * Registers an icon resolver function with the registry. The function will be invoked with the\n * name and namespace of an icon when the registry tries to resolve the URL from which to fetch\n * the icon. The resolver is expected to return a `SafeResourceUrl` that points to the icon,\n * an object with the icon URL and icon options, or `null` if the icon is not supported. Resolvers\n * will be invoked in the order in which they have been registered.\n * @param resolver Resolver function to be registered.\n */\n addSvgIconResolver(resolver: IconResolver): this {\n this._resolvers.push(resolver);\n return this;\n }\n\n /**\n * Registers an icon using an HTML string in the specified namespace.\n * @param namespace Namespace in which the icon should be registered.\n * @param iconName Name under which the icon should be registered.\n * @param literal SVG source of the icon.\n */\n addSvgIconLiteralInNamespace(\n namespace: string,\n iconName: string,\n literal: SafeHtml,\n options?: IconOptions,\n ): this {\n const cleanLiteral = this._sanitizer.sanitize(SecurityContext.HTML, literal);\n\n // TODO: add an ngDevMode check\n if (!cleanLiteral) {\n throw getMatIconFailedToSanitizeLiteralError(literal);\n }\n\n // Security: The literal is passed in as SafeHtml, and is thus trusted.\n const trustedLiteral = trustedHTMLFromString(cleanLiteral);\n return this._addSvgIconConfig(\n namespace,\n iconName,\n new SvgIconConfig('', trustedLiteral, options),\n );\n }\n\n /**\n * Registers an icon set by URL in the default namespace.\n * @param url\n */\n addSvgIconSet(url: SafeResourceUrl, options?: IconOptions): this {\n return this.addSvgIconSetInNamespace('', url, options);\n }\n\n /**\n * Registers an icon set using an HTML string in the default namespace.\n * @param literal SVG source of the icon set.\n */\n addSvgIconSetLiteral(literal: SafeHtml, options?: IconOptions): this {\n return this.addSvgIconSetLiteralInNamespace('', literal, options);\n }\n\n /**\n * Registers an icon set by URL in the specified namespace.\n * @param namespace Namespace in which to register the icon set.\n * @param url\n */\n addSvgIconSetInNamespace(namespace: string, url: SafeResourceUrl, options?: IconOptions): this {\n return this._addSvgIconSetConfig(namespace, new SvgIconConfig(url, null, options));\n }\n\n /**\n * Registers an icon set using an HTML string in the specified namespace.\n * @param namespace Namespace in which to register the icon set.\n * @param literal SVG source of the icon set.\n */\n addSvgIconSetLiteralInNamespace(\n namespace: string,\n literal: SafeHtml,\n options?: IconOptions,\n ): this {\n const cleanLiteral = this._sanitizer.sanitize(SecurityContext.HTML, literal);\n\n if (!cleanLiteral) {\n throw getMatIconFailedToSanitizeLiteralError(literal);\n }\n\n // Security: The literal is passed in as SafeHtml, and is thus trusted.\n const trustedLiteral = trustedHTMLFromString(cleanLiteral);\n return this._addSvgIconSetConfig(namespace, new SvgIconConfig('', trustedLiteral, options));\n }\n\n /**\n * Defines an alias for CSS class names to be used for icon fonts. Creating an matIcon\n * component with the alias as the fontSet input will cause the class name to be applied\n * to the `<mat-icon>` element.\n *\n * If the registered font is a ligature font, then don't forget to also include the special\n * class `mat-ligature-font` to allow the usage via attribute. So register like this:\n *\n * ```ts\n * iconRegistry.registerFontClassAlias('f1', 'font1 mat-ligature-font');\n * ```\n *\n * And use like this:\n *\n * ```html\n * <mat-icon fontSet=\"f1\" fontIcon=\"home\"></mat-icon>\n * ```\n *\n * @param alias Alias for the font.\n * @param classNames Class names override to be used instead of the alias.\n */\n registerFontClassAlias(alias: string, classNames: string = alias): this {\n this._fontCssClassesByAlias.set(alias, classNames);\n return this;\n }\n\n /**\n * Returns the CSS class name associated with the alias by a previous call to\n * registerFontClassAlias. If no CSS class has been associated, returns the alias unmodified.\n */\n classNameForFontAlias(alias: string): string {\n return this._fontCssClassesByAlias.get(alias) || alias;\n }\n\n /**\n * Sets the CSS classes to be used for icon fonts when an `<mat-icon>` component does not\n * have a fontSet input value, and is not loading an icon by name or URL.\n */\n setDefaultFontSetClass(...classNames: string[]): this {\n this._defaultFontSetClass = classNames;\n return this;\n }\n\n /**\n * Returns the CSS classes to be used for icon fonts when an `<mat-icon>` component does not\n * have a fontSet input value, and is not loading an icon by name or URL.\n */\n getDefaultFontSetClass(): string[] {\n return this._defaultFontSetClass;\n }\n\n /**\n * Returns an Observable that produces the icon (as an `<svg>` DOM element) from the given URL.\n * The response from the URL may be cached so this will not always cause an HTTP request, but\n * the produced element will always be a new copy of the originally fetched icon. (That is,\n * it will not contain any modifications made to elements previously returned).\n *\n * @param safeUrl URL from which to fetch the SVG icon.\n */\n getSvgIconFromUrl(safeUrl: SafeResourceUrl): Observable<SVGElement> {\n const url = this._sanitizer.sanitize(SecurityContext.RESOURCE_URL, safeUrl);\n\n if (!url) {\n throw getMatIconFailedToSanitizeUrlError(safeUrl);\n }\n\n const cachedIcon = this._cachedIconsByUrl.get(url);\n\n if (cachedIcon) {\n return observableOf(cloneSvg(cachedIcon));\n }\n\n return this._loadSvgIconFromConfig(new SvgIconConfig(safeUrl, null)).pipe(\n tap(svg => this._cachedIconsByUrl.set(url!, svg)),\n map(svg => cloneSvg(svg)),\n );\n }\n\n /**\n * Returns an Observable that produces the icon (as an `<svg>` DOM element) with the given name\n * and namespace. The icon must have been previously registered with addIcon or addIconSet;\n * if not, the Observable will throw an error.\n *\n * @param name Name of the icon to be retrieved.\n * @param namespace Namespace in which to look for the icon.\n */\n getNamedSvgIcon(name: string, namespace: string = ''): Observable<SVGElement> {\n const key = iconKey(namespace, name);\n let config = this._svgIconConfigs.get(key);\n\n // Return (copy of) cached icon if possible.\n if (config) {\n return this._getSvgFromConfig(config);\n }\n\n // Otherwise try to resolve the config from one of the resolver functions.\n config = this._getIconConfigFromResolvers(namespace, name);\n\n if (config) {\n this._svgIconConfigs.set(key, config);\n return this._getSvgFromConfig(config);\n }\n\n // See if we have any icon sets registered for the namespace.\n const iconSetConfigs = this._iconSetConfigs.get(namespace);\n\n if (iconSetConfigs) {\n return this._getSvgFromIconSetConfigs(name, iconSetConfigs);\n }\n\n return observableThrow(getMatIconNameNotFoundError(key));\n }\n\n ngOnDestroy() {\n this._resolvers = [];\n this._svgIconConfigs.clear();\n this._iconSetConfigs.clear();\n this._cachedIconsByUrl.clear();\n }\n\n /**\n * Returns the cached icon for a SvgIconConfig if available, or fetches it from its URL if not.\n */\n private _getSvgFromConfig(config: SvgIconConfig): Observable<SVGElement> {\n if (config.svgText) {\n // We already have the SVG element for this icon, return a copy.\n return observableOf(cloneSvg(this._svgElementFromConfig(config as LoadedSvgIconConfig)));\n } else {\n // Fetch the icon from the config's URL, cache it, and return a copy.\n return this._loadSvgIconFromConfig(config).pipe(map(svg => cloneSvg(svg)));\n }\n }\n\n /**\n * Attempts to find an icon with the specified name in any of the SVG icon sets.\n * First searches the available cached icons for a nested element with a matching name, and\n * if found copies the element to a new `<svg>` element. If not found, fetches all icon sets\n * that have not been cached, and searches again after all fetches are completed.\n * The returned Observable produces the SVG element if possible, and throws\n * an error if no icon with the specified name can be found.\n */\n private _getSvgFromIconSetConfigs(\n name: string,\n iconSetConfigs: SvgIconConfig[],\n ): Observable<SVGElement> {\n // For all the icon set SVG elements we've fetched, see if any contain an icon with the\n // requested name.\n const namedIcon = this._extractIconWithNameFromAnySet(name, iconSetConfigs);\n\n if (namedIcon) {\n // We could cache namedIcon in _svgIconConfigs, but since we have to make a copy every\n // time anyway, there's probably not much advantage compared to just always extracting\n // it from the icon set.\n return observableOf(namedIcon);\n }\n\n // Not found in any cached icon sets. If there are icon sets with URLs that we haven't\n // fetched, fetch them now and look for iconName in the results.\n const iconSetFetchRequests: Observable<TrustedHTML | null>[] = iconSetConfigs\n .filter(iconSetConfig => !iconSetConfig.svgText)\n .map(iconSetConfig => {\n return this._loadSvgIconSetFromConfig(iconSetConfig).pipe(\n catchError((err: HttpErrorResponse) => {\n const url = this._sanitizer.sanitize(SecurityContext.RESOURCE_URL, iconSetConfig.url);\n\n // Swallow errors fetching individual URLs so the\n // combined Observable won't necessarily fail.\n const errorMessage = `Loading icon set URL: ${url} failed: ${err.message}`;\n this._errorHandler.handleError(new Error(errorMessage));\n return observableOf(null);\n }),\n );\n });\n\n // Fetch all the icon set URLs. When the requests complete, every IconSet should have a\n // cached SVG element (unless the request failed), and we can check again for the icon.\n return forkJoin(iconSetFetchRequests).pipe(\n map(() => {\n const foundIcon = this._extractIconWithNameFromAnySet(name, iconSetConfigs);\n\n // TODO: add an ngDevMode check\n if (!foundIcon) {\n throw getMatIconNameNotFoundError(name);\n }\n\n return foundIcon;\n }),\n );\n }\n\n /**\n * Searches the cached SVG elements for the given icon sets for a nested icon element whose \"id\"\n * tag matches the specified name. If found, copies the nested element to a new SVG element and\n * returns it. Returns null if no matching element is found.\n */\n private _extractIconWithNameFromAnySet(\n iconName: string,\n iconSetConfigs: SvgIconConfig[],\n ): SVGElement | null {\n // Iterate backwards, so icon sets added later have precedence.\n for (let i = iconSetConfigs.length - 1; i >= 0; i--) {\n const config = iconSetConfigs[i];\n\n // Parsing the icon set's text into an SVG element can be expensive. We can avoid some of\n // the parsing by doing a quick check using `indexOf` to see if there's any chance for the\n // icon to be in the set. This won't be 100% accurate, but it should help us avoid at least\n // some of the parsing.\n if (config.svgText && config.svgText.toString().indexOf(iconName) > -1) {\n const svg = this._svgElementFromConfig(config as LoadedSvgIconConfig);\n const foundIcon = this._extractSvgIconFromSet(svg, iconName, config.options);\n if (foundIcon) {\n return foundIcon;\n }\n }\n }\n return null;\n }\n\n /**\n * Loads the content of the icon URL specified in the SvgIconConfig and creates an SVG element\n * from it.\n */\n private _loadSvgIconFromConfig(config: SvgIconConfig): Observable<SVGElement> {\n return this._fetchIcon(config).pipe(\n tap(svgText => (config.svgText = svgText)),\n map(() => this._svgElementFromConfig(config as LoadedSvgIconConfig)),\n );\n }\n\n /**\n * Loads the content of the icon set URL specified in the\n * SvgIconConfig and attaches it to the config.\n */\n private _loadSvgIconSetFromConfig(config: SvgIconConfig): Observable<TrustedHTML | null> {\n if (config.svgText) {\n return observableOf(null);\n }\n\n return this._fetchIcon(config).pipe(tap(svgText => (config.svgText = svgText)));\n }\n\n /**\n * Searches the cached element of the given SvgIconConfig for a nested icon element whose \"id\"\n * tag matches the specified name. If found, copies the nested element to a new SVG element and\n * returns it. Returns null if no matching element is found.\n */\n private _extractSvgIconFromSet(\n iconSet: SVGElement,\n iconName: string,\n options?: IconOptions,\n ): SVGElement | null {\n // Use the `id=\"iconName\"` syntax in order to escape special\n // characters in the ID (versus using the #iconName syntax).\n const iconSource = iconSet.querySelector(`[id=\"${iconName}\"]`);\n\n if (!iconSource) {\n return null;\n }\n\n // Clone the element and remove the ID to prevent multiple elements from being added\n // to the page with the same ID.\n const iconElement = iconSource.cloneNode(true) as Element;\n iconElement.removeAttribute('id');\n\n // If the icon node is itself an <svg> node, clone and return it directly. If not, set it as\n // the content of a new <svg> node.\n if (iconElement.nodeName.toLowerCase() === 'svg') {\n return this._setSvgAttributes(iconElement as SVGElement, options);\n }\n\n // If the node is a <symbol>, it won't be rendered so we have to convert it into <svg>. Note\n // that the same could be achieved by referring to it via <use href=\"#id\">, however the <use>\n // tag is problematic on Firefox, because it needs to include the current page path.\n if (iconElement.nodeName.toLowerCase() === 'symbol') {\n return this._setSvgAttributes(this._toSvgElement(iconElement), options);\n }\n\n // createElement('SVG') doesn't work as expected; the DOM ends up with\n // the correct nodes, but the SVG content doesn't render. Instead we\n // have to create an empty SVG node using innerHTML and append its content.\n // Elements created using DOMParser.parseFromString have the same problem.\n // http://stackoverflow.com/questions/23003278/svg-innerhtml-in-firefox-can-not-display\n const svg = this._svgElementFromString(trustedHTMLFromString('<svg></svg>'));\n // Clone the node so we don't remove it from the parent icon set element.\n svg.appendChild(iconElement);\n\n return this._setSvgAttributes(svg, options);\n }\n\n /**\n * Creates a DOM element from the given SVG string.\n */\n private _svgElementFromString(str: TrustedHTML): SVGElement {\n const div = this._document.createElement('DIV');\n div.innerHTML = str as unknown as string;\n const svg = div.querySelector('svg') as SVGElement;\n\n // TODO: add an ngDevMode check\n if (!svg) {\n throw Error('<svg> tag not found');\n }\n\n return svg;\n }\n\n /**\n * Converts an element into an SVG node by cloning all of its children.\n */\n private _toSvgElement(element: Element): SVGElement {\n const svg = this._svgElementFromString(trustedHTMLFromString('<svg></svg>'));\n const attributes = element.attributes;\n\n // Copy over all the attributes from the `symbol` to the new SVG, except the id.\n for (let i = 0; i < attributes.length; i++) {\n const {name, value} = attributes[i];\n\n if (name !== 'id') {\n svg.setAttribute(name, value);\n }\n }\n\n for (let i = 0; i < element.childNodes.length; i++) {\n if (element.childNodes[i].nodeType === this._document.ELEMENT_NODE) {\n svg.appendChild(element.childNodes[i].cloneNode(true));\n }\n }\n\n return svg;\n }\n\n /**\n * Sets the default attributes for an SVG element to be used as an icon.\n */\n private _setSvgAttributes(svg: SVGElement, options?: IconOptions): SVGElement {\n svg.setAttribute('fit', '');\n svg.setAttribute('height', '100%');\n svg.setAttribute('width', '100%');\n svg.setAttribute('preserveAspectRatio', 'xMidYMid meet');\n svg.setAttribute('focusable', 'false'); // Disable IE11 default behavior to make SVGs focusable.\n\n if (options && options.viewBox) {\n svg.setAttribute('viewBox', options.viewBox);\n }\n\n return svg;\n }\n\n /**\n * Returns an Observable which produces the string contents of the given icon. Results may be\n * cached, so future calls with the same URL may not cause another HTTP request.\n */\n private _fetchIcon(iconConfig: SvgIconConfig): Observable<TrustedHTML> {\n const {url: safeUrl, options} = iconConfig;\n const withCredentials = options?.withCredentials ?? false;\n\n if (!this._httpClient) {\n throw getMatIconNoHttpProviderError();\n }\n\n // TODO: add an ngDevMode check\n if (safeUrl == null) {\n throw Error(`Cannot fetch icon from URL \"${safeUrl}\".`);\n }\n\n const url = this._sanitizer.sanitize(SecurityContext.RESOURCE_URL, safeUrl);\n\n // TODO: add an ngDevMode check\n if (!url) {\n throw getMatIconFailedToSanitizeUrlError(safeUrl);\n }\n\n // Store in-progress fetches to avoid sending a duplicate request for a URL when there is\n // already a request in progress for that URL. It's necessary to call share() on the\n // Observable returned by http.get() so that multiple subscribers don't cause multiple XHRs.\n const inProgressFetch = this._inProgressUrlFetches.get(url);\n\n if (inProgressFetch) {\n return inProgressFetch;\n }\n\n const req = this._httpClient.get(url, {responseType: 'text', withCredentials}).pipe(\n map(svg => {\n // Security: This SVG is fetched from a SafeResourceUrl, and is thus\n // trusted HTML.\n return trustedHTMLFromString(svg);\n }),\n finalize(() => this._inProgressUrlFetches.delete(url)),\n share(),\n );\n\n this._inProgressUrlFetches.set(url, req);\n return req;\n }\n\n /**\n * Registers an icon config by name in the specified namespace.\n * @param namespace Namespace in which to register the icon config.\n * @param iconName Name under which to register the config.\n * @param config Config to be registered.\n */\n private _addSvgIconConfig(namespace: string, iconName: string, config: SvgIconConfig): this {\n this._svgIconConfigs.set(iconKey(namespace, iconName), config);\n return this;\n }\n\n /**\n * Registers an icon set config in the specified namespace.\n * @param namespace Namespace in which to register the icon config.\n * @param config Config to be registered.\n */\n private _addSvgIconSetConfig(namespace: string, config: SvgIconConfig): this {\n const configNamespace = this._iconSetConfigs.get(namespace);\n\n if (configNamespace) {\n configNamespace.push(config);\n } else {\n this._iconSetConfigs.set(namespace, [config]);\n }\n\n return this;\n }\n\n /** Parses a config's text into an SVG element. */\n private _svgElementFromConfig(config: LoadedSvgIconConfig): SVGElement {\n if (!config.svgElement) {\n const svg = this._svgElementFromString(config.svgText);\n this._setSvgAttributes(svg, config.options);\n config.svgElement = svg;\n }\n\n return config.svgElement;\n }\n\n /** Tries to create an icon config through the registered resolver functions. */\n private _getIconConfigFromResolvers(namespace: string, name: string): SvgIconConfig | undefined {\n for (let i = 0; i < this._resolvers.length; i++) {\n const result = this._resolvers[i](name, namespace);\n\n if (result) {\n return isSafeUrlWithOptions(result)\n ? new SvgIconConfig(result.url, null, result.options)\n : new SvgIconConfig(result, null);\n }\n }\n\n return undefined;\n }\n}\n\n/** Clones an SVGElement while preserving type information. */\nfunction cloneSvg(svg: SVGElement): SVGElement {\n return svg.cloneNode(true) as SVGElement;\n}\n\n/** Returns the cache key to use for an icon namespace and name. */\nfunction iconKey(namespace: string, name: string) {\n return namespace + ':' + name;\n}\n\nfunction isSafeUrlWithOptions(value: any): value is SafeResourceUrlWithIconOptions {\n return !!(value.url && value.options);\n}\n"],"names":["getMatIconNameNotFoundError","iconName","Error","getMatIconNoHttpProviderError","getMatIconFailedToSanitizeUrlError","url","getMatIconFailedToSanitizeLiteralError","literal","SvgIconConfig","svgText","options","svgElement","constructor","MatIconRegistry","_httpClient","_sanitizer","_errorHandler","_document","_svgIconConfigs","Map","_iconSetConfigs","_cachedIconsByUrl","_inProgressUrlFetches","_fontCssClassesByAlias","_resolvers","_defaultFontSetClass","document","addSvgIcon","addSvgIconInNamespace","addSvgIconLiteral","addSvgIconLiteralInNamespace","namespace","_addSvgIconConfig","addSvgIconResolver","resolver","push","cleanLiteral","sanitize","SecurityContext","HTML","trustedLiteral","trustedHTMLFromString","addSvgIconSet","addSvgIconSetInNamespace","addSvgIconSetLiteral","addSvgIconSetLiteralInNamespace","_addSvgIconSetConfig","registerFontClassAlias","alias","classNames","set","classNameForFontAlias","get","setDefaultFontSetClass","getDefaultFontSetClass","getSvgIconFromUrl","safeUrl","RESOURCE_URL","cachedIcon","observableOf","cloneSvg","_loadSvgIconFromConfig","pipe","tap","svg","map","getNamedSvgIcon","name","key","iconKey","config","_getSvgFromConfig","_getIconConfigFromResolvers","iconSetConfigs","_getSvgFromIconSetConfigs","observableThrow","ngOnDestroy","clear","_svgElementFromConfig","namedIcon","_extractIconWithNameFromAnySet","iconSetFetchRequests","filter","iconSetConfig","_loadSvgIconSetFromConfig","catchError","err","errorMessage","message","handleError","forkJoin","foundIcon","i","length","toString","indexOf","_extractSvgIconFromSet","_fetchIcon","iconSet","iconSource","querySelector","iconElement","cloneNode","removeAttribute","nodeName","toLowerCase","_setSvgAttributes","_toSvgElement","_svgElementFromString","appendChild","str","div","createElement","innerHTML","element","attributes","value","setAttribute","childNodes","nodeType","ELEMENT_NODE","viewBox","iconConfig","withCredentials","inProgressFetch","req","responseType","finalize","delete","share","configNamespace","result","isSafeUrlWithOptions","undefined","ɵfac","i0","ɵɵngDeclareFactory","minVersion","version","ngImport","type","DOCUMENT","optional","token","ErrorHandler","target","ɵɵFactoryTarget","Injectable","ɵprov","ɵɵngDeclareInjectable","decorators","providedIn","Optional","Inject"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"_input-harness-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/input/testing/input-harness.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\nimport {HarnessPredicate, parallel} from '@angular/cdk/testing';\nimport {MatFormFieldControlHarnessBase} from '@angular/material/form-field/testing/control';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {InputHarnessFilters} from './input-harness-filters';\n\n/** Harness for interacting with a standard Material inputs in tests. */\nexport class MatInputHarness extends MatFormFieldControlHarnessBase {\n // TODO: We do not want to handle `select` elements with `matNativeControl` because\n // not all methods of this harness work reasonably for native select elements.\n // For more details. See: https://github.com/angular/components/pull/18221.\n static hostSelector = '[matInput], input[matNativeControl], textarea[matNativeControl]';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatInputHarness` that meets\n * certain criteria.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: InputHarnessFilters = {}): HarnessPredicate<MatInputHarness> {\n return new HarnessPredicate(MatInputHarness, options)\n .addOption('value', options.value, (harness, value) => {\n return HarnessPredicate.stringMatches(harness.getValue(), value);\n })\n .addOption('placeholder', options.placeholder, (harness, placeholder) => {\n return HarnessPredicate.stringMatches(harness.getPlaceholder(), placeholder);\n })\n .addOption('label', options.label, (harness, label) => {\n return HarnessPredicate.stringMatches(harness.getLabel(), label);\n });\n }\n\n /** Whether the input is disabled. */\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n const disabled = await host.getAttribute('disabled');\n\n if (disabled !== null) {\n return coerceBooleanProperty(disabled);\n }\n\n return (await host.getAttribute('aria-disabled')) === 'true';\n }\n\n /** Whether the input is required. */\n async isRequired(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('required');\n }\n\n /** Whether the input is readonly. */\n async isReadonly(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('readOnly');\n }\n\n /** Gets the value of the input. */\n async getValue(): Promise<string> {\n // The \"value\" property of the native input is never undefined.\n return await (await this.host()).getProperty<string>('value');\n }\n\n /** Gets the name of the input. */\n async getName(): Promise<string> {\n // The \"name\" property of the native input is never undefined.\n return await (await this.host()).getProperty<string>('name');\n }\n\n /**\n * Gets the type of the input. Returns \"textarea\" if the input is\n * a textarea.\n */\n async getType(): Promise<string> {\n // The \"type\" property of the native input is never undefined.\n return await (await this.host()).getProperty<string>('type');\n }\n\n /** Gets the placeholder of the input. */\n async getPlaceholder(): Promise<string> {\n const host = await this.host();\n const [nativePlaceholder, fallback] = await parallel(() => [\n host.getProperty('placeholder'),\n host.getAttribute('data-placeholder'),\n ]);\n return nativePlaceholder || fallback || '';\n }\n\n /** Gets the id of the input. */\n async getId(): Promise<string> {\n // The input directive always assigns a unique id to the input in\n // case no id has been explicitly specified.\n return await (await this.host()).getProperty<string>('id');\n }\n\n /**\n * Focuses the input and returns a promise that indicates when the\n * action is complete.\n */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /**\n * Blurs the input and returns a promise that indicates when the\n * action is complete.\n */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the input is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /**\n * Sets the value of the input. The value will be set by simulating\n * keypresses that correspond to the given value.\n */\n async setValue(newValue: string): Promise<void> {\n const inputEl = await this.host();\n await inputEl.clear();\n // We don't want to send keys for the value if the value is an empty\n // string in order to clear the value. Sending keys with an empty string\n // still results in unnecessary focus events.\n if (newValue) {\n await inputEl.sendKeys(newValue);\n }\n\n // Some input types won't respond to key presses (e.g. `color`) so to be sure that the\n // value is set, we also set the property after the keyboard sequence. Note that we don't\n // want to do it before, because it can cause the value to be entered twice.\n await inputEl.setInputValue(newValue);\n }\n}\n"],"names":["MatInputHarness","MatFormFieldControlHarnessBase","hostSelector","with","options","HarnessPredicate","addOption","value","harness","stringMatches","getValue","placeholder","getPlaceholder","label","getLabel","isDisabled","host","disabled","getAttribute","coerceBooleanProperty","isRequired","getProperty","isReadonly","getName","getType","nativePlaceholder","fallback","parallel","getId","focus","blur","isFocused","setValue","newValue","inputEl","clear","sendKeys","setInputValue"],"mappings":"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"}
{"version":3,"file":"_input-harness-chunk.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/input/testing/input-harness.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\nimport {HarnessPredicate, parallel} from '@angular/cdk/testing';\nimport {MatFormFieldControlHarnessBase} from '@angular/material/form-field/testing/control';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {InputHarnessFilters} from './input-harness-filters';\n\n/** Harness for interacting with a standard Material inputs in tests. */\nexport class MatInputHarness extends MatFormFieldControlHarnessBase {\n // TODO: We do not want to handle `select` elements with `matNativeControl` because\n // not all methods of this harness work reasonably for native select elements.\n // For more details. See: https://github.com/angular/components/pull/18221.\n static hostSelector = '[matInput], input[matNativeControl], textarea[matNativeControl]';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatInputHarness` that meets\n * certain criteria.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: InputHarnessFilters = {}): HarnessPredicate<MatInputHarness> {\n return new HarnessPredicate(MatInputHarness, options)\n .addOption('value', options.value, (harness, value) => {\n return HarnessPredicate.stringMatches(harness.getValue(), value);\n })\n .addOption('placeholder', options.placeholder, (harness, placeholder) => {\n return HarnessPredicate.stringMatches(harness.getPlaceholder(), placeholder);\n })\n .addOption('label', options.label, (harness, label) => {\n return HarnessPredicate.stringMatches(harness.getLabel(), label);\n });\n }\n\n /** Whether the input is disabled. */\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n const disabled = await host.getAttribute('disabled');\n\n if (disabled !== null) {\n return coerceBooleanProperty(disabled);\n }\n\n return (await host.getAttribute('aria-disabled')) === 'true';\n }\n\n /** Whether the input is required. */\n async isRequired(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('required');\n }\n\n /** Whether the input is readonly. */\n async isReadonly(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('readOnly');\n }\n\n /** Gets the value of the input. */\n async getValue(): Promise<string> {\n // The \"value\" property of the native input is never undefined.\n return await (await this.host()).getProperty<string>('value');\n }\n\n /** Gets the name of the input. */\n async getName(): Promise<string> {\n // The \"name\" property of the native input is never undefined.\n return await (await this.host()).getProperty<string>('name');\n }\n\n /**\n * Gets the type of the input. Returns \"textarea\" if the input is\n * a textarea.\n */\n async getType(): Promise<string> {\n // The \"type\" property of the native input is never undefined.\n return await (await this.host()).getProperty<string>('type');\n }\n\n /** Gets the placeholder of the input. */\n async getPlaceholder(): Promise<string> {\n const host = await this.host();\n const [nativePlaceholder, fallback] = await parallel(() => [\n host.getProperty('placeholder'),\n host.getAttribute('data-placeholder'),\n ]);\n return nativePlaceholder || fallback || '';\n }\n\n /** Gets the id of the input. */\n async getId(): Promise<string> {\n // The input directive always assigns a unique id to the input in\n // case no id has been explicitly specified.\n return await (await this.host()).getProperty<string>('id');\n }\n\n /**\n * Focuses the input and returns a promise that indicates when the\n * action is complete.\n */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /**\n * Blurs the input and returns a promise that indicates when the\n * action is complete.\n */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the input is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /**\n * Sets the value of the input. The value will be set by simulating\n * keypresses that correspond to the given value.\n */\n async setValue(newValue: string): Promise<void> {\n const inputEl = await this.host();\n await inputEl.clear();\n // We don't want to send keys for the value if the value is an empty\n // string in order to clear the value. Sending keys with an empty string\n // still results in unnecessary focus events.\n if (newValue) {\n await inputEl.sendKeys(newValue);\n }\n\n // Some input types won't respond to key presses (e.g. `color`) so to be sure that the\n // value is set, we also set the property after the keyboard sequence. Note that we don't\n // want to do it before, because it can cause the value to be entered twice.\n await inputEl.setInputValue(newValue);\n }\n}\n"],"names":["MatInputHarness","MatFormFieldControlHarnessBase","hostSelector","with","options","HarnessPredicate","addOption","value","harness","stringMatches","getValue","placeholder","getPlaceholder","label","getLabel","isDisabled","host","disabled","getAttribute","coerceBooleanProperty","isRequired","getProperty","isReadonly","getName","getType","nativePlaceholder","fallback","parallel","getId","focus","blur","isFocused","setValue","newValue","inputEl","clear","sendKeys","setInputValue"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"_input-value-accessor-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/input/input-value-accessor.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\nimport {InjectionToken, WritableSignal} from '@angular/core';\n\n/**\n * This token is used to inject the object whose value should be set into `MatInput`. If none is\n * provided, the native `HTMLInputElement` is used. Directives like `MatDatepickerInput` can provide\n * themselves for this token, in order to make `MatInput` delegate the getting and setting of the\n * value to them.\n */\nexport const MAT_INPUT_VALUE_ACCESSOR = new InjectionToken<{value: any | WritableSignal<any>}>(\n 'MAT_INPUT_VALUE_ACCESSOR',\n);\n"],"names":["MAT_INPUT_VALUE_ACCESSOR","InjectionToken"],"mappings":";;MAgBaA,wBAAwB,GAAG,IAAIC,cAAc,CACxD,0BAA0B;;;;"}
{"version":3,"file":"_input-value-accessor-chunk.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/input/input-value-accessor.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\nimport {InjectionToken, WritableSignal} from '@angular/core';\n\n/**\n * This token is used to inject the object whose value should be set into `MatInput`. If none is\n * provided, the native `HTMLInputElement` is used. Directives like `MatDatepickerInput` can provide\n * themselves for this token, in order to make `MatInput` delegate the getting and setting of the\n * value to them.\n */\nexport const MAT_INPUT_VALUE_ACCESSOR = new InjectionToken<{value: any | WritableSignal<any>}>(\n 'MAT_INPUT_VALUE_ACCESSOR',\n);\n"],"names":["MAT_INPUT_VALUE_ACCESSOR","InjectionToken"],"mappings":";;MAgBaA,wBAAwB,GAAG,IAAIC,cAAc,CACxD,0BAA0B;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"_internal-form-field-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/internal-form-field/internal-form-field.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\nimport {ChangeDetectionStrategy, Component, Input, ViewEncapsulation} from '@angular/core';\n\n/**\n * Internal shared component used as a container in form field controls.\n * Not to be confused with `mat-form-field` which MDC calls a \"text field\".\n * @docs-private\n */\n@Component({\n // Use a `div` selector to match the old markup closer.\n selector: 'div[mat-internal-form-field]',\n template: '<ng-content></ng-content>',\n styleUrl: 'internal-form-field.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'mdc-form-field mat-internal-form-field',\n '[class.mdc-form-field--align-end]': 'labelPosition === \"before\"',\n },\n})\nexport class _MatInternalFormField {\n /** Position of the label relative to the content. */\n @Input({required: true}) labelPosition: 'before' | 'after' = 'after';\n}\n"],"names":["_MatInternalFormField","labelPosition","deps","target","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","isInline","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","template","host","Input","required"],"mappings":";;;MA2BaA,qBAAqB,CAAA;AAEPC,EAAAA,aAAa,GAAuB,OAAO;;;;;UAFzDD,qBAAqB;AAAAE,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;AAArB,EAAA,OAAAC,IAAA,GAAAH,EAAA,CAAAI,oBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,IAAA,EAAAX,qBAAqB;;;;;;;;;;;;;cATtB,2BAA2B;AAAAY,IAAAA,QAAA,EAAA,IAAA;IAAAC,MAAA,EAAA,CAAA,0vBAAA,CAAA;AAAAC,IAAAA,eAAA,EAAAV,EAAA,CAAAW,uBAAA,CAAAC,MAAA;AAAAC,IAAAA,aAAA,EAAAb,EAAA,CAAAc,iBAAA,CAAAC;AAAA,GAAA,CAAA;;;;;;QAS1BnB,qBAAqB;AAAAoB,EAAAA,UAAA,EAAA,CAAA;UAZjCd,SAAS;;gBAEE,8BAA8B;AAAAe,MAAAA,QAAA,EAC9B,2BAA2B;MAAAJ,aAAA,EAEtBC,iBAAiB,CAACC,IAAI;MAAAL,eAAA,EACpBC,uBAAuB,CAACC,MAAM;AAAAM,MAAAA,IAAA,EACzC;AACJ,QAAA,OAAO,EAAE,wCAAwC;AACjD,QAAA,mCAAmC,EAAE;OACtC;MAAAT,MAAA,EAAA,CAAA,0vBAAA;KAAA;;;;YAIAU,KAAK;aAAC;AAACC,QAAAA,QAAQ,EAAE;OAAK;;;;;;;"}
{"version":3,"file":"_internal-form-field-chunk.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/core/internal-form-field/internal-form-field.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\nimport {ChangeDetectionStrategy, Component, Input, ViewEncapsulation} from '@angular/core';\n\n/**\n * Internal shared component used as a container in form field controls.\n * Not to be confused with `mat-form-field` which MDC calls a \"text field\".\n * @docs-private\n */\n@Component({\n // Use a `div` selector to match the old markup closer.\n selector: 'div[mat-internal-form-field]',\n template: '<ng-content></ng-content>',\n styleUrl: 'internal-form-field.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'mdc-form-field mat-internal-form-field',\n '[class.mdc-form-field--align-end]': 'labelPosition === \"before\"',\n },\n})\nexport class _MatInternalFormField {\n /** Position of the label relative to the content. */\n @Input({required: true}) labelPosition: 'before' | 'after' = 'after';\n}\n"],"names":["_MatInternalFormField","labelPosition","deps","target","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","isInline","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","template","host","Input","required"],"mappings":";;;MA2BaA,qBAAqB,CAAA;AAEPC,EAAAA,aAAa,GAAuB,OAAO;;;;;UAFzDD,qBAAqB;AAAAE,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;AAArB,EAAA,OAAAC,IAAA,GAAAH,EAAA,CAAAI,oBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,IAAA,EAAAX,qBAAqB;;;;;;;;;;;;;cATtB,2BAA2B;AAAAY,IAAAA,QAAA,EAAA,IAAA;IAAAC,MAAA,EAAA,CAAA,0vBAAA,CAAA;AAAAC,IAAAA,eAAA,EAAAV,EAAA,CAAAW,uBAAA,CAAAC,MAAA;AAAAC,IAAAA,aAAA,EAAAb,EAAA,CAAAc,iBAAA,CAAAC;AAAA,GAAA,CAAA;;;;;;QAS1BnB,qBAAqB;AAAAoB,EAAAA,UAAA,EAAA,CAAA;UAZjCd,SAAS;;gBAEE,8BAA8B;AAAAe,MAAAA,QAAA,EAC9B,2BAA2B;MAAAJ,aAAA,EAEtBC,iBAAiB,CAACC,IAAI;MAAAL,eAAA,EACpBC,uBAAuB,CAACC,MAAM;AAAAM,MAAAA,IAAA,EACzC;AACJ,QAAA,OAAO,EAAE,wCAAwC;AACjD,QAAA,mCAAmC,EAAE;OACtC;MAAAT,MAAA,EAAA,CAAA,0vBAAA;KAAA;;;;YAIAU,KAAK;aAAC;AAACC,QAAAA,QAAQ,EAAE;OAAK;;;;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"_line-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/line/line.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\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {Directive, ElementRef, NgModule, QueryList} from '@angular/core';\nimport {startWith} from 'rxjs/operators';\n\n/**\n * Shared directive to count lines inside a text area, such as a list item.\n * Line elements can be extracted with a @ContentChildren(MatLine) query, then\n * counted by checking the query list's length.\n */\n@Directive({\n selector: '[mat-line], [matLine]',\n host: {'class': 'mat-line'},\n})\nexport class MatLine {}\n\n/**\n * Helper that takes a query list of lines and sets the correct class on the host.\n * @docs-private\n */\nexport function setLines(\n lines: QueryList<unknown>,\n element: ElementRef<HTMLElement>,\n prefix = 'mat',\n) {\n // Note: doesn't need to unsubscribe, because `changes`\n // gets completed by Angular when the view is destroyed.\n lines.changes.pipe(startWith(lines)).subscribe(({length}) => {\n setClass(element, `${prefix}-2-line`, false);\n setClass(element, `${prefix}-3-line`, false);\n setClass(element, `${prefix}-multi-line`, false);\n\n if (length === 2 || length === 3) {\n setClass(element, `${prefix}-${length}-line`, true);\n } else if (length > 3) {\n setClass(element, `${prefix}-multi-line`, true);\n }\n });\n}\n\n/** Adds or removes a class from an element. */\nfunction setClass(element: ElementRef<HTMLElement>, className: string, isAdd: boolean): void {\n element.nativeElement.classList.toggle(className, isAdd);\n}\n\n@NgModule({\n imports: [MatLine],\n exports: [MatLine, BidiModule],\n})\nexport class MatLineModule {}\n"],"names":["MatLine","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","host","classAttribute","ngImport","decorators","args","setLines","lines","element","prefix","changes","pipe","startWith","subscribe","length","setClass","className","isAdd","nativeElement","classList","toggle","MatLineModule","NgModule","ɵmod","ɵɵngDeclareNgModule","minVersion","version","type","imports","exports","BidiModule","ɵinj","ɵɵngDeclareInjector"],"mappings":"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"}
{"version":3,"file":"_line-chunk.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/core/line/line.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\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {Directive, ElementRef, NgModule, QueryList} from '@angular/core';\nimport {startWith} from 'rxjs/operators';\n\n/**\n * Shared directive to count lines inside a text area, such as a list item.\n * Line elements can be extracted with a @ContentChildren(MatLine) query, then\n * counted by checking the query list's length.\n */\n@Directive({\n selector: '[mat-line], [matLine]',\n host: {'class': 'mat-line'},\n})\nexport class MatLine {}\n\n/**\n * Helper that takes a query list of lines and sets the correct class on the host.\n * @docs-private\n */\nexport function setLines(\n lines: QueryList<unknown>,\n element: ElementRef<HTMLElement>,\n prefix = 'mat',\n) {\n // Note: doesn't need to unsubscribe, because `changes`\n // gets completed by Angular when the view is destroyed.\n lines.changes.pipe(startWith(lines)).subscribe(({length}) => {\n setClass(element, `${prefix}-2-line`, false);\n setClass(element, `${prefix}-3-line`, false);\n setClass(element, `${prefix}-multi-line`, false);\n\n if (length === 2 || length === 3) {\n setClass(element, `${prefix}-${length}-line`, true);\n } else if (length > 3) {\n setClass(element, `${prefix}-multi-line`, true);\n }\n });\n}\n\n/** Adds or removes a class from an element. */\nfunction setClass(element: ElementRef<HTMLElement>, className: string, isAdd: boolean): void {\n element.nativeElement.classList.toggle(className, isAdd);\n}\n\n@NgModule({\n imports: [MatLine],\n exports: [MatLine, BidiModule],\n})\nexport class MatLineModule {}\n"],"names":["MatLine","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","host","classAttribute","ngImport","decorators","args","setLines","lines","element","prefix","changes","pipe","startWith","subscribe","length","setClass","className","isAdd","nativeElement","classList","toggle","MatLineModule","NgModule","ɵmod","ɵɵngDeclareNgModule","minVersion","version","type","imports","exports","BidiModule","ɵinj","ɵɵngDeclareInjector"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"_option-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/option/option-parent.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/option/optgroup.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/option/optgroup.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/option/option.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/option/option.html"],"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\nimport {InjectionToken, Signal} from '@angular/core';\n\n/**\n * Describes a parent component that manages a list of options.\n * Contains properties that the options can inherit.\n * @docs-private\n */\nexport interface MatOptionParentComponent {\n disableRipple?: boolean | Signal<boolean>;\n multiple?: boolean;\n inertGroups?: boolean;\n hideSingleSelectionIndicator?: boolean;\n}\n\n/**\n * Injection token used to provide the parent component to options.\n */\nexport const MAT_OPTION_PARENT_COMPONENT = new InjectionToken<MatOptionParentComponent>(\n 'MAT_OPTION_PARENT_COMPONENT',\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 Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n Input,\n InjectionToken,\n booleanAttribute,\n inject,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {MatOptionParentComponent, MAT_OPTION_PARENT_COMPONENT} from './option-parent';\n\n// Notes on the accessibility pattern used for `mat-optgroup`.\n// The option group has two different \"modes\": regular and inert. The regular mode uses the\n// recommended a11y pattern which has `role=\"group\"` on the group element with `aria-labelledby`\n// pointing to the label. This works for `mat-select`, but it seems to hit a bug for autocomplete\n// under VoiceOver where the group doesn't get read out at all. The bug appears to be that if\n// there's __any__ a11y-related attribute on the group (e.g. `role` or `aria-labelledby`),\n// VoiceOver on Safari won't read it out.\n// We've introduced the `inert` mode as a workaround. Under this mode, all a11y attributes are\n// removed from the group, and we get the screen reader to read out the group label by mirroring it\n// inside an invisible element in the option. This is sub-optimal, because the screen reader will\n// repeat the group label on each navigation, whereas the default pattern only reads the group when\n// the user enters a new group. The following alternate approaches were considered:\n// 1. Reading out the group label using the `LiveAnnouncer` solves the problem, but we can't control\n// when the text will be read out so sometimes it comes in too late or never if the user\n// navigates quickly.\n// 2. `<mat-option aria-describedby=\"groupLabel\"` - This works on Safari, but VoiceOver in Chrome\n// won't read out the description at all.\n// 3. `<mat-option aria-labelledby=\"optionLabel groupLabel\"` - This works on Chrome, but Safari\n// doesn't read out the text at all. Furthermore, on\n\n/**\n * Injection token that can be used to reference instances of `MatOptgroup`. It serves as\n * alternative token to the actual `MatOptgroup` class which could cause unnecessary\n * retention of the class and its component metadata.\n */\nexport const MAT_OPTGROUP = new InjectionToken<MatOptgroup>('MatOptgroup');\n\n/**\n * Component that is used to group instances of `mat-option`.\n */\n@Component({\n selector: 'mat-optgroup',\n exportAs: 'matOptgroup',\n templateUrl: 'optgroup.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: 'optgroup.css',\n host: {\n 'class': 'mat-mdc-optgroup',\n '[attr.role]': '_inert ? null : \"group\"',\n '[attr.aria-disabled]': '_inert ? null : disabled.toString()',\n '[attr.aria-labelledby]': '_inert ? null : _labelId',\n },\n providers: [{provide: MAT_OPTGROUP, useExisting: MatOptgroup}],\n})\nexport class MatOptgroup {\n /** Label for the option group. */\n @Input() label!: string;\n\n /** whether the option group is disabled. */\n @Input({transform: booleanAttribute}) disabled: boolean = false;\n\n /** Unique id for the underlying label. */\n _labelId: string = inject(_IdGenerator).getId('mat-optgroup-label-');\n\n /** Whether the group is in inert a11y mode. */\n _inert: boolean;\n\n constructor(...args: unknown[]);\n\n constructor() {\n const parent = inject<MatOptionParentComponent>(MAT_OPTION_PARENT_COMPONENT, {optional: true});\n this._inert = parent?.inertGroups ?? false;\n }\n}\n","<span\n class=\"mat-mdc-optgroup-label\"\n role=\"presentation\"\n [class.mdc-list-item--disabled]=\"disabled\"\n [id]=\"_labelId\">\n <span class=\"mdc-list-item__primary-text\">{{ label }} <ng-content></ng-content></span>\n</span>\n\n<ng-content select=\"mat-option, ng-container\"></ng-content>\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 {_IdGenerator, FocusableOption, FocusOrigin} from '@angular/cdk/a11y';\nimport {ENTER, hasModifierKey, SPACE} from '@angular/cdk/keycodes';\nimport {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ElementRef,\n ChangeDetectorRef,\n AfterViewChecked,\n OnDestroy,\n Input,\n Output,\n EventEmitter,\n QueryList,\n ViewChild,\n booleanAttribute,\n inject,\n isSignal,\n Signal,\n signal,\n} from '@angular/core';\nimport {Subject} from 'rxjs';\nimport {MAT_OPTGROUP, MatOptgroup} from './optgroup';\nimport {MatOptionParentComponent, MAT_OPTION_PARENT_COMPONENT} from './option-parent';\nimport {MatRipple} from '../ripple/ripple';\nimport {MatPseudoCheckbox} from '../selection/pseudo-checkbox/pseudo-checkbox';\nimport {_StructuralStylesLoader} from '../focus-indicators/structural-styles';\nimport {_CdkPrivateStyleLoader, _VisuallyHiddenLoader} from '@angular/cdk/private';\n\n/** Event object emitted by MatOption when selected or deselected. */\nexport class MatOptionSelectionChange<T = any> {\n constructor(\n /** Reference to the option that emitted the event. */\n public source: MatOption<T>,\n /** Whether the change in the option's value was a result of a user action. */\n public isUserInput = false,\n ) {}\n}\n\n/**\n * Single option inside of a `<mat-select>` element.\n */\n@Component({\n selector: 'mat-option',\n exportAs: 'matOption',\n host: {\n 'role': 'option',\n '[class.mdc-list-item--selected]': 'selected',\n '[class.mat-mdc-option-multiple]': 'multiple',\n '[class.mat-mdc-option-active]': 'active',\n '[class.mdc-list-item--disabled]': 'disabled',\n '[id]': 'id',\n // Set aria-selected to false for non-selected items and true for selected items. Conform to\n // [WAI ARIA Listbox authoring practices guide](\n // https://www.w3.org/WAI/ARIA/apg/patterns/listbox/), \"If any options are selected, each\n // selected option has either aria-selected or aria-checked set to true. All options that are\n // selectable but not selected have either aria-selected or aria-checked set to false.\" Align\n // aria-selected implementation of Chips and List components.\n //\n // Set `aria-selected=\"false\"` on not-selected listbox options to fix VoiceOver announcing\n // every option as \"selected\" (#21491).\n '[attr.aria-selected]': 'selected',\n '[attr.aria-disabled]': 'disabled.toString()',\n '(click)': '_selectViaInteraction()',\n '(keydown)': '_handleKeydown($event)',\n 'class': 'mat-mdc-option mdc-list-item',\n },\n styleUrl: 'option.css',\n templateUrl: 'option.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatPseudoCheckbox, MatRipple],\n})\nexport class MatOption<T = any> implements FocusableOption, AfterViewChecked, OnDestroy {\n private _element = inject<ElementRef<HTMLElement>>(ElementRef);\n _changeDetectorRef = inject(ChangeDetectorRef);\n private _parent = inject<MatOptionParentComponent>(MAT_OPTION_PARENT_COMPONENT, {optional: true});\n group = inject<MatOptgroup>(MAT_OPTGROUP, {optional: true});\n\n private _signalDisableRipple = false;\n private _selected = false;\n private _active = false;\n private _mostRecentViewValue = '';\n\n /** Whether the wrapping component is in multiple selection mode. */\n get multiple() {\n return this._parent && this._parent.multiple;\n }\n\n /** Whether or not the option is currently selected. */\n get selected(): boolean {\n return this._selected;\n }\n\n /** The form value of the option. */\n @Input() value!: T;\n\n /** The unique ID of the option. */\n @Input() id: string = inject(_IdGenerator).getId('mat-option-');\n\n /** Whether the option is disabled. */\n @Input({transform: booleanAttribute})\n get disabled(): boolean {\n return (this.group && this.group.disabled) || this._disabled();\n }\n set disabled(value: boolean) {\n this._disabled.set(value);\n }\n private _disabled = signal(false);\n\n /** Whether ripples for the option are disabled. */\n get disableRipple(): boolean {\n return this._signalDisableRipple\n ? (this._parent!.disableRipple as Signal<boolean>)()\n : !!this._parent?.disableRipple;\n }\n\n /** Whether to display checkmark for single-selection. */\n get hideSingleSelectionIndicator(): boolean {\n return !!(this._parent && this._parent.hideSingleSelectionIndicator);\n }\n\n /** Event emitted when the option is selected or deselected. */\n // tslint:disable-next-line:no-output-on-prefix\n @Output() readonly onSelectionChange = new EventEmitter<MatOptionSelectionChange<T>>();\n\n /** Element containing the option's text. */\n @ViewChild('text', {static: true}) _text: ElementRef<HTMLElement> | undefined;\n\n /** Emits when the state of the option changes and any parents have to be notified. */\n readonly _stateChanges = new Subject<void>();\n\n constructor(...args: unknown[]);\n constructor() {\n const styleLoader = inject(_CdkPrivateStyleLoader);\n styleLoader.load(_StructuralStylesLoader);\n styleLoader.load(_VisuallyHiddenLoader);\n this._signalDisableRipple = !!this._parent && isSignal(this._parent.disableRipple);\n }\n\n /**\n * Whether or not the option is currently active and ready to be selected.\n * An active option displays styles as if it is focused, but the\n * focus is actually retained somewhere else. This comes in handy\n * for components like autocomplete where focus must remain on the input.\n */\n get active(): boolean {\n return this._active;\n }\n\n /**\n * The displayed value of the option. It is necessary to show the selected option in the\n * select's trigger.\n */\n get viewValue(): string {\n // TODO(kara): Add input property alternative for node envs.\n return (this._text?.nativeElement.textContent || '').trim();\n }\n\n /** Selects the option. */\n select(emitEvent = true): void {\n if (!this._selected) {\n this._selected = true;\n this._changeDetectorRef.markForCheck();\n\n if (emitEvent) {\n this._emitSelectionChangeEvent();\n }\n }\n }\n\n /** Deselects the option. */\n deselect(emitEvent = true): void {\n if (this._selected) {\n this._selected = false;\n this._changeDetectorRef.markForCheck();\n\n if (emitEvent) {\n this._emitSelectionChangeEvent();\n }\n }\n }\n\n /** Sets focus onto this option. */\n focus(_origin?: FocusOrigin, options?: FocusOptions): void {\n // Note that we aren't using `_origin`, but we need to keep it because some internal consumers\n // use `MatOption` in a `FocusKeyManager` and we need it to match `FocusableOption`.\n const element = this._getHostElement();\n\n if (typeof element.focus === 'function') {\n element.focus(options);\n }\n }\n\n /**\n * This method sets display styles on the option to make it appear\n * active. This is used by the ActiveDescendantKeyManager so key\n * events will display the proper options as active on arrow key events.\n */\n setActiveStyles(): void {\n if (!this._active) {\n this._active = true;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * This method removes display styles on the option that made it appear\n * active. This is used by the ActiveDescendantKeyManager so key\n * events will display the proper options as active on arrow key events.\n */\n setInactiveStyles(): void {\n if (this._active) {\n this._active = false;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /** Gets the label to be used when determining whether the option should be focused. */\n getLabel(): string {\n return this.viewValue;\n }\n\n /** Ensures the option is selected when activated from the keyboard. */\n _handleKeydown(event: KeyboardEvent): void {\n if ((event.keyCode === ENTER || event.keyCode === SPACE) && !hasModifierKey(event)) {\n this._selectViaInteraction();\n\n // Prevent the page from scrolling down and form submits.\n event.preventDefault();\n }\n }\n\n /**\n * `Selects the option while indicating the selection came from the user. Used to\n * determine if the select's view -> model callback should be invoked.`\n */\n _selectViaInteraction(): void {\n if (!this.disabled) {\n this._selected = this.multiple ? !this._selected : true;\n this._changeDetectorRef.markForCheck();\n this._emitSelectionChangeEvent(true);\n }\n }\n\n /** Returns the correct tabindex for the option depending on disabled state. */\n // This method is only used by `MatLegacyOption`. Keeping it here to avoid breaking the types.\n // That's because `MatLegacyOption` use `MatOption` type in a few places such as\n // `MatOptionSelectionChange`. It is safe to delete this when `MatLegacyOption` is deleted.\n _getTabIndex(): string {\n return this.disabled ? '-1' : '0';\n }\n\n /** Gets the host DOM element. */\n _getHostElement(): HTMLElement {\n return this._element.nativeElement;\n }\n\n ngAfterViewChecked() {\n // Since parent components could be using the option's label to display the selected values\n // (e.g. `mat-select`) and they don't have a way of knowing if the option's label has changed\n // we have to check for changes in the DOM ourselves and dispatch an event. These checks are\n // relatively cheap, however we still limit them only to selected options in order to avoid\n // hitting the DOM too often.\n if (this._selected) {\n const viewValue = this.viewValue;\n\n if (viewValue !== this._mostRecentViewValue) {\n if (this._mostRecentViewValue) {\n this._stateChanges.next();\n }\n\n this._mostRecentViewValue = viewValue;\n }\n }\n }\n\n ngOnDestroy() {\n this._stateChanges.complete();\n }\n\n /** Emits the selection change event. */\n private _emitSelectionChangeEvent(isUserInput = false): void {\n this.onSelectionChange.emit(new MatOptionSelectionChange<T>(this, isUserInput));\n }\n}\n\n/**\n * Counts the amount of option group labels that precede the specified option.\n * @param optionIndex Index of the option at which to start counting.\n * @param options Flat list of all of the options.\n * @param optionGroups Flat list of all of the option groups.\n * @docs-private\n */\nexport function _countGroupLabelsBeforeOption(\n optionIndex: number,\n options: QueryList<MatOption>,\n optionGroups: QueryList<MatOptgroup>,\n): number {\n if (optionGroups.length) {\n let optionsArray = options.toArray();\n let groups = optionGroups.toArray();\n let groupCounter = 0;\n\n for (let i = 0; i < optionIndex + 1; i++) {\n if (optionsArray[i].group && optionsArray[i].group === groups[groupCounter]) {\n groupCounter++;\n }\n }\n\n return groupCounter;\n }\n\n return 0;\n}\n\n/**\n * Determines the position to which to scroll a panel in order for an option to be into view.\n * @param optionOffset Offset of the option from the top of the panel.\n * @param optionHeight Height of the options.\n * @param currentScrollPosition Current scroll position of the panel.\n * @param panelHeight Height of the panel.\n * @docs-private\n */\nexport function _getOptionScrollPosition(\n optionOffset: number,\n optionHeight: number,\n currentScrollPosition: number,\n panelHeight: number,\n): number {\n if (optionOffset < currentScrollPosition) {\n return optionOffset;\n }\n\n if (optionOffset + optionHeight > currentScrollPosition + panelHeight) {\n return Math.max(0, optionOffset - panelHeight + optionHeight);\n }\n\n return currentScrollPosition;\n}\n","<!-- Set aria-hidden=\"true\" to this DOM node and other decorative nodes in this file. This might\n be contributing to issue where sometimes VoiceOver focuses on a TextNode in the a11y tree instead\n of the Option node (#23202). Most assistive technology will generally ignore non-role,\n non-text-content elements. Adding aria-hidden seems to make VoiceOver behave more consistently. -->\n@if (multiple) {\n <mat-pseudo-checkbox\n class=\"mat-mdc-option-pseudo-checkbox\"\n [disabled]=\"disabled\"\n [state]=\"selected ? 'checked' : 'unchecked'\"\n aria-hidden=\"true\"></mat-pseudo-checkbox>\n}\n\n<ng-content select=\"mat-icon\"></ng-content>\n\n<span class=\"mdc-list-item__primary-text\" #text><ng-content></ng-content></span>\n\n<!-- Render checkmark at the end for single-selection. -->\n@if (!multiple && selected && !hideSingleSelectionIndicator) {\n <mat-pseudo-checkbox\n class=\"mat-mdc-option-pseudo-checkbox\"\n [disabled]=\"disabled\"\n state=\"checked\"\n aria-hidden=\"true\"\n appearance=\"minimal\"></mat-pseudo-checkbox>\n}\n\n<!-- See a11y notes inside optgroup.ts for context behind this element. -->\n@if (group && group._inert) {\n <span class=\"cdk-visually-hidden\">({{ group.label }})</span>\n}\n\n<div class=\"mat-mdc-option-ripple mat-focus-indicator\" aria-hidden=\"true\" mat-ripple\n [matRippleTrigger]=\"_getHostElement()\" [matRippleDisabled]=\"disabled || disableRipple\">\n</div>\n"],"names":["MAT_OPTION_PARENT_COMPONENT","InjectionToken","MAT_OPTGROUP","MatOptgroup","label","disabled","_labelId","inject","_IdGenerator","getId","_inert","constructor","parent","optional","inertGroups","deps","target","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","isStandalone","selector","inputs","booleanAttribute","host","properties","classAttribute","providers","provide","useExisting","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","exportAs","template","Input","transform","MatOptionSelectionChange","source","isUserInput","MatOption","_element","ElementRef","_changeDetectorRef","ChangeDetectorRef","_parent","group","_signalDisableRipple","_selected","_active","_mostRecentViewValue","multiple","selected","value","id","_disabled","set","signal","disableRipple","hideSingleSelectionIndicator","onSelectionChange","EventEmitter","_text","_stateChanges","Subject","styleLoader","_CdkPrivateStyleLoader","load","_StructuralStylesLoader","_VisuallyHiddenLoader","isSignal","active","viewValue","nativeElement","textContent","trim","select","emitEvent","markForCheck","_emitSelectionChangeEvent","deselect","focus","_origin","options","element","_getHostElement","setActiveStyles","setInactiveStyles","getLabel","_handleKeydown","event","keyCode","ENTER","SPACE","hasModifierKey","_selectViaInteraction","preventDefault","_getTabIndex","ngAfterViewChecked","next","ngOnDestroy","complete","emit","outputs","attributes","listeners","viewQueries","propertyName","first","predicate","descendants","static","ngImport","dependencies","kind","MatPseudoCheckbox","MatRipple","imports","Output","ViewChild","args","_countGroupLabelsBeforeOption","optionIndex","optionGroups","length","optionsArray","toArray","groups","groupCounter","i","_getOptionScrollPosition","optionOffset","optionHeight","currentScrollPosition","panelHeight","Math","max"],"mappings":";;;;;;;;;;MAyBaA,2BAA2B,GAAG,IAAIC,cAAc,CAC3D,6BAA6B;;MCmBlBC,YAAY,GAAG,IAAID,cAAc,CAAc,aAAa;MAoB5DE,WAAW,CAAA;EAEbC,KAAK;AAGwBC,EAAAA,QAAQ,GAAY,KAAK;EAG/DC,QAAQ,GAAWC,MAAM,CAACC,YAAY,CAAC,CAACC,KAAK,CAAC,qBAAqB,CAAC;EAGpEC,MAAM;AAINC,EAAAA,WAAAA,GAAA;AACE,IAAA,MAAMC,MAAM,GAAGL,MAAM,CAA2BP,2BAA2B,EAAE;AAACa,MAAAA,QAAQ,EAAE;AAAI,KAAC,CAAC;AAC9F,IAAA,IAAI,CAACH,MAAM,GAAGE,MAAM,EAAEE,WAAW,IAAI,KAAK;AAC5C,EAAA;;;;;UAlBWX,WAAW;AAAAY,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;AAAX,EAAA,OAAAC,IAAA,GAAAH,EAAA,CAAAI,oBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,IAAA,EAAArB,WAAW;AAAAsB,IAAAA,YAAA,EAAA,IAAA;AAAAC,IAAAA,QAAA,EAAA,cAAA;AAAAC,IAAAA,MAAA,EAAA;AAAAvB,MAAAA,KAAA,EAAA,OAAA;AAAAC,MAAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAKHuB,gBAAgB;KAAA;AAAAC,IAAAA,IAAA,EAAA;AAAAC,MAAAA,UAAA,EAAA;AAAA,QAAA,WAAA,EAAA,2BAAA;AAAA,QAAA,oBAAA,EAAA,qCAAA;AAAA,QAAA,sBAAA,EAAA;OAAA;AAAAC,MAAAA,cAAA,EAAA;KAAA;AAAAC,IAAAA,SAAA,EAPxB,CAAC;AAACC,MAAAA,OAAO,EAAE/B,YAAY;AAAEgC,MAAAA,WAAW,EAAE/B;AAAW,KAAC,CAAC;;;cC/DhE,kTASA;IAAAgC,MAAA,EAAA,CAAA,4mCAAA,CAAA;AAAAC,IAAAA,eAAA,EAAAnB,EAAA,CAAAoB,uBAAA,CAAAC,MAAA;AAAAC,IAAAA,aAAA,EAAAtB,EAAA,CAAAuB,iBAAA,CAAAC;AAAA,GAAA,CAAA;;;;;;QDwDatC,WAAW;AAAAuC,EAAAA,UAAA,EAAA,CAAA;UAfvBvB,SAAS;;gBACE,cAAc;AAAAwB,MAAAA,QAAA,EACd,aAAa;MAAAJ,aAAA,EAERC,iBAAiB,CAACC,IAAI;MAAAL,eAAA,EACpBC,uBAAuB,CAACC,MAAM;AAAAT,MAAAA,IAAA,EAEzC;AACJ,QAAA,OAAO,EAAE,kBAAkB;AAC3B,QAAA,aAAa,EAAE,yBAAyB;AACxC,QAAA,sBAAsB,EAAE,qCAAqC;AAC7D,QAAA,wBAAwB,EAAE;OAC3B;AAAAG,MAAAA,SAAA,EACU,CAAC;AAACC,QAAAA,OAAO,EAAE/B,YAAY;AAAEgC,QAAAA,WAAW,EAAA/B;AAAa,OAAC,CAAC;AAAAyC,MAAAA,QAAA,EAAA,kTAAA;MAAAT,MAAA,EAAA,CAAA,4mCAAA;KAAA;;;;;YAI7DU;;;YAGAA,KAAK;aAAC;AAACC,QAAAA,SAAS,EAAElB;OAAiB;;;;;MEhCzBmB,wBAAwB,CAAA;EAG1BC,MAAA;EAEAC,WAAA;AAJTtC,EAAAA,WAAAA,CAESqC,MAAoB,EAEpBC,WAAA,GAAc,KAAK,EAAA;IAFnB,IAAA,CAAAD,MAAM,GAANA,MAAM;IAEN,IAAA,CAAAC,WAAW,GAAXA,WAAW;AACjB,EAAA;AACJ;MAoCYC,SAAS,CAAA;AACZC,EAAAA,QAAQ,GAAG5C,MAAM,CAA0B6C,UAAU,CAAC;AAC9DC,EAAAA,kBAAkB,GAAG9C,MAAM,CAAC+C,iBAAiB,CAAC;AACtCC,EAAAA,OAAO,GAAGhD,MAAM,CAA2BP,2BAA2B,EAAE;AAACa,IAAAA,QAAQ,EAAE;AAAI,GAAC,CAAC;AACjG2C,EAAAA,KAAK,GAAGjD,MAAM,CAAcL,YAAY,EAAE;AAACW,IAAAA,QAAQ,EAAE;AAAI,GAAC,CAAC;AAEnD4C,EAAAA,oBAAoB,GAAG,KAAK;AAC5BC,EAAAA,SAAS,GAAG,KAAK;AACjBC,EAAAA,OAAO,GAAG,KAAK;AACfC,EAAAA,oBAAoB,GAAG,EAAE;EAGjC,IAAIC,QAAQA,GAAA;IACV,OAAO,IAAI,CAACN,OAAO,IAAI,IAAI,CAACA,OAAO,CAACM,QAAQ;AAC9C,EAAA;EAGA,IAAIC,QAAQA,GAAA;IACV,OAAO,IAAI,CAACJ,SAAS;AACvB,EAAA;EAGSK,KAAK;EAGLC,EAAE,GAAWzD,MAAM,CAACC,YAAY,CAAC,CAACC,KAAK,CAAC,aAAa,CAAC;EAG/D,IACIJ,QAAQA,GAAA;AACV,IAAA,OAAQ,IAAI,CAACmD,KAAK,IAAI,IAAI,CAACA,KAAK,CAACnD,QAAQ,IAAK,IAAI,CAAC4D,SAAS,EAAE;AAChE,EAAA;EACA,IAAI5D,QAAQA,CAAC0D,KAAc,EAAA;AACzB,IAAA,IAAI,CAACE,SAAS,CAACC,GAAG,CAACH,KAAK,CAAC;AAC3B,EAAA;EACQE,SAAS,GAAGE,MAAM,CAAC,KAAK;;WAAC;EAGjC,IAAIC,aAAaA,GAAA;AACf,IAAA,OAAO,IAAI,CAACX,oBAAA,GACP,IAAI,CAACF,OAAQ,CAACa,aAAiC,EAAA,GAChD,CAAC,CAAC,IAAI,CAACb,OAAO,EAAEa,aAAa;AACnC,EAAA;EAGA,IAAIC,4BAA4BA,GAAA;IAC9B,OAAO,CAAC,EAAE,IAAI,CAACd,OAAO,IAAI,IAAI,CAACA,OAAO,CAACc,4BAA4B,CAAC;AACtE,EAAA;AAImBC,EAAAA,iBAAiB,GAAG,IAAIC,YAAY,EAA+B;EAGnDC,KAAK;AAG/BC,EAAAA,aAAa,GAAG,IAAIC,OAAO,EAAQ;AAG5C/D,EAAAA,WAAAA,GAAA;AACE,IAAA,MAAMgE,WAAW,GAAGpE,MAAM,CAACqE,sBAAsB,CAAC;AAClDD,IAAAA,WAAW,CAACE,IAAI,CAACC,uBAAuB,CAAC;AACzCH,IAAAA,WAAW,CAACE,IAAI,CAACE,qBAAqB,CAAC;AACvC,IAAA,IAAI,CAACtB,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAACF,OAAO,IAAIyB,QAAQ,CAAC,IAAI,CAACzB,OAAO,CAACa,aAAa,CAAC;AACpF,EAAA;EAQA,IAAIa,MAAMA,GAAA;IACR,OAAO,IAAI,CAACtB,OAAO;AACrB,EAAA;EAMA,IAAIuB,SAASA,GAAA;AAEX,IAAA,OAAO,CAAC,IAAI,CAACV,KAAK,EAAEW,aAAa,CAACC,WAAW,IAAI,EAAE,EAAEC,IAAI,EAAE;AAC7D,EAAA;AAGAC,EAAAA,MAAMA,CAACC,SAAS,GAAG,IAAI,EAAA;AACrB,IAAA,IAAI,CAAC,IAAI,CAAC7B,SAAS,EAAE;MACnB,IAAI,CAACA,SAAS,GAAG,IAAI;AACrB,MAAA,IAAI,CAACL,kBAAkB,CAACmC,YAAY,EAAE;AAEtC,MAAA,IAAID,SAAS,EAAE;QACb,IAAI,CAACE,yBAAyB,EAAE;AAClC,MAAA;AACF,IAAA;AACF,EAAA;AAGAC,EAAAA,QAAQA,CAACH,SAAS,GAAG,IAAI,EAAA;IACvB,IAAI,IAAI,CAAC7B,SAAS,EAAE;MAClB,IAAI,CAACA,SAAS,GAAG,KAAK;AACtB,MAAA,IAAI,CAACL,kBAAkB,CAACmC,YAAY,EAAE;AAEtC,MAAA,IAAID,SAAS,EAAE;QACb,IAAI,CAACE,yBAAyB,EAAE;AAClC,MAAA;AACF,IAAA;AACF,EAAA;AAGAE,EAAAA,KAAKA,CAACC,OAAqB,EAAEC,OAAsB,EAAA;AAGjD,IAAA,MAAMC,OAAO,GAAG,IAAI,CAACC,eAAe,EAAE;AAEtC,IAAA,IAAI,OAAOD,OAAO,CAACH,KAAK,KAAK,UAAU,EAAE;AACvCG,MAAAA,OAAO,CAACH,KAAK,CAACE,OAAO,CAAC;AACxB,IAAA;AACF,EAAA;AAOAG,EAAAA,eAAeA,GAAA;AACb,IAAA,IAAI,CAAC,IAAI,CAACrC,OAAO,EAAE;MACjB,IAAI,CAACA,OAAO,GAAG,IAAI;AACnB,MAAA,IAAI,CAACN,kBAAkB,CAACmC,YAAY,EAAE;AACxC,IAAA;AACF,EAAA;AAOAS,EAAAA,iBAAiBA,GAAA;IACf,IAAI,IAAI,CAACtC,OAAO,EAAE;MAChB,IAAI,CAACA,OAAO,GAAG,KAAK;AACpB,MAAA,IAAI,CAACN,kBAAkB,CAACmC,YAAY,EAAE;AACxC,IAAA;AACF,EAAA;AAGAU,EAAAA,QAAQA,GAAA;IACN,OAAO,IAAI,CAAChB,SAAS;AACvB,EAAA;EAGAiB,cAAcA,CAACC,KAAoB,EAAA;AACjC,IAAA,IAAI,CAACA,KAAK,CAACC,OAAO,KAAKC,KAAK,IAAIF,KAAK,CAACC,OAAO,KAAKE,KAAK,KAAK,CAACC,cAAc,CAACJ,KAAK,CAAC,EAAE;MAClF,IAAI,CAACK,qBAAqB,EAAE;MAG5BL,KAAK,CAACM,cAAc,EAAE;AACxB,IAAA;AACF,EAAA;AAMAD,EAAAA,qBAAqBA,GAAA;AACnB,IAAA,IAAI,CAAC,IAAI,CAACpG,QAAQ,EAAE;AAClB,MAAA,IAAI,CAACqD,SAAS,GAAG,IAAI,CAACG,QAAQ,GAAG,CAAC,IAAI,CAACH,SAAS,GAAG,IAAI;AACvD,MAAA,IAAI,CAACL,kBAAkB,CAACmC,YAAY,EAAE;AACtC,MAAA,IAAI,CAACC,yBAAyB,CAAC,IAAI,CAAC;AACtC,IAAA;AACF,EAAA;AAMAkB,EAAAA,YAAYA,GAAA;AACV,IAAA,OAAO,IAAI,CAACtG,QAAQ,GAAG,IAAI,GAAG,GAAG;AACnC,EAAA;AAGA0F,EAAAA,eAAeA,GAAA;AACb,IAAA,OAAO,IAAI,CAAC5C,QAAQ,CAACgC,aAAa;AACpC,EAAA;AAEAyB,EAAAA,kBAAkBA,GAAA;IAMhB,IAAI,IAAI,CAAClD,SAAS,EAAE;AAClB,MAAA,MAAMwB,SAAS,GAAG,IAAI,CAACA,SAAS;AAEhC,MAAA,IAAIA,SAAS,KAAK,IAAI,CAACtB,oBAAoB,EAAE;QAC3C,IAAI,IAAI,CAACA,oBAAoB,EAAE;AAC7B,UAAA,IAAI,CAACa,aAAa,CAACoC,IAAI,EAAE;AAC3B,QAAA;QAEA,IAAI,CAACjD,oBAAoB,GAAGsB,SAAS;AACvC,MAAA;AACF,IAAA;AACF,EAAA;AAEA4B,EAAAA,WAAWA,GAAA;AACT,IAAA,IAAI,CAACrC,aAAa,CAACsC,QAAQ,EAAE;AAC/B,EAAA;AAGQtB,EAAAA,yBAAyBA,CAACxC,WAAW,GAAG,KAAK,EAAA;AACnD,IAAA,IAAI,CAACqB,iBAAiB,CAAC0C,IAAI,CAAC,IAAIjE,wBAAwB,CAAI,IAAI,EAAEE,WAAW,CAAC,CAAC;AACjF,EAAA;;;;;UAnNWC,SAAS;AAAAnC,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;AAAT,EAAA,OAAAC,IAAA,GAAAH,EAAA,CAAAI,oBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,IAAA,EAAA0B,SAAS;;;;;;yCA4BDtB,gBAAgB;KAAA;AAAAqF,IAAAA,OAAA,EAAA;AAAA3C,MAAAA,iBAAA,EAAA;KAAA;AAAAzC,IAAAA,IAAA,EAAA;AAAAqF,MAAAA,UAAA,EAAA;AAAA,QAAA,MAAA,EAAA;OAAA;AAAAC,MAAAA,SAAA,EAAA;AAAA,QAAA,OAAA,EAAA,yBAAA;AAAA,QAAA,SAAA,EAAA;OAAA;AAAArF,MAAAA,UAAA,EAAA;AAAA,QAAA,+BAAA,EAAA,UAAA;AAAA,QAAA,+BAAA,EAAA,UAAA;AAAA,QAAA,6BAAA,EAAA,QAAA;AAAA,QAAA,+BAAA,EAAA,UAAA;AAAA,QAAA,IAAA,EAAA,IAAA;AAAA,QAAA,oBAAA,EAAA,UAAA;AAAA,QAAA,oBAAA,EAAA;OAAA;AAAAC,MAAAA,cAAA,EAAA;KAAA;AAAAqF,IAAAA,WAAA,EAAA,CAAA;AAAAC,MAAAA,YAAA,EAAA,OAAA;AAAAC,MAAAA,KAAA,EAAA,IAAA;MAAAC,SAAA,EAAA,CAAA,MAAA,CAAA;AAAAC,MAAAA,WAAA,EAAA,IAAA;AAAAC,MAAAA,MAAA,EAAA;AAAA,KAAA,CAAA;IAAA9E,QAAA,EAAA,CAAA,WAAA,CAAA;AAAA+E,IAAAA,QAAA,EAAAzG,EAAA;AAAA2B,IAAAA,QAAA,EC7GrC,w9CAkCA;IAAAT,MAAA,EAAA,CAAA,m1IAAA,CAAA;AAAAwF,IAAAA,YAAA,EAAA,CAAA;AAAAC,MAAAA,IAAA,EAAA,WAAA;AAAApG,MAAAA,IAAA,ED6CYqG,iBAAiB;;;;;YAAEC,SAAS;AAAApG,MAAAA,QAAA,EAAA,2BAAA;AAAAC,MAAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,kBAAA,CAAA;MAAAgB,QAAA,EAAA,CAAA,WAAA;AAAA,KAAA,CAAA;AAAAP,IAAAA,eAAA,EAAAnB,EAAA,CAAAoB,uBAAA,CAAAC,MAAA;AAAAC,IAAAA,aAAA,EAAAtB,EAAA,CAAAuB,iBAAA,CAAAC;AAAA,GAAA,CAAA;;;;;;QAE3BS,SAAS;AAAAR,EAAAA,UAAA,EAAA,CAAA;UA/BrBvB,SAAS;;gBACE,YAAY;AAAAwB,MAAAA,QAAA,EACZ,WAAW;AAAAd,MAAAA,IAAA,EACf;AACJ,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,iCAAiC,EAAE,UAAU;AAC7C,QAAA,iCAAiC,EAAE,UAAU;AAC7C,QAAA,+BAA+B,EAAE,QAAQ;AACzC,QAAA,iCAAiC,EAAE,UAAU;AAC7C,QAAA,MAAM,EAAE,IAAI;AAUZ,QAAA,sBAAsB,EAAE,UAAU;AAClC,QAAA,sBAAsB,EAAE,qBAAqB;AAC7C,QAAA,SAAS,EAAE,yBAAyB;AACpC,QAAA,WAAW,EAAE,wBAAwB;AACrC,QAAA,OAAO,EAAE;OACV;MAAAU,aAAA,EAGcC,iBAAiB,CAACC,IAAI;MAAAL,eAAA,EACpBC,uBAAuB,CAACC,MAAM;AAAAyF,MAAAA,OAAA,EACtC,CAACF,iBAAiB,EAAEC,SAAS,CAAC;AAAAlF,MAAAA,QAAA,EAAA,w9CAAA;MAAAT,MAAA,EAAA,CAAA,m1IAAA;KAAA;;;;;YAwBtCU;;;YAGAA;;;YAGAA,KAAK;aAAC;AAACC,QAAAA,SAAS,EAAElB;OAAiB;;;YAuBnCoG;;;YAGAC,SAAS;MAACC,IAAA,EAAA,CAAA,MAAM,EAAE;AAACT,QAAAA,MAAM,EAAE;OAAK;;;;SAuKnBU,6BAA6BA,CAC3CC,WAAmB,EACnBvC,OAA6B,EAC7BwC,YAAoC,EAAA;EAEpC,IAAIA,YAAY,CAACC,MAAM,EAAE;AACvB,IAAA,IAAIC,YAAY,GAAG1C,OAAO,CAAC2C,OAAO,EAAE;AACpC,IAAA,IAAIC,MAAM,GAAGJ,YAAY,CAACG,OAAO,EAAE;IACnC,IAAIE,YAAY,GAAG,CAAC;AAEpB,IAAA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGP,WAAW,GAAG,CAAC,EAAEO,CAAC,EAAE,EAAE;AACxC,MAAA,IAAIJ,YAAY,CAACI,CAAC,CAAC,CAACnF,KAAK,IAAI+E,YAAY,CAACI,CAAC,CAAC,CAACnF,KAAK,KAAKiF,MAAM,CAACC,YAAY,CAAC,EAAE;AAC3EA,QAAAA,YAAY,EAAE;AAChB,MAAA;AACF,IAAA;AAEA,IAAA,OAAOA,YAAY;AACrB,EAAA;AAEA,EAAA,OAAO,CAAC;AACV;AAUM,SAAUE,wBAAwBA,CACtCC,YAAoB,EACpBC,YAAoB,EACpBC,qBAA6B,EAC7BC,WAAmB,EAAA;EAEnB,IAAIH,YAAY,GAAGE,qBAAqB,EAAE;AACxC,IAAA,OAAOF,YAAY;AACrB,EAAA;AAEA,EAAA,IAAIA,YAAY,GAAGC,YAAY,GAAGC,qBAAqB,GAAGC,WAAW,EAAE;IACrE,OAAOC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEL,YAAY,GAAGG,WAAW,GAAGF,YAAY,CAAC;AAC/D,EAAA;AAEA,EAAA,OAAOC,qBAAqB;AAC9B;;;;"}
{"version":3,"file":"_option-chunk.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/core/option/option-parent.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/core/option/optgroup.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/core/option/optgroup.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/core/option/option.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/core/option/option.html"],"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\nimport {InjectionToken, Signal} from '@angular/core';\n\n/**\n * Describes a parent component that manages a list of options.\n * Contains properties that the options can inherit.\n * @docs-private\n */\nexport interface MatOptionParentComponent {\n disableRipple?: boolean | Signal<boolean>;\n multiple?: boolean;\n inertGroups?: boolean;\n hideSingleSelectionIndicator?: boolean;\n}\n\n/**\n * Injection token used to provide the parent component to options.\n */\nexport const MAT_OPTION_PARENT_COMPONENT = new InjectionToken<MatOptionParentComponent>(\n 'MAT_OPTION_PARENT_COMPONENT',\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 Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n Input,\n InjectionToken,\n booleanAttribute,\n inject,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {MatOptionParentComponent, MAT_OPTION_PARENT_COMPONENT} from './option-parent';\n\n// Notes on the accessibility pattern used for `mat-optgroup`.\n// The option group has two different \"modes\": regular and inert. The regular mode uses the\n// recommended a11y pattern which has `role=\"group\"` on the group element with `aria-labelledby`\n// pointing to the label. This works for `mat-select`, but it seems to hit a bug for autocomplete\n// under VoiceOver where the group doesn't get read out at all. The bug appears to be that if\n// there's __any__ a11y-related attribute on the group (e.g. `role` or `aria-labelledby`),\n// VoiceOver on Safari won't read it out.\n// We've introduced the `inert` mode as a workaround. Under this mode, all a11y attributes are\n// removed from the group, and we get the screen reader to read out the group label by mirroring it\n// inside an invisible element in the option. This is sub-optimal, because the screen reader will\n// repeat the group label on each navigation, whereas the default pattern only reads the group when\n// the user enters a new group. The following alternate approaches were considered:\n// 1. Reading out the group label using the `LiveAnnouncer` solves the problem, but we can't control\n// when the text will be read out so sometimes it comes in too late or never if the user\n// navigates quickly.\n// 2. `<mat-option aria-describedby=\"groupLabel\"` - This works on Safari, but VoiceOver in Chrome\n// won't read out the description at all.\n// 3. `<mat-option aria-labelledby=\"optionLabel groupLabel\"` - This works on Chrome, but Safari\n// doesn't read out the text at all. Furthermore, on\n\n/**\n * Injection token that can be used to reference instances of `MatOptgroup`. It serves as\n * alternative token to the actual `MatOptgroup` class which could cause unnecessary\n * retention of the class and its component metadata.\n */\nexport const MAT_OPTGROUP = new InjectionToken<MatOptgroup>('MatOptgroup');\n\n/**\n * Component that is used to group instances of `mat-option`.\n */\n@Component({\n selector: 'mat-optgroup',\n exportAs: 'matOptgroup',\n templateUrl: 'optgroup.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: 'optgroup.css',\n host: {\n 'class': 'mat-mdc-optgroup',\n '[attr.role]': '_inert ? null : \"group\"',\n '[attr.aria-disabled]': '_inert ? null : disabled.toString()',\n '[attr.aria-labelledby]': '_inert ? null : _labelId',\n },\n providers: [{provide: MAT_OPTGROUP, useExisting: MatOptgroup}],\n})\nexport class MatOptgroup {\n /** Label for the option group. */\n @Input() label!: string;\n\n /** whether the option group is disabled. */\n @Input({transform: booleanAttribute}) disabled: boolean = false;\n\n /** Unique id for the underlying label. */\n _labelId: string = inject(_IdGenerator).getId('mat-optgroup-label-');\n\n /** Whether the group is in inert a11y mode. */\n _inert: boolean;\n\n constructor(...args: unknown[]);\n\n constructor() {\n const parent = inject<MatOptionParentComponent>(MAT_OPTION_PARENT_COMPONENT, {optional: true});\n this._inert = parent?.inertGroups ?? false;\n }\n}\n","<span\n class=\"mat-mdc-optgroup-label\"\n role=\"presentation\"\n [class.mdc-list-item--disabled]=\"disabled\"\n [id]=\"_labelId\">\n <span class=\"mdc-list-item__primary-text\">{{ label }} <ng-content></ng-content></span>\n</span>\n\n<ng-content select=\"mat-option, ng-container\"></ng-content>\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 {_IdGenerator, FocusableOption, FocusOrigin} from '@angular/cdk/a11y';\nimport {ENTER, hasModifierKey, SPACE} from '@angular/cdk/keycodes';\nimport {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ElementRef,\n ChangeDetectorRef,\n AfterViewChecked,\n OnDestroy,\n Input,\n Output,\n EventEmitter,\n QueryList,\n ViewChild,\n booleanAttribute,\n inject,\n isSignal,\n Signal,\n signal,\n} from '@angular/core';\nimport {Subject} from 'rxjs';\nimport {MAT_OPTGROUP, MatOptgroup} from './optgroup';\nimport {MatOptionParentComponent, MAT_OPTION_PARENT_COMPONENT} from './option-parent';\nimport {MatRipple} from '../ripple/ripple';\nimport {MatPseudoCheckbox} from '../selection/pseudo-checkbox/pseudo-checkbox';\nimport {_StructuralStylesLoader} from '../focus-indicators/structural-styles';\nimport {_CdkPrivateStyleLoader, _VisuallyHiddenLoader} from '@angular/cdk/private';\n\n/** Event object emitted by MatOption when selected or deselected. */\nexport class MatOptionSelectionChange<T = any> {\n constructor(\n /** Reference to the option that emitted the event. */\n public source: MatOption<T>,\n /** Whether the change in the option's value was a result of a user action. */\n public isUserInput = false,\n ) {}\n}\n\n/**\n * Single option inside of a `<mat-select>` element.\n */\n@Component({\n selector: 'mat-option',\n exportAs: 'matOption',\n host: {\n 'role': 'option',\n '[class.mdc-list-item--selected]': 'selected',\n '[class.mat-mdc-option-multiple]': 'multiple',\n '[class.mat-mdc-option-active]': 'active',\n '[class.mdc-list-item--disabled]': 'disabled',\n '[id]': 'id',\n // Set aria-selected to false for non-selected items and true for selected items. Conform to\n // [WAI ARIA Listbox authoring practices guide](\n // https://www.w3.org/WAI/ARIA/apg/patterns/listbox/), \"If any options are selected, each\n // selected option has either aria-selected or aria-checked set to true. All options that are\n // selectable but not selected have either aria-selected or aria-checked set to false.\" Align\n // aria-selected implementation of Chips and List components.\n //\n // Set `aria-selected=\"false\"` on not-selected listbox options to fix VoiceOver announcing\n // every option as \"selected\" (#21491).\n '[attr.aria-selected]': 'selected',\n '[attr.aria-disabled]': 'disabled.toString()',\n '(click)': '_selectViaInteraction()',\n '(keydown)': '_handleKeydown($event)',\n 'class': 'mat-mdc-option mdc-list-item',\n },\n styleUrl: 'option.css',\n templateUrl: 'option.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatPseudoCheckbox, MatRipple],\n})\nexport class MatOption<T = any> implements FocusableOption, AfterViewChecked, OnDestroy {\n private _element = inject<ElementRef<HTMLElement>>(ElementRef);\n _changeDetectorRef = inject(ChangeDetectorRef);\n private _parent = inject<MatOptionParentComponent>(MAT_OPTION_PARENT_COMPONENT, {optional: true});\n group = inject<MatOptgroup>(MAT_OPTGROUP, {optional: true});\n\n private _signalDisableRipple = false;\n private _selected = false;\n private _active = false;\n private _mostRecentViewValue = '';\n\n /** Whether the wrapping component is in multiple selection mode. */\n get multiple() {\n return this._parent && this._parent.multiple;\n }\n\n /** Whether or not the option is currently selected. */\n get selected(): boolean {\n return this._selected;\n }\n\n /** The form value of the option. */\n @Input() value!: T;\n\n /** The unique ID of the option. */\n @Input() id: string = inject(_IdGenerator).getId('mat-option-');\n\n /** Whether the option is disabled. */\n @Input({transform: booleanAttribute})\n get disabled(): boolean {\n return (this.group && this.group.disabled) || this._disabled();\n }\n set disabled(value: boolean) {\n this._disabled.set(value);\n }\n private _disabled = signal(false);\n\n /** Whether ripples for the option are disabled. */\n get disableRipple(): boolean {\n return this._signalDisableRipple\n ? (this._parent!.disableRipple as Signal<boolean>)()\n : !!this._parent?.disableRipple;\n }\n\n /** Whether to display checkmark for single-selection. */\n get hideSingleSelectionIndicator(): boolean {\n return !!(this._parent && this._parent.hideSingleSelectionIndicator);\n }\n\n /** Event emitted when the option is selected or deselected. */\n // tslint:disable-next-line:no-output-on-prefix\n @Output() readonly onSelectionChange = new EventEmitter<MatOptionSelectionChange<T>>();\n\n /** Element containing the option's text. */\n @ViewChild('text', {static: true}) _text: ElementRef<HTMLElement> | undefined;\n\n /** Emits when the state of the option changes and any parents have to be notified. */\n readonly _stateChanges = new Subject<void>();\n\n constructor(...args: unknown[]);\n constructor() {\n const styleLoader = inject(_CdkPrivateStyleLoader);\n styleLoader.load(_StructuralStylesLoader);\n styleLoader.load(_VisuallyHiddenLoader);\n this._signalDisableRipple = !!this._parent && isSignal(this._parent.disableRipple);\n }\n\n /**\n * Whether or not the option is currently active and ready to be selected.\n * An active option displays styles as if it is focused, but the\n * focus is actually retained somewhere else. This comes in handy\n * for components like autocomplete where focus must remain on the input.\n */\n get active(): boolean {\n return this._active;\n }\n\n /**\n * The displayed value of the option. It is necessary to show the selected option in the\n * select's trigger.\n */\n get viewValue(): string {\n // TODO(kara): Add input property alternative for node envs.\n return (this._text?.nativeElement.textContent || '').trim();\n }\n\n /** Selects the option. */\n select(emitEvent = true): void {\n if (!this._selected) {\n this._selected = true;\n this._changeDetectorRef.markForCheck();\n\n if (emitEvent) {\n this._emitSelectionChangeEvent();\n }\n }\n }\n\n /** Deselects the option. */\n deselect(emitEvent = true): void {\n if (this._selected) {\n this._selected = false;\n this._changeDetectorRef.markForCheck();\n\n if (emitEvent) {\n this._emitSelectionChangeEvent();\n }\n }\n }\n\n /** Sets focus onto this option. */\n focus(_origin?: FocusOrigin, options?: FocusOptions): void {\n // Note that we aren't using `_origin`, but we need to keep it because some internal consumers\n // use `MatOption` in a `FocusKeyManager` and we need it to match `FocusableOption`.\n const element = this._getHostElement();\n\n if (typeof element.focus === 'function') {\n element.focus(options);\n }\n }\n\n /**\n * This method sets display styles on the option to make it appear\n * active. This is used by the ActiveDescendantKeyManager so key\n * events will display the proper options as active on arrow key events.\n */\n setActiveStyles(): void {\n if (!this._active) {\n this._active = true;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * This method removes display styles on the option that made it appear\n * active. This is used by the ActiveDescendantKeyManager so key\n * events will display the proper options as active on arrow key events.\n */\n setInactiveStyles(): void {\n if (this._active) {\n this._active = false;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /** Gets the label to be used when determining whether the option should be focused. */\n getLabel(): string {\n return this.viewValue;\n }\n\n /** Ensures the option is selected when activated from the keyboard. */\n _handleKeydown(event: KeyboardEvent): void {\n if ((event.keyCode === ENTER || event.keyCode === SPACE) && !hasModifierKey(event)) {\n this._selectViaInteraction();\n\n // Prevent the page from scrolling down and form submits.\n event.preventDefault();\n }\n }\n\n /**\n * `Selects the option while indicating the selection came from the user. Used to\n * determine if the select's view -> model callback should be invoked.`\n */\n _selectViaInteraction(): void {\n if (!this.disabled) {\n this._selected = this.multiple ? !this._selected : true;\n this._changeDetectorRef.markForCheck();\n this._emitSelectionChangeEvent(true);\n }\n }\n\n /** Returns the correct tabindex for the option depending on disabled state. */\n // This method is only used by `MatLegacyOption`. Keeping it here to avoid breaking the types.\n // That's because `MatLegacyOption` use `MatOption` type in a few places such as\n // `MatOptionSelectionChange`. It is safe to delete this when `MatLegacyOption` is deleted.\n _getTabIndex(): string {\n return this.disabled ? '-1' : '0';\n }\n\n /** Gets the host DOM element. */\n _getHostElement(): HTMLElement {\n return this._element.nativeElement;\n }\n\n ngAfterViewChecked() {\n // Since parent components could be using the option's label to display the selected values\n // (e.g. `mat-select`) and they don't have a way of knowing if the option's label has changed\n // we have to check for changes in the DOM ourselves and dispatch an event. These checks are\n // relatively cheap, however we still limit them only to selected options in order to avoid\n // hitting the DOM too often.\n if (this._selected) {\n const viewValue = this.viewValue;\n\n if (viewValue !== this._mostRecentViewValue) {\n if (this._mostRecentViewValue) {\n this._stateChanges.next();\n }\n\n this._mostRecentViewValue = viewValue;\n }\n }\n }\n\n ngOnDestroy() {\n this._stateChanges.complete();\n }\n\n /** Emits the selection change event. */\n private _emitSelectionChangeEvent(isUserInput = false): void {\n this.onSelectionChange.emit(new MatOptionSelectionChange<T>(this, isUserInput));\n }\n}\n\n/**\n * Counts the amount of option group labels that precede the specified option.\n * @param optionIndex Index of the option at which to start counting.\n * @param options Flat list of all of the options.\n * @param optionGroups Flat list of all of the option groups.\n * @docs-private\n */\nexport function _countGroupLabelsBeforeOption(\n optionIndex: number,\n options: QueryList<MatOption>,\n optionGroups: QueryList<MatOptgroup>,\n): number {\n if (optionGroups.length) {\n let optionsArray = options.toArray();\n let groups = optionGroups.toArray();\n let groupCounter = 0;\n\n for (let i = 0; i < optionIndex + 1; i++) {\n if (optionsArray[i].group && optionsArray[i].group === groups[groupCounter]) {\n groupCounter++;\n }\n }\n\n return groupCounter;\n }\n\n return 0;\n}\n\n/**\n * Determines the position to which to scroll a panel in order for an option to be into view.\n * @param optionOffset Offset of the option from the top of the panel.\n * @param optionHeight Height of the options.\n * @param currentScrollPosition Current scroll position of the panel.\n * @param panelHeight Height of the panel.\n * @docs-private\n */\nexport function _getOptionScrollPosition(\n optionOffset: number,\n optionHeight: number,\n currentScrollPosition: number,\n panelHeight: number,\n): number {\n if (optionOffset < currentScrollPosition) {\n return optionOffset;\n }\n\n if (optionOffset + optionHeight > currentScrollPosition + panelHeight) {\n return Math.max(0, optionOffset - panelHeight + optionHeight);\n }\n\n return currentScrollPosition;\n}\n","<!-- Set aria-hidden=\"true\" to this DOM node and other decorative nodes in this file. This might\n be contributing to issue where sometimes VoiceOver focuses on a TextNode in the a11y tree instead\n of the Option node (#23202). Most assistive technology will generally ignore non-role,\n non-text-content elements. Adding aria-hidden seems to make VoiceOver behave more consistently. -->\n@if (multiple) {\n <mat-pseudo-checkbox\n class=\"mat-mdc-option-pseudo-checkbox\"\n [disabled]=\"disabled\"\n [state]=\"selected ? 'checked' : 'unchecked'\"\n aria-hidden=\"true\"></mat-pseudo-checkbox>\n}\n\n<ng-content select=\"mat-icon\"></ng-content>\n\n<span class=\"mdc-list-item__primary-text\" #text><ng-content></ng-content></span>\n\n<!-- Render checkmark at the end for single-selection. -->\n@if (!multiple && selected && !hideSingleSelectionIndicator) {\n <mat-pseudo-checkbox\n class=\"mat-mdc-option-pseudo-checkbox\"\n [disabled]=\"disabled\"\n state=\"checked\"\n aria-hidden=\"true\"\n appearance=\"minimal\"></mat-pseudo-checkbox>\n}\n\n<!-- See a11y notes inside optgroup.ts for context behind this element. -->\n@if (group && group._inert) {\n <span class=\"cdk-visually-hidden\">({{ group.label }})</span>\n}\n\n<div class=\"mat-mdc-option-ripple mat-focus-indicator\" aria-hidden=\"true\" mat-ripple\n [matRippleTrigger]=\"_getHostElement()\" [matRippleDisabled]=\"disabled || disableRipple\">\n</div>\n"],"names":["MAT_OPTION_PARENT_COMPONENT","InjectionToken","MAT_OPTGROUP","MatOptgroup","label","disabled","_labelId","inject","_IdGenerator","getId","_inert","constructor","parent","optional","inertGroups","deps","target","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","isStandalone","selector","inputs","booleanAttribute","host","properties","classAttribute","providers","provide","useExisting","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","exportAs","template","Input","transform","MatOptionSelectionChange","source","isUserInput","MatOption","_element","ElementRef","_changeDetectorRef","ChangeDetectorRef","_parent","group","_signalDisableRipple","_selected","_active","_mostRecentViewValue","multiple","selected","value","id","_disabled","set","signal","disableRipple","hideSingleSelectionIndicator","onSelectionChange","EventEmitter","_text","_stateChanges","Subject","styleLoader","_CdkPrivateStyleLoader","load","_StructuralStylesLoader","_VisuallyHiddenLoader","isSignal","active","viewValue","nativeElement","textContent","trim","select","emitEvent","markForCheck","_emitSelectionChangeEvent","deselect","focus","_origin","options","element","_getHostElement","setActiveStyles","setInactiveStyles","getLabel","_handleKeydown","event","keyCode","ENTER","SPACE","hasModifierKey","_selectViaInteraction","preventDefault","_getTabIndex","ngAfterViewChecked","next","ngOnDestroy","complete","emit","outputs","attributes","listeners","viewQueries","propertyName","first","predicate","descendants","static","ngImport","dependencies","kind","MatPseudoCheckbox","MatRipple","imports","Output","ViewChild","args","_countGroupLabelsBeforeOption","optionIndex","optionGroups","length","optionsArray","toArray","groups","groupCounter","i","_getOptionScrollPosition","optionOffset","optionHeight","currentScrollPosition","panelHeight","Math","max"],"mappings":";;;;;;;;;;MAyBaA,2BAA2B,GAAG,IAAIC,cAAc,CAC3D,6BAA6B;;MCmBlBC,YAAY,GAAG,IAAID,cAAc,CAAc,aAAa;MAoB5DE,WAAW,CAAA;EAEbC,KAAK;AAGwBC,EAAAA,QAAQ,GAAY,KAAK;EAG/DC,QAAQ,GAAWC,MAAM,CAACC,YAAY,CAAC,CAACC,KAAK,CAAC,qBAAqB,CAAC;EAGpEC,MAAM;AAINC,EAAAA,WAAAA,GAAA;AACE,IAAA,MAAMC,MAAM,GAAGL,MAAM,CAA2BP,2BAA2B,EAAE;AAACa,MAAAA,QAAQ,EAAE;AAAI,KAAC,CAAC;AAC9F,IAAA,IAAI,CAACH,MAAM,GAAGE,MAAM,EAAEE,WAAW,IAAI,KAAK;AAC5C,EAAA;;;;;UAlBWX,WAAW;AAAAY,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;AAAX,EAAA,OAAAC,IAAA,GAAAH,EAAA,CAAAI,oBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,IAAA,EAAArB,WAAW;AAAAsB,IAAAA,YAAA,EAAA,IAAA;AAAAC,IAAAA,QAAA,EAAA,cAAA;AAAAC,IAAAA,MAAA,EAAA;AAAAvB,MAAAA,KAAA,EAAA,OAAA;AAAAC,MAAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAKHuB,gBAAgB;KAAA;AAAAC,IAAAA,IAAA,EAAA;AAAAC,MAAAA,UAAA,EAAA;AAAA,QAAA,WAAA,EAAA,2BAAA;AAAA,QAAA,oBAAA,EAAA,qCAAA;AAAA,QAAA,sBAAA,EAAA;OAAA;AAAAC,MAAAA,cAAA,EAAA;KAAA;AAAAC,IAAAA,SAAA,EAPxB,CAAC;AAACC,MAAAA,OAAO,EAAE/B,YAAY;AAAEgC,MAAAA,WAAW,EAAE/B;AAAW,KAAC,CAAC;;;cC/DhE,kTASA;IAAAgC,MAAA,EAAA,CAAA,4mCAAA,CAAA;AAAAC,IAAAA,eAAA,EAAAnB,EAAA,CAAAoB,uBAAA,CAAAC,MAAA;AAAAC,IAAAA,aAAA,EAAAtB,EAAA,CAAAuB,iBAAA,CAAAC;AAAA,GAAA,CAAA;;;;;;QDwDatC,WAAW;AAAAuC,EAAAA,UAAA,EAAA,CAAA;UAfvBvB,SAAS;;gBACE,cAAc;AAAAwB,MAAAA,QAAA,EACd,aAAa;MAAAJ,aAAA,EAERC,iBAAiB,CAACC,IAAI;MAAAL,eAAA,EACpBC,uBAAuB,CAACC,MAAM;AAAAT,MAAAA,IAAA,EAEzC;AACJ,QAAA,OAAO,EAAE,kBAAkB;AAC3B,QAAA,aAAa,EAAE,yBAAyB;AACxC,QAAA,sBAAsB,EAAE,qCAAqC;AAC7D,QAAA,wBAAwB,EAAE;OAC3B;AAAAG,MAAAA,SAAA,EACU,CAAC;AAACC,QAAAA,OAAO,EAAE/B,YAAY;AAAEgC,QAAAA,WAAW,EAAA/B;AAAa,OAAC,CAAC;AAAAyC,MAAAA,QAAA,EAAA,kTAAA;MAAAT,MAAA,EAAA,CAAA,4mCAAA;KAAA;;;;;YAI7DU;;;YAGAA,KAAK;aAAC;AAACC,QAAAA,SAAS,EAAElB;OAAiB;;;;;MEhCzBmB,wBAAwB,CAAA;EAG1BC,MAAA;EAEAC,WAAA;AAJTtC,EAAAA,WAAAA,CAESqC,MAAoB,EAEpBC,WAAA,GAAc,KAAK,EAAA;IAFnB,IAAA,CAAAD,MAAM,GAANA,MAAM;IAEN,IAAA,CAAAC,WAAW,GAAXA,WAAW;AACjB,EAAA;AACJ;MAoCYC,SAAS,CAAA;AACZC,EAAAA,QAAQ,GAAG5C,MAAM,CAA0B6C,UAAU,CAAC;AAC9DC,EAAAA,kBAAkB,GAAG9C,MAAM,CAAC+C,iBAAiB,CAAC;AACtCC,EAAAA,OAAO,GAAGhD,MAAM,CAA2BP,2BAA2B,EAAE;AAACa,IAAAA,QAAQ,EAAE;AAAI,GAAC,CAAC;AACjG2C,EAAAA,KAAK,GAAGjD,MAAM,CAAcL,YAAY,EAAE;AAACW,IAAAA,QAAQ,EAAE;AAAI,GAAC,CAAC;AAEnD4C,EAAAA,oBAAoB,GAAG,KAAK;AAC5BC,EAAAA,SAAS,GAAG,KAAK;AACjBC,EAAAA,OAAO,GAAG,KAAK;AACfC,EAAAA,oBAAoB,GAAG,EAAE;EAGjC,IAAIC,QAAQA,GAAA;IACV,OAAO,IAAI,CAACN,OAAO,IAAI,IAAI,CAACA,OAAO,CAACM,QAAQ;AAC9C,EAAA;EAGA,IAAIC,QAAQA,GAAA;IACV,OAAO,IAAI,CAACJ,SAAS;AACvB,EAAA;EAGSK,KAAK;EAGLC,EAAE,GAAWzD,MAAM,CAACC,YAAY,CAAC,CAACC,KAAK,CAAC,aAAa,CAAC;EAG/D,IACIJ,QAAQA,GAAA;AACV,IAAA,OAAQ,IAAI,CAACmD,KAAK,IAAI,IAAI,CAACA,KAAK,CAACnD,QAAQ,IAAK,IAAI,CAAC4D,SAAS,EAAE;AAChE,EAAA;EACA,IAAI5D,QAAQA,CAAC0D,KAAc,EAAA;AACzB,IAAA,IAAI,CAACE,SAAS,CAACC,GAAG,CAACH,KAAK,CAAC;AAC3B,EAAA;EACQE,SAAS,GAAGE,MAAM,CAAC,KAAK;;WAAC;EAGjC,IAAIC,aAAaA,GAAA;AACf,IAAA,OAAO,IAAI,CAACX,oBAAA,GACP,IAAI,CAACF,OAAQ,CAACa,aAAiC,EAAA,GAChD,CAAC,CAAC,IAAI,CAACb,OAAO,EAAEa,aAAa;AACnC,EAAA;EAGA,IAAIC,4BAA4BA,GAAA;IAC9B,OAAO,CAAC,EAAE,IAAI,CAACd,OAAO,IAAI,IAAI,CAACA,OAAO,CAACc,4BAA4B,CAAC;AACtE,EAAA;AAImBC,EAAAA,iBAAiB,GAAG,IAAIC,YAAY,EAA+B;EAGnDC,KAAK;AAG/BC,EAAAA,aAAa,GAAG,IAAIC,OAAO,EAAQ;AAG5C/D,EAAAA,WAAAA,GAAA;AACE,IAAA,MAAMgE,WAAW,GAAGpE,MAAM,CAACqE,sBAAsB,CAAC;AAClDD,IAAAA,WAAW,CAACE,IAAI,CAACC,uBAAuB,CAAC;AACzCH,IAAAA,WAAW,CAACE,IAAI,CAACE,qBAAqB,CAAC;AACvC,IAAA,IAAI,CAACtB,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAACF,OAAO,IAAIyB,QAAQ,CAAC,IAAI,CAACzB,OAAO,CAACa,aAAa,CAAC;AACpF,EAAA;EAQA,IAAIa,MAAMA,GAAA;IACR,OAAO,IAAI,CAACtB,OAAO;AACrB,EAAA;EAMA,IAAIuB,SAASA,GAAA;AAEX,IAAA,OAAO,CAAC,IAAI,CAACV,KAAK,EAAEW,aAAa,CAACC,WAAW,IAAI,EAAE,EAAEC,IAAI,EAAE;AAC7D,EAAA;AAGAC,EAAAA,MAAMA,CAACC,SAAS,GAAG,IAAI,EAAA;AACrB,IAAA,IAAI,CAAC,IAAI,CAAC7B,SAAS,EAAE;MACnB,IAAI,CAACA,SAAS,GAAG,IAAI;AACrB,MAAA,IAAI,CAACL,kBAAkB,CAACmC,YAAY,EAAE;AAEtC,MAAA,IAAID,SAAS,EAAE;QACb,IAAI,CAACE,yBAAyB,EAAE;AAClC,MAAA;AACF,IAAA;AACF,EAAA;AAGAC,EAAAA,QAAQA,CAACH,SAAS,GAAG,IAAI,EAAA;IACvB,IAAI,IAAI,CAAC7B,SAAS,EAAE;MAClB,IAAI,CAACA,SAAS,GAAG,KAAK;AACtB,MAAA,IAAI,CAACL,kBAAkB,CAACmC,YAAY,EAAE;AAEtC,MAAA,IAAID,SAAS,EAAE;QACb,IAAI,CAACE,yBAAyB,EAAE;AAClC,MAAA;AACF,IAAA;AACF,EAAA;AAGAE,EAAAA,KAAKA,CAACC,OAAqB,EAAEC,OAAsB,EAAA;AAGjD,IAAA,MAAMC,OAAO,GAAG,IAAI,CAACC,eAAe,EAAE;AAEtC,IAAA,IAAI,OAAOD,OAAO,CAACH,KAAK,KAAK,UAAU,EAAE;AACvCG,MAAAA,OAAO,CAACH,KAAK,CAACE,OAAO,CAAC;AACxB,IAAA;AACF,EAAA;AAOAG,EAAAA,eAAeA,GAAA;AACb,IAAA,IAAI,CAAC,IAAI,CAACrC,OAAO,EAAE;MACjB,IAAI,CAACA,OAAO,GAAG,IAAI;AACnB,MAAA,IAAI,CAACN,kBAAkB,CAACmC,YAAY,EAAE;AACxC,IAAA;AACF,EAAA;AAOAS,EAAAA,iBAAiBA,GAAA;IACf,IAAI,IAAI,CAACtC,OAAO,EAAE;MAChB,IAAI,CAACA,OAAO,GAAG,KAAK;AACpB,MAAA,IAAI,CAACN,kBAAkB,CAACmC,YAAY,EAAE;AACxC,IAAA;AACF,EAAA;AAGAU,EAAAA,QAAQA,GAAA;IACN,OAAO,IAAI,CAAChB,SAAS;AACvB,EAAA;EAGAiB,cAAcA,CAACC,KAAoB,EAAA;AACjC,IAAA,IAAI,CAACA,KAAK,CAACC,OAAO,KAAKC,KAAK,IAAIF,KAAK,CAACC,OAAO,KAAKE,KAAK,KAAK,CAACC,cAAc,CAACJ,KAAK,CAAC,EAAE;MAClF,IAAI,CAACK,qBAAqB,EAAE;MAG5BL,KAAK,CAACM,cAAc,EAAE;AACxB,IAAA;AACF,EAAA;AAMAD,EAAAA,qBAAqBA,GAAA;AACnB,IAAA,IAAI,CAAC,IAAI,CAACpG,QAAQ,EAAE;AAClB,MAAA,IAAI,CAACqD,SAAS,GAAG,IAAI,CAACG,QAAQ,GAAG,CAAC,IAAI,CAACH,SAAS,GAAG,IAAI;AACvD,MAAA,IAAI,CAACL,kBAAkB,CAACmC,YAAY,EAAE;AACtC,MAAA,IAAI,CAACC,yBAAyB,CAAC,IAAI,CAAC;AACtC,IAAA;AACF,EAAA;AAMAkB,EAAAA,YAAYA,GAAA;AACV,IAAA,OAAO,IAAI,CAACtG,QAAQ,GAAG,IAAI,GAAG,GAAG;AACnC,EAAA;AAGA0F,EAAAA,eAAeA,GAAA;AACb,IAAA,OAAO,IAAI,CAAC5C,QAAQ,CAACgC,aAAa;AACpC,EAAA;AAEAyB,EAAAA,kBAAkBA,GAAA;IAMhB,IAAI,IAAI,CAAClD,SAAS,EAAE;AAClB,MAAA,MAAMwB,SAAS,GAAG,IAAI,CAACA,SAAS;AAEhC,MAAA,IAAIA,SAAS,KAAK,IAAI,CAACtB,oBAAoB,EAAE;QAC3C,IAAI,IAAI,CAACA,oBAAoB,EAAE;AAC7B,UAAA,IAAI,CAACa,aAAa,CAACoC,IAAI,EAAE;AAC3B,QAAA;QAEA,IAAI,CAACjD,oBAAoB,GAAGsB,SAAS;AACvC,MAAA;AACF,IAAA;AACF,EAAA;AAEA4B,EAAAA,WAAWA,GAAA;AACT,IAAA,IAAI,CAACrC,aAAa,CAACsC,QAAQ,EAAE;AAC/B,EAAA;AAGQtB,EAAAA,yBAAyBA,CAACxC,WAAW,GAAG,KAAK,EAAA;AACnD,IAAA,IAAI,CAACqB,iBAAiB,CAAC0C,IAAI,CAAC,IAAIjE,wBAAwB,CAAI,IAAI,EAAEE,WAAW,CAAC,CAAC;AACjF,EAAA;;;;;UAnNWC,SAAS;AAAAnC,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;AAAT,EAAA,OAAAC,IAAA,GAAAH,EAAA,CAAAI,oBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,IAAA,EAAA0B,SAAS;;;;;;yCA4BDtB,gBAAgB;KAAA;AAAAqF,IAAAA,OAAA,EAAA;AAAA3C,MAAAA,iBAAA,EAAA;KAAA;AAAAzC,IAAAA,IAAA,EAAA;AAAAqF,MAAAA,UAAA,EAAA;AAAA,QAAA,MAAA,EAAA;OAAA;AAAAC,MAAAA,SAAA,EAAA;AAAA,QAAA,OAAA,EAAA,yBAAA;AAAA,QAAA,SAAA,EAAA;OAAA;AAAArF,MAAAA,UAAA,EAAA;AAAA,QAAA,+BAAA,EAAA,UAAA;AAAA,QAAA,+BAAA,EAAA,UAAA;AAAA,QAAA,6BAAA,EAAA,QAAA;AAAA,QAAA,+BAAA,EAAA,UAAA;AAAA,QAAA,IAAA,EAAA,IAAA;AAAA,QAAA,oBAAA,EAAA,UAAA;AAAA,QAAA,oBAAA,EAAA;OAAA;AAAAC,MAAAA,cAAA,EAAA;KAAA;AAAAqF,IAAAA,WAAA,EAAA,CAAA;AAAAC,MAAAA,YAAA,EAAA,OAAA;AAAAC,MAAAA,KAAA,EAAA,IAAA;MAAAC,SAAA,EAAA,CAAA,MAAA,CAAA;AAAAC,MAAAA,WAAA,EAAA,IAAA;AAAAC,MAAAA,MAAA,EAAA;AAAA,KAAA,CAAA;IAAA9E,QAAA,EAAA,CAAA,WAAA,CAAA;AAAA+E,IAAAA,QAAA,EAAAzG,EAAA;AAAA2B,IAAAA,QAAA,EC7GrC,w9CAkCA;IAAAT,MAAA,EAAA,CAAA,m1IAAA,CAAA;AAAAwF,IAAAA,YAAA,EAAA,CAAA;AAAAC,MAAAA,IAAA,EAAA,WAAA;AAAApG,MAAAA,IAAA,ED6CYqG,iBAAiB;;;;;YAAEC,SAAS;AAAApG,MAAAA,QAAA,EAAA,2BAAA;AAAAC,MAAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,kBAAA,CAAA;MAAAgB,QAAA,EAAA,CAAA,WAAA;AAAA,KAAA,CAAA;AAAAP,IAAAA,eAAA,EAAAnB,EAAA,CAAAoB,uBAAA,CAAAC,MAAA;AAAAC,IAAAA,aAAA,EAAAtB,EAAA,CAAAuB,iBAAA,CAAAC;AAAA,GAAA,CAAA;;;;;;QAE3BS,SAAS;AAAAR,EAAAA,UAAA,EAAA,CAAA;UA/BrBvB,SAAS;;gBACE,YAAY;AAAAwB,MAAAA,QAAA,EACZ,WAAW;AAAAd,MAAAA,IAAA,EACf;AACJ,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,iCAAiC,EAAE,UAAU;AAC7C,QAAA,iCAAiC,EAAE,UAAU;AAC7C,QAAA,+BAA+B,EAAE,QAAQ;AACzC,QAAA,iCAAiC,EAAE,UAAU;AAC7C,QAAA,MAAM,EAAE,IAAI;AAUZ,QAAA,sBAAsB,EAAE,UAAU;AAClC,QAAA,sBAAsB,EAAE,qBAAqB;AAC7C,QAAA,SAAS,EAAE,yBAAyB;AACpC,QAAA,WAAW,EAAE,wBAAwB;AACrC,QAAA,OAAO,EAAE;OACV;MAAAU,aAAA,EAGcC,iBAAiB,CAACC,IAAI;MAAAL,eAAA,EACpBC,uBAAuB,CAACC,MAAM;AAAAyF,MAAAA,OAAA,EACtC,CAACF,iBAAiB,EAAEC,SAAS,CAAC;AAAAlF,MAAAA,QAAA,EAAA,w9CAAA;MAAAT,MAAA,EAAA,CAAA,m1IAAA;KAAA;;;;;YAwBtCU;;;YAGAA;;;YAGAA,KAAK;aAAC;AAACC,QAAAA,SAAS,EAAElB;OAAiB;;;YAuBnCoG;;;YAGAC,SAAS;MAACC,IAAA,EAAA,CAAA,MAAM,EAAE;AAACT,QAAAA,MAAM,EAAE;OAAK;;;;SAuKnBU,6BAA6BA,CAC3CC,WAAmB,EACnBvC,OAA6B,EAC7BwC,YAAoC,EAAA;EAEpC,IAAIA,YAAY,CAACC,MAAM,EAAE;AACvB,IAAA,IAAIC,YAAY,GAAG1C,OAAO,CAAC2C,OAAO,EAAE;AACpC,IAAA,IAAIC,MAAM,GAAGJ,YAAY,CAACG,OAAO,EAAE;IACnC,IAAIE,YAAY,GAAG,CAAC;AAEpB,IAAA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGP,WAAW,GAAG,CAAC,EAAEO,CAAC,EAAE,EAAE;AACxC,MAAA,IAAIJ,YAAY,CAACI,CAAC,CAAC,CAACnF,KAAK,IAAI+E,YAAY,CAACI,CAAC,CAAC,CAACnF,KAAK,KAAKiF,MAAM,CAACC,YAAY,CAAC,EAAE;AAC3EA,QAAAA,YAAY,EAAE;AAChB,MAAA;AACF,IAAA;AAEA,IAAA,OAAOA,YAAY;AACrB,EAAA;AAEA,EAAA,OAAO,CAAC;AACV;AAUM,SAAUE,wBAAwBA,CACtCC,YAAoB,EACpBC,YAAoB,EACpBC,qBAA6B,EAC7BC,WAAmB,EAAA;EAEnB,IAAIH,YAAY,GAAGE,qBAAqB,EAAE;AACxC,IAAA,OAAOF,YAAY;AACrB,EAAA;AAEA,EAAA,IAAIA,YAAY,GAAGC,YAAY,GAAGC,qBAAqB,GAAGC,WAAW,EAAE;IACrE,OAAOC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEL,YAAY,GAAGG,WAAW,GAAGF,YAAY,CAAC;AAC/D,EAAA;AAEA,EAAA,OAAOC,qBAAqB;AAC9B;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"_option-harness-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/testing/option-harness.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\nimport {\n ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {OptionHarnessFilters} from './option-harness-filters';\n\n/** Harness for interacting with a `mat-option` in tests. */\nexport class MatOptionHarness extends ContentContainerComponentHarness {\n /** Selector used to locate option instances. */\n static hostSelector = '.mat-mdc-option';\n\n /** Element containing the option's text. */\n private _text = this.locatorFor('.mdc-list-item__primary-text');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for an option with specific attributes.\n * @param options Options for filtering which option instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatOptionHarness>(\n this: ComponentHarnessConstructor<T>,\n options: OptionHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('text', options.text, async (harness, title) =>\n HarnessPredicate.stringMatches(await harness.getText(), title),\n )\n .addOption(\n 'isSelected',\n options.isSelected,\n async (harness, isSelected) => (await harness.isSelected()) === isSelected,\n );\n }\n\n /** Clicks the option. */\n async click(): Promise<void> {\n return (await this.host()).click();\n }\n\n /** Gets the option's label text. */\n async getText(): Promise<string> {\n return (await this._text()).text();\n }\n\n /** Gets whether the option is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).hasClass('mdc-list-item--disabled');\n }\n\n /** Gets whether the option is selected. */\n async isSelected(): Promise<boolean> {\n return (await this.host()).hasClass('mdc-list-item--selected');\n }\n\n /** Gets whether the option is active. */\n async isActive(): Promise<boolean> {\n return (await this.host()).hasClass('mat-mdc-option-active');\n }\n\n /** Gets whether the option is in multiple selection mode. */\n async isMultiple(): Promise<boolean> {\n return (await this.host()).hasClass('mat-mdc-option-multiple');\n }\n}\n"],"names":["MatOptionHarness","ContentContainerComponentHarness","hostSelector","_text","locatorFor","with","options","HarnessPredicate","addOption","text","harness","title","stringMatches","getText","isSelected","click","host","isDisabled","hasClass","isActive","isMultiple"],"mappings":";;AAgBM,MAAOA,gBAAiB,SAAQC,gCAAgC,CAAA;EAEpE,OAAOC,YAAY,GAAG,iBAAiB;AAG/BC,EAAAA,KAAK,GAAG,IAAI,CAACC,UAAU,CAAC,8BAA8B,CAAC;AAO/D,EAAA,OAAOC,IAAIA,CAETC,OAAA,GAAgC,EAAE,EAAA;IAElC,OAAO,IAAIC,gBAAgB,CAAC,IAAI,EAAED,OAAO,CAAA,CACtCE,SAAS,CAAC,MAAM,EAAEF,OAAO,CAACG,IAAI,EAAE,OAAOC,OAAO,EAAEC,KAAK,KACpDJ,gBAAgB,CAACK,aAAa,CAAC,MAAMF,OAAO,CAACG,OAAO,EAAE,EAAEF,KAAK,CAAC,CAAA,CAE/DH,SAAS,CACR,YAAY,EACZF,OAAO,CAACQ,UAAU,EAClB,OAAOJ,OAAO,EAAEI,UAAU,KAAK,CAAC,MAAMJ,OAAO,CAACI,UAAU,EAAE,MAAMA,UAAU,CAC3E;AACL,EAAA;EAGA,MAAMC,KAAKA,GAAA;IACT,OAAO,CAAC,MAAM,IAAI,CAACC,IAAI,EAAE,EAAED,KAAK,EAAE;AACpC,EAAA;EAGA,MAAMF,OAAOA,GAAA;IACX,OAAO,CAAC,MAAM,IAAI,CAACV,KAAK,EAAE,EAAEM,IAAI,EAAE;AACpC,EAAA;EAGA,MAAMQ,UAAUA,GAAA;IACd,OAAO,CAAC,MAAM,IAAI,CAACD,IAAI,EAAE,EAAEE,QAAQ,CAAC,yBAAyB,CAAC;AAChE,EAAA;EAGA,MAAMJ,UAAUA,GAAA;IACd,OAAO,CAAC,MAAM,IAAI,CAACE,IAAI,EAAE,EAAEE,QAAQ,CAAC,yBAAyB,CAAC;AAChE,EAAA;EAGA,MAAMC,QAAQA,GAAA;IACZ,OAAO,CAAC,MAAM,IAAI,CAACH,IAAI,EAAE,EAAEE,QAAQ,CAAC,uBAAuB,CAAC;AAC9D,EAAA;EAGA,MAAME,UAAUA,GAAA;IACd,OAAO,CAAC,MAAM,IAAI,CAACJ,IAAI,EAAE,EAAEE,QAAQ,CAAC,yBAAyB,CAAC;AAChE,EAAA;;;;;"}
{"version":3,"file":"_option-harness-chunk.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/core/testing/option-harness.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\nimport {\n ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {OptionHarnessFilters} from './option-harness-filters';\n\n/** Harness for interacting with a `mat-option` in tests. */\nexport class MatOptionHarness extends ContentContainerComponentHarness {\n /** Selector used to locate option instances. */\n static hostSelector = '.mat-mdc-option';\n\n /** Element containing the option's text. */\n private _text = this.locatorFor('.mdc-list-item__primary-text');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for an option with specific attributes.\n * @param options Options for filtering which option instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatOptionHarness>(\n this: ComponentHarnessConstructor<T>,\n options: OptionHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('text', options.text, async (harness, title) =>\n HarnessPredicate.stringMatches(await harness.getText(), title),\n )\n .addOption(\n 'isSelected',\n options.isSelected,\n async (harness, isSelected) => (await harness.isSelected()) === isSelected,\n );\n }\n\n /** Clicks the option. */\n async click(): Promise<void> {\n return (await this.host()).click();\n }\n\n /** Gets the option's label text. */\n async getText(): Promise<string> {\n return (await this._text()).text();\n }\n\n /** Gets whether the option is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).hasClass('mdc-list-item--disabled');\n }\n\n /** Gets whether the option is selected. */\n async isSelected(): Promise<boolean> {\n return (await this.host()).hasClass('mdc-list-item--selected');\n }\n\n /** Gets whether the option is active. */\n async isActive(): Promise<boolean> {\n return (await this.host()).hasClass('mat-mdc-option-active');\n }\n\n /** Gets whether the option is in multiple selection mode. */\n async isMultiple(): Promise<boolean> {\n return (await this.host()).hasClass('mat-mdc-option-multiple');\n }\n}\n"],"names":["MatOptionHarness","ContentContainerComponentHarness","hostSelector","_text","locatorFor","with","options","HarnessPredicate","addOption","text","harness","title","stringMatches","getText","isSelected","click","host","isDisabled","hasClass","isActive","isMultiple"],"mappings":";;AAgBM,MAAOA,gBAAiB,SAAQC,gCAAgC,CAAA;EAEpE,OAAOC,YAAY,GAAG,iBAAiB;AAG/BC,EAAAA,KAAK,GAAG,IAAI,CAACC,UAAU,CAAC,8BAA8B,CAAC;AAO/D,EAAA,OAAOC,IAAIA,CAETC,OAAA,GAAgC,EAAE,EAAA;IAElC,OAAO,IAAIC,gBAAgB,CAAC,IAAI,EAAED,OAAO,CAAA,CACtCE,SAAS,CAAC,MAAM,EAAEF,OAAO,CAACG,IAAI,EAAE,OAAOC,OAAO,EAAEC,KAAK,KACpDJ,gBAAgB,CAACK,aAAa,CAAC,MAAMF,OAAO,CAACG,OAAO,EAAE,EAAEF,KAAK,CAAC,CAAA,CAE/DH,SAAS,CACR,YAAY,EACZF,OAAO,CAACQ,UAAU,EAClB,OAAOJ,OAAO,EAAEI,UAAU,KAAK,CAAC,MAAMJ,OAAO,CAACI,UAAU,EAAE,MAAMA,UAAU,CAC3E;AACL,EAAA;EAGA,MAAMC,KAAKA,GAAA;IACT,OAAO,CAAC,MAAM,IAAI,CAACC,IAAI,EAAE,EAAED,KAAK,EAAE;AACpC,EAAA;EAGA,MAAMF,OAAOA,GAAA;IACX,OAAO,CAAC,MAAM,IAAI,CAACV,KAAK,EAAE,EAAEM,IAAI,EAAE;AACpC,EAAA;EAGA,MAAMQ,UAAUA,GAAA;IACd,OAAO,CAAC,MAAM,IAAI,CAACD,IAAI,EAAE,EAAEE,QAAQ,CAAC,yBAAyB,CAAC;AAChE,EAAA;EAGA,MAAMJ,UAAUA,GAAA;IACd,OAAO,CAAC,MAAM,IAAI,CAACE,IAAI,EAAE,EAAEE,QAAQ,CAAC,yBAAyB,CAAC;AAChE,EAAA;EAGA,MAAMC,QAAQA,GAAA;IACZ,OAAO,CAAC,MAAM,IAAI,CAACH,IAAI,EAAE,EAAEE,QAAQ,CAAC,uBAAuB,CAAC;AAC9D,EAAA;EAGA,MAAME,UAAUA,GAAA;IACd,OAAO,CAAC,MAAM,IAAI,CAACJ,IAAI,EAAE,EAAEE,QAAQ,CAAC,yBAAyB,CAAC;AAChE,EAAA;;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"_option-module-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/option/option-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\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\nimport {MatRippleModule} from '../ripple/ripple-module';\nimport {MatPseudoCheckboxModule} from '../selection/pseudo-checkbox/pseudo-checkbox-module';\nimport {MatOption} from './option';\nimport {MatOptgroup} from './optgroup';\n\n@NgModule({\n imports: [MatRippleModule, MatPseudoCheckboxModule, MatOption, MatOptgroup],\n exports: [MatOption, MatOptgroup, BidiModule],\n})\nexport class MatOptionModule {}\n"],"names":["MatOptionModule","deps","target","i0","ɵɵFactoryTarget","NgModule","ɵmod","ɵɵngDeclareNgModule","minVersion","version","ngImport","type","imports","MatRippleModule","MatPseudoCheckboxModule","MatOption","MatOptgroup","exports","BidiModule","ɵinj","ɵɵngDeclareInjector","decorators","args"],"mappings":";;;;;;;MAmBaA,eAAe,CAAA;;;;;UAAfA,eAAe;AAAAC,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;AAAf,EAAA,OAAAC,IAAA,GAAAH,EAAA,CAAAI,mBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,QAAA,EAAAP,EAAA;AAAAQ,IAAAA,IAAA,EAAAX,eAAe;IAAAY,OAAA,EAAA,CAHhBC,eAAe,EAAEC,uBAAuB,EAAEC,SAAS,EAAEC,WAAW,CAAA;AAAAC,IAAAA,OAAA,EAAA,CAChEF,SAAS,EAAEC,WAAW,EAAEE,UAAU;AAAA,GAAA,CAAA;AAEjC,EAAA,OAAAC,IAAA,GAAAhB,EAAA,CAAAiB,mBAAA,CAAA;AAAAZ,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,QAAA,EAAAP,EAAA;AAAAQ,IAAAA,IAAA,EAAAX,eAAe;cAHhBa,eAAe,EAAEC,uBAAuB,EAAEC,SAAS,EAC3BG,UAAU;AAAA,GAAA,CAAA;;;;;;QAEjClB,eAAe;AAAAqB,EAAAA,UAAA,EAAA,CAAA;UAJ3BhB,QAAQ;AAACiB,IAAAA,IAAA,EAAA,CAAA;MACRV,OAAO,EAAE,CAACC,eAAe,EAAEC,uBAAuB,EAAEC,SAAS,EAAEC,WAAW,CAAC;AAC3EC,MAAAA,OAAO,EAAE,CAACF,SAAS,EAAEC,WAAW,EAAEE,UAAU;KAC7C;;;;;;"}
{"version":3,"file":"_option-module-chunk.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/core/option/option-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\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\nimport {MatRippleModule} from '../ripple/ripple-module';\nimport {MatPseudoCheckboxModule} from '../selection/pseudo-checkbox/pseudo-checkbox-module';\nimport {MatOption} from './option';\nimport {MatOptgroup} from './optgroup';\n\n@NgModule({\n imports: [MatRippleModule, MatPseudoCheckboxModule, MatOption, MatOptgroup],\n exports: [MatOption, MatOptgroup, BidiModule],\n})\nexport class MatOptionModule {}\n"],"names":["MatOptionModule","deps","target","i0","ɵɵFactoryTarget","NgModule","ɵmod","ɵɵngDeclareNgModule","minVersion","version","ngImport","type","imports","MatRippleModule","MatPseudoCheckboxModule","MatOption","MatOptgroup","exports","BidiModule","ɵinj","ɵɵngDeclareInjector","decorators","args"],"mappings":";;;;;;;MAmBaA,eAAe,CAAA;;;;;UAAfA,eAAe;AAAAC,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;AAAf,EAAA,OAAAC,IAAA,GAAAH,EAAA,CAAAI,mBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,QAAA,EAAAP,EAAA;AAAAQ,IAAAA,IAAA,EAAAX,eAAe;IAAAY,OAAA,EAAA,CAHhBC,eAAe,EAAEC,uBAAuB,EAAEC,SAAS,EAAEC,WAAW,CAAA;AAAAC,IAAAA,OAAA,EAAA,CAChEF,SAAS,EAAEC,WAAW,EAAEE,UAAU;AAAA,GAAA,CAAA;AAEjC,EAAA,OAAAC,IAAA,GAAAhB,EAAA,CAAAiB,mBAAA,CAAA;AAAAZ,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,QAAA,EAAAP,EAAA;AAAAQ,IAAAA,IAAA,EAAAX,eAAe;cAHhBa,eAAe,EAAEC,uBAAuB,EAAEC,SAAS,EAC3BG,UAAU;AAAA,GAAA,CAAA;;;;;;QAEjClB,eAAe;AAAAqB,EAAAA,UAAA,EAAA,CAAA;UAJ3BhB,QAAQ;AAACiB,IAAAA,IAAA,EAAA,CAAA;MACRV,OAAO,EAAE,CAACC,eAAe,EAAEC,uBAAuB,EAAEC,SAAS,EAAEC,WAAW,CAAC;AAC3EC,MAAAA,OAAO,EAAE,CAACF,SAAS,EAAEC,WAAW,EAAEE,UAAU;KAC7C;;;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"_pseudo-checkbox-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/selection/pseudo-checkbox/pseudo-checkbox.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\nimport {Component, ViewEncapsulation, Input, ChangeDetectionStrategy} from '@angular/core';\nimport {_animationsDisabled} from '../../animation/animation';\n\n/**\n * Possible states for a pseudo checkbox.\n * @docs-private\n */\nexport type MatPseudoCheckboxState = 'unchecked' | 'checked' | 'indeterminate';\n\n/**\n * Component that shows a simplified checkbox without including any kind of \"real\" checkbox.\n * Meant to be used when the checkbox is purely decorative and a large number of them will be\n * included, such as for the options in a multi-select. Uses no SVGs or complex animations.\n * Note that theming is meant to be handled by the parent element, e.g.\n * `mat-primary .mat-pseudo-checkbox`.\n *\n * Note that this component will be completely invisible to screen-reader users. This is *not*\n * interchangeable with `<mat-checkbox>` and should *not* be used if the user would directly\n * interact with the checkbox. The pseudo-checkbox should only be used as an implementation detail\n * of more complex components that appropriately handle selected / checked state.\n * @docs-private\n */\n@Component({\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'mat-pseudo-checkbox',\n styleUrl: 'pseudo-checkbox.css',\n template: '',\n host: {\n 'class': 'mat-pseudo-checkbox',\n '[class.mat-pseudo-checkbox-indeterminate]': 'state === \"indeterminate\"',\n '[class.mat-pseudo-checkbox-checked]': 'state === \"checked\"',\n '[class.mat-pseudo-checkbox-disabled]': 'disabled',\n '[class.mat-pseudo-checkbox-minimal]': 'appearance === \"minimal\"',\n '[class.mat-pseudo-checkbox-full]': 'appearance === \"full\"',\n '[class._mat-animation-noopable]': '_animationsDisabled',\n },\n})\nexport class MatPseudoCheckbox {\n _animationsDisabled = _animationsDisabled();\n\n /** Display state of the checkbox. */\n @Input() state: MatPseudoCheckboxState = 'unchecked';\n\n /** Whether the checkbox is disabled. */\n @Input() disabled: boolean = false;\n\n /**\n * Appearance of the pseudo checkbox. Default appearance of 'full' renders a checkmark/mixedmark\n * indicator inside a square box. 'minimal' appearance only renders the checkmark/mixedmark.\n */\n @Input() appearance: 'minimal' | 'full' = 'full';\n\n constructor(...args: unknown[]);\n constructor() {}\n}\n"],"names":["MatPseudoCheckbox","_animationsDisabled","state","disabled","appearance","constructor","deps","target","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","isInline","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","selector","template","host","Input"],"mappings":";;;;MA8CaA,iBAAiB,CAAA;EAC5BC,mBAAmB,GAAGA,mBAAmB,EAAE;AAGlCC,EAAAA,KAAK,GAA2B,WAAW;AAG3CC,EAAAA,QAAQ,GAAY,KAAK;AAMzBC,EAAAA,UAAU,GAAuB,MAAM;EAGhDC,WAAAA,GAAA,CAAe;;;;;UAhBJL,iBAAiB;AAAAM,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;AAAjB,EAAA,OAAAC,IAAA,GAAAH,EAAA,CAAAI,oBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,IAAA,EAAAf,iBAAiB;;;;;;;;;;;;;;;;;;;;cAXlB,EAAE;AAAAgB,IAAAA,QAAA,EAAA,IAAA;IAAAC,MAAA,EAAA,CAAA,8sHAAA,CAAA;AAAAC,IAAAA,eAAA,EAAAV,EAAA,CAAAW,uBAAA,CAAAC,MAAA;AAAAC,IAAAA,aAAA,EAAAb,EAAA,CAAAc,iBAAA,CAAAC;AAAA,GAAA,CAAA;;;;;;QAWDvB,iBAAiB;AAAAwB,EAAAA,UAAA,EAAA,CAAA;UAhB7Bd,SAAS;;qBACOY,iBAAiB,CAACC,IAAI;MAAAL,eAAA,EACpBC,uBAAuB,CAACC,MAAM;AAAAK,MAAAA,QAAA,EACrC,qBAAqB;AAAAC,MAAAA,QAAA,EAErB,EAAE;AAAAC,MAAAA,IAAA,EACN;AACJ,QAAA,OAAO,EAAE,qBAAqB;AAC9B,QAAA,2CAA2C,EAAE,2BAA2B;AACxE,QAAA,qCAAqC,EAAE,qBAAqB;AAC5D,QAAA,sCAAsC,EAAE,UAAU;AAClD,QAAA,qCAAqC,EAAE,0BAA0B;AACjE,QAAA,kCAAkC,EAAE,uBAAuB;AAC3D,QAAA,iCAAiC,EAAE;OACpC;MAAAV,MAAA,EAAA,CAAA,8sHAAA;KAAA;;;;;YAMAW;;;YAGAA;;;YAMAA;;;;;;;"}
{"version":3,"file":"_pseudo-checkbox-chunk.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/core/selection/pseudo-checkbox/pseudo-checkbox.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\nimport {Component, ViewEncapsulation, Input, ChangeDetectionStrategy} from '@angular/core';\nimport {_animationsDisabled} from '../../animation/animation';\n\n/**\n * Possible states for a pseudo checkbox.\n * @docs-private\n */\nexport type MatPseudoCheckboxState = 'unchecked' | 'checked' | 'indeterminate';\n\n/**\n * Component that shows a simplified checkbox without including any kind of \"real\" checkbox.\n * Meant to be used when the checkbox is purely decorative and a large number of them will be\n * included, such as for the options in a multi-select. Uses no SVGs or complex animations.\n * Note that theming is meant to be handled by the parent element, e.g.\n * `mat-primary .mat-pseudo-checkbox`.\n *\n * Note that this component will be completely invisible to screen-reader users. This is *not*\n * interchangeable with `<mat-checkbox>` and should *not* be used if the user would directly\n * interact with the checkbox. The pseudo-checkbox should only be used as an implementation detail\n * of more complex components that appropriately handle selected / checked state.\n * @docs-private\n */\n@Component({\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'mat-pseudo-checkbox',\n styleUrl: 'pseudo-checkbox.css',\n template: '',\n host: {\n 'class': 'mat-pseudo-checkbox',\n '[class.mat-pseudo-checkbox-indeterminate]': 'state === \"indeterminate\"',\n '[class.mat-pseudo-checkbox-checked]': 'state === \"checked\"',\n '[class.mat-pseudo-checkbox-disabled]': 'disabled',\n '[class.mat-pseudo-checkbox-minimal]': 'appearance === \"minimal\"',\n '[class.mat-pseudo-checkbox-full]': 'appearance === \"full\"',\n '[class._mat-animation-noopable]': '_animationsDisabled',\n },\n})\nexport class MatPseudoCheckbox {\n _animationsDisabled = _animationsDisabled();\n\n /** Display state of the checkbox. */\n @Input() state: MatPseudoCheckboxState = 'unchecked';\n\n /** Whether the checkbox is disabled. */\n @Input() disabled: boolean = false;\n\n /**\n * Appearance of the pseudo checkbox. Default appearance of 'full' renders a checkmark/mixedmark\n * indicator inside a square box. 'minimal' appearance only renders the checkmark/mixedmark.\n */\n @Input() appearance: 'minimal' | 'full' = 'full';\n\n constructor(...args: unknown[]);\n constructor() {}\n}\n"],"names":["MatPseudoCheckbox","_animationsDisabled","state","disabled","appearance","constructor","deps","target","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","isInline","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","selector","template","host","Input"],"mappings":";;;;MA8CaA,iBAAiB,CAAA;EAC5BC,mBAAmB,GAAGA,mBAAmB,EAAE;AAGlCC,EAAAA,KAAK,GAA2B,WAAW;AAG3CC,EAAAA,QAAQ,GAAY,KAAK;AAMzBC,EAAAA,UAAU,GAAuB,MAAM;EAGhDC,WAAAA,GAAA,CAAe;;;;;UAhBJL,iBAAiB;AAAAM,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;AAAjB,EAAA,OAAAC,IAAA,GAAAH,EAAA,CAAAI,oBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,IAAA,EAAAf,iBAAiB;;;;;;;;;;;;;;;;;;;;cAXlB,EAAE;AAAAgB,IAAAA,QAAA,EAAA,IAAA;IAAAC,MAAA,EAAA,CAAA,8sHAAA,CAAA;AAAAC,IAAAA,eAAA,EAAAV,EAAA,CAAAW,uBAAA,CAAAC,MAAA;AAAAC,IAAAA,aAAA,EAAAb,EAAA,CAAAc,iBAAA,CAAAC;AAAA,GAAA,CAAA;;;;;;QAWDvB,iBAAiB;AAAAwB,EAAAA,UAAA,EAAA,CAAA;UAhB7Bd,SAAS;;qBACOY,iBAAiB,CAACC,IAAI;MAAAL,eAAA,EACpBC,uBAAuB,CAACC,MAAM;AAAAK,MAAAA,QAAA,EACrC,qBAAqB;AAAAC,MAAAA,QAAA,EAErB,EAAE;AAAAC,MAAAA,IAAA,EACN;AACJ,QAAA,OAAO,EAAE,qBAAqB;AAC9B,QAAA,2CAA2C,EAAE,2BAA2B;AACxE,QAAA,qCAAqC,EAAE,qBAAqB;AAC5D,QAAA,sCAAsC,EAAE,UAAU;AAClD,QAAA,qCAAqC,EAAE,0BAA0B;AACjE,QAAA,kCAAkC,EAAE,uBAAuB;AAC3D,QAAA,iCAAiC,EAAE;OACpC;MAAAV,MAAA,EAAA,CAAA,8sHAAA;KAAA;;;;;YAMAW;;;YAGAA;;;YAMAA;;;;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"_pseudo-checkbox-module-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/selection/pseudo-checkbox/pseudo-checkbox-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\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\nimport {MatPseudoCheckbox} from './pseudo-checkbox';\n\n@NgModule({\n imports: [MatPseudoCheckbox],\n exports: [MatPseudoCheckbox, BidiModule],\n})\nexport class MatPseudoCheckboxModule {}\n"],"names":["MatPseudoCheckboxModule","deps","target","i0","ɵɵFactoryTarget","NgModule","ɵmod","ɵɵngDeclareNgModule","minVersion","version","ngImport","type","imports","MatPseudoCheckbox","exports","BidiModule","ɵinj","ɵɵngDeclareInjector","decorators","args"],"mappings":";;;;;MAgBaA,uBAAuB,CAAA;;;;;UAAvBA,uBAAuB;AAAAC,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;AAAvB,EAAA,OAAAC,IAAA,GAAAH,EAAA,CAAAI,mBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,QAAA,EAAAP,EAAA;AAAAQ,IAAAA,IAAA,EAAAX,uBAAuB;IAAAY,OAAA,EAAA,CAHxBC,iBAAiB,CAAA;AAAAC,IAAAA,OAAA,EAAA,CACjBD,iBAAiB,EAAEE,UAAU;AAAA,GAAA,CAAA;AAE5B,EAAA,OAAAC,IAAA,GAAAb,EAAA,CAAAc,mBAAA,CAAA;AAAAT,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,QAAA,EAAAP,EAAA;AAAAQ,IAAAA,IAAA,EAAAX,uBAAuB;cAFLe,UAAU;AAAA,GAAA,CAAA;;;;;;QAE5Bf,uBAAuB;AAAAkB,EAAAA,UAAA,EAAA,CAAA;UAJnCb,QAAQ;AAACc,IAAAA,IAAA,EAAA,CAAA;MACRP,OAAO,EAAE,CAACC,iBAAiB,CAAC;AAC5BC,MAAAA,OAAO,EAAE,CAACD,iBAAiB,EAAEE,UAAU;KACxC;;;;;;"}
{"version":3,"file":"_pseudo-checkbox-module-chunk.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/core/selection/pseudo-checkbox/pseudo-checkbox-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\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\nimport {MatPseudoCheckbox} from './pseudo-checkbox';\n\n@NgModule({\n imports: [MatPseudoCheckbox],\n exports: [MatPseudoCheckbox, BidiModule],\n})\nexport class MatPseudoCheckboxModule {}\n"],"names":["MatPseudoCheckboxModule","deps","target","i0","ɵɵFactoryTarget","NgModule","ɵmod","ɵɵngDeclareNgModule","minVersion","version","ngImport","type","imports","MatPseudoCheckbox","exports","BidiModule","ɵinj","ɵɵngDeclareInjector","decorators","args"],"mappings":";;;;;MAgBaA,uBAAuB,CAAA;;;;;UAAvBA,uBAAuB;AAAAC,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;AAAvB,EAAA,OAAAC,IAAA,GAAAH,EAAA,CAAAI,mBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,QAAA,EAAAP,EAAA;AAAAQ,IAAAA,IAAA,EAAAX,uBAAuB;IAAAY,OAAA,EAAA,CAHxBC,iBAAiB,CAAA;AAAAC,IAAAA,OAAA,EAAA,CACjBD,iBAAiB,EAAEE,UAAU;AAAA,GAAA,CAAA;AAE5B,EAAA,OAAAC,IAAA,GAAAb,EAAA,CAAAc,mBAAA,CAAA;AAAAT,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,QAAA,EAAAP,EAAA;AAAAQ,IAAAA,IAAA,EAAAX,uBAAuB;cAFLe,UAAU;AAAA,GAAA,CAAA;;;;;;QAE5Bf,uBAAuB;AAAAkB,EAAAA,UAAA,EAAA,CAAA;UAJnCb,QAAQ;AAACc,IAAAA,IAAA,EAAA,CAAA;MACRP,OAAO,EAAE,CAACC,iBAAiB,CAAC;AAC5BC,MAAAA,OAAO,EAAE,CAACD,iBAAiB,EAAEE,UAAU;KACxC;;;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"_public-api-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/grid-list/tile-coordinator.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/grid-list/public-api.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 * Interface describing a tile.\n * @docs-private\n */\nexport interface Tile {\n /** Amount of rows that the tile takes up. */\n rowspan: number;\n /** Amount of columns that the tile takes up. */\n colspan: number;\n}\n\n/**\n * Class for determining, from a list of tiles, the (row, col) position of each of those tiles\n * in the grid. This is necessary (rather than just rendering the tiles in normal document flow)\n * because the tiles can have a rowspan.\n *\n * The positioning algorithm greedily places each tile as soon as it encounters a gap in the grid\n * large enough to accommodate it so that the tiles still render in the same order in which they\n * are given.\n *\n * The basis of the algorithm is the use of an array to track the already placed tiles. Each\n * element of the array corresponds to a column, and the value indicates how many cells in that\n * column are already occupied; zero indicates an empty cell. Moving \"down\" to the next row\n * decrements each value in the tracking array (indicating that the column is one cell closer to\n * being free).\n *\n * @docs-private\n */\nexport class TileCoordinator {\n /** Tracking array (see class description). */\n tracker!: number[];\n\n /** Index at which the search for the next gap will start. */\n columnIndex: number = 0;\n\n /** The current row index. */\n rowIndex: number = 0;\n\n /** Gets the total number of rows occupied by tiles */\n get rowCount(): number {\n return this.rowIndex + 1;\n }\n\n /**\n * Gets the total span of rows occupied by tiles.\n * Ex: A list with 1 row that contains a tile with rowspan 2 will have a total rowspan of 2.\n */\n get rowspan() {\n const lastRowMax = Math.max(...this.tracker);\n // if any of the tiles has a rowspan that pushes it beyond the total row count,\n // add the difference to the rowcount\n return lastRowMax > 1 ? this.rowCount + lastRowMax - 1 : this.rowCount;\n }\n\n /** The computed (row, col) position of each tile (the output). */\n positions!: TilePosition[];\n\n /**\n * Updates the tile positions.\n * @param numColumns Amount of columns in the grid.\n * @param tiles Tiles to be positioned.\n */\n update(numColumns: number, tiles: Tile[]) {\n this.columnIndex = 0;\n this.rowIndex = 0;\n\n this.tracker = new Array(numColumns);\n this.tracker.fill(0, 0, this.tracker.length);\n this.positions = tiles.map(tile => this._trackTile(tile));\n }\n\n /** Calculates the row and col position of a tile. */\n private _trackTile(tile: Tile): TilePosition {\n // Find a gap large enough for this tile.\n const gapStartIndex = this._findMatchingGap(tile.colspan);\n\n // Place tile in the resulting gap.\n this._markTilePosition(gapStartIndex, tile);\n\n // The next time we look for a gap, the search will start at columnIndex, which should be\n // immediately after the tile that has just been placed.\n this.columnIndex = gapStartIndex + tile.colspan;\n\n return new TilePosition(this.rowIndex, gapStartIndex);\n }\n\n /** Finds the next available space large enough to fit the tile. */\n private _findMatchingGap(tileCols: number): number {\n if (tileCols > this.tracker.length && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(\n `mat-grid-list: tile with colspan ${tileCols} is wider than ` +\n `grid with cols=\"${this.tracker.length}\".`,\n );\n }\n\n // Start index is inclusive, end index is exclusive.\n let gapStartIndex = -1;\n let gapEndIndex = -1;\n\n // Look for a gap large enough to fit the given tile. Empty spaces are marked with a zero.\n do {\n // If we've reached the end of the row, go to the next row.\n if (this.columnIndex + tileCols > this.tracker.length) {\n this._nextRow();\n gapStartIndex = this.tracker.indexOf(0, this.columnIndex);\n gapEndIndex = this._findGapEndIndex(gapStartIndex);\n continue;\n }\n\n gapStartIndex = this.tracker.indexOf(0, this.columnIndex);\n\n // If there are no more empty spaces in this row at all, move on to the next row.\n if (gapStartIndex == -1) {\n this._nextRow();\n gapStartIndex = this.tracker.indexOf(0, this.columnIndex);\n gapEndIndex = this._findGapEndIndex(gapStartIndex);\n continue;\n }\n\n gapEndIndex = this._findGapEndIndex(gapStartIndex);\n\n // If a gap large enough isn't found, we want to start looking immediately after the current\n // gap on the next iteration.\n this.columnIndex = gapStartIndex + 1;\n\n // Continue iterating until we find a gap wide enough for this tile. Since gapEndIndex is\n // exclusive, gapEndIndex is 0 means we didn't find a gap and should continue.\n } while (gapEndIndex - gapStartIndex < tileCols || gapEndIndex == 0);\n\n // If we still didn't manage to find a gap, ensure that the index is\n // at least zero so the tile doesn't get pulled out of the grid.\n return Math.max(gapStartIndex, 0);\n }\n\n /** Move \"down\" to the next row. */\n private _nextRow(): void {\n this.columnIndex = 0;\n this.rowIndex++;\n\n // Decrement all spaces by one to reflect moving down one row.\n for (let i = 0; i < this.tracker.length; i++) {\n this.tracker[i] = Math.max(0, this.tracker[i] - 1);\n }\n }\n\n /**\n * Finds the end index (exclusive) of a gap given the index from which to start looking.\n * The gap ends when a non-zero value is found.\n */\n private _findGapEndIndex(gapStartIndex: number): number {\n for (let i = gapStartIndex + 1; i < this.tracker.length; i++) {\n if (this.tracker[i] != 0) {\n return i;\n }\n }\n\n // The gap ends with the end of the row.\n return this.tracker.length;\n }\n\n /** Update the tile tracker to account for the given tile in the given space. */\n private _markTilePosition(start: number, tile: Tile): void {\n for (let i = 0; i < tile.colspan; i++) {\n this.tracker[start + i] = tile.rowspan;\n }\n }\n}\n\n/**\n * Simple data structure for tile position (row, col).\n * @docs-private\n */\nexport class TilePosition {\n constructor(\n public row: number,\n public col: number,\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 */\nimport {TileCoordinator} from './tile-coordinator';\n\nexport * from './grid-list-module';\nexport * from './grid-list';\nexport * from './grid-tile';\n\n// Privately exported for the grid-list harness.\nexport const ɵTileCoordinator = TileCoordinator;\n"],"names":["TileCoordinator","tracker","columnIndex","rowIndex","rowCount","rowspan","lastRowMax","Math","max","positions","update","numColumns","tiles","Array","fill","length","map","tile","_trackTile","gapStartIndex","_findMatchingGap","colspan","_markTilePosition","TilePosition","tileCols","ngDevMode","Error","gapEndIndex","_nextRow","indexOf","_findGapEndIndex","i","start","row","col","constructor","ɵTileCoordinator"],"mappings":"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"}
{"version":3,"file":"_public-api-chunk.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/grid-list/tile-coordinator.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/grid-list/public-api.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 * Interface describing a tile.\n * @docs-private\n */\nexport interface Tile {\n /** Amount of rows that the tile takes up. */\n rowspan: number;\n /** Amount of columns that the tile takes up. */\n colspan: number;\n}\n\n/**\n * Class for determining, from a list of tiles, the (row, col) position of each of those tiles\n * in the grid. This is necessary (rather than just rendering the tiles in normal document flow)\n * because the tiles can have a rowspan.\n *\n * The positioning algorithm greedily places each tile as soon as it encounters a gap in the grid\n * large enough to accommodate it so that the tiles still render in the same order in which they\n * are given.\n *\n * The basis of the algorithm is the use of an array to track the already placed tiles. Each\n * element of the array corresponds to a column, and the value indicates how many cells in that\n * column are already occupied; zero indicates an empty cell. Moving \"down\" to the next row\n * decrements each value in the tracking array (indicating that the column is one cell closer to\n * being free).\n *\n * @docs-private\n */\nexport class TileCoordinator {\n /** Tracking array (see class description). */\n tracker!: number[];\n\n /** Index at which the search for the next gap will start. */\n columnIndex: number = 0;\n\n /** The current row index. */\n rowIndex: number = 0;\n\n /** Gets the total number of rows occupied by tiles */\n get rowCount(): number {\n return this.rowIndex + 1;\n }\n\n /**\n * Gets the total span of rows occupied by tiles.\n * Ex: A list with 1 row that contains a tile with rowspan 2 will have a total rowspan of 2.\n */\n get rowspan() {\n const lastRowMax = Math.max(...this.tracker);\n // if any of the tiles has a rowspan that pushes it beyond the total row count,\n // add the difference to the rowcount\n return lastRowMax > 1 ? this.rowCount + lastRowMax - 1 : this.rowCount;\n }\n\n /** The computed (row, col) position of each tile (the output). */\n positions!: TilePosition[];\n\n /**\n * Updates the tile positions.\n * @param numColumns Amount of columns in the grid.\n * @param tiles Tiles to be positioned.\n */\n update(numColumns: number, tiles: Tile[]) {\n this.columnIndex = 0;\n this.rowIndex = 0;\n\n this.tracker = new Array(numColumns);\n this.tracker.fill(0, 0, this.tracker.length);\n this.positions = tiles.map(tile => this._trackTile(tile));\n }\n\n /** Calculates the row and col position of a tile. */\n private _trackTile(tile: Tile): TilePosition {\n // Find a gap large enough for this tile.\n const gapStartIndex = this._findMatchingGap(tile.colspan);\n\n // Place tile in the resulting gap.\n this._markTilePosition(gapStartIndex, tile);\n\n // The next time we look for a gap, the search will start at columnIndex, which should be\n // immediately after the tile that has just been placed.\n this.columnIndex = gapStartIndex + tile.colspan;\n\n return new TilePosition(this.rowIndex, gapStartIndex);\n }\n\n /** Finds the next available space large enough to fit the tile. */\n private _findMatchingGap(tileCols: number): number {\n if (tileCols > this.tracker.length && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(\n `mat-grid-list: tile with colspan ${tileCols} is wider than ` +\n `grid with cols=\"${this.tracker.length}\".`,\n );\n }\n\n // Start index is inclusive, end index is exclusive.\n let gapStartIndex = -1;\n let gapEndIndex = -1;\n\n // Look for a gap large enough to fit the given tile. Empty spaces are marked with a zero.\n do {\n // If we've reached the end of the row, go to the next row.\n if (this.columnIndex + tileCols > this.tracker.length) {\n this._nextRow();\n gapStartIndex = this.tracker.indexOf(0, this.columnIndex);\n gapEndIndex = this._findGapEndIndex(gapStartIndex);\n continue;\n }\n\n gapStartIndex = this.tracker.indexOf(0, this.columnIndex);\n\n // If there are no more empty spaces in this row at all, move on to the next row.\n if (gapStartIndex == -1) {\n this._nextRow();\n gapStartIndex = this.tracker.indexOf(0, this.columnIndex);\n gapEndIndex = this._findGapEndIndex(gapStartIndex);\n continue;\n }\n\n gapEndIndex = this._findGapEndIndex(gapStartIndex);\n\n // If a gap large enough isn't found, we want to start looking immediately after the current\n // gap on the next iteration.\n this.columnIndex = gapStartIndex + 1;\n\n // Continue iterating until we find a gap wide enough for this tile. Since gapEndIndex is\n // exclusive, gapEndIndex is 0 means we didn't find a gap and should continue.\n } while (gapEndIndex - gapStartIndex < tileCols || gapEndIndex == 0);\n\n // If we still didn't manage to find a gap, ensure that the index is\n // at least zero so the tile doesn't get pulled out of the grid.\n return Math.max(gapStartIndex, 0);\n }\n\n /** Move \"down\" to the next row. */\n private _nextRow(): void {\n this.columnIndex = 0;\n this.rowIndex++;\n\n // Decrement all spaces by one to reflect moving down one row.\n for (let i = 0; i < this.tracker.length; i++) {\n this.tracker[i] = Math.max(0, this.tracker[i] - 1);\n }\n }\n\n /**\n * Finds the end index (exclusive) of a gap given the index from which to start looking.\n * The gap ends when a non-zero value is found.\n */\n private _findGapEndIndex(gapStartIndex: number): number {\n for (let i = gapStartIndex + 1; i < this.tracker.length; i++) {\n if (this.tracker[i] != 0) {\n return i;\n }\n }\n\n // The gap ends with the end of the row.\n return this.tracker.length;\n }\n\n /** Update the tile tracker to account for the given tile in the given space. */\n private _markTilePosition(start: number, tile: Tile): void {\n for (let i = 0; i < tile.colspan; i++) {\n this.tracker[start + i] = tile.rowspan;\n }\n }\n}\n\n/**\n * Simple data structure for tile position (row, col).\n * @docs-private\n */\nexport class TilePosition {\n constructor(\n public row: number,\n public col: number,\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 */\nimport {TileCoordinator} from './tile-coordinator';\n\nexport * from './grid-list-module';\nexport * from './grid-list';\nexport * from './grid-tile';\n\n// Privately exported for the grid-list harness.\nexport const ɵTileCoordinator = TileCoordinator;\n"],"names":["TileCoordinator","tracker","columnIndex","rowIndex","rowCount","rowspan","lastRowMax","Math","max","positions","update","numColumns","tiles","Array","fill","length","map","tile","_trackTile","gapStartIndex","_findMatchingGap","colspan","_markTilePosition","TilePosition","tileCols","ngDevMode","Error","gapEndIndex","_nextRow","indexOf","_findGapEndIndex","i","start","row","col","constructor","ɵTileCoordinator"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"_ripple-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/ripple/ripple-ref.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/ripple/ripple-event-manager.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/ripple/ripple-renderer.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/ripple/ripple.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/** Possible states for a ripple element. */\nexport enum RippleState {\n FADING_IN,\n VISIBLE,\n FADING_OUT,\n HIDDEN,\n}\n\nexport type RippleConfig = {\n color?: string;\n centered?: boolean;\n radius?: number;\n persistent?: boolean;\n animation?: RippleAnimationConfig;\n terminateOnPointerUp?: boolean;\n};\n\n/**\n * Interface that describes the configuration for the animation of a ripple.\n * There are two animation phases with different durations for the ripples.\n */\nexport interface RippleAnimationConfig {\n /** Duration in milliseconds for the enter animation (expansion from point of contact). */\n enterDuration?: number;\n /** Duration in milliseconds for the exit animation (fade-out). */\n exitDuration?: number;\n}\n\n/**\n * Reference to a previously launched ripple element.\n */\nexport class RippleRef {\n /** Current state of the ripple. */\n state: RippleState = RippleState.HIDDEN;\n\n constructor(\n private _renderer: {fadeOutRipple(ref: RippleRef): void},\n /** Reference to the ripple HTML element. */\n public element: HTMLElement,\n /** Ripple configuration used for the ripple. */\n public config: RippleConfig,\n /* Whether animations are forcibly disabled for ripples through CSS. */\n public _animationForciblyDisabledThroughCss = false,\n ) {}\n\n /** Fades out the ripple element. */\n fadeOut() {\n this._renderer.fadeOutRipple(this);\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 {normalizePassiveListenerOptions, _getEventTarget} from '@angular/cdk/platform';\nimport {NgZone} from '@angular/core';\n\n/** Options used to bind a passive capturing event. */\nconst passiveCapturingEventOptions = normalizePassiveListenerOptions({\n passive: true,\n capture: true,\n});\n\n/** Manages events through delegation so that as few event handlers as possible are bound. */\nexport class RippleEventManager {\n private _events = new Map<string, Map<HTMLElement, Set<EventListenerObject>>>();\n\n /** Adds an event handler. */\n addHandler(ngZone: NgZone, name: string, element: HTMLElement, handler: EventListenerObject) {\n const handlersForEvent = this._events.get(name);\n\n if (handlersForEvent) {\n const handlersForElement = handlersForEvent.get(element);\n\n if (handlersForElement) {\n handlersForElement.add(handler);\n } else {\n handlersForEvent.set(element, new Set([handler]));\n }\n } else {\n this._events.set(name, new Map([[element, new Set([handler])]]));\n\n ngZone.runOutsideAngular(() => {\n document.addEventListener(name, this._delegateEventHandler, passiveCapturingEventOptions);\n });\n }\n }\n\n /** Removes an event handler. */\n removeHandler(name: string, element: HTMLElement, handler: EventListenerObject) {\n const handlersForEvent = this._events.get(name);\n\n if (!handlersForEvent) {\n return;\n }\n\n const handlersForElement = handlersForEvent.get(element);\n\n if (!handlersForElement) {\n return;\n }\n\n handlersForElement.delete(handler);\n\n if (handlersForElement.size === 0) {\n handlersForEvent.delete(element);\n }\n\n if (handlersForEvent.size === 0) {\n this._events.delete(name);\n document.removeEventListener(name, this._delegateEventHandler, passiveCapturingEventOptions);\n }\n }\n\n /** Event handler that is bound and which dispatches the events to the different targets. */\n private _delegateEventHandler = (event: Event) => {\n const target = _getEventTarget(event);\n\n if (target) {\n this._events.get(event.type)?.forEach((handlers, element) => {\n if (element === target || element.contains(target as Node)) {\n handlers.forEach(handler => handler.handleEvent(event));\n }\n });\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 */\nimport {\n ElementRef,\n NgZone,\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n Injector,\n} from '@angular/core';\nimport {Platform, normalizePassiveListenerOptions, _getEventTarget} from '@angular/cdk/platform';\nimport {isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader} from '@angular/cdk/a11y';\nimport {coerceElement} from '@angular/cdk/coercion';\nimport {_CdkPrivateStyleLoader} from '@angular/cdk/private';\nimport {RippleRef, RippleState, RippleConfig} from './ripple-ref';\nimport {RippleEventManager} from './ripple-event-manager';\n\n/**\n * Interface that describes the target for launching ripples.\n * It defines the ripple configuration and disabled state for interaction ripples.\n * @docs-private\n */\nexport interface RippleTarget {\n /** Configuration for ripples that are launched on pointer down. */\n rippleConfig: RippleConfig;\n /** Whether ripples on pointer down should be disabled. */\n rippleDisabled: boolean;\n}\n\n/** Interfaces the defines ripple element transition event listeners. */\ninterface RippleEventListeners {\n onTransitionEnd: EventListener;\n onTransitionCancel: EventListener;\n fallbackTimer: ReturnType<typeof setTimeout> | null;\n}\n\n/**\n * Default ripple animation configuration for ripples without an explicit\n * animation config specified.\n */\nexport const defaultRippleAnimationConfig = {\n enterDuration: 225,\n exitDuration: 150,\n};\n\n/**\n * Timeout for ignoring mouse events. Mouse events will be temporary ignored after touch\n * events to avoid synthetic mouse events.\n */\nconst ignoreMouseEventsTimeout = 800;\n\n/** Options used to bind a passive capturing event. */\nconst passiveCapturingEventOptions = normalizePassiveListenerOptions({\n passive: true,\n capture: true,\n});\n\n/** Events that signal that the pointer is down. */\nconst pointerDownEvents = ['mousedown', 'touchstart'];\n\n/** Events that signal that the pointer is up. */\nconst pointerUpEvents = ['mouseup', 'mouseleave', 'touchend', 'touchcancel'];\n\n@Component({\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrl: 'ripple-structure.css',\n host: {'mat-ripple-style-loader': ''},\n})\nexport class _MatRippleStylesLoader {}\n\n/**\n * Helper service that performs DOM manipulations. Not intended to be used outside this module.\n * The constructor takes a reference to the ripple directive's host element and a map of DOM\n * event handlers to be installed on the element that triggers ripple animations.\n * This will eventually become a custom renderer once Angular support exists.\n * @docs-private\n */\nexport class RippleRenderer implements EventListenerObject {\n /** Element where the ripples are being added to. */\n private _containerElement!: HTMLElement;\n\n /** Element which triggers the ripple elements on mouse events. */\n private _triggerElement: HTMLElement | null = null;\n\n /** Whether the pointer is currently down or not. */\n private _isPointerDown = false;\n\n /**\n * Map of currently active ripple references.\n * The ripple reference is mapped to its element event listeners.\n * The reason why `| null` is used is that event listeners are added only\n * when the condition is truthy (see the `_startFadeOutTransition` method).\n */\n private _activeRipples = new Map<RippleRef, RippleEventListeners | null>();\n\n /** Latest non-persistent ripple that was triggered. */\n private _mostRecentTransientRipple: RippleRef | null = null;\n\n /** Time in milliseconds when the last touchstart event happened. */\n private _lastTouchStartEvent!: number;\n\n /** Whether pointer-up event listeners have been registered. */\n private _pointerUpEventsRegistered = false;\n\n /**\n * Cached dimensions of the ripple container. Set when the first\n * ripple is shown and cleared once no more ripples are visible.\n */\n private _containerRect: DOMRect | null = null;\n\n private static _eventManager = new RippleEventManager();\n\n constructor(\n private _target: RippleTarget,\n private _ngZone: NgZone,\n elementOrElementRef: HTMLElement | ElementRef<HTMLElement>,\n private _platform: Platform,\n injector?: Injector,\n ) {\n // Only do anything if we're on the browser.\n if (_platform.isBrowser) {\n this._containerElement = coerceElement(elementOrElementRef);\n }\n\n if (injector) {\n injector.get(_CdkPrivateStyleLoader).load(_MatRippleStylesLoader);\n }\n }\n\n /**\n * Fades in a ripple at the given coordinates.\n * @param x Coordinate within the element, along the X axis at which to start the ripple.\n * @param y Coordinate within the element, along the Y axis at which to start the ripple.\n * @param config Extra ripple options.\n */\n fadeInRipple(x: number, y: number, config: RippleConfig = {}): RippleRef {\n const containerRect = (this._containerRect =\n this._containerRect || this._containerElement.getBoundingClientRect());\n const animationConfig = {...defaultRippleAnimationConfig, ...config.animation};\n\n if (config.centered) {\n x = containerRect.left + containerRect.width / 2;\n y = containerRect.top + containerRect.height / 2;\n }\n\n const radius = config.radius || distanceToFurthestCorner(x, y, containerRect);\n const offsetX = x - containerRect.left;\n const offsetY = y - containerRect.top;\n const enterDuration = animationConfig.enterDuration;\n\n const ripple = document.createElement('div');\n ripple.classList.add('mat-ripple-element');\n\n ripple.style.left = `${offsetX - radius}px`;\n ripple.style.top = `${offsetY - radius}px`;\n ripple.style.height = `${radius * 2}px`;\n ripple.style.width = `${radius * 2}px`;\n\n // If a custom color has been specified, set it as inline style. If no color is\n // set, the default color will be applied through the ripple theme styles.\n if (config.color != null) {\n ripple.style.backgroundColor = config.color;\n }\n\n ripple.style.transitionDuration = `${enterDuration}ms`;\n\n this._containerElement.appendChild(ripple);\n\n // By default the browser does not recalculate the styles of dynamically created\n // ripple elements. This is critical to ensure that the `scale` animates properly.\n // We enforce a style recalculation by calling `getComputedStyle` and *accessing* a property.\n // See: https://gist.github.com/paulirish/5d52fb081b3570c81e3a\n const computedStyles = window.getComputedStyle(ripple);\n const userTransitionProperty = computedStyles.transitionProperty;\n const userTransitionDuration = computedStyles.transitionDuration;\n\n // Note: We detect whether animation is forcibly disabled through CSS (e.g. through\n // `transition: none` or `display: none`). This is technically unexpected since animations are\n // controlled through the animation config, but this exists for backwards compatibility. This\n // logic does not need to be super accurate since it covers some edge cases which can be easily\n // avoided by users.\n const animationForciblyDisabledThroughCss =\n userTransitionProperty === 'none' ||\n // Note: The canonical unit for serialized CSS `<time>` properties is seconds. Additionally\n // some browsers expand the duration for every property (in our case `opacity` and `transform`).\n userTransitionDuration === '0s' ||\n userTransitionDuration === '0s, 0s' ||\n // If the container is 0x0, it's likely `display: none`.\n (containerRect.width === 0 && containerRect.height === 0);\n\n // Exposed reference to the ripple that will be returned.\n const rippleRef = new RippleRef(this, ripple, config, animationForciblyDisabledThroughCss);\n\n // Start the enter animation by setting the transform/scale to 100%. The animation will\n // execute as part of this statement because we forced a style recalculation before.\n // Note: We use a 3d transform here in order to avoid an issue in Safari where\n // the ripples aren't clipped when inside the shadow DOM (see #24028).\n ripple.style.transform = 'scale3d(1, 1, 1)';\n\n rippleRef.state = RippleState.FADING_IN;\n\n if (!config.persistent) {\n this._mostRecentTransientRipple = rippleRef;\n }\n\n let eventListeners: RippleEventListeners | null = null;\n\n // Do not register the `transition` event listener if fade-in and fade-out duration\n // are set to zero. The events won't fire anyway and we can save resources here.\n if (!animationForciblyDisabledThroughCss && (enterDuration || animationConfig.exitDuration)) {\n this._ngZone.runOutsideAngular(() => {\n const onTransitionEnd = () => {\n // Clear the fallback timer since the transition fired correctly.\n if (eventListeners) {\n eventListeners.fallbackTimer = null;\n }\n clearTimeout(fallbackTimer);\n this._finishRippleTransition(rippleRef);\n };\n const onTransitionCancel = () => this._destroyRipple(rippleRef);\n\n // In some cases where there's a higher load on the browser, it can choose not to dispatch\n // neither `transitionend` nor `transitioncancel` (see b/227356674). This timer serves as a\n // fallback for such cases so that the ripple doesn't become stuck. We add a 100ms buffer\n // because timers aren't precise. Note that another approach can be to transition the ripple\n // to the `VISIBLE` state immediately above and to `FADING_IN` afterwards inside\n // `transitionstart`. We go with the timer because it's one less event listener and\n // it's less likely to break existing tests.\n const fallbackTimer = setTimeout(onTransitionCancel, enterDuration + 100);\n\n ripple.addEventListener('transitionend', onTransitionEnd);\n // If the transition is cancelled (e.g. due to DOM removal), we destroy the ripple\n // directly as otherwise we would keep it part of the ripple container forever.\n // https://www.w3.org/TR/css-transitions-1/#:~:text=no%20longer%20in%20the%20document.\n ripple.addEventListener('transitioncancel', onTransitionCancel);\n eventListeners = {onTransitionEnd, onTransitionCancel, fallbackTimer};\n });\n }\n\n // Add the ripple reference to the list of all active ripples.\n this._activeRipples.set(rippleRef, eventListeners);\n\n // In case there is no fade-in transition duration, we need to manually call the transition\n // end listener because `transitionend` doesn't fire if there is no transition.\n if (animationForciblyDisabledThroughCss || !enterDuration) {\n this._finishRippleTransition(rippleRef);\n }\n\n return rippleRef;\n }\n\n /** Fades out a ripple reference. */\n fadeOutRipple(rippleRef: RippleRef) {\n // For ripples already fading out or hidden, this should be a noop.\n if (rippleRef.state === RippleState.FADING_OUT || rippleRef.state === RippleState.HIDDEN) {\n return;\n }\n\n const rippleEl = rippleRef.element;\n const animationConfig = {...defaultRippleAnimationConfig, ...rippleRef.config.animation};\n\n // This starts the fade-out transition and will fire the transition end listener that\n // removes the ripple element from the DOM.\n rippleEl.style.transitionDuration = `${animationConfig.exitDuration}ms`;\n rippleEl.style.opacity = '0';\n rippleRef.state = RippleState.FADING_OUT;\n\n // In case there is no fade-out transition duration, we need to manually call the\n // transition end listener because `transitionend` doesn't fire if there is no transition.\n if (rippleRef._animationForciblyDisabledThroughCss || !animationConfig.exitDuration) {\n this._finishRippleTransition(rippleRef);\n }\n }\n\n /** Fades out all currently active ripples. */\n fadeOutAll() {\n this._getActiveRipples().forEach(ripple => ripple.fadeOut());\n }\n\n /** Fades out all currently active non-persistent ripples. */\n fadeOutAllNonPersistent() {\n this._getActiveRipples().forEach(ripple => {\n if (!ripple.config.persistent) {\n ripple.fadeOut();\n }\n });\n }\n\n /** Sets up the trigger event listeners */\n setupTriggerEvents(elementOrElementRef: HTMLElement | ElementRef<HTMLElement>) {\n const element = coerceElement(elementOrElementRef);\n\n if (!this._platform.isBrowser || !element || element === this._triggerElement) {\n return;\n }\n\n // Remove all previously registered event listeners from the trigger element.\n this._removeTriggerEvents();\n this._triggerElement = element;\n\n // Use event delegation for the trigger events since they're\n // set up during creation and are performance-sensitive.\n pointerDownEvents.forEach(type => {\n RippleRenderer._eventManager.addHandler(this._ngZone, type, element, this);\n });\n }\n\n /**\n * Handles all registered events.\n * @docs-private\n */\n handleEvent(event: Event) {\n if (event.type === 'mousedown') {\n this._onMousedown(event as MouseEvent);\n } else if (event.type === 'touchstart') {\n this._onTouchStart(event as TouchEvent);\n } else {\n this._onPointerUp();\n }\n\n // If pointer-up events haven't been registered yet, do so now.\n // We do this on-demand in order to reduce the total number of event listeners\n // registered by the ripples, which speeds up the rendering time for large UIs.\n if (!this._pointerUpEventsRegistered) {\n // The events for hiding the ripple are bound directly on the trigger, because:\n // 1. Some of them occur frequently (e.g. `mouseleave`) and any advantage we get from\n // delegation will be diminished by having to look through all the data structures often.\n // 2. They aren't as performance-sensitive, because they're bound only after the user\n // has interacted with an element.\n this._ngZone.runOutsideAngular(() => {\n pointerUpEvents.forEach(type => {\n this._triggerElement!.addEventListener(type, this, passiveCapturingEventOptions);\n });\n });\n\n this._pointerUpEventsRegistered = true;\n }\n }\n\n /** Method that will be called if the fade-in or fade-in transition completed. */\n private _finishRippleTransition(rippleRef: RippleRef) {\n if (rippleRef.state === RippleState.FADING_IN) {\n this._startFadeOutTransition(rippleRef);\n } else if (rippleRef.state === RippleState.FADING_OUT) {\n this._destroyRipple(rippleRef);\n }\n }\n\n /**\n * Starts the fade-out transition of the given ripple if it's not persistent and the pointer\n * is not held down anymore.\n */\n private _startFadeOutTransition(rippleRef: RippleRef) {\n const isMostRecentTransientRipple = rippleRef === this._mostRecentTransientRipple;\n const {persistent} = rippleRef.config;\n\n rippleRef.state = RippleState.VISIBLE;\n\n // When the timer runs out while the user has kept their pointer down, we want to\n // keep only the persistent ripples and the latest transient ripple. We do this,\n // because we don't want stacked transient ripples to appear after their enter\n // animation has finished.\n if (!persistent && (!isMostRecentTransientRipple || !this._isPointerDown)) {\n rippleRef.fadeOut();\n }\n }\n\n /** Destroys the given ripple by removing it from the DOM and updating its state. */\n private _destroyRipple(rippleRef: RippleRef) {\n const eventListeners = this._activeRipples.get(rippleRef) ?? null;\n this._activeRipples.delete(rippleRef);\n\n // Clear out the cached bounding rect if we have no more ripples.\n if (!this._activeRipples.size) {\n this._containerRect = null;\n }\n\n // If the current ref is the most recent transient ripple, unset it\n // avoid memory leaks.\n if (rippleRef === this._mostRecentTransientRipple) {\n this._mostRecentTransientRipple = null;\n }\n\n rippleRef.state = RippleState.HIDDEN;\n if (eventListeners !== null) {\n rippleRef.element.removeEventListener('transitionend', eventListeners.onTransitionEnd);\n rippleRef.element.removeEventListener('transitioncancel', eventListeners.onTransitionCancel);\n if (eventListeners.fallbackTimer !== null) {\n clearTimeout(eventListeners.fallbackTimer);\n }\n }\n rippleRef.element.remove();\n }\n\n /** Function being called whenever the trigger is being pressed using mouse. */\n private _onMousedown(event: MouseEvent) {\n // Screen readers will fire fake mouse events for space/enter. Skip launching a\n // ripple in this case for consistency with the non-screen-reader experience.\n const isFakeMousedown = isFakeMousedownFromScreenReader(event);\n const isSyntheticEvent =\n this._lastTouchStartEvent &&\n Date.now() < this._lastTouchStartEvent + ignoreMouseEventsTimeout;\n\n if (!this._target.rippleDisabled && !isFakeMousedown && !isSyntheticEvent) {\n this._isPointerDown = true;\n this.fadeInRipple(event.clientX, event.clientY, this._target.rippleConfig);\n }\n }\n\n /** Function being called whenever the trigger is being pressed using touch. */\n private _onTouchStart(event: TouchEvent) {\n if (!this._target.rippleDisabled && !isFakeTouchstartFromScreenReader(event)) {\n // Some browsers fire mouse events after a `touchstart` event. Those synthetic mouse\n // events will launch a second ripple if we don't ignore mouse events for a specific\n // time after a touchstart event.\n this._lastTouchStartEvent = Date.now();\n this._isPointerDown = true;\n\n // Use `changedTouches` so we skip any touches where the user put\n // their finger down, but used another finger to tap the element again.\n const touches = event.changedTouches as TouchList | undefined;\n\n // According to the typings the touches should always be defined, but in some cases\n // the browser appears to not assign them in tests which leads to flakes.\n if (touches) {\n for (let i = 0; i < touches.length; i++) {\n this.fadeInRipple(touches[i].clientX, touches[i].clientY, this._target.rippleConfig);\n }\n }\n }\n }\n\n /** Function being called whenever the trigger is being released. */\n private _onPointerUp() {\n if (!this._isPointerDown) {\n return;\n }\n\n this._isPointerDown = false;\n\n // Fade-out all ripples that are visible and not persistent.\n this._getActiveRipples().forEach(ripple => {\n // By default, only ripples that are completely visible will fade out on pointer release.\n // If the `terminateOnPointerUp` option is set, ripples that still fade in will also fade out.\n const isVisible =\n ripple.state === RippleState.VISIBLE ||\n (ripple.config.terminateOnPointerUp && ripple.state === RippleState.FADING_IN);\n\n if (!ripple.config.persistent && isVisible) {\n ripple.fadeOut();\n }\n });\n }\n\n private _getActiveRipples(): RippleRef[] {\n return Array.from(this._activeRipples.keys());\n }\n\n /** Removes previously registered event listeners from the trigger element. */\n _removeTriggerEvents() {\n const trigger = this._triggerElement;\n\n if (trigger) {\n pointerDownEvents.forEach(type =>\n RippleRenderer._eventManager.removeHandler(type, trigger, this),\n );\n\n if (this._pointerUpEventsRegistered) {\n pointerUpEvents.forEach(type =>\n trigger.removeEventListener(type, this, passiveCapturingEventOptions),\n );\n\n this._pointerUpEventsRegistered = false;\n }\n }\n }\n}\n\n/**\n * Returns the distance from the point (x, y) to the furthest corner of a rectangle.\n */\nfunction distanceToFurthestCorner(x: number, y: number, rect: DOMRect) {\n const distX = Math.max(Math.abs(x - rect.left), Math.abs(x - rect.right));\n const distY = Math.max(Math.abs(y - rect.top), Math.abs(y - rect.bottom));\n return Math.sqrt(distX * distX + distY * distY);\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 {Platform} from '@angular/cdk/platform';\nimport {\n Directive,\n ElementRef,\n InjectionToken,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Injector,\n inject,\n} from '@angular/core';\nimport {_CdkPrivateStyleLoader} from '@angular/cdk/private';\nimport {RippleAnimationConfig, RippleConfig, RippleRef} from './ripple-ref';\nimport {RippleRenderer, RippleTarget} from './ripple-renderer';\nimport {_animationsDisabled} from '../animation/animation';\n\n/** Configurable options for `matRipple`. */\nexport interface RippleGlobalOptions {\n /**\n * Whether ripples should be disabled. Ripples can be still launched manually by using\n * the `launch()` method. Therefore focus indicators will still show up.\n */\n disabled?: boolean;\n\n /**\n * Default configuration for the animation duration of the ripples. There are two phases with\n * different durations for the ripples: `enter` and `leave`. The durations will be overwritten\n * by the value of `matRippleAnimation` or if animations are disabled.\n */\n animation?: RippleAnimationConfig;\n\n /**\n * Whether ripples should start fading out immediately after the mouse or touch is released. By\n * default, ripples will wait for the enter animation to complete and for mouse or touch release.\n */\n terminateOnPointerUp?: boolean;\n\n /**\n * A namespace to use for ripple loader to allow multiple instances to exist on the same page.\n */\n namespace?: string;\n}\n\n/** Injection token that can be used to specify the global ripple options. */\nexport const MAT_RIPPLE_GLOBAL_OPTIONS = new InjectionToken<RippleGlobalOptions>(\n 'mat-ripple-global-options',\n);\n\n@Directive({\n selector: '[mat-ripple], [matRipple]',\n exportAs: 'matRipple',\n host: {\n 'class': 'mat-ripple',\n '[class.mat-ripple-unbounded]': 'unbounded',\n },\n})\nexport class MatRipple implements OnInit, OnDestroy, RippleTarget {\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _animationsDisabled = _animationsDisabled();\n\n /** Custom color for all ripples. */\n @Input('matRippleColor') color!: string;\n\n /** Whether the ripples should be visible outside the component's bounds. */\n @Input('matRippleUnbounded') unbounded: boolean = false;\n\n /**\n * Whether the ripple always originates from the center of the host element's bounds, rather\n * than originating from the location of the click event.\n */\n @Input('matRippleCentered') centered: boolean = false;\n\n /**\n * If set, the radius in pixels of foreground ripples when fully expanded. If unset, the radius\n * will be the distance from the center of the ripple to the furthest corner of the host element's\n * bounding rectangle.\n */\n @Input('matRippleRadius') radius: number = 0;\n\n /**\n * Configuration for the ripple animation. Allows modifying the enter and exit animation\n * duration of the ripples. The animation durations will be overwritten if animations are\n * disabled.\n */\n @Input('matRippleAnimation') animation!: RippleAnimationConfig;\n\n /**\n * Whether click events will not trigger the ripple. Ripples can be still launched manually\n * by using the `launch()` method.\n */\n @Input('matRippleDisabled')\n get disabled() {\n return this._disabled;\n }\n set disabled(value: boolean) {\n if (value) {\n this.fadeOutAllNonPersistent();\n }\n this._disabled = value;\n this._setupTriggerEventsIfEnabled();\n }\n private _disabled: boolean = false;\n\n /**\n * The element that triggers the ripple when click events are received.\n * Defaults to the directive's host element.\n */\n @Input('matRippleTrigger')\n get trigger() {\n return this._trigger || this._elementRef.nativeElement;\n }\n set trigger(trigger: HTMLElement) {\n this._trigger = trigger;\n this._setupTriggerEventsIfEnabled();\n }\n private _trigger!: HTMLElement;\n\n /** Renderer for the ripple DOM manipulations. */\n private _rippleRenderer: RippleRenderer;\n\n /** Options that are set globally for all ripples. */\n private _globalOptions: RippleGlobalOptions;\n\n /** @docs-private Whether ripple directive is initialized and the input bindings are set. */\n _isInitialized: boolean = false;\n\n constructor(...args: unknown[]);\n\n constructor() {\n const ngZone = inject(NgZone);\n const platform = inject(Platform);\n const globalOptions = inject<RippleGlobalOptions>(MAT_RIPPLE_GLOBAL_OPTIONS, {optional: true});\n const injector = inject(Injector);\n\n // Note: cannot use `inject()` here, because this class\n // gets instantiated manually in the ripple loader.\n this._globalOptions = globalOptions || {};\n this._rippleRenderer = new RippleRenderer(this, ngZone, this._elementRef, platform, injector);\n }\n\n ngOnInit() {\n this._isInitialized = true;\n this._setupTriggerEventsIfEnabled();\n }\n\n ngOnDestroy() {\n this._rippleRenderer._removeTriggerEvents();\n }\n\n /** Fades out all currently showing ripple elements. */\n fadeOutAll() {\n this._rippleRenderer.fadeOutAll();\n }\n\n /** Fades out all currently showing non-persistent ripple elements. */\n fadeOutAllNonPersistent() {\n this._rippleRenderer.fadeOutAllNonPersistent();\n }\n\n /**\n * Ripple configuration from the directive's input values.\n * @docs-private Implemented as part of RippleTarget\n */\n get rippleConfig(): RippleConfig {\n return {\n centered: this.centered,\n radius: this.radius,\n color: this.color,\n animation: {\n ...this._globalOptions.animation,\n ...(this._animationsDisabled ? {enterDuration: 0, exitDuration: 0} : {}),\n ...this.animation,\n },\n terminateOnPointerUp: this._globalOptions.terminateOnPointerUp,\n };\n }\n\n /**\n * Whether ripples on pointer-down are disabled or not.\n * @docs-private Implemented as part of RippleTarget\n */\n get rippleDisabled(): boolean {\n return this.disabled || !!this._globalOptions.disabled;\n }\n\n /** Sets up the trigger event listeners if ripples are enabled. */\n private _setupTriggerEventsIfEnabled() {\n if (!this.disabled && this._isInitialized) {\n this._rippleRenderer.setupTriggerEvents(this.trigger);\n }\n }\n\n /**\n * Launches a manual ripple using the specified ripple configuration.\n * @param config Configuration for the manual ripple.\n */\n launch(config: RippleConfig): RippleRef;\n\n /**\n * Launches a manual ripple at the specified coordinates relative to the viewport.\n * @param x Coordinate along the X axis at which to fade-in the ripple. Coordinate\n * should be relative to the viewport.\n * @param y Coordinate along the Y axis at which to fade-in the ripple. Coordinate\n * should be relative to the viewport.\n * @param config Optional ripple configuration for the manual ripple.\n */\n launch(x: number, y: number, config?: RippleConfig): RippleRef;\n\n /** Launches a manual ripple at the specified coordinated or just by the ripple config. */\n launch(configOrX: number | RippleConfig, y: number = 0, config?: RippleConfig): RippleRef {\n if (typeof configOrX === 'number') {\n return this._rippleRenderer.fadeInRipple(configOrX, y, {...this.rippleConfig, ...config});\n } else {\n return this._rippleRenderer.fadeInRipple(0, 0, {...this.rippleConfig, ...configOrX});\n }\n }\n}\n"],"names":["RippleState","RippleRef","_renderer","element","config","_animationForciblyDisabledThroughCss","state","HIDDEN","constructor","fadeOut","fadeOutRipple","passiveCapturingEventOptions","normalizePassiveListenerOptions","passive","capture","RippleEventManager","_events","Map","addHandler","ngZone","name","handler","handlersForEvent","get","handlersForElement","add","set","Set","runOutsideAngular","document","addEventListener","_delegateEventHandler","removeHandler","delete","size","removeEventListener","event","target","_getEventTarget","type","forEach","handlers","contains","handleEvent","defaultRippleAnimationConfig","enterDuration","exitDuration","ignoreMouseEventsTimeout","pointerDownEvents","pointerUpEvents","_MatRippleStylesLoader","deps","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","isInline","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","args","template","host","RippleRenderer","_target","_ngZone","_platform","_containerElement","_triggerElement","_isPointerDown","_activeRipples","_mostRecentTransientRipple","_lastTouchStartEvent","_pointerUpEventsRegistered","_containerRect","_eventManager","elementOrElementRef","injector","isBrowser","coerceElement","_CdkPrivateStyleLoader","load","fadeInRipple","x","y","containerRect","getBoundingClientRect","animationConfig","animation","centered","left","width","top","height","radius","distanceToFurthestCorner","offsetX","offsetY","ripple","createElement","classList","style","color","backgroundColor","transitionDuration","appendChild","computedStyles","window","getComputedStyle","userTransitionProperty","transitionProperty","userTransitionDuration","animationForciblyDisabledThroughCss","rippleRef","transform","FADING_IN","persistent","eventListeners","onTransitionEnd","fallbackTimer","clearTimeout","_finishRippleTransition","onTransitionCancel","_destroyRipple","setTimeout","FADING_OUT","rippleEl","opacity","fadeOutAll","_getActiveRipples","fadeOutAllNonPersistent","setupTriggerEvents","_removeTriggerEvents","_onMousedown","_onTouchStart","_onPointerUp","_startFadeOutTransition","isMostRecentTransientRipple","VISIBLE","remove","isFakeMousedown","isFakeMousedownFromScreenReader","isSyntheticEvent","Date","now","rippleDisabled","clientX","clientY","rippleConfig","isFakeTouchstartFromScreenReader","touches","changedTouches","i","length","isVisible","terminateOnPointerUp","Array","from","keys","trigger","rect","distX","Math","max","abs","right","distY","bottom","sqrt","MAT_RIPPLE_GLOBAL_OPTIONS","InjectionToken","MatRipple","_elementRef","inject","ElementRef","_animationsDisabled","unbounded","disabled","_disabled","value","_setupTriggerEventsIfEnabled","_trigger","nativeElement","_rippleRenderer","_globalOptions","_isInitialized","NgZone","platform","Platform","globalOptions","optional","Injector","ngOnInit","ngOnDestroy","launch","configOrX","Directive","isStandalone","selector","inputs","properties","classAttribute","exportAs","ngImport","Input"],"mappings":"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"}
{"version":3,"file":"_ripple-chunk.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/core/ripple/ripple-ref.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/core/ripple/ripple-event-manager.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/core/ripple/ripple-renderer.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/core/ripple/ripple.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/** Possible states for a ripple element. */\nexport enum RippleState {\n FADING_IN,\n VISIBLE,\n FADING_OUT,\n HIDDEN,\n}\n\nexport type RippleConfig = {\n color?: string;\n centered?: boolean;\n radius?: number;\n persistent?: boolean;\n animation?: RippleAnimationConfig;\n terminateOnPointerUp?: boolean;\n};\n\n/**\n * Interface that describes the configuration for the animation of a ripple.\n * There are two animation phases with different durations for the ripples.\n */\nexport interface RippleAnimationConfig {\n /** Duration in milliseconds for the enter animation (expansion from point of contact). */\n enterDuration?: number;\n /** Duration in milliseconds for the exit animation (fade-out). */\n exitDuration?: number;\n}\n\n/**\n * Reference to a previously launched ripple element.\n */\nexport class RippleRef {\n /** Current state of the ripple. */\n state: RippleState = RippleState.HIDDEN;\n\n constructor(\n private _renderer: {fadeOutRipple(ref: RippleRef): void},\n /** Reference to the ripple HTML element. */\n public element: HTMLElement,\n /** Ripple configuration used for the ripple. */\n public config: RippleConfig,\n /* Whether animations are forcibly disabled for ripples through CSS. */\n public _animationForciblyDisabledThroughCss = false,\n ) {}\n\n /** Fades out the ripple element. */\n fadeOut() {\n this._renderer.fadeOutRipple(this);\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 {normalizePassiveListenerOptions, _getEventTarget} from '@angular/cdk/platform';\nimport {NgZone} from '@angular/core';\n\n/** Options used to bind a passive capturing event. */\nconst passiveCapturingEventOptions = normalizePassiveListenerOptions({\n passive: true,\n capture: true,\n});\n\n/** Manages events through delegation so that as few event handlers as possible are bound. */\nexport class RippleEventManager {\n private _events = new Map<string, Map<HTMLElement, Set<EventListenerObject>>>();\n\n /** Adds an event handler. */\n addHandler(ngZone: NgZone, name: string, element: HTMLElement, handler: EventListenerObject) {\n const handlersForEvent = this._events.get(name);\n\n if (handlersForEvent) {\n const handlersForElement = handlersForEvent.get(element);\n\n if (handlersForElement) {\n handlersForElement.add(handler);\n } else {\n handlersForEvent.set(element, new Set([handler]));\n }\n } else {\n this._events.set(name, new Map([[element, new Set([handler])]]));\n\n ngZone.runOutsideAngular(() => {\n document.addEventListener(name, this._delegateEventHandler, passiveCapturingEventOptions);\n });\n }\n }\n\n /** Removes an event handler. */\n removeHandler(name: string, element: HTMLElement, handler: EventListenerObject) {\n const handlersForEvent = this._events.get(name);\n\n if (!handlersForEvent) {\n return;\n }\n\n const handlersForElement = handlersForEvent.get(element);\n\n if (!handlersForElement) {\n return;\n }\n\n handlersForElement.delete(handler);\n\n if (handlersForElement.size === 0) {\n handlersForEvent.delete(element);\n }\n\n if (handlersForEvent.size === 0) {\n this._events.delete(name);\n document.removeEventListener(name, this._delegateEventHandler, passiveCapturingEventOptions);\n }\n }\n\n /** Event handler that is bound and which dispatches the events to the different targets. */\n private _delegateEventHandler = (event: Event) => {\n const target = _getEventTarget(event);\n\n if (target) {\n this._events.get(event.type)?.forEach((handlers, element) => {\n if (element === target || element.contains(target as Node)) {\n handlers.forEach(handler => handler.handleEvent(event));\n }\n });\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 */\nimport {\n ElementRef,\n NgZone,\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n Injector,\n} from '@angular/core';\nimport {Platform, normalizePassiveListenerOptions, _getEventTarget} from '@angular/cdk/platform';\nimport {isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader} from '@angular/cdk/a11y';\nimport {coerceElement} from '@angular/cdk/coercion';\nimport {_CdkPrivateStyleLoader} from '@angular/cdk/private';\nimport {RippleRef, RippleState, RippleConfig} from './ripple-ref';\nimport {RippleEventManager} from './ripple-event-manager';\n\n/**\n * Interface that describes the target for launching ripples.\n * It defines the ripple configuration and disabled state for interaction ripples.\n * @docs-private\n */\nexport interface RippleTarget {\n /** Configuration for ripples that are launched on pointer down. */\n rippleConfig: RippleConfig;\n /** Whether ripples on pointer down should be disabled. */\n rippleDisabled: boolean;\n}\n\n/** Interfaces the defines ripple element transition event listeners. */\ninterface RippleEventListeners {\n onTransitionEnd: EventListener;\n onTransitionCancel: EventListener;\n fallbackTimer: ReturnType<typeof setTimeout> | null;\n}\n\n/**\n * Default ripple animation configuration for ripples without an explicit\n * animation config specified.\n */\nexport const defaultRippleAnimationConfig = {\n enterDuration: 225,\n exitDuration: 150,\n};\n\n/**\n * Timeout for ignoring mouse events. Mouse events will be temporary ignored after touch\n * events to avoid synthetic mouse events.\n */\nconst ignoreMouseEventsTimeout = 800;\n\n/** Options used to bind a passive capturing event. */\nconst passiveCapturingEventOptions = normalizePassiveListenerOptions({\n passive: true,\n capture: true,\n});\n\n/** Events that signal that the pointer is down. */\nconst pointerDownEvents = ['mousedown', 'touchstart'];\n\n/** Events that signal that the pointer is up. */\nconst pointerUpEvents = ['mouseup', 'mouseleave', 'touchend', 'touchcancel'];\n\n@Component({\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrl: 'ripple-structure.css',\n host: {'mat-ripple-style-loader': ''},\n})\nexport class _MatRippleStylesLoader {}\n\n/**\n * Helper service that performs DOM manipulations. Not intended to be used outside this module.\n * The constructor takes a reference to the ripple directive's host element and a map of DOM\n * event handlers to be installed on the element that triggers ripple animations.\n * This will eventually become a custom renderer once Angular support exists.\n * @docs-private\n */\nexport class RippleRenderer implements EventListenerObject {\n /** Element where the ripples are being added to. */\n private _containerElement!: HTMLElement;\n\n /** Element which triggers the ripple elements on mouse events. */\n private _triggerElement: HTMLElement | null = null;\n\n /** Whether the pointer is currently down or not. */\n private _isPointerDown = false;\n\n /**\n * Map of currently active ripple references.\n * The ripple reference is mapped to its element event listeners.\n * The reason why `| null` is used is that event listeners are added only\n * when the condition is truthy (see the `_startFadeOutTransition` method).\n */\n private _activeRipples = new Map<RippleRef, RippleEventListeners | null>();\n\n /** Latest non-persistent ripple that was triggered. */\n private _mostRecentTransientRipple: RippleRef | null = null;\n\n /** Time in milliseconds when the last touchstart event happened. */\n private _lastTouchStartEvent!: number;\n\n /** Whether pointer-up event listeners have been registered. */\n private _pointerUpEventsRegistered = false;\n\n /**\n * Cached dimensions of the ripple container. Set when the first\n * ripple is shown and cleared once no more ripples are visible.\n */\n private _containerRect: DOMRect | null = null;\n\n private static _eventManager = new RippleEventManager();\n\n constructor(\n private _target: RippleTarget,\n private _ngZone: NgZone,\n elementOrElementRef: HTMLElement | ElementRef<HTMLElement>,\n private _platform: Platform,\n injector?: Injector,\n ) {\n // Only do anything if we're on the browser.\n if (_platform.isBrowser) {\n this._containerElement = coerceElement(elementOrElementRef);\n }\n\n if (injector) {\n injector.get(_CdkPrivateStyleLoader).load(_MatRippleStylesLoader);\n }\n }\n\n /**\n * Fades in a ripple at the given coordinates.\n * @param x Coordinate within the element, along the X axis at which to start the ripple.\n * @param y Coordinate within the element, along the Y axis at which to start the ripple.\n * @param config Extra ripple options.\n */\n fadeInRipple(x: number, y: number, config: RippleConfig = {}): RippleRef {\n const containerRect = (this._containerRect =\n this._containerRect || this._containerElement.getBoundingClientRect());\n const animationConfig = {...defaultRippleAnimationConfig, ...config.animation};\n\n if (config.centered) {\n x = containerRect.left + containerRect.width / 2;\n y = containerRect.top + containerRect.height / 2;\n }\n\n const radius = config.radius || distanceToFurthestCorner(x, y, containerRect);\n const offsetX = x - containerRect.left;\n const offsetY = y - containerRect.top;\n const enterDuration = animationConfig.enterDuration;\n\n const ripple = document.createElement('div');\n ripple.classList.add('mat-ripple-element');\n\n ripple.style.left = `${offsetX - radius}px`;\n ripple.style.top = `${offsetY - radius}px`;\n ripple.style.height = `${radius * 2}px`;\n ripple.style.width = `${radius * 2}px`;\n\n // If a custom color has been specified, set it as inline style. If no color is\n // set, the default color will be applied through the ripple theme styles.\n if (config.color != null) {\n ripple.style.backgroundColor = config.color;\n }\n\n ripple.style.transitionDuration = `${enterDuration}ms`;\n\n this._containerElement.appendChild(ripple);\n\n // By default the browser does not recalculate the styles of dynamically created\n // ripple elements. This is critical to ensure that the `scale` animates properly.\n // We enforce a style recalculation by calling `getComputedStyle` and *accessing* a property.\n // See: https://gist.github.com/paulirish/5d52fb081b3570c81e3a\n const computedStyles = window.getComputedStyle(ripple);\n const userTransitionProperty = computedStyles.transitionProperty;\n const userTransitionDuration = computedStyles.transitionDuration;\n\n // Note: We detect whether animation is forcibly disabled through CSS (e.g. through\n // `transition: none` or `display: none`). This is technically unexpected since animations are\n // controlled through the animation config, but this exists for backwards compatibility. This\n // logic does not need to be super accurate since it covers some edge cases which can be easily\n // avoided by users.\n const animationForciblyDisabledThroughCss =\n userTransitionProperty === 'none' ||\n // Note: The canonical unit for serialized CSS `<time>` properties is seconds. Additionally\n // some browsers expand the duration for every property (in our case `opacity` and `transform`).\n userTransitionDuration === '0s' ||\n userTransitionDuration === '0s, 0s' ||\n // If the container is 0x0, it's likely `display: none`.\n (containerRect.width === 0 && containerRect.height === 0);\n\n // Exposed reference to the ripple that will be returned.\n const rippleRef = new RippleRef(this, ripple, config, animationForciblyDisabledThroughCss);\n\n // Start the enter animation by setting the transform/scale to 100%. The animation will\n // execute as part of this statement because we forced a style recalculation before.\n // Note: We use a 3d transform here in order to avoid an issue in Safari where\n // the ripples aren't clipped when inside the shadow DOM (see #24028).\n ripple.style.transform = 'scale3d(1, 1, 1)';\n\n rippleRef.state = RippleState.FADING_IN;\n\n if (!config.persistent) {\n this._mostRecentTransientRipple = rippleRef;\n }\n\n let eventListeners: RippleEventListeners | null = null;\n\n // Do not register the `transition` event listener if fade-in and fade-out duration\n // are set to zero. The events won't fire anyway and we can save resources here.\n if (!animationForciblyDisabledThroughCss && (enterDuration || animationConfig.exitDuration)) {\n this._ngZone.runOutsideAngular(() => {\n const onTransitionEnd = () => {\n // Clear the fallback timer since the transition fired correctly.\n if (eventListeners) {\n eventListeners.fallbackTimer = null;\n }\n clearTimeout(fallbackTimer);\n this._finishRippleTransition(rippleRef);\n };\n const onTransitionCancel = () => this._destroyRipple(rippleRef);\n\n // In some cases where there's a higher load on the browser, it can choose not to dispatch\n // neither `transitionend` nor `transitioncancel` (see b/227356674). This timer serves as a\n // fallback for such cases so that the ripple doesn't become stuck. We add a 100ms buffer\n // because timers aren't precise. Note that another approach can be to transition the ripple\n // to the `VISIBLE` state immediately above and to `FADING_IN` afterwards inside\n // `transitionstart`. We go with the timer because it's one less event listener and\n // it's less likely to break existing tests.\n const fallbackTimer = setTimeout(onTransitionCancel, enterDuration + 100);\n\n ripple.addEventListener('transitionend', onTransitionEnd);\n // If the transition is cancelled (e.g. due to DOM removal), we destroy the ripple\n // directly as otherwise we would keep it part of the ripple container forever.\n // https://www.w3.org/TR/css-transitions-1/#:~:text=no%20longer%20in%20the%20document.\n ripple.addEventListener('transitioncancel', onTransitionCancel);\n eventListeners = {onTransitionEnd, onTransitionCancel, fallbackTimer};\n });\n }\n\n // Add the ripple reference to the list of all active ripples.\n this._activeRipples.set(rippleRef, eventListeners);\n\n // In case there is no fade-in transition duration, we need to manually call the transition\n // end listener because `transitionend` doesn't fire if there is no transition.\n if (animationForciblyDisabledThroughCss || !enterDuration) {\n this._finishRippleTransition(rippleRef);\n }\n\n return rippleRef;\n }\n\n /** Fades out a ripple reference. */\n fadeOutRipple(rippleRef: RippleRef) {\n // For ripples already fading out or hidden, this should be a noop.\n if (rippleRef.state === RippleState.FADING_OUT || rippleRef.state === RippleState.HIDDEN) {\n return;\n }\n\n const rippleEl = rippleRef.element;\n const animationConfig = {...defaultRippleAnimationConfig, ...rippleRef.config.animation};\n\n // This starts the fade-out transition and will fire the transition end listener that\n // removes the ripple element from the DOM.\n rippleEl.style.transitionDuration = `${animationConfig.exitDuration}ms`;\n rippleEl.style.opacity = '0';\n rippleRef.state = RippleState.FADING_OUT;\n\n // In case there is no fade-out transition duration, we need to manually call the\n // transition end listener because `transitionend` doesn't fire if there is no transition.\n if (rippleRef._animationForciblyDisabledThroughCss || !animationConfig.exitDuration) {\n this._finishRippleTransition(rippleRef);\n }\n }\n\n /** Fades out all currently active ripples. */\n fadeOutAll() {\n this._getActiveRipples().forEach(ripple => ripple.fadeOut());\n }\n\n /** Fades out all currently active non-persistent ripples. */\n fadeOutAllNonPersistent() {\n this._getActiveRipples().forEach(ripple => {\n if (!ripple.config.persistent) {\n ripple.fadeOut();\n }\n });\n }\n\n /** Sets up the trigger event listeners */\n setupTriggerEvents(elementOrElementRef: HTMLElement | ElementRef<HTMLElement>) {\n const element = coerceElement(elementOrElementRef);\n\n if (!this._platform.isBrowser || !element || element === this._triggerElement) {\n return;\n }\n\n // Remove all previously registered event listeners from the trigger element.\n this._removeTriggerEvents();\n this._triggerElement = element;\n\n // Use event delegation for the trigger events since they're\n // set up during creation and are performance-sensitive.\n pointerDownEvents.forEach(type => {\n RippleRenderer._eventManager.addHandler(this._ngZone, type, element, this);\n });\n }\n\n /**\n * Handles all registered events.\n * @docs-private\n */\n handleEvent(event: Event) {\n if (event.type === 'mousedown') {\n this._onMousedown(event as MouseEvent);\n } else if (event.type === 'touchstart') {\n this._onTouchStart(event as TouchEvent);\n } else {\n this._onPointerUp();\n }\n\n // If pointer-up events haven't been registered yet, do so now.\n // We do this on-demand in order to reduce the total number of event listeners\n // registered by the ripples, which speeds up the rendering time for large UIs.\n if (!this._pointerUpEventsRegistered) {\n // The events for hiding the ripple are bound directly on the trigger, because:\n // 1. Some of them occur frequently (e.g. `mouseleave`) and any advantage we get from\n // delegation will be diminished by having to look through all the data structures often.\n // 2. They aren't as performance-sensitive, because they're bound only after the user\n // has interacted with an element.\n this._ngZone.runOutsideAngular(() => {\n pointerUpEvents.forEach(type => {\n this._triggerElement!.addEventListener(type, this, passiveCapturingEventOptions);\n });\n });\n\n this._pointerUpEventsRegistered = true;\n }\n }\n\n /** Method that will be called if the fade-in or fade-in transition completed. */\n private _finishRippleTransition(rippleRef: RippleRef) {\n if (rippleRef.state === RippleState.FADING_IN) {\n this._startFadeOutTransition(rippleRef);\n } else if (rippleRef.state === RippleState.FADING_OUT) {\n this._destroyRipple(rippleRef);\n }\n }\n\n /**\n * Starts the fade-out transition of the given ripple if it's not persistent and the pointer\n * is not held down anymore.\n */\n private _startFadeOutTransition(rippleRef: RippleRef) {\n const isMostRecentTransientRipple = rippleRef === this._mostRecentTransientRipple;\n const {persistent} = rippleRef.config;\n\n rippleRef.state = RippleState.VISIBLE;\n\n // When the timer runs out while the user has kept their pointer down, we want to\n // keep only the persistent ripples and the latest transient ripple. We do this,\n // because we don't want stacked transient ripples to appear after their enter\n // animation has finished.\n if (!persistent && (!isMostRecentTransientRipple || !this._isPointerDown)) {\n rippleRef.fadeOut();\n }\n }\n\n /** Destroys the given ripple by removing it from the DOM and updating its state. */\n private _destroyRipple(rippleRef: RippleRef) {\n const eventListeners = this._activeRipples.get(rippleRef) ?? null;\n this._activeRipples.delete(rippleRef);\n\n // Clear out the cached bounding rect if we have no more ripples.\n if (!this._activeRipples.size) {\n this._containerRect = null;\n }\n\n // If the current ref is the most recent transient ripple, unset it\n // avoid memory leaks.\n if (rippleRef === this._mostRecentTransientRipple) {\n this._mostRecentTransientRipple = null;\n }\n\n rippleRef.state = RippleState.HIDDEN;\n if (eventListeners !== null) {\n rippleRef.element.removeEventListener('transitionend', eventListeners.onTransitionEnd);\n rippleRef.element.removeEventListener('transitioncancel', eventListeners.onTransitionCancel);\n if (eventListeners.fallbackTimer !== null) {\n clearTimeout(eventListeners.fallbackTimer);\n }\n }\n rippleRef.element.remove();\n }\n\n /** Function being called whenever the trigger is being pressed using mouse. */\n private _onMousedown(event: MouseEvent) {\n // Screen readers will fire fake mouse events for space/enter. Skip launching a\n // ripple in this case for consistency with the non-screen-reader experience.\n const isFakeMousedown = isFakeMousedownFromScreenReader(event);\n const isSyntheticEvent =\n this._lastTouchStartEvent &&\n Date.now() < this._lastTouchStartEvent + ignoreMouseEventsTimeout;\n\n if (!this._target.rippleDisabled && !isFakeMousedown && !isSyntheticEvent) {\n this._isPointerDown = true;\n this.fadeInRipple(event.clientX, event.clientY, this._target.rippleConfig);\n }\n }\n\n /** Function being called whenever the trigger is being pressed using touch. */\n private _onTouchStart(event: TouchEvent) {\n if (!this._target.rippleDisabled && !isFakeTouchstartFromScreenReader(event)) {\n // Some browsers fire mouse events after a `touchstart` event. Those synthetic mouse\n // events will launch a second ripple if we don't ignore mouse events for a specific\n // time after a touchstart event.\n this._lastTouchStartEvent = Date.now();\n this._isPointerDown = true;\n\n // Use `changedTouches` so we skip any touches where the user put\n // their finger down, but used another finger to tap the element again.\n const touches = event.changedTouches as TouchList | undefined;\n\n // According to the typings the touches should always be defined, but in some cases\n // the browser appears to not assign them in tests which leads to flakes.\n if (touches) {\n for (let i = 0; i < touches.length; i++) {\n this.fadeInRipple(touches[i].clientX, touches[i].clientY, this._target.rippleConfig);\n }\n }\n }\n }\n\n /** Function being called whenever the trigger is being released. */\n private _onPointerUp() {\n if (!this._isPointerDown) {\n return;\n }\n\n this._isPointerDown = false;\n\n // Fade-out all ripples that are visible and not persistent.\n this._getActiveRipples().forEach(ripple => {\n // By default, only ripples that are completely visible will fade out on pointer release.\n // If the `terminateOnPointerUp` option is set, ripples that still fade in will also fade out.\n const isVisible =\n ripple.state === RippleState.VISIBLE ||\n (ripple.config.terminateOnPointerUp && ripple.state === RippleState.FADING_IN);\n\n if (!ripple.config.persistent && isVisible) {\n ripple.fadeOut();\n }\n });\n }\n\n private _getActiveRipples(): RippleRef[] {\n return Array.from(this._activeRipples.keys());\n }\n\n /** Removes previously registered event listeners from the trigger element. */\n _removeTriggerEvents() {\n const trigger = this._triggerElement;\n\n if (trigger) {\n pointerDownEvents.forEach(type =>\n RippleRenderer._eventManager.removeHandler(type, trigger, this),\n );\n\n if (this._pointerUpEventsRegistered) {\n pointerUpEvents.forEach(type =>\n trigger.removeEventListener(type, this, passiveCapturingEventOptions),\n );\n\n this._pointerUpEventsRegistered = false;\n }\n }\n }\n}\n\n/**\n * Returns the distance from the point (x, y) to the furthest corner of a rectangle.\n */\nfunction distanceToFurthestCorner(x: number, y: number, rect: DOMRect) {\n const distX = Math.max(Math.abs(x - rect.left), Math.abs(x - rect.right));\n const distY = Math.max(Math.abs(y - rect.top), Math.abs(y - rect.bottom));\n return Math.sqrt(distX * distX + distY * distY);\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 {Platform} from '@angular/cdk/platform';\nimport {\n Directive,\n ElementRef,\n InjectionToken,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Injector,\n inject,\n} from '@angular/core';\nimport {_CdkPrivateStyleLoader} from '@angular/cdk/private';\nimport {RippleAnimationConfig, RippleConfig, RippleRef} from './ripple-ref';\nimport {RippleRenderer, RippleTarget} from './ripple-renderer';\nimport {_animationsDisabled} from '../animation/animation';\n\n/** Configurable options for `matRipple`. */\nexport interface RippleGlobalOptions {\n /**\n * Whether ripples should be disabled. Ripples can be still launched manually by using\n * the `launch()` method. Therefore focus indicators will still show up.\n */\n disabled?: boolean;\n\n /**\n * Default configuration for the animation duration of the ripples. There are two phases with\n * different durations for the ripples: `enter` and `leave`. The durations will be overwritten\n * by the value of `matRippleAnimation` or if animations are disabled.\n */\n animation?: RippleAnimationConfig;\n\n /**\n * Whether ripples should start fading out immediately after the mouse or touch is released. By\n * default, ripples will wait for the enter animation to complete and for mouse or touch release.\n */\n terminateOnPointerUp?: boolean;\n\n /**\n * A namespace to use for ripple loader to allow multiple instances to exist on the same page.\n */\n namespace?: string;\n}\n\n/** Injection token that can be used to specify the global ripple options. */\nexport const MAT_RIPPLE_GLOBAL_OPTIONS = new InjectionToken<RippleGlobalOptions>(\n 'mat-ripple-global-options',\n);\n\n@Directive({\n selector: '[mat-ripple], [matRipple]',\n exportAs: 'matRipple',\n host: {\n 'class': 'mat-ripple',\n '[class.mat-ripple-unbounded]': 'unbounded',\n },\n})\nexport class MatRipple implements OnInit, OnDestroy, RippleTarget {\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _animationsDisabled = _animationsDisabled();\n\n /** Custom color for all ripples. */\n @Input('matRippleColor') color!: string;\n\n /** Whether the ripples should be visible outside the component's bounds. */\n @Input('matRippleUnbounded') unbounded: boolean = false;\n\n /**\n * Whether the ripple always originates from the center of the host element's bounds, rather\n * than originating from the location of the click event.\n */\n @Input('matRippleCentered') centered: boolean = false;\n\n /**\n * If set, the radius in pixels of foreground ripples when fully expanded. If unset, the radius\n * will be the distance from the center of the ripple to the furthest corner of the host element's\n * bounding rectangle.\n */\n @Input('matRippleRadius') radius: number = 0;\n\n /**\n * Configuration for the ripple animation. Allows modifying the enter and exit animation\n * duration of the ripples. The animation durations will be overwritten if animations are\n * disabled.\n */\n @Input('matRippleAnimation') animation!: RippleAnimationConfig;\n\n /**\n * Whether click events will not trigger the ripple. Ripples can be still launched manually\n * by using the `launch()` method.\n */\n @Input('matRippleDisabled')\n get disabled() {\n return this._disabled;\n }\n set disabled(value: boolean) {\n if (value) {\n this.fadeOutAllNonPersistent();\n }\n this._disabled = value;\n this._setupTriggerEventsIfEnabled();\n }\n private _disabled: boolean = false;\n\n /**\n * The element that triggers the ripple when click events are received.\n * Defaults to the directive's host element.\n */\n @Input('matRippleTrigger')\n get trigger() {\n return this._trigger || this._elementRef.nativeElement;\n }\n set trigger(trigger: HTMLElement) {\n this._trigger = trigger;\n this._setupTriggerEventsIfEnabled();\n }\n private _trigger!: HTMLElement;\n\n /** Renderer for the ripple DOM manipulations. */\n private _rippleRenderer: RippleRenderer;\n\n /** Options that are set globally for all ripples. */\n private _globalOptions: RippleGlobalOptions;\n\n /** @docs-private Whether ripple directive is initialized and the input bindings are set. */\n _isInitialized: boolean = false;\n\n constructor(...args: unknown[]);\n\n constructor() {\n const ngZone = inject(NgZone);\n const platform = inject(Platform);\n const globalOptions = inject<RippleGlobalOptions>(MAT_RIPPLE_GLOBAL_OPTIONS, {optional: true});\n const injector = inject(Injector);\n\n // Note: cannot use `inject()` here, because this class\n // gets instantiated manually in the ripple loader.\n this._globalOptions = globalOptions || {};\n this._rippleRenderer = new RippleRenderer(this, ngZone, this._elementRef, platform, injector);\n }\n\n ngOnInit() {\n this._isInitialized = true;\n this._setupTriggerEventsIfEnabled();\n }\n\n ngOnDestroy() {\n this._rippleRenderer._removeTriggerEvents();\n }\n\n /** Fades out all currently showing ripple elements. */\n fadeOutAll() {\n this._rippleRenderer.fadeOutAll();\n }\n\n /** Fades out all currently showing non-persistent ripple elements. */\n fadeOutAllNonPersistent() {\n this._rippleRenderer.fadeOutAllNonPersistent();\n }\n\n /**\n * Ripple configuration from the directive's input values.\n * @docs-private Implemented as part of RippleTarget\n */\n get rippleConfig(): RippleConfig {\n return {\n centered: this.centered,\n radius: this.radius,\n color: this.color,\n animation: {\n ...this._globalOptions.animation,\n ...(this._animationsDisabled ? {enterDuration: 0, exitDuration: 0} : {}),\n ...this.animation,\n },\n terminateOnPointerUp: this._globalOptions.terminateOnPointerUp,\n };\n }\n\n /**\n * Whether ripples on pointer-down are disabled or not.\n * @docs-private Implemented as part of RippleTarget\n */\n get rippleDisabled(): boolean {\n return this.disabled || !!this._globalOptions.disabled;\n }\n\n /** Sets up the trigger event listeners if ripples are enabled. */\n private _setupTriggerEventsIfEnabled() {\n if (!this.disabled && this._isInitialized) {\n this._rippleRenderer.setupTriggerEvents(this.trigger);\n }\n }\n\n /**\n * Launches a manual ripple using the specified ripple configuration.\n * @param config Configuration for the manual ripple.\n */\n launch(config: RippleConfig): RippleRef;\n\n /**\n * Launches a manual ripple at the specified coordinates relative to the viewport.\n * @param x Coordinate along the X axis at which to fade-in the ripple. Coordinate\n * should be relative to the viewport.\n * @param y Coordinate along the Y axis at which to fade-in the ripple. Coordinate\n * should be relative to the viewport.\n * @param config Optional ripple configuration for the manual ripple.\n */\n launch(x: number, y: number, config?: RippleConfig): RippleRef;\n\n /** Launches a manual ripple at the specified coordinated or just by the ripple config. */\n launch(configOrX: number | RippleConfig, y: number = 0, config?: RippleConfig): RippleRef {\n if (typeof configOrX === 'number') {\n return this._rippleRenderer.fadeInRipple(configOrX, y, {...this.rippleConfig, ...config});\n } else {\n return this._rippleRenderer.fadeInRipple(0, 0, {...this.rippleConfig, ...configOrX});\n }\n }\n}\n"],"names":["RippleState","RippleRef","_renderer","element","config","_animationForciblyDisabledThroughCss","state","HIDDEN","constructor","fadeOut","fadeOutRipple","passiveCapturingEventOptions","normalizePassiveListenerOptions","passive","capture","RippleEventManager","_events","Map","addHandler","ngZone","name","handler","handlersForEvent","get","handlersForElement","add","set","Set","runOutsideAngular","document","addEventListener","_delegateEventHandler","removeHandler","delete","size","removeEventListener","event","target","_getEventTarget","type","forEach","handlers","contains","handleEvent","defaultRippleAnimationConfig","enterDuration","exitDuration","ignoreMouseEventsTimeout","pointerDownEvents","pointerUpEvents","_MatRippleStylesLoader","deps","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","isInline","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","args","template","host","RippleRenderer","_target","_ngZone","_platform","_containerElement","_triggerElement","_isPointerDown","_activeRipples","_mostRecentTransientRipple","_lastTouchStartEvent","_pointerUpEventsRegistered","_containerRect","_eventManager","elementOrElementRef","injector","isBrowser","coerceElement","_CdkPrivateStyleLoader","load","fadeInRipple","x","y","containerRect","getBoundingClientRect","animationConfig","animation","centered","left","width","top","height","radius","distanceToFurthestCorner","offsetX","offsetY","ripple","createElement","classList","style","color","backgroundColor","transitionDuration","appendChild","computedStyles","window","getComputedStyle","userTransitionProperty","transitionProperty","userTransitionDuration","animationForciblyDisabledThroughCss","rippleRef","transform","FADING_IN","persistent","eventListeners","onTransitionEnd","fallbackTimer","clearTimeout","_finishRippleTransition","onTransitionCancel","_destroyRipple","setTimeout","FADING_OUT","rippleEl","opacity","fadeOutAll","_getActiveRipples","fadeOutAllNonPersistent","setupTriggerEvents","_removeTriggerEvents","_onMousedown","_onTouchStart","_onPointerUp","_startFadeOutTransition","isMostRecentTransientRipple","VISIBLE","remove","isFakeMousedown","isFakeMousedownFromScreenReader","isSyntheticEvent","Date","now","rippleDisabled","clientX","clientY","rippleConfig","isFakeTouchstartFromScreenReader","touches","changedTouches","i","length","isVisible","terminateOnPointerUp","Array","from","keys","trigger","rect","distX","Math","max","abs","right","distY","bottom","sqrt","MAT_RIPPLE_GLOBAL_OPTIONS","InjectionToken","MatRipple","_elementRef","inject","ElementRef","_animationsDisabled","unbounded","disabled","_disabled","value","_setupTriggerEventsIfEnabled","_trigger","nativeElement","_rippleRenderer","_globalOptions","_isInitialized","NgZone","platform","Platform","globalOptions","optional","Injector","ngOnInit","ngOnDestroy","launch","configOrX","Directive","isStandalone","selector","inputs","properties","classAttribute","exportAs","ngImport","Input"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"_ripple-loader-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/private/ripple-loader.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\nimport {\n Injectable,\n Injector,\n NgZone,\n OnDestroy,\n RendererFactory2,\n inject,\n DOCUMENT,\n} from '@angular/core';\nimport {\n MAT_RIPPLE_GLOBAL_OPTIONS,\n RippleRenderer,\n RippleTarget,\n defaultRippleAnimationConfig,\n} from '../ripple';\nimport {Platform, _getEventTarget} from '@angular/cdk/platform';\nimport {_CdkPrivateStyleLoader} from '@angular/cdk/private';\nimport {_animationsDisabled} from '../animation/animation';\n\n/** The options for the MatRippleLoader's event listeners. */\nconst eventListenerOptions = {capture: true};\n\n/**\n * The events that should trigger the initialization of the ripple.\n * Note that we use `mousedown`, rather than `click`, for mouse devices because\n * we can't rely on `mouseenter` in the shadow DOM and `click` happens too late.\n */\nconst rippleInteractionEvents = ['focus', 'mousedown', 'mouseenter', 'touchstart'];\n\n/** The attribute attached to a component whose ripple has not yet been initialized. */\nconst matRippleUninitialized = 'mat-ripple-loader-uninitialized';\n\n/** Additional classes that should be added to the ripple when it is rendered. */\nconst matRippleClassName = 'mat-ripple-loader-class-name';\n\n/** Whether the ripple should be centered. */\nconst matRippleCentered = 'mat-ripple-loader-centered';\n\n/** Whether the ripple should be disabled. */\nconst matRippleDisabled = 'mat-ripple-loader-disabled';\n\n/**\n * Handles attaching ripples on demand.\n *\n * This service allows us to avoid eagerly creating & attaching MatRipples.\n * It works by creating & attaching a ripple only when a component is first interacted with.\n *\n * @docs-private\n */\n@Injectable({providedIn: 'root'})\nexport class MatRippleLoader implements OnDestroy {\n private _document = inject(DOCUMENT);\n private _animationsDisabled = _animationsDisabled();\n private _globalRippleOptions = inject(MAT_RIPPLE_GLOBAL_OPTIONS, {optional: true});\n private _platform = inject(Platform);\n private _ngZone = inject(NgZone);\n private _injector = inject(Injector);\n private _eventCleanups: (() => void)[];\n private _hosts = new Map<\n HTMLElement,\n {renderer: RippleRenderer; target: RippleTarget; hasSetUpEvents: boolean}\n >();\n\n constructor() {\n const renderer = inject(RendererFactory2).createRenderer(null, null);\n\n this._eventCleanups = this._ngZone.runOutsideAngular(() =>\n rippleInteractionEvents.map(name =>\n renderer.listen(this._document, name, this._onInteraction, eventListenerOptions),\n ),\n );\n }\n\n ngOnDestroy(): void {\n const hosts = this._hosts.keys();\n\n for (const host of hosts) {\n this.destroyRipple(host);\n }\n\n this._eventCleanups.forEach(cleanup => cleanup());\n }\n\n /**\n * Configures the ripple that will be rendered by the ripple loader.\n *\n * Stores the given information about how the ripple should be configured on the host\n * element so that it can later be retrived & used when the ripple is actually created.\n */\n configureRipple(\n host: HTMLElement,\n config: {\n className?: string;\n centered?: boolean;\n disabled?: boolean;\n },\n ): void {\n // Indicates that the ripple has not yet been rendered for this component.\n host.setAttribute(matRippleUninitialized, this._globalRippleOptions?.namespace ?? '');\n\n // Store the additional class name(s) that should be added to the ripple element.\n if (config.className || !host.hasAttribute(matRippleClassName)) {\n host.setAttribute(matRippleClassName, config.className || '');\n }\n\n // Store whether the ripple should be centered.\n if (config.centered) {\n host.setAttribute(matRippleCentered, '');\n }\n\n if (config.disabled) {\n host.setAttribute(matRippleDisabled, '');\n }\n }\n\n /** Sets the disabled state on the ripple instance corresponding to the given host element. */\n setDisabled(host: HTMLElement, disabled: boolean): void {\n const ripple = this._hosts.get(host);\n\n // If the ripple has already been instantiated, just disable it.\n if (ripple) {\n ripple.target.rippleDisabled = disabled;\n\n if (!disabled && !ripple.hasSetUpEvents) {\n ripple.hasSetUpEvents = true;\n ripple.renderer.setupTriggerEvents(host);\n }\n } else if (disabled) {\n // Otherwise, set an attribute so we know what the\n // disabled state should be when the ripple is initialized.\n host.setAttribute(matRippleDisabled, '');\n } else {\n host.removeAttribute(matRippleDisabled);\n }\n }\n\n /**\n * Handles creating and attaching component internals\n * when a component is initially interacted with.\n */\n private _onInteraction = (event: Event) => {\n const eventTarget = _getEventTarget(event);\n\n if (eventTarget instanceof HTMLElement) {\n // TODO(wagnermaciel): Consider batching these events to improve runtime performance.\n const element = eventTarget.closest(\n `[${matRippleUninitialized}=\"${this._globalRippleOptions?.namespace ?? ''}\"]`,\n );\n\n if (element) {\n this._createRipple(element as HTMLElement);\n }\n }\n };\n\n /** Creates a MatRipple and appends it to the given element. */\n private _createRipple(host: HTMLElement): void {\n if (!this._document || this._hosts.has(host)) {\n return;\n }\n\n // Create the ripple element.\n host.querySelector('.mat-ripple')?.remove();\n const rippleEl = this._document.createElement('span');\n rippleEl.classList.add('mat-ripple', host.getAttribute(matRippleClassName)!);\n host.append(rippleEl);\n\n const globalOptions = this._globalRippleOptions;\n const enterDuration = this._animationsDisabled\n ? 0\n : (globalOptions?.animation?.enterDuration ?? defaultRippleAnimationConfig.enterDuration);\n const exitDuration = this._animationsDisabled\n ? 0\n : (globalOptions?.animation?.exitDuration ?? defaultRippleAnimationConfig.exitDuration);\n const target: RippleTarget = {\n rippleDisabled:\n this._animationsDisabled || globalOptions?.disabled || host.hasAttribute(matRippleDisabled),\n rippleConfig: {\n centered: host.hasAttribute(matRippleCentered),\n terminateOnPointerUp: globalOptions?.terminateOnPointerUp,\n animation: {\n enterDuration,\n exitDuration,\n },\n },\n };\n\n const renderer = new RippleRenderer(\n target,\n this._ngZone,\n rippleEl,\n this._platform,\n this._injector,\n );\n const hasSetUpEvents = !target.rippleDisabled;\n\n if (hasSetUpEvents) {\n renderer.setupTriggerEvents(host);\n }\n\n this._hosts.set(host, {\n target,\n renderer,\n hasSetUpEvents,\n });\n\n host.removeAttribute(matRippleUninitialized);\n }\n\n destroyRipple(host: HTMLElement): void {\n const ripple = this._hosts.get(host);\n\n if (ripple) {\n ripple.renderer._removeTriggerEvents();\n this._hosts.delete(host);\n }\n }\n}\n"],"names":["eventListenerOptions","capture","rippleInteractionEvents","matRippleUninitialized","matRippleClassName","matRippleCentered","matRippleDisabled","MatRippleLoader","_document","inject","DOCUMENT","_animationsDisabled","_globalRippleOptions","MAT_RIPPLE_GLOBAL_OPTIONS","optional","_platform","Platform","_ngZone","NgZone","_injector","Injector","_eventCleanups","_hosts","Map","constructor","renderer","RendererFactory2","createRenderer","runOutsideAngular","map","name","listen","_onInteraction","ngOnDestroy","hosts","keys","host","destroyRipple","forEach","cleanup","configureRipple","config","setAttribute","namespace","className","hasAttribute","centered","disabled","setDisabled","ripple","get","target","rippleDisabled","hasSetUpEvents","setupTriggerEvents","removeAttribute","event","eventTarget","_getEventTarget","HTMLElement","element","closest","_createRipple","has","querySelector","remove","rippleEl","createElement","classList","add","getAttribute","append","globalOptions","enterDuration","animation","defaultRippleAnimationConfig","exitDuration","rippleConfig","terminateOnPointerUp","RippleRenderer","set","_removeTriggerEvents","delete","deps","i0","ɵɵFactoryTarget","Injectable","ɵprov","ɵɵngDeclareInjectable","minVersion","version","ngImport","type","decorators","providedIn"],"mappings":"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"}
{"version":3,"file":"_ripple-loader-chunk.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/core/private/ripple-loader.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\nimport {\n Injectable,\n Injector,\n NgZone,\n OnDestroy,\n RendererFactory2,\n inject,\n DOCUMENT,\n} from '@angular/core';\nimport {\n MAT_RIPPLE_GLOBAL_OPTIONS,\n RippleRenderer,\n RippleTarget,\n defaultRippleAnimationConfig,\n} from '../ripple';\nimport {Platform, _getEventTarget} from '@angular/cdk/platform';\nimport {_CdkPrivateStyleLoader} from '@angular/cdk/private';\nimport {_animationsDisabled} from '../animation/animation';\n\n/** The options for the MatRippleLoader's event listeners. */\nconst eventListenerOptions = {capture: true};\n\n/**\n * The events that should trigger the initialization of the ripple.\n * Note that we use `mousedown`, rather than `click`, for mouse devices because\n * we can't rely on `mouseenter` in the shadow DOM and `click` happens too late.\n */\nconst rippleInteractionEvents = ['focus', 'mousedown', 'mouseenter', 'touchstart'];\n\n/** The attribute attached to a component whose ripple has not yet been initialized. */\nconst matRippleUninitialized = 'mat-ripple-loader-uninitialized';\n\n/** Additional classes that should be added to the ripple when it is rendered. */\nconst matRippleClassName = 'mat-ripple-loader-class-name';\n\n/** Whether the ripple should be centered. */\nconst matRippleCentered = 'mat-ripple-loader-centered';\n\n/** Whether the ripple should be disabled. */\nconst matRippleDisabled = 'mat-ripple-loader-disabled';\n\n/**\n * Handles attaching ripples on demand.\n *\n * This service allows us to avoid eagerly creating & attaching MatRipples.\n * It works by creating & attaching a ripple only when a component is first interacted with.\n *\n * @docs-private\n */\n@Injectable({providedIn: 'root'})\nexport class MatRippleLoader implements OnDestroy {\n private _document = inject(DOCUMENT);\n private _animationsDisabled = _animationsDisabled();\n private _globalRippleOptions = inject(MAT_RIPPLE_GLOBAL_OPTIONS, {optional: true});\n private _platform = inject(Platform);\n private _ngZone = inject(NgZone);\n private _injector = inject(Injector);\n private _eventCleanups: (() => void)[];\n private _hosts = new Map<\n HTMLElement,\n {renderer: RippleRenderer; target: RippleTarget; hasSetUpEvents: boolean}\n >();\n\n constructor() {\n const renderer = inject(RendererFactory2).createRenderer(null, null);\n\n this._eventCleanups = this._ngZone.runOutsideAngular(() =>\n rippleInteractionEvents.map(name =>\n renderer.listen(this._document, name, this._onInteraction, eventListenerOptions),\n ),\n );\n }\n\n ngOnDestroy(): void {\n const hosts = this._hosts.keys();\n\n for (const host of hosts) {\n this.destroyRipple(host);\n }\n\n this._eventCleanups.forEach(cleanup => cleanup());\n }\n\n /**\n * Configures the ripple that will be rendered by the ripple loader.\n *\n * Stores the given information about how the ripple should be configured on the host\n * element so that it can later be retrived & used when the ripple is actually created.\n */\n configureRipple(\n host: HTMLElement,\n config: {\n className?: string;\n centered?: boolean;\n disabled?: boolean;\n },\n ): void {\n // Indicates that the ripple has not yet been rendered for this component.\n host.setAttribute(matRippleUninitialized, this._globalRippleOptions?.namespace ?? '');\n\n // Store the additional class name(s) that should be added to the ripple element.\n if (config.className || !host.hasAttribute(matRippleClassName)) {\n host.setAttribute(matRippleClassName, config.className || '');\n }\n\n // Store whether the ripple should be centered.\n if (config.centered) {\n host.setAttribute(matRippleCentered, '');\n }\n\n if (config.disabled) {\n host.setAttribute(matRippleDisabled, '');\n }\n }\n\n /** Sets the disabled state on the ripple instance corresponding to the given host element. */\n setDisabled(host: HTMLElement, disabled: boolean): void {\n const ripple = this._hosts.get(host);\n\n // If the ripple has already been instantiated, just disable it.\n if (ripple) {\n ripple.target.rippleDisabled = disabled;\n\n if (!disabled && !ripple.hasSetUpEvents) {\n ripple.hasSetUpEvents = true;\n ripple.renderer.setupTriggerEvents(host);\n }\n } else if (disabled) {\n // Otherwise, set an attribute so we know what the\n // disabled state should be when the ripple is initialized.\n host.setAttribute(matRippleDisabled, '');\n } else {\n host.removeAttribute(matRippleDisabled);\n }\n }\n\n /**\n * Handles creating and attaching component internals\n * when a component is initially interacted with.\n */\n private _onInteraction = (event: Event) => {\n const eventTarget = _getEventTarget(event);\n\n if (eventTarget instanceof HTMLElement) {\n // TODO(wagnermaciel): Consider batching these events to improve runtime performance.\n const element = eventTarget.closest(\n `[${matRippleUninitialized}=\"${this._globalRippleOptions?.namespace ?? ''}\"]`,\n );\n\n if (element) {\n this._createRipple(element as HTMLElement);\n }\n }\n };\n\n /** Creates a MatRipple and appends it to the given element. */\n private _createRipple(host: HTMLElement): void {\n if (!this._document || this._hosts.has(host)) {\n return;\n }\n\n // Create the ripple element.\n host.querySelector('.mat-ripple')?.remove();\n const rippleEl = this._document.createElement('span');\n rippleEl.classList.add('mat-ripple', host.getAttribute(matRippleClassName)!);\n host.append(rippleEl);\n\n const globalOptions = this._globalRippleOptions;\n const enterDuration = this._animationsDisabled\n ? 0\n : (globalOptions?.animation?.enterDuration ?? defaultRippleAnimationConfig.enterDuration);\n const exitDuration = this._animationsDisabled\n ? 0\n : (globalOptions?.animation?.exitDuration ?? defaultRippleAnimationConfig.exitDuration);\n const target: RippleTarget = {\n rippleDisabled:\n this._animationsDisabled || globalOptions?.disabled || host.hasAttribute(matRippleDisabled),\n rippleConfig: {\n centered: host.hasAttribute(matRippleCentered),\n terminateOnPointerUp: globalOptions?.terminateOnPointerUp,\n animation: {\n enterDuration,\n exitDuration,\n },\n },\n };\n\n const renderer = new RippleRenderer(\n target,\n this._ngZone,\n rippleEl,\n this._platform,\n this._injector,\n );\n const hasSetUpEvents = !target.rippleDisabled;\n\n if (hasSetUpEvents) {\n renderer.setupTriggerEvents(host);\n }\n\n this._hosts.set(host, {\n target,\n renderer,\n hasSetUpEvents,\n });\n\n host.removeAttribute(matRippleUninitialized);\n }\n\n destroyRipple(host: HTMLElement): void {\n const ripple = this._hosts.get(host);\n\n if (ripple) {\n ripple.renderer._removeTriggerEvents();\n this._hosts.delete(host);\n }\n }\n}\n"],"names":["eventListenerOptions","capture","rippleInteractionEvents","matRippleUninitialized","matRippleClassName","matRippleCentered","matRippleDisabled","MatRippleLoader","_document","inject","DOCUMENT","_animationsDisabled","_globalRippleOptions","MAT_RIPPLE_GLOBAL_OPTIONS","optional","_platform","Platform","_ngZone","NgZone","_injector","Injector","_eventCleanups","_hosts","Map","constructor","renderer","RendererFactory2","createRenderer","runOutsideAngular","map","name","listen","_onInteraction","ngOnDestroy","hosts","keys","host","destroyRipple","forEach","cleanup","configureRipple","config","setAttribute","namespace","className","hasAttribute","centered","disabled","setDisabled","ripple","get","target","rippleDisabled","hasSetUpEvents","setupTriggerEvents","removeAttribute","event","eventTarget","_getEventTarget","HTMLElement","element","closest","_createRipple","has","querySelector","remove","rippleEl","createElement","classList","add","getAttribute","append","globalOptions","enterDuration","animation","defaultRippleAnimationConfig","exitDuration","rippleConfig","terminateOnPointerUp","RippleRenderer","set","_removeTriggerEvents","delete","deps","i0","ɵɵFactoryTarget","Injectable","ɵprov","ɵɵngDeclareInjectable","minVersion","version","ngImport","type","decorators","providedIn"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"_ripple-module-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/ripple/ripple-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\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\nimport {MatRipple} from './ripple';\n\n@NgModule({\n imports: [MatRipple],\n exports: [MatRipple, BidiModule],\n})\nexport class MatRippleModule {}\n"],"names":["MatRippleModule","deps","target","i0","ɵɵFactoryTarget","NgModule","ɵmod","ɵɵngDeclareNgModule","minVersion","version","ngImport","type","imports","MatRipple","exports","BidiModule","ɵinj","ɵɵngDeclareInjector","decorators","args"],"mappings":";;;;;MAgBaA,eAAe,CAAA;;;;;UAAfA,eAAe;AAAAC,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;AAAf,EAAA,OAAAC,IAAA,GAAAH,EAAA,CAAAI,mBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,QAAA,EAAAP,EAAA;AAAAQ,IAAAA,IAAA,EAAAX,eAAe;IAAAY,OAAA,EAAA,CAHhBC,SAAS,CAAA;AAAAC,IAAAA,OAAA,EAAA,CACTD,SAAS,EAAEE,UAAU;AAAA,GAAA,CAAA;AAEpB,EAAA,OAAAC,IAAA,GAAAb,EAAA,CAAAc,mBAAA,CAAA;AAAAT,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,QAAA,EAAAP,EAAA;AAAAQ,IAAAA,IAAA,EAAAX,eAAe;cAFLe,UAAU;AAAA,GAAA,CAAA;;;;;;QAEpBf,eAAe;AAAAkB,EAAAA,UAAA,EAAA,CAAA;UAJ3Bb,QAAQ;AAACc,IAAAA,IAAA,EAAA,CAAA;MACRP,OAAO,EAAE,CAACC,SAAS,CAAC;AACpBC,MAAAA,OAAO,EAAE,CAACD,SAAS,EAAEE,UAAU;KAChC;;;;;;"}
{"version":3,"file":"_ripple-module-chunk.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/core/ripple/ripple-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\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\nimport {MatRipple} from './ripple';\n\n@NgModule({\n imports: [MatRipple],\n exports: [MatRipple, BidiModule],\n})\nexport class MatRippleModule {}\n"],"names":["MatRippleModule","deps","target","i0","ɵɵFactoryTarget","NgModule","ɵmod","ɵɵngDeclareNgModule","minVersion","version","ngImport","type","imports","MatRipple","exports","BidiModule","ɵinj","ɵɵngDeclareInjector","decorators","args"],"mappings":";;;;;MAgBaA,eAAe,CAAA;;;;;UAAfA,eAAe;AAAAC,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;AAAf,EAAA,OAAAC,IAAA,GAAAH,EAAA,CAAAI,mBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,QAAA,EAAAP,EAAA;AAAAQ,IAAAA,IAAA,EAAAX,eAAe;IAAAY,OAAA,EAAA,CAHhBC,SAAS,CAAA;AAAAC,IAAAA,OAAA,EAAA,CACTD,SAAS,EAAEE,UAAU;AAAA,GAAA,CAAA;AAEpB,EAAA,OAAAC,IAAA,GAAAb,EAAA,CAAAc,mBAAA,CAAA;AAAAT,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,QAAA,EAAAP,EAAA;AAAAQ,IAAAA,IAAA,EAAAX,eAAe;cAFLe,UAAU;AAAA,GAAA,CAAA;;;;;;QAEpBf,eAAe;AAAAkB,EAAAA,UAAA,EAAA,CAAA;UAJ3Bb,QAAQ;AAACc,IAAAA,IAAA,EAAA,CAAA;MACRP,OAAO,EAAE,CAACC,SAAS,CAAC;AACpBC,MAAAA,OAAO,EAAE,CAACD,SAAS,EAAEE,UAAU;KAChC;;;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"_structural-styles-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/focus-indicators/structural-styles.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\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\n\n/**\n * Component used to load structural styles for focus indicators.\n * @docs-private\n */\n@Component({\n selector: 'structural-styles',\n styleUrl: 'structural-styles.css',\n encapsulation: ViewEncapsulation.None,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class _StructuralStylesLoader {}\n"],"names":["_StructuralStylesLoader","deps","target","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","isInline","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators"],"mappings":";;;MAqBaA,uBAAuB,CAAA;;;;;UAAvBA,uBAAuB;AAAAC,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;AAAvB,EAAA,OAAAC,IAAA,GAAAH,EAAA,CAAAI,oBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,IAAA,EAAAV,uBAAuB;;;;cAHxB,EAAE;AAAAW,IAAAA,QAAA,EAAA,IAAA;IAAAC,MAAA,EAAA,CAAA,srBAAA,CAAA;AAAAC,IAAAA,eAAA,EAAAV,EAAA,CAAAW,uBAAA,CAAAC,MAAA;AAAAC,IAAAA,aAAA,EAAAb,EAAA,CAAAc,iBAAA,CAAAC;AAAA,GAAA,CAAA;;;;;;QAGDlB,uBAAuB;AAAAmB,EAAAA,UAAA,EAAA,CAAA;UAPnCd,SAAS;;gBACE,mBAAmB;MAAAW,aAAA,EAEdC,iBAAiB,CAACC,IAAI;gBAC3B,EAAE;MAAAL,eAAA,EACKC,uBAAuB,CAACC,MAAM;MAAAH,MAAA,EAAA,CAAA,srBAAA;KAAA;;;;;;"}
{"version":3,"file":"_structural-styles-chunk.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/core/focus-indicators/structural-styles.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\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\n\n/**\n * Component used to load structural styles for focus indicators.\n * @docs-private\n */\n@Component({\n selector: 'structural-styles',\n styleUrl: 'structural-styles.css',\n encapsulation: ViewEncapsulation.None,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class _StructuralStylesLoader {}\n"],"names":["_StructuralStylesLoader","deps","target","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","isInline","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators"],"mappings":";;;MAqBaA,uBAAuB,CAAA;;;;;UAAvBA,uBAAuB;AAAAC,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;AAAvB,EAAA,OAAAC,IAAA,GAAAH,EAAA,CAAAI,oBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,IAAA,EAAAV,uBAAuB;;;;cAHxB,EAAE;AAAAW,IAAAA,QAAA,EAAA,IAAA;IAAAC,MAAA,EAAA,CAAA,srBAAA,CAAA;AAAAC,IAAAA,eAAA,EAAAV,EAAA,CAAAW,uBAAA,CAAAC,MAAA;AAAAC,IAAAA,aAAA,EAAAb,EAAA,CAAAc,iBAAA,CAAAC;AAAA,GAAA,CAAA;;;;;;QAGDlB,uBAAuB;AAAAmB,EAAAA,UAAA,EAAA,CAAA;UAPnCd,SAAS;;gBACE,mBAAmB;MAAAW,aAAA,EAEdC,iBAAiB,CAACC,IAAI;gBAC3B,EAAE;MAAAL,eAAA,EACKC,uBAAuB,CAACC,MAAM;MAAAH,MAAA,EAAA,CAAA,srBAAA;KAAA;;;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"autocomplete-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/autocomplete/testing/autocomplete-harness.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\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n TestElement,\n} from '@angular/cdk/testing';\nimport {\n MatOptgroupHarness,\n MatOptionHarness,\n OptgroupHarnessFilters,\n OptionHarnessFilters,\n} from '../../core/testing';\nimport {AutocompleteHarnessFilters} from './autocomplete-harness-filters';\n\nexport class MatAutocompleteHarness extends ComponentHarness {\n private _documentRootLocator = this.documentRootLocatorFactory();\n\n /** The selector for the host element of a `MatAutocomplete` instance. */\n static hostSelector = '.mat-mdc-autocomplete-trigger';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for an autocomplete with specific\n * attributes.\n * @param options Options for filtering which autocomplete instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatAutocompleteHarness>(\n this: ComponentHarnessConstructor<T>,\n options: AutocompleteHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('value', options.value, (harness, value) =>\n HarnessPredicate.stringMatches(harness.getValue(), value),\n )\n .addOption('disabled', options.disabled, async (harness, disabled) => {\n return (await harness.isDisabled()) === disabled;\n });\n }\n\n /** Gets the value of the autocomplete input. */\n async getValue(): Promise<string> {\n return (await this.host()).getProperty<string>('value');\n }\n\n /** Whether the autocomplete input is disabled. */\n async isDisabled(): Promise<boolean> {\n const disabled = (await this.host()).getAttribute('disabled');\n return coerceBooleanProperty(await disabled);\n }\n\n /** Focuses the autocomplete input. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Blurs the autocomplete input. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the autocomplete input is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /** Enters text into the autocomplete. */\n async enterText(value: string): Promise<void> {\n return (await this.host()).sendKeys(value);\n }\n\n /** Clears the input value. */\n async clear(): Promise<void> {\n return (await this.host()).clear();\n }\n\n /** Gets the options inside the autocomplete panel. */\n async getOptions(filters?: Omit<OptionHarnessFilters, 'ancestor'>): Promise<MatOptionHarness[]> {\n if (!(await this.isOpen())) {\n throw new Error('Unable to retrieve options for autocomplete. Autocomplete panel is closed.');\n }\n\n return this._documentRootLocator.locatorForAll(\n MatOptionHarness.with({\n ...(filters || {}),\n ancestor: await this._getPanelSelector(),\n } as OptionHarnessFilters),\n )();\n }\n\n /** Gets the option groups inside the autocomplete panel. */\n async getOptionGroups(\n filters?: Omit<OptgroupHarnessFilters, 'ancestor'>,\n ): Promise<MatOptgroupHarness[]> {\n if (!(await this.isOpen())) {\n throw new Error(\n 'Unable to retrieve option groups for autocomplete. Autocomplete panel is closed.',\n );\n }\n\n return this._documentRootLocator.locatorForAll(\n MatOptgroupHarness.with({\n ...(filters || {}),\n ancestor: await this._getPanelSelector(),\n } as OptgroupHarnessFilters),\n )();\n }\n\n /** Selects the first option matching the given filters. */\n async selectOption(filters: OptionHarnessFilters): Promise<void> {\n await this.focus(); // Focus the input to make sure the autocomplete panel is shown.\n const options = await this.getOptions(filters);\n if (!options.length) {\n throw Error(`Could not find a mat-option matching ${JSON.stringify(filters)}`);\n }\n await options[0].click();\n }\n\n /** Whether the autocomplete is open. */\n async isOpen(): Promise<boolean> {\n const panel = await this._getPanel();\n return !!panel && (await panel.hasClass(`mat-mdc-autocomplete-visible`));\n }\n\n /** Gets the panel associated with this autocomplete trigger. */\n private async _getPanel(): Promise<TestElement | null> {\n // Technically this is static, but it needs to be in a\n // function, because the autocomplete's panel ID can changed.\n return this._documentRootLocator.locatorForOptional(await this._getPanelSelector())();\n }\n\n /** Gets the selector that can be used to find the autocomplete trigger's panel. */\n protected async _getPanelSelector(): Promise<string> {\n return `#${await (await this.host()).getAttribute('aria-controls')}`;\n }\n}\n"],"names":["MatAutocompleteHarness","ComponentHarness","_documentRootLocator","documentRootLocatorFactory","hostSelector","with","options","HarnessPredicate","addOption","value","harness","stringMatches","getValue","disabled","isDisabled","host","getProperty","getAttribute","coerceBooleanProperty","focus","blur","isFocused","enterText","sendKeys","clear","getOptions","filters","isOpen","Error","locatorForAll","MatOptionHarness","ancestor","_getPanelSelector","getOptionGroups","MatOptgroupHarness","selectOption","length","JSON","stringify","click","panel","_getPanel","hasClass","locatorForOptional"],"mappings":";;;;;AAuBM,MAAOA,sBAAuB,SAAQC,gBAAgB,CAAA;AAClDC,EAAAA,oBAAoB,GAAG,IAAI,CAACC,0BAA0B,EAAE;EAGhE,OAAOC,YAAY,GAAG,+BAA+B;AAQrD,EAAA,OAAOC,IAAIA,CAETC,OAAA,GAAsC,EAAE,EAAA;IAExC,OAAO,IAAIC,gBAAgB,CAAC,IAAI,EAAED,OAAO,CAAA,CACtCE,SAAS,CAAC,OAAO,EAAEF,OAAO,CAACG,KAAK,EAAE,CAACC,OAAO,EAAED,KAAK,KAChDF,gBAAgB,CAACI,aAAa,CAACD,OAAO,CAACE,QAAQ,EAAE,EAAEH,KAAK,CAAC,CAAA,CAE1DD,SAAS,CAAC,UAAU,EAAEF,OAAO,CAACO,QAAQ,EAAE,OAAOH,OAAO,EAAEG,QAAQ,KAAI;MACnE,OAAO,CAAC,MAAMH,OAAO,CAACI,UAAU,EAAE,MAAMD,QAAQ;AAClD,IAAA,CAAC,CAAC;AACN,EAAA;EAGA,MAAMD,QAAQA,GAAA;IACZ,OAAO,CAAC,MAAM,IAAI,CAACG,IAAI,EAAE,EAAEC,WAAW,CAAS,OAAO,CAAC;AACzD,EAAA;EAGA,MAAMF,UAAUA,GAAA;AACd,IAAA,MAAMD,QAAQ,GAAG,CAAC,MAAM,IAAI,CAACE,IAAI,EAAE,EAAEE,YAAY,CAAC,UAAU,CAAC;AAC7D,IAAA,OAAOC,qBAAqB,CAAC,MAAML,QAAQ,CAAC;AAC9C,EAAA;EAGA,MAAMM,KAAKA,GAAA;IACT,OAAO,CAAC,MAAM,IAAI,CAACJ,IAAI,EAAE,EAAEI,KAAK,EAAE;AACpC,EAAA;EAGA,MAAMC,IAAIA,GAAA;IACR,OAAO,CAAC,MAAM,IAAI,CAACL,IAAI,EAAE,EAAEK,IAAI,EAAE;AACnC,EAAA;EAGA,MAAMC,SAASA,GAAA;IACb,OAAO,CAAC,MAAM,IAAI,CAACN,IAAI,EAAE,EAAEM,SAAS,EAAE;AACxC,EAAA;EAGA,MAAMC,SAASA,CAACb,KAAa,EAAA;IAC3B,OAAO,CAAC,MAAM,IAAI,CAACM,IAAI,EAAE,EAAEQ,QAAQ,CAACd,KAAK,CAAC;AAC5C,EAAA;EAGA,MAAMe,KAAKA,GAAA;IACT,OAAO,CAAC,MAAM,IAAI,CAACT,IAAI,EAAE,EAAES,KAAK,EAAE;AACpC,EAAA;EAGA,MAAMC,UAAUA,CAACC,OAAgD,EAAA;IAC/D,IAAI,EAAE,MAAM,IAAI,CAACC,MAAM,EAAE,CAAC,EAAE;AAC1B,MAAA,MAAM,IAAIC,KAAK,CAAC,4EAA4E,CAAC;AAC/F,IAAA;IAEA,OAAO,IAAI,CAAC1B,oBAAoB,CAAC2B,aAAa,CAC5CC,gBAAgB,CAACzB,IAAI,CAAC;AACpB,MAAA,IAAIqB,OAAO,IAAI,EAAE,CAAC;AAClBK,MAAAA,QAAQ,EAAE,MAAM,IAAI,CAACC,iBAAiB;KACf,CAAC,CAC3B,EAAE;AACL,EAAA;EAGA,MAAMC,eAAeA,CACnBP,OAAkD,EAAA;IAElD,IAAI,EAAE,MAAM,IAAI,CAACC,MAAM,EAAE,CAAC,EAAE;AAC1B,MAAA,MAAM,IAAIC,KAAK,CACb,kFAAkF,CACnF;AACH,IAAA;IAEA,OAAO,IAAI,CAAC1B,oBAAoB,CAAC2B,aAAa,CAC5CK,kBAAkB,CAAC7B,IAAI,CAAC;AACtB,MAAA,IAAIqB,OAAO,IAAI,EAAE,CAAC;AAClBK,MAAAA,QAAQ,EAAE,MAAM,IAAI,CAACC,iBAAiB;KACb,CAAC,CAC7B,EAAE;AACL,EAAA;EAGA,MAAMG,YAAYA,CAACT,OAA6B,EAAA;AAC9C,IAAA,MAAM,IAAI,CAACP,KAAK,EAAE;IAClB,MAAMb,OAAO,GAAG,MAAM,IAAI,CAACmB,UAAU,CAACC,OAAO,CAAC;AAC9C,IAAA,IAAI,CAACpB,OAAO,CAAC8B,MAAM,EAAE;MACnB,MAAMR,KAAK,CAAC,CAAA,qCAAA,EAAwCS,IAAI,CAACC,SAAS,CAACZ,OAAO,CAAC,CAAA,CAAE,CAAC;AAChF,IAAA;AACA,IAAA,MAAMpB,OAAO,CAAC,CAAC,CAAC,CAACiC,KAAK,EAAE;AAC1B,EAAA;EAGA,MAAMZ,MAAMA,GAAA;AACV,IAAA,MAAMa,KAAK,GAAG,MAAM,IAAI,CAACC,SAAS,EAAE;IACpC,OAAO,CAAC,CAACD,KAAK,KAAK,MAAMA,KAAK,CAACE,QAAQ,CAAC,CAAA,4BAAA,CAA8B,CAAC,CAAC;AAC1E,EAAA;EAGQ,MAAMD,SAASA,GAAA;AAGrB,IAAA,OAAO,IAAI,CAACvC,oBAAoB,CAACyC,kBAAkB,CAAC,MAAM,IAAI,CAACX,iBAAiB,EAAE,CAAC,EAAE;AACvF,EAAA;EAGU,MAAMA,iBAAiBA,GAAA;AAC/B,IAAA,OAAO,CAAA,CAAA,EAAI,MAAM,CAAC,MAAM,IAAI,CAACjB,IAAI,EAAE,EAAEE,YAAY,CAAC,eAAe,CAAC,CAAA,CAAE;AACtE,EAAA;;;;;"}
{"version":3,"file":"autocomplete-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/autocomplete/testing/autocomplete-harness.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\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n TestElement,\n} from '@angular/cdk/testing';\nimport {\n MatOptgroupHarness,\n MatOptionHarness,\n OptgroupHarnessFilters,\n OptionHarnessFilters,\n} from '../../core/testing';\nimport {AutocompleteHarnessFilters} from './autocomplete-harness-filters';\n\nexport class MatAutocompleteHarness extends ComponentHarness {\n private _documentRootLocator = this.documentRootLocatorFactory();\n\n /** The selector for the host element of a `MatAutocomplete` instance. */\n static hostSelector = '.mat-mdc-autocomplete-trigger';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for an autocomplete with specific\n * attributes.\n * @param options Options for filtering which autocomplete instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatAutocompleteHarness>(\n this: ComponentHarnessConstructor<T>,\n options: AutocompleteHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('value', options.value, (harness, value) =>\n HarnessPredicate.stringMatches(harness.getValue(), value),\n )\n .addOption('disabled', options.disabled, async (harness, disabled) => {\n return (await harness.isDisabled()) === disabled;\n });\n }\n\n /** Gets the value of the autocomplete input. */\n async getValue(): Promise<string> {\n return (await this.host()).getProperty<string>('value');\n }\n\n /** Whether the autocomplete input is disabled. */\n async isDisabled(): Promise<boolean> {\n const disabled = (await this.host()).getAttribute('disabled');\n return coerceBooleanProperty(await disabled);\n }\n\n /** Focuses the autocomplete input. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Blurs the autocomplete input. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the autocomplete input is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /** Enters text into the autocomplete. */\n async enterText(value: string): Promise<void> {\n return (await this.host()).sendKeys(value);\n }\n\n /** Clears the input value. */\n async clear(): Promise<void> {\n return (await this.host()).clear();\n }\n\n /** Gets the options inside the autocomplete panel. */\n async getOptions(filters?: Omit<OptionHarnessFilters, 'ancestor'>): Promise<MatOptionHarness[]> {\n if (!(await this.isOpen())) {\n throw new Error('Unable to retrieve options for autocomplete. Autocomplete panel is closed.');\n }\n\n return this._documentRootLocator.locatorForAll(\n MatOptionHarness.with({\n ...(filters || {}),\n ancestor: await this._getPanelSelector(),\n } as OptionHarnessFilters),\n )();\n }\n\n /** Gets the option groups inside the autocomplete panel. */\n async getOptionGroups(\n filters?: Omit<OptgroupHarnessFilters, 'ancestor'>,\n ): Promise<MatOptgroupHarness[]> {\n if (!(await this.isOpen())) {\n throw new Error(\n 'Unable to retrieve option groups for autocomplete. Autocomplete panel is closed.',\n );\n }\n\n return this._documentRootLocator.locatorForAll(\n MatOptgroupHarness.with({\n ...(filters || {}),\n ancestor: await this._getPanelSelector(),\n } as OptgroupHarnessFilters),\n )();\n }\n\n /** Selects the first option matching the given filters. */\n async selectOption(filters: OptionHarnessFilters): Promise<void> {\n await this.focus(); // Focus the input to make sure the autocomplete panel is shown.\n const options = await this.getOptions(filters);\n if (!options.length) {\n throw Error(`Could not find a mat-option matching ${JSON.stringify(filters)}`);\n }\n await options[0].click();\n }\n\n /** Whether the autocomplete is open. */\n async isOpen(): Promise<boolean> {\n const panel = await this._getPanel();\n return !!panel && (await panel.hasClass(`mat-mdc-autocomplete-visible`));\n }\n\n /** Gets the panel associated with this autocomplete trigger. */\n private async _getPanel(): Promise<TestElement | null> {\n // Technically this is static, but it needs to be in a\n // function, because the autocomplete's panel ID can changed.\n return this._documentRootLocator.locatorForOptional(await this._getPanelSelector())();\n }\n\n /** Gets the selector that can be used to find the autocomplete trigger's panel. */\n protected async _getPanelSelector(): Promise<string> {\n return `#${await (await this.host()).getAttribute('aria-controls')}`;\n }\n}\n"],"names":["MatAutocompleteHarness","ComponentHarness","_documentRootLocator","documentRootLocatorFactory","hostSelector","with","options","HarnessPredicate","addOption","value","harness","stringMatches","getValue","disabled","isDisabled","host","getProperty","getAttribute","coerceBooleanProperty","focus","blur","isFocused","enterText","sendKeys","clear","getOptions","filters","isOpen","Error","locatorForAll","MatOptionHarness","ancestor","_getPanelSelector","getOptionGroups","MatOptgroupHarness","selectOption","length","JSON","stringify","click","panel","_getPanel","hasClass","locatorForOptional"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"badge-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/badge/testing/badge-harness.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\nimport {ComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {MatBadgePosition, MatBadgeSize} from '../badge';\nimport {BadgeHarnessFilters} from './badge-harness-filters';\n\n/** Harness for interacting with a standard Material badge in tests. */\nexport class MatBadgeHarness extends ComponentHarness {\n static hostSelector = '.mat-badge';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a badge with specific attributes.\n * @param options Options for narrowing the search:\n * - `text` finds a badge host with a particular text.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: BadgeHarnessFilters = {}): HarnessPredicate<MatBadgeHarness> {\n return new HarnessPredicate(MatBadgeHarness, options).addOption(\n 'text',\n options.text,\n (harness, text) => HarnessPredicate.stringMatches(harness.getText(), text),\n );\n }\n\n private _badgeElement = this.locatorFor('.mat-badge-content');\n\n /** Gets a promise for the badge text. */\n async getText(): Promise<string> {\n return (await this._badgeElement()).text();\n }\n\n /** Gets whether the badge is overlapping the content. */\n async isOverlapping(): Promise<boolean> {\n return (await this.host()).hasClass('mat-badge-overlap');\n }\n\n /** Gets the position of the badge. */\n async getPosition(): Promise<MatBadgePosition> {\n const host = await this.host();\n let result = '';\n\n if (await host.hasClass('mat-badge-above')) {\n result += 'above';\n } else if (await host.hasClass('mat-badge-below')) {\n result += 'below';\n }\n\n if (await host.hasClass('mat-badge-before')) {\n result += ' before';\n } else if (await host.hasClass('mat-badge-after')) {\n result += ' after';\n }\n\n return result.trim() as MatBadgePosition;\n }\n\n /** Gets the size of the badge. */\n async getSize(): Promise<MatBadgeSize> {\n const host = await this.host();\n\n if (await host.hasClass('mat-badge-small')) {\n return 'small';\n } else if (await host.hasClass('mat-badge-large')) {\n return 'large';\n }\n\n return 'medium';\n }\n\n /** Gets whether the badge is hidden. */\n async isHidden(): Promise<boolean> {\n return (await this.host()).hasClass('mat-badge-hidden');\n }\n\n /** Gets whether the badge is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).hasClass('mat-badge-disabled');\n }\n}\n"],"names":["MatBadgeHarness","ComponentHarness","hostSelector","with","options","HarnessPredicate","addOption","text","harness","stringMatches","getText","_badgeElement","locatorFor","isOverlapping","host","hasClass","getPosition","result","trim","getSize","isHidden","isDisabled"],"mappings":";;AAaM,MAAOA,eAAgB,SAAQC,gBAAgB,CAAA;EACnD,OAAOC,YAAY,GAAG,YAAY;AAQlC,EAAA,OAAOC,IAAIA,CAACC,OAAA,GAA+B,EAAE,EAAA;AAC3C,IAAA,OAAO,IAAIC,gBAAgB,CAACL,eAAe,EAAEI,OAAO,CAAC,CAACE,SAAS,CAC7D,MAAM,EACNF,OAAO,CAACG,IAAI,EACZ,CAACC,OAAO,EAAED,IAAI,KAAKF,gBAAgB,CAACI,aAAa,CAACD,OAAO,CAACE,OAAO,EAAE,EAAEH,IAAI,CAAC,CAC3E;AACH,EAAA;AAEQI,EAAAA,aAAa,GAAG,IAAI,CAACC,UAAU,CAAC,oBAAoB,CAAC;EAG7D,MAAMF,OAAOA,GAAA;IACX,OAAO,CAAC,MAAM,IAAI,CAACC,aAAa,EAAE,EAAEJ,IAAI,EAAE;AAC5C,EAAA;EAGA,MAAMM,aAAaA,GAAA;IACjB,OAAO,CAAC,MAAM,IAAI,CAACC,IAAI,EAAE,EAAEC,QAAQ,CAAC,mBAAmB,CAAC;AAC1D,EAAA;EAGA,MAAMC,WAAWA,GAAA;AACf,IAAA,MAAMF,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;IAC9B,IAAIG,MAAM,GAAG,EAAE;AAEf,IAAA,IAAI,MAAMH,IAAI,CAACC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;AAC1CE,MAAAA,MAAM,IAAI,OAAO;IACnB,CAAA,MAAO,IAAI,MAAMH,IAAI,CAACC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;AACjDE,MAAAA,MAAM,IAAI,OAAO;AACnB,IAAA;AAEA,IAAA,IAAI,MAAMH,IAAI,CAACC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;AAC3CE,MAAAA,MAAM,IAAI,SAAS;IACrB,CAAA,MAAO,IAAI,MAAMH,IAAI,CAACC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;AACjDE,MAAAA,MAAM,IAAI,QAAQ;AACpB,IAAA;AAEA,IAAA,OAAOA,MAAM,CAACC,IAAI,EAAsB;AAC1C,EAAA;EAGA,MAAMC,OAAOA,GAAA;AACX,IAAA,MAAML,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;AAE9B,IAAA,IAAI,MAAMA,IAAI,CAACC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;AAC1C,MAAA,OAAO,OAAO;IAChB,CAAA,MAAO,IAAI,MAAMD,IAAI,CAACC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;AACjD,MAAA,OAAO,OAAO;AAChB,IAAA;AAEA,IAAA,OAAO,QAAQ;AACjB,EAAA;EAGA,MAAMK,QAAQA,GAAA;IACZ,OAAO,CAAC,MAAM,IAAI,CAACN,IAAI,EAAE,EAAEC,QAAQ,CAAC,kBAAkB,CAAC;AACzD,EAAA;EAGA,MAAMM,UAAUA,GAAA;IACd,OAAO,CAAC,MAAM,IAAI,CAACP,IAAI,EAAE,EAAEC,QAAQ,CAAC,oBAAoB,CAAC;AAC3D,EAAA;;;;;"}
{"version":3,"file":"badge-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/badge/testing/badge-harness.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\nimport {ComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {MatBadgePosition, MatBadgeSize} from '../badge';\nimport {BadgeHarnessFilters} from './badge-harness-filters';\n\n/** Harness for interacting with a standard Material badge in tests. */\nexport class MatBadgeHarness extends ComponentHarness {\n static hostSelector = '.mat-badge';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a badge with specific attributes.\n * @param options Options for narrowing the search:\n * - `text` finds a badge host with a particular text.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: BadgeHarnessFilters = {}): HarnessPredicate<MatBadgeHarness> {\n return new HarnessPredicate(MatBadgeHarness, options).addOption(\n 'text',\n options.text,\n (harness, text) => HarnessPredicate.stringMatches(harness.getText(), text),\n );\n }\n\n private _badgeElement = this.locatorFor('.mat-badge-content');\n\n /** Gets a promise for the badge text. */\n async getText(): Promise<string> {\n return (await this._badgeElement()).text();\n }\n\n /** Gets whether the badge is overlapping the content. */\n async isOverlapping(): Promise<boolean> {\n return (await this.host()).hasClass('mat-badge-overlap');\n }\n\n /** Gets the position of the badge. */\n async getPosition(): Promise<MatBadgePosition> {\n const host = await this.host();\n let result = '';\n\n if (await host.hasClass('mat-badge-above')) {\n result += 'above';\n } else if (await host.hasClass('mat-badge-below')) {\n result += 'below';\n }\n\n if (await host.hasClass('mat-badge-before')) {\n result += ' before';\n } else if (await host.hasClass('mat-badge-after')) {\n result += ' after';\n }\n\n return result.trim() as MatBadgePosition;\n }\n\n /** Gets the size of the badge. */\n async getSize(): Promise<MatBadgeSize> {\n const host = await this.host();\n\n if (await host.hasClass('mat-badge-small')) {\n return 'small';\n } else if (await host.hasClass('mat-badge-large')) {\n return 'large';\n }\n\n return 'medium';\n }\n\n /** Gets whether the badge is hidden. */\n async isHidden(): Promise<boolean> {\n return (await this.host()).hasClass('mat-badge-hidden');\n }\n\n /** Gets whether the badge is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).hasClass('mat-badge-disabled');\n }\n}\n"],"names":["MatBadgeHarness","ComponentHarness","hostSelector","with","options","HarnessPredicate","addOption","text","harness","stringMatches","getText","_badgeElement","locatorFor","isOverlapping","host","hasClass","getPosition","result","trim","getSize","isHidden","isDisabled"],"mappings":";;AAaM,MAAOA,eAAgB,SAAQC,gBAAgB,CAAA;EACnD,OAAOC,YAAY,GAAG,YAAY;AAQlC,EAAA,OAAOC,IAAIA,CAACC,OAAA,GAA+B,EAAE,EAAA;AAC3C,IAAA,OAAO,IAAIC,gBAAgB,CAACL,eAAe,EAAEI,OAAO,CAAC,CAACE,SAAS,CAC7D,MAAM,EACNF,OAAO,CAACG,IAAI,EACZ,CAACC,OAAO,EAAED,IAAI,KAAKF,gBAAgB,CAACI,aAAa,CAACD,OAAO,CAACE,OAAO,EAAE,EAAEH,IAAI,CAAC,CAC3E;AACH,EAAA;AAEQI,EAAAA,aAAa,GAAG,IAAI,CAACC,UAAU,CAAC,oBAAoB,CAAC;EAG7D,MAAMF,OAAOA,GAAA;IACX,OAAO,CAAC,MAAM,IAAI,CAACC,aAAa,EAAE,EAAEJ,IAAI,EAAE;AAC5C,EAAA;EAGA,MAAMM,aAAaA,GAAA;IACjB,OAAO,CAAC,MAAM,IAAI,CAACC,IAAI,EAAE,EAAEC,QAAQ,CAAC,mBAAmB,CAAC;AAC1D,EAAA;EAGA,MAAMC,WAAWA,GAAA;AACf,IAAA,MAAMF,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;IAC9B,IAAIG,MAAM,GAAG,EAAE;AAEf,IAAA,IAAI,MAAMH,IAAI,CAACC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;AAC1CE,MAAAA,MAAM,IAAI,OAAO;IACnB,CAAA,MAAO,IAAI,MAAMH,IAAI,CAACC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;AACjDE,MAAAA,MAAM,IAAI,OAAO;AACnB,IAAA;AAEA,IAAA,IAAI,MAAMH,IAAI,CAACC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;AAC3CE,MAAAA,MAAM,IAAI,SAAS;IACrB,CAAA,MAAO,IAAI,MAAMH,IAAI,CAACC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;AACjDE,MAAAA,MAAM,IAAI,QAAQ;AACpB,IAAA;AAEA,IAAA,OAAOA,MAAM,CAACC,IAAI,EAAsB;AAC1C,EAAA;EAGA,MAAMC,OAAOA,GAAA;AACX,IAAA,MAAML,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;AAE9B,IAAA,IAAI,MAAMA,IAAI,CAACC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;AAC1C,MAAA,OAAO,OAAO;IAChB,CAAA,MAAO,IAAI,MAAMD,IAAI,CAACC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;AACjD,MAAA,OAAO,OAAO;AAChB,IAAA;AAEA,IAAA,OAAO,QAAQ;AACjB,EAAA;EAGA,MAAMK,QAAQA,GAAA;IACZ,OAAO,CAAC,MAAM,IAAI,CAACN,IAAI,EAAE,EAAEC,QAAQ,CAAC,kBAAkB,CAAC;AACzD,EAAA;EAGA,MAAMM,UAAUA,GAAA;IACd,OAAO,CAAC,MAAM,IAAI,CAACP,IAAI,EAAE,EAAEC,QAAQ,CAAC,oBAAoB,CAAC;AAC3D,EAAA;;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"badge.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/badge/badge.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/badge/badge-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\nimport {_IdGenerator, AriaDescriber, InteractivityChecker} from '@angular/cdk/a11y';\n\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Renderer2,\n ViewEncapsulation,\n DOCUMENT,\n AfterViewInit,\n} from '@angular/core';\nimport {_animationsDisabled, ThemePalette} from '../core';\nimport {_CdkPrivateStyleLoader, _VisuallyHiddenLoader} from '@angular/cdk/private';\n\n/** Allowed position options for matBadgePosition */\nexport type MatBadgePosition =\n | 'above after'\n | 'above before'\n | 'below before'\n | 'below after'\n | 'before'\n | 'after'\n | 'above'\n | 'below';\n\n/** Allowed size options for matBadgeSize */\nexport type MatBadgeSize = 'small' | 'medium' | 'large';\n\nconst BADGE_CONTENT_CLASS = 'mat-badge-content';\n\n/**\n * Component used to load the structural styles of the badge.\n * @docs-private\n */\n@Component({\n styleUrl: 'badge.css',\n encapsulation: ViewEncapsulation.None,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class _MatBadgeStyleLoader {}\n\n/** Directive to display a text badge. */\n@Directive({\n selector: '[matBadge]',\n host: {\n 'class': 'mat-badge',\n '[class.mat-badge-overlap]': 'overlap',\n '[class.mat-badge-above]': 'isAbove()',\n '[class.mat-badge-below]': '!isAbove()',\n '[class.mat-badge-before]': '!isAfter()',\n '[class.mat-badge-after]': 'isAfter()',\n '[class.mat-badge-small]': 'size === \"small\"',\n '[class.mat-badge-medium]': 'size === \"medium\"',\n '[class.mat-badge-large]': 'size === \"large\"',\n '[class.mat-badge-hidden]': 'hidden || !content',\n '[class.mat-badge-disabled]': 'disabled',\n },\n})\nexport class MatBadge implements OnInit, AfterViewInit, OnDestroy {\n private _ngZone = inject(NgZone);\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _ariaDescriber = inject(AriaDescriber);\n private _renderer = inject(Renderer2);\n private _animationsDisabled = _animationsDisabled();\n private _idGenerator = inject(_IdGenerator);\n\n /**\n * Theme color of the badge. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/badge/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input('matBadgeColor')\n get color(): ThemePalette {\n return this._color;\n }\n set color(value: ThemePalette) {\n this._setColor(value);\n this._color = value;\n }\n private _color: ThemePalette = 'primary';\n\n /** Whether the badge should overlap its contents or not */\n @Input({alias: 'matBadgeOverlap', transform: booleanAttribute}) overlap: boolean = true;\n\n /** Whether the badge is disabled. */\n @Input({alias: 'matBadgeDisabled', transform: booleanAttribute}) disabled: boolean = false;\n\n /**\n * Position the badge should reside.\n * Accepts any combination of 'above'|'below' and 'before'|'after'\n */\n @Input('matBadgePosition') position: MatBadgePosition = 'above after';\n\n /** The content for the badge */\n @Input('matBadge')\n get content(): string | number | undefined | null {\n return this._content;\n }\n set content(newContent: string | number | undefined | null) {\n this._updateRenderedContent(newContent);\n }\n private _content: string | number | undefined | null;\n\n /** Message used to describe the decorated element via aria-describedby */\n @Input('matBadgeDescription')\n get description(): string {\n return this._description;\n }\n set description(newDescription: string) {\n this._updateDescription(newDescription);\n }\n private _description!: string;\n\n /** Size of the badge. Can be 'small', 'medium', or 'large'. */\n @Input('matBadgeSize') size: MatBadgeSize = 'medium';\n\n /** Whether the badge is hidden. */\n @Input({alias: 'matBadgeHidden', transform: booleanAttribute}) hidden: boolean = false;\n\n /** Visible badge element. */\n private _badgeElement: HTMLElement | undefined;\n\n /** Inline badge description. Used when the badge is applied to non-interactive host elements. */\n private _inlineBadgeDescription: HTMLElement | undefined;\n\n /** Whether the OnInit lifecycle hook has run yet */\n private _isInitialized = false;\n\n /** InteractivityChecker to determine if the badge host is focusable. */\n private _interactivityChecker = inject(InteractivityChecker);\n\n private _document = inject(DOCUMENT);\n\n constructor(...args: unknown[]);\n\n constructor() {\n const styleLoader = inject(_CdkPrivateStyleLoader);\n styleLoader.load(_MatBadgeStyleLoader);\n styleLoader.load(_VisuallyHiddenLoader);\n\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const nativeElement = this._elementRef.nativeElement;\n\n if (nativeElement.nodeType !== nativeElement.ELEMENT_NODE) {\n throw Error('matBadge must be attached to an element node.');\n }\n }\n }\n\n /** Whether the badge is above the host or not */\n isAbove(): boolean {\n return this.position.indexOf('below') === -1;\n }\n\n /** Whether the badge is after the host or not */\n isAfter(): boolean {\n return this.position.indexOf('before') === -1;\n }\n\n /**\n * Gets the element into which the badge's content is being rendered. Undefined if the element\n * hasn't been created (e.g. if the badge doesn't have content).\n */\n getBadgeElement(): HTMLElement | undefined {\n return this._badgeElement;\n }\n\n ngOnInit() {\n // We may have server-side rendered badge that we need to clear.\n // We need to do this in ngOnInit because the full content of the component\n // on which the badge is attached won't necessarily be in the DOM until this point.\n this._clearExistingBadges();\n\n if (this.content && !this._badgeElement) {\n this._badgeElement = this._createBadgeElement();\n this._updateRenderedContent(this.content);\n }\n\n this._isInitialized = true;\n }\n\n ngAfterViewInit() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const nativeElement = this._elementRef.nativeElement;\n\n // Heads-up for developers to avoid putting matBadge on <mat-icon>\n // as it is aria-hidden by default docs mention this at:\n // https://material.angular.dev/components/badge/overview#accessibility\n if (\n nativeElement.tagName.toLowerCase() === 'mat-icon' &&\n nativeElement.getAttribute('aria-hidden') === 'true'\n ) {\n console.warn(\n `Detected a matBadge on an \"aria-hidden\" \"<mat-icon>\". ` +\n `Consider setting aria-hidden=\"false\" in order to surface the information assistive technology.` +\n `\\n${nativeElement.outerHTML}`,\n );\n }\n }\n }\n\n ngOnDestroy() {\n // ViewEngine only: when creating a badge through the Renderer, Angular remembers its index.\n // We have to destroy it ourselves, otherwise it'll be retained in memory.\n if (this._renderer.destroyNode) {\n this._renderer.destroyNode(this._badgeElement);\n this._inlineBadgeDescription?.remove();\n }\n\n this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);\n }\n\n /** Gets whether the badge's host element is interactive. */\n private _isHostInteractive(): boolean {\n // Ignore visibility since it requires an expensive style caluclation.\n return this._interactivityChecker.isFocusable(this._elementRef.nativeElement, {\n ignoreVisibility: true,\n });\n }\n\n /** Creates the badge element */\n private _createBadgeElement(): HTMLElement {\n const badgeElement = this._renderer.createElement('span');\n const activeClass = 'mat-badge-active';\n\n badgeElement.setAttribute('id', this._idGenerator.getId('mat-badge-content-'));\n\n // The badge is aria-hidden because we don't want it to appear in the page's navigation\n // flow. Instead, we use the badge to describe the decorated element with aria-describedby.\n badgeElement.setAttribute('aria-hidden', 'true');\n badgeElement.classList.add(BADGE_CONTENT_CLASS);\n\n if (this._animationsDisabled) {\n badgeElement.classList.add('_mat-animation-noopable');\n }\n\n this._elementRef.nativeElement.appendChild(badgeElement);\n\n // animate in after insertion\n if (typeof requestAnimationFrame === 'function' && !this._animationsDisabled) {\n this._ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => {\n badgeElement.classList.add(activeClass);\n });\n });\n } else {\n badgeElement.classList.add(activeClass);\n }\n\n return badgeElement;\n }\n\n /** Update the text content of the badge element in the DOM, creating the element if necessary. */\n private _updateRenderedContent(newContent: string | number | undefined | null): void {\n const newContentNormalized: string = `${newContent ?? ''}`.trim();\n\n // Don't create the badge element if the directive isn't initialized because we want to\n // append the badge element to the *end* of the host element's content for backwards\n // compatibility.\n if (this._isInitialized && newContentNormalized && !this._badgeElement) {\n this._badgeElement = this._createBadgeElement();\n }\n\n if (this._badgeElement) {\n this._badgeElement.textContent = newContentNormalized;\n }\n\n this._content = newContentNormalized;\n }\n\n /** Updates the host element's aria description via AriaDescriber. */\n private _updateDescription(newDescription: string): void {\n // Always start by removing the aria-describedby; we will add a new one if necessary.\n this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);\n\n // NOTE: We only check whether the host is interactive here, which happens during\n // when then badge content changes. It is possible that the host changes\n // interactivity status separate from one of these. However, watching the interactivity\n // status of the host would require a `MutationObserver`, which is likely more code + overhead\n // than it's worth; from usages inside Google, we see that the vats majority of badges either\n // never change interactivity, or also set `matBadgeHidden` based on the same condition.\n\n if (!newDescription || this._isHostInteractive()) {\n this._removeInlineDescription();\n }\n\n this._description = newDescription;\n\n // We don't add `aria-describedby` for non-interactive hosts elements because we\n // instead insert the description inline.\n if (this._isHostInteractive()) {\n this._ariaDescriber.describe(this._elementRef.nativeElement, newDescription);\n } else {\n this._updateInlineDescription();\n }\n }\n\n private _updateInlineDescription() {\n // Create the inline description element if it doesn't exist\n if (!this._inlineBadgeDescription) {\n this._inlineBadgeDescription = this._document.createElement('span');\n this._inlineBadgeDescription.classList.add('cdk-visually-hidden');\n }\n\n this._inlineBadgeDescription.textContent = this.description;\n this._badgeElement?.appendChild(this._inlineBadgeDescription);\n }\n\n private _removeInlineDescription() {\n this._inlineBadgeDescription?.remove();\n this._inlineBadgeDescription = undefined;\n }\n\n /** Adds css theme class given the color to the component host */\n private _setColor(colorPalette: ThemePalette) {\n const classList = this._elementRef.nativeElement.classList;\n classList.remove(`mat-badge-${this._color}`);\n if (colorPalette) {\n classList.add(`mat-badge-${colorPalette}`);\n }\n }\n\n /** Clears any existing badges that might be left over from server-side rendering. */\n private _clearExistingBadges() {\n // Only check direct children of this host element in order to avoid deleting\n // any badges that might exist in descendant elements.\n const badges = this._elementRef.nativeElement.querySelectorAll(\n `:scope > .${BADGE_CONTENT_CLASS}`,\n );\n for (const badgeElement of Array.from(badges)) {\n if (badgeElement !== this._badgeElement) {\n badgeElement.remove();\n }\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 {NgModule} from '@angular/core';\nimport {A11yModule} from '@angular/cdk/a11y';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {MatBadge, _MatBadgeStyleLoader} from './badge';\n\n@NgModule({\n // Note: we _shouldn't_ have to import `_MatBadgeStyleLoader`,\n // but it seems to be necessary for tests.\n imports: [A11yModule, MatBadge, _MatBadgeStyleLoader],\n exports: [MatBadge, BidiModule],\n})\nexport class MatBadgeModule {}\n"],"names":["BADGE_CONTENT_CLASS","_MatBadgeStyleLoader","deps","target","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","isInline","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","args","template","MatBadge","_ngZone","inject","NgZone","_elementRef","ElementRef","_ariaDescriber","AriaDescriber","_renderer","Renderer2","_animationsDisabled","_idGenerator","_IdGenerator","color","_color","value","_setColor","overlap","disabled","position","content","_content","newContent","_updateRenderedContent","description","_description","newDescription","_updateDescription","size","hidden","_badgeElement","_inlineBadgeDescription","_isInitialized","_interactivityChecker","InteractivityChecker","_document","DOCUMENT","constructor","styleLoader","_CdkPrivateStyleLoader","load","_VisuallyHiddenLoader","ngDevMode","nativeElement","nodeType","ELEMENT_NODE","Error","isAbove","indexOf","isAfter","getBadgeElement","ngOnInit","_clearExistingBadges","_createBadgeElement","ngAfterViewInit","tagName","toLowerCase","getAttribute","console","warn","outerHTML","ngOnDestroy","destroyNode","remove","removeDescription","_isHostInteractive","isFocusable","ignoreVisibility","badgeElement","createElement","activeClass","setAttribute","getId","classList","add","appendChild","requestAnimationFrame","runOutsideAngular","newContentNormalized","trim","textContent","_removeInlineDescription","describe","_updateInlineDescription","undefined","colorPalette","badges","querySelectorAll","Array","from","Directive","ɵdir","ɵɵngDeclareDirective","isStandalone","selector","inputs","booleanAttribute","host","properties","classAttribute","ngImport","Input","alias","transform","MatBadgeModule","NgModule","imports","A11yModule","exports","BidiModule"],"mappings":"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"}
{"version":3,"file":"badge.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/badge/badge.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/badge/badge-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\nimport {_IdGenerator, AriaDescriber, InteractivityChecker} from '@angular/cdk/a11y';\n\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Renderer2,\n ViewEncapsulation,\n DOCUMENT,\n AfterViewInit,\n} from '@angular/core';\nimport {_animationsDisabled, ThemePalette} from '../core';\nimport {_CdkPrivateStyleLoader, _VisuallyHiddenLoader} from '@angular/cdk/private';\n\n/** Allowed position options for matBadgePosition */\nexport type MatBadgePosition =\n | 'above after'\n | 'above before'\n | 'below before'\n | 'below after'\n | 'before'\n | 'after'\n | 'above'\n | 'below';\n\n/** Allowed size options for matBadgeSize */\nexport type MatBadgeSize = 'small' | 'medium' | 'large';\n\nconst BADGE_CONTENT_CLASS = 'mat-badge-content';\n\n/**\n * Component used to load the structural styles of the badge.\n * @docs-private\n */\n@Component({\n styleUrl: 'badge.css',\n encapsulation: ViewEncapsulation.None,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class _MatBadgeStyleLoader {}\n\n/** Directive to display a text badge. */\n@Directive({\n selector: '[matBadge]',\n host: {\n 'class': 'mat-badge',\n '[class.mat-badge-overlap]': 'overlap',\n '[class.mat-badge-above]': 'isAbove()',\n '[class.mat-badge-below]': '!isAbove()',\n '[class.mat-badge-before]': '!isAfter()',\n '[class.mat-badge-after]': 'isAfter()',\n '[class.mat-badge-small]': 'size === \"small\"',\n '[class.mat-badge-medium]': 'size === \"medium\"',\n '[class.mat-badge-large]': 'size === \"large\"',\n '[class.mat-badge-hidden]': 'hidden || !content',\n '[class.mat-badge-disabled]': 'disabled',\n },\n})\nexport class MatBadge implements OnInit, AfterViewInit, OnDestroy {\n private _ngZone = inject(NgZone);\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _ariaDescriber = inject(AriaDescriber);\n private _renderer = inject(Renderer2);\n private _animationsDisabled = _animationsDisabled();\n private _idGenerator = inject(_IdGenerator);\n\n /**\n * Theme color of the badge. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/badge/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input('matBadgeColor')\n get color(): ThemePalette {\n return this._color;\n }\n set color(value: ThemePalette) {\n this._setColor(value);\n this._color = value;\n }\n private _color: ThemePalette = 'primary';\n\n /** Whether the badge should overlap its contents or not */\n @Input({alias: 'matBadgeOverlap', transform: booleanAttribute}) overlap: boolean = true;\n\n /** Whether the badge is disabled. */\n @Input({alias: 'matBadgeDisabled', transform: booleanAttribute}) disabled: boolean = false;\n\n /**\n * Position the badge should reside.\n * Accepts any combination of 'above'|'below' and 'before'|'after'\n */\n @Input('matBadgePosition') position: MatBadgePosition = 'above after';\n\n /** The content for the badge */\n @Input('matBadge')\n get content(): string | number | undefined | null {\n return this._content;\n }\n set content(newContent: string | number | undefined | null) {\n this._updateRenderedContent(newContent);\n }\n private _content: string | number | undefined | null;\n\n /** Message used to describe the decorated element via aria-describedby */\n @Input('matBadgeDescription')\n get description(): string {\n return this._description;\n }\n set description(newDescription: string) {\n this._updateDescription(newDescription);\n }\n private _description!: string;\n\n /** Size of the badge. Can be 'small', 'medium', or 'large'. */\n @Input('matBadgeSize') size: MatBadgeSize = 'medium';\n\n /** Whether the badge is hidden. */\n @Input({alias: 'matBadgeHidden', transform: booleanAttribute}) hidden: boolean = false;\n\n /** Visible badge element. */\n private _badgeElement: HTMLElement | undefined;\n\n /** Inline badge description. Used when the badge is applied to non-interactive host elements. */\n private _inlineBadgeDescription: HTMLElement | undefined;\n\n /** Whether the OnInit lifecycle hook has run yet */\n private _isInitialized = false;\n\n /** InteractivityChecker to determine if the badge host is focusable. */\n private _interactivityChecker = inject(InteractivityChecker);\n\n private _document = inject(DOCUMENT);\n\n constructor(...args: unknown[]);\n\n constructor() {\n const styleLoader = inject(_CdkPrivateStyleLoader);\n styleLoader.load(_MatBadgeStyleLoader);\n styleLoader.load(_VisuallyHiddenLoader);\n\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const nativeElement = this._elementRef.nativeElement;\n\n if (nativeElement.nodeType !== nativeElement.ELEMENT_NODE) {\n throw Error('matBadge must be attached to an element node.');\n }\n }\n }\n\n /** Whether the badge is above the host or not */\n isAbove(): boolean {\n return this.position.indexOf('below') === -1;\n }\n\n /** Whether the badge is after the host or not */\n isAfter(): boolean {\n return this.position.indexOf('before') === -1;\n }\n\n /**\n * Gets the element into which the badge's content is being rendered. Undefined if the element\n * hasn't been created (e.g. if the badge doesn't have content).\n */\n getBadgeElement(): HTMLElement | undefined {\n return this._badgeElement;\n }\n\n ngOnInit() {\n // We may have server-side rendered badge that we need to clear.\n // We need to do this in ngOnInit because the full content of the component\n // on which the badge is attached won't necessarily be in the DOM until this point.\n this._clearExistingBadges();\n\n if (this.content && !this._badgeElement) {\n this._badgeElement = this._createBadgeElement();\n this._updateRenderedContent(this.content);\n }\n\n this._isInitialized = true;\n }\n\n ngAfterViewInit() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const nativeElement = this._elementRef.nativeElement;\n\n // Heads-up for developers to avoid putting matBadge on <mat-icon>\n // as it is aria-hidden by default docs mention this at:\n // https://material.angular.dev/components/badge/overview#accessibility\n if (\n nativeElement.tagName.toLowerCase() === 'mat-icon' &&\n nativeElement.getAttribute('aria-hidden') === 'true'\n ) {\n console.warn(\n `Detected a matBadge on an \"aria-hidden\" \"<mat-icon>\". ` +\n `Consider setting aria-hidden=\"false\" in order to surface the information assistive technology.` +\n `\\n${nativeElement.outerHTML}`,\n );\n }\n }\n }\n\n ngOnDestroy() {\n // ViewEngine only: when creating a badge through the Renderer, Angular remembers its index.\n // We have to destroy it ourselves, otherwise it'll be retained in memory.\n if (this._renderer.destroyNode) {\n this._renderer.destroyNode(this._badgeElement);\n this._inlineBadgeDescription?.remove();\n }\n\n this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);\n }\n\n /** Gets whether the badge's host element is interactive. */\n private _isHostInteractive(): boolean {\n // Ignore visibility since it requires an expensive style caluclation.\n return this._interactivityChecker.isFocusable(this._elementRef.nativeElement, {\n ignoreVisibility: true,\n });\n }\n\n /** Creates the badge element */\n private _createBadgeElement(): HTMLElement {\n const badgeElement = this._renderer.createElement('span');\n const activeClass = 'mat-badge-active';\n\n badgeElement.setAttribute('id', this._idGenerator.getId('mat-badge-content-'));\n\n // The badge is aria-hidden because we don't want it to appear in the page's navigation\n // flow. Instead, we use the badge to describe the decorated element with aria-describedby.\n badgeElement.setAttribute('aria-hidden', 'true');\n badgeElement.classList.add(BADGE_CONTENT_CLASS);\n\n if (this._animationsDisabled) {\n badgeElement.classList.add('_mat-animation-noopable');\n }\n\n this._elementRef.nativeElement.appendChild(badgeElement);\n\n // animate in after insertion\n if (typeof requestAnimationFrame === 'function' && !this._animationsDisabled) {\n this._ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => {\n badgeElement.classList.add(activeClass);\n });\n });\n } else {\n badgeElement.classList.add(activeClass);\n }\n\n return badgeElement;\n }\n\n /** Update the text content of the badge element in the DOM, creating the element if necessary. */\n private _updateRenderedContent(newContent: string | number | undefined | null): void {\n const newContentNormalized: string = `${newContent ?? ''}`.trim();\n\n // Don't create the badge element if the directive isn't initialized because we want to\n // append the badge element to the *end* of the host element's content for backwards\n // compatibility.\n if (this._isInitialized && newContentNormalized && !this._badgeElement) {\n this._badgeElement = this._createBadgeElement();\n }\n\n if (this._badgeElement) {\n this._badgeElement.textContent = newContentNormalized;\n }\n\n this._content = newContentNormalized;\n }\n\n /** Updates the host element's aria description via AriaDescriber. */\n private _updateDescription(newDescription: string): void {\n // Always start by removing the aria-describedby; we will add a new one if necessary.\n this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);\n\n // NOTE: We only check whether the host is interactive here, which happens during\n // when then badge content changes. It is possible that the host changes\n // interactivity status separate from one of these. However, watching the interactivity\n // status of the host would require a `MutationObserver`, which is likely more code + overhead\n // than it's worth; from usages inside Google, we see that the vats majority of badges either\n // never change interactivity, or also set `matBadgeHidden` based on the same condition.\n\n if (!newDescription || this._isHostInteractive()) {\n this._removeInlineDescription();\n }\n\n this._description = newDescription;\n\n // We don't add `aria-describedby` for non-interactive hosts elements because we\n // instead insert the description inline.\n if (this._isHostInteractive()) {\n this._ariaDescriber.describe(this._elementRef.nativeElement, newDescription);\n } else {\n this._updateInlineDescription();\n }\n }\n\n private _updateInlineDescription() {\n // Create the inline description element if it doesn't exist\n if (!this._inlineBadgeDescription) {\n this._inlineBadgeDescription = this._document.createElement('span');\n this._inlineBadgeDescription.classList.add('cdk-visually-hidden');\n }\n\n this._inlineBadgeDescription.textContent = this.description;\n this._badgeElement?.appendChild(this._inlineBadgeDescription);\n }\n\n private _removeInlineDescription() {\n this._inlineBadgeDescription?.remove();\n this._inlineBadgeDescription = undefined;\n }\n\n /** Adds css theme class given the color to the component host */\n private _setColor(colorPalette: ThemePalette) {\n const classList = this._elementRef.nativeElement.classList;\n classList.remove(`mat-badge-${this._color}`);\n if (colorPalette) {\n classList.add(`mat-badge-${colorPalette}`);\n }\n }\n\n /** Clears any existing badges that might be left over from server-side rendering. */\n private _clearExistingBadges() {\n // Only check direct children of this host element in order to avoid deleting\n // any badges that might exist in descendant elements.\n const badges = this._elementRef.nativeElement.querySelectorAll(\n `:scope > .${BADGE_CONTENT_CLASS}`,\n );\n for (const badgeElement of Array.from(badges)) {\n if (badgeElement !== this._badgeElement) {\n badgeElement.remove();\n }\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 {NgModule} from '@angular/core';\nimport {A11yModule} from '@angular/cdk/a11y';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {MatBadge, _MatBadgeStyleLoader} from './badge';\n\n@NgModule({\n // Note: we _shouldn't_ have to import `_MatBadgeStyleLoader`,\n // but it seems to be necessary for tests.\n imports: [A11yModule, MatBadge, _MatBadgeStyleLoader],\n exports: [MatBadge, BidiModule],\n})\nexport class MatBadgeModule {}\n"],"names":["BADGE_CONTENT_CLASS","_MatBadgeStyleLoader","deps","target","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","isInline","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","args","template","MatBadge","_ngZone","inject","NgZone","_elementRef","ElementRef","_ariaDescriber","AriaDescriber","_renderer","Renderer2","_animationsDisabled","_idGenerator","_IdGenerator","color","_color","value","_setColor","overlap","disabled","position","content","_content","newContent","_updateRenderedContent","description","_description","newDescription","_updateDescription","size","hidden","_badgeElement","_inlineBadgeDescription","_isInitialized","_interactivityChecker","InteractivityChecker","_document","DOCUMENT","constructor","styleLoader","_CdkPrivateStyleLoader","load","_VisuallyHiddenLoader","ngDevMode","nativeElement","nodeType","ELEMENT_NODE","Error","isAbove","indexOf","isAfter","getBadgeElement","ngOnInit","_clearExistingBadges","_createBadgeElement","ngAfterViewInit","tagName","toLowerCase","getAttribute","console","warn","outerHTML","ngOnDestroy","destroyNode","remove","removeDescription","_isHostInteractive","isFocusable","ignoreVisibility","badgeElement","createElement","activeClass","setAttribute","getId","classList","add","appendChild","requestAnimationFrame","runOutsideAngular","newContentNormalized","trim","textContent","_removeInlineDescription","describe","_updateInlineDescription","undefined","colorPalette","badges","querySelectorAll","Array","from","Directive","ɵdir","ɵɵngDeclareDirective","isStandalone","selector","inputs","booleanAttribute","host","properties","classAttribute","ngImport","Input","alias","transform","MatBadgeModule","NgModule","imports","A11yModule","exports","BidiModule"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"bottom-sheet-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/bottom-sheet/testing/bottom-sheet-harness.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\nimport {ContentContainerComponentHarness, HarnessPredicate, TestKey} from '@angular/cdk/testing';\nimport {BottomSheetHarnessFilters} from './bottom-sheet-harness-filters';\n\n/** Harness for interacting with a standard MatBottomSheet in tests. */\nexport class MatBottomSheetHarness extends ContentContainerComponentHarness<string> {\n // Developers can provide a custom component or template for the\n // bottom sheet. The canonical parent is the \".mat-bottom-sheet-container\".\n static hostSelector = '.mat-bottom-sheet-container:not([mat-exit])';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a bottom sheet with\n * specific attributes.\n * @param options Options for narrowing the search.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: BottomSheetHarnessFilters = {}): HarnessPredicate<MatBottomSheetHarness> {\n return new HarnessPredicate(MatBottomSheetHarness, options);\n }\n\n /** Gets the value of the bottom sheet's \"aria-label\" attribute. */\n async getAriaLabel(): Promise<string | null> {\n return (await this.host()).getAttribute('aria-label');\n }\n\n /**\n * Dismisses the bottom sheet by pressing escape. Note that this method cannot\n * be used if \"disableClose\" has been set to true via the config.\n */\n async dismiss(): Promise<void> {\n await (await this.host()).sendKeys(TestKey.ESCAPE);\n }\n}\n"],"names":["MatBottomSheetHarness","ContentContainerComponentHarness","hostSelector","with","options","HarnessPredicate","getAriaLabel","host","getAttribute","dismiss","sendKeys","TestKey","ESCAPE"],"mappings":";;AAYM,MAAOA,qBAAsB,SAAQC,gCAAwC,CAAA;EAGjF,OAAOC,YAAY,GAAG,6CAA6C;AAQnE,EAAA,OAAOC,IAAIA,CAACC,OAAA,GAAqC,EAAE,EAAA;AACjD,IAAA,OAAO,IAAIC,gBAAgB,CAACL,qBAAqB,EAAEI,OAAO,CAAC;AAC7D,EAAA;EAGA,MAAME,YAAYA,GAAA;IAChB,OAAO,CAAC,MAAM,IAAI,CAACC,IAAI,EAAE,EAAEC,YAAY,CAAC,YAAY,CAAC;AACvD,EAAA;EAMA,MAAMC,OAAOA,GAAA;AACX,IAAA,MAAM,CAAC,MAAM,IAAI,CAACF,IAAI,EAAE,EAAEG,QAAQ,CAACC,OAAO,CAACC,MAAM,CAAC;AACpD,EAAA;;;;;"}
{"version":3,"file":"bottom-sheet-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/bottom-sheet/testing/bottom-sheet-harness.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\nimport {ContentContainerComponentHarness, HarnessPredicate, TestKey} from '@angular/cdk/testing';\nimport {BottomSheetHarnessFilters} from './bottom-sheet-harness-filters';\n\n/** Harness for interacting with a standard MatBottomSheet in tests. */\nexport class MatBottomSheetHarness extends ContentContainerComponentHarness<string> {\n // Developers can provide a custom component or template for the\n // bottom sheet. The canonical parent is the \".mat-bottom-sheet-container\".\n static hostSelector = '.mat-bottom-sheet-container:not([mat-exit])';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a bottom sheet with\n * specific attributes.\n * @param options Options for narrowing the search.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: BottomSheetHarnessFilters = {}): HarnessPredicate<MatBottomSheetHarness> {\n return new HarnessPredicate(MatBottomSheetHarness, options);\n }\n\n /** Gets the value of the bottom sheet's \"aria-label\" attribute. */\n async getAriaLabel(): Promise<string | null> {\n return (await this.host()).getAttribute('aria-label');\n }\n\n /**\n * Dismisses the bottom sheet by pressing escape. Note that this method cannot\n * be used if \"disableClose\" has been set to true via the config.\n */\n async dismiss(): Promise<void> {\n await (await this.host()).sendKeys(TestKey.ESCAPE);\n }\n}\n"],"names":["MatBottomSheetHarness","ContentContainerComponentHarness","hostSelector","with","options","HarnessPredicate","getAriaLabel","host","getAttribute","dismiss","sendKeys","TestKey","ESCAPE"],"mappings":";;AAYM,MAAOA,qBAAsB,SAAQC,gCAAwC,CAAA;EAGjF,OAAOC,YAAY,GAAG,6CAA6C;AAQnE,EAAA,OAAOC,IAAIA,CAACC,OAAA,GAAqC,EAAE,EAAA;AACjD,IAAA,OAAO,IAAIC,gBAAgB,CAACL,qBAAqB,EAAEI,OAAO,CAAC;AAC7D,EAAA;EAGA,MAAME,YAAYA,GAAA;IAChB,OAAO,CAAC,MAAM,IAAI,CAACC,IAAI,EAAE,EAAEC,YAAY,CAAC,YAAY,CAAC;AACvD,EAAA;EAMA,MAAMC,OAAOA,GAAA;AACX,IAAA,MAAM,CAAC,MAAM,IAAI,CAACF,IAAI,EAAE,EAAEG,QAAQ,CAACC,OAAO,CAACC,MAAM,CAAC;AACpD,EAAA;;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"bottom-sheet.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/bottom-sheet/bottom-sheet-container.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/bottom-sheet/bottom-sheet-container.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/bottom-sheet/bottom-sheet-config.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/bottom-sheet/bottom-sheet-ref.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/bottom-sheet/bottom-sheet.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/bottom-sheet/bottom-sheet-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\nimport {CdkDialogContainer} from '@angular/cdk/dialog';\nimport {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n OnDestroy,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport {Subscription} from 'rxjs';\nimport {CdkPortalOutlet} from '@angular/cdk/portal';\nimport {_animationsDisabled} from '../core';\n\nconst ENTER_ANIMATION = '_mat-bottom-sheet-enter';\nconst EXIT_ANIMATION = '_mat-bottom-sheet-exit';\n\n/**\n * Internal component that wraps user-provided bottom sheet content.\n * @docs-private\n */\n@Component({\n selector: 'mat-bottom-sheet-container',\n templateUrl: 'bottom-sheet-container.html',\n styleUrl: 'bottom-sheet-container.css',\n // In Ivy embedded views will be change detected from their declaration place, rather than where\n // they were stamped out. This means that we can't have the bottom sheet container be OnPush,\n // because it might cause the sheets that were opened from a template not to be out of date.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'mat-bottom-sheet-container',\n '[class.mat-bottom-sheet-container-animations-enabled]': '!_animationsDisabled',\n '[class.mat-bottom-sheet-container-enter]': '_animationState === \"visible\"',\n '[class.mat-bottom-sheet-container-exit]': '_animationState === \"hidden\"',\n 'tabindex': '-1',\n '[attr.role]': '_config.role',\n '[attr.aria-modal]': '_config.ariaModal',\n '[attr.aria-label]': '_config.ariaLabel',\n '(animationstart)': '_handleAnimationEvent(true, $event.animationName)',\n '(animationend)': '_handleAnimationEvent(false, $event.animationName)',\n '(animationcancel)': '_handleAnimationEvent(false, $event.animationName)',\n },\n imports: [CdkPortalOutlet],\n})\nexport class MatBottomSheetContainer extends CdkDialogContainer implements OnDestroy {\n private _breakpointSubscription: Subscription;\n protected _animationsDisabled = _animationsDisabled();\n\n /** The state of the bottom sheet animations. */\n _animationState: 'void' | 'visible' | 'hidden' = 'void';\n\n /** Emits whenever the state of the animation changes. */\n _animationStateChanged = new EventEmitter<{\n toState: 'visible' | 'hidden';\n phase: 'start' | 'done';\n }>();\n\n /** Whether the component has been destroyed. */\n private _destroyed = false;\n\n constructor(...args: unknown[]);\n\n constructor() {\n super();\n\n const breakpointObserver = inject(BreakpointObserver);\n\n this._breakpointSubscription = breakpointObserver\n .observe([Breakpoints.Medium, Breakpoints.Large, Breakpoints.XLarge])\n .subscribe(() => {\n const classList = (this._elementRef.nativeElement as HTMLElement).classList;\n\n classList.toggle(\n 'mat-bottom-sheet-container-medium',\n breakpointObserver.isMatched(Breakpoints.Medium),\n );\n classList.toggle(\n 'mat-bottom-sheet-container-large',\n breakpointObserver.isMatched(Breakpoints.Large),\n );\n classList.toggle(\n 'mat-bottom-sheet-container-xlarge',\n breakpointObserver.isMatched(Breakpoints.XLarge),\n );\n });\n }\n\n /** Begin animation of bottom sheet entrance into view. */\n enter(): void {\n if (!this._destroyed) {\n this._animationState = 'visible';\n this._changeDetectorRef.markForCheck();\n this._changeDetectorRef.detectChanges();\n if (this._animationsDisabled) {\n this._simulateAnimation(ENTER_ANIMATION);\n }\n }\n }\n\n /** Begin animation of the bottom sheet exiting from view. */\n exit(): void {\n if (!this._destroyed) {\n this._elementRef.nativeElement.setAttribute('mat-exit', '');\n this._animationState = 'hidden';\n this._changeDetectorRef.markForCheck();\n if (this._animationsDisabled) {\n this._simulateAnimation(EXIT_ANIMATION);\n }\n }\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this._breakpointSubscription.unsubscribe();\n this._destroyed = true;\n }\n\n private _simulateAnimation(name: typeof ENTER_ANIMATION | typeof EXIT_ANIMATION) {\n this._ngZone.run(() => {\n this._handleAnimationEvent(true, name);\n setTimeout(() => this._handleAnimationEvent(false, name));\n });\n }\n\n protected override _trapFocus(): void {\n // The bottom sheet starts off-screen and animates in, and at the same time we trap focus\n // within it. With some styles this appears to cause the page to jump around. See:\n // https://github.com/angular/components/issues/30774. Preventing the browser from\n // scrolling resolves the issue and isn't really necessary since the bottom sheet\n // normally isn't scrollable.\n super._trapFocus({preventScroll: true});\n }\n\n protected _handleAnimationEvent(isStart: boolean, animationName: string) {\n const isEnter = animationName === ENTER_ANIMATION;\n const isExit = animationName === EXIT_ANIMATION;\n\n if (isEnter || isExit) {\n this._animationStateChanged.emit({\n toState: isEnter ? 'visible' : 'hidden',\n phase: isStart ? 'start' : 'done',\n });\n }\n }\n}\n","<ng-template cdkPortalOutlet></ng-template>\r\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 {InjectionToken, Injector, ViewContainerRef} from '@angular/core';\nimport {Direction} from '@angular/cdk/bidi';\nimport {ScrollStrategy} from '@angular/cdk/overlay';\nimport {RestoreFocusValue} from '@angular/cdk/dialog';\n\n/** Options for where to set focus to automatically on dialog open */\nexport type AutoFocusTarget = 'dialog' | 'first-tabbable' | 'first-heading';\n\n/** Injection token that can be used to access the data that was passed in to a bottom sheet. */\nexport const MAT_BOTTOM_SHEET_DATA = new InjectionToken<any>('MatBottomSheetData');\n\n/**\n * Configuration used when opening a bottom sheet.\n */\nexport class MatBottomSheetConfig<D = any> {\n /** The view container to place the overlay for the bottom sheet into. */\n viewContainerRef?: ViewContainerRef;\n\n /**\n * Injector used for the instantiation of the component to be attached. If provided,\n * takes precedence over the injector indirectly provided by `ViewContainerRef`.\n */\n injector?: Injector;\n\n /** Extra CSS classes to be added to the bottom sheet container. */\n panelClass?: string | string[];\n\n /** Text layout direction for the bottom sheet. */\n direction?: Direction;\n\n /** Data being injected into the child component. */\n data?: D | null = null;\n\n /** Whether the bottom sheet has a backdrop. */\n hasBackdrop?: boolean = true;\n\n /** Custom class for the backdrop. */\n backdropClass?: string;\n\n /** Whether the user can use escape or clicking outside to close the bottom sheet. */\n disableClose?: boolean = false;\n\n /** Aria label to assign to the bottom sheet element. */\n ariaLabel?: string | null = null;\n\n /**\n * Whether this is a modal dialog. Used to set the `aria-modal` attribute. Off by default,\n * because it can interfere with other overlay-based components (e.g. `mat-select`) and because\n * it is redundant since the dialog marks all outside content as `aria-hidden` anyway.\n */\n ariaModal?: boolean = false;\n\n /**\n * Whether the bottom sheet should close when the user goes backwards/forwards in history.\n * Note that this usually doesn't include clicking on links (unless the user is using\n * the `HashLocationStrategy`).\n */\n closeOnNavigation?: boolean = true;\n\n /**\n * Where the bottom sheet should focus on open.\n * @breaking-change 14.0.0 Remove boolean option from autoFocus. Use string or\n * AutoFocusTarget instead.\n */\n autoFocus?: AutoFocusTarget | string | boolean = 'first-tabbable';\n\n /** Configures the focus restoration behavior. See `RestoreFocusValue` for more information. */\n restoreFocus?: RestoreFocusValue = true;\n\n /** Scroll strategy to be used for the bottom sheet. */\n scrollStrategy?: ScrollStrategy;\n\n /** Height for the bottom sheet. */\n height?: string = '';\n\n /** Minimum height for the bottom sheet. If a number is provided, assumes pixel units. */\n minHeight?: number | string;\n\n /** Maximum height for the bottom sheet. If a number is provided, assumes pixel units. */\n maxHeight?: number | string;\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 {ComponentRef} from '@angular/core';\nimport {DialogRef} from '@angular/cdk/dialog';\nimport {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {merge, Observable, Subject} from 'rxjs';\nimport {filter, take} from 'rxjs/operators';\nimport {MatBottomSheetConfig} from './bottom-sheet-config';\nimport {MatBottomSheetContainer} from './bottom-sheet-container';\n\n/**\n * Reference to a bottom sheet dispatched from the bottom sheet service.\n */\nexport class MatBottomSheetRef<T = any, R = any> {\n /** Instance of the component making up the content of the bottom sheet. */\n get instance(): T {\n return this._ref.componentInstance!;\n }\n\n /**\n * `ComponentRef` of the component opened into the bottom sheet. Will be\n * null when the bottom sheet is opened using a `TemplateRef`.\n */\n get componentRef(): ComponentRef<T> | null {\n return this._ref.componentRef;\n }\n\n /**\n * Instance of the component into which the bottom sheet content is projected.\n * @docs-private\n */\n containerInstance: MatBottomSheetContainer;\n\n /** Whether the user is allowed to close the bottom sheet. */\n disableClose: boolean | undefined;\n\n /** Subject for notifying the user that the bottom sheet has opened and appeared. */\n private readonly _afterOpened = new Subject<void>();\n\n /** Result to be passed down to the `afterDismissed` stream. */\n private _result: R | undefined;\n\n /** Handle to the timeout that's running as a fallback in case the exit animation doesn't fire. */\n private _closeFallbackTimeout: ReturnType<typeof setTimeout> | undefined;\n\n constructor(\n private _ref: DialogRef<R, T>,\n config: MatBottomSheetConfig,\n containerInstance: MatBottomSheetContainer,\n ) {\n this.containerInstance = containerInstance;\n this.disableClose = config.disableClose;\n\n // Emit when opening animation completes\n containerInstance._animationStateChanged\n .pipe(\n filter(event => event.phase === 'done' && event.toState === 'visible'),\n take(1),\n )\n .subscribe(() => {\n this._afterOpened.next();\n this._afterOpened.complete();\n });\n\n // Dispose overlay when closing animation is complete\n containerInstance._animationStateChanged\n .pipe(\n filter(event => event.phase === 'done' && event.toState === 'hidden'),\n take(1),\n )\n .subscribe(() => {\n clearTimeout(this._closeFallbackTimeout);\n this._ref.close(this._result);\n });\n\n _ref.overlayRef.detachments().subscribe(() => {\n this._ref.close(this._result);\n });\n\n merge(\n this.backdropClick(),\n this.keydownEvents().pipe(filter(event => event.keyCode === ESCAPE)),\n ).subscribe(event => {\n if (\n !this.disableClose &&\n (event.type !== 'keydown' || !hasModifierKey(event as KeyboardEvent))\n ) {\n event.preventDefault();\n this.dismiss();\n }\n });\n }\n\n /**\n * Dismisses the bottom sheet.\n * @param result Data to be passed back to the bottom sheet opener.\n */\n dismiss(result?: R): void {\n if (!this.containerInstance) {\n return;\n }\n\n // Transition the backdrop in parallel to the bottom sheet.\n this.containerInstance._animationStateChanged\n .pipe(\n filter(event => event.phase === 'start'),\n take(1),\n )\n .subscribe(() => {\n // The logic that disposes of the overlay depends on the exit animation completing, however\n // it isn't guaranteed if the parent view is destroyed while it's running. Add a fallback\n // timeout which will clean everything up if the animation hasn't fired within the specified\n // amount of time plus 100ms. We don't need to run this outside the NgZone, because for the\n // vast majority of cases the timeout will have been cleared before it has fired.\n this._closeFallbackTimeout = setTimeout(() => this._ref.close(this._result), 500);\n this._ref.overlayRef.detachBackdrop();\n });\n\n this._result = result;\n this.containerInstance.exit();\n this.containerInstance = null!;\n }\n\n /** Gets an observable that is notified when the bottom sheet is finished closing. */\n afterDismissed(): Observable<R | undefined> {\n return this._ref.closed;\n }\n\n /** Gets an observable that is notified when the bottom sheet has opened and appeared. */\n afterOpened(): Observable<void> {\n return this._afterOpened;\n }\n\n /**\n * Gets an observable that emits when the overlay's backdrop has been clicked.\n */\n backdropClick(): Observable<MouseEvent> {\n return this._ref.backdropClick;\n }\n\n /**\n * Gets an observable that emits when keydown events are targeted on the overlay.\n */\n keydownEvents(): Observable<KeyboardEvent> {\n return this._ref.keydownEvents;\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 {Dialog} from '@angular/cdk/dialog';\nimport {createBlockScrollStrategy, createGlobalPositionStrategy} from '@angular/cdk/overlay';\nimport {ComponentType} from '@angular/cdk/portal';\nimport {Injectable, TemplateRef, InjectionToken, OnDestroy, inject, Injector} from '@angular/core';\nimport {MAT_BOTTOM_SHEET_DATA, MatBottomSheetConfig} from './bottom-sheet-config';\nimport {MatBottomSheetContainer} from './bottom-sheet-container';\nimport {MatBottomSheetRef} from './bottom-sheet-ref';\nimport {_animationsDisabled} from '../core';\n\n/** Injection token that can be used to specify default bottom sheet options. */\nexport const MAT_BOTTOM_SHEET_DEFAULT_OPTIONS = new InjectionToken<MatBottomSheetConfig>(\n 'mat-bottom-sheet-default-options',\n);\n\n/**\n * Service to trigger Material Design bottom sheets.\n */\n@Injectable({providedIn: 'root'})\nexport class MatBottomSheet implements OnDestroy {\n private _injector = inject(Injector);\n private _parentBottomSheet = inject(MatBottomSheet, {optional: true, skipSelf: true});\n private _animationsDisabled = _animationsDisabled();\n private _defaultOptions = inject<MatBottomSheetConfig>(MAT_BOTTOM_SHEET_DEFAULT_OPTIONS, {\n optional: true,\n });\n\n private _bottomSheetRefAtThisLevel: MatBottomSheetRef<any> | null = null;\n private _dialog = inject(Dialog);\n\n /** Reference to the currently opened bottom sheet. */\n get _openedBottomSheetRef(): MatBottomSheetRef<any> | null {\n const parent = this._parentBottomSheet;\n return parent ? parent._openedBottomSheetRef : this._bottomSheetRefAtThisLevel;\n }\n\n set _openedBottomSheetRef(value: MatBottomSheetRef<any> | null) {\n if (this._parentBottomSheet) {\n this._parentBottomSheet._openedBottomSheetRef = value;\n } else {\n this._bottomSheetRefAtThisLevel = value;\n }\n }\n\n constructor(...args: unknown[]);\n constructor() {}\n\n /**\n * Opens a bottom sheet containing the given component.\n * @param component Type of the component to load into the bottom sheet.\n * @param config Extra configuration options.\n * @returns Reference to the newly-opened bottom sheet.\n */\n open<T, D = any, R = any>(\n component: ComponentType<T>,\n config?: MatBottomSheetConfig<D>,\n ): MatBottomSheetRef<T, R>;\n\n /**\n * Opens a bottom sheet containing the given template.\n * @param template TemplateRef to instantiate as the bottom sheet content.\n * @param config Extra configuration options.\n * @returns Reference to the newly-opened bottom sheet.\n */\n open<T, D = any, R = any>(\n template: TemplateRef<T>,\n config?: MatBottomSheetConfig<D>,\n ): MatBottomSheetRef<T, R>;\n\n open<T, D = any, R = any>(\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: MatBottomSheetConfig<D>,\n ): MatBottomSheetRef<T, R> {\n const _config = {...(this._defaultOptions || new MatBottomSheetConfig()), ...config};\n let ref: MatBottomSheetRef<T, R>;\n\n this._dialog.open<R, D, T>(componentOrTemplateRef, {\n ..._config,\n // Disable closing since we need to sync it up to the animation ourselves.\n disableClose: true,\n // Disable closing on detachments so that we can sync up the animation.\n closeOnOverlayDetachments: false,\n maxWidth: '100%',\n container: MatBottomSheetContainer,\n scrollStrategy: _config.scrollStrategy || createBlockScrollStrategy(this._injector),\n positionStrategy: createGlobalPositionStrategy(this._injector)\n .centerHorizontally()\n .bottom('0'),\n disableAnimations: this._animationsDisabled,\n templateContext: () => ({bottomSheetRef: ref}),\n providers: (cdkRef, _cdkConfig, container) => {\n ref = new MatBottomSheetRef(cdkRef, _config, container as MatBottomSheetContainer);\n return [\n {provide: MatBottomSheetRef, useValue: ref},\n {provide: MAT_BOTTOM_SHEET_DATA, useValue: _config.data},\n ];\n },\n });\n\n // When the bottom sheet is dismissed, clear the reference to it.\n ref!.afterDismissed().subscribe(() => {\n // Clear the bottom sheet ref if it hasn't already been replaced by a newer one.\n if (this._openedBottomSheetRef === ref) {\n this._openedBottomSheetRef = null;\n }\n });\n\n if (this._openedBottomSheetRef) {\n // If a bottom sheet is already in view, dismiss it and enter the\n // new bottom sheet after exit animation is complete.\n this._openedBottomSheetRef.afterDismissed().subscribe(() => ref.containerInstance?.enter());\n this._openedBottomSheetRef.dismiss();\n } else {\n // If no bottom sheet is in view, enter the new bottom sheet.\n ref!.containerInstance.enter();\n }\n\n this._openedBottomSheetRef = ref!;\n return ref!;\n }\n\n /**\n * Dismisses the currently-visible bottom sheet.\n * @param result Data to pass to the bottom sheet instance.\n */\n dismiss<R = any>(result?: R): void {\n if (this._openedBottomSheetRef) {\n this._openedBottomSheetRef.dismiss(result);\n }\n }\n\n ngOnDestroy() {\n if (this._bottomSheetRefAtThisLevel) {\n this._bottomSheetRefAtThisLevel.dismiss();\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 {DialogModule} from '@angular/cdk/dialog';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {NgModule} from '@angular/core';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {MatBottomSheetContainer} from './bottom-sheet-container';\nimport {MatBottomSheet} from './bottom-sheet';\n\n@NgModule({\n imports: [DialogModule, PortalModule, MatBottomSheetContainer],\n exports: [MatBottomSheetContainer, BidiModule],\n providers: [MatBottomSheet],\n})\nexport class MatBottomSheetModule {}\n"],"names":["ENTER_ANIMATION","EXIT_ANIMATION","MatBottomSheetContainer","CdkDialogContainer","_breakpointSubscription","_animationsDisabled","_animationState","_animationStateChanged","EventEmitter","_destroyed","constructor","breakpointObserver","inject","BreakpointObserver","observe","Breakpoints","Medium","Large","XLarge","subscribe","classList","_elementRef","nativeElement","toggle","isMatched","enter","_changeDetectorRef","markForCheck","detectChanges","_simulateAnimation","exit","setAttribute","ngOnDestroy","unsubscribe","name","_ngZone","run","_handleAnimationEvent","setTimeout","_trapFocus","preventScroll","isStart","animationName","isEnter","isExit","emit","toState","phase","deps","target","i0","ɵɵFactoryTarget","Component","isStandalone","selector","host","attributes","listeners","properties","classAttribute","usesInheritance","ngImport","template","styles","dependencies","kind","type","CdkPortalOutlet","inputs","outputs","exportAs","changeDetection","ChangeDetectionStrategy","Eager","encapsulation","ViewEncapsulation","None","decorators","Default","imports","MAT_BOTTOM_SHEET_DATA","InjectionToken","MatBottomSheetConfig","viewContainerRef","injector","panelClass","direction","data","hasBackdrop","backdropClass","disableClose","ariaLabel","ariaModal","closeOnNavigation","autoFocus","restoreFocus","scrollStrategy","height","minHeight","maxHeight","MatBottomSheetRef","_ref","instance","componentInstance","componentRef","containerInstance","_afterOpened","Subject","_result","_closeFallbackTimeout","config","pipe","filter","event","take","next","complete","clearTimeout","close","overlayRef","detachments","merge","backdropClick","keydownEvents","keyCode","ESCAPE","hasModifierKey","preventDefault","dismiss","result","detachBackdrop","afterDismissed","closed","afterOpened","MAT_BOTTOM_SHEET_DEFAULT_OPTIONS","MatBottomSheet","_injector","Injector","_parentBottomSheet","optional","skipSelf","_defaultOptions","_bottomSheetRefAtThisLevel","_dialog","Dialog","_openedBottomSheetRef","parent","value","open","componentOrTemplateRef","_config","ref","closeOnOverlayDetachments","maxWidth","container","createBlockScrollStrategy","positionStrategy","createGlobalPositionStrategy","centerHorizontally","bottom","disableAnimations","templateContext","bottomSheetRef","providers","cdkRef","_cdkConfig","provide","useValue","Injectable","ɵprov","ɵɵngDeclareInjectable","minVersion","version","providedIn","MatBottomSheetModule","NgModule","DialogModule","PortalModule","exports","BidiModule","args"],"mappings":"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"}
{"version":3,"file":"bottom-sheet.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/bottom-sheet/bottom-sheet-container.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/bottom-sheet/bottom-sheet-container.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/bottom-sheet/bottom-sheet-config.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/bottom-sheet/bottom-sheet-ref.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/bottom-sheet/bottom-sheet.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/bottom-sheet/bottom-sheet-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\nimport {CdkDialogContainer} from '@angular/cdk/dialog';\nimport {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n OnDestroy,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport {Subscription} from 'rxjs';\nimport {CdkPortalOutlet} from '@angular/cdk/portal';\nimport {_animationsDisabled} from '../core';\n\nconst ENTER_ANIMATION = '_mat-bottom-sheet-enter';\nconst EXIT_ANIMATION = '_mat-bottom-sheet-exit';\n\n/**\n * Internal component that wraps user-provided bottom sheet content.\n * @docs-private\n */\n@Component({\n selector: 'mat-bottom-sheet-container',\n templateUrl: 'bottom-sheet-container.html',\n styleUrl: 'bottom-sheet-container.css',\n // In Ivy embedded views will be change detected from their declaration place, rather than where\n // they were stamped out. This means that we can't have the bottom sheet container be OnPush,\n // because it might cause the sheets that were opened from a template not to be out of date.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'mat-bottom-sheet-container',\n '[class.mat-bottom-sheet-container-animations-enabled]': '!_animationsDisabled',\n '[class.mat-bottom-sheet-container-enter]': '_animationState === \"visible\"',\n '[class.mat-bottom-sheet-container-exit]': '_animationState === \"hidden\"',\n 'tabindex': '-1',\n '[attr.role]': '_config.role',\n '[attr.aria-modal]': '_config.ariaModal',\n '[attr.aria-label]': '_config.ariaLabel',\n '(animationstart)': '_handleAnimationEvent(true, $event.animationName)',\n '(animationend)': '_handleAnimationEvent(false, $event.animationName)',\n '(animationcancel)': '_handleAnimationEvent(false, $event.animationName)',\n },\n imports: [CdkPortalOutlet],\n})\nexport class MatBottomSheetContainer extends CdkDialogContainer implements OnDestroy {\n private _breakpointSubscription: Subscription;\n protected _animationsDisabled = _animationsDisabled();\n\n /** The state of the bottom sheet animations. */\n _animationState: 'void' | 'visible' | 'hidden' = 'void';\n\n /** Emits whenever the state of the animation changes. */\n _animationStateChanged = new EventEmitter<{\n toState: 'visible' | 'hidden';\n phase: 'start' | 'done';\n }>();\n\n /** Whether the component has been destroyed. */\n private _destroyed = false;\n\n constructor(...args: unknown[]);\n\n constructor() {\n super();\n\n const breakpointObserver = inject(BreakpointObserver);\n\n this._breakpointSubscription = breakpointObserver\n .observe([Breakpoints.Medium, Breakpoints.Large, Breakpoints.XLarge])\n .subscribe(() => {\n const classList = (this._elementRef.nativeElement as HTMLElement).classList;\n\n classList.toggle(\n 'mat-bottom-sheet-container-medium',\n breakpointObserver.isMatched(Breakpoints.Medium),\n );\n classList.toggle(\n 'mat-bottom-sheet-container-large',\n breakpointObserver.isMatched(Breakpoints.Large),\n );\n classList.toggle(\n 'mat-bottom-sheet-container-xlarge',\n breakpointObserver.isMatched(Breakpoints.XLarge),\n );\n });\n }\n\n /** Begin animation of bottom sheet entrance into view. */\n enter(): void {\n if (!this._destroyed) {\n this._animationState = 'visible';\n this._changeDetectorRef.markForCheck();\n this._changeDetectorRef.detectChanges();\n if (this._animationsDisabled) {\n this._simulateAnimation(ENTER_ANIMATION);\n }\n }\n }\n\n /** Begin animation of the bottom sheet exiting from view. */\n exit(): void {\n if (!this._destroyed) {\n this._elementRef.nativeElement.setAttribute('mat-exit', '');\n this._animationState = 'hidden';\n this._changeDetectorRef.markForCheck();\n if (this._animationsDisabled) {\n this._simulateAnimation(EXIT_ANIMATION);\n }\n }\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this._breakpointSubscription.unsubscribe();\n this._destroyed = true;\n }\n\n private _simulateAnimation(name: typeof ENTER_ANIMATION | typeof EXIT_ANIMATION) {\n this._ngZone.run(() => {\n this._handleAnimationEvent(true, name);\n setTimeout(() => this._handleAnimationEvent(false, name));\n });\n }\n\n protected override _trapFocus(): void {\n // The bottom sheet starts off-screen and animates in, and at the same time we trap focus\n // within it. With some styles this appears to cause the page to jump around. See:\n // https://github.com/angular/components/issues/30774. Preventing the browser from\n // scrolling resolves the issue and isn't really necessary since the bottom sheet\n // normally isn't scrollable.\n super._trapFocus({preventScroll: true});\n }\n\n protected _handleAnimationEvent(isStart: boolean, animationName: string) {\n const isEnter = animationName === ENTER_ANIMATION;\n const isExit = animationName === EXIT_ANIMATION;\n\n if (isEnter || isExit) {\n this._animationStateChanged.emit({\n toState: isEnter ? 'visible' : 'hidden',\n phase: isStart ? 'start' : 'done',\n });\n }\n }\n}\n","<ng-template cdkPortalOutlet></ng-template>\r\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 {InjectionToken, Injector, ViewContainerRef} from '@angular/core';\nimport {Direction} from '@angular/cdk/bidi';\nimport {ScrollStrategy} from '@angular/cdk/overlay';\nimport {RestoreFocusValue} from '@angular/cdk/dialog';\n\n/** Options for where to set focus to automatically on dialog open */\nexport type AutoFocusTarget = 'dialog' | 'first-tabbable' | 'first-heading';\n\n/** Injection token that can be used to access the data that was passed in to a bottom sheet. */\nexport const MAT_BOTTOM_SHEET_DATA = new InjectionToken<any>('MatBottomSheetData');\n\n/**\n * Configuration used when opening a bottom sheet.\n */\nexport class MatBottomSheetConfig<D = any> {\n /** The view container to place the overlay for the bottom sheet into. */\n viewContainerRef?: ViewContainerRef;\n\n /**\n * Injector used for the instantiation of the component to be attached. If provided,\n * takes precedence over the injector indirectly provided by `ViewContainerRef`.\n */\n injector?: Injector;\n\n /** Extra CSS classes to be added to the bottom sheet container. */\n panelClass?: string | string[];\n\n /** Text layout direction for the bottom sheet. */\n direction?: Direction;\n\n /** Data being injected into the child component. */\n data?: D | null = null;\n\n /** Whether the bottom sheet has a backdrop. */\n hasBackdrop?: boolean = true;\n\n /** Custom class for the backdrop. */\n backdropClass?: string;\n\n /** Whether the user can use escape or clicking outside to close the bottom sheet. */\n disableClose?: boolean = false;\n\n /** Aria label to assign to the bottom sheet element. */\n ariaLabel?: string | null = null;\n\n /**\n * Whether this is a modal dialog. Used to set the `aria-modal` attribute. Off by default,\n * because it can interfere with other overlay-based components (e.g. `mat-select`) and because\n * it is redundant since the dialog marks all outside content as `aria-hidden` anyway.\n */\n ariaModal?: boolean = false;\n\n /**\n * Whether the bottom sheet should close when the user goes backwards/forwards in history.\n * Note that this usually doesn't include clicking on links (unless the user is using\n * the `HashLocationStrategy`).\n */\n closeOnNavigation?: boolean = true;\n\n /**\n * Where the bottom sheet should focus on open.\n * @breaking-change 14.0.0 Remove boolean option from autoFocus. Use string or\n * AutoFocusTarget instead.\n */\n autoFocus?: AutoFocusTarget | string | boolean = 'first-tabbable';\n\n /** Configures the focus restoration behavior. See `RestoreFocusValue` for more information. */\n restoreFocus?: RestoreFocusValue = true;\n\n /** Scroll strategy to be used for the bottom sheet. */\n scrollStrategy?: ScrollStrategy;\n\n /** Height for the bottom sheet. */\n height?: string = '';\n\n /** Minimum height for the bottom sheet. If a number is provided, assumes pixel units. */\n minHeight?: number | string;\n\n /** Maximum height for the bottom sheet. If a number is provided, assumes pixel units. */\n maxHeight?: number | string;\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 {ComponentRef} from '@angular/core';\nimport {DialogRef} from '@angular/cdk/dialog';\nimport {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {merge, Observable, Subject} from 'rxjs';\nimport {filter, take} from 'rxjs/operators';\nimport {MatBottomSheetConfig} from './bottom-sheet-config';\nimport {MatBottomSheetContainer} from './bottom-sheet-container';\n\n/**\n * Reference to a bottom sheet dispatched from the bottom sheet service.\n */\nexport class MatBottomSheetRef<T = any, R = any> {\n /** Instance of the component making up the content of the bottom sheet. */\n get instance(): T {\n return this._ref.componentInstance!;\n }\n\n /**\n * `ComponentRef` of the component opened into the bottom sheet. Will be\n * null when the bottom sheet is opened using a `TemplateRef`.\n */\n get componentRef(): ComponentRef<T> | null {\n return this._ref.componentRef;\n }\n\n /**\n * Instance of the component into which the bottom sheet content is projected.\n * @docs-private\n */\n containerInstance: MatBottomSheetContainer;\n\n /** Whether the user is allowed to close the bottom sheet. */\n disableClose: boolean | undefined;\n\n /** Subject for notifying the user that the bottom sheet has opened and appeared. */\n private readonly _afterOpened = new Subject<void>();\n\n /** Result to be passed down to the `afterDismissed` stream. */\n private _result: R | undefined;\n\n /** Handle to the timeout that's running as a fallback in case the exit animation doesn't fire. */\n private _closeFallbackTimeout: ReturnType<typeof setTimeout> | undefined;\n\n constructor(\n private _ref: DialogRef<R, T>,\n config: MatBottomSheetConfig,\n containerInstance: MatBottomSheetContainer,\n ) {\n this.containerInstance = containerInstance;\n this.disableClose = config.disableClose;\n\n // Emit when opening animation completes\n containerInstance._animationStateChanged\n .pipe(\n filter(event => event.phase === 'done' && event.toState === 'visible'),\n take(1),\n )\n .subscribe(() => {\n this._afterOpened.next();\n this._afterOpened.complete();\n });\n\n // Dispose overlay when closing animation is complete\n containerInstance._animationStateChanged\n .pipe(\n filter(event => event.phase === 'done' && event.toState === 'hidden'),\n take(1),\n )\n .subscribe(() => {\n clearTimeout(this._closeFallbackTimeout);\n this._ref.close(this._result);\n });\n\n _ref.overlayRef.detachments().subscribe(() => {\n this._ref.close(this._result);\n });\n\n merge(\n this.backdropClick(),\n this.keydownEvents().pipe(filter(event => event.keyCode === ESCAPE)),\n ).subscribe(event => {\n if (\n !this.disableClose &&\n (event.type !== 'keydown' || !hasModifierKey(event as KeyboardEvent))\n ) {\n event.preventDefault();\n this.dismiss();\n }\n });\n }\n\n /**\n * Dismisses the bottom sheet.\n * @param result Data to be passed back to the bottom sheet opener.\n */\n dismiss(result?: R): void {\n if (!this.containerInstance) {\n return;\n }\n\n // Transition the backdrop in parallel to the bottom sheet.\n this.containerInstance._animationStateChanged\n .pipe(\n filter(event => event.phase === 'start'),\n take(1),\n )\n .subscribe(() => {\n // The logic that disposes of the overlay depends on the exit animation completing, however\n // it isn't guaranteed if the parent view is destroyed while it's running. Add a fallback\n // timeout which will clean everything up if the animation hasn't fired within the specified\n // amount of time plus 100ms. We don't need to run this outside the NgZone, because for the\n // vast majority of cases the timeout will have been cleared before it has fired.\n this._closeFallbackTimeout = setTimeout(() => this._ref.close(this._result), 500);\n this._ref.overlayRef.detachBackdrop();\n });\n\n this._result = result;\n this.containerInstance.exit();\n this.containerInstance = null!;\n }\n\n /** Gets an observable that is notified when the bottom sheet is finished closing. */\n afterDismissed(): Observable<R | undefined> {\n return this._ref.closed;\n }\n\n /** Gets an observable that is notified when the bottom sheet has opened and appeared. */\n afterOpened(): Observable<void> {\n return this._afterOpened;\n }\n\n /**\n * Gets an observable that emits when the overlay's backdrop has been clicked.\n */\n backdropClick(): Observable<MouseEvent> {\n return this._ref.backdropClick;\n }\n\n /**\n * Gets an observable that emits when keydown events are targeted on the overlay.\n */\n keydownEvents(): Observable<KeyboardEvent> {\n return this._ref.keydownEvents;\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 {Dialog} from '@angular/cdk/dialog';\nimport {createBlockScrollStrategy, createGlobalPositionStrategy} from '@angular/cdk/overlay';\nimport {ComponentType} from '@angular/cdk/portal';\nimport {Injectable, TemplateRef, InjectionToken, OnDestroy, inject, Injector} from '@angular/core';\nimport {MAT_BOTTOM_SHEET_DATA, MatBottomSheetConfig} from './bottom-sheet-config';\nimport {MatBottomSheetContainer} from './bottom-sheet-container';\nimport {MatBottomSheetRef} from './bottom-sheet-ref';\nimport {_animationsDisabled} from '../core';\n\n/** Injection token that can be used to specify default bottom sheet options. */\nexport const MAT_BOTTOM_SHEET_DEFAULT_OPTIONS = new InjectionToken<MatBottomSheetConfig>(\n 'mat-bottom-sheet-default-options',\n);\n\n/**\n * Service to trigger Material Design bottom sheets.\n */\n@Injectable({providedIn: 'root'})\nexport class MatBottomSheet implements OnDestroy {\n private _injector = inject(Injector);\n private _parentBottomSheet = inject(MatBottomSheet, {optional: true, skipSelf: true});\n private _animationsDisabled = _animationsDisabled();\n private _defaultOptions = inject<MatBottomSheetConfig>(MAT_BOTTOM_SHEET_DEFAULT_OPTIONS, {\n optional: true,\n });\n\n private _bottomSheetRefAtThisLevel: MatBottomSheetRef<any> | null = null;\n private _dialog = inject(Dialog);\n\n /** Reference to the currently opened bottom sheet. */\n get _openedBottomSheetRef(): MatBottomSheetRef<any> | null {\n const parent = this._parentBottomSheet;\n return parent ? parent._openedBottomSheetRef : this._bottomSheetRefAtThisLevel;\n }\n\n set _openedBottomSheetRef(value: MatBottomSheetRef<any> | null) {\n if (this._parentBottomSheet) {\n this._parentBottomSheet._openedBottomSheetRef = value;\n } else {\n this._bottomSheetRefAtThisLevel = value;\n }\n }\n\n constructor(...args: unknown[]);\n constructor() {}\n\n /**\n * Opens a bottom sheet containing the given component.\n * @param component Type of the component to load into the bottom sheet.\n * @param config Extra configuration options.\n * @returns Reference to the newly-opened bottom sheet.\n */\n open<T, D = any, R = any>(\n component: ComponentType<T>,\n config?: MatBottomSheetConfig<D>,\n ): MatBottomSheetRef<T, R>;\n\n /**\n * Opens a bottom sheet containing the given template.\n * @param template TemplateRef to instantiate as the bottom sheet content.\n * @param config Extra configuration options.\n * @returns Reference to the newly-opened bottom sheet.\n */\n open<T, D = any, R = any>(\n template: TemplateRef<T>,\n config?: MatBottomSheetConfig<D>,\n ): MatBottomSheetRef<T, R>;\n\n open<T, D = any, R = any>(\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: MatBottomSheetConfig<D>,\n ): MatBottomSheetRef<T, R> {\n const _config = {...(this._defaultOptions || new MatBottomSheetConfig()), ...config};\n let ref: MatBottomSheetRef<T, R>;\n\n this._dialog.open<R, D, T>(componentOrTemplateRef, {\n ..._config,\n // Disable closing since we need to sync it up to the animation ourselves.\n disableClose: true,\n // Disable closing on detachments so that we can sync up the animation.\n closeOnOverlayDetachments: false,\n maxWidth: '100%',\n container: MatBottomSheetContainer,\n scrollStrategy: _config.scrollStrategy || createBlockScrollStrategy(this._injector),\n positionStrategy: createGlobalPositionStrategy(this._injector)\n .centerHorizontally()\n .bottom('0'),\n disableAnimations: this._animationsDisabled,\n templateContext: () => ({bottomSheetRef: ref}),\n providers: (cdkRef, _cdkConfig, container) => {\n ref = new MatBottomSheetRef(cdkRef, _config, container as MatBottomSheetContainer);\n return [\n {provide: MatBottomSheetRef, useValue: ref},\n {provide: MAT_BOTTOM_SHEET_DATA, useValue: _config.data},\n ];\n },\n });\n\n // When the bottom sheet is dismissed, clear the reference to it.\n ref!.afterDismissed().subscribe(() => {\n // Clear the bottom sheet ref if it hasn't already been replaced by a newer one.\n if (this._openedBottomSheetRef === ref) {\n this._openedBottomSheetRef = null;\n }\n });\n\n if (this._openedBottomSheetRef) {\n // If a bottom sheet is already in view, dismiss it and enter the\n // new bottom sheet after exit animation is complete.\n this._openedBottomSheetRef.afterDismissed().subscribe(() => ref.containerInstance?.enter());\n this._openedBottomSheetRef.dismiss();\n } else {\n // If no bottom sheet is in view, enter the new bottom sheet.\n ref!.containerInstance.enter();\n }\n\n this._openedBottomSheetRef = ref!;\n return ref!;\n }\n\n /**\n * Dismisses the currently-visible bottom sheet.\n * @param result Data to pass to the bottom sheet instance.\n */\n dismiss<R = any>(result?: R): void {\n if (this._openedBottomSheetRef) {\n this._openedBottomSheetRef.dismiss(result);\n }\n }\n\n ngOnDestroy() {\n if (this._bottomSheetRefAtThisLevel) {\n this._bottomSheetRefAtThisLevel.dismiss();\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 {DialogModule} from '@angular/cdk/dialog';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {NgModule} from '@angular/core';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {MatBottomSheetContainer} from './bottom-sheet-container';\nimport {MatBottomSheet} from './bottom-sheet';\n\n@NgModule({\n imports: [DialogModule, PortalModule, MatBottomSheetContainer],\n exports: [MatBottomSheetContainer, BidiModule],\n providers: [MatBottomSheet],\n})\nexport class MatBottomSheetModule {}\n"],"names":["ENTER_ANIMATION","EXIT_ANIMATION","MatBottomSheetContainer","CdkDialogContainer","_breakpointSubscription","_animationsDisabled","_animationState","_animationStateChanged","EventEmitter","_destroyed","constructor","breakpointObserver","inject","BreakpointObserver","observe","Breakpoints","Medium","Large","XLarge","subscribe","classList","_elementRef","nativeElement","toggle","isMatched","enter","_changeDetectorRef","markForCheck","detectChanges","_simulateAnimation","exit","setAttribute","ngOnDestroy","unsubscribe","name","_ngZone","run","_handleAnimationEvent","setTimeout","_trapFocus","preventScroll","isStart","animationName","isEnter","isExit","emit","toState","phase","deps","target","i0","ɵɵFactoryTarget","Component","isStandalone","selector","host","attributes","listeners","properties","classAttribute","usesInheritance","ngImport","template","styles","dependencies","kind","type","CdkPortalOutlet","inputs","outputs","exportAs","changeDetection","ChangeDetectionStrategy","Eager","encapsulation","ViewEncapsulation","None","decorators","Default","imports","MAT_BOTTOM_SHEET_DATA","InjectionToken","MatBottomSheetConfig","viewContainerRef","injector","panelClass","direction","data","hasBackdrop","backdropClass","disableClose","ariaLabel","ariaModal","closeOnNavigation","autoFocus","restoreFocus","scrollStrategy","height","minHeight","maxHeight","MatBottomSheetRef","_ref","instance","componentInstance","componentRef","containerInstance","_afterOpened","Subject","_result","_closeFallbackTimeout","config","pipe","filter","event","take","next","complete","clearTimeout","close","overlayRef","detachments","merge","backdropClick","keydownEvents","keyCode","ESCAPE","hasModifierKey","preventDefault","dismiss","result","detachBackdrop","afterDismissed","closed","afterOpened","MAT_BOTTOM_SHEET_DEFAULT_OPTIONS","MatBottomSheet","_injector","Injector","_parentBottomSheet","optional","skipSelf","_defaultOptions","_bottomSheetRefAtThisLevel","_dialog","Dialog","_openedBottomSheetRef","parent","value","open","componentOrTemplateRef","_config","ref","closeOnOverlayDetachments","maxWidth","container","createBlockScrollStrategy","positionStrategy","createGlobalPositionStrategy","centerHorizontally","bottom","disableAnimations","templateContext","bottomSheetRef","providers","cdkRef","_cdkConfig","provide","useValue","Injectable","ɵprov","ɵɵngDeclareInjectable","minVersion","version","providedIn","MatBottomSheetModule","NgModule","DialogModule","PortalModule","exports","BidiModule","args"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"button-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/button/testing/button-harness.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\nimport {booleanAttribute} from '@angular/core';\nimport {\n ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {MatIconHarness} from '@angular/material/icon/testing';\nimport {\n ButtonAppearance,\n ButtonHarnessFilters,\n ButtonType,\n ButtonVariant,\n} from './button-harness-filters';\n\n/** Harness for interacting with a mat-button in tests. */\nexport class MatButtonHarness extends ContentContainerComponentHarness {\n // Note: `.mat-mdc-button-base` should be enough for all buttons, however some apps are using\n // the harness without actually having an applied button. Keep the attributes for backwards\n // compatibility.\n\n /** Selector for the harness. */\n static hostSelector = `.mat-mdc-button-base, [matButton], [mat-button], [matIconButton],\n [matFab], [matMiniFab], [mat-raised-button], [mat-flat-button], [mat-icon-button],\n [mat-stroked-button], [mat-fab], [mat-mini-fab]`;\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a button with specific attributes.\n * @param options Options for narrowing the search:\n * - `selector` finds a button whose host element matches the given selector.\n * - `text` finds a button with specific text content.\n * - `variant` finds buttons matching a specific variant.\n * - `appearance` finds buttons matching a specific appearance.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatButtonHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ButtonHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('text', options.text, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getText(), text),\n )\n .addOption('variant', options.variant, (harness, variant) =>\n HarnessPredicate.stringMatches(harness.getVariant(), variant),\n )\n .addOption('appearance', options.appearance, (harness, appearance) =>\n HarnessPredicate.stringMatches(harness.getAppearance(), appearance),\n )\n .addOption('disabled', options.disabled, async (harness, disabled) => {\n return (await harness.isDisabled()) === disabled;\n })\n .addOption('buttonType', options.buttonType, (harness, buttonType) =>\n HarnessPredicate.stringMatches(harness.getType(), buttonType),\n )\n .addOption('iconName', options.iconName, async (harness, iconName) => {\n const result = await harness.locatorForOptional(MatIconHarness.with({name: iconName}))();\n return result !== null;\n });\n }\n\n /**\n * Clicks the button at the given position relative to its top-left.\n * @param relativeX The relative x position of the click.\n * @param relativeY The relative y position of the click.\n */\n click(relativeX: number, relativeY: number): Promise<void>;\n /** Clicks the button at its center. */\n click(location: 'center'): Promise<void>;\n /** Clicks the button. */\n click(): Promise<void>;\n async click(...args: [] | ['center'] | [number, number]): Promise<void> {\n return (await this.host()).click(...(args as []));\n }\n\n /** Gets a boolean promise indicating if the button is disabled. */\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n return (\n booleanAttribute(await host.getAttribute('disabled')) ||\n (await host.hasClass('mat-mdc-button-disabled'))\n );\n }\n\n /** Gets a promise for the button's label text. */\n async getText(): Promise<string> {\n return (await this.host()).text();\n }\n\n /** Focuses the button and returns a void promise that indicates when the action is complete. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Blurs the button and returns a void promise that indicates when the action is complete. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the button is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /** Gets the variant of the button. */\n async getVariant(): Promise<ButtonVariant> {\n const host = await this.host();\n\n // TODO(crisbeto): we're checking both classes and attributes for backwards compatibility\n // with some internal apps that were applying the attribute without importing the directive.\n // Really we should be only targeting the classes.\n if (\n (await host.hasClass('mat-mdc-icon-button')) ||\n (await host.getAttribute('mat-icon-button')) != null\n ) {\n return 'icon';\n }\n\n if (\n (await host.hasClass('mat-mdc-mini-fab')) ||\n (await host.getAttribute('mat-mini-fab')) != null\n ) {\n return 'mini-fab';\n }\n\n if ((await host.hasClass('mat-mdc-fab')) || (await host.getAttribute('mat-fab')) != null) {\n return 'fab';\n }\n\n return 'basic';\n }\n\n /** Gets the appearance of the button. */\n async getAppearance(): Promise<ButtonAppearance | null> {\n const host = await this.host();\n\n if (await host.hasClass('mat-mdc-outlined-button')) {\n return 'outlined';\n }\n\n if (await host.hasClass('mat-mdc-raised-button')) {\n return 'elevated';\n }\n\n if (await host.hasClass('mat-mdc-unelevated-button')) {\n return 'filled';\n }\n\n if (await host.hasClass('mat-mdc-button')) {\n return 'text';\n }\n\n if (await host.hasClass('mat-tonal-button')) {\n return 'tonal';\n }\n\n return null;\n }\n\n /**\n * Gets the type of the button. Supported values are 'button', 'submit', and 'reset'.\n */\n async getType(): Promise<ButtonType | null> {\n const host = await this.host();\n const buttonType = await host.getAttribute('type');\n if (buttonType === 'button' || buttonType === 'submit' || buttonType === 'reset') {\n return buttonType;\n }\n return null;\n }\n}\n"],"names":["MatButtonHarness","ContentContainerComponentHarness","hostSelector","with","options","HarnessPredicate","addOption","text","harness","stringMatches","getText","variant","getVariant","appearance","getAppearance","disabled","isDisabled","buttonType","getType","iconName","result","locatorForOptional","MatIconHarness","name","click","args","host","booleanAttribute","getAttribute","hasClass","focus","blur","isFocused"],"mappings":";;;;AAuBM,MAAOA,gBAAiB,SAAQC,gCAAgC,CAAA;AAMpE,EAAA,OAAOC,YAAY,GAAG,CAAA;;oDAE4B;AAWlD,EAAA,OAAOC,IAAIA,CAETC,OAAA,GAAgC,EAAE,EAAA;IAElC,OAAO,IAAIC,gBAAgB,CAAC,IAAI,EAAED,OAAO,CAAA,CACtCE,SAAS,CAAC,MAAM,EAAEF,OAAO,CAACG,IAAI,EAAE,CAACC,OAAO,EAAED,IAAI,KAC7CF,gBAAgB,CAACI,aAAa,CAACD,OAAO,CAACE,OAAO,EAAE,EAAEH,IAAI,CAAC,CAAA,CAExDD,SAAS,CAAC,SAAS,EAAEF,OAAO,CAACO,OAAO,EAAE,CAACH,OAAO,EAAEG,OAAO,KACtDN,gBAAgB,CAACI,aAAa,CAACD,OAAO,CAACI,UAAU,EAAE,EAAED,OAAO,CAAC,CAAA,CAE9DL,SAAS,CAAC,YAAY,EAAEF,OAAO,CAACS,UAAU,EAAE,CAACL,OAAO,EAAEK,UAAU,KAC/DR,gBAAgB,CAACI,aAAa,CAACD,OAAO,CAACM,aAAa,EAAE,EAAED,UAAU,CAAC,CAAA,CAEpEP,SAAS,CAAC,UAAU,EAAEF,OAAO,CAACW,QAAQ,EAAE,OAAOP,OAAO,EAAEO,QAAQ,KAAI;MACnE,OAAO,CAAC,MAAMP,OAAO,CAACQ,UAAU,EAAE,MAAMD,QAAQ;AAClD,IAAA,CAAC,CAAA,CACAT,SAAS,CAAC,YAAY,EAAEF,OAAO,CAACa,UAAU,EAAE,CAACT,OAAO,EAAES,UAAU,KAC/DZ,gBAAgB,CAACI,aAAa,CAACD,OAAO,CAACU,OAAO,EAAE,EAAED,UAAU,CAAC,CAAA,CAE9DX,SAAS,CAAC,UAAU,EAAEF,OAAO,CAACe,QAAQ,EAAE,OAAOX,OAAO,EAAEW,QAAQ,KAAI;MACnE,MAAMC,MAAM,GAAG,MAAMZ,OAAO,CAACa,kBAAkB,CAACC,cAAc,CAACnB,IAAI,CAAC;AAACoB,QAAAA,IAAI,EAAEJ;OAAS,CAAC,CAAC,EAAE;MACxF,OAAOC,MAAM,KAAK,IAAI;AACxB,IAAA,CAAC,CAAC;AACN,EAAA;AAYA,EAAA,MAAMI,KAAKA,CAAC,GAAGC,IAAwC,EAAA;AACrD,IAAA,OAAO,CAAC,MAAM,IAAI,CAACC,IAAI,EAAE,EAAEF,KAAK,CAAC,GAAIC,IAAW,CAAC;AACnD,EAAA;EAGA,MAAMT,UAAUA,GAAA;AACd,IAAA,MAAMU,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;AAC9B,IAAA,OACEC,gBAAgB,CAAC,MAAMD,IAAI,CAACE,YAAY,CAAC,UAAU,CAAC,CAAC,KACpD,MAAMF,IAAI,CAACG,QAAQ,CAAC,yBAAyB,CAAC,CAAC;AAEpD,EAAA;EAGA,MAAMnB,OAAOA,GAAA;IACX,OAAO,CAAC,MAAM,IAAI,CAACgB,IAAI,EAAE,EAAEnB,IAAI,EAAE;AACnC,EAAA;EAGA,MAAMuB,KAAKA,GAAA;IACT,OAAO,CAAC,MAAM,IAAI,CAACJ,IAAI,EAAE,EAAEI,KAAK,EAAE;AACpC,EAAA;EAGA,MAAMC,IAAIA,GAAA;IACR,OAAO,CAAC,MAAM,IAAI,CAACL,IAAI,EAAE,EAAEK,IAAI,EAAE;AACnC,EAAA;EAGA,MAAMC,SAASA,GAAA;IACb,OAAO,CAAC,MAAM,IAAI,CAACN,IAAI,EAAE,EAAEM,SAAS,EAAE;AACxC,EAAA;EAGA,MAAMpB,UAAUA,GAAA;AACd,IAAA,MAAMc,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;AAK9B,IAAA,IACE,CAAC,MAAMA,IAAI,CAACG,QAAQ,CAAC,qBAAqB,CAAC,KAC3C,CAAC,MAAMH,IAAI,CAACE,YAAY,CAAC,iBAAiB,CAAC,KAAK,IAAI,EACpD;AACA,MAAA,OAAO,MAAM;AACf,IAAA;AAEA,IAAA,IACE,CAAC,MAAMF,IAAI,CAACG,QAAQ,CAAC,kBAAkB,CAAC,KACxC,CAAC,MAAMH,IAAI,CAACE,YAAY,CAAC,cAAc,CAAC,KAAK,IAAI,EACjD;AACA,MAAA,OAAO,UAAU;AACnB,IAAA;AAEA,IAAA,IAAI,CAAC,MAAMF,IAAI,CAACG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,MAAMH,IAAI,CAACE,YAAY,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;AACxF,MAAA,OAAO,KAAK;AACd,IAAA;AAEA,IAAA,OAAO,OAAO;AAChB,EAAA;EAGA,MAAMd,aAAaA,GAAA;AACjB,IAAA,MAAMY,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;AAE9B,IAAA,IAAI,MAAMA,IAAI,CAACG,QAAQ,CAAC,yBAAyB,CAAC,EAAE;AAClD,MAAA,OAAO,UAAU;AACnB,IAAA;AAEA,IAAA,IAAI,MAAMH,IAAI,CAACG,QAAQ,CAAC,uBAAuB,CAAC,EAAE;AAChD,MAAA,OAAO,UAAU;AACnB,IAAA;AAEA,IAAA,IAAI,MAAMH,IAAI,CAACG,QAAQ,CAAC,2BAA2B,CAAC,EAAE;AACpD,MAAA,OAAO,QAAQ;AACjB,IAAA;AAEA,IAAA,IAAI,MAAMH,IAAI,CAACG,QAAQ,CAAC,gBAAgB,CAAC,EAAE;AACzC,MAAA,OAAO,MAAM;AACf,IAAA;AAEA,IAAA,IAAI,MAAMH,IAAI,CAACG,QAAQ,CAAC,kBAAkB,CAAC,EAAE;AAC3C,MAAA,OAAO,OAAO;AAChB,IAAA;AAEA,IAAA,OAAO,IAAI;AACb,EAAA;EAKA,MAAMX,OAAOA,GAAA;AACX,IAAA,MAAMQ,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;IAC9B,MAAMT,UAAU,GAAG,MAAMS,IAAI,CAACE,YAAY,CAAC,MAAM,CAAC;IAClD,IAAIX,UAAU,KAAK,QAAQ,IAAIA,UAAU,KAAK,QAAQ,IAAIA,UAAU,KAAK,OAAO,EAAE;AAChF,MAAA,OAAOA,UAAU;AACnB,IAAA;AACA,IAAA,OAAO,IAAI;AACb,EAAA;;;;;"}
{"version":3,"file":"button-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/button/testing/button-harness.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\nimport {booleanAttribute} from '@angular/core';\nimport {\n ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {MatIconHarness} from '@angular/material/icon/testing';\nimport {\n ButtonAppearance,\n ButtonHarnessFilters,\n ButtonType,\n ButtonVariant,\n} from './button-harness-filters';\n\n/** Harness for interacting with a mat-button in tests. */\nexport class MatButtonHarness extends ContentContainerComponentHarness {\n // Note: `.mat-mdc-button-base` should be enough for all buttons, however some apps are using\n // the harness without actually having an applied button. Keep the attributes for backwards\n // compatibility.\n\n /** Selector for the harness. */\n static hostSelector = `.mat-mdc-button-base, [matButton], [mat-button], [matIconButton],\n [matFab], [matMiniFab], [mat-raised-button], [mat-flat-button], [mat-icon-button],\n [mat-stroked-button], [mat-fab], [mat-mini-fab]`;\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a button with specific attributes.\n * @param options Options for narrowing the search:\n * - `selector` finds a button whose host element matches the given selector.\n * - `text` finds a button with specific text content.\n * - `variant` finds buttons matching a specific variant.\n * - `appearance` finds buttons matching a specific appearance.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatButtonHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ButtonHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('text', options.text, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getText(), text),\n )\n .addOption('variant', options.variant, (harness, variant) =>\n HarnessPredicate.stringMatches(harness.getVariant(), variant),\n )\n .addOption('appearance', options.appearance, (harness, appearance) =>\n HarnessPredicate.stringMatches(harness.getAppearance(), appearance),\n )\n .addOption('disabled', options.disabled, async (harness, disabled) => {\n return (await harness.isDisabled()) === disabled;\n })\n .addOption('buttonType', options.buttonType, (harness, buttonType) =>\n HarnessPredicate.stringMatches(harness.getType(), buttonType),\n )\n .addOption('iconName', options.iconName, async (harness, iconName) => {\n const result = await harness.locatorForOptional(MatIconHarness.with({name: iconName}))();\n return result !== null;\n });\n }\n\n /**\n * Clicks the button at the given position relative to its top-left.\n * @param relativeX The relative x position of the click.\n * @param relativeY The relative y position of the click.\n */\n click(relativeX: number, relativeY: number): Promise<void>;\n /** Clicks the button at its center. */\n click(location: 'center'): Promise<void>;\n /** Clicks the button. */\n click(): Promise<void>;\n async click(...args: [] | ['center'] | [number, number]): Promise<void> {\n return (await this.host()).click(...(args as []));\n }\n\n /** Gets a boolean promise indicating if the button is disabled. */\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n return (\n booleanAttribute(await host.getAttribute('disabled')) ||\n (await host.hasClass('mat-mdc-button-disabled'))\n );\n }\n\n /** Gets a promise for the button's label text. */\n async getText(): Promise<string> {\n return (await this.host()).text();\n }\n\n /** Focuses the button and returns a void promise that indicates when the action is complete. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Blurs the button and returns a void promise that indicates when the action is complete. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the button is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /** Gets the variant of the button. */\n async getVariant(): Promise<ButtonVariant> {\n const host = await this.host();\n\n // TODO(crisbeto): we're checking both classes and attributes for backwards compatibility\n // with some internal apps that were applying the attribute without importing the directive.\n // Really we should be only targeting the classes.\n if (\n (await host.hasClass('mat-mdc-icon-button')) ||\n (await host.getAttribute('mat-icon-button')) != null\n ) {\n return 'icon';\n }\n\n if (\n (await host.hasClass('mat-mdc-mini-fab')) ||\n (await host.getAttribute('mat-mini-fab')) != null\n ) {\n return 'mini-fab';\n }\n\n if ((await host.hasClass('mat-mdc-fab')) || (await host.getAttribute('mat-fab')) != null) {\n return 'fab';\n }\n\n return 'basic';\n }\n\n /** Gets the appearance of the button. */\n async getAppearance(): Promise<ButtonAppearance | null> {\n const host = await this.host();\n\n if (await host.hasClass('mat-mdc-outlined-button')) {\n return 'outlined';\n }\n\n if (await host.hasClass('mat-mdc-raised-button')) {\n return 'elevated';\n }\n\n if (await host.hasClass('mat-mdc-unelevated-button')) {\n return 'filled';\n }\n\n if (await host.hasClass('mat-mdc-button')) {\n return 'text';\n }\n\n if (await host.hasClass('mat-tonal-button')) {\n return 'tonal';\n }\n\n return null;\n }\n\n /**\n * Gets the type of the button. Supported values are 'button', 'submit', and 'reset'.\n */\n async getType(): Promise<ButtonType | null> {\n const host = await this.host();\n const buttonType = await host.getAttribute('type');\n if (buttonType === 'button' || buttonType === 'submit' || buttonType === 'reset') {\n return buttonType;\n }\n return null;\n }\n}\n"],"names":["MatButtonHarness","ContentContainerComponentHarness","hostSelector","with","options","HarnessPredicate","addOption","text","harness","stringMatches","getText","variant","getVariant","appearance","getAppearance","disabled","isDisabled","buttonType","getType","iconName","result","locatorForOptional","MatIconHarness","name","click","args","host","booleanAttribute","getAttribute","hasClass","focus","blur","isFocused"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"button-toggle-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/button-toggle/testing/button-toggle-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/button-toggle/testing/button-toggle-group-harness.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\nimport {ComponentHarness, HarnessPredicate, parallel} from '@angular/cdk/testing';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {MatButtonToggleAppearance} from '../button-toggle';\nimport {ButtonToggleHarnessFilters} from './button-toggle-harness-filters';\n\n/** Harness for interacting with a standard mat-button-toggle in tests. */\nexport class MatButtonToggleHarness extends ComponentHarness {\n /** The selector for the host element of a `MatButton` instance. */\n static hostSelector = '.mat-button-toggle';\n\n private _label = this.locatorFor('.mat-button-toggle-label-content');\n private _button = this.locatorFor('.mat-button-toggle-button');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatButtonToggleHarness` that meets\n * certain criteria.\n * @param options Options for filtering which button toggle instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: ButtonToggleHarnessFilters = {}): HarnessPredicate<MatButtonToggleHarness> {\n return new HarnessPredicate(MatButtonToggleHarness, options)\n .addOption('text', options.text, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getText(), text),\n )\n .addOption('name', options.name, (harness, name) =>\n HarnessPredicate.stringMatches(harness.getName(), name),\n )\n .addOption(\n 'checked',\n options.checked,\n async (harness, checked) => (await harness.isChecked()) === checked,\n )\n .addOption('disabled', options.disabled, async (harness, disabled) => {\n return (await harness.isDisabled()) === disabled;\n });\n }\n\n /** Gets a boolean promise indicating if the button toggle is checked. */\n async isChecked(): Promise<boolean> {\n const button = await this._button();\n const [checked, pressed] = await parallel(() => [\n button.getAttribute('aria-checked'),\n button.getAttribute('aria-pressed'),\n ]);\n return coerceBooleanProperty(checked) || coerceBooleanProperty(pressed);\n }\n\n /** Gets a boolean promise indicating if the button toggle is disabled. */\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n return host.hasClass('mat-button-toggle-disabled');\n }\n\n /** Gets a promise for the button toggle's name. */\n async getName(): Promise<string | null> {\n return (await this._button()).getAttribute('name');\n }\n\n /** Gets a promise for the button toggle's aria-label. */\n async getAriaLabel(): Promise<string | null> {\n return (await this._button()).getAttribute('aria-label');\n }\n\n /** Gets a promise for the button toggles's aria-labelledby. */\n async getAriaLabelledby(): Promise<string | null> {\n return (await this._button()).getAttribute('aria-labelledby');\n }\n\n /** Gets a promise for the button toggle's text. */\n async getText(): Promise<string> {\n return (await this._label()).text();\n }\n\n /** Gets the appearance that the button toggle is using. */\n async getAppearance(): Promise<MatButtonToggleAppearance> {\n const host = await this.host();\n const className = 'mat-button-toggle-appearance-standard';\n return (await host.hasClass(className)) ? 'standard' : 'legacy';\n }\n\n /** Focuses the toggle. */\n async focus(): Promise<void> {\n return (await this._button()).focus();\n }\n\n /** Blurs the toggle. */\n async blur(): Promise<void> {\n return (await this._button()).blur();\n }\n\n /** Whether the toggle is focused. */\n async isFocused(): Promise<boolean> {\n return (await this._button()).isFocused();\n }\n\n /** Toggle the checked state of the buttons toggle. */\n async toggle(): Promise<void> {\n return (await this._button()).click();\n }\n\n /**\n * Puts the button toggle in a checked state by toggling it if it's\n * currently unchecked, or doing nothing if it is already checked.\n */\n async check(): Promise<void> {\n if (!(await this.isChecked())) {\n await this.toggle();\n }\n }\n\n /**\n * Puts the button toggle in an unchecked state by toggling it if it's\n * currently checked, or doing nothing if it's already unchecked.\n */\n async uncheck(): Promise<void> {\n if (await this.isChecked()) {\n await this.toggle();\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 {ComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {MatButtonToggleAppearance} from '../button-toggle';\nimport {ButtonToggleGroupHarnessFilters} from './button-toggle-group-harness-filters';\nimport {ButtonToggleHarnessFilters} from './button-toggle-harness-filters';\nimport {MatButtonToggleHarness} from './button-toggle-harness';\n\n/** Harness for interacting with a standard mat-button-toggle in tests. */\nexport class MatButtonToggleGroupHarness extends ComponentHarness {\n /** The selector for the host element of a `MatButton` instance. */\n static hostSelector = '.mat-button-toggle-group';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatButtonToggleGroupHarness`\n * that meets certain criteria.\n * @param options Options for filtering which button toggle instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: ButtonToggleGroupHarnessFilters = {},\n ): HarnessPredicate<MatButtonToggleGroupHarness> {\n return new HarnessPredicate(MatButtonToggleGroupHarness, options).addOption(\n 'disabled',\n options.disabled,\n async (harness, disabled) => {\n return (await harness.isDisabled()) === disabled;\n },\n );\n }\n\n /**\n * Gets the button toggles that are inside the group.\n * @param filter Optionally filters which toggles are included.\n */\n async getToggles(filter: ButtonToggleHarnessFilters = {}): Promise<MatButtonToggleHarness[]> {\n return this.locatorForAll(MatButtonToggleHarness.with(filter))();\n }\n\n /** Gets whether the button toggle group is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-disabled')) === 'true';\n }\n\n /** Gets whether the button toggle group is laid out vertically. */\n async isVertical(): Promise<boolean> {\n return (await this.host()).hasClass('mat-button-toggle-vertical');\n }\n\n /** Gets the appearance that the group is using. */\n async getAppearance(): Promise<MatButtonToggleAppearance> {\n const host = await this.host();\n const className = 'mat-button-toggle-group-appearance-standard';\n return (await host.hasClass(className)) ? 'standard' : 'legacy';\n }\n}\n"],"names":["MatButtonToggleHarness","ComponentHarness","hostSelector","_label","locatorFor","_button","with","options","HarnessPredicate","addOption","text","harness","stringMatches","getText","name","getName","checked","isChecked","disabled","isDisabled","button","pressed","parallel","getAttribute","coerceBooleanProperty","host","hasClass","getAriaLabel","getAriaLabelledby","getAppearance","className","focus","blur","isFocused","toggle","click","check","uncheck","MatButtonToggleGroupHarness","getToggles","filter","locatorForAll","isVertical"],"mappings":"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"}
{"version":3,"file":"button-toggle-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/button-toggle/testing/button-toggle-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/button-toggle/testing/button-toggle-group-harness.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\nimport {ComponentHarness, HarnessPredicate, parallel} from '@angular/cdk/testing';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {MatButtonToggleAppearance} from '../button-toggle';\nimport {ButtonToggleHarnessFilters} from './button-toggle-harness-filters';\n\n/** Harness for interacting with a standard mat-button-toggle in tests. */\nexport class MatButtonToggleHarness extends ComponentHarness {\n /** The selector for the host element of a `MatButton` instance. */\n static hostSelector = '.mat-button-toggle';\n\n private _label = this.locatorFor('.mat-button-toggle-label-content');\n private _button = this.locatorFor('.mat-button-toggle-button');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatButtonToggleHarness` that meets\n * certain criteria.\n * @param options Options for filtering which button toggle instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: ButtonToggleHarnessFilters = {}): HarnessPredicate<MatButtonToggleHarness> {\n return new HarnessPredicate(MatButtonToggleHarness, options)\n .addOption('text', options.text, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getText(), text),\n )\n .addOption('name', options.name, (harness, name) =>\n HarnessPredicate.stringMatches(harness.getName(), name),\n )\n .addOption(\n 'checked',\n options.checked,\n async (harness, checked) => (await harness.isChecked()) === checked,\n )\n .addOption('disabled', options.disabled, async (harness, disabled) => {\n return (await harness.isDisabled()) === disabled;\n });\n }\n\n /** Gets a boolean promise indicating if the button toggle is checked. */\n async isChecked(): Promise<boolean> {\n const button = await this._button();\n const [checked, pressed] = await parallel(() => [\n button.getAttribute('aria-checked'),\n button.getAttribute('aria-pressed'),\n ]);\n return coerceBooleanProperty(checked) || coerceBooleanProperty(pressed);\n }\n\n /** Gets a boolean promise indicating if the button toggle is disabled. */\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n return host.hasClass('mat-button-toggle-disabled');\n }\n\n /** Gets a promise for the button toggle's name. */\n async getName(): Promise<string | null> {\n return (await this._button()).getAttribute('name');\n }\n\n /** Gets a promise for the button toggle's aria-label. */\n async getAriaLabel(): Promise<string | null> {\n return (await this._button()).getAttribute('aria-label');\n }\n\n /** Gets a promise for the button toggles's aria-labelledby. */\n async getAriaLabelledby(): Promise<string | null> {\n return (await this._button()).getAttribute('aria-labelledby');\n }\n\n /** Gets a promise for the button toggle's text. */\n async getText(): Promise<string> {\n return (await this._label()).text();\n }\n\n /** Gets the appearance that the button toggle is using. */\n async getAppearance(): Promise<MatButtonToggleAppearance> {\n const host = await this.host();\n const className = 'mat-button-toggle-appearance-standard';\n return (await host.hasClass(className)) ? 'standard' : 'legacy';\n }\n\n /** Focuses the toggle. */\n async focus(): Promise<void> {\n return (await this._button()).focus();\n }\n\n /** Blurs the toggle. */\n async blur(): Promise<void> {\n return (await this._button()).blur();\n }\n\n /** Whether the toggle is focused. */\n async isFocused(): Promise<boolean> {\n return (await this._button()).isFocused();\n }\n\n /** Toggle the checked state of the buttons toggle. */\n async toggle(): Promise<void> {\n return (await this._button()).click();\n }\n\n /**\n * Puts the button toggle in a checked state by toggling it if it's\n * currently unchecked, or doing nothing if it is already checked.\n */\n async check(): Promise<void> {\n if (!(await this.isChecked())) {\n await this.toggle();\n }\n }\n\n /**\n * Puts the button toggle in an unchecked state by toggling it if it's\n * currently checked, or doing nothing if it's already unchecked.\n */\n async uncheck(): Promise<void> {\n if (await this.isChecked()) {\n await this.toggle();\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 {ComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {MatButtonToggleAppearance} from '../button-toggle';\nimport {ButtonToggleGroupHarnessFilters} from './button-toggle-group-harness-filters';\nimport {ButtonToggleHarnessFilters} from './button-toggle-harness-filters';\nimport {MatButtonToggleHarness} from './button-toggle-harness';\n\n/** Harness for interacting with a standard mat-button-toggle in tests. */\nexport class MatButtonToggleGroupHarness extends ComponentHarness {\n /** The selector for the host element of a `MatButton` instance. */\n static hostSelector = '.mat-button-toggle-group';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatButtonToggleGroupHarness`\n * that meets certain criteria.\n * @param options Options for filtering which button toggle instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: ButtonToggleGroupHarnessFilters = {},\n ): HarnessPredicate<MatButtonToggleGroupHarness> {\n return new HarnessPredicate(MatButtonToggleGroupHarness, options).addOption(\n 'disabled',\n options.disabled,\n async (harness, disabled) => {\n return (await harness.isDisabled()) === disabled;\n },\n );\n }\n\n /**\n * Gets the button toggles that are inside the group.\n * @param filter Optionally filters which toggles are included.\n */\n async getToggles(filter: ButtonToggleHarnessFilters = {}): Promise<MatButtonToggleHarness[]> {\n return this.locatorForAll(MatButtonToggleHarness.with(filter))();\n }\n\n /** Gets whether the button toggle group is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-disabled')) === 'true';\n }\n\n /** Gets whether the button toggle group is laid out vertically. */\n async isVertical(): Promise<boolean> {\n return (await this.host()).hasClass('mat-button-toggle-vertical');\n }\n\n /** Gets the appearance that the group is using. */\n async getAppearance(): Promise<MatButtonToggleAppearance> {\n const host = await this.host();\n const className = 'mat-button-toggle-group-appearance-standard';\n return (await host.hasClass(className)) ? 'standard' : 'legacy';\n }\n}\n"],"names":["MatButtonToggleHarness","ComponentHarness","hostSelector","_label","locatorFor","_button","with","options","HarnessPredicate","addOption","text","harness","stringMatches","getText","name","getName","checked","isChecked","disabled","isDisabled","button","pressed","parallel","getAttribute","coerceBooleanProperty","host","hasClass","getAriaLabel","getAriaLabelledby","getAppearance","className","focus","blur","isFocused","toggle","click","check","uncheck","MatButtonToggleGroupHarness","getToggles","filter","locatorForAll","isVertical"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"button-toggle.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/button-toggle/button-toggle.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/button-toggle/button-toggle.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/button-toggle/button-toggle-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\nimport {_IdGenerator, FocusMonitor} from '@angular/cdk/a11y';\nimport {Direction, Directionality} from '@angular/cdk/bidi';\nimport {SelectionModel} from '@angular/cdk/collections';\nimport {\n DOWN_ARROW,\n ENTER,\n LEFT_ARROW,\n RIGHT_ARROW,\n SPACE,\n UP_ARROW,\n hasModifierKey,\n} from '@angular/cdk/keycodes';\nimport {_CdkPrivateStyleLoader} from '@angular/cdk/private';\nimport {\n AfterContentInit,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostAttributeToken,\n inject,\n InjectionToken,\n Input,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n signal,\n ViewChild,\n ViewEncapsulation,\n WritableSignal,\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {_animationsDisabled, _StructuralStylesLoader, MatPseudoCheckbox, MatRipple} from '../core';\n\n/**\n * @deprecated No longer used.\n * @breaking-change 11.0.0\n */\nexport type ToggleType = 'checkbox' | 'radio';\n\n/** Possible appearance styles for the button toggle. */\nexport type MatButtonToggleAppearance = 'legacy' | 'standard';\n\n/**\n * Represents the default options for the button toggle that can be configured\n * using the `MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS` injection token.\n */\nexport interface MatButtonToggleDefaultOptions {\n /**\n * Default appearance to be used by button toggles. Can be overridden by explicitly\n * setting an appearance on a button toggle or group.\n */\n appearance?: MatButtonToggleAppearance;\n /** Whether icon indicators should be hidden for single-selection button toggle groups. */\n hideSingleSelectionIndicator?: boolean;\n /** Whether icon indicators should be hidden for multiple-selection button toggle groups. */\n hideMultipleSelectionIndicator?: boolean;\n /** Whether disabled toggle buttons should be interactive. */\n disabledInteractive?: boolean;\n}\n\n/**\n * Injection token that can be used to configure the\n * default options for all button toggles within an app.\n */\nexport const MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS = new InjectionToken<MatButtonToggleDefaultOptions>(\n 'MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS',\n {\n providedIn: 'root',\n factory: () => ({\n hideSingleSelectionIndicator: false,\n hideMultipleSelectionIndicator: false,\n disabledInteractive: false,\n }),\n },\n);\n\n/**\n * Injection token that can be used to reference instances of `MatButtonToggleGroup`.\n * It serves as alternative token to the actual `MatButtonToggleGroup` class which\n * could cause unnecessary retention of the class and its component metadata.\n */\nexport const MAT_BUTTON_TOGGLE_GROUP = new InjectionToken<MatButtonToggleGroup>(\n 'MatButtonToggleGroup',\n);\n\n/**\n * Provider Expression that allows mat-button-toggle-group to register as a ControlValueAccessor.\n * This allows it to support [(ngModel)].\n * @docs-private\n */\nexport const MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatButtonToggleGroup),\n multi: true,\n};\n\n/** Change event object emitted by button toggle. */\nexport class MatButtonToggleChange {\n constructor(\n /** The button toggle that emits the event. */\n public source: MatButtonToggle,\n\n /** The value assigned to the button toggle. */\n public value: any,\n ) {}\n}\n\n/** Exclusive selection button toggle group that behaves like a radio-button group. */\n@Directive({\n selector: 'mat-button-toggle-group',\n providers: [\n MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR,\n {provide: MAT_BUTTON_TOGGLE_GROUP, useExisting: MatButtonToggleGroup},\n ],\n host: {\n 'class': 'mat-button-toggle-group',\n '(keydown)': '_keydown($event)',\n '[attr.role]': \"multiple ? 'group' : 'radiogroup'\",\n '[attr.aria-disabled]': 'disabled',\n '[class.mat-button-toggle-vertical]': 'vertical',\n '[class.mat-button-toggle-group-appearance-standard]': 'appearance === \"standard\"',\n },\n exportAs: 'matButtonToggleGroup',\n})\nexport class MatButtonToggleGroup implements ControlValueAccessor, OnInit, AfterContentInit {\n private _changeDetector = inject(ChangeDetectorRef);\n private _dir = inject(Directionality, {optional: true});\n\n private _multiple = false;\n private _disabled = false;\n private _disabledInteractive = false;\n private _selectionModel!: SelectionModel<MatButtonToggle>;\n\n /**\n * Reference to the raw value that the consumer tried to assign. The real\n * value will exclude any values from this one that don't correspond to a\n * toggle. Useful for the cases where the value is assigned before the toggles\n * have been initialized or at the same that they're being swapped out.\n */\n private _rawValue: any;\n\n /**\n * The method to be called in order to update ngModel.\n * Now `ngModel` binding is not supported in multiple selection mode.\n */\n _controlValueAccessorChangeFn: (value: any) => void = () => {};\n\n /** onTouch function registered via registerOnTouch (ControlValueAccessor). */\n _onTouched: () => any = () => {};\n\n /** Child button toggle buttons. */\n @ContentChildren(forwardRef(() => MatButtonToggle), {\n // Note that this would technically pick up toggles\n // from nested groups, but that's not a case that we support.\n descendants: true,\n })\n _buttonToggles!: QueryList<MatButtonToggle>;\n\n /** The appearance for all the buttons in the group. */\n @Input() appearance: MatButtonToggleAppearance;\n\n /** `name` attribute for the underlying `input` element. */\n @Input()\n get name(): string {\n return this._name;\n }\n set name(value: string) {\n this._name = value;\n this._markButtonsForCheck();\n }\n private _name = inject(_IdGenerator).getId('mat-button-toggle-group-');\n\n /** Whether the toggle group is vertical. */\n @Input({transform: booleanAttribute}) vertical: boolean = false;\n\n /** Value of the toggle group. */\n @Input()\n get value(): any {\n const selected = this._selectionModel ? this._selectionModel.selected : [];\n\n if (this.multiple) {\n return selected.map(toggle => toggle.value);\n }\n\n return selected[0] ? selected[0].value : undefined;\n }\n set value(newValue: any) {\n this._setSelectionByValue(newValue);\n this.valueChange.emit(this.value);\n }\n\n /**\n * Event that emits whenever the value of the group changes.\n * Used to facilitate two-way data binding.\n * @docs-private\n */\n @Output() readonly valueChange = new EventEmitter<any>();\n\n /** Selected button toggles in the group. */\n get selected(): MatButtonToggle | MatButtonToggle[] {\n const selected = this._selectionModel ? this._selectionModel.selected : [];\n return this.multiple ? selected : selected[0] || null;\n }\n\n /** Whether multiple button toggles can be selected. */\n @Input({transform: booleanAttribute})\n get multiple(): boolean {\n return this._multiple;\n }\n set multiple(value: boolean) {\n this._multiple = value;\n this._markButtonsForCheck();\n }\n\n /** Whether multiple button toggle group is disabled. */\n @Input({transform: booleanAttribute})\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = value;\n this._markButtonsForCheck();\n }\n\n /** Whether buttons in the group should be interactive while they're disabled. */\n @Input({transform: booleanAttribute})\n get disabledInteractive(): boolean {\n return this._disabledInteractive;\n }\n set disabledInteractive(value: boolean) {\n this._disabledInteractive = value;\n this._markButtonsForCheck();\n }\n\n /** The layout direction of the toggle button group. */\n get dir(): Direction {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n\n /** Event emitted when the group's value changes. */\n @Output() readonly change: EventEmitter<MatButtonToggleChange> =\n new EventEmitter<MatButtonToggleChange>();\n\n /** Whether checkmark indicator for single-selection button toggle groups is hidden. */\n @Input({transform: booleanAttribute})\n get hideSingleSelectionIndicator(): boolean {\n return this._hideSingleSelectionIndicator;\n }\n set hideSingleSelectionIndicator(value: boolean) {\n this._hideSingleSelectionIndicator = value;\n this._markButtonsForCheck();\n }\n private _hideSingleSelectionIndicator: boolean;\n\n /** Whether checkmark indicator for multiple-selection button toggle groups is hidden. */\n @Input({transform: booleanAttribute})\n get hideMultipleSelectionIndicator(): boolean {\n return this._hideMultipleSelectionIndicator;\n }\n set hideMultipleSelectionIndicator(value: boolean) {\n this._hideMultipleSelectionIndicator = value;\n this._markButtonsForCheck();\n }\n private _hideMultipleSelectionIndicator: boolean;\n\n constructor(...args: unknown[]);\n\n constructor() {\n const defaultOptions = inject<MatButtonToggleDefaultOptions>(\n MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS,\n {optional: true},\n );\n\n this.appearance =\n defaultOptions && defaultOptions.appearance ? defaultOptions.appearance : 'standard';\n this._hideSingleSelectionIndicator = defaultOptions?.hideSingleSelectionIndicator ?? false;\n this._hideMultipleSelectionIndicator = defaultOptions?.hideMultipleSelectionIndicator ?? false;\n }\n\n ngOnInit() {\n this._selectionModel = new SelectionModel<MatButtonToggle>(this.multiple, undefined, false);\n }\n\n ngAfterContentInit() {\n this._selectionModel.select(...this._buttonToggles.filter(toggle => toggle.checked));\n if (!this.multiple) {\n this._initializeTabIndex();\n }\n }\n\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value Value to be set to the model.\n */\n writeValue(value: any) {\n this.value = value;\n this._changeDetector.markForCheck();\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn: (value: any) => void) {\n this._controlValueAccessorChangeFn = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn: any) {\n this._onTouched = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n /** Handle keydown event calling to single-select button toggle. */\n protected _keydown(event: KeyboardEvent) {\n if (this.multiple || this.disabled || hasModifierKey(event)) {\n return;\n }\n\n const target = event.target as HTMLButtonElement;\n const buttonId = target.id;\n const index = this._buttonToggles.toArray().findIndex(toggle => {\n return toggle.buttonId === buttonId;\n });\n\n let nextButton: MatButtonToggle | null = null;\n switch (event.keyCode) {\n case SPACE:\n case ENTER:\n nextButton = this._buttonToggles.get(index) || null;\n break;\n case UP_ARROW:\n nextButton = this._getNextButton(index, -1);\n break;\n case LEFT_ARROW:\n nextButton = this._getNextButton(index, this.dir === 'ltr' ? -1 : 1);\n break;\n case DOWN_ARROW:\n nextButton = this._getNextButton(index, 1);\n break;\n case RIGHT_ARROW:\n nextButton = this._getNextButton(index, this.dir === 'ltr' ? 1 : -1);\n break;\n default:\n return;\n }\n\n if (nextButton) {\n event.preventDefault();\n nextButton._onButtonClick();\n nextButton.focus();\n }\n }\n\n /** Dispatch change event with current selection and group value. */\n _emitChangeEvent(toggle: MatButtonToggle): void {\n const event = new MatButtonToggleChange(toggle, this.value);\n this._rawValue = event.value;\n this._controlValueAccessorChangeFn(event.value);\n this.change.emit(event);\n }\n\n /**\n * Syncs a button toggle's selected state with the model value.\n * @param toggle Toggle to be synced.\n * @param select Whether the toggle should be selected.\n * @param isUserInput Whether the change was a result of a user interaction.\n * @param deferEvents Whether to defer emitting the change events.\n */\n _syncButtonToggle(\n toggle: MatButtonToggle,\n select: boolean,\n isUserInput = false,\n deferEvents = false,\n ) {\n // Deselect the currently-selected toggle, if we're in single-selection\n // mode and the button being toggled isn't selected at the moment.\n if (!this.multiple && this.selected && !toggle.checked) {\n (this.selected as MatButtonToggle).checked = false;\n }\n\n if (this._selectionModel) {\n if (select) {\n this._selectionModel.select(toggle);\n } else {\n this._selectionModel.deselect(toggle);\n }\n } else {\n deferEvents = true;\n }\n\n // We need to defer in some cases in order to avoid \"changed after checked errors\", however\n // the side-effect is that we may end up updating the model value out of sequence in others\n // The `deferEvents` flag allows us to decide whether to do it on a case-by-case basis.\n if (deferEvents) {\n Promise.resolve().then(() => this._updateModelValue(toggle, isUserInput));\n } else {\n this._updateModelValue(toggle, isUserInput);\n }\n }\n\n /** Checks whether a button toggle is selected. */\n _isSelected(toggle: MatButtonToggle) {\n return this._selectionModel && this._selectionModel.isSelected(toggle);\n }\n\n /** Determines whether a button toggle should be checked on init. */\n _isPrechecked(toggle: MatButtonToggle) {\n if (typeof this._rawValue === 'undefined') {\n return false;\n }\n\n if (this.multiple && Array.isArray(this._rawValue)) {\n return this._rawValue.some(value => toggle.value != null && value === toggle.value);\n }\n\n return toggle.value === this._rawValue;\n }\n\n /** Initializes the tabindex attribute using the radio pattern. */\n private _initializeTabIndex() {\n this._buttonToggles.forEach(toggle => {\n toggle.tabIndex = -1;\n });\n if (this.selected) {\n (this.selected as MatButtonToggle).tabIndex = 0;\n } else {\n for (let i = 0; i < this._buttonToggles.length; i++) {\n const toggle = this._buttonToggles.get(i)!;\n\n if (!toggle.disabled) {\n toggle.tabIndex = 0;\n break;\n }\n }\n }\n }\n\n /** Obtain the subsequent toggle to which the focus shifts. */\n private _getNextButton(startIndex: number, offset: number): MatButtonToggle | null {\n const items = this._buttonToggles;\n\n for (let i = 1; i <= items.length; i++) {\n const index = (startIndex + offset * i + items.length) % items.length;\n const item = items.get(index);\n\n if (item && !item.disabled) {\n return item;\n }\n }\n\n return null;\n }\n\n /** Updates the selection state of the toggles in the group based on a value. */\n private _setSelectionByValue(value: any | any[]) {\n this._rawValue = value;\n\n if (!this._buttonToggles) {\n return;\n }\n\n const toggles = this._buttonToggles.toArray();\n\n if (this.multiple && value) {\n if (!Array.isArray(value) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Value must be an array in multiple-selection mode.');\n }\n\n this._clearSelection();\n value.forEach((currentValue: any) => this._selectValue(currentValue, toggles));\n } else {\n this._clearSelection();\n this._selectValue(value, toggles);\n }\n\n // In single selection mode we need at least one enabled toggle to always be focusable.\n if (!this.multiple && toggles.every(toggle => toggle.tabIndex === -1)) {\n for (const toggle of toggles) {\n if (!toggle.disabled) {\n toggle.tabIndex = 0;\n break;\n }\n }\n }\n }\n\n /** Clears the selected toggles. */\n private _clearSelection() {\n this._selectionModel.clear();\n this._buttonToggles.forEach(toggle => {\n toggle.checked = false;\n // If the button toggle is in single select mode, initialize the tabIndex.\n if (!this.multiple) {\n toggle.tabIndex = -1;\n }\n });\n }\n\n /** Selects a value if there's a toggle that corresponds to it. */\n private _selectValue(value: any, toggles: MatButtonToggle[]) {\n for (const toggle of toggles) {\n if (toggle.value === value) {\n toggle.checked = true;\n this._selectionModel.select(toggle);\n if (!this.multiple) {\n // If the button toggle is in single select mode, reset the tabIndex.\n toggle.tabIndex = 0;\n }\n break;\n }\n }\n }\n\n /** Syncs up the group's value with the model and emits the change event. */\n private _updateModelValue(toggle: MatButtonToggle, isUserInput: boolean) {\n // Only emit the change event for user input.\n if (isUserInput) {\n this._emitChangeEvent(toggle);\n }\n\n // Note: we emit this one no matter whether it was a user interaction, because\n // it is used by Angular to sync up the two-way data binding.\n this.valueChange.emit(this.value);\n }\n\n /** Marks all of the child button toggles to be checked. */\n private _markButtonsForCheck() {\n this._buttonToggles?.forEach(toggle => toggle._markForCheck());\n }\n}\n\n/** Single button inside of a toggle group. */\n@Component({\n selector: 'mat-button-toggle',\n templateUrl: 'button-toggle.html',\n styleUrl: 'button-toggle.css',\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matButtonToggle',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.mat-button-toggle-standalone]': '!buttonToggleGroup',\n '[class.mat-button-toggle-checked]': 'checked',\n '[class.mat-button-toggle-disabled]': 'disabled',\n '[class.mat-button-toggle-disabled-interactive]': 'disabledInteractive',\n '[class.mat-button-toggle-appearance-standard]': 'appearance === \"standard\"',\n 'class': 'mat-button-toggle',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.id]': 'id',\n '[attr.name]': 'null',\n '(focus)': 'focus()',\n 'role': 'presentation',\n },\n imports: [MatRipple, MatPseudoCheckbox],\n})\nexport class MatButtonToggle implements OnInit, AfterViewInit, OnDestroy {\n private _changeDetectorRef = inject(ChangeDetectorRef);\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _focusMonitor = inject(FocusMonitor);\n private _idGenerator = inject(_IdGenerator);\n private _animationDisabled = _animationsDisabled();\n private _checked = false;\n\n /**\n * Attached to the aria-label attribute of the host element. In most cases, aria-labelledby will\n * take precedence so this may be omitted.\n */\n @Input('aria-label') ariaLabel!: string;\n\n /**\n * Users can specify the `aria-labelledby` attribute which will be forwarded to the input element\n */\n @Input('aria-labelledby') ariaLabelledby: string | null = null;\n\n /** Underlying native `button` element. */\n @ViewChild('button') _buttonElement!: ElementRef<HTMLButtonElement>;\n\n /** The parent button toggle group (exclusive selection). Optional. */\n buttonToggleGroup: MatButtonToggleGroup;\n\n /** Unique ID for the underlying `button` element. */\n get buttonId(): string {\n return `${this.id}-button`;\n }\n\n /** The unique ID for this button toggle. */\n @Input() id!: string;\n\n /** HTML's 'name' attribute used to group radios for unique selection. */\n @Input() name!: string;\n\n /** MatButtonToggleGroup reads this to assign its own value. */\n @Input() value: any;\n\n /** Tabindex of the toggle. */\n @Input()\n get tabIndex(): number | null {\n return this._tabIndex();\n }\n set tabIndex(value: number | null) {\n this._tabIndex.set(value);\n }\n private _tabIndex: WritableSignal<number | null>;\n\n /** Whether ripples are disabled on the button toggle. */\n @Input({transform: booleanAttribute}) disableRipple: boolean = false;\n\n /** The appearance style of the button. */\n @Input()\n get appearance(): MatButtonToggleAppearance {\n return this.buttonToggleGroup ? this.buttonToggleGroup.appearance : this._appearance;\n }\n set appearance(value: MatButtonToggleAppearance) {\n this._appearance = value;\n }\n private _appearance: MatButtonToggleAppearance;\n\n /** Whether the button is checked. */\n @Input({transform: booleanAttribute})\n get checked(): boolean {\n return this.buttonToggleGroup ? this.buttonToggleGroup._isSelected(this) : this._checked;\n }\n set checked(value: boolean) {\n if (value !== this._checked) {\n this._checked = value;\n\n if (this.buttonToggleGroup) {\n this.buttonToggleGroup._syncButtonToggle(this, this._checked);\n }\n\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /** Whether the button is disabled. */\n @Input({transform: booleanAttribute})\n get disabled(): boolean {\n return this._disabled || (this.buttonToggleGroup && this.buttonToggleGroup.disabled);\n }\n set disabled(value: boolean) {\n this._disabled = value;\n }\n private _disabled: boolean = false;\n\n /** Whether the button should remain interactive when it is disabled. */\n @Input({transform: booleanAttribute})\n get disabledInteractive(): boolean {\n return (\n this._disabledInteractive ||\n (this.buttonToggleGroup !== null && this.buttonToggleGroup.disabledInteractive)\n );\n }\n set disabledInteractive(value: boolean) {\n this._disabledInteractive = value;\n }\n private _disabledInteractive: boolean;\n\n /** Event emitted when the group value changes. */\n @Output() readonly change: EventEmitter<MatButtonToggleChange> =\n new EventEmitter<MatButtonToggleChange>();\n\n constructor(...args: unknown[]);\n\n constructor() {\n inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);\n const toggleGroup = inject<MatButtonToggleGroup>(MAT_BUTTON_TOGGLE_GROUP, {optional: true})!;\n const defaultTabIndex = inject(new HostAttributeToken('tabindex'), {optional: true}) || '';\n const defaultOptions = inject<MatButtonToggleDefaultOptions>(\n MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS,\n {optional: true},\n );\n\n this._tabIndex = signal<number | null>(parseInt(defaultTabIndex) || 0);\n this.buttonToggleGroup = toggleGroup;\n this._appearance =\n defaultOptions && defaultOptions.appearance ? defaultOptions.appearance : 'standard';\n this._disabledInteractive = defaultOptions?.disabledInteractive ?? false;\n }\n\n ngOnInit() {\n const group = this.buttonToggleGroup;\n this.id = this.id || this._idGenerator.getId('mat-button-toggle-');\n\n if (group) {\n if (group._isPrechecked(this)) {\n this.checked = true;\n } else if (group._isSelected(this) !== this._checked) {\n // As side effect of the circular dependency between the toggle group and the button,\n // we may end up in a state where the button is supposed to be checked on init, but it\n // isn't, because the checked value was assigned too early. This can happen when Ivy\n // assigns the static input value before the `ngOnInit` has run.\n group._syncButtonToggle(this, this._checked);\n }\n }\n }\n\n ngAfterViewInit() {\n // This serves two purposes:\n // 1. We don't want the animation to fire on the first render for pre-checked toggles so we\n // delay adding the class until the view is rendered.\n // 2. We don't want to animate if animations are disabled.\n if (!this._animationDisabled) {\n this._elementRef.nativeElement.classList.add('mat-button-toggle-animations-enabled');\n }\n\n this._focusMonitor.monitor(this._elementRef, true);\n }\n\n ngOnDestroy() {\n const group = this.buttonToggleGroup;\n\n this._focusMonitor.stopMonitoring(this._elementRef);\n\n // Remove the toggle from the selection once it's destroyed. Needs to happen\n // on the next tick in order to avoid \"changed after checked\" errors.\n if (group && group._isSelected(this)) {\n group._syncButtonToggle(this, false, false, true);\n }\n }\n\n /** Focuses the button. */\n focus(options?: FocusOptions): void {\n this._buttonElement.nativeElement.focus(options);\n }\n\n /** Checks the button toggle due to an interaction with the underlying native button. */\n _onButtonClick() {\n if (this.disabled) {\n return;\n }\n\n const newChecked = this.isSingleSelector() ? true : !this._checked;\n\n if (newChecked !== this._checked) {\n this._checked = newChecked;\n if (this.buttonToggleGroup) {\n this.buttonToggleGroup._syncButtonToggle(this, this._checked, true);\n this.buttonToggleGroup._onTouched();\n }\n }\n\n if (this.isSingleSelector()) {\n const focusable = this.buttonToggleGroup._buttonToggles.find(toggle => {\n return toggle.tabIndex === 0;\n });\n // Modify the tabindex attribute of the last focusable button toggle to -1.\n if (focusable) {\n focusable.tabIndex = -1;\n }\n // Modify the tabindex attribute of the presently selected button toggle to 0.\n this.tabIndex = 0;\n }\n\n // Emit a change event when it's the single selector\n this.change.emit(new MatButtonToggleChange(this, this.value));\n }\n\n /**\n * Marks the button toggle as needing checking for change detection.\n * This method is exposed because the parent button toggle group will directly\n * update bound properties of the radio button.\n */\n _markForCheck() {\n // When the group value changes, the button will not be notified.\n // Use `markForCheck` to explicit update button toggle's status.\n this._changeDetectorRef.markForCheck();\n }\n\n /** Gets the name that should be assigned to the inner DOM node. */\n _getButtonName(): string | null {\n if (this.isSingleSelector()) {\n return this.buttonToggleGroup.name;\n }\n return this.name || null;\n }\n\n /** Whether the toggle is in single selection mode. */\n isSingleSelector(): boolean {\n return this.buttonToggleGroup && !this.buttonToggleGroup.multiple;\n }\n}\n","<button #button class=\"mat-button-toggle-button mat-focus-indicator\"\n type=\"button\"\n [id]=\"buttonId\"\n [attr.role]=\"isSingleSelector() ? 'radio' : 'button'\"\n [attr.tabindex]=\"disabled && !disabledInteractive ? -1 : tabIndex\"\n [attr.aria-pressed]=\"!isSingleSelector() ? checked : null\"\n [attr.aria-checked]=\"isSingleSelector() ? checked : null\"\n [disabled]=\"(disabled && !disabledInteractive) || null\"\n [attr.name]=\"_getButtonName()\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-disabled]=\"disabled && disabledInteractive ? 'true' : null\"\n (click)=\"_onButtonClick()\">\n @if (buttonToggleGroup && (\n !buttonToggleGroup.multiple && !buttonToggleGroup.hideSingleSelectionIndicator ||\n buttonToggleGroup.multiple && !buttonToggleGroup.hideMultipleSelectionIndicator)\n ) {\n <div class=\"mat-button-toggle-checkbox-wrapper\">\n <mat-pseudo-checkbox\n [disabled]=\"disabled\"\n state=\"checked\"\n aria-hidden=\"true\"\n appearance=\"minimal\"/>\n </div>\n }\n\n <span class=\"mat-button-toggle-label-content\">\n <ng-content></ng-content>\n </span>\n</button>\n\n<span class=\"mat-button-toggle-focus-overlay\"></span>\n<span class=\"mat-button-toggle-ripple\" matRipple\n [matRippleTrigger]=\"button\"\n [matRippleDisabled]=\"disableRipple || disabled\">\n</span>\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 {NgModule} from '@angular/core';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {MatRippleModule} from '../core';\nimport {MatButtonToggle, MatButtonToggleGroup} from './button-toggle';\n\n@NgModule({\n imports: [MatRippleModule, MatButtonToggleGroup, MatButtonToggle],\n exports: [BidiModule, MatButtonToggleGroup, MatButtonToggle],\n})\nexport class MatButtonToggleModule {}\n"],"names":["MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS","InjectionToken","providedIn","factory","hideSingleSelectionIndicator","hideMultipleSelectionIndicator","disabledInteractive","MAT_BUTTON_TOGGLE_GROUP","MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","MatButtonToggleGroup","multi","MatButtonToggleChange","source","value","constructor","_changeDetector","inject","ChangeDetectorRef","_dir","Directionality","optional","_multiple","_disabled","_disabledInteractive","_selectionModel","_rawValue","_controlValueAccessorChangeFn","_onTouched","_buttonToggles","appearance","name","_name","_markButtonsForCheck","_IdGenerator","getId","vertical","selected","multiple","map","toggle","undefined","newValue","_setSelectionByValue","valueChange","emit","EventEmitter","disabled","dir","change","_hideSingleSelectionIndicator","_hideMultipleSelectionIndicator","defaultOptions","ngOnInit","SelectionModel","ngAfterContentInit","select","filter","checked","_initializeTabIndex","writeValue","markForCheck","registerOnChange","fn","registerOnTouched","setDisabledState","isDisabled","_keydown","event","hasModifierKey","target","buttonId","id","index","toArray","findIndex","nextButton","keyCode","SPACE","ENTER","get","UP_ARROW","_getNextButton","LEFT_ARROW","DOWN_ARROW","RIGHT_ARROW","preventDefault","_onButtonClick","focus","_emitChangeEvent","_syncButtonToggle","isUserInput","deferEvents","deselect","Promise","resolve","then","_updateModelValue","_isSelected","isSelected","_isPrechecked","Array","isArray","some","forEach","tabIndex","i","length","startIndex","offset","items","item","toggles","ngDevMode","Error","_clearSelection","currentValue","_selectValue","every","clear","_markForCheck","deps","i0","ɵɵFactoryTarget","Directive","ɵdir","ɵɵngDeclareDirective","minVersion","version","type","isStandalone","selector","inputs","booleanAttribute","outputs","host","listeners","properties","classAttribute","providers","queries","propertyName","predicate","MatButtonToggle","descendants","exportAs","ngImport","decorators","args","ContentChildren","Input","transform","Output","_changeDetectorRef","_elementRef","ElementRef","_focusMonitor","FocusMonitor","_idGenerator","_animationDisabled","_animationsDisabled","_checked","ariaLabel","ariaLabelledby","_buttonElement","buttonToggleGroup","_tabIndex","set","disableRipple","_appearance","_CdkPrivateStyleLoader","load","_StructuralStylesLoader","toggleGroup","defaultTabIndex","HostAttributeToken","signal","parseInt","group","ngAfterViewInit","nativeElement","classList","add","monitor","ngOnDestroy","stopMonitoring","options","newChecked","isSingleSelector","focusable","find","_getButtonName","Component","ɵcmp","ɵɵngDeclareComponent","attributes","viewQueries","first","template","styles","dependencies","kind","MatRipple","MatPseudoCheckbox","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","imports","ViewChild","MatButtonToggleModule","NgModule","MatRippleModule","exports","BidiModule","ɵinj","ɵɵngDeclareInjector"],"mappings":"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"}
{"version":3,"file":"button-toggle.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/button-toggle/button-toggle.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/button-toggle/button-toggle.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/button-toggle/button-toggle-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\nimport {_IdGenerator, FocusMonitor} from '@angular/cdk/a11y';\nimport {Direction, Directionality} from '@angular/cdk/bidi';\nimport {SelectionModel} from '@angular/cdk/collections';\nimport {\n DOWN_ARROW,\n ENTER,\n LEFT_ARROW,\n RIGHT_ARROW,\n SPACE,\n UP_ARROW,\n hasModifierKey,\n} from '@angular/cdk/keycodes';\nimport {_CdkPrivateStyleLoader} from '@angular/cdk/private';\nimport {\n AfterContentInit,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostAttributeToken,\n inject,\n InjectionToken,\n Input,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n signal,\n ViewChild,\n ViewEncapsulation,\n WritableSignal,\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {_animationsDisabled, _StructuralStylesLoader, MatPseudoCheckbox, MatRipple} from '../core';\n\n/**\n * @deprecated No longer used.\n * @breaking-change 11.0.0\n */\nexport type ToggleType = 'checkbox' | 'radio';\n\n/** Possible appearance styles for the button toggle. */\nexport type MatButtonToggleAppearance = 'legacy' | 'standard';\n\n/**\n * Represents the default options for the button toggle that can be configured\n * using the `MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS` injection token.\n */\nexport interface MatButtonToggleDefaultOptions {\n /**\n * Default appearance to be used by button toggles. Can be overridden by explicitly\n * setting an appearance on a button toggle or group.\n */\n appearance?: MatButtonToggleAppearance;\n /** Whether icon indicators should be hidden for single-selection button toggle groups. */\n hideSingleSelectionIndicator?: boolean;\n /** Whether icon indicators should be hidden for multiple-selection button toggle groups. */\n hideMultipleSelectionIndicator?: boolean;\n /** Whether disabled toggle buttons should be interactive. */\n disabledInteractive?: boolean;\n}\n\n/**\n * Injection token that can be used to configure the\n * default options for all button toggles within an app.\n */\nexport const MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS = new InjectionToken<MatButtonToggleDefaultOptions>(\n 'MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS',\n {\n providedIn: 'root',\n factory: () => ({\n hideSingleSelectionIndicator: false,\n hideMultipleSelectionIndicator: false,\n disabledInteractive: false,\n }),\n },\n);\n\n/**\n * Injection token that can be used to reference instances of `MatButtonToggleGroup`.\n * It serves as alternative token to the actual `MatButtonToggleGroup` class which\n * could cause unnecessary retention of the class and its component metadata.\n */\nexport const MAT_BUTTON_TOGGLE_GROUP = new InjectionToken<MatButtonToggleGroup>(\n 'MatButtonToggleGroup',\n);\n\n/**\n * Provider Expression that allows mat-button-toggle-group to register as a ControlValueAccessor.\n * This allows it to support [(ngModel)].\n * @docs-private\n */\nexport const MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatButtonToggleGroup),\n multi: true,\n};\n\n/** Change event object emitted by button toggle. */\nexport class MatButtonToggleChange {\n constructor(\n /** The button toggle that emits the event. */\n public source: MatButtonToggle,\n\n /** The value assigned to the button toggle. */\n public value: any,\n ) {}\n}\n\n/** Exclusive selection button toggle group that behaves like a radio-button group. */\n@Directive({\n selector: 'mat-button-toggle-group',\n providers: [\n MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR,\n {provide: MAT_BUTTON_TOGGLE_GROUP, useExisting: MatButtonToggleGroup},\n ],\n host: {\n 'class': 'mat-button-toggle-group',\n '(keydown)': '_keydown($event)',\n '[attr.role]': \"multiple ? 'group' : 'radiogroup'\",\n '[attr.aria-disabled]': 'disabled',\n '[class.mat-button-toggle-vertical]': 'vertical',\n '[class.mat-button-toggle-group-appearance-standard]': 'appearance === \"standard\"',\n },\n exportAs: 'matButtonToggleGroup',\n})\nexport class MatButtonToggleGroup implements ControlValueAccessor, OnInit, AfterContentInit {\n private _changeDetector = inject(ChangeDetectorRef);\n private _dir = inject(Directionality, {optional: true});\n\n private _multiple = false;\n private _disabled = false;\n private _disabledInteractive = false;\n private _selectionModel!: SelectionModel<MatButtonToggle>;\n\n /**\n * Reference to the raw value that the consumer tried to assign. The real\n * value will exclude any values from this one that don't correspond to a\n * toggle. Useful for the cases where the value is assigned before the toggles\n * have been initialized or at the same that they're being swapped out.\n */\n private _rawValue: any;\n\n /**\n * The method to be called in order to update ngModel.\n * Now `ngModel` binding is not supported in multiple selection mode.\n */\n _controlValueAccessorChangeFn: (value: any) => void = () => {};\n\n /** onTouch function registered via registerOnTouch (ControlValueAccessor). */\n _onTouched: () => any = () => {};\n\n /** Child button toggle buttons. */\n @ContentChildren(forwardRef(() => MatButtonToggle), {\n // Note that this would technically pick up toggles\n // from nested groups, but that's not a case that we support.\n descendants: true,\n })\n _buttonToggles!: QueryList<MatButtonToggle>;\n\n /** The appearance for all the buttons in the group. */\n @Input() appearance: MatButtonToggleAppearance;\n\n /** `name` attribute for the underlying `input` element. */\n @Input()\n get name(): string {\n return this._name;\n }\n set name(value: string) {\n this._name = value;\n this._markButtonsForCheck();\n }\n private _name = inject(_IdGenerator).getId('mat-button-toggle-group-');\n\n /** Whether the toggle group is vertical. */\n @Input({transform: booleanAttribute}) vertical: boolean = false;\n\n /** Value of the toggle group. */\n @Input()\n get value(): any {\n const selected = this._selectionModel ? this._selectionModel.selected : [];\n\n if (this.multiple) {\n return selected.map(toggle => toggle.value);\n }\n\n return selected[0] ? selected[0].value : undefined;\n }\n set value(newValue: any) {\n this._setSelectionByValue(newValue);\n this.valueChange.emit(this.value);\n }\n\n /**\n * Event that emits whenever the value of the group changes.\n * Used to facilitate two-way data binding.\n * @docs-private\n */\n @Output() readonly valueChange = new EventEmitter<any>();\n\n /** Selected button toggles in the group. */\n get selected(): MatButtonToggle | MatButtonToggle[] {\n const selected = this._selectionModel ? this._selectionModel.selected : [];\n return this.multiple ? selected : selected[0] || null;\n }\n\n /** Whether multiple button toggles can be selected. */\n @Input({transform: booleanAttribute})\n get multiple(): boolean {\n return this._multiple;\n }\n set multiple(value: boolean) {\n this._multiple = value;\n this._markButtonsForCheck();\n }\n\n /** Whether multiple button toggle group is disabled. */\n @Input({transform: booleanAttribute})\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = value;\n this._markButtonsForCheck();\n }\n\n /** Whether buttons in the group should be interactive while they're disabled. */\n @Input({transform: booleanAttribute})\n get disabledInteractive(): boolean {\n return this._disabledInteractive;\n }\n set disabledInteractive(value: boolean) {\n this._disabledInteractive = value;\n this._markButtonsForCheck();\n }\n\n /** The layout direction of the toggle button group. */\n get dir(): Direction {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n\n /** Event emitted when the group's value changes. */\n @Output() readonly change: EventEmitter<MatButtonToggleChange> =\n new EventEmitter<MatButtonToggleChange>();\n\n /** Whether checkmark indicator for single-selection button toggle groups is hidden. */\n @Input({transform: booleanAttribute})\n get hideSingleSelectionIndicator(): boolean {\n return this._hideSingleSelectionIndicator;\n }\n set hideSingleSelectionIndicator(value: boolean) {\n this._hideSingleSelectionIndicator = value;\n this._markButtonsForCheck();\n }\n private _hideSingleSelectionIndicator: boolean;\n\n /** Whether checkmark indicator for multiple-selection button toggle groups is hidden. */\n @Input({transform: booleanAttribute})\n get hideMultipleSelectionIndicator(): boolean {\n return this._hideMultipleSelectionIndicator;\n }\n set hideMultipleSelectionIndicator(value: boolean) {\n this._hideMultipleSelectionIndicator = value;\n this._markButtonsForCheck();\n }\n private _hideMultipleSelectionIndicator: boolean;\n\n constructor(...args: unknown[]);\n\n constructor() {\n const defaultOptions = inject<MatButtonToggleDefaultOptions>(\n MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS,\n {optional: true},\n );\n\n this.appearance =\n defaultOptions && defaultOptions.appearance ? defaultOptions.appearance : 'standard';\n this._hideSingleSelectionIndicator = defaultOptions?.hideSingleSelectionIndicator ?? false;\n this._hideMultipleSelectionIndicator = defaultOptions?.hideMultipleSelectionIndicator ?? false;\n }\n\n ngOnInit() {\n this._selectionModel = new SelectionModel<MatButtonToggle>(this.multiple, undefined, false);\n }\n\n ngAfterContentInit() {\n this._selectionModel.select(...this._buttonToggles.filter(toggle => toggle.checked));\n if (!this.multiple) {\n this._initializeTabIndex();\n }\n }\n\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value Value to be set to the model.\n */\n writeValue(value: any) {\n this.value = value;\n this._changeDetector.markForCheck();\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn: (value: any) => void) {\n this._controlValueAccessorChangeFn = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn: any) {\n this._onTouched = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n /** Handle keydown event calling to single-select button toggle. */\n protected _keydown(event: KeyboardEvent) {\n if (this.multiple || this.disabled || hasModifierKey(event)) {\n return;\n }\n\n const target = event.target as HTMLButtonElement;\n const buttonId = target.id;\n const index = this._buttonToggles.toArray().findIndex(toggle => {\n return toggle.buttonId === buttonId;\n });\n\n let nextButton: MatButtonToggle | null = null;\n switch (event.keyCode) {\n case SPACE:\n case ENTER:\n nextButton = this._buttonToggles.get(index) || null;\n break;\n case UP_ARROW:\n nextButton = this._getNextButton(index, -1);\n break;\n case LEFT_ARROW:\n nextButton = this._getNextButton(index, this.dir === 'ltr' ? -1 : 1);\n break;\n case DOWN_ARROW:\n nextButton = this._getNextButton(index, 1);\n break;\n case RIGHT_ARROW:\n nextButton = this._getNextButton(index, this.dir === 'ltr' ? 1 : -1);\n break;\n default:\n return;\n }\n\n if (nextButton) {\n event.preventDefault();\n nextButton._onButtonClick();\n nextButton.focus();\n }\n }\n\n /** Dispatch change event with current selection and group value. */\n _emitChangeEvent(toggle: MatButtonToggle): void {\n const event = new MatButtonToggleChange(toggle, this.value);\n this._rawValue = event.value;\n this._controlValueAccessorChangeFn(event.value);\n this.change.emit(event);\n }\n\n /**\n * Syncs a button toggle's selected state with the model value.\n * @param toggle Toggle to be synced.\n * @param select Whether the toggle should be selected.\n * @param isUserInput Whether the change was a result of a user interaction.\n * @param deferEvents Whether to defer emitting the change events.\n */\n _syncButtonToggle(\n toggle: MatButtonToggle,\n select: boolean,\n isUserInput = false,\n deferEvents = false,\n ) {\n // Deselect the currently-selected toggle, if we're in single-selection\n // mode and the button being toggled isn't selected at the moment.\n if (!this.multiple && this.selected && !toggle.checked) {\n (this.selected as MatButtonToggle).checked = false;\n }\n\n if (this._selectionModel) {\n if (select) {\n this._selectionModel.select(toggle);\n } else {\n this._selectionModel.deselect(toggle);\n }\n } else {\n deferEvents = true;\n }\n\n // We need to defer in some cases in order to avoid \"changed after checked errors\", however\n // the side-effect is that we may end up updating the model value out of sequence in others\n // The `deferEvents` flag allows us to decide whether to do it on a case-by-case basis.\n if (deferEvents) {\n Promise.resolve().then(() => this._updateModelValue(toggle, isUserInput));\n } else {\n this._updateModelValue(toggle, isUserInput);\n }\n }\n\n /** Checks whether a button toggle is selected. */\n _isSelected(toggle: MatButtonToggle) {\n return this._selectionModel && this._selectionModel.isSelected(toggle);\n }\n\n /** Determines whether a button toggle should be checked on init. */\n _isPrechecked(toggle: MatButtonToggle) {\n if (typeof this._rawValue === 'undefined') {\n return false;\n }\n\n if (this.multiple && Array.isArray(this._rawValue)) {\n return this._rawValue.some(value => toggle.value != null && value === toggle.value);\n }\n\n return toggle.value === this._rawValue;\n }\n\n /** Initializes the tabindex attribute using the radio pattern. */\n private _initializeTabIndex() {\n this._buttonToggles.forEach(toggle => {\n toggle.tabIndex = -1;\n });\n if (this.selected) {\n (this.selected as MatButtonToggle).tabIndex = 0;\n } else {\n for (let i = 0; i < this._buttonToggles.length; i++) {\n const toggle = this._buttonToggles.get(i)!;\n\n if (!toggle.disabled) {\n toggle.tabIndex = 0;\n break;\n }\n }\n }\n }\n\n /** Obtain the subsequent toggle to which the focus shifts. */\n private _getNextButton(startIndex: number, offset: number): MatButtonToggle | null {\n const items = this._buttonToggles;\n\n for (let i = 1; i <= items.length; i++) {\n const index = (startIndex + offset * i + items.length) % items.length;\n const item = items.get(index);\n\n if (item && !item.disabled) {\n return item;\n }\n }\n\n return null;\n }\n\n /** Updates the selection state of the toggles in the group based on a value. */\n private _setSelectionByValue(value: any | any[]) {\n this._rawValue = value;\n\n if (!this._buttonToggles) {\n return;\n }\n\n const toggles = this._buttonToggles.toArray();\n\n if (this.multiple && value) {\n if (!Array.isArray(value) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Value must be an array in multiple-selection mode.');\n }\n\n this._clearSelection();\n value.forEach((currentValue: any) => this._selectValue(currentValue, toggles));\n } else {\n this._clearSelection();\n this._selectValue(value, toggles);\n }\n\n // In single selection mode we need at least one enabled toggle to always be focusable.\n if (!this.multiple && toggles.every(toggle => toggle.tabIndex === -1)) {\n for (const toggle of toggles) {\n if (!toggle.disabled) {\n toggle.tabIndex = 0;\n break;\n }\n }\n }\n }\n\n /** Clears the selected toggles. */\n private _clearSelection() {\n this._selectionModel.clear();\n this._buttonToggles.forEach(toggle => {\n toggle.checked = false;\n // If the button toggle is in single select mode, initialize the tabIndex.\n if (!this.multiple) {\n toggle.tabIndex = -1;\n }\n });\n }\n\n /** Selects a value if there's a toggle that corresponds to it. */\n private _selectValue(value: any, toggles: MatButtonToggle[]) {\n for (const toggle of toggles) {\n if (toggle.value === value) {\n toggle.checked = true;\n this._selectionModel.select(toggle);\n if (!this.multiple) {\n // If the button toggle is in single select mode, reset the tabIndex.\n toggle.tabIndex = 0;\n }\n break;\n }\n }\n }\n\n /** Syncs up the group's value with the model and emits the change event. */\n private _updateModelValue(toggle: MatButtonToggle, isUserInput: boolean) {\n // Only emit the change event for user input.\n if (isUserInput) {\n this._emitChangeEvent(toggle);\n }\n\n // Note: we emit this one no matter whether it was a user interaction, because\n // it is used by Angular to sync up the two-way data binding.\n this.valueChange.emit(this.value);\n }\n\n /** Marks all of the child button toggles to be checked. */\n private _markButtonsForCheck() {\n this._buttonToggles?.forEach(toggle => toggle._markForCheck());\n }\n}\n\n/** Single button inside of a toggle group. */\n@Component({\n selector: 'mat-button-toggle',\n templateUrl: 'button-toggle.html',\n styleUrl: 'button-toggle.css',\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matButtonToggle',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.mat-button-toggle-standalone]': '!buttonToggleGroup',\n '[class.mat-button-toggle-checked]': 'checked',\n '[class.mat-button-toggle-disabled]': 'disabled',\n '[class.mat-button-toggle-disabled-interactive]': 'disabledInteractive',\n '[class.mat-button-toggle-appearance-standard]': 'appearance === \"standard\"',\n 'class': 'mat-button-toggle',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.id]': 'id',\n '[attr.name]': 'null',\n '(focus)': 'focus()',\n 'role': 'presentation',\n },\n imports: [MatRipple, MatPseudoCheckbox],\n})\nexport class MatButtonToggle implements OnInit, AfterViewInit, OnDestroy {\n private _changeDetectorRef = inject(ChangeDetectorRef);\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _focusMonitor = inject(FocusMonitor);\n private _idGenerator = inject(_IdGenerator);\n private _animationDisabled = _animationsDisabled();\n private _checked = false;\n\n /**\n * Attached to the aria-label attribute of the host element. In most cases, aria-labelledby will\n * take precedence so this may be omitted.\n */\n @Input('aria-label') ariaLabel!: string;\n\n /**\n * Users can specify the `aria-labelledby` attribute which will be forwarded to the input element\n */\n @Input('aria-labelledby') ariaLabelledby: string | null = null;\n\n /** Underlying native `button` element. */\n @ViewChild('button') _buttonElement!: ElementRef<HTMLButtonElement>;\n\n /** The parent button toggle group (exclusive selection). Optional. */\n buttonToggleGroup: MatButtonToggleGroup;\n\n /** Unique ID for the underlying `button` element. */\n get buttonId(): string {\n return `${this.id}-button`;\n }\n\n /** The unique ID for this button toggle. */\n @Input() id!: string;\n\n /** HTML's 'name' attribute used to group radios for unique selection. */\n @Input() name!: string;\n\n /** MatButtonToggleGroup reads this to assign its own value. */\n @Input() value: any;\n\n /** Tabindex of the toggle. */\n @Input()\n get tabIndex(): number | null {\n return this._tabIndex();\n }\n set tabIndex(value: number | null) {\n this._tabIndex.set(value);\n }\n private _tabIndex: WritableSignal<number | null>;\n\n /** Whether ripples are disabled on the button toggle. */\n @Input({transform: booleanAttribute}) disableRipple: boolean = false;\n\n /** The appearance style of the button. */\n @Input()\n get appearance(): MatButtonToggleAppearance {\n return this.buttonToggleGroup ? this.buttonToggleGroup.appearance : this._appearance;\n }\n set appearance(value: MatButtonToggleAppearance) {\n this._appearance = value;\n }\n private _appearance: MatButtonToggleAppearance;\n\n /** Whether the button is checked. */\n @Input({transform: booleanAttribute})\n get checked(): boolean {\n return this.buttonToggleGroup ? this.buttonToggleGroup._isSelected(this) : this._checked;\n }\n set checked(value: boolean) {\n if (value !== this._checked) {\n this._checked = value;\n\n if (this.buttonToggleGroup) {\n this.buttonToggleGroup._syncButtonToggle(this, this._checked);\n }\n\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /** Whether the button is disabled. */\n @Input({transform: booleanAttribute})\n get disabled(): boolean {\n return this._disabled || (this.buttonToggleGroup && this.buttonToggleGroup.disabled);\n }\n set disabled(value: boolean) {\n this._disabled = value;\n }\n private _disabled: boolean = false;\n\n /** Whether the button should remain interactive when it is disabled. */\n @Input({transform: booleanAttribute})\n get disabledInteractive(): boolean {\n return (\n this._disabledInteractive ||\n (this.buttonToggleGroup !== null && this.buttonToggleGroup.disabledInteractive)\n );\n }\n set disabledInteractive(value: boolean) {\n this._disabledInteractive = value;\n }\n private _disabledInteractive: boolean;\n\n /** Event emitted when the group value changes. */\n @Output() readonly change: EventEmitter<MatButtonToggleChange> =\n new EventEmitter<MatButtonToggleChange>();\n\n constructor(...args: unknown[]);\n\n constructor() {\n inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);\n const toggleGroup = inject<MatButtonToggleGroup>(MAT_BUTTON_TOGGLE_GROUP, {optional: true})!;\n const defaultTabIndex = inject(new HostAttributeToken('tabindex'), {optional: true}) || '';\n const defaultOptions = inject<MatButtonToggleDefaultOptions>(\n MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS,\n {optional: true},\n );\n\n this._tabIndex = signal<number | null>(parseInt(defaultTabIndex) || 0);\n this.buttonToggleGroup = toggleGroup;\n this._appearance =\n defaultOptions && defaultOptions.appearance ? defaultOptions.appearance : 'standard';\n this._disabledInteractive = defaultOptions?.disabledInteractive ?? false;\n }\n\n ngOnInit() {\n const group = this.buttonToggleGroup;\n this.id = this.id || this._idGenerator.getId('mat-button-toggle-');\n\n if (group) {\n if (group._isPrechecked(this)) {\n this.checked = true;\n } else if (group._isSelected(this) !== this._checked) {\n // As side effect of the circular dependency between the toggle group and the button,\n // we may end up in a state where the button is supposed to be checked on init, but it\n // isn't, because the checked value was assigned too early. This can happen when Ivy\n // assigns the static input value before the `ngOnInit` has run.\n group._syncButtonToggle(this, this._checked);\n }\n }\n }\n\n ngAfterViewInit() {\n // This serves two purposes:\n // 1. We don't want the animation to fire on the first render for pre-checked toggles so we\n // delay adding the class until the view is rendered.\n // 2. We don't want to animate if animations are disabled.\n if (!this._animationDisabled) {\n this._elementRef.nativeElement.classList.add('mat-button-toggle-animations-enabled');\n }\n\n this._focusMonitor.monitor(this._elementRef, true);\n }\n\n ngOnDestroy() {\n const group = this.buttonToggleGroup;\n\n this._focusMonitor.stopMonitoring(this._elementRef);\n\n // Remove the toggle from the selection once it's destroyed. Needs to happen\n // on the next tick in order to avoid \"changed after checked\" errors.\n if (group && group._isSelected(this)) {\n group._syncButtonToggle(this, false, false, true);\n }\n }\n\n /** Focuses the button. */\n focus(options?: FocusOptions): void {\n this._buttonElement.nativeElement.focus(options);\n }\n\n /** Checks the button toggle due to an interaction with the underlying native button. */\n _onButtonClick() {\n if (this.disabled) {\n return;\n }\n\n const newChecked = this.isSingleSelector() ? true : !this._checked;\n\n if (newChecked !== this._checked) {\n this._checked = newChecked;\n if (this.buttonToggleGroup) {\n this.buttonToggleGroup._syncButtonToggle(this, this._checked, true);\n this.buttonToggleGroup._onTouched();\n }\n }\n\n if (this.isSingleSelector()) {\n const focusable = this.buttonToggleGroup._buttonToggles.find(toggle => {\n return toggle.tabIndex === 0;\n });\n // Modify the tabindex attribute of the last focusable button toggle to -1.\n if (focusable) {\n focusable.tabIndex = -1;\n }\n // Modify the tabindex attribute of the presently selected button toggle to 0.\n this.tabIndex = 0;\n }\n\n // Emit a change event when it's the single selector\n this.change.emit(new MatButtonToggleChange(this, this.value));\n }\n\n /**\n * Marks the button toggle as needing checking for change detection.\n * This method is exposed because the parent button toggle group will directly\n * update bound properties of the radio button.\n */\n _markForCheck() {\n // When the group value changes, the button will not be notified.\n // Use `markForCheck` to explicit update button toggle's status.\n this._changeDetectorRef.markForCheck();\n }\n\n /** Gets the name that should be assigned to the inner DOM node. */\n _getButtonName(): string | null {\n if (this.isSingleSelector()) {\n return this.buttonToggleGroup.name;\n }\n return this.name || null;\n }\n\n /** Whether the toggle is in single selection mode. */\n isSingleSelector(): boolean {\n return this.buttonToggleGroup && !this.buttonToggleGroup.multiple;\n }\n}\n","<button #button class=\"mat-button-toggle-button mat-focus-indicator\"\n type=\"button\"\n [id]=\"buttonId\"\n [attr.role]=\"isSingleSelector() ? 'radio' : 'button'\"\n [attr.tabindex]=\"disabled && !disabledInteractive ? -1 : tabIndex\"\n [attr.aria-pressed]=\"!isSingleSelector() ? checked : null\"\n [attr.aria-checked]=\"isSingleSelector() ? checked : null\"\n [disabled]=\"(disabled && !disabledInteractive) || null\"\n [attr.name]=\"_getButtonName()\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-disabled]=\"disabled && disabledInteractive ? 'true' : null\"\n (click)=\"_onButtonClick()\">\n @if (buttonToggleGroup && (\n !buttonToggleGroup.multiple && !buttonToggleGroup.hideSingleSelectionIndicator ||\n buttonToggleGroup.multiple && !buttonToggleGroup.hideMultipleSelectionIndicator)\n ) {\n <div class=\"mat-button-toggle-checkbox-wrapper\">\n <mat-pseudo-checkbox\n [disabled]=\"disabled\"\n state=\"checked\"\n aria-hidden=\"true\"\n appearance=\"minimal\"/>\n </div>\n }\n\n <span class=\"mat-button-toggle-label-content\">\n <ng-content></ng-content>\n </span>\n</button>\n\n<span class=\"mat-button-toggle-focus-overlay\"></span>\n<span class=\"mat-button-toggle-ripple\" matRipple\n [matRippleTrigger]=\"button\"\n [matRippleDisabled]=\"disableRipple || disabled\">\n</span>\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 {NgModule} from '@angular/core';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {MatRippleModule} from '../core';\nimport {MatButtonToggle, MatButtonToggleGroup} from './button-toggle';\n\n@NgModule({\n imports: [MatRippleModule, MatButtonToggleGroup, MatButtonToggle],\n exports: [BidiModule, MatButtonToggleGroup, MatButtonToggle],\n})\nexport class MatButtonToggleModule {}\n"],"names":["MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS","InjectionToken","providedIn","factory","hideSingleSelectionIndicator","hideMultipleSelectionIndicator","disabledInteractive","MAT_BUTTON_TOGGLE_GROUP","MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","MatButtonToggleGroup","multi","MatButtonToggleChange","source","value","constructor","_changeDetector","inject","ChangeDetectorRef","_dir","Directionality","optional","_multiple","_disabled","_disabledInteractive","_selectionModel","_rawValue","_controlValueAccessorChangeFn","_onTouched","_buttonToggles","appearance","name","_name","_markButtonsForCheck","_IdGenerator","getId","vertical","selected","multiple","map","toggle","undefined","newValue","_setSelectionByValue","valueChange","emit","EventEmitter","disabled","dir","change","_hideSingleSelectionIndicator","_hideMultipleSelectionIndicator","defaultOptions","ngOnInit","SelectionModel","ngAfterContentInit","select","filter","checked","_initializeTabIndex","writeValue","markForCheck","registerOnChange","fn","registerOnTouched","setDisabledState","isDisabled","_keydown","event","hasModifierKey","target","buttonId","id","index","toArray","findIndex","nextButton","keyCode","SPACE","ENTER","get","UP_ARROW","_getNextButton","LEFT_ARROW","DOWN_ARROW","RIGHT_ARROW","preventDefault","_onButtonClick","focus","_emitChangeEvent","_syncButtonToggle","isUserInput","deferEvents","deselect","Promise","resolve","then","_updateModelValue","_isSelected","isSelected","_isPrechecked","Array","isArray","some","forEach","tabIndex","i","length","startIndex","offset","items","item","toggles","ngDevMode","Error","_clearSelection","currentValue","_selectValue","every","clear","_markForCheck","deps","i0","ɵɵFactoryTarget","Directive","ɵdir","ɵɵngDeclareDirective","minVersion","version","type","isStandalone","selector","inputs","booleanAttribute","outputs","host","listeners","properties","classAttribute","providers","queries","propertyName","predicate","MatButtonToggle","descendants","exportAs","ngImport","decorators","args","ContentChildren","Input","transform","Output","_changeDetectorRef","_elementRef","ElementRef","_focusMonitor","FocusMonitor","_idGenerator","_animationDisabled","_animationsDisabled","_checked","ariaLabel","ariaLabelledby","_buttonElement","buttonToggleGroup","_tabIndex","set","disableRipple","_appearance","_CdkPrivateStyleLoader","load","_StructuralStylesLoader","toggleGroup","defaultTabIndex","HostAttributeToken","signal","parseInt","group","ngAfterViewInit","nativeElement","classList","add","monitor","ngOnDestroy","stopMonitoring","options","newChecked","isSingleSelector","focusable","find","_getButtonName","Component","ɵcmp","ɵɵngDeclareComponent","attributes","viewQueries","first","template","styles","dependencies","kind","MatRipple","MatPseudoCheckbox","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","imports","ViewChild","MatButtonToggleModule","NgModule","MatRippleModule","exports","BidiModule","ɵinj","ɵɵngDeclareInjector"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"button.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/button/button.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/button/button.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/button/fab.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/button/button-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\nimport {ChangeDetectionStrategy, Component, Input, ViewEncapsulation} from '@angular/core';\nimport {MatButtonAppearance, MatButtonBase} from './button-base';\n\n/**\n * Classes that need to be set for each appearance of the button.\n * Note that we use a `Map` here to avoid issues with property renaming.\n */\nconst APPEARANCE_CLASSES: Map<MatButtonAppearance, readonly string[]> = new Map([\n ['text', ['mat-mdc-button']],\n ['filled', ['mdc-button--unelevated', 'mat-mdc-unelevated-button']],\n ['elevated', ['mdc-button--raised', 'mat-mdc-raised-button']],\n ['outlined', ['mdc-button--outlined', 'mat-mdc-outlined-button']],\n ['tonal', ['mat-tonal-button']],\n]);\n\n/**\n * Material Design button component. Users interact with a button to perform an action.\n * See https://m3.material.io/components/buttons/overview\n */\n@Component({\n selector: `\n button[matButton], a[matButton], button[mat-button], button[mat-raised-button],\n button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button],\n a[mat-flat-button], a[mat-stroked-button]\n `,\n templateUrl: 'button.html',\n styleUrls: ['button.css', 'button-high-contrast.css'],\n host: {\n 'class': 'mdc-button',\n },\n exportAs: 'matButton, matAnchor',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatButton extends MatButtonBase {\n /** Appearance of the button. */\n @Input('matButton')\n get appearance(): MatButtonAppearance | null {\n return this._appearance;\n }\n set appearance(value: MatButtonAppearance | '') {\n // Allow empty string so users can do `<button matButton></button>`\n // without having to write out `=\"text\"` every time.\n this.setAppearance(value || this._config?.defaultAppearance || 'text');\n }\n private _appearance: MatButtonAppearance | null = null;\n\n constructor(...args: unknown[]);\n\n constructor() {\n super();\n const inferredAppearance = _inferAppearance(this._elementRef.nativeElement);\n\n // Only set the appearance if we managed to infer it from the static attributes, rather than\n // doing something like `setAppearance(inferredAppearance || 'text')`, because doing so can\n // cause the fallback appearance's classes to be set and then immediately replaced when\n // the input value is assigned.\n if (inferredAppearance) {\n this.setAppearance(inferredAppearance);\n }\n }\n\n /** Programmatically sets the appearance of the button. */\n setAppearance(appearance: MatButtonAppearance): void {\n if (appearance === this._appearance) {\n return;\n }\n\n const classList = this._elementRef.nativeElement.classList;\n const previousClasses = this._appearance ? APPEARANCE_CLASSES.get(this._appearance) : null;\n const newClasses = APPEARANCE_CLASSES.get(appearance)!;\n\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !newClasses) {\n throw new Error(`Unsupported MatButton appearance \"${appearance}\"`);\n }\n\n if (previousClasses) {\n classList.remove(...previousClasses);\n }\n\n classList.add(...newClasses);\n this._appearance = appearance;\n }\n}\n\n/** Infers the button's appearance from its static attributes. */\nfunction _inferAppearance(button: HTMLElement): MatButtonAppearance | null {\n if (button.hasAttribute('mat-raised-button')) {\n return 'elevated';\n }\n\n if (button.hasAttribute('mat-stroked-button')) {\n return 'outlined';\n }\n\n if (button.hasAttribute('mat-flat-button')) {\n return 'filled';\n }\n\n if (button.hasAttribute('mat-button')) {\n return 'text';\n }\n\n return null;\n}\n\n// tslint:disable:variable-name\n/**\n * Material Design button component for anchor elements. Anchor elements are used to provide\n * links for the user to navigate across different routes or pages.\n * See https://m3.material.io/components/buttons/overview\n */\nexport const MatAnchor = MatButton;\nexport type MatAnchor = MatButton;\n// tslint:enable:variable-name\n","<span\n class=\"mat-mdc-button-persistent-ripple\"\n [class.mdc-button__ripple]=\"!_isFab\"\n [class.mdc-fab__ripple]=\"_isFab\"></span>\n\n<ng-content select=\".material-icons:not([iconPositionEnd]), mat-icon:not([iconPositionEnd]), [matButtonIcon]:not([iconPositionEnd])\">\n</ng-content>\n\n<span class=\"mdc-button__label\"><ng-content></ng-content></span>\n\n<ng-content select=\".material-icons[iconPositionEnd], mat-icon[iconPositionEnd], [matButtonIcon][iconPositionEnd]\">\n</ng-content>\n\n<!--\n The indicator can't be directly on the button, because MDC uses ::before for high contrast\n indication and it can't be on the ripple, because it has a border radius and overflow: hidden.\n-->\n<span class=\"mat-focus-indicator\"></span>\n\n<span class=\"mat-mdc-button-touch-target\"></span>\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 ChangeDetectionStrategy,\n Component,\n InjectionToken,\n Input,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n} from '@angular/core';\n\nimport {MatButtonBase} from './button-base';\nimport {ThemePalette} from '../core';\n\n/** Default FAB options that can be overridden. */\nexport interface MatFabDefaultOptions {\n /**\n * Default theme color of the button. This API is supported in M2 themes\n * only, it has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/button/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants.\n */\n color?: ThemePalette;\n}\n\n/** Injection token to be used to override the default options for FAB. */\nexport const MAT_FAB_DEFAULT_OPTIONS = new InjectionToken<MatFabDefaultOptions>(\n 'mat-mdc-fab-default-options',\n {\n providedIn: 'root',\n factory: () => defaults,\n },\n);\n\n// Default FAB configuration.\nconst defaults: MatFabDefaultOptions = {\n // The FAB by default has its color set to accent.\n color: 'accent',\n};\n\n/**\n * Material Design floating action button (FAB) component. These buttons represent the primary\n * or most common action for users to interact with.\n * See https://m3.material.io/components/floating-action-button/overview\n *\n * The `MatFabButton` class has two appearances: normal and extended.\n */\n@Component({\n selector: `button[mat-fab], a[mat-fab], button[matFab], a[matFab]`,\n templateUrl: 'button.html',\n styleUrl: 'fab.css',\n host: {\n 'class': 'mdc-fab mat-mdc-fab-base mat-mdc-fab',\n '[class.mdc-fab--extended]': 'extended',\n '[class.mat-mdc-extended-fab]': 'extended',\n },\n exportAs: 'matButton, matAnchor',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatFabButton extends MatButtonBase {\n private _options = inject<MatFabDefaultOptions>(MAT_FAB_DEFAULT_OPTIONS, {optional: true});\n\n override _isFab = true;\n\n @Input({transform: booleanAttribute}) extended: boolean = false;\n\n constructor(...args: unknown[]);\n\n constructor() {\n super();\n this._options = this._options || defaults;\n this.color = this._options!.color || defaults.color;\n }\n}\n\n/**\n * Material Design mini floating action button (FAB) component. These buttons represent the primary\n * or most common action for users to interact with.\n * See https://m3.material.io/components/floating-action-button/overview\n */\n@Component({\n selector: `button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]`,\n templateUrl: 'button.html',\n styleUrl: 'fab.css',\n host: {\n 'class': 'mdc-fab mat-mdc-fab-base mdc-fab--mini mat-mdc-mini-fab',\n },\n exportAs: 'matButton, matAnchor',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatMiniFabButton extends MatButtonBase {\n private _options = inject<MatFabDefaultOptions>(MAT_FAB_DEFAULT_OPTIONS, {optional: true});\n\n override _isFab = true;\n\n constructor(...args: unknown[]);\n\n constructor() {\n super();\n this._options = this._options || defaults;\n this.color = this._options!.color || defaults.color;\n }\n}\n\n// tslint:disable:variable-name\n/**\n * Material Design floating action button (FAB) component for anchor elements. Anchor elements\n * are used to provide links for the user to navigate across different routes or pages.\n * See https://m3.material.io/components/floating-action-button/overview\n *\n * The `MatFabAnchor` class has two appearances: normal and extended.\n */\nexport const MatFabAnchor = MatFabButton;\nexport type MatFabAnchor = MatFabButton;\n\n/**\n * Material Design mini floating action button (FAB) component for anchor elements. Anchor elements\n * are used to provide links for the user to navigate across different routes or pages.\n * See https://m3.material.io/components/floating-action-button/overview\n */\nexport const MatMiniFabAnchor = MatMiniFabButton;\nexport type MatMiniFabAnchor = MatMiniFabButton;\n// tslint:enable:variable-name\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 {NgModule} from '@angular/core';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {MatRippleModule} from '../core';\nimport {MatButton} from './button';\nimport {MatFabButton, MatMiniFabButton} from './fab';\nimport {MatIconButton} from './icon-button';\n\n@NgModule({\n imports: [MatRippleModule, MatButton, MatMiniFabButton, MatIconButton, MatFabButton],\n exports: [BidiModule, MatButton, MatMiniFabButton, MatIconButton, MatFabButton],\n})\nexport class MatButtonModule {}\n"],"names":["APPEARANCE_CLASSES","Map","MatButton","MatButtonBase","appearance","_appearance","value","setAppearance","_config","defaultAppearance","constructor","inferredAppearance","_inferAppearance","_elementRef","nativeElement","classList","previousClasses","get","newClasses","ngDevMode","Error","remove","add","deps","target","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","args","selector","host","exportAs","template","Input","button","hasAttribute","MatAnchor","MAT_FAB_DEFAULT_OPTIONS","InjectionToken","providedIn","factory","defaults","color","MatFabButton","_options","inject","optional","_isFab","extended","isStandalone","inputs","booleanAttribute","properties","classAttribute","usesInheritance","ngImport","transform","MatMiniFabButton","MatFabAnchor","MatMiniFabAnchor","MatButtonModule","NgModule","ɵmod","ɵɵngDeclareNgModule","MatRippleModule","MatIconButton","exports","BidiModule","imports"],"mappings":"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"}
{"version":3,"file":"button.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/button/button.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/button/button.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/button/fab.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/button/button-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\nimport {ChangeDetectionStrategy, Component, Input, ViewEncapsulation} from '@angular/core';\nimport {MatButtonAppearance, MatButtonBase} from './button-base';\n\n/**\n * Classes that need to be set for each appearance of the button.\n * Note that we use a `Map` here to avoid issues with property renaming.\n */\nconst APPEARANCE_CLASSES: Map<MatButtonAppearance, readonly string[]> = new Map([\n ['text', ['mat-mdc-button']],\n ['filled', ['mdc-button--unelevated', 'mat-mdc-unelevated-button']],\n ['elevated', ['mdc-button--raised', 'mat-mdc-raised-button']],\n ['outlined', ['mdc-button--outlined', 'mat-mdc-outlined-button']],\n ['tonal', ['mat-tonal-button']],\n]);\n\n/**\n * Material Design button component. Users interact with a button to perform an action.\n * See https://m3.material.io/components/buttons/overview\n */\n@Component({\n selector: `\n button[matButton], a[matButton], button[mat-button], button[mat-raised-button],\n button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button],\n a[mat-flat-button], a[mat-stroked-button]\n `,\n templateUrl: 'button.html',\n styleUrls: ['button.css', 'button-high-contrast.css'],\n host: {\n 'class': 'mdc-button',\n },\n exportAs: 'matButton, matAnchor',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatButton extends MatButtonBase {\n /** Appearance of the button. */\n @Input('matButton')\n get appearance(): MatButtonAppearance | null {\n return this._appearance;\n }\n set appearance(value: MatButtonAppearance | '') {\n // Allow empty string so users can do `<button matButton></button>`\n // without having to write out `=\"text\"` every time.\n this.setAppearance(value || this._config?.defaultAppearance || 'text');\n }\n private _appearance: MatButtonAppearance | null = null;\n\n constructor(...args: unknown[]);\n\n constructor() {\n super();\n const inferredAppearance = _inferAppearance(this._elementRef.nativeElement);\n\n // Only set the appearance if we managed to infer it from the static attributes, rather than\n // doing something like `setAppearance(inferredAppearance || 'text')`, because doing so can\n // cause the fallback appearance's classes to be set and then immediately replaced when\n // the input value is assigned.\n if (inferredAppearance) {\n this.setAppearance(inferredAppearance);\n }\n }\n\n /** Programmatically sets the appearance of the button. */\n setAppearance(appearance: MatButtonAppearance): void {\n if (appearance === this._appearance) {\n return;\n }\n\n const classList = this._elementRef.nativeElement.classList;\n const previousClasses = this._appearance ? APPEARANCE_CLASSES.get(this._appearance) : null;\n const newClasses = APPEARANCE_CLASSES.get(appearance)!;\n\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !newClasses) {\n throw new Error(`Unsupported MatButton appearance \"${appearance}\"`);\n }\n\n if (previousClasses) {\n classList.remove(...previousClasses);\n }\n\n classList.add(...newClasses);\n this._appearance = appearance;\n }\n}\n\n/** Infers the button's appearance from its static attributes. */\nfunction _inferAppearance(button: HTMLElement): MatButtonAppearance | null {\n if (button.hasAttribute('mat-raised-button')) {\n return 'elevated';\n }\n\n if (button.hasAttribute('mat-stroked-button')) {\n return 'outlined';\n }\n\n if (button.hasAttribute('mat-flat-button')) {\n return 'filled';\n }\n\n if (button.hasAttribute('mat-button')) {\n return 'text';\n }\n\n return null;\n}\n\n// tslint:disable:variable-name\n/**\n * Material Design button component for anchor elements. Anchor elements are used to provide\n * links for the user to navigate across different routes or pages.\n * See https://m3.material.io/components/buttons/overview\n */\nexport const MatAnchor = MatButton;\nexport type MatAnchor = MatButton;\n// tslint:enable:variable-name\n","<span\n class=\"mat-mdc-button-persistent-ripple\"\n [class.mdc-button__ripple]=\"!_isFab\"\n [class.mdc-fab__ripple]=\"_isFab\"></span>\n\n<ng-content select=\".material-icons:not([iconPositionEnd]), mat-icon:not([iconPositionEnd]), [matButtonIcon]:not([iconPositionEnd])\">\n</ng-content>\n\n<span class=\"mdc-button__label\"><ng-content></ng-content></span>\n\n<ng-content select=\".material-icons[iconPositionEnd], mat-icon[iconPositionEnd], [matButtonIcon][iconPositionEnd]\">\n</ng-content>\n\n<!--\n The indicator can't be directly on the button, because MDC uses ::before for high contrast\n indication and it can't be on the ripple, because it has a border radius and overflow: hidden.\n-->\n<span class=\"mat-focus-indicator\"></span>\n\n<span class=\"mat-mdc-button-touch-target\"></span>\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 ChangeDetectionStrategy,\n Component,\n InjectionToken,\n Input,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n} from '@angular/core';\n\nimport {MatButtonBase} from './button-base';\nimport {ThemePalette} from '../core';\n\n/** Default FAB options that can be overridden. */\nexport interface MatFabDefaultOptions {\n /**\n * Default theme color of the button. This API is supported in M2 themes\n * only, it has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/button/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants.\n */\n color?: ThemePalette;\n}\n\n/** Injection token to be used to override the default options for FAB. */\nexport const MAT_FAB_DEFAULT_OPTIONS = new InjectionToken<MatFabDefaultOptions>(\n 'mat-mdc-fab-default-options',\n {\n providedIn: 'root',\n factory: () => defaults,\n },\n);\n\n// Default FAB configuration.\nconst defaults: MatFabDefaultOptions = {\n // The FAB by default has its color set to accent.\n color: 'accent',\n};\n\n/**\n * Material Design floating action button (FAB) component. These buttons represent the primary\n * or most common action for users to interact with.\n * See https://m3.material.io/components/floating-action-button/overview\n *\n * The `MatFabButton` class has two appearances: normal and extended.\n */\n@Component({\n selector: `button[mat-fab], a[mat-fab], button[matFab], a[matFab]`,\n templateUrl: 'button.html',\n styleUrl: 'fab.css',\n host: {\n 'class': 'mdc-fab mat-mdc-fab-base mat-mdc-fab',\n '[class.mdc-fab--extended]': 'extended',\n '[class.mat-mdc-extended-fab]': 'extended',\n },\n exportAs: 'matButton, matAnchor',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatFabButton extends MatButtonBase {\n private _options = inject<MatFabDefaultOptions>(MAT_FAB_DEFAULT_OPTIONS, {optional: true});\n\n override _isFab = true;\n\n @Input({transform: booleanAttribute}) extended: boolean = false;\n\n constructor(...args: unknown[]);\n\n constructor() {\n super();\n this._options = this._options || defaults;\n this.color = this._options!.color || defaults.color;\n }\n}\n\n/**\n * Material Design mini floating action button (FAB) component. These buttons represent the primary\n * or most common action for users to interact with.\n * See https://m3.material.io/components/floating-action-button/overview\n */\n@Component({\n selector: `button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]`,\n templateUrl: 'button.html',\n styleUrl: 'fab.css',\n host: {\n 'class': 'mdc-fab mat-mdc-fab-base mdc-fab--mini mat-mdc-mini-fab',\n },\n exportAs: 'matButton, matAnchor',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatMiniFabButton extends MatButtonBase {\n private _options = inject<MatFabDefaultOptions>(MAT_FAB_DEFAULT_OPTIONS, {optional: true});\n\n override _isFab = true;\n\n constructor(...args: unknown[]);\n\n constructor() {\n super();\n this._options = this._options || defaults;\n this.color = this._options!.color || defaults.color;\n }\n}\n\n// tslint:disable:variable-name\n/**\n * Material Design floating action button (FAB) component for anchor elements. Anchor elements\n * are used to provide links for the user to navigate across different routes or pages.\n * See https://m3.material.io/components/floating-action-button/overview\n *\n * The `MatFabAnchor` class has two appearances: normal and extended.\n */\nexport const MatFabAnchor = MatFabButton;\nexport type MatFabAnchor = MatFabButton;\n\n/**\n * Material Design mini floating action button (FAB) component for anchor elements. Anchor elements\n * are used to provide links for the user to navigate across different routes or pages.\n * See https://m3.material.io/components/floating-action-button/overview\n */\nexport const MatMiniFabAnchor = MatMiniFabButton;\nexport type MatMiniFabAnchor = MatMiniFabButton;\n// tslint:enable:variable-name\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 {NgModule} from '@angular/core';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {MatRippleModule} from '../core';\nimport {MatButton} from './button';\nimport {MatFabButton, MatMiniFabButton} from './fab';\nimport {MatIconButton} from './icon-button';\n\n@NgModule({\n imports: [MatRippleModule, MatButton, MatMiniFabButton, MatIconButton, MatFabButton],\n exports: [BidiModule, MatButton, MatMiniFabButton, MatIconButton, MatFabButton],\n})\nexport class MatButtonModule {}\n"],"names":["APPEARANCE_CLASSES","Map","MatButton","MatButtonBase","appearance","_appearance","value","setAppearance","_config","defaultAppearance","constructor","inferredAppearance","_inferAppearance","_elementRef","nativeElement","classList","previousClasses","get","newClasses","ngDevMode","Error","remove","add","deps","target","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","args","selector","host","exportAs","template","Input","button","hasAttribute","MatAnchor","MAT_FAB_DEFAULT_OPTIONS","InjectionToken","providedIn","factory","defaults","color","MatFabButton","_options","inject","optional","_isFab","extended","isStandalone","inputs","booleanAttribute","properties","classAttribute","usesInheritance","ngImport","transform","MatMiniFabButton","MatFabAnchor","MatMiniFabAnchor","MatButtonModule","NgModule","ɵmod","ɵɵngDeclareNgModule","MatRippleModule","MatIconButton","exports","BidiModule","imports"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"card-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/card/testing/card-harness.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\nimport {\n ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {CardHarnessFilters} from './card-harness-filters';\n\n/** Selectors for different sections of the mat-card that can container user content. */\nexport enum MatCardSection {\n HEADER = '.mat-mdc-card-header',\n CONTENT = '.mat-mdc-card-content',\n ACTIONS = '.mat-mdc-card-actions',\n FOOTER = '.mat-mdc-card-footer',\n}\n\n/** Harness for interacting with a mat-card in tests. */\nexport class MatCardHarness extends ContentContainerComponentHarness<MatCardSection> {\n /** The selector for the host element of a `MatCard` instance. */\n static hostSelector = '.mat-mdc-card';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a card with specific attributes.\n * @param options Options for filtering which card instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatCardHarness>(\n this: ComponentHarnessConstructor<T>,\n options: CardHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('text', options.text, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getText(), text),\n )\n .addOption('title', options.title, (harness, title) =>\n HarnessPredicate.stringMatches(harness.getTitleText(), title),\n )\n .addOption('subtitle', options.subtitle, (harness, subtitle) =>\n HarnessPredicate.stringMatches(harness.getSubtitleText(), subtitle),\n );\n }\n\n private _title = this.locatorForOptional('.mat-mdc-card-title');\n private _subtitle = this.locatorForOptional('.mat-mdc-card-subtitle');\n\n /** Gets all of the card's content as text. */\n async getText(): Promise<string> {\n return (await this.host()).text();\n }\n\n /** Gets the cards's title text. */\n async getTitleText(): Promise<string> {\n return (await this._title())?.text() ?? '';\n }\n\n /** Gets the cards's subtitle text. */\n async getSubtitleText(): Promise<string> {\n return (await this._subtitle())?.text() ?? '';\n }\n}\n"],"names":["MatCardSection","MatCardHarness","ContentContainerComponentHarness","hostSelector","with","options","HarnessPredicate","addOption","text","harness","stringMatches","getText","title","getTitleText","subtitle","getSubtitleText","_title","locatorForOptional","_subtitle","host"],"mappings":";;IAgBYA;AAAZ,CAAA,UAAYA,cAAc,EAAA;AACxBA,EAAAA,cAAA,CAAA,QAAA,CAAA,GAAA,sBAA+B;AAC/BA,EAAAA,cAAA,CAAA,SAAA,CAAA,GAAA,uBAAiC;AACjCA,EAAAA,cAAA,CAAA,SAAA,CAAA,GAAA,uBAAiC;AACjCA,EAAAA,cAAA,CAAA,QAAA,CAAA,GAAA,sBAA+B;AACjC,CAAC,EALWA,cAAc,KAAdA,cAAc,GAAA,EAAA,CAAA,CAAA;AAQpB,MAAOC,cAAe,SAAQC,gCAAgD,CAAA;EAElF,OAAOC,YAAY,GAAG,eAAe;AAOrC,EAAA,OAAOC,IAAIA,CAETC,OAAA,GAA8B,EAAE,EAAA;AAEhC,IAAA,OAAO,IAAIC,gBAAgB,CAAC,IAAI,EAAED,OAAO,CAAA,CACtCE,SAAS,CAAC,MAAM,EAAEF,OAAO,CAACG,IAAI,EAAE,CAACC,OAAO,EAAED,IAAI,KAC7CF,gBAAgB,CAACI,aAAa,CAACD,OAAO,CAACE,OAAO,EAAE,EAAEH,IAAI,CAAC,CAAA,CAExDD,SAAS,CAAC,OAAO,EAAEF,OAAO,CAACO,KAAK,EAAE,CAACH,OAAO,EAAEG,KAAK,KAChDN,gBAAgB,CAACI,aAAa,CAACD,OAAO,CAACI,YAAY,EAAE,EAAED,KAAK,CAAC,CAAA,CAE9DL,SAAS,CAAC,UAAU,EAAEF,OAAO,CAACS,QAAQ,EAAE,CAACL,OAAO,EAAEK,QAAQ,KACzDR,gBAAgB,CAACI,aAAa,CAACD,OAAO,CAACM,eAAe,EAAE,EAAED,QAAQ,CAAC,CACpE;AACL,EAAA;AAEQE,EAAAA,MAAM,GAAG,IAAI,CAACC,kBAAkB,CAAC,qBAAqB,CAAC;AACvDC,EAAAA,SAAS,GAAG,IAAI,CAACD,kBAAkB,CAAC,wBAAwB,CAAC;EAGrE,MAAMN,OAAOA,GAAA;IACX,OAAO,CAAC,MAAM,IAAI,CAACQ,IAAI,EAAE,EAAEX,IAAI,EAAE;AACnC,EAAA;EAGA,MAAMK,YAAYA,GAAA;AAChB,IAAA,OAAO,CAAC,MAAM,IAAI,CAACG,MAAM,EAAE,GAAGR,IAAI,EAAE,IAAI,EAAE;AAC5C,EAAA;EAGA,MAAMO,eAAeA,GAAA;AACnB,IAAA,OAAO,CAAC,MAAM,IAAI,CAACG,SAAS,EAAE,GAAGV,IAAI,EAAE,IAAI,EAAE;AAC/C,EAAA;;;;;"}
{"version":3,"file":"card-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/card/testing/card-harness.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\nimport {\n ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {CardHarnessFilters} from './card-harness-filters';\n\n/** Selectors for different sections of the mat-card that can container user content. */\nexport enum MatCardSection {\n HEADER = '.mat-mdc-card-header',\n CONTENT = '.mat-mdc-card-content',\n ACTIONS = '.mat-mdc-card-actions',\n FOOTER = '.mat-mdc-card-footer',\n}\n\n/** Harness for interacting with a mat-card in tests. */\nexport class MatCardHarness extends ContentContainerComponentHarness<MatCardSection> {\n /** The selector for the host element of a `MatCard` instance. */\n static hostSelector = '.mat-mdc-card';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a card with specific attributes.\n * @param options Options for filtering which card instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatCardHarness>(\n this: ComponentHarnessConstructor<T>,\n options: CardHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('text', options.text, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getText(), text),\n )\n .addOption('title', options.title, (harness, title) =>\n HarnessPredicate.stringMatches(harness.getTitleText(), title),\n )\n .addOption('subtitle', options.subtitle, (harness, subtitle) =>\n HarnessPredicate.stringMatches(harness.getSubtitleText(), subtitle),\n );\n }\n\n private _title = this.locatorForOptional('.mat-mdc-card-title');\n private _subtitle = this.locatorForOptional('.mat-mdc-card-subtitle');\n\n /** Gets all of the card's content as text. */\n async getText(): Promise<string> {\n return (await this.host()).text();\n }\n\n /** Gets the cards's title text. */\n async getTitleText(): Promise<string> {\n return (await this._title())?.text() ?? '';\n }\n\n /** Gets the cards's subtitle text. */\n async getSubtitleText(): Promise<string> {\n return (await this._subtitle())?.text() ?? '';\n }\n}\n"],"names":["MatCardSection","MatCardHarness","ContentContainerComponentHarness","hostSelector","with","options","HarnessPredicate","addOption","text","harness","stringMatches","getText","title","getTitleText","subtitle","getSubtitleText","_title","locatorForOptional","_subtitle","host"],"mappings":";;IAgBYA;AAAZ,CAAA,UAAYA,cAAc,EAAA;AACxBA,EAAAA,cAAA,CAAA,QAAA,CAAA,GAAA,sBAA+B;AAC/BA,EAAAA,cAAA,CAAA,SAAA,CAAA,GAAA,uBAAiC;AACjCA,EAAAA,cAAA,CAAA,SAAA,CAAA,GAAA,uBAAiC;AACjCA,EAAAA,cAAA,CAAA,QAAA,CAAA,GAAA,sBAA+B;AACjC,CAAC,EALWA,cAAc,KAAdA,cAAc,GAAA,EAAA,CAAA,CAAA;AAQpB,MAAOC,cAAe,SAAQC,gCAAgD,CAAA;EAElF,OAAOC,YAAY,GAAG,eAAe;AAOrC,EAAA,OAAOC,IAAIA,CAETC,OAAA,GAA8B,EAAE,EAAA;AAEhC,IAAA,OAAO,IAAIC,gBAAgB,CAAC,IAAI,EAAED,OAAO,CAAA,CACtCE,SAAS,CAAC,MAAM,EAAEF,OAAO,CAACG,IAAI,EAAE,CAACC,OAAO,EAAED,IAAI,KAC7CF,gBAAgB,CAACI,aAAa,CAACD,OAAO,CAACE,OAAO,EAAE,EAAEH,IAAI,CAAC,CAAA,CAExDD,SAAS,CAAC,OAAO,EAAEF,OAAO,CAACO,KAAK,EAAE,CAACH,OAAO,EAAEG,KAAK,KAChDN,gBAAgB,CAACI,aAAa,CAACD,OAAO,CAACI,YAAY,EAAE,EAAED,KAAK,CAAC,CAAA,CAE9DL,SAAS,CAAC,UAAU,EAAEF,OAAO,CAACS,QAAQ,EAAE,CAACL,OAAO,EAAEK,QAAQ,KACzDR,gBAAgB,CAACI,aAAa,CAACD,OAAO,CAACM,eAAe,EAAE,EAAED,QAAQ,CAAC,CACpE;AACL,EAAA;AAEQE,EAAAA,MAAM,GAAG,IAAI,CAACC,kBAAkB,CAAC,qBAAqB,CAAC;AACvDC,EAAAA,SAAS,GAAG,IAAI,CAACD,kBAAkB,CAAC,wBAAwB,CAAC;EAGrE,MAAMN,OAAOA,GAAA;IACX,OAAO,CAAC,MAAM,IAAI,CAACQ,IAAI,EAAE,EAAEX,IAAI,EAAE;AACnC,EAAA;EAGA,MAAMK,YAAYA,GAAA;AAChB,IAAA,OAAO,CAAC,MAAM,IAAI,CAACG,MAAM,EAAE,GAAGR,IAAI,EAAE,IAAI,EAAE;AAC5C,EAAA;EAGA,MAAMO,eAAeA,GAAA;AACnB,IAAA,OAAO,CAAC,MAAM,IAAI,CAACG,SAAS,EAAE,GAAGV,IAAI,EAAE,IAAI,EAAE;AAC/C,EAAA;;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"card.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/card/card.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/card/card.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/card/card-title-group.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/card/card-header.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/card/card-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\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n InjectionToken,\n Input,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\n\nexport type MatCardAppearance = 'outlined' | 'raised' | 'filled';\n\n/** Object that can be used to configure the default options for the card module. */\nexport interface MatCardConfig {\n /** Default appearance for cards. */\n appearance?: MatCardAppearance;\n}\n\n/** Injection token that can be used to provide the default options the card module. */\nexport const MAT_CARD_CONFIG = new InjectionToken<MatCardConfig>('MAT_CARD_CONFIG');\n\n/**\n * Material Design card component. Cards contain content and actions about a single subject.\n * See https://material.io/design/components/cards.html\n *\n * MatCard provides no behaviors, instead serving as a purely visual treatment.\n */\n@Component({\n selector: 'mat-card',\n templateUrl: 'card.html',\n styleUrl: 'card.css',\n host: {\n 'class': 'mat-mdc-card mdc-card',\n '[class.mat-mdc-card-outlined]': 'appearance === \"outlined\"',\n '[class.mdc-card--outlined]': 'appearance === \"outlined\"',\n '[class.mat-mdc-card-filled]': 'appearance === \"filled\"',\n '[class.mdc-card--filled]': 'appearance === \"filled\"',\n },\n exportAs: 'matCard',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatCard {\n @Input() appearance: MatCardAppearance;\n\n constructor(...args: unknown[]);\n\n constructor() {\n const config = inject<MatCardConfig>(MAT_CARD_CONFIG, {optional: true});\n this.appearance = config?.appearance || 'raised';\n }\n}\n\n// TODO(jelbourn): add `MatActionCard`, which is a card that acts like a button (and has a ripple).\n// Supported in MDC with `.mdc-card__primary-action`. Will require additional a11y docs for users.\n\n/**\n * Title of a card, intended for use within `<mat-card>`. This component is an optional\n * convenience for one variety of card title; any custom title element may be used in its place.\n *\n * MatCardTitle provides no behaviors, instead serving as a purely visual treatment.\n */\n@Directive({\n selector: `mat-card-title, [mat-card-title], [matCardTitle]`,\n host: {'class': 'mat-mdc-card-title'},\n})\nexport class MatCardTitle {}\n\n/**\n * Container intended to be used within the `<mat-card>` component. Can contain exactly one\n * `<mat-card-title>`, one `<mat-card-subtitle>` and one content image of any size\n * (e.g. `<img matCardLgImage>`).\n */\n@Component({\n selector: 'mat-card-title-group',\n templateUrl: 'card-title-group.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'class': 'mat-mdc-card-title-group'},\n})\nexport class MatCardTitleGroup {}\n\n/**\n * Content of a card, intended for use within `<mat-card>`. This component is an optional\n * convenience for use with other convenience elements, such as `<mat-card-title>`; any custom\n * content block element may be used in its place.\n *\n * MatCardContent provides no behaviors, instead serving as a purely visual treatment.\n */\n@Directive({\n selector: 'mat-card-content',\n host: {'class': 'mat-mdc-card-content'},\n})\nexport class MatCardContent {}\n\n/**\n * Sub-title of a card, intended for use within `<mat-card>` beneath a `<mat-card-title>`. This\n * component is an optional convenience for use with other convenience elements, such as\n * `<mat-card-title>`.\n *\n * MatCardSubtitle provides no behaviors, instead serving as a purely visual treatment.\n */\n@Directive({\n selector: `mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]`,\n host: {'class': 'mat-mdc-card-subtitle'},\n})\nexport class MatCardSubtitle {}\n\n/**\n * Bottom area of a card that contains action buttons, intended for use within `<mat-card>`.\n * This component is an optional convenience for use with other convenience elements, such as\n * `<mat-card-content>`; any custom action block element may be used in its place.\n *\n * MatCardActions provides no behaviors, instead serving as a purely visual treatment.\n */\n@Directive({\n selector: 'mat-card-actions',\n exportAs: 'matCardActions',\n host: {\n 'class': 'mat-mdc-card-actions mdc-card__actions',\n '[class.mat-mdc-card-actions-align-end]': 'align === \"end\"',\n },\n})\nexport class MatCardActions {\n // TODO(jelbourn): deprecate `align` in favor of `actionPosition` or `actionAlignment`\n // as to not conflict with the native `align` attribute.\n\n /** Position of the actions inside the card. */\n @Input() align: 'start' | 'end' = 'start';\n\n // TODO(jelbourn): support `.mdc-card__actions--full-bleed`.\n\n // TODO(jelbourn): support `.mdc-card__action-buttons` and `.mdc-card__action-icons`.\n\n // TODO(jelbourn): figure out how to use `.mdc-card__action`, `.mdc-card__action--button`, and\n // `mdc-card__action--icon`. They're used primarily for positioning, which we might be able to\n // do implicitly.\n}\n\n/**\n * Header region of a card, intended for use within `<mat-card>`. This header captures\n * a card title, subtitle, and avatar. This component is an optional convenience for use with\n * other convenience elements, such as `<mat-card-footer>`; any custom header block element may be\n * used in its place.\n *\n * MatCardHeader provides no behaviors, instead serving as a purely visual treatment.\n */\n@Component({\n selector: 'mat-card-header',\n templateUrl: 'card-header.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'class': 'mat-mdc-card-header'},\n})\nexport class MatCardHeader {}\n\n/**\n * Footer area a card, intended for use within `<mat-card>`.\n * This component is an optional convenience for use with other convenience elements, such as\n * `<mat-card-content>`; any custom footer block element may be used in its place.\n *\n * MatCardFooter provides no behaviors, instead serving as a purely visual treatment.\n */\n@Directive({\n selector: 'mat-card-footer',\n host: {'class': 'mat-mdc-card-footer'},\n})\nexport class MatCardFooter {}\n\n// TODO(jelbourn): deprecate the \"image\" selectors to replace with \"media\".\n\n// TODO(jelbourn): support `.mdc-card__media-content`.\n\n/**\n * Primary image content for a card, intended for use within `<mat-card>`. Can be applied to\n * any media element, such as `<img>` or `<picture>`.\n *\n * This component is an optional convenience for use with other convenience elements, such as\n * `<mat-card-content>`; any custom media element may be used in its place.\n *\n * MatCardImage provides no behaviors, instead serving as a purely visual treatment.\n */\n@Directive({\n selector: '[mat-card-image], [matCardImage]',\n host: {'class': 'mat-mdc-card-image mdc-card__media'},\n})\nexport class MatCardImage {\n // TODO(jelbourn): support `.mdc-card__media--square` and `.mdc-card__media--16-9`.\n}\n\n/** Same as `MatCardImage`, but small. */\n@Directive({\n selector: '[mat-card-sm-image], [matCardImageSmall]',\n host: {'class': 'mat-mdc-card-sm-image mdc-card__media'},\n})\nexport class MatCardSmImage {}\n\n/** Same as `MatCardImage`, but medium. */\n@Directive({\n selector: '[mat-card-md-image], [matCardImageMedium]',\n host: {'class': 'mat-mdc-card-md-image mdc-card__media'},\n})\nexport class MatCardMdImage {}\n\n/** Same as `MatCardImage`, but large. */\n@Directive({\n selector: '[mat-card-lg-image], [matCardImageLarge]',\n host: {'class': 'mat-mdc-card-lg-image mdc-card__media'},\n})\nexport class MatCardLgImage {}\n\n/** Same as `MatCardImage`, but extra-large. */\n@Directive({\n selector: '[mat-card-xl-image], [matCardImageXLarge]',\n host: {'class': 'mat-mdc-card-xl-image mdc-card__media'},\n})\nexport class MatCardXlImage {}\n\n/**\n * Avatar image content for a card, intended for use within `<mat-card>`. Can be applied to\n * any media element, such as `<img>` or `<picture>`.\n *\n * This component is an optional convenience for use with other convenience elements, such as\n * `<mat-card-title>`; any custom media element may be used in its place.\n *\n * MatCardAvatar provides no behaviors, instead serving as a purely visual treatment.\n */\n@Directive({\n selector: '[mat-card-avatar], [matCardAvatar]',\n host: {'class': 'mat-mdc-card-avatar'},\n})\nexport class MatCardAvatar {}\n","<ng-content></ng-content>\n","<div>\n <ng-content\n select=\"mat-card-title, mat-card-subtitle,\n [mat-card-title], [mat-card-subtitle],\n [matCardTitle], [matCardSubtitle]\"></ng-content>\n</div>\n<ng-content select=\"[mat-card-image], [matCardImage],\n [mat-card-sm-image], [matCardImageSmall],\n [mat-card-md-image], [matCardImageMedium],\n [mat-card-lg-image], [matCardImageLarge],\n [mat-card-xl-image], [matCardImageXLarge]\"></ng-content>\n<ng-content></ng-content>\n","<ng-content select=\"[mat-card-avatar], [matCardAvatar]\"></ng-content>\n<div class=\"mat-mdc-card-header-text\">\n <ng-content\n select=\"mat-card-title, mat-card-subtitle,\n [mat-card-title], [mat-card-subtitle],\n [matCardTitle], [matCardSubtitle]\"></ng-content>\n</div>\n<ng-content></ng-content>\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 {NgModule} from '@angular/core';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {\n MatCard,\n MatCardActions,\n MatCardAvatar,\n MatCardContent,\n MatCardFooter,\n MatCardHeader,\n MatCardImage,\n MatCardLgImage,\n MatCardMdImage,\n MatCardSmImage,\n MatCardSubtitle,\n MatCardTitle,\n MatCardTitleGroup,\n MatCardXlImage,\n} from './card';\n\nconst CARD_DIRECTIVES = [\n MatCard,\n MatCardActions,\n MatCardAvatar,\n MatCardContent,\n MatCardFooter,\n MatCardHeader,\n MatCardImage,\n MatCardLgImage,\n MatCardMdImage,\n MatCardSmImage,\n MatCardSubtitle,\n MatCardTitle,\n MatCardTitleGroup,\n MatCardXlImage,\n];\n\n@NgModule({\n imports: CARD_DIRECTIVES,\n exports: [CARD_DIRECTIVES, BidiModule],\n})\nexport class MatCardModule {}\n"],"names":["MAT_CARD_CONFIG","InjectionToken","MatCard","appearance","constructor","config","inject","optional","deps","target","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","args","selector","host","exportAs","template","Input","MatCardTitle","Directive","isStandalone","classAttribute","ngImport","MatCardTitleGroup","MatCardContent","MatCardSubtitle","MatCardActions","align","inputs","properties","MatCardHeader","MatCardFooter","MatCardImage","MatCardSmImage","MatCardMdImage","MatCardLgImage","MatCardXlImage","MatCardAvatar","CARD_DIRECTIVES","MatCardModule","NgModule","ɵmod","ɵɵngDeclareNgModule","BidiModule","ɵinj","ɵɵngDeclareInjector","imports","exports"],"mappings":"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"}
{"version":3,"file":"card.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/card/card.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/card/card.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/card/card-title-group.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/card/card-header.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/card/card-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\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n InjectionToken,\n Input,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\n\nexport type MatCardAppearance = 'outlined' | 'raised' | 'filled';\n\n/** Object that can be used to configure the default options for the card module. */\nexport interface MatCardConfig {\n /** Default appearance for cards. */\n appearance?: MatCardAppearance;\n}\n\n/** Injection token that can be used to provide the default options the card module. */\nexport const MAT_CARD_CONFIG = new InjectionToken<MatCardConfig>('MAT_CARD_CONFIG');\n\n/**\n * Material Design card component. Cards contain content and actions about a single subject.\n * See https://material.io/design/components/cards.html\n *\n * MatCard provides no behaviors, instead serving as a purely visual treatment.\n */\n@Component({\n selector: 'mat-card',\n templateUrl: 'card.html',\n styleUrl: 'card.css',\n host: {\n 'class': 'mat-mdc-card mdc-card',\n '[class.mat-mdc-card-outlined]': 'appearance === \"outlined\"',\n '[class.mdc-card--outlined]': 'appearance === \"outlined\"',\n '[class.mat-mdc-card-filled]': 'appearance === \"filled\"',\n '[class.mdc-card--filled]': 'appearance === \"filled\"',\n },\n exportAs: 'matCard',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatCard {\n @Input() appearance: MatCardAppearance;\n\n constructor(...args: unknown[]);\n\n constructor() {\n const config = inject<MatCardConfig>(MAT_CARD_CONFIG, {optional: true});\n this.appearance = config?.appearance || 'raised';\n }\n}\n\n// TODO(jelbourn): add `MatActionCard`, which is a card that acts like a button (and has a ripple).\n// Supported in MDC with `.mdc-card__primary-action`. Will require additional a11y docs for users.\n\n/**\n * Title of a card, intended for use within `<mat-card>`. This component is an optional\n * convenience for one variety of card title; any custom title element may be used in its place.\n *\n * MatCardTitle provides no behaviors, instead serving as a purely visual treatment.\n */\n@Directive({\n selector: `mat-card-title, [mat-card-title], [matCardTitle]`,\n host: {'class': 'mat-mdc-card-title'},\n})\nexport class MatCardTitle {}\n\n/**\n * Container intended to be used within the `<mat-card>` component. Can contain exactly one\n * `<mat-card-title>`, one `<mat-card-subtitle>` and one content image of any size\n * (e.g. `<img matCardLgImage>`).\n */\n@Component({\n selector: 'mat-card-title-group',\n templateUrl: 'card-title-group.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'class': 'mat-mdc-card-title-group'},\n})\nexport class MatCardTitleGroup {}\n\n/**\n * Content of a card, intended for use within `<mat-card>`. This component is an optional\n * convenience for use with other convenience elements, such as `<mat-card-title>`; any custom\n * content block element may be used in its place.\n *\n * MatCardContent provides no behaviors, instead serving as a purely visual treatment.\n */\n@Directive({\n selector: 'mat-card-content',\n host: {'class': 'mat-mdc-card-content'},\n})\nexport class MatCardContent {}\n\n/**\n * Sub-title of a card, intended for use within `<mat-card>` beneath a `<mat-card-title>`. This\n * component is an optional convenience for use with other convenience elements, such as\n * `<mat-card-title>`.\n *\n * MatCardSubtitle provides no behaviors, instead serving as a purely visual treatment.\n */\n@Directive({\n selector: `mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]`,\n host: {'class': 'mat-mdc-card-subtitle'},\n})\nexport class MatCardSubtitle {}\n\n/**\n * Bottom area of a card that contains action buttons, intended for use within `<mat-card>`.\n * This component is an optional convenience for use with other convenience elements, such as\n * `<mat-card-content>`; any custom action block element may be used in its place.\n *\n * MatCardActions provides no behaviors, instead serving as a purely visual treatment.\n */\n@Directive({\n selector: 'mat-card-actions',\n exportAs: 'matCardActions',\n host: {\n 'class': 'mat-mdc-card-actions mdc-card__actions',\n '[class.mat-mdc-card-actions-align-end]': 'align === \"end\"',\n },\n})\nexport class MatCardActions {\n // TODO(jelbourn): deprecate `align` in favor of `actionPosition` or `actionAlignment`\n // as to not conflict with the native `align` attribute.\n\n /** Position of the actions inside the card. */\n @Input() align: 'start' | 'end' = 'start';\n\n // TODO(jelbourn): support `.mdc-card__actions--full-bleed`.\n\n // TODO(jelbourn): support `.mdc-card__action-buttons` and `.mdc-card__action-icons`.\n\n // TODO(jelbourn): figure out how to use `.mdc-card__action`, `.mdc-card__action--button`, and\n // `mdc-card__action--icon`. They're used primarily for positioning, which we might be able to\n // do implicitly.\n}\n\n/**\n * Header region of a card, intended for use within `<mat-card>`. This header captures\n * a card title, subtitle, and avatar. This component is an optional convenience for use with\n * other convenience elements, such as `<mat-card-footer>`; any custom header block element may be\n * used in its place.\n *\n * MatCardHeader provides no behaviors, instead serving as a purely visual treatment.\n */\n@Component({\n selector: 'mat-card-header',\n templateUrl: 'card-header.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'class': 'mat-mdc-card-header'},\n})\nexport class MatCardHeader {}\n\n/**\n * Footer area a card, intended for use within `<mat-card>`.\n * This component is an optional convenience for use with other convenience elements, such as\n * `<mat-card-content>`; any custom footer block element may be used in its place.\n *\n * MatCardFooter provides no behaviors, instead serving as a purely visual treatment.\n */\n@Directive({\n selector: 'mat-card-footer',\n host: {'class': 'mat-mdc-card-footer'},\n})\nexport class MatCardFooter {}\n\n// TODO(jelbourn): deprecate the \"image\" selectors to replace with \"media\".\n\n// TODO(jelbourn): support `.mdc-card__media-content`.\n\n/**\n * Primary image content for a card, intended for use within `<mat-card>`. Can be applied to\n * any media element, such as `<img>` or `<picture>`.\n *\n * This component is an optional convenience for use with other convenience elements, such as\n * `<mat-card-content>`; any custom media element may be used in its place.\n *\n * MatCardImage provides no behaviors, instead serving as a purely visual treatment.\n */\n@Directive({\n selector: '[mat-card-image], [matCardImage]',\n host: {'class': 'mat-mdc-card-image mdc-card__media'},\n})\nexport class MatCardImage {\n // TODO(jelbourn): support `.mdc-card__media--square` and `.mdc-card__media--16-9`.\n}\n\n/** Same as `MatCardImage`, but small. */\n@Directive({\n selector: '[mat-card-sm-image], [matCardImageSmall]',\n host: {'class': 'mat-mdc-card-sm-image mdc-card__media'},\n})\nexport class MatCardSmImage {}\n\n/** Same as `MatCardImage`, but medium. */\n@Directive({\n selector: '[mat-card-md-image], [matCardImageMedium]',\n host: {'class': 'mat-mdc-card-md-image mdc-card__media'},\n})\nexport class MatCardMdImage {}\n\n/** Same as `MatCardImage`, but large. */\n@Directive({\n selector: '[mat-card-lg-image], [matCardImageLarge]',\n host: {'class': 'mat-mdc-card-lg-image mdc-card__media'},\n})\nexport class MatCardLgImage {}\n\n/** Same as `MatCardImage`, but extra-large. */\n@Directive({\n selector: '[mat-card-xl-image], [matCardImageXLarge]',\n host: {'class': 'mat-mdc-card-xl-image mdc-card__media'},\n})\nexport class MatCardXlImage {}\n\n/**\n * Avatar image content for a card, intended for use within `<mat-card>`. Can be applied to\n * any media element, such as `<img>` or `<picture>`.\n *\n * This component is an optional convenience for use with other convenience elements, such as\n * `<mat-card-title>`; any custom media element may be used in its place.\n *\n * MatCardAvatar provides no behaviors, instead serving as a purely visual treatment.\n */\n@Directive({\n selector: '[mat-card-avatar], [matCardAvatar]',\n host: {'class': 'mat-mdc-card-avatar'},\n})\nexport class MatCardAvatar {}\n","<ng-content></ng-content>\n","<div>\n <ng-content\n select=\"mat-card-title, mat-card-subtitle,\n [mat-card-title], [mat-card-subtitle],\n [matCardTitle], [matCardSubtitle]\"></ng-content>\n</div>\n<ng-content select=\"[mat-card-image], [matCardImage],\n [mat-card-sm-image], [matCardImageSmall],\n [mat-card-md-image], [matCardImageMedium],\n [mat-card-lg-image], [matCardImageLarge],\n [mat-card-xl-image], [matCardImageXLarge]\"></ng-content>\n<ng-content></ng-content>\n","<ng-content select=\"[mat-card-avatar], [matCardAvatar]\"></ng-content>\n<div class=\"mat-mdc-card-header-text\">\n <ng-content\n select=\"mat-card-title, mat-card-subtitle,\n [mat-card-title], [mat-card-subtitle],\n [matCardTitle], [matCardSubtitle]\"></ng-content>\n</div>\n<ng-content></ng-content>\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 {NgModule} from '@angular/core';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {\n MatCard,\n MatCardActions,\n MatCardAvatar,\n MatCardContent,\n MatCardFooter,\n MatCardHeader,\n MatCardImage,\n MatCardLgImage,\n MatCardMdImage,\n MatCardSmImage,\n MatCardSubtitle,\n MatCardTitle,\n MatCardTitleGroup,\n MatCardXlImage,\n} from './card';\n\nconst CARD_DIRECTIVES = [\n MatCard,\n MatCardActions,\n MatCardAvatar,\n MatCardContent,\n MatCardFooter,\n MatCardHeader,\n MatCardImage,\n MatCardLgImage,\n MatCardMdImage,\n MatCardSmImage,\n MatCardSubtitle,\n MatCardTitle,\n MatCardTitleGroup,\n MatCardXlImage,\n];\n\n@NgModule({\n imports: CARD_DIRECTIVES,\n exports: [CARD_DIRECTIVES, BidiModule],\n})\nexport class MatCardModule {}\n"],"names":["MAT_CARD_CONFIG","InjectionToken","MatCard","appearance","constructor","config","inject","optional","deps","target","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","args","selector","host","exportAs","template","Input","MatCardTitle","Directive","isStandalone","classAttribute","ngImport","MatCardTitleGroup","MatCardContent","MatCardSubtitle","MatCardActions","align","inputs","properties","MatCardHeader","MatCardFooter","MatCardImage","MatCardSmImage","MatCardMdImage","MatCardLgImage","MatCardXlImage","MatCardAvatar","CARD_DIRECTIVES","MatCardModule","NgModule","ɵmod","ɵɵngDeclareNgModule","BidiModule","ɵinj","ɵɵngDeclareInjector","imports","exports"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"checkbox-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/checkbox/testing/checkbox-harness.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\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {CheckboxHarnessFilters} from './checkbox-harness-filters';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\n/** Harness for interacting with a mat-checkbox in tests. */\nexport class MatCheckboxHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-checkbox';\n\n _input = this.locatorFor('input');\n private _label = this.locatorFor('label');\n private _inputContainer = this.locatorFor('.mdc-checkbox');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a checkbox with specific attributes.\n * @param options Options for narrowing the search:\n * - `selector` finds a checkbox whose host element matches the given selector.\n * - `label` finds a checkbox with specific label text.\n * - `name` finds a checkbox with specific name.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatCheckboxHarness>(\n this: ComponentHarnessConstructor<T>,\n options: CheckboxHarnessFilters = {},\n ): HarnessPredicate<T> {\n return (\n new HarnessPredicate(this, options)\n .addOption('label', options.label, (harness, label) =>\n HarnessPredicate.stringMatches(harness.getLabelText(), label),\n )\n // We want to provide a filter option for \"name\" because the name of the checkbox is\n // only set on the underlying input. This means that it's not possible for developers\n // to retrieve the harness of a specific checkbox with name through a CSS selector.\n .addOption(\n 'name',\n options.name,\n async (harness, name) => (await harness.getName()) === name,\n )\n .addOption(\n 'checked',\n options.checked,\n async (harness, checked) => (await harness.isChecked()) == checked,\n )\n .addOption('disabled', options.disabled, async (harness, disabled) => {\n return (await harness.isDisabled()) === disabled;\n })\n );\n }\n\n /** Whether the checkbox is checked. */\n async isChecked(): Promise<boolean> {\n const checked = (await this._input()).getProperty<boolean>('checked');\n return coerceBooleanProperty(await checked);\n }\n\n /** Whether the checkbox is in an indeterminate state. */\n async isIndeterminate(): Promise<boolean> {\n const indeterminate = (await this._input()).getProperty<string>('indeterminate');\n return coerceBooleanProperty(await indeterminate);\n }\n\n /** Whether the checkbox is disabled. */\n async isDisabled(): Promise<boolean> {\n const input = await this._input();\n const disabled = await input.getAttribute('disabled');\n\n if (disabled !== null) {\n return coerceBooleanProperty(disabled);\n }\n\n return (await input.getAttribute('aria-disabled')) === 'true';\n }\n\n /** Whether the checkbox is required. */\n async isRequired(): Promise<boolean> {\n const required = (await this._input()).getProperty<boolean>('required');\n return coerceBooleanProperty(await required);\n }\n\n /** Whether the checkbox is valid. */\n async isValid(): Promise<boolean> {\n const invalid = (await this.host()).hasClass('ng-invalid');\n return !(await invalid);\n }\n\n /** Gets the checkbox's name. */\n async getName(): Promise<string | null> {\n return (await this._input()).getAttribute('name');\n }\n\n /** Gets the checkbox's value. */\n async getValue(): Promise<string | null> {\n return (await this._input()).getProperty<string | null>('value');\n }\n\n /** Gets the checkbox's aria-label. */\n async getAriaLabel(): Promise<string | null> {\n return (await this._input()).getAttribute('aria-label');\n }\n\n /** Gets the checkbox's aria-labelledby. */\n async getAriaLabelledby(): Promise<string | null> {\n return (await this._input()).getAttribute('aria-labelledby');\n }\n\n /** Gets the checkbox's label text. */\n async getLabelText(): Promise<string> {\n return (await this._label()).text();\n }\n\n /** Focuses the checkbox. */\n async focus(): Promise<void> {\n return (await this._input()).focus();\n }\n\n /** Blurs the checkbox. */\n async blur(): Promise<void> {\n return (await this._input()).blur();\n }\n\n /** Whether the checkbox is focused. */\n async isFocused(): Promise<boolean> {\n return (await this._input()).isFocused();\n }\n\n /**\n * Toggles the checked state of the checkbox.\n *\n * Note: This attempts to toggle the checkbox as a user would, by clicking it. Therefore if you\n * are using `MAT_CHECKBOX_DEFAULT_OPTIONS` to change the behavior on click, calling this method\n * might not have the expected result.\n */\n async toggle(): Promise<void> {\n const elToClick = await ((await this.isDisabled()) ? this._inputContainer() : this._input());\n return elToClick.click();\n }\n\n /**\n * Puts the checkbox in a checked state by toggling it if it is currently unchecked, or doing\n * nothing if it is already checked.\n *\n * Note: This attempts to check the checkbox as a user would, by clicking it. Therefore if you\n * are using `MAT_CHECKBOX_DEFAULT_OPTIONS` to change the behavior on click, calling this method\n * might not have the expected result.\n */\n async check(): Promise<void> {\n if (!(await this.isChecked())) {\n await this.toggle();\n }\n }\n\n /**\n * Puts the checkbox in an unchecked state by toggling it if it is currently checked, or doing\n * nothing if it is already unchecked.\n *\n * Note: This attempts to uncheck the checkbox as a user would, by clicking it. Therefore if you\n * are using `MAT_CHECKBOX_DEFAULT_OPTIONS` to change the behavior on click, calling this method\n * might not have the expected result.\n */\n async uncheck(): Promise<void> {\n if (await this.isChecked()) {\n await this.toggle();\n }\n }\n}\n"],"names":["MatCheckboxHarness","ComponentHarness","hostSelector","_input","locatorFor","_label","_inputContainer","with","options","HarnessPredicate","addOption","label","harness","stringMatches","getLabelText","name","getName","checked","isChecked","disabled","isDisabled","getProperty","coerceBooleanProperty","isIndeterminate","indeterminate","input","getAttribute","isRequired","required","isValid","invalid","host","hasClass","getValue","getAriaLabel","getAriaLabelledby","text","focus","blur","isFocused","toggle","elToClick","click","check","uncheck"],"mappings":"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"}
{"version":3,"file":"checkbox-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/checkbox/testing/checkbox-harness.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\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {CheckboxHarnessFilters} from './checkbox-harness-filters';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\n/** Harness for interacting with a mat-checkbox in tests. */\nexport class MatCheckboxHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-checkbox';\n\n _input = this.locatorFor('input');\n private _label = this.locatorFor('label');\n private _inputContainer = this.locatorFor('.mdc-checkbox');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a checkbox with specific attributes.\n * @param options Options for narrowing the search:\n * - `selector` finds a checkbox whose host element matches the given selector.\n * - `label` finds a checkbox with specific label text.\n * - `name` finds a checkbox with specific name.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatCheckboxHarness>(\n this: ComponentHarnessConstructor<T>,\n options: CheckboxHarnessFilters = {},\n ): HarnessPredicate<T> {\n return (\n new HarnessPredicate(this, options)\n .addOption('label', options.label, (harness, label) =>\n HarnessPredicate.stringMatches(harness.getLabelText(), label),\n )\n // We want to provide a filter option for \"name\" because the name of the checkbox is\n // only set on the underlying input. This means that it's not possible for developers\n // to retrieve the harness of a specific checkbox with name through a CSS selector.\n .addOption(\n 'name',\n options.name,\n async (harness, name) => (await harness.getName()) === name,\n )\n .addOption(\n 'checked',\n options.checked,\n async (harness, checked) => (await harness.isChecked()) == checked,\n )\n .addOption('disabled', options.disabled, async (harness, disabled) => {\n return (await harness.isDisabled()) === disabled;\n })\n );\n }\n\n /** Whether the checkbox is checked. */\n async isChecked(): Promise<boolean> {\n const checked = (await this._input()).getProperty<boolean>('checked');\n return coerceBooleanProperty(await checked);\n }\n\n /** Whether the checkbox is in an indeterminate state. */\n async isIndeterminate(): Promise<boolean> {\n const indeterminate = (await this._input()).getProperty<string>('indeterminate');\n return coerceBooleanProperty(await indeterminate);\n }\n\n /** Whether the checkbox is disabled. */\n async isDisabled(): Promise<boolean> {\n const input = await this._input();\n const disabled = await input.getAttribute('disabled');\n\n if (disabled !== null) {\n return coerceBooleanProperty(disabled);\n }\n\n return (await input.getAttribute('aria-disabled')) === 'true';\n }\n\n /** Whether the checkbox is required. */\n async isRequired(): Promise<boolean> {\n const required = (await this._input()).getProperty<boolean>('required');\n return coerceBooleanProperty(await required);\n }\n\n /** Whether the checkbox is valid. */\n async isValid(): Promise<boolean> {\n const invalid = (await this.host()).hasClass('ng-invalid');\n return !(await invalid);\n }\n\n /** Gets the checkbox's name. */\n async getName(): Promise<string | null> {\n return (await this._input()).getAttribute('name');\n }\n\n /** Gets the checkbox's value. */\n async getValue(): Promise<string | null> {\n return (await this._input()).getProperty<string | null>('value');\n }\n\n /** Gets the checkbox's aria-label. */\n async getAriaLabel(): Promise<string | null> {\n return (await this._input()).getAttribute('aria-label');\n }\n\n /** Gets the checkbox's aria-labelledby. */\n async getAriaLabelledby(): Promise<string | null> {\n return (await this._input()).getAttribute('aria-labelledby');\n }\n\n /** Gets the checkbox's label text. */\n async getLabelText(): Promise<string> {\n return (await this._label()).text();\n }\n\n /** Focuses the checkbox. */\n async focus(): Promise<void> {\n return (await this._input()).focus();\n }\n\n /** Blurs the checkbox. */\n async blur(): Promise<void> {\n return (await this._input()).blur();\n }\n\n /** Whether the checkbox is focused. */\n async isFocused(): Promise<boolean> {\n return (await this._input()).isFocused();\n }\n\n /**\n * Toggles the checked state of the checkbox.\n *\n * Note: This attempts to toggle the checkbox as a user would, by clicking it. Therefore if you\n * are using `MAT_CHECKBOX_DEFAULT_OPTIONS` to change the behavior on click, calling this method\n * might not have the expected result.\n */\n async toggle(): Promise<void> {\n const elToClick = await ((await this.isDisabled()) ? this._inputContainer() : this._input());\n return elToClick.click();\n }\n\n /**\n * Puts the checkbox in a checked state by toggling it if it is currently unchecked, or doing\n * nothing if it is already checked.\n *\n * Note: This attempts to check the checkbox as a user would, by clicking it. Therefore if you\n * are using `MAT_CHECKBOX_DEFAULT_OPTIONS` to change the behavior on click, calling this method\n * might not have the expected result.\n */\n async check(): Promise<void> {\n if (!(await this.isChecked())) {\n await this.toggle();\n }\n }\n\n /**\n * Puts the checkbox in an unchecked state by toggling it if it is currently checked, or doing\n * nothing if it is already unchecked.\n *\n * Note: This attempts to uncheck the checkbox as a user would, by clicking it. Therefore if you\n * are using `MAT_CHECKBOX_DEFAULT_OPTIONS` to change the behavior on click, calling this method\n * might not have the expected result.\n */\n async uncheck(): Promise<void> {\n if (await this.isChecked()) {\n await this.toggle();\n }\n }\n}\n"],"names":["MatCheckboxHarness","ComponentHarness","hostSelector","_input","locatorFor","_label","_inputContainer","with","options","HarnessPredicate","addOption","label","harness","stringMatches","getLabelText","name","getName","checked","isChecked","disabled","isDisabled","getProperty","coerceBooleanProperty","isIndeterminate","indeterminate","input","getAttribute","isRequired","required","isValid","invalid","host","hasClass","getValue","getAriaLabel","getAriaLabelledby","text","focus","blur","isFocused","toggle","elToClick","click","check","uncheck"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"checkbox.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/checkbox/checkbox-config.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/checkbox/checkbox.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/checkbox/checkbox.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/checkbox/checkbox-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 */\nimport {InjectionToken} from '@angular/core';\nimport {ThemePalette} from '../core';\n\n/** Default `mat-checkbox` options that can be overridden. */\nexport interface MatCheckboxDefaultOptions {\n /**\n * Default theme color of the checkbox. This API is supported in M2 themes\n * only, it has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/checkbox/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n color?: ThemePalette;\n\n /** Default checkbox click action for checkboxes. */\n clickAction?: MatCheckboxClickAction;\n\n /** Whether disabled checkboxes should be interactive. */\n disabledInteractive?: boolean;\n}\n\nexport const checkboxDefaults: MatCheckboxDefaultOptions = {\n color: 'accent',\n clickAction: 'check-indeterminate',\n disabledInteractive: false,\n};\n\n/** Injection token to be used to override the default options for `mat-checkbox`. */\nexport const MAT_CHECKBOX_DEFAULT_OPTIONS = new InjectionToken<MatCheckboxDefaultOptions>(\n 'mat-checkbox-default-options',\n {\n providedIn: 'root',\n factory: () => checkboxDefaults,\n },\n);\n\n/**\n * Checkbox click action when user click on input element.\n * noop: Do not toggle checked or indeterminate.\n * check: Only toggle checked status, ignore indeterminate.\n * check-indeterminate: Toggle checked status, set indeterminate to false. Default behavior.\n * undefined: Same as `check-indeterminate`.\n */\nexport type MatCheckboxClickAction = 'noop' | 'check' | 'check-indeterminate' | undefined;\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 {_IdGenerator, FocusableOption} from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n booleanAttribute,\n forwardRef,\n numberAttribute,\n inject,\n HostAttributeToken,\n signal,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport {\n MatRipple,\n _MatInternalFormField,\n _StructuralStylesLoader,\n _animationsDisabled,\n} from '../core';\nimport {\n checkboxDefaults,\n MAT_CHECKBOX_DEFAULT_OPTIONS,\n MatCheckboxDefaultOptions,\n} from './checkbox-config';\nimport {_CdkPrivateStyleLoader} from '@angular/cdk/private';\n\n/**\n * Represents the different states that require custom transitions between them.\n * @docs-private\n */\nexport enum TransitionCheckState {\n /** The initial state of the component before any user interaction. */\n Init,\n /** The state representing the component when it's becoming checked. */\n Checked,\n /** The state representing the component when it's becoming unchecked. */\n Unchecked,\n /** The state representing the component when it's becoming indeterminate. */\n Indeterminate,\n}\n\n/** Change event object emitted by checkbox. */\nexport class MatCheckboxChange {\n /** The source checkbox of the event. */\n source!: MatCheckbox;\n /** The new `checked` value of the checkbox. */\n checked!: boolean;\n}\n\n@Component({\n selector: 'mat-checkbox',\n templateUrl: 'checkbox.html',\n styleUrl: 'checkbox.css',\n host: {\n 'class': 'mat-mdc-checkbox',\n '[attr.tabindex]': 'null',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[class._mat-animation-noopable]': '_animationsDisabled',\n '[class.mdc-checkbox--disabled]': 'disabled',\n '[id]': 'id',\n // Add classes that users can use to more easily target disabled or checked checkboxes.\n '[class.mat-mdc-checkbox-disabled]': 'disabled',\n '[class.mat-mdc-checkbox-checked]': 'checked',\n '[class.mat-mdc-checkbox-disabled-interactive]': 'disabledInteractive',\n '[class]': 'color ? \"mat-\" + color : \"mat-accent\"',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatCheckbox),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: MatCheckbox,\n multi: true,\n },\n ],\n exportAs: 'matCheckbox',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatRipple, _MatInternalFormField],\n})\nexport class MatCheckbox\n implements AfterViewInit, OnChanges, ControlValueAccessor, Validator, FocusableOption\n{\n _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _changeDetectorRef = inject(ChangeDetectorRef);\n private _ngZone = inject(NgZone);\n protected _animationsDisabled = _animationsDisabled();\n private _options = inject<MatCheckboxDefaultOptions>(MAT_CHECKBOX_DEFAULT_OPTIONS, {\n optional: true,\n });\n\n /** Focuses the checkbox. */\n focus() {\n this._inputElement.nativeElement.focus();\n }\n\n /** Creates the change event that will be emitted by the checkbox. */\n protected _createChangeEvent(isChecked: boolean) {\n const event = new MatCheckboxChange();\n event.source = this;\n event.checked = isChecked;\n return event;\n }\n\n /** Gets the element on which to add the animation CSS classes. */\n protected _getAnimationTargetElement() {\n return this._inputElement?.nativeElement;\n }\n\n /** CSS classes to add when transitioning between the different checkbox states. */\n protected _animationClasses = {\n uncheckedToChecked: 'mdc-checkbox--anim-unchecked-checked',\n uncheckedToIndeterminate: 'mdc-checkbox--anim-unchecked-indeterminate',\n checkedToUnchecked: 'mdc-checkbox--anim-checked-unchecked',\n checkedToIndeterminate: 'mdc-checkbox--anim-checked-indeterminate',\n indeterminateToChecked: 'mdc-checkbox--anim-indeterminate-checked',\n indeterminateToUnchecked: 'mdc-checkbox--anim-indeterminate-unchecked',\n };\n\n /**\n * Attached to the aria-label attribute of the host element. In most cases, aria-labelledby will\n * take precedence so this may be omitted.\n */\n @Input('aria-label') ariaLabel: string = '';\n\n /**\n * Users can specify the `aria-labelledby` attribute which will be forwarded to the input element\n */\n @Input('aria-labelledby') ariaLabelledby: string | null = null;\n\n /** The 'aria-describedby' attribute is read after the element's label and field type. */\n @Input('aria-describedby') ariaDescribedby!: string;\n\n /**\n * Users can specify the `aria-expanded` attribute which will be forwarded to the input element\n */\n @Input({alias: 'aria-expanded', transform: booleanAttribute}) ariaExpanded!: boolean;\n\n /**\n * Users can specify the `aria-controls` attribute which will be forwarded to the input element\n */\n @Input('aria-controls') ariaControls!: string;\n\n /** Users can specify the `aria-owns` attribute which will be forwarded to the input element */\n @Input('aria-owns') ariaOwns!: string;\n\n private _uniqueId: string;\n\n /** A unique id for the checkbox input. If none is supplied, it will be auto-generated. */\n @Input() id: string;\n\n /** Returns the unique id for the visual hidden input. */\n get inputId(): string {\n return `${this.id || this._uniqueId}-input`;\n }\n\n /** Whether the checkbox is required. */\n @Input({transform: booleanAttribute}) required: boolean = false;\n\n /** Whether the label should appear after or before the checkbox. Defaults to 'after' */\n @Input() labelPosition: 'before' | 'after' = 'after';\n\n /** Name value will be applied to the input element if present */\n @Input() name: string | null = null;\n\n /** Event emitted when the checkbox's `checked` value changes. */\n @Output() readonly change = new EventEmitter<MatCheckboxChange>();\n\n /** Event emitted when the checkbox's `indeterminate` value changes. */\n @Output() readonly indeterminateChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** The value attribute of the native input element */\n @Input() value!: string;\n\n /** Whether the checkbox has a ripple. */\n @Input({transform: booleanAttribute}) disableRipple: boolean = false;\n\n /** The native `<input type=\"checkbox\">` element */\n @ViewChild('input') _inputElement!: ElementRef<HTMLInputElement>;\n\n /** The native `<label>` element */\n @ViewChild('label') _labelElement!: ElementRef<HTMLInputElement>;\n\n /** Tabindex for the checkbox. */\n @Input({transform: (value: unknown) => (value == null ? undefined : numberAttribute(value))})\n tabIndex: number;\n\n // TODO(crisbeto): this should be a ThemePalette, but some internal apps were abusing\n // the lack of type checking previously and assigning random strings.\n /**\n * Theme color of the checkbox. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/checkbox/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input() color: string | undefined;\n\n /** Whether the checkbox should remain interactive when it is disabled. */\n @Input({transform: booleanAttribute})\n disabledInteractive: boolean;\n\n /**\n * Called when the checkbox is blurred. Needed to properly implement ControlValueAccessor.\n * @docs-private\n */\n _onTouched: () => any = () => {};\n\n private _currentAnimationClass: string = '';\n private _currentCheckState: TransitionCheckState = TransitionCheckState.Init;\n private _controlValueAccessorChangeFn: (value: any) => void = () => {};\n private _validatorChangeFn = () => {};\n\n constructor(...args: unknown[]);\n\n constructor() {\n inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);\n const tabIndex = inject(new HostAttributeToken('tabindex'), {optional: true});\n this._options = this._options || checkboxDefaults;\n this.color = this._options.color || checkboxDefaults.color;\n this.tabIndex = tabIndex == null ? 0 : parseInt(tabIndex) || 0;\n this.id = this._uniqueId = inject(_IdGenerator).getId('mat-mdc-checkbox-');\n this.disabledInteractive = this._options?.disabledInteractive ?? false;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['required']) {\n this._validatorChangeFn();\n }\n }\n\n ngAfterViewInit() {\n this._syncIndeterminate(this.indeterminate);\n }\n\n /** Whether the checkbox is checked. */\n @Input({transform: booleanAttribute})\n get checked(): boolean {\n return this._checked;\n }\n set checked(value: boolean) {\n if (value != this.checked) {\n this._checked = value;\n this._changeDetectorRef.markForCheck();\n }\n }\n private _checked: boolean = false;\n\n /** Whether the checkbox is disabled. */\n @Input({transform: booleanAttribute})\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n if (value !== this.disabled) {\n this._disabled = value;\n this._changeDetectorRef.markForCheck();\n }\n }\n private _disabled: boolean = false;\n\n /**\n * Whether the checkbox is indeterminate. This is also known as \"mixed\" mode and can be used to\n * represent a checkbox with three states, e.g. a checkbox that represents a nested list of\n * checkable items. Note that whenever checkbox is manually clicked, indeterminate is immediately\n * set to false.\n */\n @Input({transform: booleanAttribute})\n get indeterminate(): boolean {\n return this._indeterminate();\n }\n set indeterminate(value: boolean) {\n const changed = value != this._indeterminate();\n this._indeterminate.set(value);\n\n if (changed) {\n if (value) {\n this._transitionCheckState(TransitionCheckState.Indeterminate);\n } else {\n this._transitionCheckState(\n this.checked ? TransitionCheckState.Checked : TransitionCheckState.Unchecked,\n );\n }\n this.indeterminateChange.emit(value);\n }\n\n this._syncIndeterminate(value);\n }\n private _indeterminate = signal(false);\n\n _isRippleDisabled() {\n return this.disableRipple || this.disabled;\n }\n\n /** Method being called whenever the label text changes. */\n _onLabelTextChange() {\n // Since the event of the `cdkObserveContent` directive runs outside of the zone, the checkbox\n // component will be only marked for check, but no actual change detection runs automatically.\n // Instead of going back into the zone in order to trigger a change detection which causes\n // *all* components to be checked (if explicitly marked or not using OnPush), we only trigger\n // an explicit change detection for the checkbox view and its children.\n this._changeDetectorRef.detectChanges();\n }\n\n // Implemented as part of ControlValueAccessor.\n writeValue(value: any) {\n this.checked = !!value;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn: (value: any) => void) {\n this._controlValueAccessorChangeFn = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn: any) {\n this._onTouched = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n // Implemented as a part of Validator.\n validate(control: AbstractControl<boolean>): ValidationErrors | null {\n return this.required && control.value !== true ? {'required': true} : null;\n }\n\n // Implemented as a part of Validator.\n registerOnValidatorChange(fn: () => void): void {\n this._validatorChangeFn = fn;\n }\n\n private _transitionCheckState(newState: TransitionCheckState) {\n let oldState = this._currentCheckState;\n let element = this._getAnimationTargetElement();\n\n if (oldState === newState || !element) {\n return;\n }\n if (this._currentAnimationClass) {\n element.classList.remove(this._currentAnimationClass);\n }\n\n this._currentAnimationClass = this._getAnimationClassForCheckStateTransition(\n oldState,\n newState,\n );\n this._currentCheckState = newState;\n\n if (this._currentAnimationClass.length > 0) {\n element.classList.add(this._currentAnimationClass);\n\n // Remove the animation class to avoid animation when the checkbox is moved between containers\n const animationClass = this._currentAnimationClass;\n\n this._ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n element!.classList.remove(animationClass);\n }, 1000);\n });\n }\n }\n\n private _emitChangeEvent() {\n this._controlValueAccessorChangeFn(this.checked);\n this.change.emit(this._createChangeEvent(this.checked));\n\n // Assigning the value again here is redundant, but we have to do it in case it was\n // changed inside the `change` listener which will cause the input to be out of sync.\n if (this._inputElement) {\n this._inputElement.nativeElement.checked = this.checked;\n }\n }\n\n /** Toggles the `checked` state of the checkbox. */\n toggle(): void {\n this.checked = !this.checked;\n this._controlValueAccessorChangeFn(this.checked);\n }\n\n protected _handleInputClick() {\n const clickAction = this._options?.clickAction;\n\n // If resetIndeterminate is false, and the current state is indeterminate, do nothing on click\n if (!this.disabled && clickAction !== 'noop') {\n // When user manually click on the checkbox, `indeterminate` is set to false.\n if (this.indeterminate && clickAction !== 'check') {\n Promise.resolve().then(() => {\n this._indeterminate.set(false);\n this.indeterminateChange.emit(false);\n });\n }\n\n this._checked = !this._checked;\n this._transitionCheckState(\n this._checked ? TransitionCheckState.Checked : TransitionCheckState.Unchecked,\n );\n\n // Emit our custom change event if the native input emitted one.\n // It is important to only emit it, if the native input triggered one, because\n // we don't want to trigger a change event, when the `checked` variable changes for example.\n this._emitChangeEvent();\n } else if (\n (this.disabled && this.disabledInteractive) ||\n (!this.disabled && clickAction === 'noop')\n ) {\n // Reset native input when clicked with noop. The native checkbox becomes checked after\n // click, reset it to be align with `checked` value of `mat-checkbox`.\n this._inputElement.nativeElement.checked = this.checked;\n this._inputElement.nativeElement.indeterminate = this.indeterminate;\n }\n }\n\n _onInteractionEvent(event: Event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation();\n }\n\n _onBlur() {\n // When a focused element becomes disabled, the browser *immediately* fires a blur event.\n // Angular does not expect events to be raised during change detection, so any state change\n // (such as a form control's 'ng-touched') will cause a changed-after-checked error.\n // See https://github.com/angular/angular/issues/17793. To work around this, we defer\n // telling the form control it has been touched until the next tick.\n Promise.resolve().then(() => {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n });\n }\n\n private _getAnimationClassForCheckStateTransition(\n oldState: TransitionCheckState,\n newState: TransitionCheckState,\n ): string {\n // Don't transition if animations are disabled.\n if (this._animationsDisabled) {\n return '';\n }\n\n switch (oldState) {\n case TransitionCheckState.Init:\n // Handle edge case where user interacts with checkbox that does not have [(ngModel)] or\n // [checked] bound to it.\n if (newState === TransitionCheckState.Checked) {\n return this._animationClasses.uncheckedToChecked;\n } else if (newState == TransitionCheckState.Indeterminate) {\n return this._checked\n ? this._animationClasses.checkedToIndeterminate\n : this._animationClasses.uncheckedToIndeterminate;\n }\n break;\n case TransitionCheckState.Unchecked:\n return newState === TransitionCheckState.Checked\n ? this._animationClasses.uncheckedToChecked\n : this._animationClasses.uncheckedToIndeterminate;\n case TransitionCheckState.Checked:\n return newState === TransitionCheckState.Unchecked\n ? this._animationClasses.checkedToUnchecked\n : this._animationClasses.checkedToIndeterminate;\n case TransitionCheckState.Indeterminate:\n return newState === TransitionCheckState.Checked\n ? this._animationClasses.indeterminateToChecked\n : this._animationClasses.indeterminateToUnchecked;\n }\n\n return '';\n }\n\n /**\n * Syncs the indeterminate value with the checkbox DOM node.\n *\n * We sync `indeterminate` directly on the DOM node, because in Ivy the check for whether a\n * property is supported on an element boils down to `if (propName in element)`. Domino's\n * HTMLInputElement doesn't have an `indeterminate` property so Ivy will warn during\n * server-side rendering.\n */\n private _syncIndeterminate(value: boolean) {\n const nativeCheckbox = this._inputElement;\n\n if (nativeCheckbox) {\n nativeCheckbox.nativeElement.indeterminate = value;\n }\n }\n\n _onInputClick() {\n this._handleInputClick();\n }\n\n _onTouchTargetClick() {\n this._handleInputClick();\n\n if (!this.disabled) {\n // Normally the input should be focused already, but if the click\n // comes from the touch target, then we might have to focus it ourselves.\n this._inputElement.nativeElement.focus();\n }\n }\n\n /**\n * Prevent click events that come from the `<label/>` element from bubbling. This prevents the\n * click handler on the host from triggering twice when clicking on the `<label/>` element. After\n * the click event on the `<label/>` propagates, the browsers dispatches click on the associated\n * `<input/>`. By preventing clicks on the label by bubbling, we ensure only one click event\n * bubbles when the label is clicked.\n */\n _preventBubblingFromLabel(event: MouseEvent) {\n if (!!event.target && this._labelElement.nativeElement.contains(event.target as HTMLElement)) {\n event.stopPropagation();\n }\n }\n}\n","<div mat-internal-form-field [labelPosition]=\"labelPosition\" (click)=\"_preventBubblingFromLabel($event)\">\n <div #checkbox class=\"mdc-checkbox\">\n <!-- Render this element first so the input is on top. -->\n <div\n class=\"mat-mdc-checkbox-touch-target\"\n (click)=\"_onTouchTargetClick()\"\n aria-hidden=\"true\"></div>\n <input #input\n type=\"checkbox\"\n class=\"mdc-checkbox__native-control\"\n [class.mdc-checkbox--selected]=\"checked\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.aria-checked]=\"indeterminate ? 'mixed' : null\"\n [attr.aria-controls]=\"ariaControls\"\n [attr.aria-disabled]=\"disabled && disabledInteractive ? true : null\"\n [attr.aria-expanded]=\"ariaExpanded\"\n [attr.aria-owns]=\"ariaOwns\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [checked]=\"checked\"\n [indeterminate]=\"indeterminate\"\n [disabled]=\"disabled && !disabledInteractive\"\n [id]=\"inputId\"\n [required]=\"required\"\n [tabIndex]=\"disabled && !disabledInteractive ? -1 : tabIndex\"\n (blur)=\"_onBlur()\"\n (click)=\"_onInputClick()\"\n (change)=\"_onInteractionEvent($event)\"/>\n <div class=\"mdc-checkbox__ripple\" aria-hidden=\"true\"></div>\n <div class=\"mdc-checkbox__background\" aria-hidden=\"true\">\n <svg class=\"mdc-checkbox__checkmark\"\n focusable=\"false\"\n viewBox=\"0 0 24 24\">\n <path class=\"mdc-checkbox__checkmark-path\"\n fill=\"none\"\n d=\"M1.73,12.91 8.1,19.28 22.79,4.59\"/>\n </svg>\n <div class=\"mdc-checkbox__mixedmark\"></div>\n </div>\n <div class=\"mat-mdc-checkbox-ripple mat-focus-indicator\"\n mat-ripple\n aria-hidden=\"true\"\n [matRippleTrigger]=\"checkbox\"\n [matRippleDisabled]=\"disableRipple || disabled\"\n [matRippleCentered]=\"true\"></div>\n </div>\n <!--\n Avoid putting a click handler on the <label/> to fix duplicate navigation stop on Talk Back\n (#14385). Putting a click handler on the <label/> caused this bug because the browser produced\n an unnecessary accessibility tree node.\n -->\n <label class=\"mdc-label\" #label [for]=\"inputId\">\n <ng-content></ng-content>\n </label>\n</div>\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 {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\nimport {MatCheckbox} from './checkbox';\n\n@NgModule({\n imports: [MatCheckbox],\n exports: [MatCheckbox, BidiModule],\n})\nexport class MatCheckboxModule {}\n"],"names":["checkboxDefaults","color","clickAction","disabledInteractive","MAT_CHECKBOX_DEFAULT_OPTIONS","InjectionToken","providedIn","factory","TransitionCheckState","MatCheckboxChange","source","checked","MatCheckbox","_elementRef","inject","ElementRef","_changeDetectorRef","ChangeDetectorRef","_ngZone","NgZone","_animationsDisabled","_options","optional","focus","_inputElement","nativeElement","_createChangeEvent","isChecked","event","_getAnimationTargetElement","_animationClasses","uncheckedToChecked","uncheckedToIndeterminate","checkedToUnchecked","checkedToIndeterminate","indeterminateToChecked","indeterminateToUnchecked","ariaLabel","ariaLabelledby","ariaDescribedby","ariaExpanded","ariaControls","ariaOwns","_uniqueId","id","inputId","required","labelPosition","name","change","EventEmitter","indeterminateChange","value","disableRipple","_labelElement","tabIndex","_onTouched","_currentAnimationClass","_currentCheckState","Init","_controlValueAccessorChangeFn","_validatorChangeFn","constructor","_CdkPrivateStyleLoader","load","_StructuralStylesLoader","HostAttributeToken","parseInt","_IdGenerator","getId","ngOnChanges","changes","ngAfterViewInit","_syncIndeterminate","indeterminate","_checked","markForCheck","disabled","_disabled","_indeterminate","changed","set","_transitionCheckState","Indeterminate","Checked","Unchecked","emit","signal","_isRippleDisabled","_onLabelTextChange","detectChanges","writeValue","registerOnChange","fn","registerOnTouched","setDisabledState","isDisabled","validate","control","registerOnValidatorChange","newState","oldState","element","classList","remove","_getAnimationClassForCheckStateTransition","length","add","animationClass","runOutsideAngular","setTimeout","_emitChangeEvent","toggle","_handleInputClick","Promise","resolve","then","_onInteractionEvent","stopPropagation","_onBlur","nativeCheckbox","_onInputClick","_onTouchTargetClick","_preventBubblingFromLabel","target","contains","deps","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","booleanAttribute","undefined","numberAttribute","outputs","host","properties","classAttribute","providers","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","NG_VALIDATORS","viewQueries","propertyName","first","predicate","descendants","exportAs","usesOnChanges","ngImport","template","styles","dependencies","kind","MatRipple","selector","inputs","_MatInternalFormField","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","args","imports","Input","alias","transform","Output","ViewChild","MatCheckboxModule","NgModule","ɵmod","ɵɵngDeclareNgModule","exports","BidiModule"],"mappings":"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"}
{"version":3,"file":"checkbox.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/checkbox/checkbox-config.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/checkbox/checkbox.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/checkbox/checkbox.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/checkbox/checkbox-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 */\nimport {InjectionToken} from '@angular/core';\nimport {ThemePalette} from '../core';\n\n/** Default `mat-checkbox` options that can be overridden. */\nexport interface MatCheckboxDefaultOptions {\n /**\n * Default theme color of the checkbox. This API is supported in M2 themes\n * only, it has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/checkbox/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n color?: ThemePalette;\n\n /** Default checkbox click action for checkboxes. */\n clickAction?: MatCheckboxClickAction;\n\n /** Whether disabled checkboxes should be interactive. */\n disabledInteractive?: boolean;\n}\n\nexport const checkboxDefaults: MatCheckboxDefaultOptions = {\n color: 'accent',\n clickAction: 'check-indeterminate',\n disabledInteractive: false,\n};\n\n/** Injection token to be used to override the default options for `mat-checkbox`. */\nexport const MAT_CHECKBOX_DEFAULT_OPTIONS = new InjectionToken<MatCheckboxDefaultOptions>(\n 'mat-checkbox-default-options',\n {\n providedIn: 'root',\n factory: () => checkboxDefaults,\n },\n);\n\n/**\n * Checkbox click action when user click on input element.\n * noop: Do not toggle checked or indeterminate.\n * check: Only toggle checked status, ignore indeterminate.\n * check-indeterminate: Toggle checked status, set indeterminate to false. Default behavior.\n * undefined: Same as `check-indeterminate`.\n */\nexport type MatCheckboxClickAction = 'noop' | 'check' | 'check-indeterminate' | undefined;\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 {_IdGenerator, FocusableOption} from '@angular/cdk/a11y';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n booleanAttribute,\n forwardRef,\n numberAttribute,\n inject,\n HostAttributeToken,\n signal,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport {\n MatRipple,\n _MatInternalFormField,\n _StructuralStylesLoader,\n _animationsDisabled,\n} from '../core';\nimport {\n checkboxDefaults,\n MAT_CHECKBOX_DEFAULT_OPTIONS,\n MatCheckboxDefaultOptions,\n} from './checkbox-config';\nimport {_CdkPrivateStyleLoader} from '@angular/cdk/private';\n\n/**\n * Represents the different states that require custom transitions between them.\n * @docs-private\n */\nexport enum TransitionCheckState {\n /** The initial state of the component before any user interaction. */\n Init,\n /** The state representing the component when it's becoming checked. */\n Checked,\n /** The state representing the component when it's becoming unchecked. */\n Unchecked,\n /** The state representing the component when it's becoming indeterminate. */\n Indeterminate,\n}\n\n/** Change event object emitted by checkbox. */\nexport class MatCheckboxChange {\n /** The source checkbox of the event. */\n source!: MatCheckbox;\n /** The new `checked` value of the checkbox. */\n checked!: boolean;\n}\n\n@Component({\n selector: 'mat-checkbox',\n templateUrl: 'checkbox.html',\n styleUrl: 'checkbox.css',\n host: {\n 'class': 'mat-mdc-checkbox',\n '[attr.tabindex]': 'null',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[class._mat-animation-noopable]': '_animationsDisabled',\n '[class.mdc-checkbox--disabled]': 'disabled',\n '[id]': 'id',\n // Add classes that users can use to more easily target disabled or checked checkboxes.\n '[class.mat-mdc-checkbox-disabled]': 'disabled',\n '[class.mat-mdc-checkbox-checked]': 'checked',\n '[class.mat-mdc-checkbox-disabled-interactive]': 'disabledInteractive',\n '[class]': 'color ? \"mat-\" + color : \"mat-accent\"',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatCheckbox),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: MatCheckbox,\n multi: true,\n },\n ],\n exportAs: 'matCheckbox',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatRipple, _MatInternalFormField],\n})\nexport class MatCheckbox\n implements AfterViewInit, OnChanges, ControlValueAccessor, Validator, FocusableOption\n{\n _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _changeDetectorRef = inject(ChangeDetectorRef);\n private _ngZone = inject(NgZone);\n protected _animationsDisabled = _animationsDisabled();\n private _options = inject<MatCheckboxDefaultOptions>(MAT_CHECKBOX_DEFAULT_OPTIONS, {\n optional: true,\n });\n\n /** Focuses the checkbox. */\n focus() {\n this._inputElement.nativeElement.focus();\n }\n\n /** Creates the change event that will be emitted by the checkbox. */\n protected _createChangeEvent(isChecked: boolean) {\n const event = new MatCheckboxChange();\n event.source = this;\n event.checked = isChecked;\n return event;\n }\n\n /** Gets the element on which to add the animation CSS classes. */\n protected _getAnimationTargetElement() {\n return this._inputElement?.nativeElement;\n }\n\n /** CSS classes to add when transitioning between the different checkbox states. */\n protected _animationClasses = {\n uncheckedToChecked: 'mdc-checkbox--anim-unchecked-checked',\n uncheckedToIndeterminate: 'mdc-checkbox--anim-unchecked-indeterminate',\n checkedToUnchecked: 'mdc-checkbox--anim-checked-unchecked',\n checkedToIndeterminate: 'mdc-checkbox--anim-checked-indeterminate',\n indeterminateToChecked: 'mdc-checkbox--anim-indeterminate-checked',\n indeterminateToUnchecked: 'mdc-checkbox--anim-indeterminate-unchecked',\n };\n\n /**\n * Attached to the aria-label attribute of the host element. In most cases, aria-labelledby will\n * take precedence so this may be omitted.\n */\n @Input('aria-label') ariaLabel: string = '';\n\n /**\n * Users can specify the `aria-labelledby` attribute which will be forwarded to the input element\n */\n @Input('aria-labelledby') ariaLabelledby: string | null = null;\n\n /** The 'aria-describedby' attribute is read after the element's label and field type. */\n @Input('aria-describedby') ariaDescribedby!: string;\n\n /**\n * Users can specify the `aria-expanded` attribute which will be forwarded to the input element\n */\n @Input({alias: 'aria-expanded', transform: booleanAttribute}) ariaExpanded!: boolean;\n\n /**\n * Users can specify the `aria-controls` attribute which will be forwarded to the input element\n */\n @Input('aria-controls') ariaControls!: string;\n\n /** Users can specify the `aria-owns` attribute which will be forwarded to the input element */\n @Input('aria-owns') ariaOwns!: string;\n\n private _uniqueId: string;\n\n /** A unique id for the checkbox input. If none is supplied, it will be auto-generated. */\n @Input() id: string;\n\n /** Returns the unique id for the visual hidden input. */\n get inputId(): string {\n return `${this.id || this._uniqueId}-input`;\n }\n\n /** Whether the checkbox is required. */\n @Input({transform: booleanAttribute}) required: boolean = false;\n\n /** Whether the label should appear after or before the checkbox. Defaults to 'after' */\n @Input() labelPosition: 'before' | 'after' = 'after';\n\n /** Name value will be applied to the input element if present */\n @Input() name: string | null = null;\n\n /** Event emitted when the checkbox's `checked` value changes. */\n @Output() readonly change = new EventEmitter<MatCheckboxChange>();\n\n /** Event emitted when the checkbox's `indeterminate` value changes. */\n @Output() readonly indeterminateChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** The value attribute of the native input element */\n @Input() value!: string;\n\n /** Whether the checkbox has a ripple. */\n @Input({transform: booleanAttribute}) disableRipple: boolean = false;\n\n /** The native `<input type=\"checkbox\">` element */\n @ViewChild('input') _inputElement!: ElementRef<HTMLInputElement>;\n\n /** The native `<label>` element */\n @ViewChild('label') _labelElement!: ElementRef<HTMLInputElement>;\n\n /** Tabindex for the checkbox. */\n @Input({transform: (value: unknown) => (value == null ? undefined : numberAttribute(value))})\n tabIndex: number;\n\n // TODO(crisbeto): this should be a ThemePalette, but some internal apps were abusing\n // the lack of type checking previously and assigning random strings.\n /**\n * Theme color of the checkbox. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/checkbox/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input() color: string | undefined;\n\n /** Whether the checkbox should remain interactive when it is disabled. */\n @Input({transform: booleanAttribute})\n disabledInteractive: boolean;\n\n /**\n * Called when the checkbox is blurred. Needed to properly implement ControlValueAccessor.\n * @docs-private\n */\n _onTouched: () => any = () => {};\n\n private _currentAnimationClass: string = '';\n private _currentCheckState: TransitionCheckState = TransitionCheckState.Init;\n private _controlValueAccessorChangeFn: (value: any) => void = () => {};\n private _validatorChangeFn = () => {};\n\n constructor(...args: unknown[]);\n\n constructor() {\n inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);\n const tabIndex = inject(new HostAttributeToken('tabindex'), {optional: true});\n this._options = this._options || checkboxDefaults;\n this.color = this._options.color || checkboxDefaults.color;\n this.tabIndex = tabIndex == null ? 0 : parseInt(tabIndex) || 0;\n this.id = this._uniqueId = inject(_IdGenerator).getId('mat-mdc-checkbox-');\n this.disabledInteractive = this._options?.disabledInteractive ?? false;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['required']) {\n this._validatorChangeFn();\n }\n }\n\n ngAfterViewInit() {\n this._syncIndeterminate(this.indeterminate);\n }\n\n /** Whether the checkbox is checked. */\n @Input({transform: booleanAttribute})\n get checked(): boolean {\n return this._checked;\n }\n set checked(value: boolean) {\n if (value != this.checked) {\n this._checked = value;\n this._changeDetectorRef.markForCheck();\n }\n }\n private _checked: boolean = false;\n\n /** Whether the checkbox is disabled. */\n @Input({transform: booleanAttribute})\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n if (value !== this.disabled) {\n this._disabled = value;\n this._changeDetectorRef.markForCheck();\n }\n }\n private _disabled: boolean = false;\n\n /**\n * Whether the checkbox is indeterminate. This is also known as \"mixed\" mode and can be used to\n * represent a checkbox with three states, e.g. a checkbox that represents a nested list of\n * checkable items. Note that whenever checkbox is manually clicked, indeterminate is immediately\n * set to false.\n */\n @Input({transform: booleanAttribute})\n get indeterminate(): boolean {\n return this._indeterminate();\n }\n set indeterminate(value: boolean) {\n const changed = value != this._indeterminate();\n this._indeterminate.set(value);\n\n if (changed) {\n if (value) {\n this._transitionCheckState(TransitionCheckState.Indeterminate);\n } else {\n this._transitionCheckState(\n this.checked ? TransitionCheckState.Checked : TransitionCheckState.Unchecked,\n );\n }\n this.indeterminateChange.emit(value);\n }\n\n this._syncIndeterminate(value);\n }\n private _indeterminate = signal(false);\n\n _isRippleDisabled() {\n return this.disableRipple || this.disabled;\n }\n\n /** Method being called whenever the label text changes. */\n _onLabelTextChange() {\n // Since the event of the `cdkObserveContent` directive runs outside of the zone, the checkbox\n // component will be only marked for check, but no actual change detection runs automatically.\n // Instead of going back into the zone in order to trigger a change detection which causes\n // *all* components to be checked (if explicitly marked or not using OnPush), we only trigger\n // an explicit change detection for the checkbox view and its children.\n this._changeDetectorRef.detectChanges();\n }\n\n // Implemented as part of ControlValueAccessor.\n writeValue(value: any) {\n this.checked = !!value;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn: (value: any) => void) {\n this._controlValueAccessorChangeFn = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn: any) {\n this._onTouched = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n // Implemented as a part of Validator.\n validate(control: AbstractControl<boolean>): ValidationErrors | null {\n return this.required && control.value !== true ? {'required': true} : null;\n }\n\n // Implemented as a part of Validator.\n registerOnValidatorChange(fn: () => void): void {\n this._validatorChangeFn = fn;\n }\n\n private _transitionCheckState(newState: TransitionCheckState) {\n let oldState = this._currentCheckState;\n let element = this._getAnimationTargetElement();\n\n if (oldState === newState || !element) {\n return;\n }\n if (this._currentAnimationClass) {\n element.classList.remove(this._currentAnimationClass);\n }\n\n this._currentAnimationClass = this._getAnimationClassForCheckStateTransition(\n oldState,\n newState,\n );\n this._currentCheckState = newState;\n\n if (this._currentAnimationClass.length > 0) {\n element.classList.add(this._currentAnimationClass);\n\n // Remove the animation class to avoid animation when the checkbox is moved between containers\n const animationClass = this._currentAnimationClass;\n\n this._ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n element!.classList.remove(animationClass);\n }, 1000);\n });\n }\n }\n\n private _emitChangeEvent() {\n this._controlValueAccessorChangeFn(this.checked);\n this.change.emit(this._createChangeEvent(this.checked));\n\n // Assigning the value again here is redundant, but we have to do it in case it was\n // changed inside the `change` listener which will cause the input to be out of sync.\n if (this._inputElement) {\n this._inputElement.nativeElement.checked = this.checked;\n }\n }\n\n /** Toggles the `checked` state of the checkbox. */\n toggle(): void {\n this.checked = !this.checked;\n this._controlValueAccessorChangeFn(this.checked);\n }\n\n protected _handleInputClick() {\n const clickAction = this._options?.clickAction;\n\n // If resetIndeterminate is false, and the current state is indeterminate, do nothing on click\n if (!this.disabled && clickAction !== 'noop') {\n // When user manually click on the checkbox, `indeterminate` is set to false.\n if (this.indeterminate && clickAction !== 'check') {\n Promise.resolve().then(() => {\n this._indeterminate.set(false);\n this.indeterminateChange.emit(false);\n });\n }\n\n this._checked = !this._checked;\n this._transitionCheckState(\n this._checked ? TransitionCheckState.Checked : TransitionCheckState.Unchecked,\n );\n\n // Emit our custom change event if the native input emitted one.\n // It is important to only emit it, if the native input triggered one, because\n // we don't want to trigger a change event, when the `checked` variable changes for example.\n this._emitChangeEvent();\n } else if (\n (this.disabled && this.disabledInteractive) ||\n (!this.disabled && clickAction === 'noop')\n ) {\n // Reset native input when clicked with noop. The native checkbox becomes checked after\n // click, reset it to be align with `checked` value of `mat-checkbox`.\n this._inputElement.nativeElement.checked = this.checked;\n this._inputElement.nativeElement.indeterminate = this.indeterminate;\n }\n }\n\n _onInteractionEvent(event: Event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation();\n }\n\n _onBlur() {\n // When a focused element becomes disabled, the browser *immediately* fires a blur event.\n // Angular does not expect events to be raised during change detection, so any state change\n // (such as a form control's 'ng-touched') will cause a changed-after-checked error.\n // See https://github.com/angular/angular/issues/17793. To work around this, we defer\n // telling the form control it has been touched until the next tick.\n Promise.resolve().then(() => {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n });\n }\n\n private _getAnimationClassForCheckStateTransition(\n oldState: TransitionCheckState,\n newState: TransitionCheckState,\n ): string {\n // Don't transition if animations are disabled.\n if (this._animationsDisabled) {\n return '';\n }\n\n switch (oldState) {\n case TransitionCheckState.Init:\n // Handle edge case where user interacts with checkbox that does not have [(ngModel)] or\n // [checked] bound to it.\n if (newState === TransitionCheckState.Checked) {\n return this._animationClasses.uncheckedToChecked;\n } else if (newState == TransitionCheckState.Indeterminate) {\n return this._checked\n ? this._animationClasses.checkedToIndeterminate\n : this._animationClasses.uncheckedToIndeterminate;\n }\n break;\n case TransitionCheckState.Unchecked:\n return newState === TransitionCheckState.Checked\n ? this._animationClasses.uncheckedToChecked\n : this._animationClasses.uncheckedToIndeterminate;\n case TransitionCheckState.Checked:\n return newState === TransitionCheckState.Unchecked\n ? this._animationClasses.checkedToUnchecked\n : this._animationClasses.checkedToIndeterminate;\n case TransitionCheckState.Indeterminate:\n return newState === TransitionCheckState.Checked\n ? this._animationClasses.indeterminateToChecked\n : this._animationClasses.indeterminateToUnchecked;\n }\n\n return '';\n }\n\n /**\n * Syncs the indeterminate value with the checkbox DOM node.\n *\n * We sync `indeterminate` directly on the DOM node, because in Ivy the check for whether a\n * property is supported on an element boils down to `if (propName in element)`. Domino's\n * HTMLInputElement doesn't have an `indeterminate` property so Ivy will warn during\n * server-side rendering.\n */\n private _syncIndeterminate(value: boolean) {\n const nativeCheckbox = this._inputElement;\n\n if (nativeCheckbox) {\n nativeCheckbox.nativeElement.indeterminate = value;\n }\n }\n\n _onInputClick() {\n this._handleInputClick();\n }\n\n _onTouchTargetClick() {\n this._handleInputClick();\n\n if (!this.disabled) {\n // Normally the input should be focused already, but if the click\n // comes from the touch target, then we might have to focus it ourselves.\n this._inputElement.nativeElement.focus();\n }\n }\n\n /**\n * Prevent click events that come from the `<label/>` element from bubbling. This prevents the\n * click handler on the host from triggering twice when clicking on the `<label/>` element. After\n * the click event on the `<label/>` propagates, the browsers dispatches click on the associated\n * `<input/>`. By preventing clicks on the label by bubbling, we ensure only one click event\n * bubbles when the label is clicked.\n */\n _preventBubblingFromLabel(event: MouseEvent) {\n if (!!event.target && this._labelElement.nativeElement.contains(event.target as HTMLElement)) {\n event.stopPropagation();\n }\n }\n}\n","<div mat-internal-form-field [labelPosition]=\"labelPosition\" (click)=\"_preventBubblingFromLabel($event)\">\n <div #checkbox class=\"mdc-checkbox\">\n <!-- Render this element first so the input is on top. -->\n <div\n class=\"mat-mdc-checkbox-touch-target\"\n (click)=\"_onTouchTargetClick()\"\n aria-hidden=\"true\"></div>\n <input #input\n type=\"checkbox\"\n class=\"mdc-checkbox__native-control\"\n [class.mdc-checkbox--selected]=\"checked\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.aria-checked]=\"indeterminate ? 'mixed' : null\"\n [attr.aria-controls]=\"ariaControls\"\n [attr.aria-disabled]=\"disabled && disabledInteractive ? true : null\"\n [attr.aria-expanded]=\"ariaExpanded\"\n [attr.aria-owns]=\"ariaOwns\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [checked]=\"checked\"\n [indeterminate]=\"indeterminate\"\n [disabled]=\"disabled && !disabledInteractive\"\n [id]=\"inputId\"\n [required]=\"required\"\n [tabIndex]=\"disabled && !disabledInteractive ? -1 : tabIndex\"\n (blur)=\"_onBlur()\"\n (click)=\"_onInputClick()\"\n (change)=\"_onInteractionEvent($event)\"/>\n <div class=\"mdc-checkbox__ripple\" aria-hidden=\"true\"></div>\n <div class=\"mdc-checkbox__background\" aria-hidden=\"true\">\n <svg class=\"mdc-checkbox__checkmark\"\n focusable=\"false\"\n viewBox=\"0 0 24 24\">\n <path class=\"mdc-checkbox__checkmark-path\"\n fill=\"none\"\n d=\"M1.73,12.91 8.1,19.28 22.79,4.59\"/>\n </svg>\n <div class=\"mdc-checkbox__mixedmark\"></div>\n </div>\n <div class=\"mat-mdc-checkbox-ripple mat-focus-indicator\"\n mat-ripple\n aria-hidden=\"true\"\n [matRippleTrigger]=\"checkbox\"\n [matRippleDisabled]=\"disableRipple || disabled\"\n [matRippleCentered]=\"true\"></div>\n </div>\n <!--\n Avoid putting a click handler on the <label/> to fix duplicate navigation stop on Talk Back\n (#14385). Putting a click handler on the <label/> caused this bug because the browser produced\n an unnecessary accessibility tree node.\n -->\n <label class=\"mdc-label\" #label [for]=\"inputId\">\n <ng-content></ng-content>\n </label>\n</div>\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 {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\nimport {MatCheckbox} from './checkbox';\n\n@NgModule({\n imports: [MatCheckbox],\n exports: [MatCheckbox, BidiModule],\n})\nexport class MatCheckboxModule {}\n"],"names":["checkboxDefaults","color","clickAction","disabledInteractive","MAT_CHECKBOX_DEFAULT_OPTIONS","InjectionToken","providedIn","factory","TransitionCheckState","MatCheckboxChange","source","checked","MatCheckbox","_elementRef","inject","ElementRef","_changeDetectorRef","ChangeDetectorRef","_ngZone","NgZone","_animationsDisabled","_options","optional","focus","_inputElement","nativeElement","_createChangeEvent","isChecked","event","_getAnimationTargetElement","_animationClasses","uncheckedToChecked","uncheckedToIndeterminate","checkedToUnchecked","checkedToIndeterminate","indeterminateToChecked","indeterminateToUnchecked","ariaLabel","ariaLabelledby","ariaDescribedby","ariaExpanded","ariaControls","ariaOwns","_uniqueId","id","inputId","required","labelPosition","name","change","EventEmitter","indeterminateChange","value","disableRipple","_labelElement","tabIndex","_onTouched","_currentAnimationClass","_currentCheckState","Init","_controlValueAccessorChangeFn","_validatorChangeFn","constructor","_CdkPrivateStyleLoader","load","_StructuralStylesLoader","HostAttributeToken","parseInt","_IdGenerator","getId","ngOnChanges","changes","ngAfterViewInit","_syncIndeterminate","indeterminate","_checked","markForCheck","disabled","_disabled","_indeterminate","changed","set","_transitionCheckState","Indeterminate","Checked","Unchecked","emit","signal","_isRippleDisabled","_onLabelTextChange","detectChanges","writeValue","registerOnChange","fn","registerOnTouched","setDisabledState","isDisabled","validate","control","registerOnValidatorChange","newState","oldState","element","classList","remove","_getAnimationClassForCheckStateTransition","length","add","animationClass","runOutsideAngular","setTimeout","_emitChangeEvent","toggle","_handleInputClick","Promise","resolve","then","_onInteractionEvent","stopPropagation","_onBlur","nativeCheckbox","_onInputClick","_onTouchTargetClick","_preventBubblingFromLabel","target","contains","deps","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","booleanAttribute","undefined","numberAttribute","outputs","host","properties","classAttribute","providers","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","NG_VALIDATORS","viewQueries","propertyName","first","predicate","descendants","exportAs","usesOnChanges","ngImport","template","styles","dependencies","kind","MatRipple","selector","inputs","_MatInternalFormField","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","args","imports","Input","alias","transform","Output","ViewChild","MatCheckboxModule","NgModule","ɵmod","ɵɵngDeclareNgModule","exports","BidiModule"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"chips-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-avatar-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-edit-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-remove-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-input-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-option-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-listbox-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-edit-input-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-row-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-grid-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-set-harness.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\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {ChipAvatarHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with a standard Material chip avatar in tests. */\nexport class MatChipAvatarHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-chip-avatar';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a chip avatar with specific\n * attributes.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatChipAvatarHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ChipAvatarHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\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 ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {ChipEditHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with a standard Material chip edit button in tests. */\nexport class MatChipEditHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-chip-edit';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a chip edit with specific\n * attributes.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatChipEditHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ChipEditHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /** Clicks the edit button. */\n async click(): Promise<void> {\n return (await this.host()).click();\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 ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {ChipRemoveHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with a standard Material chip remove button in tests. */\nexport class MatChipRemoveHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-chip-remove';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a chip remove with specific\n * attributes.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatChipRemoveHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ChipRemoveHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /** Clicks the remove button. */\n async click(): Promise<void> {\n return (await this.host()).click();\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 ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessPredicate,\n TestKey,\n} from '@angular/cdk/testing';\nimport {MatChipAvatarHarness} from './chip-avatar-harness';\nimport {\n ChipAvatarHarnessFilters,\n ChipEditHarnessFilters,\n ChipHarnessFilters,\n ChipRemoveHarnessFilters,\n} from './chip-harness-filters';\nimport {MatChipEditHarness} from './chip-edit-harness';\nimport {MatChipRemoveHarness} from './chip-remove-harness';\n\n/** Harness for interacting with a mat-chip in tests. */\nexport class MatChipHarness extends ContentContainerComponentHarness {\n protected _primaryAction = this.locatorFor('.mdc-evolution-chip__action--primary');\n\n static hostSelector = '.mat-mdc-basic-chip, .mat-mdc-chip';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a chip with specific attributes.\n * @param options Options for narrowing the search.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatChipHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ChipHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('text', options.text, (harness, label) => {\n return HarnessPredicate.stringMatches(harness.getText(), label);\n })\n .addOption('disabled', options.disabled, async (harness, disabled) => {\n return (await harness.isDisabled()) === disabled;\n });\n }\n\n /** Gets a promise for the text content the option. */\n async getText(): Promise<string> {\n return (await this.host()).text({\n exclude: '.mat-mdc-chip-avatar, .mat-mdc-chip-trailing-icon, .mat-icon',\n });\n }\n\n /** Whether the chip is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).hasClass('mat-mdc-chip-disabled');\n }\n\n /** Delete a chip from the set. */\n async remove(): Promise<void> {\n const hostEl = await this.host();\n await hostEl.sendKeys(TestKey.DELETE);\n }\n\n /**\n * Gets the edit button inside of a chip.\n * @param filter Optionally filters which chips are included.\n */\n async geEditButton(filter: ChipEditHarnessFilters = {}): Promise<MatChipEditHarness> {\n return this.locatorFor(MatChipEditHarness.with(filter))();\n }\n\n /**\n * Gets the remove button inside of a chip.\n * @param filter Optionally filters which chips are included.\n */\n async getRemoveButton(filter: ChipRemoveHarnessFilters = {}): Promise<MatChipRemoveHarness> {\n return this.locatorFor(MatChipRemoveHarness.with(filter))();\n }\n\n /**\n * Gets the avatar inside a chip.\n * @param filter Optionally filters which avatars are included.\n */\n async getAvatar(filter: ChipAvatarHarnessFilters = {}): Promise<MatChipAvatarHarness | null> {\n return this.locatorForOptional(MatChipAvatarHarness.with(filter))();\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 ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n TestKey,\n} from '@angular/cdk/testing';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {ChipInputHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with a grid's chip input in tests. */\nexport class MatChipInputHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-chip-input';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a chip input with specific\n * attributes.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatChipInputHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ChipInputHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('value', options.value, async (harness, value) => {\n return (await harness.getValue()) === value;\n })\n .addOption('placeholder', options.placeholder, async (harness, placeholder) => {\n return (await harness.getPlaceholder()) === placeholder;\n })\n .addOption('disabled', options.disabled, async (harness, disabled) => {\n return (await harness.isDisabled()) === disabled;\n });\n }\n\n /** Whether the input is disabled. */\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n const disabled = await host.getAttribute('disabled');\n\n if (disabled !== null) {\n return coerceBooleanProperty(disabled);\n }\n\n return (await host.getAttribute('aria-disabled')) === 'true';\n }\n\n /** Whether the input is required. */\n async isRequired(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('required');\n }\n\n /** Gets the value of the input. */\n async getValue(): Promise<string> {\n // The \"value\" property of the native input is never undefined.\n return await (await this.host()).getProperty<string>('value');\n }\n\n /** Gets the placeholder of the input. */\n async getPlaceholder(): Promise<string> {\n return await (await this.host()).getProperty<string>('placeholder');\n }\n\n /**\n * Focuses the input and returns a promise that indicates when the\n * action is complete.\n */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /**\n * Blurs the input and returns a promise that indicates when the\n * action is complete.\n */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the input is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /**\n * Sets the value of the input. The value will be set by simulating\n * keypresses that correspond to the given value.\n */\n async setValue(newValue: string): Promise<void> {\n const inputEl = await this.host();\n await inputEl.clear();\n\n // We don't want to send keys for the value if the value is an empty\n // string in order to clear the value. Sending keys with an empty string\n // still results in unnecessary focus events.\n if (newValue) {\n await inputEl.sendKeys(newValue);\n }\n }\n\n /** Sends a chip separator key to the input element. */\n async sendSeparatorKey(key: TestKey | string): Promise<void> {\n const inputEl = await this.host();\n return inputEl.sendKeys(key);\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 {ComponentHarnessConstructor, HarnessPredicate} from '@angular/cdk/testing';\nimport {MatChipHarness} from './chip-harness';\nimport {ChipOptionHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with a mat-chip-option in tests. */\nexport class MatChipOptionHarness extends MatChipHarness {\n static override hostSelector = '.mat-mdc-chip-option';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a chip option with specific\n * attributes.\n * @param options Options for narrowing the search.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static override with<T extends MatChipHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ChipOptionHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(MatChipOptionHarness, options)\n .addOption('text', options.text, (harness, label) =>\n HarnessPredicate.stringMatches(harness.getText(), label),\n )\n .addOption(\n 'selected',\n options.selected,\n async (harness, selected) => (await harness.isSelected()) === selected,\n ) as unknown as HarnessPredicate<T>;\n }\n\n /** Whether the chip is selected. */\n async isSelected(): Promise<boolean> {\n return (await this.host()).hasClass('mat-mdc-chip-selected');\n }\n\n /** Selects the given chip. Only applies if it's selectable. */\n async select(): Promise<void> {\n if (!(await this.isSelected())) {\n await this.toggle();\n }\n }\n\n /** Deselects the given chip. Only applies if it's selectable. */\n async deselect(): Promise<void> {\n if (await this.isSelected()) {\n await this.toggle();\n }\n }\n\n /** Toggles the selected state of the given chip. */\n async toggle(): Promise<void> {\n return (await this._primaryAction()).click();\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 ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n parallel,\n} from '@angular/cdk/testing';\nimport {ChipListboxHarnessFilters, ChipOptionHarnessFilters} from './chip-harness-filters';\nimport {MatChipOptionHarness} from './chip-option-harness';\n\n/** Harness for interacting with a mat-chip-listbox in tests. */\nexport class MatChipListboxHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-chip-listbox';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a chip listbox with specific\n * attributes.\n * @param options Options for narrowing the search.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatChipListboxHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ChipListboxHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options).addOption(\n 'disabled',\n options.disabled,\n async (harness, disabled) => {\n return (await harness.isDisabled()) === disabled;\n },\n );\n }\n\n /** Gets whether the chip listbox is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-disabled')) === 'true';\n }\n\n /** Gets whether the chip listbox is required. */\n async isRequired(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-required')) === 'true';\n }\n\n /** Gets whether the chip listbox is in multi selection mode. */\n async isMultiple(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-multiselectable')) === 'true';\n }\n\n /** Gets whether the orientation of the chip list. */\n async getOrientation(): Promise<'horizontal' | 'vertical'> {\n const orientation = await (await this.host()).getAttribute('aria-orientation');\n return orientation === 'vertical' ? 'vertical' : 'horizontal';\n }\n\n /**\n * Gets the list of chips inside the chip list.\n * @param filter Optionally filters which chips are included.\n */\n async getChips(filter: ChipOptionHarnessFilters = {}): Promise<MatChipOptionHarness[]> {\n return this.locatorForAll(MatChipOptionHarness.with(filter))();\n }\n\n /**\n * Selects a chip inside the chip list.\n * @param filter An optional filter to apply to the child chips.\n * All the chips matching the filter will be selected.\n */\n async selectChips(filter: ChipOptionHarnessFilters = {}): Promise<void> {\n const chips = await this.getChips(filter);\n if (!chips.length) {\n throw Error(`Cannot find chip matching filter ${JSON.stringify(filter)}`);\n }\n await parallel(() => chips.map(chip => chip.select()));\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 ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {ChipEditInputHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with an editable chip's input in tests. */\nexport class MatChipEditInputHarness extends ComponentHarness {\n static hostSelector = '.mat-chip-edit-input';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a chip edit input with specific\n * attributes.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatChipEditInputHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ChipEditInputHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /** Sets the value of the input. */\n async setValue(value: string): Promise<void> {\n const host = await this.host();\n return host.setContenteditableValue(value);\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 {TestKey} from '@angular/cdk/testing';\nimport {MatChipEditInputHarness} from './chip-edit-input-harness';\nimport {MatChipHarness} from './chip-harness';\nimport {ChipEditInputHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with a mat-chip-row in tests. */\nexport class MatChipRowHarness extends MatChipHarness {\n static override hostSelector = '.mat-mdc-chip-row';\n\n /** Whether the chip is editable. */\n async isEditable(): Promise<boolean> {\n return (await this.host()).hasClass('mat-mdc-chip-editable');\n }\n\n /** Whether the chip is currently being edited. */\n async isEditing(): Promise<boolean> {\n return (await this.host()).hasClass('mat-mdc-chip-editing');\n }\n\n /** Sets the chip row into an editing state, if it is editable. */\n async startEditing(): Promise<void> {\n if (!(await this.isEditable())) {\n throw new Error('Cannot begin editing a chip that is not editable.');\n }\n return (await this.host()).dispatchEvent('dblclick');\n }\n\n /** Stops editing the chip, if it was in the editing state. */\n async finishEditing(): Promise<void> {\n if (await this.isEditing()) {\n await (await this.host()).sendKeys(TestKey.ENTER);\n }\n }\n\n /** Gets the edit input inside the chip row. */\n async getEditInput(filter: ChipEditInputHarnessFilters = {}): Promise<MatChipEditInputHarness> {\n return this.locatorFor(MatChipEditInputHarness.with(filter))();\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 ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {\n ChipGridHarnessFilters,\n ChipInputHarnessFilters,\n ChipRowHarnessFilters,\n} from './chip-harness-filters';\nimport {MatChipInputHarness} from './chip-input-harness';\nimport {MatChipRowHarness} from './chip-row-harness';\n\n/** Harness for interacting with a mat-chip-grid in tests. */\nexport class MatChipGridHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-chip-grid';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a chip grid with specific attributes.\n * @param options Options for filtering which chip grid instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatChipGridHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ChipGridHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options).addOption(\n 'disabled',\n options.disabled,\n async (harness, disabled) => {\n return (await harness.isDisabled()) === disabled;\n },\n );\n }\n\n /** Gets whether the chip grid is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-disabled')) === 'true';\n }\n\n /** Gets whether the chip grid is required. */\n async isRequired(): Promise<boolean> {\n return await (await this.host()).hasClass('mat-mdc-chip-list-required');\n }\n\n /** Gets whether the chip grid is invalid. */\n async isInvalid(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-invalid')) === 'true';\n }\n\n /** Gets promise of the harnesses for the chip rows. */\n getRows(filter: ChipRowHarnessFilters = {}): Promise<MatChipRowHarness[]> {\n return this.locatorForAll(MatChipRowHarness.with(filter))();\n }\n\n /** Gets promise of the chip text input harness. */\n getInput(filter: ChipInputHarnessFilters = {}): Promise<MatChipInputHarness | null> {\n return this.locatorFor(MatChipInputHarness.with(filter))();\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 ComponentHarnessConstructor,\n ComponentHarness,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {MatChipHarness} from './chip-harness';\nimport {ChipHarnessFilters, ChipSetHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with a mat-chip-set in tests. */\nexport class MatChipSetHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-chip-set';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a chip set with specific attributes.\n * @param options Options for filtering which chip set instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatChipSetHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ChipSetHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /** Gets promise of the harnesses for the chips. */\n async getChips(filter: ChipHarnessFilters = {}): Promise<MatChipHarness[]> {\n return await this.locatorForAll(MatChipHarness.with(filter))();\n }\n}\n"],"names":["MatChipAvatarHarness","ComponentHarness","hostSelector","with","options","HarnessPredicate","MatChipEditHarness","click","host","MatChipRemoveHarness","MatChipHarness","ContentContainerComponentHarness","_primaryAction","locatorFor","addOption","text","harness","label","stringMatches","getText","disabled","isDisabled","exclude","hasClass","remove","hostEl","sendKeys","TestKey","DELETE","geEditButton","filter","getRemoveButton","getAvatar","locatorForOptional","MatChipInputHarness","value","getValue","placeholder","getPlaceholder","getAttribute","coerceBooleanProperty","isRequired","getProperty","focus","blur","isFocused","setValue","newValue","inputEl","clear","sendSeparatorKey","key","MatChipOptionHarness","selected","isSelected","select","toggle","deselect","MatChipListboxHarness","isMultiple","getOrientation","orientation","getChips","locatorForAll","selectChips","chips","length","Error","JSON","stringify","parallel","map","chip","MatChipEditInputHarness","setContenteditableValue","MatChipRowHarness","isEditable","isEditing","startEditing","dispatchEvent","finishEditing","ENTER","getEditInput","MatChipGridHarness","isInvalid","getRows","getInput","MatChipSetHarness"],"mappings":"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"}
{"version":3,"file":"chips-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-avatar-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-edit-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-remove-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-input-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-option-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-listbox-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-edit-input-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-row-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-grid-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-set-harness.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\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {ChipAvatarHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with a standard Material chip avatar in tests. */\nexport class MatChipAvatarHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-chip-avatar';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a chip avatar with specific\n * attributes.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatChipAvatarHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ChipAvatarHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\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 ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {ChipEditHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with a standard Material chip edit button in tests. */\nexport class MatChipEditHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-chip-edit';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a chip edit with specific\n * attributes.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatChipEditHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ChipEditHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /** Clicks the edit button. */\n async click(): Promise<void> {\n return (await this.host()).click();\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 ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {ChipRemoveHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with a standard Material chip remove button in tests. */\nexport class MatChipRemoveHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-chip-remove';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a chip remove with specific\n * attributes.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatChipRemoveHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ChipRemoveHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /** Clicks the remove button. */\n async click(): Promise<void> {\n return (await this.host()).click();\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 ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessPredicate,\n TestKey,\n} from '@angular/cdk/testing';\nimport {MatChipAvatarHarness} from './chip-avatar-harness';\nimport {\n ChipAvatarHarnessFilters,\n ChipEditHarnessFilters,\n ChipHarnessFilters,\n ChipRemoveHarnessFilters,\n} from './chip-harness-filters';\nimport {MatChipEditHarness} from './chip-edit-harness';\nimport {MatChipRemoveHarness} from './chip-remove-harness';\n\n/** Harness for interacting with a mat-chip in tests. */\nexport class MatChipHarness extends ContentContainerComponentHarness {\n protected _primaryAction = this.locatorFor('.mdc-evolution-chip__action--primary');\n\n static hostSelector = '.mat-mdc-basic-chip, .mat-mdc-chip';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a chip with specific attributes.\n * @param options Options for narrowing the search.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatChipHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ChipHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('text', options.text, (harness, label) => {\n return HarnessPredicate.stringMatches(harness.getText(), label);\n })\n .addOption('disabled', options.disabled, async (harness, disabled) => {\n return (await harness.isDisabled()) === disabled;\n });\n }\n\n /** Gets a promise for the text content the option. */\n async getText(): Promise<string> {\n return (await this.host()).text({\n exclude: '.mat-mdc-chip-avatar, .mat-mdc-chip-trailing-icon, .mat-icon',\n });\n }\n\n /** Whether the chip is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).hasClass('mat-mdc-chip-disabled');\n }\n\n /** Delete a chip from the set. */\n async remove(): Promise<void> {\n const hostEl = await this.host();\n await hostEl.sendKeys(TestKey.DELETE);\n }\n\n /**\n * Gets the edit button inside of a chip.\n * @param filter Optionally filters which chips are included.\n */\n async geEditButton(filter: ChipEditHarnessFilters = {}): Promise<MatChipEditHarness> {\n return this.locatorFor(MatChipEditHarness.with(filter))();\n }\n\n /**\n * Gets the remove button inside of a chip.\n * @param filter Optionally filters which chips are included.\n */\n async getRemoveButton(filter: ChipRemoveHarnessFilters = {}): Promise<MatChipRemoveHarness> {\n return this.locatorFor(MatChipRemoveHarness.with(filter))();\n }\n\n /**\n * Gets the avatar inside a chip.\n * @param filter Optionally filters which avatars are included.\n */\n async getAvatar(filter: ChipAvatarHarnessFilters = {}): Promise<MatChipAvatarHarness | null> {\n return this.locatorForOptional(MatChipAvatarHarness.with(filter))();\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 ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n TestKey,\n} from '@angular/cdk/testing';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {ChipInputHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with a grid's chip input in tests. */\nexport class MatChipInputHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-chip-input';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a chip input with specific\n * attributes.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatChipInputHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ChipInputHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('value', options.value, async (harness, value) => {\n return (await harness.getValue()) === value;\n })\n .addOption('placeholder', options.placeholder, async (harness, placeholder) => {\n return (await harness.getPlaceholder()) === placeholder;\n })\n .addOption('disabled', options.disabled, async (harness, disabled) => {\n return (await harness.isDisabled()) === disabled;\n });\n }\n\n /** Whether the input is disabled. */\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n const disabled = await host.getAttribute('disabled');\n\n if (disabled !== null) {\n return coerceBooleanProperty(disabled);\n }\n\n return (await host.getAttribute('aria-disabled')) === 'true';\n }\n\n /** Whether the input is required. */\n async isRequired(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('required');\n }\n\n /** Gets the value of the input. */\n async getValue(): Promise<string> {\n // The \"value\" property of the native input is never undefined.\n return await (await this.host()).getProperty<string>('value');\n }\n\n /** Gets the placeholder of the input. */\n async getPlaceholder(): Promise<string> {\n return await (await this.host()).getProperty<string>('placeholder');\n }\n\n /**\n * Focuses the input and returns a promise that indicates when the\n * action is complete.\n */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /**\n * Blurs the input and returns a promise that indicates when the\n * action is complete.\n */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the input is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /**\n * Sets the value of the input. The value will be set by simulating\n * keypresses that correspond to the given value.\n */\n async setValue(newValue: string): Promise<void> {\n const inputEl = await this.host();\n await inputEl.clear();\n\n // We don't want to send keys for the value if the value is an empty\n // string in order to clear the value. Sending keys with an empty string\n // still results in unnecessary focus events.\n if (newValue) {\n await inputEl.sendKeys(newValue);\n }\n }\n\n /** Sends a chip separator key to the input element. */\n async sendSeparatorKey(key: TestKey | string): Promise<void> {\n const inputEl = await this.host();\n return inputEl.sendKeys(key);\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 {ComponentHarnessConstructor, HarnessPredicate} from '@angular/cdk/testing';\nimport {MatChipHarness} from './chip-harness';\nimport {ChipOptionHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with a mat-chip-option in tests. */\nexport class MatChipOptionHarness extends MatChipHarness {\n static override hostSelector = '.mat-mdc-chip-option';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a chip option with specific\n * attributes.\n * @param options Options for narrowing the search.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static override with<T extends MatChipHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ChipOptionHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(MatChipOptionHarness, options)\n .addOption('text', options.text, (harness, label) =>\n HarnessPredicate.stringMatches(harness.getText(), label),\n )\n .addOption(\n 'selected',\n options.selected,\n async (harness, selected) => (await harness.isSelected()) === selected,\n ) as unknown as HarnessPredicate<T>;\n }\n\n /** Whether the chip is selected. */\n async isSelected(): Promise<boolean> {\n return (await this.host()).hasClass('mat-mdc-chip-selected');\n }\n\n /** Selects the given chip. Only applies if it's selectable. */\n async select(): Promise<void> {\n if (!(await this.isSelected())) {\n await this.toggle();\n }\n }\n\n /** Deselects the given chip. Only applies if it's selectable. */\n async deselect(): Promise<void> {\n if (await this.isSelected()) {\n await this.toggle();\n }\n }\n\n /** Toggles the selected state of the given chip. */\n async toggle(): Promise<void> {\n return (await this._primaryAction()).click();\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 ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n parallel,\n} from '@angular/cdk/testing';\nimport {ChipListboxHarnessFilters, ChipOptionHarnessFilters} from './chip-harness-filters';\nimport {MatChipOptionHarness} from './chip-option-harness';\n\n/** Harness for interacting with a mat-chip-listbox in tests. */\nexport class MatChipListboxHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-chip-listbox';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a chip listbox with specific\n * attributes.\n * @param options Options for narrowing the search.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatChipListboxHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ChipListboxHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options).addOption(\n 'disabled',\n options.disabled,\n async (harness, disabled) => {\n return (await harness.isDisabled()) === disabled;\n },\n );\n }\n\n /** Gets whether the chip listbox is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-disabled')) === 'true';\n }\n\n /** Gets whether the chip listbox is required. */\n async isRequired(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-required')) === 'true';\n }\n\n /** Gets whether the chip listbox is in multi selection mode. */\n async isMultiple(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-multiselectable')) === 'true';\n }\n\n /** Gets whether the orientation of the chip list. */\n async getOrientation(): Promise<'horizontal' | 'vertical'> {\n const orientation = await (await this.host()).getAttribute('aria-orientation');\n return orientation === 'vertical' ? 'vertical' : 'horizontal';\n }\n\n /**\n * Gets the list of chips inside the chip list.\n * @param filter Optionally filters which chips are included.\n */\n async getChips(filter: ChipOptionHarnessFilters = {}): Promise<MatChipOptionHarness[]> {\n return this.locatorForAll(MatChipOptionHarness.with(filter))();\n }\n\n /**\n * Selects a chip inside the chip list.\n * @param filter An optional filter to apply to the child chips.\n * All the chips matching the filter will be selected.\n */\n async selectChips(filter: ChipOptionHarnessFilters = {}): Promise<void> {\n const chips = await this.getChips(filter);\n if (!chips.length) {\n throw Error(`Cannot find chip matching filter ${JSON.stringify(filter)}`);\n }\n await parallel(() => chips.map(chip => chip.select()));\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 ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {ChipEditInputHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with an editable chip's input in tests. */\nexport class MatChipEditInputHarness extends ComponentHarness {\n static hostSelector = '.mat-chip-edit-input';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a chip edit input with specific\n * attributes.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatChipEditInputHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ChipEditInputHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /** Sets the value of the input. */\n async setValue(value: string): Promise<void> {\n const host = await this.host();\n return host.setContenteditableValue(value);\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 {TestKey} from '@angular/cdk/testing';\nimport {MatChipEditInputHarness} from './chip-edit-input-harness';\nimport {MatChipHarness} from './chip-harness';\nimport {ChipEditInputHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with a mat-chip-row in tests. */\nexport class MatChipRowHarness extends MatChipHarness {\n static override hostSelector = '.mat-mdc-chip-row';\n\n /** Whether the chip is editable. */\n async isEditable(): Promise<boolean> {\n return (await this.host()).hasClass('mat-mdc-chip-editable');\n }\n\n /** Whether the chip is currently being edited. */\n async isEditing(): Promise<boolean> {\n return (await this.host()).hasClass('mat-mdc-chip-editing');\n }\n\n /** Sets the chip row into an editing state, if it is editable. */\n async startEditing(): Promise<void> {\n if (!(await this.isEditable())) {\n throw new Error('Cannot begin editing a chip that is not editable.');\n }\n return (await this.host()).dispatchEvent('dblclick');\n }\n\n /** Stops editing the chip, if it was in the editing state. */\n async finishEditing(): Promise<void> {\n if (await this.isEditing()) {\n await (await this.host()).sendKeys(TestKey.ENTER);\n }\n }\n\n /** Gets the edit input inside the chip row. */\n async getEditInput(filter: ChipEditInputHarnessFilters = {}): Promise<MatChipEditInputHarness> {\n return this.locatorFor(MatChipEditInputHarness.with(filter))();\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 ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {\n ChipGridHarnessFilters,\n ChipInputHarnessFilters,\n ChipRowHarnessFilters,\n} from './chip-harness-filters';\nimport {MatChipInputHarness} from './chip-input-harness';\nimport {MatChipRowHarness} from './chip-row-harness';\n\n/** Harness for interacting with a mat-chip-grid in tests. */\nexport class MatChipGridHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-chip-grid';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a chip grid with specific attributes.\n * @param options Options for filtering which chip grid instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatChipGridHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ChipGridHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options).addOption(\n 'disabled',\n options.disabled,\n async (harness, disabled) => {\n return (await harness.isDisabled()) === disabled;\n },\n );\n }\n\n /** Gets whether the chip grid is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-disabled')) === 'true';\n }\n\n /** Gets whether the chip grid is required. */\n async isRequired(): Promise<boolean> {\n return await (await this.host()).hasClass('mat-mdc-chip-list-required');\n }\n\n /** Gets whether the chip grid is invalid. */\n async isInvalid(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-invalid')) === 'true';\n }\n\n /** Gets promise of the harnesses for the chip rows. */\n getRows(filter: ChipRowHarnessFilters = {}): Promise<MatChipRowHarness[]> {\n return this.locatorForAll(MatChipRowHarness.with(filter))();\n }\n\n /** Gets promise of the chip text input harness. */\n getInput(filter: ChipInputHarnessFilters = {}): Promise<MatChipInputHarness | null> {\n return this.locatorFor(MatChipInputHarness.with(filter))();\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 ComponentHarnessConstructor,\n ComponentHarness,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {MatChipHarness} from './chip-harness';\nimport {ChipHarnessFilters, ChipSetHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with a mat-chip-set in tests. */\nexport class MatChipSetHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-chip-set';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a chip set with specific attributes.\n * @param options Options for filtering which chip set instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatChipSetHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ChipSetHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /** Gets promise of the harnesses for the chips. */\n async getChips(filter: ChipHarnessFilters = {}): Promise<MatChipHarness[]> {\n return await this.locatorForAll(MatChipHarness.with(filter))();\n }\n}\n"],"names":["MatChipAvatarHarness","ComponentHarness","hostSelector","with","options","HarnessPredicate","MatChipEditHarness","click","host","MatChipRemoveHarness","MatChipHarness","ContentContainerComponentHarness","_primaryAction","locatorFor","addOption","text","harness","label","stringMatches","getText","disabled","isDisabled","exclude","hasClass","remove","hostEl","sendKeys","TestKey","DELETE","geEditButton","filter","getRemoveButton","getAvatar","locatorForOptional","MatChipInputHarness","value","getValue","placeholder","getPlaceholder","getAttribute","coerceBooleanProperty","isRequired","getProperty","focus","blur","isFocused","setValue","newValue","inputEl","clear","sendSeparatorKey","key","MatChipOptionHarness","selected","isSelected","select","toggle","deselect","MatChipListboxHarness","isMultiple","getOrientation","orientation","getChips","locatorForAll","selectChips","chips","length","Error","JSON","stringify","parallel","map","chip","MatChipEditInputHarness","setContenteditableValue","MatChipRowHarness","isEditable","isEditing","startEditing","dispatchEvent","finishEditing","ENTER","getEditInput","MatChipGridHarness","isInvalid","getRows","getInput","MatChipSetHarness"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"core-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/testing/optgroup-harness.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\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {OptgroupHarnessFilters} from './optgroup-harness-filters';\nimport {MatOptionHarness} from './option-harness';\nimport {OptionHarnessFilters} from './option-harness-filters';\n\n/** Harness for interacting with a `mat-optgroup` in tests. */\nexport class MatOptgroupHarness extends ComponentHarness {\n /** Selector used to locate option group instances. */\n static hostSelector = '.mat-mdc-optgroup';\n private _label = this.locatorFor('.mat-mdc-optgroup-label');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a option group with specific\n * attributes.\n * @param options Options for filtering which option instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatOptgroupHarness>(\n this: ComponentHarnessConstructor<T>,\n options: OptgroupHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options).addOption(\n 'labelText',\n options.labelText,\n async (harness, title) => HarnessPredicate.stringMatches(await harness.getLabelText(), title),\n );\n }\n\n /** Gets the option group's label text. */\n async getLabelText(): Promise<string> {\n return (await this._label()).text();\n }\n\n /** Gets whether the option group is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-disabled')) === 'true';\n }\n\n /**\n * Gets the options that are inside the group.\n * @param filter Optionally filters which options are included.\n */\n async getOptions(filter: OptionHarnessFilters = {}): Promise<MatOptionHarness[]> {\n return this.locatorForAll(MatOptionHarness.with(filter))();\n }\n}\n"],"names":["MatOptgroupHarness","ComponentHarness","hostSelector","_label","locatorFor","with","options","HarnessPredicate","addOption","labelText","harness","title","stringMatches","getLabelText","text","isDisabled","host","getAttribute","getOptions","filter","locatorForAll","MatOptionHarness"],"mappings":";;;AAkBM,MAAOA,kBAAmB,SAAQC,gBAAgB,CAAA;EAEtD,OAAOC,YAAY,GAAG,mBAAmB;AACjCC,EAAAA,MAAM,GAAG,IAAI,CAACC,UAAU,CAAC,yBAAyB,CAAC;AAQ3D,EAAA,OAAOC,IAAIA,CAETC,OAAA,GAAkC,EAAE,EAAA;AAEpC,IAAA,OAAO,IAAIC,gBAAgB,CAAC,IAAI,EAAED,OAAO,CAAC,CAACE,SAAS,CAClD,WAAW,EACXF,OAAO,CAACG,SAAS,EACjB,OAAOC,OAAO,EAAEC,KAAK,KAAKJ,gBAAgB,CAACK,aAAa,CAAC,MAAMF,OAAO,CAACG,YAAY,EAAE,EAAEF,KAAK,CAAC,CAC9F;AACH,EAAA;EAGA,MAAME,YAAYA,GAAA;IAChB,OAAO,CAAC,MAAM,IAAI,CAACV,MAAM,EAAE,EAAEW,IAAI,EAAE;AACrC,EAAA;EAGA,MAAMC,UAAUA,GAAA;AACd,IAAA,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,CAACC,IAAI,EAAE,EAAEC,YAAY,CAAC,eAAe,CAAC,MAAM,MAAM;AAC7E,EAAA;AAMA,EAAA,MAAMC,UAAUA,CAACC,MAAA,GAA+B,EAAE,EAAA;AAChD,IAAA,OAAO,IAAI,CAACC,aAAa,CAACC,gBAAgB,CAAChB,IAAI,CAACc,MAAM,CAAC,CAAC,EAAE;AAC5D,EAAA;;;;;"}
{"version":3,"file":"core-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/core/testing/optgroup-harness.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\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {OptgroupHarnessFilters} from './optgroup-harness-filters';\nimport {MatOptionHarness} from './option-harness';\nimport {OptionHarnessFilters} from './option-harness-filters';\n\n/** Harness for interacting with a `mat-optgroup` in tests. */\nexport class MatOptgroupHarness extends ComponentHarness {\n /** Selector used to locate option group instances. */\n static hostSelector = '.mat-mdc-optgroup';\n private _label = this.locatorFor('.mat-mdc-optgroup-label');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a option group with specific\n * attributes.\n * @param options Options for filtering which option instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatOptgroupHarness>(\n this: ComponentHarnessConstructor<T>,\n options: OptgroupHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options).addOption(\n 'labelText',\n options.labelText,\n async (harness, title) => HarnessPredicate.stringMatches(await harness.getLabelText(), title),\n );\n }\n\n /** Gets the option group's label text. */\n async getLabelText(): Promise<string> {\n return (await this._label()).text();\n }\n\n /** Gets whether the option group is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-disabled')) === 'true';\n }\n\n /**\n * Gets the options that are inside the group.\n * @param filter Optionally filters which options are included.\n */\n async getOptions(filter: OptionHarnessFilters = {}): Promise<MatOptionHarness[]> {\n return this.locatorForAll(MatOptionHarness.with(filter))();\n }\n}\n"],"names":["MatOptgroupHarness","ComponentHarness","hostSelector","_label","locatorFor","with","options","HarnessPredicate","addOption","labelText","harness","title","stringMatches","getLabelText","text","isDisabled","host","getAttribute","getOptions","filter","locatorForAll","MatOptionHarness"],"mappings":";;;AAkBM,MAAOA,kBAAmB,SAAQC,gBAAgB,CAAA;EAEtD,OAAOC,YAAY,GAAG,mBAAmB;AACjCC,EAAAA,MAAM,GAAG,IAAI,CAACC,UAAU,CAAC,yBAAyB,CAAC;AAQ3D,EAAA,OAAOC,IAAIA,CAETC,OAAA,GAAkC,EAAE,EAAA;AAEpC,IAAA,OAAO,IAAIC,gBAAgB,CAAC,IAAI,EAAED,OAAO,CAAC,CAACE,SAAS,CAClD,WAAW,EACXF,OAAO,CAACG,SAAS,EACjB,OAAOC,OAAO,EAAEC,KAAK,KAAKJ,gBAAgB,CAACK,aAAa,CAAC,MAAMF,OAAO,CAACG,YAAY,EAAE,EAAEF,KAAK,CAAC,CAC9F;AACH,EAAA;EAGA,MAAME,YAAYA,GAAA;IAChB,OAAO,CAAC,MAAM,IAAI,CAACV,MAAM,EAAE,EAAEW,IAAI,EAAE;AACrC,EAAA;EAGA,MAAMC,UAAUA,GAAA;AACd,IAAA,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,CAACC,IAAI,EAAE,EAAEC,YAAY,CAAC,eAAe,CAAC,MAAM,MAAM;AAC7E,EAAA;AAMA,EAAA,MAAMC,UAAUA,CAACC,MAAA,GAA+B,EAAE,EAAA;AAChD,IAAA,OAAO,IAAI,CAACC,aAAa,CAACC,gBAAgB,CAAChB,IAAI,CAACc,MAAM,CAAC,CAAC,EAAE;AAC5D,EAAA;;;;;"}

@@ -27,3 +27,3 @@ import { DateAdapter, MAT_DATE_LOCALE, MAT_DATE_FORMATS } from './_date-formats-chunk.mjs';

const VERSION = new Version('21.2.7');
const VERSION = new Version('21.2.8');

@@ -30,0 +30,0 @@ const ISO_8601_REGEX = /^\d{4}-\d{2}-\d{2}(?:T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|(?:(?:\+|-)\d{2}:\d{2}))?)?$/;

@@ -1,1 +0,1 @@

{"version":3,"file":"core.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/version.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/datetime/native-date-adapter.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/datetime/native-date-formats.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/datetime/index.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\nimport {Version} from '@angular/core';\n\n/** Current version of Angular Material. */\nexport const VERSION = new Version('21.2.7');\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 {inject, Injectable} from '@angular/core';\nimport {DateAdapter, MAT_DATE_LOCALE} from './date-adapter';\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings with an out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX =\n /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n\n/**\n * Matches a time string. Supported formats:\n * - {{hours}}:{{minutes}}\n * - {{hours}}:{{minutes}}:{{seconds}}\n * - {{hours}}:{{minutes}} AM/PM\n * - {{hours}}:{{minutes}}:{{seconds}} AM/PM\n * - {{hours}}.{{minutes}}\n * - {{hours}}.{{minutes}}.{{seconds}}\n * - {{hours}}.{{minutes}} AM/PM\n * - {{hours}}.{{minutes}}.{{seconds}} AM/PM\n */\nconst TIME_REGEX = /^(\\d?\\d)[:.](\\d?\\d)(?:[:.](\\d?\\d))?\\s*(AM|PM)?$/i;\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n\n/** Adapts the native JS Date for use with cdk-based components that work with dates. */\n@Injectable()\nexport class NativeDateAdapter extends DateAdapter<Date> {\n /** The injected locale. */\n private readonly _matDateLocale = inject(MAT_DATE_LOCALE, {optional: true});\n\n constructor(...args: unknown[]);\n\n constructor() {\n super();\n\n const matDateLocale = inject(MAT_DATE_LOCALE, {optional: true});\n\n if (matDateLocale !== undefined) {\n this._matDateLocale = matDateLocale;\n }\n\n super.setLocale(this._matDateLocale);\n }\n\n getYear(date: Date): number {\n return date.getFullYear();\n }\n\n getMonth(date: Date): number {\n return date.getMonth();\n }\n\n getDate(date: Date): number {\n return date.getDate();\n }\n\n getDayOfWeek(date: Date): number {\n return date.getDay();\n }\n\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n const dtf = new Intl.DateTimeFormat(this.locale, {month: style, timeZone: 'utc'});\n return range(12, i => this._format(dtf, new Date(2017, i, 1)));\n }\n\n getDateNames(): string[] {\n const dtf = new Intl.DateTimeFormat(this.locale, {day: 'numeric', timeZone: 'utc'});\n return range(31, i => this._format(dtf, new Date(2017, 0, i + 1)));\n }\n\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n const dtf = new Intl.DateTimeFormat(this.locale, {weekday: style, timeZone: 'utc'});\n return range(7, i => this._format(dtf, new Date(2017, 0, i + 1)));\n }\n\n getYearName(date: Date): string {\n const dtf = new Intl.DateTimeFormat(this.locale, {year: 'numeric', timeZone: 'utc'});\n return this._format(dtf, date);\n }\n\n getFirstDayOfWeek(): number {\n // At the time of writing `Intl.Locale` isn't available\n // in the internal types so we need to cast to `any`.\n if (typeof Intl !== 'undefined' && (Intl as any).Locale) {\n const locale = new (Intl as any).Locale(this.locale) as {\n getWeekInfo?: () => {firstDay: number};\n weekInfo?: {firstDay: number};\n };\n\n // Some browsers implement a `getWeekInfo` method while others have a `weekInfo` getter.\n // Note that this isn't supported in all browsers so we need to null check it.\n const firstDay = (locale.getWeekInfo?.() || locale.weekInfo)?.firstDay ?? 0;\n\n // `weekInfo.firstDay` is a number between 1 and 7 where, starting from Monday,\n // whereas our representation is 0 to 6 where 0 is Sunday so we need to normalize it.\n return firstDay === 7 ? 0 : firstDay;\n }\n\n // Default to Sunday if the browser doesn't provide the week information.\n return 0;\n }\n\n getNumDaysInMonth(date: Date): number {\n return this.getDate(\n this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + 1, 0),\n );\n }\n\n clone(date: Date): Date {\n return new Date(date.getTime());\n }\n\n createDate(year: number, month: number, date: number): Date {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // Check for invalid month and date (except upper bound on date which we have to check after\n // creating the Date).\n if (month < 0 || month > 11) {\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n }\n\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n }\n\n let result = this._createDateWithOverflow(year, month, date);\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n if (result.getMonth() != month && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n }\n\n return result;\n }\n\n today(): Date {\n return new Date();\n }\n\n parse(value: any, parseFormat?: any): Date | null {\n // We have no way using the native JS Date to set the parse format or locale, so we ignore these\n // parameters.\n if (typeof value == 'number') {\n return new Date(value);\n }\n return value ? new Date(Date.parse(value)) : null;\n }\n\n format(date: Date, displayFormat: Object): string {\n if (!this.isValid(date)) {\n throw Error('NativeDateAdapter: Cannot format invalid date.');\n }\n\n const dtf = new Intl.DateTimeFormat(this.locale, {...displayFormat, timeZone: 'utc'});\n return this._format(dtf, date);\n }\n\n addCalendarYears(date: Date, years: number): Date {\n return this.addCalendarMonths(date, years * 12);\n }\n\n addCalendarMonths(date: Date, months: number): Date {\n let newDate = this._createDateWithOverflow(\n this.getYear(date),\n this.getMonth(date) + months,\n this.getDate(date),\n );\n\n // It's possible to wind up in the wrong month if the original month has more days than the new\n // month. In this case we want to go to the last day of the desired month.\n // Note: the additional + 12 % 12 ensures we end up with a positive number, since JS % doesn't\n // guarantee this.\n if (this.getMonth(newDate) != (((this.getMonth(date) + months) % 12) + 12) % 12) {\n newDate = this._createDateWithOverflow(this.getYear(newDate), this.getMonth(newDate), 0);\n }\n\n return newDate;\n }\n\n addCalendarDays(date: Date, days: number): Date {\n return this._createDateWithOverflow(\n this.getYear(date),\n this.getMonth(date),\n this.getDate(date) + days,\n );\n }\n\n toIso8601(date: Date): string {\n return [\n date.getUTCFullYear(),\n this._2digit(date.getUTCMonth() + 1),\n this._2digit(date.getUTCDate()),\n ].join('-');\n }\n\n /**\n * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n * invalid date for all other values.\n */\n override deserialize(value: any): Date | null {\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n // string is the right format first.\n if (ISO_8601_REGEX.test(value)) {\n let date = new Date(value);\n if (this.isValid(date)) {\n return date;\n }\n }\n }\n return super.deserialize(value);\n }\n\n isDateInstance(obj: any) {\n return obj instanceof Date;\n }\n\n isValid(date: Date) {\n return !isNaN(date.getTime());\n }\n\n invalid(): Date {\n return new Date(NaN);\n }\n\n override setTime(target: Date, hours: number, minutes: number, seconds: number): Date {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!inRange(hours, 0, 23)) {\n throw Error(`Invalid hours \"${hours}\". Hours value must be between 0 and 23.`);\n }\n\n if (!inRange(minutes, 0, 59)) {\n throw Error(`Invalid minutes \"${minutes}\". Minutes value must be between 0 and 59.`);\n }\n\n if (!inRange(seconds, 0, 59)) {\n throw Error(`Invalid seconds \"${seconds}\". Seconds value must be between 0 and 59.`);\n }\n }\n\n const clone = this.clone(target);\n clone.setHours(hours, minutes, seconds, 0);\n return clone;\n }\n\n override getHours(date: Date): number {\n return date.getHours();\n }\n\n override getMinutes(date: Date): number {\n return date.getMinutes();\n }\n\n override getSeconds(date: Date): number {\n return date.getSeconds();\n }\n\n override parseTime(userValue: any, parseFormat?: any): Date | null {\n if (typeof userValue !== 'string') {\n return userValue instanceof Date ? new Date(userValue.getTime()) : null;\n }\n\n const value = userValue.trim();\n\n if (value.length === 0) {\n return null;\n }\n\n // Attempt to parse the value directly.\n let result = this._parseTimeString(value);\n\n // Some locales add extra characters around the time, but are otherwise parseable\n // (e.g. `00:05 ч.` in bg-BG). Try replacing all non-number and non-colon characters.\n if (result === null) {\n const withoutExtras = value.replace(/[^0-9:(AM|PM)]/gi, '').trim();\n\n if (withoutExtras.length > 0) {\n result = this._parseTimeString(withoutExtras);\n }\n }\n\n return result || this.invalid();\n }\n\n override addSeconds(date: Date, amount: number): Date {\n return new Date(date.getTime() + amount * 1000);\n }\n\n /** Creates a date but allows the month and date to overflow. */\n private _createDateWithOverflow(year: number, month: number, date: number) {\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setFullYear` and `setHours` instead.\n const d = new Date();\n d.setFullYear(year, month, date);\n d.setHours(0, 0, 0, 0);\n return d;\n }\n\n /**\n * Pads a number to make it two digits.\n * @param n The number to pad.\n * @returns The padded number.\n */\n private _2digit(n: number) {\n return ('00' + n).slice(-2);\n }\n\n /**\n * When converting Date object to string, javascript built-in functions may return wrong\n * results because it applies its internal DST rules. The DST rules around the world change\n * very frequently, and the current valid rule is not always valid in previous years though.\n * We work around this problem building a new Date object which has its internal UTC\n * representation with the local date and time.\n * @param dtf Intl.DateTimeFormat object, containing the desired string format. It must have\n * timeZone set to 'utc' to work fine.\n * @param date Date from which we want to get the string representation according to dtf\n * @returns A Date object with its UTC representation based on the passed in date info\n */\n private _format(dtf: Intl.DateTimeFormat, date: Date) {\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setUTCFullYear` and `setUTCHours` instead.\n const d = new Date();\n d.setUTCFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n d.setUTCHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n return dtf.format(d);\n }\n\n /**\n * Attempts to parse a time string into a date object. Returns null if it cannot be parsed.\n * @param value Time string to parse.\n */\n private _parseTimeString(value: string): Date | null {\n // Note: we can technically rely on the browser for the time parsing by generating\n // an ISO string and appending the string to the end of it. We don't do it, because\n // browsers aren't consistent in what they support. Some examples:\n // - Safari doesn't support AM/PM.\n // - Firefox produces a valid date object if the time string has overflows (e.g. 12:75) while\n // other browsers produce an invalid date.\n // - Safari doesn't allow padded numbers.\n const parsed = value.toUpperCase().match(TIME_REGEX);\n\n if (parsed) {\n let hours = parseInt(parsed[1]);\n const minutes = parseInt(parsed[2]);\n let seconds: number | undefined = parsed[3] == null ? undefined : parseInt(parsed[3]);\n const amPm = parsed[4] as 'AM' | 'PM' | undefined;\n\n if (hours === 12) {\n hours = amPm === 'AM' ? 0 : hours;\n } else if (amPm === 'PM') {\n hours += 12;\n }\n\n if (\n inRange(hours, 0, 23) &&\n inRange(minutes, 0, 59) &&\n (seconds == null || inRange(seconds, 0, 59))\n ) {\n return this.setTime(this.today(), hours, minutes, seconds || 0);\n }\n }\n\n return null;\n }\n}\n\n/** Checks whether a number is within a certain range. */\nfunction inRange(value: number, min: number, max: number): boolean {\n return !isNaN(value) && value >= min && value <= max;\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 {MatDateFormats} from './date-formats';\n\nexport const MAT_NATIVE_DATE_FORMATS: MatDateFormats = {\n parse: {\n dateInput: null,\n timeInput: null,\n },\n display: {\n dateInput: {year: 'numeric', month: 'numeric', day: 'numeric'},\n timeInput: {hour: 'numeric', minute: 'numeric'},\n monthYearLabel: {year: 'numeric', month: 'short'},\n dateA11yLabel: {year: 'numeric', month: 'long', day: 'numeric'},\n monthYearA11yLabel: {year: 'numeric', month: 'long'},\n timeOptionLabel: {hour: 'numeric', minute: 'numeric'},\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 {NgModule, Provider} from '@angular/core';\nimport {DateAdapter} from './date-adapter';\nimport {MAT_DATE_FORMATS, MatDateFormats} from './date-formats';\nimport {NativeDateAdapter} from './native-date-adapter';\nimport {MAT_NATIVE_DATE_FORMATS} from './native-date-formats';\n\nexport * from './date-adapter';\nexport * from './date-formats';\nexport * from './native-date-adapter';\nexport * from './native-date-formats';\n\n@NgModule({\n providers: [{provide: DateAdapter, useClass: NativeDateAdapter}],\n})\nexport class NativeDateModule {}\n\n@NgModule({\n providers: [provideNativeDateAdapter()],\n})\nexport class MatNativeDateModule {}\n\nexport function provideNativeDateAdapter(\n formats: MatDateFormats = MAT_NATIVE_DATE_FORMATS,\n): Provider[] {\n return [\n {provide: DateAdapter, useClass: NativeDateAdapter},\n {provide: MAT_DATE_FORMATS, useValue: formats},\n ];\n}\n"],"names":["VERSION","Version","ISO_8601_REGEX","TIME_REGEX","range","length","valueFunction","valuesArray","Array","i","NativeDateAdapter","DateAdapter","_matDateLocale","inject","MAT_DATE_LOCALE","optional","constructor","matDateLocale","undefined","setLocale","getYear","date","getFullYear","getMonth","getDate","getDayOfWeek","getDay","getMonthNames","style","dtf","Intl","DateTimeFormat","locale","month","timeZone","_format","Date","getDateNames","day","getDayOfWeekNames","weekday","getYearName","year","getFirstDayOfWeek","Locale","firstDay","getWeekInfo","weekInfo","getNumDaysInMonth","_createDateWithOverflow","clone","getTime","createDate","ngDevMode","Error","result","today","parse","value","parseFormat","format","displayFormat","isValid","addCalendarYears","years","addCalendarMonths","months","newDate","addCalendarDays","days","toIso8601","getUTCFullYear","_2digit","getUTCMonth","getUTCDate","join","deserialize","test","isDateInstance","obj","isNaN","invalid","NaN","setTime","target","hours","minutes","seconds","inRange","setHours","getHours","getMinutes","getSeconds","parseTime","userValue","trim","_parseTimeString","withoutExtras","replace","addSeconds","amount","d","setFullYear","n","slice","setUTCFullYear","setUTCHours","getMilliseconds","parsed","toUpperCase","match","parseInt","amPm","deps","i0","ɵɵFactoryTarget","Injectable","decorators","min","max","MAT_NATIVE_DATE_FORMATS","dateInput","timeInput","display","hour","minute","monthYearLabel","dateA11yLabel","monthYearA11yLabel","timeOptionLabel","NativeDateModule","NgModule","providers","provide","useClass","args","MatNativeDateModule","ɵinj","ɵɵngDeclareInjector","minVersion","version","ngImport","type","provideNativeDateAdapter","formats","MAT_DATE_FORMATS","useValue"],"mappings":"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"}
{"version":3,"file":"core.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/core/version.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/core/datetime/native-date-adapter.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/core/datetime/native-date-formats.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/core/datetime/index.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\nimport {Version} from '@angular/core';\n\n/** Current version of Angular Material. */\nexport const VERSION = new Version('21.2.8');\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 {inject, Injectable} from '@angular/core';\nimport {DateAdapter, MAT_DATE_LOCALE} from './date-adapter';\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings with an out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX =\n /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n\n/**\n * Matches a time string. Supported formats:\n * - {{hours}}:{{minutes}}\n * - {{hours}}:{{minutes}}:{{seconds}}\n * - {{hours}}:{{minutes}} AM/PM\n * - {{hours}}:{{minutes}}:{{seconds}} AM/PM\n * - {{hours}}.{{minutes}}\n * - {{hours}}.{{minutes}}.{{seconds}}\n * - {{hours}}.{{minutes}} AM/PM\n * - {{hours}}.{{minutes}}.{{seconds}} AM/PM\n */\nconst TIME_REGEX = /^(\\d?\\d)[:.](\\d?\\d)(?:[:.](\\d?\\d))?\\s*(AM|PM)?$/i;\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n\n/** Adapts the native JS Date for use with cdk-based components that work with dates. */\n@Injectable()\nexport class NativeDateAdapter extends DateAdapter<Date> {\n /** The injected locale. */\n private readonly _matDateLocale = inject(MAT_DATE_LOCALE, {optional: true});\n\n constructor(...args: unknown[]);\n\n constructor() {\n super();\n\n const matDateLocale = inject(MAT_DATE_LOCALE, {optional: true});\n\n if (matDateLocale !== undefined) {\n this._matDateLocale = matDateLocale;\n }\n\n super.setLocale(this._matDateLocale);\n }\n\n getYear(date: Date): number {\n return date.getFullYear();\n }\n\n getMonth(date: Date): number {\n return date.getMonth();\n }\n\n getDate(date: Date): number {\n return date.getDate();\n }\n\n getDayOfWeek(date: Date): number {\n return date.getDay();\n }\n\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n const dtf = new Intl.DateTimeFormat(this.locale, {month: style, timeZone: 'utc'});\n return range(12, i => this._format(dtf, new Date(2017, i, 1)));\n }\n\n getDateNames(): string[] {\n const dtf = new Intl.DateTimeFormat(this.locale, {day: 'numeric', timeZone: 'utc'});\n return range(31, i => this._format(dtf, new Date(2017, 0, i + 1)));\n }\n\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n const dtf = new Intl.DateTimeFormat(this.locale, {weekday: style, timeZone: 'utc'});\n return range(7, i => this._format(dtf, new Date(2017, 0, i + 1)));\n }\n\n getYearName(date: Date): string {\n const dtf = new Intl.DateTimeFormat(this.locale, {year: 'numeric', timeZone: 'utc'});\n return this._format(dtf, date);\n }\n\n getFirstDayOfWeek(): number {\n // At the time of writing `Intl.Locale` isn't available\n // in the internal types so we need to cast to `any`.\n if (typeof Intl !== 'undefined' && (Intl as any).Locale) {\n const locale = new (Intl as any).Locale(this.locale) as {\n getWeekInfo?: () => {firstDay: number};\n weekInfo?: {firstDay: number};\n };\n\n // Some browsers implement a `getWeekInfo` method while others have a `weekInfo` getter.\n // Note that this isn't supported in all browsers so we need to null check it.\n const firstDay = (locale.getWeekInfo?.() || locale.weekInfo)?.firstDay ?? 0;\n\n // `weekInfo.firstDay` is a number between 1 and 7 where, starting from Monday,\n // whereas our representation is 0 to 6 where 0 is Sunday so we need to normalize it.\n return firstDay === 7 ? 0 : firstDay;\n }\n\n // Default to Sunday if the browser doesn't provide the week information.\n return 0;\n }\n\n getNumDaysInMonth(date: Date): number {\n return this.getDate(\n this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + 1, 0),\n );\n }\n\n clone(date: Date): Date {\n return new Date(date.getTime());\n }\n\n createDate(year: number, month: number, date: number): Date {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // Check for invalid month and date (except upper bound on date which we have to check after\n // creating the Date).\n if (month < 0 || month > 11) {\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n }\n\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n }\n\n let result = this._createDateWithOverflow(year, month, date);\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n if (result.getMonth() != month && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n }\n\n return result;\n }\n\n today(): Date {\n return new Date();\n }\n\n parse(value: any, parseFormat?: any): Date | null {\n // We have no way using the native JS Date to set the parse format or locale, so we ignore these\n // parameters.\n if (typeof value == 'number') {\n return new Date(value);\n }\n return value ? new Date(Date.parse(value)) : null;\n }\n\n format(date: Date, displayFormat: Object): string {\n if (!this.isValid(date)) {\n throw Error('NativeDateAdapter: Cannot format invalid date.');\n }\n\n const dtf = new Intl.DateTimeFormat(this.locale, {...displayFormat, timeZone: 'utc'});\n return this._format(dtf, date);\n }\n\n addCalendarYears(date: Date, years: number): Date {\n return this.addCalendarMonths(date, years * 12);\n }\n\n addCalendarMonths(date: Date, months: number): Date {\n let newDate = this._createDateWithOverflow(\n this.getYear(date),\n this.getMonth(date) + months,\n this.getDate(date),\n );\n\n // It's possible to wind up in the wrong month if the original month has more days than the new\n // month. In this case we want to go to the last day of the desired month.\n // Note: the additional + 12 % 12 ensures we end up with a positive number, since JS % doesn't\n // guarantee this.\n if (this.getMonth(newDate) != (((this.getMonth(date) + months) % 12) + 12) % 12) {\n newDate = this._createDateWithOverflow(this.getYear(newDate), this.getMonth(newDate), 0);\n }\n\n return newDate;\n }\n\n addCalendarDays(date: Date, days: number): Date {\n return this._createDateWithOverflow(\n this.getYear(date),\n this.getMonth(date),\n this.getDate(date) + days,\n );\n }\n\n toIso8601(date: Date): string {\n return [\n date.getUTCFullYear(),\n this._2digit(date.getUTCMonth() + 1),\n this._2digit(date.getUTCDate()),\n ].join('-');\n }\n\n /**\n * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n * invalid date for all other values.\n */\n override deserialize(value: any): Date | null {\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n // string is the right format first.\n if (ISO_8601_REGEX.test(value)) {\n let date = new Date(value);\n if (this.isValid(date)) {\n return date;\n }\n }\n }\n return super.deserialize(value);\n }\n\n isDateInstance(obj: any) {\n return obj instanceof Date;\n }\n\n isValid(date: Date) {\n return !isNaN(date.getTime());\n }\n\n invalid(): Date {\n return new Date(NaN);\n }\n\n override setTime(target: Date, hours: number, minutes: number, seconds: number): Date {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!inRange(hours, 0, 23)) {\n throw Error(`Invalid hours \"${hours}\". Hours value must be between 0 and 23.`);\n }\n\n if (!inRange(minutes, 0, 59)) {\n throw Error(`Invalid minutes \"${minutes}\". Minutes value must be between 0 and 59.`);\n }\n\n if (!inRange(seconds, 0, 59)) {\n throw Error(`Invalid seconds \"${seconds}\". Seconds value must be between 0 and 59.`);\n }\n }\n\n const clone = this.clone(target);\n clone.setHours(hours, minutes, seconds, 0);\n return clone;\n }\n\n override getHours(date: Date): number {\n return date.getHours();\n }\n\n override getMinutes(date: Date): number {\n return date.getMinutes();\n }\n\n override getSeconds(date: Date): number {\n return date.getSeconds();\n }\n\n override parseTime(userValue: any, parseFormat?: any): Date | null {\n if (typeof userValue !== 'string') {\n return userValue instanceof Date ? new Date(userValue.getTime()) : null;\n }\n\n const value = userValue.trim();\n\n if (value.length === 0) {\n return null;\n }\n\n // Attempt to parse the value directly.\n let result = this._parseTimeString(value);\n\n // Some locales add extra characters around the time, but are otherwise parseable\n // (e.g. `00:05 ч.` in bg-BG). Try replacing all non-number and non-colon characters.\n if (result === null) {\n const withoutExtras = value.replace(/[^0-9:(AM|PM)]/gi, '').trim();\n\n if (withoutExtras.length > 0) {\n result = this._parseTimeString(withoutExtras);\n }\n }\n\n return result || this.invalid();\n }\n\n override addSeconds(date: Date, amount: number): Date {\n return new Date(date.getTime() + amount * 1000);\n }\n\n /** Creates a date but allows the month and date to overflow. */\n private _createDateWithOverflow(year: number, month: number, date: number) {\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setFullYear` and `setHours` instead.\n const d = new Date();\n d.setFullYear(year, month, date);\n d.setHours(0, 0, 0, 0);\n return d;\n }\n\n /**\n * Pads a number to make it two digits.\n * @param n The number to pad.\n * @returns The padded number.\n */\n private _2digit(n: number) {\n return ('00' + n).slice(-2);\n }\n\n /**\n * When converting Date object to string, javascript built-in functions may return wrong\n * results because it applies its internal DST rules. The DST rules around the world change\n * very frequently, and the current valid rule is not always valid in previous years though.\n * We work around this problem building a new Date object which has its internal UTC\n * representation with the local date and time.\n * @param dtf Intl.DateTimeFormat object, containing the desired string format. It must have\n * timeZone set to 'utc' to work fine.\n * @param date Date from which we want to get the string representation according to dtf\n * @returns A Date object with its UTC representation based on the passed in date info\n */\n private _format(dtf: Intl.DateTimeFormat, date: Date) {\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setUTCFullYear` and `setUTCHours` instead.\n const d = new Date();\n d.setUTCFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n d.setUTCHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n return dtf.format(d);\n }\n\n /**\n * Attempts to parse a time string into a date object. Returns null if it cannot be parsed.\n * @param value Time string to parse.\n */\n private _parseTimeString(value: string): Date | null {\n // Note: we can technically rely on the browser for the time parsing by generating\n // an ISO string and appending the string to the end of it. We don't do it, because\n // browsers aren't consistent in what they support. Some examples:\n // - Safari doesn't support AM/PM.\n // - Firefox produces a valid date object if the time string has overflows (e.g. 12:75) while\n // other browsers produce an invalid date.\n // - Safari doesn't allow padded numbers.\n const parsed = value.toUpperCase().match(TIME_REGEX);\n\n if (parsed) {\n let hours = parseInt(parsed[1]);\n const minutes = parseInt(parsed[2]);\n let seconds: number | undefined = parsed[3] == null ? undefined : parseInt(parsed[3]);\n const amPm = parsed[4] as 'AM' | 'PM' | undefined;\n\n if (hours === 12) {\n hours = amPm === 'AM' ? 0 : hours;\n } else if (amPm === 'PM') {\n hours += 12;\n }\n\n if (\n inRange(hours, 0, 23) &&\n inRange(minutes, 0, 59) &&\n (seconds == null || inRange(seconds, 0, 59))\n ) {\n return this.setTime(this.today(), hours, minutes, seconds || 0);\n }\n }\n\n return null;\n }\n}\n\n/** Checks whether a number is within a certain range. */\nfunction inRange(value: number, min: number, max: number): boolean {\n return !isNaN(value) && value >= min && value <= max;\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 {MatDateFormats} from './date-formats';\n\nexport const MAT_NATIVE_DATE_FORMATS: MatDateFormats = {\n parse: {\n dateInput: null,\n timeInput: null,\n },\n display: {\n dateInput: {year: 'numeric', month: 'numeric', day: 'numeric'},\n timeInput: {hour: 'numeric', minute: 'numeric'},\n monthYearLabel: {year: 'numeric', month: 'short'},\n dateA11yLabel: {year: 'numeric', month: 'long', day: 'numeric'},\n monthYearA11yLabel: {year: 'numeric', month: 'long'},\n timeOptionLabel: {hour: 'numeric', minute: 'numeric'},\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 {NgModule, Provider} from '@angular/core';\nimport {DateAdapter} from './date-adapter';\nimport {MAT_DATE_FORMATS, MatDateFormats} from './date-formats';\nimport {NativeDateAdapter} from './native-date-adapter';\nimport {MAT_NATIVE_DATE_FORMATS} from './native-date-formats';\n\nexport * from './date-adapter';\nexport * from './date-formats';\nexport * from './native-date-adapter';\nexport * from './native-date-formats';\n\n@NgModule({\n providers: [{provide: DateAdapter, useClass: NativeDateAdapter}],\n})\nexport class NativeDateModule {}\n\n@NgModule({\n providers: [provideNativeDateAdapter()],\n})\nexport class MatNativeDateModule {}\n\nexport function provideNativeDateAdapter(\n formats: MatDateFormats = MAT_NATIVE_DATE_FORMATS,\n): Provider[] {\n return [\n {provide: DateAdapter, useClass: NativeDateAdapter},\n {provide: MAT_DATE_FORMATS, useValue: formats},\n ];\n}\n"],"names":["VERSION","Version","ISO_8601_REGEX","TIME_REGEX","range","length","valueFunction","valuesArray","Array","i","NativeDateAdapter","DateAdapter","_matDateLocale","inject","MAT_DATE_LOCALE","optional","constructor","matDateLocale","undefined","setLocale","getYear","date","getFullYear","getMonth","getDate","getDayOfWeek","getDay","getMonthNames","style","dtf","Intl","DateTimeFormat","locale","month","timeZone","_format","Date","getDateNames","day","getDayOfWeekNames","weekday","getYearName","year","getFirstDayOfWeek","Locale","firstDay","getWeekInfo","weekInfo","getNumDaysInMonth","_createDateWithOverflow","clone","getTime","createDate","ngDevMode","Error","result","today","parse","value","parseFormat","format","displayFormat","isValid","addCalendarYears","years","addCalendarMonths","months","newDate","addCalendarDays","days","toIso8601","getUTCFullYear","_2digit","getUTCMonth","getUTCDate","join","deserialize","test","isDateInstance","obj","isNaN","invalid","NaN","setTime","target","hours","minutes","seconds","inRange","setHours","getHours","getMinutes","getSeconds","parseTime","userValue","trim","_parseTimeString","withoutExtras","replace","addSeconds","amount","d","setFullYear","n","slice","setUTCFullYear","setUTCHours","getMilliseconds","parsed","toUpperCase","match","parseInt","amPm","deps","i0","ɵɵFactoryTarget","Injectable","decorators","min","max","MAT_NATIVE_DATE_FORMATS","dateInput","timeInput","display","hour","minute","monthYearLabel","dateA11yLabel","monthYearA11yLabel","timeOptionLabel","NativeDateModule","NgModule","providers","provide","useClass","args","MatNativeDateModule","ɵinj","ɵɵngDeclareInjector","minVersion","version","ngImport","type","provideNativeDateAdapter","formats","MAT_DATE_FORMATS","useValue"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"datepicker-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/datepicker/testing/datepicker-toggle-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/datepicker/testing/datepicker-actions-harness.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\nimport {HarnessPredicate} from '@angular/cdk/testing';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {DatepickerToggleHarnessFilters} from './datepicker-harness-filters';\nimport {DatepickerTriggerHarnessBase} from './datepicker-trigger-harness-base';\n\n/** Harness for interacting with a standard Material datepicker toggle in tests. */\nexport class MatDatepickerToggleHarness extends DatepickerTriggerHarnessBase {\n static hostSelector = '.mat-datepicker-toggle';\n\n /** The clickable button inside the toggle. */\n private _button = this.locatorFor('button');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatDatepickerToggleHarness` that\n * meets certain criteria.\n * @param options Options for filtering which datepicker toggle instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: DatepickerToggleHarnessFilters = {},\n ): HarnessPredicate<MatDatepickerToggleHarness> {\n return new HarnessPredicate(MatDatepickerToggleHarness, options);\n }\n\n /** Gets whether the calendar associated with the toggle is open. */\n async isCalendarOpen(): Promise<boolean> {\n return (await this.host()).hasClass('mat-datepicker-toggle-active');\n }\n\n /** Whether the toggle is disabled. */\n async isDisabled(): Promise<boolean> {\n const button = await this._button();\n return coerceBooleanProperty(await button.getAttribute('disabled'));\n }\n\n protected async _openCalendar(): Promise<void> {\n return (await this._button()).click();\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 ContentContainerComponentHarness,\n HarnessPredicate,\n TestElement,\n} from '@angular/cdk/testing';\nimport {DatepickerActionsHarnessFilters} from './datepicker-harness-filters';\n\n/** Harness for interacting with a standard Material datepicker actions in tests. */\nexport class MatDatepickerActionsHarness extends ContentContainerComponentHarness<string> {\n static hostSelector = '.mat-datepicker-actions';\n\n private _applyLocator = this.locatorForOptional(\n '[matDatepickerApply], [matDateRangePickerApply]',\n );\n private _cancelLocator = this.locatorForOptional(\n '[matDatepickerCancel], [matDateRangePickerCancel]',\n );\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatDatepickerActionsHarness` that\n * meets certain criteria.\n * @param options Options for filtering which datepicker actions instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: DatepickerActionsHarnessFilters = {},\n ): HarnessPredicate<MatDatepickerActionsHarness> {\n return new HarnessPredicate(MatDatepickerActionsHarness, options);\n }\n\n /** Applies the current selection. */\n apply(): Promise<void> {\n return this._clickAction('apply', this._applyLocator);\n }\n\n /** Cancels the current selection. */\n cancel(): Promise<void> {\n return this._clickAction('cancel', this._cancelLocator);\n }\n\n private async _clickAction(name: string, locator: () => Promise<TestElement | null>) {\n const button = await locator();\n\n if (!button) {\n throw new Error(`MatDatepickerActions does not have ${name} button`);\n }\n\n await button.click();\n }\n}\n"],"names":["MatDatepickerToggleHarness","DatepickerTriggerHarnessBase","hostSelector","_button","locatorFor","with","options","HarnessPredicate","isCalendarOpen","host","hasClass","isDisabled","button","coerceBooleanProperty","getAttribute","_openCalendar","click","MatDatepickerActionsHarness","ContentContainerComponentHarness","_applyLocator","locatorForOptional","_cancelLocator","apply","_clickAction","cancel","name","locator","Error"],"mappings":";;;;;;AAcM,MAAOA,0BAA2B,SAAQC,4BAA4B,CAAA;EAC1E,OAAOC,YAAY,GAAG,wBAAwB;AAGtCC,EAAAA,OAAO,GAAG,IAAI,CAACC,UAAU,CAAC,QAAQ,CAAC;AAQ3C,EAAA,OAAOC,IAAIA,CACTC,OAAA,GAA0C,EAAE,EAAA;AAE5C,IAAA,OAAO,IAAIC,gBAAgB,CAACP,0BAA0B,EAAEM,OAAO,CAAC;AAClE,EAAA;EAGA,MAAME,cAAcA,GAAA;IAClB,OAAO,CAAC,MAAM,IAAI,CAACC,IAAI,EAAE,EAAEC,QAAQ,CAAC,8BAA8B,CAAC;AACrE,EAAA;EAGA,MAAMC,UAAUA,GAAA;AACd,IAAA,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACT,OAAO,EAAE;IACnC,OAAOU,qBAAqB,CAAC,MAAMD,MAAM,CAACE,YAAY,CAAC,UAAU,CAAC,CAAC;AACrE,EAAA;EAEU,MAAMC,aAAaA,GAAA;IAC3B,OAAO,CAAC,MAAM,IAAI,CAACZ,OAAO,EAAE,EAAEa,KAAK,EAAE;AACvC,EAAA;;;AC7BI,MAAOC,2BAA4B,SAAQC,gCAAwC,CAAA;EACvF,OAAOhB,YAAY,GAAG,yBAAyB;AAEvCiB,EAAAA,aAAa,GAAG,IAAI,CAACC,kBAAkB,CAC7C,iDAAiD,CAClD;AACOC,EAAAA,cAAc,GAAG,IAAI,CAACD,kBAAkB,CAC9C,mDAAmD,CACpD;AAQD,EAAA,OAAOf,IAAIA,CACTC,OAAA,GAA2C,EAAE,EAAA;AAE7C,IAAA,OAAO,IAAIC,gBAAgB,CAACU,2BAA2B,EAAEX,OAAO,CAAC;AACnE,EAAA;AAGAgB,EAAAA,KAAKA,GAAA;IACH,OAAO,IAAI,CAACC,YAAY,CAAC,OAAO,EAAE,IAAI,CAACJ,aAAa,CAAC;AACvD,EAAA;AAGAK,EAAAA,MAAMA,GAAA;IACJ,OAAO,IAAI,CAACD,YAAY,CAAC,QAAQ,EAAE,IAAI,CAACF,cAAc,CAAC;AACzD,EAAA;AAEQ,EAAA,MAAME,YAAYA,CAACE,IAAY,EAAEC,OAA0C,EAAA;AACjF,IAAA,MAAMd,MAAM,GAAG,MAAMc,OAAO,EAAE;IAE9B,IAAI,CAACd,MAAM,EAAE;AACX,MAAA,MAAM,IAAIe,KAAK,CAAC,CAAA,mCAAA,EAAsCF,IAAI,SAAS,CAAC;AACtE,IAAA;AAEA,IAAA,MAAMb,MAAM,CAACI,KAAK,EAAE;AACtB,EAAA;;;;;"}
{"version":3,"file":"datepicker-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/datepicker/testing/datepicker-toggle-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/datepicker/testing/datepicker-actions-harness.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\nimport {HarnessPredicate} from '@angular/cdk/testing';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {DatepickerToggleHarnessFilters} from './datepicker-harness-filters';\nimport {DatepickerTriggerHarnessBase} from './datepicker-trigger-harness-base';\n\n/** Harness for interacting with a standard Material datepicker toggle in tests. */\nexport class MatDatepickerToggleHarness extends DatepickerTriggerHarnessBase {\n static hostSelector = '.mat-datepicker-toggle';\n\n /** The clickable button inside the toggle. */\n private _button = this.locatorFor('button');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatDatepickerToggleHarness` that\n * meets certain criteria.\n * @param options Options for filtering which datepicker toggle instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: DatepickerToggleHarnessFilters = {},\n ): HarnessPredicate<MatDatepickerToggleHarness> {\n return new HarnessPredicate(MatDatepickerToggleHarness, options);\n }\n\n /** Gets whether the calendar associated with the toggle is open. */\n async isCalendarOpen(): Promise<boolean> {\n return (await this.host()).hasClass('mat-datepicker-toggle-active');\n }\n\n /** Whether the toggle is disabled. */\n async isDisabled(): Promise<boolean> {\n const button = await this._button();\n return coerceBooleanProperty(await button.getAttribute('disabled'));\n }\n\n protected async _openCalendar(): Promise<void> {\n return (await this._button()).click();\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 ContentContainerComponentHarness,\n HarnessPredicate,\n TestElement,\n} from '@angular/cdk/testing';\nimport {DatepickerActionsHarnessFilters} from './datepicker-harness-filters';\n\n/** Harness for interacting with a standard Material datepicker actions in tests. */\nexport class MatDatepickerActionsHarness extends ContentContainerComponentHarness<string> {\n static hostSelector = '.mat-datepicker-actions';\n\n private _applyLocator = this.locatorForOptional(\n '[matDatepickerApply], [matDateRangePickerApply]',\n );\n private _cancelLocator = this.locatorForOptional(\n '[matDatepickerCancel], [matDateRangePickerCancel]',\n );\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatDatepickerActionsHarness` that\n * meets certain criteria.\n * @param options Options for filtering which datepicker actions instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: DatepickerActionsHarnessFilters = {},\n ): HarnessPredicate<MatDatepickerActionsHarness> {\n return new HarnessPredicate(MatDatepickerActionsHarness, options);\n }\n\n /** Applies the current selection. */\n apply(): Promise<void> {\n return this._clickAction('apply', this._applyLocator);\n }\n\n /** Cancels the current selection. */\n cancel(): Promise<void> {\n return this._clickAction('cancel', this._cancelLocator);\n }\n\n private async _clickAction(name: string, locator: () => Promise<TestElement | null>) {\n const button = await locator();\n\n if (!button) {\n throw new Error(`MatDatepickerActions does not have ${name} button`);\n }\n\n await button.click();\n }\n}\n"],"names":["MatDatepickerToggleHarness","DatepickerTriggerHarnessBase","hostSelector","_button","locatorFor","with","options","HarnessPredicate","isCalendarOpen","host","hasClass","isDisabled","button","coerceBooleanProperty","getAttribute","_openCalendar","click","MatDatepickerActionsHarness","ContentContainerComponentHarness","_applyLocator","locatorForOptional","_cancelLocator","apply","_clickAction","cancel","name","locator","Error"],"mappings":";;;;;;AAcM,MAAOA,0BAA2B,SAAQC,4BAA4B,CAAA;EAC1E,OAAOC,YAAY,GAAG,wBAAwB;AAGtCC,EAAAA,OAAO,GAAG,IAAI,CAACC,UAAU,CAAC,QAAQ,CAAC;AAQ3C,EAAA,OAAOC,IAAIA,CACTC,OAAA,GAA0C,EAAE,EAAA;AAE5C,IAAA,OAAO,IAAIC,gBAAgB,CAACP,0BAA0B,EAAEM,OAAO,CAAC;AAClE,EAAA;EAGA,MAAME,cAAcA,GAAA;IAClB,OAAO,CAAC,MAAM,IAAI,CAACC,IAAI,EAAE,EAAEC,QAAQ,CAAC,8BAA8B,CAAC;AACrE,EAAA;EAGA,MAAMC,UAAUA,GAAA;AACd,IAAA,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACT,OAAO,EAAE;IACnC,OAAOU,qBAAqB,CAAC,MAAMD,MAAM,CAACE,YAAY,CAAC,UAAU,CAAC,CAAC;AACrE,EAAA;EAEU,MAAMC,aAAaA,GAAA;IAC3B,OAAO,CAAC,MAAM,IAAI,CAACZ,OAAO,EAAE,EAAEa,KAAK,EAAE;AACvC,EAAA;;;AC7BI,MAAOC,2BAA4B,SAAQC,gCAAwC,CAAA;EACvF,OAAOhB,YAAY,GAAG,yBAAyB;AAEvCiB,EAAAA,aAAa,GAAG,IAAI,CAACC,kBAAkB,CAC7C,iDAAiD,CAClD;AACOC,EAAAA,cAAc,GAAG,IAAI,CAACD,kBAAkB,CAC9C,mDAAmD,CACpD;AAQD,EAAA,OAAOf,IAAIA,CACTC,OAAA,GAA2C,EAAE,EAAA;AAE7C,IAAA,OAAO,IAAIC,gBAAgB,CAACU,2BAA2B,EAAEX,OAAO,CAAC;AACnE,EAAA;AAGAgB,EAAAA,KAAKA,GAAA;IACH,OAAO,IAAI,CAACC,YAAY,CAAC,OAAO,EAAE,IAAI,CAACJ,aAAa,CAAC;AACvD,EAAA;AAGAK,EAAAA,MAAMA,GAAA;IACJ,OAAO,IAAI,CAACD,YAAY,CAAC,QAAQ,EAAE,IAAI,CAACF,cAAc,CAAC;AACzD,EAAA;AAEQ,EAAA,MAAME,YAAYA,CAACE,IAAY,EAAEC,OAA0C,EAAA;AACjF,IAAA,MAAMd,MAAM,GAAG,MAAMc,OAAO,EAAE;IAE9B,IAAI,CAACd,MAAM,EAAE;AACX,MAAA,MAAM,IAAIe,KAAK,CAAC,CAAA,mCAAA,EAAsCF,IAAI,SAAS,CAAC;AACtE,IAAA;AAEA,IAAA,MAAMb,MAAM,CAACI,KAAK,EAAE;AACtB,EAAA;;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"dialog-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/dialog/testing/dialog-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/dialog/testing/dialog-opener.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\nimport {\n ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessPredicate,\n TestKey,\n} from '@angular/cdk/testing';\nimport {DialogHarnessFilters} from './dialog-harness-filters';\nimport {DialogRole} from '../../dialog';\n\n/** Selectors for different sections of the mat-dialog that can contain user content. */\nexport enum MatDialogSection {\n TITLE = '.mat-mdc-dialog-title',\n CONTENT = '.mat-mdc-dialog-content',\n ACTIONS = '.mat-mdc-dialog-actions',\n}\n\n/** Harness for interacting with a standard `MatDialog` in tests. */\nexport class MatDialogHarness\n // @breaking-change 14.0.0 change generic type to MatDialogSection.\n extends ContentContainerComponentHarness<MatDialogSection | string>\n{\n /** The selector for the host element of a `MatDialog` instance. */\n static hostSelector = '.mat-mdc-dialog-container';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a dialog with specific attributes.\n * @param options Options for filtering which dialog instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatDialogHarness>(\n this: ComponentHarnessConstructor<T>,\n options: DialogHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n protected _title = this.locatorForOptional(MatDialogSection.TITLE);\n protected _content = this.locatorForOptional(MatDialogSection.CONTENT);\n protected _actions = this.locatorForOptional(MatDialogSection.ACTIONS);\n\n /** Gets the id of the dialog. */\n async getId(): Promise<string | null> {\n const id = await (await this.host()).getAttribute('id');\n // In case no id has been specified, the \"id\" property always returns\n // an empty string. To make this method more explicit, we return null.\n return id !== '' ? id : null;\n }\n\n /** Gets the role of the dialog. */\n async getRole(): Promise<DialogRole | null> {\n return (await this.host()).getAttribute('role') as Promise<DialogRole | null>;\n }\n\n /** Gets the value of the dialog's \"aria-label\" attribute. */\n async getAriaLabel(): Promise<string | null> {\n return (await this.host()).getAttribute('aria-label');\n }\n\n /** Gets the value of the dialog's \"aria-labelledby\" attribute. */\n async getAriaLabelledby(): Promise<string | null> {\n return (await this.host()).getAttribute('aria-labelledby');\n }\n\n /** Gets the value of the dialog's \"aria-describedby\" attribute. */\n async getAriaDescribedby(): Promise<string | null> {\n return (await this.host()).getAttribute('aria-describedby');\n }\n\n /**\n * Closes the dialog by pressing escape.\n *\n * Note: this method does nothing if `disableClose` has been set to `true` for the dialog.\n */\n async close(): Promise<void> {\n await (await this.host()).sendKeys(TestKey.ESCAPE);\n }\n\n /** Gets the dialog's text. */\n async getText() {\n return (await this.host()).text();\n }\n\n /** Gets the dialog's title text. This only works if the dialog is using mat-dialog-title. */\n async getTitleText() {\n return (await this._title())?.text() ?? '';\n }\n\n /** Gets the dialog's content text. This only works if the dialog is using mat-dialog-content. */\n async getContentText() {\n return (await this._content())?.text() ?? '';\n }\n\n /** Gets the dialog's actions text. This only works if the dialog is using mat-dialog-actions. */\n async getActionsText() {\n return (await this._actions())?.text() ?? '';\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 {ComponentType} from '@angular/cdk/overlay';\nimport {\n ChangeDetectionStrategy,\n Component,\n NgModule,\n NgZone,\n OnDestroy,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport {MatDialog, MatDialogConfig, MatDialogModule, MatDialogRef} from '../../dialog';\nimport {Subscription} from 'rxjs';\nimport {AnimationsConfig, MATERIAL_ANIMATIONS} from '@angular/material/core';\n\n/** Test component that immediately opens a dialog when bootstrapped. */\n@Component({\n selector: 'mat-test-dialog-opener',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatTestDialogOpener<T = unknown, R = unknown> implements OnDestroy {\n dialog = inject(MatDialog);\n\n /** Component that should be opened with the MatDialog `open` method. */\n protected static component: ComponentType<unknown> | undefined;\n\n /** Config that should be provided to the MatDialog `open` method. */\n protected static config: MatDialogConfig | undefined;\n\n /** MatDialogRef returned from the MatDialog `open` method. */\n dialogRef: MatDialogRef<T, R>;\n\n /** Data passed to the `MatDialog` close method. */\n closedResult: R | undefined;\n\n private readonly _afterClosedSubscription: Subscription;\n\n private readonly _ngZone = inject(NgZone);\n\n /** Static method that prepares this class to open the provided component. */\n static withComponent<T = unknown, R = unknown>(\n component: ComponentType<T>,\n config?: MatDialogConfig,\n ) {\n MatTestDialogOpener.component = component;\n MatTestDialogOpener.config = config;\n return MatTestDialogOpener as ComponentType<MatTestDialogOpener<T, R>>;\n }\n\n constructor(...args: unknown[]);\n\n constructor() {\n if (!MatTestDialogOpener.component) {\n throw new Error(`MatTestDialogOpener does not have a component provided.`);\n }\n\n this.dialogRef = this._ngZone.run(() => {\n const config = {...(MatTestDialogOpener.config || {})};\n config.enterAnimationDuration = 0;\n config.exitAnimationDuration = 0;\n return this.dialog.open<T, R>(MatTestDialogOpener.component as ComponentType<T>, config);\n });\n this._afterClosedSubscription = this.dialogRef.afterClosed().subscribe(result => {\n this.closedResult = result;\n });\n }\n\n ngOnDestroy() {\n this._afterClosedSubscription.unsubscribe();\n MatTestDialogOpener.component = undefined;\n MatTestDialogOpener.config = undefined;\n }\n}\n\n@NgModule({\n imports: [MatDialogModule, MatTestDialogOpener],\n providers: [\n {\n provide: MATERIAL_ANIMATIONS,\n useValue: {\n animationsDisabled: true,\n } as AnimationsConfig,\n },\n ],\n})\nexport class MatTestDialogOpenerModule {}\n"],"names":["MatDialogSection","MatDialogHarness","ContentContainerComponentHarness","hostSelector","with","options","HarnessPredicate","_title","locatorForOptional","TITLE","_content","CONTENT","_actions","ACTIONS","getId","id","host","getAttribute","getRole","getAriaLabel","getAriaLabelledby","getAriaDescribedby","close","sendKeys","TestKey","ESCAPE","getText","text","getTitleText","getContentText","getActionsText","MatTestDialogOpener","dialog","inject","MatDialog","component","config","dialogRef","closedResult","_afterClosedSubscription","_ngZone","NgZone","withComponent","MatTestDialogOpener_1","constructor","Error","run","enterAnimationDuration","exitAnimationDuration","open","afterClosed","subscribe","result","ngOnDestroy","unsubscribe","undefined","__decorate","Component","selector","template","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","MatTestDialogOpenerModule","NgModule","imports","MatDialogModule","providers","provide","MATERIAL_ANIMATIONS","useValue","animationsDisabled"],"mappings":"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"}
{"version":3,"file":"dialog-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/dialog/testing/dialog-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/dialog/testing/dialog-opener.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\nimport {\n ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessPredicate,\n TestKey,\n} from '@angular/cdk/testing';\nimport {DialogHarnessFilters} from './dialog-harness-filters';\nimport {DialogRole} from '../../dialog';\n\n/** Selectors for different sections of the mat-dialog that can contain user content. */\nexport enum MatDialogSection {\n TITLE = '.mat-mdc-dialog-title',\n CONTENT = '.mat-mdc-dialog-content',\n ACTIONS = '.mat-mdc-dialog-actions',\n}\n\n/** Harness for interacting with a standard `MatDialog` in tests. */\nexport class MatDialogHarness\n // @breaking-change 14.0.0 change generic type to MatDialogSection.\n extends ContentContainerComponentHarness<MatDialogSection | string>\n{\n /** The selector for the host element of a `MatDialog` instance. */\n static hostSelector = '.mat-mdc-dialog-container';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a dialog with specific attributes.\n * @param options Options for filtering which dialog instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatDialogHarness>(\n this: ComponentHarnessConstructor<T>,\n options: DialogHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n protected _title = this.locatorForOptional(MatDialogSection.TITLE);\n protected _content = this.locatorForOptional(MatDialogSection.CONTENT);\n protected _actions = this.locatorForOptional(MatDialogSection.ACTIONS);\n\n /** Gets the id of the dialog. */\n async getId(): Promise<string | null> {\n const id = await (await this.host()).getAttribute('id');\n // In case no id has been specified, the \"id\" property always returns\n // an empty string. To make this method more explicit, we return null.\n return id !== '' ? id : null;\n }\n\n /** Gets the role of the dialog. */\n async getRole(): Promise<DialogRole | null> {\n return (await this.host()).getAttribute('role') as Promise<DialogRole | null>;\n }\n\n /** Gets the value of the dialog's \"aria-label\" attribute. */\n async getAriaLabel(): Promise<string | null> {\n return (await this.host()).getAttribute('aria-label');\n }\n\n /** Gets the value of the dialog's \"aria-labelledby\" attribute. */\n async getAriaLabelledby(): Promise<string | null> {\n return (await this.host()).getAttribute('aria-labelledby');\n }\n\n /** Gets the value of the dialog's \"aria-describedby\" attribute. */\n async getAriaDescribedby(): Promise<string | null> {\n return (await this.host()).getAttribute('aria-describedby');\n }\n\n /**\n * Closes the dialog by pressing escape.\n *\n * Note: this method does nothing if `disableClose` has been set to `true` for the dialog.\n */\n async close(): Promise<void> {\n await (await this.host()).sendKeys(TestKey.ESCAPE);\n }\n\n /** Gets the dialog's text. */\n async getText() {\n return (await this.host()).text();\n }\n\n /** Gets the dialog's title text. This only works if the dialog is using mat-dialog-title. */\n async getTitleText() {\n return (await this._title())?.text() ?? '';\n }\n\n /** Gets the dialog's content text. This only works if the dialog is using mat-dialog-content. */\n async getContentText() {\n return (await this._content())?.text() ?? '';\n }\n\n /** Gets the dialog's actions text. This only works if the dialog is using mat-dialog-actions. */\n async getActionsText() {\n return (await this._actions())?.text() ?? '';\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 {ComponentType} from '@angular/cdk/overlay';\nimport {\n ChangeDetectionStrategy,\n Component,\n NgModule,\n NgZone,\n OnDestroy,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport {MatDialog, MatDialogConfig, MatDialogModule, MatDialogRef} from '../../dialog';\nimport {Subscription} from 'rxjs';\nimport {AnimationsConfig, MATERIAL_ANIMATIONS} from '@angular/material/core';\n\n/** Test component that immediately opens a dialog when bootstrapped. */\n@Component({\n selector: 'mat-test-dialog-opener',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatTestDialogOpener<T = unknown, R = unknown> implements OnDestroy {\n dialog = inject(MatDialog);\n\n /** Component that should be opened with the MatDialog `open` method. */\n protected static component: ComponentType<unknown> | undefined;\n\n /** Config that should be provided to the MatDialog `open` method. */\n protected static config: MatDialogConfig | undefined;\n\n /** MatDialogRef returned from the MatDialog `open` method. */\n dialogRef: MatDialogRef<T, R>;\n\n /** Data passed to the `MatDialog` close method. */\n closedResult: R | undefined;\n\n private readonly _afterClosedSubscription: Subscription;\n\n private readonly _ngZone = inject(NgZone);\n\n /** Static method that prepares this class to open the provided component. */\n static withComponent<T = unknown, R = unknown>(\n component: ComponentType<T>,\n config?: MatDialogConfig,\n ) {\n MatTestDialogOpener.component = component;\n MatTestDialogOpener.config = config;\n return MatTestDialogOpener as ComponentType<MatTestDialogOpener<T, R>>;\n }\n\n constructor(...args: unknown[]);\n\n constructor() {\n if (!MatTestDialogOpener.component) {\n throw new Error(`MatTestDialogOpener does not have a component provided.`);\n }\n\n this.dialogRef = this._ngZone.run(() => {\n const config = {...(MatTestDialogOpener.config || {})};\n config.enterAnimationDuration = 0;\n config.exitAnimationDuration = 0;\n return this.dialog.open<T, R>(MatTestDialogOpener.component as ComponentType<T>, config);\n });\n this._afterClosedSubscription = this.dialogRef.afterClosed().subscribe(result => {\n this.closedResult = result;\n });\n }\n\n ngOnDestroy() {\n this._afterClosedSubscription.unsubscribe();\n MatTestDialogOpener.component = undefined;\n MatTestDialogOpener.config = undefined;\n }\n}\n\n@NgModule({\n imports: [MatDialogModule, MatTestDialogOpener],\n providers: [\n {\n provide: MATERIAL_ANIMATIONS,\n useValue: {\n animationsDisabled: true,\n } as AnimationsConfig,\n },\n ],\n})\nexport class MatTestDialogOpenerModule {}\n"],"names":["MatDialogSection","MatDialogHarness","ContentContainerComponentHarness","hostSelector","with","options","HarnessPredicate","_title","locatorForOptional","TITLE","_content","CONTENT","_actions","ACTIONS","getId","id","host","getAttribute","getRole","getAriaLabel","getAriaLabelledby","getAriaDescribedby","close","sendKeys","TestKey","ESCAPE","getText","text","getTitleText","getContentText","getActionsText","MatTestDialogOpener","dialog","inject","MatDialog","component","config","dialogRef","closedResult","_afterClosedSubscription","_ngZone","NgZone","withComponent","MatTestDialogOpener_1","constructor","Error","run","enterAnimationDuration","exitAnimationDuration","open","afterClosed","subscribe","result","ngOnDestroy","unsubscribe","undefined","__decorate","Component","selector","template","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","MatTestDialogOpenerModule","NgModule","imports","MatDialogModule","providers","provide","MATERIAL_ANIMATIONS","useValue","animationsDisabled"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"divider-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/divider/testing/divider-harness.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\nimport {ComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {DividerHarnessFilters} from './divider-harness-filters';\n\n/** Harness for interacting with a `mat-divider`. */\nexport class MatDividerHarness extends ComponentHarness {\n static hostSelector = '.mat-divider';\n\n static with(options: DividerHarnessFilters = {}) {\n return new HarnessPredicate(MatDividerHarness, options);\n }\n\n async getOrientation(): Promise<'horizontal' | 'vertical'> {\n return (await this.host()).getAttribute('aria-orientation') as Promise<\n 'horizontal' | 'vertical'\n >;\n }\n\n async isInset(): Promise<boolean> {\n return (await this.host()).hasClass('mat-divider-inset');\n }\n}\n"],"names":["MatDividerHarness","ComponentHarness","hostSelector","with","options","HarnessPredicate","getOrientation","host","getAttribute","isInset","hasClass"],"mappings":";;AAYM,MAAOA,iBAAkB,SAAQC,gBAAgB,CAAA;EACrD,OAAOC,YAAY,GAAG,cAAc;AAEpC,EAAA,OAAOC,IAAIA,CAACC,OAAA,GAAiC,EAAE,EAAA;AAC7C,IAAA,OAAO,IAAIC,gBAAgB,CAACL,iBAAiB,EAAEI,OAAO,CAAC;AACzD,EAAA;EAEA,MAAME,cAAcA,GAAA;IAClB,OAAO,CAAC,MAAM,IAAI,CAACC,IAAI,EAAE,EAAEC,YAAY,CAAC,kBAAkB,CAEzD;AACH,EAAA;EAEA,MAAMC,OAAOA,GAAA;IACX,OAAO,CAAC,MAAM,IAAI,CAACF,IAAI,EAAE,EAAEG,QAAQ,CAAC,mBAAmB,CAAC;AAC1D,EAAA;;;;;"}
{"version":3,"file":"divider-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/divider/testing/divider-harness.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\nimport {ComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {DividerHarnessFilters} from './divider-harness-filters';\n\n/** Harness for interacting with a `mat-divider`. */\nexport class MatDividerHarness extends ComponentHarness {\n static hostSelector = '.mat-divider';\n\n static with(options: DividerHarnessFilters = {}) {\n return new HarnessPredicate(MatDividerHarness, options);\n }\n\n async getOrientation(): Promise<'horizontal' | 'vertical'> {\n return (await this.host()).getAttribute('aria-orientation') as Promise<\n 'horizontal' | 'vertical'\n >;\n }\n\n async isInset(): Promise<boolean> {\n return (await this.host()).hasClass('mat-divider-inset');\n }\n}\n"],"names":["MatDividerHarness","ComponentHarness","hostSelector","with","options","HarnessPredicate","getOrientation","host","getAttribute","isInset","hasClass"],"mappings":";;AAYM,MAAOA,iBAAkB,SAAQC,gBAAgB,CAAA;EACrD,OAAOC,YAAY,GAAG,cAAc;AAEpC,EAAA,OAAOC,IAAIA,CAACC,OAAA,GAAiC,EAAE,EAAA;AAC7C,IAAA,OAAO,IAAIC,gBAAgB,CAACL,iBAAiB,EAAEI,OAAO,CAAC;AACzD,EAAA;EAEA,MAAME,cAAcA,GAAA;IAClB,OAAO,CAAC,MAAM,IAAI,CAACC,IAAI,EAAE,EAAEC,YAAY,CAAC,kBAAkB,CAEzD;AACH,EAAA;EAEA,MAAMC,OAAOA,GAAA;IACX,OAAO,CAAC,MAAM,IAAI,CAACF,IAAI,EAAE,EAAEG,QAAQ,CAAC,mBAAmB,CAAC;AAC1D,EAAA;;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"divider.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/divider/divider.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/divider/divider-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\nimport {ChangeDetectionStrategy, Component, Input, ViewEncapsulation} from '@angular/core';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\n\n@Component({\n selector: 'mat-divider',\n host: {\n 'role': 'separator',\n '[attr.aria-orientation]': 'vertical ? \"vertical\" : \"horizontal\"',\n '[class.mat-divider-vertical]': 'vertical',\n '[class.mat-divider-horizontal]': '!vertical',\n '[class.mat-divider-inset]': 'inset',\n 'class': 'mat-divider',\n },\n template: '',\n styleUrl: 'divider.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatDivider {\n /** Whether the divider is vertically aligned. */\n @Input()\n get vertical(): boolean {\n return this._vertical;\n }\n set vertical(value: BooleanInput) {\n this._vertical = coerceBooleanProperty(value);\n }\n private _vertical: boolean = false;\n\n /** Whether the divider is an inset divider. */\n @Input()\n get inset(): boolean {\n return this._inset;\n }\n set inset(value: BooleanInput) {\n this._inset = coerceBooleanProperty(value);\n }\n private _inset: boolean = false;\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 {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\nimport {MatDivider} from './divider';\n\n@NgModule({\n imports: [MatDivider],\n exports: [MatDivider, BidiModule],\n})\nexport class MatDividerModule {}\n"],"names":["MatDivider","vertical","_vertical","value","coerceBooleanProperty","inset","_inset","deps","target","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","isInline","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","args","selector","host","template","Input","MatDividerModule","NgModule","ɵmod","ɵɵngDeclareNgModule","ngImport","imports","exports","BidiModule","ɵinj","ɵɵngDeclareInjector"],"mappings":"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"}
{"version":3,"file":"divider.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/divider/divider.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/divider/divider-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\nimport {ChangeDetectionStrategy, Component, Input, ViewEncapsulation} from '@angular/core';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\n\n@Component({\n selector: 'mat-divider',\n host: {\n 'role': 'separator',\n '[attr.aria-orientation]': 'vertical ? \"vertical\" : \"horizontal\"',\n '[class.mat-divider-vertical]': 'vertical',\n '[class.mat-divider-horizontal]': '!vertical',\n '[class.mat-divider-inset]': 'inset',\n 'class': 'mat-divider',\n },\n template: '',\n styleUrl: 'divider.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatDivider {\n /** Whether the divider is vertically aligned. */\n @Input()\n get vertical(): boolean {\n return this._vertical;\n }\n set vertical(value: BooleanInput) {\n this._vertical = coerceBooleanProperty(value);\n }\n private _vertical: boolean = false;\n\n /** Whether the divider is an inset divider. */\n @Input()\n get inset(): boolean {\n return this._inset;\n }\n set inset(value: BooleanInput) {\n this._inset = coerceBooleanProperty(value);\n }\n private _inset: boolean = false;\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 {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\nimport {MatDivider} from './divider';\n\n@NgModule({\n imports: [MatDivider],\n exports: [MatDivider, BidiModule],\n})\nexport class MatDividerModule {}\n"],"names":["MatDivider","vertical","_vertical","value","coerceBooleanProperty","inset","_inset","deps","target","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","isInline","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","args","selector","host","template","Input","MatDividerModule","NgModule","ɵmod","ɵɵngDeclareNgModule","ngImport","imports","exports","BidiModule","ɵinj","ɵɵngDeclareInjector"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"expansion-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/expansion/testing/expansion-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/expansion/testing/accordion-harness.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\nimport {\n ContentContainerComponentHarness,\n HarnessLoader,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {ExpansionPanelHarnessFilters} from './expansion-harness-filters';\n\n/** Selectors for the various `mat-expansion-panel` sections that may contain user content. */\nexport enum MatExpansionPanelSection {\n HEADER = '.mat-expansion-panel-header',\n TITLE = '.mat-expansion-panel-header-title',\n DESCRIPTION = '.mat-expansion-panel-header-description',\n CONTENT = '.mat-expansion-panel-content',\n}\n\n/** Harness for interacting with a standard mat-expansion-panel in tests. */\nexport class MatExpansionPanelHarness extends ContentContainerComponentHarness<MatExpansionPanelSection> {\n static hostSelector = '.mat-expansion-panel';\n\n private _header = this.locatorFor(MatExpansionPanelSection.HEADER);\n private _title = this.locatorForOptional(MatExpansionPanelSection.TITLE);\n private _description = this.locatorForOptional(MatExpansionPanelSection.DESCRIPTION);\n private _expansionIndicator = this.locatorForOptional('.mat-expansion-indicator');\n private _content = this.locatorFor(MatExpansionPanelSection.CONTENT);\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for an expansion-panel\n * with specific attributes.\n * @param options Options for narrowing the search:\n * - `title` finds an expansion-panel with a specific title text.\n * - `description` finds an expansion-panel with a specific description text.\n * - `expanded` finds an expansion-panel that is currently expanded.\n * - `disabled` finds an expansion-panel that is disabled.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: ExpansionPanelHarnessFilters = {},\n ): HarnessPredicate<MatExpansionPanelHarness> {\n return new HarnessPredicate(MatExpansionPanelHarness, options)\n .addOption('title', options.title, (harness, title) =>\n HarnessPredicate.stringMatches(harness.getTitle(), title),\n )\n .addOption('description', options.description, (harness, description) =>\n HarnessPredicate.stringMatches(harness.getDescription(), description),\n )\n .addOption('content', options.content, (harness, content) =>\n HarnessPredicate.stringMatches(harness.getTextContent(), content),\n )\n .addOption(\n 'expanded',\n options.expanded,\n async (harness, expanded) => (await harness.isExpanded()) === expanded,\n )\n .addOption(\n 'disabled',\n options.disabled,\n async (harness, disabled) => (await harness.isDisabled()) === disabled,\n );\n }\n\n /** Whether the panel is expanded. */\n async isExpanded(): Promise<boolean> {\n return (await this.host()).hasClass('mat-expanded');\n }\n\n /**\n * Gets the title text of the panel.\n * @returns Title text or `null` if no title is set up.\n */\n async getTitle(): Promise<string | null> {\n const titleEl = await this._title();\n return titleEl ? titleEl.text() : null;\n }\n\n /**\n * Gets the description text of the panel.\n * @returns Description text or `null` if no description is set up.\n */\n async getDescription(): Promise<string | null> {\n const descriptionEl = await this._description();\n return descriptionEl ? descriptionEl.text() : null;\n }\n\n /** Whether the panel is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await (await this._header()).getAttribute('aria-disabled')) === 'true';\n }\n\n /**\n * Toggles the expanded state of the panel by clicking on the panel\n * header. This method will not work if the panel is disabled.\n */\n async toggle(): Promise<void> {\n await (await this._header()).click();\n }\n\n /** Expands the expansion panel if collapsed. */\n async expand(): Promise<void> {\n if (!(await this.isExpanded())) {\n await this.toggle();\n }\n }\n\n /** Collapses the expansion panel if expanded. */\n async collapse(): Promise<void> {\n if (await this.isExpanded()) {\n await this.toggle();\n }\n }\n\n /** Gets the text content of the panel. */\n async getTextContent(): Promise<string> {\n return (await this._content()).text();\n }\n\n /**\n * Gets a `HarnessLoader` that can be used to load harnesses for\n * components within the panel's content area.\n * @deprecated Use either `getChildLoader(MatExpansionPanelSection.CONTENT)`, `getHarness` or\n * `getAllHarnesses` instead.\n * @breaking-change 12.0.0\n */\n async getHarnessLoaderForContent(): Promise<HarnessLoader> {\n return this.getChildLoader(MatExpansionPanelSection.CONTENT);\n }\n\n /** Focuses the panel. */\n async focus(): Promise<void> {\n return (await this._header()).focus();\n }\n\n /** Blurs the panel. */\n async blur(): Promise<void> {\n return (await this._header()).blur();\n }\n\n /** Whether the panel is focused. */\n async isFocused(): Promise<boolean> {\n return (await this._header()).isFocused();\n }\n\n /** Whether the panel has a toggle indicator displayed. */\n async hasToggleIndicator(): Promise<boolean> {\n return (await this._expansionIndicator()) !== null;\n }\n\n /** Gets the position of the toggle indicator. */\n async getToggleIndicatorPosition(): Promise<'before' | 'after'> {\n // By default the expansion indicator will show \"after\" the panel header content.\n if (await (await this._header()).hasClass('mat-expansion-toggle-indicator-before')) {\n return 'before';\n }\n return 'after';\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 {ComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {MatExpansionPanelHarness} from './expansion-harness';\nimport {AccordionHarnessFilters, ExpansionPanelHarnessFilters} from './expansion-harness-filters';\n\n/** Harness for interacting with a standard mat-accordion in tests. */\nexport class MatAccordionHarness extends ComponentHarness {\n static hostSelector = '.mat-accordion';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for an accordion\n * with specific attributes.\n * @param options Options for narrowing the search.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: AccordionHarnessFilters = {}): HarnessPredicate<MatAccordionHarness> {\n return new HarnessPredicate(MatAccordionHarness, options);\n }\n\n /** Gets all expansion panels which are part of the accordion. */\n async getExpansionPanels(\n filter: ExpansionPanelHarnessFilters = {},\n ): Promise<MatExpansionPanelHarness[]> {\n return this.locatorForAll(MatExpansionPanelHarness.with(filter))();\n }\n\n /** Whether the accordion allows multiple expanded panels simultaneously. */\n async isMulti(): Promise<boolean> {\n return (await this.host()).hasClass('mat-accordion-multi');\n }\n}\n"],"names":["MatExpansionPanelSection","MatExpansionPanelHarness","ContentContainerComponentHarness","hostSelector","_header","locatorFor","HEADER","_title","locatorForOptional","TITLE","_description","DESCRIPTION","_expansionIndicator","_content","CONTENT","with","options","HarnessPredicate","addOption","title","harness","stringMatches","getTitle","description","getDescription","content","getTextContent","expanded","isExpanded","disabled","isDisabled","host","hasClass","titleEl","text","descriptionEl","getAttribute","toggle","click","expand","collapse","getHarnessLoaderForContent","getChildLoader","focus","blur","isFocused","hasToggleIndicator","getToggleIndicatorPosition","MatAccordionHarness","ComponentHarness","getExpansionPanels","filter","locatorForAll","isMulti"],"mappings":"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"}
{"version":3,"file":"expansion-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/expansion/testing/expansion-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/expansion/testing/accordion-harness.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\nimport {\n ContentContainerComponentHarness,\n HarnessLoader,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {ExpansionPanelHarnessFilters} from './expansion-harness-filters';\n\n/** Selectors for the various `mat-expansion-panel` sections that may contain user content. */\nexport enum MatExpansionPanelSection {\n HEADER = '.mat-expansion-panel-header',\n TITLE = '.mat-expansion-panel-header-title',\n DESCRIPTION = '.mat-expansion-panel-header-description',\n CONTENT = '.mat-expansion-panel-content',\n}\n\n/** Harness for interacting with a standard mat-expansion-panel in tests. */\nexport class MatExpansionPanelHarness extends ContentContainerComponentHarness<MatExpansionPanelSection> {\n static hostSelector = '.mat-expansion-panel';\n\n private _header = this.locatorFor(MatExpansionPanelSection.HEADER);\n private _title = this.locatorForOptional(MatExpansionPanelSection.TITLE);\n private _description = this.locatorForOptional(MatExpansionPanelSection.DESCRIPTION);\n private _expansionIndicator = this.locatorForOptional('.mat-expansion-indicator');\n private _content = this.locatorFor(MatExpansionPanelSection.CONTENT);\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for an expansion-panel\n * with specific attributes.\n * @param options Options for narrowing the search:\n * - `title` finds an expansion-panel with a specific title text.\n * - `description` finds an expansion-panel with a specific description text.\n * - `expanded` finds an expansion-panel that is currently expanded.\n * - `disabled` finds an expansion-panel that is disabled.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: ExpansionPanelHarnessFilters = {},\n ): HarnessPredicate<MatExpansionPanelHarness> {\n return new HarnessPredicate(MatExpansionPanelHarness, options)\n .addOption('title', options.title, (harness, title) =>\n HarnessPredicate.stringMatches(harness.getTitle(), title),\n )\n .addOption('description', options.description, (harness, description) =>\n HarnessPredicate.stringMatches(harness.getDescription(), description),\n )\n .addOption('content', options.content, (harness, content) =>\n HarnessPredicate.stringMatches(harness.getTextContent(), content),\n )\n .addOption(\n 'expanded',\n options.expanded,\n async (harness, expanded) => (await harness.isExpanded()) === expanded,\n )\n .addOption(\n 'disabled',\n options.disabled,\n async (harness, disabled) => (await harness.isDisabled()) === disabled,\n );\n }\n\n /** Whether the panel is expanded. */\n async isExpanded(): Promise<boolean> {\n return (await this.host()).hasClass('mat-expanded');\n }\n\n /**\n * Gets the title text of the panel.\n * @returns Title text or `null` if no title is set up.\n */\n async getTitle(): Promise<string | null> {\n const titleEl = await this._title();\n return titleEl ? titleEl.text() : null;\n }\n\n /**\n * Gets the description text of the panel.\n * @returns Description text or `null` if no description is set up.\n */\n async getDescription(): Promise<string | null> {\n const descriptionEl = await this._description();\n return descriptionEl ? descriptionEl.text() : null;\n }\n\n /** Whether the panel is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await (await this._header()).getAttribute('aria-disabled')) === 'true';\n }\n\n /**\n * Toggles the expanded state of the panel by clicking on the panel\n * header. This method will not work if the panel is disabled.\n */\n async toggle(): Promise<void> {\n await (await this._header()).click();\n }\n\n /** Expands the expansion panel if collapsed. */\n async expand(): Promise<void> {\n if (!(await this.isExpanded())) {\n await this.toggle();\n }\n }\n\n /** Collapses the expansion panel if expanded. */\n async collapse(): Promise<void> {\n if (await this.isExpanded()) {\n await this.toggle();\n }\n }\n\n /** Gets the text content of the panel. */\n async getTextContent(): Promise<string> {\n return (await this._content()).text();\n }\n\n /**\n * Gets a `HarnessLoader` that can be used to load harnesses for\n * components within the panel's content area.\n * @deprecated Use either `getChildLoader(MatExpansionPanelSection.CONTENT)`, `getHarness` or\n * `getAllHarnesses` instead.\n * @breaking-change 12.0.0\n */\n async getHarnessLoaderForContent(): Promise<HarnessLoader> {\n return this.getChildLoader(MatExpansionPanelSection.CONTENT);\n }\n\n /** Focuses the panel. */\n async focus(): Promise<void> {\n return (await this._header()).focus();\n }\n\n /** Blurs the panel. */\n async blur(): Promise<void> {\n return (await this._header()).blur();\n }\n\n /** Whether the panel is focused. */\n async isFocused(): Promise<boolean> {\n return (await this._header()).isFocused();\n }\n\n /** Whether the panel has a toggle indicator displayed. */\n async hasToggleIndicator(): Promise<boolean> {\n return (await this._expansionIndicator()) !== null;\n }\n\n /** Gets the position of the toggle indicator. */\n async getToggleIndicatorPosition(): Promise<'before' | 'after'> {\n // By default the expansion indicator will show \"after\" the panel header content.\n if (await (await this._header()).hasClass('mat-expansion-toggle-indicator-before')) {\n return 'before';\n }\n return 'after';\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 {ComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {MatExpansionPanelHarness} from './expansion-harness';\nimport {AccordionHarnessFilters, ExpansionPanelHarnessFilters} from './expansion-harness-filters';\n\n/** Harness for interacting with a standard mat-accordion in tests. */\nexport class MatAccordionHarness extends ComponentHarness {\n static hostSelector = '.mat-accordion';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for an accordion\n * with specific attributes.\n * @param options Options for narrowing the search.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: AccordionHarnessFilters = {}): HarnessPredicate<MatAccordionHarness> {\n return new HarnessPredicate(MatAccordionHarness, options);\n }\n\n /** Gets all expansion panels which are part of the accordion. */\n async getExpansionPanels(\n filter: ExpansionPanelHarnessFilters = {},\n ): Promise<MatExpansionPanelHarness[]> {\n return this.locatorForAll(MatExpansionPanelHarness.with(filter))();\n }\n\n /** Whether the accordion allows multiple expanded panels simultaneously. */\n async isMulti(): Promise<boolean> {\n return (await this.host()).hasClass('mat-accordion-multi');\n }\n}\n"],"names":["MatExpansionPanelSection","MatExpansionPanelHarness","ContentContainerComponentHarness","hostSelector","_header","locatorFor","HEADER","_title","locatorForOptional","TITLE","_description","DESCRIPTION","_expansionIndicator","_content","CONTENT","with","options","HarnessPredicate","addOption","title","harness","stringMatches","getTitle","description","getDescription","content","getTextContent","expanded","isExpanded","disabled","isDisabled","host","hasClass","titleEl","text","descriptionEl","getAttribute","toggle","click","expand","collapse","getHarnessLoaderForContent","getChildLoader","focus","blur","isFocused","hasToggleIndicator","getToggleIndicatorPosition","MatAccordionHarness","ComponentHarness","getExpansionPanels","filter","locatorForAll","isMulti"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"expansion.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/expansion/accordion-base.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/expansion/expansion-panel-base.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/expansion/expansion-panel-content.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/expansion/expansion-panel.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/expansion/expansion-panel.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/expansion/expansion-panel-header.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/expansion/expansion-panel-header.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/expansion/accordion.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/expansion/expansion-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\nimport {InjectionToken} from '@angular/core';\nimport {CdkAccordion} from '@angular/cdk/accordion';\n\n/** MatAccordion's display modes. */\nexport type MatAccordionDisplayMode = 'default' | 'flat';\n\n/** MatAccordion's toggle positions. */\nexport type MatAccordionTogglePosition = 'before' | 'after';\n\n/**\n * Base interface for a `MatAccordion`.\n * @docs-private\n */\nexport interface MatAccordionBase extends CdkAccordion {\n /** Whether the expansion indicator should be hidden. */\n hideToggle: boolean;\n\n /** Display mode used for all expansion panels in the accordion. */\n displayMode: MatAccordionDisplayMode;\n\n /** The position of the expansion indicator. */\n togglePosition: MatAccordionTogglePosition;\n\n /** Handles keyboard events coming in from the panel headers. */\n _handleHeaderKeydown: (event: KeyboardEvent) => void;\n\n /** Handles focus events on the panel headers. */\n _handleHeaderFocus: (header: any) => void;\n}\n\n/**\n * Token used to provide a `MatAccordion` to `MatExpansionPanel`.\n * Used primarily to avoid circular imports between `MatAccordion` and `MatExpansionPanel`.\n */\nexport const MAT_ACCORDION = new InjectionToken<MatAccordionBase>('MAT_ACCORDION');\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 {InjectionToken} from '@angular/core';\nimport {CdkAccordionItem} from '@angular/cdk/accordion';\n\n/**\n * Base interface for a `MatExpansionPanel`.\n * @docs-private\n */\nexport interface MatExpansionPanelBase extends CdkAccordionItem {\n /** Whether the toggle indicator should be hidden. */\n hideToggle: boolean;\n}\n\n/**\n * Token used to provide a `MatExpansionPanel` to `MatExpansionPanelContent`.\n * Used to avoid circular imports between `MatExpansionPanel` and `MatExpansionPanelContent`.\n */\nexport const MAT_EXPANSION_PANEL = new InjectionToken<MatExpansionPanelBase>('MAT_EXPANSION_PANEL');\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 {Directive, TemplateRef, inject} from '@angular/core';\nimport {MAT_EXPANSION_PANEL, MatExpansionPanelBase} from './expansion-panel-base';\n\n/**\n * Expansion panel content that will be rendered lazily\n * after the panel is opened for the first time.\n */\n@Directive({\n selector: 'ng-template[matExpansionPanelContent]',\n})\nexport class MatExpansionPanelContent {\n _template = inject<TemplateRef<any>>(TemplateRef);\n _expansionPanel = inject<MatExpansionPanelBase>(MAT_EXPANSION_PANEL, {optional: true});\n\n constructor(...args: unknown[]);\n constructor() {}\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 {CdkAccordionItem} from '@angular/cdk/accordion';\nimport {UniqueSelectionDispatcher} from '@angular/cdk/collections';\nimport {CdkPortalOutlet, TemplatePortal} from '@angular/cdk/portal';\n\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n InjectionToken,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n NgZone,\n Renderer2,\n DOCUMENT,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {Subject} from 'rxjs';\nimport {filter, startWith, take} from 'rxjs/operators';\nimport {MatAccordionBase, MatAccordionTogglePosition, MAT_ACCORDION} from './accordion-base';\nimport {MAT_EXPANSION_PANEL} from './expansion-panel-base';\nimport {MatExpansionPanelContent} from './expansion-panel-content';\nimport {_animationsDisabled} from '../core';\n\n/** MatExpansionPanel's states. */\nexport type MatExpansionPanelState = 'expanded' | 'collapsed';\n\n/**\n * Object that can be used to override the default options\n * for all of the expansion panels in a module.\n */\nexport interface MatExpansionPanelDefaultOptions {\n /** Height of the header while the panel is expanded. */\n expandedHeight: string;\n\n /** Height of the header while the panel is collapsed. */\n collapsedHeight: string;\n\n /** Whether the toggle indicator should be hidden. */\n hideToggle: boolean;\n}\n\n/**\n * Injection token that can be used to configure the default\n * options for the expansion panel component.\n */\nexport const MAT_EXPANSION_PANEL_DEFAULT_OPTIONS =\n new InjectionToken<MatExpansionPanelDefaultOptions>('MAT_EXPANSION_PANEL_DEFAULT_OPTIONS');\n\n/**\n * This component can be used as a single element to show expandable content, or as one of\n * multiple children of an element with the MatAccordion directive attached.\n */\n@Component({\n styleUrl: 'expansion-panel.css',\n selector: 'mat-expansion-panel',\n exportAs: 'matExpansionPanel',\n templateUrl: 'expansion-panel.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n // Provide MatAccordion as undefined to prevent nested expansion panels from registering\n // to the same accordion.\n {provide: MAT_ACCORDION, useValue: undefined},\n {provide: MAT_EXPANSION_PANEL, useExisting: MatExpansionPanel},\n ],\n host: {\n 'class': 'mat-expansion-panel',\n '[class.mat-expanded]': 'expanded',\n '[class.mat-expansion-panel-spacing]': '_hasSpacing()',\n },\n imports: [CdkPortalOutlet],\n})\nexport class MatExpansionPanel\n extends CdkAccordionItem\n implements AfterContentInit, OnChanges, OnDestroy\n{\n private _viewContainerRef = inject(ViewContainerRef);\n private readonly _animationsDisabled = _animationsDisabled();\n private _document = inject(DOCUMENT);\n private _ngZone = inject(NgZone);\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _renderer = inject(Renderer2);\n private _cleanupTransitionEnd: (() => void) | undefined;\n\n /** Whether the toggle indicator should be hidden. */\n @Input({transform: booleanAttribute})\n get hideToggle(): boolean {\n return this._hideToggle || (this.accordion && this.accordion.hideToggle);\n }\n set hideToggle(value: boolean) {\n this._hideToggle = value;\n }\n private _hideToggle = false;\n\n /** The position of the expansion indicator. */\n @Input()\n get togglePosition(): MatAccordionTogglePosition {\n return this._togglePosition || (this.accordion && this.accordion.togglePosition);\n }\n set togglePosition(value: MatAccordionTogglePosition) {\n this._togglePosition = value;\n }\n private _togglePosition!: MatAccordionTogglePosition;\n\n /** An event emitted after the body's expansion animation happens. */\n @Output() readonly afterExpand = new EventEmitter<void>();\n\n /** An event emitted after the body's collapse animation happens. */\n @Output() readonly afterCollapse = new EventEmitter<void>();\n\n /** Stream that emits for changes in `@Input` properties. */\n readonly _inputChanges = new Subject<SimpleChanges>();\n\n /** Optionally defined accordion the expansion panel belongs to. */\n override accordion = inject<MatAccordionBase>(MAT_ACCORDION, {optional: true, skipSelf: true})!;\n\n /** Content that will be rendered lazily. */\n @ContentChild(MatExpansionPanelContent) _lazyContent!: MatExpansionPanelContent;\n\n /** Element containing the panel's user-provided content. */\n @ViewChild('body') _body!: ElementRef<HTMLElement>;\n\n /** Element wrapping the panel body. */\n @ViewChild('bodyWrapper')\n protected _bodyWrapper: ElementRef<HTMLElement> | undefined;\n\n /** Portal holding the user's content. */\n _portal!: TemplatePortal;\n\n /** ID for the associated header element. Used for a11y labelling. */\n _headerId: string = inject(_IdGenerator).getId('mat-expansion-panel-header-');\n\n constructor(...args: unknown[]);\n\n constructor() {\n super();\n\n const defaultOptions = inject<MatExpansionPanelDefaultOptions>(\n MAT_EXPANSION_PANEL_DEFAULT_OPTIONS,\n {optional: true},\n );\n\n this._expansionDispatcher = inject(UniqueSelectionDispatcher);\n\n if (defaultOptions) {\n this.hideToggle = defaultOptions.hideToggle;\n }\n }\n\n /** Determines whether the expansion panel should have spacing between it and its siblings. */\n _hasSpacing(): boolean {\n if (this.accordion) {\n return this.expanded && this.accordion.displayMode === 'default';\n }\n return false;\n }\n\n /** Gets the expanded state string. */\n _getExpandedState(): MatExpansionPanelState {\n return this.expanded ? 'expanded' : 'collapsed';\n }\n\n /** Toggles the expanded state of the expansion panel. */\n override toggle(): void {\n this.expanded = !this.expanded;\n }\n\n /** Sets the expanded state of the expansion panel to false. */\n override close(): void {\n this.expanded = false;\n }\n\n /** Sets the expanded state of the expansion panel to true. */\n override open(): void {\n this.expanded = true;\n }\n\n ngAfterContentInit() {\n if (this._lazyContent && this._lazyContent._expansionPanel === this) {\n // Render the content as soon as the panel becomes open.\n this.opened\n .pipe(\n startWith(null),\n filter(() => this.expanded && !this._portal),\n take(1),\n )\n .subscribe(() => {\n this._portal = new TemplatePortal(this._lazyContent._template, this._viewContainerRef);\n });\n }\n\n this._setupAnimationEvents();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this._inputChanges.next(changes);\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this._cleanupTransitionEnd?.();\n this._inputChanges.complete();\n }\n\n /** Checks whether the expansion panel's content contains the currently-focused element. */\n _containsFocus(): boolean {\n if (this._body) {\n const focusedElement = this._document.activeElement;\n const bodyElement = this._body.nativeElement;\n return focusedElement === bodyElement || bodyElement.contains(focusedElement);\n }\n\n return false;\n }\n\n private _transitionEndListener = ({target, propertyName}: TransitionEvent) => {\n if (target === this._bodyWrapper?.nativeElement && propertyName === 'grid-template-rows') {\n this._ngZone.run(() => {\n if (this.expanded) {\n this.afterExpand.emit();\n } else {\n this.afterCollapse.emit();\n }\n });\n }\n };\n\n protected _setupAnimationEvents() {\n // This method is defined separately, because we need to\n // disable this logic in some internal components.\n this._ngZone.runOutsideAngular(() => {\n if (this._animationsDisabled) {\n this.opened.subscribe(() => this._ngZone.run(() => this.afterExpand.emit()));\n this.closed.subscribe(() => this._ngZone.run(() => this.afterCollapse.emit()));\n } else {\n setTimeout(() => {\n const element = this._elementRef.nativeElement;\n this._cleanupTransitionEnd = this._renderer.listen(\n element,\n 'transitionend',\n this._transitionEndListener,\n );\n element.classList.add('mat-expansion-panel-animations-enabled');\n }, 200);\n }\n });\n }\n}\n\n/**\n * Actions of a `<mat-expansion-panel>`.\n */\n@Directive({\n selector: 'mat-action-row',\n host: {\n class: 'mat-action-row',\n },\n})\nexport class MatExpansionPanelActionRow {}\n","<ng-content select=\"mat-expansion-panel-header\"></ng-content>\n<div class=\"mat-expansion-panel-content-wrapper\" [attr.inert]=\"expanded ? null : ''\" #bodyWrapper>\n <div class=\"mat-expansion-panel-content\"\n role=\"region\"\n [attr.aria-labelledby]=\"_headerId\"\n [id]=\"id\"\n #body>\n <div class=\"mat-expansion-panel-body\">\n <ng-content></ng-content>\n <ng-template [cdkPortalOutlet]=\"_portal\"></ng-template>\n </div>\n <ng-content select=\"mat-action-row\"></ng-content>\n </div>\n</div>\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 {FocusableOption, FocusMonitor, FocusOrigin} from '@angular/cdk/a11y';\nimport {ENTER, hasModifierKey, SPACE} from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Directive,\n ElementRef,\n Input,\n numberAttribute,\n OnDestroy,\n ViewEncapsulation,\n inject,\n HostAttributeToken,\n} from '@angular/core';\nimport {EMPTY, merge, Subscription} from 'rxjs';\nimport {filter} from 'rxjs/operators';\nimport {MatAccordionTogglePosition} from './accordion-base';\nimport {\n MatExpansionPanel,\n MatExpansionPanelDefaultOptions,\n MAT_EXPANSION_PANEL_DEFAULT_OPTIONS,\n} from './expansion-panel';\nimport {_CdkPrivateStyleLoader} from '@angular/cdk/private';\nimport {_StructuralStylesLoader} from '../core';\n\n/**\n * Header element of a `<mat-expansion-panel>`.\n */\n@Component({\n selector: 'mat-expansion-panel-header',\n styleUrl: 'expansion-panel-header.css',\n templateUrl: 'expansion-panel-header.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'mat-expansion-panel-header mat-focus-indicator',\n 'role': 'button',\n '[attr.id]': 'panel._headerId',\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\n '[attr.aria-controls]': '_getPanelId()',\n '[attr.aria-expanded]': '_isExpanded()',\n '[attr.aria-disabled]': 'panel.disabled',\n '[class.mat-expanded]': '_isExpanded()',\n '[class.mat-expansion-toggle-indicator-after]': `_getTogglePosition() === 'after'`,\n '[class.mat-expansion-toggle-indicator-before]': `_getTogglePosition() === 'before'`,\n '[style.height]': '_getHeaderHeight()',\n '(click)': '_toggle()',\n '(keydown)': '_keydown($event)',\n },\n})\nexport class MatExpansionPanelHeader implements AfterViewInit, OnDestroy, FocusableOption {\n panel = inject(MatExpansionPanel, {host: true});\n private _element = inject(ElementRef);\n private _focusMonitor = inject(FocusMonitor);\n private _changeDetectorRef = inject(ChangeDetectorRef);\n\n private _parentChangeSubscription = Subscription.EMPTY;\n\n constructor(...args: unknown[]);\n\n constructor() {\n inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);\n const panel = this.panel;\n const defaultOptions = inject<MatExpansionPanelDefaultOptions>(\n MAT_EXPANSION_PANEL_DEFAULT_OPTIONS,\n {optional: true},\n );\n const tabIndex = inject(new HostAttributeToken('tabindex'), {optional: true});\n\n const accordionHideToggleChange = panel.accordion\n ? panel.accordion._stateChanges.pipe(\n filter(changes => !!(changes['hideToggle'] || changes['togglePosition'])),\n )\n : EMPTY;\n this.tabIndex = parseInt(tabIndex || '') || 0;\n\n // Since the toggle state depends on an @Input on the panel, we\n // need to subscribe and trigger change detection manually.\n this._parentChangeSubscription = merge(\n panel.opened,\n panel.closed,\n accordionHideToggleChange,\n panel._inputChanges.pipe(\n filter(changes => {\n return !!(changes['hideToggle'] || changes['disabled'] || changes['togglePosition']);\n }),\n ),\n ).subscribe(() => this._changeDetectorRef.markForCheck());\n\n // Avoids focus being lost if the panel contained the focused element and was closed.\n panel.closed\n .pipe(filter(() => panel._containsFocus()))\n .subscribe(() => this._focusMonitor.focusVia(this._element, 'program'));\n\n if (defaultOptions) {\n this.expandedHeight = defaultOptions.expandedHeight;\n this.collapsedHeight = defaultOptions.collapsedHeight;\n }\n }\n\n /** Height of the header while the panel is expanded. */\n @Input() expandedHeight!: string;\n\n /** Height of the header while the panel is collapsed. */\n @Input() collapsedHeight!: string;\n\n /** Tab index of the header. */\n @Input({\n transform: (value: unknown) => (value == null ? 0 : numberAttribute(value)),\n })\n tabIndex: number = 0;\n\n /**\n * Whether the associated panel is disabled. Implemented as a part of `FocusableOption`.\n * @docs-private\n */\n get disabled(): boolean {\n return this.panel.disabled;\n }\n\n /** Toggles the expanded state of the panel. */\n _toggle(): void {\n if (!this.disabled) {\n this.panel.toggle();\n }\n }\n\n /** Gets whether the panel is expanded. */\n _isExpanded(): boolean {\n return this.panel.expanded;\n }\n\n /** Gets the expanded state string of the panel. */\n _getExpandedState(): string {\n return this.panel._getExpandedState();\n }\n\n /** Gets the panel id. */\n _getPanelId(): string {\n return this.panel.id;\n }\n\n /** Gets the toggle position for the header. */\n _getTogglePosition(): MatAccordionTogglePosition {\n return this.panel.togglePosition;\n }\n\n /** Gets whether the expand indicator should be shown. */\n _showToggle(): boolean {\n return !this.panel.hideToggle && !this.panel.disabled;\n }\n\n /**\n * Gets the current height of the header. Null if no custom height has been\n * specified, and if the default height from the stylesheet should be used.\n */\n _getHeaderHeight(): string | null {\n const isExpanded = this._isExpanded();\n if (isExpanded && this.expandedHeight) {\n return this.expandedHeight;\n } else if (!isExpanded && this.collapsedHeight) {\n return this.collapsedHeight;\n }\n return null;\n }\n\n /** Handle keydown event calling to toggle() if appropriate. */\n _keydown(event: KeyboardEvent) {\n switch (event.keyCode) {\n // Toggle for space and enter keys.\n case SPACE:\n case ENTER:\n if (!hasModifierKey(event)) {\n event.preventDefault();\n this._toggle();\n }\n\n break;\n default:\n if (this.panel.accordion) {\n this.panel.accordion._handleHeaderKeydown(event);\n }\n\n return;\n }\n }\n\n /**\n * Focuses the panel header. Implemented as a part of `FocusableOption`.\n * @param origin Origin of the action that triggered the focus.\n * @docs-private\n */\n focus(origin?: FocusOrigin, options?: FocusOptions) {\n if (origin) {\n this._focusMonitor.focusVia(this._element, origin, options);\n } else {\n this._element.nativeElement.focus(options);\n }\n }\n\n ngAfterViewInit() {\n this._focusMonitor.monitor(this._element).subscribe(origin => {\n if (origin && this.panel.accordion) {\n this.panel.accordion._handleHeaderFocus(this);\n }\n });\n }\n\n ngOnDestroy() {\n this._parentChangeSubscription.unsubscribe();\n this._focusMonitor.stopMonitoring(this._element);\n }\n}\n\n/**\n * Description element of a `<mat-expansion-panel-header>`.\n */\n@Directive({\n selector: 'mat-panel-description',\n host: {\n class: 'mat-expansion-panel-header-description',\n },\n})\nexport class MatExpansionPanelDescription {}\n\n/**\n * Title element of a `<mat-expansion-panel-header>`.\n */\n@Directive({\n selector: 'mat-panel-title',\n host: {\n class: 'mat-expansion-panel-header-title',\n },\n})\nexport class MatExpansionPanelTitle {}\n","<span class=\"mat-content\" [class.mat-content-hide-toggle]=\"!_showToggle()\">\n <ng-content select=\"mat-panel-title\"></ng-content>\n <ng-content select=\"mat-panel-description\"></ng-content>\n <ng-content></ng-content>\n</span>\n\n@if (_showToggle()) {\n <span class=\"mat-expansion-indicator\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 -960 960 960\"\n aria-hidden=\"true\"\n focusable=\"false\">\n <path d=\"M480-345 240-585l56-56 184 184 184-184 56 56-240 240Z\"/>\n </svg>\n </span>\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 Input,\n ContentChildren,\n QueryList,\n AfterContentInit,\n OnDestroy,\n booleanAttribute,\n} from '@angular/core';\nimport {CdkAccordion} from '@angular/cdk/accordion';\nimport {FocusKeyManager} from '@angular/cdk/a11y';\nimport {startWith} from 'rxjs/operators';\nimport {\n MAT_ACCORDION,\n MatAccordionBase,\n MatAccordionDisplayMode,\n MatAccordionTogglePosition,\n} from './accordion-base';\nimport {MatExpansionPanelHeader} from './expansion-panel-header';\n\n/**\n * Directive for a Material Design Accordion.\n */\n@Directive({\n selector: 'mat-accordion',\n exportAs: 'matAccordion',\n providers: [\n {\n provide: MAT_ACCORDION,\n useExisting: MatAccordion,\n },\n ],\n host: {\n class: 'mat-accordion',\n // Class binding which is only used by the test harness as there is no other\n // way for the harness to detect if multiple panel support is enabled.\n '[class.mat-accordion-multi]': 'this.multi',\n },\n})\nexport class MatAccordion\n extends CdkAccordion\n implements MatAccordionBase, AfterContentInit, OnDestroy\n{\n private _keyManager!: FocusKeyManager<MatExpansionPanelHeader>;\n\n /** Headers belonging to this accordion. */\n private _ownHeaders = new QueryList<MatExpansionPanelHeader>();\n\n /** All headers inside the accordion. Includes headers inside nested accordions. */\n @ContentChildren(MatExpansionPanelHeader, {descendants: true})\n _headers!: QueryList<MatExpansionPanelHeader>;\n\n /** Whether the expansion indicator should be hidden. */\n @Input({transform: booleanAttribute})\n hideToggle: boolean = false;\n\n /**\n * Display mode used for all expansion panels in the accordion. Currently two display\n * modes exist:\n * default - a gutter-like spacing is placed around any expanded panel, placing the expanded\n * panel at a different elevation from the rest of the accordion.\n * flat - no spacing is placed around expanded panels, showing all panels at the same\n * elevation.\n */\n @Input() displayMode: MatAccordionDisplayMode = 'default';\n\n /** The position of the expansion indicator. */\n @Input() togglePosition: MatAccordionTogglePosition = 'after';\n\n ngAfterContentInit() {\n this._headers.changes\n .pipe(startWith(this._headers))\n .subscribe((headers: QueryList<MatExpansionPanelHeader>) => {\n this._ownHeaders.reset(headers.filter(header => header.panel.accordion === this));\n this._ownHeaders.notifyOnChanges();\n });\n\n this._keyManager = new FocusKeyManager(this._ownHeaders).withWrap().withHomeAndEnd();\n }\n\n /** Handles keyboard events coming in from the panel headers. */\n _handleHeaderKeydown(event: KeyboardEvent) {\n this._keyManager.onKeydown(event);\n }\n\n _handleHeaderFocus(header: MatExpansionPanelHeader) {\n this._keyManager.updateActiveItem(header);\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this._keyManager?.destroy();\n this._ownHeaders.destroy();\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 {BidiModule} from '@angular/cdk/bidi';\nimport {CdkAccordionModule} from '@angular/cdk/accordion';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {NgModule} from '@angular/core';\nimport {MatAccordion} from './accordion';\nimport {MatExpansionPanel, MatExpansionPanelActionRow} from './expansion-panel';\nimport {MatExpansionPanelContent} from './expansion-panel-content';\nimport {\n MatExpansionPanelDescription,\n MatExpansionPanelHeader,\n MatExpansionPanelTitle,\n} from './expansion-panel-header';\n\n@NgModule({\n imports: [\n CdkAccordionModule,\n PortalModule,\n MatAccordion,\n MatExpansionPanel,\n MatExpansionPanelActionRow,\n MatExpansionPanelHeader,\n MatExpansionPanelTitle,\n MatExpansionPanelDescription,\n MatExpansionPanelContent,\n ],\n exports: [\n BidiModule,\n MatAccordion,\n MatExpansionPanel,\n MatExpansionPanelActionRow,\n MatExpansionPanelHeader,\n MatExpansionPanelTitle,\n MatExpansionPanelDescription,\n MatExpansionPanelContent,\n ],\n})\nexport class MatExpansionModule {}\n"],"names":["MAT_ACCORDION","InjectionToken","MAT_EXPANSION_PANEL","MatExpansionPanelContent","_template","inject","TemplateRef","_expansionPanel","optional","constructor","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","ngImport","decorators","args","MAT_EXPANSION_PANEL_DEFAULT_OPTIONS","MatExpansionPanel","CdkAccordionItem","_viewContainerRef","ViewContainerRef","_animationsDisabled","_document","DOCUMENT","_ngZone","NgZone","_elementRef","ElementRef","_renderer","Renderer2","_cleanupTransitionEnd","hideToggle","_hideToggle","accordion","value","togglePosition","_togglePosition","afterExpand","EventEmitter","afterCollapse","_inputChanges","Subject","skipSelf","_lazyContent","_body","_bodyWrapper","_portal","_headerId","_IdGenerator","getId","defaultOptions","_expansionDispatcher","UniqueSelectionDispatcher","_hasSpacing","expanded","displayMode","_getExpandedState","toggle","close","open","ngAfterContentInit","opened","pipe","startWith","filter","take","subscribe","TemplatePortal","_setupAnimationEvents","ngOnChanges","changes","next","ngOnDestroy","complete","_containsFocus","focusedElement","activeElement","bodyElement","nativeElement","contains","_transitionEndListener","propertyName","run","emit","runOutsideAngular","closed","setTimeout","element","listen","classList","add","Component","inputs","booleanAttribute","outputs","host","properties","classAttribute","providers","provide","useValue","undefined","useExisting","queries","first","predicate","descendants","viewQueries","exportAs","usesInheritance","usesOnChanges","template","styles","dependencies","kind","type","CdkPortalOutlet","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","imports","Input","transform","Output","ContentChild","ViewChild","MatExpansionPanelActionRow","class","MatExpansionPanelHeader","panel","_element","_focusMonitor","FocusMonitor","_changeDetectorRef","ChangeDetectorRef","_parentChangeSubscription","Subscription","EMPTY","_CdkPrivateStyleLoader","load","_StructuralStylesLoader","tabIndex","HostAttributeToken","accordionHideToggleChange","_stateChanges","parseInt","merge","markForCheck","focusVia","expandedHeight","collapsedHeight","disabled","_toggle","_isExpanded","_getPanelId","id","_getTogglePosition","_showToggle","_getHeaderHeight","isExpanded","_keydown","event","keyCode","SPACE","ENTER","hasModifierKey","preventDefault","_handleHeaderKeydown","focus","origin","options","ngAfterViewInit","monitor","_handleHeaderFocus","unsubscribe","stopMonitoring","numberAttribute","attributes","listeners","MatExpansionPanelDescription","MatExpansionPanelTitle","MatAccordion","CdkAccordion","_keyManager","_ownHeaders","QueryList","_headers","headers","reset","header","notifyOnChanges","FocusKeyManager","withWrap","withHomeAndEnd","onKeydown","updateActiveItem","destroy","ContentChildren","MatExpansionModule","NgModule","ɵmod","ɵɵngDeclareNgModule","minVersion","version","CdkAccordionModule","PortalModule","BidiModule","ɵinj","ɵɵngDeclareInjector","exports"],"mappings":"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"}
{"version":3,"file":"expansion.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/expansion/accordion-base.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/expansion/expansion-panel-base.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/expansion/expansion-panel-content.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/expansion/expansion-panel.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/expansion/expansion-panel.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/expansion/expansion-panel-header.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/expansion/expansion-panel-header.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/expansion/accordion.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/expansion/expansion-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\nimport {InjectionToken} from '@angular/core';\nimport {CdkAccordion} from '@angular/cdk/accordion';\n\n/** MatAccordion's display modes. */\nexport type MatAccordionDisplayMode = 'default' | 'flat';\n\n/** MatAccordion's toggle positions. */\nexport type MatAccordionTogglePosition = 'before' | 'after';\n\n/**\n * Base interface for a `MatAccordion`.\n * @docs-private\n */\nexport interface MatAccordionBase extends CdkAccordion {\n /** Whether the expansion indicator should be hidden. */\n hideToggle: boolean;\n\n /** Display mode used for all expansion panels in the accordion. */\n displayMode: MatAccordionDisplayMode;\n\n /** The position of the expansion indicator. */\n togglePosition: MatAccordionTogglePosition;\n\n /** Handles keyboard events coming in from the panel headers. */\n _handleHeaderKeydown: (event: KeyboardEvent) => void;\n\n /** Handles focus events on the panel headers. */\n _handleHeaderFocus: (header: any) => void;\n}\n\n/**\n * Token used to provide a `MatAccordion` to `MatExpansionPanel`.\n * Used primarily to avoid circular imports between `MatAccordion` and `MatExpansionPanel`.\n */\nexport const MAT_ACCORDION = new InjectionToken<MatAccordionBase>('MAT_ACCORDION');\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 {InjectionToken} from '@angular/core';\nimport {CdkAccordionItem} from '@angular/cdk/accordion';\n\n/**\n * Base interface for a `MatExpansionPanel`.\n * @docs-private\n */\nexport interface MatExpansionPanelBase extends CdkAccordionItem {\n /** Whether the toggle indicator should be hidden. */\n hideToggle: boolean;\n}\n\n/**\n * Token used to provide a `MatExpansionPanel` to `MatExpansionPanelContent`.\n * Used to avoid circular imports between `MatExpansionPanel` and `MatExpansionPanelContent`.\n */\nexport const MAT_EXPANSION_PANEL = new InjectionToken<MatExpansionPanelBase>('MAT_EXPANSION_PANEL');\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 {Directive, TemplateRef, inject} from '@angular/core';\nimport {MAT_EXPANSION_PANEL, MatExpansionPanelBase} from './expansion-panel-base';\n\n/**\n * Expansion panel content that will be rendered lazily\n * after the panel is opened for the first time.\n */\n@Directive({\n selector: 'ng-template[matExpansionPanelContent]',\n})\nexport class MatExpansionPanelContent {\n _template = inject<TemplateRef<any>>(TemplateRef);\n _expansionPanel = inject<MatExpansionPanelBase>(MAT_EXPANSION_PANEL, {optional: true});\n\n constructor(...args: unknown[]);\n constructor() {}\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 {CdkAccordionItem} from '@angular/cdk/accordion';\nimport {UniqueSelectionDispatcher} from '@angular/cdk/collections';\nimport {CdkPortalOutlet, TemplatePortal} from '@angular/cdk/portal';\n\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n InjectionToken,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n NgZone,\n Renderer2,\n DOCUMENT,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {Subject} from 'rxjs';\nimport {filter, startWith, take} from 'rxjs/operators';\nimport {MatAccordionBase, MatAccordionTogglePosition, MAT_ACCORDION} from './accordion-base';\nimport {MAT_EXPANSION_PANEL} from './expansion-panel-base';\nimport {MatExpansionPanelContent} from './expansion-panel-content';\nimport {_animationsDisabled} from '../core';\n\n/** MatExpansionPanel's states. */\nexport type MatExpansionPanelState = 'expanded' | 'collapsed';\n\n/**\n * Object that can be used to override the default options\n * for all of the expansion panels in a module.\n */\nexport interface MatExpansionPanelDefaultOptions {\n /** Height of the header while the panel is expanded. */\n expandedHeight: string;\n\n /** Height of the header while the panel is collapsed. */\n collapsedHeight: string;\n\n /** Whether the toggle indicator should be hidden. */\n hideToggle: boolean;\n}\n\n/**\n * Injection token that can be used to configure the default\n * options for the expansion panel component.\n */\nexport const MAT_EXPANSION_PANEL_DEFAULT_OPTIONS =\n new InjectionToken<MatExpansionPanelDefaultOptions>('MAT_EXPANSION_PANEL_DEFAULT_OPTIONS');\n\n/**\n * This component can be used as a single element to show expandable content, or as one of\n * multiple children of an element with the MatAccordion directive attached.\n */\n@Component({\n styleUrl: 'expansion-panel.css',\n selector: 'mat-expansion-panel',\n exportAs: 'matExpansionPanel',\n templateUrl: 'expansion-panel.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n // Provide MatAccordion as undefined to prevent nested expansion panels from registering\n // to the same accordion.\n {provide: MAT_ACCORDION, useValue: undefined},\n {provide: MAT_EXPANSION_PANEL, useExisting: MatExpansionPanel},\n ],\n host: {\n 'class': 'mat-expansion-panel',\n '[class.mat-expanded]': 'expanded',\n '[class.mat-expansion-panel-spacing]': '_hasSpacing()',\n },\n imports: [CdkPortalOutlet],\n})\nexport class MatExpansionPanel\n extends CdkAccordionItem\n implements AfterContentInit, OnChanges, OnDestroy\n{\n private _viewContainerRef = inject(ViewContainerRef);\n private readonly _animationsDisabled = _animationsDisabled();\n private _document = inject(DOCUMENT);\n private _ngZone = inject(NgZone);\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _renderer = inject(Renderer2);\n private _cleanupTransitionEnd: (() => void) | undefined;\n\n /** Whether the toggle indicator should be hidden. */\n @Input({transform: booleanAttribute})\n get hideToggle(): boolean {\n return this._hideToggle || (this.accordion && this.accordion.hideToggle);\n }\n set hideToggle(value: boolean) {\n this._hideToggle = value;\n }\n private _hideToggle = false;\n\n /** The position of the expansion indicator. */\n @Input()\n get togglePosition(): MatAccordionTogglePosition {\n return this._togglePosition || (this.accordion && this.accordion.togglePosition);\n }\n set togglePosition(value: MatAccordionTogglePosition) {\n this._togglePosition = value;\n }\n private _togglePosition!: MatAccordionTogglePosition;\n\n /** An event emitted after the body's expansion animation happens. */\n @Output() readonly afterExpand = new EventEmitter<void>();\n\n /** An event emitted after the body's collapse animation happens. */\n @Output() readonly afterCollapse = new EventEmitter<void>();\n\n /** Stream that emits for changes in `@Input` properties. */\n readonly _inputChanges = new Subject<SimpleChanges>();\n\n /** Optionally defined accordion the expansion panel belongs to. */\n override accordion = inject<MatAccordionBase>(MAT_ACCORDION, {optional: true, skipSelf: true})!;\n\n /** Content that will be rendered lazily. */\n @ContentChild(MatExpansionPanelContent) _lazyContent!: MatExpansionPanelContent;\n\n /** Element containing the panel's user-provided content. */\n @ViewChild('body') _body!: ElementRef<HTMLElement>;\n\n /** Element wrapping the panel body. */\n @ViewChild('bodyWrapper')\n protected _bodyWrapper: ElementRef<HTMLElement> | undefined;\n\n /** Portal holding the user's content. */\n _portal!: TemplatePortal;\n\n /** ID for the associated header element. Used for a11y labelling. */\n _headerId: string = inject(_IdGenerator).getId('mat-expansion-panel-header-');\n\n constructor(...args: unknown[]);\n\n constructor() {\n super();\n\n const defaultOptions = inject<MatExpansionPanelDefaultOptions>(\n MAT_EXPANSION_PANEL_DEFAULT_OPTIONS,\n {optional: true},\n );\n\n this._expansionDispatcher = inject(UniqueSelectionDispatcher);\n\n if (defaultOptions) {\n this.hideToggle = defaultOptions.hideToggle;\n }\n }\n\n /** Determines whether the expansion panel should have spacing between it and its siblings. */\n _hasSpacing(): boolean {\n if (this.accordion) {\n return this.expanded && this.accordion.displayMode === 'default';\n }\n return false;\n }\n\n /** Gets the expanded state string. */\n _getExpandedState(): MatExpansionPanelState {\n return this.expanded ? 'expanded' : 'collapsed';\n }\n\n /** Toggles the expanded state of the expansion panel. */\n override toggle(): void {\n this.expanded = !this.expanded;\n }\n\n /** Sets the expanded state of the expansion panel to false. */\n override close(): void {\n this.expanded = false;\n }\n\n /** Sets the expanded state of the expansion panel to true. */\n override open(): void {\n this.expanded = true;\n }\n\n ngAfterContentInit() {\n if (this._lazyContent && this._lazyContent._expansionPanel === this) {\n // Render the content as soon as the panel becomes open.\n this.opened\n .pipe(\n startWith(null),\n filter(() => this.expanded && !this._portal),\n take(1),\n )\n .subscribe(() => {\n this._portal = new TemplatePortal(this._lazyContent._template, this._viewContainerRef);\n });\n }\n\n this._setupAnimationEvents();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this._inputChanges.next(changes);\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this._cleanupTransitionEnd?.();\n this._inputChanges.complete();\n }\n\n /** Checks whether the expansion panel's content contains the currently-focused element. */\n _containsFocus(): boolean {\n if (this._body) {\n const focusedElement = this._document.activeElement;\n const bodyElement = this._body.nativeElement;\n return focusedElement === bodyElement || bodyElement.contains(focusedElement);\n }\n\n return false;\n }\n\n private _transitionEndListener = ({target, propertyName}: TransitionEvent) => {\n if (target === this._bodyWrapper?.nativeElement && propertyName === 'grid-template-rows') {\n this._ngZone.run(() => {\n if (this.expanded) {\n this.afterExpand.emit();\n } else {\n this.afterCollapse.emit();\n }\n });\n }\n };\n\n protected _setupAnimationEvents() {\n // This method is defined separately, because we need to\n // disable this logic in some internal components.\n this._ngZone.runOutsideAngular(() => {\n if (this._animationsDisabled) {\n this.opened.subscribe(() => this._ngZone.run(() => this.afterExpand.emit()));\n this.closed.subscribe(() => this._ngZone.run(() => this.afterCollapse.emit()));\n } else {\n setTimeout(() => {\n const element = this._elementRef.nativeElement;\n this._cleanupTransitionEnd = this._renderer.listen(\n element,\n 'transitionend',\n this._transitionEndListener,\n );\n element.classList.add('mat-expansion-panel-animations-enabled');\n }, 200);\n }\n });\n }\n}\n\n/**\n * Actions of a `<mat-expansion-panel>`.\n */\n@Directive({\n selector: 'mat-action-row',\n host: {\n class: 'mat-action-row',\n },\n})\nexport class MatExpansionPanelActionRow {}\n","<ng-content select=\"mat-expansion-panel-header\"></ng-content>\n<div class=\"mat-expansion-panel-content-wrapper\" [attr.inert]=\"expanded ? null : ''\" #bodyWrapper>\n <div class=\"mat-expansion-panel-content\"\n role=\"region\"\n [attr.aria-labelledby]=\"_headerId\"\n [id]=\"id\"\n #body>\n <div class=\"mat-expansion-panel-body\">\n <ng-content></ng-content>\n <ng-template [cdkPortalOutlet]=\"_portal\"></ng-template>\n </div>\n <ng-content select=\"mat-action-row\"></ng-content>\n </div>\n</div>\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 {FocusableOption, FocusMonitor, FocusOrigin} from '@angular/cdk/a11y';\nimport {ENTER, hasModifierKey, SPACE} from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Directive,\n ElementRef,\n Input,\n numberAttribute,\n OnDestroy,\n ViewEncapsulation,\n inject,\n HostAttributeToken,\n} from '@angular/core';\nimport {EMPTY, merge, Subscription} from 'rxjs';\nimport {filter} from 'rxjs/operators';\nimport {MatAccordionTogglePosition} from './accordion-base';\nimport {\n MatExpansionPanel,\n MatExpansionPanelDefaultOptions,\n MAT_EXPANSION_PANEL_DEFAULT_OPTIONS,\n} from './expansion-panel';\nimport {_CdkPrivateStyleLoader} from '@angular/cdk/private';\nimport {_StructuralStylesLoader} from '../core';\n\n/**\n * Header element of a `<mat-expansion-panel>`.\n */\n@Component({\n selector: 'mat-expansion-panel-header',\n styleUrl: 'expansion-panel-header.css',\n templateUrl: 'expansion-panel-header.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'mat-expansion-panel-header mat-focus-indicator',\n 'role': 'button',\n '[attr.id]': 'panel._headerId',\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\n '[attr.aria-controls]': '_getPanelId()',\n '[attr.aria-expanded]': '_isExpanded()',\n '[attr.aria-disabled]': 'panel.disabled',\n '[class.mat-expanded]': '_isExpanded()',\n '[class.mat-expansion-toggle-indicator-after]': `_getTogglePosition() === 'after'`,\n '[class.mat-expansion-toggle-indicator-before]': `_getTogglePosition() === 'before'`,\n '[style.height]': '_getHeaderHeight()',\n '(click)': '_toggle()',\n '(keydown)': '_keydown($event)',\n },\n})\nexport class MatExpansionPanelHeader implements AfterViewInit, OnDestroy, FocusableOption {\n panel = inject(MatExpansionPanel, {host: true});\n private _element = inject(ElementRef);\n private _focusMonitor = inject(FocusMonitor);\n private _changeDetectorRef = inject(ChangeDetectorRef);\n\n private _parentChangeSubscription = Subscription.EMPTY;\n\n constructor(...args: unknown[]);\n\n constructor() {\n inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);\n const panel = this.panel;\n const defaultOptions = inject<MatExpansionPanelDefaultOptions>(\n MAT_EXPANSION_PANEL_DEFAULT_OPTIONS,\n {optional: true},\n );\n const tabIndex = inject(new HostAttributeToken('tabindex'), {optional: true});\n\n const accordionHideToggleChange = panel.accordion\n ? panel.accordion._stateChanges.pipe(\n filter(changes => !!(changes['hideToggle'] || changes['togglePosition'])),\n )\n : EMPTY;\n this.tabIndex = parseInt(tabIndex || '') || 0;\n\n // Since the toggle state depends on an @Input on the panel, we\n // need to subscribe and trigger change detection manually.\n this._parentChangeSubscription = merge(\n panel.opened,\n panel.closed,\n accordionHideToggleChange,\n panel._inputChanges.pipe(\n filter(changes => {\n return !!(changes['hideToggle'] || changes['disabled'] || changes['togglePosition']);\n }),\n ),\n ).subscribe(() => this._changeDetectorRef.markForCheck());\n\n // Avoids focus being lost if the panel contained the focused element and was closed.\n panel.closed\n .pipe(filter(() => panel._containsFocus()))\n .subscribe(() => this._focusMonitor.focusVia(this._element, 'program'));\n\n if (defaultOptions) {\n this.expandedHeight = defaultOptions.expandedHeight;\n this.collapsedHeight = defaultOptions.collapsedHeight;\n }\n }\n\n /** Height of the header while the panel is expanded. */\n @Input() expandedHeight!: string;\n\n /** Height of the header while the panel is collapsed. */\n @Input() collapsedHeight!: string;\n\n /** Tab index of the header. */\n @Input({\n transform: (value: unknown) => (value == null ? 0 : numberAttribute(value)),\n })\n tabIndex: number = 0;\n\n /**\n * Whether the associated panel is disabled. Implemented as a part of `FocusableOption`.\n * @docs-private\n */\n get disabled(): boolean {\n return this.panel.disabled;\n }\n\n /** Toggles the expanded state of the panel. */\n _toggle(): void {\n if (!this.disabled) {\n this.panel.toggle();\n }\n }\n\n /** Gets whether the panel is expanded. */\n _isExpanded(): boolean {\n return this.panel.expanded;\n }\n\n /** Gets the expanded state string of the panel. */\n _getExpandedState(): string {\n return this.panel._getExpandedState();\n }\n\n /** Gets the panel id. */\n _getPanelId(): string {\n return this.panel.id;\n }\n\n /** Gets the toggle position for the header. */\n _getTogglePosition(): MatAccordionTogglePosition {\n return this.panel.togglePosition;\n }\n\n /** Gets whether the expand indicator should be shown. */\n _showToggle(): boolean {\n return !this.panel.hideToggle && !this.panel.disabled;\n }\n\n /**\n * Gets the current height of the header. Null if no custom height has been\n * specified, and if the default height from the stylesheet should be used.\n */\n _getHeaderHeight(): string | null {\n const isExpanded = this._isExpanded();\n if (isExpanded && this.expandedHeight) {\n return this.expandedHeight;\n } else if (!isExpanded && this.collapsedHeight) {\n return this.collapsedHeight;\n }\n return null;\n }\n\n /** Handle keydown event calling to toggle() if appropriate. */\n _keydown(event: KeyboardEvent) {\n switch (event.keyCode) {\n // Toggle for space and enter keys.\n case SPACE:\n case ENTER:\n if (!hasModifierKey(event)) {\n event.preventDefault();\n this._toggle();\n }\n\n break;\n default:\n if (this.panel.accordion) {\n this.panel.accordion._handleHeaderKeydown(event);\n }\n\n return;\n }\n }\n\n /**\n * Focuses the panel header. Implemented as a part of `FocusableOption`.\n * @param origin Origin of the action that triggered the focus.\n * @docs-private\n */\n focus(origin?: FocusOrigin, options?: FocusOptions) {\n if (origin) {\n this._focusMonitor.focusVia(this._element, origin, options);\n } else {\n this._element.nativeElement.focus(options);\n }\n }\n\n ngAfterViewInit() {\n this._focusMonitor.monitor(this._element).subscribe(origin => {\n if (origin && this.panel.accordion) {\n this.panel.accordion._handleHeaderFocus(this);\n }\n });\n }\n\n ngOnDestroy() {\n this._parentChangeSubscription.unsubscribe();\n this._focusMonitor.stopMonitoring(this._element);\n }\n}\n\n/**\n * Description element of a `<mat-expansion-panel-header>`.\n */\n@Directive({\n selector: 'mat-panel-description',\n host: {\n class: 'mat-expansion-panel-header-description',\n },\n})\nexport class MatExpansionPanelDescription {}\n\n/**\n * Title element of a `<mat-expansion-panel-header>`.\n */\n@Directive({\n selector: 'mat-panel-title',\n host: {\n class: 'mat-expansion-panel-header-title',\n },\n})\nexport class MatExpansionPanelTitle {}\n","<span class=\"mat-content\" [class.mat-content-hide-toggle]=\"!_showToggle()\">\n <ng-content select=\"mat-panel-title\"></ng-content>\n <ng-content select=\"mat-panel-description\"></ng-content>\n <ng-content></ng-content>\n</span>\n\n@if (_showToggle()) {\n <span class=\"mat-expansion-indicator\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 -960 960 960\"\n aria-hidden=\"true\"\n focusable=\"false\">\n <path d=\"M480-345 240-585l56-56 184 184 184-184 56 56-240 240Z\"/>\n </svg>\n </span>\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 Input,\n ContentChildren,\n QueryList,\n AfterContentInit,\n OnDestroy,\n booleanAttribute,\n} from '@angular/core';\nimport {CdkAccordion} from '@angular/cdk/accordion';\nimport {FocusKeyManager} from '@angular/cdk/a11y';\nimport {startWith} from 'rxjs/operators';\nimport {\n MAT_ACCORDION,\n MatAccordionBase,\n MatAccordionDisplayMode,\n MatAccordionTogglePosition,\n} from './accordion-base';\nimport {MatExpansionPanelHeader} from './expansion-panel-header';\n\n/**\n * Directive for a Material Design Accordion.\n */\n@Directive({\n selector: 'mat-accordion',\n exportAs: 'matAccordion',\n providers: [\n {\n provide: MAT_ACCORDION,\n useExisting: MatAccordion,\n },\n ],\n host: {\n class: 'mat-accordion',\n // Class binding which is only used by the test harness as there is no other\n // way for the harness to detect if multiple panel support is enabled.\n '[class.mat-accordion-multi]': 'this.multi',\n },\n})\nexport class MatAccordion\n extends CdkAccordion\n implements MatAccordionBase, AfterContentInit, OnDestroy\n{\n private _keyManager!: FocusKeyManager<MatExpansionPanelHeader>;\n\n /** Headers belonging to this accordion. */\n private _ownHeaders = new QueryList<MatExpansionPanelHeader>();\n\n /** All headers inside the accordion. Includes headers inside nested accordions. */\n @ContentChildren(MatExpansionPanelHeader, {descendants: true})\n _headers!: QueryList<MatExpansionPanelHeader>;\n\n /** Whether the expansion indicator should be hidden. */\n @Input({transform: booleanAttribute})\n hideToggle: boolean = false;\n\n /**\n * Display mode used for all expansion panels in the accordion. Currently two display\n * modes exist:\n * default - a gutter-like spacing is placed around any expanded panel, placing the expanded\n * panel at a different elevation from the rest of the accordion.\n * flat - no spacing is placed around expanded panels, showing all panels at the same\n * elevation.\n */\n @Input() displayMode: MatAccordionDisplayMode = 'default';\n\n /** The position of the expansion indicator. */\n @Input() togglePosition: MatAccordionTogglePosition = 'after';\n\n ngAfterContentInit() {\n this._headers.changes\n .pipe(startWith(this._headers))\n .subscribe((headers: QueryList<MatExpansionPanelHeader>) => {\n this._ownHeaders.reset(headers.filter(header => header.panel.accordion === this));\n this._ownHeaders.notifyOnChanges();\n });\n\n this._keyManager = new FocusKeyManager(this._ownHeaders).withWrap().withHomeAndEnd();\n }\n\n /** Handles keyboard events coming in from the panel headers. */\n _handleHeaderKeydown(event: KeyboardEvent) {\n this._keyManager.onKeydown(event);\n }\n\n _handleHeaderFocus(header: MatExpansionPanelHeader) {\n this._keyManager.updateActiveItem(header);\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this._keyManager?.destroy();\n this._ownHeaders.destroy();\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 {BidiModule} from '@angular/cdk/bidi';\nimport {CdkAccordionModule} from '@angular/cdk/accordion';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {NgModule} from '@angular/core';\nimport {MatAccordion} from './accordion';\nimport {MatExpansionPanel, MatExpansionPanelActionRow} from './expansion-panel';\nimport {MatExpansionPanelContent} from './expansion-panel-content';\nimport {\n MatExpansionPanelDescription,\n MatExpansionPanelHeader,\n MatExpansionPanelTitle,\n} from './expansion-panel-header';\n\n@NgModule({\n imports: [\n CdkAccordionModule,\n PortalModule,\n MatAccordion,\n MatExpansionPanel,\n MatExpansionPanelActionRow,\n MatExpansionPanelHeader,\n MatExpansionPanelTitle,\n MatExpansionPanelDescription,\n MatExpansionPanelContent,\n ],\n exports: [\n BidiModule,\n MatAccordion,\n MatExpansionPanel,\n MatExpansionPanelActionRow,\n MatExpansionPanelHeader,\n MatExpansionPanelTitle,\n MatExpansionPanelDescription,\n MatExpansionPanelContent,\n ],\n})\nexport class MatExpansionModule {}\n"],"names":["MAT_ACCORDION","InjectionToken","MAT_EXPANSION_PANEL","MatExpansionPanelContent","_template","inject","TemplateRef","_expansionPanel","optional","constructor","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","ngImport","decorators","args","MAT_EXPANSION_PANEL_DEFAULT_OPTIONS","MatExpansionPanel","CdkAccordionItem","_viewContainerRef","ViewContainerRef","_animationsDisabled","_document","DOCUMENT","_ngZone","NgZone","_elementRef","ElementRef","_renderer","Renderer2","_cleanupTransitionEnd","hideToggle","_hideToggle","accordion","value","togglePosition","_togglePosition","afterExpand","EventEmitter","afterCollapse","_inputChanges","Subject","skipSelf","_lazyContent","_body","_bodyWrapper","_portal","_headerId","_IdGenerator","getId","defaultOptions","_expansionDispatcher","UniqueSelectionDispatcher","_hasSpacing","expanded","displayMode","_getExpandedState","toggle","close","open","ngAfterContentInit","opened","pipe","startWith","filter","take","subscribe","TemplatePortal","_setupAnimationEvents","ngOnChanges","changes","next","ngOnDestroy","complete","_containsFocus","focusedElement","activeElement","bodyElement","nativeElement","contains","_transitionEndListener","propertyName","run","emit","runOutsideAngular","closed","setTimeout","element","listen","classList","add","Component","inputs","booleanAttribute","outputs","host","properties","classAttribute","providers","provide","useValue","undefined","useExisting","queries","first","predicate","descendants","viewQueries","exportAs","usesInheritance","usesOnChanges","template","styles","dependencies","kind","type","CdkPortalOutlet","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","imports","Input","transform","Output","ContentChild","ViewChild","MatExpansionPanelActionRow","class","MatExpansionPanelHeader","panel","_element","_focusMonitor","FocusMonitor","_changeDetectorRef","ChangeDetectorRef","_parentChangeSubscription","Subscription","EMPTY","_CdkPrivateStyleLoader","load","_StructuralStylesLoader","tabIndex","HostAttributeToken","accordionHideToggleChange","_stateChanges","parseInt","merge","markForCheck","focusVia","expandedHeight","collapsedHeight","disabled","_toggle","_isExpanded","_getPanelId","id","_getTogglePosition","_showToggle","_getHeaderHeight","isExpanded","_keydown","event","keyCode","SPACE","ENTER","hasModifierKey","preventDefault","_handleHeaderKeydown","focus","origin","options","ngAfterViewInit","monitor","_handleHeaderFocus","unsubscribe","stopMonitoring","numberAttribute","attributes","listeners","MatExpansionPanelDescription","MatExpansionPanelTitle","MatAccordion","CdkAccordion","_keyManager","_ownHeaders","QueryList","_headers","headers","reset","header","notifyOnChanges","FocusKeyManager","withWrap","withHomeAndEnd","onKeydown","updateActiveItem","destroy","ContentChildren","MatExpansionModule","NgModule","ɵmod","ɵɵngDeclareNgModule","minVersion","version","CdkAccordionModule","PortalModule","BidiModule","ɵinj","ɵɵngDeclareInjector","exports"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"form-field-testing-control.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/form-field/testing/control/form-field-control-harness.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\nimport {ComponentHarness} from '@angular/cdk/testing';\n\n/**\n * Base class for custom form-field control harnesses. Harnesses for\n * custom controls with form-fields need to implement this interface.\n */\nexport abstract class MatFormFieldControlHarness extends ComponentHarness {}\n\n/**\n * Shared behavior for `MatFormFieldControlHarness` implementations\n */\nexport abstract class MatFormFieldControlHarnessBase extends MatFormFieldControlHarness {\n /**\n * Gets the label for the control, if it exists. This might be provided by a label element or by\n * the `aria-label` attribute.\n */\n async getLabel(): Promise<string | null> {\n const documentRootLocator = this.documentRootLocatorFactory();\n const labelId = await (await this.host()).getAttribute('aria-labelledby');\n const labelText = await (await this.host()).getAttribute('aria-label');\n const hostId = await (await this.host()).getAttribute('id');\n\n if (labelId) {\n // First, try to find the label by following [aria-labelledby]\n const labelEl = await documentRootLocator.locatorForOptional(`[id=\"${labelId}\"]`)();\n return labelEl ? labelEl.text() : null;\n } else if (labelText) {\n // If that doesn't work, return [aria-label] if it exists\n return labelText;\n } else if (hostId) {\n // Finally, search the DOM for a label that points to the host element\n const labelEl = await documentRootLocator.locatorForOptional(`[for=\"${hostId}\"]`)();\n return labelEl ? labelEl.text() : null;\n }\n return null;\n }\n}\n"],"names":["MatFormFieldControlHarness","ComponentHarness","MatFormFieldControlHarnessBase","getLabel","documentRootLocator","documentRootLocatorFactory","labelId","host","getAttribute","labelText","hostId","labelEl","locatorForOptional","text"],"mappings":";;AAcM,MAAgBA,0BAA2B,SAAQC,gBAAgB,CAAA;AAKnE,MAAgBC,8BAA+B,SAAQF,0BAA0B,CAAA;EAKrF,MAAMG,QAAQA,GAAA;AACZ,IAAA,MAAMC,mBAAmB,GAAG,IAAI,CAACC,0BAA0B,EAAE;AAC7D,IAAA,MAAMC,OAAO,GAAG,MAAM,CAAC,MAAM,IAAI,CAACC,IAAI,EAAE,EAAEC,YAAY,CAAC,iBAAiB,CAAC;AACzE,IAAA,MAAMC,SAAS,GAAG,MAAM,CAAC,MAAM,IAAI,CAACF,IAAI,EAAE,EAAEC,YAAY,CAAC,YAAY,CAAC;AACtE,IAAA,MAAME,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,CAACH,IAAI,EAAE,EAAEC,YAAY,CAAC,IAAI,CAAC;AAE3D,IAAA,IAAIF,OAAO,EAAE;AAEX,MAAA,MAAMK,OAAO,GAAG,MAAMP,mBAAmB,CAACQ,kBAAkB,CAAC,CAAA,KAAA,EAAQN,OAAO,CAAA,EAAA,CAAI,CAAC,EAAE;MACnF,OAAOK,OAAO,GAAGA,OAAO,CAACE,IAAI,EAAE,GAAG,IAAI;IACxC,CAAA,MAAO,IAAIJ,SAAS,EAAE;AAEpB,MAAA,OAAOA,SAAS;IAClB,CAAA,MAAO,IAAIC,MAAM,EAAE;AAEjB,MAAA,MAAMC,OAAO,GAAG,MAAMP,mBAAmB,CAACQ,kBAAkB,CAAC,CAAA,MAAA,EAASF,MAAM,CAAA,EAAA,CAAI,CAAC,EAAE;MACnF,OAAOC,OAAO,GAAGA,OAAO,CAACE,IAAI,EAAE,GAAG,IAAI;AACxC,IAAA;AACA,IAAA,OAAO,IAAI;AACb,EAAA;AACD;;;;"}
{"version":3,"file":"form-field-testing-control.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/form-field/testing/control/form-field-control-harness.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\nimport {ComponentHarness} from '@angular/cdk/testing';\n\n/**\n * Base class for custom form-field control harnesses. Harnesses for\n * custom controls with form-fields need to implement this interface.\n */\nexport abstract class MatFormFieldControlHarness extends ComponentHarness {}\n\n/**\n * Shared behavior for `MatFormFieldControlHarness` implementations\n */\nexport abstract class MatFormFieldControlHarnessBase extends MatFormFieldControlHarness {\n /**\n * Gets the label for the control, if it exists. This might be provided by a label element or by\n * the `aria-label` attribute.\n */\n async getLabel(): Promise<string | null> {\n const documentRootLocator = this.documentRootLocatorFactory();\n const labelId = await (await this.host()).getAttribute('aria-labelledby');\n const labelText = await (await this.host()).getAttribute('aria-label');\n const hostId = await (await this.host()).getAttribute('id');\n\n if (labelId) {\n // First, try to find the label by following [aria-labelledby]\n const labelEl = await documentRootLocator.locatorForOptional(`[id=\"${labelId}\"]`)();\n return labelEl ? labelEl.text() : null;\n } else if (labelText) {\n // If that doesn't work, return [aria-label] if it exists\n return labelText;\n } else if (hostId) {\n // Finally, search the DOM for a label that points to the host element\n const labelEl = await documentRootLocator.locatorForOptional(`[for=\"${hostId}\"]`)();\n return labelEl ? labelEl.text() : null;\n }\n return null;\n }\n}\n"],"names":["MatFormFieldControlHarness","ComponentHarness","MatFormFieldControlHarnessBase","getLabel","documentRootLocator","documentRootLocatorFactory","labelId","host","getAttribute","labelText","hostId","labelEl","locatorForOptional","text"],"mappings":";;AAcM,MAAgBA,0BAA2B,SAAQC,gBAAgB,CAAA;AAKnE,MAAgBC,8BAA+B,SAAQF,0BAA0B,CAAA;EAKrF,MAAMG,QAAQA,GAAA;AACZ,IAAA,MAAMC,mBAAmB,GAAG,IAAI,CAACC,0BAA0B,EAAE;AAC7D,IAAA,MAAMC,OAAO,GAAG,MAAM,CAAC,MAAM,IAAI,CAACC,IAAI,EAAE,EAAEC,YAAY,CAAC,iBAAiB,CAAC;AACzE,IAAA,MAAMC,SAAS,GAAG,MAAM,CAAC,MAAM,IAAI,CAACF,IAAI,EAAE,EAAEC,YAAY,CAAC,YAAY,CAAC;AACtE,IAAA,MAAME,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,CAACH,IAAI,EAAE,EAAEC,YAAY,CAAC,IAAI,CAAC;AAE3D,IAAA,IAAIF,OAAO,EAAE;AAEX,MAAA,MAAMK,OAAO,GAAG,MAAMP,mBAAmB,CAACQ,kBAAkB,CAAC,CAAA,KAAA,EAAQN,OAAO,CAAA,EAAA,CAAI,CAAC,EAAE;MACnF,OAAOK,OAAO,GAAGA,OAAO,CAACE,IAAI,EAAE,GAAG,IAAI;IACxC,CAAA,MAAO,IAAIJ,SAAS,EAAE;AAEpB,MAAA,OAAOA,SAAS;IAClB,CAAA,MAAO,IAAIC,MAAM,EAAE;AAEjB,MAAA,MAAMC,OAAO,GAAG,MAAMP,mBAAmB,CAACQ,kBAAkB,CAAC,CAAA,MAAA,EAASF,MAAM,CAAA,EAAA,CAAI,CAAC,EAAE;MACnF,OAAOC,OAAO,GAAGA,OAAO,CAACE,IAAI,EAAE,GAAG,IAAI;AACxC,IAAA;AACA,IAAA,OAAO,IAAI;AACb,EAAA;AACD;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"form-field-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/form-field/testing/error-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/form-field/testing/form-field-harness.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\nimport {\n BaseHarnessFilters,\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\n\n/** A set of criteria that can be used to filter a list of error harness instances. */\nexport interface ErrorHarnessFilters extends BaseHarnessFilters {\n /** Only find instances whose text matches the given value. */\n text?: string | RegExp;\n}\n\n/** Harness for interacting with a `mat-error` in tests. */\nexport class MatErrorHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-form-field-error';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for an error with specific\n * attributes.\n * @param options Options for filtering which error instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatErrorHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ErrorHarnessFilters = {},\n ): HarnessPredicate<T> {\n return MatErrorHarness._getErrorPredicate(this, options);\n }\n\n protected static _getErrorPredicate<T extends MatErrorHarness>(\n type: ComponentHarnessConstructor<T>,\n options: ErrorHarnessFilters,\n ): HarnessPredicate<T> {\n return new HarnessPredicate(type, options).addOption('text', options.text, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getText(), text),\n );\n }\n\n /** Gets a promise for the error's label text. */\n async getText(): Promise<string> {\n return (await this.host()).text();\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 ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n HarnessQuery,\n parallel,\n} from '@angular/cdk/testing';\nimport {ErrorHarnessFilters, MatErrorHarness} from './error-harness';\nimport {MatInputHarness} from '../../input/testing';\nimport {MatFormFieldControlHarness} from './control';\nimport {MatSelectHarness} from '../../select/testing';\nimport {MatDatepickerInputHarness, MatDateRangeInputHarness} from '../../datepicker/testing';\nimport {FormFieldHarnessFilters} from './form-field-harness-filters';\n\n/** Possible harnesses of controls which can be bound to a form-field. */\nexport type FormFieldControlHarness =\n | MatInputHarness\n | MatSelectHarness\n | MatDatepickerInputHarness\n | MatDateRangeInputHarness;\n\nexport class MatFormFieldHarness extends ComponentHarness {\n private _prefixContainer = this.locatorForOptional('.mat-mdc-form-field-text-prefix');\n private _suffixContainer = this.locatorForOptional('.mat-mdc-form-field-text-suffix');\n private _label = this.locatorForOptional('.mdc-floating-label');\n private _hints = this.locatorForAll('.mat-mdc-form-field-hint');\n private _inputControl = this.locatorForOptional(MatInputHarness);\n private _selectControl = this.locatorForOptional(MatSelectHarness);\n private _datepickerInputControl = this.locatorForOptional(MatDatepickerInputHarness);\n private _dateRangeInputControl = this.locatorForOptional(MatDateRangeInputHarness);\n private _textField = this.locatorFor('.mat-mdc-text-field-wrapper');\n private _errorHarness = MatErrorHarness;\n\n static hostSelector = '.mat-mdc-form-field';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a form field with specific\n * attributes.\n * @param options Options for filtering which form field instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatFormFieldHarness>(\n this: ComponentHarnessConstructor<T>,\n options: FormFieldHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('floatingLabelText', options.floatingLabelText, async (harness, text) =>\n HarnessPredicate.stringMatches(await harness.getLabel(), text),\n )\n .addOption(\n 'hasErrors',\n options.hasErrors,\n async (harness, hasErrors) => (await harness.hasErrors()) === hasErrors,\n )\n .addOption(\n 'isValid',\n options.isValid,\n async (harness, isValid) => (await harness.isControlValid()) === isValid,\n );\n }\n\n /** Gets the appearance of the form-field. */\n async getAppearance(): Promise<'fill' | 'outline'> {\n const textFieldEl = await this._textField();\n if (await textFieldEl.hasClass('mdc-text-field--outlined')) {\n return 'outline';\n }\n return 'fill';\n }\n\n /** Whether the form-field has a label. */\n async hasLabel(): Promise<boolean> {\n return (await this._label()) !== null;\n }\n\n /** Whether the label is currently floating. */\n async isLabelFloating(): Promise<boolean> {\n const labelEl = await this._label();\n return labelEl !== null ? await labelEl.hasClass('mdc-floating-label--float-above') : false;\n }\n\n /** Gets the label of the form-field. */\n async getLabel(): Promise<string | null> {\n const labelEl = await this._label();\n return labelEl ? labelEl.text() : null;\n }\n\n /** Whether the form-field has errors. */\n async hasErrors(): Promise<boolean> {\n return (await this.getTextErrors()).length > 0;\n }\n\n /** Whether the form-field is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).hasClass('mat-form-field-disabled');\n }\n\n /** Whether the form-field is currently autofilled. */\n async isAutofilled(): Promise<boolean> {\n return (await this.host()).hasClass('mat-form-field-autofilled');\n }\n\n /**\n * Gets the harness of the control that is bound to the form-field. Only\n * default controls such as \"MatInputHarness\" and \"MatSelectHarness\" are\n * supported.\n */\n async getControl(): Promise<FormFieldControlHarness | null>;\n\n /**\n * Gets the harness of the control that is bound to the form-field. Searches\n * for a control that matches the specified harness type.\n */\n async getControl<X extends MatFormFieldControlHarness>(\n type: ComponentHarnessConstructor<X>,\n ): Promise<X | null>;\n\n /**\n * Gets the harness of the control that is bound to the form-field. Searches\n * for a control that matches the specified harness predicate.\n */\n async getControl<X extends MatFormFieldControlHarness>(\n type: HarnessPredicate<X>,\n ): Promise<X | null>;\n\n // Implementation of the \"getControl\" method overload signatures.\n async getControl<X extends MatFormFieldControlHarness>(type?: HarnessQuery<X>) {\n if (type) {\n return this.locatorForOptional(type)();\n }\n const [select, input, datepickerInput, dateRangeInput] = await parallel(() => [\n this._selectControl(),\n this._inputControl(),\n this._datepickerInputControl(),\n this._dateRangeInputControl(),\n ]);\n\n // Match the datepicker inputs first since they can also have a `MatInput`.\n return datepickerInput || dateRangeInput || select || input;\n }\n\n /** Gets the theme color of the form-field. */\n async getThemeColor(): Promise<'primary' | 'accent' | 'warn'> {\n const hostEl = await this.host();\n const [isAccent, isWarn] = await parallel(() => {\n return [hostEl.hasClass('mat-accent'), hostEl.hasClass('mat-warn')];\n });\n if (isAccent) {\n return 'accent';\n } else if (isWarn) {\n return 'warn';\n }\n return 'primary';\n }\n\n /** Gets error messages which are currently displayed in the form-field. */\n async getTextErrors(): Promise<string[]> {\n const errors = await this.getErrors();\n return parallel(() => errors.map(e => e.getText()));\n }\n\n /** Gets all of the error harnesses in the form field. */\n async getErrors(filter: ErrorHarnessFilters = {}): Promise<MatErrorHarness[]> {\n return this.locatorForAll(this._errorHarness.with(filter))();\n }\n\n /** Gets hint messages which are currently displayed in the form-field. */\n async getTextHints(): Promise<string[]> {\n const hints = await this._hints();\n return parallel(() => hints.map(e => e.text()));\n }\n\n /** Gets the text inside the prefix element. */\n async getPrefixText(): Promise<string> {\n const prefix = await this._prefixContainer();\n return prefix ? prefix.text() : '';\n }\n\n /** Gets the text inside the suffix element. */\n async getSuffixText(): Promise<string> {\n const suffix = await this._suffixContainer();\n return suffix ? suffix.text() : '';\n }\n\n /**\n * Whether the form control has been touched. Returns \"null\"\n * if no form control is set up.\n */\n async isControlTouched(): Promise<boolean | null> {\n if (!(await this._hasFormControl())) {\n return null;\n }\n return (await this.host()).hasClass('ng-touched');\n }\n\n /**\n * Whether the form control is dirty. Returns \"null\"\n * if no form control is set up.\n */\n async isControlDirty(): Promise<boolean | null> {\n if (!(await this._hasFormControl())) {\n return null;\n }\n return (await this.host()).hasClass('ng-dirty');\n }\n\n /**\n * Whether the form control is valid. Returns \"null\"\n * if no form control is set up.\n */\n async isControlValid(): Promise<boolean | null> {\n if (!(await this._hasFormControl())) {\n return null;\n }\n return (await this.host()).hasClass('ng-valid');\n }\n\n /**\n * Whether the form control is pending validation. Returns \"null\"\n * if no form control is set up.\n */\n async isControlPending(): Promise<boolean | null> {\n if (!(await this._hasFormControl())) {\n return null;\n }\n return (await this.host()).hasClass('ng-pending');\n }\n\n /** Checks whether the form-field control has set up a form control. */\n private async _hasFormControl(): Promise<boolean> {\n const hostEl = await this.host();\n // If no form \"NgControl\" is bound to the form-field control, the form-field\n // is not able to forward any control status classes. Therefore if either the\n // \"ng-touched\" or \"ng-untouched\" class is set, we know that it has a form control\n const [isTouched, isUntouched] = await parallel(() => [\n hostEl.hasClass('ng-touched'),\n hostEl.hasClass('ng-untouched'),\n ]);\n return isTouched || isUntouched;\n }\n}\n"],"names":["MatErrorHarness","ComponentHarness","hostSelector","with","options","_getErrorPredicate","type","HarnessPredicate","addOption","text","harness","stringMatches","getText","host","MatFormFieldHarness","_prefixContainer","locatorForOptional","_suffixContainer","_label","_hints","locatorForAll","_inputControl","MatInputHarness","_selectControl","MatSelectHarness","_datepickerInputControl","MatDatepickerInputHarness","_dateRangeInputControl","MatDateRangeInputHarness","_textField","locatorFor","_errorHarness","floatingLabelText","getLabel","hasErrors","isValid","isControlValid","getAppearance","textFieldEl","hasClass","hasLabel","isLabelFloating","labelEl","getTextErrors","length","isDisabled","isAutofilled","getControl","select","input","datepickerInput","dateRangeInput","parallel","getThemeColor","hostEl","isAccent","isWarn","errors","getErrors","map","e","filter","getTextHints","hints","getPrefixText","prefix","getSuffixText","suffix","isControlTouched","_hasFormControl","isControlDirty","isControlPending","isTouched","isUntouched"],"mappings":";;;;;;;;;AAsBM,MAAOA,eAAgB,SAAQC,gBAAgB,CAAA;EACnD,OAAOC,YAAY,GAAG,2BAA2B;AAQjD,EAAA,OAAOC,IAAIA,CAETC,OAAA,GAA+B,EAAE,EAAA;AAEjC,IAAA,OAAOJ,eAAe,CAACK,kBAAkB,CAAC,IAAI,EAAED,OAAO,CAAC;AAC1D,EAAA;AAEU,EAAA,OAAOC,kBAAkBA,CACjCC,IAAoC,EACpCF,OAA4B,EAAA;AAE5B,IAAA,OAAO,IAAIG,gBAAgB,CAACD,IAAI,EAAEF,OAAO,CAAC,CAACI,SAAS,CAAC,MAAM,EAAEJ,OAAO,CAACK,IAAI,EAAE,CAACC,OAAO,EAAED,IAAI,KACvFF,gBAAgB,CAACI,aAAa,CAACD,OAAO,CAACE,OAAO,EAAE,EAAEH,IAAI,CAAC,CACxD;AACH,EAAA;EAGA,MAAMG,OAAOA,GAAA;IACX,OAAO,CAAC,MAAM,IAAI,CAACC,IAAI,EAAE,EAAEJ,IAAI,EAAE;AACnC,EAAA;;;ACrBI,MAAOK,mBAAoB,SAAQb,gBAAgB,CAAA;AAC/Cc,EAAAA,gBAAgB,GAAG,IAAI,CAACC,kBAAkB,CAAC,iCAAiC,CAAC;AAC7EC,EAAAA,gBAAgB,GAAG,IAAI,CAACD,kBAAkB,CAAC,iCAAiC,CAAC;AAC7EE,EAAAA,MAAM,GAAG,IAAI,CAACF,kBAAkB,CAAC,qBAAqB,CAAC;AACvDG,EAAAA,MAAM,GAAG,IAAI,CAACC,aAAa,CAAC,0BAA0B,CAAC;AACvDC,EAAAA,aAAa,GAAG,IAAI,CAACL,kBAAkB,CAACM,eAAe,CAAC;AACxDC,EAAAA,cAAc,GAAG,IAAI,CAACP,kBAAkB,CAACQ,gBAAgB,CAAC;AAC1DC,EAAAA,uBAAuB,GAAG,IAAI,CAACT,kBAAkB,CAACU,yBAAyB,CAAC;AAC5EC,EAAAA,sBAAsB,GAAG,IAAI,CAACX,kBAAkB,CAACY,wBAAwB,CAAC;AAC1EC,EAAAA,UAAU,GAAG,IAAI,CAACC,UAAU,CAAC,6BAA6B,CAAC;AAC3DC,EAAAA,aAAa,GAAG/B,eAAe;EAEvC,OAAOE,YAAY,GAAG,qBAAqB;AAQ3C,EAAA,OAAOC,IAAIA,CAETC,OAAA,GAAmC,EAAE,EAAA;AAErC,IAAA,OAAO,IAAIG,gBAAgB,CAAC,IAAI,EAAEH,OAAO,CAAA,CACtCI,SAAS,CAAC,mBAAmB,EAAEJ,OAAO,CAAC4B,iBAAiB,EAAE,OAAOtB,OAAO,EAAED,IAAI,KAC7EF,gBAAgB,CAACI,aAAa,CAAC,MAAMD,OAAO,CAACuB,QAAQ,EAAE,EAAExB,IAAI,CAAC,CAAA,CAE/DD,SAAS,CACR,WAAW,EACXJ,OAAO,CAAC8B,SAAS,EACjB,OAAOxB,OAAO,EAAEwB,SAAS,KAAK,CAAC,MAAMxB,OAAO,CAACwB,SAAS,EAAE,MAAMA,SAAS,CAAA,CAExE1B,SAAS,CACR,SAAS,EACTJ,OAAO,CAAC+B,OAAO,EACf,OAAOzB,OAAO,EAAEyB,OAAO,KAAK,CAAC,MAAMzB,OAAO,CAAC0B,cAAc,EAAE,MAAMD,OAAO,CACzE;AACL,EAAA;EAGA,MAAME,aAAaA,GAAA;AACjB,IAAA,MAAMC,WAAW,GAAG,MAAM,IAAI,CAACT,UAAU,EAAE;AAC3C,IAAA,IAAI,MAAMS,WAAW,CAACC,QAAQ,CAAC,0BAA0B,CAAC,EAAE;AAC1D,MAAA,OAAO,SAAS;AAClB,IAAA;AACA,IAAA,OAAO,MAAM;AACf,EAAA;EAGA,MAAMC,QAAQA,GAAA;IACZ,OAAO,CAAC,MAAM,IAAI,CAACtB,MAAM,EAAE,MAAM,IAAI;AACvC,EAAA;EAGA,MAAMuB,eAAeA,GAAA;AACnB,IAAA,MAAMC,OAAO,GAAG,MAAM,IAAI,CAACxB,MAAM,EAAE;AACnC,IAAA,OAAOwB,OAAO,KAAK,IAAI,GAAG,MAAMA,OAAO,CAACH,QAAQ,CAAC,iCAAiC,CAAC,GAAG,KAAK;AAC7F,EAAA;EAGA,MAAMN,QAAQA,GAAA;AACZ,IAAA,MAAMS,OAAO,GAAG,MAAM,IAAI,CAACxB,MAAM,EAAE;IACnC,OAAOwB,OAAO,GAAGA,OAAO,CAACjC,IAAI,EAAE,GAAG,IAAI;AACxC,EAAA;EAGA,MAAMyB,SAASA,GAAA;IACb,OAAO,CAAC,MAAM,IAAI,CAACS,aAAa,EAAE,EAAEC,MAAM,GAAG,CAAC;AAChD,EAAA;EAGA,MAAMC,UAAUA,GAAA;IACd,OAAO,CAAC,MAAM,IAAI,CAAChC,IAAI,EAAE,EAAE0B,QAAQ,CAAC,yBAAyB,CAAC;AAChE,EAAA;EAGA,MAAMO,YAAYA,GAAA;IAChB,OAAO,CAAC,MAAM,IAAI,CAACjC,IAAI,EAAE,EAAE0B,QAAQ,CAAC,2BAA2B,CAAC;AAClE,EAAA;EA0BA,MAAMQ,UAAUA,CAAuCzC,IAAsB,EAAA;AAC3E,IAAA,IAAIA,IAAI,EAAE;AACR,MAAA,OAAO,IAAI,CAACU,kBAAkB,CAACV,IAAI,CAAC,EAAE;AACxC,IAAA;AACA,IAAA,MAAM,CAAC0C,MAAM,EAAEC,KAAK,EAAEC,eAAe,EAAEC,cAAc,CAAC,GAAG,MAAMC,QAAQ,CAAC,MAAM,CAC5E,IAAI,CAAC7B,cAAc,EAAE,EACrB,IAAI,CAACF,aAAa,EAAE,EACpB,IAAI,CAACI,uBAAuB,EAAE,EAC9B,IAAI,CAACE,sBAAsB,EAAE,CAC9B,CAAC;AAGF,IAAA,OAAOuB,eAAe,IAAIC,cAAc,IAAIH,MAAM,IAAIC,KAAK;AAC7D,EAAA;EAGA,MAAMI,aAAaA,GAAA;AACjB,IAAA,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACzC,IAAI,EAAE;IAChC,MAAM,CAAC0C,QAAQ,EAAEC,MAAM,CAAC,GAAG,MAAMJ,QAAQ,CAAC,MAAK;AAC7C,MAAA,OAAO,CAACE,MAAM,CAACf,QAAQ,CAAC,YAAY,CAAC,EAAEe,MAAM,CAACf,QAAQ,CAAC,UAAU,CAAC,CAAC;AACrE,IAAA,CAAC,CAAC;AACF,IAAA,IAAIgB,QAAQ,EAAE;AACZ,MAAA,OAAO,QAAQ;IACjB,CAAA,MAAO,IAAIC,MAAM,EAAE;AACjB,MAAA,OAAO,MAAM;AACf,IAAA;AACA,IAAA,OAAO,SAAS;AAClB,EAAA;EAGA,MAAMb,aAAaA,GAAA;AACjB,IAAA,MAAMc,MAAM,GAAG,MAAM,IAAI,CAACC,SAAS,EAAE;AACrC,IAAA,OAAON,QAAQ,CAAC,MAAMK,MAAM,CAACE,GAAG,CAACC,CAAC,IAAIA,CAAC,CAAChD,OAAO,EAAE,CAAC,CAAC;AACrD,EAAA;AAGA,EAAA,MAAM8C,SAASA,CAACG,MAAA,GAA8B,EAAE,EAAA;AAC9C,IAAA,OAAO,IAAI,CAACzC,aAAa,CAAC,IAAI,CAACW,aAAa,CAAC5B,IAAI,CAAC0D,MAAM,CAAC,CAAC,EAAE;AAC9D,EAAA;EAGA,MAAMC,YAAYA,GAAA;AAChB,IAAA,MAAMC,KAAK,GAAG,MAAM,IAAI,CAAC5C,MAAM,EAAE;AACjC,IAAA,OAAOiC,QAAQ,CAAC,MAAMW,KAAK,CAACJ,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACnD,IAAI,EAAE,CAAC,CAAC;AACjD,EAAA;EAGA,MAAMuD,aAAaA,GAAA;AACjB,IAAA,MAAMC,MAAM,GAAG,MAAM,IAAI,CAAClD,gBAAgB,EAAE;IAC5C,OAAOkD,MAAM,GAAGA,MAAM,CAACxD,IAAI,EAAE,GAAG,EAAE;AACpC,EAAA;EAGA,MAAMyD,aAAaA,GAAA;AACjB,IAAA,MAAMC,MAAM,GAAG,MAAM,IAAI,CAAClD,gBAAgB,EAAE;IAC5C,OAAOkD,MAAM,GAAGA,MAAM,CAAC1D,IAAI,EAAE,GAAG,EAAE;AACpC,EAAA;EAMA,MAAM2D,gBAAgBA,GAAA;IACpB,IAAI,EAAE,MAAM,IAAI,CAACC,eAAe,EAAE,CAAC,EAAE;AACnC,MAAA,OAAO,IAAI;AACb,IAAA;IACA,OAAO,CAAC,MAAM,IAAI,CAACxD,IAAI,EAAE,EAAE0B,QAAQ,CAAC,YAAY,CAAC;AACnD,EAAA;EAMA,MAAM+B,cAAcA,GAAA;IAClB,IAAI,EAAE,MAAM,IAAI,CAACD,eAAe,EAAE,CAAC,EAAE;AACnC,MAAA,OAAO,IAAI;AACb,IAAA;IACA,OAAO,CAAC,MAAM,IAAI,CAACxD,IAAI,EAAE,EAAE0B,QAAQ,CAAC,UAAU,CAAC;AACjD,EAAA;EAMA,MAAMH,cAAcA,GAAA;IAClB,IAAI,EAAE,MAAM,IAAI,CAACiC,eAAe,EAAE,CAAC,EAAE;AACnC,MAAA,OAAO,IAAI;AACb,IAAA;IACA,OAAO,CAAC,MAAM,IAAI,CAACxD,IAAI,EAAE,EAAE0B,QAAQ,CAAC,UAAU,CAAC;AACjD,EAAA;EAMA,MAAMgC,gBAAgBA,GAAA;IACpB,IAAI,EAAE,MAAM,IAAI,CAACF,eAAe,EAAE,CAAC,EAAE;AACnC,MAAA,OAAO,IAAI;AACb,IAAA;IACA,OAAO,CAAC,MAAM,IAAI,CAACxD,IAAI,EAAE,EAAE0B,QAAQ,CAAC,YAAY,CAAC;AACnD,EAAA;EAGQ,MAAM8B,eAAeA,GAAA;AAC3B,IAAA,MAAMf,MAAM,GAAG,MAAM,IAAI,CAACzC,IAAI,EAAE;IAIhC,MAAM,CAAC2D,SAAS,EAAEC,WAAW,CAAC,GAAG,MAAMrB,QAAQ,CAAC,MAAM,CACpDE,MAAM,CAACf,QAAQ,CAAC,YAAY,CAAC,EAC7Be,MAAM,CAACf,QAAQ,CAAC,cAAc,CAAC,CAChC,CAAC;IACF,OAAOiC,SAAS,IAAIC,WAAW;AACjC,EAAA;;;;;"}
{"version":3,"file":"form-field-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/form-field/testing/error-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/form-field/testing/form-field-harness.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\nimport {\n BaseHarnessFilters,\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\n\n/** A set of criteria that can be used to filter a list of error harness instances. */\nexport interface ErrorHarnessFilters extends BaseHarnessFilters {\n /** Only find instances whose text matches the given value. */\n text?: string | RegExp;\n}\n\n/** Harness for interacting with a `mat-error` in tests. */\nexport class MatErrorHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-form-field-error';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for an error with specific\n * attributes.\n * @param options Options for filtering which error instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatErrorHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ErrorHarnessFilters = {},\n ): HarnessPredicate<T> {\n return MatErrorHarness._getErrorPredicate(this, options);\n }\n\n protected static _getErrorPredicate<T extends MatErrorHarness>(\n type: ComponentHarnessConstructor<T>,\n options: ErrorHarnessFilters,\n ): HarnessPredicate<T> {\n return new HarnessPredicate(type, options).addOption('text', options.text, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getText(), text),\n );\n }\n\n /** Gets a promise for the error's label text. */\n async getText(): Promise<string> {\n return (await this.host()).text();\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 ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n HarnessQuery,\n parallel,\n} from '@angular/cdk/testing';\nimport {ErrorHarnessFilters, MatErrorHarness} from './error-harness';\nimport {MatInputHarness} from '../../input/testing';\nimport {MatFormFieldControlHarness} from './control';\nimport {MatSelectHarness} from '../../select/testing';\nimport {MatDatepickerInputHarness, MatDateRangeInputHarness} from '../../datepicker/testing';\nimport {FormFieldHarnessFilters} from './form-field-harness-filters';\n\n/** Possible harnesses of controls which can be bound to a form-field. */\nexport type FormFieldControlHarness =\n | MatInputHarness\n | MatSelectHarness\n | MatDatepickerInputHarness\n | MatDateRangeInputHarness;\n\nexport class MatFormFieldHarness extends ComponentHarness {\n private _prefixContainer = this.locatorForOptional('.mat-mdc-form-field-text-prefix');\n private _suffixContainer = this.locatorForOptional('.mat-mdc-form-field-text-suffix');\n private _label = this.locatorForOptional('.mdc-floating-label');\n private _hints = this.locatorForAll('.mat-mdc-form-field-hint');\n private _inputControl = this.locatorForOptional(MatInputHarness);\n private _selectControl = this.locatorForOptional(MatSelectHarness);\n private _datepickerInputControl = this.locatorForOptional(MatDatepickerInputHarness);\n private _dateRangeInputControl = this.locatorForOptional(MatDateRangeInputHarness);\n private _textField = this.locatorFor('.mat-mdc-text-field-wrapper');\n private _errorHarness = MatErrorHarness;\n\n static hostSelector = '.mat-mdc-form-field';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a form field with specific\n * attributes.\n * @param options Options for filtering which form field instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatFormFieldHarness>(\n this: ComponentHarnessConstructor<T>,\n options: FormFieldHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('floatingLabelText', options.floatingLabelText, async (harness, text) =>\n HarnessPredicate.stringMatches(await harness.getLabel(), text),\n )\n .addOption(\n 'hasErrors',\n options.hasErrors,\n async (harness, hasErrors) => (await harness.hasErrors()) === hasErrors,\n )\n .addOption(\n 'isValid',\n options.isValid,\n async (harness, isValid) => (await harness.isControlValid()) === isValid,\n );\n }\n\n /** Gets the appearance of the form-field. */\n async getAppearance(): Promise<'fill' | 'outline'> {\n const textFieldEl = await this._textField();\n if (await textFieldEl.hasClass('mdc-text-field--outlined')) {\n return 'outline';\n }\n return 'fill';\n }\n\n /** Whether the form-field has a label. */\n async hasLabel(): Promise<boolean> {\n return (await this._label()) !== null;\n }\n\n /** Whether the label is currently floating. */\n async isLabelFloating(): Promise<boolean> {\n const labelEl = await this._label();\n return labelEl !== null ? await labelEl.hasClass('mdc-floating-label--float-above') : false;\n }\n\n /** Gets the label of the form-field. */\n async getLabel(): Promise<string | null> {\n const labelEl = await this._label();\n return labelEl ? labelEl.text() : null;\n }\n\n /** Whether the form-field has errors. */\n async hasErrors(): Promise<boolean> {\n return (await this.getTextErrors()).length > 0;\n }\n\n /** Whether the form-field is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).hasClass('mat-form-field-disabled');\n }\n\n /** Whether the form-field is currently autofilled. */\n async isAutofilled(): Promise<boolean> {\n return (await this.host()).hasClass('mat-form-field-autofilled');\n }\n\n /**\n * Gets the harness of the control that is bound to the form-field. Only\n * default controls such as \"MatInputHarness\" and \"MatSelectHarness\" are\n * supported.\n */\n async getControl(): Promise<FormFieldControlHarness | null>;\n\n /**\n * Gets the harness of the control that is bound to the form-field. Searches\n * for a control that matches the specified harness type.\n */\n async getControl<X extends MatFormFieldControlHarness>(\n type: ComponentHarnessConstructor<X>,\n ): Promise<X | null>;\n\n /**\n * Gets the harness of the control that is bound to the form-field. Searches\n * for a control that matches the specified harness predicate.\n */\n async getControl<X extends MatFormFieldControlHarness>(\n type: HarnessPredicate<X>,\n ): Promise<X | null>;\n\n // Implementation of the \"getControl\" method overload signatures.\n async getControl<X extends MatFormFieldControlHarness>(type?: HarnessQuery<X>) {\n if (type) {\n return this.locatorForOptional(type)();\n }\n const [select, input, datepickerInput, dateRangeInput] = await parallel(() => [\n this._selectControl(),\n this._inputControl(),\n this._datepickerInputControl(),\n this._dateRangeInputControl(),\n ]);\n\n // Match the datepicker inputs first since they can also have a `MatInput`.\n return datepickerInput || dateRangeInput || select || input;\n }\n\n /** Gets the theme color of the form-field. */\n async getThemeColor(): Promise<'primary' | 'accent' | 'warn'> {\n const hostEl = await this.host();\n const [isAccent, isWarn] = await parallel(() => {\n return [hostEl.hasClass('mat-accent'), hostEl.hasClass('mat-warn')];\n });\n if (isAccent) {\n return 'accent';\n } else if (isWarn) {\n return 'warn';\n }\n return 'primary';\n }\n\n /** Gets error messages which are currently displayed in the form-field. */\n async getTextErrors(): Promise<string[]> {\n const errors = await this.getErrors();\n return parallel(() => errors.map(e => e.getText()));\n }\n\n /** Gets all of the error harnesses in the form field. */\n async getErrors(filter: ErrorHarnessFilters = {}): Promise<MatErrorHarness[]> {\n return this.locatorForAll(this._errorHarness.with(filter))();\n }\n\n /** Gets hint messages which are currently displayed in the form-field. */\n async getTextHints(): Promise<string[]> {\n const hints = await this._hints();\n return parallel(() => hints.map(e => e.text()));\n }\n\n /** Gets the text inside the prefix element. */\n async getPrefixText(): Promise<string> {\n const prefix = await this._prefixContainer();\n return prefix ? prefix.text() : '';\n }\n\n /** Gets the text inside the suffix element. */\n async getSuffixText(): Promise<string> {\n const suffix = await this._suffixContainer();\n return suffix ? suffix.text() : '';\n }\n\n /**\n * Whether the form control has been touched. Returns \"null\"\n * if no form control is set up.\n */\n async isControlTouched(): Promise<boolean | null> {\n if (!(await this._hasFormControl())) {\n return null;\n }\n return (await this.host()).hasClass('ng-touched');\n }\n\n /**\n * Whether the form control is dirty. Returns \"null\"\n * if no form control is set up.\n */\n async isControlDirty(): Promise<boolean | null> {\n if (!(await this._hasFormControl())) {\n return null;\n }\n return (await this.host()).hasClass('ng-dirty');\n }\n\n /**\n * Whether the form control is valid. Returns \"null\"\n * if no form control is set up.\n */\n async isControlValid(): Promise<boolean | null> {\n if (!(await this._hasFormControl())) {\n return null;\n }\n return (await this.host()).hasClass('ng-valid');\n }\n\n /**\n * Whether the form control is pending validation. Returns \"null\"\n * if no form control is set up.\n */\n async isControlPending(): Promise<boolean | null> {\n if (!(await this._hasFormControl())) {\n return null;\n }\n return (await this.host()).hasClass('ng-pending');\n }\n\n /** Checks whether the form-field control has set up a form control. */\n private async _hasFormControl(): Promise<boolean> {\n const hostEl = await this.host();\n // If no form \"NgControl\" is bound to the form-field control, the form-field\n // is not able to forward any control status classes. Therefore if either the\n // \"ng-touched\" or \"ng-untouched\" class is set, we know that it has a form control\n const [isTouched, isUntouched] = await parallel(() => [\n hostEl.hasClass('ng-touched'),\n hostEl.hasClass('ng-untouched'),\n ]);\n return isTouched || isUntouched;\n }\n}\n"],"names":["MatErrorHarness","ComponentHarness","hostSelector","with","options","_getErrorPredicate","type","HarnessPredicate","addOption","text","harness","stringMatches","getText","host","MatFormFieldHarness","_prefixContainer","locatorForOptional","_suffixContainer","_label","_hints","locatorForAll","_inputControl","MatInputHarness","_selectControl","MatSelectHarness","_datepickerInputControl","MatDatepickerInputHarness","_dateRangeInputControl","MatDateRangeInputHarness","_textField","locatorFor","_errorHarness","floatingLabelText","getLabel","hasErrors","isValid","isControlValid","getAppearance","textFieldEl","hasClass","hasLabel","isLabelFloating","labelEl","getTextErrors","length","isDisabled","isAutofilled","getControl","select","input","datepickerInput","dateRangeInput","parallel","getThemeColor","hostEl","isAccent","isWarn","errors","getErrors","map","e","filter","getTextHints","hints","getPrefixText","prefix","getSuffixText","suffix","isControlTouched","_hasFormControl","isControlDirty","isControlPending","isTouched","isUntouched"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"form-field.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/form-field/form-field-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\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {ObserversModule} from '@angular/cdk/observers';\nimport {NgModule} from '@angular/core';\nimport {MatError} from './directives/error';\nimport {MatHint} from './directives/hint';\nimport {MatLabel} from './directives/label';\nimport {MatPrefix} from './directives/prefix';\nimport {MatSuffix} from './directives/suffix';\nimport {MatFormField} from './form-field';\n\n@NgModule({\n imports: [ObserversModule, MatFormField, MatLabel, MatError, MatHint, MatPrefix, MatSuffix],\n exports: [MatFormField, MatLabel, MatHint, MatError, MatPrefix, MatSuffix, BidiModule],\n})\nexport class MatFormFieldModule {}\n"],"names":["MatFormFieldModule","deps","target","i0","ɵɵFactoryTarget","NgModule","imports","ObserversModule","MatFormField","MatLabel","MatError","MatHint","MatPrefix","MatSuffix","exports","BidiModule","ɵinj","ɵɵngDeclareInjector","minVersion","version","ngImport","type","decorators","args"],"mappings":";;;;;;;;;;;;;;;;MAsBaA,kBAAkB,CAAA;;;;;UAAlBA,kBAAkB;AAAAC,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;;;;;UAAlBL,kBAAkB;AAAAM,IAAAA,OAAA,EAAA,CAHnBC,eAAe,EAAEC,YAAY,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,SAAS,EAAEC,SAAS,CAAA;AAAAC,IAAAA,OAAA,EAAA,CAChFN,YAAY,EAAEC,QAAQ,EAAEE,OAAO,EAAED,QAAQ,EAAEE,SAAS,EAAEC,SAAS,EAAEE,UAAU;AAAA,GAAA,CAAA;AAE1E,EAAA,OAAAC,IAAA,GAAAb,EAAA,CAAAc,mBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,QAAA,EAAAjB,EAAA;AAAAkB,IAAAA,IAAA,EAAArB,kBAAkB;AAAAM,IAAAA,OAAA,EAAA,CAHnBC,eAAe,EAAEC,YAAY,EACoCO,UAAU;AAAA,GAAA,CAAA;;;;;;QAE1Ef,kBAAkB;AAAAsB,EAAAA,UAAA,EAAA,CAAA;UAJ9BjB,QAAQ;AAACkB,IAAAA,IAAA,EAAA,CAAA;AACRjB,MAAAA,OAAO,EAAE,CAACC,eAAe,EAAEC,YAAY,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,SAAS,EAAEC,SAAS,CAAC;AAC3FC,MAAAA,OAAO,EAAE,CAACN,YAAY,EAAEC,QAAQ,EAAEE,OAAO,EAAED,QAAQ,EAAEE,SAAS,EAAEC,SAAS,EAAEE,UAAU;KACtF;;;;;;"}
{"version":3,"file":"form-field.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/form-field/form-field-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\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {ObserversModule} from '@angular/cdk/observers';\nimport {NgModule} from '@angular/core';\nimport {MatError} from './directives/error';\nimport {MatHint} from './directives/hint';\nimport {MatLabel} from './directives/label';\nimport {MatPrefix} from './directives/prefix';\nimport {MatSuffix} from './directives/suffix';\nimport {MatFormField} from './form-field';\n\n@NgModule({\n imports: [ObserversModule, MatFormField, MatLabel, MatError, MatHint, MatPrefix, MatSuffix],\n exports: [MatFormField, MatLabel, MatHint, MatError, MatPrefix, MatSuffix, BidiModule],\n})\nexport class MatFormFieldModule {}\n"],"names":["MatFormFieldModule","deps","target","i0","ɵɵFactoryTarget","NgModule","imports","ObserversModule","MatFormField","MatLabel","MatError","MatHint","MatPrefix","MatSuffix","exports","BidiModule","ɵinj","ɵɵngDeclareInjector","minVersion","version","ngImport","type","decorators","args"],"mappings":";;;;;;;;;;;;;;;;MAsBaA,kBAAkB,CAAA;;;;;UAAlBA,kBAAkB;AAAAC,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;;;;;UAAlBL,kBAAkB;AAAAM,IAAAA,OAAA,EAAA,CAHnBC,eAAe,EAAEC,YAAY,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,SAAS,EAAEC,SAAS,CAAA;AAAAC,IAAAA,OAAA,EAAA,CAChFN,YAAY,EAAEC,QAAQ,EAAEE,OAAO,EAAED,QAAQ,EAAEE,SAAS,EAAEC,SAAS,EAAEE,UAAU;AAAA,GAAA,CAAA;AAE1E,EAAA,OAAAC,IAAA,GAAAb,EAAA,CAAAc,mBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,QAAA,EAAAjB,EAAA;AAAAkB,IAAAA,IAAA,EAAArB,kBAAkB;AAAAM,IAAAA,OAAA,EAAA,CAHnBC,eAAe,EAAEC,YAAY,EACoCO,UAAU;AAAA,GAAA,CAAA;;;;;;QAE1Ef,kBAAkB;AAAAsB,EAAAA,UAAA,EAAA,CAAA;UAJ9BjB,QAAQ;AAACkB,IAAAA,IAAA,EAAA,CAAA;AACRjB,MAAAA,OAAO,EAAE,CAACC,eAAe,EAAEC,YAAY,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,SAAS,EAAEC,SAAS,CAAC;AAC3FC,MAAAA,OAAO,EAAE,CAACN,YAAY,EAAEC,QAAQ,EAAEE,OAAO,EAAED,QAAQ,EAAEE,SAAS,EAAEC,SAAS,EAAEE,UAAU;KACtF;;;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"grid-list-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/grid-list/testing/grid-tile-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/grid-list/testing/grid-list-harness.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\nimport {ContentContainerComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {GridTileHarnessFilters} from './grid-list-harness-filters';\n\n/** Selectors for the various `mat-grid-tile` sections that may contain user content. */\nexport enum MatGridTileSection {\n HEADER = '.mat-grid-tile-header',\n FOOTER = '.mat-grid-tile-footer',\n}\n\n/** Harness for interacting with a standard `MatGridTitle` in tests. */\nexport class MatGridTileHarness extends ContentContainerComponentHarness<MatGridTileSection> {\n /** The selector for the host element of a `MatGridTile` instance. */\n static hostSelector = '.mat-grid-tile';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatGridTileHarness`\n * that meets certain criteria.\n * @param options Options for filtering which dialog instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: GridTileHarnessFilters = {}): HarnessPredicate<MatGridTileHarness> {\n return new HarnessPredicate(MatGridTileHarness, options)\n .addOption('headerText', options.headerText, (harness, pattern) =>\n HarnessPredicate.stringMatches(harness.getHeaderText(), pattern),\n )\n .addOption('footerText', options.footerText, (harness, pattern) =>\n HarnessPredicate.stringMatches(harness.getFooterText(), pattern),\n );\n }\n\n private _header = this.locatorForOptional(MatGridTileSection.HEADER);\n private _footer = this.locatorForOptional(MatGridTileSection.FOOTER);\n private _avatar = this.locatorForOptional('.mat-grid-avatar');\n\n /** Gets the amount of rows that the grid-tile takes up. */\n async getRowspan(): Promise<number> {\n return Number(await (await this.host()).getAttribute('rowspan'));\n }\n\n /** Gets the amount of columns that the grid-tile takes up. */\n async getColspan(): Promise<number> {\n return Number(await (await this.host()).getAttribute('colspan'));\n }\n\n /** Whether the grid-tile has a header. */\n async hasHeader(): Promise<boolean> {\n return (await this._header()) !== null;\n }\n\n /** Whether the grid-tile has a footer. */\n async hasFooter(): Promise<boolean> {\n return (await this._footer()) !== null;\n }\n\n /** Whether the grid-tile has an avatar. */\n async hasAvatar(): Promise<boolean> {\n return (await this._avatar()) !== null;\n }\n\n /** Gets the text of the header if present. */\n async getHeaderText(): Promise<string | null> {\n // For performance reasons, we do not use \"hasHeader\" as\n // we would then need to query twice for the header.\n const headerEl = await this._header();\n return headerEl ? headerEl.text() : null;\n }\n\n /** Gets the text of the footer if present. */\n async getFooterText(): Promise<string | null> {\n // For performance reasons, we do not use \"hasFooter\" as\n // we would then need to query twice for the footer.\n const headerEl = await this._footer();\n return headerEl ? headerEl.text() : null;\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 {ComponentHarness, HarnessPredicate, parallel} from '@angular/cdk/testing';\nimport {ɵTileCoordinator as TileCoordinator} from '../../grid-list';\nimport {GridListHarnessFilters, GridTileHarnessFilters} from './grid-list-harness-filters';\nimport {MatGridTileHarness} from './grid-tile-harness';\n\n/** Harness for interacting with a standard `MatGridList` in tests. */\nexport class MatGridListHarness extends ComponentHarness {\n /** The selector for the host element of a `MatGridList` instance. */\n static hostSelector = '.mat-grid-list';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatGridListHarness`\n * that meets certain criteria.\n * @param options Options for filtering which dialog instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: GridListHarnessFilters = {}): HarnessPredicate<MatGridListHarness> {\n return new HarnessPredicate(MatGridListHarness, options);\n }\n\n /**\n * Tile coordinator that is used by the \"MatGridList\" for computing\n * positions of tiles. We leverage the coordinator to provide an API\n * for retrieving tiles based on visual tile positions.\n */\n private _tileCoordinator = new TileCoordinator();\n\n /** Gets all tiles of the grid-list. */\n async getTiles(filters: GridTileHarnessFilters = {}): Promise<MatGridTileHarness[]> {\n return await this.locatorForAll(MatGridTileHarness.with(filters))();\n }\n\n /** Gets the amount of columns of the grid-list. */\n async getColumns(): Promise<number> {\n return Number(await (await this.host()).getAttribute('cols'));\n }\n\n /**\n * Gets a tile of the grid-list that is located at the given location.\n * @param row Zero-based row index.\n * @param column Zero-based column index.\n */\n async getTileAtPosition({\n row,\n column,\n }: {\n row: number;\n column: number;\n }): Promise<MatGridTileHarness> {\n const [tileHarnesses, columns] = await parallel(() => [this.getTiles(), this.getColumns()]);\n const tileSpans = tileHarnesses.map(t => parallel(() => [t.getColspan(), t.getRowspan()]));\n const tiles = (await parallel(() => tileSpans)).map(([colspan, rowspan]) => ({\n colspan,\n rowspan,\n }));\n // Update the tile coordinator to reflect the current column amount and\n // rendered tiles. We update upon every call of this method since we do not\n // know if tiles have been added, removed or updated (in terms of rowspan/colspan).\n this._tileCoordinator.update(columns, tiles);\n // The tile coordinator respects the colspan and rowspan for calculating the positions\n // of tiles, but it does not create multiple position entries if a tile spans over multiple\n // columns or rows. We want to provide an API where developers can retrieve a tile based on\n // any position that lies within the visual tile boundaries. For example: If a tile spans\n // over two columns, then the same tile should be returned for either column indices.\n for (let i = 0; i < this._tileCoordinator.positions.length; i++) {\n const position = this._tileCoordinator.positions[i];\n const {rowspan, colspan} = tiles[i];\n // Return the tile harness if the given position visually resolves to the tile.\n if (\n column >= position.col &&\n column <= position.col + colspan - 1 &&\n row >= position.row &&\n row <= position.row + rowspan - 1\n ) {\n return tileHarnesses[i];\n }\n }\n throw Error('Could not find tile at given position.');\n }\n}\n"],"names":["MatGridTileSection","MatGridTileHarness","ContentContainerComponentHarness","hostSelector","with","options","HarnessPredicate","addOption","headerText","harness","pattern","stringMatches","getHeaderText","footerText","getFooterText","_header","locatorForOptional","HEADER","_footer","FOOTER","_avatar","getRowspan","Number","host","getAttribute","getColspan","hasHeader","hasFooter","hasAvatar","headerEl","text","MatGridListHarness","ComponentHarness","_tileCoordinator","TileCoordinator","getTiles","filters","locatorForAll","getColumns","getTileAtPosition","row","column","tileHarnesses","columns","parallel","tileSpans","map","t","tiles","colspan","rowspan","update","i","positions","length","position","col","Error"],"mappings":"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"}
{"version":3,"file":"grid-list-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/grid-list/testing/grid-tile-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/grid-list/testing/grid-list-harness.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\nimport {ContentContainerComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {GridTileHarnessFilters} from './grid-list-harness-filters';\n\n/** Selectors for the various `mat-grid-tile` sections that may contain user content. */\nexport enum MatGridTileSection {\n HEADER = '.mat-grid-tile-header',\n FOOTER = '.mat-grid-tile-footer',\n}\n\n/** Harness for interacting with a standard `MatGridTitle` in tests. */\nexport class MatGridTileHarness extends ContentContainerComponentHarness<MatGridTileSection> {\n /** The selector for the host element of a `MatGridTile` instance. */\n static hostSelector = '.mat-grid-tile';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatGridTileHarness`\n * that meets certain criteria.\n * @param options Options for filtering which dialog instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: GridTileHarnessFilters = {}): HarnessPredicate<MatGridTileHarness> {\n return new HarnessPredicate(MatGridTileHarness, options)\n .addOption('headerText', options.headerText, (harness, pattern) =>\n HarnessPredicate.stringMatches(harness.getHeaderText(), pattern),\n )\n .addOption('footerText', options.footerText, (harness, pattern) =>\n HarnessPredicate.stringMatches(harness.getFooterText(), pattern),\n );\n }\n\n private _header = this.locatorForOptional(MatGridTileSection.HEADER);\n private _footer = this.locatorForOptional(MatGridTileSection.FOOTER);\n private _avatar = this.locatorForOptional('.mat-grid-avatar');\n\n /** Gets the amount of rows that the grid-tile takes up. */\n async getRowspan(): Promise<number> {\n return Number(await (await this.host()).getAttribute('rowspan'));\n }\n\n /** Gets the amount of columns that the grid-tile takes up. */\n async getColspan(): Promise<number> {\n return Number(await (await this.host()).getAttribute('colspan'));\n }\n\n /** Whether the grid-tile has a header. */\n async hasHeader(): Promise<boolean> {\n return (await this._header()) !== null;\n }\n\n /** Whether the grid-tile has a footer. */\n async hasFooter(): Promise<boolean> {\n return (await this._footer()) !== null;\n }\n\n /** Whether the grid-tile has an avatar. */\n async hasAvatar(): Promise<boolean> {\n return (await this._avatar()) !== null;\n }\n\n /** Gets the text of the header if present. */\n async getHeaderText(): Promise<string | null> {\n // For performance reasons, we do not use \"hasHeader\" as\n // we would then need to query twice for the header.\n const headerEl = await this._header();\n return headerEl ? headerEl.text() : null;\n }\n\n /** Gets the text of the footer if present. */\n async getFooterText(): Promise<string | null> {\n // For performance reasons, we do not use \"hasFooter\" as\n // we would then need to query twice for the footer.\n const headerEl = await this._footer();\n return headerEl ? headerEl.text() : null;\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 {ComponentHarness, HarnessPredicate, parallel} from '@angular/cdk/testing';\nimport {ɵTileCoordinator as TileCoordinator} from '../../grid-list';\nimport {GridListHarnessFilters, GridTileHarnessFilters} from './grid-list-harness-filters';\nimport {MatGridTileHarness} from './grid-tile-harness';\n\n/** Harness for interacting with a standard `MatGridList` in tests. */\nexport class MatGridListHarness extends ComponentHarness {\n /** The selector for the host element of a `MatGridList` instance. */\n static hostSelector = '.mat-grid-list';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatGridListHarness`\n * that meets certain criteria.\n * @param options Options for filtering which dialog instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: GridListHarnessFilters = {}): HarnessPredicate<MatGridListHarness> {\n return new HarnessPredicate(MatGridListHarness, options);\n }\n\n /**\n * Tile coordinator that is used by the \"MatGridList\" for computing\n * positions of tiles. We leverage the coordinator to provide an API\n * for retrieving tiles based on visual tile positions.\n */\n private _tileCoordinator = new TileCoordinator();\n\n /** Gets all tiles of the grid-list. */\n async getTiles(filters: GridTileHarnessFilters = {}): Promise<MatGridTileHarness[]> {\n return await this.locatorForAll(MatGridTileHarness.with(filters))();\n }\n\n /** Gets the amount of columns of the grid-list. */\n async getColumns(): Promise<number> {\n return Number(await (await this.host()).getAttribute('cols'));\n }\n\n /**\n * Gets a tile of the grid-list that is located at the given location.\n * @param row Zero-based row index.\n * @param column Zero-based column index.\n */\n async getTileAtPosition({\n row,\n column,\n }: {\n row: number;\n column: number;\n }): Promise<MatGridTileHarness> {\n const [tileHarnesses, columns] = await parallel(() => [this.getTiles(), this.getColumns()]);\n const tileSpans = tileHarnesses.map(t => parallel(() => [t.getColspan(), t.getRowspan()]));\n const tiles = (await parallel(() => tileSpans)).map(([colspan, rowspan]) => ({\n colspan,\n rowspan,\n }));\n // Update the tile coordinator to reflect the current column amount and\n // rendered tiles. We update upon every call of this method since we do not\n // know if tiles have been added, removed or updated (in terms of rowspan/colspan).\n this._tileCoordinator.update(columns, tiles);\n // The tile coordinator respects the colspan and rowspan for calculating the positions\n // of tiles, but it does not create multiple position entries if a tile spans over multiple\n // columns or rows. We want to provide an API where developers can retrieve a tile based on\n // any position that lies within the visual tile boundaries. For example: If a tile spans\n // over two columns, then the same tile should be returned for either column indices.\n for (let i = 0; i < this._tileCoordinator.positions.length; i++) {\n const position = this._tileCoordinator.positions[i];\n const {rowspan, colspan} = tiles[i];\n // Return the tile harness if the given position visually resolves to the tile.\n if (\n column >= position.col &&\n column <= position.col + colspan - 1 &&\n row >= position.row &&\n row <= position.row + rowspan - 1\n ) {\n return tileHarnesses[i];\n }\n }\n throw Error('Could not find tile at given position.');\n }\n}\n"],"names":["MatGridTileSection","MatGridTileHarness","ContentContainerComponentHarness","hostSelector","with","options","HarnessPredicate","addOption","headerText","harness","pattern","stringMatches","getHeaderText","footerText","getFooterText","_header","locatorForOptional","HEADER","_footer","FOOTER","_avatar","getRowspan","Number","host","getAttribute","getColspan","hasHeader","hasFooter","hasAvatar","headerEl","text","MatGridListHarness","ComponentHarness","_tileCoordinator","TileCoordinator","getTiles","filters","locatorForAll","getColumns","getTileAtPosition","row","column","tileHarnesses","columns","parallel","tileSpans","map","t","tiles","colspan","rowspan","update","i","positions","length","position","col","Error"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"grid-list.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/grid-list/grid-list-base.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/grid-list/grid-tile.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/grid-list/grid-tile.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/grid-list/grid-tile-text.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/grid-list/tile-styler.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/grid-list/grid-list.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/grid-list/grid-list.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/grid-list/grid-list-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\nimport {InjectionToken} from '@angular/core';\n\n/**\n * Injection token used to provide a grid list to a tile and to avoid circular imports.\n * @docs-private\n */\nexport const MAT_GRID_LIST = new InjectionToken<MatGridListBase>('MAT_GRID_LIST');\n\n/**\n * Base interface for a `MatGridList`.\n * @docs-private\n */\nexport interface MatGridListBase {\n cols: number;\n gutterSize: string;\n rowHeight: number | string;\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 Component,\n ViewEncapsulation,\n ElementRef,\n Input,\n ContentChildren,\n QueryList,\n AfterContentInit,\n Directive,\n ChangeDetectionStrategy,\n inject,\n} from '@angular/core';\nimport {MatLine, setLines} from '../core';\nimport {coerceNumberProperty, NumberInput} from '@angular/cdk/coercion';\nimport {MAT_GRID_LIST, MatGridListBase} from './grid-list-base';\n\n@Component({\n selector: 'mat-grid-tile',\n exportAs: 'matGridTile',\n host: {\n 'class': 'mat-grid-tile',\n // Ensures that the \"rowspan\" and \"colspan\" input value is reflected in\n // the DOM. This is needed for the grid-tile harness.\n '[attr.rowspan]': 'rowspan',\n '[attr.colspan]': 'colspan',\n },\n templateUrl: 'grid-tile.html',\n styleUrl: 'grid-list.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatGridTile {\n private _element = inject<ElementRef<HTMLElement>>(ElementRef);\n _gridList? = inject<MatGridListBase>(MAT_GRID_LIST, {optional: true});\n\n _rowspan: number = 1;\n _colspan: number = 1;\n\n constructor(...args: unknown[]);\n constructor() {}\n\n /** Amount of rows that the grid tile takes up. */\n @Input()\n get rowspan(): number {\n return this._rowspan;\n }\n set rowspan(value: NumberInput) {\n this._rowspan = Math.round(coerceNumberProperty(value));\n }\n\n /** Amount of columns that the grid tile takes up. */\n @Input()\n get colspan(): number {\n return this._colspan;\n }\n set colspan(value: NumberInput) {\n this._colspan = Math.round(coerceNumberProperty(value));\n }\n\n /**\n * Sets the style of the grid-tile element. Needs to be set manually to avoid\n * \"Changed after checked\" errors that would occur with HostBinding.\n */\n _setStyle(property: string, value: any): void {\n (this._element.nativeElement.style as any)[property] = value;\n }\n}\n\n@Component({\n selector: 'mat-grid-tile-header, mat-grid-tile-footer',\n templateUrl: 'grid-tile-text.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatGridTileText implements AfterContentInit {\n private _element = inject<ElementRef<HTMLElement>>(ElementRef);\n\n @ContentChildren(MatLine, {descendants: true}) _lines!: QueryList<MatLine>;\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngAfterContentInit() {\n setLines(this._lines, this._element);\n }\n}\n\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\n@Directive({\n selector: '[mat-grid-avatar], [matGridAvatar]',\n host: {'class': 'mat-grid-avatar'},\n})\nexport class MatGridAvatarCssMatStyler {}\n\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\n@Directive({\n selector: 'mat-grid-tile-header',\n host: {'class': 'mat-grid-tile-header'},\n})\nexport class MatGridTileHeaderCssMatStyler {}\n\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\n@Directive({\n selector: 'mat-grid-tile-footer',\n host: {'class': 'mat-grid-tile-footer'},\n})\nexport class MatGridTileFooterCssMatStyler {}\n","<div class=\"mat-grid-tile-content\">\n <ng-content></ng-content>\n</div>\n","<ng-content select=\"[mat-grid-avatar], [matGridAvatar]\"></ng-content>\n<div class=\"mat-grid-list-text\"><ng-content select=\"[mat-line], [matLine]\"></ng-content></div>\n<ng-content></ng-content>\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 {QueryList} from '@angular/core';\nimport {MatGridTile} from './grid-tile';\nimport {TileCoordinator} from './tile-coordinator';\n\n/**\n * RegExp that can be used to check whether a value will\n * be allowed inside a CSS `calc()` expression.\n */\nconst cssCalcAllowedValue = /^-?\\d+((\\.\\d+)?[A-Za-z%$]?)+$/;\n\n/** Object that can be styled by the `TileStyler`. */\nexport interface TileStyleTarget {\n _setListStyle(style: [string, string | null] | null): void;\n _tiles: QueryList<MatGridTile>;\n}\n\n/**\n * Sets the style properties for an individual tile, given the position calculated by the\n * Tile Coordinator.\n * @docs-private\n */\nexport abstract class TileStyler {\n _gutterSize!: string;\n _rows: number = 0;\n _rowspan: number = 0;\n _cols!: number;\n _direction!: string;\n\n /**\n * Adds grid-list layout info once it is available. Cannot be processed in the constructor\n * because these properties haven't been calculated by that point.\n *\n * @param gutterSize Size of the grid's gutter.\n * @param tracker Instance of the TileCoordinator.\n * @param cols Amount of columns in the grid.\n * @param direction Layout direction of the grid.\n */\n init(gutterSize: string, tracker: TileCoordinator, cols: number, direction: string): void {\n this._gutterSize = normalizeUnits(gutterSize);\n this._rows = tracker.rowCount;\n this._rowspan = tracker.rowspan;\n this._cols = cols;\n this._direction = direction;\n }\n\n /**\n * Computes the amount of space a single 1x1 tile would take up (width or height).\n * Used as a basis for other calculations.\n * @param sizePercent Percent of the total grid-list space that one 1x1 tile would take up.\n * @param gutterFraction Fraction of the gutter size taken up by one 1x1 tile.\n * @return The size of a 1x1 tile as an expression that can be evaluated via CSS calc().\n */\n getBaseTileSize(sizePercent: number, gutterFraction: number): string {\n // Take the base size percent (as would be if evenly dividing the size between cells),\n // and then subtracting the size of one gutter. However, since there are no gutters on the\n // edges, each tile only uses a fraction (gutterShare = numGutters / numCells) of the gutter\n // size. (Imagine having one gutter per tile, and then breaking up the extra gutter on the\n // edge evenly among the cells).\n return `(${sizePercent}% - (${this._gutterSize} * ${gutterFraction}))`;\n }\n\n /**\n * Gets The horizontal or vertical position of a tile, e.g., the 'top' or 'left' property value.\n * @param offset Number of tiles that have already been rendered in the row/column.\n * @param baseSize Base size of a 1x1 tile (as computed in getBaseTileSize).\n * @return Position of the tile as a CSS calc() expression.\n */\n getTilePosition(baseSize: string, offset: number): string {\n // The position comes the size of a 1x1 tile plus gutter for each previous tile in the\n // row/column (offset).\n return offset === 0 ? '0' : calc(`(${baseSize} + ${this._gutterSize}) * ${offset}`);\n }\n\n /**\n * Gets the actual size of a tile, e.g., width or height, taking rowspan or colspan into account.\n * @param baseSize Base size of a 1x1 tile (as computed in getBaseTileSize).\n * @param span The tile's rowspan or colspan.\n * @return Size of the tile as a CSS calc() expression.\n */\n getTileSize(baseSize: string, span: number): string {\n return `(${baseSize} * ${span}) + (${span - 1} * ${this._gutterSize})`;\n }\n\n /**\n * Sets the style properties to be applied to a tile for the given row and column index.\n * @param tile Tile to which to apply the styling.\n * @param rowIndex Index of the tile's row.\n * @param colIndex Index of the tile's column.\n */\n setStyle(tile: MatGridTile, rowIndex: number, colIndex: number): void {\n // Percent of the available horizontal space that one column takes up.\n let percentWidthPerTile = 100 / this._cols;\n\n // Fraction of the vertical gutter size that each column takes up.\n // For example, if there are 5 columns, each column uses 4/5 = 0.8 times the gutter width.\n let gutterWidthFractionPerTile = (this._cols - 1) / this._cols;\n\n this.setColStyles(tile, colIndex, percentWidthPerTile, gutterWidthFractionPerTile);\n this.setRowStyles(tile, rowIndex, percentWidthPerTile, gutterWidthFractionPerTile);\n }\n\n /** Sets the horizontal placement of the tile in the list. */\n setColStyles(tile: MatGridTile, colIndex: number, percentWidth: number, gutterWidth: number) {\n // Base horizontal size of a column.\n let baseTileWidth = this.getBaseTileSize(percentWidth, gutterWidth);\n\n // The width and horizontal position of each tile is always calculated the same way, but the\n // height and vertical position depends on the rowMode.\n let side = this._direction === 'rtl' ? 'right' : 'left';\n tile._setStyle(side, this.getTilePosition(baseTileWidth, colIndex));\n tile._setStyle('width', calc(this.getTileSize(baseTileWidth, tile.colspan)));\n }\n\n /**\n * Calculates the total size taken up by gutters across one axis of a list.\n */\n getGutterSpan(): string {\n return `${this._gutterSize} * (${this._rowspan} - 1)`;\n }\n\n /**\n * Calculates the total size taken up by tiles across one axis of a list.\n * @param tileHeight Height of the tile.\n */\n getTileSpan(tileHeight: string): string {\n return `${this._rowspan} * ${this.getTileSize(tileHeight, 1)}`;\n }\n\n /**\n * Sets the vertical placement of the tile in the list.\n * This method will be implemented by each type of TileStyler.\n * @docs-private\n */\n abstract setRowStyles(\n tile: MatGridTile,\n rowIndex: number,\n percentWidth: number,\n gutterWidth: number,\n ): void;\n\n /**\n * Calculates the computed height and returns the correct style property to set.\n * This method can be implemented by each type of TileStyler.\n * @docs-private\n */\n getComputedHeight(): [string, string] | null {\n return null;\n }\n\n /**\n * Called when the tile styler is swapped out with a different one. To be used for cleanup.\n * @param list Grid list that the styler was attached to.\n * @docs-private\n */\n abstract reset(list: TileStyleTarget): void;\n}\n\n/**\n * This type of styler is instantiated when the user passes in a fixed row height.\n * Example `<mat-grid-list cols=\"3\" rowHeight=\"100px\">`\n * @docs-private\n */\nexport class FixedTileStyler extends TileStyler {\n constructor(public fixedRowHeight: string) {\n super();\n }\n\n override init(gutterSize: string, tracker: TileCoordinator, cols: number, direction: string) {\n super.init(gutterSize, tracker, cols, direction);\n this.fixedRowHeight = normalizeUnits(this.fixedRowHeight);\n\n if (\n !cssCalcAllowedValue.test(this.fixedRowHeight) &&\n (typeof ngDevMode === 'undefined' || ngDevMode)\n ) {\n throw Error(`Invalid value \"${this.fixedRowHeight}\" set as rowHeight.`);\n }\n }\n\n override setRowStyles(tile: MatGridTile, rowIndex: number): void {\n tile._setStyle('top', this.getTilePosition(this.fixedRowHeight, rowIndex));\n tile._setStyle('height', calc(this.getTileSize(this.fixedRowHeight, tile.rowspan)));\n }\n\n override getComputedHeight(): [string, string] {\n return ['height', calc(`${this.getTileSpan(this.fixedRowHeight)} + ${this.getGutterSpan()}`)];\n }\n\n override reset(list: TileStyleTarget) {\n list._setListStyle(['height', null]);\n\n if (list._tiles) {\n list._tiles.forEach(tile => {\n tile._setStyle('top', null);\n tile._setStyle('height', null);\n });\n }\n }\n}\n\n/**\n * This type of styler is instantiated when the user passes in a width:height ratio\n * for the row height. Example `<mat-grid-list cols=\"3\" rowHeight=\"3:1\">`\n * @docs-private\n */\nexport class RatioTileStyler extends TileStyler {\n /** Ratio width:height given by user to determine row height. */\n rowHeightRatio!: number;\n baseTileHeight!: string;\n\n constructor(value: string) {\n super();\n this._parseRatio(value);\n }\n\n setRowStyles(\n tile: MatGridTile,\n rowIndex: number,\n percentWidth: number,\n gutterWidth: number,\n ): void {\n let percentHeightPerTile = percentWidth / this.rowHeightRatio;\n this.baseTileHeight = this.getBaseTileSize(percentHeightPerTile, gutterWidth);\n\n // Use padding-top and margin-top to maintain the given aspect ratio, as\n // a percentage-based value for these properties is applied versus the *width* of the\n // containing block. See http://www.w3.org/TR/CSS2/box.html#margin-properties\n tile._setStyle('marginTop', this.getTilePosition(this.baseTileHeight, rowIndex));\n tile._setStyle('paddingTop', calc(this.getTileSize(this.baseTileHeight, tile.rowspan)));\n }\n\n override getComputedHeight(): [string, string] {\n return [\n 'paddingBottom',\n calc(`${this.getTileSpan(this.baseTileHeight)} + ${this.getGutterSpan()}`),\n ];\n }\n\n reset(list: TileStyleTarget) {\n list._setListStyle(['paddingBottom', null]);\n\n list._tiles.forEach(tile => {\n tile._setStyle('marginTop', null);\n tile._setStyle('paddingTop', null);\n });\n }\n\n private _parseRatio(value: string): void {\n const ratioParts = value.split(':');\n\n if (ratioParts.length !== 2 && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`mat-grid-list: invalid ratio given for row-height: \"${value}\"`);\n }\n\n this.rowHeightRatio = parseFloat(ratioParts[0]) / parseFloat(ratioParts[1]);\n }\n}\n\n/**\n * This type of styler is instantiated when the user selects a \"fit\" row height mode.\n * In other words, the row height will reflect the total height of the container divided\n * by the number of rows. Example `<mat-grid-list cols=\"3\" rowHeight=\"fit\">`\n *\n * @docs-private\n */\nexport class FitTileStyler extends TileStyler {\n setRowStyles(tile: MatGridTile, rowIndex: number): void {\n // Percent of the available vertical space that one row takes up.\n let percentHeightPerTile = 100 / this._rowspan;\n\n // Fraction of the horizontal gutter size that each column takes up.\n let gutterHeightPerTile = (this._rows - 1) / this._rows;\n\n // Base vertical size of a column.\n let baseTileHeight = this.getBaseTileSize(percentHeightPerTile, gutterHeightPerTile);\n\n tile._setStyle('top', this.getTilePosition(baseTileHeight, rowIndex));\n tile._setStyle('height', calc(this.getTileSize(baseTileHeight, tile.rowspan)));\n }\n\n reset(list: TileStyleTarget) {\n if (list._tiles) {\n list._tiles.forEach(tile => {\n tile._setStyle('top', null);\n tile._setStyle('height', null);\n });\n }\n }\n}\n\n/** Wraps a CSS string in a calc function */\nfunction calc(exp: string): string {\n return `calc(${exp})`;\n}\n\n/** Appends pixels to a CSS string if no units are given. */\nfunction normalizeUnits(value: string): string {\n return value.match(/([A-Za-z%]+)$/) ? value : `${value}px`;\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 Component,\n ViewEncapsulation,\n AfterContentChecked,\n OnInit,\n Input,\n ContentChildren,\n QueryList,\n ElementRef,\n ChangeDetectionStrategy,\n inject,\n} from '@angular/core';\nimport {MatGridTile} from './grid-tile';\nimport {TileCoordinator} from './tile-coordinator';\nimport {\n TileStyler,\n FitTileStyler,\n RatioTileStyler,\n FixedTileStyler,\n TileStyleTarget,\n} from './tile-styler';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {coerceNumberProperty, NumberInput} from '@angular/cdk/coercion';\nimport {MAT_GRID_LIST, MatGridListBase} from './grid-list-base';\n\n// TODO(kara): Conditional (responsive) column count / row size.\n// TODO(kara): Re-layout on window resize / media change (debounced).\n// TODO(kara): gridTileHeader and gridTileFooter.\n\nconst MAT_FIT_MODE = 'fit';\n\n@Component({\n selector: 'mat-grid-list',\n exportAs: 'matGridList',\n templateUrl: 'grid-list.html',\n styleUrl: 'grid-list.css',\n host: {\n 'class': 'mat-grid-list',\n // Ensures that the \"cols\" input value is reflected in the DOM. This is\n // needed for the grid-list harness.\n '[attr.cols]': 'cols',\n },\n providers: [\n {\n provide: MAT_GRID_LIST,\n useExisting: MatGridList,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatGridList implements MatGridListBase, OnInit, AfterContentChecked, TileStyleTarget {\n private _element = inject<ElementRef<HTMLElement>>(ElementRef);\n private _dir = inject(Directionality, {optional: true});\n\n /** Number of columns being rendered. */\n private _cols!: number;\n\n /** Used for determining the position of each tile in the grid. */\n private _tileCoordinator!: TileCoordinator;\n\n /**\n * Row height value passed in by user. This can be one of three types:\n * - Number value (ex: \"100px\"): sets a fixed row height to that value\n * - Ratio value (ex: \"4:3\"): sets the row height based on width:height ratio\n * - \"Fit\" mode (ex: \"fit\"): sets the row height to total height divided by number of rows\n */\n private _rowHeight!: string;\n\n /** The amount of space between tiles. This will be something like '5px' or '2em'. */\n private _gutter: string = '1px';\n\n /** Sets position and size styles for a tile */\n private _tileStyler!: TileStyler;\n\n /** Query list of tiles that are being rendered. */\n @ContentChildren(MatGridTile, {descendants: true}) _tiles!: QueryList<MatGridTile>;\n\n constructor(...args: unknown[]);\n constructor() {}\n\n /** Amount of columns in the grid list. */\n @Input()\n get cols(): number {\n return this._cols;\n }\n set cols(value: NumberInput) {\n this._cols = Math.max(1, Math.round(coerceNumberProperty(value)));\n }\n\n /** Size of the grid list's gutter in pixels. */\n @Input()\n get gutterSize(): string {\n return this._gutter;\n }\n set gutterSize(value: string) {\n this._gutter = `${value == null ? '' : value}`;\n }\n\n /** Set internal representation of row height from the user-provided value. */\n @Input()\n get rowHeight(): string | number {\n return this._rowHeight;\n }\n set rowHeight(value: string | number) {\n const newValue = `${value == null ? '' : value}`;\n\n if (newValue !== this._rowHeight) {\n this._rowHeight = newValue;\n this._setTileStyler(this._rowHeight);\n }\n }\n\n ngOnInit() {\n this._checkCols();\n this._checkRowHeight();\n }\n\n /**\n * The layout calculation is fairly cheap if nothing changes, so there's little cost\n * to run it frequently.\n */\n ngAfterContentChecked() {\n this._layoutTiles();\n }\n\n /** Throw a friendly error if cols property is missing */\n private _checkCols() {\n if (!this.cols && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(\n `mat-grid-list: must pass in number of columns. ` + `Example: <mat-grid-list cols=\"3\">`,\n );\n }\n }\n\n /** Default to equal width:height if rowHeight property is missing */\n private _checkRowHeight(): void {\n if (!this._rowHeight) {\n this._setTileStyler('1:1');\n }\n }\n\n /** Creates correct Tile Styler subtype based on rowHeight passed in by user */\n private _setTileStyler(rowHeight: string): void {\n if (this._tileStyler) {\n this._tileStyler.reset(this);\n }\n\n if (rowHeight === MAT_FIT_MODE) {\n this._tileStyler = new FitTileStyler();\n } else if (rowHeight && rowHeight.indexOf(':') > -1) {\n this._tileStyler = new RatioTileStyler(rowHeight);\n } else {\n this._tileStyler = new FixedTileStyler(rowHeight);\n }\n }\n\n /** Computes and applies the size and position for all children grid tiles. */\n private _layoutTiles(): void {\n if (!this._tileCoordinator) {\n this._tileCoordinator = new TileCoordinator();\n }\n\n const tracker = this._tileCoordinator;\n const tiles = this._tiles.filter(tile => !tile._gridList || tile._gridList === this);\n const direction = this._dir ? this._dir.value : 'ltr';\n\n this._tileCoordinator.update(this.cols, tiles);\n this._tileStyler.init(this.gutterSize, tracker, this.cols, direction);\n\n tiles.forEach((tile, index) => {\n const pos = tracker.positions[index];\n this._tileStyler.setStyle(tile, pos.row, pos.col);\n });\n\n this._setListStyle(this._tileStyler.getComputedHeight());\n }\n\n /** Sets style on the main grid-list element, given the style name and value. */\n _setListStyle(style: [string, string | null] | null): void {\n if (style) {\n (this._element.nativeElement.style as any)[style[0]] = style[1];\n }\n }\n}\n","<div>\n <ng-content></ng-content>\n</div>","/**\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 {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\nimport {MatLineModule} from '../core';\nimport {MatGridList} from './grid-list';\nimport {\n MatGridAvatarCssMatStyler,\n MatGridTile,\n MatGridTileFooterCssMatStyler,\n MatGridTileHeaderCssMatStyler,\n MatGridTileText,\n} from './grid-tile';\n\n// Export required to fix compiler confusion about import module paths\nexport {MatLine} from '../core';\n\n@NgModule({\n imports: [\n MatLineModule,\n MatGridList,\n MatGridTile,\n MatGridTileText,\n MatGridTileHeaderCssMatStyler,\n MatGridTileFooterCssMatStyler,\n MatGridAvatarCssMatStyler,\n ],\n exports: [\n BidiModule,\n MatGridList,\n MatGridTile,\n MatGridTileText,\n MatLineModule,\n MatGridTileHeaderCssMatStyler,\n MatGridTileFooterCssMatStyler,\n MatGridAvatarCssMatStyler,\n ],\n})\nexport class MatGridListModule {}\n"],"names":["MAT_GRID_LIST","InjectionToken","MatGridTile","_element","inject","ElementRef","_gridList","optional","_rowspan","_colspan","constructor","rowspan","value","Math","round","coerceNumberProperty","colspan","_setStyle","property","nativeElement","style","deps","target","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","exportAs","host","template","Input","MatGridTileText","_lines","ngAfterContentInit","setLines","isStandalone","selector","queries","propertyName","predicate","MatLine","descendants","ngImport","args","ContentChildren","MatGridAvatarCssMatStyler","Directive","classAttribute","MatGridTileHeaderCssMatStyler","MatGridTileFooterCssMatStyler","cssCalcAllowedValue","TileStyler","_gutterSize","_rows","_cols","_direction","init","gutterSize","tracker","cols","direction","normalizeUnits","rowCount","getBaseTileSize","sizePercent","gutterFraction","getTilePosition","baseSize","offset","calc","getTileSize","span","setStyle","tile","rowIndex","colIndex","percentWidthPerTile","gutterWidthFractionPerTile","setColStyles","setRowStyles","percentWidth","gutterWidth","baseTileWidth","side","getGutterSpan","getTileSpan","tileHeight","getComputedHeight","FixedTileStyler","fixedRowHeight","test","ngDevMode","Error","reset","list","_setListStyle","_tiles","forEach","RatioTileStyler","rowHeightRatio","baseTileHeight","_parseRatio","percentHeightPerTile","ratioParts","split","length","parseFloat","FitTileStyler","gutterHeightPerTile","exp","match","MAT_FIT_MODE","MatGridList","_dir","Directionality","_tileCoordinator","_rowHeight","_gutter","_tileStyler","max","rowHeight","newValue","_setTileStyler","ngOnInit","_checkCols","_checkRowHeight","ngAfterContentChecked","_layoutTiles","indexOf","TileCoordinator","tiles","filter","update","index","pos","positions","row","col","inputs","properties","providers","provide","useExisting","MatGridListModule","NgModule","ɵmod","ɵɵngDeclareNgModule","MatLineModule","BidiModule","imports","exports"],"mappings":"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"}
{"version":3,"file":"grid-list.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/grid-list/grid-list-base.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/grid-list/grid-tile.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/grid-list/grid-tile.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/grid-list/grid-tile-text.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/grid-list/tile-styler.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/grid-list/grid-list.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/grid-list/grid-list.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/grid-list/grid-list-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\nimport {InjectionToken} from '@angular/core';\n\n/**\n * Injection token used to provide a grid list to a tile and to avoid circular imports.\n * @docs-private\n */\nexport const MAT_GRID_LIST = new InjectionToken<MatGridListBase>('MAT_GRID_LIST');\n\n/**\n * Base interface for a `MatGridList`.\n * @docs-private\n */\nexport interface MatGridListBase {\n cols: number;\n gutterSize: string;\n rowHeight: number | string;\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 Component,\n ViewEncapsulation,\n ElementRef,\n Input,\n ContentChildren,\n QueryList,\n AfterContentInit,\n Directive,\n ChangeDetectionStrategy,\n inject,\n} from '@angular/core';\nimport {MatLine, setLines} from '../core';\nimport {coerceNumberProperty, NumberInput} from '@angular/cdk/coercion';\nimport {MAT_GRID_LIST, MatGridListBase} from './grid-list-base';\n\n@Component({\n selector: 'mat-grid-tile',\n exportAs: 'matGridTile',\n host: {\n 'class': 'mat-grid-tile',\n // Ensures that the \"rowspan\" and \"colspan\" input value is reflected in\n // the DOM. This is needed for the grid-tile harness.\n '[attr.rowspan]': 'rowspan',\n '[attr.colspan]': 'colspan',\n },\n templateUrl: 'grid-tile.html',\n styleUrl: 'grid-list.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatGridTile {\n private _element = inject<ElementRef<HTMLElement>>(ElementRef);\n _gridList? = inject<MatGridListBase>(MAT_GRID_LIST, {optional: true});\n\n _rowspan: number = 1;\n _colspan: number = 1;\n\n constructor(...args: unknown[]);\n constructor() {}\n\n /** Amount of rows that the grid tile takes up. */\n @Input()\n get rowspan(): number {\n return this._rowspan;\n }\n set rowspan(value: NumberInput) {\n this._rowspan = Math.round(coerceNumberProperty(value));\n }\n\n /** Amount of columns that the grid tile takes up. */\n @Input()\n get colspan(): number {\n return this._colspan;\n }\n set colspan(value: NumberInput) {\n this._colspan = Math.round(coerceNumberProperty(value));\n }\n\n /**\n * Sets the style of the grid-tile element. Needs to be set manually to avoid\n * \"Changed after checked\" errors that would occur with HostBinding.\n */\n _setStyle(property: string, value: any): void {\n (this._element.nativeElement.style as any)[property] = value;\n }\n}\n\n@Component({\n selector: 'mat-grid-tile-header, mat-grid-tile-footer',\n templateUrl: 'grid-tile-text.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatGridTileText implements AfterContentInit {\n private _element = inject<ElementRef<HTMLElement>>(ElementRef);\n\n @ContentChildren(MatLine, {descendants: true}) _lines!: QueryList<MatLine>;\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngAfterContentInit() {\n setLines(this._lines, this._element);\n }\n}\n\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\n@Directive({\n selector: '[mat-grid-avatar], [matGridAvatar]',\n host: {'class': 'mat-grid-avatar'},\n})\nexport class MatGridAvatarCssMatStyler {}\n\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\n@Directive({\n selector: 'mat-grid-tile-header',\n host: {'class': 'mat-grid-tile-header'},\n})\nexport class MatGridTileHeaderCssMatStyler {}\n\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\n@Directive({\n selector: 'mat-grid-tile-footer',\n host: {'class': 'mat-grid-tile-footer'},\n})\nexport class MatGridTileFooterCssMatStyler {}\n","<div class=\"mat-grid-tile-content\">\n <ng-content></ng-content>\n</div>\n","<ng-content select=\"[mat-grid-avatar], [matGridAvatar]\"></ng-content>\n<div class=\"mat-grid-list-text\"><ng-content select=\"[mat-line], [matLine]\"></ng-content></div>\n<ng-content></ng-content>\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 {QueryList} from '@angular/core';\nimport {MatGridTile} from './grid-tile';\nimport {TileCoordinator} from './tile-coordinator';\n\n/**\n * RegExp that can be used to check whether a value will\n * be allowed inside a CSS `calc()` expression.\n */\nconst cssCalcAllowedValue = /^-?\\d+((\\.\\d+)?[A-Za-z%$]?)+$/;\n\n/** Object that can be styled by the `TileStyler`. */\nexport interface TileStyleTarget {\n _setListStyle(style: [string, string | null] | null): void;\n _tiles: QueryList<MatGridTile>;\n}\n\n/**\n * Sets the style properties for an individual tile, given the position calculated by the\n * Tile Coordinator.\n * @docs-private\n */\nexport abstract class TileStyler {\n _gutterSize!: string;\n _rows: number = 0;\n _rowspan: number = 0;\n _cols!: number;\n _direction!: string;\n\n /**\n * Adds grid-list layout info once it is available. Cannot be processed in the constructor\n * because these properties haven't been calculated by that point.\n *\n * @param gutterSize Size of the grid's gutter.\n * @param tracker Instance of the TileCoordinator.\n * @param cols Amount of columns in the grid.\n * @param direction Layout direction of the grid.\n */\n init(gutterSize: string, tracker: TileCoordinator, cols: number, direction: string): void {\n this._gutterSize = normalizeUnits(gutterSize);\n this._rows = tracker.rowCount;\n this._rowspan = tracker.rowspan;\n this._cols = cols;\n this._direction = direction;\n }\n\n /**\n * Computes the amount of space a single 1x1 tile would take up (width or height).\n * Used as a basis for other calculations.\n * @param sizePercent Percent of the total grid-list space that one 1x1 tile would take up.\n * @param gutterFraction Fraction of the gutter size taken up by one 1x1 tile.\n * @return The size of a 1x1 tile as an expression that can be evaluated via CSS calc().\n */\n getBaseTileSize(sizePercent: number, gutterFraction: number): string {\n // Take the base size percent (as would be if evenly dividing the size between cells),\n // and then subtracting the size of one gutter. However, since there are no gutters on the\n // edges, each tile only uses a fraction (gutterShare = numGutters / numCells) of the gutter\n // size. (Imagine having one gutter per tile, and then breaking up the extra gutter on the\n // edge evenly among the cells).\n return `(${sizePercent}% - (${this._gutterSize} * ${gutterFraction}))`;\n }\n\n /**\n * Gets The horizontal or vertical position of a tile, e.g., the 'top' or 'left' property value.\n * @param offset Number of tiles that have already been rendered in the row/column.\n * @param baseSize Base size of a 1x1 tile (as computed in getBaseTileSize).\n * @return Position of the tile as a CSS calc() expression.\n */\n getTilePosition(baseSize: string, offset: number): string {\n // The position comes the size of a 1x1 tile plus gutter for each previous tile in the\n // row/column (offset).\n return offset === 0 ? '0' : calc(`(${baseSize} + ${this._gutterSize}) * ${offset}`);\n }\n\n /**\n * Gets the actual size of a tile, e.g., width or height, taking rowspan or colspan into account.\n * @param baseSize Base size of a 1x1 tile (as computed in getBaseTileSize).\n * @param span The tile's rowspan or colspan.\n * @return Size of the tile as a CSS calc() expression.\n */\n getTileSize(baseSize: string, span: number): string {\n return `(${baseSize} * ${span}) + (${span - 1} * ${this._gutterSize})`;\n }\n\n /**\n * Sets the style properties to be applied to a tile for the given row and column index.\n * @param tile Tile to which to apply the styling.\n * @param rowIndex Index of the tile's row.\n * @param colIndex Index of the tile's column.\n */\n setStyle(tile: MatGridTile, rowIndex: number, colIndex: number): void {\n // Percent of the available horizontal space that one column takes up.\n let percentWidthPerTile = 100 / this._cols;\n\n // Fraction of the vertical gutter size that each column takes up.\n // For example, if there are 5 columns, each column uses 4/5 = 0.8 times the gutter width.\n let gutterWidthFractionPerTile = (this._cols - 1) / this._cols;\n\n this.setColStyles(tile, colIndex, percentWidthPerTile, gutterWidthFractionPerTile);\n this.setRowStyles(tile, rowIndex, percentWidthPerTile, gutterWidthFractionPerTile);\n }\n\n /** Sets the horizontal placement of the tile in the list. */\n setColStyles(tile: MatGridTile, colIndex: number, percentWidth: number, gutterWidth: number) {\n // Base horizontal size of a column.\n let baseTileWidth = this.getBaseTileSize(percentWidth, gutterWidth);\n\n // The width and horizontal position of each tile is always calculated the same way, but the\n // height and vertical position depends on the rowMode.\n let side = this._direction === 'rtl' ? 'right' : 'left';\n tile._setStyle(side, this.getTilePosition(baseTileWidth, colIndex));\n tile._setStyle('width', calc(this.getTileSize(baseTileWidth, tile.colspan)));\n }\n\n /**\n * Calculates the total size taken up by gutters across one axis of a list.\n */\n getGutterSpan(): string {\n return `${this._gutterSize} * (${this._rowspan} - 1)`;\n }\n\n /**\n * Calculates the total size taken up by tiles across one axis of a list.\n * @param tileHeight Height of the tile.\n */\n getTileSpan(tileHeight: string): string {\n return `${this._rowspan} * ${this.getTileSize(tileHeight, 1)}`;\n }\n\n /**\n * Sets the vertical placement of the tile in the list.\n * This method will be implemented by each type of TileStyler.\n * @docs-private\n */\n abstract setRowStyles(\n tile: MatGridTile,\n rowIndex: number,\n percentWidth: number,\n gutterWidth: number,\n ): void;\n\n /**\n * Calculates the computed height and returns the correct style property to set.\n * This method can be implemented by each type of TileStyler.\n * @docs-private\n */\n getComputedHeight(): [string, string] | null {\n return null;\n }\n\n /**\n * Called when the tile styler is swapped out with a different one. To be used for cleanup.\n * @param list Grid list that the styler was attached to.\n * @docs-private\n */\n abstract reset(list: TileStyleTarget): void;\n}\n\n/**\n * This type of styler is instantiated when the user passes in a fixed row height.\n * Example `<mat-grid-list cols=\"3\" rowHeight=\"100px\">`\n * @docs-private\n */\nexport class FixedTileStyler extends TileStyler {\n constructor(public fixedRowHeight: string) {\n super();\n }\n\n override init(gutterSize: string, tracker: TileCoordinator, cols: number, direction: string) {\n super.init(gutterSize, tracker, cols, direction);\n this.fixedRowHeight = normalizeUnits(this.fixedRowHeight);\n\n if (\n !cssCalcAllowedValue.test(this.fixedRowHeight) &&\n (typeof ngDevMode === 'undefined' || ngDevMode)\n ) {\n throw Error(`Invalid value \"${this.fixedRowHeight}\" set as rowHeight.`);\n }\n }\n\n override setRowStyles(tile: MatGridTile, rowIndex: number): void {\n tile._setStyle('top', this.getTilePosition(this.fixedRowHeight, rowIndex));\n tile._setStyle('height', calc(this.getTileSize(this.fixedRowHeight, tile.rowspan)));\n }\n\n override getComputedHeight(): [string, string] {\n return ['height', calc(`${this.getTileSpan(this.fixedRowHeight)} + ${this.getGutterSpan()}`)];\n }\n\n override reset(list: TileStyleTarget) {\n list._setListStyle(['height', null]);\n\n if (list._tiles) {\n list._tiles.forEach(tile => {\n tile._setStyle('top', null);\n tile._setStyle('height', null);\n });\n }\n }\n}\n\n/**\n * This type of styler is instantiated when the user passes in a width:height ratio\n * for the row height. Example `<mat-grid-list cols=\"3\" rowHeight=\"3:1\">`\n * @docs-private\n */\nexport class RatioTileStyler extends TileStyler {\n /** Ratio width:height given by user to determine row height. */\n rowHeightRatio!: number;\n baseTileHeight!: string;\n\n constructor(value: string) {\n super();\n this._parseRatio(value);\n }\n\n setRowStyles(\n tile: MatGridTile,\n rowIndex: number,\n percentWidth: number,\n gutterWidth: number,\n ): void {\n let percentHeightPerTile = percentWidth / this.rowHeightRatio;\n this.baseTileHeight = this.getBaseTileSize(percentHeightPerTile, gutterWidth);\n\n // Use padding-top and margin-top to maintain the given aspect ratio, as\n // a percentage-based value for these properties is applied versus the *width* of the\n // containing block. See http://www.w3.org/TR/CSS2/box.html#margin-properties\n tile._setStyle('marginTop', this.getTilePosition(this.baseTileHeight, rowIndex));\n tile._setStyle('paddingTop', calc(this.getTileSize(this.baseTileHeight, tile.rowspan)));\n }\n\n override getComputedHeight(): [string, string] {\n return [\n 'paddingBottom',\n calc(`${this.getTileSpan(this.baseTileHeight)} + ${this.getGutterSpan()}`),\n ];\n }\n\n reset(list: TileStyleTarget) {\n list._setListStyle(['paddingBottom', null]);\n\n list._tiles.forEach(tile => {\n tile._setStyle('marginTop', null);\n tile._setStyle('paddingTop', null);\n });\n }\n\n private _parseRatio(value: string): void {\n const ratioParts = value.split(':');\n\n if (ratioParts.length !== 2 && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`mat-grid-list: invalid ratio given for row-height: \"${value}\"`);\n }\n\n this.rowHeightRatio = parseFloat(ratioParts[0]) / parseFloat(ratioParts[1]);\n }\n}\n\n/**\n * This type of styler is instantiated when the user selects a \"fit\" row height mode.\n * In other words, the row height will reflect the total height of the container divided\n * by the number of rows. Example `<mat-grid-list cols=\"3\" rowHeight=\"fit\">`\n *\n * @docs-private\n */\nexport class FitTileStyler extends TileStyler {\n setRowStyles(tile: MatGridTile, rowIndex: number): void {\n // Percent of the available vertical space that one row takes up.\n let percentHeightPerTile = 100 / this._rowspan;\n\n // Fraction of the horizontal gutter size that each column takes up.\n let gutterHeightPerTile = (this._rows - 1) / this._rows;\n\n // Base vertical size of a column.\n let baseTileHeight = this.getBaseTileSize(percentHeightPerTile, gutterHeightPerTile);\n\n tile._setStyle('top', this.getTilePosition(baseTileHeight, rowIndex));\n tile._setStyle('height', calc(this.getTileSize(baseTileHeight, tile.rowspan)));\n }\n\n reset(list: TileStyleTarget) {\n if (list._tiles) {\n list._tiles.forEach(tile => {\n tile._setStyle('top', null);\n tile._setStyle('height', null);\n });\n }\n }\n}\n\n/** Wraps a CSS string in a calc function */\nfunction calc(exp: string): string {\n return `calc(${exp})`;\n}\n\n/** Appends pixels to a CSS string if no units are given. */\nfunction normalizeUnits(value: string): string {\n return value.match(/([A-Za-z%]+)$/) ? value : `${value}px`;\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 Component,\n ViewEncapsulation,\n AfterContentChecked,\n OnInit,\n Input,\n ContentChildren,\n QueryList,\n ElementRef,\n ChangeDetectionStrategy,\n inject,\n} from '@angular/core';\nimport {MatGridTile} from './grid-tile';\nimport {TileCoordinator} from './tile-coordinator';\nimport {\n TileStyler,\n FitTileStyler,\n RatioTileStyler,\n FixedTileStyler,\n TileStyleTarget,\n} from './tile-styler';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {coerceNumberProperty, NumberInput} from '@angular/cdk/coercion';\nimport {MAT_GRID_LIST, MatGridListBase} from './grid-list-base';\n\n// TODO(kara): Conditional (responsive) column count / row size.\n// TODO(kara): Re-layout on window resize / media change (debounced).\n// TODO(kara): gridTileHeader and gridTileFooter.\n\nconst MAT_FIT_MODE = 'fit';\n\n@Component({\n selector: 'mat-grid-list',\n exportAs: 'matGridList',\n templateUrl: 'grid-list.html',\n styleUrl: 'grid-list.css',\n host: {\n 'class': 'mat-grid-list',\n // Ensures that the \"cols\" input value is reflected in the DOM. This is\n // needed for the grid-list harness.\n '[attr.cols]': 'cols',\n },\n providers: [\n {\n provide: MAT_GRID_LIST,\n useExisting: MatGridList,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatGridList implements MatGridListBase, OnInit, AfterContentChecked, TileStyleTarget {\n private _element = inject<ElementRef<HTMLElement>>(ElementRef);\n private _dir = inject(Directionality, {optional: true});\n\n /** Number of columns being rendered. */\n private _cols!: number;\n\n /** Used for determining the position of each tile in the grid. */\n private _tileCoordinator!: TileCoordinator;\n\n /**\n * Row height value passed in by user. This can be one of three types:\n * - Number value (ex: \"100px\"): sets a fixed row height to that value\n * - Ratio value (ex: \"4:3\"): sets the row height based on width:height ratio\n * - \"Fit\" mode (ex: \"fit\"): sets the row height to total height divided by number of rows\n */\n private _rowHeight!: string;\n\n /** The amount of space between tiles. This will be something like '5px' or '2em'. */\n private _gutter: string = '1px';\n\n /** Sets position and size styles for a tile */\n private _tileStyler!: TileStyler;\n\n /** Query list of tiles that are being rendered. */\n @ContentChildren(MatGridTile, {descendants: true}) _tiles!: QueryList<MatGridTile>;\n\n constructor(...args: unknown[]);\n constructor() {}\n\n /** Amount of columns in the grid list. */\n @Input()\n get cols(): number {\n return this._cols;\n }\n set cols(value: NumberInput) {\n this._cols = Math.max(1, Math.round(coerceNumberProperty(value)));\n }\n\n /** Size of the grid list's gutter in pixels. */\n @Input()\n get gutterSize(): string {\n return this._gutter;\n }\n set gutterSize(value: string) {\n this._gutter = `${value == null ? '' : value}`;\n }\n\n /** Set internal representation of row height from the user-provided value. */\n @Input()\n get rowHeight(): string | number {\n return this._rowHeight;\n }\n set rowHeight(value: string | number) {\n const newValue = `${value == null ? '' : value}`;\n\n if (newValue !== this._rowHeight) {\n this._rowHeight = newValue;\n this._setTileStyler(this._rowHeight);\n }\n }\n\n ngOnInit() {\n this._checkCols();\n this._checkRowHeight();\n }\n\n /**\n * The layout calculation is fairly cheap if nothing changes, so there's little cost\n * to run it frequently.\n */\n ngAfterContentChecked() {\n this._layoutTiles();\n }\n\n /** Throw a friendly error if cols property is missing */\n private _checkCols() {\n if (!this.cols && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(\n `mat-grid-list: must pass in number of columns. ` + `Example: <mat-grid-list cols=\"3\">`,\n );\n }\n }\n\n /** Default to equal width:height if rowHeight property is missing */\n private _checkRowHeight(): void {\n if (!this._rowHeight) {\n this._setTileStyler('1:1');\n }\n }\n\n /** Creates correct Tile Styler subtype based on rowHeight passed in by user */\n private _setTileStyler(rowHeight: string): void {\n if (this._tileStyler) {\n this._tileStyler.reset(this);\n }\n\n if (rowHeight === MAT_FIT_MODE) {\n this._tileStyler = new FitTileStyler();\n } else if (rowHeight && rowHeight.indexOf(':') > -1) {\n this._tileStyler = new RatioTileStyler(rowHeight);\n } else {\n this._tileStyler = new FixedTileStyler(rowHeight);\n }\n }\n\n /** Computes and applies the size and position for all children grid tiles. */\n private _layoutTiles(): void {\n if (!this._tileCoordinator) {\n this._tileCoordinator = new TileCoordinator();\n }\n\n const tracker = this._tileCoordinator;\n const tiles = this._tiles.filter(tile => !tile._gridList || tile._gridList === this);\n const direction = this._dir ? this._dir.value : 'ltr';\n\n this._tileCoordinator.update(this.cols, tiles);\n this._tileStyler.init(this.gutterSize, tracker, this.cols, direction);\n\n tiles.forEach((tile, index) => {\n const pos = tracker.positions[index];\n this._tileStyler.setStyle(tile, pos.row, pos.col);\n });\n\n this._setListStyle(this._tileStyler.getComputedHeight());\n }\n\n /** Sets style on the main grid-list element, given the style name and value. */\n _setListStyle(style: [string, string | null] | null): void {\n if (style) {\n (this._element.nativeElement.style as any)[style[0]] = style[1];\n }\n }\n}\n","<div>\n <ng-content></ng-content>\n</div>","/**\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 {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\nimport {MatLineModule} from '../core';\nimport {MatGridList} from './grid-list';\nimport {\n MatGridAvatarCssMatStyler,\n MatGridTile,\n MatGridTileFooterCssMatStyler,\n MatGridTileHeaderCssMatStyler,\n MatGridTileText,\n} from './grid-tile';\n\n// Export required to fix compiler confusion about import module paths\nexport {MatLine} from '../core';\n\n@NgModule({\n imports: [\n MatLineModule,\n MatGridList,\n MatGridTile,\n MatGridTileText,\n MatGridTileHeaderCssMatStyler,\n MatGridTileFooterCssMatStyler,\n MatGridAvatarCssMatStyler,\n ],\n exports: [\n BidiModule,\n MatGridList,\n MatGridTile,\n MatGridTileText,\n MatLineModule,\n MatGridTileHeaderCssMatStyler,\n MatGridTileFooterCssMatStyler,\n MatGridAvatarCssMatStyler,\n ],\n})\nexport class MatGridListModule {}\n"],"names":["MAT_GRID_LIST","InjectionToken","MatGridTile","_element","inject","ElementRef","_gridList","optional","_rowspan","_colspan","constructor","rowspan","value","Math","round","coerceNumberProperty","colspan","_setStyle","property","nativeElement","style","deps","target","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","exportAs","host","template","Input","MatGridTileText","_lines","ngAfterContentInit","setLines","isStandalone","selector","queries","propertyName","predicate","MatLine","descendants","ngImport","args","ContentChildren","MatGridAvatarCssMatStyler","Directive","classAttribute","MatGridTileHeaderCssMatStyler","MatGridTileFooterCssMatStyler","cssCalcAllowedValue","TileStyler","_gutterSize","_rows","_cols","_direction","init","gutterSize","tracker","cols","direction","normalizeUnits","rowCount","getBaseTileSize","sizePercent","gutterFraction","getTilePosition","baseSize","offset","calc","getTileSize","span","setStyle","tile","rowIndex","colIndex","percentWidthPerTile","gutterWidthFractionPerTile","setColStyles","setRowStyles","percentWidth","gutterWidth","baseTileWidth","side","getGutterSpan","getTileSpan","tileHeight","getComputedHeight","FixedTileStyler","fixedRowHeight","test","ngDevMode","Error","reset","list","_setListStyle","_tiles","forEach","RatioTileStyler","rowHeightRatio","baseTileHeight","_parseRatio","percentHeightPerTile","ratioParts","split","length","parseFloat","FitTileStyler","gutterHeightPerTile","exp","match","MAT_FIT_MODE","MatGridList","_dir","Directionality","_tileCoordinator","_rowHeight","_gutter","_tileStyler","max","rowHeight","newValue","_setTileStyler","ngOnInit","_checkCols","_checkRowHeight","ngAfterContentChecked","_layoutTiles","indexOf","TileCoordinator","tiles","filter","update","index","pos","positions","row","col","inputs","properties","providers","provide","useExisting","MatGridListModule","NgModule","ɵmod","ɵɵngDeclareNgModule","MatLineModule","BidiModule","imports","exports"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"icon-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/icon/testing/icon-harness-filters.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/icon/testing/icon-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/icon/testing/fake-icon-registry.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\nimport {BaseHarnessFilters} from '@angular/cdk/testing';\n\n/** Possible types of icons. */\nexport enum IconType {\n SVG,\n FONT,\n}\n\n/** A set of criteria that can be used to filter a list of `MatIconHarness` instances. */\nexport interface IconHarnessFilters extends BaseHarnessFilters {\n /** Filters based on the typef of the icon. */\n type?: IconType;\n /** Filters based on the name of the icon. */\n name?: string | RegExp;\n /** Filters based on the namespace of the icon. */\n namespace?: string | null | RegExp;\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 {ComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {IconHarnessFilters, IconType} from './icon-harness-filters';\n\n/** Harness for interacting with a standard mat-icon in tests. */\nexport class MatIconHarness extends ComponentHarness {\n /** The selector for the host element of a `MatIcon` instance. */\n static hostSelector = '.mat-icon';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatIconHarness` that meets\n * certain criteria.\n * @param options Options for filtering which icon instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: IconHarnessFilters = {}): HarnessPredicate<MatIconHarness> {\n return new HarnessPredicate(MatIconHarness, options)\n .addOption('type', options.type, async (harness, type) => (await harness.getType()) === type)\n .addOption('name', options.name, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getName(), text),\n )\n .addOption('namespace', options.namespace, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getNamespace(), text),\n );\n }\n\n /** Gets the type of the icon. */\n async getType(): Promise<IconType> {\n const type = await (await this.host()).getAttribute('data-mat-icon-type');\n return type === 'svg' ? IconType.SVG : IconType.FONT;\n }\n\n /** Gets the name of the icon. */\n async getName(): Promise<string | null> {\n const host = await this.host();\n const nameFromDom = await host.getAttribute('data-mat-icon-name');\n\n // If we managed to figure out the name from the attribute, use it.\n if (nameFromDom) {\n return nameFromDom;\n }\n\n // Some icons support defining the icon as a ligature.\n // As a fallback, try to extract it from the DOM text.\n if ((await this.getType()) === IconType.FONT) {\n // Other directives may add content to the icon (e.g. `MatBadge`), however only the direct\n // text nodes affect the name of the icon. Exclude all element descendants from the result.\n const text = await host.text({exclude: '*'});\n\n // There are some internal cases where the icon name is wrapped in another node.\n // Fall back to extracting the entire text if we ended up excluding everything above.\n return text.length > 0 ? text : host.text();\n }\n\n return null;\n }\n\n /** Gets the namespace of the icon. */\n async getNamespace(): Promise<string | null> {\n return (await this.host()).getAttribute('data-mat-icon-namespace');\n }\n\n /** Gets whether the icon is inline. */\n async isInline(): Promise<boolean> {\n return (await this.host()).hasClass('mat-icon-inline');\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 {Injectable, NgModule, OnDestroy} from '@angular/core';\nimport {MatIconRegistry} from '../../icon';\nimport {Observable, of as observableOf} from 'rxjs';\n\ntype PublicApi<T> = {\n [K in keyof T]: T[K] extends (...x: any[]) => T ? (...x: any[]) => PublicApi<T> : T[K];\n};\n\n/**\n * A null icon registry that must be imported to allow disabling of custom\n * icons.\n */\n@Injectable()\nexport class FakeMatIconRegistry implements PublicApi<MatIconRegistry>, OnDestroy {\n addSvgIcon(): this {\n return this;\n }\n\n addSvgIconLiteral(): this {\n return this;\n }\n\n addSvgIconInNamespace(): this {\n return this;\n }\n\n addSvgIconLiteralInNamespace(): this {\n return this;\n }\n\n addSvgIconSet(): this {\n return this;\n }\n\n addSvgIconSetLiteral(): this {\n return this;\n }\n\n addSvgIconSetInNamespace(): this {\n return this;\n }\n\n addSvgIconSetLiteralInNamespace(): this {\n return this;\n }\n\n registerFontClassAlias(): this {\n return this;\n }\n\n classNameForFontAlias(alias: string): string {\n return alias;\n }\n\n getDefaultFontSetClass() {\n return ['material-icons'];\n }\n\n getSvgIconFromUrl(): Observable<SVGElement> {\n return observableOf(this._generateEmptySvg());\n }\n\n getNamedSvgIcon(): Observable<SVGElement> {\n return observableOf(this._generateEmptySvg());\n }\n\n setDefaultFontSetClass(): this {\n return this;\n }\n\n addSvgIconResolver(): this {\n return this;\n }\n\n ngOnDestroy() {}\n\n private _generateEmptySvg(): SVGElement {\n const emptySvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n emptySvg.classList.add('fake-testing-svg');\n // Emulate real icon characteristics from `MatIconRegistry` so size remains consistent in tests.\n emptySvg.setAttribute('fit', '');\n emptySvg.setAttribute('height', '100%');\n emptySvg.setAttribute('width', '100%');\n emptySvg.setAttribute('preserveAspectRatio', 'xMidYMid meet');\n emptySvg.setAttribute('focusable', 'false');\n return emptySvg;\n }\n}\n\n/** Import this module in tests to install the null icon registry. */\n@NgModule({\n providers: [{provide: MatIconRegistry, useClass: FakeMatIconRegistry}],\n})\nexport class MatIconTestingModule {}\n"],"names":["IconType","MatIconHarness","ComponentHarness","hostSelector","with","options","HarnessPredicate","addOption","type","harness","getType","name","text","stringMatches","getName","namespace","getNamespace","host","getAttribute","SVG","FONT","nameFromDom","exclude","length","isInline","hasClass","FakeMatIconRegistry","addSvgIcon","addSvgIconLiteral","addSvgIconInNamespace","addSvgIconLiteralInNamespace","addSvgIconSet","addSvgIconSetLiteral","addSvgIconSetInNamespace","addSvgIconSetLiteralInNamespace","registerFontClassAlias","classNameForFontAlias","alias","getDefaultFontSetClass","getSvgIconFromUrl","observableOf","_generateEmptySvg","getNamedSvgIcon","setDefaultFontSetClass","addSvgIconResolver","ngOnDestroy","emptySvg","document","createElementNS","classList","add","setAttribute","deps","target","i0","ɵɵFactoryTarget","Injectable","decorators","MatIconTestingModule","NgModule","providers","provide","MatIconRegistry","useClass","args"],"mappings":"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"}
{"version":3,"file":"icon-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/icon/testing/icon-harness-filters.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/icon/testing/icon-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/icon/testing/fake-icon-registry.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\nimport {BaseHarnessFilters} from '@angular/cdk/testing';\n\n/** Possible types of icons. */\nexport enum IconType {\n SVG,\n FONT,\n}\n\n/** A set of criteria that can be used to filter a list of `MatIconHarness` instances. */\nexport interface IconHarnessFilters extends BaseHarnessFilters {\n /** Filters based on the typef of the icon. */\n type?: IconType;\n /** Filters based on the name of the icon. */\n name?: string | RegExp;\n /** Filters based on the namespace of the icon. */\n namespace?: string | null | RegExp;\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 {ComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {IconHarnessFilters, IconType} from './icon-harness-filters';\n\n/** Harness for interacting with a standard mat-icon in tests. */\nexport class MatIconHarness extends ComponentHarness {\n /** The selector for the host element of a `MatIcon` instance. */\n static hostSelector = '.mat-icon';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatIconHarness` that meets\n * certain criteria.\n * @param options Options for filtering which icon instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: IconHarnessFilters = {}): HarnessPredicate<MatIconHarness> {\n return new HarnessPredicate(MatIconHarness, options)\n .addOption('type', options.type, async (harness, type) => (await harness.getType()) === type)\n .addOption('name', options.name, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getName(), text),\n )\n .addOption('namespace', options.namespace, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getNamespace(), text),\n );\n }\n\n /** Gets the type of the icon. */\n async getType(): Promise<IconType> {\n const type = await (await this.host()).getAttribute('data-mat-icon-type');\n return type === 'svg' ? IconType.SVG : IconType.FONT;\n }\n\n /** Gets the name of the icon. */\n async getName(): Promise<string | null> {\n const host = await this.host();\n const nameFromDom = await host.getAttribute('data-mat-icon-name');\n\n // If we managed to figure out the name from the attribute, use it.\n if (nameFromDom) {\n return nameFromDom;\n }\n\n // Some icons support defining the icon as a ligature.\n // As a fallback, try to extract it from the DOM text.\n if ((await this.getType()) === IconType.FONT) {\n // Other directives may add content to the icon (e.g. `MatBadge`), however only the direct\n // text nodes affect the name of the icon. Exclude all element descendants from the result.\n const text = await host.text({exclude: '*'});\n\n // There are some internal cases where the icon name is wrapped in another node.\n // Fall back to extracting the entire text if we ended up excluding everything above.\n return text.length > 0 ? text : host.text();\n }\n\n return null;\n }\n\n /** Gets the namespace of the icon. */\n async getNamespace(): Promise<string | null> {\n return (await this.host()).getAttribute('data-mat-icon-namespace');\n }\n\n /** Gets whether the icon is inline. */\n async isInline(): Promise<boolean> {\n return (await this.host()).hasClass('mat-icon-inline');\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 {Injectable, NgModule, OnDestroy} from '@angular/core';\nimport {MatIconRegistry} from '../../icon';\nimport {Observable, of as observableOf} from 'rxjs';\n\ntype PublicApi<T> = {\n [K in keyof T]: T[K] extends (...x: any[]) => T ? (...x: any[]) => PublicApi<T> : T[K];\n};\n\n/**\n * A null icon registry that must be imported to allow disabling of custom\n * icons.\n */\n@Injectable()\nexport class FakeMatIconRegistry implements PublicApi<MatIconRegistry>, OnDestroy {\n addSvgIcon(): this {\n return this;\n }\n\n addSvgIconLiteral(): this {\n return this;\n }\n\n addSvgIconInNamespace(): this {\n return this;\n }\n\n addSvgIconLiteralInNamespace(): this {\n return this;\n }\n\n addSvgIconSet(): this {\n return this;\n }\n\n addSvgIconSetLiteral(): this {\n return this;\n }\n\n addSvgIconSetInNamespace(): this {\n return this;\n }\n\n addSvgIconSetLiteralInNamespace(): this {\n return this;\n }\n\n registerFontClassAlias(): this {\n return this;\n }\n\n classNameForFontAlias(alias: string): string {\n return alias;\n }\n\n getDefaultFontSetClass() {\n return ['material-icons'];\n }\n\n getSvgIconFromUrl(): Observable<SVGElement> {\n return observableOf(this._generateEmptySvg());\n }\n\n getNamedSvgIcon(): Observable<SVGElement> {\n return observableOf(this._generateEmptySvg());\n }\n\n setDefaultFontSetClass(): this {\n return this;\n }\n\n addSvgIconResolver(): this {\n return this;\n }\n\n ngOnDestroy() {}\n\n private _generateEmptySvg(): SVGElement {\n const emptySvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n emptySvg.classList.add('fake-testing-svg');\n // Emulate real icon characteristics from `MatIconRegistry` so size remains consistent in tests.\n emptySvg.setAttribute('fit', '');\n emptySvg.setAttribute('height', '100%');\n emptySvg.setAttribute('width', '100%');\n emptySvg.setAttribute('preserveAspectRatio', 'xMidYMid meet');\n emptySvg.setAttribute('focusable', 'false');\n return emptySvg;\n }\n}\n\n/** Import this module in tests to install the null icon registry. */\n@NgModule({\n providers: [{provide: MatIconRegistry, useClass: FakeMatIconRegistry}],\n})\nexport class MatIconTestingModule {}\n"],"names":["IconType","MatIconHarness","ComponentHarness","hostSelector","with","options","HarnessPredicate","addOption","type","harness","getType","name","text","stringMatches","getName","namespace","getNamespace","host","getAttribute","SVG","FONT","nameFromDom","exclude","length","isInline","hasClass","FakeMatIconRegistry","addSvgIcon","addSvgIconLiteral","addSvgIconInNamespace","addSvgIconLiteralInNamespace","addSvgIconSet","addSvgIconSetLiteral","addSvgIconSetInNamespace","addSvgIconSetLiteralInNamespace","registerFontClassAlias","classNameForFontAlias","alias","getDefaultFontSetClass","getSvgIconFromUrl","observableOf","_generateEmptySvg","getNamedSvgIcon","setDefaultFontSetClass","addSvgIconResolver","ngOnDestroy","emptySvg","document","createElementNS","classList","add","setAttribute","deps","target","i0","ɵɵFactoryTarget","Injectable","decorators","MatIconTestingModule","NgModule","providers","provide","MatIconRegistry","useClass","args"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"icon.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/icon/icon.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/icon/icon-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\nimport {\n AfterViewChecked,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ErrorHandler,\n inject,\n InjectionToken,\n Input,\n OnDestroy,\n OnInit,\n ViewEncapsulation,\n HostAttributeToken,\n DOCUMENT,\n} from '@angular/core';\nimport {ThemePalette} from '../core';\nimport {Subscription} from 'rxjs';\nimport {take} from 'rxjs/operators';\n\nimport {MatIconRegistry} from './icon-registry';\n\n/** Default options for `mat-icon`. */\nexport interface MatIconDefaultOptions {\n /**\n * Theme color of the icon. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/icon/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n color?: ThemePalette;\n /** Font set that the icon is a part of. */\n fontSet?: string;\n}\n\n/** Injection token to be used to override the default options for `mat-icon`. */\nexport const MAT_ICON_DEFAULT_OPTIONS = new InjectionToken<MatIconDefaultOptions>(\n 'MAT_ICON_DEFAULT_OPTIONS',\n);\n\n/**\n * Injection token used to provide the current location to `MatIcon`.\n * Used to handle server-side rendering and to stub out during unit tests.\n * @docs-private\n */\nexport const MAT_ICON_LOCATION = new InjectionToken<MatIconLocation>('mat-icon-location', {\n providedIn: 'root',\n factory: () => {\n const _document = inject(DOCUMENT);\n const _location = _document ? _document.location : null;\n\n return {\n // Note that this needs to be a function, rather than a property, because Angular\n // will only resolve it once, but we want the current path on each call.\n getPathname: () => (_location ? _location.pathname + _location.search : ''),\n };\n },\n});\n\n/**\n * Stubbed out location for `MatIcon`.\n * @docs-private\n */\nexport interface MatIconLocation {\n getPathname: () => string;\n}\n\n/** SVG attributes that accept a FuncIRI (e.g. `url(<something>)`). */\nconst funcIriAttributes = [\n 'clip-path',\n 'color-profile',\n 'src',\n 'cursor',\n 'fill',\n 'filter',\n 'marker',\n 'marker-start',\n 'marker-mid',\n 'marker-end',\n 'mask',\n 'stroke',\n];\n\n/** Selector that can be used to find all elements that are using a `FuncIRI`. */\nconst funcIriAttributeSelector = funcIriAttributes.map(attr => `[${attr}]`).join(', ');\n\n/** Regex that can be used to extract the id out of a FuncIRI. */\nconst funcIriPattern = /^url\\(['\"]?#(.*?)['\"]?\\)$/;\n\n/**\n * Component to display an icon. It can be used in the following ways:\n *\n * - Specify the svgIcon input to load an SVG icon from a URL previously registered with the\n * addSvgIcon, addSvgIconInNamespace, addSvgIconSet, or addSvgIconSetInNamespace methods of\n * MatIconRegistry. If the svgIcon value contains a colon it is assumed to be in the format\n * \"[namespace]:[name]\", if not the value will be the name of an icon in the default namespace.\n * Examples:\n * `<mat-icon svgIcon=\"left-arrow\"></mat-icon>\n * <mat-icon svgIcon=\"animals:cat\"></mat-icon>`\n *\n * - Use a font ligature as an icon by putting the ligature text in the `fontIcon` attribute or the\n * content of the `<mat-icon>` component. If you register a custom font class, don't forget to also\n * include the special class `mat-ligature-font`. It is recommended to use the attribute alternative\n * to prevent the ligature text to be selectable and to appear in search engine results.\n * By default, the Material icons font is used as described at\n * http://google.github.io/material-design-icons/#icon-font-for-the-web. You can specify an\n * alternate font by setting the fontSet input to either the CSS class to apply to use the\n * desired font, or to an alias previously registered with MatIconRegistry.registerFontClassAlias.\n * Examples:\n * `<mat-icon fontIcon=\"home\"></mat-icon>\n * <mat-icon>home</mat-icon>\n * <mat-icon fontSet=\"myfont\" fontIcon=\"sun\"></mat-icon>\n * <mat-icon fontSet=\"myfont\">sun</mat-icon>`\n *\n * - Specify a font glyph to be included via CSS rules by setting the fontSet input to specify the\n * font, and the fontIcon input to specify the icon. Typically the fontIcon will specify a\n * CSS class which causes the glyph to be displayed via a :before selector, as in\n * https://fontawesome-v4.github.io/examples/\n * Example:\n * `<mat-icon fontSet=\"fa\" fontIcon=\"alarm\"></mat-icon>`\n */\n@Component({\n template: '<ng-content></ng-content>',\n selector: 'mat-icon',\n exportAs: 'matIcon',\n styleUrl: 'icon.css',\n host: {\n 'role': 'img',\n 'class': 'mat-icon notranslate',\n '[class]': 'color ? \"mat-\" + color : \"\"',\n '[attr.data-mat-icon-type]': '_usingFontIcon() ? \"font\" : \"svg\"',\n '[attr.data-mat-icon-name]': '_svgName || fontIcon',\n '[attr.data-mat-icon-namespace]': '_svgNamespace || fontSet',\n '[attr.fontIcon]': '_usingFontIcon() ? fontIcon : null',\n '[class.mat-icon-inline]': 'inline',\n '[class.mat-icon-no-color]': 'color !== \"primary\" && color !== \"accent\" && color !== \"warn\"',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatIcon implements OnInit, AfterViewChecked, OnDestroy {\n readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _iconRegistry = inject(MatIconRegistry);\n private _location = inject<MatIconLocation>(MAT_ICON_LOCATION);\n private readonly _errorHandler = inject(ErrorHandler);\n private _defaultColor!: ThemePalette;\n\n /**\n * Theme color of the icon. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/icon/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input()\n get color() {\n return this._color || this._defaultColor;\n }\n set color(value: string | null | undefined) {\n this._color = value;\n }\n private _color: string | null | undefined;\n\n /**\n * Whether the icon should be inlined, automatically sizing the icon to match the font size of\n * the element the icon is contained in.\n */\n @Input({transform: booleanAttribute})\n inline: boolean = false;\n\n /** Name of the icon in the SVG icon set. */\n @Input()\n get svgIcon(): string {\n return this._svgIcon;\n }\n set svgIcon(value: string) {\n if (value !== this._svgIcon) {\n if (value) {\n this._updateSvgIcon(value);\n } else if (this._svgIcon) {\n this._clearSvgElement();\n }\n this._svgIcon = value;\n }\n }\n private _svgIcon!: string;\n\n /** Font set that the icon is a part of. */\n @Input()\n get fontSet(): string {\n return this._fontSet;\n }\n set fontSet(value: string) {\n const newValue = this._cleanupFontValue(value);\n\n if (newValue !== this._fontSet) {\n this._fontSet = newValue;\n this._updateFontIconClasses();\n }\n }\n private _fontSet!: string;\n\n /** Name of an icon within a font set. */\n @Input()\n get fontIcon(): string {\n return this._fontIcon;\n }\n set fontIcon(value: string) {\n const newValue = this._cleanupFontValue(value);\n\n if (newValue !== this._fontIcon) {\n this._fontIcon = newValue;\n this._updateFontIconClasses();\n }\n }\n private _fontIcon!: string;\n\n private _previousFontSetClass: string[] = [];\n private _previousFontIconClass!: string;\n\n _svgName: string | null = null;\n _svgNamespace: string | null = null;\n\n /** Keeps track of the current page path. */\n private _previousPath?: string;\n\n /** Keeps track of the elements and attributes that we've prefixed with the current path. */\n private _elementsWithExternalReferences?: Map<Element, {name: string; value: string}[]>;\n\n /** Subscription to the current in-progress SVG icon request. */\n private _currentIconFetch = Subscription.EMPTY;\n\n constructor(...args: unknown[]);\n\n constructor() {\n const ariaHidden = inject(new HostAttributeToken('aria-hidden'), {optional: true});\n const defaults = inject<MatIconDefaultOptions>(MAT_ICON_DEFAULT_OPTIONS, {optional: true});\n\n if (defaults) {\n if (defaults.color) {\n this.color = this._defaultColor = defaults.color;\n }\n\n if (defaults.fontSet) {\n this.fontSet = defaults.fontSet;\n }\n }\n\n // If the user has not explicitly set aria-hidden, mark the icon as hidden, as this is\n // the right thing to do for the majority of icon use-cases.\n if (!ariaHidden) {\n this._elementRef.nativeElement.setAttribute('aria-hidden', 'true');\n }\n }\n\n /**\n * Splits an svgIcon binding value into its icon set and icon name components.\n * Returns a 2-element array of [(icon set), (icon name)].\n * The separator for the two fields is ':'. If there is no separator, an empty\n * string is returned for the icon set and the entire value is returned for\n * the icon name. If the argument is falsy, returns an array of two empty strings.\n * Throws an error if the name contains two or more ':' separators.\n * Examples:\n * `'social:cake' -> ['social', 'cake']\n * 'penguin' -> ['', 'penguin']\n * null -> ['', '']\n * 'a:b:c' -> (throws Error)`\n */\n private _splitIconName(iconName: string): [string, string] {\n if (!iconName) {\n return ['', ''];\n }\n const parts = iconName.split(':');\n switch (parts.length) {\n case 1:\n return ['', parts[0]]; // Use default namespace.\n case 2:\n return <[string, string]>parts;\n default:\n throw Error(`Invalid icon name: \"${iconName}\"`); // TODO: add an ngDevMode check\n }\n }\n\n ngOnInit() {\n // Update font classes because ngOnChanges won't be called if none of the inputs are present,\n // e.g. <mat-icon>arrow</mat-icon> In this case we need to add a CSS class for the default font.\n this._updateFontIconClasses();\n }\n\n ngAfterViewChecked() {\n const cachedElements = this._elementsWithExternalReferences;\n\n if (cachedElements && cachedElements.size) {\n const newPath = this._location.getPathname();\n\n // We need to check whether the URL has changed on each change detection since\n // the browser doesn't have an API that will let us react on link clicks and\n // we can't depend on the Angular router. The references need to be updated,\n // because while most browsers don't care whether the URL is correct after\n // the first render, Safari will break if the user navigates to a different\n // page and the SVG isn't re-rendered.\n if (newPath !== this._previousPath) {\n this._previousPath = newPath;\n this._prependPathToReferences(newPath);\n }\n }\n }\n\n ngOnDestroy() {\n this._currentIconFetch.unsubscribe();\n\n if (this._elementsWithExternalReferences) {\n this._elementsWithExternalReferences.clear();\n }\n }\n\n _usingFontIcon(): boolean {\n return !this.svgIcon;\n }\n\n private _setSvgElement(svg: SVGElement) {\n this._clearSvgElement();\n\n // Note: we do this fix here, rather than the icon registry, because the\n // references have to point to the URL at the time that the icon was created.\n const path = this._location.getPathname();\n this._previousPath = path;\n this._cacheChildrenWithExternalReferences(svg);\n this._prependPathToReferences(path);\n this._elementRef.nativeElement.appendChild(svg);\n }\n\n private _clearSvgElement() {\n const layoutElement: HTMLElement = this._elementRef.nativeElement;\n let childCount = layoutElement.childNodes.length;\n\n if (this._elementsWithExternalReferences) {\n this._elementsWithExternalReferences.clear();\n }\n\n // Remove existing non-element child nodes and SVGs, and add the new SVG element. Note that\n // we can't use innerHTML, because IE will throw if the element has a data binding.\n while (childCount--) {\n const child = layoutElement.childNodes[childCount];\n\n // 1 corresponds to Node.ELEMENT_NODE. We remove all non-element nodes in order to get rid\n // of any loose text nodes, as well as any SVG elements in order to remove any old icons.\n if (child.nodeType !== 1 || child.nodeName.toLowerCase() === 'svg') {\n child.remove();\n }\n }\n }\n\n private _updateFontIconClasses() {\n if (!this._usingFontIcon()) {\n return;\n }\n\n const elem: HTMLElement = this._elementRef.nativeElement;\n const fontSetClasses = (\n this.fontSet\n ? this._iconRegistry.classNameForFontAlias(this.fontSet).split(/ +/)\n : this._iconRegistry.getDefaultFontSetClass()\n ).filter(className => className.length > 0);\n\n this._previousFontSetClass.forEach(className => elem.classList.remove(className));\n fontSetClasses.forEach(className => elem.classList.add(className));\n this._previousFontSetClass = fontSetClasses;\n\n if (\n this.fontIcon !== this._previousFontIconClass &&\n !fontSetClasses.includes('mat-ligature-font')\n ) {\n if (this._previousFontIconClass) {\n elem.classList.remove(this._previousFontIconClass);\n }\n if (this.fontIcon) {\n elem.classList.add(this.fontIcon);\n }\n this._previousFontIconClass = this.fontIcon;\n }\n }\n\n /**\n * Cleans up a value to be used as a fontIcon or fontSet.\n * Since the value ends up being assigned as a CSS class, we\n * have to trim the value and omit space-separated values.\n */\n private _cleanupFontValue(value: string) {\n return typeof value === 'string' ? value.trim().split(' ')[0] : value;\n }\n\n /**\n * Prepends the current path to all elements that have an attribute pointing to a `FuncIRI`\n * reference. This is required because WebKit browsers require references to be prefixed with\n * the current path, if the page has a `base` tag.\n */\n private _prependPathToReferences(path: string) {\n const elements = this._elementsWithExternalReferences;\n\n if (elements) {\n elements.forEach((attrs, element) => {\n attrs.forEach(attr => {\n element.setAttribute(attr.name, `url('${path}#${attr.value}')`);\n });\n });\n }\n }\n\n /**\n * Caches the children of an SVG element that have `url()`\n * references that we need to prefix with the current path.\n */\n private _cacheChildrenWithExternalReferences(element: SVGElement) {\n const elementsWithFuncIri = element.querySelectorAll(funcIriAttributeSelector);\n const elements = (this._elementsWithExternalReferences =\n this._elementsWithExternalReferences || new Map());\n\n for (let i = 0; i < elementsWithFuncIri.length; i++) {\n funcIriAttributes.forEach(attr => {\n const elementWithReference = elementsWithFuncIri[i];\n const value = elementWithReference.getAttribute(attr);\n const match = value ? value.match(funcIriPattern) : null;\n\n if (match) {\n let attributes = elements.get(elementWithReference);\n\n if (!attributes) {\n attributes = [];\n elements.set(elementWithReference, attributes);\n }\n\n attributes!.push({name: attr, value: match[1]});\n }\n });\n }\n }\n\n /** Sets a new SVG icon with a particular name. */\n private _updateSvgIcon(rawName: string | undefined) {\n this._svgNamespace = null;\n this._svgName = null;\n this._currentIconFetch.unsubscribe();\n\n if (rawName) {\n const [namespace, iconName] = this._splitIconName(rawName);\n\n if (namespace) {\n this._svgNamespace = namespace;\n }\n\n if (iconName) {\n this._svgName = iconName;\n }\n\n this._currentIconFetch = this._iconRegistry\n .getNamedSvgIcon(iconName, namespace)\n .pipe(take(1))\n .subscribe(\n svg => this._setSvgElement(svg),\n (err: Error) => {\n const errorMessage = `Error retrieving icon ${namespace}:${iconName}! ${err.message}`;\n this._errorHandler.handleError(new Error(errorMessage));\n },\n );\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 {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\nimport {MatIcon} from './icon';\n\n@NgModule({\n imports: [MatIcon],\n exports: [MatIcon, BidiModule],\n})\nexport class MatIconModule {}\n"],"names":["MAT_ICON_DEFAULT_OPTIONS","InjectionToken","MAT_ICON_LOCATION","providedIn","factory","_document","inject","DOCUMENT","_location","location","getPathname","pathname","search","funcIriAttributes","funcIriAttributeSelector","map","attr","join","funcIriPattern","MatIcon","_elementRef","ElementRef","_iconRegistry","MatIconRegistry","_errorHandler","ErrorHandler","_defaultColor","color","_color","value","inline","svgIcon","_svgIcon","_updateSvgIcon","_clearSvgElement","fontSet","_fontSet","newValue","_cleanupFontValue","_updateFontIconClasses","fontIcon","_fontIcon","_previousFontSetClass","_previousFontIconClass","_svgName","_svgNamespace","_previousPath","_elementsWithExternalReferences","_currentIconFetch","Subscription","EMPTY","constructor","ariaHidden","HostAttributeToken","optional","defaults","nativeElement","setAttribute","_splitIconName","iconName","parts","split","length","Error","ngOnInit","ngAfterViewChecked","cachedElements","size","newPath","_prependPathToReferences","ngOnDestroy","unsubscribe","clear","_usingFontIcon","_setSvgElement","svg","path","_cacheChildrenWithExternalReferences","appendChild","layoutElement","childCount","childNodes","child","nodeType","nodeName","toLowerCase","remove","elem","fontSetClasses","classNameForFontAlias","getDefaultFontSetClass","filter","className","forEach","classList","add","includes","trim","elements","attrs","element","name","elementsWithFuncIri","querySelectorAll","Map","i","elementWithReference","getAttribute","match","attributes","get","set","push","rawName","namespace","getNamedSvgIcon","pipe","take","subscribe","err","errorMessage","message","handleError","deps","target","i0","ɵɵFactoryTarget","Component","isStandalone","selector","inputs","booleanAttribute","host","properties","classAttribute","exportAs","ngImport","template","isInline","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","args","Input","transform","MatIconModule","NgModule","ɵmod","ɵɵngDeclareNgModule","minVersion","version","type","imports","exports","BidiModule","ɵinj","ɵɵngDeclareInjector"],"mappings":"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"}
{"version":3,"file":"icon.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/icon/icon.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/icon/icon-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\nimport {\n AfterViewChecked,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ErrorHandler,\n inject,\n InjectionToken,\n Input,\n OnDestroy,\n OnInit,\n ViewEncapsulation,\n HostAttributeToken,\n DOCUMENT,\n} from '@angular/core';\nimport {ThemePalette} from '../core';\nimport {Subscription} from 'rxjs';\nimport {take} from 'rxjs/operators';\n\nimport {MatIconRegistry} from './icon-registry';\n\n/** Default options for `mat-icon`. */\nexport interface MatIconDefaultOptions {\n /**\n * Theme color of the icon. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/icon/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n color?: ThemePalette;\n /** Font set that the icon is a part of. */\n fontSet?: string;\n}\n\n/** Injection token to be used to override the default options for `mat-icon`. */\nexport const MAT_ICON_DEFAULT_OPTIONS = new InjectionToken<MatIconDefaultOptions>(\n 'MAT_ICON_DEFAULT_OPTIONS',\n);\n\n/**\n * Injection token used to provide the current location to `MatIcon`.\n * Used to handle server-side rendering and to stub out during unit tests.\n * @docs-private\n */\nexport const MAT_ICON_LOCATION = new InjectionToken<MatIconLocation>('mat-icon-location', {\n providedIn: 'root',\n factory: () => {\n const _document = inject(DOCUMENT);\n const _location = _document ? _document.location : null;\n\n return {\n // Note that this needs to be a function, rather than a property, because Angular\n // will only resolve it once, but we want the current path on each call.\n getPathname: () => (_location ? _location.pathname + _location.search : ''),\n };\n },\n});\n\n/**\n * Stubbed out location for `MatIcon`.\n * @docs-private\n */\nexport interface MatIconLocation {\n getPathname: () => string;\n}\n\n/** SVG attributes that accept a FuncIRI (e.g. `url(<something>)`). */\nconst funcIriAttributes = [\n 'clip-path',\n 'color-profile',\n 'src',\n 'cursor',\n 'fill',\n 'filter',\n 'marker',\n 'marker-start',\n 'marker-mid',\n 'marker-end',\n 'mask',\n 'stroke',\n];\n\n/** Selector that can be used to find all elements that are using a `FuncIRI`. */\nconst funcIriAttributeSelector = funcIriAttributes.map(attr => `[${attr}]`).join(', ');\n\n/** Regex that can be used to extract the id out of a FuncIRI. */\nconst funcIriPattern = /^url\\(['\"]?#(.*?)['\"]?\\)$/;\n\n/**\n * Component to display an icon. It can be used in the following ways:\n *\n * - Specify the svgIcon input to load an SVG icon from a URL previously registered with the\n * addSvgIcon, addSvgIconInNamespace, addSvgIconSet, or addSvgIconSetInNamespace methods of\n * MatIconRegistry. If the svgIcon value contains a colon it is assumed to be in the format\n * \"[namespace]:[name]\", if not the value will be the name of an icon in the default namespace.\n * Examples:\n * `<mat-icon svgIcon=\"left-arrow\"></mat-icon>\n * <mat-icon svgIcon=\"animals:cat\"></mat-icon>`\n *\n * - Use a font ligature as an icon by putting the ligature text in the `fontIcon` attribute or the\n * content of the `<mat-icon>` component. If you register a custom font class, don't forget to also\n * include the special class `mat-ligature-font`. It is recommended to use the attribute alternative\n * to prevent the ligature text to be selectable and to appear in search engine results.\n * By default, the Material icons font is used as described at\n * http://google.github.io/material-design-icons/#icon-font-for-the-web. You can specify an\n * alternate font by setting the fontSet input to either the CSS class to apply to use the\n * desired font, or to an alias previously registered with MatIconRegistry.registerFontClassAlias.\n * Examples:\n * `<mat-icon fontIcon=\"home\"></mat-icon>\n * <mat-icon>home</mat-icon>\n * <mat-icon fontSet=\"myfont\" fontIcon=\"sun\"></mat-icon>\n * <mat-icon fontSet=\"myfont\">sun</mat-icon>`\n *\n * - Specify a font glyph to be included via CSS rules by setting the fontSet input to specify the\n * font, and the fontIcon input to specify the icon. Typically the fontIcon will specify a\n * CSS class which causes the glyph to be displayed via a :before selector, as in\n * https://fontawesome-v4.github.io/examples/\n * Example:\n * `<mat-icon fontSet=\"fa\" fontIcon=\"alarm\"></mat-icon>`\n */\n@Component({\n template: '<ng-content></ng-content>',\n selector: 'mat-icon',\n exportAs: 'matIcon',\n styleUrl: 'icon.css',\n host: {\n 'role': 'img',\n 'class': 'mat-icon notranslate',\n '[class]': 'color ? \"mat-\" + color : \"\"',\n '[attr.data-mat-icon-type]': '_usingFontIcon() ? \"font\" : \"svg\"',\n '[attr.data-mat-icon-name]': '_svgName || fontIcon',\n '[attr.data-mat-icon-namespace]': '_svgNamespace || fontSet',\n '[attr.fontIcon]': '_usingFontIcon() ? fontIcon : null',\n '[class.mat-icon-inline]': 'inline',\n '[class.mat-icon-no-color]': 'color !== \"primary\" && color !== \"accent\" && color !== \"warn\"',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatIcon implements OnInit, AfterViewChecked, OnDestroy {\n readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _iconRegistry = inject(MatIconRegistry);\n private _location = inject<MatIconLocation>(MAT_ICON_LOCATION);\n private readonly _errorHandler = inject(ErrorHandler);\n private _defaultColor!: ThemePalette;\n\n /**\n * Theme color of the icon. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/icon/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input()\n get color() {\n return this._color || this._defaultColor;\n }\n set color(value: string | null | undefined) {\n this._color = value;\n }\n private _color: string | null | undefined;\n\n /**\n * Whether the icon should be inlined, automatically sizing the icon to match the font size of\n * the element the icon is contained in.\n */\n @Input({transform: booleanAttribute})\n inline: boolean = false;\n\n /** Name of the icon in the SVG icon set. */\n @Input()\n get svgIcon(): string {\n return this._svgIcon;\n }\n set svgIcon(value: string) {\n if (value !== this._svgIcon) {\n if (value) {\n this._updateSvgIcon(value);\n } else if (this._svgIcon) {\n this._clearSvgElement();\n }\n this._svgIcon = value;\n }\n }\n private _svgIcon!: string;\n\n /** Font set that the icon is a part of. */\n @Input()\n get fontSet(): string {\n return this._fontSet;\n }\n set fontSet(value: string) {\n const newValue = this._cleanupFontValue(value);\n\n if (newValue !== this._fontSet) {\n this._fontSet = newValue;\n this._updateFontIconClasses();\n }\n }\n private _fontSet!: string;\n\n /** Name of an icon within a font set. */\n @Input()\n get fontIcon(): string {\n return this._fontIcon;\n }\n set fontIcon(value: string) {\n const newValue = this._cleanupFontValue(value);\n\n if (newValue !== this._fontIcon) {\n this._fontIcon = newValue;\n this._updateFontIconClasses();\n }\n }\n private _fontIcon!: string;\n\n private _previousFontSetClass: string[] = [];\n private _previousFontIconClass!: string;\n\n _svgName: string | null = null;\n _svgNamespace: string | null = null;\n\n /** Keeps track of the current page path. */\n private _previousPath?: string;\n\n /** Keeps track of the elements and attributes that we've prefixed with the current path. */\n private _elementsWithExternalReferences?: Map<Element, {name: string; value: string}[]>;\n\n /** Subscription to the current in-progress SVG icon request. */\n private _currentIconFetch = Subscription.EMPTY;\n\n constructor(...args: unknown[]);\n\n constructor() {\n const ariaHidden = inject(new HostAttributeToken('aria-hidden'), {optional: true});\n const defaults = inject<MatIconDefaultOptions>(MAT_ICON_DEFAULT_OPTIONS, {optional: true});\n\n if (defaults) {\n if (defaults.color) {\n this.color = this._defaultColor = defaults.color;\n }\n\n if (defaults.fontSet) {\n this.fontSet = defaults.fontSet;\n }\n }\n\n // If the user has not explicitly set aria-hidden, mark the icon as hidden, as this is\n // the right thing to do for the majority of icon use-cases.\n if (!ariaHidden) {\n this._elementRef.nativeElement.setAttribute('aria-hidden', 'true');\n }\n }\n\n /**\n * Splits an svgIcon binding value into its icon set and icon name components.\n * Returns a 2-element array of [(icon set), (icon name)].\n * The separator for the two fields is ':'. If there is no separator, an empty\n * string is returned for the icon set and the entire value is returned for\n * the icon name. If the argument is falsy, returns an array of two empty strings.\n * Throws an error if the name contains two or more ':' separators.\n * Examples:\n * `'social:cake' -> ['social', 'cake']\n * 'penguin' -> ['', 'penguin']\n * null -> ['', '']\n * 'a:b:c' -> (throws Error)`\n */\n private _splitIconName(iconName: string): [string, string] {\n if (!iconName) {\n return ['', ''];\n }\n const parts = iconName.split(':');\n switch (parts.length) {\n case 1:\n return ['', parts[0]]; // Use default namespace.\n case 2:\n return <[string, string]>parts;\n default:\n throw Error(`Invalid icon name: \"${iconName}\"`); // TODO: add an ngDevMode check\n }\n }\n\n ngOnInit() {\n // Update font classes because ngOnChanges won't be called if none of the inputs are present,\n // e.g. <mat-icon>arrow</mat-icon> In this case we need to add a CSS class for the default font.\n this._updateFontIconClasses();\n }\n\n ngAfterViewChecked() {\n const cachedElements = this._elementsWithExternalReferences;\n\n if (cachedElements && cachedElements.size) {\n const newPath = this._location.getPathname();\n\n // We need to check whether the URL has changed on each change detection since\n // the browser doesn't have an API that will let us react on link clicks and\n // we can't depend on the Angular router. The references need to be updated,\n // because while most browsers don't care whether the URL is correct after\n // the first render, Safari will break if the user navigates to a different\n // page and the SVG isn't re-rendered.\n if (newPath !== this._previousPath) {\n this._previousPath = newPath;\n this._prependPathToReferences(newPath);\n }\n }\n }\n\n ngOnDestroy() {\n this._currentIconFetch.unsubscribe();\n\n if (this._elementsWithExternalReferences) {\n this._elementsWithExternalReferences.clear();\n }\n }\n\n _usingFontIcon(): boolean {\n return !this.svgIcon;\n }\n\n private _setSvgElement(svg: SVGElement) {\n this._clearSvgElement();\n\n // Note: we do this fix here, rather than the icon registry, because the\n // references have to point to the URL at the time that the icon was created.\n const path = this._location.getPathname();\n this._previousPath = path;\n this._cacheChildrenWithExternalReferences(svg);\n this._prependPathToReferences(path);\n this._elementRef.nativeElement.appendChild(svg);\n }\n\n private _clearSvgElement() {\n const layoutElement: HTMLElement = this._elementRef.nativeElement;\n let childCount = layoutElement.childNodes.length;\n\n if (this._elementsWithExternalReferences) {\n this._elementsWithExternalReferences.clear();\n }\n\n // Remove existing non-element child nodes and SVGs, and add the new SVG element. Note that\n // we can't use innerHTML, because IE will throw if the element has a data binding.\n while (childCount--) {\n const child = layoutElement.childNodes[childCount];\n\n // 1 corresponds to Node.ELEMENT_NODE. We remove all non-element nodes in order to get rid\n // of any loose text nodes, as well as any SVG elements in order to remove any old icons.\n if (child.nodeType !== 1 || child.nodeName.toLowerCase() === 'svg') {\n child.remove();\n }\n }\n }\n\n private _updateFontIconClasses() {\n if (!this._usingFontIcon()) {\n return;\n }\n\n const elem: HTMLElement = this._elementRef.nativeElement;\n const fontSetClasses = (\n this.fontSet\n ? this._iconRegistry.classNameForFontAlias(this.fontSet).split(/ +/)\n : this._iconRegistry.getDefaultFontSetClass()\n ).filter(className => className.length > 0);\n\n this._previousFontSetClass.forEach(className => elem.classList.remove(className));\n fontSetClasses.forEach(className => elem.classList.add(className));\n this._previousFontSetClass = fontSetClasses;\n\n if (\n this.fontIcon !== this._previousFontIconClass &&\n !fontSetClasses.includes('mat-ligature-font')\n ) {\n if (this._previousFontIconClass) {\n elem.classList.remove(this._previousFontIconClass);\n }\n if (this.fontIcon) {\n elem.classList.add(this.fontIcon);\n }\n this._previousFontIconClass = this.fontIcon;\n }\n }\n\n /**\n * Cleans up a value to be used as a fontIcon or fontSet.\n * Since the value ends up being assigned as a CSS class, we\n * have to trim the value and omit space-separated values.\n */\n private _cleanupFontValue(value: string) {\n return typeof value === 'string' ? value.trim().split(' ')[0] : value;\n }\n\n /**\n * Prepends the current path to all elements that have an attribute pointing to a `FuncIRI`\n * reference. This is required because WebKit browsers require references to be prefixed with\n * the current path, if the page has a `base` tag.\n */\n private _prependPathToReferences(path: string) {\n const elements = this._elementsWithExternalReferences;\n\n if (elements) {\n elements.forEach((attrs, element) => {\n attrs.forEach(attr => {\n element.setAttribute(attr.name, `url('${path}#${attr.value}')`);\n });\n });\n }\n }\n\n /**\n * Caches the children of an SVG element that have `url()`\n * references that we need to prefix with the current path.\n */\n private _cacheChildrenWithExternalReferences(element: SVGElement) {\n const elementsWithFuncIri = element.querySelectorAll(funcIriAttributeSelector);\n const elements = (this._elementsWithExternalReferences =\n this._elementsWithExternalReferences || new Map());\n\n for (let i = 0; i < elementsWithFuncIri.length; i++) {\n funcIriAttributes.forEach(attr => {\n const elementWithReference = elementsWithFuncIri[i];\n const value = elementWithReference.getAttribute(attr);\n const match = value ? value.match(funcIriPattern) : null;\n\n if (match) {\n let attributes = elements.get(elementWithReference);\n\n if (!attributes) {\n attributes = [];\n elements.set(elementWithReference, attributes);\n }\n\n attributes!.push({name: attr, value: match[1]});\n }\n });\n }\n }\n\n /** Sets a new SVG icon with a particular name. */\n private _updateSvgIcon(rawName: string | undefined) {\n this._svgNamespace = null;\n this._svgName = null;\n this._currentIconFetch.unsubscribe();\n\n if (rawName) {\n const [namespace, iconName] = this._splitIconName(rawName);\n\n if (namespace) {\n this._svgNamespace = namespace;\n }\n\n if (iconName) {\n this._svgName = iconName;\n }\n\n this._currentIconFetch = this._iconRegistry\n .getNamedSvgIcon(iconName, namespace)\n .pipe(take(1))\n .subscribe(\n svg => this._setSvgElement(svg),\n (err: Error) => {\n const errorMessage = `Error retrieving icon ${namespace}:${iconName}! ${err.message}`;\n this._errorHandler.handleError(new Error(errorMessage));\n },\n );\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 {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\nimport {MatIcon} from './icon';\n\n@NgModule({\n imports: [MatIcon],\n exports: [MatIcon, BidiModule],\n})\nexport class MatIconModule {}\n"],"names":["MAT_ICON_DEFAULT_OPTIONS","InjectionToken","MAT_ICON_LOCATION","providedIn","factory","_document","inject","DOCUMENT","_location","location","getPathname","pathname","search","funcIriAttributes","funcIriAttributeSelector","map","attr","join","funcIriPattern","MatIcon","_elementRef","ElementRef","_iconRegistry","MatIconRegistry","_errorHandler","ErrorHandler","_defaultColor","color","_color","value","inline","svgIcon","_svgIcon","_updateSvgIcon","_clearSvgElement","fontSet","_fontSet","newValue","_cleanupFontValue","_updateFontIconClasses","fontIcon","_fontIcon","_previousFontSetClass","_previousFontIconClass","_svgName","_svgNamespace","_previousPath","_elementsWithExternalReferences","_currentIconFetch","Subscription","EMPTY","constructor","ariaHidden","HostAttributeToken","optional","defaults","nativeElement","setAttribute","_splitIconName","iconName","parts","split","length","Error","ngOnInit","ngAfterViewChecked","cachedElements","size","newPath","_prependPathToReferences","ngOnDestroy","unsubscribe","clear","_usingFontIcon","_setSvgElement","svg","path","_cacheChildrenWithExternalReferences","appendChild","layoutElement","childCount","childNodes","child","nodeType","nodeName","toLowerCase","remove","elem","fontSetClasses","classNameForFontAlias","getDefaultFontSetClass","filter","className","forEach","classList","add","includes","trim","elements","attrs","element","name","elementsWithFuncIri","querySelectorAll","Map","i","elementWithReference","getAttribute","match","attributes","get","set","push","rawName","namespace","getNamedSvgIcon","pipe","take","subscribe","err","errorMessage","message","handleError","deps","target","i0","ɵɵFactoryTarget","Component","isStandalone","selector","inputs","booleanAttribute","host","properties","classAttribute","exportAs","ngImport","template","isInline","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","args","Input","transform","MatIconModule","NgModule","ɵmod","ɵɵngDeclareNgModule","minVersion","version","type","imports","exports","BidiModule","ɵinj","ɵɵngDeclareInjector"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"input-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/input/testing/native-option-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/input/testing/native-select-harness.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\nimport {ComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {NativeOptionHarnessFilters} from './native-select-harness-filters';\n\n/** Harness for interacting with a native `option` in tests. */\nexport class MatNativeOptionHarness extends ComponentHarness {\n /** Selector used to locate option instances. */\n static hostSelector = 'select[matNativeControl] option';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatNativeOptionHarness` that meets\n * certain criteria.\n * @param options Options for filtering which option instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: NativeOptionHarnessFilters = {}) {\n return new HarnessPredicate(MatNativeOptionHarness, options)\n .addOption('text', options.text, async (harness, title) =>\n HarnessPredicate.stringMatches(await harness.getText(), title),\n )\n .addOption(\n 'index',\n options.index,\n async (harness, index) => (await harness.getIndex()) === index,\n )\n .addOption(\n 'isSelected',\n options.isSelected,\n async (harness, isSelected) => (await harness.isSelected()) === isSelected,\n );\n }\n\n /** Gets the option's label text. */\n async getText(): Promise<string> {\n return (await this.host()).getProperty<string>('label');\n }\n\n /** Index of the option within the native `select` element. */\n async getIndex(): Promise<number> {\n return (await this.host()).getProperty<number>('index');\n }\n\n /** Gets whether the option is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('disabled');\n }\n\n /** Gets whether the option is selected. */\n async isSelected(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('selected');\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 {HarnessPredicate, parallel} from '@angular/cdk/testing';\nimport {MatFormFieldControlHarnessBase} from '../../form-field/testing/control';\nimport {MatNativeOptionHarness} from './native-option-harness';\nimport {\n NativeOptionHarnessFilters,\n NativeSelectHarnessFilters,\n} from './native-select-harness-filters';\n\n/** Harness for interacting with a native `select` in tests. */\nexport class MatNativeSelectHarness extends MatFormFieldControlHarnessBase {\n static hostSelector = 'select[matNativeControl]';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatNativeSelectHarness` that meets\n * certain criteria.\n * @param options Options for filtering which select instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: NativeSelectHarnessFilters = {}): HarnessPredicate<MatNativeSelectHarness> {\n return new HarnessPredicate(MatNativeSelectHarness, options).addOption(\n 'label',\n options.label,\n (harness, label) => {\n return HarnessPredicate.stringMatches(harness.getLabel(), label);\n },\n );\n }\n\n /** Gets a boolean promise indicating if the select is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('disabled');\n }\n\n /** Gets a boolean promise indicating if the select is required. */\n async isRequired(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('required');\n }\n\n /** Gets a boolean promise indicating if the select is in multi-selection mode. */\n async isMultiple(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('multiple');\n }\n\n /** Gets the name of the select. */\n async getName(): Promise<string> {\n // The \"name\" property of the native select is never undefined.\n return await (await this.host()).getProperty<string>('name');\n }\n\n /** Gets the id of the select. */\n async getId(): Promise<string> {\n // We're guaranteed to have an id, because the `matNativeControl` always assigns one.\n return await (await this.host()).getProperty<string>('id');\n }\n\n /** Focuses the select and returns a void promise that indicates when the action is complete. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Blurs the select and returns a void promise that indicates when the action is complete. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the select is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /** Gets the options inside the select panel. */\n async getOptions(filter: NativeOptionHarnessFilters = {}): Promise<MatNativeOptionHarness[]> {\n return this.locatorForAll(MatNativeOptionHarness.with(filter))();\n }\n\n /**\n * Selects the options that match the passed-in filter. If the select is in multi-selection\n * mode all options will be clicked, otherwise the harness will pick the first matching option.\n */\n async selectOptions(filter: NativeOptionHarnessFilters = {}): Promise<void> {\n const [isMultiple, options] = await parallel(() => {\n return [this.isMultiple(), this.getOptions(filter)];\n });\n\n if (options.length === 0) {\n throw Error('Select does not have options matching the specified filter');\n }\n\n const [host, optionIndexes] = await parallel(() => [\n this.host(),\n parallel(() => options.slice(0, isMultiple ? undefined : 1).map(option => option.getIndex())),\n ]);\n\n await host.selectOptions(...optionIndexes);\n }\n}\n"],"names":["MatNativeOptionHarness","ComponentHarness","hostSelector","with","options","HarnessPredicate","addOption","text","harness","title","stringMatches","getText","index","getIndex","isSelected","host","getProperty","isDisabled","MatNativeSelectHarness","MatFormFieldControlHarnessBase","label","getLabel","isRequired","isMultiple","getName","getId","focus","blur","isFocused","getOptions","filter","locatorForAll","selectOptions","parallel","length","Error","optionIndexes","slice","undefined","map","option"],"mappings":"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"}
{"version":3,"file":"input-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/input/testing/native-option-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/input/testing/native-select-harness.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\nimport {ComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {NativeOptionHarnessFilters} from './native-select-harness-filters';\n\n/** Harness for interacting with a native `option` in tests. */\nexport class MatNativeOptionHarness extends ComponentHarness {\n /** Selector used to locate option instances. */\n static hostSelector = 'select[matNativeControl] option';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatNativeOptionHarness` that meets\n * certain criteria.\n * @param options Options for filtering which option instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: NativeOptionHarnessFilters = {}) {\n return new HarnessPredicate(MatNativeOptionHarness, options)\n .addOption('text', options.text, async (harness, title) =>\n HarnessPredicate.stringMatches(await harness.getText(), title),\n )\n .addOption(\n 'index',\n options.index,\n async (harness, index) => (await harness.getIndex()) === index,\n )\n .addOption(\n 'isSelected',\n options.isSelected,\n async (harness, isSelected) => (await harness.isSelected()) === isSelected,\n );\n }\n\n /** Gets the option's label text. */\n async getText(): Promise<string> {\n return (await this.host()).getProperty<string>('label');\n }\n\n /** Index of the option within the native `select` element. */\n async getIndex(): Promise<number> {\n return (await this.host()).getProperty<number>('index');\n }\n\n /** Gets whether the option is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('disabled');\n }\n\n /** Gets whether the option is selected. */\n async isSelected(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('selected');\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 {HarnessPredicate, parallel} from '@angular/cdk/testing';\nimport {MatFormFieldControlHarnessBase} from '../../form-field/testing/control';\nimport {MatNativeOptionHarness} from './native-option-harness';\nimport {\n NativeOptionHarnessFilters,\n NativeSelectHarnessFilters,\n} from './native-select-harness-filters';\n\n/** Harness for interacting with a native `select` in tests. */\nexport class MatNativeSelectHarness extends MatFormFieldControlHarnessBase {\n static hostSelector = 'select[matNativeControl]';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatNativeSelectHarness` that meets\n * certain criteria.\n * @param options Options for filtering which select instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: NativeSelectHarnessFilters = {}): HarnessPredicate<MatNativeSelectHarness> {\n return new HarnessPredicate(MatNativeSelectHarness, options).addOption(\n 'label',\n options.label,\n (harness, label) => {\n return HarnessPredicate.stringMatches(harness.getLabel(), label);\n },\n );\n }\n\n /** Gets a boolean promise indicating if the select is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('disabled');\n }\n\n /** Gets a boolean promise indicating if the select is required. */\n async isRequired(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('required');\n }\n\n /** Gets a boolean promise indicating if the select is in multi-selection mode. */\n async isMultiple(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('multiple');\n }\n\n /** Gets the name of the select. */\n async getName(): Promise<string> {\n // The \"name\" property of the native select is never undefined.\n return await (await this.host()).getProperty<string>('name');\n }\n\n /** Gets the id of the select. */\n async getId(): Promise<string> {\n // We're guaranteed to have an id, because the `matNativeControl` always assigns one.\n return await (await this.host()).getProperty<string>('id');\n }\n\n /** Focuses the select and returns a void promise that indicates when the action is complete. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Blurs the select and returns a void promise that indicates when the action is complete. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the select is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /** Gets the options inside the select panel. */\n async getOptions(filter: NativeOptionHarnessFilters = {}): Promise<MatNativeOptionHarness[]> {\n return this.locatorForAll(MatNativeOptionHarness.with(filter))();\n }\n\n /**\n * Selects the options that match the passed-in filter. If the select is in multi-selection\n * mode all options will be clicked, otherwise the harness will pick the first matching option.\n */\n async selectOptions(filter: NativeOptionHarnessFilters = {}): Promise<void> {\n const [isMultiple, options] = await parallel(() => {\n return [this.isMultiple(), this.getOptions(filter)];\n });\n\n if (options.length === 0) {\n throw Error('Select does not have options matching the specified filter');\n }\n\n const [host, optionIndexes] = await parallel(() => [\n this.host(),\n parallel(() => options.slice(0, isMultiple ? undefined : 1).map(option => option.getIndex())),\n ]);\n\n await host.selectOptions(...optionIndexes);\n }\n}\n"],"names":["MatNativeOptionHarness","ComponentHarness","hostSelector","with","options","HarnessPredicate","addOption","text","harness","title","stringMatches","getText","index","getIndex","isSelected","host","getProperty","isDisabled","MatNativeSelectHarness","MatFormFieldControlHarnessBase","label","getLabel","isRequired","isMultiple","getName","getId","focus","blur","isFocused","getOptions","filter","locatorForAll","selectOptions","parallel","length","Error","optionIndexes","slice","undefined","map","option"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"input.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/input/input-errors.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/input/input.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/input/input-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/** @docs-private */\nexport function getMatInputUnsupportedTypeError(type: string): Error {\n return Error(`Input type \"${type}\" isn't supported by matInput.`);\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 {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {getSupportedInputTypes, Platform} from '@angular/cdk/platform';\nimport {AutofillMonitor} from '@angular/cdk/text-field';\nimport {\n AfterViewInit,\n booleanAttribute,\n Directive,\n DoCheck,\n effect,\n ElementRef,\n inject,\n InjectionToken,\n Input,\n isSignal,\n NgZone,\n OnChanges,\n OnDestroy,\n Renderer2,\n WritableSignal,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {FormGroupDirective, NgControl, NgForm, Validators} from '@angular/forms';\nimport {ErrorStateMatcher, _ErrorStateTracker} from '../core';\nimport {MatFormFieldControl, MatFormField, MAT_FORM_FIELD} from '../form-field';\nimport {Subject} from 'rxjs';\nimport {getMatInputUnsupportedTypeError} from './input-errors';\nimport {MAT_INPUT_VALUE_ACCESSOR} from './input-value-accessor';\n\n// Invalid input type. Using one of these will throw an MatInputUnsupportedTypeError.\nconst MAT_INPUT_INVALID_TYPES = [\n 'button',\n 'checkbox',\n 'file',\n 'hidden',\n 'image',\n 'radio',\n 'range',\n 'reset',\n 'submit',\n];\n\n/** Object that can be used to configure the default options for the input. */\nexport interface MatInputConfig {\n /** Whether disabled inputs should be interactive. */\n disabledInteractive?: boolean;\n}\n\n/** Injection token that can be used to provide the default options for the input. */\nexport const MAT_INPUT_CONFIG = new InjectionToken<MatInputConfig>('MAT_INPUT_CONFIG');\n\n@Directive({\n selector: `input[matInput], textarea[matInput], select[matNativeControl],\n input[matNativeControl], textarea[matNativeControl]`,\n exportAs: 'matInput',\n host: {\n 'class': 'mat-mdc-input-element',\n // The BaseMatInput parent class adds `mat-input-element`, `mat-form-field-control` and\n // `mat-form-field-autofill-control` to the CSS class list, but this should not be added for\n // this MDC equivalent input.\n '[class.mat-input-server]': '_isServer',\n '[class.mat-mdc-form-field-textarea-control]': '_isInFormField && _isTextarea',\n '[class.mat-mdc-form-field-input-control]': '_isInFormField',\n '[class.mat-mdc-input-disabled-interactive]': 'disabledInteractive',\n '[class.mdc-text-field__input]': '_isInFormField',\n '[class.mat-mdc-native-select-inline]': '_isInlineSelect()',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[id]': 'id',\n '[disabled]': 'disabled && !disabledInteractive',\n '[required]': 'required',\n '[attr.name]': 'name || null',\n '[attr.readonly]': '_getReadonlyAttribute()',\n '[attr.aria-disabled]': 'disabled && disabledInteractive ? \"true\" : null',\n // Only mark the input as invalid for assistive technology if it has a value since the\n // state usually overlaps with `aria-required` when the input is empty and can be redundant.\n '[attr.aria-invalid]': '(empty && required) ? null : errorState',\n '[attr.aria-required]': 'required',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[attr.id]': 'id',\n '(focus)': '_focusChanged(true)',\n '(blur)': '_focusChanged(false)',\n '(input)': '_onInput()',\n },\n providers: [{provide: MatFormFieldControl, useExisting: MatInput}],\n})\nexport class MatInput\n implements MatFormFieldControl<any>, OnChanges, OnDestroy, AfterViewInit, DoCheck\n{\n protected _elementRef =\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\n protected _platform = inject(Platform);\n ngControl = inject(NgControl, {optional: true, self: true})!;\n private _autofillMonitor = inject(AutofillMonitor);\n private _ngZone = inject(NgZone);\n protected _formField? = inject<MatFormField>(MAT_FORM_FIELD, {optional: true});\n private _renderer = inject(Renderer2);\n\n protected _uid = inject(_IdGenerator).getId('mat-input-');\n protected _previousNativeValue: any;\n private _inputValueAccessor!: {value: any};\n private _signalBasedValueAccessor?: {value: WritableSignal<any>};\n private _previousPlaceholder: string | null = null;\n private _errorStateTracker: _ErrorStateTracker;\n private _config = inject(MAT_INPUT_CONFIG, {optional: true});\n private _cleanupIosKeyup: (() => void) | undefined;\n private _cleanupWebkitWheel: (() => void) | undefined;\n\n /** Whether the component is being rendered on the server. */\n readonly _isServer: boolean = false;\n\n /** Whether the component is a native html select. */\n readonly _isNativeSelect: boolean = false;\n\n /** Whether the component is a textarea. */\n readonly _isTextarea: boolean = false;\n\n /** Whether the input is inside of a form field. */\n readonly _isInFormField: boolean = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n focused: boolean = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n controlType: string = 'mat-input';\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n autofilled = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n\n // Browsers may not fire the blur event if the input is disabled too quickly.\n // Reset from here to ensure that the element doesn't become stuck.\n if (this.focused) {\n this.focused = false;\n this.stateChanges.next();\n }\n }\n protected _disabled = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n this._id = value || this._uid;\n }\n protected _id!: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input() placeholder!: string;\n\n /**\n * Name of the input.\n * @docs-private\n */\n @Input() name!: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get required(): boolean {\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\n }\n set required(value: BooleanInput) {\n this._required = coerceBooleanProperty(value);\n }\n protected _required: boolean | undefined;\n\n /** Input type of the element. */\n @Input()\n get type(): string {\n return this._type;\n }\n set type(value: string) {\n this._type = value || 'text';\n this._validateType();\n\n // When using Angular inputs, developers are no longer able to set the properties on the native\n // input element. To ensure that bindings for `type` work, we need to sync the setter\n // with the native property. Textarea elements don't support the type property or attribute.\n if (!this._isTextarea && getSupportedInputTypes().has(this._type)) {\n (this._elementRef.nativeElement as HTMLInputElement).type = this._type;\n }\n }\n protected _type = 'text';\n\n /** An object used to control when error messages are shown. */\n @Input()\n get errorStateMatcher() {\n return this._errorStateTracker.matcher;\n }\n set errorStateMatcher(value: ErrorStateMatcher) {\n this._errorStateTracker.matcher = value;\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input('aria-describedby') userAriaDescribedBy!: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get value(): string {\n return this._signalBasedValueAccessor\n ? this._signalBasedValueAccessor.value()\n : this._inputValueAccessor.value;\n }\n set value(value: any) {\n if (value !== this.value) {\n if (this._signalBasedValueAccessor) {\n this._signalBasedValueAccessor.value.set(value);\n } else {\n this._inputValueAccessor.value = value;\n }\n\n this.stateChanges.next();\n }\n }\n\n /** Whether the element is readonly. */\n @Input()\n get readonly(): boolean {\n return this._readonly;\n }\n set readonly(value: BooleanInput) {\n this._readonly = coerceBooleanProperty(value);\n }\n private _readonly = false;\n\n /** Whether the input should remain interactive when it is disabled. */\n @Input({transform: booleanAttribute})\n disabledInteractive: boolean;\n\n /** Whether the input is in an error state. */\n get errorState() {\n return this._errorStateTracker.errorState;\n }\n set errorState(value: boolean) {\n this._errorStateTracker.errorState = value;\n }\n\n protected _neverEmptyInputTypes = [\n 'date',\n 'datetime',\n 'datetime-local',\n 'month',\n 'time',\n 'week',\n ].filter(t => getSupportedInputTypes().has(t));\n\n constructor(...args: unknown[]);\n\n constructor() {\n const parentForm = inject(NgForm, {optional: true});\n const parentFormGroup = inject(FormGroupDirective, {optional: true});\n const defaultErrorStateMatcher = inject(ErrorStateMatcher);\n const accessor = inject(MAT_INPUT_VALUE_ACCESSOR, {optional: true, self: true});\n\n const element = this._elementRef.nativeElement;\n const nodeName = element.nodeName.toLowerCase();\n\n if (accessor) {\n if (isSignal(accessor.value)) {\n this._signalBasedValueAccessor = accessor;\n } else {\n this._inputValueAccessor = accessor;\n }\n } else {\n // If no input value accessor was explicitly specified, use the element as the input value\n // accessor.\n this._inputValueAccessor = element;\n }\n\n this._previousNativeValue = this.value;\n\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n\n // On some versions of iOS the caret gets stuck in the wrong place when holding down the delete\n // key. In order to get around this we need to \"jiggle\" the caret loose. Since this bug only\n // exists on iOS, we only bother to install the listener on iOS.\n if (this._platform.IOS) {\n this._ngZone.runOutsideAngular(() => {\n this._cleanupIosKeyup = this._renderer.listen(element, 'keyup', this._iOSKeyupListener);\n });\n }\n\n this._errorStateTracker = new _ErrorStateTracker(\n defaultErrorStateMatcher,\n this.ngControl,\n parentFormGroup,\n parentForm,\n this.stateChanges,\n );\n this._isServer = !this._platform.isBrowser;\n this._isNativeSelect = nodeName === 'select';\n this._isTextarea = nodeName === 'textarea';\n this._isInFormField = !!this._formField;\n this.disabledInteractive = this._config?.disabledInteractive || false;\n\n if (this._isNativeSelect) {\n this.controlType = (element as HTMLSelectElement).multiple\n ? 'mat-native-select-multiple'\n : 'mat-native-select';\n }\n\n if (this._signalBasedValueAccessor) {\n effect(() => {\n // Read the value so the effect can register the dependency.\n this._signalBasedValueAccessor!.value();\n this.stateChanges.next();\n });\n }\n }\n\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(event => {\n this.autofilled = event.isAutofilled;\n this.stateChanges.next();\n });\n }\n }\n\n ngOnChanges() {\n this.stateChanges.next();\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n\n if (this._platform.isBrowser) {\n this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement);\n }\n\n this._cleanupIosKeyup?.();\n this._cleanupWebkitWheel?.();\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n\n // Since the input isn't a `ControlValueAccessor`, we don't have a good way of knowing when\n // the disabled state has changed. We can't use the `ngControl.statusChanges`, because it\n // won't fire if the input is disabled with `emitEvents = false`, despite the input becoming\n // disabled.\n if (this.ngControl.disabled !== null && this.ngControl.disabled !== this.disabled) {\n this.disabled = this.ngControl.disabled;\n this.stateChanges.next();\n }\n }\n\n // We need to dirty-check the native element's value, because there are some cases where\n // we won't be notified when it changes (e.g. the consumer isn't using forms or they're\n // updating the value using `emitEvent: false`).\n this._dirtyCheckNativeValue();\n\n // We need to dirty-check and set the placeholder attribute ourselves, because whether it's\n // present or not depends on a query which is prone to \"changed after checked\" errors.\n this._dirtyCheckPlaceholder();\n }\n\n /** Focuses the input. */\n focus(options?: FocusOptions): void {\n this._elementRef.nativeElement.focus(options);\n }\n\n /** Refreshes the error state of the input. */\n updateErrorState() {\n this._errorStateTracker.updateErrorState();\n }\n\n /** Callback for the cases where the focused state of the input changes. */\n _focusChanged(isFocused: boolean) {\n if (isFocused === this.focused) {\n return;\n }\n\n if (!this._isNativeSelect && isFocused && this.disabled && this.disabledInteractive) {\n const element = this._elementRef.nativeElement as HTMLInputElement;\n\n // Focusing an input that has text will cause all the text to be selected. Clear it since\n // the user won't be able to change it. This is based on the internal implementation.\n if (element.type === 'number') {\n // setSelectionRange doesn't work on number inputs so it needs to be set briefly to text.\n element.type = 'text';\n element.setSelectionRange(0, 0);\n element.type = 'number';\n } else {\n element.setSelectionRange(0, 0);\n }\n }\n\n this.focused = isFocused;\n this.stateChanges.next();\n }\n\n _onInput() {\n // This is a noop function and is used to let Angular know whenever the value changes.\n // Angular will run a new change detection each time the `input` event has been dispatched.\n // It's necessary that Angular recognizes the value change, because when floatingLabel\n // is set to false and Angular forms aren't used, the placeholder won't recognize the\n // value changes and will not disappear.\n // Listening to the input event wouldn't be necessary when the input is using the\n // FormsModule or ReactiveFormsModule, because Angular forms also listens to input events.\n }\n\n /** Does some manual dirty checking on the native input `value` property. */\n protected _dirtyCheckNativeValue() {\n const newValue = this._elementRef.nativeElement.value;\n\n if (this._previousNativeValue !== newValue) {\n this._previousNativeValue = newValue;\n this.stateChanges.next();\n }\n }\n\n /** Does some manual dirty checking on the native input `placeholder` attribute. */\n private _dirtyCheckPlaceholder() {\n const placeholder = this._getPlaceholder();\n if (placeholder !== this._previousPlaceholder) {\n const element = this._elementRef.nativeElement;\n this._previousPlaceholder = placeholder;\n placeholder\n ? element.setAttribute('placeholder', placeholder)\n : element.removeAttribute('placeholder');\n }\n }\n\n /** Gets the current placeholder of the form field. */\n protected _getPlaceholder(): string | null {\n return this.placeholder || null;\n }\n\n /** Make sure the input is a supported type. */\n protected _validateType() {\n if (\n MAT_INPUT_INVALID_TYPES.indexOf(this._type) > -1 &&\n (typeof ngDevMode === 'undefined' || ngDevMode)\n ) {\n throw getMatInputUnsupportedTypeError(this._type);\n }\n }\n\n /** Checks whether the input type is one of the types that are never empty. */\n protected _isNeverEmpty() {\n return this._neverEmptyInputTypes.indexOf(this._type) > -1;\n }\n\n /** Checks whether the input is invalid based on the native validation. */\n protected _isBadInput() {\n // The `validity` property won't be present on platform-server.\n let validity = (this._elementRef.nativeElement as HTMLInputElement).validity;\n return validity && validity.badInput;\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get empty(): boolean {\n return (\n !this._isNeverEmpty() &&\n !this._elementRef.nativeElement.value &&\n !this._isBadInput() &&\n !this.autofilled\n );\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get shouldLabelFloat(): boolean {\n if (this._isNativeSelect) {\n // For a single-selection `<select>`, the label should float when the selected option has\n // a non-empty display value. For a `<select multiple>`, the label *always* floats to avoid\n // overlapping the label with the options.\n const selectElement = this._elementRef.nativeElement as HTMLSelectElement;\n const firstOption: HTMLOptionElement | undefined = selectElement.options[0];\n\n // On most browsers the `selectedIndex` will always be 0, however on IE and Edge it'll be\n // -1 if the `value` is set to something, that isn't in the list of options, at a later point.\n return (\n this.focused ||\n selectElement.multiple ||\n !this.empty ||\n !!(selectElement.selectedIndex > -1 && firstOption && firstOption.label)\n );\n } else {\n return (this.focused && !this.disabled) || !this.empty;\n }\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get describedByIds(): string[] {\n const element = this._elementRef.nativeElement;\n const existingDescribedBy = element.getAttribute('aria-describedby');\n\n return existingDescribedBy?.split(' ') || [];\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n setDescribedByIds(ids: string[]) {\n const element = this._elementRef.nativeElement;\n\n if (ids.length) {\n element.setAttribute('aria-describedby', ids.join(' '));\n } else {\n element.removeAttribute('aria-describedby');\n }\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n // Do not re-focus the input element if the element is already focused. Otherwise it can happen\n // that someone clicks on a time input and the cursor resets to the \"hours\" field while the\n // \"minutes\" field was actually clicked. See: https://github.com/angular/components/issues/12849\n if (!this.focused) {\n this.focus();\n }\n }\n\n /** Whether the form control is a native select that is displayed inline. */\n _isInlineSelect(): boolean {\n const element = this._elementRef.nativeElement as HTMLSelectElement;\n return this._isNativeSelect && (element.multiple || element.size > 1);\n }\n\n private _iOSKeyupListener = (event: Event): void => {\n const el = event.target as HTMLInputElement;\n\n // Note: We specifically check for 0, rather than `!el.selectionStart`, because the two\n // indicate different things. If the value is 0, it means that the caret is at the start\n // of the input, whereas a value of `null` means that the input doesn't support\n // manipulating the selection range. Inputs that don't support setting the selection range\n // will throw an error so we want to avoid calling `setSelectionRange` on them. See:\n // https://html.spec.whatwg.org/multipage/input.html#do-not-apply\n if (!el.value && el.selectionStart === 0 && el.selectionEnd === 0) {\n // Note: Just setting `0, 0` doesn't fix the issue. Setting\n // `1, 1` fixes it for the first time that you type text and\n // then hold delete. Toggling to `1, 1` and then back to\n // `0, 0` seems to completely fix it.\n el.setSelectionRange(1, 1);\n el.setSelectionRange(0, 0);\n }\n };\n\n /** Gets the value to set on the `readonly` attribute. */\n protected _getReadonlyAttribute(): string | null {\n if (this._isNativeSelect) {\n return null;\n }\n\n if (this.readonly || (this.disabled && this.disabledInteractive)) {\n return 'true';\n }\n\n return null;\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 {BidiModule} from '@angular/cdk/bidi';\nimport {TextFieldModule} from '@angular/cdk/text-field';\nimport {NgModule} from '@angular/core';\nimport {MatFormFieldModule} from '../form-field';\nimport {MatInput} from './input';\n\n@NgModule({\n imports: [MatFormFieldModule, MatInput],\n exports: [MatInput, MatFormFieldModule, TextFieldModule, BidiModule],\n})\nexport class MatInputModule {}\n"],"names":["getMatInputUnsupportedTypeError","type","Error","MAT_INPUT_INVALID_TYPES","MAT_INPUT_CONFIG","InjectionToken","MatInput","_elementRef","inject","ElementRef","_platform","Platform","ngControl","NgControl","optional","self","_autofillMonitor","AutofillMonitor","_ngZone","NgZone","_formField","MAT_FORM_FIELD","_renderer","Renderer2","_uid","_IdGenerator","getId","_previousNativeValue","_inputValueAccessor","_signalBasedValueAccessor","_previousPlaceholder","_errorStateTracker","_config","_cleanupIosKeyup","_cleanupWebkitWheel","_isServer","_isNativeSelect","_isTextarea","_isInFormField","focused","stateChanges","Subject","controlType","autofilled","disabled","_disabled","value","coerceBooleanProperty","next","id","_id","placeholder","name","required","_required","control","hasValidator","Validators","_type","_validateType","getSupportedInputTypes","has","nativeElement","errorStateMatcher","matcher","userAriaDescribedBy","set","readonly","_readonly","disabledInteractive","errorState","_neverEmptyInputTypes","filter","t","constructor","parentForm","NgForm","parentFormGroup","FormGroupDirective","defaultErrorStateMatcher","ErrorStateMatcher","accessor","MAT_INPUT_VALUE_ACCESSOR","element","nodeName","toLowerCase","isSignal","IOS","runOutsideAngular","listen","_iOSKeyupListener","_ErrorStateTracker","isBrowser","multiple","effect","ngAfterViewInit","monitor","subscribe","event","isAutofilled","ngOnChanges","ngOnDestroy","complete","stopMonitoring","ngDoCheck","updateErrorState","_dirtyCheckNativeValue","_dirtyCheckPlaceholder","focus","options","_focusChanged","isFocused","setSelectionRange","_onInput","newValue","_getPlaceholder","setAttribute","removeAttribute","indexOf","ngDevMode","_isNeverEmpty","_isBadInput","validity","badInput","empty","shouldLabelFloat","selectElement","firstOption","selectedIndex","label","describedByIds","existingDescribedBy","getAttribute","split","setDescribedByIds","ids","length","join","onContainerClick","_isInlineSelect","size","el","target","selectionStart","selectionEnd","_getReadonlyAttribute","deps","i0","ɵɵFactoryTarget","Directive","ɵdir","ɵɵngDeclareDirective","minVersion","version","isStandalone","selector","inputs","booleanAttribute","host","listeners","properties","classAttribute","providers","provide","MatFormFieldControl","useExisting","exportAs","usesOnChanges","ngImport","decorators","args","Input","transform","MatInputModule","NgModule","imports","MatFormFieldModule","exports","TextFieldModule","BidiModule","ɵinj","ɵɵngDeclareInjector"],"mappings":"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"}
{"version":3,"file":"input.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/input/input-errors.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/input/input.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/input/input-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/** @docs-private */\nexport function getMatInputUnsupportedTypeError(type: string): Error {\n return Error(`Input type \"${type}\" isn't supported by matInput.`);\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 {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {getSupportedInputTypes, Platform} from '@angular/cdk/platform';\nimport {AutofillMonitor} from '@angular/cdk/text-field';\nimport {\n AfterViewInit,\n booleanAttribute,\n Directive,\n DoCheck,\n effect,\n ElementRef,\n inject,\n InjectionToken,\n Input,\n isSignal,\n NgZone,\n OnChanges,\n OnDestroy,\n Renderer2,\n WritableSignal,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {FormGroupDirective, NgControl, NgForm, Validators} from '@angular/forms';\nimport {ErrorStateMatcher, _ErrorStateTracker} from '../core';\nimport {MatFormFieldControl, MatFormField, MAT_FORM_FIELD} from '../form-field';\nimport {Subject} from 'rxjs';\nimport {getMatInputUnsupportedTypeError} from './input-errors';\nimport {MAT_INPUT_VALUE_ACCESSOR} from './input-value-accessor';\n\n// Invalid input type. Using one of these will throw an MatInputUnsupportedTypeError.\nconst MAT_INPUT_INVALID_TYPES = [\n 'button',\n 'checkbox',\n 'file',\n 'hidden',\n 'image',\n 'radio',\n 'range',\n 'reset',\n 'submit',\n];\n\n/** Object that can be used to configure the default options for the input. */\nexport interface MatInputConfig {\n /** Whether disabled inputs should be interactive. */\n disabledInteractive?: boolean;\n}\n\n/** Injection token that can be used to provide the default options for the input. */\nexport const MAT_INPUT_CONFIG = new InjectionToken<MatInputConfig>('MAT_INPUT_CONFIG');\n\n@Directive({\n selector: `input[matInput], textarea[matInput], select[matNativeControl],\n input[matNativeControl], textarea[matNativeControl]`,\n exportAs: 'matInput',\n host: {\n 'class': 'mat-mdc-input-element',\n // The BaseMatInput parent class adds `mat-input-element`, `mat-form-field-control` and\n // `mat-form-field-autofill-control` to the CSS class list, but this should not be added for\n // this MDC equivalent input.\n '[class.mat-input-server]': '_isServer',\n '[class.mat-mdc-form-field-textarea-control]': '_isInFormField && _isTextarea',\n '[class.mat-mdc-form-field-input-control]': '_isInFormField',\n '[class.mat-mdc-input-disabled-interactive]': 'disabledInteractive',\n '[class.mdc-text-field__input]': '_isInFormField',\n '[class.mat-mdc-native-select-inline]': '_isInlineSelect()',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[id]': 'id',\n '[disabled]': 'disabled && !disabledInteractive',\n '[required]': 'required',\n '[attr.name]': 'name || null',\n '[attr.readonly]': '_getReadonlyAttribute()',\n '[attr.aria-disabled]': 'disabled && disabledInteractive ? \"true\" : null',\n // Only mark the input as invalid for assistive technology if it has a value since the\n // state usually overlaps with `aria-required` when the input is empty and can be redundant.\n '[attr.aria-invalid]': '(empty && required) ? null : errorState',\n '[attr.aria-required]': 'required',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[attr.id]': 'id',\n '(focus)': '_focusChanged(true)',\n '(blur)': '_focusChanged(false)',\n '(input)': '_onInput()',\n },\n providers: [{provide: MatFormFieldControl, useExisting: MatInput}],\n})\nexport class MatInput\n implements MatFormFieldControl<any>, OnChanges, OnDestroy, AfterViewInit, DoCheck\n{\n protected _elementRef =\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\n protected _platform = inject(Platform);\n ngControl = inject(NgControl, {optional: true, self: true})!;\n private _autofillMonitor = inject(AutofillMonitor);\n private _ngZone = inject(NgZone);\n protected _formField? = inject<MatFormField>(MAT_FORM_FIELD, {optional: true});\n private _renderer = inject(Renderer2);\n\n protected _uid = inject(_IdGenerator).getId('mat-input-');\n protected _previousNativeValue: any;\n private _inputValueAccessor!: {value: any};\n private _signalBasedValueAccessor?: {value: WritableSignal<any>};\n private _previousPlaceholder: string | null = null;\n private _errorStateTracker: _ErrorStateTracker;\n private _config = inject(MAT_INPUT_CONFIG, {optional: true});\n private _cleanupIosKeyup: (() => void) | undefined;\n private _cleanupWebkitWheel: (() => void) | undefined;\n\n /** Whether the component is being rendered on the server. */\n readonly _isServer: boolean = false;\n\n /** Whether the component is a native html select. */\n readonly _isNativeSelect: boolean = false;\n\n /** Whether the component is a textarea. */\n readonly _isTextarea: boolean = false;\n\n /** Whether the input is inside of a form field. */\n readonly _isInFormField: boolean = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n focused: boolean = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n controlType: string = 'mat-input';\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n autofilled = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n\n // Browsers may not fire the blur event if the input is disabled too quickly.\n // Reset from here to ensure that the element doesn't become stuck.\n if (this.focused) {\n this.focused = false;\n this.stateChanges.next();\n }\n }\n protected _disabled = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n this._id = value || this._uid;\n }\n protected _id!: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input() placeholder!: string;\n\n /**\n * Name of the input.\n * @docs-private\n */\n @Input() name!: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get required(): boolean {\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\n }\n set required(value: BooleanInput) {\n this._required = coerceBooleanProperty(value);\n }\n protected _required: boolean | undefined;\n\n /** Input type of the element. */\n @Input()\n get type(): string {\n return this._type;\n }\n set type(value: string) {\n this._type = value || 'text';\n this._validateType();\n\n // When using Angular inputs, developers are no longer able to set the properties on the native\n // input element. To ensure that bindings for `type` work, we need to sync the setter\n // with the native property. Textarea elements don't support the type property or attribute.\n if (!this._isTextarea && getSupportedInputTypes().has(this._type)) {\n (this._elementRef.nativeElement as HTMLInputElement).type = this._type;\n }\n }\n protected _type = 'text';\n\n /** An object used to control when error messages are shown. */\n @Input()\n get errorStateMatcher() {\n return this._errorStateTracker.matcher;\n }\n set errorStateMatcher(value: ErrorStateMatcher) {\n this._errorStateTracker.matcher = value;\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input('aria-describedby') userAriaDescribedBy!: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get value(): string {\n return this._signalBasedValueAccessor\n ? this._signalBasedValueAccessor.value()\n : this._inputValueAccessor.value;\n }\n set value(value: any) {\n if (value !== this.value) {\n if (this._signalBasedValueAccessor) {\n this._signalBasedValueAccessor.value.set(value);\n } else {\n this._inputValueAccessor.value = value;\n }\n\n this.stateChanges.next();\n }\n }\n\n /** Whether the element is readonly. */\n @Input()\n get readonly(): boolean {\n return this._readonly;\n }\n set readonly(value: BooleanInput) {\n this._readonly = coerceBooleanProperty(value);\n }\n private _readonly = false;\n\n /** Whether the input should remain interactive when it is disabled. */\n @Input({transform: booleanAttribute})\n disabledInteractive: boolean;\n\n /** Whether the input is in an error state. */\n get errorState() {\n return this._errorStateTracker.errorState;\n }\n set errorState(value: boolean) {\n this._errorStateTracker.errorState = value;\n }\n\n protected _neverEmptyInputTypes = [\n 'date',\n 'datetime',\n 'datetime-local',\n 'month',\n 'time',\n 'week',\n ].filter(t => getSupportedInputTypes().has(t));\n\n constructor(...args: unknown[]);\n\n constructor() {\n const parentForm = inject(NgForm, {optional: true});\n const parentFormGroup = inject(FormGroupDirective, {optional: true});\n const defaultErrorStateMatcher = inject(ErrorStateMatcher);\n const accessor = inject(MAT_INPUT_VALUE_ACCESSOR, {optional: true, self: true});\n\n const element = this._elementRef.nativeElement;\n const nodeName = element.nodeName.toLowerCase();\n\n if (accessor) {\n if (isSignal(accessor.value)) {\n this._signalBasedValueAccessor = accessor;\n } else {\n this._inputValueAccessor = accessor;\n }\n } else {\n // If no input value accessor was explicitly specified, use the element as the input value\n // accessor.\n this._inputValueAccessor = element;\n }\n\n this._previousNativeValue = this.value;\n\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n\n // On some versions of iOS the caret gets stuck in the wrong place when holding down the delete\n // key. In order to get around this we need to \"jiggle\" the caret loose. Since this bug only\n // exists on iOS, we only bother to install the listener on iOS.\n if (this._platform.IOS) {\n this._ngZone.runOutsideAngular(() => {\n this._cleanupIosKeyup = this._renderer.listen(element, 'keyup', this._iOSKeyupListener);\n });\n }\n\n this._errorStateTracker = new _ErrorStateTracker(\n defaultErrorStateMatcher,\n this.ngControl,\n parentFormGroup,\n parentForm,\n this.stateChanges,\n );\n this._isServer = !this._platform.isBrowser;\n this._isNativeSelect = nodeName === 'select';\n this._isTextarea = nodeName === 'textarea';\n this._isInFormField = !!this._formField;\n this.disabledInteractive = this._config?.disabledInteractive || false;\n\n if (this._isNativeSelect) {\n this.controlType = (element as HTMLSelectElement).multiple\n ? 'mat-native-select-multiple'\n : 'mat-native-select';\n }\n\n if (this._signalBasedValueAccessor) {\n effect(() => {\n // Read the value so the effect can register the dependency.\n this._signalBasedValueAccessor!.value();\n this.stateChanges.next();\n });\n }\n }\n\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(event => {\n this.autofilled = event.isAutofilled;\n this.stateChanges.next();\n });\n }\n }\n\n ngOnChanges() {\n this.stateChanges.next();\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n\n if (this._platform.isBrowser) {\n this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement);\n }\n\n this._cleanupIosKeyup?.();\n this._cleanupWebkitWheel?.();\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n\n // Since the input isn't a `ControlValueAccessor`, we don't have a good way of knowing when\n // the disabled state has changed. We can't use the `ngControl.statusChanges`, because it\n // won't fire if the input is disabled with `emitEvents = false`, despite the input becoming\n // disabled.\n if (this.ngControl.disabled !== null && this.ngControl.disabled !== this.disabled) {\n this.disabled = this.ngControl.disabled;\n this.stateChanges.next();\n }\n }\n\n // We need to dirty-check the native element's value, because there are some cases where\n // we won't be notified when it changes (e.g. the consumer isn't using forms or they're\n // updating the value using `emitEvent: false`).\n this._dirtyCheckNativeValue();\n\n // We need to dirty-check and set the placeholder attribute ourselves, because whether it's\n // present or not depends on a query which is prone to \"changed after checked\" errors.\n this._dirtyCheckPlaceholder();\n }\n\n /** Focuses the input. */\n focus(options?: FocusOptions): void {\n this._elementRef.nativeElement.focus(options);\n }\n\n /** Refreshes the error state of the input. */\n updateErrorState() {\n this._errorStateTracker.updateErrorState();\n }\n\n /** Callback for the cases where the focused state of the input changes. */\n _focusChanged(isFocused: boolean) {\n if (isFocused === this.focused) {\n return;\n }\n\n if (!this._isNativeSelect && isFocused && this.disabled && this.disabledInteractive) {\n const element = this._elementRef.nativeElement as HTMLInputElement;\n\n // Focusing an input that has text will cause all the text to be selected. Clear it since\n // the user won't be able to change it. This is based on the internal implementation.\n if (element.type === 'number') {\n // setSelectionRange doesn't work on number inputs so it needs to be set briefly to text.\n element.type = 'text';\n element.setSelectionRange(0, 0);\n element.type = 'number';\n } else {\n element.setSelectionRange(0, 0);\n }\n }\n\n this.focused = isFocused;\n this.stateChanges.next();\n }\n\n _onInput() {\n // This is a noop function and is used to let Angular know whenever the value changes.\n // Angular will run a new change detection each time the `input` event has been dispatched.\n // It's necessary that Angular recognizes the value change, because when floatingLabel\n // is set to false and Angular forms aren't used, the placeholder won't recognize the\n // value changes and will not disappear.\n // Listening to the input event wouldn't be necessary when the input is using the\n // FormsModule or ReactiveFormsModule, because Angular forms also listens to input events.\n }\n\n /** Does some manual dirty checking on the native input `value` property. */\n protected _dirtyCheckNativeValue() {\n const newValue = this._elementRef.nativeElement.value;\n\n if (this._previousNativeValue !== newValue) {\n this._previousNativeValue = newValue;\n this.stateChanges.next();\n }\n }\n\n /** Does some manual dirty checking on the native input `placeholder` attribute. */\n private _dirtyCheckPlaceholder() {\n const placeholder = this._getPlaceholder();\n if (placeholder !== this._previousPlaceholder) {\n const element = this._elementRef.nativeElement;\n this._previousPlaceholder = placeholder;\n placeholder\n ? element.setAttribute('placeholder', placeholder)\n : element.removeAttribute('placeholder');\n }\n }\n\n /** Gets the current placeholder of the form field. */\n protected _getPlaceholder(): string | null {\n return this.placeholder || null;\n }\n\n /** Make sure the input is a supported type. */\n protected _validateType() {\n if (\n MAT_INPUT_INVALID_TYPES.indexOf(this._type) > -1 &&\n (typeof ngDevMode === 'undefined' || ngDevMode)\n ) {\n throw getMatInputUnsupportedTypeError(this._type);\n }\n }\n\n /** Checks whether the input type is one of the types that are never empty. */\n protected _isNeverEmpty() {\n return this._neverEmptyInputTypes.indexOf(this._type) > -1;\n }\n\n /** Checks whether the input is invalid based on the native validation. */\n protected _isBadInput() {\n // The `validity` property won't be present on platform-server.\n let validity = (this._elementRef.nativeElement as HTMLInputElement).validity;\n return validity && validity.badInput;\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get empty(): boolean {\n return (\n !this._isNeverEmpty() &&\n !this._elementRef.nativeElement.value &&\n !this._isBadInput() &&\n !this.autofilled\n );\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get shouldLabelFloat(): boolean {\n if (this._isNativeSelect) {\n // For a single-selection `<select>`, the label should float when the selected option has\n // a non-empty display value. For a `<select multiple>`, the label *always* floats to avoid\n // overlapping the label with the options.\n const selectElement = this._elementRef.nativeElement as HTMLSelectElement;\n const firstOption: HTMLOptionElement | undefined = selectElement.options[0];\n\n // On most browsers the `selectedIndex` will always be 0, however on IE and Edge it'll be\n // -1 if the `value` is set to something, that isn't in the list of options, at a later point.\n return (\n this.focused ||\n selectElement.multiple ||\n !this.empty ||\n !!(selectElement.selectedIndex > -1 && firstOption && firstOption.label)\n );\n } else {\n return (this.focused && !this.disabled) || !this.empty;\n }\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get describedByIds(): string[] {\n const element = this._elementRef.nativeElement;\n const existingDescribedBy = element.getAttribute('aria-describedby');\n\n return existingDescribedBy?.split(' ') || [];\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n setDescribedByIds(ids: string[]) {\n const element = this._elementRef.nativeElement;\n\n if (ids.length) {\n element.setAttribute('aria-describedby', ids.join(' '));\n } else {\n element.removeAttribute('aria-describedby');\n }\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n // Do not re-focus the input element if the element is already focused. Otherwise it can happen\n // that someone clicks on a time input and the cursor resets to the \"hours\" field while the\n // \"minutes\" field was actually clicked. See: https://github.com/angular/components/issues/12849\n if (!this.focused) {\n this.focus();\n }\n }\n\n /** Whether the form control is a native select that is displayed inline. */\n _isInlineSelect(): boolean {\n const element = this._elementRef.nativeElement as HTMLSelectElement;\n return this._isNativeSelect && (element.multiple || element.size > 1);\n }\n\n private _iOSKeyupListener = (event: Event): void => {\n const el = event.target as HTMLInputElement;\n\n // Note: We specifically check for 0, rather than `!el.selectionStart`, because the two\n // indicate different things. If the value is 0, it means that the caret is at the start\n // of the input, whereas a value of `null` means that the input doesn't support\n // manipulating the selection range. Inputs that don't support setting the selection range\n // will throw an error so we want to avoid calling `setSelectionRange` on them. See:\n // https://html.spec.whatwg.org/multipage/input.html#do-not-apply\n if (!el.value && el.selectionStart === 0 && el.selectionEnd === 0) {\n // Note: Just setting `0, 0` doesn't fix the issue. Setting\n // `1, 1` fixes it for the first time that you type text and\n // then hold delete. Toggling to `1, 1` and then back to\n // `0, 0` seems to completely fix it.\n el.setSelectionRange(1, 1);\n el.setSelectionRange(0, 0);\n }\n };\n\n /** Gets the value to set on the `readonly` attribute. */\n protected _getReadonlyAttribute(): string | null {\n if (this._isNativeSelect) {\n return null;\n }\n\n if (this.readonly || (this.disabled && this.disabledInteractive)) {\n return 'true';\n }\n\n return null;\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 {BidiModule} from '@angular/cdk/bidi';\nimport {TextFieldModule} from '@angular/cdk/text-field';\nimport {NgModule} from '@angular/core';\nimport {MatFormFieldModule} from '../form-field';\nimport {MatInput} from './input';\n\n@NgModule({\n imports: [MatFormFieldModule, MatInput],\n exports: [MatInput, MatFormFieldModule, TextFieldModule, BidiModule],\n})\nexport class MatInputModule {}\n"],"names":["getMatInputUnsupportedTypeError","type","Error","MAT_INPUT_INVALID_TYPES","MAT_INPUT_CONFIG","InjectionToken","MatInput","_elementRef","inject","ElementRef","_platform","Platform","ngControl","NgControl","optional","self","_autofillMonitor","AutofillMonitor","_ngZone","NgZone","_formField","MAT_FORM_FIELD","_renderer","Renderer2","_uid","_IdGenerator","getId","_previousNativeValue","_inputValueAccessor","_signalBasedValueAccessor","_previousPlaceholder","_errorStateTracker","_config","_cleanupIosKeyup","_cleanupWebkitWheel","_isServer","_isNativeSelect","_isTextarea","_isInFormField","focused","stateChanges","Subject","controlType","autofilled","disabled","_disabled","value","coerceBooleanProperty","next","id","_id","placeholder","name","required","_required","control","hasValidator","Validators","_type","_validateType","getSupportedInputTypes","has","nativeElement","errorStateMatcher","matcher","userAriaDescribedBy","set","readonly","_readonly","disabledInteractive","errorState","_neverEmptyInputTypes","filter","t","constructor","parentForm","NgForm","parentFormGroup","FormGroupDirective","defaultErrorStateMatcher","ErrorStateMatcher","accessor","MAT_INPUT_VALUE_ACCESSOR","element","nodeName","toLowerCase","isSignal","IOS","runOutsideAngular","listen","_iOSKeyupListener","_ErrorStateTracker","isBrowser","multiple","effect","ngAfterViewInit","monitor","subscribe","event","isAutofilled","ngOnChanges","ngOnDestroy","complete","stopMonitoring","ngDoCheck","updateErrorState","_dirtyCheckNativeValue","_dirtyCheckPlaceholder","focus","options","_focusChanged","isFocused","setSelectionRange","_onInput","newValue","_getPlaceholder","setAttribute","removeAttribute","indexOf","ngDevMode","_isNeverEmpty","_isBadInput","validity","badInput","empty","shouldLabelFloat","selectElement","firstOption","selectedIndex","label","describedByIds","existingDescribedBy","getAttribute","split","setDescribedByIds","ids","length","join","onContainerClick","_isInlineSelect","size","el","target","selectionStart","selectionEnd","_getReadonlyAttribute","deps","i0","ɵɵFactoryTarget","Directive","ɵdir","ɵɵngDeclareDirective","minVersion","version","isStandalone","selector","inputs","booleanAttribute","host","listeners","properties","classAttribute","providers","provide","MatFormFieldControl","useExisting","exportAs","usesOnChanges","ngImport","decorators","args","Input","transform","MatInputModule","NgModule","imports","MatFormFieldModule","exports","TextFieldModule","BidiModule","ɵinj","ɵɵngDeclareInjector"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"list-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/list/testing/list-item-harness-base.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/list/testing/list-harness-base.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/list/testing/action-list-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/list/testing/list-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/list/testing/nav-list-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/list/testing/selection-list-harness.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\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessPredicate,\n parallel,\n} from '@angular/cdk/testing';\nimport {BaseListItemHarnessFilters, SubheaderHarnessFilters} from './list-harness-filters';\n\nconst iconSelector = '.mat-mdc-list-item-icon';\nconst avatarSelector = '.mat-mdc-list-item-avatar';\n\n/**\n * Gets a `HarnessPredicate` that applies the given `BaseListItemHarnessFilters` to the given\n * list item harness.\n * @template H The type of list item harness to create a predicate for.\n * @param harnessType A constructor for a list item harness.\n * @param options An instance of `BaseListItemHarnessFilters` to apply.\n * @return A `HarnessPredicate` for the given harness type with the given options applied.\n */\nexport function getListItemPredicate<H extends MatListItemHarnessBase>(\n harnessType: ComponentHarnessConstructor<H>,\n options: BaseListItemHarnessFilters,\n): HarnessPredicate<H> {\n return new HarnessPredicate(harnessType, options)\n .addOption('text', options.text, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getText(), text),\n )\n .addOption('fullText', options.fullText, (harness, fullText) =>\n HarnessPredicate.stringMatches(harness.getFullText(), fullText),\n )\n .addOption('title', options.title, (harness, title) =>\n HarnessPredicate.stringMatches(harness.getTitle(), title),\n )\n .addOption('secondaryText', options.secondaryText, (harness, secondaryText) =>\n HarnessPredicate.stringMatches(harness.getSecondaryText(), secondaryText),\n )\n .addOption('tertiaryText', options.tertiaryText, (harness, tertiaryText) =>\n HarnessPredicate.stringMatches(harness.getTertiaryText(), tertiaryText),\n );\n}\n\n/** Harness for interacting with a list subheader. */\nexport class MatSubheaderHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-subheader';\n\n static with(options: SubheaderHarnessFilters = {}): HarnessPredicate<MatSubheaderHarness> {\n return new HarnessPredicate(MatSubheaderHarness, options).addOption(\n 'text',\n options.text,\n (harness, text) => HarnessPredicate.stringMatches(harness.getText(), text),\n );\n }\n\n /** Gets the full text content of the list item (including text from any font icons). */\n async getText(): Promise<string> {\n return (await this.host()).text();\n }\n}\n\n/** Selectors for the various list item sections that may contain user content. */\nexport enum MatListItemSection {\n CONTENT = '.mdc-list-item__content',\n}\n\n/** Enum describing the possible variants of a list item. */\nexport enum MatListItemType {\n ONE_LINE_ITEM,\n TWO_LINE_ITEM,\n THREE_LINE_ITEM,\n}\n\n/**\n * Shared behavior among the harnesses for the various `MatListItem` flavors.\n * @docs-private\n */\nexport abstract class MatListItemHarnessBase extends ContentContainerComponentHarness<MatListItemSection> {\n private _lines = this.locatorForAll('.mat-mdc-list-item-line');\n private _primaryText = this.locatorFor('.mdc-list-item__primary-text');\n private _avatar = this.locatorForOptional('.mat-mdc-list-item-avatar');\n private _icon = this.locatorForOptional('.mat-mdc-list-item-icon');\n private _unscopedTextContent = this.locatorFor('.mat-mdc-list-item-unscoped-content');\n\n /** Gets the type of the list item, currently describing how many lines there are. */\n async getType(): Promise<MatListItemType> {\n const host = await this.host();\n const [isOneLine, isTwoLine] = await parallel(() => [\n host.hasClass('mdc-list-item--with-one-line'),\n host.hasClass('mdc-list-item--with-two-lines'),\n ]);\n if (isOneLine) {\n return MatListItemType.ONE_LINE_ITEM;\n } else if (isTwoLine) {\n return MatListItemType.TWO_LINE_ITEM;\n } else {\n return MatListItemType.THREE_LINE_ITEM;\n }\n }\n\n /**\n * Gets the full text content of the list item, excluding text\n * from icons and avatars.\n *\n * @deprecated Use the `getFullText` method instead.\n * @breaking-change 16.0.0\n */\n async getText(): Promise<string> {\n return this.getFullText();\n }\n\n /**\n * Gets the full text content of the list item, excluding text\n * from icons and avatars.\n */\n async getFullText(): Promise<string> {\n return (await this.host()).text({exclude: `${iconSelector}, ${avatarSelector}`});\n }\n\n /** Gets the title of the list item. */\n async getTitle(): Promise<string> {\n return (await this._primaryText()).text();\n }\n\n /** Whether the list item is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).hasClass('mdc-list-item--disabled');\n }\n\n /**\n * Gets the secondary line text of the list item. Null if the list item\n * does not have a secondary line.\n */\n async getSecondaryText(): Promise<string | null> {\n const type = await this.getType();\n if (type === MatListItemType.ONE_LINE_ITEM) {\n return null;\n }\n\n const [lines, unscopedTextContent] = await parallel(() => [\n this._lines(),\n this._unscopedTextContent(),\n ]);\n\n // If there is no explicit line for the secondary text, the unscoped text content\n // is rendered as the secondary text (with potential text wrapping enabled).\n if (lines.length >= 1) {\n return lines[0].text();\n } else {\n return unscopedTextContent.text();\n }\n }\n\n /**\n * Gets the tertiary line text of the list item. Null if the list item\n * does not have a tertiary line.\n */\n async getTertiaryText(): Promise<string | null> {\n const type = await this.getType();\n if (type !== MatListItemType.THREE_LINE_ITEM) {\n return null;\n }\n\n const [lines, unscopedTextContent] = await parallel(() => [\n this._lines(),\n this._unscopedTextContent(),\n ]);\n\n // First we check if there is an explicit line for the tertiary text. If so, we return it.\n // If there is at least an explicit secondary line though, then we know that the unscoped\n // text content corresponds to the tertiary line. If there are no explicit lines at all,\n // we know that the unscoped text content from the secondary text just wraps into the third\n // line, but there *no* actual dedicated tertiary text.\n if (lines.length === 2) {\n return lines[1].text();\n } else if (lines.length === 1) {\n return unscopedTextContent.text();\n }\n return null;\n }\n\n /** Whether this list item has an avatar. */\n async hasAvatar(): Promise<boolean> {\n return !!(await this._avatar());\n }\n\n /** Whether this list item has an icon. */\n async hasIcon(): Promise<boolean> {\n return !!(await this._icon());\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 ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n parallel,\n} from '@angular/cdk/testing';\nimport {DividerHarnessFilters, MatDividerHarness} from '../../divider/testing';\nimport {BaseListItemHarnessFilters, SubheaderHarnessFilters} from './list-harness-filters';\nimport {MatSubheaderHarness} from './list-item-harness-base';\n\n/** Represents a section of a list falling under a specific header. */\nexport interface ListSection<I> {\n /** The heading for this list section. `undefined` if there is no heading. */\n heading?: string;\n\n /** The items in this list section. */\n items: I[];\n}\n\n/**\n * Shared behavior among the harnesses for the various `MatList` flavors.\n * @template T A constructor type for a list item harness type used by this list harness.\n * @template C The list item harness type that `T` constructs.\n * @template F The filter type used filter list item harness of type `C`.\n * @docs-private\n */\nexport abstract class MatListHarnessBase<\n T extends ComponentHarnessConstructor<C> & {with: (options?: F) => HarnessPredicate<C>},\n C extends ComponentHarness,\n F extends BaseListItemHarnessFilters,\n> extends ComponentHarness {\n protected _itemHarness!: T;\n\n /**\n * Gets a list of harnesses representing the items in this list.\n * @param filters Optional filters used to narrow which harnesses are included\n * @return The list of items matching the given filters.\n */\n async getItems(filters?: F): Promise<C[]> {\n return this.locatorForAll(this._itemHarness.with(filters))();\n }\n\n /**\n * Gets a list of `ListSection` representing the list items grouped by subheaders. If the list has\n * no subheaders it is represented as a single `ListSection` with an undefined `heading` property.\n * @param filters Optional filters used to narrow which list item harnesses are included\n * @return The list of items matching the given filters, grouped into sections by subheader.\n */\n async getItemsGroupedBySubheader(filters?: F): Promise<ListSection<C>[]> {\n type Section = {items: C[]; heading?: Promise<string>};\n const listSections: Section[] = [];\n let currentSection: Section = {items: []};\n const itemsAndSubheaders = await this.getItemsWithSubheadersAndDividers({\n item: filters,\n divider: false,\n });\n\n for (const itemOrSubheader of itemsAndSubheaders) {\n if (itemOrSubheader instanceof MatSubheaderHarness) {\n if (currentSection.heading !== undefined || currentSection.items.length) {\n listSections.push(currentSection);\n }\n currentSection = {heading: itemOrSubheader.getText(), items: []};\n } else {\n currentSection.items.push(itemOrSubheader);\n }\n }\n if (\n currentSection.heading !== undefined ||\n currentSection.items.length ||\n !listSections.length\n ) {\n listSections.push(currentSection);\n }\n\n // Concurrently wait for all sections to resolve their heading if present.\n return parallel(() =>\n listSections.map(async s => ({items: s.items, heading: await s.heading})),\n );\n }\n\n /**\n * Gets a list of sub-lists representing the list items grouped by dividers. If the list has no\n * dividers it is represented as a list with a single sub-list.\n * @param filters Optional filters used to narrow which list item harnesses are included\n * @return The list of items matching the given filters, grouped into sub-lists by divider.\n */\n async getItemsGroupedByDividers(filters?: F): Promise<C[][]> {\n const listSections: C[][] = [[]];\n const itemsAndDividers = await this.getItemsWithSubheadersAndDividers({\n item: filters,\n subheader: false,\n });\n for (const itemOrDivider of itemsAndDividers) {\n if (itemOrDivider instanceof MatDividerHarness) {\n listSections.push([]);\n } else {\n listSections[listSections.length - 1].push(itemOrDivider);\n }\n }\n return listSections;\n }\n\n /**\n * Gets a list of harnesses representing all of the items, subheaders, and dividers\n * (in the order they appear in the list). Use `instanceof` to check which type of harness a given\n * item is.\n * @param filters Optional filters used to narrow which list items, subheaders, and dividers are\n * included. A value of `false` for the `item`, `subheader`, or `divider` properties indicates\n * that the respective harness type should be omitted completely.\n * @return The list of harnesses representing the items, subheaders, and dividers matching the\n * given filters.\n */\n getItemsWithSubheadersAndDividers(filters: {\n item: false;\n subheader: false;\n divider: false;\n }): Promise<[]>;\n getItemsWithSubheadersAndDividers(filters: {\n item?: F | false;\n subheader: false;\n divider: false;\n }): Promise<C[]>;\n getItemsWithSubheadersAndDividers(filters: {\n item: false;\n subheader?: SubheaderHarnessFilters | false;\n divider: false;\n }): Promise<MatSubheaderHarness[]>;\n getItemsWithSubheadersAndDividers(filters: {\n item: false;\n subheader: false;\n divider?: DividerHarnessFilters | false;\n }): Promise<MatDividerHarness[]>;\n getItemsWithSubheadersAndDividers(filters: {\n item?: F | false;\n subheader?: SubheaderHarnessFilters | false;\n divider: false;\n }): Promise<(C | MatSubheaderHarness)[]>;\n getItemsWithSubheadersAndDividers(filters: {\n item?: F | false;\n subheader: false;\n divider?: false | DividerHarnessFilters;\n }): Promise<(C | MatDividerHarness)[]>;\n getItemsWithSubheadersAndDividers(filters: {\n item: false;\n subheader?: false | SubheaderHarnessFilters;\n divider?: false | DividerHarnessFilters;\n }): Promise<(MatSubheaderHarness | MatDividerHarness)[]>;\n getItemsWithSubheadersAndDividers(filters?: {\n item?: F | false;\n subheader?: SubheaderHarnessFilters | false;\n divider?: DividerHarnessFilters | false;\n }): Promise<(C | MatSubheaderHarness | MatDividerHarness)[]>;\n async getItemsWithSubheadersAndDividers(\n filters: {\n item?: F | false;\n subheader?: SubheaderHarnessFilters | false;\n divider?: DividerHarnessFilters | false;\n } = {},\n ): Promise<(C | MatSubheaderHarness | MatDividerHarness)[]> {\n const query = [];\n if (filters.item !== false) {\n query.push(this._itemHarness.with(filters.item || ({} as F)));\n }\n if (filters.subheader !== false) {\n query.push(MatSubheaderHarness.with(filters.subheader));\n }\n if (filters.divider !== false) {\n query.push(MatDividerHarness.with(filters.divider));\n }\n return this.locatorForAll(...query)();\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 {ComponentHarnessConstructor, HarnessPredicate} from '@angular/cdk/testing';\nimport {MatListHarnessBase} from './list-harness-base';\nimport {ActionListHarnessFilters, ActionListItemHarnessFilters} from './list-harness-filters';\nimport {getListItemPredicate, MatListItemHarnessBase} from './list-item-harness-base';\n\n/** Harness for interacting with a action-list in tests. */\nexport class MatActionListHarness extends MatListHarnessBase<\n typeof MatActionListItemHarness,\n MatActionListItemHarness,\n ActionListItemHarnessFilters\n> {\n /** The selector for the host element of a `MatActionList` instance. */\n static hostSelector = '.mat-mdc-action-list';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for an action list with specific\n * attributes.\n * @param options Options for filtering which action list instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatActionListHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ActionListHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n override _itemHarness = MatActionListItemHarness;\n}\n\n/** Harness for interacting with an action list item. */\nexport class MatActionListItemHarness extends MatListItemHarnessBase {\n /** The selector for the host element of a `MatListItem` instance. */\n static hostSelector = `${MatActionListHarness.hostSelector} .mat-mdc-list-item`;\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a list item with specific\n * attributes.\n * @param options Options for filtering which action list item instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatActionListItemHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ActionListItemHarnessFilters = {},\n ): HarnessPredicate<T> {\n return getListItemPredicate(this, options);\n }\n\n /** Clicks on the action list item. */\n async click(): Promise<void> {\n return (await this.host()).click();\n }\n\n /** Focuses the action list item. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Blurs the action list item. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the action list item is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\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 {ComponentHarnessConstructor, HarnessPredicate} from '@angular/cdk/testing';\nimport {MatListHarnessBase} from './list-harness-base';\nimport {ListHarnessFilters, ListItemHarnessFilters} from './list-harness-filters';\nimport {getListItemPredicate, MatListItemHarnessBase} from './list-item-harness-base';\n\n/** Harness for interacting with a list in tests. */\nexport class MatListHarness extends MatListHarnessBase<\n typeof MatListItemHarness,\n MatListItemHarness,\n ListItemHarnessFilters\n> {\n /** The selector for the host element of a `MatList` instance. */\n static hostSelector = '.mat-mdc-list';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a list with specific attributes.\n * @param options Options for filtering which list instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatListHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ListHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n override _itemHarness = MatListItemHarness;\n}\n\n/** Harness for interacting with a list item. */\nexport class MatListItemHarness extends MatListItemHarnessBase {\n /** The selector for the host element of a `MatListItem` instance. */\n static hostSelector = `${MatListHarness.hostSelector} .mat-mdc-list-item`;\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a list item with specific attributes.\n * @param options Options for filtering which list item instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatListItemHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ListItemHarnessFilters = {},\n ): HarnessPredicate<T> {\n return getListItemPredicate(this, options);\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 {ComponentHarnessConstructor, HarnessPredicate} from '@angular/cdk/testing';\nimport {MatListHarnessBase} from './list-harness-base';\nimport {NavListHarnessFilters, NavListItemHarnessFilters} from './list-harness-filters';\nimport {getListItemPredicate, MatListItemHarnessBase} from './list-item-harness-base';\n\n/** Harness for interacting with a mat-nav-list in tests. */\nexport class MatNavListHarness extends MatListHarnessBase<\n typeof MatNavListItemHarness,\n MatNavListItemHarness,\n NavListItemHarnessFilters\n> {\n /** The selector for the host element of a `MatNavList` instance. */\n static hostSelector = '.mat-mdc-nav-list';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a nav list with specific\n * attributes.\n * @param options Options for filtering which nav list instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatNavListHarness>(\n this: ComponentHarnessConstructor<T>,\n options: NavListHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n override _itemHarness = MatNavListItemHarness;\n}\n\n/** Harness for interacting with a nav-list item. */\nexport class MatNavListItemHarness extends MatListItemHarnessBase {\n /** The selector for the host element of a `MatListItem` instance. */\n static hostSelector = `${MatNavListHarness.hostSelector} .mat-mdc-list-item`;\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a nav list item with specific\n * attributes.\n * @param options Options for filtering which nav list item instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatNavListItemHarness>(\n this: ComponentHarnessConstructor<T>,\n options: NavListItemHarnessFilters = {},\n ): HarnessPredicate<T> {\n return getListItemPredicate(this, options)\n .addOption('href', options.href, async (harness, href) =>\n HarnessPredicate.stringMatches(harness.getHref(), href),\n )\n .addOption(\n 'activated',\n options.activated,\n async (harness, activated) => (await harness.isActivated()) === activated,\n );\n }\n\n /** Gets the href for this nav list item. */\n async getHref(): Promise<string | null> {\n return (await this.host()).getAttribute('href');\n }\n\n /** Clicks on the nav list item. */\n async click(): Promise<void> {\n return (await this.host()).click();\n }\n\n /** Focuses the nav list item. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Blurs the nav list item. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the nav list item is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /** Whether the list item is activated. Should only be used for nav list items. */\n async isActivated(): Promise<boolean> {\n return (await this.host()).hasClass('mdc-list-item--activated');\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 {ComponentHarnessConstructor, HarnessPredicate, parallel} from '@angular/cdk/testing';\nimport {MatListOptionTogglePosition} from '../../list';\nimport {MatListHarnessBase} from './list-harness-base';\nimport {\n ListItemHarnessFilters,\n ListOptionHarnessFilters,\n SelectionListHarnessFilters,\n} from './list-harness-filters';\nimport {getListItemPredicate, MatListItemHarnessBase} from './list-item-harness-base';\n\n/** Harness for interacting with a selection-list in tests. */\nexport class MatSelectionListHarness extends MatListHarnessBase<\n typeof MatListOptionHarness,\n MatListOptionHarness,\n ListOptionHarnessFilters\n> {\n /** The selector for the host element of a `MatSelectionList` instance. */\n static hostSelector = '.mat-mdc-selection-list';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a selection list with specific\n * attributes.\n * @param options Options for filtering which selection list instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatSelectionListHarness>(\n this: ComponentHarnessConstructor<T>,\n options: SelectionListHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n override _itemHarness = MatListOptionHarness;\n\n /** Whether the selection list is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-disabled')) === 'true';\n }\n\n /**\n * Selects all items matching any of the given filters.\n * @param filters Filters that specify which items should be selected.\n */\n async selectItems(...filters: ListOptionHarnessFilters[]): Promise<void> {\n const items = await this._getItems(filters);\n await parallel(() => items.map(item => item.select()));\n }\n\n /**\n * Deselects all items matching any of the given filters.\n * @param filters Filters that specify which items should be deselected.\n */\n async deselectItems(...filters: ListItemHarnessFilters[]): Promise<void> {\n const items = await this._getItems(filters);\n await parallel(() => items.map(item => item.deselect()));\n }\n\n /** Gets all items matching the given list of filters. */\n private async _getItems(filters: ListOptionHarnessFilters[]): Promise<MatListOptionHarness[]> {\n if (!filters.length) {\n return this.getItems();\n }\n const matches = await parallel(() =>\n filters.map(filter => this.locatorForAll(MatListOptionHarness.with(filter))()),\n );\n return matches.reduce((result, current) => [...result, ...current], []);\n }\n}\n\n/** Harness for interacting with a list option. */\nexport class MatListOptionHarness extends MatListItemHarnessBase {\n /** The selector for the host element of a `MatListOption` instance. */\n static hostSelector = '.mat-mdc-list-option';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a list option with specific\n * attributes.\n * @param options Options for filtering which list option instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatListOptionHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ListOptionHarnessFilters = {},\n ): HarnessPredicate<T> {\n return getListItemPredicate(this, options).addOption(\n 'is selected',\n options.selected,\n async (harness, selected) => (await harness.isSelected()) === selected,\n );\n }\n\n private _beforeCheckbox = this.locatorForOptional('.mdc-list-item__start .mdc-checkbox');\n private _beforeRadio = this.locatorForOptional('.mdc-list-item__start .mdc-radio');\n\n /** Gets the position of the checkbox relative to the list option content. */\n async getCheckboxPosition(): Promise<MatListOptionTogglePosition> {\n return (await this._beforeCheckbox()) !== null ? 'before' : 'after';\n }\n\n /** Gets the position of the radio relative to the list option content. */\n async getRadioPosition(): Promise<MatListOptionTogglePosition> {\n return (await this._beforeRadio()) !== null ? 'before' : 'after';\n }\n\n /** Whether the list option is selected. */\n async isSelected(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-selected')) === 'true';\n }\n\n /** Focuses the list option. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Blurs the list option. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the list option is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /** Toggles the checked state of the checkbox. */\n async toggle() {\n return (await this.host()).click();\n }\n\n /**\n * Puts the list option in a checked state by toggling it if it is currently\n * unchecked, or doing nothing if it is already checked.\n */\n async select() {\n if (!(await this.isSelected())) {\n return this.toggle();\n }\n }\n\n /**\n * Puts the list option in an unchecked state by toggling it if it is currently\n * checked, or doing nothing if it is already unchecked.\n */\n async deselect() {\n if (await this.isSelected()) {\n return this.toggle();\n }\n }\n}\n"],"names":["iconSelector","avatarSelector","getListItemPredicate","harnessType","options","HarnessPredicate","addOption","text","harness","stringMatches","getText","fullText","getFullText","title","getTitle","secondaryText","getSecondaryText","tertiaryText","getTertiaryText","MatSubheaderHarness","ComponentHarness","hostSelector","with","host","MatListItemSection","MatListItemType","MatListItemHarnessBase","ContentContainerComponentHarness","_lines","locatorForAll","_primaryText","locatorFor","_avatar","locatorForOptional","_icon","_unscopedTextContent","getType","isOneLine","isTwoLine","parallel","hasClass","ONE_LINE_ITEM","TWO_LINE_ITEM","THREE_LINE_ITEM","exclude","isDisabled","type","lines","unscopedTextContent","length","hasAvatar","hasIcon","MatListHarnessBase","_itemHarness","getItems","filters","getItemsGroupedBySubheader","listSections","currentSection","items","itemsAndSubheaders","getItemsWithSubheadersAndDividers","item","divider","itemOrSubheader","heading","undefined","push","map","s","getItemsGroupedByDividers","itemsAndDividers","subheader","itemOrDivider","MatDividerHarness","query","MatActionListHarness","MatActionListItemHarness","click","focus","blur","isFocused","MatListHarness","MatListItemHarness","MatNavListHarness","MatNavListItemHarness","href","getHref","activated","isActivated","getAttribute","MatSelectionListHarness","MatListOptionHarness","selectItems","_getItems","select","deselectItems","deselect","matches","filter","reduce","result","current","selected","isSelected","_beforeCheckbox","_beforeRadio","getCheckboxPosition","getRadioPosition","toggle"],"mappings":"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"}
{"version":3,"file":"list-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/list/testing/list-item-harness-base.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/list/testing/list-harness-base.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/list/testing/action-list-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/list/testing/list-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/list/testing/nav-list-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/list/testing/selection-list-harness.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\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessPredicate,\n parallel,\n} from '@angular/cdk/testing';\nimport {BaseListItemHarnessFilters, SubheaderHarnessFilters} from './list-harness-filters';\n\nconst iconSelector = '.mat-mdc-list-item-icon';\nconst avatarSelector = '.mat-mdc-list-item-avatar';\n\n/**\n * Gets a `HarnessPredicate` that applies the given `BaseListItemHarnessFilters` to the given\n * list item harness.\n * @template H The type of list item harness to create a predicate for.\n * @param harnessType A constructor for a list item harness.\n * @param options An instance of `BaseListItemHarnessFilters` to apply.\n * @return A `HarnessPredicate` for the given harness type with the given options applied.\n */\nexport function getListItemPredicate<H extends MatListItemHarnessBase>(\n harnessType: ComponentHarnessConstructor<H>,\n options: BaseListItemHarnessFilters,\n): HarnessPredicate<H> {\n return new HarnessPredicate(harnessType, options)\n .addOption('text', options.text, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getText(), text),\n )\n .addOption('fullText', options.fullText, (harness, fullText) =>\n HarnessPredicate.stringMatches(harness.getFullText(), fullText),\n )\n .addOption('title', options.title, (harness, title) =>\n HarnessPredicate.stringMatches(harness.getTitle(), title),\n )\n .addOption('secondaryText', options.secondaryText, (harness, secondaryText) =>\n HarnessPredicate.stringMatches(harness.getSecondaryText(), secondaryText),\n )\n .addOption('tertiaryText', options.tertiaryText, (harness, tertiaryText) =>\n HarnessPredicate.stringMatches(harness.getTertiaryText(), tertiaryText),\n );\n}\n\n/** Harness for interacting with a list subheader. */\nexport class MatSubheaderHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-subheader';\n\n static with(options: SubheaderHarnessFilters = {}): HarnessPredicate<MatSubheaderHarness> {\n return new HarnessPredicate(MatSubheaderHarness, options).addOption(\n 'text',\n options.text,\n (harness, text) => HarnessPredicate.stringMatches(harness.getText(), text),\n );\n }\n\n /** Gets the full text content of the list item (including text from any font icons). */\n async getText(): Promise<string> {\n return (await this.host()).text();\n }\n}\n\n/** Selectors for the various list item sections that may contain user content. */\nexport enum MatListItemSection {\n CONTENT = '.mdc-list-item__content',\n}\n\n/** Enum describing the possible variants of a list item. */\nexport enum MatListItemType {\n ONE_LINE_ITEM,\n TWO_LINE_ITEM,\n THREE_LINE_ITEM,\n}\n\n/**\n * Shared behavior among the harnesses for the various `MatListItem` flavors.\n * @docs-private\n */\nexport abstract class MatListItemHarnessBase extends ContentContainerComponentHarness<MatListItemSection> {\n private _lines = this.locatorForAll('.mat-mdc-list-item-line');\n private _primaryText = this.locatorFor('.mdc-list-item__primary-text');\n private _avatar = this.locatorForOptional('.mat-mdc-list-item-avatar');\n private _icon = this.locatorForOptional('.mat-mdc-list-item-icon');\n private _unscopedTextContent = this.locatorFor('.mat-mdc-list-item-unscoped-content');\n\n /** Gets the type of the list item, currently describing how many lines there are. */\n async getType(): Promise<MatListItemType> {\n const host = await this.host();\n const [isOneLine, isTwoLine] = await parallel(() => [\n host.hasClass('mdc-list-item--with-one-line'),\n host.hasClass('mdc-list-item--with-two-lines'),\n ]);\n if (isOneLine) {\n return MatListItemType.ONE_LINE_ITEM;\n } else if (isTwoLine) {\n return MatListItemType.TWO_LINE_ITEM;\n } else {\n return MatListItemType.THREE_LINE_ITEM;\n }\n }\n\n /**\n * Gets the full text content of the list item, excluding text\n * from icons and avatars.\n *\n * @deprecated Use the `getFullText` method instead.\n * @breaking-change 16.0.0\n */\n async getText(): Promise<string> {\n return this.getFullText();\n }\n\n /**\n * Gets the full text content of the list item, excluding text\n * from icons and avatars.\n */\n async getFullText(): Promise<string> {\n return (await this.host()).text({exclude: `${iconSelector}, ${avatarSelector}`});\n }\n\n /** Gets the title of the list item. */\n async getTitle(): Promise<string> {\n return (await this._primaryText()).text();\n }\n\n /** Whether the list item is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).hasClass('mdc-list-item--disabled');\n }\n\n /**\n * Gets the secondary line text of the list item. Null if the list item\n * does not have a secondary line.\n */\n async getSecondaryText(): Promise<string | null> {\n const type = await this.getType();\n if (type === MatListItemType.ONE_LINE_ITEM) {\n return null;\n }\n\n const [lines, unscopedTextContent] = await parallel(() => [\n this._lines(),\n this._unscopedTextContent(),\n ]);\n\n // If there is no explicit line for the secondary text, the unscoped text content\n // is rendered as the secondary text (with potential text wrapping enabled).\n if (lines.length >= 1) {\n return lines[0].text();\n } else {\n return unscopedTextContent.text();\n }\n }\n\n /**\n * Gets the tertiary line text of the list item. Null if the list item\n * does not have a tertiary line.\n */\n async getTertiaryText(): Promise<string | null> {\n const type = await this.getType();\n if (type !== MatListItemType.THREE_LINE_ITEM) {\n return null;\n }\n\n const [lines, unscopedTextContent] = await parallel(() => [\n this._lines(),\n this._unscopedTextContent(),\n ]);\n\n // First we check if there is an explicit line for the tertiary text. If so, we return it.\n // If there is at least an explicit secondary line though, then we know that the unscoped\n // text content corresponds to the tertiary line. If there are no explicit lines at all,\n // we know that the unscoped text content from the secondary text just wraps into the third\n // line, but there *no* actual dedicated tertiary text.\n if (lines.length === 2) {\n return lines[1].text();\n } else if (lines.length === 1) {\n return unscopedTextContent.text();\n }\n return null;\n }\n\n /** Whether this list item has an avatar. */\n async hasAvatar(): Promise<boolean> {\n return !!(await this._avatar());\n }\n\n /** Whether this list item has an icon. */\n async hasIcon(): Promise<boolean> {\n return !!(await this._icon());\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 ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n parallel,\n} from '@angular/cdk/testing';\nimport {DividerHarnessFilters, MatDividerHarness} from '../../divider/testing';\nimport {BaseListItemHarnessFilters, SubheaderHarnessFilters} from './list-harness-filters';\nimport {MatSubheaderHarness} from './list-item-harness-base';\n\n/** Represents a section of a list falling under a specific header. */\nexport interface ListSection<I> {\n /** The heading for this list section. `undefined` if there is no heading. */\n heading?: string;\n\n /** The items in this list section. */\n items: I[];\n}\n\n/**\n * Shared behavior among the harnesses for the various `MatList` flavors.\n * @template T A constructor type for a list item harness type used by this list harness.\n * @template C The list item harness type that `T` constructs.\n * @template F The filter type used filter list item harness of type `C`.\n * @docs-private\n */\nexport abstract class MatListHarnessBase<\n T extends ComponentHarnessConstructor<C> & {with: (options?: F) => HarnessPredicate<C>},\n C extends ComponentHarness,\n F extends BaseListItemHarnessFilters,\n> extends ComponentHarness {\n protected _itemHarness!: T;\n\n /**\n * Gets a list of harnesses representing the items in this list.\n * @param filters Optional filters used to narrow which harnesses are included\n * @return The list of items matching the given filters.\n */\n async getItems(filters?: F): Promise<C[]> {\n return this.locatorForAll(this._itemHarness.with(filters))();\n }\n\n /**\n * Gets a list of `ListSection` representing the list items grouped by subheaders. If the list has\n * no subheaders it is represented as a single `ListSection` with an undefined `heading` property.\n * @param filters Optional filters used to narrow which list item harnesses are included\n * @return The list of items matching the given filters, grouped into sections by subheader.\n */\n async getItemsGroupedBySubheader(filters?: F): Promise<ListSection<C>[]> {\n type Section = {items: C[]; heading?: Promise<string>};\n const listSections: Section[] = [];\n let currentSection: Section = {items: []};\n const itemsAndSubheaders = await this.getItemsWithSubheadersAndDividers({\n item: filters,\n divider: false,\n });\n\n for (const itemOrSubheader of itemsAndSubheaders) {\n if (itemOrSubheader instanceof MatSubheaderHarness) {\n if (currentSection.heading !== undefined || currentSection.items.length) {\n listSections.push(currentSection);\n }\n currentSection = {heading: itemOrSubheader.getText(), items: []};\n } else {\n currentSection.items.push(itemOrSubheader);\n }\n }\n if (\n currentSection.heading !== undefined ||\n currentSection.items.length ||\n !listSections.length\n ) {\n listSections.push(currentSection);\n }\n\n // Concurrently wait for all sections to resolve their heading if present.\n return parallel(() =>\n listSections.map(async s => ({items: s.items, heading: await s.heading})),\n );\n }\n\n /**\n * Gets a list of sub-lists representing the list items grouped by dividers. If the list has no\n * dividers it is represented as a list with a single sub-list.\n * @param filters Optional filters used to narrow which list item harnesses are included\n * @return The list of items matching the given filters, grouped into sub-lists by divider.\n */\n async getItemsGroupedByDividers(filters?: F): Promise<C[][]> {\n const listSections: C[][] = [[]];\n const itemsAndDividers = await this.getItemsWithSubheadersAndDividers({\n item: filters,\n subheader: false,\n });\n for (const itemOrDivider of itemsAndDividers) {\n if (itemOrDivider instanceof MatDividerHarness) {\n listSections.push([]);\n } else {\n listSections[listSections.length - 1].push(itemOrDivider);\n }\n }\n return listSections;\n }\n\n /**\n * Gets a list of harnesses representing all of the items, subheaders, and dividers\n * (in the order they appear in the list). Use `instanceof` to check which type of harness a given\n * item is.\n * @param filters Optional filters used to narrow which list items, subheaders, and dividers are\n * included. A value of `false` for the `item`, `subheader`, or `divider` properties indicates\n * that the respective harness type should be omitted completely.\n * @return The list of harnesses representing the items, subheaders, and dividers matching the\n * given filters.\n */\n getItemsWithSubheadersAndDividers(filters: {\n item: false;\n subheader: false;\n divider: false;\n }): Promise<[]>;\n getItemsWithSubheadersAndDividers(filters: {\n item?: F | false;\n subheader: false;\n divider: false;\n }): Promise<C[]>;\n getItemsWithSubheadersAndDividers(filters: {\n item: false;\n subheader?: SubheaderHarnessFilters | false;\n divider: false;\n }): Promise<MatSubheaderHarness[]>;\n getItemsWithSubheadersAndDividers(filters: {\n item: false;\n subheader: false;\n divider?: DividerHarnessFilters | false;\n }): Promise<MatDividerHarness[]>;\n getItemsWithSubheadersAndDividers(filters: {\n item?: F | false;\n subheader?: SubheaderHarnessFilters | false;\n divider: false;\n }): Promise<(C | MatSubheaderHarness)[]>;\n getItemsWithSubheadersAndDividers(filters: {\n item?: F | false;\n subheader: false;\n divider?: false | DividerHarnessFilters;\n }): Promise<(C | MatDividerHarness)[]>;\n getItemsWithSubheadersAndDividers(filters: {\n item: false;\n subheader?: false | SubheaderHarnessFilters;\n divider?: false | DividerHarnessFilters;\n }): Promise<(MatSubheaderHarness | MatDividerHarness)[]>;\n getItemsWithSubheadersAndDividers(filters?: {\n item?: F | false;\n subheader?: SubheaderHarnessFilters | false;\n divider?: DividerHarnessFilters | false;\n }): Promise<(C | MatSubheaderHarness | MatDividerHarness)[]>;\n async getItemsWithSubheadersAndDividers(\n filters: {\n item?: F | false;\n subheader?: SubheaderHarnessFilters | false;\n divider?: DividerHarnessFilters | false;\n } = {},\n ): Promise<(C | MatSubheaderHarness | MatDividerHarness)[]> {\n const query = [];\n if (filters.item !== false) {\n query.push(this._itemHarness.with(filters.item || ({} as F)));\n }\n if (filters.subheader !== false) {\n query.push(MatSubheaderHarness.with(filters.subheader));\n }\n if (filters.divider !== false) {\n query.push(MatDividerHarness.with(filters.divider));\n }\n return this.locatorForAll(...query)();\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 {ComponentHarnessConstructor, HarnessPredicate} from '@angular/cdk/testing';\nimport {MatListHarnessBase} from './list-harness-base';\nimport {ActionListHarnessFilters, ActionListItemHarnessFilters} from './list-harness-filters';\nimport {getListItemPredicate, MatListItemHarnessBase} from './list-item-harness-base';\n\n/** Harness for interacting with a action-list in tests. */\nexport class MatActionListHarness extends MatListHarnessBase<\n typeof MatActionListItemHarness,\n MatActionListItemHarness,\n ActionListItemHarnessFilters\n> {\n /** The selector for the host element of a `MatActionList` instance. */\n static hostSelector = '.mat-mdc-action-list';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for an action list with specific\n * attributes.\n * @param options Options for filtering which action list instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatActionListHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ActionListHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n override _itemHarness = MatActionListItemHarness;\n}\n\n/** Harness for interacting with an action list item. */\nexport class MatActionListItemHarness extends MatListItemHarnessBase {\n /** The selector for the host element of a `MatListItem` instance. */\n static hostSelector = `${MatActionListHarness.hostSelector} .mat-mdc-list-item`;\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a list item with specific\n * attributes.\n * @param options Options for filtering which action list item instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatActionListItemHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ActionListItemHarnessFilters = {},\n ): HarnessPredicate<T> {\n return getListItemPredicate(this, options);\n }\n\n /** Clicks on the action list item. */\n async click(): Promise<void> {\n return (await this.host()).click();\n }\n\n /** Focuses the action list item. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Blurs the action list item. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the action list item is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\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 {ComponentHarnessConstructor, HarnessPredicate} from '@angular/cdk/testing';\nimport {MatListHarnessBase} from './list-harness-base';\nimport {ListHarnessFilters, ListItemHarnessFilters} from './list-harness-filters';\nimport {getListItemPredicate, MatListItemHarnessBase} from './list-item-harness-base';\n\n/** Harness for interacting with a list in tests. */\nexport class MatListHarness extends MatListHarnessBase<\n typeof MatListItemHarness,\n MatListItemHarness,\n ListItemHarnessFilters\n> {\n /** The selector for the host element of a `MatList` instance. */\n static hostSelector = '.mat-mdc-list';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a list with specific attributes.\n * @param options Options for filtering which list instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatListHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ListHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n override _itemHarness = MatListItemHarness;\n}\n\n/** Harness for interacting with a list item. */\nexport class MatListItemHarness extends MatListItemHarnessBase {\n /** The selector for the host element of a `MatListItem` instance. */\n static hostSelector = `${MatListHarness.hostSelector} .mat-mdc-list-item`;\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a list item with specific attributes.\n * @param options Options for filtering which list item instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatListItemHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ListItemHarnessFilters = {},\n ): HarnessPredicate<T> {\n return getListItemPredicate(this, options);\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 {ComponentHarnessConstructor, HarnessPredicate} from '@angular/cdk/testing';\nimport {MatListHarnessBase} from './list-harness-base';\nimport {NavListHarnessFilters, NavListItemHarnessFilters} from './list-harness-filters';\nimport {getListItemPredicate, MatListItemHarnessBase} from './list-item-harness-base';\n\n/** Harness for interacting with a mat-nav-list in tests. */\nexport class MatNavListHarness extends MatListHarnessBase<\n typeof MatNavListItemHarness,\n MatNavListItemHarness,\n NavListItemHarnessFilters\n> {\n /** The selector for the host element of a `MatNavList` instance. */\n static hostSelector = '.mat-mdc-nav-list';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a nav list with specific\n * attributes.\n * @param options Options for filtering which nav list instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatNavListHarness>(\n this: ComponentHarnessConstructor<T>,\n options: NavListHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n override _itemHarness = MatNavListItemHarness;\n}\n\n/** Harness for interacting with a nav-list item. */\nexport class MatNavListItemHarness extends MatListItemHarnessBase {\n /** The selector for the host element of a `MatListItem` instance. */\n static hostSelector = `${MatNavListHarness.hostSelector} .mat-mdc-list-item`;\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a nav list item with specific\n * attributes.\n * @param options Options for filtering which nav list item instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatNavListItemHarness>(\n this: ComponentHarnessConstructor<T>,\n options: NavListItemHarnessFilters = {},\n ): HarnessPredicate<T> {\n return getListItemPredicate(this, options)\n .addOption('href', options.href, async (harness, href) =>\n HarnessPredicate.stringMatches(harness.getHref(), href),\n )\n .addOption(\n 'activated',\n options.activated,\n async (harness, activated) => (await harness.isActivated()) === activated,\n );\n }\n\n /** Gets the href for this nav list item. */\n async getHref(): Promise<string | null> {\n return (await this.host()).getAttribute('href');\n }\n\n /** Clicks on the nav list item. */\n async click(): Promise<void> {\n return (await this.host()).click();\n }\n\n /** Focuses the nav list item. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Blurs the nav list item. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the nav list item is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /** Whether the list item is activated. Should only be used for nav list items. */\n async isActivated(): Promise<boolean> {\n return (await this.host()).hasClass('mdc-list-item--activated');\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 {ComponentHarnessConstructor, HarnessPredicate, parallel} from '@angular/cdk/testing';\nimport {MatListOptionTogglePosition} from '../../list';\nimport {MatListHarnessBase} from './list-harness-base';\nimport {\n ListItemHarnessFilters,\n ListOptionHarnessFilters,\n SelectionListHarnessFilters,\n} from './list-harness-filters';\nimport {getListItemPredicate, MatListItemHarnessBase} from './list-item-harness-base';\n\n/** Harness for interacting with a selection-list in tests. */\nexport class MatSelectionListHarness extends MatListHarnessBase<\n typeof MatListOptionHarness,\n MatListOptionHarness,\n ListOptionHarnessFilters\n> {\n /** The selector for the host element of a `MatSelectionList` instance. */\n static hostSelector = '.mat-mdc-selection-list';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a selection list with specific\n * attributes.\n * @param options Options for filtering which selection list instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatSelectionListHarness>(\n this: ComponentHarnessConstructor<T>,\n options: SelectionListHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n override _itemHarness = MatListOptionHarness;\n\n /** Whether the selection list is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-disabled')) === 'true';\n }\n\n /**\n * Selects all items matching any of the given filters.\n * @param filters Filters that specify which items should be selected.\n */\n async selectItems(...filters: ListOptionHarnessFilters[]): Promise<void> {\n const items = await this._getItems(filters);\n await parallel(() => items.map(item => item.select()));\n }\n\n /**\n * Deselects all items matching any of the given filters.\n * @param filters Filters that specify which items should be deselected.\n */\n async deselectItems(...filters: ListItemHarnessFilters[]): Promise<void> {\n const items = await this._getItems(filters);\n await parallel(() => items.map(item => item.deselect()));\n }\n\n /** Gets all items matching the given list of filters. */\n private async _getItems(filters: ListOptionHarnessFilters[]): Promise<MatListOptionHarness[]> {\n if (!filters.length) {\n return this.getItems();\n }\n const matches = await parallel(() =>\n filters.map(filter => this.locatorForAll(MatListOptionHarness.with(filter))()),\n );\n return matches.reduce((result, current) => [...result, ...current], []);\n }\n}\n\n/** Harness for interacting with a list option. */\nexport class MatListOptionHarness extends MatListItemHarnessBase {\n /** The selector for the host element of a `MatListOption` instance. */\n static hostSelector = '.mat-mdc-list-option';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a list option with specific\n * attributes.\n * @param options Options for filtering which list option instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatListOptionHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ListOptionHarnessFilters = {},\n ): HarnessPredicate<T> {\n return getListItemPredicate(this, options).addOption(\n 'is selected',\n options.selected,\n async (harness, selected) => (await harness.isSelected()) === selected,\n );\n }\n\n private _beforeCheckbox = this.locatorForOptional('.mdc-list-item__start .mdc-checkbox');\n private _beforeRadio = this.locatorForOptional('.mdc-list-item__start .mdc-radio');\n\n /** Gets the position of the checkbox relative to the list option content. */\n async getCheckboxPosition(): Promise<MatListOptionTogglePosition> {\n return (await this._beforeCheckbox()) !== null ? 'before' : 'after';\n }\n\n /** Gets the position of the radio relative to the list option content. */\n async getRadioPosition(): Promise<MatListOptionTogglePosition> {\n return (await this._beforeRadio()) !== null ? 'before' : 'after';\n }\n\n /** Whether the list option is selected. */\n async isSelected(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-selected')) === 'true';\n }\n\n /** Focuses the list option. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Blurs the list option. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the list option is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /** Toggles the checked state of the checkbox. */\n async toggle() {\n return (await this.host()).click();\n }\n\n /**\n * Puts the list option in a checked state by toggling it if it is currently\n * unchecked, or doing nothing if it is already checked.\n */\n async select() {\n if (!(await this.isSelected())) {\n return this.toggle();\n }\n }\n\n /**\n * Puts the list option in an unchecked state by toggling it if it is currently\n * checked, or doing nothing if it is already unchecked.\n */\n async deselect() {\n if (await this.isSelected()) {\n return this.toggle();\n }\n }\n}\n"],"names":["iconSelector","avatarSelector","getListItemPredicate","harnessType","options","HarnessPredicate","addOption","text","harness","stringMatches","getText","fullText","getFullText","title","getTitle","secondaryText","getSecondaryText","tertiaryText","getTertiaryText","MatSubheaderHarness","ComponentHarness","hostSelector","with","host","MatListItemSection","MatListItemType","MatListItemHarnessBase","ContentContainerComponentHarness","_lines","locatorForAll","_primaryText","locatorFor","_avatar","locatorForOptional","_icon","_unscopedTextContent","getType","isOneLine","isTwoLine","parallel","hasClass","ONE_LINE_ITEM","TWO_LINE_ITEM","THREE_LINE_ITEM","exclude","isDisabled","type","lines","unscopedTextContent","length","hasAvatar","hasIcon","MatListHarnessBase","_itemHarness","getItems","filters","getItemsGroupedBySubheader","listSections","currentSection","items","itemsAndSubheaders","getItemsWithSubheadersAndDividers","item","divider","itemOrSubheader","heading","undefined","push","map","s","getItemsGroupedByDividers","itemsAndDividers","subheader","itemOrDivider","MatDividerHarness","query","MatActionListHarness","MatActionListItemHarness","click","focus","blur","isFocused","MatListHarness","MatListItemHarness","MatNavListHarness","MatNavListItemHarness","href","getHref","activated","isActivated","getAttribute","MatSelectionListHarness","MatListOptionHarness","selectItems","_getItems","select","deselectItems","deselect","matches","filter","reduce","result","current","selected","isSelected","_beforeCheckbox","_beforeRadio","getCheckboxPosition","getRadioPosition","toggle"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"material.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/index.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// primary entry-point which is empty as of version 9. All components should\n// be imported through their individual entry-points. This file is needed to\n// satisfy the \"ng_package\" bazel rule which also requires a primary entry-point.\n\n// Workaround for: https://github.com/microsoft/rushstack/issues/2806.\n// This is a private export that can be removed at any time.\nexport const ɵɵtsModuleIndicatorApiExtractorWorkaround = true;\n"],"names":["ɵɵtsModuleIndicatorApiExtractorWorkaround"],"mappings":"AAcO,MAAMA,yCAAyC,GAAG;;;;"}
{"version":3,"file":"material.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/index.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// primary entry-point which is empty as of version 9. All components should\n// be imported through their individual entry-points. This file is needed to\n// satisfy the \"ng_package\" bazel rule which also requires a primary entry-point.\n\n// Workaround for: https://github.com/microsoft/rushstack/issues/2806.\n// This is a private export that can be removed at any time.\nexport const ɵɵtsModuleIndicatorApiExtractorWorkaround = true;\n"],"names":["ɵɵtsModuleIndicatorApiExtractorWorkaround"],"mappings":"AAcO,MAAMA,yCAAyC,GAAG;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"menu-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/menu/testing/menu-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/menu/testing/context-menu-harness.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\nimport {\n ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessLoader,\n HarnessPredicate,\n TestElement,\n} from '@angular/cdk/testing';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {MatIconHarness} from '@angular/material/icon/testing';\nimport {MenuHarnessFilters, MenuItemHarnessFilters} from './menu-harness-filters';\n\n/** Harness for interacting with a mat-menu in tests. */\nexport class MatMenuHarness extends ContentContainerComponentHarness<string> {\n private _documentRootLocator = this.documentRootLocatorFactory();\n\n /** The selector for the host element of a `MatMenu` instance. */\n static hostSelector = '.mat-mdc-menu-trigger';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a menu with specific attributes.\n * @param options Options for filtering which menu instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatMenuHarness>(\n this: ComponentHarnessConstructor<T>,\n options: MenuHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('triggerText', options.triggerText, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getTriggerText(), text),\n )\n .addOption('triggerIconName', options.triggerIconName, async (harness, triggerIconName) => {\n const result = await harness.locatorForOptional(\n MatIconHarness.with({name: triggerIconName}),\n )();\n return result !== null;\n });\n }\n\n /** Whether the menu is disabled. */\n async isDisabled(): Promise<boolean> {\n const disabled = (await this.host()).getAttribute('disabled');\n return coerceBooleanProperty(await disabled);\n }\n\n /** Whether the menu is open. */\n async isOpen(): Promise<boolean> {\n return !!(await this._getMenuPanel());\n }\n\n /** Gets the text of the menu's trigger element. */\n async getTriggerText(): Promise<string> {\n return (await this.host()).text();\n }\n\n /** Focuses the menu. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Blurs the menu. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the menu is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /** Opens the menu. */\n async open(): Promise<void> {\n if (!(await this.isOpen())) {\n return (await this.host()).click();\n }\n }\n\n /** Closes the menu. */\n async close(): Promise<void> {\n const panel = await this._getMenuPanel();\n if (panel) {\n return panel.click();\n }\n }\n\n /**\n * Gets a list of `MatMenuItemHarness` representing the items in the menu.\n * @param filters Optionally filters which menu items are included.\n */\n async getItems(\n filters?: Omit<MenuItemHarnessFilters, 'ancestor'>,\n ): Promise<MatMenuItemHarness[]> {\n const panelId = await this._getPanelId();\n if (panelId) {\n return this._documentRootLocator.locatorForAll(\n MatMenuItemHarness.with({\n ...(filters || {}),\n ancestor: `#${panelId}`,\n } as MenuItemHarnessFilters),\n )();\n }\n return [];\n }\n\n /**\n * Clicks an item in the menu, and optionally continues clicking items in subsequent sub-menus.\n * @param itemFilter A filter used to represent which item in the menu should be clicked. The\n * first matching menu item will be clicked.\n * @param subItemFilters A list of filters representing the items to click in any subsequent\n * sub-menus. The first item in the sub-menu matching the corresponding filter in\n * `subItemFilters` will be clicked.\n */\n async clickItem(\n itemFilter: Omit<MenuItemHarnessFilters, 'ancestor'>,\n ...subItemFilters: Omit<MenuItemHarnessFilters, 'ancestor'>[]\n ): Promise<void> {\n await this.open();\n return clickItemImplementation(await this.getItems(itemFilter), itemFilter, subItemFilters);\n }\n\n protected override async getRootHarnessLoader(): Promise<HarnessLoader> {\n const panelId = await this._getPanelId();\n return this.documentRootLocatorFactory().harnessLoaderFor(`#${panelId}`);\n }\n\n /** Gets the menu panel associated with this menu. */\n private async _getMenuPanel(): Promise<TestElement | null> {\n const panelId = await this._getPanelId();\n return panelId ? this._documentRootLocator.locatorForOptional(`#${panelId}`)() : null;\n }\n\n /** Gets the id of the menu panel associated with this menu. */\n private async _getPanelId(): Promise<string | null> {\n const panelId = await (await this.host()).getAttribute('aria-controls');\n return panelId || null;\n }\n}\n\nexport class MatMenuItemHarness extends ContentContainerComponentHarness<string> {\n /** The selector for the host element of a `MatMenuItem` instance. */\n static hostSelector = '.mat-mdc-menu-item';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a menu item with specific attributes.\n * @param options Options for filtering which menu item instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatMenuItemHarness>(\n this: ComponentHarnessConstructor<T>,\n options: MenuItemHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('text', options.text, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getText(), text),\n )\n .addOption(\n 'hasSubmenu',\n options.hasSubmenu,\n async (harness, hasSubmenu) => (await harness.hasSubmenu()) === hasSubmenu,\n );\n }\n\n /** Whether the menu is disabled. */\n async isDisabled(): Promise<boolean> {\n const disabled = (await this.host()).getAttribute('disabled');\n return coerceBooleanProperty(await disabled);\n }\n\n /** Gets the text of the menu item. */\n async getText(): Promise<string> {\n return (await this.host()).text();\n }\n\n /** Focuses the menu item. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Blurs the menu item. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the menu item is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /** Clicks the menu item. */\n async click(): Promise<void> {\n return (await this.host()).click();\n }\n\n /** Whether this item has a submenu. */\n async hasSubmenu(): Promise<boolean> {\n return (await this.host()).matchesSelector(MatMenuHarness.hostSelector);\n }\n\n /** Gets the submenu associated with this menu item, or null if none. */\n async getSubmenu(): Promise<MatMenuHarness | null> {\n if (await this.hasSubmenu()) {\n return new MatMenuHarness(this.locatorFactory);\n }\n return null;\n }\n}\n\nexport async function clickItemImplementation(\n items: MatMenuItemHarness[],\n itemFilter: Omit<MenuItemHarnessFilters, 'ancestor'>,\n subItemFilters: Omit<MenuItemHarnessFilters, 'ancestor'>[],\n): Promise<void> {\n if (!items.length) {\n throw Error(`Could not find item matching ${JSON.stringify(itemFilter)}`);\n }\n\n if (!subItemFilters.length) {\n return await items[0].click();\n }\n\n const menu = await items[0].getSubmenu();\n if (!menu) {\n throw Error(`Item matching ${JSON.stringify(itemFilter)} does not have a submenu`);\n }\n return menu.clickItem(...(subItemFilters as [Omit<MenuItemHarnessFilters, 'ancestor'>]));\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 ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessLoader,\n HarnessPredicate,\n TestElement,\n} from '@angular/cdk/testing';\nimport {ContextMenuHarnessFilters, MenuItemHarnessFilters} from './menu-harness-filters';\nimport {clickItemImplementation, MatMenuItemHarness} from './menu-harness';\n\n/** Harness for interacting with context menus in tests. */\nexport class MatContextMenuHarness extends ContentContainerComponentHarness<string> {\n private _documentRootLocator = this.documentRootLocatorFactory();\n\n /** The selector for the host element of a `MatContextMenu` instance. */\n static hostSelector = '.mat-context-menu-trigger';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a context menu with specific\n * attributes.\n * @param options Options for filtering which menu instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatContextMenuHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ContextMenuHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /** Whether the menu is open. */\n async isOpen(): Promise<boolean> {\n return !!(await this._getMenuPanel());\n }\n\n /**\n * Opens the menu.\n * @param relativeX X coordinate, relative to the element, to dispatch the opening click at.\n * @param relativeY Y coordinate, relative to the element, to dispatch the opening click at.\n */\n async open(relativeX = 0, relativeY = 0): Promise<void> {\n if (!(await this.isOpen())) {\n return (await this.host()).rightClick(relativeX, relativeY);\n }\n }\n\n /** Closes the menu. */\n async close(): Promise<void> {\n const panel = await this._getMenuPanel();\n if (panel) {\n return panel.click();\n }\n }\n\n /** Gets whether the context menu trigger is disabled. */\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n return host.hasClass('mat-context-menu-trigger-disabled');\n }\n\n /**\n * Gets a list of `MatMenuItemHarness` representing the items in the menu.\n * @param filters Optionally filters which menu items are included.\n */\n async getItems(\n filters?: Omit<MenuItemHarnessFilters, 'ancestor'>,\n ): Promise<MatMenuItemHarness[]> {\n const panelId = await this._getPanelId();\n if (panelId) {\n return this._documentRootLocator.locatorForAll(\n MatMenuItemHarness.with({\n ...(filters || {}),\n ancestor: `#${panelId}`,\n } as MenuItemHarnessFilters),\n )();\n }\n return [];\n }\n\n /**\n * Clicks an item in the menu, and optionally continues clicking items in subsequent sub-menus.\n * @param itemFilter A filter used to represent which item in the menu should be clicked. The\n * first matching menu item will be clicked.\n * @param subItemFilters A list of filters representing the items to click in any subsequent\n * sub-menus. The first item in the sub-menu matching the corresponding filter in\n * `subItemFilters` will be clicked.\n */\n async clickItem(\n itemFilter: Omit<MenuItemHarnessFilters, 'ancestor'>,\n ...subItemFilters: Omit<MenuItemHarnessFilters, 'ancestor'>[]\n ): Promise<void> {\n await this.open();\n return clickItemImplementation(await this.getItems(itemFilter), itemFilter, subItemFilters);\n }\n\n protected override async getRootHarnessLoader(): Promise<HarnessLoader> {\n const panelId = await this._getPanelId();\n return this.documentRootLocatorFactory().harnessLoaderFor(`#${panelId}`);\n }\n\n /** Gets the menu panel associated with this menu. */\n private async _getMenuPanel(): Promise<TestElement | null> {\n const panelId = await this._getPanelId();\n return panelId ? this._documentRootLocator.locatorForOptional(`#${panelId}`)() : null;\n }\n\n /** Gets the id of the menu panel associated with this menu. */\n private async _getPanelId(): Promise<string | null> {\n const panelId = await (await this.host()).getAttribute('aria-controls');\n return panelId || null;\n }\n}\n"],"names":["MatMenuHarness","ContentContainerComponentHarness","_documentRootLocator","documentRootLocatorFactory","hostSelector","with","options","HarnessPredicate","addOption","triggerText","harness","text","stringMatches","getTriggerText","triggerIconName","result","locatorForOptional","MatIconHarness","name","isDisabled","disabled","host","getAttribute","coerceBooleanProperty","isOpen","_getMenuPanel","focus","blur","isFocused","open","click","close","panel","getItems","filters","panelId","_getPanelId","locatorForAll","MatMenuItemHarness","ancestor","clickItem","itemFilter","subItemFilters","clickItemImplementation","getRootHarnessLoader","harnessLoaderFor","getText","hasSubmenu","matchesSelector","getSubmenu","locatorFactory","items","length","Error","JSON","stringify","menu","MatContextMenuHarness","relativeX","relativeY","rightClick","hasClass"],"mappings":"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"}
{"version":3,"file":"menu-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/menu/testing/menu-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/menu/testing/context-menu-harness.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\nimport {\n ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessLoader,\n HarnessPredicate,\n TestElement,\n} from '@angular/cdk/testing';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {MatIconHarness} from '@angular/material/icon/testing';\nimport {MenuHarnessFilters, MenuItemHarnessFilters} from './menu-harness-filters';\n\n/** Harness for interacting with a mat-menu in tests. */\nexport class MatMenuHarness extends ContentContainerComponentHarness<string> {\n private _documentRootLocator = this.documentRootLocatorFactory();\n\n /** The selector for the host element of a `MatMenu` instance. */\n static hostSelector = '.mat-mdc-menu-trigger';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a menu with specific attributes.\n * @param options Options for filtering which menu instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatMenuHarness>(\n this: ComponentHarnessConstructor<T>,\n options: MenuHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('triggerText', options.triggerText, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getTriggerText(), text),\n )\n .addOption('triggerIconName', options.triggerIconName, async (harness, triggerIconName) => {\n const result = await harness.locatorForOptional(\n MatIconHarness.with({name: triggerIconName}),\n )();\n return result !== null;\n });\n }\n\n /** Whether the menu is disabled. */\n async isDisabled(): Promise<boolean> {\n const disabled = (await this.host()).getAttribute('disabled');\n return coerceBooleanProperty(await disabled);\n }\n\n /** Whether the menu is open. */\n async isOpen(): Promise<boolean> {\n return !!(await this._getMenuPanel());\n }\n\n /** Gets the text of the menu's trigger element. */\n async getTriggerText(): Promise<string> {\n return (await this.host()).text();\n }\n\n /** Focuses the menu. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Blurs the menu. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the menu is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /** Opens the menu. */\n async open(): Promise<void> {\n if (!(await this.isOpen())) {\n return (await this.host()).click();\n }\n }\n\n /** Closes the menu. */\n async close(): Promise<void> {\n const panel = await this._getMenuPanel();\n if (panel) {\n return panel.click();\n }\n }\n\n /**\n * Gets a list of `MatMenuItemHarness` representing the items in the menu.\n * @param filters Optionally filters which menu items are included.\n */\n async getItems(\n filters?: Omit<MenuItemHarnessFilters, 'ancestor'>,\n ): Promise<MatMenuItemHarness[]> {\n const panelId = await this._getPanelId();\n if (panelId) {\n return this._documentRootLocator.locatorForAll(\n MatMenuItemHarness.with({\n ...(filters || {}),\n ancestor: `#${panelId}`,\n } as MenuItemHarnessFilters),\n )();\n }\n return [];\n }\n\n /**\n * Clicks an item in the menu, and optionally continues clicking items in subsequent sub-menus.\n * @param itemFilter A filter used to represent which item in the menu should be clicked. The\n * first matching menu item will be clicked.\n * @param subItemFilters A list of filters representing the items to click in any subsequent\n * sub-menus. The first item in the sub-menu matching the corresponding filter in\n * `subItemFilters` will be clicked.\n */\n async clickItem(\n itemFilter: Omit<MenuItemHarnessFilters, 'ancestor'>,\n ...subItemFilters: Omit<MenuItemHarnessFilters, 'ancestor'>[]\n ): Promise<void> {\n await this.open();\n return clickItemImplementation(await this.getItems(itemFilter), itemFilter, subItemFilters);\n }\n\n protected override async getRootHarnessLoader(): Promise<HarnessLoader> {\n const panelId = await this._getPanelId();\n return this.documentRootLocatorFactory().harnessLoaderFor(`#${panelId}`);\n }\n\n /** Gets the menu panel associated with this menu. */\n private async _getMenuPanel(): Promise<TestElement | null> {\n const panelId = await this._getPanelId();\n return panelId ? this._documentRootLocator.locatorForOptional(`#${panelId}`)() : null;\n }\n\n /** Gets the id of the menu panel associated with this menu. */\n private async _getPanelId(): Promise<string | null> {\n const panelId = await (await this.host()).getAttribute('aria-controls');\n return panelId || null;\n }\n}\n\nexport class MatMenuItemHarness extends ContentContainerComponentHarness<string> {\n /** The selector for the host element of a `MatMenuItem` instance. */\n static hostSelector = '.mat-mdc-menu-item';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a menu item with specific attributes.\n * @param options Options for filtering which menu item instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatMenuItemHarness>(\n this: ComponentHarnessConstructor<T>,\n options: MenuItemHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('text', options.text, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getText(), text),\n )\n .addOption(\n 'hasSubmenu',\n options.hasSubmenu,\n async (harness, hasSubmenu) => (await harness.hasSubmenu()) === hasSubmenu,\n );\n }\n\n /** Whether the menu is disabled. */\n async isDisabled(): Promise<boolean> {\n const disabled = (await this.host()).getAttribute('disabled');\n return coerceBooleanProperty(await disabled);\n }\n\n /** Gets the text of the menu item. */\n async getText(): Promise<string> {\n return (await this.host()).text();\n }\n\n /** Focuses the menu item. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Blurs the menu item. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the menu item is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /** Clicks the menu item. */\n async click(): Promise<void> {\n return (await this.host()).click();\n }\n\n /** Whether this item has a submenu. */\n async hasSubmenu(): Promise<boolean> {\n return (await this.host()).matchesSelector(MatMenuHarness.hostSelector);\n }\n\n /** Gets the submenu associated with this menu item, or null if none. */\n async getSubmenu(): Promise<MatMenuHarness | null> {\n if (await this.hasSubmenu()) {\n return new MatMenuHarness(this.locatorFactory);\n }\n return null;\n }\n}\n\nexport async function clickItemImplementation(\n items: MatMenuItemHarness[],\n itemFilter: Omit<MenuItemHarnessFilters, 'ancestor'>,\n subItemFilters: Omit<MenuItemHarnessFilters, 'ancestor'>[],\n): Promise<void> {\n if (!items.length) {\n throw Error(`Could not find item matching ${JSON.stringify(itemFilter)}`);\n }\n\n if (!subItemFilters.length) {\n return await items[0].click();\n }\n\n const menu = await items[0].getSubmenu();\n if (!menu) {\n throw Error(`Item matching ${JSON.stringify(itemFilter)} does not have a submenu`);\n }\n return menu.clickItem(...(subItemFilters as [Omit<MenuItemHarnessFilters, 'ancestor'>]));\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 ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessLoader,\n HarnessPredicate,\n TestElement,\n} from '@angular/cdk/testing';\nimport {ContextMenuHarnessFilters, MenuItemHarnessFilters} from './menu-harness-filters';\nimport {clickItemImplementation, MatMenuItemHarness} from './menu-harness';\n\n/** Harness for interacting with context menus in tests. */\nexport class MatContextMenuHarness extends ContentContainerComponentHarness<string> {\n private _documentRootLocator = this.documentRootLocatorFactory();\n\n /** The selector for the host element of a `MatContextMenu` instance. */\n static hostSelector = '.mat-context-menu-trigger';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a context menu with specific\n * attributes.\n * @param options Options for filtering which menu instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatContextMenuHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ContextMenuHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /** Whether the menu is open. */\n async isOpen(): Promise<boolean> {\n return !!(await this._getMenuPanel());\n }\n\n /**\n * Opens the menu.\n * @param relativeX X coordinate, relative to the element, to dispatch the opening click at.\n * @param relativeY Y coordinate, relative to the element, to dispatch the opening click at.\n */\n async open(relativeX = 0, relativeY = 0): Promise<void> {\n if (!(await this.isOpen())) {\n return (await this.host()).rightClick(relativeX, relativeY);\n }\n }\n\n /** Closes the menu. */\n async close(): Promise<void> {\n const panel = await this._getMenuPanel();\n if (panel) {\n return panel.click();\n }\n }\n\n /** Gets whether the context menu trigger is disabled. */\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n return host.hasClass('mat-context-menu-trigger-disabled');\n }\n\n /**\n * Gets a list of `MatMenuItemHarness` representing the items in the menu.\n * @param filters Optionally filters which menu items are included.\n */\n async getItems(\n filters?: Omit<MenuItemHarnessFilters, 'ancestor'>,\n ): Promise<MatMenuItemHarness[]> {\n const panelId = await this._getPanelId();\n if (panelId) {\n return this._documentRootLocator.locatorForAll(\n MatMenuItemHarness.with({\n ...(filters || {}),\n ancestor: `#${panelId}`,\n } as MenuItemHarnessFilters),\n )();\n }\n return [];\n }\n\n /**\n * Clicks an item in the menu, and optionally continues clicking items in subsequent sub-menus.\n * @param itemFilter A filter used to represent which item in the menu should be clicked. The\n * first matching menu item will be clicked.\n * @param subItemFilters A list of filters representing the items to click in any subsequent\n * sub-menus. The first item in the sub-menu matching the corresponding filter in\n * `subItemFilters` will be clicked.\n */\n async clickItem(\n itemFilter: Omit<MenuItemHarnessFilters, 'ancestor'>,\n ...subItemFilters: Omit<MenuItemHarnessFilters, 'ancestor'>[]\n ): Promise<void> {\n await this.open();\n return clickItemImplementation(await this.getItems(itemFilter), itemFilter, subItemFilters);\n }\n\n protected override async getRootHarnessLoader(): Promise<HarnessLoader> {\n const panelId = await this._getPanelId();\n return this.documentRootLocatorFactory().harnessLoaderFor(`#${panelId}`);\n }\n\n /** Gets the menu panel associated with this menu. */\n private async _getMenuPanel(): Promise<TestElement | null> {\n const panelId = await this._getPanelId();\n return panelId ? this._documentRootLocator.locatorForOptional(`#${panelId}`)() : null;\n }\n\n /** Gets the id of the menu panel associated with this menu. */\n private async _getPanelId(): Promise<string | null> {\n const panelId = await (await this.host()).getAttribute('aria-controls');\n return panelId || null;\n }\n}\n"],"names":["MatMenuHarness","ContentContainerComponentHarness","_documentRootLocator","documentRootLocatorFactory","hostSelector","with","options","HarnessPredicate","addOption","triggerText","harness","text","stringMatches","getTriggerText","triggerIconName","result","locatorForOptional","MatIconHarness","name","isDisabled","disabled","host","getAttribute","coerceBooleanProperty","isOpen","_getMenuPanel","focus","blur","isFocused","open","click","close","panel","getItems","filters","panelId","_getPanelId","locatorForAll","MatMenuItemHarness","ancestor","clickItem","itemFilter","subItemFilters","clickItemImplementation","getRootHarnessLoader","harnessLoaderFor","getText","hasSubmenu","matchesSelector","getSubmenu","locatorFactory","items","length","Error","JSON","stringify","menu","MatContextMenuHarness","relativeX","relativeY","rightClick","hasClass"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"paginator-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/paginator/testing/paginator-harness.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\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {MatSelectHarness} from '../../select/testing';\nimport {coerceNumberProperty} from '@angular/cdk/coercion';\nimport {PaginatorHarnessFilters} from './paginator-harness-filters';\n\n/** Harness for interacting with a mat-paginator in tests. */\nexport class MatPaginatorHarness extends ComponentHarness {\n /** Selector used to find paginator instances. */\n static hostSelector = '.mat-mdc-paginator';\n private _nextButton = this.locatorFor('.mat-mdc-paginator-navigation-next');\n private _previousButton = this.locatorFor('.mat-mdc-paginator-navigation-previous');\n private _firstPageButton = this.locatorForOptional('.mat-mdc-paginator-navigation-first');\n private _lastPageButton = this.locatorForOptional('.mat-mdc-paginator-navigation-last');\n _select = this.locatorForOptional(\n MatSelectHarness.with({\n ancestor: '.mat-mdc-paginator-page-size',\n }),\n );\n private _pageSizeFallback = this.locatorFor('.mat-mdc-paginator-page-size-value');\n _rangeLabel = this.locatorFor('.mat-mdc-paginator-range-label');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a paginator with specific attributes.\n * @param options Options for filtering which paginator instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatPaginatorHarness>(\n this: ComponentHarnessConstructor<T>,\n options: PaginatorHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /** Goes to the next page in the paginator. */\n async goToNextPage(): Promise<void> {\n return (await this._nextButton()).click();\n }\n\n /** Returns whether or not the next page button is disabled. */\n async isNextPageDisabled(): Promise<boolean> {\n const disabledValue = await (await this._nextButton()).getAttribute('aria-disabled');\n return disabledValue == 'true';\n }\n\n /* Returns whether or not the previous page button is disabled. */\n async isPreviousPageDisabled(): Promise<boolean> {\n const disabledValue = await (await this._previousButton()).getAttribute('aria-disabled');\n return disabledValue == 'true';\n }\n\n /** Goes to the previous page in the paginator. */\n async goToPreviousPage(): Promise<void> {\n return (await this._previousButton()).click();\n }\n\n /** Goes to the first page in the paginator. */\n async goToFirstPage(): Promise<void> {\n const button = await this._firstPageButton();\n\n // The first page button isn't enabled by default so we need to check for it.\n if (!button) {\n throw Error(\n 'Could not find first page button inside paginator. ' +\n 'Make sure that `showFirstLastButtons` is enabled.',\n );\n }\n\n return button.click();\n }\n\n /** Goes to the last page in the paginator. */\n async goToLastPage(): Promise<void> {\n const button = await this._lastPageButton();\n\n // The last page button isn't enabled by default so we need to check for it.\n if (!button) {\n throw Error(\n 'Could not find last page button inside paginator. ' +\n 'Make sure that `showFirstLastButtons` is enabled.',\n );\n }\n\n return button.click();\n }\n\n /**\n * Sets the page size of the paginator.\n * @param size Page size that should be select.\n */\n async setPageSize(size: number): Promise<void> {\n const select = await this._select();\n\n // The select is only available if the `pageSizeOptions` are\n // set to an array with more than one item.\n if (!select) {\n throw Error(\n 'Cannot find page size selector in paginator. ' +\n 'Make sure that the `pageSizeOptions` have been configured.',\n );\n }\n\n return select.clickOptions({text: `${size}`});\n }\n\n /** Gets the page size of the paginator. */\n async getPageSize(): Promise<number> {\n const select = await this._select();\n const value = select ? select.getValueText() : (await this._pageSizeFallback()).text();\n return coerceNumberProperty(await value);\n }\n\n /** Gets the text of the range label of the paginator. */\n async getRangeLabel(): Promise<string> {\n return (await this._rangeLabel()).text();\n }\n}\n"],"names":["MatPaginatorHarness","ComponentHarness","hostSelector","_nextButton","locatorFor","_previousButton","_firstPageButton","locatorForOptional","_lastPageButton","_select","MatSelectHarness","with","ancestor","_pageSizeFallback","_rangeLabel","options","HarnessPredicate","goToNextPage","click","isNextPageDisabled","disabledValue","getAttribute","isPreviousPageDisabled","goToPreviousPage","goToFirstPage","button","Error","goToLastPage","setPageSize","size","select","clickOptions","text","getPageSize","value","getValueText","coerceNumberProperty","getRangeLabel"],"mappings":"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"}
{"version":3,"file":"paginator-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/paginator/testing/paginator-harness.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\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {MatSelectHarness} from '../../select/testing';\nimport {coerceNumberProperty} from '@angular/cdk/coercion';\nimport {PaginatorHarnessFilters} from './paginator-harness-filters';\n\n/** Harness for interacting with a mat-paginator in tests. */\nexport class MatPaginatorHarness extends ComponentHarness {\n /** Selector used to find paginator instances. */\n static hostSelector = '.mat-mdc-paginator';\n private _nextButton = this.locatorFor('.mat-mdc-paginator-navigation-next');\n private _previousButton = this.locatorFor('.mat-mdc-paginator-navigation-previous');\n private _firstPageButton = this.locatorForOptional('.mat-mdc-paginator-navigation-first');\n private _lastPageButton = this.locatorForOptional('.mat-mdc-paginator-navigation-last');\n _select = this.locatorForOptional(\n MatSelectHarness.with({\n ancestor: '.mat-mdc-paginator-page-size',\n }),\n );\n private _pageSizeFallback = this.locatorFor('.mat-mdc-paginator-page-size-value');\n _rangeLabel = this.locatorFor('.mat-mdc-paginator-range-label');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a paginator with specific attributes.\n * @param options Options for filtering which paginator instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatPaginatorHarness>(\n this: ComponentHarnessConstructor<T>,\n options: PaginatorHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /** Goes to the next page in the paginator. */\n async goToNextPage(): Promise<void> {\n return (await this._nextButton()).click();\n }\n\n /** Returns whether or not the next page button is disabled. */\n async isNextPageDisabled(): Promise<boolean> {\n const disabledValue = await (await this._nextButton()).getAttribute('aria-disabled');\n return disabledValue == 'true';\n }\n\n /* Returns whether or not the previous page button is disabled. */\n async isPreviousPageDisabled(): Promise<boolean> {\n const disabledValue = await (await this._previousButton()).getAttribute('aria-disabled');\n return disabledValue == 'true';\n }\n\n /** Goes to the previous page in the paginator. */\n async goToPreviousPage(): Promise<void> {\n return (await this._previousButton()).click();\n }\n\n /** Goes to the first page in the paginator. */\n async goToFirstPage(): Promise<void> {\n const button = await this._firstPageButton();\n\n // The first page button isn't enabled by default so we need to check for it.\n if (!button) {\n throw Error(\n 'Could not find first page button inside paginator. ' +\n 'Make sure that `showFirstLastButtons` is enabled.',\n );\n }\n\n return button.click();\n }\n\n /** Goes to the last page in the paginator. */\n async goToLastPage(): Promise<void> {\n const button = await this._lastPageButton();\n\n // The last page button isn't enabled by default so we need to check for it.\n if (!button) {\n throw Error(\n 'Could not find last page button inside paginator. ' +\n 'Make sure that `showFirstLastButtons` is enabled.',\n );\n }\n\n return button.click();\n }\n\n /**\n * Sets the page size of the paginator.\n * @param size Page size that should be select.\n */\n async setPageSize(size: number): Promise<void> {\n const select = await this._select();\n\n // The select is only available if the `pageSizeOptions` are\n // set to an array with more than one item.\n if (!select) {\n throw Error(\n 'Cannot find page size selector in paginator. ' +\n 'Make sure that the `pageSizeOptions` have been configured.',\n );\n }\n\n return select.clickOptions({text: `${size}`});\n }\n\n /** Gets the page size of the paginator. */\n async getPageSize(): Promise<number> {\n const select = await this._select();\n const value = select ? select.getValueText() : (await this._pageSizeFallback()).text();\n return coerceNumberProperty(await value);\n }\n\n /** Gets the text of the range label of the paginator. */\n async getRangeLabel(): Promise<string> {\n return (await this._rangeLabel()).text();\n }\n}\n"],"names":["MatPaginatorHarness","ComponentHarness","hostSelector","_nextButton","locatorFor","_previousButton","_firstPageButton","locatorForOptional","_lastPageButton","_select","MatSelectHarness","with","ancestor","_pageSizeFallback","_rangeLabel","options","HarnessPredicate","goToNextPage","click","isNextPageDisabled","disabledValue","getAttribute","isPreviousPageDisabled","goToPreviousPage","goToFirstPage","button","Error","goToLastPage","setPageSize","size","select","clickOptions","text","getPageSize","value","getValueText","coerceNumberProperty","getRangeLabel"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"paginator.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/paginator/paginator-intl.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/paginator/paginator.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/paginator/paginator.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/paginator/paginator-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\nimport {Injectable} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n/**\n * To modify the labels and text displayed, create a new instance of MatPaginatorIntl and\n * include it in a custom provider\n */\n@Injectable({providedIn: 'root'})\nexport class MatPaginatorIntl {\n /**\n * Stream to emit from when labels are changed. Use this to notify components when the labels have\n * changed after initialization.\n */\n readonly changes: Subject<void> = new Subject<void>();\n\n /** A label for the page size selector. */\n itemsPerPageLabel: string = 'Items per page:';\n\n /** A label for the button that increments the current page. */\n nextPageLabel: string = 'Next page';\n\n /** A label for the button that decrements the current page. */\n previousPageLabel: string = 'Previous page';\n\n /** A label for the button that moves to the first page. */\n firstPageLabel: string = 'First page';\n\n /** A label for the button that moves to the last page. */\n lastPageLabel: string = 'Last page';\n\n /** A label for the range of items within the current page and the length of the whole list. */\n getRangeLabel: (page: number, pageSize: number, length: number) => string = (\n page: number,\n pageSize: number,\n length: number,\n ) => {\n if (length == 0 || pageSize == 0) {\n return `0 of ${length}`;\n }\n\n length = Math.max(length, 0);\n\n const startIndex = page * pageSize;\n\n // If the start index exceeds the list length, do not try and fix the end index to the end.\n const endIndex =\n startIndex < length ? Math.min(startIndex + pageSize, length) : startIndex + pageSize;\n\n return `${startIndex + 1} – ${endIndex} of ${length}`;\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 ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n InjectionToken,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n numberAttribute,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {MatOption, ThemePalette} from '../core';\nimport {MatSelect} from '../select';\nimport {MatIconButton} from '../button';\nimport {MatTooltip} from '../tooltip';\nimport {MatFormField, MatFormFieldAppearance} from '../form-field';\nimport {Observable, ReplaySubject, Subscription} from 'rxjs';\nimport {MatPaginatorIntl} from './paginator-intl';\n\n/** The default page size if there is no page size and there are no provided page size options. */\nconst DEFAULT_PAGE_SIZE = 50;\n\n/** Object that can used to configure the underlying `MatSelect` inside a `MatPaginator`. */\nexport interface MatPaginatorSelectConfig {\n /** Whether to center the active option over the trigger. */\n disableOptionCentering?: boolean;\n\n /** Classes to be passed to the select panel. */\n panelClass?: string | string[] | Set<string> | {[key: string]: any};\n}\n\n/**\n * Change event object that is emitted when the user selects a\n * different page size or navigates to another page.\n */\nexport class PageEvent {\n /** The current page index. */\n pageIndex!: number;\n\n /**\n * Index of the page that was selected previously.\n * @breaking-change 8.0.0 To be made into a required property.\n */\n previousPageIndex?: number;\n\n /** The current page size. */\n pageSize!: number;\n\n /** The current total number of items being paged. */\n length!: number;\n}\n\n// Note that while `MatPaginatorDefaultOptions` and `MAT_PAGINATOR_DEFAULT_OPTIONS` are identical\n// between the MDC and non-MDC versions, we have to duplicate them, because the type of\n// `formFieldAppearance` is narrower in the MDC version.\n\n/** Object that can be used to configure the default options for the paginator module. */\nexport interface MatPaginatorDefaultOptions {\n /** Number of items to display on a page. By default set to 50. */\n pageSize?: number;\n\n /** The set of provided page size options to display to the user. */\n pageSizeOptions?: number[];\n\n /** Whether to hide the page size selection UI from the user. */\n hidePageSize?: boolean;\n\n /** Whether to show the first/last buttons UI to the user. */\n showFirstLastButtons?: boolean;\n\n /** The default form-field appearance to apply to the page size options selector. */\n formFieldAppearance?: MatFormFieldAppearance;\n}\n\n/** Injection token that can be used to provide the default options for the paginator module. */\nexport const MAT_PAGINATOR_DEFAULT_OPTIONS = new InjectionToken<MatPaginatorDefaultOptions>(\n 'MAT_PAGINATOR_DEFAULT_OPTIONS',\n);\n\n/**\n * Component to provide navigation between paged information. Displays the size of the current\n * page, user-selectable options to change that size, what items are being shown, and\n * navigational button to go to the previous or next page.\n */\n@Component({\n selector: 'mat-paginator',\n exportAs: 'matPaginator',\n templateUrl: 'paginator.html',\n styleUrl: 'paginator.css',\n host: {\n 'class': 'mat-mdc-paginator',\n 'role': 'group',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [MatFormField, MatSelect, MatOption, MatIconButton, MatTooltip],\n})\nexport class MatPaginator implements OnInit, OnDestroy {\n _intl = inject(MatPaginatorIntl);\n private _changeDetectorRef = inject(ChangeDetectorRef);\n\n /** If set, styles the \"page size\" form field with the designated style. */\n _formFieldAppearance?: MatFormFieldAppearance;\n\n /** ID for the DOM node containing the paginator's items per page label. */\n readonly _pageSizeLabelId = inject(_IdGenerator).getId('mat-paginator-page-size-label-');\n\n private _intlChanges: Subscription;\n private _isInitialized = false;\n private _initializedStream = new ReplaySubject<void>(1);\n\n /**\n * Theme color of the underlying form controls. This API is supported in M2\n * themes only,it has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/paginator/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input() color: ThemePalette;\n\n /** The zero-based page index of the displayed list of items. Defaulted to 0. */\n @Input({transform: numberAttribute})\n get pageIndex(): number {\n return this._pageIndex;\n }\n set pageIndex(value: number) {\n this._pageIndex = Math.max(value || 0, 0);\n this._changeDetectorRef.markForCheck();\n }\n private _pageIndex = 0;\n\n /** The length of the total number of items that are being paginated. Defaulted to 0. */\n @Input({transform: numberAttribute})\n get length(): number {\n return this._length;\n }\n set length(value: number) {\n this._length = value || 0;\n this._changeDetectorRef.markForCheck();\n }\n private _length = 0;\n\n /** Number of items to display on a page. By default set to 50. */\n @Input({transform: numberAttribute})\n get pageSize(): number {\n return this._pageSize;\n }\n set pageSize(value: number) {\n this._pageSize = Math.max(value || 0, 0);\n this._updateDisplayedPageSizeOptions();\n }\n private _pageSize!: number;\n\n /** The set of provided page size options to display to the user. */\n @Input()\n get pageSizeOptions(): number[] {\n return this._pageSizeOptions;\n }\n set pageSizeOptions(value: number[] | readonly number[]) {\n this._pageSizeOptions = (value || ([] as number[])).map(p => numberAttribute(p, 0));\n this._updateDisplayedPageSizeOptions();\n }\n private _pageSizeOptions: number[] = [];\n\n /** Whether to hide the page size selection UI from the user. */\n @Input({transform: booleanAttribute})\n hidePageSize: boolean = false;\n\n /** Whether to show the first/last buttons UI to the user. */\n @Input({transform: booleanAttribute})\n showFirstLastButtons: boolean = false;\n\n /** Used to configure the underlying `MatSelect` inside the paginator. */\n @Input() selectConfig: MatPaginatorSelectConfig = {};\n\n /** Whether the paginator is disabled. */\n @Input({transform: booleanAttribute})\n disabled: boolean = false;\n\n /** Event emitted when the paginator changes the page size or page index. */\n @Output() readonly page: EventEmitter<PageEvent> = new EventEmitter<PageEvent>();\n\n /** Displayed set of page size options. Will be sorted and include current page size. */\n _displayedPageSizeOptions!: number[];\n\n /** Emits when the paginator is initialized. */\n initialized: Observable<void> = this._initializedStream;\n\n /** Inserted by Angular inject() migration for backwards compatibility */\n constructor(...args: unknown[]);\n\n constructor() {\n const _intl = this._intl;\n const defaults = inject<MatPaginatorDefaultOptions>(MAT_PAGINATOR_DEFAULT_OPTIONS, {\n optional: true,\n });\n\n this._intlChanges = _intl.changes.subscribe(() => this._changeDetectorRef.markForCheck());\n\n if (defaults) {\n const {pageSize, pageSizeOptions, hidePageSize, showFirstLastButtons} = defaults;\n\n if (pageSize != null) {\n this._pageSize = pageSize;\n }\n\n if (pageSizeOptions != null) {\n this._pageSizeOptions = pageSizeOptions;\n }\n\n if (hidePageSize != null) {\n this.hidePageSize = hidePageSize;\n }\n\n if (showFirstLastButtons != null) {\n this.showFirstLastButtons = showFirstLastButtons;\n }\n }\n\n this._formFieldAppearance = defaults?.formFieldAppearance || 'outline';\n }\n\n ngOnInit() {\n this._isInitialized = true;\n this._updateDisplayedPageSizeOptions();\n this._initializedStream.next();\n }\n\n ngOnDestroy() {\n this._initializedStream.complete();\n this._intlChanges.unsubscribe();\n }\n\n /** Advances to the next page if it exists. */\n nextPage(): void {\n if (this.hasNextPage()) {\n this._navigate(this.pageIndex + 1);\n }\n }\n\n /** Move back to the previous page if it exists. */\n previousPage(): void {\n if (this.hasPreviousPage()) {\n this._navigate(this.pageIndex - 1);\n }\n }\n\n /** Move to the first page if not already there. */\n firstPage(): void {\n // hasPreviousPage being false implies at the start\n if (this.hasPreviousPage()) {\n this._navigate(0);\n }\n }\n\n /** Move to the last page if not already there. */\n lastPage(): void {\n // hasNextPage being false implies at the end\n if (this.hasNextPage()) {\n this._navigate(this.getNumberOfPages() - 1);\n }\n }\n\n /** Whether there is a previous page. */\n hasPreviousPage(): boolean {\n return this.pageIndex >= 1 && this.pageSize != 0;\n }\n\n /** Whether there is a next page. */\n hasNextPage(): boolean {\n const maxPageIndex = this.getNumberOfPages() - 1;\n return this.pageIndex < maxPageIndex && this.pageSize != 0;\n }\n\n /** Calculate the number of pages */\n getNumberOfPages(): number {\n if (!this.pageSize) {\n return 0;\n }\n\n return Math.ceil(this.length / this.pageSize);\n }\n\n /**\n * Changes the page size so that the first item displayed on the page will still be\n * displayed using the new page size.\n *\n * For example, if the page size is 10 and on the second page (items indexed 10-19) then\n * switching so that the page size is 5 will set the third page as the current page so\n * that the 10th item will still be displayed.\n */\n _changePageSize(pageSize: number) {\n // Current page needs to be updated to reflect the new page size. Navigate to the page\n // containing the previous page's first item.\n const startIndex = this.pageIndex * this.pageSize;\n const previousPageIndex = this.pageIndex;\n\n this.pageIndex = Math.floor(startIndex / pageSize) || 0;\n this.pageSize = pageSize;\n this._emitPageEvent(previousPageIndex);\n }\n\n /** Checks whether the buttons for going forwards should be disabled. */\n _nextButtonsDisabled() {\n return this.disabled || !this.hasNextPage();\n }\n\n /** Checks whether the buttons for going backwards should be disabled. */\n _previousButtonsDisabled() {\n return this.disabled || !this.hasPreviousPage();\n }\n\n /**\n * Updates the list of page size options to display to the user. Includes making sure that\n * the page size is an option and that the list is sorted.\n */\n private _updateDisplayedPageSizeOptions() {\n if (!this._isInitialized) {\n return;\n }\n\n // If no page size is provided, use the first page size option or the default page size.\n if (!this.pageSize) {\n this._pageSize =\n this.pageSizeOptions.length != 0 ? this.pageSizeOptions[0] : DEFAULT_PAGE_SIZE;\n }\n\n this._displayedPageSizeOptions = this.pageSizeOptions.slice();\n\n if (this._displayedPageSizeOptions.indexOf(this.pageSize) === -1) {\n this._displayedPageSizeOptions.push(this.pageSize);\n }\n\n // Sort the numbers using a number-specific sort function.\n this._displayedPageSizeOptions.sort((a, b) => a - b);\n this._changeDetectorRef.markForCheck();\n }\n\n /** Emits an event notifying that a change of the paginator's properties has been triggered. */\n private _emitPageEvent(previousPageIndex: number) {\n this.page.emit({\n previousPageIndex,\n pageIndex: this.pageIndex,\n pageSize: this.pageSize,\n length: this.length,\n });\n }\n\n /** Navigates to a specific page index. */\n private _navigate(index: number) {\n const previousIndex = this.pageIndex;\n\n if (index !== previousIndex) {\n this.pageIndex = index;\n this._emitPageEvent(previousIndex);\n }\n }\n\n /**\n * Callback invoked when one of the navigation buttons is called.\n * @param targetIndex Index to which the paginator should navigate.\n * @param isDisabled Whether the button is disabled.\n */\n protected _buttonClicked(targetIndex: number, isDisabled: boolean) {\n // Note that normally disabled buttons won't dispatch the click event, but the paginator ones\n // do, because we're using `disabledInteractive` to allow them to be focusable. We need to\n // check here to avoid the navigation.\n if (!isDisabled) {\n this._navigate(targetIndex);\n }\n }\n}\n","<div class=\"mat-mdc-paginator-outer-container\">\n <div class=\"mat-mdc-paginator-container\">\n @if (!hidePageSize) {\n <div class=\"mat-mdc-paginator-page-size\">\n <div class=\"mat-mdc-paginator-page-size-label\" [attr.id]=\"_pageSizeLabelId\" aria-hidden=\"true\">\n {{_intl.itemsPerPageLabel}}\n </div>\n\n @if (_displayedPageSizeOptions.length > 1) {\n <mat-form-field\n [appearance]=\"_formFieldAppearance!\"\n [color]=\"color\"\n class=\"mat-mdc-paginator-page-size-select\">\n <mat-select\n #selectRef\n [value]=\"pageSize\"\n [disabled]=\"disabled\"\n [aria-labelledby]=\"_pageSizeLabelId\"\n [panelClass]=\"selectConfig.panelClass || ''\"\n [disableOptionCentering]=\"selectConfig.disableOptionCentering\"\n (selectionChange)=\"_changePageSize($event.value)\"\n hideSingleSelectionIndicator>\n @for (pageSizeOption of _displayedPageSizeOptions; track pageSizeOption) {\n <mat-option [value]=\"pageSizeOption\">\n {{pageSizeOption}}\n </mat-option>\n }\n </mat-select>\n <div class=\"mat-mdc-paginator-touch-target\" (click)=\"selectRef.open()\"></div>\n </mat-form-field>\n }\n\n @if (_displayedPageSizeOptions.length <= 1) {\n <div class=\"mat-mdc-paginator-page-size-value\">{{pageSize}}</div>\n }\n </div>\n }\n\n <div class=\"mat-mdc-paginator-range-actions\">\n <div class=\"mat-mdc-paginator-range-label\" aria-atomic=\"true\" aria-live=\"polite\" role=\"status\">\n {{_intl.getRangeLabel(pageIndex, pageSize, length)}}\n </div>\n\n <!--\n The buttons use `disabledInteractive` so that they can retain focus if they become disabled,\n otherwise focus is moved to the document body. However, users should not be able to navigate\n into these buttons, so `tabindex` is set to -1 when disabled.\n -->\n\n @if (showFirstLastButtons) {\n <button matIconButton type=\"button\"\n class=\"mat-mdc-paginator-navigation-first\"\n (click)=\"_buttonClicked(0, _previousButtonsDisabled())\"\n [attr.aria-label]=\"_intl.firstPageLabel\"\n [matTooltip]=\"_intl.firstPageLabel\"\n [matTooltipDisabled]=\"_previousButtonsDisabled()\"\n matTooltipPosition=\"above\"\n [disabled]=\"_previousButtonsDisabled()\"\n [tabindex]=\"_previousButtonsDisabled() ? -1 : null\"\n disabledInteractive>\n <svg class=\"mat-mdc-paginator-icon\"\n viewBox=\"0 0 24 24\"\n focusable=\"false\"\n aria-hidden=\"true\">\n <path d=\"M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6zM6 6h2v12H6z\"/>\n </svg>\n </button>\n }\n <button matIconButton type=\"button\"\n class=\"mat-mdc-paginator-navigation-previous\"\n (click)=\"_buttonClicked(pageIndex - 1, _previousButtonsDisabled())\"\n [attr.aria-label]=\"_intl.previousPageLabel\"\n [matTooltip]=\"_intl.previousPageLabel\"\n [matTooltipDisabled]=\"_previousButtonsDisabled()\"\n matTooltipPosition=\"above\"\n [disabled]=\"_previousButtonsDisabled()\"\n [tabindex]=\"_previousButtonsDisabled() ? -1 : null\"\n disabledInteractive>\n <svg class=\"mat-mdc-paginator-icon\"\n viewBox=\"0 0 24 24\"\n focusable=\"false\"\n aria-hidden=\"true\">\n <path d=\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\"/>\n </svg>\n </button>\n <button matIconButton type=\"button\"\n class=\"mat-mdc-paginator-navigation-next\"\n (click)=\"_buttonClicked(pageIndex + 1, _nextButtonsDisabled())\"\n [attr.aria-label]=\"_intl.nextPageLabel\"\n [matTooltip]=\"_intl.nextPageLabel\"\n [matTooltipDisabled]=\"_nextButtonsDisabled()\"\n matTooltipPosition=\"above\"\n [disabled]=\"_nextButtonsDisabled()\"\n [tabindex]=\"_nextButtonsDisabled() ? -1 : null\"\n disabledInteractive>\n <svg class=\"mat-mdc-paginator-icon\"\n viewBox=\"0 0 24 24\"\n focusable=\"false\"\n aria-hidden=\"true\">\n <path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"/>\n </svg>\n </button>\n @if (showFirstLastButtons) {\n <button matIconButton type=\"button\"\n class=\"mat-mdc-paginator-navigation-last\"\n (click)=\"_buttonClicked(getNumberOfPages() - 1, _nextButtonsDisabled())\"\n [attr.aria-label]=\"_intl.lastPageLabel\"\n [matTooltip]=\"_intl.lastPageLabel\"\n [matTooltipDisabled]=\"_nextButtonsDisabled()\"\n matTooltipPosition=\"above\"\n [disabled]=\"_nextButtonsDisabled()\"\n [tabindex]=\"_nextButtonsDisabled() ? -1 : null\"\n disabledInteractive>\n <svg class=\"mat-mdc-paginator-icon\"\n viewBox=\"0 0 24 24\"\n focusable=\"false\"\n aria-hidden=\"true\">\n <path d=\"M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6zM16 6h2v12h-2z\"/>\n </svg>\n </button>\n }\n </div>\n </div>\n</div>\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 {NgModule} from '@angular/core';\nimport {MatButtonModule} from '../button';\nimport {MatSelectModule} from '../select';\nimport {MatTooltipModule} from '../tooltip';\nimport {MatPaginator} from './paginator';\n\n@NgModule({\n imports: [MatButtonModule, MatSelectModule, MatTooltipModule, MatPaginator],\n exports: [MatPaginator],\n})\nexport class MatPaginatorModule {}\n"],"names":["MatPaginatorIntl","changes","Subject","itemsPerPageLabel","nextPageLabel","previousPageLabel","firstPageLabel","lastPageLabel","getRangeLabel","page","pageSize","length","Math","max","startIndex","endIndex","min","deps","target","i0","ɵɵFactoryTarget","Injectable","ɵprov","ɵɵngDeclareInjectable","minVersion","version","ngImport","type","decorators","providedIn","DEFAULT_PAGE_SIZE","PageEvent","pageIndex","previousPageIndex","MAT_PAGINATOR_DEFAULT_OPTIONS","InjectionToken","MatPaginator","_intl","inject","_changeDetectorRef","ChangeDetectorRef","_formFieldAppearance","_pageSizeLabelId","_IdGenerator","getId","_intlChanges","_isInitialized","_initializedStream","ReplaySubject","color","_pageIndex","value","markForCheck","_length","_pageSize","_updateDisplayedPageSizeOptions","pageSizeOptions","_pageSizeOptions","map","p","numberAttribute","hidePageSize","showFirstLastButtons","selectConfig","disabled","EventEmitter","_displayedPageSizeOptions","initialized","constructor","defaults","optional","subscribe","formFieldAppearance","ngOnInit","next","ngOnDestroy","complete","unsubscribe","nextPage","hasNextPage","_navigate","previousPage","hasPreviousPage","firstPage","lastPage","getNumberOfPages","maxPageIndex","ceil","_changePageSize","floor","_emitPageEvent","_nextButtonsDisabled","_previousButtonsDisabled","slice","indexOf","push","sort","a","b","emit","index","previousIndex","_buttonClicked","targetIndex","isDisabled","Component","isStandalone","selector","inputs","booleanAttribute","outputs","host","attributes","classAttribute","exportAs","template","styles","dependencies","kind","MatFormField","MatSelect","MatOption","MatIconButton","MatTooltip","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","imports","Input","transform","Output","MatPaginatorModule","NgModule","MatButtonModule","MatSelectModule","MatTooltipModule","exports","ɵinj","ɵɵngDeclareInjector","args"],"mappings":"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"}
{"version":3,"file":"paginator.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/paginator/paginator-intl.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/paginator/paginator.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/paginator/paginator.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/paginator/paginator-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\nimport {Injectable} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n/**\n * To modify the labels and text displayed, create a new instance of MatPaginatorIntl and\n * include it in a custom provider\n */\n@Injectable({providedIn: 'root'})\nexport class MatPaginatorIntl {\n /**\n * Stream to emit from when labels are changed. Use this to notify components when the labels have\n * changed after initialization.\n */\n readonly changes: Subject<void> = new Subject<void>();\n\n /** A label for the page size selector. */\n itemsPerPageLabel: string = 'Items per page:';\n\n /** A label for the button that increments the current page. */\n nextPageLabel: string = 'Next page';\n\n /** A label for the button that decrements the current page. */\n previousPageLabel: string = 'Previous page';\n\n /** A label for the button that moves to the first page. */\n firstPageLabel: string = 'First page';\n\n /** A label for the button that moves to the last page. */\n lastPageLabel: string = 'Last page';\n\n /** A label for the range of items within the current page and the length of the whole list. */\n getRangeLabel: (page: number, pageSize: number, length: number) => string = (\n page: number,\n pageSize: number,\n length: number,\n ) => {\n if (length == 0 || pageSize == 0) {\n return `0 of ${length}`;\n }\n\n length = Math.max(length, 0);\n\n const startIndex = page * pageSize;\n\n // If the start index exceeds the list length, do not try and fix the end index to the end.\n const endIndex =\n startIndex < length ? Math.min(startIndex + pageSize, length) : startIndex + pageSize;\n\n return `${startIndex + 1} – ${endIndex} of ${length}`;\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 ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n InjectionToken,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n numberAttribute,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {MatOption, ThemePalette} from '../core';\nimport {MatSelect} from '../select';\nimport {MatIconButton} from '../button';\nimport {MatTooltip} from '../tooltip';\nimport {MatFormField, MatFormFieldAppearance} from '../form-field';\nimport {Observable, ReplaySubject, Subscription} from 'rxjs';\nimport {MatPaginatorIntl} from './paginator-intl';\n\n/** The default page size if there is no page size and there are no provided page size options. */\nconst DEFAULT_PAGE_SIZE = 50;\n\n/** Object that can used to configure the underlying `MatSelect` inside a `MatPaginator`. */\nexport interface MatPaginatorSelectConfig {\n /** Whether to center the active option over the trigger. */\n disableOptionCentering?: boolean;\n\n /** Classes to be passed to the select panel. */\n panelClass?: string | string[] | Set<string> | {[key: string]: any};\n}\n\n/**\n * Change event object that is emitted when the user selects a\n * different page size or navigates to another page.\n */\nexport class PageEvent {\n /** The current page index. */\n pageIndex!: number;\n\n /**\n * Index of the page that was selected previously.\n * @breaking-change 8.0.0 To be made into a required property.\n */\n previousPageIndex?: number;\n\n /** The current page size. */\n pageSize!: number;\n\n /** The current total number of items being paged. */\n length!: number;\n}\n\n// Note that while `MatPaginatorDefaultOptions` and `MAT_PAGINATOR_DEFAULT_OPTIONS` are identical\n// between the MDC and non-MDC versions, we have to duplicate them, because the type of\n// `formFieldAppearance` is narrower in the MDC version.\n\n/** Object that can be used to configure the default options for the paginator module. */\nexport interface MatPaginatorDefaultOptions {\n /** Number of items to display on a page. By default set to 50. */\n pageSize?: number;\n\n /** The set of provided page size options to display to the user. */\n pageSizeOptions?: number[];\n\n /** Whether to hide the page size selection UI from the user. */\n hidePageSize?: boolean;\n\n /** Whether to show the first/last buttons UI to the user. */\n showFirstLastButtons?: boolean;\n\n /** The default form-field appearance to apply to the page size options selector. */\n formFieldAppearance?: MatFormFieldAppearance;\n}\n\n/** Injection token that can be used to provide the default options for the paginator module. */\nexport const MAT_PAGINATOR_DEFAULT_OPTIONS = new InjectionToken<MatPaginatorDefaultOptions>(\n 'MAT_PAGINATOR_DEFAULT_OPTIONS',\n);\n\n/**\n * Component to provide navigation between paged information. Displays the size of the current\n * page, user-selectable options to change that size, what items are being shown, and\n * navigational button to go to the previous or next page.\n */\n@Component({\n selector: 'mat-paginator',\n exportAs: 'matPaginator',\n templateUrl: 'paginator.html',\n styleUrl: 'paginator.css',\n host: {\n 'class': 'mat-mdc-paginator',\n 'role': 'group',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [MatFormField, MatSelect, MatOption, MatIconButton, MatTooltip],\n})\nexport class MatPaginator implements OnInit, OnDestroy {\n _intl = inject(MatPaginatorIntl);\n private _changeDetectorRef = inject(ChangeDetectorRef);\n\n /** If set, styles the \"page size\" form field with the designated style. */\n _formFieldAppearance?: MatFormFieldAppearance;\n\n /** ID for the DOM node containing the paginator's items per page label. */\n readonly _pageSizeLabelId = inject(_IdGenerator).getId('mat-paginator-page-size-label-');\n\n private _intlChanges: Subscription;\n private _isInitialized = false;\n private _initializedStream = new ReplaySubject<void>(1);\n\n /**\n * Theme color of the underlying form controls. This API is supported in M2\n * themes only,it has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/paginator/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input() color: ThemePalette;\n\n /** The zero-based page index of the displayed list of items. Defaulted to 0. */\n @Input({transform: numberAttribute})\n get pageIndex(): number {\n return this._pageIndex;\n }\n set pageIndex(value: number) {\n this._pageIndex = Math.max(value || 0, 0);\n this._changeDetectorRef.markForCheck();\n }\n private _pageIndex = 0;\n\n /** The length of the total number of items that are being paginated. Defaulted to 0. */\n @Input({transform: numberAttribute})\n get length(): number {\n return this._length;\n }\n set length(value: number) {\n this._length = value || 0;\n this._changeDetectorRef.markForCheck();\n }\n private _length = 0;\n\n /** Number of items to display on a page. By default set to 50. */\n @Input({transform: numberAttribute})\n get pageSize(): number {\n return this._pageSize;\n }\n set pageSize(value: number) {\n this._pageSize = Math.max(value || 0, 0);\n this._updateDisplayedPageSizeOptions();\n }\n private _pageSize!: number;\n\n /** The set of provided page size options to display to the user. */\n @Input()\n get pageSizeOptions(): number[] {\n return this._pageSizeOptions;\n }\n set pageSizeOptions(value: number[] | readonly number[]) {\n this._pageSizeOptions = (value || ([] as number[])).map(p => numberAttribute(p, 0));\n this._updateDisplayedPageSizeOptions();\n }\n private _pageSizeOptions: number[] = [];\n\n /** Whether to hide the page size selection UI from the user. */\n @Input({transform: booleanAttribute})\n hidePageSize: boolean = false;\n\n /** Whether to show the first/last buttons UI to the user. */\n @Input({transform: booleanAttribute})\n showFirstLastButtons: boolean = false;\n\n /** Used to configure the underlying `MatSelect` inside the paginator. */\n @Input() selectConfig: MatPaginatorSelectConfig = {};\n\n /** Whether the paginator is disabled. */\n @Input({transform: booleanAttribute})\n disabled: boolean = false;\n\n /** Event emitted when the paginator changes the page size or page index. */\n @Output() readonly page: EventEmitter<PageEvent> = new EventEmitter<PageEvent>();\n\n /** Displayed set of page size options. Will be sorted and include current page size. */\n _displayedPageSizeOptions!: number[];\n\n /** Emits when the paginator is initialized. */\n initialized: Observable<void> = this._initializedStream;\n\n /** Inserted by Angular inject() migration for backwards compatibility */\n constructor(...args: unknown[]);\n\n constructor() {\n const _intl = this._intl;\n const defaults = inject<MatPaginatorDefaultOptions>(MAT_PAGINATOR_DEFAULT_OPTIONS, {\n optional: true,\n });\n\n this._intlChanges = _intl.changes.subscribe(() => this._changeDetectorRef.markForCheck());\n\n if (defaults) {\n const {pageSize, pageSizeOptions, hidePageSize, showFirstLastButtons} = defaults;\n\n if (pageSize != null) {\n this._pageSize = pageSize;\n }\n\n if (pageSizeOptions != null) {\n this._pageSizeOptions = pageSizeOptions;\n }\n\n if (hidePageSize != null) {\n this.hidePageSize = hidePageSize;\n }\n\n if (showFirstLastButtons != null) {\n this.showFirstLastButtons = showFirstLastButtons;\n }\n }\n\n this._formFieldAppearance = defaults?.formFieldAppearance || 'outline';\n }\n\n ngOnInit() {\n this._isInitialized = true;\n this._updateDisplayedPageSizeOptions();\n this._initializedStream.next();\n }\n\n ngOnDestroy() {\n this._initializedStream.complete();\n this._intlChanges.unsubscribe();\n }\n\n /** Advances to the next page if it exists. */\n nextPage(): void {\n if (this.hasNextPage()) {\n this._navigate(this.pageIndex + 1);\n }\n }\n\n /** Move back to the previous page if it exists. */\n previousPage(): void {\n if (this.hasPreviousPage()) {\n this._navigate(this.pageIndex - 1);\n }\n }\n\n /** Move to the first page if not already there. */\n firstPage(): void {\n // hasPreviousPage being false implies at the start\n if (this.hasPreviousPage()) {\n this._navigate(0);\n }\n }\n\n /** Move to the last page if not already there. */\n lastPage(): void {\n // hasNextPage being false implies at the end\n if (this.hasNextPage()) {\n this._navigate(this.getNumberOfPages() - 1);\n }\n }\n\n /** Whether there is a previous page. */\n hasPreviousPage(): boolean {\n return this.pageIndex >= 1 && this.pageSize != 0;\n }\n\n /** Whether there is a next page. */\n hasNextPage(): boolean {\n const maxPageIndex = this.getNumberOfPages() - 1;\n return this.pageIndex < maxPageIndex && this.pageSize != 0;\n }\n\n /** Calculate the number of pages */\n getNumberOfPages(): number {\n if (!this.pageSize) {\n return 0;\n }\n\n return Math.ceil(this.length / this.pageSize);\n }\n\n /**\n * Changes the page size so that the first item displayed on the page will still be\n * displayed using the new page size.\n *\n * For example, if the page size is 10 and on the second page (items indexed 10-19) then\n * switching so that the page size is 5 will set the third page as the current page so\n * that the 10th item will still be displayed.\n */\n _changePageSize(pageSize: number) {\n // Current page needs to be updated to reflect the new page size. Navigate to the page\n // containing the previous page's first item.\n const startIndex = this.pageIndex * this.pageSize;\n const previousPageIndex = this.pageIndex;\n\n this.pageIndex = Math.floor(startIndex / pageSize) || 0;\n this.pageSize = pageSize;\n this._emitPageEvent(previousPageIndex);\n }\n\n /** Checks whether the buttons for going forwards should be disabled. */\n _nextButtonsDisabled() {\n return this.disabled || !this.hasNextPage();\n }\n\n /** Checks whether the buttons for going backwards should be disabled. */\n _previousButtonsDisabled() {\n return this.disabled || !this.hasPreviousPage();\n }\n\n /**\n * Updates the list of page size options to display to the user. Includes making sure that\n * the page size is an option and that the list is sorted.\n */\n private _updateDisplayedPageSizeOptions() {\n if (!this._isInitialized) {\n return;\n }\n\n // If no page size is provided, use the first page size option or the default page size.\n if (!this.pageSize) {\n this._pageSize =\n this.pageSizeOptions.length != 0 ? this.pageSizeOptions[0] : DEFAULT_PAGE_SIZE;\n }\n\n this._displayedPageSizeOptions = this.pageSizeOptions.slice();\n\n if (this._displayedPageSizeOptions.indexOf(this.pageSize) === -1) {\n this._displayedPageSizeOptions.push(this.pageSize);\n }\n\n // Sort the numbers using a number-specific sort function.\n this._displayedPageSizeOptions.sort((a, b) => a - b);\n this._changeDetectorRef.markForCheck();\n }\n\n /** Emits an event notifying that a change of the paginator's properties has been triggered. */\n private _emitPageEvent(previousPageIndex: number) {\n this.page.emit({\n previousPageIndex,\n pageIndex: this.pageIndex,\n pageSize: this.pageSize,\n length: this.length,\n });\n }\n\n /** Navigates to a specific page index. */\n private _navigate(index: number) {\n const previousIndex = this.pageIndex;\n\n if (index !== previousIndex) {\n this.pageIndex = index;\n this._emitPageEvent(previousIndex);\n }\n }\n\n /**\n * Callback invoked when one of the navigation buttons is called.\n * @param targetIndex Index to which the paginator should navigate.\n * @param isDisabled Whether the button is disabled.\n */\n protected _buttonClicked(targetIndex: number, isDisabled: boolean) {\n // Note that normally disabled buttons won't dispatch the click event, but the paginator ones\n // do, because we're using `disabledInteractive` to allow them to be focusable. We need to\n // check here to avoid the navigation.\n if (!isDisabled) {\n this._navigate(targetIndex);\n }\n }\n}\n","<div class=\"mat-mdc-paginator-outer-container\">\n <div class=\"mat-mdc-paginator-container\">\n @if (!hidePageSize) {\n <div class=\"mat-mdc-paginator-page-size\">\n <div class=\"mat-mdc-paginator-page-size-label\" [attr.id]=\"_pageSizeLabelId\" aria-hidden=\"true\">\n {{_intl.itemsPerPageLabel}}\n </div>\n\n @if (_displayedPageSizeOptions.length > 1) {\n <mat-form-field\n [appearance]=\"_formFieldAppearance!\"\n [color]=\"color\"\n class=\"mat-mdc-paginator-page-size-select\">\n <mat-select\n #selectRef\n [value]=\"pageSize\"\n [disabled]=\"disabled\"\n [aria-labelledby]=\"_pageSizeLabelId\"\n [panelClass]=\"selectConfig.panelClass || ''\"\n [disableOptionCentering]=\"selectConfig.disableOptionCentering\"\n (selectionChange)=\"_changePageSize($event.value)\"\n hideSingleSelectionIndicator>\n @for (pageSizeOption of _displayedPageSizeOptions; track pageSizeOption) {\n <mat-option [value]=\"pageSizeOption\">\n {{pageSizeOption}}\n </mat-option>\n }\n </mat-select>\n <div class=\"mat-mdc-paginator-touch-target\" (click)=\"selectRef.open()\"></div>\n </mat-form-field>\n }\n\n @if (_displayedPageSizeOptions.length <= 1) {\n <div class=\"mat-mdc-paginator-page-size-value\">{{pageSize}}</div>\n }\n </div>\n }\n\n <div class=\"mat-mdc-paginator-range-actions\">\n <div class=\"mat-mdc-paginator-range-label\" aria-atomic=\"true\" aria-live=\"polite\" role=\"status\">\n {{_intl.getRangeLabel(pageIndex, pageSize, length)}}\n </div>\n\n <!--\n The buttons use `disabledInteractive` so that they can retain focus if they become disabled,\n otherwise focus is moved to the document body. However, users should not be able to navigate\n into these buttons, so `tabindex` is set to -1 when disabled.\n -->\n\n @if (showFirstLastButtons) {\n <button matIconButton type=\"button\"\n class=\"mat-mdc-paginator-navigation-first\"\n (click)=\"_buttonClicked(0, _previousButtonsDisabled())\"\n [attr.aria-label]=\"_intl.firstPageLabel\"\n [matTooltip]=\"_intl.firstPageLabel\"\n [matTooltipDisabled]=\"_previousButtonsDisabled()\"\n matTooltipPosition=\"above\"\n [disabled]=\"_previousButtonsDisabled()\"\n [tabindex]=\"_previousButtonsDisabled() ? -1 : null\"\n disabledInteractive>\n <svg class=\"mat-mdc-paginator-icon\"\n viewBox=\"0 0 24 24\"\n focusable=\"false\"\n aria-hidden=\"true\">\n <path d=\"M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6zM6 6h2v12H6z\"/>\n </svg>\n </button>\n }\n <button matIconButton type=\"button\"\n class=\"mat-mdc-paginator-navigation-previous\"\n (click)=\"_buttonClicked(pageIndex - 1, _previousButtonsDisabled())\"\n [attr.aria-label]=\"_intl.previousPageLabel\"\n [matTooltip]=\"_intl.previousPageLabel\"\n [matTooltipDisabled]=\"_previousButtonsDisabled()\"\n matTooltipPosition=\"above\"\n [disabled]=\"_previousButtonsDisabled()\"\n [tabindex]=\"_previousButtonsDisabled() ? -1 : null\"\n disabledInteractive>\n <svg class=\"mat-mdc-paginator-icon\"\n viewBox=\"0 0 24 24\"\n focusable=\"false\"\n aria-hidden=\"true\">\n <path d=\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\"/>\n </svg>\n </button>\n <button matIconButton type=\"button\"\n class=\"mat-mdc-paginator-navigation-next\"\n (click)=\"_buttonClicked(pageIndex + 1, _nextButtonsDisabled())\"\n [attr.aria-label]=\"_intl.nextPageLabel\"\n [matTooltip]=\"_intl.nextPageLabel\"\n [matTooltipDisabled]=\"_nextButtonsDisabled()\"\n matTooltipPosition=\"above\"\n [disabled]=\"_nextButtonsDisabled()\"\n [tabindex]=\"_nextButtonsDisabled() ? -1 : null\"\n disabledInteractive>\n <svg class=\"mat-mdc-paginator-icon\"\n viewBox=\"0 0 24 24\"\n focusable=\"false\"\n aria-hidden=\"true\">\n <path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"/>\n </svg>\n </button>\n @if (showFirstLastButtons) {\n <button matIconButton type=\"button\"\n class=\"mat-mdc-paginator-navigation-last\"\n (click)=\"_buttonClicked(getNumberOfPages() - 1, _nextButtonsDisabled())\"\n [attr.aria-label]=\"_intl.lastPageLabel\"\n [matTooltip]=\"_intl.lastPageLabel\"\n [matTooltipDisabled]=\"_nextButtonsDisabled()\"\n matTooltipPosition=\"above\"\n [disabled]=\"_nextButtonsDisabled()\"\n [tabindex]=\"_nextButtonsDisabled() ? -1 : null\"\n disabledInteractive>\n <svg class=\"mat-mdc-paginator-icon\"\n viewBox=\"0 0 24 24\"\n focusable=\"false\"\n aria-hidden=\"true\">\n <path d=\"M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6zM16 6h2v12h-2z\"/>\n </svg>\n </button>\n }\n </div>\n </div>\n</div>\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 {NgModule} from '@angular/core';\nimport {MatButtonModule} from '../button';\nimport {MatSelectModule} from '../select';\nimport {MatTooltipModule} from '../tooltip';\nimport {MatPaginator} from './paginator';\n\n@NgModule({\n imports: [MatButtonModule, MatSelectModule, MatTooltipModule, MatPaginator],\n exports: [MatPaginator],\n})\nexport class MatPaginatorModule {}\n"],"names":["MatPaginatorIntl","changes","Subject","itemsPerPageLabel","nextPageLabel","previousPageLabel","firstPageLabel","lastPageLabel","getRangeLabel","page","pageSize","length","Math","max","startIndex","endIndex","min","deps","target","i0","ɵɵFactoryTarget","Injectable","ɵprov","ɵɵngDeclareInjectable","minVersion","version","ngImport","type","decorators","providedIn","DEFAULT_PAGE_SIZE","PageEvent","pageIndex","previousPageIndex","MAT_PAGINATOR_DEFAULT_OPTIONS","InjectionToken","MatPaginator","_intl","inject","_changeDetectorRef","ChangeDetectorRef","_formFieldAppearance","_pageSizeLabelId","_IdGenerator","getId","_intlChanges","_isInitialized","_initializedStream","ReplaySubject","color","_pageIndex","value","markForCheck","_length","_pageSize","_updateDisplayedPageSizeOptions","pageSizeOptions","_pageSizeOptions","map","p","numberAttribute","hidePageSize","showFirstLastButtons","selectConfig","disabled","EventEmitter","_displayedPageSizeOptions","initialized","constructor","defaults","optional","subscribe","formFieldAppearance","ngOnInit","next","ngOnDestroy","complete","unsubscribe","nextPage","hasNextPage","_navigate","previousPage","hasPreviousPage","firstPage","lastPage","getNumberOfPages","maxPageIndex","ceil","_changePageSize","floor","_emitPageEvent","_nextButtonsDisabled","_previousButtonsDisabled","slice","indexOf","push","sort","a","b","emit","index","previousIndex","_buttonClicked","targetIndex","isDisabled","Component","isStandalone","selector","inputs","booleanAttribute","outputs","host","attributes","classAttribute","exportAs","template","styles","dependencies","kind","MatFormField","MatSelect","MatOption","MatIconButton","MatTooltip","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","imports","Input","transform","Output","MatPaginatorModule","NgModule","MatButtonModule","MatSelectModule","MatTooltipModule","exports","ɵinj","ɵɵngDeclareInjector","args"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAgBaA,gBAAgB,CAAA;AAKlBC,EAAAA,OAAO,GAAkB,IAAIC,OAAO,EAAQ;AAGrDC,EAAAA,iBAAiB,GAAW,iBAAiB;AAG7CC,EAAAA,aAAa,GAAW,WAAW;AAGnCC,EAAAA,iBAAiB,GAAW,eAAe;AAG3CC,EAAAA,cAAc,GAAW,YAAY;AAGrCC,EAAAA,aAAa,GAAW,WAAW;AAGnCC,EAAAA,aAAa,GAA+DA,CAC1EC,IAAY,EACZC,QAAgB,EAChBC,MAAc,KACZ;AACF,IAAA,IAAIA,MAAM,IAAI,CAAC,IAAID,QAAQ,IAAI,CAAC,EAAE;MAChC,OAAO,CAAA,KAAA,EAAQC,MAAM,CAAA,CAAE;AACzB,IAAA;IAEAA,MAAM,GAAGC,IAAI,CAACC,GAAG,CAACF,MAAM,EAAE,CAAC,CAAC;AAE5B,IAAA,MAAMG,UAAU,GAAGL,IAAI,GAAGC,QAAQ;AAGlC,IAAA,MAAMK,QAAQ,GACZD,UAAU,GAAGH,MAAM,GAAGC,IAAI,CAACI,GAAG,CAACF,UAAU,GAAGJ,QAAQ,EAAEC,MAAM,CAAC,GAAGG,UAAU,GAAGJ,QAAQ;IAEvF,OAAO,CAAA,EAAGI,UAAU,GAAG,CAAC,MAAMC,QAAQ,CAAA,IAAA,EAAOJ,MAAM,CAAA,CAAE;EACvD,CAAC;;;;;UAzCUX,gBAAgB;AAAAiB,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;AAAhB,EAAA,OAAAC,KAAA,GAAAH,EAAA,CAAAI,qBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,QAAA,EAAAP,EAAA;AAAAQ,IAAAA,IAAA,EAAA3B,gBAAgB;gBADJ;AAAM,GAAA,CAAA;;;;;;QAClBA,gBAAgB;AAAA4B,EAAAA,UAAA,EAAA,CAAA;UAD5BP,UAAU;WAAC;AAACQ,MAAAA,UAAU,EAAE;KAAO;;;;ACkBhC,MAAMC,iBAAiB,GAAG,EAAE;MAefC,SAAS,CAAA;EAEpBC,SAAS;EAMTC,iBAAiB;EAGjBvB,QAAQ;EAGRC,MAAM;AACP;MAyBYuB,6BAA6B,GAAG,IAAIC,cAAc,CAC7D,+BAA+B;MAqBpBC,YAAY,CAAA;AACvBC,EAAAA,KAAK,GAAGC,MAAM,CAACtC,gBAAgB,CAAC;AACxBuC,EAAAA,kBAAkB,GAAGD,MAAM,CAACE,iBAAiB,CAAC;EAGtDC,oBAAoB;EAGXC,gBAAgB,GAAGJ,MAAM,CAACK,YAAY,CAAC,CAACC,KAAK,CAAC,gCAAgC,CAAC;EAEhFC,YAAY;AACZC,EAAAA,cAAc,GAAG,KAAK;AACtBC,EAAAA,kBAAkB,GAAG,IAAIC,aAAa,CAAO,CAAC,CAAC;EAS9CC,KAAK;EAGd,IACIjB,SAASA,GAAA;IACX,OAAO,IAAI,CAACkB,UAAU;AACxB,EAAA;EACA,IAAIlB,SAASA,CAACmB,KAAa,EAAA;AACzB,IAAA,IAAI,CAACD,UAAU,GAAGtC,IAAI,CAACC,GAAG,CAACsC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;AACzC,IAAA,IAAI,CAACZ,kBAAkB,CAACa,YAAY,EAAE;AACxC,EAAA;AACQF,EAAAA,UAAU,GAAG,CAAC;EAGtB,IACIvC,MAAMA,GAAA;IACR,OAAO,IAAI,CAAC0C,OAAO;AACrB,EAAA;EACA,IAAI1C,MAAMA,CAACwC,KAAa,EAAA;AACtB,IAAA,IAAI,CAACE,OAAO,GAAGF,KAAK,IAAI,CAAC;AACzB,IAAA,IAAI,CAACZ,kBAAkB,CAACa,YAAY,EAAE;AACxC,EAAA;AACQC,EAAAA,OAAO,GAAG,CAAC;EAGnB,IACI3C,QAAQA,GAAA;IACV,OAAO,IAAI,CAAC4C,SAAS;AACvB,EAAA;EACA,IAAI5C,QAAQA,CAACyC,KAAa,EAAA;AACxB,IAAA,IAAI,CAACG,SAAS,GAAG1C,IAAI,CAACC,GAAG,CAACsC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;IACxC,IAAI,CAACI,+BAA+B,EAAE;AACxC,EAAA;EACQD,SAAS;EAGjB,IACIE,eAAeA,GAAA;IACjB,OAAO,IAAI,CAACC,gBAAgB;AAC9B,EAAA;EACA,IAAID,eAAeA,CAACL,KAAmC,EAAA;AACrD,IAAA,IAAI,CAACM,gBAAgB,GAAG,CAACN,KAAK,IAAK,EAAe,EAAEO,GAAG,CAACC,CAAC,IAAIC,eAAe,CAACD,CAAC,EAAE,CAAC,CAAC,CAAC;IACnF,IAAI,CAACJ,+BAA+B,EAAE;AACxC,EAAA;AACQE,EAAAA,gBAAgB,GAAa,EAAE;AAIvCI,EAAAA,YAAY,GAAY,KAAK;AAI7BC,EAAAA,oBAAoB,GAAY,KAAK;EAG5BC,YAAY,GAA6B,EAAE;AAIpDC,EAAAA,QAAQ,GAAY,KAAK;AAGNvD,EAAAA,IAAI,GAA4B,IAAIwD,YAAY,EAAa;EAGhFC,yBAAyB;EAGzBC,WAAW,GAAqB,IAAI,CAACpB,kBAAkB;AAKvDqB,EAAAA,WAAAA,GAAA;AACE,IAAA,MAAM/B,KAAK,GAAG,IAAI,CAACA,KAAK;AACxB,IAAA,MAAMgC,QAAQ,GAAG/B,MAAM,CAA6BJ,6BAA6B,EAAE;AACjFoC,MAAAA,QAAQ,EAAE;AACX,KAAA,CAAC;AAEF,IAAA,IAAI,CAACzB,YAAY,GAAGR,KAAK,CAACpC,OAAO,CAACsE,SAAS,CAAC,MAAM,IAAI,CAAChC,kBAAkB,CAACa,YAAY,EAAE,CAAC;AAEzF,IAAA,IAAIiB,QAAQ,EAAE;MACZ,MAAM;QAAC3D,QAAQ;QAAE8C,eAAe;QAAEK,YAAY;AAAEC,QAAAA;AAAoB,OAAC,GAAGO,QAAQ;MAEhF,IAAI3D,QAAQ,IAAI,IAAI,EAAE;QACpB,IAAI,CAAC4C,SAAS,GAAG5C,QAAQ;AAC3B,MAAA;MAEA,IAAI8C,eAAe,IAAI,IAAI,EAAE;QAC3B,IAAI,CAACC,gBAAgB,GAAGD,eAAe;AACzC,MAAA;MAEA,IAAIK,YAAY,IAAI,IAAI,EAAE;QACxB,IAAI,CAACA,YAAY,GAAGA,YAAY;AAClC,MAAA;MAEA,IAAIC,oBAAoB,IAAI,IAAI,EAAE;QAChC,IAAI,CAACA,oBAAoB,GAAGA,oBAAoB;AAClD,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACrB,oBAAoB,GAAG4B,QAAQ,EAAEG,mBAAmB,IAAI,SAAS;AACxE,EAAA;AAEAC,EAAAA,QAAQA,GAAA;IACN,IAAI,CAAC3B,cAAc,GAAG,IAAI;IAC1B,IAAI,CAACS,+BAA+B,EAAE;AACtC,IAAA,IAAI,CAACR,kBAAkB,CAAC2B,IAAI,EAAE;AAChC,EAAA;AAEAC,EAAAA,WAAWA,GAAA;AACT,IAAA,IAAI,CAAC5B,kBAAkB,CAAC6B,QAAQ,EAAE;AAClC,IAAA,IAAI,CAAC/B,YAAY,CAACgC,WAAW,EAAE;AACjC,EAAA;AAGAC,EAAAA,QAAQA,GAAA;AACN,IAAA,IAAI,IAAI,CAACC,WAAW,EAAE,EAAE;MACtB,IAAI,CAACC,SAAS,CAAC,IAAI,CAAChD,SAAS,GAAG,CAAC,CAAC;AACpC,IAAA;AACF,EAAA;AAGAiD,EAAAA,YAAYA,GAAA;AACV,IAAA,IAAI,IAAI,CAACC,eAAe,EAAE,EAAE;MAC1B,IAAI,CAACF,SAAS,CAAC,IAAI,CAAChD,SAAS,GAAG,CAAC,CAAC;AACpC,IAAA;AACF,EAAA;AAGAmD,EAAAA,SAASA,GAAA;AAEP,IAAA,IAAI,IAAI,CAACD,eAAe,EAAE,EAAE;AAC1B,MAAA,IAAI,CAACF,SAAS,CAAC,CAAC,CAAC;AACnB,IAAA;AACF,EAAA;AAGAI,EAAAA,QAAQA,GAAA;AAEN,IAAA,IAAI,IAAI,CAACL,WAAW,EAAE,EAAE;MACtB,IAAI,CAACC,SAAS,CAAC,IAAI,CAACK,gBAAgB,EAAE,GAAG,CAAC,CAAC;AAC7C,IAAA;AACF,EAAA;AAGAH,EAAAA,eAAeA,GAAA;IACb,OAAO,IAAI,CAAClD,SAAS,IAAI,CAAC,IAAI,IAAI,CAACtB,QAAQ,IAAI,CAAC;AAClD,EAAA;AAGAqE,EAAAA,WAAWA,GAAA;IACT,MAAMO,YAAY,GAAG,IAAI,CAACD,gBAAgB,EAAE,GAAG,CAAC;IAChD,OAAO,IAAI,CAACrD,SAAS,GAAGsD,YAAY,IAAI,IAAI,CAAC5E,QAAQ,IAAI,CAAC;AAC5D,EAAA;AAGA2E,EAAAA,gBAAgBA,GAAA;AACd,IAAA,IAAI,CAAC,IAAI,CAAC3E,QAAQ,EAAE;AAClB,MAAA,OAAO,CAAC;AACV,IAAA;IAEA,OAAOE,IAAI,CAAC2E,IAAI,CAAC,IAAI,CAAC5E,MAAM,GAAG,IAAI,CAACD,QAAQ,CAAC;AAC/C,EAAA;EAUA8E,eAAeA,CAAC9E,QAAgB,EAAA;IAG9B,MAAMI,UAAU,GAAG,IAAI,CAACkB,SAAS,GAAG,IAAI,CAACtB,QAAQ;AACjD,IAAA,MAAMuB,iBAAiB,GAAG,IAAI,CAACD,SAAS;AAExC,IAAA,IAAI,CAACA,SAAS,GAAGpB,IAAI,CAAC6E,KAAK,CAAC3E,UAAU,GAAGJ,QAAQ,CAAC,IAAI,CAAC;IACvD,IAAI,CAACA,QAAQ,GAAGA,QAAQ;AACxB,IAAA,IAAI,CAACgF,cAAc,CAACzD,iBAAiB,CAAC;AACxC,EAAA;AAGA0D,EAAAA,oBAAoBA,GAAA;IAClB,OAAO,IAAI,CAAC3B,QAAQ,IAAI,CAAC,IAAI,CAACe,WAAW,EAAE;AAC7C,EAAA;AAGAa,EAAAA,wBAAwBA,GAAA;IACtB,OAAO,IAAI,CAAC5B,QAAQ,IAAI,CAAC,IAAI,CAACkB,eAAe,EAAE;AACjD,EAAA;AAMQ3B,EAAAA,+BAA+BA,GAAA;AACrC,IAAA,IAAI,CAAC,IAAI,CAACT,cAAc,EAAE;AACxB,MAAA;AACF,IAAA;AAGA,IAAA,IAAI,CAAC,IAAI,CAACpC,QAAQ,EAAE;AAClB,MAAA,IAAI,CAAC4C,SAAS,GACZ,IAAI,CAACE,eAAe,CAAC7C,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC6C,eAAe,CAAC,CAAC,CAAC,GAAG1B,iBAAiB;AAClF,IAAA;IAEA,IAAI,CAACoC,yBAAyB,GAAG,IAAI,CAACV,eAAe,CAACqC,KAAK,EAAE;AAE7D,IAAA,IAAI,IAAI,CAAC3B,yBAAyB,CAAC4B,OAAO,CAAC,IAAI,CAACpF,QAAQ,CAAC,KAAK,EAAE,EAAE;MAChE,IAAI,CAACwD,yBAAyB,CAAC6B,IAAI,CAAC,IAAI,CAACrF,QAAQ,CAAC;AACpD,IAAA;AAGA,IAAA,IAAI,CAACwD,yBAAyB,CAAC8B,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,GAAGC,CAAC,CAAC;AACpD,IAAA,IAAI,CAAC3D,kBAAkB,CAACa,YAAY,EAAE;AACxC,EAAA;EAGQsC,cAAcA,CAACzD,iBAAyB,EAAA;AAC9C,IAAA,IAAI,CAACxB,IAAI,CAAC0F,IAAI,CAAC;MACblE,iBAAiB;MACjBD,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBtB,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBC,MAAM,EAAE,IAAI,CAACA;AACd,KAAA,CAAC;AACJ,EAAA;EAGQqE,SAASA,CAACoB,KAAa,EAAA;AAC7B,IAAA,MAAMC,aAAa,GAAG,IAAI,CAACrE,SAAS;IAEpC,IAAIoE,KAAK,KAAKC,aAAa,EAAE;MAC3B,IAAI,CAACrE,SAAS,GAAGoE,KAAK;AACtB,MAAA,IAAI,CAACV,cAAc,CAACW,aAAa,CAAC;AACpC,IAAA;AACF,EAAA;AAOUC,EAAAA,cAAcA,CAACC,WAAmB,EAAEC,UAAmB,EAAA;IAI/D,IAAI,CAACA,UAAU,EAAE;AACf,MAAA,IAAI,CAACxB,SAAS,CAACuB,WAAW,CAAC;AAC7B,IAAA;AACF,EAAA;;;;;UAjRWnE,YAAY;AAAAnB,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAqF;AAAA,GAAA,CAAA;;;;UAAZrE,YAAY;AAAAsE,IAAAA,YAAA,EAAA,IAAA;AAAAC,IAAAA,QAAA,EAAA,eAAA;AAAAC,IAAAA,MAAA,EAAA;AAAA3D,MAAAA,KAAA,EAAA,OAAA;AAAAjB,MAAAA,SAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAwBJ4B,eAAe,CAAA;AAAAjD,MAAAA,MAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAWfiD,eAAe;yCAWfA,eAAe,CAAA;AAAAJ,MAAAA,eAAA,EAAA,iBAAA;AAAAK,MAAAA,YAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAsBfgD,gBAAgB,CAAA;AAAA/C,MAAAA,oBAAA,EAAA,CAAA,sBAAA,EAAA,sBAAA,EAIhB+C,gBAAgB,CAAA;AAAA9C,MAAAA,YAAA,EAAA,cAAA;AAAAC,MAAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAOhB6C,gBAAgB;KAAA;AAAAC,IAAAA,OAAA,EAAA;AAAArG,MAAAA,IAAA,EAAA;KAAA;AAAAsG,IAAAA,IAAA,EAAA;AAAAC,MAAAA,UAAA,EAAA;AAAA,QAAA,MAAA,EAAA;OAAA;AAAAC,MAAAA,cAAA,EAAA;KAAA;IAAAC,QAAA,EAAA,CAAA,cAAA,CAAA;AAAAxF,IAAAA,QAAA,EAAAP,EAAA;AAAAgG,IAAAA,QAAA,EC7LrC,m+KA4HA;IAAAC,MAAA,EAAA,CAAA,0oGAAA,CAAA;AAAAC,IAAAA,YAAA,EAAA,CAAA;AAAAC,MAAAA,IAAA,EAAA,WAAA;AAAA3F,MAAAA,IAAA,EDhBY4F,YAAY;AAAAZ,MAAAA,QAAA,EAAA,gBAAA;AAAAC,MAAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA;MAAAM,QAAA,EAAA,CAAA,cAAA;AAAA,KAAA,EAAA;AAAAI,MAAAA,IAAA,EAAA,WAAA;AAAA3F,MAAAA,IAAA,EAAE6F,SAAS;;;;;;;YAAEC,SAAS;AAAAd,MAAAA,QAAA,EAAA,YAAA;AAAAC,MAAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA;MAAAE,OAAA,EAAA,CAAA,mBAAA,CAAA;MAAAI,QAAA,EAAA,CAAA,WAAA;AAAA,KAAA,EAAA;AAAAI,MAAAA,IAAA,EAAA,WAAA;AAAA3F,MAAAA,IAAA,EAAE+F,aAAa;AAAAf,MAAAA,QAAA,EAAA,sFAAA;AAAAO,MAAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA;AAAA,KAAA,EAAA;AAAAI,MAAAA,IAAA,EAAA,WAAA;AAAA3F,MAAAA,IAAA,EAAEgG,UAAU;AAAAhB,MAAAA,QAAA,EAAA,cAAA;AAAAC,MAAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA;MAAAM,QAAA,EAAA,CAAA,YAAA;AAAA,KAAA,CAAA;AAAAU,IAAAA,eAAA,EAAAzG,EAAA,CAAA0G,uBAAA,CAAAC,MAAA;AAAAC,IAAAA,aAAA,EAAA5G,EAAA,CAAA6G,iBAAA,CAAAC;AAAA,GAAA,CAAA;;;;;;QAE5D7F,YAAY;AAAAR,EAAAA,UAAA,EAAA,CAAA;UAbxB6E,SAAS;;gBACE,eAAe;AAAAS,MAAAA,QAAA,EACf,cAAc;AAAAH,MAAAA,IAAA,EAGlB;AACJ,QAAA,OAAO,EAAE,mBAAmB;AAC5B,QAAA,MAAM,EAAE;OACT;MAAAa,eAAA,EACgBC,uBAAuB,CAACC,MAAM;qBAChCE,iBAAiB,CAACC,IAAI;MAAAC,OAAA,EAC5B,CAACX,YAAY,EAAEC,SAAS,EAAEC,SAAS,EAAEC,aAAa,EAAEC,UAAU,CAAC;AAAAR,MAAAA,QAAA,EAAA,m+KAAA;MAAAC,MAAA,EAAA,CAAA,0oGAAA;KAAA;;;;;YAuBvEe;;;YAGAA,KAAK;aAAC;AAACC,QAAAA,SAAS,EAAExE;OAAgB;;;YAWlCuE,KAAK;aAAC;AAACC,QAAAA,SAAS,EAAExE;OAAgB;;;YAWlCuE,KAAK;aAAC;AAACC,QAAAA,SAAS,EAAExE;OAAgB;;;YAWlCuE;;;YAWAA,KAAK;aAAC;AAACC,QAAAA,SAAS,EAAEvB;OAAiB;;;YAInCsB,KAAK;aAAC;AAACC,QAAAA,SAAS,EAAEvB;OAAiB;;;YAInCsB;;;YAGAA,KAAK;aAAC;AAACC,QAAAA,SAAS,EAAEvB;OAAiB;;;YAInCwB;;;;;ME/KUC,kBAAkB,CAAA;;;;;UAAlBA,kBAAkB;AAAArH,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAmH;AAAA,GAAA,CAAA;;;;;UAAlBD,kBAAkB;IAAAJ,OAAA,EAAA,CAHnBM,eAAe,EAAEC,eAAe,EAAEC,gBAAgB,EAAEtG,YAAY,CAAA;IAAAuG,OAAA,EAAA,CAChEvG,YAAY;AAAA,GAAA,CAAA;AAEX,EAAA,OAAAwG,IAAA,GAAAzH,EAAA,CAAA0H,mBAAA,CAAA;AAAArH,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,QAAA,EAAAP,EAAA;AAAAQ,IAAAA,IAAA,EAAA2G,kBAAkB;cAHnBE,eAAe,EAAEC,eAAe,EAAEC,gBAAgB,EAAEtG,YAAY;AAAA,GAAA,CAAA;;;;;;QAG/DkG,kBAAkB;AAAA1G,EAAAA,UAAA,EAAA,CAAA;UAJ9B2G,QAAQ;AAACO,IAAAA,IAAA,EAAA,CAAA;MACRZ,OAAO,EAAE,CAACM,eAAe,EAAEC,eAAe,EAAEC,gBAAgB,EAAEtG,YAAY,CAAC;MAC3EuG,OAAO,EAAE,CAACvG,YAAY;KACvB;;;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"progress-bar-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/progress-bar/testing/progress-bar-harness.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\nimport {coerceNumberProperty} from '@angular/cdk/coercion';\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {ProgressBarHarnessFilters} from './progress-bar-harness-filters';\n\n/** Harness for interacting with a `mat-progress-bar` in tests. */\nexport class MatProgressBarHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-progress-bar';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a progress bar with specific\n * attributes.\n * @param options Options for filtering which progress bar instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatProgressBarHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ProgressBarHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /** Gets a promise for the progress bar's value. */\n async getValue(): Promise<number | null> {\n const host = await this.host();\n const ariaValue = await host.getAttribute('aria-valuenow');\n return ariaValue ? coerceNumberProperty(ariaValue) : null;\n }\n\n /** Gets a promise for the progress bar's mode. */\n async getMode(): Promise<string | null> {\n return (await this.host()).getAttribute('mode');\n }\n}\n"],"names":["MatProgressBarHarness","ComponentHarness","hostSelector","with","options","HarnessPredicate","getValue","host","ariaValue","getAttribute","coerceNumberProperty","getMode"],"mappings":";;;AAiBM,MAAOA,qBAAsB,SAAQC,gBAAgB,CAAA;EACzD,OAAOC,YAAY,GAAG,uBAAuB;AAQ7C,EAAA,OAAOC,IAAIA,CAETC,OAAA,GAAqC,EAAE,EAAA;AAEvC,IAAA,OAAO,IAAIC,gBAAgB,CAAC,IAAI,EAAED,OAAO,CAAC;AAC5C,EAAA;EAGA,MAAME,QAAQA,GAAA;AACZ,IAAA,MAAMC,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;IAC9B,MAAMC,SAAS,GAAG,MAAMD,IAAI,CAACE,YAAY,CAAC,eAAe,CAAC;AAC1D,IAAA,OAAOD,SAAS,GAAGE,oBAAoB,CAACF,SAAS,CAAC,GAAG,IAAI;AAC3D,EAAA;EAGA,MAAMG,OAAOA,GAAA;IACX,OAAO,CAAC,MAAM,IAAI,CAACJ,IAAI,EAAE,EAAEE,YAAY,CAAC,MAAM,CAAC;AACjD,EAAA;;;;;"}
{"version":3,"file":"progress-bar-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/progress-bar/testing/progress-bar-harness.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\nimport {coerceNumberProperty} from '@angular/cdk/coercion';\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {ProgressBarHarnessFilters} from './progress-bar-harness-filters';\n\n/** Harness for interacting with a `mat-progress-bar` in tests. */\nexport class MatProgressBarHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-progress-bar';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a progress bar with specific\n * attributes.\n * @param options Options for filtering which progress bar instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatProgressBarHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ProgressBarHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /** Gets a promise for the progress bar's value. */\n async getValue(): Promise<number | null> {\n const host = await this.host();\n const ariaValue = await host.getAttribute('aria-valuenow');\n return ariaValue ? coerceNumberProperty(ariaValue) : null;\n }\n\n /** Gets a promise for the progress bar's mode. */\n async getMode(): Promise<string | null> {\n return (await this.host()).getAttribute('mode');\n }\n}\n"],"names":["MatProgressBarHarness","ComponentHarness","hostSelector","with","options","HarnessPredicate","getValue","host","ariaValue","getAttribute","coerceNumberProperty","getMode"],"mappings":";;;AAiBM,MAAOA,qBAAsB,SAAQC,gBAAgB,CAAA;EACzD,OAAOC,YAAY,GAAG,uBAAuB;AAQ7C,EAAA,OAAOC,IAAIA,CAETC,OAAA,GAAqC,EAAE,EAAA;AAEvC,IAAA,OAAO,IAAIC,gBAAgB,CAAC,IAAI,EAAED,OAAO,CAAC;AAC5C,EAAA;EAGA,MAAME,QAAQA,GAAA;AACZ,IAAA,MAAMC,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;IAC9B,MAAMC,SAAS,GAAG,MAAMD,IAAI,CAACE,YAAY,CAAC,eAAe,CAAC;AAC1D,IAAA,OAAOD,SAAS,GAAGE,oBAAoB,CAACF,SAAS,CAAC,GAAG,IAAI;AAC3D,EAAA;EAGA,MAAMG,OAAOA,GAAA;IACX,OAAO,CAAC,MAAM,IAAI,CAACJ,IAAI,EAAE,EAAEE,YAAY,CAAC,MAAM,CAAC;AACjD,EAAA;;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"progress-bar.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/progress-bar/progress-bar.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/progress-bar/progress-bar.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/progress-bar/progress-bar-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\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n ElementRef,\n NgZone,\n Input,\n Output,\n EventEmitter,\n AfterViewInit,\n OnDestroy,\n ChangeDetectorRef,\n InjectionToken,\n inject,\n numberAttribute,\n Renderer2,\n DOCUMENT,\n} from '@angular/core';\n\nimport {_getAnimationsState, ThemePalette} from '../core';\n\n/** Last animation end data. */\nexport interface ProgressAnimationEnd {\n value: number;\n}\n\n/** Default `mat-progress-bar` options that can be overridden. */\nexport interface MatProgressBarDefaultOptions {\n /**\n * Default theme color of the progress bar. This API is supported in M2 themes only,\n * it has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/progress-bar/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n color?: ThemePalette;\n\n /** Default mode of the progress bar. */\n mode?: ProgressBarMode;\n}\n\n/** Injection token to be used to override the default options for `mat-progress-bar`. */\nexport const MAT_PROGRESS_BAR_DEFAULT_OPTIONS = new InjectionToken<MatProgressBarDefaultOptions>(\n 'MAT_PROGRESS_BAR_DEFAULT_OPTIONS',\n);\n\n/**\n * Injection token used to provide the current location to `MatProgressBar`.\n * Used to handle server-side rendering and to stub out during unit tests.\n * @docs-private\n */\nexport const MAT_PROGRESS_BAR_LOCATION = new InjectionToken<MatProgressBarLocation>(\n 'mat-progress-bar-location',\n {\n providedIn: 'root',\n factory: () => {\n const _document = inject(DOCUMENT);\n const _location = _document ? _document.location : null;\n\n return {\n // Note that this needs to be a function, rather than a property, because Angular\n // will only resolve it once, but we want the current path on each call.\n getPathname: () => (_location ? _location.pathname + _location.search : ''),\n };\n },\n },\n);\n\n/**\n * Stubbed out location for `MatProgressBar`.\n * @docs-private\n */\nexport interface MatProgressBarLocation {\n getPathname: () => string;\n}\n\nexport type ProgressBarMode = 'determinate' | 'indeterminate' | 'buffer' | 'query';\n\n@Component({\n selector: 'mat-progress-bar',\n exportAs: 'matProgressBar',\n host: {\n 'role': 'progressbar',\n 'aria-valuemin': '0',\n 'aria-valuemax': '100',\n // set tab index to -1 so screen readers will read the aria-label\n // Note: there is a known issue with JAWS that does not read progressbar aria labels on FireFox\n 'tabindex': '-1',\n '[attr.aria-valuenow]': '_isIndeterminate() ? null : value',\n '[attr.mode]': 'mode',\n 'class': 'mat-mdc-progress-bar mdc-linear-progress',\n '[class]': '\"mat-\" + color',\n '[class._mat-animation-noopable]': '_isNoopAnimation',\n '[class.mdc-linear-progress--animation-ready]': '!_isNoopAnimation',\n '[class.mdc-linear-progress--indeterminate]': '_isIndeterminate()',\n },\n templateUrl: 'progress-bar.html',\n styleUrl: 'progress-bar.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatProgressBar implements AfterViewInit, OnDestroy {\n readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _ngZone = inject(NgZone);\n private _changeDetectorRef = inject(ChangeDetectorRef);\n private _renderer = inject(Renderer2);\n private _cleanupTransitionEnd: (() => void) | undefined;\n\n constructor(...args: unknown[]);\n\n constructor() {\n const animationsState = _getAnimationsState();\n\n const defaults = inject<MatProgressBarDefaultOptions>(MAT_PROGRESS_BAR_DEFAULT_OPTIONS, {\n optional: true,\n });\n\n this._isNoopAnimation = animationsState === 'di-disabled';\n\n if (animationsState === 'reduced-motion') {\n this._elementRef.nativeElement.classList.add('mat-progress-bar-reduced-motion');\n }\n\n if (defaults) {\n if (defaults.color) {\n this.color = this._defaultColor = defaults.color;\n }\n\n this.mode = defaults.mode || this.mode;\n }\n }\n\n /** Flag that indicates whether NoopAnimations mode is set to true. */\n _isNoopAnimation: boolean;\n\n // TODO: should be typed as `ThemePalette` but internal apps pass in arbitrary strings.\n /**\n * Theme color of the progress bar. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/progress-bar/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input()\n get color() {\n return this._color || this._defaultColor;\n }\n set color(value: string | null | undefined) {\n this._color = value;\n }\n private _color: string | null | undefined;\n private _defaultColor: ThemePalette = 'primary';\n\n /** Value of the progress bar. Defaults to zero. Mirrored to aria-valuenow. */\n @Input({transform: numberAttribute})\n get value(): number {\n return this._value;\n }\n set value(v: number) {\n this._value = clamp(v || 0);\n this._changeDetectorRef.markForCheck();\n }\n private _value = 0;\n\n /** Buffer value of the progress bar. Defaults to zero. */\n @Input({transform: numberAttribute})\n get bufferValue(): number {\n return this._bufferValue || 0;\n }\n set bufferValue(v: number) {\n this._bufferValue = clamp(v || 0);\n this._changeDetectorRef.markForCheck();\n }\n private _bufferValue = 0;\n\n /**\n * Event emitted when animation of the primary progress bar completes. This event will not\n * be emitted when animations are disabled, nor will it be emitted for modes with continuous\n * animations (indeterminate and query).\n */\n @Output() readonly animationEnd = new EventEmitter<ProgressAnimationEnd>();\n\n /**\n * Mode of the progress bar.\n *\n * Input must be one of these values: determinate, indeterminate, buffer, query, defaults to\n * 'determinate'.\n * Mirrored to mode attribute.\n */\n @Input()\n get mode(): ProgressBarMode {\n return this._mode;\n }\n set mode(value: ProgressBarMode) {\n // Note that we don't technically need a getter and a setter here,\n // but we use it to match the behavior of the existing mat-progress-bar.\n this._mode = value;\n this._changeDetectorRef.markForCheck();\n }\n private _mode: ProgressBarMode = 'determinate';\n\n ngAfterViewInit() {\n // Run outside angular so change detection didn't get triggered on every transition end\n // instead only on the animation that we care about (primary value bar's transitionend)\n this._ngZone.runOutsideAngular(() => {\n this._cleanupTransitionEnd = this._renderer.listen(\n this._elementRef.nativeElement,\n 'transitionend',\n this._transitionendHandler,\n );\n });\n }\n\n ngOnDestroy() {\n this._cleanupTransitionEnd?.();\n }\n\n /** Gets the transform style that should be applied to the primary bar. */\n _getPrimaryBarTransform(): string {\n return `scaleX(${this._isIndeterminate() ? 1 : this.value / 100})`;\n }\n\n /** Gets the `flex-basis` value that should be applied to the buffer bar. */\n _getBufferBarFlexBasis(): string {\n return `${this.mode === 'buffer' ? this.bufferValue : 100}%`;\n }\n\n /** Returns whether the progress bar is indeterminate. */\n _isIndeterminate(): boolean {\n return this.mode === 'indeterminate' || this.mode === 'query';\n }\n\n /** Event handler for `transitionend` events. */\n private _transitionendHandler = (event: TransitionEvent) => {\n if (\n this.animationEnd.observers.length === 0 ||\n !event.target ||\n !(event.target as HTMLElement).classList.contains('mdc-linear-progress__primary-bar')\n ) {\n return;\n }\n\n if (this.mode === 'determinate' || this.mode === 'buffer') {\n this._ngZone.run(() => this.animationEnd.next({value: this.value}));\n }\n };\n}\n\n/** Clamps a value to be between two numbers, by default 0 and 100. */\nfunction clamp(v: number, min = 0, max = 100) {\n return Math.max(min, Math.min(max, v));\n}\n","<!--\n All children need to be hidden for screen readers in order to support ChromeVox.\n More context in the issue: https://github.com/angular/components/issues/22165.\n-->\n<div class=\"mdc-linear-progress__buffer\" aria-hidden=\"true\">\n <div\n class=\"mdc-linear-progress__buffer-bar\"\n [style.flex-basis]=\"_getBufferBarFlexBasis()\"></div>\n <!-- Remove the dots outside of buffer mode since they can cause CSP issues (see #28938) -->\n @if (mode === 'buffer') {\n <div class=\"mdc-linear-progress__buffer-dots\"></div>\n }\n</div>\n<div\n class=\"mdc-linear-progress__bar mdc-linear-progress__primary-bar\"\n aria-hidden=\"true\"\n [style.transform]=\"_getPrimaryBarTransform()\">\n <span class=\"mdc-linear-progress__bar-inner\"></span>\n</div>\n<div class=\"mdc-linear-progress__bar mdc-linear-progress__secondary-bar\" aria-hidden=\"true\">\n <span class=\"mdc-linear-progress__bar-inner\"></span>\n</div>\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 {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\nimport {MatProgressBar} from './progress-bar';\n\n@NgModule({\n imports: [MatProgressBar],\n exports: [MatProgressBar, BidiModule],\n})\nexport class MatProgressBarModule {}\n"],"names":["MAT_PROGRESS_BAR_DEFAULT_OPTIONS","InjectionToken","MAT_PROGRESS_BAR_LOCATION","providedIn","factory","_document","inject","DOCUMENT","_location","location","getPathname","pathname","search","MatProgressBar","_elementRef","ElementRef","_ngZone","NgZone","_changeDetectorRef","ChangeDetectorRef","_renderer","Renderer2","_cleanupTransitionEnd","constructor","animationsState","_getAnimationsState","defaults","optional","_isNoopAnimation","nativeElement","classList","add","color","_defaultColor","mode","_color","value","_value","v","clamp","markForCheck","bufferValue","_bufferValue","animationEnd","EventEmitter","_mode","ngAfterViewInit","runOutsideAngular","listen","_transitionendHandler","ngOnDestroy","_getPrimaryBarTransform","_isIndeterminate","_getBufferBarFlexBasis","event","observers","length","target","contains","run","next","deps","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","isStandalone","selector","inputs","numberAttribute","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","exportAs","host","template","Input","transform","Output","min","max","Math","MatProgressBarModule","NgModule","ɵmod","ɵɵngDeclareNgModule","ngImport","imports","exports","BidiModule","ɵinj","ɵɵngDeclareInjector","args"],"mappings":"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"}
{"version":3,"file":"progress-bar.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/progress-bar/progress-bar.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/progress-bar/progress-bar.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/progress-bar/progress-bar-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\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n ElementRef,\n NgZone,\n Input,\n Output,\n EventEmitter,\n AfterViewInit,\n OnDestroy,\n ChangeDetectorRef,\n InjectionToken,\n inject,\n numberAttribute,\n Renderer2,\n DOCUMENT,\n} from '@angular/core';\n\nimport {_getAnimationsState, ThemePalette} from '../core';\n\n/** Last animation end data. */\nexport interface ProgressAnimationEnd {\n value: number;\n}\n\n/** Default `mat-progress-bar` options that can be overridden. */\nexport interface MatProgressBarDefaultOptions {\n /**\n * Default theme color of the progress bar. This API is supported in M2 themes only,\n * it has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/progress-bar/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n color?: ThemePalette;\n\n /** Default mode of the progress bar. */\n mode?: ProgressBarMode;\n}\n\n/** Injection token to be used to override the default options for `mat-progress-bar`. */\nexport const MAT_PROGRESS_BAR_DEFAULT_OPTIONS = new InjectionToken<MatProgressBarDefaultOptions>(\n 'MAT_PROGRESS_BAR_DEFAULT_OPTIONS',\n);\n\n/**\n * Injection token used to provide the current location to `MatProgressBar`.\n * Used to handle server-side rendering and to stub out during unit tests.\n * @docs-private\n */\nexport const MAT_PROGRESS_BAR_LOCATION = new InjectionToken<MatProgressBarLocation>(\n 'mat-progress-bar-location',\n {\n providedIn: 'root',\n factory: () => {\n const _document = inject(DOCUMENT);\n const _location = _document ? _document.location : null;\n\n return {\n // Note that this needs to be a function, rather than a property, because Angular\n // will only resolve it once, but we want the current path on each call.\n getPathname: () => (_location ? _location.pathname + _location.search : ''),\n };\n },\n },\n);\n\n/**\n * Stubbed out location for `MatProgressBar`.\n * @docs-private\n */\nexport interface MatProgressBarLocation {\n getPathname: () => string;\n}\n\nexport type ProgressBarMode = 'determinate' | 'indeterminate' | 'buffer' | 'query';\n\n@Component({\n selector: 'mat-progress-bar',\n exportAs: 'matProgressBar',\n host: {\n 'role': 'progressbar',\n 'aria-valuemin': '0',\n 'aria-valuemax': '100',\n // set tab index to -1 so screen readers will read the aria-label\n // Note: there is a known issue with JAWS that does not read progressbar aria labels on FireFox\n 'tabindex': '-1',\n '[attr.aria-valuenow]': '_isIndeterminate() ? null : value',\n '[attr.mode]': 'mode',\n 'class': 'mat-mdc-progress-bar mdc-linear-progress',\n '[class]': '\"mat-\" + color',\n '[class._mat-animation-noopable]': '_isNoopAnimation',\n '[class.mdc-linear-progress--animation-ready]': '!_isNoopAnimation',\n '[class.mdc-linear-progress--indeterminate]': '_isIndeterminate()',\n },\n templateUrl: 'progress-bar.html',\n styleUrl: 'progress-bar.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatProgressBar implements AfterViewInit, OnDestroy {\n readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _ngZone = inject(NgZone);\n private _changeDetectorRef = inject(ChangeDetectorRef);\n private _renderer = inject(Renderer2);\n private _cleanupTransitionEnd: (() => void) | undefined;\n\n constructor(...args: unknown[]);\n\n constructor() {\n const animationsState = _getAnimationsState();\n\n const defaults = inject<MatProgressBarDefaultOptions>(MAT_PROGRESS_BAR_DEFAULT_OPTIONS, {\n optional: true,\n });\n\n this._isNoopAnimation = animationsState === 'di-disabled';\n\n if (animationsState === 'reduced-motion') {\n this._elementRef.nativeElement.classList.add('mat-progress-bar-reduced-motion');\n }\n\n if (defaults) {\n if (defaults.color) {\n this.color = this._defaultColor = defaults.color;\n }\n\n this.mode = defaults.mode || this.mode;\n }\n }\n\n /** Flag that indicates whether NoopAnimations mode is set to true. */\n _isNoopAnimation: boolean;\n\n // TODO: should be typed as `ThemePalette` but internal apps pass in arbitrary strings.\n /**\n * Theme color of the progress bar. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/progress-bar/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input()\n get color() {\n return this._color || this._defaultColor;\n }\n set color(value: string | null | undefined) {\n this._color = value;\n }\n private _color: string | null | undefined;\n private _defaultColor: ThemePalette = 'primary';\n\n /** Value of the progress bar. Defaults to zero. Mirrored to aria-valuenow. */\n @Input({transform: numberAttribute})\n get value(): number {\n return this._value;\n }\n set value(v: number) {\n this._value = clamp(v || 0);\n this._changeDetectorRef.markForCheck();\n }\n private _value = 0;\n\n /** Buffer value of the progress bar. Defaults to zero. */\n @Input({transform: numberAttribute})\n get bufferValue(): number {\n return this._bufferValue || 0;\n }\n set bufferValue(v: number) {\n this._bufferValue = clamp(v || 0);\n this._changeDetectorRef.markForCheck();\n }\n private _bufferValue = 0;\n\n /**\n * Event emitted when animation of the primary progress bar completes. This event will not\n * be emitted when animations are disabled, nor will it be emitted for modes with continuous\n * animations (indeterminate and query).\n */\n @Output() readonly animationEnd = new EventEmitter<ProgressAnimationEnd>();\n\n /**\n * Mode of the progress bar.\n *\n * Input must be one of these values: determinate, indeterminate, buffer, query, defaults to\n * 'determinate'.\n * Mirrored to mode attribute.\n */\n @Input()\n get mode(): ProgressBarMode {\n return this._mode;\n }\n set mode(value: ProgressBarMode) {\n // Note that we don't technically need a getter and a setter here,\n // but we use it to match the behavior of the existing mat-progress-bar.\n this._mode = value;\n this._changeDetectorRef.markForCheck();\n }\n private _mode: ProgressBarMode = 'determinate';\n\n ngAfterViewInit() {\n // Run outside angular so change detection didn't get triggered on every transition end\n // instead only on the animation that we care about (primary value bar's transitionend)\n this._ngZone.runOutsideAngular(() => {\n this._cleanupTransitionEnd = this._renderer.listen(\n this._elementRef.nativeElement,\n 'transitionend',\n this._transitionendHandler,\n );\n });\n }\n\n ngOnDestroy() {\n this._cleanupTransitionEnd?.();\n }\n\n /** Gets the transform style that should be applied to the primary bar. */\n _getPrimaryBarTransform(): string {\n return `scaleX(${this._isIndeterminate() ? 1 : this.value / 100})`;\n }\n\n /** Gets the `flex-basis` value that should be applied to the buffer bar. */\n _getBufferBarFlexBasis(): string {\n return `${this.mode === 'buffer' ? this.bufferValue : 100}%`;\n }\n\n /** Returns whether the progress bar is indeterminate. */\n _isIndeterminate(): boolean {\n return this.mode === 'indeterminate' || this.mode === 'query';\n }\n\n /** Event handler for `transitionend` events. */\n private _transitionendHandler = (event: TransitionEvent) => {\n if (\n this.animationEnd.observers.length === 0 ||\n !event.target ||\n !(event.target as HTMLElement).classList.contains('mdc-linear-progress__primary-bar')\n ) {\n return;\n }\n\n if (this.mode === 'determinate' || this.mode === 'buffer') {\n this._ngZone.run(() => this.animationEnd.next({value: this.value}));\n }\n };\n}\n\n/** Clamps a value to be between two numbers, by default 0 and 100. */\nfunction clamp(v: number, min = 0, max = 100) {\n return Math.max(min, Math.min(max, v));\n}\n","<!--\n All children need to be hidden for screen readers in order to support ChromeVox.\n More context in the issue: https://github.com/angular/components/issues/22165.\n-->\n<div class=\"mdc-linear-progress__buffer\" aria-hidden=\"true\">\n <div\n class=\"mdc-linear-progress__buffer-bar\"\n [style.flex-basis]=\"_getBufferBarFlexBasis()\"></div>\n <!-- Remove the dots outside of buffer mode since they can cause CSP issues (see #28938) -->\n @if (mode === 'buffer') {\n <div class=\"mdc-linear-progress__buffer-dots\"></div>\n }\n</div>\n<div\n class=\"mdc-linear-progress__bar mdc-linear-progress__primary-bar\"\n aria-hidden=\"true\"\n [style.transform]=\"_getPrimaryBarTransform()\">\n <span class=\"mdc-linear-progress__bar-inner\"></span>\n</div>\n<div class=\"mdc-linear-progress__bar mdc-linear-progress__secondary-bar\" aria-hidden=\"true\">\n <span class=\"mdc-linear-progress__bar-inner\"></span>\n</div>\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 {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\nimport {MatProgressBar} from './progress-bar';\n\n@NgModule({\n imports: [MatProgressBar],\n exports: [MatProgressBar, BidiModule],\n})\nexport class MatProgressBarModule {}\n"],"names":["MAT_PROGRESS_BAR_DEFAULT_OPTIONS","InjectionToken","MAT_PROGRESS_BAR_LOCATION","providedIn","factory","_document","inject","DOCUMENT","_location","location","getPathname","pathname","search","MatProgressBar","_elementRef","ElementRef","_ngZone","NgZone","_changeDetectorRef","ChangeDetectorRef","_renderer","Renderer2","_cleanupTransitionEnd","constructor","animationsState","_getAnimationsState","defaults","optional","_isNoopAnimation","nativeElement","classList","add","color","_defaultColor","mode","_color","value","_value","v","clamp","markForCheck","bufferValue","_bufferValue","animationEnd","EventEmitter","_mode","ngAfterViewInit","runOutsideAngular","listen","_transitionendHandler","ngOnDestroy","_getPrimaryBarTransform","_isIndeterminate","_getBufferBarFlexBasis","event","observers","length","target","contains","run","next","deps","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","isStandalone","selector","inputs","numberAttribute","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","exportAs","host","template","Input","transform","Output","min","max","Math","MatProgressBarModule","NgModule","ɵmod","ɵɵngDeclareNgModule","ngImport","imports","exports","BidiModule","ɵinj","ɵɵngDeclareInjector","args"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"progress-spinner-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/progress-spinner/testing/progress-spinner-harness.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\nimport {coerceNumberProperty} from '@angular/cdk/coercion';\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {ProgressSpinnerMode} from '../progress-spinner';\nimport {ProgressSpinnerHarnessFilters} from './progress-spinner-harness-filters';\n\n/** Harness for interacting with a MDC based mat-progress-spinner in tests. */\nexport class MatProgressSpinnerHarness extends ComponentHarness {\n /** The selector for the host element of a `MatProgressSpinner` instance. */\n static hostSelector = '.mat-mdc-progress-spinner';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a progress spinnner with specific\n * attributes.\n * @param options Options for filtering which progress spinner instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatProgressSpinnerHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ProgressSpinnerHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /** Gets the progress spinner's value. */\n async getValue(): Promise<number | null> {\n const host = await this.host();\n const ariaValue = await host.getAttribute('aria-valuenow');\n return ariaValue ? coerceNumberProperty(ariaValue) : null;\n }\n\n /** Gets the progress spinner's mode. */\n async getMode(): Promise<ProgressSpinnerMode> {\n const modeAttr = (await this.host()).getAttribute('mode');\n return (await modeAttr) as ProgressSpinnerMode;\n }\n}\n"],"names":["MatProgressSpinnerHarness","ComponentHarness","hostSelector","with","options","HarnessPredicate","getValue","host","ariaValue","getAttribute","coerceNumberProperty","getMode","modeAttr"],"mappings":";;;AAkBM,MAAOA,yBAA0B,SAAQC,gBAAgB,CAAA;EAE7D,OAAOC,YAAY,GAAG,2BAA2B;AAQjD,EAAA,OAAOC,IAAIA,CAETC,OAAA,GAAyC,EAAE,EAAA;AAE3C,IAAA,OAAO,IAAIC,gBAAgB,CAAC,IAAI,EAAED,OAAO,CAAC;AAC5C,EAAA;EAGA,MAAME,QAAQA,GAAA;AACZ,IAAA,MAAMC,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;IAC9B,MAAMC,SAAS,GAAG,MAAMD,IAAI,CAACE,YAAY,CAAC,eAAe,CAAC;AAC1D,IAAA,OAAOD,SAAS,GAAGE,oBAAoB,CAACF,SAAS,CAAC,GAAG,IAAI;AAC3D,EAAA;EAGA,MAAMG,OAAOA,GAAA;AACX,IAAA,MAAMC,QAAQ,GAAG,CAAC,MAAM,IAAI,CAACL,IAAI,EAAE,EAAEE,YAAY,CAAC,MAAM,CAAC;AACzD,IAAA,OAAQ,MAAMG,QAAQ;AACxB,EAAA;;;;;"}
{"version":3,"file":"progress-spinner-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/progress-spinner/testing/progress-spinner-harness.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\nimport {coerceNumberProperty} from '@angular/cdk/coercion';\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {ProgressSpinnerMode} from '../progress-spinner';\nimport {ProgressSpinnerHarnessFilters} from './progress-spinner-harness-filters';\n\n/** Harness for interacting with a MDC based mat-progress-spinner in tests. */\nexport class MatProgressSpinnerHarness extends ComponentHarness {\n /** The selector for the host element of a `MatProgressSpinner` instance. */\n static hostSelector = '.mat-mdc-progress-spinner';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a progress spinnner with specific\n * attributes.\n * @param options Options for filtering which progress spinner instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatProgressSpinnerHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ProgressSpinnerHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /** Gets the progress spinner's value. */\n async getValue(): Promise<number | null> {\n const host = await this.host();\n const ariaValue = await host.getAttribute('aria-valuenow');\n return ariaValue ? coerceNumberProperty(ariaValue) : null;\n }\n\n /** Gets the progress spinner's mode. */\n async getMode(): Promise<ProgressSpinnerMode> {\n const modeAttr = (await this.host()).getAttribute('mode');\n return (await modeAttr) as ProgressSpinnerMode;\n }\n}\n"],"names":["MatProgressSpinnerHarness","ComponentHarness","hostSelector","with","options","HarnessPredicate","getValue","host","ariaValue","getAttribute","coerceNumberProperty","getMode","modeAttr"],"mappings":";;;AAkBM,MAAOA,yBAA0B,SAAQC,gBAAgB,CAAA;EAE7D,OAAOC,YAAY,GAAG,2BAA2B;AAQjD,EAAA,OAAOC,IAAIA,CAETC,OAAA,GAAyC,EAAE,EAAA;AAE3C,IAAA,OAAO,IAAIC,gBAAgB,CAAC,IAAI,EAAED,OAAO,CAAC;AAC5C,EAAA;EAGA,MAAME,QAAQA,GAAA;AACZ,IAAA,MAAMC,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;IAC9B,MAAMC,SAAS,GAAG,MAAMD,IAAI,CAACE,YAAY,CAAC,eAAe,CAAC;AAC1D,IAAA,OAAOD,SAAS,GAAGE,oBAAoB,CAACF,SAAS,CAAC,GAAG,IAAI;AAC3D,EAAA;EAGA,MAAMG,OAAOA,GAAA;AACX,IAAA,MAAMC,QAAQ,GAAG,CAAC,MAAM,IAAI,CAACL,IAAI,EAAE,EAAEE,YAAY,CAAC,MAAM,CAAC;AACzD,IAAA,OAAQ,MAAMG,QAAQ;AACxB,EAAA;;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"progress-spinner.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/progress-spinner/progress-spinner.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/progress-spinner/progress-spinner.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/progress-spinner/progress-spinner-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\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n InjectionToken,\n Input,\n ViewChild,\n ViewEncapsulation,\n numberAttribute,\n inject,\n} from '@angular/core';\nimport {_getAnimationsState, ThemePalette} from '../core';\nimport {NgTemplateOutlet} from '@angular/common';\n\n/** Possible mode for a progress spinner. */\nexport type ProgressSpinnerMode = 'determinate' | 'indeterminate';\n\n/** Default `mat-progress-spinner` options that can be overridden. */\nexport interface MatProgressSpinnerDefaultOptions {\n /**\n * Default theme color of the progress spinner. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/progress-spinner/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n color?: ThemePalette;\n /** Diameter of the spinner. */\n diameter?: number;\n /** Width of the spinner's stroke. */\n strokeWidth?: number;\n /**\n * Whether the animations should be force to be enabled, ignoring if the current environment\n * disables them.\n */\n _forceAnimations?: boolean;\n}\n\n/** Injection token to be used to override the default options for `mat-progress-spinner`. */\nexport const MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS =\n new InjectionToken<MatProgressSpinnerDefaultOptions>('mat-progress-spinner-default-options', {\n providedIn: 'root',\n factory: () => ({diameter: BASE_SIZE}),\n });\n\n/**\n * Base reference size of the spinner.\n */\nconst BASE_SIZE = 100;\n\n/**\n * Base reference stroke width of the spinner.\n */\nconst BASE_STROKE_WIDTH = 10;\n\n@Component({\n selector: 'mat-progress-spinner, mat-spinner',\n exportAs: 'matProgressSpinner',\n host: {\n 'role': 'progressbar',\n 'class': 'mat-mdc-progress-spinner mdc-circular-progress',\n // set tab index to -1 so screen readers will read the aria-label\n // Note: there is a known issue with JAWS that does not read progressbar aria labels on FireFox\n 'tabindex': '-1',\n '[class]': '\"mat-\" + color',\n '[class._mat-animation-noopable]': `_noopAnimations`,\n '[class.mdc-circular-progress--indeterminate]': 'mode === \"indeterminate\"',\n '[style.width.px]': 'diameter',\n '[style.height.px]': 'diameter',\n '[style.--mat-progress-spinner-size]': 'diameter + \"px\"',\n '[style.--mat-progress-spinner-active-indicator-width]': 'diameter + \"px\"',\n '[attr.aria-valuemin]': '0',\n '[attr.aria-valuemax]': '100',\n '[attr.aria-valuenow]': 'mode === \"determinate\" ? value : null',\n '[attr.mode]': 'mode',\n },\n templateUrl: 'progress-spinner.html',\n styleUrl: 'progress-spinner.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgTemplateOutlet],\n})\nexport class MatProgressSpinner {\n readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** Whether the _mat-animation-noopable class should be applied, disabling animations. */\n _noopAnimations: boolean;\n\n // TODO: should be typed as `ThemePalette` but internal apps pass in arbitrary strings.\n /**\n * Theme color of the progress spinner. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/progress-spinner/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input()\n get color() {\n return this._color || this._defaultColor;\n }\n set color(value: string | null | undefined) {\n this._color = value;\n }\n private _color: string | null | undefined;\n private _defaultColor: ThemePalette = 'primary';\n\n /** The element of the determinate spinner. */\n @ViewChild('determinateSpinner') _determinateCircle!: ElementRef<HTMLElement>;\n\n constructor(...args: unknown[]);\n\n constructor() {\n const defaults = inject<MatProgressSpinnerDefaultOptions>(MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS);\n const animationsState = _getAnimationsState();\n const element = this._elementRef.nativeElement;\n\n this._noopAnimations =\n animationsState === 'di-disabled' && !!defaults && !defaults._forceAnimations;\n this.mode = element.nodeName.toLowerCase() === 'mat-spinner' ? 'indeterminate' : 'determinate';\n\n if (!this._noopAnimations && animationsState === 'reduced-motion') {\n element.classList.add('mat-progress-spinner-reduced-motion');\n }\n\n if (defaults) {\n if (defaults.color) {\n this.color = this._defaultColor = defaults.color;\n }\n\n if (defaults.diameter) {\n this.diameter = defaults.diameter;\n }\n\n if (defaults.strokeWidth) {\n this.strokeWidth = defaults.strokeWidth;\n }\n }\n }\n\n /**\n * Mode of the progress bar.\n *\n * Input must be one of these values: determinate, indeterminate, buffer, query, defaults to\n * 'determinate'.\n * Mirrored to mode attribute.\n */\n @Input() mode: ProgressSpinnerMode;\n\n /** Value of the progress bar. Defaults to zero. Mirrored to aria-valuenow. */\n @Input({transform: numberAttribute})\n get value(): number {\n return this.mode === 'determinate' ? this._value : 0;\n }\n set value(v: number) {\n this._value = Math.max(0, Math.min(100, v || 0));\n }\n private _value = 0;\n\n /** The diameter of the progress spinner (will set width and height of svg). */\n @Input({transform: numberAttribute})\n get diameter(): number {\n return this._diameter;\n }\n set diameter(size: number) {\n this._diameter = size || 0;\n }\n private _diameter = BASE_SIZE;\n\n /** Stroke width of the progress spinner. */\n @Input({transform: numberAttribute})\n get strokeWidth(): number {\n return this._strokeWidth ?? this.diameter / 10;\n }\n set strokeWidth(value: number) {\n this._strokeWidth = value || 0;\n }\n private _strokeWidth!: number;\n\n /** The radius of the spinner, adjusted for stroke width. */\n _circleRadius(): number {\n return (this.diameter - BASE_STROKE_WIDTH) / 2;\n }\n\n /** The view box of the spinner's svg element. */\n _viewBox() {\n const viewBox = this._circleRadius() * 2 + this.strokeWidth;\n return `0 0 ${viewBox} ${viewBox}`;\n }\n\n /** The stroke circumference of the svg circle. */\n _strokeCircumference(): number {\n return 2 * Math.PI * this._circleRadius();\n }\n\n /** The dash offset of the svg circle. */\n _strokeDashOffset() {\n if (this.mode === 'determinate') {\n return (this._strokeCircumference() * (100 - this._value)) / 100;\n }\n return null;\n }\n\n /** Stroke width of the circle in percent. */\n _circleStrokeWidth() {\n return (this.strokeWidth / this.diameter) * 100;\n }\n}\n\n/**\n * @deprecated Import Progress Spinner instead. Note that the\n * `mat-spinner` selector isn't deprecated.\n * @breaking-change 16.0.0\n */\n// tslint:disable-next-line:variable-name\nexport const MatSpinner = MatProgressSpinner;\n","<ng-template #circle>\n <svg [attr.viewBox]=\"_viewBox()\" class=\"mdc-circular-progress__indeterminate-circle-graphic\"\n xmlns=\"http://www.w3.org/2000/svg\" focusable=\"false\">\n <circle [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeCircumference() / 2\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n cx=\"50%\" cy=\"50%\"/>\n </svg>\n</ng-template>\n\n<!--\n All children need to be hidden for screen readers in order to support ChromeVox.\n More context in the issue: https://github.com/angular/components/issues/22165.\n-->\n<div class=\"mdc-circular-progress__determinate-container\" aria-hidden=\"true\" #determinateSpinner>\n <svg [attr.viewBox]=\"_viewBox()\" class=\"mdc-circular-progress__determinate-circle-graphic\"\n xmlns=\"http://www.w3.org/2000/svg\" focusable=\"false\">\n <circle [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeDashOffset()\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n class=\"mdc-circular-progress__determinate-circle\"\n cx=\"50%\" cy=\"50%\"/>\n </svg>\n</div>\n<!--TODO: figure out why there are 3 separate svgs-->\n<div class=\"mdc-circular-progress__indeterminate-container\" aria-hidden=\"true\">\n <div class=\"mdc-circular-progress__spinner-layer\">\n <div class=\"mdc-circular-progress__circle-clipper mdc-circular-progress__circle-left\">\n <ng-container [ngTemplateOutlet]=\"circle\"></ng-container>\n </div>\n <div class=\"mdc-circular-progress__gap-patch\">\n <ng-container [ngTemplateOutlet]=\"circle\"></ng-container>\n </div>\n <div class=\"mdc-circular-progress__circle-clipper mdc-circular-progress__circle-right\">\n <ng-container [ngTemplateOutlet]=\"circle\"></ng-container>\n </div>\n </div>\n</div>\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 {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\nimport {MatProgressSpinner, MatSpinner} from './progress-spinner';\n\n@NgModule({\n imports: [MatProgressSpinner, MatSpinner],\n exports: [MatProgressSpinner, MatSpinner, BidiModule],\n})\nexport class MatProgressSpinnerModule {}\n"],"names":["MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS","InjectionToken","providedIn","factory","diameter","BASE_SIZE","BASE_STROKE_WIDTH","MatProgressSpinner","_elementRef","inject","ElementRef","_noopAnimations","color","_color","_defaultColor","value","_determinateCircle","constructor","defaults","animationsState","_getAnimationsState","element","nativeElement","_forceAnimations","mode","nodeName","toLowerCase","classList","add","strokeWidth","_value","v","Math","max","min","_diameter","size","_strokeWidth","_circleRadius","_viewBox","viewBox","_strokeCircumference","PI","_strokeDashOffset","_circleStrokeWidth","deps","target","i0","ɵɵFactoryTarget","Component","isStandalone","selector","inputs","numberAttribute","host","attributes","properties","classAttribute","viewQueries","propertyName","first","predicate","descendants","exportAs","ngImport","template","styles","dependencies","kind","type","NgTemplateOutlet","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","imports","Input","ViewChild","transform","MatSpinner","MatProgressSpinnerModule","NgModule","BidiModule","ɵinj","ɵɵngDeclareInjector","minVersion","version","args","exports"],"mappings":"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"}
{"version":3,"file":"progress-spinner.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/progress-spinner/progress-spinner.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/progress-spinner/progress-spinner.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/progress-spinner/progress-spinner-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\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n InjectionToken,\n Input,\n ViewChild,\n ViewEncapsulation,\n numberAttribute,\n inject,\n} from '@angular/core';\nimport {_getAnimationsState, ThemePalette} from '../core';\nimport {NgTemplateOutlet} from '@angular/common';\n\n/** Possible mode for a progress spinner. */\nexport type ProgressSpinnerMode = 'determinate' | 'indeterminate';\n\n/** Default `mat-progress-spinner` options that can be overridden. */\nexport interface MatProgressSpinnerDefaultOptions {\n /**\n * Default theme color of the progress spinner. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/progress-spinner/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n color?: ThemePalette;\n /** Diameter of the spinner. */\n diameter?: number;\n /** Width of the spinner's stroke. */\n strokeWidth?: number;\n /**\n * Whether the animations should be force to be enabled, ignoring if the current environment\n * disables them.\n */\n _forceAnimations?: boolean;\n}\n\n/** Injection token to be used to override the default options for `mat-progress-spinner`. */\nexport const MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS =\n new InjectionToken<MatProgressSpinnerDefaultOptions>('mat-progress-spinner-default-options', {\n providedIn: 'root',\n factory: () => ({diameter: BASE_SIZE}),\n });\n\n/**\n * Base reference size of the spinner.\n */\nconst BASE_SIZE = 100;\n\n/**\n * Base reference stroke width of the spinner.\n */\nconst BASE_STROKE_WIDTH = 10;\n\n@Component({\n selector: 'mat-progress-spinner, mat-spinner',\n exportAs: 'matProgressSpinner',\n host: {\n 'role': 'progressbar',\n 'class': 'mat-mdc-progress-spinner mdc-circular-progress',\n // set tab index to -1 so screen readers will read the aria-label\n // Note: there is a known issue with JAWS that does not read progressbar aria labels on FireFox\n 'tabindex': '-1',\n '[class]': '\"mat-\" + color',\n '[class._mat-animation-noopable]': `_noopAnimations`,\n '[class.mdc-circular-progress--indeterminate]': 'mode === \"indeterminate\"',\n '[style.width.px]': 'diameter',\n '[style.height.px]': 'diameter',\n '[style.--mat-progress-spinner-size]': 'diameter + \"px\"',\n '[style.--mat-progress-spinner-active-indicator-width]': 'diameter + \"px\"',\n '[attr.aria-valuemin]': '0',\n '[attr.aria-valuemax]': '100',\n '[attr.aria-valuenow]': 'mode === \"determinate\" ? value : null',\n '[attr.mode]': 'mode',\n },\n templateUrl: 'progress-spinner.html',\n styleUrl: 'progress-spinner.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgTemplateOutlet],\n})\nexport class MatProgressSpinner {\n readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** Whether the _mat-animation-noopable class should be applied, disabling animations. */\n _noopAnimations: boolean;\n\n // TODO: should be typed as `ThemePalette` but internal apps pass in arbitrary strings.\n /**\n * Theme color of the progress spinner. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/progress-spinner/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input()\n get color() {\n return this._color || this._defaultColor;\n }\n set color(value: string | null | undefined) {\n this._color = value;\n }\n private _color: string | null | undefined;\n private _defaultColor: ThemePalette = 'primary';\n\n /** The element of the determinate spinner. */\n @ViewChild('determinateSpinner') _determinateCircle!: ElementRef<HTMLElement>;\n\n constructor(...args: unknown[]);\n\n constructor() {\n const defaults = inject<MatProgressSpinnerDefaultOptions>(MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS);\n const animationsState = _getAnimationsState();\n const element = this._elementRef.nativeElement;\n\n this._noopAnimations =\n animationsState === 'di-disabled' && !!defaults && !defaults._forceAnimations;\n this.mode = element.nodeName.toLowerCase() === 'mat-spinner' ? 'indeterminate' : 'determinate';\n\n if (!this._noopAnimations && animationsState === 'reduced-motion') {\n element.classList.add('mat-progress-spinner-reduced-motion');\n }\n\n if (defaults) {\n if (defaults.color) {\n this.color = this._defaultColor = defaults.color;\n }\n\n if (defaults.diameter) {\n this.diameter = defaults.diameter;\n }\n\n if (defaults.strokeWidth) {\n this.strokeWidth = defaults.strokeWidth;\n }\n }\n }\n\n /**\n * Mode of the progress bar.\n *\n * Input must be one of these values: determinate, indeterminate, buffer, query, defaults to\n * 'determinate'.\n * Mirrored to mode attribute.\n */\n @Input() mode: ProgressSpinnerMode;\n\n /** Value of the progress bar. Defaults to zero. Mirrored to aria-valuenow. */\n @Input({transform: numberAttribute})\n get value(): number {\n return this.mode === 'determinate' ? this._value : 0;\n }\n set value(v: number) {\n this._value = Math.max(0, Math.min(100, v || 0));\n }\n private _value = 0;\n\n /** The diameter of the progress spinner (will set width and height of svg). */\n @Input({transform: numberAttribute})\n get diameter(): number {\n return this._diameter;\n }\n set diameter(size: number) {\n this._diameter = size || 0;\n }\n private _diameter = BASE_SIZE;\n\n /** Stroke width of the progress spinner. */\n @Input({transform: numberAttribute})\n get strokeWidth(): number {\n return this._strokeWidth ?? this.diameter / 10;\n }\n set strokeWidth(value: number) {\n this._strokeWidth = value || 0;\n }\n private _strokeWidth!: number;\n\n /** The radius of the spinner, adjusted for stroke width. */\n _circleRadius(): number {\n return (this.diameter - BASE_STROKE_WIDTH) / 2;\n }\n\n /** The view box of the spinner's svg element. */\n _viewBox() {\n const viewBox = this._circleRadius() * 2 + this.strokeWidth;\n return `0 0 ${viewBox} ${viewBox}`;\n }\n\n /** The stroke circumference of the svg circle. */\n _strokeCircumference(): number {\n return 2 * Math.PI * this._circleRadius();\n }\n\n /** The dash offset of the svg circle. */\n _strokeDashOffset() {\n if (this.mode === 'determinate') {\n return (this._strokeCircumference() * (100 - this._value)) / 100;\n }\n return null;\n }\n\n /** Stroke width of the circle in percent. */\n _circleStrokeWidth() {\n return (this.strokeWidth / this.diameter) * 100;\n }\n}\n\n/**\n * @deprecated Import Progress Spinner instead. Note that the\n * `mat-spinner` selector isn't deprecated.\n * @breaking-change 16.0.0\n */\n// tslint:disable-next-line:variable-name\nexport const MatSpinner = MatProgressSpinner;\n","<ng-template #circle>\n <svg [attr.viewBox]=\"_viewBox()\" class=\"mdc-circular-progress__indeterminate-circle-graphic\"\n xmlns=\"http://www.w3.org/2000/svg\" focusable=\"false\">\n <circle [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeCircumference() / 2\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n cx=\"50%\" cy=\"50%\"/>\n </svg>\n</ng-template>\n\n<!--\n All children need to be hidden for screen readers in order to support ChromeVox.\n More context in the issue: https://github.com/angular/components/issues/22165.\n-->\n<div class=\"mdc-circular-progress__determinate-container\" aria-hidden=\"true\" #determinateSpinner>\n <svg [attr.viewBox]=\"_viewBox()\" class=\"mdc-circular-progress__determinate-circle-graphic\"\n xmlns=\"http://www.w3.org/2000/svg\" focusable=\"false\">\n <circle [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeDashOffset()\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n class=\"mdc-circular-progress__determinate-circle\"\n cx=\"50%\" cy=\"50%\"/>\n </svg>\n</div>\n<!--TODO: figure out why there are 3 separate svgs-->\n<div class=\"mdc-circular-progress__indeterminate-container\" aria-hidden=\"true\">\n <div class=\"mdc-circular-progress__spinner-layer\">\n <div class=\"mdc-circular-progress__circle-clipper mdc-circular-progress__circle-left\">\n <ng-container [ngTemplateOutlet]=\"circle\"></ng-container>\n </div>\n <div class=\"mdc-circular-progress__gap-patch\">\n <ng-container [ngTemplateOutlet]=\"circle\"></ng-container>\n </div>\n <div class=\"mdc-circular-progress__circle-clipper mdc-circular-progress__circle-right\">\n <ng-container [ngTemplateOutlet]=\"circle\"></ng-container>\n </div>\n </div>\n</div>\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 {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\nimport {MatProgressSpinner, MatSpinner} from './progress-spinner';\n\n@NgModule({\n imports: [MatProgressSpinner, MatSpinner],\n exports: [MatProgressSpinner, MatSpinner, BidiModule],\n})\nexport class MatProgressSpinnerModule {}\n"],"names":["MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS","InjectionToken","providedIn","factory","diameter","BASE_SIZE","BASE_STROKE_WIDTH","MatProgressSpinner","_elementRef","inject","ElementRef","_noopAnimations","color","_color","_defaultColor","value","_determinateCircle","constructor","defaults","animationsState","_getAnimationsState","element","nativeElement","_forceAnimations","mode","nodeName","toLowerCase","classList","add","strokeWidth","_value","v","Math","max","min","_diameter","size","_strokeWidth","_circleRadius","_viewBox","viewBox","_strokeCircumference","PI","_strokeDashOffset","_circleStrokeWidth","deps","target","i0","ɵɵFactoryTarget","Component","isStandalone","selector","inputs","numberAttribute","host","attributes","properties","classAttribute","viewQueries","propertyName","first","predicate","descendants","exportAs","ngImport","template","styles","dependencies","kind","type","NgTemplateOutlet","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","imports","Input","ViewChild","transform","MatSpinner","MatProgressSpinnerModule","NgModule","BidiModule","ɵinj","ɵɵngDeclareInjector","minVersion","version","args","exports"],"mappings":";;;;;;;MA+CaA,oCAAoC,GAC/C,IAAIC,cAAc,CAAmC,sCAAsC,EAAE;AAC3FC,EAAAA,UAAU,EAAE,MAAM;EAClBC,OAAO,EAAEA,OAAO;AAACC,IAAAA,QAAQ,EAAEC;GAAU;AACtC,CAAA;AAKH,MAAMA,SAAS,GAAG,GAAG;AAKrB,MAAMC,iBAAiB,GAAG,EAAE;MA6BfC,kBAAkB,CAAA;AACpBC,EAAAA,WAAW,GAAGC,MAAM,CAA0BC,UAAU,CAAC;EAGlEC,eAAe;EAUf,IACIC,KAAKA,GAAA;AACP,IAAA,OAAO,IAAI,CAACC,MAAM,IAAI,IAAI,CAACC,aAAa;AAC1C,EAAA;EACA,IAAIF,KAAKA,CAACG,KAAgC,EAAA;IACxC,IAAI,CAACF,MAAM,GAAGE,KAAK;AACrB,EAAA;EACQF,MAAM;AACNC,EAAAA,aAAa,GAAiB,SAAS;EAGdE,kBAAkB;AAInDC,EAAAA,WAAAA,GAAA;AACE,IAAA,MAAMC,QAAQ,GAAGT,MAAM,CAAmCT,oCAAoC,CAAC;AAC/F,IAAA,MAAMmB,eAAe,GAAGC,mBAAmB,EAAE;AAC7C,IAAA,MAAMC,OAAO,GAAG,IAAI,CAACb,WAAW,CAACc,aAAa;AAE9C,IAAA,IAAI,CAACX,eAAe,GAClBQ,eAAe,KAAK,aAAa,IAAI,CAAC,CAACD,QAAQ,IAAI,CAACA,QAAQ,CAACK,gBAAgB;AAC/E,IAAA,IAAI,CAACC,IAAI,GAAGH,OAAO,CAACI,QAAQ,CAACC,WAAW,EAAE,KAAK,aAAa,GAAG,eAAe,GAAG,aAAa;IAE9F,IAAI,CAAC,IAAI,CAACf,eAAe,IAAIQ,eAAe,KAAK,gBAAgB,EAAE;AACjEE,MAAAA,OAAO,CAACM,SAAS,CAACC,GAAG,CAAC,qCAAqC,CAAC;AAC9D,IAAA;AAEA,IAAA,IAAIV,QAAQ,EAAE;MACZ,IAAIA,QAAQ,CAACN,KAAK,EAAE;QAClB,IAAI,CAACA,KAAK,GAAG,IAAI,CAACE,aAAa,GAAGI,QAAQ,CAACN,KAAK;AAClD,MAAA;MAEA,IAAIM,QAAQ,CAACd,QAAQ,EAAE;AACrB,QAAA,IAAI,CAACA,QAAQ,GAAGc,QAAQ,CAACd,QAAQ;AACnC,MAAA;MAEA,IAAIc,QAAQ,CAACW,WAAW,EAAE;AACxB,QAAA,IAAI,CAACA,WAAW,GAAGX,QAAQ,CAACW,WAAW;AACzC,MAAA;AACF,IAAA;AACF,EAAA;EASSL,IAAI;EAGb,IACIT,KAAKA,GAAA;IACP,OAAO,IAAI,CAACS,IAAI,KAAK,aAAa,GAAG,IAAI,CAACM,MAAM,GAAG,CAAC;AACtD,EAAA;EACA,IAAIf,KAAKA,CAACgB,CAAS,EAAA;AACjB,IAAA,IAAI,CAACD,MAAM,GAAGE,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,GAAG,CAAC,GAAG,EAAEH,CAAC,IAAI,CAAC,CAAC,CAAC;AAClD,EAAA;AACQD,EAAAA,MAAM,GAAG,CAAC;EAGlB,IACI1B,QAAQA,GAAA;IACV,OAAO,IAAI,CAAC+B,SAAS;AACvB,EAAA;EACA,IAAI/B,QAAQA,CAACgC,IAAY,EAAA;AACvB,IAAA,IAAI,CAACD,SAAS,GAAGC,IAAI,IAAI,CAAC;AAC5B,EAAA;AACQD,EAAAA,SAAS,GAAG9B,SAAS;EAG7B,IACIwB,WAAWA,GAAA;IACb,OAAO,IAAI,CAACQ,YAAY,IAAI,IAAI,CAACjC,QAAQ,GAAG,EAAE;AAChD,EAAA;EACA,IAAIyB,WAAWA,CAACd,KAAa,EAAA;AAC3B,IAAA,IAAI,CAACsB,YAAY,GAAGtB,KAAK,IAAI,CAAC;AAChC,EAAA;EACQsB,YAAY;AAGpBC,EAAAA,aAAaA,GAAA;AACX,IAAA,OAAO,CAAC,IAAI,CAAClC,QAAQ,GAAGE,iBAAiB,IAAI,CAAC;AAChD,EAAA;AAGAiC,EAAAA,QAAQA,GAAA;AACN,IAAA,MAAMC,OAAO,GAAG,IAAI,CAACF,aAAa,EAAE,GAAG,CAAC,GAAG,IAAI,CAACT,WAAW;AAC3D,IAAA,OAAO,CAAA,IAAA,EAAOW,OAAO,CAAA,CAAA,EAAIA,OAAO,CAAA,CAAE;AACpC,EAAA;AAGAC,EAAAA,oBAAoBA,GAAA;IAClB,OAAO,CAAC,GAAGT,IAAI,CAACU,EAAE,GAAG,IAAI,CAACJ,aAAa,EAAE;AAC3C,EAAA;AAGAK,EAAAA,iBAAiBA,GAAA;AACf,IAAA,IAAI,IAAI,CAACnB,IAAI,KAAK,aAAa,EAAE;AAC/B,MAAA,OAAQ,IAAI,CAACiB,oBAAoB,EAAE,IAAI,GAAG,GAAG,IAAI,CAACX,MAAM,CAAC,GAAI,GAAG;AAClE,IAAA;AACA,IAAA,OAAO,IAAI;AACb,EAAA;AAGAc,EAAAA,kBAAkBA,GAAA;IAChB,OAAQ,IAAI,CAACf,WAAW,GAAG,IAAI,CAACzB,QAAQ,GAAI,GAAG;AACjD,EAAA;;;;;UA3HWG,kBAAkB;AAAAsC,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;;;;UAAlB1C,kBAAkB;AAAA2C,IAAAA,YAAA,EAAA,IAAA;AAAAC,IAAAA,QAAA,EAAA,mCAAA;AAAAC,IAAAA,MAAA,EAAA;AAAAxC,MAAAA,KAAA,EAAA,OAAA;AAAAY,MAAAA,IAAA,EAAA,MAAA;AAAAT,MAAAA,KAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAmEVsC,eAAe,CAAA;AAAAjD,MAAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAUfiD,eAAe;kDAUfA,eAAe;KAAA;AAAAC,IAAAA,IAAA,EAAA;AAAAC,MAAAA,UAAA,EAAA;AAAA,QAAA,MAAA,EAAA,aAAA;AAAA,QAAA,UAAA,EAAA;OAAA;AAAAC,MAAAA,UAAA,EAAA;AAAA,QAAA,OAAA,EAAA,kBAAA;AAAA,QAAA,+BAAA,EAAA,iBAAA;AAAA,QAAA,4CAAA,EAAA,4BAAA;AAAA,QAAA,gBAAA,EAAA,UAAA;AAAA,QAAA,iBAAA,EAAA,UAAA;AAAA,QAAA,mCAAA,EAAA,mBAAA;AAAA,QAAA,qDAAA,EAAA,mBAAA;AAAA,QAAA,oBAAA,EAAA,GAAA;AAAA,QAAA,oBAAA,EAAA,KAAA;AAAA,QAAA,oBAAA,EAAA,yCAAA;AAAA,QAAA,WAAA,EAAA;OAAA;AAAAC,MAAAA,cAAA,EAAA;KAAA;AAAAC,IAAAA,WAAA,EAAA,CAAA;AAAAC,MAAAA,YAAA,EAAA,oBAAA;AAAAC,MAAAA,KAAA,EAAA,IAAA;MAAAC,SAAA,EAAA,CAAA,oBAAA,CAAA;AAAAC,MAAAA,WAAA,EAAA;AAAA,KAAA,CAAA;IAAAC,QAAA,EAAA,CAAA,oBAAA,CAAA;AAAAC,IAAAA,QAAA,EAAAjB,EAAA;AAAAkB,IAAAA,QAAA,ECjLpC,28DAwCA;IAAAC,MAAA,EAAA,CAAA,svKAAA,CAAA;AAAAC,IAAAA,YAAA,EAAA,CAAA;AAAAC,MAAAA,IAAA,EAAA,WAAA;AAAAC,MAAAA,IAAA,EDgDYC,gBAAgB;AAAAnB,MAAAA,QAAA,EAAA,oBAAA;AAAAC,MAAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA;AAAA,KAAA,CAAA;AAAAmB,IAAAA,eAAA,EAAAxB,EAAA,CAAAyB,uBAAA,CAAAC,MAAA;AAAAC,IAAAA,aAAA,EAAA3B,EAAA,CAAA4B,iBAAA,CAAAC;AAAA,GAAA,CAAA;;;;;;QAEfrE,kBAAkB;AAAAsE,EAAAA,UAAA,EAAA,CAAA;UA3B9B5B,SAAS;;gBACE,mCAAmC;AAAAc,MAAAA,QAAA,EACnC,oBAAoB;AAAAT,MAAAA,IAAA,EACxB;AACJ,QAAA,MAAM,EAAE,aAAa;AACrB,QAAA,OAAO,EAAE,gDAAgD;AAGzD,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,SAAS,EAAE,gBAAgB;AAC3B,QAAA,iCAAiC,EAAE,CAAA,eAAA,CAAiB;AACpD,QAAA,8CAA8C,EAAE,0BAA0B;AAC1E,QAAA,kBAAkB,EAAE,UAAU;AAC9B,QAAA,mBAAmB,EAAE,UAAU;AAC/B,QAAA,qCAAqC,EAAE,iBAAiB;AACxD,QAAA,uDAAuD,EAAE,iBAAiB;AAC1E,QAAA,sBAAsB,EAAE,GAAG;AAC3B,QAAA,sBAAsB,EAAE,KAAK;AAC7B,QAAA,sBAAsB,EAAE,uCAAuC;AAC/D,QAAA,aAAa,EAAE;OAChB;MAAAiB,eAAA,EAGgBC,uBAAuB,CAACC,MAAM;MAAAC,aAAA,EAChCC,iBAAiB,CAACC,IAAI;MAAAE,OAAA,EAC5B,CAACR,gBAAgB,CAAC;AAAAL,MAAAA,QAAA,EAAA,28DAAA;MAAAC,MAAA,EAAA,CAAA,svKAAA;KAAA;;;;;YAgB1Ba;;;YAWAC,SAAS;aAAC,oBAAoB;;;YAuC9BD;;;YAGAA,KAAK;aAAC;AAACE,QAAAA,SAAS,EAAE5B;OAAgB;;;YAUlC0B,KAAK;aAAC;AAACE,QAAAA,SAAS,EAAE5B;OAAgB;;;YAUlC0B,KAAK;aAAC;AAACE,QAAAA,SAAS,EAAE5B;OAAgB;;;;AA6C9B,MAAM6B,UAAU,GAAG3E;;ME9Mb4E,wBAAwB,CAAA;;;;;UAAxBA,wBAAwB;AAAAtC,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAoC;AAAA,GAAA,CAAA;;;;;UAAxBD,wBAAwB;AAAAL,IAAAA,OAAA,EAAA,CAHzBvE,kBAAkB,EAAE2E,UAAU;cAC9B3E,kBAAkB,EAAE2E,UAAU,EAAEG,UAAU;AAAA,GAAA,CAAA;AAEzC,EAAA,OAAAC,IAAA,GAAAvC,EAAA,CAAAwC,mBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAzB,IAAAA,QAAA,EAAAjB,EAAA;AAAAsB,IAAAA,IAAA,EAAAc,wBAAwB;cAFOE,UAAU;AAAA,GAAA,CAAA;;;;;;QAEzCF,wBAAwB;AAAAN,EAAAA,UAAA,EAAA,CAAA;UAJpCO,QAAQ;AAACM,IAAAA,IAAA,EAAA,CAAA;AACRZ,MAAAA,OAAO,EAAE,CAACvE,kBAAkB,EAAE2E,UAAU,CAAC;AACzCS,MAAAA,OAAO,EAAE,CAACpF,kBAAkB,EAAE2E,UAAU,EAAEG,UAAU;KACrD;;;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"radio-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/radio/testing/radio-harness.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\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {RadioButtonHarnessFilters, RadioGroupHarnessFilters} from './radio-harness-filters';\n\n/** Harness for interacting with a mat-radio-group in tests. */\nexport class MatRadioGroupHarness extends ComponentHarness {\n /** The selector for the host element of a `MatRadioGroup` instance. */\n static hostSelector = '.mat-mdc-radio-group';\n\n private _buttonClass = MatRadioButtonHarness;\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a radio group with specific\n * attributes.\n * @param options Options for filtering which radio group instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatRadioGroupHarness>(\n this: ComponentHarnessConstructor<T>,\n options: RadioGroupHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options).addOption(\n 'name',\n options.name,\n MatRadioGroupHarness._checkRadioGroupName,\n );\n }\n\n /** Gets the name of the radio-group. */\n async getName(): Promise<string | null> {\n const hostName = await this._getGroupNameFromHost();\n // It's not possible to always determine the \"name\" of a radio-group by reading\n // the attribute. This is because the radio-group does not set the \"name\" as an\n // element attribute if the \"name\" value is set through a binding.\n if (hostName !== null) {\n return hostName;\n }\n // In case we couldn't determine the \"name\" of a radio-group by reading the\n // \"name\" attribute, we try to determine the \"name\" of the group by going\n // through all radio buttons.\n const radioNames = await this._getNamesFromRadioButtons();\n if (!radioNames.length) {\n return null;\n }\n if (!this._checkRadioNamesInGroupEqual(radioNames)) {\n throw Error('Radio buttons in radio-group have mismatching names.');\n }\n return radioNames[0]!;\n }\n\n /** Gets the id of the radio-group. */\n async getId(): Promise<string | null> {\n return (await this.host()).getProperty<string | null>('id');\n }\n\n /** Gets the checked radio-button in a radio-group. */\n async getCheckedRadioButton(): Promise<MatRadioButtonHarness | null> {\n for (let radioButton of await this.getRadioButtons()) {\n if (await radioButton.isChecked()) {\n return radioButton;\n }\n }\n return null;\n }\n\n /** Gets the checked value of the radio-group. */\n async getCheckedValue(): Promise<string | null> {\n const checkedRadio = await this.getCheckedRadioButton();\n if (!checkedRadio) {\n return null;\n }\n return checkedRadio.getValue();\n }\n\n /**\n * Gets a list of radio buttons which are part of the radio-group.\n * @param filter Optionally filters which radio buttons are included.\n */\n async getRadioButtons(filter?: RadioButtonHarnessFilters): Promise<MatRadioButtonHarness[]> {\n return this.locatorForAll(this._buttonClass.with(filter))();\n }\n\n /**\n * Checks a radio button in this group.\n * @param filter An optional filter to apply to the child radio buttons. The first tab matching\n * the filter will be selected.\n */\n async checkRadioButton(filter?: RadioButtonHarnessFilters): Promise<void> {\n const radioButtons = await this.getRadioButtons(filter);\n if (!radioButtons.length) {\n throw Error(`Could not find radio button matching ${JSON.stringify(filter)}`);\n }\n return radioButtons[0].check();\n }\n\n /** Gets the name attribute of the host element. */\n private async _getGroupNameFromHost() {\n return (await this.host()).getAttribute('name');\n }\n\n /** Gets a list of the name attributes of all child radio buttons. */\n private async _getNamesFromRadioButtons(): Promise<string[]> {\n const groupNames: string[] = [];\n for (let radio of await this.getRadioButtons()) {\n const radioName = await radio.getName();\n if (radioName !== null) {\n groupNames.push(radioName);\n }\n }\n return groupNames;\n }\n\n /** Checks if the specified radio names are all equal. */\n private _checkRadioNamesInGroupEqual(radioNames: string[]): boolean {\n let groupName: string | null = null;\n for (let radioName of radioNames) {\n if (groupName === null) {\n groupName = radioName;\n } else if (groupName !== radioName) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Checks if a radio-group harness has the given name. Throws if a radio-group with\n * matching name could be found but has mismatching radio-button names.\n */\n protected static async _checkRadioGroupName(harness: MatRadioGroupHarness, name: string) {\n // Check if there is a radio-group which has the \"name\" attribute set\n // to the expected group name. It's not possible to always determine\n // the \"name\" of a radio-group by reading the attribute. This is because\n // the radio-group does not set the \"name\" as an element attribute if the\n // \"name\" value is set through a binding.\n if ((await harness._getGroupNameFromHost()) === name) {\n return true;\n }\n // Check if there is a group with radio-buttons that all have the same\n // expected name. This implies that the group has the given name. It's\n // not possible to always determine the name of a radio-group through\n // the attribute because there is\n const radioNames = await harness._getNamesFromRadioButtons();\n if (radioNames.indexOf(name) === -1) {\n return false;\n }\n if (!harness._checkRadioNamesInGroupEqual(radioNames)) {\n throw Error(\n `The locator found a radio-group with name \"${name}\", but some ` +\n `radio-button's within the group have mismatching names, which is invalid.`,\n );\n }\n return true;\n }\n}\n\n/** Harness for interacting with a mat-radio-button in tests. */\nexport class MatRadioButtonHarness extends ComponentHarness {\n /** The selector for the host element of a `MatRadioButton` instance. */\n static hostSelector = '.mat-mdc-radio-button';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a radio button with specific\n * attributes.\n * @param options Options for filtering which radio button instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatRadioButtonHarness>(\n this: ComponentHarnessConstructor<T>,\n options: RadioButtonHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('label', options.label, (harness, label) =>\n HarnessPredicate.stringMatches(harness.getLabelText(), label),\n )\n .addOption('name', options.name, async (harness, name) => (await harness.getName()) === name)\n .addOption(\n 'checked',\n options.checked,\n async (harness, checked) => (await harness.isChecked()) == checked,\n );\n }\n\n protected _textLabel = this.locatorFor('label');\n protected _clickLabel = this._textLabel;\n private _input = this.locatorFor('input');\n\n /** Whether the radio-button is checked. */\n async isChecked(): Promise<boolean> {\n const checked = (await this._input()).getProperty<boolean>('checked');\n return coerceBooleanProperty(await checked);\n }\n\n /** Whether the radio-button is disabled. */\n async isDisabled(): Promise<boolean> {\n const input = await this._input();\n const disabled = await input.getAttribute('disabled');\n\n if (disabled !== null) {\n return coerceBooleanProperty(disabled);\n }\n\n return (await input.getAttribute('aria-disabled')) === 'true';\n }\n\n /** Whether the radio-button is required. */\n async isRequired(): Promise<boolean> {\n const required = (await this._input()).getAttribute('required');\n return coerceBooleanProperty(await required);\n }\n\n /** Gets the radio-button's name. */\n async getName(): Promise<string | null> {\n return (await this._input()).getAttribute('name');\n }\n\n /** Gets the radio-button's id. */\n async getId(): Promise<string | null> {\n return (await this.host()).getProperty<string>('id');\n }\n\n /**\n * Gets the value of the radio-button. The radio-button value will be converted to a string.\n *\n * Note: This means that for radio-button's with an object as a value `[object Object]` is\n * intentionally returned.\n */\n async getValue(): Promise<string | null> {\n return (await this._input()).getProperty('value');\n }\n\n /** Gets the radio-button's label text. */\n async getLabelText(): Promise<string> {\n return (await this._textLabel()).text();\n }\n\n /** Focuses the radio-button. */\n async focus(): Promise<void> {\n return (await this._input()).focus();\n }\n\n /** Blurs the radio-button. */\n async blur(): Promise<void> {\n return (await this._input()).blur();\n }\n\n /** Whether the radio-button is focused. */\n async isFocused(): Promise<boolean> {\n return (await this._input()).isFocused();\n }\n\n /**\n * Puts the radio-button in a checked state by clicking it if it is currently unchecked,\n * or doing nothing if it is already checked.\n */\n async check(): Promise<void> {\n if (!(await this.isChecked())) {\n return (await this._clickLabel()).click();\n }\n }\n}\n"],"names":["MatRadioGroupHarness","ComponentHarness","hostSelector","_buttonClass","MatRadioButtonHarness","with","options","HarnessPredicate","addOption","name","_checkRadioGroupName","getName","hostName","_getGroupNameFromHost","radioNames","_getNamesFromRadioButtons","length","_checkRadioNamesInGroupEqual","Error","getId","host","getProperty","getCheckedRadioButton","radioButton","getRadioButtons","isChecked","getCheckedValue","checkedRadio","getValue","filter","locatorForAll","checkRadioButton","radioButtons","JSON","stringify","check","getAttribute","groupNames","radio","radioName","push","groupName","harness","indexOf","label","stringMatches","getLabelText","checked","_textLabel","locatorFor","_clickLabel","_input","coerceBooleanProperty","isDisabled","input","disabled","isRequired","required","text","focus","blur","isFocused","click"],"mappings":"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"}
{"version":3,"file":"radio-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/radio/testing/radio-harness.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\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {RadioButtonHarnessFilters, RadioGroupHarnessFilters} from './radio-harness-filters';\n\n/** Harness for interacting with a mat-radio-group in tests. */\nexport class MatRadioGroupHarness extends ComponentHarness {\n /** The selector for the host element of a `MatRadioGroup` instance. */\n static hostSelector = '.mat-mdc-radio-group';\n\n private _buttonClass = MatRadioButtonHarness;\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a radio group with specific\n * attributes.\n * @param options Options for filtering which radio group instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatRadioGroupHarness>(\n this: ComponentHarnessConstructor<T>,\n options: RadioGroupHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options).addOption(\n 'name',\n options.name,\n MatRadioGroupHarness._checkRadioGroupName,\n );\n }\n\n /** Gets the name of the radio-group. */\n async getName(): Promise<string | null> {\n const hostName = await this._getGroupNameFromHost();\n // It's not possible to always determine the \"name\" of a radio-group by reading\n // the attribute. This is because the radio-group does not set the \"name\" as an\n // element attribute if the \"name\" value is set through a binding.\n if (hostName !== null) {\n return hostName;\n }\n // In case we couldn't determine the \"name\" of a radio-group by reading the\n // \"name\" attribute, we try to determine the \"name\" of the group by going\n // through all radio buttons.\n const radioNames = await this._getNamesFromRadioButtons();\n if (!radioNames.length) {\n return null;\n }\n if (!this._checkRadioNamesInGroupEqual(radioNames)) {\n throw Error('Radio buttons in radio-group have mismatching names.');\n }\n return radioNames[0]!;\n }\n\n /** Gets the id of the radio-group. */\n async getId(): Promise<string | null> {\n return (await this.host()).getProperty<string | null>('id');\n }\n\n /** Gets the checked radio-button in a radio-group. */\n async getCheckedRadioButton(): Promise<MatRadioButtonHarness | null> {\n for (let radioButton of await this.getRadioButtons()) {\n if (await radioButton.isChecked()) {\n return radioButton;\n }\n }\n return null;\n }\n\n /** Gets the checked value of the radio-group. */\n async getCheckedValue(): Promise<string | null> {\n const checkedRadio = await this.getCheckedRadioButton();\n if (!checkedRadio) {\n return null;\n }\n return checkedRadio.getValue();\n }\n\n /**\n * Gets a list of radio buttons which are part of the radio-group.\n * @param filter Optionally filters which radio buttons are included.\n */\n async getRadioButtons(filter?: RadioButtonHarnessFilters): Promise<MatRadioButtonHarness[]> {\n return this.locatorForAll(this._buttonClass.with(filter))();\n }\n\n /**\n * Checks a radio button in this group.\n * @param filter An optional filter to apply to the child radio buttons. The first tab matching\n * the filter will be selected.\n */\n async checkRadioButton(filter?: RadioButtonHarnessFilters): Promise<void> {\n const radioButtons = await this.getRadioButtons(filter);\n if (!radioButtons.length) {\n throw Error(`Could not find radio button matching ${JSON.stringify(filter)}`);\n }\n return radioButtons[0].check();\n }\n\n /** Gets the name attribute of the host element. */\n private async _getGroupNameFromHost() {\n return (await this.host()).getAttribute('name');\n }\n\n /** Gets a list of the name attributes of all child radio buttons. */\n private async _getNamesFromRadioButtons(): Promise<string[]> {\n const groupNames: string[] = [];\n for (let radio of await this.getRadioButtons()) {\n const radioName = await radio.getName();\n if (radioName !== null) {\n groupNames.push(radioName);\n }\n }\n return groupNames;\n }\n\n /** Checks if the specified radio names are all equal. */\n private _checkRadioNamesInGroupEqual(radioNames: string[]): boolean {\n let groupName: string | null = null;\n for (let radioName of radioNames) {\n if (groupName === null) {\n groupName = radioName;\n } else if (groupName !== radioName) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Checks if a radio-group harness has the given name. Throws if a radio-group with\n * matching name could be found but has mismatching radio-button names.\n */\n protected static async _checkRadioGroupName(harness: MatRadioGroupHarness, name: string) {\n // Check if there is a radio-group which has the \"name\" attribute set\n // to the expected group name. It's not possible to always determine\n // the \"name\" of a radio-group by reading the attribute. This is because\n // the radio-group does not set the \"name\" as an element attribute if the\n // \"name\" value is set through a binding.\n if ((await harness._getGroupNameFromHost()) === name) {\n return true;\n }\n // Check if there is a group with radio-buttons that all have the same\n // expected name. This implies that the group has the given name. It's\n // not possible to always determine the name of a radio-group through\n // the attribute because there is\n const radioNames = await harness._getNamesFromRadioButtons();\n if (radioNames.indexOf(name) === -1) {\n return false;\n }\n if (!harness._checkRadioNamesInGroupEqual(radioNames)) {\n throw Error(\n `The locator found a radio-group with name \"${name}\", but some ` +\n `radio-button's within the group have mismatching names, which is invalid.`,\n );\n }\n return true;\n }\n}\n\n/** Harness for interacting with a mat-radio-button in tests. */\nexport class MatRadioButtonHarness extends ComponentHarness {\n /** The selector for the host element of a `MatRadioButton` instance. */\n static hostSelector = '.mat-mdc-radio-button';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a radio button with specific\n * attributes.\n * @param options Options for filtering which radio button instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatRadioButtonHarness>(\n this: ComponentHarnessConstructor<T>,\n options: RadioButtonHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('label', options.label, (harness, label) =>\n HarnessPredicate.stringMatches(harness.getLabelText(), label),\n )\n .addOption('name', options.name, async (harness, name) => (await harness.getName()) === name)\n .addOption(\n 'checked',\n options.checked,\n async (harness, checked) => (await harness.isChecked()) == checked,\n );\n }\n\n protected _textLabel = this.locatorFor('label');\n protected _clickLabel = this._textLabel;\n private _input = this.locatorFor('input');\n\n /** Whether the radio-button is checked. */\n async isChecked(): Promise<boolean> {\n const checked = (await this._input()).getProperty<boolean>('checked');\n return coerceBooleanProperty(await checked);\n }\n\n /** Whether the radio-button is disabled. */\n async isDisabled(): Promise<boolean> {\n const input = await this._input();\n const disabled = await input.getAttribute('disabled');\n\n if (disabled !== null) {\n return coerceBooleanProperty(disabled);\n }\n\n return (await input.getAttribute('aria-disabled')) === 'true';\n }\n\n /** Whether the radio-button is required. */\n async isRequired(): Promise<boolean> {\n const required = (await this._input()).getAttribute('required');\n return coerceBooleanProperty(await required);\n }\n\n /** Gets the radio-button's name. */\n async getName(): Promise<string | null> {\n return (await this._input()).getAttribute('name');\n }\n\n /** Gets the radio-button's id. */\n async getId(): Promise<string | null> {\n return (await this.host()).getProperty<string>('id');\n }\n\n /**\n * Gets the value of the radio-button. The radio-button value will be converted to a string.\n *\n * Note: This means that for radio-button's with an object as a value `[object Object]` is\n * intentionally returned.\n */\n async getValue(): Promise<string | null> {\n return (await this._input()).getProperty('value');\n }\n\n /** Gets the radio-button's label text. */\n async getLabelText(): Promise<string> {\n return (await this._textLabel()).text();\n }\n\n /** Focuses the radio-button. */\n async focus(): Promise<void> {\n return (await this._input()).focus();\n }\n\n /** Blurs the radio-button. */\n async blur(): Promise<void> {\n return (await this._input()).blur();\n }\n\n /** Whether the radio-button is focused. */\n async isFocused(): Promise<boolean> {\n return (await this._input()).isFocused();\n }\n\n /**\n * Puts the radio-button in a checked state by clicking it if it is currently unchecked,\n * or doing nothing if it is already checked.\n */\n async check(): Promise<void> {\n if (!(await this.isChecked())) {\n return (await this._clickLabel()).click();\n }\n }\n}\n"],"names":["MatRadioGroupHarness","ComponentHarness","hostSelector","_buttonClass","MatRadioButtonHarness","with","options","HarnessPredicate","addOption","name","_checkRadioGroupName","getName","hostName","_getGroupNameFromHost","radioNames","_getNamesFromRadioButtons","length","_checkRadioNamesInGroupEqual","Error","getId","host","getProperty","getCheckedRadioButton","radioButton","getRadioButtons","isChecked","getCheckedValue","checkedRadio","getValue","filter","locatorForAll","checkRadioButton","radioButtons","JSON","stringify","check","getAttribute","groupNames","radio","radioName","push","groupName","harness","indexOf","label","stringMatches","getLabelText","checked","_textLabel","locatorFor","_clickLabel","_input","coerceBooleanProperty","isDisabled","input","disabled","isRequired","required","text","focus","blur","isFocused","click"],"mappings":";;;AAiBM,MAAOA,oBAAqB,SAAQC,gBAAgB,CAAA;EAExD,OAAOC,YAAY,GAAG,sBAAsB;AAEpCC,EAAAA,YAAY,GAAGC,qBAAqB;AAQ5C,EAAA,OAAOC,IAAIA,CAETC,OAAA,GAAoC,EAAE,EAAA;AAEtC,IAAA,OAAO,IAAIC,gBAAgB,CAAC,IAAI,EAAED,OAAO,CAAC,CAACE,SAAS,CAClD,MAAM,EACNF,OAAO,CAACG,IAAI,EACZT,oBAAoB,CAACU,oBAAoB,CAC1C;AACH,EAAA;EAGA,MAAMC,OAAOA,GAAA;AACX,IAAA,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAACC,qBAAqB,EAAE;IAInD,IAAID,QAAQ,KAAK,IAAI,EAAE;AACrB,MAAA,OAAOA,QAAQ;AACjB,IAAA;AAIA,IAAA,MAAME,UAAU,GAAG,MAAM,IAAI,CAACC,yBAAyB,EAAE;AACzD,IAAA,IAAI,CAACD,UAAU,CAACE,MAAM,EAAE;AACtB,MAAA,OAAO,IAAI;AACb,IAAA;AACA,IAAA,IAAI,CAAC,IAAI,CAACC,4BAA4B,CAACH,UAAU,CAAC,EAAE;MAClD,MAAMI,KAAK,CAAC,sDAAsD,CAAC;AACrE,IAAA;IACA,OAAOJ,UAAU,CAAC,CAAC,CAAE;AACvB,EAAA;EAGA,MAAMK,KAAKA,GAAA;IACT,OAAO,CAAC,MAAM,IAAI,CAACC,IAAI,EAAE,EAAEC,WAAW,CAAgB,IAAI,CAAC;AAC7D,EAAA;EAGA,MAAMC,qBAAqBA,GAAA;IACzB,KAAK,IAAIC,WAAW,IAAI,MAAM,IAAI,CAACC,eAAe,EAAE,EAAE;AACpD,MAAA,IAAI,MAAMD,WAAW,CAACE,SAAS,EAAE,EAAE;AACjC,QAAA,OAAOF,WAAW;AACpB,MAAA;AACF,IAAA;AACA,IAAA,OAAO,IAAI;AACb,EAAA;EAGA,MAAMG,eAAeA,GAAA;AACnB,IAAA,MAAMC,YAAY,GAAG,MAAM,IAAI,CAACL,qBAAqB,EAAE;IACvD,IAAI,CAACK,YAAY,EAAE;AACjB,MAAA,OAAO,IAAI;AACb,IAAA;AACA,IAAA,OAAOA,YAAY,CAACC,QAAQ,EAAE;AAChC,EAAA;EAMA,MAAMJ,eAAeA,CAACK,MAAkC,EAAA;AACtD,IAAA,OAAO,IAAI,CAACC,aAAa,CAAC,IAAI,CAAC3B,YAAY,CAACE,IAAI,CAACwB,MAAM,CAAC,CAAC,EAAE;AAC7D,EAAA;EAOA,MAAME,gBAAgBA,CAACF,MAAkC,EAAA;IACvD,MAAMG,YAAY,GAAG,MAAM,IAAI,CAACR,eAAe,CAACK,MAAM,CAAC;AACvD,IAAA,IAAI,CAACG,YAAY,CAAChB,MAAM,EAAE;MACxB,MAAME,KAAK,CAAC,CAAA,qCAAA,EAAwCe,IAAI,CAACC,SAAS,CAACL,MAAM,CAAC,CAAA,CAAE,CAAC;AAC/E,IAAA;AACA,IAAA,OAAOG,YAAY,CAAC,CAAC,CAAC,CAACG,KAAK,EAAE;AAChC,EAAA;EAGQ,MAAMtB,qBAAqBA,GAAA;IACjC,OAAO,CAAC,MAAM,IAAI,CAACO,IAAI,EAAE,EAAEgB,YAAY,CAAC,MAAM,CAAC;AACjD,EAAA;EAGQ,MAAMrB,yBAAyBA,GAAA;IACrC,MAAMsB,UAAU,GAAa,EAAE;IAC/B,KAAK,IAAIC,KAAK,IAAI,MAAM,IAAI,CAACd,eAAe,EAAE,EAAE;AAC9C,MAAA,MAAMe,SAAS,GAAG,MAAMD,KAAK,CAAC3B,OAAO,EAAE;MACvC,IAAI4B,SAAS,KAAK,IAAI,EAAE;AACtBF,QAAAA,UAAU,CAACG,IAAI,CAACD,SAAS,CAAC;AAC5B,MAAA;AACF,IAAA;AACA,IAAA,OAAOF,UAAU;AACnB,EAAA;EAGQpB,4BAA4BA,CAACH,UAAoB,EAAA;IACvD,IAAI2B,SAAS,GAAkB,IAAI;AACnC,IAAA,KAAK,IAAIF,SAAS,IAAIzB,UAAU,EAAE;MAChC,IAAI2B,SAAS,KAAK,IAAI,EAAE;AACtBA,QAAAA,SAAS,GAAGF,SAAS;AACvB,MAAA,CAAA,MAAO,IAAIE,SAAS,KAAKF,SAAS,EAAE;AAClC,QAAA,OAAO,KAAK;AACd,MAAA;AACF,IAAA;AACA,IAAA,OAAO,IAAI;AACb,EAAA;AAMU,EAAA,aAAa7B,oBAAoBA,CAACgC,OAA6B,EAAEjC,IAAY,EAAA;IAMrF,IAAI,CAAC,MAAMiC,OAAO,CAAC7B,qBAAqB,EAAE,MAAMJ,IAAI,EAAE;AACpD,MAAA,OAAO,IAAI;AACb,IAAA;AAKA,IAAA,MAAMK,UAAU,GAAG,MAAM4B,OAAO,CAAC3B,yBAAyB,EAAE;IAC5D,IAAID,UAAU,CAAC6B,OAAO,CAAClC,IAAI,CAAC,KAAK,EAAE,EAAE;AACnC,MAAA,OAAO,KAAK;AACd,IAAA;AACA,IAAA,IAAI,CAACiC,OAAO,CAACzB,4BAA4B,CAACH,UAAU,CAAC,EAAE;AACrD,MAAA,MAAMI,KAAK,CACT,CAAA,2CAAA,EAA8CT,IAAI,CAAA,YAAA,CAAc,GAC9D,2EAA2E,CAC9E;AACH,IAAA;AACA,IAAA,OAAO,IAAI;AACb,EAAA;;AAII,MAAOL,qBAAsB,SAAQH,gBAAgB,CAAA;EAEzD,OAAOC,YAAY,GAAG,uBAAuB;AAQ7C,EAAA,OAAOG,IAAIA,CAETC,OAAA,GAAqC,EAAE,EAAA;AAEvC,IAAA,OAAO,IAAIC,gBAAgB,CAAC,IAAI,EAAED,OAAO,CAAA,CACtCE,SAAS,CAAC,OAAO,EAAEF,OAAO,CAACsC,KAAK,EAAE,CAACF,OAAO,EAAEE,KAAK,KAChDrC,gBAAgB,CAACsC,aAAa,CAACH,OAAO,CAACI,YAAY,EAAE,EAAEF,KAAK,CAAC,CAAA,CAE9DpC,SAAS,CAAC,MAAM,EAAEF,OAAO,CAACG,IAAI,EAAE,OAAOiC,OAAO,EAAEjC,IAAI,KAAK,CAAC,MAAMiC,OAAO,CAAC/B,OAAO,EAAE,MAAMF,IAAI,CAAA,CAC3FD,SAAS,CACR,SAAS,EACTF,OAAO,CAACyC,OAAO,EACf,OAAOL,OAAO,EAAEK,OAAO,KAAK,CAAC,MAAML,OAAO,CAACjB,SAAS,EAAE,KAAKsB,OAAO,CACnE;AACL,EAAA;AAEUC,EAAAA,UAAU,GAAG,IAAI,CAACC,UAAU,CAAC,OAAO,CAAC;EACrCC,WAAW,GAAG,IAAI,CAACF,UAAU;AAC/BG,EAAAA,MAAM,GAAG,IAAI,CAACF,UAAU,CAAC,OAAO,CAAC;EAGzC,MAAMxB,SAASA,GAAA;AACb,IAAA,MAAMsB,OAAO,GAAG,CAAC,MAAM,IAAI,CAACI,MAAM,EAAE,EAAE9B,WAAW,CAAU,SAAS,CAAC;AACrE,IAAA,OAAO+B,qBAAqB,CAAC,MAAML,OAAO,CAAC;AAC7C,EAAA;EAGA,MAAMM,UAAUA,GAAA;AACd,IAAA,MAAMC,KAAK,GAAG,MAAM,IAAI,CAACH,MAAM,EAAE;IACjC,MAAMI,QAAQ,GAAG,MAAMD,KAAK,CAAClB,YAAY,CAAC,UAAU,CAAC;IAErD,IAAImB,QAAQ,KAAK,IAAI,EAAE;MACrB,OAAOH,qBAAqB,CAACG,QAAQ,CAAC;AACxC,IAAA;IAEA,OAAO,CAAC,MAAMD,KAAK,CAAClB,YAAY,CAAC,eAAe,CAAC,MAAM,MAAM;AAC/D,EAAA;EAGA,MAAMoB,UAAUA,GAAA;AACd,IAAA,MAAMC,QAAQ,GAAG,CAAC,MAAM,IAAI,CAACN,MAAM,EAAE,EAAEf,YAAY,CAAC,UAAU,CAAC;AAC/D,IAAA,OAAOgB,qBAAqB,CAAC,MAAMK,QAAQ,CAAC;AAC9C,EAAA;EAGA,MAAM9C,OAAOA,GAAA;IACX,OAAO,CAAC,MAAM,IAAI,CAACwC,MAAM,EAAE,EAAEf,YAAY,CAAC,MAAM,CAAC;AACnD,EAAA;EAGA,MAAMjB,KAAKA,GAAA;IACT,OAAO,CAAC,MAAM,IAAI,CAACC,IAAI,EAAE,EAAEC,WAAW,CAAS,IAAI,CAAC;AACtD,EAAA;EAQA,MAAMO,QAAQA,GAAA;IACZ,OAAO,CAAC,MAAM,IAAI,CAACuB,MAAM,EAAE,EAAE9B,WAAW,CAAC,OAAO,CAAC;AACnD,EAAA;EAGA,MAAMyB,YAAYA,GAAA;IAChB,OAAO,CAAC,MAAM,IAAI,CAACE,UAAU,EAAE,EAAEU,IAAI,EAAE;AACzC,EAAA;EAGA,MAAMC,KAAKA,GAAA;IACT,OAAO,CAAC,MAAM,IAAI,CAACR,MAAM,EAAE,EAAEQ,KAAK,EAAE;AACtC,EAAA;EAGA,MAAMC,IAAIA,GAAA;IACR,OAAO,CAAC,MAAM,IAAI,CAACT,MAAM,EAAE,EAAES,IAAI,EAAE;AACrC,EAAA;EAGA,MAAMC,SAASA,GAAA;IACb,OAAO,CAAC,MAAM,IAAI,CAACV,MAAM,EAAE,EAAEU,SAAS,EAAE;AAC1C,EAAA;EAMA,MAAM1B,KAAKA,GAAA;IACT,IAAI,EAAE,MAAM,IAAI,CAACV,SAAS,EAAE,CAAC,EAAE;MAC7B,OAAO,CAAC,MAAM,IAAI,CAACyB,WAAW,EAAE,EAAEY,KAAK,EAAE;AAC3C,IAAA;AACF,EAAA;;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"radio.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/radio/radio.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/radio/radio.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/radio/radio-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\nimport {_IdGenerator, FocusMonitor, FocusOrigin} from '@angular/cdk/a11y';\nimport {UniqueSelectionDispatcher} from '@angular/cdk/collections';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Directive,\n DoCheck,\n ElementRef,\n EventEmitter,\n InjectionToken,\n Injector,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n afterNextRender,\n booleanAttribute,\n forwardRef,\n inject,\n numberAttribute,\n HostAttributeToken,\n Renderer2,\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {\n MatRipple,\n ThemePalette,\n _MatInternalFormField,\n _StructuralStylesLoader,\n _animationsDisabled,\n} from '../core';\nimport {Subscription} from 'rxjs';\nimport {_CdkPrivateStyleLoader} from '@angular/cdk/private';\n\n/** Change event object emitted by radio button and radio group. */\nexport class MatRadioChange<T = any> {\n constructor(\n /** The radio button that emits the change event. */\n public source: MatRadioButton,\n /** The value of the radio button. */\n public value: T,\n ) {}\n}\n\n/**\n * Provider Expression that allows mat-radio-group to register as a ControlValueAccessor. This\n * allows it to support [(ngModel)] and ngControl.\n * @docs-private\n */\nexport const MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatRadioGroup),\n multi: true,\n};\n\n/**\n * Injection token that can be used to inject instances of `MatRadioGroup`. It serves as\n * alternative token to the actual `MatRadioGroup` class which could cause unnecessary\n * retention of the class and its component metadata.\n */\nexport const MAT_RADIO_GROUP = new InjectionToken<MatRadioGroup>('MatRadioGroup');\n\nexport interface MatRadioDefaultOptions {\n /**\n * Theme color of the radio button. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/radio/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n color: ThemePalette;\n\n /** Whether disabled radio buttons should be interactive. */\n disabledInteractive?: boolean;\n}\n\nexport const MAT_RADIO_DEFAULT_OPTIONS = new InjectionToken<MatRadioDefaultOptions>(\n 'mat-radio-default-options',\n {\n providedIn: 'root',\n factory: () => ({\n color: 'accent',\n disabledInteractive: false,\n }),\n },\n);\n\n/**\n * A group of radio buttons. May contain one or more `<mat-radio-button>` elements.\n */\n@Directive({\n selector: 'mat-radio-group',\n exportAs: 'matRadioGroup',\n providers: [\n MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR,\n {provide: MAT_RADIO_GROUP, useExisting: MatRadioGroup},\n ],\n host: {\n 'role': 'radiogroup',\n 'class': 'mat-mdc-radio-group',\n },\n})\nexport class MatRadioGroup implements AfterContentInit, OnDestroy, ControlValueAccessor {\n private _changeDetector = inject(ChangeDetectorRef);\n\n /** Selected value for the radio group. */\n private _value: any = null;\n\n /** The HTML name attribute applied to radio buttons in this group. */\n private _name: string = inject(_IdGenerator).getId('mat-radio-group-');\n\n /** The currently selected radio button. Should match value. */\n private _selected: MatRadioButton | null = null;\n\n /** Whether the `value` has been set to its initial value. */\n private _isInitialized: boolean = false;\n\n /** Whether the labels should appear after or before the radio-buttons. Defaults to 'after' */\n private _labelPosition: 'before' | 'after' = 'after';\n\n /** Whether the radio group is disabled. */\n private _disabled: boolean = false;\n\n /** Whether the radio group is required. */\n private _required: boolean = false;\n\n /** Subscription to changes in amount of radio buttons. */\n private _buttonChanges!: Subscription;\n\n /** The method to be called in order to update ngModel */\n _controlValueAccessorChangeFn: (value: any) => void = () => {};\n\n /**\n * onTouch function registered via registerOnTouch (ControlValueAccessor).\n * @docs-private\n */\n onTouched: () => any = () => {};\n\n /**\n * Event emitted when the group value changes.\n * Change events are only emitted when the value changes due to user interaction with\n * a radio button (the same behavior as `<input type-\"radio\">`).\n */\n @Output() readonly change: EventEmitter<MatRadioChange> = new EventEmitter<MatRadioChange>();\n\n /** Child radio buttons. */\n @ContentChildren(forwardRef(() => MatRadioButton), {descendants: true})\n _radios!: QueryList<MatRadioButton>;\n\n /**\n * Theme color of the radio buttons in the group. This API is supported in M2\n * themes only, it has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/radio/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input() color!: ThemePalette;\n\n /** Name of the radio button group. All radio buttons inside this group will use this name. */\n @Input()\n get name(): string {\n return this._name;\n }\n set name(value: string) {\n this._name = value;\n this._updateRadioButtonNames();\n }\n\n /** Whether the labels should appear after or before the radio-buttons. Defaults to 'after' */\n @Input()\n get labelPosition(): 'before' | 'after' {\n return this._labelPosition;\n }\n set labelPosition(v) {\n this._labelPosition = v === 'before' ? 'before' : 'after';\n this._markRadiosForCheck();\n }\n\n /**\n * Value for the radio-group. Should equal the value of the selected radio button if there is\n * a corresponding radio button with a matching value. If there is not such a corresponding\n * radio button, this value persists to be applied in case a new radio button is added with a\n * matching value.\n */\n @Input()\n get value(): any {\n return this._value;\n }\n set value(newValue: any) {\n if (this._value !== newValue) {\n // Set this before proceeding to ensure no circular loop occurs with selection.\n this._value = newValue;\n\n this._updateSelectedRadioFromValue();\n this._checkSelectedRadioButton();\n }\n }\n\n _checkSelectedRadioButton() {\n if (this._selected && !this._selected.checked) {\n this._selected.checked = true;\n }\n }\n\n /**\n * The currently selected radio button. If set to a new radio button, the radio group value\n * will be updated to match the new selected button.\n */\n @Input()\n get selected() {\n return this._selected;\n }\n set selected(selected: MatRadioButton | null) {\n this._selected = selected;\n this.value = selected ? selected.value : null;\n this._checkSelectedRadioButton();\n }\n\n /** Whether the radio group is disabled */\n @Input({transform: booleanAttribute})\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = value;\n this._markRadiosForCheck();\n }\n\n /** Whether the radio group is required */\n @Input({transform: booleanAttribute})\n get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = value;\n this._markRadiosForCheck();\n }\n\n /** Whether buttons in the group should be interactive while they're disabled. */\n @Input({transform: booleanAttribute})\n get disabledInteractive(): boolean {\n return this._disabledInteractive;\n }\n set disabledInteractive(value: boolean) {\n this._disabledInteractive = value;\n this._markRadiosForCheck();\n }\n private _disabledInteractive = false;\n\n constructor(...args: unknown[]);\n\n constructor() {}\n\n /**\n * Initialize properties once content children are available.\n * This allows us to propagate relevant attributes to associated buttons.\n */\n ngAfterContentInit() {\n // Mark this component as initialized in AfterContentInit because the initial value can\n // possibly be set by NgModel on MatRadioGroup, and it is possible that the OnInit of the\n // NgModel occurs *after* the OnInit of the MatRadioGroup.\n this._isInitialized = true;\n\n // Clear the `selected` button when it's destroyed since the tabindex of the rest of the\n // buttons depends on it. Note that we don't clear the `value`, because the radio button\n // may be swapped out with a similar one and there are some internal apps that depend on\n // that behavior.\n this._buttonChanges = this._radios.changes.subscribe(() => {\n if (this.selected && !this._radios.find(radio => radio === this.selected)) {\n this._selected = null;\n }\n });\n }\n\n ngOnDestroy() {\n this._buttonChanges?.unsubscribe();\n }\n\n /**\n * Mark this group as being \"touched\" (for ngModel). Meant to be called by the contained\n * radio buttons upon their blur.\n */\n _touch() {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n private _updateRadioButtonNames(): void {\n if (this._radios) {\n this._radios.forEach(radio => {\n radio.name = this.name;\n radio._markForCheck();\n });\n }\n }\n\n /** Updates the `selected` radio button from the internal _value state. */\n private _updateSelectedRadioFromValue(): void {\n // If the value already matches the selected radio, do nothing.\n const isAlreadySelected = this._selected !== null && this._selected.value === this._value;\n\n if (this._radios && !isAlreadySelected) {\n this._selected = null;\n this._radios.forEach(radio => {\n radio.checked = this.value === radio.value;\n if (radio.checked) {\n this._selected = radio;\n }\n });\n }\n }\n\n /** Dispatch change event with current selection and group value. */\n _emitChangeEvent(): void {\n if (this._isInitialized) {\n this.change.emit(new MatRadioChange(this._selected!, this._value));\n }\n }\n\n _markRadiosForCheck() {\n if (this._radios) {\n this._radios.forEach(radio => radio._markForCheck());\n }\n }\n\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value\n */\n writeValue(value: any) {\n this.value = value;\n this._changeDetector.markForCheck();\n }\n\n /**\n * Registers a callback to be triggered when the model value changes.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnChange(fn: (value: any) => void) {\n this._controlValueAccessorChangeFn = fn;\n }\n\n /**\n * Registers a callback to be triggered when the control is touched.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n * @param isDisabled Whether the control should be disabled.\n */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this._changeDetector.markForCheck();\n }\n}\n\n@Component({\n selector: 'mat-radio-button',\n templateUrl: 'radio.html',\n styleUrl: 'radio.css',\n host: {\n 'class': 'mat-mdc-radio-button',\n '[attr.id]': 'id',\n '[class.mat-primary]': 'color === \"primary\"',\n '[class.mat-accent]': 'color === \"accent\"',\n '[class.mat-warn]': 'color === \"warn\"',\n '[class.mat-mdc-radio-checked]': 'checked',\n '[class.mat-mdc-radio-disabled]': 'disabled',\n '[class.mat-mdc-radio-disabled-interactive]': 'disabledInteractive',\n '[class._mat-animation-noopable]': '_noopAnimations',\n // Needs to be removed since it causes some a11y issues (see #21266).\n '[attr.tabindex]': 'null',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.aria-describedby]': 'null',\n // Note: under normal conditions focus shouldn't land on this element, however it may be\n // programmatically set, for example inside of a focus trap, in this case we want to forward\n // the focus to the native element.\n '(focus)': '_inputElement.nativeElement.focus()',\n },\n exportAs: 'matRadioButton',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatRipple, _MatInternalFormField],\n})\nexport class MatRadioButton implements OnInit, AfterViewInit, DoCheck, OnDestroy {\n protected _elementRef = inject(ElementRef);\n private _changeDetector = inject(ChangeDetectorRef);\n private _focusMonitor = inject(FocusMonitor);\n private _radioDispatcher = inject(UniqueSelectionDispatcher);\n private _defaultOptions = inject<MatRadioDefaultOptions>(MAT_RADIO_DEFAULT_OPTIONS, {\n optional: true,\n });\n\n private _ngZone = inject(NgZone);\n private _renderer = inject(Renderer2);\n private _uniqueId = inject(_IdGenerator).getId('mat-radio-');\n private _cleanupClick: (() => void) | undefined;\n\n /** The unique ID for the radio button. */\n @Input() id: string = this._uniqueId;\n\n /** Analog to HTML 'name' attribute used to group radios for unique selection. */\n @Input() name!: string;\n\n /** Used to set the 'aria-label' attribute on the underlying input element. */\n @Input('aria-label') ariaLabel!: string | null;\n\n /** The 'aria-labelledby' attribute takes precedence as the element's text alternative. */\n @Input('aria-labelledby') ariaLabelledby!: string | null;\n\n /** The 'aria-describedby' attribute is read after the element's label and field type. */\n @Input('aria-describedby') ariaDescribedby!: string | null;\n\n /** Whether ripples are disabled inside the radio button */\n @Input({transform: booleanAttribute})\n disableRipple: boolean = false;\n\n /** Tabindex of the radio button. */\n @Input({\n transform: (value: unknown) => (value == null ? 0 : numberAttribute(value)),\n })\n tabIndex: number = 0;\n\n /** Whether this radio button is checked. */\n @Input({transform: booleanAttribute})\n get checked(): boolean {\n return this._checked;\n }\n set checked(value: boolean) {\n if (this._checked !== value) {\n this._checked = value;\n if (value && this.radioGroup && this.radioGroup.value !== this.value) {\n this.radioGroup.selected = this;\n } else if (!value && this.radioGroup && this.radioGroup.value === this.value) {\n // When unchecking the selected radio button, update the selected radio\n // property on the group.\n this.radioGroup.selected = null;\n }\n\n if (value) {\n // Notify all radio buttons with the same name to un-check.\n this._radioDispatcher.notify(this.id, this.name);\n }\n this._changeDetector.markForCheck();\n }\n }\n\n /** The value of this radio button. */\n @Input()\n get value(): any {\n return this._value;\n }\n set value(value: any) {\n if (this._value !== value) {\n this._value = value;\n if (this.radioGroup !== null) {\n if (!this.checked) {\n // Update checked when the value changed to match the radio group's value\n this.checked = this.radioGroup.value === value;\n }\n if (this.checked) {\n this.radioGroup.selected = this;\n }\n }\n }\n }\n\n /** Whether the label should appear after or before the radio button. Defaults to 'after' */\n @Input()\n get labelPosition(): 'before' | 'after' {\n return this._labelPosition || (this.radioGroup && this.radioGroup.labelPosition) || 'after';\n }\n set labelPosition(value) {\n this._labelPosition = value;\n }\n private _labelPosition: 'before' | 'after' | undefined;\n\n /** Whether the radio button is disabled. */\n @Input({transform: booleanAttribute})\n get disabled(): boolean {\n return this._disabled || (this.radioGroup !== null && this.radioGroup.disabled);\n }\n set disabled(value: boolean) {\n this._setDisabled(value);\n }\n\n /** Whether the radio button is required. */\n @Input({transform: booleanAttribute})\n get required(): boolean {\n return this._required || (this.radioGroup && this.radioGroup.required);\n }\n set required(value: boolean) {\n if (value !== this._required) {\n this._changeDetector.markForCheck();\n }\n this._required = value;\n }\n\n /**\n * Theme color of the radio button. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/radio/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input()\n get color(): ThemePalette {\n // As per M2 design specifications the selection control radio should use the accent color\n // palette by default. https://m2.material.io/components/radio-buttons#specs\n return (\n this._color ||\n (this.radioGroup && this.radioGroup.color) ||\n (this._defaultOptions && this._defaultOptions.color) ||\n 'accent'\n );\n }\n set color(newValue: ThemePalette) {\n this._color = newValue;\n }\n private _color: ThemePalette;\n\n /** Whether the radio button should remain interactive when it is disabled. */\n @Input({transform: booleanAttribute})\n get disabledInteractive(): boolean {\n return (\n this._disabledInteractive || (this.radioGroup !== null && this.radioGroup.disabledInteractive)\n );\n }\n set disabledInteractive(value: boolean) {\n this._disabledInteractive = value;\n }\n private _disabledInteractive: boolean;\n\n /**\n * Event emitted when the checked state of this radio button changes.\n * Change events are only emitted when the value changes due to user interaction with\n * the radio button (the same behavior as `<input type-\"radio\">`).\n */\n @Output() readonly change: EventEmitter<MatRadioChange> = new EventEmitter<MatRadioChange>();\n\n /** The parent radio group. May or may not be present. */\n radioGroup: MatRadioGroup;\n\n /** ID of the native input element inside `<mat-radio-button>` */\n get inputId(): string {\n return `${this.id || this._uniqueId}-input`;\n }\n\n /** Whether this radio is checked. */\n private _checked = false;\n\n /** Whether this radio is disabled. */\n private _disabled = false;\n\n /** Whether this radio is required. */\n private _required = false;\n\n /** Value assigned to this radio. */\n private _value: any = null;\n\n /** Unregister function for _radioDispatcher */\n private _removeUniqueSelectionListener: () => void = () => {};\n\n /** Previous value of the input's tabindex. */\n private _previousTabIndex: number | undefined;\n\n /** The native `<input type=radio>` element */\n @ViewChild('input') _inputElement!: ElementRef<HTMLInputElement>;\n\n /** Trigger elements for the ripple events. */\n @ViewChild('formField', {read: ElementRef, static: true})\n _rippleTrigger!: ElementRef<HTMLElement>;\n\n /** Whether animations are disabled. */\n _noopAnimations = _animationsDisabled();\n\n private _injector = inject(Injector);\n\n constructor(...args: unknown[]);\n\n constructor() {\n inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);\n const radioGroup = inject<MatRadioGroup>(MAT_RADIO_GROUP, {optional: true})!;\n const tabIndex = inject(new HostAttributeToken('tabindex'), {optional: true});\n\n // Assertions. Ideally these should be stripped out by the compiler.\n // TODO(jelbourn): Assert that there's no name binding AND a parent radio group.\n this.radioGroup = radioGroup;\n this._disabledInteractive = this._defaultOptions?.disabledInteractive ?? false;\n\n if (tabIndex) {\n this.tabIndex = numberAttribute(tabIndex, 0);\n }\n }\n\n /** Focuses the radio button. */\n focus(options?: FocusOptions, origin?: FocusOrigin): void {\n if (origin) {\n this._focusMonitor.focusVia(this._inputElement, origin, options);\n } else {\n this._inputElement.nativeElement.focus(options);\n }\n }\n\n /**\n * Marks the radio button as needing checking for change detection.\n * This method is exposed because the parent radio group will directly\n * update bound properties of the radio button.\n */\n _markForCheck() {\n // When group value changes, the button will not be notified. Use `markForCheck` to explicit\n // update radio button's status\n this._changeDetector.markForCheck();\n }\n\n ngOnInit() {\n if (this.radioGroup) {\n // If the radio is inside a radio group, determine if it should be checked\n this.checked = this.radioGroup.value === this._value;\n\n if (this.checked) {\n this.radioGroup.selected = this;\n }\n\n // Copy name from parent radio group\n this.name = this.radioGroup.name;\n }\n\n this._removeUniqueSelectionListener = this._radioDispatcher.listen((id, name) => {\n if (id !== this.id && name === this.name) {\n this.checked = false;\n }\n });\n }\n\n ngDoCheck(): void {\n this._updateTabIndex();\n }\n\n ngAfterViewInit() {\n this._updateTabIndex();\n this._focusMonitor.monitor(this._elementRef, true).subscribe(focusOrigin => {\n if (!focusOrigin && this.radioGroup) {\n this.radioGroup._touch();\n }\n });\n\n // We bind this outside of the zone, because:\n // 1. Its logic is completely DOM-related so we can avoid some change detections.\n // 2. There appear to be some internal tests that break when this triggers a change detection.\n this._ngZone.runOutsideAngular(() => {\n this._cleanupClick = this._renderer.listen(\n this._inputElement.nativeElement,\n 'click',\n this._onInputClick,\n );\n });\n }\n\n ngOnDestroy() {\n this._cleanupClick?.();\n this._focusMonitor.stopMonitoring(this._elementRef);\n this._removeUniqueSelectionListener();\n }\n\n /** Dispatch change event with current value. */\n private _emitChangeEvent(): void {\n this.change.emit(new MatRadioChange(this, this._value));\n }\n\n _isRippleDisabled() {\n return this.disableRipple || this.disabled;\n }\n\n /** Triggered when the radio button receives an interaction from the user. */\n _onInputInteraction(event: Event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation();\n\n if (!this.checked && !this.disabled) {\n const groupValueChanged = this.radioGroup && this.value !== this.radioGroup.value;\n this.checked = true;\n this._emitChangeEvent();\n\n if (this.radioGroup) {\n this.radioGroup._controlValueAccessorChangeFn(this.value);\n if (groupValueChanged) {\n this.radioGroup._emitChangeEvent();\n }\n }\n }\n }\n\n /** Triggered when the user clicks on the touch target. */\n _onTouchTargetClick(event: Event) {\n this._onInputInteraction(event);\n\n if (!this.disabled || this.disabledInteractive) {\n // Normally the input should be focused already, but if the click\n // comes from the touch target, then we might have to focus it ourselves.\n this._inputElement?.nativeElement.focus();\n }\n }\n\n /** Sets the disabled state and marks for check if a change occurred. */\n protected _setDisabled(value: boolean) {\n if (this._disabled !== value) {\n this._disabled = value;\n this._changeDetector.markForCheck();\n }\n }\n\n /** Called when the input is clicked. */\n private _onInputClick = (event: Event) => {\n // If the input is disabled while interactive, we need to prevent the\n // selection from happening in this event handler. Note that even though\n // this happens on `click` events, the logic applies when the user is\n // navigating with the keyboard as well. An alternative way of doing\n // this is by resetting the `checked` state in the `change` callback but\n // it isn't optimal, because it can allow a pre-checked disabled button\n // to be un-checked. This approach seems to cover everything.\n if (this.disabled && this.disabledInteractive) {\n event.preventDefault();\n }\n };\n\n /** Gets the tabindex for the underlying input element. */\n private _updateTabIndex() {\n const group = this.radioGroup;\n let value: number;\n\n // Implement a roving tabindex if the button is inside a group. For most cases this isn't\n // necessary, because the browser handles the tab order for inputs inside a group automatically,\n // but we need an explicitly higher tabindex for the selected button in order for things like\n // the focus trap to pick it up correctly.\n if (!group || !group.selected || this.disabled) {\n value = this.tabIndex;\n } else {\n value = group.selected === this ? this.tabIndex : -1;\n }\n\n if (value !== this._previousTabIndex) {\n // We have to set the tabindex directly on the DOM node, because it depends on\n // the selected state which is prone to \"changed after checked errors\".\n const input: HTMLInputElement | undefined = this._inputElement?.nativeElement;\n\n if (input) {\n input.setAttribute('tabindex', value + '');\n this._previousTabIndex = value;\n // Wait for any pending tabindex changes to be applied\n afterNextRender(\n () => {\n queueMicrotask(() => {\n // The radio group uses a \"selection follows focus\" pattern for tab management, so if this\n // radio button is currently focused and another radio button in the group becomes\n // selected, we should move focus to the newly selected radio button to maintain\n // consistency between the focused and selected states.\n if (\n group &&\n group.selected &&\n group.selected !== this &&\n document.activeElement === input\n ) {\n group.selected?._inputElement.nativeElement.focus();\n // If this radio button still has focus, the selected one must be disabled. In this\n // case the radio group as a whole should lose focus.\n if (document.activeElement === input) {\n this._inputElement.nativeElement.blur();\n }\n }\n });\n },\n {injector: this._injector},\n );\n }\n }\n }\n}\n","<div mat-internal-form-field [labelPosition]=\"labelPosition\" #formField>\n <div class=\"mdc-radio\" [class.mdc-radio--disabled]=\"disabled\">\n <!-- Render this element first so the input is on top. -->\n <div\n class=\"mat-mdc-radio-touch-target\"\n (click)=\"_onTouchTargetClick($event)\"\n aria-hidden=\"true\"></div>\n <!--\n Note that we set `aria-invalid=\"false\"` on the input, because otherwise some screen readers\n will read out \"required, invalid data\" for each radio button that hasn't been checked.\n An alternate approach is to use `aria-required` instead of `required`, however we have an\n internal check which enforces that elements marked as `aria-required` also have the `required`\n attribute which ends up re-introducing the issue for us.\n -->\n <input #input class=\"mdc-radio__native-control\" type=\"radio\"\n [id]=\"inputId\"\n [checked]=\"checked\"\n [disabled]=\"disabled && !disabledInteractive\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [required]=\"required\"\n aria-invalid=\"false\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.aria-disabled]=\"disabled && disabledInteractive ? 'true' : null\"\n (change)=\"_onInputInteraction($event)\">\n <div class=\"mdc-radio__background\" aria-hidden=\"true\">\n <div class=\"mdc-radio__outer-circle\"></div>\n <div class=\"mdc-radio__inner-circle\"></div>\n </div>\n <div mat-ripple class=\"mat-radio-ripple mat-focus-indicator\"\n [matRippleTrigger]=\"_rippleTrigger.nativeElement\"\n [matRippleDisabled]=\"_isRippleDisabled()\"\n [matRippleCentered]=\"true\"\n aria-hidden=\"true\">\n <div class=\"mat-ripple-element mat-radio-persistent-ripple\"></div>\n </div>\n </div>\n <label class=\"mdc-label\" [for]=\"inputId\">\n <ng-content></ng-content>\n </label>\n</div>\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 {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\nimport {MatRippleModule} from '../core';\nimport {MatRadioButton, MatRadioGroup} from './radio';\n\n@NgModule({\n imports: [MatRippleModule, MatRadioGroup, MatRadioButton],\n exports: [BidiModule, MatRadioGroup, MatRadioButton],\n})\nexport class MatRadioModule {}\n"],"names":["MatRadioChange","source","value","constructor","MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","MatRadioGroup","multi","MAT_RADIO_GROUP","InjectionToken","MAT_RADIO_DEFAULT_OPTIONS","providedIn","factory","color","disabledInteractive","_changeDetector","inject","ChangeDetectorRef","_value","_name","_IdGenerator","getId","_selected","_isInitialized","_labelPosition","_disabled","_required","_buttonChanges","_controlValueAccessorChangeFn","onTouched","change","EventEmitter","_radios","name","_updateRadioButtonNames","labelPosition","v","_markRadiosForCheck","newValue","_updateSelectedRadioFromValue","_checkSelectedRadioButton","checked","selected","disabled","required","_disabledInteractive","ngAfterContentInit","changes","subscribe","find","radio","ngOnDestroy","unsubscribe","_touch","forEach","_markForCheck","isAlreadySelected","_emitChangeEvent","emit","writeValue","markForCheck","registerOnChange","fn","registerOnTouched","setDisabledState","isDisabled","deps","target","i0","ɵɵFactoryTarget","Directive","ɵdir","ɵɵngDeclareDirective","minVersion","version","type","booleanAttribute","outputs","host","attributes","classAttribute","providers","queries","propertyName","predicate","MatRadioButton","descendants","exportAs","ngImport","decorators","args","selector","Output","ContentChildren","Input","transform","_elementRef","ElementRef","_focusMonitor","FocusMonitor","_radioDispatcher","UniqueSelectionDispatcher","_defaultOptions","optional","_ngZone","NgZone","_renderer","Renderer2","_uniqueId","_cleanupClick","id","ariaLabel","ariaLabelledby","ariaDescribedby","disableRipple","tabIndex","_checked","radioGroup","notify","_setDisabled","_color","inputId","_removeUniqueSelectionListener","_previousTabIndex","_inputElement","_rippleTrigger","_noopAnimations","_animationsDisabled","_injector","Injector","_CdkPrivateStyleLoader","load","_StructuralStylesLoader","HostAttributeToken","numberAttribute","focus","options","origin","focusVia","nativeElement","ngOnInit","listen","ngDoCheck","_updateTabIndex","ngAfterViewInit","monitor","focusOrigin","runOutsideAngular","_onInputClick","stopMonitoring","_isRippleDisabled","_onInputInteraction","event","stopPropagation","groupValueChanged","_onTouchTargetClick","preventDefault","group","input","setAttribute","afterNextRender","queueMicrotask","document","activeElement","blur","injector","Component","ɵcmp","ɵɵngDeclareComponent","static","template","styles","dependencies","kind","MatRipple","_MatInternalFormField","inputs","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","imports","ViewChild","read","MatRadioModule","NgModule","MatRippleModule","exports","BidiModule","ɵinj","ɵɵngDeclareInjector"],"mappings":"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"}
{"version":3,"file":"radio.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/radio/radio.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/radio/radio.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/radio/radio-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\nimport {_IdGenerator, FocusMonitor, FocusOrigin} from '@angular/cdk/a11y';\nimport {UniqueSelectionDispatcher} from '@angular/cdk/collections';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Directive,\n DoCheck,\n ElementRef,\n EventEmitter,\n InjectionToken,\n Injector,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n afterNextRender,\n booleanAttribute,\n forwardRef,\n inject,\n numberAttribute,\n HostAttributeToken,\n Renderer2,\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {\n MatRipple,\n ThemePalette,\n _MatInternalFormField,\n _StructuralStylesLoader,\n _animationsDisabled,\n} from '../core';\nimport {Subscription} from 'rxjs';\nimport {_CdkPrivateStyleLoader} from '@angular/cdk/private';\n\n/** Change event object emitted by radio button and radio group. */\nexport class MatRadioChange<T = any> {\n constructor(\n /** The radio button that emits the change event. */\n public source: MatRadioButton,\n /** The value of the radio button. */\n public value: T,\n ) {}\n}\n\n/**\n * Provider Expression that allows mat-radio-group to register as a ControlValueAccessor. This\n * allows it to support [(ngModel)] and ngControl.\n * @docs-private\n */\nexport const MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatRadioGroup),\n multi: true,\n};\n\n/**\n * Injection token that can be used to inject instances of `MatRadioGroup`. It serves as\n * alternative token to the actual `MatRadioGroup` class which could cause unnecessary\n * retention of the class and its component metadata.\n */\nexport const MAT_RADIO_GROUP = new InjectionToken<MatRadioGroup>('MatRadioGroup');\n\nexport interface MatRadioDefaultOptions {\n /**\n * Theme color of the radio button. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/radio/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n color: ThemePalette;\n\n /** Whether disabled radio buttons should be interactive. */\n disabledInteractive?: boolean;\n}\n\nexport const MAT_RADIO_DEFAULT_OPTIONS = new InjectionToken<MatRadioDefaultOptions>(\n 'mat-radio-default-options',\n {\n providedIn: 'root',\n factory: () => ({\n color: 'accent',\n disabledInteractive: false,\n }),\n },\n);\n\n/**\n * A group of radio buttons. May contain one or more `<mat-radio-button>` elements.\n */\n@Directive({\n selector: 'mat-radio-group',\n exportAs: 'matRadioGroup',\n providers: [\n MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR,\n {provide: MAT_RADIO_GROUP, useExisting: MatRadioGroup},\n ],\n host: {\n 'role': 'radiogroup',\n 'class': 'mat-mdc-radio-group',\n },\n})\nexport class MatRadioGroup implements AfterContentInit, OnDestroy, ControlValueAccessor {\n private _changeDetector = inject(ChangeDetectorRef);\n\n /** Selected value for the radio group. */\n private _value: any = null;\n\n /** The HTML name attribute applied to radio buttons in this group. */\n private _name: string = inject(_IdGenerator).getId('mat-radio-group-');\n\n /** The currently selected radio button. Should match value. */\n private _selected: MatRadioButton | null = null;\n\n /** Whether the `value` has been set to its initial value. */\n private _isInitialized: boolean = false;\n\n /** Whether the labels should appear after or before the radio-buttons. Defaults to 'after' */\n private _labelPosition: 'before' | 'after' = 'after';\n\n /** Whether the radio group is disabled. */\n private _disabled: boolean = false;\n\n /** Whether the radio group is required. */\n private _required: boolean = false;\n\n /** Subscription to changes in amount of radio buttons. */\n private _buttonChanges!: Subscription;\n\n /** The method to be called in order to update ngModel */\n _controlValueAccessorChangeFn: (value: any) => void = () => {};\n\n /**\n * onTouch function registered via registerOnTouch (ControlValueAccessor).\n * @docs-private\n */\n onTouched: () => any = () => {};\n\n /**\n * Event emitted when the group value changes.\n * Change events are only emitted when the value changes due to user interaction with\n * a radio button (the same behavior as `<input type-\"radio\">`).\n */\n @Output() readonly change: EventEmitter<MatRadioChange> = new EventEmitter<MatRadioChange>();\n\n /** Child radio buttons. */\n @ContentChildren(forwardRef(() => MatRadioButton), {descendants: true})\n _radios!: QueryList<MatRadioButton>;\n\n /**\n * Theme color of the radio buttons in the group. This API is supported in M2\n * themes only, it has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/radio/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input() color!: ThemePalette;\n\n /** Name of the radio button group. All radio buttons inside this group will use this name. */\n @Input()\n get name(): string {\n return this._name;\n }\n set name(value: string) {\n this._name = value;\n this._updateRadioButtonNames();\n }\n\n /** Whether the labels should appear after or before the radio-buttons. Defaults to 'after' */\n @Input()\n get labelPosition(): 'before' | 'after' {\n return this._labelPosition;\n }\n set labelPosition(v) {\n this._labelPosition = v === 'before' ? 'before' : 'after';\n this._markRadiosForCheck();\n }\n\n /**\n * Value for the radio-group. Should equal the value of the selected radio button if there is\n * a corresponding radio button with a matching value. If there is not such a corresponding\n * radio button, this value persists to be applied in case a new radio button is added with a\n * matching value.\n */\n @Input()\n get value(): any {\n return this._value;\n }\n set value(newValue: any) {\n if (this._value !== newValue) {\n // Set this before proceeding to ensure no circular loop occurs with selection.\n this._value = newValue;\n\n this._updateSelectedRadioFromValue();\n this._checkSelectedRadioButton();\n }\n }\n\n _checkSelectedRadioButton() {\n if (this._selected && !this._selected.checked) {\n this._selected.checked = true;\n }\n }\n\n /**\n * The currently selected radio button. If set to a new radio button, the radio group value\n * will be updated to match the new selected button.\n */\n @Input()\n get selected() {\n return this._selected;\n }\n set selected(selected: MatRadioButton | null) {\n this._selected = selected;\n this.value = selected ? selected.value : null;\n this._checkSelectedRadioButton();\n }\n\n /** Whether the radio group is disabled */\n @Input({transform: booleanAttribute})\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = value;\n this._markRadiosForCheck();\n }\n\n /** Whether the radio group is required */\n @Input({transform: booleanAttribute})\n get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = value;\n this._markRadiosForCheck();\n }\n\n /** Whether buttons in the group should be interactive while they're disabled. */\n @Input({transform: booleanAttribute})\n get disabledInteractive(): boolean {\n return this._disabledInteractive;\n }\n set disabledInteractive(value: boolean) {\n this._disabledInteractive = value;\n this._markRadiosForCheck();\n }\n private _disabledInteractive = false;\n\n constructor(...args: unknown[]);\n\n constructor() {}\n\n /**\n * Initialize properties once content children are available.\n * This allows us to propagate relevant attributes to associated buttons.\n */\n ngAfterContentInit() {\n // Mark this component as initialized in AfterContentInit because the initial value can\n // possibly be set by NgModel on MatRadioGroup, and it is possible that the OnInit of the\n // NgModel occurs *after* the OnInit of the MatRadioGroup.\n this._isInitialized = true;\n\n // Clear the `selected` button when it's destroyed since the tabindex of the rest of the\n // buttons depends on it. Note that we don't clear the `value`, because the radio button\n // may be swapped out with a similar one and there are some internal apps that depend on\n // that behavior.\n this._buttonChanges = this._radios.changes.subscribe(() => {\n if (this.selected && !this._radios.find(radio => radio === this.selected)) {\n this._selected = null;\n }\n });\n }\n\n ngOnDestroy() {\n this._buttonChanges?.unsubscribe();\n }\n\n /**\n * Mark this group as being \"touched\" (for ngModel). Meant to be called by the contained\n * radio buttons upon their blur.\n */\n _touch() {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n private _updateRadioButtonNames(): void {\n if (this._radios) {\n this._radios.forEach(radio => {\n radio.name = this.name;\n radio._markForCheck();\n });\n }\n }\n\n /** Updates the `selected` radio button from the internal _value state. */\n private _updateSelectedRadioFromValue(): void {\n // If the value already matches the selected radio, do nothing.\n const isAlreadySelected = this._selected !== null && this._selected.value === this._value;\n\n if (this._radios && !isAlreadySelected) {\n this._selected = null;\n this._radios.forEach(radio => {\n radio.checked = this.value === radio.value;\n if (radio.checked) {\n this._selected = radio;\n }\n });\n }\n }\n\n /** Dispatch change event with current selection and group value. */\n _emitChangeEvent(): void {\n if (this._isInitialized) {\n this.change.emit(new MatRadioChange(this._selected!, this._value));\n }\n }\n\n _markRadiosForCheck() {\n if (this._radios) {\n this._radios.forEach(radio => radio._markForCheck());\n }\n }\n\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value\n */\n writeValue(value: any) {\n this.value = value;\n this._changeDetector.markForCheck();\n }\n\n /**\n * Registers a callback to be triggered when the model value changes.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnChange(fn: (value: any) => void) {\n this._controlValueAccessorChangeFn = fn;\n }\n\n /**\n * Registers a callback to be triggered when the control is touched.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n * @param isDisabled Whether the control should be disabled.\n */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this._changeDetector.markForCheck();\n }\n}\n\n@Component({\n selector: 'mat-radio-button',\n templateUrl: 'radio.html',\n styleUrl: 'radio.css',\n host: {\n 'class': 'mat-mdc-radio-button',\n '[attr.id]': 'id',\n '[class.mat-primary]': 'color === \"primary\"',\n '[class.mat-accent]': 'color === \"accent\"',\n '[class.mat-warn]': 'color === \"warn\"',\n '[class.mat-mdc-radio-checked]': 'checked',\n '[class.mat-mdc-radio-disabled]': 'disabled',\n '[class.mat-mdc-radio-disabled-interactive]': 'disabledInteractive',\n '[class._mat-animation-noopable]': '_noopAnimations',\n // Needs to be removed since it causes some a11y issues (see #21266).\n '[attr.tabindex]': 'null',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.aria-describedby]': 'null',\n // Note: under normal conditions focus shouldn't land on this element, however it may be\n // programmatically set, for example inside of a focus trap, in this case we want to forward\n // the focus to the native element.\n '(focus)': '_inputElement.nativeElement.focus()',\n },\n exportAs: 'matRadioButton',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatRipple, _MatInternalFormField],\n})\nexport class MatRadioButton implements OnInit, AfterViewInit, DoCheck, OnDestroy {\n protected _elementRef = inject(ElementRef);\n private _changeDetector = inject(ChangeDetectorRef);\n private _focusMonitor = inject(FocusMonitor);\n private _radioDispatcher = inject(UniqueSelectionDispatcher);\n private _defaultOptions = inject<MatRadioDefaultOptions>(MAT_RADIO_DEFAULT_OPTIONS, {\n optional: true,\n });\n\n private _ngZone = inject(NgZone);\n private _renderer = inject(Renderer2);\n private _uniqueId = inject(_IdGenerator).getId('mat-radio-');\n private _cleanupClick: (() => void) | undefined;\n\n /** The unique ID for the radio button. */\n @Input() id: string = this._uniqueId;\n\n /** Analog to HTML 'name' attribute used to group radios for unique selection. */\n @Input() name!: string;\n\n /** Used to set the 'aria-label' attribute on the underlying input element. */\n @Input('aria-label') ariaLabel!: string | null;\n\n /** The 'aria-labelledby' attribute takes precedence as the element's text alternative. */\n @Input('aria-labelledby') ariaLabelledby!: string | null;\n\n /** The 'aria-describedby' attribute is read after the element's label and field type. */\n @Input('aria-describedby') ariaDescribedby!: string | null;\n\n /** Whether ripples are disabled inside the radio button */\n @Input({transform: booleanAttribute})\n disableRipple: boolean = false;\n\n /** Tabindex of the radio button. */\n @Input({\n transform: (value: unknown) => (value == null ? 0 : numberAttribute(value)),\n })\n tabIndex: number = 0;\n\n /** Whether this radio button is checked. */\n @Input({transform: booleanAttribute})\n get checked(): boolean {\n return this._checked;\n }\n set checked(value: boolean) {\n if (this._checked !== value) {\n this._checked = value;\n if (value && this.radioGroup && this.radioGroup.value !== this.value) {\n this.radioGroup.selected = this;\n } else if (!value && this.radioGroup && this.radioGroup.value === this.value) {\n // When unchecking the selected radio button, update the selected radio\n // property on the group.\n this.radioGroup.selected = null;\n }\n\n if (value) {\n // Notify all radio buttons with the same name to un-check.\n this._radioDispatcher.notify(this.id, this.name);\n }\n this._changeDetector.markForCheck();\n }\n }\n\n /** The value of this radio button. */\n @Input()\n get value(): any {\n return this._value;\n }\n set value(value: any) {\n if (this._value !== value) {\n this._value = value;\n if (this.radioGroup !== null) {\n if (!this.checked) {\n // Update checked when the value changed to match the radio group's value\n this.checked = this.radioGroup.value === value;\n }\n if (this.checked) {\n this.radioGroup.selected = this;\n }\n }\n }\n }\n\n /** Whether the label should appear after or before the radio button. Defaults to 'after' */\n @Input()\n get labelPosition(): 'before' | 'after' {\n return this._labelPosition || (this.radioGroup && this.radioGroup.labelPosition) || 'after';\n }\n set labelPosition(value) {\n this._labelPosition = value;\n }\n private _labelPosition: 'before' | 'after' | undefined;\n\n /** Whether the radio button is disabled. */\n @Input({transform: booleanAttribute})\n get disabled(): boolean {\n return this._disabled || (this.radioGroup !== null && this.radioGroup.disabled);\n }\n set disabled(value: boolean) {\n this._setDisabled(value);\n }\n\n /** Whether the radio button is required. */\n @Input({transform: booleanAttribute})\n get required(): boolean {\n return this._required || (this.radioGroup && this.radioGroup.required);\n }\n set required(value: boolean) {\n if (value !== this._required) {\n this._changeDetector.markForCheck();\n }\n this._required = value;\n }\n\n /**\n * Theme color of the radio button. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/radio/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input()\n get color(): ThemePalette {\n // As per M2 design specifications the selection control radio should use the accent color\n // palette by default. https://m2.material.io/components/radio-buttons#specs\n return (\n this._color ||\n (this.radioGroup && this.radioGroup.color) ||\n (this._defaultOptions && this._defaultOptions.color) ||\n 'accent'\n );\n }\n set color(newValue: ThemePalette) {\n this._color = newValue;\n }\n private _color: ThemePalette;\n\n /** Whether the radio button should remain interactive when it is disabled. */\n @Input({transform: booleanAttribute})\n get disabledInteractive(): boolean {\n return (\n this._disabledInteractive || (this.radioGroup !== null && this.radioGroup.disabledInteractive)\n );\n }\n set disabledInteractive(value: boolean) {\n this._disabledInteractive = value;\n }\n private _disabledInteractive: boolean;\n\n /**\n * Event emitted when the checked state of this radio button changes.\n * Change events are only emitted when the value changes due to user interaction with\n * the radio button (the same behavior as `<input type-\"radio\">`).\n */\n @Output() readonly change: EventEmitter<MatRadioChange> = new EventEmitter<MatRadioChange>();\n\n /** The parent radio group. May or may not be present. */\n radioGroup: MatRadioGroup;\n\n /** ID of the native input element inside `<mat-radio-button>` */\n get inputId(): string {\n return `${this.id || this._uniqueId}-input`;\n }\n\n /** Whether this radio is checked. */\n private _checked = false;\n\n /** Whether this radio is disabled. */\n private _disabled = false;\n\n /** Whether this radio is required. */\n private _required = false;\n\n /** Value assigned to this radio. */\n private _value: any = null;\n\n /** Unregister function for _radioDispatcher */\n private _removeUniqueSelectionListener: () => void = () => {};\n\n /** Previous value of the input's tabindex. */\n private _previousTabIndex: number | undefined;\n\n /** The native `<input type=radio>` element */\n @ViewChild('input') _inputElement!: ElementRef<HTMLInputElement>;\n\n /** Trigger elements for the ripple events. */\n @ViewChild('formField', {read: ElementRef, static: true})\n _rippleTrigger!: ElementRef<HTMLElement>;\n\n /** Whether animations are disabled. */\n _noopAnimations = _animationsDisabled();\n\n private _injector = inject(Injector);\n\n constructor(...args: unknown[]);\n\n constructor() {\n inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);\n const radioGroup = inject<MatRadioGroup>(MAT_RADIO_GROUP, {optional: true})!;\n const tabIndex = inject(new HostAttributeToken('tabindex'), {optional: true});\n\n // Assertions. Ideally these should be stripped out by the compiler.\n // TODO(jelbourn): Assert that there's no name binding AND a parent radio group.\n this.radioGroup = radioGroup;\n this._disabledInteractive = this._defaultOptions?.disabledInteractive ?? false;\n\n if (tabIndex) {\n this.tabIndex = numberAttribute(tabIndex, 0);\n }\n }\n\n /** Focuses the radio button. */\n focus(options?: FocusOptions, origin?: FocusOrigin): void {\n if (origin) {\n this._focusMonitor.focusVia(this._inputElement, origin, options);\n } else {\n this._inputElement.nativeElement.focus(options);\n }\n }\n\n /**\n * Marks the radio button as needing checking for change detection.\n * This method is exposed because the parent radio group will directly\n * update bound properties of the radio button.\n */\n _markForCheck() {\n // When group value changes, the button will not be notified. Use `markForCheck` to explicit\n // update radio button's status\n this._changeDetector.markForCheck();\n }\n\n ngOnInit() {\n if (this.radioGroup) {\n // If the radio is inside a radio group, determine if it should be checked\n this.checked = this.radioGroup.value === this._value;\n\n if (this.checked) {\n this.radioGroup.selected = this;\n }\n\n // Copy name from parent radio group\n this.name = this.radioGroup.name;\n }\n\n this._removeUniqueSelectionListener = this._radioDispatcher.listen((id, name) => {\n if (id !== this.id && name === this.name) {\n this.checked = false;\n }\n });\n }\n\n ngDoCheck(): void {\n this._updateTabIndex();\n }\n\n ngAfterViewInit() {\n this._updateTabIndex();\n this._focusMonitor.monitor(this._elementRef, true).subscribe(focusOrigin => {\n if (!focusOrigin && this.radioGroup) {\n this.radioGroup._touch();\n }\n });\n\n // We bind this outside of the zone, because:\n // 1. Its logic is completely DOM-related so we can avoid some change detections.\n // 2. There appear to be some internal tests that break when this triggers a change detection.\n this._ngZone.runOutsideAngular(() => {\n this._cleanupClick = this._renderer.listen(\n this._inputElement.nativeElement,\n 'click',\n this._onInputClick,\n );\n });\n }\n\n ngOnDestroy() {\n this._cleanupClick?.();\n this._focusMonitor.stopMonitoring(this._elementRef);\n this._removeUniqueSelectionListener();\n }\n\n /** Dispatch change event with current value. */\n private _emitChangeEvent(): void {\n this.change.emit(new MatRadioChange(this, this._value));\n }\n\n _isRippleDisabled() {\n return this.disableRipple || this.disabled;\n }\n\n /** Triggered when the radio button receives an interaction from the user. */\n _onInputInteraction(event: Event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation();\n\n if (!this.checked && !this.disabled) {\n const groupValueChanged = this.radioGroup && this.value !== this.radioGroup.value;\n this.checked = true;\n this._emitChangeEvent();\n\n if (this.radioGroup) {\n this.radioGroup._controlValueAccessorChangeFn(this.value);\n if (groupValueChanged) {\n this.radioGroup._emitChangeEvent();\n }\n }\n }\n }\n\n /** Triggered when the user clicks on the touch target. */\n _onTouchTargetClick(event: Event) {\n this._onInputInteraction(event);\n\n if (!this.disabled || this.disabledInteractive) {\n // Normally the input should be focused already, but if the click\n // comes from the touch target, then we might have to focus it ourselves.\n this._inputElement?.nativeElement.focus();\n }\n }\n\n /** Sets the disabled state and marks for check if a change occurred. */\n protected _setDisabled(value: boolean) {\n if (this._disabled !== value) {\n this._disabled = value;\n this._changeDetector.markForCheck();\n }\n }\n\n /** Called when the input is clicked. */\n private _onInputClick = (event: Event) => {\n // If the input is disabled while interactive, we need to prevent the\n // selection from happening in this event handler. Note that even though\n // this happens on `click` events, the logic applies when the user is\n // navigating with the keyboard as well. An alternative way of doing\n // this is by resetting the `checked` state in the `change` callback but\n // it isn't optimal, because it can allow a pre-checked disabled button\n // to be un-checked. This approach seems to cover everything.\n if (this.disabled && this.disabledInteractive) {\n event.preventDefault();\n }\n };\n\n /** Gets the tabindex for the underlying input element. */\n private _updateTabIndex() {\n const group = this.radioGroup;\n let value: number;\n\n // Implement a roving tabindex if the button is inside a group. For most cases this isn't\n // necessary, because the browser handles the tab order for inputs inside a group automatically,\n // but we need an explicitly higher tabindex for the selected button in order for things like\n // the focus trap to pick it up correctly.\n if (!group || !group.selected || this.disabled) {\n value = this.tabIndex;\n } else {\n value = group.selected === this ? this.tabIndex : -1;\n }\n\n if (value !== this._previousTabIndex) {\n // We have to set the tabindex directly on the DOM node, because it depends on\n // the selected state which is prone to \"changed after checked errors\".\n const input: HTMLInputElement | undefined = this._inputElement?.nativeElement;\n\n if (input) {\n input.setAttribute('tabindex', value + '');\n this._previousTabIndex = value;\n // Wait for any pending tabindex changes to be applied\n afterNextRender(\n () => {\n queueMicrotask(() => {\n // The radio group uses a \"selection follows focus\" pattern for tab management, so if this\n // radio button is currently focused and another radio button in the group becomes\n // selected, we should move focus to the newly selected radio button to maintain\n // consistency between the focused and selected states.\n if (\n group &&\n group.selected &&\n group.selected !== this &&\n document.activeElement === input\n ) {\n group.selected?._inputElement.nativeElement.focus();\n // If this radio button still has focus, the selected one must be disabled. In this\n // case the radio group as a whole should lose focus.\n if (document.activeElement === input) {\n this._inputElement.nativeElement.blur();\n }\n }\n });\n },\n {injector: this._injector},\n );\n }\n }\n }\n}\n","<div mat-internal-form-field [labelPosition]=\"labelPosition\" #formField>\n <div class=\"mdc-radio\" [class.mdc-radio--disabled]=\"disabled\">\n <!-- Render this element first so the input is on top. -->\n <div\n class=\"mat-mdc-radio-touch-target\"\n (click)=\"_onTouchTargetClick($event)\"\n aria-hidden=\"true\"></div>\n <!--\n Note that we set `aria-invalid=\"false\"` on the input, because otherwise some screen readers\n will read out \"required, invalid data\" for each radio button that hasn't been checked.\n An alternate approach is to use `aria-required` instead of `required`, however we have an\n internal check which enforces that elements marked as `aria-required` also have the `required`\n attribute which ends up re-introducing the issue for us.\n -->\n <input #input class=\"mdc-radio__native-control\" type=\"radio\"\n [id]=\"inputId\"\n [checked]=\"checked\"\n [disabled]=\"disabled && !disabledInteractive\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [required]=\"required\"\n aria-invalid=\"false\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.aria-disabled]=\"disabled && disabledInteractive ? 'true' : null\"\n (change)=\"_onInputInteraction($event)\">\n <div class=\"mdc-radio__background\" aria-hidden=\"true\">\n <div class=\"mdc-radio__outer-circle\"></div>\n <div class=\"mdc-radio__inner-circle\"></div>\n </div>\n <div mat-ripple class=\"mat-radio-ripple mat-focus-indicator\"\n [matRippleTrigger]=\"_rippleTrigger.nativeElement\"\n [matRippleDisabled]=\"_isRippleDisabled()\"\n [matRippleCentered]=\"true\"\n aria-hidden=\"true\">\n <div class=\"mat-ripple-element mat-radio-persistent-ripple\"></div>\n </div>\n </div>\n <label class=\"mdc-label\" [for]=\"inputId\">\n <ng-content></ng-content>\n </label>\n</div>\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 {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\nimport {MatRippleModule} from '../core';\nimport {MatRadioButton, MatRadioGroup} from './radio';\n\n@NgModule({\n imports: [MatRippleModule, MatRadioGroup, MatRadioButton],\n exports: [BidiModule, MatRadioGroup, MatRadioButton],\n})\nexport class MatRadioModule {}\n"],"names":["MatRadioChange","source","value","constructor","MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","MatRadioGroup","multi","MAT_RADIO_GROUP","InjectionToken","MAT_RADIO_DEFAULT_OPTIONS","providedIn","factory","color","disabledInteractive","_changeDetector","inject","ChangeDetectorRef","_value","_name","_IdGenerator","getId","_selected","_isInitialized","_labelPosition","_disabled","_required","_buttonChanges","_controlValueAccessorChangeFn","onTouched","change","EventEmitter","_radios","name","_updateRadioButtonNames","labelPosition","v","_markRadiosForCheck","newValue","_updateSelectedRadioFromValue","_checkSelectedRadioButton","checked","selected","disabled","required","_disabledInteractive","ngAfterContentInit","changes","subscribe","find","radio","ngOnDestroy","unsubscribe","_touch","forEach","_markForCheck","isAlreadySelected","_emitChangeEvent","emit","writeValue","markForCheck","registerOnChange","fn","registerOnTouched","setDisabledState","isDisabled","deps","target","i0","ɵɵFactoryTarget","Directive","ɵdir","ɵɵngDeclareDirective","minVersion","version","type","booleanAttribute","outputs","host","attributes","classAttribute","providers","queries","propertyName","predicate","MatRadioButton","descendants","exportAs","ngImport","decorators","args","selector","Output","ContentChildren","Input","transform","_elementRef","ElementRef","_focusMonitor","FocusMonitor","_radioDispatcher","UniqueSelectionDispatcher","_defaultOptions","optional","_ngZone","NgZone","_renderer","Renderer2","_uniqueId","_cleanupClick","id","ariaLabel","ariaLabelledby","ariaDescribedby","disableRipple","tabIndex","_checked","radioGroup","notify","_setDisabled","_color","inputId","_removeUniqueSelectionListener","_previousTabIndex","_inputElement","_rippleTrigger","_noopAnimations","_animationsDisabled","_injector","Injector","_CdkPrivateStyleLoader","load","_StructuralStylesLoader","HostAttributeToken","numberAttribute","focus","options","origin","focusVia","nativeElement","ngOnInit","listen","ngDoCheck","_updateTabIndex","ngAfterViewInit","monitor","focusOrigin","runOutsideAngular","_onInputClick","stopMonitoring","_isRippleDisabled","_onInputInteraction","event","stopPropagation","groupValueChanged","_onTouchTargetClick","preventDefault","group","input","setAttribute","afterNextRender","queueMicrotask","document","activeElement","blur","injector","Component","ɵcmp","ɵɵngDeclareComponent","static","template","styles","dependencies","kind","MatRipple","_MatInternalFormField","inputs","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","imports","ViewChild","read","MatRadioModule","NgModule","MatRippleModule","exports","BidiModule","ɵinj","ɵɵngDeclareInjector"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"select-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/select/testing/select-harness.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\nimport {ComponentHarnessConstructor, HarnessPredicate, parallel} from '@angular/cdk/testing';\nimport {\n MatOptionHarness,\n MatOptgroupHarness,\n OptionHarnessFilters,\n OptgroupHarnessFilters,\n} from '@angular/material/core/testing';\nimport {MatFormFieldControlHarnessBase} from '@angular/material/form-field/testing/control';\nimport {SelectHarnessFilters} from './select-harness-filters';\n\n/** Harness for interacting with a mat-select in tests. */\nexport class MatSelectHarness extends MatFormFieldControlHarnessBase {\n static hostSelector = '.mat-mdc-select';\n private _prefix = 'mat-mdc';\n private _optionClass = MatOptionHarness;\n private _optionGroupClass = MatOptgroupHarness;\n private _documentRootLocator = this.documentRootLocatorFactory();\n private _backdrop = this._documentRootLocator.locatorFor('.cdk-overlay-backdrop');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a select with specific attributes.\n * @param options Options for filtering which select instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatSelectHarness>(\n this: ComponentHarnessConstructor<T>,\n options: SelectHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('disabled', options.disabled, async (harness, disabled) => {\n return (await harness.isDisabled()) === disabled;\n })\n .addOption('label', options.label, (harness, label) => {\n return HarnessPredicate.stringMatches(harness.getLabel(), label);\n });\n }\n\n /** Gets a boolean promise indicating if the select is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).hasClass(`${this._prefix}-select-disabled`);\n }\n\n /** Gets a boolean promise indicating if the select is valid. */\n async isValid(): Promise<boolean> {\n return !(await (await this.host()).hasClass('ng-invalid'));\n }\n\n /** Gets a boolean promise indicating if the select is required. */\n async isRequired(): Promise<boolean> {\n return (await this.host()).hasClass(`${this._prefix}-select-required`);\n }\n\n /** Gets a boolean promise indicating if the select is empty (no value is selected). */\n async isEmpty(): Promise<boolean> {\n return (await this.host()).hasClass(`${this._prefix}-select-empty`);\n }\n\n /** Gets a boolean promise indicating if the select is in multi-selection mode. */\n async isMultiple(): Promise<boolean> {\n return (await this.host()).hasClass(`${this._prefix}-select-multiple`);\n }\n\n /** Gets a promise for the select's value text. */\n async getValueText(): Promise<string> {\n const value = await this.locatorFor(`.${this._prefix}-select-value`)();\n return value.text();\n }\n\n /** Focuses the select and returns a void promise that indicates when the action is complete. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Blurs the select and returns a void promise that indicates when the action is complete. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the select is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /** Gets the options inside the select panel. */\n async getOptions(filter?: Omit<OptionHarnessFilters, 'ancestor'>): Promise<MatOptionHarness[]> {\n return this._documentRootLocator.locatorForAll(\n this._optionClass.with({\n ...(filter || {}),\n ancestor: await this._getPanelSelector(),\n } as OptionHarnessFilters),\n )();\n }\n\n /** Gets the groups of options inside the panel. */\n async getOptionGroups(\n filter?: Omit<OptgroupHarnessFilters, 'ancestor'>,\n ): Promise<MatOptgroupHarness[]> {\n return this._documentRootLocator.locatorForAll(\n this._optionGroupClass.with({\n ...(filter || {}),\n ancestor: await this._getPanelSelector(),\n } as OptgroupHarnessFilters),\n )() as Promise<MatOptgroupHarness[]>;\n }\n\n /** Gets whether the select is open. */\n async isOpen(): Promise<boolean> {\n return !!(await this._documentRootLocator.locatorForOptional(await this._getPanelSelector())());\n }\n\n /** Opens the select's panel. */\n async open(): Promise<void> {\n if (!(await this.isOpen())) {\n const trigger = await this.locatorFor(`.${this._prefix}-select-trigger`)();\n return trigger.click();\n }\n }\n\n /**\n * Clicks the options that match the passed-in filter. If the select is in multi-selection\n * mode all options will be clicked, otherwise the harness will pick the first matching option.\n */\n async clickOptions(filter?: OptionHarnessFilters): Promise<void> {\n await this.open();\n\n const [isMultiple, options] = await parallel(() => [\n this.isMultiple(),\n this.getOptions(filter),\n ]);\n\n if (options.length === 0) {\n throw Error('Select does not have options matching the specified filter');\n }\n\n if (isMultiple) {\n await parallel(() => options.map(option => option.click()));\n } else {\n await options[0].click();\n }\n }\n\n /** Closes the select's panel. */\n async close(): Promise<void> {\n if (await this.isOpen()) {\n // This is the most consistent way that works both in both single and multi-select modes,\n // but it assumes that only one overlay is open at a time. We should be able to make it\n // a bit more precise after #16645 where we can dispatch an ESCAPE press to the host instead.\n return (await this._backdrop()).click();\n }\n }\n\n /** Gets the selector that should be used to find this select's panel. */\n private async _getPanelSelector(): Promise<string> {\n const id = await (await this.host()).getAttribute('id');\n return `#${id}-panel`;\n }\n}\n"],"names":["MatSelectHarness","MatFormFieldControlHarnessBase","hostSelector","_prefix","_optionClass","MatOptionHarness","_optionGroupClass","MatOptgroupHarness","_documentRootLocator","documentRootLocatorFactory","_backdrop","locatorFor","with","options","HarnessPredicate","addOption","disabled","harness","isDisabled","label","stringMatches","getLabel","host","hasClass","isValid","isRequired","isEmpty","isMultiple","getValueText","value","text","focus","blur","isFocused","getOptions","filter","locatorForAll","ancestor","_getPanelSelector","getOptionGroups","isOpen","locatorForOptional","open","trigger","click","clickOptions","parallel","length","Error","map","option","close","id","getAttribute"],"mappings":"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"}
{"version":3,"file":"select-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/select/testing/select-harness.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\nimport {ComponentHarnessConstructor, HarnessPredicate, parallel} from '@angular/cdk/testing';\nimport {\n MatOptionHarness,\n MatOptgroupHarness,\n OptionHarnessFilters,\n OptgroupHarnessFilters,\n} from '@angular/material/core/testing';\nimport {MatFormFieldControlHarnessBase} from '@angular/material/form-field/testing/control';\nimport {SelectHarnessFilters} from './select-harness-filters';\n\n/** Harness for interacting with a mat-select in tests. */\nexport class MatSelectHarness extends MatFormFieldControlHarnessBase {\n static hostSelector = '.mat-mdc-select';\n private _prefix = 'mat-mdc';\n private _optionClass = MatOptionHarness;\n private _optionGroupClass = MatOptgroupHarness;\n private _documentRootLocator = this.documentRootLocatorFactory();\n private _backdrop = this._documentRootLocator.locatorFor('.cdk-overlay-backdrop');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a select with specific attributes.\n * @param options Options for filtering which select instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatSelectHarness>(\n this: ComponentHarnessConstructor<T>,\n options: SelectHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('disabled', options.disabled, async (harness, disabled) => {\n return (await harness.isDisabled()) === disabled;\n })\n .addOption('label', options.label, (harness, label) => {\n return HarnessPredicate.stringMatches(harness.getLabel(), label);\n });\n }\n\n /** Gets a boolean promise indicating if the select is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).hasClass(`${this._prefix}-select-disabled`);\n }\n\n /** Gets a boolean promise indicating if the select is valid. */\n async isValid(): Promise<boolean> {\n return !(await (await this.host()).hasClass('ng-invalid'));\n }\n\n /** Gets a boolean promise indicating if the select is required. */\n async isRequired(): Promise<boolean> {\n return (await this.host()).hasClass(`${this._prefix}-select-required`);\n }\n\n /** Gets a boolean promise indicating if the select is empty (no value is selected). */\n async isEmpty(): Promise<boolean> {\n return (await this.host()).hasClass(`${this._prefix}-select-empty`);\n }\n\n /** Gets a boolean promise indicating if the select is in multi-selection mode. */\n async isMultiple(): Promise<boolean> {\n return (await this.host()).hasClass(`${this._prefix}-select-multiple`);\n }\n\n /** Gets a promise for the select's value text. */\n async getValueText(): Promise<string> {\n const value = await this.locatorFor(`.${this._prefix}-select-value`)();\n return value.text();\n }\n\n /** Focuses the select and returns a void promise that indicates when the action is complete. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Blurs the select and returns a void promise that indicates when the action is complete. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the select is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /** Gets the options inside the select panel. */\n async getOptions(filter?: Omit<OptionHarnessFilters, 'ancestor'>): Promise<MatOptionHarness[]> {\n return this._documentRootLocator.locatorForAll(\n this._optionClass.with({\n ...(filter || {}),\n ancestor: await this._getPanelSelector(),\n } as OptionHarnessFilters),\n )();\n }\n\n /** Gets the groups of options inside the panel. */\n async getOptionGroups(\n filter?: Omit<OptgroupHarnessFilters, 'ancestor'>,\n ): Promise<MatOptgroupHarness[]> {\n return this._documentRootLocator.locatorForAll(\n this._optionGroupClass.with({\n ...(filter || {}),\n ancestor: await this._getPanelSelector(),\n } as OptgroupHarnessFilters),\n )() as Promise<MatOptgroupHarness[]>;\n }\n\n /** Gets whether the select is open. */\n async isOpen(): Promise<boolean> {\n return !!(await this._documentRootLocator.locatorForOptional(await this._getPanelSelector())());\n }\n\n /** Opens the select's panel. */\n async open(): Promise<void> {\n if (!(await this.isOpen())) {\n const trigger = await this.locatorFor(`.${this._prefix}-select-trigger`)();\n return trigger.click();\n }\n }\n\n /**\n * Clicks the options that match the passed-in filter. If the select is in multi-selection\n * mode all options will be clicked, otherwise the harness will pick the first matching option.\n */\n async clickOptions(filter?: OptionHarnessFilters): Promise<void> {\n await this.open();\n\n const [isMultiple, options] = await parallel(() => [\n this.isMultiple(),\n this.getOptions(filter),\n ]);\n\n if (options.length === 0) {\n throw Error('Select does not have options matching the specified filter');\n }\n\n if (isMultiple) {\n await parallel(() => options.map(option => option.click()));\n } else {\n await options[0].click();\n }\n }\n\n /** Closes the select's panel. */\n async close(): Promise<void> {\n if (await this.isOpen()) {\n // This is the most consistent way that works both in both single and multi-select modes,\n // but it assumes that only one overlay is open at a time. We should be able to make it\n // a bit more precise after #16645 where we can dispatch an ESCAPE press to the host instead.\n return (await this._backdrop()).click();\n }\n }\n\n /** Gets the selector that should be used to find this select's panel. */\n private async _getPanelSelector(): Promise<string> {\n const id = await (await this.host()).getAttribute('id');\n return `#${id}-panel`;\n }\n}\n"],"names":["MatSelectHarness","MatFormFieldControlHarnessBase","hostSelector","_prefix","_optionClass","MatOptionHarness","_optionGroupClass","MatOptgroupHarness","_documentRootLocator","documentRootLocatorFactory","_backdrop","locatorFor","with","options","HarnessPredicate","addOption","disabled","harness","isDisabled","label","stringMatches","getLabel","host","hasClass","isValid","isRequired","isEmpty","isMultiple","getValueText","value","text","focus","blur","isFocused","getOptions","filter","locatorForAll","ancestor","_getPanelSelector","getOptionGroups","isOpen","locatorForOptional","open","trigger","click","clickOptions","parallel","length","Error","map","option","close","id","getAttribute"],"mappings":";;;;AAmBM,MAAOA,gBAAiB,SAAQC,8BAA8B,CAAA;EAClE,OAAOC,YAAY,GAAG,iBAAiB;AAC/BC,EAAAA,OAAO,GAAG,SAAS;AACnBC,EAAAA,YAAY,GAAGC,gBAAgB;AAC/BC,EAAAA,iBAAiB,GAAGC,kBAAkB;AACtCC,EAAAA,oBAAoB,GAAG,IAAI,CAACC,0BAA0B,EAAE;EACxDC,SAAS,GAAG,IAAI,CAACF,oBAAoB,CAACG,UAAU,CAAC,uBAAuB,CAAC;AAOjF,EAAA,OAAOC,IAAIA,CAETC,OAAA,GAAgC,EAAE,EAAA;IAElC,OAAO,IAAIC,gBAAgB,CAAC,IAAI,EAAED,OAAO,CAAA,CACtCE,SAAS,CAAC,UAAU,EAAEF,OAAO,CAACG,QAAQ,EAAE,OAAOC,OAAO,EAAED,QAAQ,KAAI;MACnE,OAAO,CAAC,MAAMC,OAAO,CAACC,UAAU,EAAE,MAAMF,QAAQ;AAClD,IAAA,CAAC,CAAA,CACAD,SAAS,CAAC,OAAO,EAAEF,OAAO,CAACM,KAAK,EAAE,CAACF,OAAO,EAAEE,KAAK,KAAI;MACpD,OAAOL,gBAAgB,CAACM,aAAa,CAACH,OAAO,CAACI,QAAQ,EAAE,EAAEF,KAAK,CAAC;AAClE,IAAA,CAAC,CAAC;AACN,EAAA;EAGA,MAAMD,UAAUA,GAAA;AACd,IAAA,OAAO,CAAC,MAAM,IAAI,CAACI,IAAI,EAAE,EAAEC,QAAQ,CAAC,CAAA,EAAG,IAAI,CAACpB,OAAO,kBAAkB,CAAC;AACxE,EAAA;EAGA,MAAMqB,OAAOA,GAAA;AACX,IAAA,OAAO,EAAE,MAAM,CAAC,MAAM,IAAI,CAACF,IAAI,EAAE,EAAEC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC5D,EAAA;EAGA,MAAME,UAAUA,GAAA;AACd,IAAA,OAAO,CAAC,MAAM,IAAI,CAACH,IAAI,EAAE,EAAEC,QAAQ,CAAC,CAAA,EAAG,IAAI,CAACpB,OAAO,kBAAkB,CAAC;AACxE,EAAA;EAGA,MAAMuB,OAAOA,GAAA;AACX,IAAA,OAAO,CAAC,MAAM,IAAI,CAACJ,IAAI,EAAE,EAAEC,QAAQ,CAAC,CAAA,EAAG,IAAI,CAACpB,OAAO,eAAe,CAAC;AACrE,EAAA;EAGA,MAAMwB,UAAUA,GAAA;AACd,IAAA,OAAO,CAAC,MAAM,IAAI,CAACL,IAAI,EAAE,EAAEC,QAAQ,CAAC,CAAA,EAAG,IAAI,CAACpB,OAAO,kBAAkB,CAAC;AACxE,EAAA;EAGA,MAAMyB,YAAYA,GAAA;AAChB,IAAA,MAAMC,KAAK,GAAG,MAAM,IAAI,CAAClB,UAAU,CAAC,CAAA,CAAA,EAAI,IAAI,CAACR,OAAO,CAAA,aAAA,CAAe,CAAC,EAAE;AACtE,IAAA,OAAO0B,KAAK,CAACC,IAAI,EAAE;AACrB,EAAA;EAGA,MAAMC,KAAKA,GAAA;IACT,OAAO,CAAC,MAAM,IAAI,CAACT,IAAI,EAAE,EAAES,KAAK,EAAE;AACpC,EAAA;EAGA,MAAMC,IAAIA,GAAA;IACR,OAAO,CAAC,MAAM,IAAI,CAACV,IAAI,EAAE,EAAEU,IAAI,EAAE;AACnC,EAAA;EAGA,MAAMC,SAASA,GAAA;IACb,OAAO,CAAC,MAAM,IAAI,CAACX,IAAI,EAAE,EAAEW,SAAS,EAAE;AACxC,EAAA;EAGA,MAAMC,UAAUA,CAACC,MAA+C,EAAA;IAC9D,OAAO,IAAI,CAAC3B,oBAAoB,CAAC4B,aAAa,CAC5C,IAAI,CAAChC,YAAY,CAACQ,IAAI,CAAC;AACrB,MAAA,IAAIuB,MAAM,IAAI,EAAE,CAAC;AACjBE,MAAAA,QAAQ,EAAE,MAAM,IAAI,CAACC,iBAAiB;KACf,CAAC,CAC3B,EAAE;AACL,EAAA;EAGA,MAAMC,eAAeA,CACnBJ,MAAiD,EAAA;IAEjD,OAAO,IAAI,CAAC3B,oBAAoB,CAAC4B,aAAa,CAC5C,IAAI,CAAC9B,iBAAiB,CAACM,IAAI,CAAC;AAC1B,MAAA,IAAIuB,MAAM,IAAI,EAAE,CAAC;AACjBE,MAAAA,QAAQ,EAAE,MAAM,IAAI,CAACC,iBAAiB;KACb,CAAC,CAC7B,EAAmC;AACtC,EAAA;EAGA,MAAME,MAAMA,GAAA;AACV,IAAA,OAAO,CAAC,EAAE,MAAM,IAAI,CAAChC,oBAAoB,CAACiC,kBAAkB,CAAC,MAAM,IAAI,CAACH,iBAAiB,EAAE,CAAC,EAAE,CAAC;AACjG,EAAA;EAGA,MAAMI,IAAIA,GAAA;IACR,IAAI,EAAE,MAAM,IAAI,CAACF,MAAM,EAAE,CAAC,EAAE;AAC1B,MAAA,MAAMG,OAAO,GAAG,MAAM,IAAI,CAAChC,UAAU,CAAC,CAAA,CAAA,EAAI,IAAI,CAACR,OAAO,CAAA,eAAA,CAAiB,CAAC,EAAE;AAC1E,MAAA,OAAOwC,OAAO,CAACC,KAAK,EAAE;AACxB,IAAA;AACF,EAAA;EAMA,MAAMC,YAAYA,CAACV,MAA6B,EAAA;AAC9C,IAAA,MAAM,IAAI,CAACO,IAAI,EAAE;IAEjB,MAAM,CAACf,UAAU,EAAEd,OAAO,CAAC,GAAG,MAAMiC,QAAQ,CAAC,MAAM,CACjD,IAAI,CAACnB,UAAU,EAAE,EACjB,IAAI,CAACO,UAAU,CAACC,MAAM,CAAC,CACxB,CAAC;AAEF,IAAA,IAAItB,OAAO,CAACkC,MAAM,KAAK,CAAC,EAAE;MACxB,MAAMC,KAAK,CAAC,4DAA4D,CAAC;AAC3E,IAAA;AAEA,IAAA,IAAIrB,UAAU,EAAE;AACd,MAAA,MAAMmB,QAAQ,CAAC,MAAMjC,OAAO,CAACoC,GAAG,CAACC,MAAM,IAAIA,MAAM,CAACN,KAAK,EAAE,CAAC,CAAC;AAC7D,IAAA,CAAA,MAAO;AACL,MAAA,MAAM/B,OAAO,CAAC,CAAC,CAAC,CAAC+B,KAAK,EAAE;AAC1B,IAAA;AACF,EAAA;EAGA,MAAMO,KAAKA,GAAA;AACT,IAAA,IAAI,MAAM,IAAI,CAACX,MAAM,EAAE,EAAE;MAIvB,OAAO,CAAC,MAAM,IAAI,CAAC9B,SAAS,EAAE,EAAEkC,KAAK,EAAE;AACzC,IAAA;AACF,EAAA;EAGQ,MAAMN,iBAAiBA,GAAA;AAC7B,IAAA,MAAMc,EAAE,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC9B,IAAI,EAAE,EAAE+B,YAAY,CAAC,IAAI,CAAC;IACvD,OAAO,CAAA,CAAA,EAAID,EAAE,CAAA,MAAA,CAAQ;AACvB,EAAA;;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"sidenav-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sidenav/testing/drawer-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sidenav/testing/drawer-content-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sidenav/testing/drawer-container-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sidenav/testing/sidenav-content-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sidenav/testing/sidenav-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sidenav/testing/sidenav-container-harness.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\nimport {ContentContainerComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {DrawerHarnessFilters} from './drawer-harness-filters';\n\n/**\n * Base class for the drawer harness functionality.\n * @docs-private\n */\nexport class MatDrawerHarnessBase extends ContentContainerComponentHarness<string> {\n /** Whether the drawer is open. */\n async isOpen(): Promise<boolean> {\n return (await this.host()).hasClass('mat-drawer-opened');\n }\n\n /** Gets the position of the drawer inside its container. */\n async getPosition(): Promise<'start' | 'end'> {\n const host = await this.host();\n return (await host.hasClass('mat-drawer-end')) ? 'end' : 'start';\n }\n\n /** Gets the mode that the drawer is in. */\n async getMode(): Promise<'over' | 'push' | 'side'> {\n const host = await this.host();\n\n if (await host.hasClass('mat-drawer-push')) {\n return 'push';\n }\n\n if (await host.hasClass('mat-drawer-side')) {\n return 'side';\n }\n\n return 'over';\n }\n}\n\n/** Harness for interacting with a standard mat-drawer in tests. */\nexport class MatDrawerHarness extends MatDrawerHarnessBase {\n /** The selector for the host element of a `MatDrawer` instance. */\n static hostSelector = '.mat-drawer';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatDrawerHarness` that meets\n * certain criteria.\n * @param options Options for filtering which drawer instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: DrawerHarnessFilters = {}): HarnessPredicate<MatDrawerHarness> {\n return new HarnessPredicate(MatDrawerHarness, options).addOption(\n 'position',\n options.position,\n async (harness, position) => (await harness.getPosition()) === position,\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 {ContentContainerComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {DrawerContentHarnessFilters} from './drawer-harness-filters';\n\n/** Harness for interacting with a standard mat-drawer-content in tests. */\nexport class MatDrawerContentHarness extends ContentContainerComponentHarness<string> {\n /** The selector for the host element of a `MatDrawerContent` instance. */\n static hostSelector = '.mat-drawer-content';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatDrawerContentHarness` that\n * meets certain criteria.\n * @param options Options for filtering which drawer content instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: DrawerContentHarnessFilters = {},\n ): HarnessPredicate<MatDrawerContentHarness> {\n return new HarnessPredicate(MatDrawerContentHarness, options);\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 {ContentContainerComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {DrawerContainerHarnessFilters, DrawerHarnessFilters} from './drawer-harness-filters';\nimport {MatDrawerContentHarness} from './drawer-content-harness';\nimport {MatDrawerHarness} from './drawer-harness';\n\n/** Harness for interacting with a standard mat-drawer-container in tests. */\nexport class MatDrawerContainerHarness extends ContentContainerComponentHarness<string> {\n /** The selector for the host element of a `MatDrawerContainer` instance. */\n static hostSelector = '.mat-drawer-container';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatDrawerContainerHarness` that\n * meets certain criteria.\n * @param options Options for filtering which container instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: DrawerContainerHarnessFilters = {},\n ): HarnessPredicate<MatDrawerContainerHarness> {\n return new HarnessPredicate(MatDrawerContainerHarness, options);\n }\n\n /**\n * Gets drawers that match particular criteria within the container.\n * @param filter Optionally filters which chips are included.\n */\n async getDrawers(filter: DrawerHarnessFilters = {}): Promise<MatDrawerHarness[]> {\n return this.locatorForAll(MatDrawerHarness.with(filter))();\n }\n\n /** Gets the element that has the container's content. */\n async getContent(): Promise<MatDrawerContentHarness> {\n return this.locatorFor(MatDrawerContentHarness)();\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 {ContentContainerComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {DrawerContentHarnessFilters} from './drawer-harness-filters';\n\n/** Harness for interacting with a standard mat-sidenav-content in tests. */\nexport class MatSidenavContentHarness extends ContentContainerComponentHarness<string> {\n /** The selector for the host element of a `MatSidenavContent` instance. */\n static hostSelector = '.mat-sidenav-content';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatSidenavContentHarness` that\n * meets certain criteria.\n * @param options Options for filtering which sidenav content instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: DrawerContentHarnessFilters = {},\n ): HarnessPredicate<MatSidenavContentHarness> {\n return new HarnessPredicate(MatSidenavContentHarness, options);\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 {HarnessPredicate} from '@angular/cdk/testing';\nimport {MatDrawerHarnessBase} from './drawer-harness';\nimport {DrawerHarnessFilters} from './drawer-harness-filters';\n\n/** Harness for interacting with a standard mat-sidenav in tests. */\nexport class MatSidenavHarness extends MatDrawerHarnessBase {\n /** The selector for the host element of a `MatSidenav` instance. */\n static hostSelector = '.mat-sidenav';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatSidenavHarness` that meets\n * certain criteria.\n * @param options Options for filtering which sidenav instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: DrawerHarnessFilters = {}): HarnessPredicate<MatSidenavHarness> {\n return new HarnessPredicate(MatSidenavHarness, options).addOption(\n 'position',\n options.position,\n async (harness, position) => (await harness.getPosition()) === position,\n );\n }\n\n /** Whether the sidenav is fixed in the viewport. */\n async isFixedInViewport(): Promise<boolean> {\n return (await this.host()).hasClass('mat-sidenav-fixed');\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 {ContentContainerComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {DrawerContainerHarnessFilters, DrawerHarnessFilters} from './drawer-harness-filters';\nimport {MatSidenavContentHarness} from './sidenav-content-harness';\nimport {MatSidenavHarness} from './sidenav-harness';\n\n/** Harness for interacting with a standard mat-sidenav-container in tests. */\nexport class MatSidenavContainerHarness extends ContentContainerComponentHarness<string> {\n /** The selector for the host element of a `MatSidenavContainer` instance. */\n static hostSelector = '.mat-sidenav-container';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatSidenavContainerHarness` that\n * meets certain criteria.\n * @param options Options for filtering which container instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: DrawerContainerHarnessFilters = {},\n ): HarnessPredicate<MatSidenavContainerHarness> {\n return new HarnessPredicate(MatSidenavContainerHarness, options);\n }\n\n /**\n * Gets sidenavs that match particular criteria within the container.\n * @param filter Optionally filters which chips are included.\n */\n async getSidenavs(filter: DrawerHarnessFilters = {}): Promise<MatSidenavHarness[]> {\n return this.locatorForAll(MatSidenavHarness.with(filter))();\n }\n\n /** Gets the element that has the container's content. */\n async getContent(): Promise<MatSidenavContentHarness> {\n return this.locatorFor(MatSidenavContentHarness)();\n }\n}\n"],"names":["MatDrawerHarnessBase","ContentContainerComponentHarness","isOpen","host","hasClass","getPosition","getMode","MatDrawerHarness","hostSelector","with","options","HarnessPredicate","addOption","position","harness","MatDrawerContentHarness","MatDrawerContainerHarness","getDrawers","filter","locatorForAll","getContent","locatorFor","MatSidenavContentHarness","MatSidenavHarness","isFixedInViewport","MatSidenavContainerHarness","getSidenavs"],"mappings":"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"}
{"version":3,"file":"sidenav-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/sidenav/testing/drawer-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/sidenav/testing/drawer-content-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/sidenav/testing/drawer-container-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/sidenav/testing/sidenav-content-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/sidenav/testing/sidenav-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/sidenav/testing/sidenav-container-harness.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\nimport {ContentContainerComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {DrawerHarnessFilters} from './drawer-harness-filters';\n\n/**\n * Base class for the drawer harness functionality.\n * @docs-private\n */\nexport class MatDrawerHarnessBase extends ContentContainerComponentHarness<string> {\n /** Whether the drawer is open. */\n async isOpen(): Promise<boolean> {\n return (await this.host()).hasClass('mat-drawer-opened');\n }\n\n /** Gets the position of the drawer inside its container. */\n async getPosition(): Promise<'start' | 'end'> {\n const host = await this.host();\n return (await host.hasClass('mat-drawer-end')) ? 'end' : 'start';\n }\n\n /** Gets the mode that the drawer is in. */\n async getMode(): Promise<'over' | 'push' | 'side'> {\n const host = await this.host();\n\n if (await host.hasClass('mat-drawer-push')) {\n return 'push';\n }\n\n if (await host.hasClass('mat-drawer-side')) {\n return 'side';\n }\n\n return 'over';\n }\n}\n\n/** Harness for interacting with a standard mat-drawer in tests. */\nexport class MatDrawerHarness extends MatDrawerHarnessBase {\n /** The selector for the host element of a `MatDrawer` instance. */\n static hostSelector = '.mat-drawer';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatDrawerHarness` that meets\n * certain criteria.\n * @param options Options for filtering which drawer instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: DrawerHarnessFilters = {}): HarnessPredicate<MatDrawerHarness> {\n return new HarnessPredicate(MatDrawerHarness, options).addOption(\n 'position',\n options.position,\n async (harness, position) => (await harness.getPosition()) === position,\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 {ContentContainerComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {DrawerContentHarnessFilters} from './drawer-harness-filters';\n\n/** Harness for interacting with a standard mat-drawer-content in tests. */\nexport class MatDrawerContentHarness extends ContentContainerComponentHarness<string> {\n /** The selector for the host element of a `MatDrawerContent` instance. */\n static hostSelector = '.mat-drawer-content';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatDrawerContentHarness` that\n * meets certain criteria.\n * @param options Options for filtering which drawer content instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: DrawerContentHarnessFilters = {},\n ): HarnessPredicate<MatDrawerContentHarness> {\n return new HarnessPredicate(MatDrawerContentHarness, options);\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 {ContentContainerComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {DrawerContainerHarnessFilters, DrawerHarnessFilters} from './drawer-harness-filters';\nimport {MatDrawerContentHarness} from './drawer-content-harness';\nimport {MatDrawerHarness} from './drawer-harness';\n\n/** Harness for interacting with a standard mat-drawer-container in tests. */\nexport class MatDrawerContainerHarness extends ContentContainerComponentHarness<string> {\n /** The selector for the host element of a `MatDrawerContainer` instance. */\n static hostSelector = '.mat-drawer-container';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatDrawerContainerHarness` that\n * meets certain criteria.\n * @param options Options for filtering which container instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: DrawerContainerHarnessFilters = {},\n ): HarnessPredicate<MatDrawerContainerHarness> {\n return new HarnessPredicate(MatDrawerContainerHarness, options);\n }\n\n /**\n * Gets drawers that match particular criteria within the container.\n * @param filter Optionally filters which chips are included.\n */\n async getDrawers(filter: DrawerHarnessFilters = {}): Promise<MatDrawerHarness[]> {\n return this.locatorForAll(MatDrawerHarness.with(filter))();\n }\n\n /** Gets the element that has the container's content. */\n async getContent(): Promise<MatDrawerContentHarness> {\n return this.locatorFor(MatDrawerContentHarness)();\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 {ContentContainerComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {DrawerContentHarnessFilters} from './drawer-harness-filters';\n\n/** Harness for interacting with a standard mat-sidenav-content in tests. */\nexport class MatSidenavContentHarness extends ContentContainerComponentHarness<string> {\n /** The selector for the host element of a `MatSidenavContent` instance. */\n static hostSelector = '.mat-sidenav-content';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatSidenavContentHarness` that\n * meets certain criteria.\n * @param options Options for filtering which sidenav content instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: DrawerContentHarnessFilters = {},\n ): HarnessPredicate<MatSidenavContentHarness> {\n return new HarnessPredicate(MatSidenavContentHarness, options);\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 {HarnessPredicate} from '@angular/cdk/testing';\nimport {MatDrawerHarnessBase} from './drawer-harness';\nimport {DrawerHarnessFilters} from './drawer-harness-filters';\n\n/** Harness for interacting with a standard mat-sidenav in tests. */\nexport class MatSidenavHarness extends MatDrawerHarnessBase {\n /** The selector for the host element of a `MatSidenav` instance. */\n static hostSelector = '.mat-sidenav';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatSidenavHarness` that meets\n * certain criteria.\n * @param options Options for filtering which sidenav instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: DrawerHarnessFilters = {}): HarnessPredicate<MatSidenavHarness> {\n return new HarnessPredicate(MatSidenavHarness, options).addOption(\n 'position',\n options.position,\n async (harness, position) => (await harness.getPosition()) === position,\n );\n }\n\n /** Whether the sidenav is fixed in the viewport. */\n async isFixedInViewport(): Promise<boolean> {\n return (await this.host()).hasClass('mat-sidenav-fixed');\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 {ContentContainerComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {DrawerContainerHarnessFilters, DrawerHarnessFilters} from './drawer-harness-filters';\nimport {MatSidenavContentHarness} from './sidenav-content-harness';\nimport {MatSidenavHarness} from './sidenav-harness';\n\n/** Harness for interacting with a standard mat-sidenav-container in tests. */\nexport class MatSidenavContainerHarness extends ContentContainerComponentHarness<string> {\n /** The selector for the host element of a `MatSidenavContainer` instance. */\n static hostSelector = '.mat-sidenav-container';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatSidenavContainerHarness` that\n * meets certain criteria.\n * @param options Options for filtering which container instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: DrawerContainerHarnessFilters = {},\n ): HarnessPredicate<MatSidenavContainerHarness> {\n return new HarnessPredicate(MatSidenavContainerHarness, options);\n }\n\n /**\n * Gets sidenavs that match particular criteria within the container.\n * @param filter Optionally filters which chips are included.\n */\n async getSidenavs(filter: DrawerHarnessFilters = {}): Promise<MatSidenavHarness[]> {\n return this.locatorForAll(MatSidenavHarness.with(filter))();\n }\n\n /** Gets the element that has the container's content. */\n async getContent(): Promise<MatSidenavContentHarness> {\n return this.locatorFor(MatSidenavContentHarness)();\n }\n}\n"],"names":["MatDrawerHarnessBase","ContentContainerComponentHarness","isOpen","host","hasClass","getPosition","getMode","MatDrawerHarness","hostSelector","with","options","HarnessPredicate","addOption","position","harness","MatDrawerContentHarness","MatDrawerContainerHarness","getDrawers","filter","locatorForAll","getContent","locatorFor","MatSidenavContentHarness","MatSidenavHarness","isFixedInViewport","MatSidenavContainerHarness","getSidenavs"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"slide-toggle-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/slide-toggle/testing/slide-toggle-harness.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\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {SlideToggleHarnessFilters} from './slide-toggle-harness-filters';\n\n/** Harness for interacting with a mat-slide-toggle in tests. */\nexport class MatSlideToggleHarness extends ComponentHarness {\n private _label = this.locatorFor('label');\n _nativeElement = this.locatorFor('button');\n static hostSelector = '.mat-mdc-slide-toggle';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a slide-toggle w/ specific attributes.\n * @param options Options for narrowing the search:\n * - `selector` finds a slide-toggle whose host element matches the given selector.\n * - `label` finds a slide-toggle with specific label text.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatSlideToggleHarness>(\n this: ComponentHarnessConstructor<T>,\n options: SlideToggleHarnessFilters = {},\n ): HarnessPredicate<T> {\n return (\n new HarnessPredicate(this, options)\n .addOption('label', options.label, (harness, label) =>\n HarnessPredicate.stringMatches(harness.getLabelText(), label),\n )\n // We want to provide a filter option for \"name\" because the name of the slide-toggle is\n // only set on the underlying input. This means that it's not possible for developers\n // to retrieve the harness of a specific checkbox with name through a CSS selector.\n .addOption(\n 'name',\n options.name,\n async (harness, name) => (await harness.getName()) === name,\n )\n .addOption(\n 'checked',\n options.checked,\n async (harness, checked) => (await harness.isChecked()) == checked,\n )\n .addOption(\n 'disabled',\n options.disabled,\n async (harness, disabled) => (await harness.isDisabled()) == disabled,\n )\n );\n }\n\n /** Toggle the checked state of the slide-toggle. */\n async toggle(): Promise<void> {\n return (await this._nativeElement()).click();\n }\n\n /** Whether the slide-toggle is checked. */\n async isChecked(): Promise<boolean> {\n const checked = (await this._nativeElement()).getAttribute('aria-checked');\n return coerceBooleanProperty(await checked);\n }\n\n /** Whether the slide-toggle is disabled. */\n async isDisabled(): Promise<boolean> {\n const nativeElement = await this._nativeElement();\n const disabled = await nativeElement.getAttribute('disabled');\n\n if (disabled !== null) {\n return coerceBooleanProperty(disabled);\n }\n\n return (await nativeElement.getAttribute('aria-disabled')) === 'true';\n }\n\n /** Whether the slide-toggle is required. */\n async isRequired(): Promise<boolean> {\n const ariaRequired = await (await this._nativeElement()).getAttribute('aria-required');\n return ariaRequired === 'true';\n }\n\n /** Whether the slide-toggle is valid. */\n async isValid(): Promise<boolean> {\n const invalid = (await this.host()).hasClass('ng-invalid');\n return !(await invalid);\n }\n\n /** Gets the slide-toggle's name. */\n async getName(): Promise<string | null> {\n return (await this._nativeElement()).getAttribute('name');\n }\n\n /** Gets the slide-toggle's aria-label. */\n async getAriaLabel(): Promise<string | null> {\n return (await this._nativeElement()).getAttribute('aria-label');\n }\n\n /** Gets the slide-toggle's aria-labelledby. */\n async getAriaLabelledby(): Promise<string | null> {\n return (await this._nativeElement()).getAttribute('aria-labelledby');\n }\n\n /** Gets the slide-toggle's label text. */\n async getLabelText(): Promise<string> {\n return (await this._label()).text();\n }\n\n /** Focuses the slide-toggle. */\n async focus(): Promise<void> {\n return (await this._nativeElement()).focus();\n }\n\n /** Blurs the slide-toggle. */\n async blur(): Promise<void> {\n return (await this._nativeElement()).blur();\n }\n\n /** Whether the slide-toggle is focused. */\n async isFocused(): Promise<boolean> {\n return (await this._nativeElement()).isFocused();\n }\n\n /**\n * Puts the slide-toggle in a checked state by toggling it if it is currently unchecked, or doing\n * nothing if it is already checked.\n */\n async check(): Promise<void> {\n if (!(await this.isChecked())) {\n await this.toggle();\n }\n }\n\n /**\n * Puts the slide-toggle in an unchecked state by toggling it if it is currently checked, or doing\n * nothing if it is already unchecked.\n */\n async uncheck(): Promise<void> {\n if (await this.isChecked()) {\n await this.toggle();\n }\n }\n}\n"],"names":["MatSlideToggleHarness","ComponentHarness","_label","locatorFor","_nativeElement","hostSelector","with","options","HarnessPredicate","addOption","label","harness","stringMatches","getLabelText","name","getName","checked","isChecked","disabled","isDisabled","toggle","click","getAttribute","coerceBooleanProperty","nativeElement","isRequired","ariaRequired","isValid","invalid","host","hasClass","getAriaLabel","getAriaLabelledby","text","focus","blur","isFocused","check","uncheck"],"mappings":"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"}
{"version":3,"file":"slide-toggle-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/slide-toggle/testing/slide-toggle-harness.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\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {SlideToggleHarnessFilters} from './slide-toggle-harness-filters';\n\n/** Harness for interacting with a mat-slide-toggle in tests. */\nexport class MatSlideToggleHarness extends ComponentHarness {\n private _label = this.locatorFor('label');\n _nativeElement = this.locatorFor('button');\n static hostSelector = '.mat-mdc-slide-toggle';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a slide-toggle w/ specific attributes.\n * @param options Options for narrowing the search:\n * - `selector` finds a slide-toggle whose host element matches the given selector.\n * - `label` finds a slide-toggle with specific label text.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatSlideToggleHarness>(\n this: ComponentHarnessConstructor<T>,\n options: SlideToggleHarnessFilters = {},\n ): HarnessPredicate<T> {\n return (\n new HarnessPredicate(this, options)\n .addOption('label', options.label, (harness, label) =>\n HarnessPredicate.stringMatches(harness.getLabelText(), label),\n )\n // We want to provide a filter option for \"name\" because the name of the slide-toggle is\n // only set on the underlying input. This means that it's not possible for developers\n // to retrieve the harness of a specific checkbox with name through a CSS selector.\n .addOption(\n 'name',\n options.name,\n async (harness, name) => (await harness.getName()) === name,\n )\n .addOption(\n 'checked',\n options.checked,\n async (harness, checked) => (await harness.isChecked()) == checked,\n )\n .addOption(\n 'disabled',\n options.disabled,\n async (harness, disabled) => (await harness.isDisabled()) == disabled,\n )\n );\n }\n\n /** Toggle the checked state of the slide-toggle. */\n async toggle(): Promise<void> {\n return (await this._nativeElement()).click();\n }\n\n /** Whether the slide-toggle is checked. */\n async isChecked(): Promise<boolean> {\n const checked = (await this._nativeElement()).getAttribute('aria-checked');\n return coerceBooleanProperty(await checked);\n }\n\n /** Whether the slide-toggle is disabled. */\n async isDisabled(): Promise<boolean> {\n const nativeElement = await this._nativeElement();\n const disabled = await nativeElement.getAttribute('disabled');\n\n if (disabled !== null) {\n return coerceBooleanProperty(disabled);\n }\n\n return (await nativeElement.getAttribute('aria-disabled')) === 'true';\n }\n\n /** Whether the slide-toggle is required. */\n async isRequired(): Promise<boolean> {\n const ariaRequired = await (await this._nativeElement()).getAttribute('aria-required');\n return ariaRequired === 'true';\n }\n\n /** Whether the slide-toggle is valid. */\n async isValid(): Promise<boolean> {\n const invalid = (await this.host()).hasClass('ng-invalid');\n return !(await invalid);\n }\n\n /** Gets the slide-toggle's name. */\n async getName(): Promise<string | null> {\n return (await this._nativeElement()).getAttribute('name');\n }\n\n /** Gets the slide-toggle's aria-label. */\n async getAriaLabel(): Promise<string | null> {\n return (await this._nativeElement()).getAttribute('aria-label');\n }\n\n /** Gets the slide-toggle's aria-labelledby. */\n async getAriaLabelledby(): Promise<string | null> {\n return (await this._nativeElement()).getAttribute('aria-labelledby');\n }\n\n /** Gets the slide-toggle's label text. */\n async getLabelText(): Promise<string> {\n return (await this._label()).text();\n }\n\n /** Focuses the slide-toggle. */\n async focus(): Promise<void> {\n return (await this._nativeElement()).focus();\n }\n\n /** Blurs the slide-toggle. */\n async blur(): Promise<void> {\n return (await this._nativeElement()).blur();\n }\n\n /** Whether the slide-toggle is focused. */\n async isFocused(): Promise<boolean> {\n return (await this._nativeElement()).isFocused();\n }\n\n /**\n * Puts the slide-toggle in a checked state by toggling it if it is currently unchecked, or doing\n * nothing if it is already checked.\n */\n async check(): Promise<void> {\n if (!(await this.isChecked())) {\n await this.toggle();\n }\n }\n\n /**\n * Puts the slide-toggle in an unchecked state by toggling it if it is currently checked, or doing\n * nothing if it is already unchecked.\n */\n async uncheck(): Promise<void> {\n if (await this.isChecked()) {\n await this.toggle();\n }\n }\n}\n"],"names":["MatSlideToggleHarness","ComponentHarness","_label","locatorFor","_nativeElement","hostSelector","with","options","HarnessPredicate","addOption","label","harness","stringMatches","getLabelText","name","getName","checked","isChecked","disabled","isDisabled","toggle","click","getAttribute","coerceBooleanProperty","nativeElement","isRequired","ariaRequired","isValid","invalid","host","hasClass","getAriaLabel","getAriaLabelledby","text","focus","blur","isFocused","check","uncheck"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"slide-toggle.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/slide-toggle/slide-toggle-config.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/slide-toggle/slide-toggle.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/slide-toggle/slide-toggle.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/slide-toggle/slide-toggle-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 */\nimport {InjectionToken} from '@angular/core';\nimport {ThemePalette} from '../core';\n\n/** Default `mat-slide-toggle` options that can be overridden. */\nexport interface MatSlideToggleDefaultOptions {\n /** Whether toggle action triggers value changes in slide toggle. */\n disableToggleValue?: boolean;\n\n /**\n * Default theme color of the slide toggle. This API is supported in M2 themes only,\n * it has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/slide-toggle/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n color?: ThemePalette;\n\n /** Whether to hide the icon inside the slide toggle. */\n hideIcon?: boolean;\n\n /** Whether disabled slide toggles should remain interactive. */\n disabledInteractive?: boolean;\n}\n\n/** Injection token to be used to override the default options for `mat-slide-toggle`. */\nexport const MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS = new InjectionToken<MatSlideToggleDefaultOptions>(\n 'mat-slide-toggle-default-options',\n {\n providedIn: 'root',\n factory: () => ({disableToggleValue: false, hideIcon: false, disabledInteractive: false}),\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 AfterContentInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n numberAttribute,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n inject,\n HostAttributeToken,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport {_IdGenerator, FocusMonitor} from '@angular/cdk/a11y';\nimport {\n MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS,\n MatSlideToggleDefaultOptions,\n} from './slide-toggle-config';\nimport {\n _animationsDisabled,\n _MatInternalFormField,\n _StructuralStylesLoader,\n MatRipple,\n} from '../core';\nimport {_CdkPrivateStyleLoader} from '@angular/cdk/private';\n\n/** Change event object emitted by a slide toggle. */\nexport class MatSlideToggleChange {\n constructor(\n /** The source slide toggle of the event. */\n public source: MatSlideToggle,\n /** The new `checked` value of the slide toggle. */\n public checked: boolean,\n ) {}\n}\n\n@Component({\n selector: 'mat-slide-toggle',\n templateUrl: 'slide-toggle.html',\n styleUrl: 'slide-toggle.css',\n host: {\n 'class': 'mat-mdc-slide-toggle',\n '[id]': 'id',\n // Needs to be removed since it causes some a11y issues (see #21266).\n '[attr.tabindex]': 'null',\n '[attr.aria-label]': 'null',\n '[attr.name]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[class.mat-mdc-slide-toggle-focused]': '_focused',\n '[class.mat-mdc-slide-toggle-checked]': 'checked',\n '[class._mat-animation-noopable]': '_noopAnimations',\n '[class]': 'color ? \"mat-\" + color : \"\"',\n },\n exportAs: 'matSlideToggle',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatSlideToggle),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: MatSlideToggle,\n multi: true,\n },\n ],\n imports: [MatRipple, _MatInternalFormField],\n})\nexport class MatSlideToggle\n implements OnDestroy, AfterContentInit, OnChanges, ControlValueAccessor, Validator\n{\n private _elementRef = inject(ElementRef);\n protected _focusMonitor = inject(FocusMonitor);\n protected _changeDetectorRef = inject(ChangeDetectorRef);\n defaults = inject<MatSlideToggleDefaultOptions>(MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS);\n\n private _onChange = (_: any) => {};\n private _onTouched = () => {};\n private _validatorOnChange = () => {};\n\n private _uniqueId: string;\n private _checked: boolean = false;\n\n private _createChangeEvent(isChecked: boolean) {\n return new MatSlideToggleChange(this, isChecked);\n }\n\n /** Unique ID for the label element. */\n _labelId: string;\n\n /** Returns the unique id for the visual hidden button. */\n get buttonId(): string {\n return `${this.id || this._uniqueId}-button`;\n }\n\n /** Reference to the MDC switch element. */\n @ViewChild('switch') _switchElement!: ElementRef<HTMLElement>;\n\n /** Focuses the slide-toggle. */\n focus(): void {\n this._switchElement.nativeElement.focus();\n }\n /** Whether noop animations are enabled. */\n _noopAnimations = _animationsDisabled();\n\n /** Whether the slide toggle is currently focused. */\n _focused = false;\n\n /** Name value will be applied to the input element if present. */\n @Input() name: string | null = null;\n\n /** A unique id for the slide-toggle input. If none is supplied, it will be auto-generated. */\n @Input() id: string;\n\n /** Whether the label should appear after or before the slide-toggle. Defaults to 'after'. */\n @Input() labelPosition: 'before' | 'after' = 'after';\n\n /** Used to set the aria-label attribute on the underlying input element. */\n @Input('aria-label') ariaLabel: string | null = null;\n\n /** Used to set the aria-labelledby attribute on the underlying input element. */\n @Input('aria-labelledby') ariaLabelledby: string | null = null;\n\n /** Used to set the aria-describedby attribute on the underlying input element. */\n @Input('aria-describedby') ariaDescribedby!: string;\n\n /** Whether the slide-toggle is required. */\n @Input({transform: booleanAttribute}) required: boolean = false;\n\n // TODO(crisbeto): this should be a ThemePalette, but some internal apps were abusing\n // the lack of type checking previously and assigning random strings.\n /**\n * Theme color of the slide toggle. This API is supported in M2 themes only,\n * it has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/slide-toggle/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input() color: string | undefined;\n\n /** Whether the slide toggle is disabled. */\n @Input({transform: booleanAttribute}) disabled: boolean = false;\n\n /** Whether the slide toggle has a ripple. */\n @Input({transform: booleanAttribute}) disableRipple: boolean = false;\n\n /** Tabindex of slide toggle. */\n @Input({transform: (value: unknown) => (value == null ? 0 : numberAttribute(value))})\n tabIndex: number = 0;\n\n /** Whether the slide-toggle element is checked or not. */\n @Input({transform: booleanAttribute})\n get checked(): boolean {\n return this._checked;\n }\n set checked(value: boolean) {\n this._checked = value;\n this._changeDetectorRef.markForCheck();\n }\n\n /** Whether to hide the icon inside of the slide toggle. */\n @Input({transform: booleanAttribute}) hideIcon: boolean;\n\n /** Whether the slide toggle should remain interactive when it is disabled. */\n @Input({transform: booleanAttribute}) disabledInteractive: boolean;\n\n /** An event will be dispatched each time the slide-toggle changes its value. */\n @Output() readonly change = new EventEmitter<MatSlideToggleChange>();\n\n /**\n * An event will be dispatched each time the slide-toggle input is toggled.\n * This event is always emitted when the user toggles the slide toggle, but this does not mean\n * the slide toggle's value has changed.\n */\n @Output() readonly toggleChange: EventEmitter<void> = new EventEmitter<void>();\n\n /** Returns the unique id for the visual hidden input. */\n get inputId(): string {\n return `${this.id || this._uniqueId}-input`;\n }\n\n constructor(...args: unknown[]);\n\n constructor() {\n inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);\n const tabIndex = inject(new HostAttributeToken('tabindex'), {optional: true});\n const defaults = this.defaults;\n\n this.tabIndex = tabIndex == null ? 0 : parseInt(tabIndex) || 0;\n this.color = defaults.color || 'accent';\n this.id = this._uniqueId = inject(_IdGenerator).getId('mat-mdc-slide-toggle-');\n this.hideIcon = defaults.hideIcon ?? false;\n this.disabledInteractive = defaults.disabledInteractive ?? false;\n this._labelId = this._uniqueId + '-label';\n }\n\n ngAfterContentInit() {\n this._focusMonitor.monitor(this._elementRef, true).subscribe(focusOrigin => {\n if (focusOrigin === 'keyboard' || focusOrigin === 'program') {\n this._focused = true;\n this._changeDetectorRef.markForCheck();\n } else if (!focusOrigin) {\n // When a focused element becomes disabled, the browser *immediately* fires a blur event.\n // Angular does not expect events to be raised during change detection, so any state\n // change (such as a form control's ng-touched) will cause a changed-after-checked error.\n // See https://github.com/angular/angular/issues/17793. To work around this, we defer\n // telling the form control it has been touched until the next tick.\n Promise.resolve().then(() => {\n this._focused = false;\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n });\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['required']) {\n this._validatorOnChange();\n }\n }\n\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /** Implemented as part of ControlValueAccessor. */\n writeValue(value: any): void {\n this.checked = !!value;\n }\n\n /** Implemented as part of ControlValueAccessor. */\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n\n /** Implemented as part of ControlValueAccessor. */\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n /** Implemented as a part of Validator. */\n validate(control: AbstractControl<boolean>): ValidationErrors | null {\n return this.required && control.value !== true ? {'required': true} : null;\n }\n\n /** Implemented as a part of Validator. */\n registerOnValidatorChange(fn: () => void): void {\n this._validatorOnChange = fn;\n }\n\n /** Implemented as a part of ControlValueAccessor. */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n }\n\n /** Toggles the checked state of the slide-toggle. */\n toggle(): void {\n this.checked = !this.checked;\n this._onChange(this.checked);\n }\n\n /**\n * Emits a change event on the `change` output. Also notifies the FormControl about the change.\n */\n protected _emitChangeEvent() {\n this._onChange(this.checked);\n this.change.emit(this._createChangeEvent(this.checked));\n }\n\n /** Method being called whenever the underlying button is clicked. */\n _handleClick() {\n if (!this.disabled) {\n this.toggleChange.emit();\n\n if (!this.defaults.disableToggleValue) {\n this.checked = !this.checked;\n this._onChange(this.checked);\n this.change.emit(new MatSlideToggleChange(this, this.checked));\n }\n }\n }\n\n _getAriaLabelledBy() {\n if (this.ariaLabelledby) {\n return this.ariaLabelledby;\n }\n\n // Even though we have a `label` element with a `for` pointing to the button, we need the\n // `aria-labelledby`, because the button gets flagged as not having a label by tools like axe.\n return this.ariaLabel ? null : this._labelId;\n }\n}\n","<div mat-internal-form-field [labelPosition]=\"labelPosition\">\n <button\n class=\"mdc-switch\"\n role=\"switch\"\n type=\"button\"\n [class.mdc-switch--selected]=\"checked\"\n [class.mdc-switch--unselected]=\"!checked\"\n [class.mdc-switch--checked]=\"checked\"\n [class.mdc-switch--disabled]=\"disabled\"\n [class.mat-mdc-slide-toggle-disabled-interactive]=\"disabledInteractive\"\n [tabIndex]=\"disabled && !disabledInteractive ? -1 : tabIndex\"\n [disabled]=\"disabled && !disabledInteractive\"\n [attr.id]=\"buttonId\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"_getAriaLabelledBy()\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.aria-required]=\"required || null\"\n [attr.aria-checked]=\"checked\"\n [attr.aria-disabled]=\"disabled && disabledInteractive ? 'true' : null\"\n (click)=\"_handleClick()\"\n #switch>\n <div class=\"mat-mdc-slide-toggle-touch-target\"></div>\n <span class=\"mdc-switch__track\"></span>\n <span class=\"mdc-switch__handle-track\">\n <span class=\"mdc-switch__handle\">\n <span class=\"mdc-switch__shadow\">\n <span class=\"mdc-elevation-overlay\"></span>\n </span>\n <span class=\"mdc-switch__ripple\">\n <span class=\"mat-mdc-slide-toggle-ripple mat-focus-indicator\" mat-ripple\n [matRippleTrigger]=\"switch\"\n [matRippleDisabled]=\"disableRipple || disabled\"\n [matRippleCentered]=\"true\"></span>\n </span>\n @if (!hideIcon) {\n <span class=\"mdc-switch__icons\">\n <svg\n class=\"mdc-switch__icon mdc-switch__icon--on\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\">\n <path d=\"M19.69,5.23L8.96,15.96l-4.23-4.23L2.96,13.5l6,6L21.46,7L19.69,5.23z\" />\n </svg>\n <svg\n class=\"mdc-switch__icon mdc-switch__icon--off\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\">\n <path d=\"M20 13H4v-2h16v2z\" />\n </svg>\n </span>\n }\n </span>\n </span>\n </button>\n\n <!--\n Clicking on the label will trigger another click event from the button.\n Stop propagation here so other listeners further up in the DOM don't execute twice.\n -->\n <label class=\"mdc-label\" [for]=\"buttonId\" [attr.id]=\"_labelId\" (click)=\"$event.stopPropagation()\">\n <ng-content></ng-content>\n </label>\n</div>\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 {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\nimport {MatSlideToggle} from './slide-toggle';\n\n@NgModule({\n imports: [MatSlideToggle],\n exports: [MatSlideToggle, BidiModule],\n})\nexport class MatSlideToggleModule {}\n"],"names":["MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS","InjectionToken","providedIn","factory","disableToggleValue","hideIcon","disabledInteractive","MatSlideToggleChange","source","checked","constructor","MatSlideToggle","_elementRef","inject","ElementRef","_focusMonitor","FocusMonitor","_changeDetectorRef","ChangeDetectorRef","defaults","_onChange","_","_onTouched","_validatorOnChange","_uniqueId","_checked","_createChangeEvent","isChecked","_labelId","buttonId","id","_switchElement","focus","nativeElement","_noopAnimations","_animationsDisabled","_focused","name","labelPosition","ariaLabel","ariaLabelledby","ariaDescribedby","required","color","disabled","disableRipple","tabIndex","value","markForCheck","change","EventEmitter","toggleChange","inputId","_CdkPrivateStyleLoader","load","_StructuralStylesLoader","HostAttributeToken","optional","parseInt","_IdGenerator","getId","ngAfterContentInit","monitor","subscribe","focusOrigin","Promise","resolve","then","ngOnChanges","changes","ngOnDestroy","stopMonitoring","writeValue","registerOnChange","fn","registerOnTouched","validate","control","registerOnValidatorChange","setDisabledState","isDisabled","toggle","_emitChangeEvent","emit","_handleClick","_getAriaLabelledBy","deps","target","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","isStandalone","selector","inputs","booleanAttribute","numberAttribute","outputs","host","properties","classAttribute","providers","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","NG_VALIDATORS","viewQueries","propertyName","first","predicate","descendants","exportAs","usesOnChanges","ngImport","template","styles","dependencies","kind","MatRipple","_MatInternalFormField","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","args","imports","ViewChild","Input","transform","Output","MatSlideToggleModule","NgModule","ɵmod","ɵɵngDeclareNgModule","exports","BidiModule"],"mappings":"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"}
{"version":3,"file":"slide-toggle.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/slide-toggle/slide-toggle-config.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/slide-toggle/slide-toggle.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/slide-toggle/slide-toggle.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/slide-toggle/slide-toggle-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 */\nimport {InjectionToken} from '@angular/core';\nimport {ThemePalette} from '../core';\n\n/** Default `mat-slide-toggle` options that can be overridden. */\nexport interface MatSlideToggleDefaultOptions {\n /** Whether toggle action triggers value changes in slide toggle. */\n disableToggleValue?: boolean;\n\n /**\n * Default theme color of the slide toggle. This API is supported in M2 themes only,\n * it has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/slide-toggle/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n color?: ThemePalette;\n\n /** Whether to hide the icon inside the slide toggle. */\n hideIcon?: boolean;\n\n /** Whether disabled slide toggles should remain interactive. */\n disabledInteractive?: boolean;\n}\n\n/** Injection token to be used to override the default options for `mat-slide-toggle`. */\nexport const MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS = new InjectionToken<MatSlideToggleDefaultOptions>(\n 'mat-slide-toggle-default-options',\n {\n providedIn: 'root',\n factory: () => ({disableToggleValue: false, hideIcon: false, disabledInteractive: false}),\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 AfterContentInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n numberAttribute,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n inject,\n HostAttributeToken,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport {_IdGenerator, FocusMonitor} from '@angular/cdk/a11y';\nimport {\n MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS,\n MatSlideToggleDefaultOptions,\n} from './slide-toggle-config';\nimport {\n _animationsDisabled,\n _MatInternalFormField,\n _StructuralStylesLoader,\n MatRipple,\n} from '../core';\nimport {_CdkPrivateStyleLoader} from '@angular/cdk/private';\n\n/** Change event object emitted by a slide toggle. */\nexport class MatSlideToggleChange {\n constructor(\n /** The source slide toggle of the event. */\n public source: MatSlideToggle,\n /** The new `checked` value of the slide toggle. */\n public checked: boolean,\n ) {}\n}\n\n@Component({\n selector: 'mat-slide-toggle',\n templateUrl: 'slide-toggle.html',\n styleUrl: 'slide-toggle.css',\n host: {\n 'class': 'mat-mdc-slide-toggle',\n '[id]': 'id',\n // Needs to be removed since it causes some a11y issues (see #21266).\n '[attr.tabindex]': 'null',\n '[attr.aria-label]': 'null',\n '[attr.name]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[class.mat-mdc-slide-toggle-focused]': '_focused',\n '[class.mat-mdc-slide-toggle-checked]': 'checked',\n '[class._mat-animation-noopable]': '_noopAnimations',\n '[class]': 'color ? \"mat-\" + color : \"\"',\n },\n exportAs: 'matSlideToggle',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatSlideToggle),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: MatSlideToggle,\n multi: true,\n },\n ],\n imports: [MatRipple, _MatInternalFormField],\n})\nexport class MatSlideToggle\n implements OnDestroy, AfterContentInit, OnChanges, ControlValueAccessor, Validator\n{\n private _elementRef = inject(ElementRef);\n protected _focusMonitor = inject(FocusMonitor);\n protected _changeDetectorRef = inject(ChangeDetectorRef);\n defaults = inject<MatSlideToggleDefaultOptions>(MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS);\n\n private _onChange = (_: any) => {};\n private _onTouched = () => {};\n private _validatorOnChange = () => {};\n\n private _uniqueId: string;\n private _checked: boolean = false;\n\n private _createChangeEvent(isChecked: boolean) {\n return new MatSlideToggleChange(this, isChecked);\n }\n\n /** Unique ID for the label element. */\n _labelId: string;\n\n /** Returns the unique id for the visual hidden button. */\n get buttonId(): string {\n return `${this.id || this._uniqueId}-button`;\n }\n\n /** Reference to the MDC switch element. */\n @ViewChild('switch') _switchElement!: ElementRef<HTMLElement>;\n\n /** Focuses the slide-toggle. */\n focus(): void {\n this._switchElement.nativeElement.focus();\n }\n /** Whether noop animations are enabled. */\n _noopAnimations = _animationsDisabled();\n\n /** Whether the slide toggle is currently focused. */\n _focused = false;\n\n /** Name value will be applied to the input element if present. */\n @Input() name: string | null = null;\n\n /** A unique id for the slide-toggle input. If none is supplied, it will be auto-generated. */\n @Input() id: string;\n\n /** Whether the label should appear after or before the slide-toggle. Defaults to 'after'. */\n @Input() labelPosition: 'before' | 'after' = 'after';\n\n /** Used to set the aria-label attribute on the underlying input element. */\n @Input('aria-label') ariaLabel: string | null = null;\n\n /** Used to set the aria-labelledby attribute on the underlying input element. */\n @Input('aria-labelledby') ariaLabelledby: string | null = null;\n\n /** Used to set the aria-describedby attribute on the underlying input element. */\n @Input('aria-describedby') ariaDescribedby!: string;\n\n /** Whether the slide-toggle is required. */\n @Input({transform: booleanAttribute}) required: boolean = false;\n\n // TODO(crisbeto): this should be a ThemePalette, but some internal apps were abusing\n // the lack of type checking previously and assigning random strings.\n /**\n * Theme color of the slide toggle. This API is supported in M2 themes only,\n * it has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/slide-toggle/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input() color: string | undefined;\n\n /** Whether the slide toggle is disabled. */\n @Input({transform: booleanAttribute}) disabled: boolean = false;\n\n /** Whether the slide toggle has a ripple. */\n @Input({transform: booleanAttribute}) disableRipple: boolean = false;\n\n /** Tabindex of slide toggle. */\n @Input({transform: (value: unknown) => (value == null ? 0 : numberAttribute(value))})\n tabIndex: number = 0;\n\n /** Whether the slide-toggle element is checked or not. */\n @Input({transform: booleanAttribute})\n get checked(): boolean {\n return this._checked;\n }\n set checked(value: boolean) {\n this._checked = value;\n this._changeDetectorRef.markForCheck();\n }\n\n /** Whether to hide the icon inside of the slide toggle. */\n @Input({transform: booleanAttribute}) hideIcon: boolean;\n\n /** Whether the slide toggle should remain interactive when it is disabled. */\n @Input({transform: booleanAttribute}) disabledInteractive: boolean;\n\n /** An event will be dispatched each time the slide-toggle changes its value. */\n @Output() readonly change = new EventEmitter<MatSlideToggleChange>();\n\n /**\n * An event will be dispatched each time the slide-toggle input is toggled.\n * This event is always emitted when the user toggles the slide toggle, but this does not mean\n * the slide toggle's value has changed.\n */\n @Output() readonly toggleChange: EventEmitter<void> = new EventEmitter<void>();\n\n /** Returns the unique id for the visual hidden input. */\n get inputId(): string {\n return `${this.id || this._uniqueId}-input`;\n }\n\n constructor(...args: unknown[]);\n\n constructor() {\n inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);\n const tabIndex = inject(new HostAttributeToken('tabindex'), {optional: true});\n const defaults = this.defaults;\n\n this.tabIndex = tabIndex == null ? 0 : parseInt(tabIndex) || 0;\n this.color = defaults.color || 'accent';\n this.id = this._uniqueId = inject(_IdGenerator).getId('mat-mdc-slide-toggle-');\n this.hideIcon = defaults.hideIcon ?? false;\n this.disabledInteractive = defaults.disabledInteractive ?? false;\n this._labelId = this._uniqueId + '-label';\n }\n\n ngAfterContentInit() {\n this._focusMonitor.monitor(this._elementRef, true).subscribe(focusOrigin => {\n if (focusOrigin === 'keyboard' || focusOrigin === 'program') {\n this._focused = true;\n this._changeDetectorRef.markForCheck();\n } else if (!focusOrigin) {\n // When a focused element becomes disabled, the browser *immediately* fires a blur event.\n // Angular does not expect events to be raised during change detection, so any state\n // change (such as a form control's ng-touched) will cause a changed-after-checked error.\n // See https://github.com/angular/angular/issues/17793. To work around this, we defer\n // telling the form control it has been touched until the next tick.\n Promise.resolve().then(() => {\n this._focused = false;\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n });\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['required']) {\n this._validatorOnChange();\n }\n }\n\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /** Implemented as part of ControlValueAccessor. */\n writeValue(value: any): void {\n this.checked = !!value;\n }\n\n /** Implemented as part of ControlValueAccessor. */\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n\n /** Implemented as part of ControlValueAccessor. */\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n /** Implemented as a part of Validator. */\n validate(control: AbstractControl<boolean>): ValidationErrors | null {\n return this.required && control.value !== true ? {'required': true} : null;\n }\n\n /** Implemented as a part of Validator. */\n registerOnValidatorChange(fn: () => void): void {\n this._validatorOnChange = fn;\n }\n\n /** Implemented as a part of ControlValueAccessor. */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n }\n\n /** Toggles the checked state of the slide-toggle. */\n toggle(): void {\n this.checked = !this.checked;\n this._onChange(this.checked);\n }\n\n /**\n * Emits a change event on the `change` output. Also notifies the FormControl about the change.\n */\n protected _emitChangeEvent() {\n this._onChange(this.checked);\n this.change.emit(this._createChangeEvent(this.checked));\n }\n\n /** Method being called whenever the underlying button is clicked. */\n _handleClick() {\n if (!this.disabled) {\n this.toggleChange.emit();\n\n if (!this.defaults.disableToggleValue) {\n this.checked = !this.checked;\n this._onChange(this.checked);\n this.change.emit(new MatSlideToggleChange(this, this.checked));\n }\n }\n }\n\n _getAriaLabelledBy() {\n if (this.ariaLabelledby) {\n return this.ariaLabelledby;\n }\n\n // Even though we have a `label` element with a `for` pointing to the button, we need the\n // `aria-labelledby`, because the button gets flagged as not having a label by tools like axe.\n return this.ariaLabel ? null : this._labelId;\n }\n}\n","<div mat-internal-form-field [labelPosition]=\"labelPosition\">\n <button\n class=\"mdc-switch\"\n role=\"switch\"\n type=\"button\"\n [class.mdc-switch--selected]=\"checked\"\n [class.mdc-switch--unselected]=\"!checked\"\n [class.mdc-switch--checked]=\"checked\"\n [class.mdc-switch--disabled]=\"disabled\"\n [class.mat-mdc-slide-toggle-disabled-interactive]=\"disabledInteractive\"\n [tabIndex]=\"disabled && !disabledInteractive ? -1 : tabIndex\"\n [disabled]=\"disabled && !disabledInteractive\"\n [attr.id]=\"buttonId\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"_getAriaLabelledBy()\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.aria-required]=\"required || null\"\n [attr.aria-checked]=\"checked\"\n [attr.aria-disabled]=\"disabled && disabledInteractive ? 'true' : null\"\n (click)=\"_handleClick()\"\n #switch>\n <div class=\"mat-mdc-slide-toggle-touch-target\"></div>\n <span class=\"mdc-switch__track\"></span>\n <span class=\"mdc-switch__handle-track\">\n <span class=\"mdc-switch__handle\">\n <span class=\"mdc-switch__shadow\">\n <span class=\"mdc-elevation-overlay\"></span>\n </span>\n <span class=\"mdc-switch__ripple\">\n <span class=\"mat-mdc-slide-toggle-ripple mat-focus-indicator\" mat-ripple\n [matRippleTrigger]=\"switch\"\n [matRippleDisabled]=\"disableRipple || disabled\"\n [matRippleCentered]=\"true\"></span>\n </span>\n @if (!hideIcon) {\n <span class=\"mdc-switch__icons\">\n <svg\n class=\"mdc-switch__icon mdc-switch__icon--on\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\">\n <path d=\"M19.69,5.23L8.96,15.96l-4.23-4.23L2.96,13.5l6,6L21.46,7L19.69,5.23z\" />\n </svg>\n <svg\n class=\"mdc-switch__icon mdc-switch__icon--off\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\">\n <path d=\"M20 13H4v-2h16v2z\" />\n </svg>\n </span>\n }\n </span>\n </span>\n </button>\n\n <!--\n Clicking on the label will trigger another click event from the button.\n Stop propagation here so other listeners further up in the DOM don't execute twice.\n -->\n <label class=\"mdc-label\" [for]=\"buttonId\" [attr.id]=\"_labelId\" (click)=\"$event.stopPropagation()\">\n <ng-content></ng-content>\n </label>\n</div>\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 {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\nimport {MatSlideToggle} from './slide-toggle';\n\n@NgModule({\n imports: [MatSlideToggle],\n exports: [MatSlideToggle, BidiModule],\n})\nexport class MatSlideToggleModule {}\n"],"names":["MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS","InjectionToken","providedIn","factory","disableToggleValue","hideIcon","disabledInteractive","MatSlideToggleChange","source","checked","constructor","MatSlideToggle","_elementRef","inject","ElementRef","_focusMonitor","FocusMonitor","_changeDetectorRef","ChangeDetectorRef","defaults","_onChange","_","_onTouched","_validatorOnChange","_uniqueId","_checked","_createChangeEvent","isChecked","_labelId","buttonId","id","_switchElement","focus","nativeElement","_noopAnimations","_animationsDisabled","_focused","name","labelPosition","ariaLabel","ariaLabelledby","ariaDescribedby","required","color","disabled","disableRipple","tabIndex","value","markForCheck","change","EventEmitter","toggleChange","inputId","_CdkPrivateStyleLoader","load","_StructuralStylesLoader","HostAttributeToken","optional","parseInt","_IdGenerator","getId","ngAfterContentInit","monitor","subscribe","focusOrigin","Promise","resolve","then","ngOnChanges","changes","ngOnDestroy","stopMonitoring","writeValue","registerOnChange","fn","registerOnTouched","validate","control","registerOnValidatorChange","setDisabledState","isDisabled","toggle","_emitChangeEvent","emit","_handleClick","_getAriaLabelledBy","deps","target","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","isStandalone","selector","inputs","booleanAttribute","numberAttribute","outputs","host","properties","classAttribute","providers","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","NG_VALIDATORS","viewQueries","propertyName","first","predicate","descendants","exportAs","usesOnChanges","ngImport","template","styles","dependencies","kind","MatRipple","_MatInternalFormField","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","args","imports","ViewChild","Input","transform","Output","MatSlideToggleModule","NgModule","ɵmod","ɵɵngDeclareNgModule","exports","BidiModule"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"slider-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/slider/testing/slider-harness-filters.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/slider/testing/slider-thumb-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/slider/testing/slider-harness.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 */\nimport {BaseHarnessFilters} from '@angular/cdk/testing';\n\n/** Possible positions of a slider thumb. */\nexport enum ThumbPosition {\n START,\n END,\n}\n\n/** A set of criteria that can be used to filter a list of `MatSliderHarness` instances. */\nexport interface SliderHarnessFilters extends BaseHarnessFilters {\n /** Filters out only range/non-range sliders. */\n isRange?: boolean;\n\n /** Only find instances which match the given disabled state. */\n disabled?: boolean;\n}\n\n/** A set of criteria that can be used to filter a list of `MatSliderThumbHarness` instances. */\nexport interface SliderThumbHarnessFilters extends BaseHarnessFilters {\n /** Filters out slider thumbs with a particular position. */\n position?: ThumbPosition;\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 {coerceNumberProperty} from '@angular/cdk/coercion';\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n parallel,\n} from '@angular/cdk/testing';\nimport {SliderThumbHarnessFilters, ThumbPosition} from './slider-harness-filters';\n\n/** Harness for interacting with a thumb inside of a Material slider in tests. */\nexport class MatSliderThumbHarness extends ComponentHarness {\n static hostSelector =\n 'input[matSliderThumb], input[matSliderStartThumb], input[matSliderEndThumb]';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a slider thumb with specific attributes.\n * @param options Options for filtering which thumb instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatSliderThumbHarness>(\n this: ComponentHarnessConstructor<T>,\n options: SliderThumbHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options).addOption(\n 'position',\n options.position,\n async (harness, value) => {\n return (await harness.getPosition()) === value;\n },\n );\n }\n\n /** Gets the position of the thumb inside the slider. */\n async getPosition(): Promise<ThumbPosition> {\n // Meant to mimic MDC's logic where `matSliderThumb` is treated as END.\n const isStart = (await (await this.host()).getAttribute('matSliderStartThumb')) != null;\n return isStart ? ThumbPosition.START : ThumbPosition.END;\n }\n\n /** Gets the value of the thumb. */\n async getValue(): Promise<number> {\n return await (await this.host()).getProperty<number>('valueAsNumber');\n }\n\n /** Sets the value of the thumb. */\n async setValue(newValue: number): Promise<void> {\n const input = await this.host();\n\n // Since this is a range input, we can't simulate the user interacting with it so we set the\n // value directly and dispatch a couple of fake events to ensure that everything fires.\n await input.setInputValue(newValue + '');\n await input.dispatchEvent('input');\n await input.dispatchEvent('change');\n }\n\n /** Gets the current percentage value of the slider. */\n async getPercentage(): Promise<number> {\n const [value, min, max] = await parallel(() => [\n this.getValue(),\n this.getMinValue(),\n this.getMaxValue(),\n ]);\n\n return (value - min) / (max - min);\n }\n\n /** Gets the maximum value of the thumb. */\n async getMaxValue(): Promise<number> {\n return coerceNumberProperty(await (await this.host()).getProperty<number>('max'));\n }\n\n /** Gets the minimum value of the thumb. */\n async getMinValue(): Promise<number> {\n return coerceNumberProperty(await (await this.host()).getProperty<number>('min'));\n }\n\n /** Gets the text representation of the slider's value. */\n async getDisplayValue(): Promise<string> {\n return (await (await this.host()).getAttribute('aria-valuetext')) || '';\n }\n\n /** Whether the thumb is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('disabled');\n }\n\n /** Gets the name of the thumb. */\n async getName(): Promise<string> {\n return await (await this.host()).getProperty<string>('name');\n }\n\n /** Gets the id of the thumb. */\n async getId(): Promise<string> {\n return await (await this.host()).getProperty<string>('id');\n }\n\n /**\n * Focuses the thumb and returns a promise that indicates when the\n * action is complete.\n */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /**\n * Blurs the thumb and returns a promise that indicates when the\n * action is complete.\n */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the thumb is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\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 ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {coerceNumberProperty} from '@angular/cdk/coercion';\nimport {SliderHarnessFilters, ThumbPosition} from './slider-harness-filters';\nimport {MatSliderThumbHarness} from './slider-thumb-harness';\n\n/** Harness for interacting with a MDC mat-slider in tests. */\nexport class MatSliderHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-slider';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a slider with specific attributes.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatSliderHarness>(\n this: ComponentHarnessConstructor<T>,\n options: SliderHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('isRange', options.isRange, async (harness, value) => {\n return (await harness.isRange()) === value;\n })\n .addOption('disabled', options.disabled, async (harness, disabled) => {\n return (await harness.isDisabled()) === disabled;\n });\n }\n\n /** Gets the start thumb of the slider (only applicable for range sliders). */\n async getStartThumb(): Promise<MatSliderThumbHarness> {\n if (!(await this.isRange())) {\n throw Error(\n '`getStartThumb` is only applicable for range sliders. ' +\n 'Did you mean to use `getEndThumb`?',\n );\n }\n return this.locatorFor(MatSliderThumbHarness.with({position: ThumbPosition.START}))();\n }\n\n /** Gets the thumb (for single point sliders), or the end thumb (for range sliders). */\n async getEndThumb(): Promise<MatSliderThumbHarness> {\n return this.locatorFor(MatSliderThumbHarness.with({position: ThumbPosition.END}))();\n }\n\n /** Gets whether the slider is a range slider. */\n async isRange(): Promise<boolean> {\n return await (await this.host()).hasClass('mdc-slider--range');\n }\n\n /** Gets whether the slider is disabled. */\n async isDisabled(): Promise<boolean> {\n return await (await this.host()).hasClass('mdc-slider--disabled');\n }\n\n /** Gets the value step increments of the slider. */\n async getStep(): Promise<number> {\n // The same step value is forwarded to both thumbs.\n const startHost = await (await this.getEndThumb()).host();\n return coerceNumberProperty(await startHost.getProperty<string>('step'));\n }\n\n /** Gets the maximum value of the slider. */\n async getMaxValue(): Promise<number> {\n return (await this.getEndThumb()).getMaxValue();\n }\n\n /** Gets the minimum value of the slider. */\n async getMinValue(): Promise<number> {\n const startThumb = (await this.isRange())\n ? await this.getStartThumb()\n : await this.getEndThumb();\n return startThumb.getMinValue();\n }\n}\n"],"names":["ThumbPosition","MatSliderThumbHarness","ComponentHarness","hostSelector","with","options","HarnessPredicate","addOption","position","harness","value","getPosition","isStart","host","getAttribute","START","END","getValue","getProperty","setValue","newValue","input","setInputValue","dispatchEvent","getPercentage","min","max","parallel","getMinValue","getMaxValue","coerceNumberProperty","getDisplayValue","isDisabled","getName","getId","focus","blur","isFocused","MatSliderHarness","isRange","disabled","getStartThumb","Error","locatorFor","getEndThumb","hasClass","getStep","startHost","startThumb"],"mappings":"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"}
{"version":3,"file":"slider-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/slider/testing/slider-harness-filters.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/slider/testing/slider-thumb-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/slider/testing/slider-harness.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 */\nimport {BaseHarnessFilters} from '@angular/cdk/testing';\n\n/** Possible positions of a slider thumb. */\nexport enum ThumbPosition {\n START,\n END,\n}\n\n/** A set of criteria that can be used to filter a list of `MatSliderHarness` instances. */\nexport interface SliderHarnessFilters extends BaseHarnessFilters {\n /** Filters out only range/non-range sliders. */\n isRange?: boolean;\n\n /** Only find instances which match the given disabled state. */\n disabled?: boolean;\n}\n\n/** A set of criteria that can be used to filter a list of `MatSliderThumbHarness` instances. */\nexport interface SliderThumbHarnessFilters extends BaseHarnessFilters {\n /** Filters out slider thumbs with a particular position. */\n position?: ThumbPosition;\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 {coerceNumberProperty} from '@angular/cdk/coercion';\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n parallel,\n} from '@angular/cdk/testing';\nimport {SliderThumbHarnessFilters, ThumbPosition} from './slider-harness-filters';\n\n/** Harness for interacting with a thumb inside of a Material slider in tests. */\nexport class MatSliderThumbHarness extends ComponentHarness {\n static hostSelector =\n 'input[matSliderThumb], input[matSliderStartThumb], input[matSliderEndThumb]';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a slider thumb with specific attributes.\n * @param options Options for filtering which thumb instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatSliderThumbHarness>(\n this: ComponentHarnessConstructor<T>,\n options: SliderThumbHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options).addOption(\n 'position',\n options.position,\n async (harness, value) => {\n return (await harness.getPosition()) === value;\n },\n );\n }\n\n /** Gets the position of the thumb inside the slider. */\n async getPosition(): Promise<ThumbPosition> {\n // Meant to mimic MDC's logic where `matSliderThumb` is treated as END.\n const isStart = (await (await this.host()).getAttribute('matSliderStartThumb')) != null;\n return isStart ? ThumbPosition.START : ThumbPosition.END;\n }\n\n /** Gets the value of the thumb. */\n async getValue(): Promise<number> {\n return await (await this.host()).getProperty<number>('valueAsNumber');\n }\n\n /** Sets the value of the thumb. */\n async setValue(newValue: number): Promise<void> {\n const input = await this.host();\n\n // Since this is a range input, we can't simulate the user interacting with it so we set the\n // value directly and dispatch a couple of fake events to ensure that everything fires.\n await input.setInputValue(newValue + '');\n await input.dispatchEvent('input');\n await input.dispatchEvent('change');\n }\n\n /** Gets the current percentage value of the slider. */\n async getPercentage(): Promise<number> {\n const [value, min, max] = await parallel(() => [\n this.getValue(),\n this.getMinValue(),\n this.getMaxValue(),\n ]);\n\n return (value - min) / (max - min);\n }\n\n /** Gets the maximum value of the thumb. */\n async getMaxValue(): Promise<number> {\n return coerceNumberProperty(await (await this.host()).getProperty<number>('max'));\n }\n\n /** Gets the minimum value of the thumb. */\n async getMinValue(): Promise<number> {\n return coerceNumberProperty(await (await this.host()).getProperty<number>('min'));\n }\n\n /** Gets the text representation of the slider's value. */\n async getDisplayValue(): Promise<string> {\n return (await (await this.host()).getAttribute('aria-valuetext')) || '';\n }\n\n /** Whether the thumb is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('disabled');\n }\n\n /** Gets the name of the thumb. */\n async getName(): Promise<string> {\n return await (await this.host()).getProperty<string>('name');\n }\n\n /** Gets the id of the thumb. */\n async getId(): Promise<string> {\n return await (await this.host()).getProperty<string>('id');\n }\n\n /**\n * Focuses the thumb and returns a promise that indicates when the\n * action is complete.\n */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /**\n * Blurs the thumb and returns a promise that indicates when the\n * action is complete.\n */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the thumb is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\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 ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {coerceNumberProperty} from '@angular/cdk/coercion';\nimport {SliderHarnessFilters, ThumbPosition} from './slider-harness-filters';\nimport {MatSliderThumbHarness} from './slider-thumb-harness';\n\n/** Harness for interacting with a MDC mat-slider in tests. */\nexport class MatSliderHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-slider';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a slider with specific attributes.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatSliderHarness>(\n this: ComponentHarnessConstructor<T>,\n options: SliderHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('isRange', options.isRange, async (harness, value) => {\n return (await harness.isRange()) === value;\n })\n .addOption('disabled', options.disabled, async (harness, disabled) => {\n return (await harness.isDisabled()) === disabled;\n });\n }\n\n /** Gets the start thumb of the slider (only applicable for range sliders). */\n async getStartThumb(): Promise<MatSliderThumbHarness> {\n if (!(await this.isRange())) {\n throw Error(\n '`getStartThumb` is only applicable for range sliders. ' +\n 'Did you mean to use `getEndThumb`?',\n );\n }\n return this.locatorFor(MatSliderThumbHarness.with({position: ThumbPosition.START}))();\n }\n\n /** Gets the thumb (for single point sliders), or the end thumb (for range sliders). */\n async getEndThumb(): Promise<MatSliderThumbHarness> {\n return this.locatorFor(MatSliderThumbHarness.with({position: ThumbPosition.END}))();\n }\n\n /** Gets whether the slider is a range slider. */\n async isRange(): Promise<boolean> {\n return await (await this.host()).hasClass('mdc-slider--range');\n }\n\n /** Gets whether the slider is disabled. */\n async isDisabled(): Promise<boolean> {\n return await (await this.host()).hasClass('mdc-slider--disabled');\n }\n\n /** Gets the value step increments of the slider. */\n async getStep(): Promise<number> {\n // The same step value is forwarded to both thumbs.\n const startHost = await (await this.getEndThumb()).host();\n return coerceNumberProperty(await startHost.getProperty<string>('step'));\n }\n\n /** Gets the maximum value of the slider. */\n async getMaxValue(): Promise<number> {\n return (await this.getEndThumb()).getMaxValue();\n }\n\n /** Gets the minimum value of the slider. */\n async getMinValue(): Promise<number> {\n const startThumb = (await this.isRange())\n ? await this.getStartThumb()\n : await this.getEndThumb();\n return startThumb.getMinValue();\n }\n}\n"],"names":["ThumbPosition","MatSliderThumbHarness","ComponentHarness","hostSelector","with","options","HarnessPredicate","addOption","position","harness","value","getPosition","isStart","host","getAttribute","START","END","getValue","getProperty","setValue","newValue","input","setInputValue","dispatchEvent","getPercentage","min","max","parallel","getMinValue","getMaxValue","coerceNumberProperty","getDisplayValue","isDisabled","getName","getId","focus","blur","isFocused","MatSliderHarness","isRange","disabled","getStartThumb","Error","locatorFor","getEndThumb","hasClass","getStep","startHost","startThumb"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"snack-bar-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/testing/snack-bar-harness.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\nimport {ContentContainerComponentHarness, HarnessPredicate, parallel} from '@angular/cdk/testing';\nimport {AriaLivePoliteness} from '@angular/cdk/a11y';\nimport {SnackBarHarnessFilters} from './snack-bar-harness-filters';\n\n/** Harness for interacting with a mat-snack-bar in tests. */\nexport class MatSnackBarHarness extends ContentContainerComponentHarness<string> {\n // Developers can provide a custom component or template for the\n // snackbar. The canonical snack-bar parent is the \"MatSnackBarContainer\".\n /** The selector for the host element of a `MatSnackBar` instance. */\n static hostSelector = '.mat-mdc-snack-bar-container:not([mat-exit])';\n private _messageSelector = '.mdc-snackbar__label';\n private _actionButtonSelector = '.mat-mdc-snack-bar-action';\n\n private _snackBarLiveRegion = this.locatorFor('[aria-live]');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatSnackBarHarness` that meets\n * certain criteria.\n * @param options Options for filtering which snack bar instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: SnackBarHarnessFilters = {}): HarnessPredicate<MatSnackBarHarness> {\n return new HarnessPredicate(MatSnackBarHarness, options);\n }\n\n /**\n * Gets the role of the snack-bar. The role of a snack-bar is determined based\n * on the ARIA politeness specified in the snack-bar config.\n * @deprecated Use `getAriaLive` instead.\n * @breaking-change 13.0.0\n */\n async getRole(): Promise<'alert' | 'status' | null> {\n return (await this.host()).getAttribute('role') as Promise<'alert' | 'status' | null>;\n }\n\n /**\n * Gets the aria-live of the snack-bar's live region. The aria-live of a snack-bar is\n * determined based on the ARIA politeness specified in the snack-bar config.\n */\n async getAriaLive(): Promise<AriaLivePoliteness> {\n return (await this._snackBarLiveRegion()).getAttribute(\n 'aria-live',\n ) as Promise<AriaLivePoliteness>;\n }\n\n /**\n * Whether the snack-bar has an action. Method cannot be used for snack-bar's with custom content.\n */\n async hasAction(): Promise<boolean> {\n return (await this._getActionButton()) !== null;\n }\n\n /**\n * Gets the description of the snack-bar. Method cannot be used for snack-bar's without action or\n * with custom content.\n */\n async getActionDescription(): Promise<string> {\n await this._assertHasAction();\n return (await this._getActionButton())!.text();\n }\n\n /**\n * Dismisses the snack-bar by clicking the action button. Method cannot be used for snack-bar's\n * without action or with custom content.\n */\n async dismissWithAction(): Promise<void> {\n await this._assertHasAction();\n await (await this._getActionButton())!.click();\n }\n\n /**\n * Gets the message of the snack-bar. Method cannot be used for snack-bar's with custom content.\n */\n async getMessage(): Promise<string> {\n return (await this.locatorFor(this._messageSelector)()).text();\n }\n\n /** Gets whether the snack-bar has been dismissed. */\n async isDismissed(): Promise<boolean> {\n // We consider the snackbar dismissed if it's not in the DOM. We can assert that the\n // element isn't in the DOM by seeing that its width and height are zero.\n\n const host = await this.host();\n const [exit, dimensions] = await parallel(() => [\n // The snackbar container is marked with the \"exit\" attribute after it has been dismissed\n // but before the animation has finished (after which it's removed from the DOM).\n host.getAttribute('mat-exit'),\n host.getDimensions(),\n ]);\n\n return exit != null || (!!dimensions && dimensions.height === 0 && dimensions.width === 0);\n }\n\n /**\n * Asserts that the current snack-bar has an action defined. Otherwise the\n * promise will reject.\n */\n private async _assertHasAction(): Promise<void> {\n if (!(await this.hasAction())) {\n throw Error('Method cannot be used for a snack-bar without an action.');\n }\n }\n\n /** Gets the simple snack bar action button. */\n private async _getActionButton() {\n return this.locatorForOptional(this._actionButtonSelector)();\n }\n}\n"],"names":["MatSnackBarHarness","ContentContainerComponentHarness","hostSelector","_messageSelector","_actionButtonSelector","_snackBarLiveRegion","locatorFor","with","options","HarnessPredicate","getRole","host","getAttribute","getAriaLive","hasAction","_getActionButton","getActionDescription","_assertHasAction","text","dismissWithAction","click","getMessage","isDismissed","exit","dimensions","parallel","getDimensions","height","width","Error","locatorForOptional"],"mappings":";;AAaM,MAAOA,kBAAmB,SAAQC,gCAAwC,CAAA;EAI9E,OAAOC,YAAY,GAAG,8CAA8C;AAC5DC,EAAAA,gBAAgB,GAAG,sBAAsB;AACzCC,EAAAA,qBAAqB,GAAG,2BAA2B;AAEnDC,EAAAA,mBAAmB,GAAG,IAAI,CAACC,UAAU,CAAC,aAAa,CAAC;AAQ5D,EAAA,OAAOC,IAAIA,CAACC,OAAA,GAAkC,EAAE,EAAA;AAC9C,IAAA,OAAO,IAAIC,gBAAgB,CAACT,kBAAkB,EAAEQ,OAAO,CAAC;AAC1D,EAAA;EAQA,MAAME,OAAOA,GAAA;IACX,OAAO,CAAC,MAAM,IAAI,CAACC,IAAI,EAAE,EAAEC,YAAY,CAAC,MAAM,CAAuC;AACvF,EAAA;EAMA,MAAMC,WAAWA,GAAA;IACf,OAAO,CAAC,MAAM,IAAI,CAACR,mBAAmB,EAAE,EAAEO,YAAY,CACpD,WAAW,CACmB;AAClC,EAAA;EAKA,MAAME,SAASA,GAAA;IACb,OAAO,CAAC,MAAM,IAAI,CAACC,gBAAgB,EAAE,MAAM,IAAI;AACjD,EAAA;EAMA,MAAMC,oBAAoBA,GAAA;AACxB,IAAA,MAAM,IAAI,CAACC,gBAAgB,EAAE;IAC7B,OAAO,CAAC,MAAM,IAAI,CAACF,gBAAgB,EAAE,EAAGG,IAAI,EAAE;AAChD,EAAA;EAMA,MAAMC,iBAAiBA,GAAA;AACrB,IAAA,MAAM,IAAI,CAACF,gBAAgB,EAAE;IAC7B,MAAM,CAAC,MAAM,IAAI,CAACF,gBAAgB,EAAE,EAAGK,KAAK,EAAE;AAChD,EAAA;EAKA,MAAMC,UAAUA,GAAA;AACd,IAAA,OAAO,CAAC,MAAM,IAAI,CAACf,UAAU,CAAC,IAAI,CAACH,gBAAgB,CAAC,EAAE,EAAEe,IAAI,EAAE;AAChE,EAAA;EAGA,MAAMI,WAAWA,GAAA;AAIf,IAAA,MAAMX,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;IAC9B,MAAM,CAACY,IAAI,EAAEC,UAAU,CAAC,GAAG,MAAMC,QAAQ,CAAC,MAAM,CAG9Cd,IAAI,CAACC,YAAY,CAAC,UAAU,CAAC,EAC7BD,IAAI,CAACe,aAAa,EAAE,CACrB,CAAC;AAEF,IAAA,OAAOH,IAAI,IAAI,IAAI,IAAK,CAAC,CAACC,UAAU,IAAIA,UAAU,CAACG,MAAM,KAAK,CAAC,IAAIH,UAAU,CAACI,KAAK,KAAK,CAAE;AAC5F,EAAA;EAMQ,MAAMX,gBAAgBA,GAAA;IAC5B,IAAI,EAAE,MAAM,IAAI,CAACH,SAAS,EAAE,CAAC,EAAE;MAC7B,MAAMe,KAAK,CAAC,0DAA0D,CAAC;AACzE,IAAA;AACF,EAAA;EAGQ,MAAMd,gBAAgBA,GAAA;IAC5B,OAAO,IAAI,CAACe,kBAAkB,CAAC,IAAI,CAAC1B,qBAAqB,CAAC,EAAE;AAC9D,EAAA;;;;;"}
{"version":3,"file":"snack-bar-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/testing/snack-bar-harness.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\nimport {ContentContainerComponentHarness, HarnessPredicate, parallel} from '@angular/cdk/testing';\nimport {AriaLivePoliteness} from '@angular/cdk/a11y';\nimport {SnackBarHarnessFilters} from './snack-bar-harness-filters';\n\n/** Harness for interacting with a mat-snack-bar in tests. */\nexport class MatSnackBarHarness extends ContentContainerComponentHarness<string> {\n // Developers can provide a custom component or template for the\n // snackbar. The canonical snack-bar parent is the \"MatSnackBarContainer\".\n /** The selector for the host element of a `MatSnackBar` instance. */\n static hostSelector = '.mat-mdc-snack-bar-container:not([mat-exit])';\n private _messageSelector = '.mdc-snackbar__label';\n private _actionButtonSelector = '.mat-mdc-snack-bar-action';\n\n private _snackBarLiveRegion = this.locatorFor('[aria-live]');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatSnackBarHarness` that meets\n * certain criteria.\n * @param options Options for filtering which snack bar instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: SnackBarHarnessFilters = {}): HarnessPredicate<MatSnackBarHarness> {\n return new HarnessPredicate(MatSnackBarHarness, options);\n }\n\n /**\n * Gets the role of the snack-bar. The role of a snack-bar is determined based\n * on the ARIA politeness specified in the snack-bar config.\n * @deprecated Use `getAriaLive` instead.\n * @breaking-change 13.0.0\n */\n async getRole(): Promise<'alert' | 'status' | null> {\n return (await this.host()).getAttribute('role') as Promise<'alert' | 'status' | null>;\n }\n\n /**\n * Gets the aria-live of the snack-bar's live region. The aria-live of a snack-bar is\n * determined based on the ARIA politeness specified in the snack-bar config.\n */\n async getAriaLive(): Promise<AriaLivePoliteness> {\n return (await this._snackBarLiveRegion()).getAttribute(\n 'aria-live',\n ) as Promise<AriaLivePoliteness>;\n }\n\n /**\n * Whether the snack-bar has an action. Method cannot be used for snack-bar's with custom content.\n */\n async hasAction(): Promise<boolean> {\n return (await this._getActionButton()) !== null;\n }\n\n /**\n * Gets the description of the snack-bar. Method cannot be used for snack-bar's without action or\n * with custom content.\n */\n async getActionDescription(): Promise<string> {\n await this._assertHasAction();\n return (await this._getActionButton())!.text();\n }\n\n /**\n * Dismisses the snack-bar by clicking the action button. Method cannot be used for snack-bar's\n * without action or with custom content.\n */\n async dismissWithAction(): Promise<void> {\n await this._assertHasAction();\n await (await this._getActionButton())!.click();\n }\n\n /**\n * Gets the message of the snack-bar. Method cannot be used for snack-bar's with custom content.\n */\n async getMessage(): Promise<string> {\n return (await this.locatorFor(this._messageSelector)()).text();\n }\n\n /** Gets whether the snack-bar has been dismissed. */\n async isDismissed(): Promise<boolean> {\n // We consider the snackbar dismissed if it's not in the DOM. We can assert that the\n // element isn't in the DOM by seeing that its width and height are zero.\n\n const host = await this.host();\n const [exit, dimensions] = await parallel(() => [\n // The snackbar container is marked with the \"exit\" attribute after it has been dismissed\n // but before the animation has finished (after which it's removed from the DOM).\n host.getAttribute('mat-exit'),\n host.getDimensions(),\n ]);\n\n return exit != null || (!!dimensions && dimensions.height === 0 && dimensions.width === 0);\n }\n\n /**\n * Asserts that the current snack-bar has an action defined. Otherwise the\n * promise will reject.\n */\n private async _assertHasAction(): Promise<void> {\n if (!(await this.hasAction())) {\n throw Error('Method cannot be used for a snack-bar without an action.');\n }\n }\n\n /** Gets the simple snack bar action button. */\n private async _getActionButton() {\n return this.locatorForOptional(this._actionButtonSelector)();\n }\n}\n"],"names":["MatSnackBarHarness","ContentContainerComponentHarness","hostSelector","_messageSelector","_actionButtonSelector","_snackBarLiveRegion","locatorFor","with","options","HarnessPredicate","getRole","host","getAttribute","getAriaLive","hasAction","_getActionButton","getActionDescription","_assertHasAction","text","dismissWithAction","click","getMessage","isDismissed","exit","dimensions","parallel","getDimensions","height","width","Error","locatorForOptional"],"mappings":";;AAaM,MAAOA,kBAAmB,SAAQC,gCAAwC,CAAA;EAI9E,OAAOC,YAAY,GAAG,8CAA8C;AAC5DC,EAAAA,gBAAgB,GAAG,sBAAsB;AACzCC,EAAAA,qBAAqB,GAAG,2BAA2B;AAEnDC,EAAAA,mBAAmB,GAAG,IAAI,CAACC,UAAU,CAAC,aAAa,CAAC;AAQ5D,EAAA,OAAOC,IAAIA,CAACC,OAAA,GAAkC,EAAE,EAAA;AAC9C,IAAA,OAAO,IAAIC,gBAAgB,CAACT,kBAAkB,EAAEQ,OAAO,CAAC;AAC1D,EAAA;EAQA,MAAME,OAAOA,GAAA;IACX,OAAO,CAAC,MAAM,IAAI,CAACC,IAAI,EAAE,EAAEC,YAAY,CAAC,MAAM,CAAuC;AACvF,EAAA;EAMA,MAAMC,WAAWA,GAAA;IACf,OAAO,CAAC,MAAM,IAAI,CAACR,mBAAmB,EAAE,EAAEO,YAAY,CACpD,WAAW,CACmB;AAClC,EAAA;EAKA,MAAME,SAASA,GAAA;IACb,OAAO,CAAC,MAAM,IAAI,CAACC,gBAAgB,EAAE,MAAM,IAAI;AACjD,EAAA;EAMA,MAAMC,oBAAoBA,GAAA;AACxB,IAAA,MAAM,IAAI,CAACC,gBAAgB,EAAE;IAC7B,OAAO,CAAC,MAAM,IAAI,CAACF,gBAAgB,EAAE,EAAGG,IAAI,EAAE;AAChD,EAAA;EAMA,MAAMC,iBAAiBA,GAAA;AACrB,IAAA,MAAM,IAAI,CAACF,gBAAgB,EAAE;IAC7B,MAAM,CAAC,MAAM,IAAI,CAACF,gBAAgB,EAAE,EAAGK,KAAK,EAAE;AAChD,EAAA;EAKA,MAAMC,UAAUA,GAAA;AACd,IAAA,OAAO,CAAC,MAAM,IAAI,CAACf,UAAU,CAAC,IAAI,CAACH,gBAAgB,CAAC,EAAE,EAAEe,IAAI,EAAE;AAChE,EAAA;EAGA,MAAMI,WAAWA,GAAA;AAIf,IAAA,MAAMX,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;IAC9B,MAAM,CAACY,IAAI,EAAEC,UAAU,CAAC,GAAG,MAAMC,QAAQ,CAAC,MAAM,CAG9Cd,IAAI,CAACC,YAAY,CAAC,UAAU,CAAC,EAC7BD,IAAI,CAACe,aAAa,EAAE,CACrB,CAAC;AAEF,IAAA,OAAOH,IAAI,IAAI,IAAI,IAAK,CAAC,CAACC,UAAU,IAAIA,UAAU,CAACG,MAAM,KAAK,CAAC,IAAIH,UAAU,CAACI,KAAK,KAAK,CAAE;AAC5F,EAAA;EAMQ,MAAMX,gBAAgBA,GAAA;IAC5B,IAAI,EAAE,MAAM,IAAI,CAACH,SAAS,EAAE,CAAC,EAAE;MAC7B,MAAMe,KAAK,CAAC,0DAA0D,CAAC;AACzE,IAAA;AACF,EAAA;EAGQ,MAAMd,gBAAgBA,GAAA;IAC5B,OAAO,IAAI,CAACe,kBAAkB,CAAC,IAAI,CAAC1B,qBAAqB,CAAC,EAAE;AAC9D,EAAA;;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"snack-bar.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/snack-bar-ref.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/snack-bar-config.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/snack-bar-content.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/simple-snack-bar.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/simple-snack-bar.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/snack-bar-container.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/snack-bar-container.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/snack-bar.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/snack-bar-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\nimport {OverlayRef} from '@angular/cdk/overlay';\nimport {Observable, Subject} from 'rxjs';\nimport {MatSnackBarContainer} from './snack-bar-container';\n\n/** Event that is emitted when a snack bar is dismissed. */\nexport interface MatSnackBarDismiss {\n /** Whether the snack bar was dismissed using the action button. */\n dismissedByAction: boolean;\n}\n\n/** Maximum amount of milliseconds that can be passed into setTimeout. */\nconst MAX_TIMEOUT = Math.pow(2, 31) - 1;\n\n/**\n * Reference to a snack bar dispatched from the snack bar service.\n */\nexport class MatSnackBarRef<T> {\n /** The instance of the component making up the content of the snack bar. */\n instance!: T;\n\n /**\n * The instance of the component making up the content of the snack bar.\n * @docs-private\n */\n containerInstance: MatSnackBarContainer;\n\n /** Subject for notifying the user that the snack bar has been dismissed. */\n private readonly _afterDismissed = new Subject<MatSnackBarDismiss>();\n\n /** Subject for notifying the user that the snack bar has opened and appeared. */\n private readonly _afterOpened = new Subject<void>();\n\n /** Subject for notifying the user that the snack bar action was called. */\n private readonly _onAction = new Subject<void>();\n\n /**\n * Timeout ID for the duration setTimeout call. Used to clear the timeout if the snackbar is\n * dismissed before the duration passes.\n */\n private _durationTimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n /** Whether the snack bar was dismissed using the action button. */\n private _dismissedByAction = false;\n\n constructor(\n containerInstance: MatSnackBarContainer,\n private _overlayRef: OverlayRef,\n ) {\n this.containerInstance = containerInstance;\n containerInstance._onExit.subscribe(() => this._finishDismiss());\n }\n\n /** Dismisses the snack bar. */\n dismiss(): void {\n if (!this._afterDismissed.closed) {\n this.containerInstance.exit();\n }\n clearTimeout(this._durationTimeoutId);\n }\n\n /** Marks the snackbar action clicked. */\n dismissWithAction(): void {\n if (!this._onAction.closed) {\n this._dismissedByAction = true;\n this._onAction.next();\n this._onAction.complete();\n this.dismiss();\n }\n clearTimeout(this._durationTimeoutId);\n }\n\n /**\n * Marks the snackbar action clicked.\n * @deprecated Use `dismissWithAction` instead.\n * @breaking-change 8.0.0\n */\n closeWithAction(): void {\n this.dismissWithAction();\n }\n\n /** Dismisses the snack bar after some duration */\n _dismissAfter(duration: number): void {\n // Note that we need to cap the duration to the maximum value for setTimeout, because\n // it'll revert to 1 if somebody passes in something greater (e.g. `Infinity`). See #17234.\n this._durationTimeoutId = setTimeout(() => this.dismiss(), Math.min(duration, MAX_TIMEOUT));\n }\n\n /** Marks the snackbar as opened */\n _open(): void {\n if (!this._afterOpened.closed) {\n this._afterOpened.next();\n this._afterOpened.complete();\n }\n }\n\n /** Cleans up the DOM after closing. */\n private _finishDismiss(): void {\n this._overlayRef.dispose();\n\n if (!this._onAction.closed) {\n this._onAction.complete();\n }\n\n this._afterDismissed.next({dismissedByAction: this._dismissedByAction});\n this._afterDismissed.complete();\n this._dismissedByAction = false;\n }\n\n /** Gets an observable that is notified when the snack bar is finished closing. */\n afterDismissed(): Observable<MatSnackBarDismiss> {\n return this._afterDismissed;\n }\n\n /** Gets an observable that is notified when the snack bar has opened and appeared. */\n afterOpened(): Observable<void> {\n return this.containerInstance._onEnter;\n }\n\n /** Gets an observable that is notified when the snack bar action is called. */\n onAction(): Observable<void> {\n return this._onAction;\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 {ViewContainerRef, InjectionToken} from '@angular/core';\nimport {AriaLivePoliteness} from '@angular/cdk/a11y';\nimport {Direction} from '@angular/cdk/bidi';\n\n/** Injection token that can be used to access the data that was passed in to a snack bar. */\nexport const MAT_SNACK_BAR_DATA = new InjectionToken<any>('MatSnackBarData');\n\n/** Possible values for horizontalPosition on MatSnackBarConfig. */\nexport type MatSnackBarHorizontalPosition = 'start' | 'center' | 'end' | 'left' | 'right';\n\n/** Possible values for verticalPosition on MatSnackBarConfig. */\nexport type MatSnackBarVerticalPosition = 'top' | 'bottom';\n\n/**\n * Configuration used when opening a snack-bar.\n */\nexport class MatSnackBarConfig<D = any> {\n /** The politeness level for the MatAriaLiveAnnouncer announcement. */\n politeness?: AriaLivePoliteness = 'polite';\n\n /**\n * Message to be announced by the LiveAnnouncer. When opening a snackbar without a custom\n * component or template, the announcement message will default to the specified message.\n */\n announcementMessage?: string = '';\n\n /**\n * The view container that serves as the parent for the snackbar for the purposes of dependency\n * injection. Note: this does not affect where the snackbar is inserted in the DOM.\n */\n viewContainerRef?: ViewContainerRef;\n\n /** The length of time in milliseconds to wait before automatically dismissing the snack bar. */\n duration?: number = 0;\n\n /** Extra CSS classes to be added to the snack bar container. */\n panelClass?: string | string[];\n\n /** Text layout direction for the snack bar. */\n direction?: Direction;\n\n /** Data being injected into the child component. */\n data?: D | null = null;\n\n /** The horizontal position to place the snack bar. */\n horizontalPosition?: MatSnackBarHorizontalPosition = 'center';\n\n /** The vertical position to place the snack bar. */\n verticalPosition?: MatSnackBarVerticalPosition = 'bottom';\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 {Directive} from '@angular/core';\n\n/** Directive that should be applied to the text element to be rendered in the snack bar. */\n@Directive({\n selector: `[matSnackBarLabel]`,\n host: {\n 'class': 'mat-mdc-snack-bar-label mdc-snackbar__label',\n },\n})\nexport class MatSnackBarLabel {}\n\n/** Directive that should be applied to the element containing the snack bar's action buttons. */\n@Directive({\n selector: `[matSnackBarActions]`,\n host: {\n 'class': 'mat-mdc-snack-bar-actions mdc-snackbar__actions',\n },\n})\nexport class MatSnackBarActions {}\n\n/** Directive that should be applied to each of the snack bar's action buttons. */\n@Directive({\n selector: `[matSnackBarAction]`,\n host: {\n 'class': 'mat-mdc-snack-bar-action mdc-snackbar__action',\n },\n})\nexport class MatSnackBarAction {}\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 {ChangeDetectionStrategy, Component, ViewEncapsulation, inject} from '@angular/core';\nimport {MatButton} from '../button';\nimport {MatSnackBarRef} from './snack-bar-ref';\nimport {MAT_SNACK_BAR_DATA} from './snack-bar-config';\nimport {MatSnackBarAction, MatSnackBarActions, MatSnackBarLabel} from './snack-bar-content';\n\n/**\n * Interface for a simple snack bar component that has a message and a single action.\n */\nexport interface TextOnlySnackBar {\n data: {message: string; action: string};\n snackBarRef: MatSnackBarRef<TextOnlySnackBar>;\n action: () => void;\n hasAction: boolean;\n}\n\n@Component({\n selector: 'simple-snack-bar',\n templateUrl: 'simple-snack-bar.html',\n styleUrl: 'simple-snack-bar.css',\n exportAs: 'matSnackBar',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatButton, MatSnackBarLabel, MatSnackBarActions, MatSnackBarAction],\n host: {\n 'class': 'mat-mdc-simple-snack-bar',\n },\n})\nexport class SimpleSnackBar implements TextOnlySnackBar {\n snackBarRef = inject<MatSnackBarRef<SimpleSnackBar>>(MatSnackBarRef);\n data = inject(MAT_SNACK_BAR_DATA);\n\n constructor(...args: unknown[]);\n constructor() {}\n\n /** Performs the action on the snack bar. */\n action(): void {\n this.snackBarRef.dismissWithAction();\n }\n\n /** If the action button should be shown. */\n get hasAction(): boolean {\n return !!this.data.action;\n }\n}\n","<div matSnackBarLabel>\n {{data.message}}\n</div>\n\n@if (hasAction) {\n <div matSnackBarActions>\n <button matButton matSnackBarAction (click)=\"action()\">\n {{data.action}}\n </button>\n </div>\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 {_IdGenerator, AriaLivePoliteness} from '@angular/cdk/a11y';\nimport {Platform} from '@angular/cdk/platform';\nimport {\n BasePortalOutlet,\n CdkPortalOutlet,\n ComponentPortal,\n DomPortal,\n TemplatePortal,\n} from '@angular/cdk/portal';\n\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n EmbeddedViewRef,\n inject,\n Injector,\n NgZone,\n OnDestroy,\n ViewChild,\n ViewEncapsulation,\n DOCUMENT,\n} from '@angular/core';\nimport {Observable, of, Subject} from 'rxjs';\nimport {_animationsDisabled} from '../core';\nimport {MatSnackBarConfig} from './snack-bar-config';\n\nconst ENTER_ANIMATION = '_mat-snack-bar-enter';\nconst EXIT_ANIMATION = '_mat-snack-bar-exit';\n\n/**\n * Internal component that wraps user-provided snack bar content.\n * @docs-private\n */\n@Component({\n selector: 'mat-snack-bar-container',\n templateUrl: 'snack-bar-container.html',\n styleUrl: 'snack-bar-container.css',\n // In Ivy embedded views will be change detected from their declaration place, rather than\n // where they were stamped out. This means that we can't have the snack bar container be OnPush,\n // because it might cause snack bars that were opened from a template not to be out of date.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n imports: [CdkPortalOutlet],\n host: {\n 'class': 'mdc-snackbar mat-mdc-snack-bar-container',\n '[class.mat-snack-bar-container-enter]': '_animationState === \"visible\"',\n '[class.mat-snack-bar-container-exit]': '_animationState === \"hidden\"',\n '[class.mat-snack-bar-container-animations-enabled]': '!_animationsDisabled',\n '(animationend)': 'onAnimationEnd($event.animationName)',\n '(animationcancel)': 'onAnimationEnd($event.animationName)',\n },\n})\nexport class MatSnackBarContainer extends BasePortalOutlet implements OnDestroy {\n private _ngZone = inject(NgZone);\n readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _changeDetectorRef = inject(ChangeDetectorRef);\n private _platform = inject(Platform);\n protected _animationsDisabled = _animationsDisabled();\n snackBarConfig = inject(MatSnackBarConfig);\n\n private _document = inject(DOCUMENT);\n private _trackedModals = new Set<Element>();\n private _enterFallback: ReturnType<typeof setTimeout> | undefined;\n private _exitFallback: ReturnType<typeof setTimeout> | undefined;\n private _injector = inject(Injector);\n\n /** The number of milliseconds to wait before announcing the snack bar's content. */\n private readonly _announceDelay: number = 150;\n\n /** The timeout for announcing the snack bar's content. */\n private _announceTimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n /** Whether the component has been destroyed. */\n private _destroyed = false;\n\n /** The portal outlet inside of this container into which the snack bar content will be loaded. */\n @ViewChild(CdkPortalOutlet, {static: true}) _portalOutlet!: CdkPortalOutlet;\n\n /** Subject for notifying that the snack bar has announced to screen readers. */\n readonly _onAnnounce: Subject<void> = new Subject();\n\n /** Subject for notifying that the snack bar has exited from view. */\n readonly _onExit: Subject<void> = new Subject();\n\n /** Subject for notifying that the snack bar has finished entering the view. */\n readonly _onEnter: Subject<void> = new Subject();\n\n /** The state of the snack bar animations. */\n _animationState = 'void';\n\n /** aria-live value for the live region. */\n _live: AriaLivePoliteness;\n\n /**\n * Element that will have the `mdc-snackbar__label` class applied if the attached component\n * or template does not have it. This ensures that the appropriate structure, typography, and\n * color is applied to the attached view.\n */\n @ViewChild('label', {static: true}) _label!: ElementRef;\n\n /**\n * Role of the live region. This is only for Firefox as there is a known issue where Firefox +\n * JAWS does not read out aria-live message.\n */\n _role?: 'status' | 'alert';\n\n /** Unique ID of the aria-live element. */\n readonly _liveElementId = inject(_IdGenerator).getId('mat-snack-bar-container-live-');\n\n constructor(...args: unknown[]);\n\n constructor() {\n super();\n const config = this.snackBarConfig;\n\n // Use aria-live rather than a live role like 'alert' or 'status'\n // because NVDA and JAWS have show inconsistent behavior with live roles.\n if (config.politeness === 'assertive' && !config.announcementMessage) {\n this._live = 'assertive';\n } else if (config.politeness === 'off') {\n this._live = 'off';\n } else {\n this._live = 'polite';\n }\n\n // Only set role for Firefox. Set role based on aria-live because setting role=\"alert\" implies\n // aria-live=\"assertive\" which may cause issues if aria-live is set to \"polite\" above.\n if (this._platform.FIREFOX) {\n if (this._live === 'polite') {\n this._role = 'status';\n }\n if (this._live === 'assertive') {\n this._role = 'alert';\n }\n }\n }\n\n /** Attach a component portal as content to this snack bar container. */\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n this._assertNotAttached();\n const result = this._portalOutlet.attachComponentPortal(portal);\n this._afterPortalAttached();\n return result;\n }\n\n /** Attach a template portal as content to this snack bar container. */\n attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n this._assertNotAttached();\n const result = this._portalOutlet.attachTemplatePortal(portal);\n this._afterPortalAttached();\n return result;\n }\n\n /**\n * Attaches a DOM portal to the snack bar container.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n override attachDomPortal = (portal: DomPortal) => {\n this._assertNotAttached();\n const result = this._portalOutlet.attachDomPortal(portal);\n this._afterPortalAttached();\n return result;\n };\n\n /** Handle end of animations, updating the state of the snackbar. */\n onAnimationEnd(animationName: string) {\n if (animationName === EXIT_ANIMATION) {\n this._completeExit();\n } else if (animationName === ENTER_ANIMATION) {\n clearTimeout(this._enterFallback);\n this._ngZone.run(() => {\n this._onEnter.next();\n this._onEnter.complete();\n });\n }\n }\n\n /** Begin animation of snack bar entrance into view. */\n enter(): void {\n if (!this._destroyed) {\n this._animationState = 'visible';\n // _animationState lives in host bindings and `detectChanges` does not refresh host bindings\n // so we have to call `markForCheck` to ensure the host view is refreshed eventually.\n this._changeDetectorRef.markForCheck();\n this._changeDetectorRef.detectChanges();\n this._screenReaderAnnounce();\n\n if (this._animationsDisabled) {\n afterNextRender(\n () => {\n this._ngZone.run(() => queueMicrotask(() => this.onAnimationEnd(ENTER_ANIMATION)));\n },\n {injector: this._injector},\n );\n } else {\n clearTimeout(this._enterFallback);\n this._enterFallback = setTimeout(() => {\n // The snack bar will stay invisible if it fails to animate. Add a fallback class so it\n // becomes visible. This can happen in some apps that do `* {animation: none !important}`.\n this._elementRef.nativeElement.classList.add('mat-snack-bar-fallback-visible');\n this.onAnimationEnd(ENTER_ANIMATION);\n }, 200);\n }\n }\n }\n\n /** Begin animation of the snack bar exiting from view. */\n exit(): Observable<void> {\n if (this._destroyed) {\n return of(undefined);\n }\n\n // It's common for snack bars to be opened by random outside calls like HTTP requests or\n // errors. Run inside the NgZone to ensure that it functions correctly.\n this._ngZone.run(() => {\n // Note: this one transitions to `hidden`, rather than `void`, in order to handle the case\n // where multiple snack bars are opened in quick succession (e.g. two consecutive calls to\n // `MatSnackBar.open`).\n this._animationState = 'hidden';\n this._changeDetectorRef.markForCheck();\n\n // Mark this element with an 'exit' attribute to indicate that the snackbar has\n // been dismissed and will soon be removed from the DOM. This is used by the snackbar\n // test harness.\n this._elementRef.nativeElement.setAttribute('mat-exit', '');\n\n // If the snack bar hasn't been announced by the time it exits it wouldn't have been open\n // long enough to visually read it either, so clear the timeout for announcing.\n clearTimeout(this._announceTimeoutId);\n\n if (this._animationsDisabled) {\n afterNextRender(\n () => {\n this._ngZone.run(() => queueMicrotask(() => this.onAnimationEnd(EXIT_ANIMATION)));\n },\n {injector: this._injector},\n );\n } else {\n clearTimeout(this._exitFallback);\n this._exitFallback = setTimeout(() => this.onAnimationEnd(EXIT_ANIMATION), 200);\n }\n });\n\n return this._onExit;\n }\n\n /** Makes sure the exit callbacks have been invoked when the element is destroyed. */\n ngOnDestroy() {\n this._destroyed = true;\n this._clearFromModals();\n this._completeExit();\n }\n\n private _completeExit() {\n clearTimeout(this._exitFallback);\n queueMicrotask(() => {\n this._onExit.next();\n this._onExit.complete();\n });\n }\n\n /**\n * Called after the portal contents have been attached. Can be\n * used to modify the DOM once it's guaranteed to be in place.\n */\n private _afterPortalAttached() {\n const element: HTMLElement = this._elementRef.nativeElement;\n const panelClasses = this.snackBarConfig.panelClass;\n\n if (panelClasses) {\n if (Array.isArray(panelClasses)) {\n // Note that we can't use a spread here, because IE doesn't support multiple arguments.\n panelClasses.forEach(cssClass => element.classList.add(cssClass));\n } else {\n element.classList.add(panelClasses);\n }\n }\n\n this._exposeToModals();\n\n // Check to see if the attached component or template uses the MDC template structure,\n // specifically the MDC label. If not, the container should apply the MDC label class to this\n // component's label container, which will apply MDC's label styles to the attached view.\n const label = this._label.nativeElement;\n const labelClass = 'mdc-snackbar__label';\n label.classList.toggle(labelClass, !label.querySelector(`.${labelClass}`));\n }\n\n /**\n * Some browsers won't expose the accessibility node of the live element if there is an\n * `aria-modal` and the live element is outside of it. This method works around the issue by\n * pointing the `aria-owns` of all modals to the live element.\n */\n private _exposeToModals() {\n // TODO(http://github.com/angular/components/issues/26853): consider de-duplicating this with the\n // `LiveAnnouncer` and any other usages.\n //\n // Note that the selector here is limited to CDK overlays at the moment in order to reduce the\n // section of the DOM we need to look through. This should cover all the cases we support, but\n // the selector can be expanded if it turns out to be too narrow.\n const id = this._liveElementId;\n const modals = this._document.querySelectorAll(\n 'body > .cdk-overlay-container [aria-modal=\"true\"]',\n );\n\n for (let i = 0; i < modals.length; i++) {\n const modal = modals[i];\n const ariaOwns = modal.getAttribute('aria-owns');\n this._trackedModals.add(modal);\n\n if (!ariaOwns) {\n modal.setAttribute('aria-owns', id);\n } else if (ariaOwns.indexOf(id) === -1) {\n modal.setAttribute('aria-owns', ariaOwns + ' ' + id);\n }\n }\n }\n\n /** Clears the references to the live element from any modals it was added to. */\n private _clearFromModals() {\n this._trackedModals.forEach(modal => {\n const ariaOwns = modal.getAttribute('aria-owns');\n\n if (ariaOwns) {\n const newValue = ariaOwns.replace(this._liveElementId, '').trim();\n\n if (newValue.length > 0) {\n modal.setAttribute('aria-owns', newValue);\n } else {\n modal.removeAttribute('aria-owns');\n }\n }\n });\n this._trackedModals.clear();\n }\n\n /** Asserts that no content is already attached to the container. */\n private _assertNotAttached() {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Attempting to attach snack bar content after content is already attached');\n }\n }\n\n /**\n * Starts a timeout to move the snack bar content to the live region so screen readers will\n * announce it.\n */\n private _screenReaderAnnounce() {\n if (this._announceTimeoutId) {\n return;\n }\n\n this._ngZone.runOutsideAngular(() => {\n this._announceTimeoutId = setTimeout(() => {\n if (this._destroyed) {\n return;\n }\n\n const element = this._elementRef.nativeElement;\n const inertElement = element.querySelector('[aria-hidden]');\n const liveElement = element.querySelector('[aria-live]');\n\n if (inertElement && liveElement) {\n // If an element in the snack bar content is focused before being moved\n // track it and restore focus after moving to the live region.\n let focusedElement: HTMLElement | null = null;\n if (\n this._platform.isBrowser &&\n document.activeElement instanceof HTMLElement &&\n inertElement.contains(document.activeElement)\n ) {\n focusedElement = document.activeElement;\n }\n\n inertElement.removeAttribute('aria-hidden');\n liveElement.appendChild(inertElement);\n focusedElement?.focus();\n\n this._onAnnounce.next();\n this._onAnnounce.complete();\n }\n }, this._announceDelay);\n });\n }\n}\n","<div class=\"mdc-snackbar__surface mat-mdc-snackbar-surface\">\n <!--\n This outer label wrapper will have the class `mdc-snackbar__label` applied if\n the attached template/component does not contain it.\n -->\n <div class=\"mat-mdc-snack-bar-label\" #label>\n <!-- Initialy holds the snack bar content, will be empty after announcing to screen readers. -->\n <div aria-hidden=\"true\">\n <ng-template cdkPortalOutlet />\n </div>\n\n <!-- Will receive the snack bar content from the non-live div, move will happen a short delay after opening -->\n <div [attr.aria-live]=\"_live\" [attr.role]=\"_role\" [attr.id]=\"_liveElementId\"></div>\n </div>\n</div>\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 {LiveAnnouncer} from '@angular/cdk/a11y';\nimport {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';\nimport {\n ComponentType,\n createGlobalPositionStrategy,\n createOverlayRef,\n OverlayConfig,\n OverlayRef,\n} from '@angular/cdk/overlay';\nimport {\n ComponentRef,\n EmbeddedViewRef,\n Injectable,\n InjectionToken,\n Injector,\n OnDestroy,\n TemplateRef,\n inject,\n} from '@angular/core';\nimport {SimpleSnackBar, TextOnlySnackBar} from './simple-snack-bar';\nimport {MatSnackBarContainer} from './snack-bar-container';\nimport {MAT_SNACK_BAR_DATA, MatSnackBarConfig} from './snack-bar-config';\nimport {MatSnackBarRef} from './snack-bar-ref';\nimport {ComponentPortal, TemplatePortal} from '@angular/cdk/portal';\nimport {takeUntil} from 'rxjs/operators';\nimport {_animationsDisabled} from '../core';\n\n/** Injection token that can be used to specify default snack bar. */\nexport const MAT_SNACK_BAR_DEFAULT_OPTIONS = new InjectionToken<MatSnackBarConfig>(\n 'mat-snack-bar-default-options',\n {\n providedIn: 'root',\n factory: () => new MatSnackBarConfig(),\n },\n);\n\n/**\n * Service to dispatch Material Design snack bar messages.\n */\n@Injectable({providedIn: 'root'})\nexport class MatSnackBar implements OnDestroy {\n private _live = inject(LiveAnnouncer);\n private _injector = inject(Injector);\n private _breakpointObserver = inject(BreakpointObserver);\n private _parentSnackBar = inject(MatSnackBar, {optional: true, skipSelf: true});\n private _defaultConfig = inject<MatSnackBarConfig>(MAT_SNACK_BAR_DEFAULT_OPTIONS);\n private _animationsDisabled = _animationsDisabled();\n\n /**\n * Reference to the current snack bar in the view *at this level* (in the Angular injector tree).\n * If there is a parent snack-bar service, all operations should delegate to that parent\n * via `_openedSnackBarRef`.\n */\n private _snackBarRefAtThisLevel: MatSnackBarRef<any> | null = null;\n\n /** The component that should be rendered as the snack bar's simple component. */\n simpleSnackBarComponent = SimpleSnackBar;\n\n /** The container component that attaches the provided template or component. */\n snackBarContainerComponent = MatSnackBarContainer;\n\n /** The CSS class to apply for handset mode. */\n handsetCssClass = 'mat-mdc-snack-bar-handset';\n\n /** Reference to the currently opened snackbar at *any* level. */\n get _openedSnackBarRef(): MatSnackBarRef<any> | null {\n const parent = this._parentSnackBar;\n return parent ? parent._openedSnackBarRef : this._snackBarRefAtThisLevel;\n }\n\n set _openedSnackBarRef(value: MatSnackBarRef<any> | null) {\n if (this._parentSnackBar) {\n this._parentSnackBar._openedSnackBarRef = value;\n } else {\n this._snackBarRefAtThisLevel = value;\n }\n }\n\n constructor(...args: unknown[]);\n constructor() {}\n\n /**\n * Creates and dispatches a snack bar with a custom component for the content, removing any\n * currently opened snack bars.\n *\n * @param component Component to be instantiated.\n * @param config Extra configuration for the snack bar.\n */\n openFromComponent<T, D = any>(\n component: ComponentType<T>,\n config?: MatSnackBarConfig<D>,\n ): MatSnackBarRef<T> {\n return this._attach(component, config) as MatSnackBarRef<T>;\n }\n\n /**\n * Creates and dispatches a snack bar with a custom template for the content, removing any\n * currently opened snack bars.\n *\n * @param template Template to be instantiated.\n * @param config Extra configuration for the snack bar.\n */\n openFromTemplate(\n template: TemplateRef<any>,\n config?: MatSnackBarConfig,\n ): MatSnackBarRef<EmbeddedViewRef<any>> {\n return this._attach(template, config);\n }\n\n /**\n * Opens a snackbar with a message and an optional action.\n * @param message The message to show in the snackbar.\n * @param action The label for the snackbar action.\n * @param config Additional configuration options for the snackbar.\n */\n open(\n message: string,\n action: string = '',\n config?: MatSnackBarConfig,\n ): MatSnackBarRef<TextOnlySnackBar> {\n const _config = {...this._defaultConfig, ...config};\n\n // Since the user doesn't have access to the component, we can\n // override the data to pass in our own message and action.\n _config.data = {message, action};\n\n // Since the snack bar has `role=\"alert\"`, we don't\n // want to announce the same message twice.\n if (_config.announcementMessage === message) {\n _config.announcementMessage = undefined;\n }\n\n return this.openFromComponent(this.simpleSnackBarComponent, _config);\n }\n\n /**\n * Dismisses the currently-visible snack bar.\n */\n dismiss(): void {\n if (this._openedSnackBarRef) {\n this._openedSnackBarRef.dismiss();\n }\n }\n\n ngOnDestroy() {\n // Only dismiss the snack bar at the current level on destroy.\n if (this._snackBarRefAtThisLevel) {\n this._snackBarRefAtThisLevel.dismiss();\n }\n }\n\n /**\n * Attaches the snack bar container component to the overlay.\n */\n private _attachSnackBarContainer(\n overlayRef: OverlayRef,\n config: MatSnackBarConfig,\n ): MatSnackBarContainer {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = Injector.create({\n parent: userInjector || this._injector,\n providers: [{provide: MatSnackBarConfig, useValue: config}],\n });\n\n const containerPortal = new ComponentPortal(\n this.snackBarContainerComponent,\n config.viewContainerRef,\n injector,\n );\n const containerRef: ComponentRef<MatSnackBarContainer> = overlayRef.attach(containerPortal);\n containerRef.instance.snackBarConfig = config;\n return containerRef.instance;\n }\n\n /**\n * Places a new component or a template as the content of the snack bar container.\n */\n private _attach<T>(\n content: ComponentType<T> | TemplateRef<T>,\n userConfig?: MatSnackBarConfig,\n ): MatSnackBarRef<T | EmbeddedViewRef<any>> {\n const config = {...new MatSnackBarConfig(), ...this._defaultConfig, ...userConfig};\n const overlayRef = this._createOverlay(config);\n const container = this._attachSnackBarContainer(overlayRef, config);\n const snackBarRef = new MatSnackBarRef<T | EmbeddedViewRef<any>>(container, overlayRef);\n\n if (content instanceof TemplateRef) {\n const portal = new TemplatePortal(content, null!, {\n $implicit: config.data,\n snackBarRef,\n } as any);\n\n snackBarRef.instance = container.attachTemplatePortal(portal);\n } else {\n const injector = this._createInjector(config, snackBarRef);\n const portal = new ComponentPortal(content, undefined, injector);\n const contentRef = container.attachComponentPortal<T>(portal);\n\n // We can't pass this via the injector, because the injector is created earlier.\n snackBarRef.instance = contentRef.instance;\n }\n\n // Subscribe to the breakpoint observer and attach the mat-snack-bar-handset class as\n // appropriate. This class is applied to the overlay element because the overlay must expand to\n // fill the width of the screen for full width snackbars.\n this._breakpointObserver\n .observe(Breakpoints.HandsetPortrait)\n .pipe(takeUntil(overlayRef.detachments()))\n .subscribe(state => {\n overlayRef.overlayElement.classList.toggle(this.handsetCssClass, state.matches);\n });\n\n if (config.announcementMessage) {\n // Wait until the snack bar contents have been announced then deliver this message.\n container._onAnnounce.subscribe(() => {\n this._live.announce(config.announcementMessage!, config.politeness);\n });\n }\n\n this._animateSnackBar(snackBarRef, config);\n this._openedSnackBarRef = snackBarRef;\n return this._openedSnackBarRef;\n }\n\n /** Animates the old snack bar out and the new one in. */\n private _animateSnackBar(snackBarRef: MatSnackBarRef<any>, config: MatSnackBarConfig) {\n // When the snackbar is dismissed, clear the reference to it.\n snackBarRef.afterDismissed().subscribe(() => {\n // Clear the snackbar ref if it hasn't already been replaced by a newer snackbar.\n if (this._openedSnackBarRef == snackBarRef) {\n this._openedSnackBarRef = null;\n }\n\n if (config.announcementMessage) {\n this._live.clear();\n }\n });\n\n // If a dismiss timeout is provided, set up dismiss based on after the snackbar is opened.\n if (config.duration && config.duration > 0) {\n snackBarRef.afterOpened().subscribe(() => snackBarRef._dismissAfter(config.duration!));\n }\n\n if (this._openedSnackBarRef) {\n // If a snack bar is already in view, dismiss it and enter the\n // new snack bar after exit animation is complete.\n this._openedSnackBarRef.afterDismissed().subscribe(() => {\n snackBarRef.containerInstance.enter();\n });\n this._openedSnackBarRef.dismiss();\n } else {\n // If no snack bar is in view, enter the new snack bar.\n snackBarRef.containerInstance.enter();\n }\n }\n\n /**\n * Creates a new overlay and places it in the correct location.\n * @param config The user-specified snack bar config.\n */\n private _createOverlay(config: MatSnackBarConfig): OverlayRef {\n const overlayConfig = new OverlayConfig();\n overlayConfig.direction = config.direction;\n\n const positionStrategy = createGlobalPositionStrategy(this._injector);\n // Set horizontal position.\n const isRtl = config.direction === 'rtl';\n const isLeft =\n config.horizontalPosition === 'left' ||\n (config.horizontalPosition === 'start' && !isRtl) ||\n (config.horizontalPosition === 'end' && isRtl);\n const isRight = !isLeft && config.horizontalPosition !== 'center';\n if (isLeft) {\n positionStrategy.left('0');\n } else if (isRight) {\n positionStrategy.right('0');\n } else {\n positionStrategy.centerHorizontally();\n }\n // Set horizontal position.\n if (config.verticalPosition === 'top') {\n positionStrategy.top('0');\n } else {\n positionStrategy.bottom('0');\n }\n\n overlayConfig.positionStrategy = positionStrategy;\n overlayConfig.disableAnimations = this._animationsDisabled;\n return createOverlayRef(this._injector, overlayConfig);\n }\n\n /**\n * Creates an injector to be used inside of a snack bar component.\n * @param config Config that was used to create the snack bar.\n * @param snackBarRef Reference to the snack bar.\n */\n private _createInjector<T>(config: MatSnackBarConfig, snackBarRef: MatSnackBarRef<T>): Injector {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n\n return Injector.create({\n parent: userInjector || this._injector,\n providers: [\n {provide: MatSnackBarRef, useValue: snackBarRef},\n {provide: MAT_SNACK_BAR_DATA, useValue: config.data},\n ],\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 {OverlayModule} from '@angular/cdk/overlay';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {NgModule} from '@angular/core';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {MatButtonModule} from '../button';\n\nimport {SimpleSnackBar} from './simple-snack-bar';\nimport {MatSnackBarContainer} from './snack-bar-container';\nimport {MatSnackBarAction, MatSnackBarActions, MatSnackBarLabel} from './snack-bar-content';\nimport {MatSnackBar} from './snack-bar';\n\nconst DIRECTIVES = [MatSnackBarContainer, MatSnackBarLabel, MatSnackBarActions, MatSnackBarAction];\n\n@NgModule({\n imports: [OverlayModule, PortalModule, MatButtonModule, SimpleSnackBar, ...DIRECTIVES],\n exports: [BidiModule, ...DIRECTIVES],\n providers: [MatSnackBar],\n})\nexport class MatSnackBarModule {}\n"],"names":["MAX_TIMEOUT","Math","pow","MatSnackBarRef","_overlayRef","instance","containerInstance","_afterDismissed","Subject","_afterOpened","_onAction","_durationTimeoutId","_dismissedByAction","constructor","_onExit","subscribe","_finishDismiss","dismiss","closed","exit","clearTimeout","dismissWithAction","next","complete","closeWithAction","_dismissAfter","duration","setTimeout","min","_open","dispose","dismissedByAction","afterDismissed","afterOpened","_onEnter","onAction","MAT_SNACK_BAR_DATA","InjectionToken","MatSnackBarConfig","politeness","announcementMessage","viewContainerRef","panelClass","direction","data","horizontalPosition","verticalPosition","MatSnackBarLabel","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","host","classAttribute","ngImport","decorators","args","MatSnackBarActions","MatSnackBarAction","SimpleSnackBar","snackBarRef","inject","action","hasAction","Component","exportAs","template","styles","dependencies","kind","type","MatButton","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","ENTER_ANIMATION","EXIT_ANIMATION","MatSnackBarContainer","BasePortalOutlet","_ngZone","NgZone","_elementRef","ElementRef","_changeDetectorRef","ChangeDetectorRef","_platform","Platform","_animationsDisabled","snackBarConfig","_document","DOCUMENT","_trackedModals","Set","_enterFallback","_exitFallback","_injector","Injector","_announceDelay","_announceTimeoutId","_destroyed","_portalOutlet","_onAnnounce","_animationState","_live","_label","_role","_liveElementId","_IdGenerator","getId","config","FIREFOX","attachComponentPortal","portal","_assertNotAttached","result","_afterPortalAttached","attachTemplatePortal","attachDomPortal","onAnimationEnd","animationName","_completeExit","run","enter","markForCheck","detectChanges","_screenReaderAnnounce","afterNextRender","queueMicrotask","injector","nativeElement","classList","add","of","undefined","setAttribute","ngOnDestroy","_clearFromModals","element","panelClasses","Array","isArray","forEach","cssClass","_exposeToModals","label","labelClass","toggle","querySelector","id","modals","querySelectorAll","i","length","modal","ariaOwns","getAttribute","indexOf","newValue","replace","trim","removeAttribute","clear","hasAttached","ngDevMode","Error","runOutsideAngular","inertElement","liveElement","focusedElement","isBrowser","document","activeElement","HTMLElement","contains","appendChild","focus","ɵcmp","ɵɵngDeclareComponent","minVersion","version","listeners","properties","viewQueries","propertyName","first","predicate","CdkPortalOutlet","descendants","static","usesInheritance","inputs","outputs","Eager","Default","imports","ViewChild","MAT_SNACK_BAR_DEFAULT_OPTIONS","providedIn","factory","MatSnackBar","LiveAnnouncer","_breakpointObserver","BreakpointObserver","_parentSnackBar","optional","skipSelf","_defaultConfig","_snackBarRefAtThisLevel","simpleSnackBarComponent","snackBarContainerComponent","handsetCssClass","_openedSnackBarRef","parent","value","openFromComponent","component","_attach","openFromTemplate","open","message","_config","_attachSnackBarContainer","overlayRef","userInjector","create","providers","provide","useValue","containerPortal","ComponentPortal","containerRef","attach","content","userConfig","_createOverlay","container","TemplateRef","TemplatePortal","$implicit","_createInjector","contentRef","observe","Breakpoints","HandsetPortrait","pipe","takeUntil","detachments","state","overlayElement","matches","announce","_animateSnackBar","overlayConfig","OverlayConfig","positionStrategy","createGlobalPositionStrategy","isRtl","isLeft","isRight","left","right","centerHorizontally","top","bottom","disableAnimations","createOverlayRef","Injectable","ɵprov","ɵɵngDeclareInjectable","DIRECTIVES","MatSnackBarModule","NgModule","OverlayModule","PortalModule","MatButtonModule","exports","BidiModule","ɵinj","ɵɵngDeclareInjector"],"mappings":"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"}
{"version":3,"file":"snack-bar.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/snack-bar-ref.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/snack-bar-config.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/snack-bar-content.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/simple-snack-bar.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/simple-snack-bar.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/snack-bar-container.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/snack-bar-container.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/snack-bar.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/snack-bar-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\nimport {OverlayRef} from '@angular/cdk/overlay';\nimport {Observable, Subject} from 'rxjs';\nimport {MatSnackBarContainer} from './snack-bar-container';\n\n/** Event that is emitted when a snack bar is dismissed. */\nexport interface MatSnackBarDismiss {\n /** Whether the snack bar was dismissed using the action button. */\n dismissedByAction: boolean;\n}\n\n/** Maximum amount of milliseconds that can be passed into setTimeout. */\nconst MAX_TIMEOUT = Math.pow(2, 31) - 1;\n\n/**\n * Reference to a snack bar dispatched from the snack bar service.\n */\nexport class MatSnackBarRef<T> {\n /** The instance of the component making up the content of the snack bar. */\n instance!: T;\n\n /**\n * The instance of the component making up the content of the snack bar.\n * @docs-private\n */\n containerInstance: MatSnackBarContainer;\n\n /** Subject for notifying the user that the snack bar has been dismissed. */\n private readonly _afterDismissed = new Subject<MatSnackBarDismiss>();\n\n /** Subject for notifying the user that the snack bar has opened and appeared. */\n private readonly _afterOpened = new Subject<void>();\n\n /** Subject for notifying the user that the snack bar action was called. */\n private readonly _onAction = new Subject<void>();\n\n /**\n * Timeout ID for the duration setTimeout call. Used to clear the timeout if the snackbar is\n * dismissed before the duration passes.\n */\n private _durationTimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n /** Whether the snack bar was dismissed using the action button. */\n private _dismissedByAction = false;\n\n constructor(\n containerInstance: MatSnackBarContainer,\n private _overlayRef: OverlayRef,\n ) {\n this.containerInstance = containerInstance;\n containerInstance._onExit.subscribe(() => this._finishDismiss());\n }\n\n /** Dismisses the snack bar. */\n dismiss(): void {\n if (!this._afterDismissed.closed) {\n this.containerInstance.exit();\n }\n clearTimeout(this._durationTimeoutId);\n }\n\n /** Marks the snackbar action clicked. */\n dismissWithAction(): void {\n if (!this._onAction.closed) {\n this._dismissedByAction = true;\n this._onAction.next();\n this._onAction.complete();\n this.dismiss();\n }\n clearTimeout(this._durationTimeoutId);\n }\n\n /**\n * Marks the snackbar action clicked.\n * @deprecated Use `dismissWithAction` instead.\n * @breaking-change 8.0.0\n */\n closeWithAction(): void {\n this.dismissWithAction();\n }\n\n /** Dismisses the snack bar after some duration */\n _dismissAfter(duration: number): void {\n // Note that we need to cap the duration to the maximum value for setTimeout, because\n // it'll revert to 1 if somebody passes in something greater (e.g. `Infinity`). See #17234.\n this._durationTimeoutId = setTimeout(() => this.dismiss(), Math.min(duration, MAX_TIMEOUT));\n }\n\n /** Marks the snackbar as opened */\n _open(): void {\n if (!this._afterOpened.closed) {\n this._afterOpened.next();\n this._afterOpened.complete();\n }\n }\n\n /** Cleans up the DOM after closing. */\n private _finishDismiss(): void {\n this._overlayRef.dispose();\n\n if (!this._onAction.closed) {\n this._onAction.complete();\n }\n\n this._afterDismissed.next({dismissedByAction: this._dismissedByAction});\n this._afterDismissed.complete();\n this._dismissedByAction = false;\n }\n\n /** Gets an observable that is notified when the snack bar is finished closing. */\n afterDismissed(): Observable<MatSnackBarDismiss> {\n return this._afterDismissed;\n }\n\n /** Gets an observable that is notified when the snack bar has opened and appeared. */\n afterOpened(): Observable<void> {\n return this.containerInstance._onEnter;\n }\n\n /** Gets an observable that is notified when the snack bar action is called. */\n onAction(): Observable<void> {\n return this._onAction;\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 {ViewContainerRef, InjectionToken} from '@angular/core';\nimport {AriaLivePoliteness} from '@angular/cdk/a11y';\nimport {Direction} from '@angular/cdk/bidi';\n\n/** Injection token that can be used to access the data that was passed in to a snack bar. */\nexport const MAT_SNACK_BAR_DATA = new InjectionToken<any>('MatSnackBarData');\n\n/** Possible values for horizontalPosition on MatSnackBarConfig. */\nexport type MatSnackBarHorizontalPosition = 'start' | 'center' | 'end' | 'left' | 'right';\n\n/** Possible values for verticalPosition on MatSnackBarConfig. */\nexport type MatSnackBarVerticalPosition = 'top' | 'bottom';\n\n/**\n * Configuration used when opening a snack-bar.\n */\nexport class MatSnackBarConfig<D = any> {\n /** The politeness level for the MatAriaLiveAnnouncer announcement. */\n politeness?: AriaLivePoliteness = 'polite';\n\n /**\n * Message to be announced by the LiveAnnouncer. When opening a snackbar without a custom\n * component or template, the announcement message will default to the specified message.\n */\n announcementMessage?: string = '';\n\n /**\n * The view container that serves as the parent for the snackbar for the purposes of dependency\n * injection. Note: this does not affect where the snackbar is inserted in the DOM.\n */\n viewContainerRef?: ViewContainerRef;\n\n /** The length of time in milliseconds to wait before automatically dismissing the snack bar. */\n duration?: number = 0;\n\n /** Extra CSS classes to be added to the snack bar container. */\n panelClass?: string | string[];\n\n /** Text layout direction for the snack bar. */\n direction?: Direction;\n\n /** Data being injected into the child component. */\n data?: D | null = null;\n\n /** The horizontal position to place the snack bar. */\n horizontalPosition?: MatSnackBarHorizontalPosition = 'center';\n\n /** The vertical position to place the snack bar. */\n verticalPosition?: MatSnackBarVerticalPosition = 'bottom';\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 {Directive} from '@angular/core';\n\n/** Directive that should be applied to the text element to be rendered in the snack bar. */\n@Directive({\n selector: `[matSnackBarLabel]`,\n host: {\n 'class': 'mat-mdc-snack-bar-label mdc-snackbar__label',\n },\n})\nexport class MatSnackBarLabel {}\n\n/** Directive that should be applied to the element containing the snack bar's action buttons. */\n@Directive({\n selector: `[matSnackBarActions]`,\n host: {\n 'class': 'mat-mdc-snack-bar-actions mdc-snackbar__actions',\n },\n})\nexport class MatSnackBarActions {}\n\n/** Directive that should be applied to each of the snack bar's action buttons. */\n@Directive({\n selector: `[matSnackBarAction]`,\n host: {\n 'class': 'mat-mdc-snack-bar-action mdc-snackbar__action',\n },\n})\nexport class MatSnackBarAction {}\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 {ChangeDetectionStrategy, Component, ViewEncapsulation, inject} from '@angular/core';\nimport {MatButton} from '../button';\nimport {MatSnackBarRef} from './snack-bar-ref';\nimport {MAT_SNACK_BAR_DATA} from './snack-bar-config';\nimport {MatSnackBarAction, MatSnackBarActions, MatSnackBarLabel} from './snack-bar-content';\n\n/**\n * Interface for a simple snack bar component that has a message and a single action.\n */\nexport interface TextOnlySnackBar {\n data: {message: string; action: string};\n snackBarRef: MatSnackBarRef<TextOnlySnackBar>;\n action: () => void;\n hasAction: boolean;\n}\n\n@Component({\n selector: 'simple-snack-bar',\n templateUrl: 'simple-snack-bar.html',\n styleUrl: 'simple-snack-bar.css',\n exportAs: 'matSnackBar',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatButton, MatSnackBarLabel, MatSnackBarActions, MatSnackBarAction],\n host: {\n 'class': 'mat-mdc-simple-snack-bar',\n },\n})\nexport class SimpleSnackBar implements TextOnlySnackBar {\n snackBarRef = inject<MatSnackBarRef<SimpleSnackBar>>(MatSnackBarRef);\n data = inject(MAT_SNACK_BAR_DATA);\n\n constructor(...args: unknown[]);\n constructor() {}\n\n /** Performs the action on the snack bar. */\n action(): void {\n this.snackBarRef.dismissWithAction();\n }\n\n /** If the action button should be shown. */\n get hasAction(): boolean {\n return !!this.data.action;\n }\n}\n","<div matSnackBarLabel>\n {{data.message}}\n</div>\n\n@if (hasAction) {\n <div matSnackBarActions>\n <button matButton matSnackBarAction (click)=\"action()\">\n {{data.action}}\n </button>\n </div>\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 {_IdGenerator, AriaLivePoliteness} from '@angular/cdk/a11y';\nimport {Platform} from '@angular/cdk/platform';\nimport {\n BasePortalOutlet,\n CdkPortalOutlet,\n ComponentPortal,\n DomPortal,\n TemplatePortal,\n} from '@angular/cdk/portal';\n\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n EmbeddedViewRef,\n inject,\n Injector,\n NgZone,\n OnDestroy,\n ViewChild,\n ViewEncapsulation,\n DOCUMENT,\n} from '@angular/core';\nimport {Observable, of, Subject} from 'rxjs';\nimport {_animationsDisabled} from '../core';\nimport {MatSnackBarConfig} from './snack-bar-config';\n\nconst ENTER_ANIMATION = '_mat-snack-bar-enter';\nconst EXIT_ANIMATION = '_mat-snack-bar-exit';\n\n/**\n * Internal component that wraps user-provided snack bar content.\n * @docs-private\n */\n@Component({\n selector: 'mat-snack-bar-container',\n templateUrl: 'snack-bar-container.html',\n styleUrl: 'snack-bar-container.css',\n // In Ivy embedded views will be change detected from their declaration place, rather than\n // where they were stamped out. This means that we can't have the snack bar container be OnPush,\n // because it might cause snack bars that were opened from a template not to be out of date.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n imports: [CdkPortalOutlet],\n host: {\n 'class': 'mdc-snackbar mat-mdc-snack-bar-container',\n '[class.mat-snack-bar-container-enter]': '_animationState === \"visible\"',\n '[class.mat-snack-bar-container-exit]': '_animationState === \"hidden\"',\n '[class.mat-snack-bar-container-animations-enabled]': '!_animationsDisabled',\n '(animationend)': 'onAnimationEnd($event.animationName)',\n '(animationcancel)': 'onAnimationEnd($event.animationName)',\n },\n})\nexport class MatSnackBarContainer extends BasePortalOutlet implements OnDestroy {\n private _ngZone = inject(NgZone);\n readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _changeDetectorRef = inject(ChangeDetectorRef);\n private _platform = inject(Platform);\n protected _animationsDisabled = _animationsDisabled();\n snackBarConfig = inject(MatSnackBarConfig);\n\n private _document = inject(DOCUMENT);\n private _trackedModals = new Set<Element>();\n private _enterFallback: ReturnType<typeof setTimeout> | undefined;\n private _exitFallback: ReturnType<typeof setTimeout> | undefined;\n private _injector = inject(Injector);\n\n /** The number of milliseconds to wait before announcing the snack bar's content. */\n private readonly _announceDelay: number = 150;\n\n /** The timeout for announcing the snack bar's content. */\n private _announceTimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n /** Whether the component has been destroyed. */\n private _destroyed = false;\n\n /** The portal outlet inside of this container into which the snack bar content will be loaded. */\n @ViewChild(CdkPortalOutlet, {static: true}) _portalOutlet!: CdkPortalOutlet;\n\n /** Subject for notifying that the snack bar has announced to screen readers. */\n readonly _onAnnounce: Subject<void> = new Subject();\n\n /** Subject for notifying that the snack bar has exited from view. */\n readonly _onExit: Subject<void> = new Subject();\n\n /** Subject for notifying that the snack bar has finished entering the view. */\n readonly _onEnter: Subject<void> = new Subject();\n\n /** The state of the snack bar animations. */\n _animationState = 'void';\n\n /** aria-live value for the live region. */\n _live: AriaLivePoliteness;\n\n /**\n * Element that will have the `mdc-snackbar__label` class applied if the attached component\n * or template does not have it. This ensures that the appropriate structure, typography, and\n * color is applied to the attached view.\n */\n @ViewChild('label', {static: true}) _label!: ElementRef;\n\n /**\n * Role of the live region. This is only for Firefox as there is a known issue where Firefox +\n * JAWS does not read out aria-live message.\n */\n _role?: 'status' | 'alert';\n\n /** Unique ID of the aria-live element. */\n readonly _liveElementId = inject(_IdGenerator).getId('mat-snack-bar-container-live-');\n\n constructor(...args: unknown[]);\n\n constructor() {\n super();\n const config = this.snackBarConfig;\n\n // Use aria-live rather than a live role like 'alert' or 'status'\n // because NVDA and JAWS have show inconsistent behavior with live roles.\n if (config.politeness === 'assertive' && !config.announcementMessage) {\n this._live = 'assertive';\n } else if (config.politeness === 'off') {\n this._live = 'off';\n } else {\n this._live = 'polite';\n }\n\n // Only set role for Firefox. Set role based on aria-live because setting role=\"alert\" implies\n // aria-live=\"assertive\" which may cause issues if aria-live is set to \"polite\" above.\n if (this._platform.FIREFOX) {\n if (this._live === 'polite') {\n this._role = 'status';\n }\n if (this._live === 'assertive') {\n this._role = 'alert';\n }\n }\n }\n\n /** Attach a component portal as content to this snack bar container. */\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n this._assertNotAttached();\n const result = this._portalOutlet.attachComponentPortal(portal);\n this._afterPortalAttached();\n return result;\n }\n\n /** Attach a template portal as content to this snack bar container. */\n attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n this._assertNotAttached();\n const result = this._portalOutlet.attachTemplatePortal(portal);\n this._afterPortalAttached();\n return result;\n }\n\n /**\n * Attaches a DOM portal to the snack bar container.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n override attachDomPortal = (portal: DomPortal) => {\n this._assertNotAttached();\n const result = this._portalOutlet.attachDomPortal(portal);\n this._afterPortalAttached();\n return result;\n };\n\n /** Handle end of animations, updating the state of the snackbar. */\n onAnimationEnd(animationName: string) {\n if (animationName === EXIT_ANIMATION) {\n this._completeExit();\n } else if (animationName === ENTER_ANIMATION) {\n clearTimeout(this._enterFallback);\n this._ngZone.run(() => {\n this._onEnter.next();\n this._onEnter.complete();\n });\n }\n }\n\n /** Begin animation of snack bar entrance into view. */\n enter(): void {\n if (!this._destroyed) {\n this._animationState = 'visible';\n // _animationState lives in host bindings and `detectChanges` does not refresh host bindings\n // so we have to call `markForCheck` to ensure the host view is refreshed eventually.\n this._changeDetectorRef.markForCheck();\n this._changeDetectorRef.detectChanges();\n this._screenReaderAnnounce();\n\n if (this._animationsDisabled) {\n afterNextRender(\n () => {\n this._ngZone.run(() => queueMicrotask(() => this.onAnimationEnd(ENTER_ANIMATION)));\n },\n {injector: this._injector},\n );\n } else {\n clearTimeout(this._enterFallback);\n this._enterFallback = setTimeout(() => {\n // The snack bar will stay invisible if it fails to animate. Add a fallback class so it\n // becomes visible. This can happen in some apps that do `* {animation: none !important}`.\n this._elementRef.nativeElement.classList.add('mat-snack-bar-fallback-visible');\n this.onAnimationEnd(ENTER_ANIMATION);\n }, 200);\n }\n }\n }\n\n /** Begin animation of the snack bar exiting from view. */\n exit(): Observable<void> {\n if (this._destroyed) {\n return of(undefined);\n }\n\n // It's common for snack bars to be opened by random outside calls like HTTP requests or\n // errors. Run inside the NgZone to ensure that it functions correctly.\n this._ngZone.run(() => {\n // Note: this one transitions to `hidden`, rather than `void`, in order to handle the case\n // where multiple snack bars are opened in quick succession (e.g. two consecutive calls to\n // `MatSnackBar.open`).\n this._animationState = 'hidden';\n this._changeDetectorRef.markForCheck();\n\n // Mark this element with an 'exit' attribute to indicate that the snackbar has\n // been dismissed and will soon be removed from the DOM. This is used by the snackbar\n // test harness.\n this._elementRef.nativeElement.setAttribute('mat-exit', '');\n\n // If the snack bar hasn't been announced by the time it exits it wouldn't have been open\n // long enough to visually read it either, so clear the timeout for announcing.\n clearTimeout(this._announceTimeoutId);\n\n if (this._animationsDisabled) {\n afterNextRender(\n () => {\n this._ngZone.run(() => queueMicrotask(() => this.onAnimationEnd(EXIT_ANIMATION)));\n },\n {injector: this._injector},\n );\n } else {\n clearTimeout(this._exitFallback);\n this._exitFallback = setTimeout(() => this.onAnimationEnd(EXIT_ANIMATION), 200);\n }\n });\n\n return this._onExit;\n }\n\n /** Makes sure the exit callbacks have been invoked when the element is destroyed. */\n ngOnDestroy() {\n this._destroyed = true;\n this._clearFromModals();\n this._completeExit();\n }\n\n private _completeExit() {\n clearTimeout(this._exitFallback);\n queueMicrotask(() => {\n this._onExit.next();\n this._onExit.complete();\n });\n }\n\n /**\n * Called after the portal contents have been attached. Can be\n * used to modify the DOM once it's guaranteed to be in place.\n */\n private _afterPortalAttached() {\n const element: HTMLElement = this._elementRef.nativeElement;\n const panelClasses = this.snackBarConfig.panelClass;\n\n if (panelClasses) {\n if (Array.isArray(panelClasses)) {\n // Note that we can't use a spread here, because IE doesn't support multiple arguments.\n panelClasses.forEach(cssClass => element.classList.add(cssClass));\n } else {\n element.classList.add(panelClasses);\n }\n }\n\n this._exposeToModals();\n\n // Check to see if the attached component or template uses the MDC template structure,\n // specifically the MDC label. If not, the container should apply the MDC label class to this\n // component's label container, which will apply MDC's label styles to the attached view.\n const label = this._label.nativeElement;\n const labelClass = 'mdc-snackbar__label';\n label.classList.toggle(labelClass, !label.querySelector(`.${labelClass}`));\n }\n\n /**\n * Some browsers won't expose the accessibility node of the live element if there is an\n * `aria-modal` and the live element is outside of it. This method works around the issue by\n * pointing the `aria-owns` of all modals to the live element.\n */\n private _exposeToModals() {\n // TODO(http://github.com/angular/components/issues/26853): consider de-duplicating this with the\n // `LiveAnnouncer` and any other usages.\n //\n // Note that the selector here is limited to CDK overlays at the moment in order to reduce the\n // section of the DOM we need to look through. This should cover all the cases we support, but\n // the selector can be expanded if it turns out to be too narrow.\n const id = this._liveElementId;\n const modals = this._document.querySelectorAll(\n 'body > .cdk-overlay-container [aria-modal=\"true\"]',\n );\n\n for (let i = 0; i < modals.length; i++) {\n const modal = modals[i];\n const ariaOwns = modal.getAttribute('aria-owns');\n this._trackedModals.add(modal);\n\n if (!ariaOwns) {\n modal.setAttribute('aria-owns', id);\n } else if (ariaOwns.indexOf(id) === -1) {\n modal.setAttribute('aria-owns', ariaOwns + ' ' + id);\n }\n }\n }\n\n /** Clears the references to the live element from any modals it was added to. */\n private _clearFromModals() {\n this._trackedModals.forEach(modal => {\n const ariaOwns = modal.getAttribute('aria-owns');\n\n if (ariaOwns) {\n const newValue = ariaOwns.replace(this._liveElementId, '').trim();\n\n if (newValue.length > 0) {\n modal.setAttribute('aria-owns', newValue);\n } else {\n modal.removeAttribute('aria-owns');\n }\n }\n });\n this._trackedModals.clear();\n }\n\n /** Asserts that no content is already attached to the container. */\n private _assertNotAttached() {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Attempting to attach snack bar content after content is already attached');\n }\n }\n\n /**\n * Starts a timeout to move the snack bar content to the live region so screen readers will\n * announce it.\n */\n private _screenReaderAnnounce() {\n if (this._announceTimeoutId) {\n return;\n }\n\n this._ngZone.runOutsideAngular(() => {\n this._announceTimeoutId = setTimeout(() => {\n if (this._destroyed) {\n return;\n }\n\n const element = this._elementRef.nativeElement;\n const inertElement = element.querySelector('[aria-hidden]');\n const liveElement = element.querySelector('[aria-live]');\n\n if (inertElement && liveElement) {\n // If an element in the snack bar content is focused before being moved\n // track it and restore focus after moving to the live region.\n let focusedElement: HTMLElement | null = null;\n if (\n this._platform.isBrowser &&\n document.activeElement instanceof HTMLElement &&\n inertElement.contains(document.activeElement)\n ) {\n focusedElement = document.activeElement;\n }\n\n inertElement.removeAttribute('aria-hidden');\n liveElement.appendChild(inertElement);\n focusedElement?.focus();\n\n this._onAnnounce.next();\n this._onAnnounce.complete();\n }\n }, this._announceDelay);\n });\n }\n}\n","<div class=\"mdc-snackbar__surface mat-mdc-snackbar-surface\">\n <!--\n This outer label wrapper will have the class `mdc-snackbar__label` applied if\n the attached template/component does not contain it.\n -->\n <div class=\"mat-mdc-snack-bar-label\" #label>\n <!-- Initialy holds the snack bar content, will be empty after announcing to screen readers. -->\n <div aria-hidden=\"true\">\n <ng-template cdkPortalOutlet />\n </div>\n\n <!-- Will receive the snack bar content from the non-live div, move will happen a short delay after opening -->\n <div [attr.aria-live]=\"_live\" [attr.role]=\"_role\" [attr.id]=\"_liveElementId\"></div>\n </div>\n</div>\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 {LiveAnnouncer} from '@angular/cdk/a11y';\nimport {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';\nimport {\n ComponentType,\n createGlobalPositionStrategy,\n createOverlayRef,\n OverlayConfig,\n OverlayRef,\n} from '@angular/cdk/overlay';\nimport {\n ComponentRef,\n EmbeddedViewRef,\n Injectable,\n InjectionToken,\n Injector,\n OnDestroy,\n TemplateRef,\n inject,\n} from '@angular/core';\nimport {SimpleSnackBar, TextOnlySnackBar} from './simple-snack-bar';\nimport {MatSnackBarContainer} from './snack-bar-container';\nimport {MAT_SNACK_BAR_DATA, MatSnackBarConfig} from './snack-bar-config';\nimport {MatSnackBarRef} from './snack-bar-ref';\nimport {ComponentPortal, TemplatePortal} from '@angular/cdk/portal';\nimport {takeUntil} from 'rxjs/operators';\nimport {_animationsDisabled} from '../core';\n\n/** Injection token that can be used to specify default snack bar. */\nexport const MAT_SNACK_BAR_DEFAULT_OPTIONS = new InjectionToken<MatSnackBarConfig>(\n 'mat-snack-bar-default-options',\n {\n providedIn: 'root',\n factory: () => new MatSnackBarConfig(),\n },\n);\n\n/**\n * Service to dispatch Material Design snack bar messages.\n */\n@Injectable({providedIn: 'root'})\nexport class MatSnackBar implements OnDestroy {\n private _live = inject(LiveAnnouncer);\n private _injector = inject(Injector);\n private _breakpointObserver = inject(BreakpointObserver);\n private _parentSnackBar = inject(MatSnackBar, {optional: true, skipSelf: true});\n private _defaultConfig = inject<MatSnackBarConfig>(MAT_SNACK_BAR_DEFAULT_OPTIONS);\n private _animationsDisabled = _animationsDisabled();\n\n /**\n * Reference to the current snack bar in the view *at this level* (in the Angular injector tree).\n * If there is a parent snack-bar service, all operations should delegate to that parent\n * via `_openedSnackBarRef`.\n */\n private _snackBarRefAtThisLevel: MatSnackBarRef<any> | null = null;\n\n /** The component that should be rendered as the snack bar's simple component. */\n simpleSnackBarComponent = SimpleSnackBar;\n\n /** The container component that attaches the provided template or component. */\n snackBarContainerComponent = MatSnackBarContainer;\n\n /** The CSS class to apply for handset mode. */\n handsetCssClass = 'mat-mdc-snack-bar-handset';\n\n /** Reference to the currently opened snackbar at *any* level. */\n get _openedSnackBarRef(): MatSnackBarRef<any> | null {\n const parent = this._parentSnackBar;\n return parent ? parent._openedSnackBarRef : this._snackBarRefAtThisLevel;\n }\n\n set _openedSnackBarRef(value: MatSnackBarRef<any> | null) {\n if (this._parentSnackBar) {\n this._parentSnackBar._openedSnackBarRef = value;\n } else {\n this._snackBarRefAtThisLevel = value;\n }\n }\n\n constructor(...args: unknown[]);\n constructor() {}\n\n /**\n * Creates and dispatches a snack bar with a custom component for the content, removing any\n * currently opened snack bars.\n *\n * @param component Component to be instantiated.\n * @param config Extra configuration for the snack bar.\n */\n openFromComponent<T, D = any>(\n component: ComponentType<T>,\n config?: MatSnackBarConfig<D>,\n ): MatSnackBarRef<T> {\n return this._attach(component, config) as MatSnackBarRef<T>;\n }\n\n /**\n * Creates and dispatches a snack bar with a custom template for the content, removing any\n * currently opened snack bars.\n *\n * @param template Template to be instantiated.\n * @param config Extra configuration for the snack bar.\n */\n openFromTemplate(\n template: TemplateRef<any>,\n config?: MatSnackBarConfig,\n ): MatSnackBarRef<EmbeddedViewRef<any>> {\n return this._attach(template, config);\n }\n\n /**\n * Opens a snackbar with a message and an optional action.\n * @param message The message to show in the snackbar.\n * @param action The label for the snackbar action.\n * @param config Additional configuration options for the snackbar.\n */\n open(\n message: string,\n action: string = '',\n config?: MatSnackBarConfig,\n ): MatSnackBarRef<TextOnlySnackBar> {\n const _config = {...this._defaultConfig, ...config};\n\n // Since the user doesn't have access to the component, we can\n // override the data to pass in our own message and action.\n _config.data = {message, action};\n\n // Since the snack bar has `role=\"alert\"`, we don't\n // want to announce the same message twice.\n if (_config.announcementMessage === message) {\n _config.announcementMessage = undefined;\n }\n\n return this.openFromComponent(this.simpleSnackBarComponent, _config);\n }\n\n /**\n * Dismisses the currently-visible snack bar.\n */\n dismiss(): void {\n if (this._openedSnackBarRef) {\n this._openedSnackBarRef.dismiss();\n }\n }\n\n ngOnDestroy() {\n // Only dismiss the snack bar at the current level on destroy.\n if (this._snackBarRefAtThisLevel) {\n this._snackBarRefAtThisLevel.dismiss();\n }\n }\n\n /**\n * Attaches the snack bar container component to the overlay.\n */\n private _attachSnackBarContainer(\n overlayRef: OverlayRef,\n config: MatSnackBarConfig,\n ): MatSnackBarContainer {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = Injector.create({\n parent: userInjector || this._injector,\n providers: [{provide: MatSnackBarConfig, useValue: config}],\n });\n\n const containerPortal = new ComponentPortal(\n this.snackBarContainerComponent,\n config.viewContainerRef,\n injector,\n );\n const containerRef: ComponentRef<MatSnackBarContainer> = overlayRef.attach(containerPortal);\n containerRef.instance.snackBarConfig = config;\n return containerRef.instance;\n }\n\n /**\n * Places a new component or a template as the content of the snack bar container.\n */\n private _attach<T>(\n content: ComponentType<T> | TemplateRef<T>,\n userConfig?: MatSnackBarConfig,\n ): MatSnackBarRef<T | EmbeddedViewRef<any>> {\n const config = {...new MatSnackBarConfig(), ...this._defaultConfig, ...userConfig};\n const overlayRef = this._createOverlay(config);\n const container = this._attachSnackBarContainer(overlayRef, config);\n const snackBarRef = new MatSnackBarRef<T | EmbeddedViewRef<any>>(container, overlayRef);\n\n if (content instanceof TemplateRef) {\n const portal = new TemplatePortal(content, null!, {\n $implicit: config.data,\n snackBarRef,\n } as any);\n\n snackBarRef.instance = container.attachTemplatePortal(portal);\n } else {\n const injector = this._createInjector(config, snackBarRef);\n const portal = new ComponentPortal(content, undefined, injector);\n const contentRef = container.attachComponentPortal<T>(portal);\n\n // We can't pass this via the injector, because the injector is created earlier.\n snackBarRef.instance = contentRef.instance;\n }\n\n // Subscribe to the breakpoint observer and attach the mat-snack-bar-handset class as\n // appropriate. This class is applied to the overlay element because the overlay must expand to\n // fill the width of the screen for full width snackbars.\n this._breakpointObserver\n .observe(Breakpoints.HandsetPortrait)\n .pipe(takeUntil(overlayRef.detachments()))\n .subscribe(state => {\n overlayRef.overlayElement.classList.toggle(this.handsetCssClass, state.matches);\n });\n\n if (config.announcementMessage) {\n // Wait until the snack bar contents have been announced then deliver this message.\n container._onAnnounce.subscribe(() => {\n this._live.announce(config.announcementMessage!, config.politeness);\n });\n }\n\n this._animateSnackBar(snackBarRef, config);\n this._openedSnackBarRef = snackBarRef;\n return this._openedSnackBarRef;\n }\n\n /** Animates the old snack bar out and the new one in. */\n private _animateSnackBar(snackBarRef: MatSnackBarRef<any>, config: MatSnackBarConfig) {\n // When the snackbar is dismissed, clear the reference to it.\n snackBarRef.afterDismissed().subscribe(() => {\n // Clear the snackbar ref if it hasn't already been replaced by a newer snackbar.\n if (this._openedSnackBarRef == snackBarRef) {\n this._openedSnackBarRef = null;\n }\n\n if (config.announcementMessage) {\n this._live.clear();\n }\n });\n\n // If a dismiss timeout is provided, set up dismiss based on after the snackbar is opened.\n if (config.duration && config.duration > 0) {\n snackBarRef.afterOpened().subscribe(() => snackBarRef._dismissAfter(config.duration!));\n }\n\n if (this._openedSnackBarRef) {\n // If a snack bar is already in view, dismiss it and enter the\n // new snack bar after exit animation is complete.\n this._openedSnackBarRef.afterDismissed().subscribe(() => {\n snackBarRef.containerInstance.enter();\n });\n this._openedSnackBarRef.dismiss();\n } else {\n // If no snack bar is in view, enter the new snack bar.\n snackBarRef.containerInstance.enter();\n }\n }\n\n /**\n * Creates a new overlay and places it in the correct location.\n * @param config The user-specified snack bar config.\n */\n private _createOverlay(config: MatSnackBarConfig): OverlayRef {\n const overlayConfig = new OverlayConfig();\n overlayConfig.direction = config.direction;\n\n const positionStrategy = createGlobalPositionStrategy(this._injector);\n // Set horizontal position.\n const isRtl = config.direction === 'rtl';\n const isLeft =\n config.horizontalPosition === 'left' ||\n (config.horizontalPosition === 'start' && !isRtl) ||\n (config.horizontalPosition === 'end' && isRtl);\n const isRight = !isLeft && config.horizontalPosition !== 'center';\n if (isLeft) {\n positionStrategy.left('0');\n } else if (isRight) {\n positionStrategy.right('0');\n } else {\n positionStrategy.centerHorizontally();\n }\n // Set horizontal position.\n if (config.verticalPosition === 'top') {\n positionStrategy.top('0');\n } else {\n positionStrategy.bottom('0');\n }\n\n overlayConfig.positionStrategy = positionStrategy;\n overlayConfig.disableAnimations = this._animationsDisabled;\n return createOverlayRef(this._injector, overlayConfig);\n }\n\n /**\n * Creates an injector to be used inside of a snack bar component.\n * @param config Config that was used to create the snack bar.\n * @param snackBarRef Reference to the snack bar.\n */\n private _createInjector<T>(config: MatSnackBarConfig, snackBarRef: MatSnackBarRef<T>): Injector {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n\n return Injector.create({\n parent: userInjector || this._injector,\n providers: [\n {provide: MatSnackBarRef, useValue: snackBarRef},\n {provide: MAT_SNACK_BAR_DATA, useValue: config.data},\n ],\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 {OverlayModule} from '@angular/cdk/overlay';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {NgModule} from '@angular/core';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {MatButtonModule} from '../button';\n\nimport {SimpleSnackBar} from './simple-snack-bar';\nimport {MatSnackBarContainer} from './snack-bar-container';\nimport {MatSnackBarAction, MatSnackBarActions, MatSnackBarLabel} from './snack-bar-content';\nimport {MatSnackBar} from './snack-bar';\n\nconst DIRECTIVES = [MatSnackBarContainer, MatSnackBarLabel, MatSnackBarActions, MatSnackBarAction];\n\n@NgModule({\n imports: [OverlayModule, PortalModule, MatButtonModule, SimpleSnackBar, ...DIRECTIVES],\n exports: [BidiModule, ...DIRECTIVES],\n providers: [MatSnackBar],\n})\nexport class MatSnackBarModule {}\n"],"names":["MAX_TIMEOUT","Math","pow","MatSnackBarRef","_overlayRef","instance","containerInstance","_afterDismissed","Subject","_afterOpened","_onAction","_durationTimeoutId","_dismissedByAction","constructor","_onExit","subscribe","_finishDismiss","dismiss","closed","exit","clearTimeout","dismissWithAction","next","complete","closeWithAction","_dismissAfter","duration","setTimeout","min","_open","dispose","dismissedByAction","afterDismissed","afterOpened","_onEnter","onAction","MAT_SNACK_BAR_DATA","InjectionToken","MatSnackBarConfig","politeness","announcementMessage","viewContainerRef","panelClass","direction","data","horizontalPosition","verticalPosition","MatSnackBarLabel","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","host","classAttribute","ngImport","decorators","args","MatSnackBarActions","MatSnackBarAction","SimpleSnackBar","snackBarRef","inject","action","hasAction","Component","exportAs","template","styles","dependencies","kind","type","MatButton","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","ENTER_ANIMATION","EXIT_ANIMATION","MatSnackBarContainer","BasePortalOutlet","_ngZone","NgZone","_elementRef","ElementRef","_changeDetectorRef","ChangeDetectorRef","_platform","Platform","_animationsDisabled","snackBarConfig","_document","DOCUMENT","_trackedModals","Set","_enterFallback","_exitFallback","_injector","Injector","_announceDelay","_announceTimeoutId","_destroyed","_portalOutlet","_onAnnounce","_animationState","_live","_label","_role","_liveElementId","_IdGenerator","getId","config","FIREFOX","attachComponentPortal","portal","_assertNotAttached","result","_afterPortalAttached","attachTemplatePortal","attachDomPortal","onAnimationEnd","animationName","_completeExit","run","enter","markForCheck","detectChanges","_screenReaderAnnounce","afterNextRender","queueMicrotask","injector","nativeElement","classList","add","of","undefined","setAttribute","ngOnDestroy","_clearFromModals","element","panelClasses","Array","isArray","forEach","cssClass","_exposeToModals","label","labelClass","toggle","querySelector","id","modals","querySelectorAll","i","length","modal","ariaOwns","getAttribute","indexOf","newValue","replace","trim","removeAttribute","clear","hasAttached","ngDevMode","Error","runOutsideAngular","inertElement","liveElement","focusedElement","isBrowser","document","activeElement","HTMLElement","contains","appendChild","focus","ɵcmp","ɵɵngDeclareComponent","minVersion","version","listeners","properties","viewQueries","propertyName","first","predicate","CdkPortalOutlet","descendants","static","usesInheritance","inputs","outputs","Eager","Default","imports","ViewChild","MAT_SNACK_BAR_DEFAULT_OPTIONS","providedIn","factory","MatSnackBar","LiveAnnouncer","_breakpointObserver","BreakpointObserver","_parentSnackBar","optional","skipSelf","_defaultConfig","_snackBarRefAtThisLevel","simpleSnackBarComponent","snackBarContainerComponent","handsetCssClass","_openedSnackBarRef","parent","value","openFromComponent","component","_attach","openFromTemplate","open","message","_config","_attachSnackBarContainer","overlayRef","userInjector","create","providers","provide","useValue","containerPortal","ComponentPortal","containerRef","attach","content","userConfig","_createOverlay","container","TemplateRef","TemplatePortal","$implicit","_createInjector","contentRef","observe","Breakpoints","HandsetPortrait","pipe","takeUntil","detachments","state","overlayElement","matches","announce","_animateSnackBar","overlayConfig","OverlayConfig","positionStrategy","createGlobalPositionStrategy","isRtl","isLeft","isRight","left","right","centerHorizontally","top","bottom","disableAnimations","createOverlayRef","Injectable","ɵprov","ɵɵngDeclareInjectable","DIRECTIVES","MatSnackBarModule","NgModule","OverlayModule","PortalModule","MatButtonModule","exports","BidiModule","ɵinj","ɵɵngDeclareInjector"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"sort-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sort/testing/sort-header-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sort/testing/sort-harness.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\nimport {ComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {SortDirection} from '../../sort';\nimport {SortHeaderHarnessFilters} from './sort-harness-filters';\n\n/** Harness for interacting with a standard Angular Material sort header in tests. */\nexport class MatSortHeaderHarness extends ComponentHarness {\n static hostSelector = '.mat-sort-header';\n private _container = this.locatorFor('.mat-sort-header-container');\n\n /**\n * Gets a `HarnessPredicate` that can be used to\n * search for a sort header with specific attributes.\n */\n static with(options: SortHeaderHarnessFilters = {}): HarnessPredicate<MatSortHeaderHarness> {\n return new HarnessPredicate(MatSortHeaderHarness, options)\n .addOption('label', options.label, (harness, label) =>\n HarnessPredicate.stringMatches(harness.getLabel(), label),\n )\n .addOption('sortDirection', options.sortDirection, (harness, sortDirection) => {\n return HarnessPredicate.stringMatches(harness.getSortDirection(), sortDirection);\n });\n }\n\n /** Gets the label of the sort header. */\n async getLabel(): Promise<string> {\n return (await this._container()).text();\n }\n\n /** Gets the sorting direction of the header. */\n async getSortDirection(): Promise<SortDirection> {\n const host = await this.host();\n const ariaSort = await host.getAttribute('aria-sort');\n\n if (ariaSort === 'ascending') {\n return 'asc';\n } else if (ariaSort === 'descending') {\n return 'desc';\n }\n\n return '';\n }\n\n /** Gets whether the sort header is currently being sorted by. */\n async isActive(): Promise<boolean> {\n return !!(await this.getSortDirection());\n }\n\n /** Whether the sort header is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).hasClass('mat-sort-header-disabled');\n }\n\n /** Clicks the header to change its sorting direction. Only works if the header is enabled. */\n async click(): Promise<void> {\n return (await this.host()).click();\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 {ComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {SortHarnessFilters, SortHeaderHarnessFilters} from './sort-harness-filters';\nimport {MatSortHeaderHarness} from './sort-header-harness';\n\n/** Harness for interacting with a standard `mat-sort` in tests. */\nexport class MatSortHarness extends ComponentHarness {\n static hostSelector = '.mat-sort';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `mat-sort` with specific attributes.\n * @param options Options for narrowing the search.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: SortHarnessFilters = {}): HarnessPredicate<MatSortHarness> {\n return new HarnessPredicate(MatSortHarness, options);\n }\n\n /** Gets all of the sort headers in the `mat-sort`. */\n async getSortHeaders(filter: SortHeaderHarnessFilters = {}): Promise<MatSortHeaderHarness[]> {\n return this.locatorForAll(MatSortHeaderHarness.with(filter))();\n }\n\n /** Gets the selected header in the `mat-sort`. */\n async getActiveHeader(): Promise<MatSortHeaderHarness | null> {\n const headers = await this.getSortHeaders();\n for (let i = 0; i < headers.length; i++) {\n if (await headers[i].isActive()) {\n return headers[i];\n }\n }\n return null;\n }\n}\n"],"names":["MatSortHeaderHarness","ComponentHarness","hostSelector","_container","locatorFor","with","options","HarnessPredicate","addOption","label","harness","stringMatches","getLabel","sortDirection","getSortDirection","text","host","ariaSort","getAttribute","isActive","isDisabled","hasClass","click","MatSortHarness","getSortHeaders","filter","locatorForAll","getActiveHeader","headers","i","length"],"mappings":";;AAaM,MAAOA,oBAAqB,SAAQC,gBAAgB,CAAA;EACxD,OAAOC,YAAY,GAAG,kBAAkB;AAChCC,EAAAA,UAAU,GAAG,IAAI,CAACC,UAAU,CAAC,4BAA4B,CAAC;AAMlE,EAAA,OAAOC,IAAIA,CAACC,OAAA,GAAoC,EAAE,EAAA;IAChD,OAAO,IAAIC,gBAAgB,CAACP,oBAAoB,EAAEM,OAAO,CAAA,CACtDE,SAAS,CAAC,OAAO,EAAEF,OAAO,CAACG,KAAK,EAAE,CAACC,OAAO,EAAED,KAAK,KAChDF,gBAAgB,CAACI,aAAa,CAACD,OAAO,CAACE,QAAQ,EAAE,EAAEH,KAAK,CAAC,CAAA,CAE1DD,SAAS,CAAC,eAAe,EAAEF,OAAO,CAACO,aAAa,EAAE,CAACH,OAAO,EAAEG,aAAa,KAAI;MAC5E,OAAON,gBAAgB,CAACI,aAAa,CAACD,OAAO,CAACI,gBAAgB,EAAE,EAAED,aAAa,CAAC;AAClF,IAAA,CAAC,CAAC;AACN,EAAA;EAGA,MAAMD,QAAQA,GAAA;IACZ,OAAO,CAAC,MAAM,IAAI,CAACT,UAAU,EAAE,EAAEY,IAAI,EAAE;AACzC,EAAA;EAGA,MAAMD,gBAAgBA,GAAA;AACpB,IAAA,MAAME,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;IAC9B,MAAMC,QAAQ,GAAG,MAAMD,IAAI,CAACE,YAAY,CAAC,WAAW,CAAC;IAErD,IAAID,QAAQ,KAAK,WAAW,EAAE;AAC5B,MAAA,OAAO,KAAK;AACd,IAAA,CAAA,MAAO,IAAIA,QAAQ,KAAK,YAAY,EAAE;AACpC,MAAA,OAAO,MAAM;AACf,IAAA;AAEA,IAAA,OAAO,EAAE;AACX,EAAA;EAGA,MAAME,QAAQA,GAAA;IACZ,OAAO,CAAC,EAAE,MAAM,IAAI,CAACL,gBAAgB,EAAE,CAAC;AAC1C,EAAA;EAGA,MAAMM,UAAUA,GAAA;IACd,OAAO,CAAC,MAAM,IAAI,CAACJ,IAAI,EAAE,EAAEK,QAAQ,CAAC,0BAA0B,CAAC;AACjE,EAAA;EAGA,MAAMC,KAAKA,GAAA;IACT,OAAO,CAAC,MAAM,IAAI,CAACN,IAAI,EAAE,EAAEM,KAAK,EAAE;AACpC,EAAA;;;AClDI,MAAOC,cAAe,SAAQtB,gBAAgB,CAAA;EAClD,OAAOC,YAAY,GAAG,WAAW;AAOjC,EAAA,OAAOG,IAAIA,CAACC,OAAA,GAA8B,EAAE,EAAA;AAC1C,IAAA,OAAO,IAAIC,gBAAgB,CAACgB,cAAc,EAAEjB,OAAO,CAAC;AACtD,EAAA;AAGA,EAAA,MAAMkB,cAAcA,CAACC,MAAA,GAAmC,EAAE,EAAA;AACxD,IAAA,OAAO,IAAI,CAACC,aAAa,CAAC1B,oBAAoB,CAACK,IAAI,CAACoB,MAAM,CAAC,CAAC,EAAE;AAChE,EAAA;EAGA,MAAME,eAAeA,GAAA;AACnB,IAAA,MAAMC,OAAO,GAAG,MAAM,IAAI,CAACJ,cAAc,EAAE;AAC3C,IAAA,KAAK,IAAIK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,OAAO,CAACE,MAAM,EAAED,CAAC,EAAE,EAAE;MACvC,IAAI,MAAMD,OAAO,CAACC,CAAC,CAAC,CAACV,QAAQ,EAAE,EAAE;QAC/B,OAAOS,OAAO,CAACC,CAAC,CAAC;AACnB,MAAA;AACF,IAAA;AACA,IAAA,OAAO,IAAI;AACb,EAAA;;;;;"}
{"version":3,"file":"sort-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/sort/testing/sort-header-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/sort/testing/sort-harness.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\nimport {ComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {SortDirection} from '../../sort';\nimport {SortHeaderHarnessFilters} from './sort-harness-filters';\n\n/** Harness for interacting with a standard Angular Material sort header in tests. */\nexport class MatSortHeaderHarness extends ComponentHarness {\n static hostSelector = '.mat-sort-header';\n private _container = this.locatorFor('.mat-sort-header-container');\n\n /**\n * Gets a `HarnessPredicate` that can be used to\n * search for a sort header with specific attributes.\n */\n static with(options: SortHeaderHarnessFilters = {}): HarnessPredicate<MatSortHeaderHarness> {\n return new HarnessPredicate(MatSortHeaderHarness, options)\n .addOption('label', options.label, (harness, label) =>\n HarnessPredicate.stringMatches(harness.getLabel(), label),\n )\n .addOption('sortDirection', options.sortDirection, (harness, sortDirection) => {\n return HarnessPredicate.stringMatches(harness.getSortDirection(), sortDirection);\n });\n }\n\n /** Gets the label of the sort header. */\n async getLabel(): Promise<string> {\n return (await this._container()).text();\n }\n\n /** Gets the sorting direction of the header. */\n async getSortDirection(): Promise<SortDirection> {\n const host = await this.host();\n const ariaSort = await host.getAttribute('aria-sort');\n\n if (ariaSort === 'ascending') {\n return 'asc';\n } else if (ariaSort === 'descending') {\n return 'desc';\n }\n\n return '';\n }\n\n /** Gets whether the sort header is currently being sorted by. */\n async isActive(): Promise<boolean> {\n return !!(await this.getSortDirection());\n }\n\n /** Whether the sort header is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).hasClass('mat-sort-header-disabled');\n }\n\n /** Clicks the header to change its sorting direction. Only works if the header is enabled. */\n async click(): Promise<void> {\n return (await this.host()).click();\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 {ComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {SortHarnessFilters, SortHeaderHarnessFilters} from './sort-harness-filters';\nimport {MatSortHeaderHarness} from './sort-header-harness';\n\n/** Harness for interacting with a standard `mat-sort` in tests. */\nexport class MatSortHarness extends ComponentHarness {\n static hostSelector = '.mat-sort';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `mat-sort` with specific attributes.\n * @param options Options for narrowing the search.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: SortHarnessFilters = {}): HarnessPredicate<MatSortHarness> {\n return new HarnessPredicate(MatSortHarness, options);\n }\n\n /** Gets all of the sort headers in the `mat-sort`. */\n async getSortHeaders(filter: SortHeaderHarnessFilters = {}): Promise<MatSortHeaderHarness[]> {\n return this.locatorForAll(MatSortHeaderHarness.with(filter))();\n }\n\n /** Gets the selected header in the `mat-sort`. */\n async getActiveHeader(): Promise<MatSortHeaderHarness | null> {\n const headers = await this.getSortHeaders();\n for (let i = 0; i < headers.length; i++) {\n if (await headers[i].isActive()) {\n return headers[i];\n }\n }\n return null;\n }\n}\n"],"names":["MatSortHeaderHarness","ComponentHarness","hostSelector","_container","locatorFor","with","options","HarnessPredicate","addOption","label","harness","stringMatches","getLabel","sortDirection","getSortDirection","text","host","ariaSort","getAttribute","isActive","isDisabled","hasClass","click","MatSortHarness","getSortHeaders","filter","locatorForAll","getActiveHeader","headers","i","length"],"mappings":";;AAaM,MAAOA,oBAAqB,SAAQC,gBAAgB,CAAA;EACxD,OAAOC,YAAY,GAAG,kBAAkB;AAChCC,EAAAA,UAAU,GAAG,IAAI,CAACC,UAAU,CAAC,4BAA4B,CAAC;AAMlE,EAAA,OAAOC,IAAIA,CAACC,OAAA,GAAoC,EAAE,EAAA;IAChD,OAAO,IAAIC,gBAAgB,CAACP,oBAAoB,EAAEM,OAAO,CAAA,CACtDE,SAAS,CAAC,OAAO,EAAEF,OAAO,CAACG,KAAK,EAAE,CAACC,OAAO,EAAED,KAAK,KAChDF,gBAAgB,CAACI,aAAa,CAACD,OAAO,CAACE,QAAQ,EAAE,EAAEH,KAAK,CAAC,CAAA,CAE1DD,SAAS,CAAC,eAAe,EAAEF,OAAO,CAACO,aAAa,EAAE,CAACH,OAAO,EAAEG,aAAa,KAAI;MAC5E,OAAON,gBAAgB,CAACI,aAAa,CAACD,OAAO,CAACI,gBAAgB,EAAE,EAAED,aAAa,CAAC;AAClF,IAAA,CAAC,CAAC;AACN,EAAA;EAGA,MAAMD,QAAQA,GAAA;IACZ,OAAO,CAAC,MAAM,IAAI,CAACT,UAAU,EAAE,EAAEY,IAAI,EAAE;AACzC,EAAA;EAGA,MAAMD,gBAAgBA,GAAA;AACpB,IAAA,MAAME,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;IAC9B,MAAMC,QAAQ,GAAG,MAAMD,IAAI,CAACE,YAAY,CAAC,WAAW,CAAC;IAErD,IAAID,QAAQ,KAAK,WAAW,EAAE;AAC5B,MAAA,OAAO,KAAK;AACd,IAAA,CAAA,MAAO,IAAIA,QAAQ,KAAK,YAAY,EAAE;AACpC,MAAA,OAAO,MAAM;AACf,IAAA;AAEA,IAAA,OAAO,EAAE;AACX,EAAA;EAGA,MAAME,QAAQA,GAAA;IACZ,OAAO,CAAC,EAAE,MAAM,IAAI,CAACL,gBAAgB,EAAE,CAAC;AAC1C,EAAA;EAGA,MAAMM,UAAUA,GAAA;IACd,OAAO,CAAC,MAAM,IAAI,CAACJ,IAAI,EAAE,EAAEK,QAAQ,CAAC,0BAA0B,CAAC;AACjE,EAAA;EAGA,MAAMC,KAAKA,GAAA;IACT,OAAO,CAAC,MAAM,IAAI,CAACN,IAAI,EAAE,EAAEM,KAAK,EAAE;AACpC,EAAA;;;AClDI,MAAOC,cAAe,SAAQtB,gBAAgB,CAAA;EAClD,OAAOC,YAAY,GAAG,WAAW;AAOjC,EAAA,OAAOG,IAAIA,CAACC,OAAA,GAA8B,EAAE,EAAA;AAC1C,IAAA,OAAO,IAAIC,gBAAgB,CAACgB,cAAc,EAAEjB,OAAO,CAAC;AACtD,EAAA;AAGA,EAAA,MAAMkB,cAAcA,CAACC,MAAA,GAAmC,EAAE,EAAA;AACxD,IAAA,OAAO,IAAI,CAACC,aAAa,CAAC1B,oBAAoB,CAACK,IAAI,CAACoB,MAAM,CAAC,CAAC,EAAE;AAChE,EAAA;EAGA,MAAME,eAAeA,GAAA;AACnB,IAAA,MAAMC,OAAO,GAAG,MAAM,IAAI,CAACJ,cAAc,EAAE;AAC3C,IAAA,KAAK,IAAIK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,OAAO,CAACE,MAAM,EAAED,CAAC,EAAE,EAAE;MACvC,IAAI,MAAMD,OAAO,CAACC,CAAC,CAAC,CAACV,QAAQ,EAAE,EAAE;QAC/B,OAAOS,OAAO,CAACC,CAAC,CAAC;AACnB,MAAA;AACF,IAAA;AACA,IAAA,OAAO,IAAI;AACb,EAAA;;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"sort.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sort/sort-errors.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sort/sort.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sort/sort-header.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sort/sort-header.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sort/sort-module.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sort/sort-header-intl.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/** @docs-private */\nexport function getSortDuplicateSortableIdError(id: string): Error {\n return Error(`Cannot have two MatSortables with the same id (${id}).`);\n}\n\n/** @docs-private */\nexport function getSortHeaderNotContainedWithinSortError(): Error {\n return Error(`MatSortHeader must be placed within a parent element with the MatSort directive.`);\n}\n\n/** @docs-private */\nexport function getSortHeaderMissingIdError(): Error {\n return Error(`MatSortHeader must be provided with a unique id.`);\n}\n\n/** @docs-private */\nexport function getSortInvalidDirectionError(direction: string): Error {\n return Error(`${direction} is not a valid sort direction ('asc' or 'desc').`);\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 EventEmitter,\n Inject,\n InjectionToken,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n booleanAttribute,\n} from '@angular/core';\nimport {Observable, ReplaySubject, Subject} from 'rxjs';\nimport {SortDirection} from './sort-direction';\nimport {\n getSortDuplicateSortableIdError,\n getSortHeaderMissingIdError,\n getSortInvalidDirectionError,\n} from './sort-errors';\n\n/** Position of the arrow that displays when sorted. */\nexport type SortHeaderArrowPosition = 'before' | 'after';\n\n/** Interface for a directive that holds sorting state consumed by `MatSortHeader`. */\nexport interface MatSortable {\n /** The id of the column being sorted. */\n id: string;\n\n /** Starting sort direction. */\n start: SortDirection;\n\n /** Whether to disable clearing the sorting state. */\n disableClear: boolean;\n}\n\n/** The current sort state. */\nexport interface Sort {\n /** The id of the column being sorted. */\n active: string;\n\n /** The sort direction. */\n direction: SortDirection;\n}\n\n/** Default options for `mat-sort`. */\nexport interface MatSortDefaultOptions {\n /** Whether to disable clearing the sorting state. */\n disableClear?: boolean;\n /** Position of the arrow that displays when sorted. */\n arrowPosition?: SortHeaderArrowPosition;\n}\n\n/** Injection token to be used to override the default options for `mat-sort`. */\nexport const MAT_SORT_DEFAULT_OPTIONS = new InjectionToken<MatSortDefaultOptions>(\n 'MAT_SORT_DEFAULT_OPTIONS',\n);\n\n/** Container for MatSortables to manage the sort state and provide default sort parameters. */\n@Directive({\n selector: '[matSort]',\n exportAs: 'matSort',\n host: {\n 'class': 'mat-sort',\n },\n})\nexport class MatSort implements OnChanges, OnDestroy, OnInit {\n private _initializedStream = new ReplaySubject<void>(1);\n\n /** Collection of all registered sortables that this directive manages. */\n sortables = new Map<string, MatSortable>();\n\n /** Used to notify any child components listening to state changes. */\n readonly _stateChanges = new Subject<void>();\n\n /** The id of the most recently sorted MatSortable. */\n @Input('matSortActive') active!: string;\n\n /**\n * The direction to set when an MatSortable is initially sorted.\n * May be overridden by the MatSortable's sort start.\n */\n @Input('matSortStart') start: SortDirection = 'asc';\n\n /** The sort direction of the currently active MatSortable. */\n @Input('matSortDirection')\n get direction(): SortDirection {\n return this._direction;\n }\n set direction(direction: SortDirection) {\n if (\n direction &&\n direction !== 'asc' &&\n direction !== 'desc' &&\n (typeof ngDevMode === 'undefined' || ngDevMode)\n ) {\n throw getSortInvalidDirectionError(direction);\n }\n this._direction = direction;\n }\n private _direction: SortDirection = '';\n\n /**\n * Whether to disable the user from clearing the sort by finishing the sort direction cycle.\n * May be overridden by the MatSortable's disable clear input.\n */\n @Input({alias: 'matSortDisableClear', transform: booleanAttribute})\n disableClear!: boolean;\n\n /** Whether the sortable is disabled. */\n @Input({alias: 'matSortDisabled', transform: booleanAttribute})\n disabled: boolean = false;\n\n /** Event emitted when the user changes either the active sort or sort direction. */\n @Output('matSortChange') readonly sortChange: EventEmitter<Sort> = new EventEmitter<Sort>();\n\n /** Emits when the paginator is initialized. */\n initialized: Observable<void> = this._initializedStream;\n\n constructor(\n @Optional()\n @Inject(MAT_SORT_DEFAULT_OPTIONS)\n private _defaultOptions?: MatSortDefaultOptions,\n ) {}\n\n /**\n * Register function to be used by the contained MatSortables. Adds the MatSortable to the\n * collection of MatSortables.\n */\n register(sortable: MatSortable): void {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!sortable.id) {\n throw getSortHeaderMissingIdError();\n }\n\n if (this.sortables.has(sortable.id)) {\n throw getSortDuplicateSortableIdError(sortable.id);\n }\n }\n\n this.sortables.set(sortable.id, sortable);\n }\n\n /**\n * Unregister function to be used by the contained MatSortables. Removes the MatSortable from the\n * collection of contained MatSortables.\n */\n deregister(sortable: MatSortable): void {\n this.sortables.delete(sortable.id);\n }\n\n /** Sets the active sort id and determines the new sort direction. */\n sort(sortable: MatSortable): void {\n if (this.active != sortable.id) {\n this.active = sortable.id;\n this.direction = sortable.start ? sortable.start : this.start;\n } else {\n this.direction = this.getNextSortDirection(sortable);\n }\n\n this.sortChange.emit({active: this.active, direction: this.direction});\n }\n\n /** Returns the next sort direction of the active sortable, checking for potential overrides. */\n getNextSortDirection(sortable: MatSortable): SortDirection {\n if (!sortable) {\n return '';\n }\n\n // Get the sort direction cycle with the potential sortable overrides.\n const disableClear =\n sortable?.disableClear ?? this.disableClear ?? !!this._defaultOptions?.disableClear;\n let sortDirectionCycle = getSortDirectionCycle(sortable.start || this.start, disableClear);\n\n // Get and return the next direction in the cycle\n let nextDirectionIndex = sortDirectionCycle.indexOf(this.direction) + 1;\n if (nextDirectionIndex >= sortDirectionCycle.length) {\n nextDirectionIndex = 0;\n }\n return sortDirectionCycle[nextDirectionIndex];\n }\n\n ngOnInit() {\n this._initializedStream.next();\n }\n\n ngOnChanges() {\n this._stateChanges.next();\n }\n\n ngOnDestroy() {\n this._stateChanges.complete();\n this._initializedStream.complete();\n }\n}\n\n/** Returns the sort direction cycle to use given the provided parameters of order and clear. */\nfunction getSortDirectionCycle(start: SortDirection, disableClear: boolean): SortDirection[] {\n let sortOrder: SortDirection[] = ['asc', 'desc'];\n if (start == 'desc') {\n sortOrder.reverse();\n }\n if (!disableClear) {\n sortOrder.push('');\n }\n\n return sortOrder;\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 {AriaDescriber, FocusMonitor} from '@angular/cdk/a11y';\nimport {ENTER, SPACE} from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n signal,\n ChangeDetectorRef,\n} from '@angular/core';\nimport {_CdkPrivateStyleLoader} from '@angular/cdk/private';\nimport {CdkColumnDef} from '@angular/cdk/table';\nimport {merge, Subscription} from 'rxjs';\nimport {\n MAT_SORT_DEFAULT_OPTIONS,\n MatSort,\n MatSortable,\n MatSortDefaultOptions,\n SortHeaderArrowPosition,\n} from './sort';\nimport {SortDirection} from './sort-direction';\nimport {getSortHeaderNotContainedWithinSortError} from './sort-errors';\nimport {_animationsDisabled, _StructuralStylesLoader} from '../core';\n\n/**\n * Valid positions for the arrow to be in for its opacity and translation. If the state is a\n * sort direction, the position of the arrow will be above/below and opacity 0. If the state is\n * hint, the arrow will be in the center with a slight opacity. Active state means the arrow will\n * be fully opaque in the center.\n *\n * @docs-private\n * @deprecated No longer being used, to be removed.\n * @breaking-change 21.0.0\n */\nexport type ArrowViewState = SortDirection | 'hint' | 'active';\n\n/**\n * States describing the arrow's animated position (animating fromState to toState).\n * If the fromState is not defined, there will be no animated transition to the toState.\n * @docs-private\n * @deprecated No longer being used, to be removed.\n * @breaking-change 21.0.0\n */\nexport interface ArrowViewStateTransition {\n fromState?: ArrowViewState;\n toState?: ArrowViewState;\n}\n\n/**\n * Applies sorting behavior (click to change sort) and styles to an element, including an\n * arrow to display the current sort direction.\n *\n * Must be provided with an id and contained within a parent MatSort directive.\n *\n * If used on header cells in a CdkTable, it will automatically default its id from its containing\n * column definition.\n */\n@Component({\n selector: '[mat-sort-header]',\n exportAs: 'matSortHeader',\n templateUrl: 'sort-header.html',\n styleUrl: 'sort-header.css',\n host: {\n 'class': 'mat-sort-header',\n '(click)': '_toggleOnInteraction()',\n '(keydown)': '_handleKeydown($event)',\n '(mouseleave)': '_recentlyCleared.set(null)',\n '[attr.aria-sort]': '_getAriaSortAttribute()',\n '[class.mat-sort-header-disabled]': '_isDisabled()',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatSortHeader implements MatSortable, OnDestroy, OnInit, AfterViewInit {\n protected _sort = inject(MatSort, {optional: true})!;\n private _columnDef = inject(CdkColumnDef, {optional: true});\n private _changeDetectorRef = inject(ChangeDetectorRef);\n private _focusMonitor = inject(FocusMonitor);\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _ariaDescriber = inject(AriaDescriber, {optional: true});\n private _renderChanges: Subscription | undefined;\n protected _animationsDisabled = _animationsDisabled();\n\n /**\n * Indicates which state was just cleared from the sort header.\n * Will be reset on the next interaction. Used for coordinating animations.\n */\n protected _recentlyCleared = signal<SortDirection | null>(null);\n\n /**\n * The element with role=\"button\" inside this component's view. We need this\n * in order to apply a description with AriaDescriber.\n */\n private _sortButton!: HTMLElement;\n\n /**\n * ID of this sort header. If used within the context of a CdkColumnDef, this will default to\n * the column's name.\n */\n @Input('mat-sort-header') id!: string;\n\n /** Sets the position of the arrow that displays when sorted. */\n @Input() arrowPosition: SortHeaderArrowPosition = 'after';\n\n /** Overrides the sort start value of the containing MatSort for this MatSortable. */\n @Input() start!: SortDirection;\n\n /** whether the sort header is disabled. */\n @Input({transform: booleanAttribute})\n disabled: boolean = false;\n\n /**\n * Description applied to MatSortHeader's button element with aria-describedby. This text should\n * describe the action that will occur when the user clicks the sort header.\n */\n @Input()\n get sortActionDescription(): string {\n return this._sortActionDescription;\n }\n set sortActionDescription(value: string) {\n this._updateSortActionDescription(value);\n }\n // Default the action description to \"Sort\" because it's better than nothing.\n // Without a description, the button's label comes from the sort header text content,\n // which doesn't give any indication that it performs a sorting operation.\n private _sortActionDescription: string = 'Sort';\n\n /** Overrides the disable clear value of the containing MatSort for this MatSortable. */\n @Input({transform: booleanAttribute})\n disableClear!: boolean;\n\n constructor(...args: unknown[]);\n\n constructor() {\n inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);\n const defaultOptions = inject<MatSortDefaultOptions>(MAT_SORT_DEFAULT_OPTIONS, {\n optional: true,\n });\n\n // Note that we use a string token for the `_columnDef`, because the value is provided both by\n // `material/table` and `cdk/table` and we can't have the CDK depending on Material,\n // and we want to avoid having the sort header depending on the CDK table because\n // of this single reference.\n if (!this._sort && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getSortHeaderNotContainedWithinSortError();\n }\n\n if (defaultOptions?.arrowPosition) {\n this.arrowPosition = defaultOptions?.arrowPosition;\n }\n }\n\n ngOnInit() {\n if (!this.id && this._columnDef) {\n this.id = this._columnDef.name;\n }\n\n this._sort.register(this);\n this._renderChanges = merge(this._sort._stateChanges, this._sort.sortChange).subscribe(() =>\n this._changeDetectorRef.markForCheck(),\n );\n this._sortButton = this._elementRef.nativeElement.querySelector('.mat-sort-header-container')!;\n this._updateSortActionDescription(this._sortActionDescription);\n }\n\n ngAfterViewInit() {\n // We use the focus monitor because we also want to style\n // things differently based on the focus origin.\n this._focusMonitor.monitor(this._elementRef, true).subscribe(() => {\n // We need the delay here, because we can trigger a signal write error if the header\n // has a signal bound to `disabled` which causes it to be blurred (see #31723.)\n Promise.resolve().then(() => this._recentlyCleared.set(null));\n });\n }\n\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n this._sort.deregister(this);\n this._renderChanges?.unsubscribe();\n\n if (this._sortButton) {\n this._ariaDescriber?.removeDescription(this._sortButton, this._sortActionDescription);\n }\n }\n\n /** Triggers the sort on this sort header and removes the indicator hint. */\n _toggleOnInteraction() {\n if (!this._isDisabled()) {\n const wasSorted = this._isSorted();\n const prevDirection = this._sort.direction;\n this._sort.sort(this);\n this._recentlyCleared.set(wasSorted && !this._isSorted() ? prevDirection : null);\n }\n }\n\n _handleKeydown(event: KeyboardEvent) {\n if (event.keyCode === SPACE || event.keyCode === ENTER) {\n event.preventDefault();\n this._toggleOnInteraction();\n }\n }\n\n /** Whether this MatSortHeader is currently sorted in either ascending or descending order. */\n _isSorted() {\n return (\n this._sort.active == this.id &&\n (this._sort.direction === 'asc' || this._sort.direction === 'desc')\n );\n }\n\n _isDisabled() {\n return this._sort.disabled || this.disabled;\n }\n\n /**\n * Gets the aria-sort attribute that should be applied to this sort header. If this header\n * is not sorted, returns null so that the attribute is removed from the host element. Aria spec\n * says that the aria-sort property should only be present on one header at a time, so removing\n * ensures this is true.\n */\n _getAriaSortAttribute() {\n if (!this._isSorted()) {\n return 'none';\n }\n\n return this._sort.direction == 'asc' ? 'ascending' : 'descending';\n }\n\n /** Whether the arrow inside the sort header should be rendered. */\n _renderArrow() {\n return !this._isDisabled() || this._isSorted();\n }\n\n private _updateSortActionDescription(newDescription: string) {\n // We use AriaDescriber for the sort button instead of setting an `aria-label` because some\n // screen readers (notably VoiceOver) will read both the column header *and* the button's label\n // for every *cell* in the table, creating a lot of unnecessary noise.\n\n // If _sortButton is undefined, the component hasn't been initialized yet so there's\n // nothing to update in the DOM.\n if (this._sortButton) {\n // removeDescription will no-op if there is no existing message.\n // TODO(jelbourn): remove optional chaining when AriaDescriber is required.\n this._ariaDescriber?.removeDescription(this._sortButton, this._sortActionDescription);\n this._ariaDescriber?.describe(this._sortButton, newDescription);\n }\n\n this._sortActionDescription = newDescription;\n }\n}\n","<!--\n We set the `tabindex` on an element inside the table header, rather than the header itself,\n because of a bug in NVDA where having a `tabindex` on a `th` breaks keyboard navigation in the\n table (see https://github.com/nvaccess/nvda/issues/7718). This allows for the header to both\n be focusable, and have screen readers read out its `aria-sort` state. We prefer this approach\n over having a button with an `aria-label` inside the header, because the button's `aria-label`\n will be read out as the user is navigating the table's cell (see #13012).\n\n The approach is based off of: https://dequeuniversity.com/library/aria/tables/sf-sortable-grid\n-->\n<div class=\"mat-sort-header-container mat-focus-indicator\"\n [class.mat-sort-header-sorted]=\"_isSorted()\"\n [class.mat-sort-header-position-before]=\"arrowPosition === 'before'\"\n [class.mat-sort-header-descending]=\"_sort.direction === 'desc'\"\n [class.mat-sort-header-ascending]=\"_sort.direction === 'asc'\"\n [class.mat-sort-header-recently-cleared-ascending]=\"_recentlyCleared() === 'asc'\"\n [class.mat-sort-header-recently-cleared-descending]=\"_recentlyCleared() === 'desc'\"\n [class.mat-sort-header-animations-disabled]=\"_animationsDisabled\"\n [attr.tabindex]=\"_isDisabled() ? null : 0\"\n [attr.role]=\"_isDisabled() ? null : 'button'\">\n\n <!--\n TODO(crisbeto): this div isn't strictly necessary, but we have to keep it due to a large\n number of screenshot diff failures. It should be removed eventually. Note that the difference\n isn't visible with a shorter header, but once it breaks up into multiple lines, this element\n causes it to be center-aligned, whereas removing it will keep the text to the left.\n -->\n <div class=\"mat-sort-header-content\">\n <ng-content></ng-content>\n </div>\n\n <!-- Disable animations while a current animation is running -->\n @if (_renderArrow()) {\n <div class=\"mat-sort-header-arrow\">\n <ng-content select=\"[matSortHeaderIcon]\">\n <svg viewBox=\"0 -960 960 960\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M440-240v-368L296-464l-56-56 240-240 240 240-56 56-144-144v368h-80Z\"/>\n </svg>\n </ng-content>\n </div>\n }\n</div>\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 {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\nimport {MatSortHeader} from './sort-header';\nimport {MatSort} from './sort';\n\n@NgModule({\n imports: [MatSort, MatSortHeader],\n exports: [MatSort, MatSortHeader, BidiModule],\n})\nexport class MatSortModule {}\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 {Injectable} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n/**\n * To modify the labels and text displayed, create a new instance of MatSortHeaderIntl and\n * include it in a custom provider.\n *\n * @deprecated No longer used, will be removed.\n * @breaking-change 23.0.0\n * @docs-private\n */\n@Injectable({providedIn: 'root'})\nexport class MatSortHeaderIntl {\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n readonly changes: Subject<void> = new Subject<void>();\n}\n"],"names":["getSortDuplicateSortableIdError","id","Error","getSortHeaderNotContainedWithinSortError","getSortHeaderMissingIdError","getSortInvalidDirectionError","direction","MAT_SORT_DEFAULT_OPTIONS","InjectionToken","MatSort","_defaultOptions","_initializedStream","ReplaySubject","sortables","Map","_stateChanges","Subject","active","start","_direction","ngDevMode","disableClear","disabled","sortChange","EventEmitter","initialized","constructor","register","sortable","has","set","deregister","delete","sort","getNextSortDirection","emit","sortDirectionCycle","getSortDirectionCycle","nextDirectionIndex","indexOf","length","ngOnInit","next","ngOnChanges","ngOnDestroy","complete","ɵfac","i0","ɵɵngDeclareFactory","minVersion","version","ngImport","type","optional","target","ɵɵFactoryTarget","Directive","isStandalone","selector","inputs","booleanAttribute","outputs","host","classAttribute","exportAs","usesOnChanges","decorators","args","Optional","Inject","Input","alias","transform","Output","sortOrder","reverse","push","MatSortHeader","_sort","inject","_columnDef","CdkColumnDef","_changeDetectorRef","ChangeDetectorRef","_focusMonitor","FocusMonitor","_elementRef","ElementRef","_ariaDescriber","AriaDescriber","_renderChanges","_animationsDisabled","_recentlyCleared","signal","_sortButton","arrowPosition","sortActionDescription","_sortActionDescription","value","_updateSortActionDescription","_CdkPrivateStyleLoader","load","_StructuralStylesLoader","defaultOptions","name","merge","subscribe","markForCheck","nativeElement","querySelector","ngAfterViewInit","monitor","Promise","resolve","then","stopMonitoring","unsubscribe","removeDescription","_toggleOnInteraction","_isDisabled","wasSorted","_isSorted","prevDirection","_handleKeydown","event","keyCode","SPACE","ENTER","preventDefault","_getAriaSortAttribute","_renderArrow","newDescription","describe","deps","Component","ɵcmp","ɵɵngDeclareComponent","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","template","MatSortModule","NgModule","imports","BidiModule","ɵinj","ɵɵngDeclareInjector","exports","MatSortHeaderIntl","changes","Injectable","ɵprov","ɵɵngDeclareInjectable","providedIn"],"mappings":"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"}
{"version":3,"file":"sort.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/sort/sort-errors.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/sort/sort.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/sort/sort-header.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/sort/sort-header.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/sort/sort-module.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/sort/sort-header-intl.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/** @docs-private */\nexport function getSortDuplicateSortableIdError(id: string): Error {\n return Error(`Cannot have two MatSortables with the same id (${id}).`);\n}\n\n/** @docs-private */\nexport function getSortHeaderNotContainedWithinSortError(): Error {\n return Error(`MatSortHeader must be placed within a parent element with the MatSort directive.`);\n}\n\n/** @docs-private */\nexport function getSortHeaderMissingIdError(): Error {\n return Error(`MatSortHeader must be provided with a unique id.`);\n}\n\n/** @docs-private */\nexport function getSortInvalidDirectionError(direction: string): Error {\n return Error(`${direction} is not a valid sort direction ('asc' or 'desc').`);\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 EventEmitter,\n Inject,\n InjectionToken,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n booleanAttribute,\n} from '@angular/core';\nimport {Observable, ReplaySubject, Subject} from 'rxjs';\nimport {SortDirection} from './sort-direction';\nimport {\n getSortDuplicateSortableIdError,\n getSortHeaderMissingIdError,\n getSortInvalidDirectionError,\n} from './sort-errors';\n\n/** Position of the arrow that displays when sorted. */\nexport type SortHeaderArrowPosition = 'before' | 'after';\n\n/** Interface for a directive that holds sorting state consumed by `MatSortHeader`. */\nexport interface MatSortable {\n /** The id of the column being sorted. */\n id: string;\n\n /** Starting sort direction. */\n start: SortDirection;\n\n /** Whether to disable clearing the sorting state. */\n disableClear: boolean;\n}\n\n/** The current sort state. */\nexport interface Sort {\n /** The id of the column being sorted. */\n active: string;\n\n /** The sort direction. */\n direction: SortDirection;\n}\n\n/** Default options for `mat-sort`. */\nexport interface MatSortDefaultOptions {\n /** Whether to disable clearing the sorting state. */\n disableClear?: boolean;\n /** Position of the arrow that displays when sorted. */\n arrowPosition?: SortHeaderArrowPosition;\n}\n\n/** Injection token to be used to override the default options for `mat-sort`. */\nexport const MAT_SORT_DEFAULT_OPTIONS = new InjectionToken<MatSortDefaultOptions>(\n 'MAT_SORT_DEFAULT_OPTIONS',\n);\n\n/** Container for MatSortables to manage the sort state and provide default sort parameters. */\n@Directive({\n selector: '[matSort]',\n exportAs: 'matSort',\n host: {\n 'class': 'mat-sort',\n },\n})\nexport class MatSort implements OnChanges, OnDestroy, OnInit {\n private _initializedStream = new ReplaySubject<void>(1);\n\n /** Collection of all registered sortables that this directive manages. */\n sortables = new Map<string, MatSortable>();\n\n /** Used to notify any child components listening to state changes. */\n readonly _stateChanges = new Subject<void>();\n\n /** The id of the most recently sorted MatSortable. */\n @Input('matSortActive') active!: string;\n\n /**\n * The direction to set when an MatSortable is initially sorted.\n * May be overridden by the MatSortable's sort start.\n */\n @Input('matSortStart') start: SortDirection = 'asc';\n\n /** The sort direction of the currently active MatSortable. */\n @Input('matSortDirection')\n get direction(): SortDirection {\n return this._direction;\n }\n set direction(direction: SortDirection) {\n if (\n direction &&\n direction !== 'asc' &&\n direction !== 'desc' &&\n (typeof ngDevMode === 'undefined' || ngDevMode)\n ) {\n throw getSortInvalidDirectionError(direction);\n }\n this._direction = direction;\n }\n private _direction: SortDirection = '';\n\n /**\n * Whether to disable the user from clearing the sort by finishing the sort direction cycle.\n * May be overridden by the MatSortable's disable clear input.\n */\n @Input({alias: 'matSortDisableClear', transform: booleanAttribute})\n disableClear!: boolean;\n\n /** Whether the sortable is disabled. */\n @Input({alias: 'matSortDisabled', transform: booleanAttribute})\n disabled: boolean = false;\n\n /** Event emitted when the user changes either the active sort or sort direction. */\n @Output('matSortChange') readonly sortChange: EventEmitter<Sort> = new EventEmitter<Sort>();\n\n /** Emits when the paginator is initialized. */\n initialized: Observable<void> = this._initializedStream;\n\n constructor(\n @Optional()\n @Inject(MAT_SORT_DEFAULT_OPTIONS)\n private _defaultOptions?: MatSortDefaultOptions,\n ) {}\n\n /**\n * Register function to be used by the contained MatSortables. Adds the MatSortable to the\n * collection of MatSortables.\n */\n register(sortable: MatSortable): void {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!sortable.id) {\n throw getSortHeaderMissingIdError();\n }\n\n if (this.sortables.has(sortable.id)) {\n throw getSortDuplicateSortableIdError(sortable.id);\n }\n }\n\n this.sortables.set(sortable.id, sortable);\n }\n\n /**\n * Unregister function to be used by the contained MatSortables. Removes the MatSortable from the\n * collection of contained MatSortables.\n */\n deregister(sortable: MatSortable): void {\n this.sortables.delete(sortable.id);\n }\n\n /** Sets the active sort id and determines the new sort direction. */\n sort(sortable: MatSortable): void {\n if (this.active != sortable.id) {\n this.active = sortable.id;\n this.direction = sortable.start ? sortable.start : this.start;\n } else {\n this.direction = this.getNextSortDirection(sortable);\n }\n\n this.sortChange.emit({active: this.active, direction: this.direction});\n }\n\n /** Returns the next sort direction of the active sortable, checking for potential overrides. */\n getNextSortDirection(sortable: MatSortable): SortDirection {\n if (!sortable) {\n return '';\n }\n\n // Get the sort direction cycle with the potential sortable overrides.\n const disableClear =\n sortable?.disableClear ?? this.disableClear ?? !!this._defaultOptions?.disableClear;\n let sortDirectionCycle = getSortDirectionCycle(sortable.start || this.start, disableClear);\n\n // Get and return the next direction in the cycle\n let nextDirectionIndex = sortDirectionCycle.indexOf(this.direction) + 1;\n if (nextDirectionIndex >= sortDirectionCycle.length) {\n nextDirectionIndex = 0;\n }\n return sortDirectionCycle[nextDirectionIndex];\n }\n\n ngOnInit() {\n this._initializedStream.next();\n }\n\n ngOnChanges() {\n this._stateChanges.next();\n }\n\n ngOnDestroy() {\n this._stateChanges.complete();\n this._initializedStream.complete();\n }\n}\n\n/** Returns the sort direction cycle to use given the provided parameters of order and clear. */\nfunction getSortDirectionCycle(start: SortDirection, disableClear: boolean): SortDirection[] {\n let sortOrder: SortDirection[] = ['asc', 'desc'];\n if (start == 'desc') {\n sortOrder.reverse();\n }\n if (!disableClear) {\n sortOrder.push('');\n }\n\n return sortOrder;\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 {AriaDescriber, FocusMonitor} from '@angular/cdk/a11y';\nimport {ENTER, SPACE} from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n signal,\n ChangeDetectorRef,\n} from '@angular/core';\nimport {_CdkPrivateStyleLoader} from '@angular/cdk/private';\nimport {CdkColumnDef} from '@angular/cdk/table';\nimport {merge, Subscription} from 'rxjs';\nimport {\n MAT_SORT_DEFAULT_OPTIONS,\n MatSort,\n MatSortable,\n MatSortDefaultOptions,\n SortHeaderArrowPosition,\n} from './sort';\nimport {SortDirection} from './sort-direction';\nimport {getSortHeaderNotContainedWithinSortError} from './sort-errors';\nimport {_animationsDisabled, _StructuralStylesLoader} from '../core';\n\n/**\n * Valid positions for the arrow to be in for its opacity and translation. If the state is a\n * sort direction, the position of the arrow will be above/below and opacity 0. If the state is\n * hint, the arrow will be in the center with a slight opacity. Active state means the arrow will\n * be fully opaque in the center.\n *\n * @docs-private\n * @deprecated No longer being used, to be removed.\n * @breaking-change 21.0.0\n */\nexport type ArrowViewState = SortDirection | 'hint' | 'active';\n\n/**\n * States describing the arrow's animated position (animating fromState to toState).\n * If the fromState is not defined, there will be no animated transition to the toState.\n * @docs-private\n * @deprecated No longer being used, to be removed.\n * @breaking-change 21.0.0\n */\nexport interface ArrowViewStateTransition {\n fromState?: ArrowViewState;\n toState?: ArrowViewState;\n}\n\n/**\n * Applies sorting behavior (click to change sort) and styles to an element, including an\n * arrow to display the current sort direction.\n *\n * Must be provided with an id and contained within a parent MatSort directive.\n *\n * If used on header cells in a CdkTable, it will automatically default its id from its containing\n * column definition.\n */\n@Component({\n selector: '[mat-sort-header]',\n exportAs: 'matSortHeader',\n templateUrl: 'sort-header.html',\n styleUrl: 'sort-header.css',\n host: {\n 'class': 'mat-sort-header',\n '(click)': '_toggleOnInteraction()',\n '(keydown)': '_handleKeydown($event)',\n '(mouseleave)': '_recentlyCleared.set(null)',\n '[attr.aria-sort]': '_getAriaSortAttribute()',\n '[class.mat-sort-header-disabled]': '_isDisabled()',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatSortHeader implements MatSortable, OnDestroy, OnInit, AfterViewInit {\n protected _sort = inject(MatSort, {optional: true})!;\n private _columnDef = inject(CdkColumnDef, {optional: true});\n private _changeDetectorRef = inject(ChangeDetectorRef);\n private _focusMonitor = inject(FocusMonitor);\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _ariaDescriber = inject(AriaDescriber, {optional: true});\n private _renderChanges: Subscription | undefined;\n protected _animationsDisabled = _animationsDisabled();\n\n /**\n * Indicates which state was just cleared from the sort header.\n * Will be reset on the next interaction. Used for coordinating animations.\n */\n protected _recentlyCleared = signal<SortDirection | null>(null);\n\n /**\n * The element with role=\"button\" inside this component's view. We need this\n * in order to apply a description with AriaDescriber.\n */\n private _sortButton!: HTMLElement;\n\n /**\n * ID of this sort header. If used within the context of a CdkColumnDef, this will default to\n * the column's name.\n */\n @Input('mat-sort-header') id!: string;\n\n /** Sets the position of the arrow that displays when sorted. */\n @Input() arrowPosition: SortHeaderArrowPosition = 'after';\n\n /** Overrides the sort start value of the containing MatSort for this MatSortable. */\n @Input() start!: SortDirection;\n\n /** whether the sort header is disabled. */\n @Input({transform: booleanAttribute})\n disabled: boolean = false;\n\n /**\n * Description applied to MatSortHeader's button element with aria-describedby. This text should\n * describe the action that will occur when the user clicks the sort header.\n */\n @Input()\n get sortActionDescription(): string {\n return this._sortActionDescription;\n }\n set sortActionDescription(value: string) {\n this._updateSortActionDescription(value);\n }\n // Default the action description to \"Sort\" because it's better than nothing.\n // Without a description, the button's label comes from the sort header text content,\n // which doesn't give any indication that it performs a sorting operation.\n private _sortActionDescription: string = 'Sort';\n\n /** Overrides the disable clear value of the containing MatSort for this MatSortable. */\n @Input({transform: booleanAttribute})\n disableClear!: boolean;\n\n constructor(...args: unknown[]);\n\n constructor() {\n inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);\n const defaultOptions = inject<MatSortDefaultOptions>(MAT_SORT_DEFAULT_OPTIONS, {\n optional: true,\n });\n\n // Note that we use a string token for the `_columnDef`, because the value is provided both by\n // `material/table` and `cdk/table` and we can't have the CDK depending on Material,\n // and we want to avoid having the sort header depending on the CDK table because\n // of this single reference.\n if (!this._sort && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getSortHeaderNotContainedWithinSortError();\n }\n\n if (defaultOptions?.arrowPosition) {\n this.arrowPosition = defaultOptions?.arrowPosition;\n }\n }\n\n ngOnInit() {\n if (!this.id && this._columnDef) {\n this.id = this._columnDef.name;\n }\n\n this._sort.register(this);\n this._renderChanges = merge(this._sort._stateChanges, this._sort.sortChange).subscribe(() =>\n this._changeDetectorRef.markForCheck(),\n );\n this._sortButton = this._elementRef.nativeElement.querySelector('.mat-sort-header-container')!;\n this._updateSortActionDescription(this._sortActionDescription);\n }\n\n ngAfterViewInit() {\n // We use the focus monitor because we also want to style\n // things differently based on the focus origin.\n this._focusMonitor.monitor(this._elementRef, true).subscribe(() => {\n // We need the delay here, because we can trigger a signal write error if the header\n // has a signal bound to `disabled` which causes it to be blurred (see #31723.)\n Promise.resolve().then(() => this._recentlyCleared.set(null));\n });\n }\n\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n this._sort.deregister(this);\n this._renderChanges?.unsubscribe();\n\n if (this._sortButton) {\n this._ariaDescriber?.removeDescription(this._sortButton, this._sortActionDescription);\n }\n }\n\n /** Triggers the sort on this sort header and removes the indicator hint. */\n _toggleOnInteraction() {\n if (!this._isDisabled()) {\n const wasSorted = this._isSorted();\n const prevDirection = this._sort.direction;\n this._sort.sort(this);\n this._recentlyCleared.set(wasSorted && !this._isSorted() ? prevDirection : null);\n }\n }\n\n _handleKeydown(event: KeyboardEvent) {\n if (event.keyCode === SPACE || event.keyCode === ENTER) {\n event.preventDefault();\n this._toggleOnInteraction();\n }\n }\n\n /** Whether this MatSortHeader is currently sorted in either ascending or descending order. */\n _isSorted() {\n return (\n this._sort.active == this.id &&\n (this._sort.direction === 'asc' || this._sort.direction === 'desc')\n );\n }\n\n _isDisabled() {\n return this._sort.disabled || this.disabled;\n }\n\n /**\n * Gets the aria-sort attribute that should be applied to this sort header. If this header\n * is not sorted, returns null so that the attribute is removed from the host element. Aria spec\n * says that the aria-sort property should only be present on one header at a time, so removing\n * ensures this is true.\n */\n _getAriaSortAttribute() {\n if (!this._isSorted()) {\n return 'none';\n }\n\n return this._sort.direction == 'asc' ? 'ascending' : 'descending';\n }\n\n /** Whether the arrow inside the sort header should be rendered. */\n _renderArrow() {\n return !this._isDisabled() || this._isSorted();\n }\n\n private _updateSortActionDescription(newDescription: string) {\n // We use AriaDescriber for the sort button instead of setting an `aria-label` because some\n // screen readers (notably VoiceOver) will read both the column header *and* the button's label\n // for every *cell* in the table, creating a lot of unnecessary noise.\n\n // If _sortButton is undefined, the component hasn't been initialized yet so there's\n // nothing to update in the DOM.\n if (this._sortButton) {\n // removeDescription will no-op if there is no existing message.\n // TODO(jelbourn): remove optional chaining when AriaDescriber is required.\n this._ariaDescriber?.removeDescription(this._sortButton, this._sortActionDescription);\n this._ariaDescriber?.describe(this._sortButton, newDescription);\n }\n\n this._sortActionDescription = newDescription;\n }\n}\n","<!--\n We set the `tabindex` on an element inside the table header, rather than the header itself,\n because of a bug in NVDA where having a `tabindex` on a `th` breaks keyboard navigation in the\n table (see https://github.com/nvaccess/nvda/issues/7718). This allows for the header to both\n be focusable, and have screen readers read out its `aria-sort` state. We prefer this approach\n over having a button with an `aria-label` inside the header, because the button's `aria-label`\n will be read out as the user is navigating the table's cell (see #13012).\n\n The approach is based off of: https://dequeuniversity.com/library/aria/tables/sf-sortable-grid\n-->\n<div class=\"mat-sort-header-container mat-focus-indicator\"\n [class.mat-sort-header-sorted]=\"_isSorted()\"\n [class.mat-sort-header-position-before]=\"arrowPosition === 'before'\"\n [class.mat-sort-header-descending]=\"_sort.direction === 'desc'\"\n [class.mat-sort-header-ascending]=\"_sort.direction === 'asc'\"\n [class.mat-sort-header-recently-cleared-ascending]=\"_recentlyCleared() === 'asc'\"\n [class.mat-sort-header-recently-cleared-descending]=\"_recentlyCleared() === 'desc'\"\n [class.mat-sort-header-animations-disabled]=\"_animationsDisabled\"\n [attr.tabindex]=\"_isDisabled() ? null : 0\"\n [attr.role]=\"_isDisabled() ? null : 'button'\">\n\n <!--\n TODO(crisbeto): this div isn't strictly necessary, but we have to keep it due to a large\n number of screenshot diff failures. It should be removed eventually. Note that the difference\n isn't visible with a shorter header, but once it breaks up into multiple lines, this element\n causes it to be center-aligned, whereas removing it will keep the text to the left.\n -->\n <div class=\"mat-sort-header-content\">\n <ng-content></ng-content>\n </div>\n\n <!-- Disable animations while a current animation is running -->\n @if (_renderArrow()) {\n <div class=\"mat-sort-header-arrow\">\n <ng-content select=\"[matSortHeaderIcon]\">\n <svg viewBox=\"0 -960 960 960\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M440-240v-368L296-464l-56-56 240-240 240 240-56 56-144-144v368h-80Z\"/>\n </svg>\n </ng-content>\n </div>\n }\n</div>\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 {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\nimport {MatSortHeader} from './sort-header';\nimport {MatSort} from './sort';\n\n@NgModule({\n imports: [MatSort, MatSortHeader],\n exports: [MatSort, MatSortHeader, BidiModule],\n})\nexport class MatSortModule {}\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 {Injectable} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n/**\n * To modify the labels and text displayed, create a new instance of MatSortHeaderIntl and\n * include it in a custom provider.\n *\n * @deprecated No longer used, will be removed.\n * @breaking-change 23.0.0\n * @docs-private\n */\n@Injectable({providedIn: 'root'})\nexport class MatSortHeaderIntl {\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n readonly changes: Subject<void> = new Subject<void>();\n}\n"],"names":["getSortDuplicateSortableIdError","id","Error","getSortHeaderNotContainedWithinSortError","getSortHeaderMissingIdError","getSortInvalidDirectionError","direction","MAT_SORT_DEFAULT_OPTIONS","InjectionToken","MatSort","_defaultOptions","_initializedStream","ReplaySubject","sortables","Map","_stateChanges","Subject","active","start","_direction","ngDevMode","disableClear","disabled","sortChange","EventEmitter","initialized","constructor","register","sortable","has","set","deregister","delete","sort","getNextSortDirection","emit","sortDirectionCycle","getSortDirectionCycle","nextDirectionIndex","indexOf","length","ngOnInit","next","ngOnChanges","ngOnDestroy","complete","ɵfac","i0","ɵɵngDeclareFactory","minVersion","version","ngImport","type","optional","target","ɵɵFactoryTarget","Directive","isStandalone","selector","inputs","booleanAttribute","outputs","host","classAttribute","exportAs","usesOnChanges","decorators","args","Optional","Inject","Input","alias","transform","Output","sortOrder","reverse","push","MatSortHeader","_sort","inject","_columnDef","CdkColumnDef","_changeDetectorRef","ChangeDetectorRef","_focusMonitor","FocusMonitor","_elementRef","ElementRef","_ariaDescriber","AriaDescriber","_renderChanges","_animationsDisabled","_recentlyCleared","signal","_sortButton","arrowPosition","sortActionDescription","_sortActionDescription","value","_updateSortActionDescription","_CdkPrivateStyleLoader","load","_StructuralStylesLoader","defaultOptions","name","merge","subscribe","markForCheck","nativeElement","querySelector","ngAfterViewInit","monitor","Promise","resolve","then","stopMonitoring","unsubscribe","removeDescription","_toggleOnInteraction","_isDisabled","wasSorted","_isSorted","prevDirection","_handleKeydown","event","keyCode","SPACE","ENTER","preventDefault","_getAriaSortAttribute","_renderArrow","newDescription","describe","deps","Component","ɵcmp","ɵɵngDeclareComponent","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","template","MatSortModule","NgModule","imports","BidiModule","ɵinj","ɵɵngDeclareInjector","exports","MatSortHeaderIntl","changes","Injectable","ɵprov","ɵɵngDeclareInjectable","providedIn"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"stepper-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/stepper/testing/step-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/stepper/testing/step-harness-filters.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/stepper/testing/stepper-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/stepper/testing/stepper-button-harnesses.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\nimport {\n ContentContainerComponentHarness,\n HarnessPredicate,\n HarnessLoader,\n} from '@angular/cdk/testing';\nimport {StepHarnessFilters} from './step-harness-filters';\n\n/** Harness for interacting with a standard Angular Material step in tests. */\nexport class MatStepHarness extends ContentContainerComponentHarness<string> {\n /** The selector for the host element of a `MatStep` instance. */\n static hostSelector = '.mat-step-header';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatStepHarness` that meets\n * certain criteria.\n * @param options Options for filtering which steps are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: StepHarnessFilters = {}): HarnessPredicate<MatStepHarness> {\n return new HarnessPredicate(MatStepHarness, options)\n .addOption('label', options.label, (harness, label) =>\n HarnessPredicate.stringMatches(harness.getLabel(), label),\n )\n .addOption(\n 'selected',\n options.selected,\n async (harness, selected) => (await harness.isSelected()) === selected,\n )\n .addOption(\n 'completed',\n options.completed,\n async (harness, completed) => (await harness.isCompleted()) === completed,\n )\n .addOption(\n 'invalid',\n options.invalid,\n async (harness, invalid) => (await harness.hasErrors()) === invalid,\n );\n }\n\n /** Gets the label of the step. */\n async getLabel(): Promise<string> {\n return (await this.locatorFor('.mat-step-text-label')()).text();\n }\n\n /** Gets the `aria-label` of the step. */\n async getAriaLabel(): Promise<string | null> {\n return (await this.host()).getAttribute('aria-label');\n }\n\n /** Gets the value of the `aria-labelledby` attribute. */\n async getAriaLabelledby(): Promise<string | null> {\n return (await this.host()).getAttribute('aria-labelledby');\n }\n\n /** Whether the step is selected. */\n async isSelected(): Promise<boolean> {\n const host = await this.host();\n return (\n (await host.getAttribute('aria-selected')) === 'true' ||\n (await host.getAttribute('aria-current')) === 'step'\n );\n }\n\n /** Whether the step has been filled out. */\n async isCompleted(): Promise<boolean> {\n const state = await this._getIconState();\n return state === 'done' || (state === 'edit' && !(await this.isSelected()));\n }\n\n /**\n * Whether the step is currently showing its error state. Note that this doesn't mean that there\n * are or aren't any invalid form controls inside the step, but that the step is showing its\n * error-specific styling which depends on there being invalid controls, as well as the\n * `ErrorStateMatcher` determining that an error should be shown and that the `showErrors`\n * option was enabled through the `STEPPER_GLOBAL_OPTIONS` injection token.\n */\n async hasErrors(): Promise<boolean> {\n return (await this._getIconState()) === 'error';\n }\n\n /** Whether the step is optional. */\n async isOptional(): Promise<boolean> {\n // If the node with the optional text is present, it means that the step is optional.\n const optionalNode = await this.locatorForOptional('.mat-step-optional')();\n return !!optionalNode;\n }\n\n /**\n * Selects the given step by clicking on the label. The step may not be selected\n * if the stepper doesn't allow it (e.g. if there are validation errors).\n */\n async select(): Promise<void> {\n await (await this.host()).click();\n }\n\n protected override async getRootHarnessLoader(): Promise<HarnessLoader> {\n const contentId = await (await this.host()).getAttribute('aria-controls');\n return this.documentRootLocatorFactory().harnessLoaderFor(`#${contentId}`);\n }\n\n /**\n * Gets the state of the step. Note that we have a `StepState` which we could use to type the\n * return value, but it's basically the same as `string`, because the type has `| string`.\n */\n private async _getIconState(): Promise<string> {\n // The state is exposed on the icon with a class that looks like `mat-step-icon-state-{{state}}`\n const icon = await this.locatorFor('.mat-step-icon')();\n const classes = (await icon.getAttribute('class'))!;\n const match = classes.match(/mat-step-icon-state-([a-z]+)/);\n\n if (!match) {\n throw Error(`Could not determine step state from \"${classes}\".`);\n }\n\n return match[1];\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 */\nimport {BaseHarnessFilters} from '@angular/cdk/testing';\n\n/** Possible orientations for a stepper. */\nexport enum StepperOrientation {\n HORIZONTAL,\n VERTICAL,\n}\n\n/** A set of criteria that can be used to filter a list of `MatStepHarness` instances. */\nexport interface StepHarnessFilters extends BaseHarnessFilters {\n /** Only find instances whose label matches the given value. */\n label?: string | RegExp;\n /** Only find steps with the given selected state. */\n selected?: boolean;\n /** Only find completed steps. */\n completed?: boolean;\n /** Only find steps that have errors. */\n invalid?: boolean;\n}\n\n/** A set of criteria that can be used to filter a list of `MatStepperHarness` instances. */\nexport interface StepperHarnessFilters extends BaseHarnessFilters {\n /** Only find instances whose orientation matches the given value. */\n orientation?: StepperOrientation;\n}\n\n/**\n * A set of criteria that can be used to filter a list of\n * `MatStepperNextHarness` and `MatStepperPreviousHarness` instances.\n */\nexport interface StepperButtonHarnessFilters extends BaseHarnessFilters {\n /** Only find instances whose text matches the given value. */\n text?: string | RegExp;\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 {ComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {MatStepHarness} from './step-harness';\nimport {\n StepperHarnessFilters,\n StepHarnessFilters,\n StepperOrientation,\n} from './step-harness-filters';\n\n/** Harness for interacting with a standard Material stepper in tests. */\nexport class MatStepperHarness extends ComponentHarness {\n /** The selector for the host element of a `MatStepper` instance. */\n static hostSelector = '.mat-stepper-horizontal, .mat-stepper-vertical';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatStepperHarness` that meets\n * certain criteria.\n * @param options Options for filtering which stepper instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: StepperHarnessFilters = {}): HarnessPredicate<MatStepperHarness> {\n return new HarnessPredicate(MatStepperHarness, options).addOption(\n 'orientation',\n options.orientation,\n async (harness, orientation) => (await harness.getOrientation()) === orientation,\n );\n }\n\n /**\n * Gets the list of steps in the stepper.\n * @param filter Optionally filters which steps are included.\n */\n async getSteps(filter: StepHarnessFilters = {}): Promise<MatStepHarness[]> {\n return this.locatorForAll(MatStepHarness.with(filter))();\n }\n\n /** Gets the orientation of the stepper. */\n async getOrientation(): Promise<StepperOrientation> {\n const host = await this.host();\n return (await host.hasClass('mat-stepper-horizontal'))\n ? StepperOrientation.HORIZONTAL\n : StepperOrientation.VERTICAL;\n }\n\n /**\n * Selects a step in this stepper.\n * @param filter An optional filter to apply to the child steps. The first step matching the\n * filter will be selected.\n */\n async selectStep(filter: StepHarnessFilters = {}): Promise<void> {\n const steps = await this.getSteps(filter);\n if (!steps.length) {\n throw Error(`Cannot find mat-step matching filter ${JSON.stringify(filter)}`);\n }\n await steps[0].select();\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 {ComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {StepperButtonHarnessFilters} from './step-harness-filters';\n\n/** Base class for stepper button harnesses. */\nabstract class StepperButtonHarness extends ComponentHarness {\n /** Gets the text of the button. */\n async getText(): Promise<string> {\n return (await this.host()).text();\n }\n\n /** Clicks the button. */\n async click(): Promise<void> {\n return (await this.host()).click();\n }\n}\n\n/** Harness for interacting with a standard Angular Material stepper next button in tests. */\nexport class MatStepperNextHarness extends StepperButtonHarness {\n /** The selector for the host element of a `MatStep` instance. */\n static hostSelector = '.mat-stepper-next';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatStepperNextHarness` that meets\n * certain criteria.\n * @param options Options for filtering which steps are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: StepperButtonHarnessFilters = {}): HarnessPredicate<MatStepperNextHarness> {\n return new HarnessPredicate(MatStepperNextHarness, options).addOption(\n 'text',\n options.text,\n (harness, text) => HarnessPredicate.stringMatches(harness.getText(), text),\n );\n }\n}\n\n/** Harness for interacting with a standard Angular Material stepper previous button in tests. */\nexport class MatStepperPreviousHarness extends StepperButtonHarness {\n /** The selector for the host element of a `MatStep` instance. */\n static hostSelector = '.mat-stepper-previous';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatStepperPreviousHarness`\n * that meets certain criteria.\n * @param options Options for filtering which steps are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: StepperButtonHarnessFilters = {},\n ): HarnessPredicate<MatStepperPreviousHarness> {\n return new HarnessPredicate(MatStepperPreviousHarness, options).addOption(\n 'text',\n options.text,\n (harness, text) => HarnessPredicate.stringMatches(harness.getText(), text),\n );\n }\n}\n"],"names":["MatStepHarness","ContentContainerComponentHarness","hostSelector","with","options","HarnessPredicate","addOption","label","harness","stringMatches","getLabel","selected","isSelected","completed","isCompleted","invalid","hasErrors","locatorFor","text","getAriaLabel","host","getAttribute","getAriaLabelledby","state","_getIconState","isOptional","optionalNode","locatorForOptional","select","click","getRootHarnessLoader","contentId","documentRootLocatorFactory","harnessLoaderFor","icon","classes","match","Error","StepperOrientation","MatStepperHarness","ComponentHarness","orientation","getOrientation","getSteps","filter","locatorForAll","hasClass","HORIZONTAL","VERTICAL","selectStep","steps","length","JSON","stringify","StepperButtonHarness","getText","MatStepperNextHarness","MatStepperPreviousHarness"],"mappings":"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"}
{"version":3,"file":"stepper-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/stepper/testing/step-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/stepper/testing/step-harness-filters.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/stepper/testing/stepper-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/stepper/testing/stepper-button-harnesses.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\nimport {\n ContentContainerComponentHarness,\n HarnessPredicate,\n HarnessLoader,\n} from '@angular/cdk/testing';\nimport {StepHarnessFilters} from './step-harness-filters';\n\n/** Harness for interacting with a standard Angular Material step in tests. */\nexport class MatStepHarness extends ContentContainerComponentHarness<string> {\n /** The selector for the host element of a `MatStep` instance. */\n static hostSelector = '.mat-step-header';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatStepHarness` that meets\n * certain criteria.\n * @param options Options for filtering which steps are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: StepHarnessFilters = {}): HarnessPredicate<MatStepHarness> {\n return new HarnessPredicate(MatStepHarness, options)\n .addOption('label', options.label, (harness, label) =>\n HarnessPredicate.stringMatches(harness.getLabel(), label),\n )\n .addOption(\n 'selected',\n options.selected,\n async (harness, selected) => (await harness.isSelected()) === selected,\n )\n .addOption(\n 'completed',\n options.completed,\n async (harness, completed) => (await harness.isCompleted()) === completed,\n )\n .addOption(\n 'invalid',\n options.invalid,\n async (harness, invalid) => (await harness.hasErrors()) === invalid,\n );\n }\n\n /** Gets the label of the step. */\n async getLabel(): Promise<string> {\n return (await this.locatorFor('.mat-step-text-label')()).text();\n }\n\n /** Gets the `aria-label` of the step. */\n async getAriaLabel(): Promise<string | null> {\n return (await this.host()).getAttribute('aria-label');\n }\n\n /** Gets the value of the `aria-labelledby` attribute. */\n async getAriaLabelledby(): Promise<string | null> {\n return (await this.host()).getAttribute('aria-labelledby');\n }\n\n /** Whether the step is selected. */\n async isSelected(): Promise<boolean> {\n const host = await this.host();\n return (\n (await host.getAttribute('aria-selected')) === 'true' ||\n (await host.getAttribute('aria-current')) === 'step'\n );\n }\n\n /** Whether the step has been filled out. */\n async isCompleted(): Promise<boolean> {\n const state = await this._getIconState();\n return state === 'done' || (state === 'edit' && !(await this.isSelected()));\n }\n\n /**\n * Whether the step is currently showing its error state. Note that this doesn't mean that there\n * are or aren't any invalid form controls inside the step, but that the step is showing its\n * error-specific styling which depends on there being invalid controls, as well as the\n * `ErrorStateMatcher` determining that an error should be shown and that the `showErrors`\n * option was enabled through the `STEPPER_GLOBAL_OPTIONS` injection token.\n */\n async hasErrors(): Promise<boolean> {\n return (await this._getIconState()) === 'error';\n }\n\n /** Whether the step is optional. */\n async isOptional(): Promise<boolean> {\n // If the node with the optional text is present, it means that the step is optional.\n const optionalNode = await this.locatorForOptional('.mat-step-optional')();\n return !!optionalNode;\n }\n\n /**\n * Selects the given step by clicking on the label. The step may not be selected\n * if the stepper doesn't allow it (e.g. if there are validation errors).\n */\n async select(): Promise<void> {\n await (await this.host()).click();\n }\n\n protected override async getRootHarnessLoader(): Promise<HarnessLoader> {\n const contentId = await (await this.host()).getAttribute('aria-controls');\n return this.documentRootLocatorFactory().harnessLoaderFor(`#${contentId}`);\n }\n\n /**\n * Gets the state of the step. Note that we have a `StepState` which we could use to type the\n * return value, but it's basically the same as `string`, because the type has `| string`.\n */\n private async _getIconState(): Promise<string> {\n // The state is exposed on the icon with a class that looks like `mat-step-icon-state-{{state}}`\n const icon = await this.locatorFor('.mat-step-icon')();\n const classes = (await icon.getAttribute('class'))!;\n const match = classes.match(/mat-step-icon-state-([a-z]+)/);\n\n if (!match) {\n throw Error(`Could not determine step state from \"${classes}\".`);\n }\n\n return match[1];\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 */\nimport {BaseHarnessFilters} from '@angular/cdk/testing';\n\n/** Possible orientations for a stepper. */\nexport enum StepperOrientation {\n HORIZONTAL,\n VERTICAL,\n}\n\n/** A set of criteria that can be used to filter a list of `MatStepHarness` instances. */\nexport interface StepHarnessFilters extends BaseHarnessFilters {\n /** Only find instances whose label matches the given value. */\n label?: string | RegExp;\n /** Only find steps with the given selected state. */\n selected?: boolean;\n /** Only find completed steps. */\n completed?: boolean;\n /** Only find steps that have errors. */\n invalid?: boolean;\n}\n\n/** A set of criteria that can be used to filter a list of `MatStepperHarness` instances. */\nexport interface StepperHarnessFilters extends BaseHarnessFilters {\n /** Only find instances whose orientation matches the given value. */\n orientation?: StepperOrientation;\n}\n\n/**\n * A set of criteria that can be used to filter a list of\n * `MatStepperNextHarness` and `MatStepperPreviousHarness` instances.\n */\nexport interface StepperButtonHarnessFilters extends BaseHarnessFilters {\n /** Only find instances whose text matches the given value. */\n text?: string | RegExp;\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 {ComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {MatStepHarness} from './step-harness';\nimport {\n StepperHarnessFilters,\n StepHarnessFilters,\n StepperOrientation,\n} from './step-harness-filters';\n\n/** Harness for interacting with a standard Material stepper in tests. */\nexport class MatStepperHarness extends ComponentHarness {\n /** The selector for the host element of a `MatStepper` instance. */\n static hostSelector = '.mat-stepper-horizontal, .mat-stepper-vertical';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatStepperHarness` that meets\n * certain criteria.\n * @param options Options for filtering which stepper instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: StepperHarnessFilters = {}): HarnessPredicate<MatStepperHarness> {\n return new HarnessPredicate(MatStepperHarness, options).addOption(\n 'orientation',\n options.orientation,\n async (harness, orientation) => (await harness.getOrientation()) === orientation,\n );\n }\n\n /**\n * Gets the list of steps in the stepper.\n * @param filter Optionally filters which steps are included.\n */\n async getSteps(filter: StepHarnessFilters = {}): Promise<MatStepHarness[]> {\n return this.locatorForAll(MatStepHarness.with(filter))();\n }\n\n /** Gets the orientation of the stepper. */\n async getOrientation(): Promise<StepperOrientation> {\n const host = await this.host();\n return (await host.hasClass('mat-stepper-horizontal'))\n ? StepperOrientation.HORIZONTAL\n : StepperOrientation.VERTICAL;\n }\n\n /**\n * Selects a step in this stepper.\n * @param filter An optional filter to apply to the child steps. The first step matching the\n * filter will be selected.\n */\n async selectStep(filter: StepHarnessFilters = {}): Promise<void> {\n const steps = await this.getSteps(filter);\n if (!steps.length) {\n throw Error(`Cannot find mat-step matching filter ${JSON.stringify(filter)}`);\n }\n await steps[0].select();\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 {ComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {StepperButtonHarnessFilters} from './step-harness-filters';\n\n/** Base class for stepper button harnesses. */\nabstract class StepperButtonHarness extends ComponentHarness {\n /** Gets the text of the button. */\n async getText(): Promise<string> {\n return (await this.host()).text();\n }\n\n /** Clicks the button. */\n async click(): Promise<void> {\n return (await this.host()).click();\n }\n}\n\n/** Harness for interacting with a standard Angular Material stepper next button in tests. */\nexport class MatStepperNextHarness extends StepperButtonHarness {\n /** The selector for the host element of a `MatStep` instance. */\n static hostSelector = '.mat-stepper-next';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatStepperNextHarness` that meets\n * certain criteria.\n * @param options Options for filtering which steps are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: StepperButtonHarnessFilters = {}): HarnessPredicate<MatStepperNextHarness> {\n return new HarnessPredicate(MatStepperNextHarness, options).addOption(\n 'text',\n options.text,\n (harness, text) => HarnessPredicate.stringMatches(harness.getText(), text),\n );\n }\n}\n\n/** Harness for interacting with a standard Angular Material stepper previous button in tests. */\nexport class MatStepperPreviousHarness extends StepperButtonHarness {\n /** The selector for the host element of a `MatStep` instance. */\n static hostSelector = '.mat-stepper-previous';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatStepperPreviousHarness`\n * that meets certain criteria.\n * @param options Options for filtering which steps are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: StepperButtonHarnessFilters = {},\n ): HarnessPredicate<MatStepperPreviousHarness> {\n return new HarnessPredicate(MatStepperPreviousHarness, options).addOption(\n 'text',\n options.text,\n (harness, text) => HarnessPredicate.stringMatches(harness.getText(), text),\n );\n }\n}\n"],"names":["MatStepHarness","ContentContainerComponentHarness","hostSelector","with","options","HarnessPredicate","addOption","label","harness","stringMatches","getLabel","selected","isSelected","completed","isCompleted","invalid","hasErrors","locatorFor","text","getAriaLabel","host","getAttribute","getAriaLabelledby","state","_getIconState","isOptional","optionalNode","locatorForOptional","select","click","getRootHarnessLoader","contentId","documentRootLocatorFactory","harnessLoaderFor","icon","classes","match","Error","StepperOrientation","MatStepperHarness","ComponentHarness","orientation","getOrientation","getSteps","filter","locatorForAll","hasClass","HORIZONTAL","VERTICAL","selectStep","steps","length","JSON","stringify","StepperButtonHarness","getText","MatStepperNextHarness","MatStepperPreviousHarness"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"stepper.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/stepper/step-label.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/stepper/stepper-intl.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/stepper/step-header.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/stepper/step-header.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/stepper/stepper-icon.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/stepper/step-content.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/stepper/stepper.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/stepper/step.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/stepper/stepper.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/stepper/stepper-button.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/stepper/stepper-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\nimport {Directive} from '@angular/core';\nimport {CdkStepLabel} from '@angular/cdk/stepper';\n\n@Directive({\n selector: '[matStepLabel]',\n})\nexport class MatStepLabel extends CdkStepLabel {}\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 {Injectable} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n/** Stepper data that is required for internationalization. */\n@Injectable({providedIn: 'root'})\nexport class MatStepperIntl {\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n readonly changes: Subject<void> = new Subject<void>();\n\n /** Label that is rendered below optional steps. */\n optionalLabel: string = 'Optional';\n\n /** Label that is used to indicate step as completed to screen readers. */\n completedLabel: string = 'Completed';\n\n /** Label that is used to indicate step as editable to screen readers. */\n editableLabel: string = 'Editable';\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 {FocusMonitor, FocusOrigin} from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n ViewEncapsulation,\n TemplateRef,\n AfterViewInit,\n inject,\n} from '@angular/core';\nimport {Subscription} from 'rxjs';\nimport {MatStepLabel} from './step-label';\nimport {MatStepperIntl} from './stepper-intl';\nimport {MatStepperIconContext} from './stepper-icon';\nimport {CdkStepHeader, StepState} from '@angular/cdk/stepper';\nimport {_StructuralStylesLoader, MatRipple, ThemePalette} from '../core';\nimport {MatIcon} from '../icon';\nimport {NgTemplateOutlet} from '@angular/common';\nimport {_CdkPrivateStyleLoader, _VisuallyHiddenLoader} from '@angular/cdk/private';\n\n@Component({\n selector: 'mat-step-header',\n templateUrl: 'step-header.html',\n styleUrl: 'step-header.css',\n host: {\n 'class': 'mat-step-header',\n '[class.mat-step-header-empty-label]': '_hasEmptyLabel()',\n '[class]': '\"mat-\" + (color || \"primary\")',\n 'role': '', // ignore cdk role in favor of setting appropriately in html\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatRipple, NgTemplateOutlet, MatIcon],\n})\nexport class MatStepHeader extends CdkStepHeader implements AfterViewInit, OnDestroy {\n _intl = inject(MatStepperIntl);\n private _focusMonitor = inject(FocusMonitor);\n\n private _intlSubscription: Subscription;\n\n /** State of the given step. */\n @Input() state!: StepState;\n\n /** Label of the given step. */\n @Input() label!: MatStepLabel | string;\n\n /** Error message to display when there's an error. */\n @Input() errorMessage!: string;\n\n /** Overrides for the header icons, passed in via the stepper. */\n @Input() iconOverrides!: {[key: string]: TemplateRef<MatStepperIconContext>};\n\n /** Index of the given step. */\n @Input() index!: number;\n\n /** Whether the given step is selected. */\n @Input() selected: boolean = false;\n\n /** Whether the given step label is active. */\n @Input() active: boolean = false;\n\n /** Whether the given step is optional. */\n @Input() optional: boolean = false;\n\n /** Whether the ripple should be disabled. */\n @Input() disableRipple: boolean = false;\n\n /**\n * Theme color of the step header. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/stepper/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input() color!: ThemePalette;\n\n constructor(...args: unknown[]);\n\n constructor() {\n super();\n\n const styleLoader = inject(_CdkPrivateStyleLoader);\n styleLoader.load(_StructuralStylesLoader);\n styleLoader.load(_VisuallyHiddenLoader);\n const changeDetectorRef = inject(ChangeDetectorRef);\n this._intlSubscription = this._intl.changes.subscribe(() => changeDetectorRef.markForCheck());\n }\n\n ngAfterViewInit() {\n this._focusMonitor.monitor(this._elementRef, true);\n }\n\n ngOnDestroy() {\n this._intlSubscription.unsubscribe();\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /** Focuses the step header. */\n override focus(origin?: FocusOrigin, options?: FocusOptions) {\n if (origin) {\n this._focusMonitor.focusVia(this._elementRef, origin, options);\n } else {\n this._elementRef.nativeElement.focus(options);\n }\n }\n\n /** Returns string label of given step if it is a text label. */\n _stringLabel(): string | null {\n return this.label instanceof MatStepLabel ? null : this.label;\n }\n\n /** Returns MatStepLabel if the label of given step is a template label. */\n _templateLabel(): MatStepLabel | null {\n return this.label instanceof MatStepLabel ? this.label : null;\n }\n\n /** Returns the host HTML element. */\n _getHostElement() {\n return this._elementRef.nativeElement;\n }\n\n _getDefaultTextForState(state: StepState): string {\n if (state == 'number') {\n return `${this.index + 1}`;\n }\n if (state == 'edit') {\n return 'create';\n }\n if (state == 'error') {\n return 'warning';\n }\n return state;\n }\n\n protected _hasEmptyLabel() {\n return (\n !this._stringLabel() &&\n !this._templateLabel() &&\n !this._hasOptionalLabel() &&\n !this._hasErrorLabel()\n );\n }\n\n protected _hasOptionalLabel() {\n return this.optional && this.state !== 'error';\n }\n\n protected _hasErrorLabel() {\n return this.state === 'error';\n }\n}\n","<div class=\"mat-step-header-ripple mat-focus-indicator\" matRipple\n [matRippleTrigger]=\"_getHostElement()\"\n [matRippleDisabled]=\"disableRipple\"></div>\n\n<div class=\"mat-step-icon-state-{{state}} mat-step-icon\" [class.mat-step-icon-selected]=\"selected\">\n <div class=\"mat-step-icon-content\">\n @if (iconOverrides && iconOverrides[state]) {\n <ng-container\n [ngTemplateOutlet]=\"iconOverrides[state]\"\n [ngTemplateOutletContext]=\"{index, active, optional}\"></ng-container>\n } @else {\n @switch (state) {\n @case ('number') {\n <span aria-hidden=\"true\">{{_getDefaultTextForState(state)}}</span>\n }\n\n @default {\n @if (state === 'done') {\n <span class=\"cdk-visually-hidden\">{{_intl.completedLabel}}</span>\n } @else if (state === 'edit') {\n <span class=\"cdk-visually-hidden\">{{_intl.editableLabel}}</span>\n }\n\n <mat-icon aria-hidden=\"true\">{{_getDefaultTextForState(state)}}</mat-icon>\n }\n }\n }\n </div>\n</div>\n<div class=\"mat-step-label\"\n [class.mat-step-label-active]=\"active\"\n [class.mat-step-label-selected]=\"selected\"\n [class.mat-step-label-error]=\"state == 'error'\">\n @if (_templateLabel(); as templateLabel) {\n <!-- If there is a label template, use it. -->\n <div class=\"mat-step-text-label\">\n <ng-container [ngTemplateOutlet]=\"templateLabel.template\"></ng-container>\n </div>\n } @else if (_stringLabel()) {\n <!-- If there is no label template, fall back to the text label. -->\n <div class=\"mat-step-text-label\">{{label}}</div>\n }\n\n @if (_hasOptionalLabel()) {\n <div class=\"mat-step-optional\">{{_intl.optionalLabel}}</div>\n }\n\n @if (_hasErrorLabel()) {\n <div class=\"mat-step-sub-label-error\">{{errorMessage}}</div>\n }\n</div>\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 {Directive, Input, TemplateRef, inject} from '@angular/core';\nimport {StepState} from '@angular/cdk/stepper';\n\n/** Template context available to an attached `matStepperIcon`. */\nexport interface MatStepperIconContext {\n /** Index of the step. */\n index: number;\n /** Whether the step is currently active. */\n active: boolean;\n /** Whether the step is optional. */\n optional: boolean;\n}\n\n/**\n * Template to be used to override the icons inside the step header.\n */\n@Directive({\n selector: 'ng-template[matStepperIcon]',\n})\nexport class MatStepperIcon {\n templateRef = inject<TemplateRef<MatStepperIconContext>>(TemplateRef);\n\n /** Name of the icon to be overridden. */\n @Input('matStepperIcon') name!: StepState;\n\n constructor(...args: unknown[]);\n constructor() {}\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 {Directive, TemplateRef, inject} from '@angular/core';\n\n/**\n * Content for a `mat-step` that will be rendered lazily.\n */\n@Directive({\n selector: 'ng-template[matStepContent]',\n})\nexport class MatStepContent<C = unknown> {\n _template = inject<TemplateRef<C>>(TemplateRef);\n\n constructor(...args: unknown[]);\n constructor() {}\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 {CdkStep, CdkStepper} from '@angular/cdk/stepper';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n input,\n NgZone,\n OnDestroy,\n Output,\n QueryList,\n Renderer2,\n signal,\n TemplateRef,\n ViewChildren,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {NgTemplateOutlet} from '@angular/common';\nimport {AbstractControl, FormGroupDirective, NgForm} from '@angular/forms';\nimport {_animationsDisabled, ErrorStateMatcher, ThemePalette} from '../core';\nimport {Platform} from '@angular/cdk/platform';\nimport {CdkPortalOutlet, TemplatePortal} from '@angular/cdk/portal';\nimport {Subscription} from 'rxjs';\nimport {takeUntil, map, startWith, switchMap} from 'rxjs/operators';\n\nimport {MatStepHeader} from './step-header';\nimport {MatStepLabel} from './step-label';\nimport {MatStepperIcon, MatStepperIconContext} from './stepper-icon';\nimport {MatStepContent} from './step-content';\n\n@Component({\n selector: 'mat-step',\n templateUrl: 'step.html',\n providers: [\n {provide: ErrorStateMatcher, useExisting: MatStep},\n {provide: CdkStep, useExisting: MatStep},\n ],\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matStep',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CdkPortalOutlet],\n host: {\n 'hidden': '', // Hide the steps so they don't affect the layout.\n },\n})\nexport class MatStep extends CdkStep implements ErrorStateMatcher, AfterContentInit, OnDestroy {\n private _errorStateMatcher = inject(ErrorStateMatcher, {skipSelf: true});\n private _viewContainerRef = inject(ViewContainerRef);\n private _isSelected = Subscription.EMPTY;\n\n /** Content for step label given by `<ng-template matStepLabel>`. */\n // We need an initializer here to avoid a TS error.\n @ContentChild(MatStepLabel) override stepLabel: MatStepLabel = undefined!;\n\n /**\n * Theme color for the particular step. This API is supported in M2 themes\n * only, it has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/stepper/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input() color: ThemePalette;\n\n /** Content that will be rendered lazily. */\n @ContentChild(MatStepContent, {static: false}) _lazyContent!: MatStepContent;\n\n /** Currently-attached portal containing the lazy content. */\n _portal!: TemplatePortal;\n\n ngAfterContentInit() {\n this._isSelected = this._stepper.steps.changes\n .pipe(\n switchMap(() => {\n return this._stepper.selectionChange.pipe(\n map(event => event.selectedStep === this),\n startWith(this._stepper.selected === this),\n );\n }),\n )\n .subscribe(isSelected => {\n if (isSelected && this._lazyContent && !this._portal) {\n this._portal = new TemplatePortal(this._lazyContent._template, this._viewContainerRef!);\n }\n });\n }\n\n ngOnDestroy() {\n this._isSelected.unsubscribe();\n }\n\n /** Custom error state matcher that additionally checks for validity of interacted form. */\n isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n const originalErrorState = this._errorStateMatcher.isErrorState(control, form);\n\n // Custom error state checks for the validity of form that is not submitted or touched\n // since user can trigger a form change by calling for another step without directly\n // interacting with the current form.\n const customErrorState = !!(control && control.invalid && this.interacted);\n\n return originalErrorState || customErrorState;\n }\n}\n\n@Component({\n selector: 'mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]',\n exportAs: 'matStepper, matVerticalStepper, matHorizontalStepper',\n templateUrl: 'stepper.html',\n styleUrl: 'stepper.css',\n host: {\n '[class.mat-stepper-horizontal]': 'orientation === \"horizontal\"',\n '[class.mat-stepper-vertical]': 'orientation === \"vertical\"',\n '[class.mat-stepper-label-position-end]':\n 'orientation === \"horizontal\" && labelPosition == \"end\"',\n '[class.mat-stepper-label-position-bottom]':\n 'orientation === \"horizontal\" && labelPosition == \"bottom\"',\n '[class.mat-stepper-header-position-bottom]': 'headerPosition === \"bottom\"',\n '[class.mat-stepper-animating]': '_isAnimating()',\n '[style.--mat-stepper-animation-duration]': '_getAnimationDuration()',\n },\n providers: [{provide: CdkStepper, useExisting: MatStepper}],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, MatStepHeader],\n})\nexport class MatStepper extends CdkStepper implements AfterViewInit, AfterContentInit, OnDestroy {\n private _ngZone = inject(NgZone);\n private _renderer = inject(Renderer2);\n private _animationsDisabled = _animationsDisabled();\n private _cleanupTransition: (() => void) | undefined;\n protected _isAnimating = signal(false);\n\n /** The list of step headers of the steps in the stepper. */\n @ViewChildren(MatStepHeader) override _stepHeader: QueryList<MatStepHeader> = undefined!;\n\n /** Elements hosting the step animations. */\n @ViewChildren('animatedContainer') _animatedContainers!: QueryList<ElementRef>;\n\n /** Full list of steps inside the stepper, including inside nested steppers. */\n @ContentChildren(MatStep, {descendants: true}) override _steps: QueryList<MatStep> = undefined!;\n\n /** Steps that belong to the current stepper, excluding ones from nested steppers. */\n override readonly steps: QueryList<MatStep> = new QueryList<MatStep>();\n\n /** Custom icon overrides passed in by the consumer. */\n @ContentChildren(MatStepperIcon, {descendants: true}) _icons!: QueryList<MatStepperIcon>;\n\n /** Event emitted when the current step is done transitioning in. */\n @Output() readonly animationDone: EventEmitter<void> = new EventEmitter<void>();\n\n /** Whether ripples should be disabled for the step headers. */\n @Input() disableRipple: boolean = false;\n\n /**\n * Theme color for all of the steps in stepper. This API is supported in M2\n * themes only, it has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/stepper/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input() color: ThemePalette;\n\n /**\n * Whether the label should display in bottom or end position.\n * Only applies in the `horizontal` orientation.\n */\n @Input()\n labelPosition: 'bottom' | 'end' = 'end';\n\n /**\n * Position of the stepper's header.\n * Only applies in the `horizontal` orientation.\n */\n @Input()\n headerPosition: 'top' | 'bottom' = 'top';\n\n /** The content prefix to use in the stepper header. */\n readonly headerPrefix = input<TemplateRef<unknown> | null>(null);\n\n /** Consumer-specified template-refs to be used to override the header icons. */\n _iconOverrides: Record<string, TemplateRef<MatStepperIconContext>> = {};\n\n /** Duration for the animation. Will be normalized to milliseconds if no units are set. */\n @Input()\n get animationDuration(): string {\n return this._animationDuration;\n }\n set animationDuration(value: string) {\n this._animationDuration = /^\\d+$/.test(value) ? value + 'ms' : value;\n }\n private _animationDuration = '';\n\n /** Whether the stepper is rendering on the server. */\n protected _isServer: boolean = !inject(Platform).isBrowser;\n\n constructor(...args: unknown[]);\n\n constructor() {\n super();\n\n const elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n const nodeName = elementRef.nativeElement.nodeName.toLowerCase();\n this.orientation = nodeName === 'mat-vertical-stepper' ? 'vertical' : 'horizontal';\n }\n\n override ngAfterContentInit() {\n super.ngAfterContentInit();\n this._icons.forEach(({name, templateRef}) => (this._iconOverrides[name] = templateRef));\n\n // Mark the component for change detection whenever the content children query changes\n this.steps.changes.pipe(takeUntil(this._destroyed)).subscribe(() => this._stateChanged());\n\n // Transition events won't fire if animations are disabled so we simulate them.\n this.selectedIndexChange.pipe(takeUntil(this._destroyed)).subscribe(() => {\n const duration = this._getAnimationDuration();\n if (duration === '0ms' || duration === '0s') {\n this._onAnimationDone();\n } else {\n this._isAnimating.set(true);\n }\n });\n\n this._ngZone.runOutsideAngular(() => {\n if (!this._animationsDisabled) {\n setTimeout(() => {\n // Delay enabling the animations so we don't animate the initial state.\n this._elementRef.nativeElement.classList.add('mat-stepper-animations-enabled');\n\n // Bind this outside the zone since it fires for all transitions inside the stepper.\n this._cleanupTransition = this._renderer.listen(\n this._elementRef.nativeElement,\n 'transitionend',\n this._handleTransitionend,\n );\n }, 200);\n }\n });\n }\n\n override ngAfterViewInit(): void {\n super.ngAfterViewInit();\n\n // Prior to #30314 the stepper had animation `done` events bound to each animated container.\n // The animations module was firing them on initialization and for each subsequent animation.\n // Since the events were bound in the template, it had the unintended side-effect of triggering\n // change detection as well. It appears that this side-effect ended up being load-bearing,\n // because it was ensuring that the content elements (e.g. `matStepLabel`) that are defined\n // in sub-components actually get picked up in a timely fashion. This subscription simulates\n // the same change detection by using `queueMicrotask` similarly to the animations module.\n if (typeof queueMicrotask === 'function') {\n let hasEmittedInitial = false;\n this._animatedContainers.changes\n .pipe(startWith(null), takeUntil(this._destroyed))\n .subscribe(() =>\n queueMicrotask(() => {\n // Simulate the initial `animationDone` event\n // that gets emitted by the animations module.\n if (!hasEmittedInitial) {\n hasEmittedInitial = true;\n this.animationDone.emit();\n }\n\n this._stateChanged();\n }),\n );\n }\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this._cleanupTransition?.();\n }\n\n _getAnimationDuration() {\n if (this._animationsDisabled) {\n return '0ms';\n }\n\n if (this.animationDuration) {\n return this.animationDuration;\n }\n\n return this.orientation === 'horizontal' ? '500ms' : '225ms';\n }\n\n private _handleTransitionend = (event: TransitionEvent) => {\n const target = event.target as HTMLElement | null;\n\n if (!target) {\n return;\n }\n\n // Because we bind a single `transitionend` handler on the host node and because transition\n // events bubble, we have to filter down to only the active step so don't emit events too\n // often. We check the orientation and `property` name first to reduce the amount of times\n // we need to check the DOM.\n const isHorizontalActiveElement =\n this.orientation === 'horizontal' &&\n event.propertyName === 'transform' &&\n target.classList.contains('mat-horizontal-stepper-content-current');\n const isVerticalActiveElement =\n this.orientation === 'vertical' &&\n event.propertyName === 'grid-template-rows' &&\n target.classList.contains('mat-vertical-content-container-active');\n\n // Finally we need to ensure that the animated element is a direct descendant,\n // rather than one coming from a nested stepper.\n const shouldEmit =\n (isHorizontalActiveElement || isVerticalActiveElement) &&\n this._animatedContainers.find(ref => ref.nativeElement === target);\n\n if (shouldEmit) {\n this._onAnimationDone();\n }\n };\n\n private _onAnimationDone() {\n this._isAnimating.set(false);\n this.animationDone.emit();\n }\n}\n","<ng-template>\n <ng-content></ng-content>\n <ng-template [cdkPortalOutlet]=\"_portal\"></ng-template>\n</ng-template>\n","<!--\n We need to project the content somewhere to avoid hydration errors. Some observations:\n 1. This is only necessary on the server.\n 2. We get a hydration error if there aren't any nodes after the `ng-content`.\n 3. We get a hydration error if `ng-content` is wrapped in another element.\n-->\n@if (_isServer) {\n <ng-content/>\n}\n\n@switch (orientation) {\n @case ('horizontal') {\n <div class=\"mat-horizontal-stepper-wrapper\">\n @if (headerPrefix()) {\n <div class=\"mat-horizontal-stepper-header-wrapper\">\n <ng-container [ngTemplateOutlet]=\"headerPrefix()\"/>\n <ng-container [ngTemplateOutlet]=\"horizontalStepsTemplate\"\n [ngTemplateOutletContext]=\"{steps}\"/>\n </div>\n } @else {\n <ng-container [ngTemplateOutlet]=\"horizontalStepsTemplate\"\n [ngTemplateOutletContext]=\"{steps}\"/>\n }\n\n <div class=\"mat-horizontal-content-container\">\n @for (step of steps; track step) {\n <div\n #animatedContainer\n class=\"mat-horizontal-stepper-content\"\n role=\"tabpanel\"\n [id]=\"_getStepContentId($index)\"\n [attr.aria-labelledby]=\"_getStepLabelId($index)\"\n [class]=\"'mat-horizontal-stepper-content-' + _getAnimationDirection($index)\"\n [attr.inert]=\"selectedIndex === $index ? null : ''\">\n <ng-container [ngTemplateOutlet]=\"step.content\"/>\n </div>\n }\n </div>\n </div>\n }\n\n @case ('vertical') {\n <div class=\"mat-vertical-stepper-wrapper\">\n @if (headerPrefix()) {\n <ng-container [ngTemplateOutlet]=\"headerPrefix()\"/>\n }\n\n @for (step of steps; track step) {\n <div class=\"mat-step\">\n <ng-container\n [ngTemplateOutlet]=\"stepTemplate\"\n [ngTemplateOutletContext]=\"{step}\"/>\n <div\n #animatedContainer\n class=\"mat-vertical-content-container\"\n [class.mat-stepper-vertical-line]=\"!$last\"\n [class.mat-vertical-content-container-active]=\"selectedIndex === $index\"\n [attr.inert]=\"selectedIndex === $index ? null : ''\">\n <div \n class=\"mat-vertical-stepper-content\"\n role=\"region\"\n [id]=\"_getStepContentId($index)\"\n [attr.aria-labelledby]=\"_getStepLabelId($index)\">\n <div class=\"mat-vertical-content\">\n <ng-container [ngTemplateOutlet]=\"step.content\"/>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n }\n}\n\n<!-- Common step templating -->\n<ng-template let-step=\"step\" #stepTemplate>\n <mat-step-header\n [class.mat-horizontal-stepper-header]=\"orientation === 'horizontal'\"\n [class.mat-vertical-stepper-header]=\"orientation === 'vertical'\"\n (click)=\"step.select()\"\n (keydown)=\"_onKeydown($event)\"\n [tabIndex]=\"_getFocusIndex() === step.index() ? 0 : -1\"\n [id]=\"_getStepLabelId(step.index())\"\n [attr.role]=\"orientation === 'horizontal' ? 'tab' : 'button'\"\n [attr.aria-posinset]=\"orientation === 'horizontal' ? step.index() + 1 : null\"\n [attr.aria-setsize]=\"orientation === 'horizontal' ? steps.length : null\"\n [attr.aria-selected]=\"orientation === 'horizontal' ? step.isSelected() : null\"\n [attr.aria-current]=\"orientation === 'vertical' && step.isSelected() ? 'step' : null\"\n [attr.aria-disabled]=\"orientation === 'vertical' && step.isSelected() ? 'true' : null\"\n [attr.aria-expanded]=\"orientation === 'vertical' ? step.isSelected() : null\"\n [attr.aria-controls]=\"_getStepContentId(step.index())\"\n [attr.aria-label]=\"step.ariaLabel || null\"\n [attr.aria-labelledby]=\"(!step.ariaLabel && step.ariaLabelledby) ? step.ariaLabelledby : null\"\n [attr.aria-disabled]=\"step.isNavigable() ? null : true\"\n [index]=\"step.index()\"\n [state]=\"step.indicatorType()\"\n [label]=\"step.stepLabel || step.label\"\n [selected]=\"step.isSelected()\"\n [active]=\"step.isNavigable()\"\n [optional]=\"step.optional\"\n [errorMessage]=\"step.errorMessage\"\n [iconOverrides]=\"_iconOverrides\"\n [disableRipple]=\"disableRipple || !step.isNavigable()\"\n [color]=\"step.color || color\"/>\n</ng-template>\n\n<ng-template #horizontalStepsTemplate let-steps=\"steps\">\n <div \n aria-orientation=\"horizontal\"\n class=\"mat-horizontal-stepper-header-container\" \n role=\"tablist\">\n @for (step of steps; track step) {\n <ng-container\n [ngTemplateOutlet]=\"stepTemplate\"\n [ngTemplateOutletContext]=\"{step}\"/>\n @if (!$last) {\n <div class=\"mat-stepper-horizontal-line\"></div>\n }\n }\n </div>\n</ng-template>\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 {CdkStepperNext, CdkStepperPrevious} from '@angular/cdk/stepper';\nimport {Directive} from '@angular/core';\n\n/** Button that moves to the next step in a stepper workflow. */\n@Directive({\n selector: 'button[matStepperNext]',\n host: {\n 'class': 'mat-stepper-next',\n '[type]': 'type',\n },\n})\nexport class MatStepperNext extends CdkStepperNext {}\n\n/** Button that moves to the previous step in a stepper workflow. */\n@Directive({\n selector: 'button[matStepperPrevious]',\n host: {\n 'class': 'mat-stepper-previous',\n '[type]': 'type',\n },\n})\nexport class MatStepperPrevious extends CdkStepperPrevious {}\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 {BidiModule} from '@angular/cdk/bidi';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {CdkStepperModule} from '@angular/cdk/stepper';\nimport {NgModule} from '@angular/core';\nimport {ErrorStateMatcher, MatRippleModule} from '../core';\nimport {MatIconModule} from '../icon';\nimport {MatStepHeader} from './step-header';\nimport {MatStepLabel} from './step-label';\nimport {MatStep, MatStepper} from './stepper';\nimport {MatStepperNext, MatStepperPrevious} from './stepper-button';\nimport {MatStepperIcon} from './stepper-icon';\nimport {MatStepContent} from './step-content';\n\n@NgModule({\n imports: [\n PortalModule,\n CdkStepperModule,\n MatIconModule,\n MatRippleModule,\n MatStep,\n MatStepLabel,\n MatStepper,\n MatStepperNext,\n MatStepperPrevious,\n MatStepHeader,\n MatStepperIcon,\n MatStepContent,\n ],\n exports: [\n BidiModule,\n MatStep,\n MatStepLabel,\n MatStepper,\n MatStepperNext,\n MatStepperPrevious,\n MatStepHeader,\n MatStepperIcon,\n MatStepContent,\n ],\n providers: [ErrorStateMatcher],\n})\nexport class MatStepperModule {}\n"],"names":["MatStepLabel","CdkStepLabel","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","usesInheritance","ngImport","decorators","args","MatStepperIntl","changes","Subject","optionalLabel","completedLabel","editableLabel","Injectable","ɵprov","ɵɵngDeclareInjectable","minVersion","version","type","providedIn","MatStepHeader","CdkStepHeader","_intl","inject","_focusMonitor","FocusMonitor","_intlSubscription","state","label","errorMessage","iconOverrides","index","selected","active","optional","disableRipple","color","constructor","styleLoader","_CdkPrivateStyleLoader","load","_StructuralStylesLoader","_VisuallyHiddenLoader","changeDetectorRef","ChangeDetectorRef","subscribe","markForCheck","ngAfterViewInit","monitor","_elementRef","ngOnDestroy","unsubscribe","stopMonitoring","focus","origin","options","focusVia","nativeElement","_stringLabel","_templateLabel","_getHostElement","_getDefaultTextForState","_hasEmptyLabel","_hasOptionalLabel","_hasErrorLabel","Component","ɵcmp","ɵɵngDeclareComponent","styles","dependencies","kind","MatRipple","inputs","exportAs","NgTemplateOutlet","MatIcon","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","host","imports","template","Input","MatStepperIcon","templateRef","TemplateRef","name","MatStepContent","_template","MatStep","CdkStep","_errorStateMatcher","ErrorStateMatcher","skipSelf","_viewContainerRef","ViewContainerRef","_isSelected","Subscription","EMPTY","stepLabel","undefined","_lazyContent","_portal","ngAfterContentInit","_stepper","steps","pipe","switchMap","selectionChange","map","event","selectedStep","startWith","isSelected","TemplatePortal","isErrorState","control","form","originalErrorState","customErrorState","invalid","interacted","attributes","providers","provide","useExisting","queries","propertyName","first","predicate","descendants","CdkPortalOutlet","outputs","ContentChild","static","MatStepper","CdkStepper","_ngZone","NgZone","_renderer","Renderer2","_animationsDisabled","_cleanupTransition","_isAnimating","signal","_stepHeader","_animatedContainers","_steps","QueryList","_icons","animationDone","EventEmitter","labelPosition","headerPosition","headerPrefix","input","_iconOverrides","animationDuration","_animationDuration","value","test","_isServer","Platform","isBrowser","elementRef","ElementRef","nodeName","toLowerCase","orientation","forEach","takeUntil","_destroyed","_stateChanged","selectedIndexChange","duration","_getAnimationDuration","_onAnimationDone","set","runOutsideAngular","setTimeout","classList","add","listen","_handleTransitionend","queueMicrotask","hasEmittedInitial","emit","isHorizontalActiveElement","contains","isVerticalActiveElement","shouldEmit","find","ref","classPropertyName","publicName","isSignal","isRequired","transformFunction","properties","viewQueries","ViewChildren","ContentChildren","Output","MatStepperNext","CdkStepperNext","classAttribute","MatStepperPrevious","CdkStepperPrevious","MatStepperModule","NgModule","ɵmod","ɵɵngDeclareNgModule","PortalModule","CdkStepperModule","MatIconModule","MatRippleModule","BidiModule","ɵinj","ɵɵngDeclareInjector","exports"],"mappings":"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"}
{"version":3,"file":"stepper.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/stepper/step-label.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/stepper/stepper-intl.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/stepper/step-header.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/stepper/step-header.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/stepper/stepper-icon.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/stepper/step-content.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/stepper/stepper.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/stepper/step.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/stepper/stepper.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/stepper/stepper-button.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/stepper/stepper-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\nimport {Directive} from '@angular/core';\nimport {CdkStepLabel} from '@angular/cdk/stepper';\n\n@Directive({\n selector: '[matStepLabel]',\n})\nexport class MatStepLabel extends CdkStepLabel {}\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 {Injectable} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n/** Stepper data that is required for internationalization. */\n@Injectable({providedIn: 'root'})\nexport class MatStepperIntl {\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n readonly changes: Subject<void> = new Subject<void>();\n\n /** Label that is rendered below optional steps. */\n optionalLabel: string = 'Optional';\n\n /** Label that is used to indicate step as completed to screen readers. */\n completedLabel: string = 'Completed';\n\n /** Label that is used to indicate step as editable to screen readers. */\n editableLabel: string = 'Editable';\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 {FocusMonitor, FocusOrigin} from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n ViewEncapsulation,\n TemplateRef,\n AfterViewInit,\n inject,\n} from '@angular/core';\nimport {Subscription} from 'rxjs';\nimport {MatStepLabel} from './step-label';\nimport {MatStepperIntl} from './stepper-intl';\nimport {MatStepperIconContext} from './stepper-icon';\nimport {CdkStepHeader, StepState} from '@angular/cdk/stepper';\nimport {_StructuralStylesLoader, MatRipple, ThemePalette} from '../core';\nimport {MatIcon} from '../icon';\nimport {NgTemplateOutlet} from '@angular/common';\nimport {_CdkPrivateStyleLoader, _VisuallyHiddenLoader} from '@angular/cdk/private';\n\n@Component({\n selector: 'mat-step-header',\n templateUrl: 'step-header.html',\n styleUrl: 'step-header.css',\n host: {\n 'class': 'mat-step-header',\n '[class.mat-step-header-empty-label]': '_hasEmptyLabel()',\n '[class]': '\"mat-\" + (color || \"primary\")',\n 'role': '', // ignore cdk role in favor of setting appropriately in html\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatRipple, NgTemplateOutlet, MatIcon],\n})\nexport class MatStepHeader extends CdkStepHeader implements AfterViewInit, OnDestroy {\n _intl = inject(MatStepperIntl);\n private _focusMonitor = inject(FocusMonitor);\n\n private _intlSubscription: Subscription;\n\n /** State of the given step. */\n @Input() state!: StepState;\n\n /** Label of the given step. */\n @Input() label!: MatStepLabel | string;\n\n /** Error message to display when there's an error. */\n @Input() errorMessage!: string;\n\n /** Overrides for the header icons, passed in via the stepper. */\n @Input() iconOverrides!: {[key: string]: TemplateRef<MatStepperIconContext>};\n\n /** Index of the given step. */\n @Input() index!: number;\n\n /** Whether the given step is selected. */\n @Input() selected: boolean = false;\n\n /** Whether the given step label is active. */\n @Input() active: boolean = false;\n\n /** Whether the given step is optional. */\n @Input() optional: boolean = false;\n\n /** Whether the ripple should be disabled. */\n @Input() disableRipple: boolean = false;\n\n /**\n * Theme color of the step header. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/stepper/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input() color!: ThemePalette;\n\n constructor(...args: unknown[]);\n\n constructor() {\n super();\n\n const styleLoader = inject(_CdkPrivateStyleLoader);\n styleLoader.load(_StructuralStylesLoader);\n styleLoader.load(_VisuallyHiddenLoader);\n const changeDetectorRef = inject(ChangeDetectorRef);\n this._intlSubscription = this._intl.changes.subscribe(() => changeDetectorRef.markForCheck());\n }\n\n ngAfterViewInit() {\n this._focusMonitor.monitor(this._elementRef, true);\n }\n\n ngOnDestroy() {\n this._intlSubscription.unsubscribe();\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /** Focuses the step header. */\n override focus(origin?: FocusOrigin, options?: FocusOptions) {\n if (origin) {\n this._focusMonitor.focusVia(this._elementRef, origin, options);\n } else {\n this._elementRef.nativeElement.focus(options);\n }\n }\n\n /** Returns string label of given step if it is a text label. */\n _stringLabel(): string | null {\n return this.label instanceof MatStepLabel ? null : this.label;\n }\n\n /** Returns MatStepLabel if the label of given step is a template label. */\n _templateLabel(): MatStepLabel | null {\n return this.label instanceof MatStepLabel ? this.label : null;\n }\n\n /** Returns the host HTML element. */\n _getHostElement() {\n return this._elementRef.nativeElement;\n }\n\n _getDefaultTextForState(state: StepState): string {\n if (state == 'number') {\n return `${this.index + 1}`;\n }\n if (state == 'edit') {\n return 'create';\n }\n if (state == 'error') {\n return 'warning';\n }\n return state;\n }\n\n protected _hasEmptyLabel() {\n return (\n !this._stringLabel() &&\n !this._templateLabel() &&\n !this._hasOptionalLabel() &&\n !this._hasErrorLabel()\n );\n }\n\n protected _hasOptionalLabel() {\n return this.optional && this.state !== 'error';\n }\n\n protected _hasErrorLabel() {\n return this.state === 'error';\n }\n}\n","<div class=\"mat-step-header-ripple mat-focus-indicator\" matRipple\n [matRippleTrigger]=\"_getHostElement()\"\n [matRippleDisabled]=\"disableRipple\"></div>\n\n<div class=\"mat-step-icon-state-{{state}} mat-step-icon\" [class.mat-step-icon-selected]=\"selected\">\n <div class=\"mat-step-icon-content\">\n @if (iconOverrides && iconOverrides[state]) {\n <ng-container\n [ngTemplateOutlet]=\"iconOverrides[state]\"\n [ngTemplateOutletContext]=\"{index, active, optional}\"></ng-container>\n } @else {\n @switch (state) {\n @case ('number') {\n <span aria-hidden=\"true\">{{_getDefaultTextForState(state)}}</span>\n }\n\n @default {\n @if (state === 'done') {\n <span class=\"cdk-visually-hidden\">{{_intl.completedLabel}}</span>\n } @else if (state === 'edit') {\n <span class=\"cdk-visually-hidden\">{{_intl.editableLabel}}</span>\n }\n\n <mat-icon aria-hidden=\"true\">{{_getDefaultTextForState(state)}}</mat-icon>\n }\n }\n }\n </div>\n</div>\n<div class=\"mat-step-label\"\n [class.mat-step-label-active]=\"active\"\n [class.mat-step-label-selected]=\"selected\"\n [class.mat-step-label-error]=\"state == 'error'\">\n @if (_templateLabel(); as templateLabel) {\n <!-- If there is a label template, use it. -->\n <div class=\"mat-step-text-label\">\n <ng-container [ngTemplateOutlet]=\"templateLabel.template\"></ng-container>\n </div>\n } @else if (_stringLabel()) {\n <!-- If there is no label template, fall back to the text label. -->\n <div class=\"mat-step-text-label\">{{label}}</div>\n }\n\n @if (_hasOptionalLabel()) {\n <div class=\"mat-step-optional\">{{_intl.optionalLabel}}</div>\n }\n\n @if (_hasErrorLabel()) {\n <div class=\"mat-step-sub-label-error\">{{errorMessage}}</div>\n }\n</div>\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 {Directive, Input, TemplateRef, inject} from '@angular/core';\nimport {StepState} from '@angular/cdk/stepper';\n\n/** Template context available to an attached `matStepperIcon`. */\nexport interface MatStepperIconContext {\n /** Index of the step. */\n index: number;\n /** Whether the step is currently active. */\n active: boolean;\n /** Whether the step is optional. */\n optional: boolean;\n}\n\n/**\n * Template to be used to override the icons inside the step header.\n */\n@Directive({\n selector: 'ng-template[matStepperIcon]',\n})\nexport class MatStepperIcon {\n templateRef = inject<TemplateRef<MatStepperIconContext>>(TemplateRef);\n\n /** Name of the icon to be overridden. */\n @Input('matStepperIcon') name!: StepState;\n\n constructor(...args: unknown[]);\n constructor() {}\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 {Directive, TemplateRef, inject} from '@angular/core';\n\n/**\n * Content for a `mat-step` that will be rendered lazily.\n */\n@Directive({\n selector: 'ng-template[matStepContent]',\n})\nexport class MatStepContent<C = unknown> {\n _template = inject<TemplateRef<C>>(TemplateRef);\n\n constructor(...args: unknown[]);\n constructor() {}\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 {CdkStep, CdkStepper} from '@angular/cdk/stepper';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n input,\n NgZone,\n OnDestroy,\n Output,\n QueryList,\n Renderer2,\n signal,\n TemplateRef,\n ViewChildren,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {NgTemplateOutlet} from '@angular/common';\nimport {AbstractControl, FormGroupDirective, NgForm} from '@angular/forms';\nimport {_animationsDisabled, ErrorStateMatcher, ThemePalette} from '../core';\nimport {Platform} from '@angular/cdk/platform';\nimport {CdkPortalOutlet, TemplatePortal} from '@angular/cdk/portal';\nimport {Subscription} from 'rxjs';\nimport {takeUntil, map, startWith, switchMap} from 'rxjs/operators';\n\nimport {MatStepHeader} from './step-header';\nimport {MatStepLabel} from './step-label';\nimport {MatStepperIcon, MatStepperIconContext} from './stepper-icon';\nimport {MatStepContent} from './step-content';\n\n@Component({\n selector: 'mat-step',\n templateUrl: 'step.html',\n providers: [\n {provide: ErrorStateMatcher, useExisting: MatStep},\n {provide: CdkStep, useExisting: MatStep},\n ],\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matStep',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CdkPortalOutlet],\n host: {\n 'hidden': '', // Hide the steps so they don't affect the layout.\n },\n})\nexport class MatStep extends CdkStep implements ErrorStateMatcher, AfterContentInit, OnDestroy {\n private _errorStateMatcher = inject(ErrorStateMatcher, {skipSelf: true});\n private _viewContainerRef = inject(ViewContainerRef);\n private _isSelected = Subscription.EMPTY;\n\n /** Content for step label given by `<ng-template matStepLabel>`. */\n // We need an initializer here to avoid a TS error.\n @ContentChild(MatStepLabel) override stepLabel: MatStepLabel = undefined!;\n\n /**\n * Theme color for the particular step. This API is supported in M2 themes\n * only, it has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/stepper/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input() color: ThemePalette;\n\n /** Content that will be rendered lazily. */\n @ContentChild(MatStepContent, {static: false}) _lazyContent!: MatStepContent;\n\n /** Currently-attached portal containing the lazy content. */\n _portal!: TemplatePortal;\n\n ngAfterContentInit() {\n this._isSelected = this._stepper.steps.changes\n .pipe(\n switchMap(() => {\n return this._stepper.selectionChange.pipe(\n map(event => event.selectedStep === this),\n startWith(this._stepper.selected === this),\n );\n }),\n )\n .subscribe(isSelected => {\n if (isSelected && this._lazyContent && !this._portal) {\n this._portal = new TemplatePortal(this._lazyContent._template, this._viewContainerRef!);\n }\n });\n }\n\n ngOnDestroy() {\n this._isSelected.unsubscribe();\n }\n\n /** Custom error state matcher that additionally checks for validity of interacted form. */\n isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n const originalErrorState = this._errorStateMatcher.isErrorState(control, form);\n\n // Custom error state checks for the validity of form that is not submitted or touched\n // since user can trigger a form change by calling for another step without directly\n // interacting with the current form.\n const customErrorState = !!(control && control.invalid && this.interacted);\n\n return originalErrorState || customErrorState;\n }\n}\n\n@Component({\n selector: 'mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]',\n exportAs: 'matStepper, matVerticalStepper, matHorizontalStepper',\n templateUrl: 'stepper.html',\n styleUrl: 'stepper.css',\n host: {\n '[class.mat-stepper-horizontal]': 'orientation === \"horizontal\"',\n '[class.mat-stepper-vertical]': 'orientation === \"vertical\"',\n '[class.mat-stepper-label-position-end]':\n 'orientation === \"horizontal\" && labelPosition == \"end\"',\n '[class.mat-stepper-label-position-bottom]':\n 'orientation === \"horizontal\" && labelPosition == \"bottom\"',\n '[class.mat-stepper-header-position-bottom]': 'headerPosition === \"bottom\"',\n '[class.mat-stepper-animating]': '_isAnimating()',\n '[style.--mat-stepper-animation-duration]': '_getAnimationDuration()',\n },\n providers: [{provide: CdkStepper, useExisting: MatStepper}],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, MatStepHeader],\n})\nexport class MatStepper extends CdkStepper implements AfterViewInit, AfterContentInit, OnDestroy {\n private _ngZone = inject(NgZone);\n private _renderer = inject(Renderer2);\n private _animationsDisabled = _animationsDisabled();\n private _cleanupTransition: (() => void) | undefined;\n protected _isAnimating = signal(false);\n\n /** The list of step headers of the steps in the stepper. */\n @ViewChildren(MatStepHeader) override _stepHeader: QueryList<MatStepHeader> = undefined!;\n\n /** Elements hosting the step animations. */\n @ViewChildren('animatedContainer') _animatedContainers!: QueryList<ElementRef>;\n\n /** Full list of steps inside the stepper, including inside nested steppers. */\n @ContentChildren(MatStep, {descendants: true}) override _steps: QueryList<MatStep> = undefined!;\n\n /** Steps that belong to the current stepper, excluding ones from nested steppers. */\n override readonly steps: QueryList<MatStep> = new QueryList<MatStep>();\n\n /** Custom icon overrides passed in by the consumer. */\n @ContentChildren(MatStepperIcon, {descendants: true}) _icons!: QueryList<MatStepperIcon>;\n\n /** Event emitted when the current step is done transitioning in. */\n @Output() readonly animationDone: EventEmitter<void> = new EventEmitter<void>();\n\n /** Whether ripples should be disabled for the step headers. */\n @Input() disableRipple: boolean = false;\n\n /**\n * Theme color for all of the steps in stepper. This API is supported in M2\n * themes only, it has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/stepper/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input() color: ThemePalette;\n\n /**\n * Whether the label should display in bottom or end position.\n * Only applies in the `horizontal` orientation.\n */\n @Input()\n labelPosition: 'bottom' | 'end' = 'end';\n\n /**\n * Position of the stepper's header.\n * Only applies in the `horizontal` orientation.\n */\n @Input()\n headerPosition: 'top' | 'bottom' = 'top';\n\n /** The content prefix to use in the stepper header. */\n readonly headerPrefix = input<TemplateRef<unknown> | null>(null);\n\n /** Consumer-specified template-refs to be used to override the header icons. */\n _iconOverrides: Record<string, TemplateRef<MatStepperIconContext>> = {};\n\n /** Duration for the animation. Will be normalized to milliseconds if no units are set. */\n @Input()\n get animationDuration(): string {\n return this._animationDuration;\n }\n set animationDuration(value: string) {\n this._animationDuration = /^\\d+$/.test(value) ? value + 'ms' : value;\n }\n private _animationDuration = '';\n\n /** Whether the stepper is rendering on the server. */\n protected _isServer: boolean = !inject(Platform).isBrowser;\n\n constructor(...args: unknown[]);\n\n constructor() {\n super();\n\n const elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n const nodeName = elementRef.nativeElement.nodeName.toLowerCase();\n this.orientation = nodeName === 'mat-vertical-stepper' ? 'vertical' : 'horizontal';\n }\n\n override ngAfterContentInit() {\n super.ngAfterContentInit();\n this._icons.forEach(({name, templateRef}) => (this._iconOverrides[name] = templateRef));\n\n // Mark the component for change detection whenever the content children query changes\n this.steps.changes.pipe(takeUntil(this._destroyed)).subscribe(() => this._stateChanged());\n\n // Transition events won't fire if animations are disabled so we simulate them.\n this.selectedIndexChange.pipe(takeUntil(this._destroyed)).subscribe(() => {\n const duration = this._getAnimationDuration();\n if (duration === '0ms' || duration === '0s') {\n this._onAnimationDone();\n } else {\n this._isAnimating.set(true);\n }\n });\n\n this._ngZone.runOutsideAngular(() => {\n if (!this._animationsDisabled) {\n setTimeout(() => {\n // Delay enabling the animations so we don't animate the initial state.\n this._elementRef.nativeElement.classList.add('mat-stepper-animations-enabled');\n\n // Bind this outside the zone since it fires for all transitions inside the stepper.\n this._cleanupTransition = this._renderer.listen(\n this._elementRef.nativeElement,\n 'transitionend',\n this._handleTransitionend,\n );\n }, 200);\n }\n });\n }\n\n override ngAfterViewInit(): void {\n super.ngAfterViewInit();\n\n // Prior to #30314 the stepper had animation `done` events bound to each animated container.\n // The animations module was firing them on initialization and for each subsequent animation.\n // Since the events were bound in the template, it had the unintended side-effect of triggering\n // change detection as well. It appears that this side-effect ended up being load-bearing,\n // because it was ensuring that the content elements (e.g. `matStepLabel`) that are defined\n // in sub-components actually get picked up in a timely fashion. This subscription simulates\n // the same change detection by using `queueMicrotask` similarly to the animations module.\n if (typeof queueMicrotask === 'function') {\n let hasEmittedInitial = false;\n this._animatedContainers.changes\n .pipe(startWith(null), takeUntil(this._destroyed))\n .subscribe(() =>\n queueMicrotask(() => {\n // Simulate the initial `animationDone` event\n // that gets emitted by the animations module.\n if (!hasEmittedInitial) {\n hasEmittedInitial = true;\n this.animationDone.emit();\n }\n\n this._stateChanged();\n }),\n );\n }\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this._cleanupTransition?.();\n }\n\n _getAnimationDuration() {\n if (this._animationsDisabled) {\n return '0ms';\n }\n\n if (this.animationDuration) {\n return this.animationDuration;\n }\n\n return this.orientation === 'horizontal' ? '500ms' : '225ms';\n }\n\n private _handleTransitionend = (event: TransitionEvent) => {\n const target = event.target as HTMLElement | null;\n\n if (!target) {\n return;\n }\n\n // Because we bind a single `transitionend` handler on the host node and because transition\n // events bubble, we have to filter down to only the active step so don't emit events too\n // often. We check the orientation and `property` name first to reduce the amount of times\n // we need to check the DOM.\n const isHorizontalActiveElement =\n this.orientation === 'horizontal' &&\n event.propertyName === 'transform' &&\n target.classList.contains('mat-horizontal-stepper-content-current');\n const isVerticalActiveElement =\n this.orientation === 'vertical' &&\n event.propertyName === 'grid-template-rows' &&\n target.classList.contains('mat-vertical-content-container-active');\n\n // Finally we need to ensure that the animated element is a direct descendant,\n // rather than one coming from a nested stepper.\n const shouldEmit =\n (isHorizontalActiveElement || isVerticalActiveElement) &&\n this._animatedContainers.find(ref => ref.nativeElement === target);\n\n if (shouldEmit) {\n this._onAnimationDone();\n }\n };\n\n private _onAnimationDone() {\n this._isAnimating.set(false);\n this.animationDone.emit();\n }\n}\n","<ng-template>\n <ng-content></ng-content>\n <ng-template [cdkPortalOutlet]=\"_portal\"></ng-template>\n</ng-template>\n","<!--\n We need to project the content somewhere to avoid hydration errors. Some observations:\n 1. This is only necessary on the server.\n 2. We get a hydration error if there aren't any nodes after the `ng-content`.\n 3. We get a hydration error if `ng-content` is wrapped in another element.\n-->\n@if (_isServer) {\n <ng-content/>\n}\n\n@switch (orientation) {\n @case ('horizontal') {\n <div class=\"mat-horizontal-stepper-wrapper\">\n @if (headerPrefix()) {\n <div class=\"mat-horizontal-stepper-header-wrapper\">\n <ng-container [ngTemplateOutlet]=\"headerPrefix()\"/>\n <ng-container [ngTemplateOutlet]=\"horizontalStepsTemplate\"\n [ngTemplateOutletContext]=\"{steps}\"/>\n </div>\n } @else {\n <ng-container [ngTemplateOutlet]=\"horizontalStepsTemplate\"\n [ngTemplateOutletContext]=\"{steps}\"/>\n }\n\n <div class=\"mat-horizontal-content-container\">\n @for (step of steps; track step) {\n <div\n #animatedContainer\n class=\"mat-horizontal-stepper-content\"\n role=\"tabpanel\"\n [id]=\"_getStepContentId($index)\"\n [attr.aria-labelledby]=\"_getStepLabelId($index)\"\n [class]=\"'mat-horizontal-stepper-content-' + _getAnimationDirection($index)\"\n [attr.inert]=\"selectedIndex === $index ? null : ''\">\n <ng-container [ngTemplateOutlet]=\"step.content\"/>\n </div>\n }\n </div>\n </div>\n }\n\n @case ('vertical') {\n <div class=\"mat-vertical-stepper-wrapper\">\n @if (headerPrefix()) {\n <ng-container [ngTemplateOutlet]=\"headerPrefix()\"/>\n }\n\n @for (step of steps; track step) {\n <div class=\"mat-step\">\n <ng-container\n [ngTemplateOutlet]=\"stepTemplate\"\n [ngTemplateOutletContext]=\"{step}\"/>\n <div\n #animatedContainer\n class=\"mat-vertical-content-container\"\n [class.mat-stepper-vertical-line]=\"!$last\"\n [class.mat-vertical-content-container-active]=\"selectedIndex === $index\"\n [attr.inert]=\"selectedIndex === $index ? null : ''\">\n <div \n class=\"mat-vertical-stepper-content\"\n role=\"region\"\n [id]=\"_getStepContentId($index)\"\n [attr.aria-labelledby]=\"_getStepLabelId($index)\">\n <div class=\"mat-vertical-content\">\n <ng-container [ngTemplateOutlet]=\"step.content\"/>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n }\n}\n\n<!-- Common step templating -->\n<ng-template let-step=\"step\" #stepTemplate>\n <mat-step-header\n [class.mat-horizontal-stepper-header]=\"orientation === 'horizontal'\"\n [class.mat-vertical-stepper-header]=\"orientation === 'vertical'\"\n (click)=\"step.select()\"\n (keydown)=\"_onKeydown($event)\"\n [tabIndex]=\"_getFocusIndex() === step.index() ? 0 : -1\"\n [id]=\"_getStepLabelId(step.index())\"\n [attr.role]=\"orientation === 'horizontal' ? 'tab' : 'button'\"\n [attr.aria-posinset]=\"orientation === 'horizontal' ? step.index() + 1 : null\"\n [attr.aria-setsize]=\"orientation === 'horizontal' ? steps.length : null\"\n [attr.aria-selected]=\"orientation === 'horizontal' ? step.isSelected() : null\"\n [attr.aria-current]=\"orientation === 'vertical' && step.isSelected() ? 'step' : null\"\n [attr.aria-disabled]=\"orientation === 'vertical' && step.isSelected() ? 'true' : null\"\n [attr.aria-expanded]=\"orientation === 'vertical' ? step.isSelected() : null\"\n [attr.aria-controls]=\"_getStepContentId(step.index())\"\n [attr.aria-label]=\"step.ariaLabel || null\"\n [attr.aria-labelledby]=\"(!step.ariaLabel && step.ariaLabelledby) ? step.ariaLabelledby : null\"\n [attr.aria-disabled]=\"step.isNavigable() ? null : true\"\n [index]=\"step.index()\"\n [state]=\"step.indicatorType()\"\n [label]=\"step.stepLabel || step.label\"\n [selected]=\"step.isSelected()\"\n [active]=\"step.isNavigable()\"\n [optional]=\"step.optional\"\n [errorMessage]=\"step.errorMessage\"\n [iconOverrides]=\"_iconOverrides\"\n [disableRipple]=\"disableRipple || !step.isNavigable()\"\n [color]=\"step.color || color\"/>\n</ng-template>\n\n<ng-template #horizontalStepsTemplate let-steps=\"steps\">\n <div \n aria-orientation=\"horizontal\"\n class=\"mat-horizontal-stepper-header-container\" \n role=\"tablist\">\n @for (step of steps; track step) {\n <ng-container\n [ngTemplateOutlet]=\"stepTemplate\"\n [ngTemplateOutletContext]=\"{step}\"/>\n @if (!$last) {\n <div class=\"mat-stepper-horizontal-line\"></div>\n }\n }\n </div>\n</ng-template>\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 {CdkStepperNext, CdkStepperPrevious} from '@angular/cdk/stepper';\nimport {Directive} from '@angular/core';\n\n/** Button that moves to the next step in a stepper workflow. */\n@Directive({\n selector: 'button[matStepperNext]',\n host: {\n 'class': 'mat-stepper-next',\n '[type]': 'type',\n },\n})\nexport class MatStepperNext extends CdkStepperNext {}\n\n/** Button that moves to the previous step in a stepper workflow. */\n@Directive({\n selector: 'button[matStepperPrevious]',\n host: {\n 'class': 'mat-stepper-previous',\n '[type]': 'type',\n },\n})\nexport class MatStepperPrevious extends CdkStepperPrevious {}\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 {BidiModule} from '@angular/cdk/bidi';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {CdkStepperModule} from '@angular/cdk/stepper';\nimport {NgModule} from '@angular/core';\nimport {ErrorStateMatcher, MatRippleModule} from '../core';\nimport {MatIconModule} from '../icon';\nimport {MatStepHeader} from './step-header';\nimport {MatStepLabel} from './step-label';\nimport {MatStep, MatStepper} from './stepper';\nimport {MatStepperNext, MatStepperPrevious} from './stepper-button';\nimport {MatStepperIcon} from './stepper-icon';\nimport {MatStepContent} from './step-content';\n\n@NgModule({\n imports: [\n PortalModule,\n CdkStepperModule,\n MatIconModule,\n MatRippleModule,\n MatStep,\n MatStepLabel,\n MatStepper,\n MatStepperNext,\n MatStepperPrevious,\n MatStepHeader,\n MatStepperIcon,\n MatStepContent,\n ],\n exports: [\n BidiModule,\n MatStep,\n MatStepLabel,\n MatStepper,\n MatStepperNext,\n MatStepperPrevious,\n MatStepHeader,\n MatStepperIcon,\n MatStepContent,\n ],\n providers: [ErrorStateMatcher],\n})\nexport class MatStepperModule {}\n"],"names":["MatStepLabel","CdkStepLabel","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","usesInheritance","ngImport","decorators","args","MatStepperIntl","changes","Subject","optionalLabel","completedLabel","editableLabel","Injectable","ɵprov","ɵɵngDeclareInjectable","minVersion","version","type","providedIn","MatStepHeader","CdkStepHeader","_intl","inject","_focusMonitor","FocusMonitor","_intlSubscription","state","label","errorMessage","iconOverrides","index","selected","active","optional","disableRipple","color","constructor","styleLoader","_CdkPrivateStyleLoader","load","_StructuralStylesLoader","_VisuallyHiddenLoader","changeDetectorRef","ChangeDetectorRef","subscribe","markForCheck","ngAfterViewInit","monitor","_elementRef","ngOnDestroy","unsubscribe","stopMonitoring","focus","origin","options","focusVia","nativeElement","_stringLabel","_templateLabel","_getHostElement","_getDefaultTextForState","_hasEmptyLabel","_hasOptionalLabel","_hasErrorLabel","Component","ɵcmp","ɵɵngDeclareComponent","styles","dependencies","kind","MatRipple","inputs","exportAs","NgTemplateOutlet","MatIcon","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","host","imports","template","Input","MatStepperIcon","templateRef","TemplateRef","name","MatStepContent","_template","MatStep","CdkStep","_errorStateMatcher","ErrorStateMatcher","skipSelf","_viewContainerRef","ViewContainerRef","_isSelected","Subscription","EMPTY","stepLabel","undefined","_lazyContent","_portal","ngAfterContentInit","_stepper","steps","pipe","switchMap","selectionChange","map","event","selectedStep","startWith","isSelected","TemplatePortal","isErrorState","control","form","originalErrorState","customErrorState","invalid","interacted","attributes","providers","provide","useExisting","queries","propertyName","first","predicate","descendants","CdkPortalOutlet","outputs","ContentChild","static","MatStepper","CdkStepper","_ngZone","NgZone","_renderer","Renderer2","_animationsDisabled","_cleanupTransition","_isAnimating","signal","_stepHeader","_animatedContainers","_steps","QueryList","_icons","animationDone","EventEmitter","labelPosition","headerPosition","headerPrefix","input","_iconOverrides","animationDuration","_animationDuration","value","test","_isServer","Platform","isBrowser","elementRef","ElementRef","nodeName","toLowerCase","orientation","forEach","takeUntil","_destroyed","_stateChanged","selectedIndexChange","duration","_getAnimationDuration","_onAnimationDone","set","runOutsideAngular","setTimeout","classList","add","listen","_handleTransitionend","queueMicrotask","hasEmittedInitial","emit","isHorizontalActiveElement","contains","isVerticalActiveElement","shouldEmit","find","ref","classPropertyName","publicName","isSignal","isRequired","transformFunction","properties","viewQueries","ViewChildren","ContentChildren","Output","MatStepperNext","CdkStepperNext","classAttribute","MatStepperPrevious","CdkStepperPrevious","MatStepperModule","NgModule","ɵmod","ɵɵngDeclareNgModule","PortalModule","CdkStepperModule","MatIconModule","MatRippleModule","BidiModule","ɵinj","ɵɵngDeclareInjector","exports"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"table-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/table/testing/cell-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/table/testing/row-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/table/testing/table-harness.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\nimport {\n ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {CellHarnessFilters} from './table-harness-filters';\n\nexport abstract class _MatCellHarnessBase extends ContentContainerComponentHarness {\n /** Gets the cell's text. */\n async getText(): Promise<string> {\n return (await this.host()).text();\n }\n\n /** Gets the name of the column that the cell belongs to. */\n async getColumnName(): Promise<string> {\n const host = await this.host();\n const classAttribute = await host.getAttribute('class');\n\n if (classAttribute) {\n const prefix = 'mat-column-';\n const name = classAttribute\n .split(' ')\n .map(c => c.trim())\n .find(c => c.startsWith(prefix));\n\n if (name) {\n return name.split(prefix)[1];\n }\n }\n\n throw Error('Could not determine column name of cell.');\n }\n\n protected static _getCellPredicate<T extends MatCellHarness>(\n type: ComponentHarnessConstructor<T>,\n options: CellHarnessFilters,\n ): HarnessPredicate<T> {\n return new HarnessPredicate(type, options)\n .addOption('text', options.text, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getText(), text),\n )\n .addOption('columnName', options.columnName, (harness, name) =>\n HarnessPredicate.stringMatches(harness.getColumnName(), name),\n );\n }\n}\n\n/** Harness for interacting with an Angular Material table cell. */\nexport class MatCellHarness extends _MatCellHarnessBase {\n /** The selector for the host element of a `MatCellHarness` instance. */\n static hostSelector = '.mat-mdc-cell:not(.mat-no-data-cell)';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a table cell with specific attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: CellHarnessFilters = {}): HarnessPredicate<MatCellHarness> {\n return _MatCellHarnessBase._getCellPredicate(this, options);\n }\n}\n\n/** Harness for interacting with an Angular Material table header cell. */\nexport class MatHeaderCellHarness extends _MatCellHarnessBase {\n /** The selector for the host element of a `MatHeaderCellHarness` instance. */\n static hostSelector = '.mat-mdc-header-cell';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a table header cell with specific\n * attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: CellHarnessFilters = {}): HarnessPredicate<MatHeaderCellHarness> {\n return _MatCellHarnessBase._getCellPredicate(this, options);\n }\n}\n\n/** Harness for interacting with an Angular Material table footer cell. */\nexport class MatFooterCellHarness extends _MatCellHarnessBase {\n /** The selector for the host element of a `MatFooterCellHarness` instance. */\n static hostSelector = '.mat-mdc-footer-cell';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a table footer cell with specific\n * attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: CellHarnessFilters = {}): HarnessPredicate<MatFooterCellHarness> {\n return _MatCellHarnessBase._getCellPredicate(this, options);\n }\n}\n\n/** Harness for interacting with an Angular Material table cell inside a \"no data\" row. */\nexport class MatNoDataCellHarness extends _MatCellHarnessBase {\n /** The selector for the host element of a `MatNoDataCellHarness` instance. */\n static hostSelector = '.mat-no-data-cell';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a table cell with specific attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: CellHarnessFilters = {}): HarnessPredicate<MatNoDataCellHarness> {\n return _MatCellHarnessBase._getCellPredicate(this, options);\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 ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n parallel,\n} from '@angular/cdk/testing';\nimport {\n _MatCellHarnessBase,\n MatCellHarness,\n MatFooterCellHarness,\n MatHeaderCellHarness,\n MatNoDataCellHarness,\n} from './cell-harness';\nimport {CellHarnessFilters, RowHarnessFilters} from './table-harness-filters';\n\n/** Text extracted from a table row organized by columns. */\nexport interface MatRowHarnessColumnsText {\n [columnName: string]: string;\n}\n\nexport abstract class _MatRowHarnessBase<\n CellType extends ComponentHarnessConstructor<Cell> & {\n with: (options?: CellHarnessFilters) => HarnessPredicate<Cell>;\n },\n Cell extends _MatCellHarnessBase,\n> extends ComponentHarness {\n protected abstract _cellHarness: CellType;\n\n /** Gets a list of `MatCellHarness` for all cells in the row. */\n async getCells(filter: CellHarnessFilters = {}): Promise<Cell[]> {\n return this.locatorForAll(this._cellHarness.with(filter))();\n }\n\n /** Gets the text of the cells in the row. */\n async getCellTextByIndex(filter: CellHarnessFilters = {}): Promise<string[]> {\n const cells = await this.getCells(filter);\n return parallel(() => cells.map(cell => cell.getText()));\n }\n\n /** Gets the text inside the row organized by columns. */\n async getCellTextByColumnName(): Promise<MatRowHarnessColumnsText> {\n const output: MatRowHarnessColumnsText = {};\n const cells = await this.getCells();\n const cellsData = await parallel(() =>\n cells.map(cell => {\n return parallel(() => [cell.getColumnName(), cell.getText()]);\n }),\n );\n cellsData.forEach(([columnName, text]) => (output[columnName] = text));\n return output;\n }\n}\n\n/** Harness for interacting with an Angular Material table row. */\nexport class MatRowHarness extends _MatRowHarnessBase<typeof MatCellHarness, MatCellHarness> {\n /** The selector for the host element of a `MatRowHarness` instance. */\n static hostSelector = '.mat-mdc-row:not(.mat-mdc-no-data-row)';\n protected _cellHarness = MatCellHarness;\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a table row with specific attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatRowHarness>(\n this: ComponentHarnessConstructor<T>,\n options: RowHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n}\n\n/** Harness for interacting with an Angular Material table header row. */\nexport class MatHeaderRowHarness extends _MatRowHarnessBase<\n typeof MatHeaderCellHarness,\n MatHeaderCellHarness\n> {\n /** The selector for the host element of a `MatHeaderRowHarness` instance. */\n static hostSelector = '.mat-mdc-header-row';\n protected _cellHarness = MatHeaderCellHarness;\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a table header row with specific\n * attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatHeaderRowHarness>(\n this: ComponentHarnessConstructor<T>,\n options: RowHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n}\n\n/** Harness for interacting with an Angular Material table footer row. */\nexport class MatFooterRowHarness extends _MatRowHarnessBase<\n typeof MatFooterCellHarness,\n MatFooterCellHarness\n> {\n /** The selector for the host element of a `MatFooterRowHarness` instance. */\n static hostSelector = '.mat-mdc-footer-row';\n protected _cellHarness = MatFooterCellHarness;\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a table footer row cell with specific\n * attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatFooterRowHarness>(\n this: ComponentHarnessConstructor<T>,\n options: RowHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n}\n\n/** Harness for interacting with an Angular Material table \"no data\" row. */\nexport class MatNoDataRowHarness extends _MatRowHarnessBase<\n typeof MatHeaderCellHarness,\n MatHeaderCellHarness\n> {\n /** The selector for the host element of a `MatNoDataRowHarness` instance. */\n static hostSelector = '.mat-mdc-no-data-row';\n protected _cellHarness = MatNoDataCellHarness;\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a table header row with specific\n * attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatNoDataRowHarness>(\n this: ComponentHarnessConstructor<T>,\n options: RowHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\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 ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessPredicate,\n parallel,\n} from '@angular/cdk/testing';\nimport {\n MatFooterRowHarness,\n MatHeaderRowHarness,\n MatNoDataRowHarness,\n MatRowHarness,\n MatRowHarnessColumnsText,\n} from './row-harness';\nimport {RowHarnessFilters, TableHarnessFilters} from './table-harness-filters';\n\n/** Text extracted from a table organized by columns. */\nexport interface MatTableHarnessColumnsText {\n [columnName: string]: {\n text: string[];\n headerText: string[];\n footerText: string[];\n };\n}\n\n/** Harness for interacting with a mat-table in tests. */\nexport class MatTableHarness extends ContentContainerComponentHarness<string> {\n /** The selector for the host element of a `MatTableHarness` instance. */\n static hostSelector = '.mat-mdc-table';\n _headerRowHarness = MatHeaderRowHarness;\n _rowHarness = MatRowHarness;\n private _footerRowHarness = MatFooterRowHarness;\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a table with specific attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatTableHarness>(\n this: ComponentHarnessConstructor<T>,\n options: TableHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /** Gets all the header rows in a table. */\n async getHeaderRows(filter: RowHarnessFilters = {}): Promise<MatHeaderRowHarness[]> {\n return this.locatorForAll(this._headerRowHarness.with(filter))();\n }\n\n /** Gets all the regular data rows in a table. */\n async getRows(filter: RowHarnessFilters = {}): Promise<MatRowHarness[]> {\n return this.locatorForAll(this._rowHarness.with(filter))();\n }\n\n /** Gets all the footer rows in a table. */\n async getFooterRows(filter: RowHarnessFilters = {}): Promise<MatFooterRowHarness[]> {\n return this.locatorForAll(this._footerRowHarness.with(filter))();\n }\n\n /** Gets the \"no data\" row in the table, if any. */\n async getNoDataRow(filter: RowHarnessFilters = {}): Promise<MatNoDataRowHarness | null> {\n return this.locatorForOptional(MatNoDataRowHarness.with(filter))();\n }\n\n /** Gets the text inside the entire table organized by rows. */\n async getCellTextByIndex(): Promise<string[][]> {\n const rows = await this.getRows();\n return parallel(() => rows.map(row => row.getCellTextByIndex()));\n }\n\n /** Gets the text inside the entire table organized by columns. */\n async getCellTextByColumnName(): Promise<MatTableHarnessColumnsText> {\n const [headerRows, footerRows, dataRows] = await parallel(() => [\n this.getHeaderRows(),\n this.getFooterRows(),\n this.getRows(),\n ]);\n\n const text: MatTableHarnessColumnsText = {};\n const [headerData, footerData, rowsData] = await parallel(() => [\n parallel(() => headerRows.map(row => row.getCellTextByColumnName())),\n parallel(() => footerRows.map(row => row.getCellTextByColumnName())),\n parallel(() => dataRows.map(row => row.getCellTextByColumnName())),\n ]);\n\n rowsData.forEach(data => {\n Object.keys(data).forEach(columnName => {\n const cellText = data[columnName];\n\n if (!text[columnName]) {\n text[columnName] = {\n headerText: getCellTextsByColumn(headerData, columnName),\n footerText: getCellTextsByColumn(footerData, columnName),\n text: [],\n };\n }\n\n text[columnName].text.push(cellText);\n });\n });\n\n return text;\n }\n}\n\n/** Extracts the text of cells only under a particular column. */\nfunction getCellTextsByColumn(rowsData: MatRowHarnessColumnsText[], column: string): string[] {\n const columnTexts: string[] = [];\n\n rowsData.forEach(data => {\n Object.keys(data).forEach(columnName => {\n if (columnName === column) {\n columnTexts.push(data[columnName]);\n }\n });\n });\n\n return columnTexts;\n}\n"],"names":["_MatCellHarnessBase","ContentContainerComponentHarness","getText","host","text","getColumnName","classAttribute","getAttribute","prefix","name","split","map","c","trim","find","startsWith","Error","_getCellPredicate","type","options","HarnessPredicate","addOption","harness","stringMatches","columnName","MatCellHarness","hostSelector","with","MatHeaderCellHarness","MatFooterCellHarness","MatNoDataCellHarness","_MatRowHarnessBase","ComponentHarness","getCells","filter","locatorForAll","_cellHarness","getCellTextByIndex","cells","parallel","cell","getCellTextByColumnName","output","cellsData","forEach","MatRowHarness","MatHeaderRowHarness","MatFooterRowHarness","MatNoDataRowHarness","MatTableHarness","_headerRowHarness","_rowHarness","_footerRowHarness","getHeaderRows","getRows","getFooterRows","getNoDataRow","locatorForOptional","rows","row","headerRows","footerRows","dataRows","headerData","footerData","rowsData","data","Object","keys","cellText","headerText","getCellTextsByColumn","footerText","push","column","columnTexts"],"mappings":"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"}
{"version":3,"file":"table-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/table/testing/cell-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/table/testing/row-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/table/testing/table-harness.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\nimport {\n ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {CellHarnessFilters} from './table-harness-filters';\n\nexport abstract class _MatCellHarnessBase extends ContentContainerComponentHarness {\n /** Gets the cell's text. */\n async getText(): Promise<string> {\n return (await this.host()).text();\n }\n\n /** Gets the name of the column that the cell belongs to. */\n async getColumnName(): Promise<string> {\n const host = await this.host();\n const classAttribute = await host.getAttribute('class');\n\n if (classAttribute) {\n const prefix = 'mat-column-';\n const name = classAttribute\n .split(' ')\n .map(c => c.trim())\n .find(c => c.startsWith(prefix));\n\n if (name) {\n return name.split(prefix)[1];\n }\n }\n\n throw Error('Could not determine column name of cell.');\n }\n\n protected static _getCellPredicate<T extends MatCellHarness>(\n type: ComponentHarnessConstructor<T>,\n options: CellHarnessFilters,\n ): HarnessPredicate<T> {\n return new HarnessPredicate(type, options)\n .addOption('text', options.text, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getText(), text),\n )\n .addOption('columnName', options.columnName, (harness, name) =>\n HarnessPredicate.stringMatches(harness.getColumnName(), name),\n );\n }\n}\n\n/** Harness for interacting with an Angular Material table cell. */\nexport class MatCellHarness extends _MatCellHarnessBase {\n /** The selector for the host element of a `MatCellHarness` instance. */\n static hostSelector = '.mat-mdc-cell:not(.mat-no-data-cell)';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a table cell with specific attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: CellHarnessFilters = {}): HarnessPredicate<MatCellHarness> {\n return _MatCellHarnessBase._getCellPredicate(this, options);\n }\n}\n\n/** Harness for interacting with an Angular Material table header cell. */\nexport class MatHeaderCellHarness extends _MatCellHarnessBase {\n /** The selector for the host element of a `MatHeaderCellHarness` instance. */\n static hostSelector = '.mat-mdc-header-cell';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a table header cell with specific\n * attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: CellHarnessFilters = {}): HarnessPredicate<MatHeaderCellHarness> {\n return _MatCellHarnessBase._getCellPredicate(this, options);\n }\n}\n\n/** Harness for interacting with an Angular Material table footer cell. */\nexport class MatFooterCellHarness extends _MatCellHarnessBase {\n /** The selector for the host element of a `MatFooterCellHarness` instance. */\n static hostSelector = '.mat-mdc-footer-cell';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a table footer cell with specific\n * attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: CellHarnessFilters = {}): HarnessPredicate<MatFooterCellHarness> {\n return _MatCellHarnessBase._getCellPredicate(this, options);\n }\n}\n\n/** Harness for interacting with an Angular Material table cell inside a \"no data\" row. */\nexport class MatNoDataCellHarness extends _MatCellHarnessBase {\n /** The selector for the host element of a `MatNoDataCellHarness` instance. */\n static hostSelector = '.mat-no-data-cell';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a table cell with specific attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: CellHarnessFilters = {}): HarnessPredicate<MatNoDataCellHarness> {\n return _MatCellHarnessBase._getCellPredicate(this, options);\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 ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n parallel,\n} from '@angular/cdk/testing';\nimport {\n _MatCellHarnessBase,\n MatCellHarness,\n MatFooterCellHarness,\n MatHeaderCellHarness,\n MatNoDataCellHarness,\n} from './cell-harness';\nimport {CellHarnessFilters, RowHarnessFilters} from './table-harness-filters';\n\n/** Text extracted from a table row organized by columns. */\nexport interface MatRowHarnessColumnsText {\n [columnName: string]: string;\n}\n\nexport abstract class _MatRowHarnessBase<\n CellType extends ComponentHarnessConstructor<Cell> & {\n with: (options?: CellHarnessFilters) => HarnessPredicate<Cell>;\n },\n Cell extends _MatCellHarnessBase,\n> extends ComponentHarness {\n protected abstract _cellHarness: CellType;\n\n /** Gets a list of `MatCellHarness` for all cells in the row. */\n async getCells(filter: CellHarnessFilters = {}): Promise<Cell[]> {\n return this.locatorForAll(this._cellHarness.with(filter))();\n }\n\n /** Gets the text of the cells in the row. */\n async getCellTextByIndex(filter: CellHarnessFilters = {}): Promise<string[]> {\n const cells = await this.getCells(filter);\n return parallel(() => cells.map(cell => cell.getText()));\n }\n\n /** Gets the text inside the row organized by columns. */\n async getCellTextByColumnName(): Promise<MatRowHarnessColumnsText> {\n const output: MatRowHarnessColumnsText = {};\n const cells = await this.getCells();\n const cellsData = await parallel(() =>\n cells.map(cell => {\n return parallel(() => [cell.getColumnName(), cell.getText()]);\n }),\n );\n cellsData.forEach(([columnName, text]) => (output[columnName] = text));\n return output;\n }\n}\n\n/** Harness for interacting with an Angular Material table row. */\nexport class MatRowHarness extends _MatRowHarnessBase<typeof MatCellHarness, MatCellHarness> {\n /** The selector for the host element of a `MatRowHarness` instance. */\n static hostSelector = '.mat-mdc-row:not(.mat-mdc-no-data-row)';\n protected _cellHarness = MatCellHarness;\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a table row with specific attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatRowHarness>(\n this: ComponentHarnessConstructor<T>,\n options: RowHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n}\n\n/** Harness for interacting with an Angular Material table header row. */\nexport class MatHeaderRowHarness extends _MatRowHarnessBase<\n typeof MatHeaderCellHarness,\n MatHeaderCellHarness\n> {\n /** The selector for the host element of a `MatHeaderRowHarness` instance. */\n static hostSelector = '.mat-mdc-header-row';\n protected _cellHarness = MatHeaderCellHarness;\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a table header row with specific\n * attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatHeaderRowHarness>(\n this: ComponentHarnessConstructor<T>,\n options: RowHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n}\n\n/** Harness for interacting with an Angular Material table footer row. */\nexport class MatFooterRowHarness extends _MatRowHarnessBase<\n typeof MatFooterCellHarness,\n MatFooterCellHarness\n> {\n /** The selector for the host element of a `MatFooterRowHarness` instance. */\n static hostSelector = '.mat-mdc-footer-row';\n protected _cellHarness = MatFooterCellHarness;\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a table footer row cell with specific\n * attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatFooterRowHarness>(\n this: ComponentHarnessConstructor<T>,\n options: RowHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n}\n\n/** Harness for interacting with an Angular Material table \"no data\" row. */\nexport class MatNoDataRowHarness extends _MatRowHarnessBase<\n typeof MatHeaderCellHarness,\n MatHeaderCellHarness\n> {\n /** The selector for the host element of a `MatNoDataRowHarness` instance. */\n static hostSelector = '.mat-mdc-no-data-row';\n protected _cellHarness = MatNoDataCellHarness;\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a table header row with specific\n * attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatNoDataRowHarness>(\n this: ComponentHarnessConstructor<T>,\n options: RowHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\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 ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessPredicate,\n parallel,\n} from '@angular/cdk/testing';\nimport {\n MatFooterRowHarness,\n MatHeaderRowHarness,\n MatNoDataRowHarness,\n MatRowHarness,\n MatRowHarnessColumnsText,\n} from './row-harness';\nimport {RowHarnessFilters, TableHarnessFilters} from './table-harness-filters';\n\n/** Text extracted from a table organized by columns. */\nexport interface MatTableHarnessColumnsText {\n [columnName: string]: {\n text: string[];\n headerText: string[];\n footerText: string[];\n };\n}\n\n/** Harness for interacting with a mat-table in tests. */\nexport class MatTableHarness extends ContentContainerComponentHarness<string> {\n /** The selector for the host element of a `MatTableHarness` instance. */\n static hostSelector = '.mat-mdc-table';\n _headerRowHarness = MatHeaderRowHarness;\n _rowHarness = MatRowHarness;\n private _footerRowHarness = MatFooterRowHarness;\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a table with specific attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatTableHarness>(\n this: ComponentHarnessConstructor<T>,\n options: TableHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /** Gets all the header rows in a table. */\n async getHeaderRows(filter: RowHarnessFilters = {}): Promise<MatHeaderRowHarness[]> {\n return this.locatorForAll(this._headerRowHarness.with(filter))();\n }\n\n /** Gets all the regular data rows in a table. */\n async getRows(filter: RowHarnessFilters = {}): Promise<MatRowHarness[]> {\n return this.locatorForAll(this._rowHarness.with(filter))();\n }\n\n /** Gets all the footer rows in a table. */\n async getFooterRows(filter: RowHarnessFilters = {}): Promise<MatFooterRowHarness[]> {\n return this.locatorForAll(this._footerRowHarness.with(filter))();\n }\n\n /** Gets the \"no data\" row in the table, if any. */\n async getNoDataRow(filter: RowHarnessFilters = {}): Promise<MatNoDataRowHarness | null> {\n return this.locatorForOptional(MatNoDataRowHarness.with(filter))();\n }\n\n /** Gets the text inside the entire table organized by rows. */\n async getCellTextByIndex(): Promise<string[][]> {\n const rows = await this.getRows();\n return parallel(() => rows.map(row => row.getCellTextByIndex()));\n }\n\n /** Gets the text inside the entire table organized by columns. */\n async getCellTextByColumnName(): Promise<MatTableHarnessColumnsText> {\n const [headerRows, footerRows, dataRows] = await parallel(() => [\n this.getHeaderRows(),\n this.getFooterRows(),\n this.getRows(),\n ]);\n\n const text: MatTableHarnessColumnsText = {};\n const [headerData, footerData, rowsData] = await parallel(() => [\n parallel(() => headerRows.map(row => row.getCellTextByColumnName())),\n parallel(() => footerRows.map(row => row.getCellTextByColumnName())),\n parallel(() => dataRows.map(row => row.getCellTextByColumnName())),\n ]);\n\n rowsData.forEach(data => {\n Object.keys(data).forEach(columnName => {\n const cellText = data[columnName];\n\n if (!text[columnName]) {\n text[columnName] = {\n headerText: getCellTextsByColumn(headerData, columnName),\n footerText: getCellTextsByColumn(footerData, columnName),\n text: [],\n };\n }\n\n text[columnName].text.push(cellText);\n });\n });\n\n return text;\n }\n}\n\n/** Extracts the text of cells only under a particular column. */\nfunction getCellTextsByColumn(rowsData: MatRowHarnessColumnsText[], column: string): string[] {\n const columnTexts: string[] = [];\n\n rowsData.forEach(data => {\n Object.keys(data).forEach(columnName => {\n if (columnName === column) {\n columnTexts.push(data[columnName]);\n }\n });\n });\n\n return columnTexts;\n}\n"],"names":["_MatCellHarnessBase","ContentContainerComponentHarness","getText","host","text","getColumnName","classAttribute","getAttribute","prefix","name","split","map","c","trim","find","startsWith","Error","_getCellPredicate","type","options","HarnessPredicate","addOption","harness","stringMatches","columnName","MatCellHarness","hostSelector","with","MatHeaderCellHarness","MatFooterCellHarness","MatNoDataCellHarness","_MatRowHarnessBase","ComponentHarness","getCells","filter","locatorForAll","_cellHarness","getCellTextByIndex","cells","parallel","cell","getCellTextByColumnName","output","cellsData","forEach","MatRowHarness","MatHeaderRowHarness","MatFooterRowHarness","MatNoDataRowHarness","MatTableHarness","_headerRowHarness","_rowHarness","_footerRowHarness","getHeaderRows","getRows","getFooterRows","getNoDataRow","locatorForOptional","rows","row","headerRows","footerRows","dataRows","headerData","footerData","rowsData","data","Object","keys","cellText","headerText","getCellTextsByColumn","footerText","push","column","columnTexts"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"table.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/table/table.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/table/cell.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/table/row.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/table/text-column.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/table/table-module.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/table/table-data-source.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\nimport {ChangeDetectionStrategy, Component, Directive, ViewEncapsulation} from '@angular/core';\nimport {\n CdkTable,\n CDK_TABLE,\n STICKY_POSITIONING_LISTENER,\n HeaderRowOutlet,\n DataRowOutlet,\n NoDataRowOutlet,\n FooterRowOutlet,\n} from '@angular/cdk/table';\nimport {_DisposeViewRepeaterStrategy, _RecycleViewRepeaterStrategy} from '@angular/cdk/collections';\n\n/**\n * Enables the recycle view repeater strategy, which reduces rendering latency. Not compatible with\n * tables that animate rows.\n *\n * @deprecated This directive is a no-op and will be removed.\n * @breaking-change 23.0.0\n */\n@Directive({selector: 'mat-table[recycleRows], table[mat-table][recycleRows]'})\nexport class MatRecycleRows {}\n\n@Component({\n selector: 'mat-table, table[mat-table]',\n exportAs: 'matTable',\n // Note that according to MDN, the `caption` element has to be projected as the **first**\n // element in the table. See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/caption\n template: `\n <ng-content select=\"caption\"/>\n <ng-content select=\"colgroup, col\"/>\n\n <!--\n Unprojected content throws a hydration error so we need this to capture it.\n It gets removed on the client so it doesn't affect the layout.\n -->\n @if (_isServer) {\n <ng-content/>\n }\n\n @if (_isNativeHtmlTable) {\n <thead role=\"rowgroup\">\n <ng-container headerRowOutlet/>\n </thead>\n <tbody class=\"mdc-data-table__content\" role=\"rowgroup\">\n <ng-container rowOutlet/>\n <ng-container noDataRowOutlet/>\n </tbody>\n <tfoot role=\"rowgroup\">\n <ng-container footerRowOutlet/>\n </tfoot>\n } @else {\n <ng-container headerRowOutlet/>\n <ng-container rowOutlet/>\n <ng-container noDataRowOutlet/>\n <ng-container footerRowOutlet/>\n }\n `,\n styleUrl: 'table.css',\n host: {\n 'class': 'mat-mdc-table mdc-data-table__table',\n '[class.mat-table-fixed-layout]': 'fixedLayout',\n },\n providers: [\n {provide: CdkTable, useExisting: MatTable},\n {provide: CDK_TABLE, useExisting: MatTable},\n // Prevent nested tables from seeing this table's StickyPositioningListener.\n {provide: STICKY_POSITIONING_LISTENER, useValue: null},\n ],\n encapsulation: ViewEncapsulation.None,\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n imports: [HeaderRowOutlet, DataRowOutlet, NoDataRowOutlet, FooterRowOutlet],\n})\nexport class MatTable<T> extends CdkTable<T> {\n /** Overrides the sticky CSS class set by the `CdkTable`. */\n protected override stickyCssClass = 'mat-mdc-table-sticky';\n\n /** Overrides the need to add position: sticky on every sticky cell element in `CdkTable`. */\n protected override needsPositionStickyOnElement = false;\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 {Directive, Input} from '@angular/core';\nimport {\n CdkCell,\n CdkCellDef,\n CdkColumnDef,\n CdkFooterCell,\n CdkFooterCellDef,\n CdkHeaderCell,\n CdkHeaderCellDef,\n} from '@angular/cdk/table';\n\n/**\n * Cell definition for the mat-table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\n@Directive({\n selector: '[matCellDef]',\n providers: [{provide: CdkCellDef, useExisting: MatCellDef}],\n})\nexport class MatCellDef extends CdkCellDef {}\n\n/**\n * Header cell definition for the mat-table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\n@Directive({\n selector: '[matHeaderCellDef]',\n providers: [{provide: CdkHeaderCellDef, useExisting: MatHeaderCellDef}],\n})\nexport class MatHeaderCellDef extends CdkHeaderCellDef {}\n\n/**\n * Footer cell definition for the mat-table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\n@Directive({\n selector: '[matFooterCellDef]',\n providers: [{provide: CdkFooterCellDef, useExisting: MatFooterCellDef}],\n})\nexport class MatFooterCellDef extends CdkFooterCellDef {}\n\n/**\n * Column definition for the mat-table.\n * Defines a set of cells available for a table column.\n */\n@Directive({\n selector: '[matColumnDef]',\n providers: [{provide: CdkColumnDef, useExisting: MatColumnDef}],\n})\nexport class MatColumnDef extends CdkColumnDef {\n /** Unique name for this column. */\n @Input('matColumnDef')\n override get name(): string {\n return this._name;\n }\n override set name(name: string) {\n this._setNameInput(name);\n }\n\n /**\n * Add \"mat-column-\" prefix in addition to \"cdk-column-\" prefix.\n * In the future, this will only add \"mat-column-\" and columnCssClassName\n * will change from type string[] to string.\n * @docs-private\n */\n protected override _updateColumnCssClassName() {\n super._updateColumnCssClassName();\n this._columnCssClassName!.push(`mat-column-${this.cssClassFriendlyName}`);\n }\n}\n\n/** Header cell template container that adds the right classes and role. */\n@Directive({\n selector: 'mat-header-cell, th[mat-header-cell]',\n host: {\n 'class': 'mat-mdc-header-cell mdc-data-table__header-cell',\n 'role': 'columnheader',\n },\n})\nexport class MatHeaderCell extends CdkHeaderCell {}\n\n/** Footer cell template container that adds the right classes and role. */\n@Directive({\n selector: 'mat-footer-cell, td[mat-footer-cell]',\n host: {\n 'class': 'mat-mdc-footer-cell mdc-data-table__cell',\n },\n})\nexport class MatFooterCell extends CdkFooterCell {}\n\n/** Cell template container that adds the right classes and role. */\n@Directive({\n selector: 'mat-cell, td[mat-cell]',\n host: {\n 'class': 'mat-mdc-cell mdc-data-table__cell',\n },\n})\nexport class MatCell extends CdkCell {}\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 CdkFooterRow,\n CdkFooterRowDef,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkRow,\n CdkRowDef,\n CdkNoDataRow,\n CdkCellOutlet,\n} from '@angular/cdk/table';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ViewEncapsulation,\n booleanAttribute,\n} from '@angular/core';\n\n// We can't reuse `CDK_ROW_TEMPLATE` because it's incompatible with local compilation mode.\nconst ROW_TEMPLATE = `<ng-container cdkCellOutlet></ng-container>`;\n\n/**\n * Header row definition for the mat-table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\n@Directive({\n selector: '[matHeaderRowDef]',\n providers: [{provide: CdkHeaderRowDef, useExisting: MatHeaderRowDef}],\n inputs: [\n {name: 'columns', alias: 'matHeaderRowDef'},\n {name: 'sticky', alias: 'matHeaderRowDefSticky', transform: booleanAttribute},\n ],\n})\nexport class MatHeaderRowDef extends CdkHeaderRowDef {}\n\n/**\n * Footer row definition for the mat-table.\n * Captures the footer row's template and other footer properties such as the columns to display.\n */\n@Directive({\n selector: '[matFooterRowDef]',\n providers: [{provide: CdkFooterRowDef, useExisting: MatFooterRowDef}],\n inputs: [\n {name: 'columns', alias: 'matFooterRowDef'},\n {name: 'sticky', alias: 'matFooterRowDefSticky', transform: booleanAttribute},\n ],\n})\nexport class MatFooterRowDef extends CdkFooterRowDef {}\n\n/**\n * Data row definition for the mat-table.\n * Captures the data row's template and other properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n */\n@Directive({\n selector: '[matRowDef]',\n providers: [{provide: CdkRowDef, useExisting: MatRowDef}],\n inputs: [\n {name: 'columns', alias: 'matRowDefColumns'},\n {name: 'when', alias: 'matRowDefWhen'},\n ],\n})\nexport class MatRowDef<T> extends CdkRowDef<T> {}\n\n/** Header template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n selector: 'mat-header-row, tr[mat-header-row]',\n template: ROW_TEMPLATE,\n host: {\n 'class': 'mat-mdc-header-row mdc-data-table__header-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matHeaderRow',\n providers: [{provide: CdkHeaderRow, useExisting: MatHeaderRow}],\n imports: [CdkCellOutlet],\n})\nexport class MatHeaderRow extends CdkHeaderRow {}\n\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n selector: 'mat-footer-row, tr[mat-footer-row]',\n template: ROW_TEMPLATE,\n host: {\n 'class': 'mat-mdc-footer-row mdc-data-table__row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matFooterRow',\n providers: [{provide: CdkFooterRow, useExisting: MatFooterRow}],\n imports: [CdkCellOutlet],\n})\nexport class MatFooterRow extends CdkFooterRow {}\n\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n selector: 'mat-row, tr[mat-row]',\n template: ROW_TEMPLATE,\n host: {\n 'class': 'mat-mdc-row mdc-data-table__row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matRow',\n providers: [{provide: CdkRow, useExisting: MatRow}],\n imports: [CdkCellOutlet],\n})\nexport class MatRow extends CdkRow {}\n\n/** Row that can be used to display a message when no data is shown in the table. */\n@Directive({\n selector: 'ng-template[matNoDataRow]',\n providers: [{provide: CdkNoDataRow, useExisting: MatNoDataRow}],\n})\nexport class MatNoDataRow extends CdkNoDataRow {\n override _cellSelector = 'td, mat-cell, [mat-cell], .mat-cell';\n\n constructor() {\n super();\n this._contentClassNames.push('mat-mdc-no-data-row', 'mat-mdc-row', 'mdc-data-table__row');\n this._cellClassNames.push('mat-mdc-cell', 'mdc-data-table__cell', 'mat-no-data-cell');\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 {CdkTextColumn} from '@angular/cdk/table';\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\nimport {MatColumnDef, MatHeaderCellDef, MatHeaderCell, MatCellDef, MatCell} from './cell';\n\n/**\n * Column that simply shows text content for the header and row cells. Assumes that the table\n * is using the native table implementation (`<table>`).\n *\n * By default, the name of this column will be the header text and data property accessor.\n * The header text can be overridden with the `headerText` input. Cell values can be overridden with\n * the `dataAccessor` input. Change the text justification to the start or end using the `justify`\n * input.\n */\n@Component({\n selector: 'mat-text-column',\n template: `\n <ng-container matColumnDef>\n <th mat-header-cell *matHeaderCellDef [style.text-align]=\"justify\">\n {{headerText}}\n </th>\n <td mat-cell *matCellDef=\"let data\" [style.text-align]=\"justify\">\n {{dataAccessor(data, name)}}\n </td>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n // Change detection is intentionally not set to OnPush. This component's template will be provided\n // to the table to be inserted into its view. This is problematic when change detection runs since\n // the bindings in this template will be evaluated _after_ the table's view is evaluated, which\n // mean's the template in the table's view will not have the updated value (and in fact will cause\n // an ExpressionChangedAfterItHasBeenCheckedError).\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n imports: [MatColumnDef, MatHeaderCellDef, MatHeaderCell, MatCellDef, MatCell],\n})\nexport class MatTextColumn<T> extends CdkTextColumn<T> {}\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 {NgModule} from '@angular/core';\nimport {MatRecycleRows, MatTable} from './table';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {CdkTableModule} from '@angular/cdk/table';\nimport {\n MatCell,\n MatCellDef,\n MatColumnDef,\n MatFooterCell,\n MatFooterCellDef,\n MatHeaderCell,\n MatHeaderCellDef,\n} from './cell';\nimport {\n MatFooterRow,\n MatFooterRowDef,\n MatHeaderRow,\n MatHeaderRowDef,\n MatRow,\n MatRowDef,\n MatNoDataRow,\n} from './row';\nimport {MatTextColumn} from './text-column';\n\nconst EXPORTED_DECLARATIONS = [\n // Table\n MatTable,\n MatRecycleRows,\n\n // Template defs\n MatHeaderCellDef,\n MatHeaderRowDef,\n MatColumnDef,\n MatCellDef,\n MatRowDef,\n MatFooterCellDef,\n MatFooterRowDef,\n\n // Cell directives\n MatHeaderCell,\n MatCell,\n MatFooterCell,\n\n // Row directives\n MatHeaderRow,\n MatRow,\n MatFooterRow,\n MatNoDataRow,\n\n MatTextColumn,\n];\n\n@NgModule({\n imports: [CdkTableModule, ...EXPORTED_DECLARATIONS],\n exports: [BidiModule, EXPORTED_DECLARATIONS],\n})\nexport class MatTableModule {}\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 {MatPaginator, PageEvent} from '../paginator';\nimport {\n BehaviorSubject,\n combineLatest,\n merge,\n Observable,\n of as observableOf,\n Subject,\n Subscription,\n} from 'rxjs';\nimport {DataSource} from '@angular/cdk/collections';\nimport {MatSort, Sort} from '../sort';\nimport {_isNumberValue} from '@angular/cdk/coercion';\nimport {map} from 'rxjs/operators';\n\n/**\n * Corresponds to `Number.MAX_SAFE_INTEGER`. Moved out into a variable here due to\n * flaky browser support and the value not being defined in Closure's typings.\n */\nconst MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Data source that accepts a client-side data array and includes native support of filtering,\n * sorting (using MatSort), and pagination (using MatPaginator).\n *\n * Allows for sort customization by overriding sortingDataAccessor, which defines how data\n * properties are accessed. Also allows for filter customization by overriding filterPredicate,\n * which defines how row data is converted to a string for filter matching.\n *\n * **Note:** This class is meant to be a simple data source to help you get started. As such\n * it isn't equipped to handle some more advanced cases like robust i18n support or server-side\n * interactions. If your app needs to support more advanced use cases, consider implementing your\n * own `DataSource`.\n */\nexport class MatTableDataSource<\n // TODO: Remove `any` type below in a breaking change:\n T extends object | any,\n P extends MatPaginator = MatPaginator,\n> extends DataSource<T> {\n /** Stream that emits when a new data array is set on the data source. */\n private readonly _data: BehaviorSubject<T[]>;\n\n /** Stream emitting render data to the table (depends on ordered data changes). */\n private readonly _renderData = new BehaviorSubject<T[]>([]);\n\n /** Stream that emits when a new filter string is set on the data source. */\n private readonly _filter = new BehaviorSubject<string>('');\n\n /** Used to react to internal changes of the paginator that are made by the data source itself. */\n private readonly _internalPageChanges = new Subject<void>();\n\n /**\n * Subscription to the changes that should trigger an update to the table's rendered rows, such\n * as filtering, sorting, pagination, or base data changes.\n */\n _renderChangesSubscription: Subscription | null = null;\n\n /**\n * The filtered set of data that has been matched by the filter string, or all the data if there\n * is no filter. Useful for knowing the set of data the table represents.\n * For example, a 'selectAll()' function would likely want to select the set of filtered data\n * shown to the user rather than all the data.\n */\n filteredData!: T[];\n\n /** Array of data that should be rendered by the table, where each object represents one row. */\n get data() {\n return this._data.value;\n }\n\n set data(data: T[]) {\n data = Array.isArray(data) ? data : [];\n this._data.next(data);\n // Normally the `filteredData` is updated by the re-render\n // subscription, but that won't happen if it's inactive.\n if (!this._renderChangesSubscription) {\n this._filterData(data);\n }\n }\n\n /**\n * Filter term that should be used to filter out objects from the data array. To override how\n * data objects match to this filter string, provide a custom function for filterPredicate.\n */\n get filter(): string {\n return this._filter.value;\n }\n\n set filter(filter: string) {\n this._filter.next(filter);\n // Normally the `filteredData` is updated by the re-render\n // subscription, but that won't happen if it's inactive.\n if (!this._renderChangesSubscription) {\n this._filterData(this.data);\n }\n }\n\n /**\n * Instance of the MatSort directive used by the table to control its sorting. Sort changes\n * emitted by the MatSort will trigger an update to the table's rendered data.\n */\n get sort(): MatSort | null | undefined {\n return this._sort;\n }\n\n set sort(sort: MatSort | null | undefined) {\n this._sort = sort;\n this._updateChangeSubscription();\n }\n\n private _sort: MatSort | null | undefined;\n\n /**\n * Instance of the paginator component used by the table to control what page of the data is\n * displayed. Page changes emitted by the paginator will trigger an update to the\n * table's rendered data.\n *\n * Note that the data source uses the paginator's properties to calculate which page of data\n * should be displayed. If the paginator receives its properties as template inputs,\n * e.g. `[pageLength]=100` or `[pageIndex]=1`, then be sure that the paginator's view has been\n * initialized before assigning it to this data source.\n */\n get paginator(): P | null | undefined {\n return this._paginator;\n }\n\n set paginator(paginator: P | null | undefined) {\n this._paginator = paginator;\n this._updateChangeSubscription();\n }\n\n private _paginator: P | null | undefined;\n\n /**\n * Data accessor function that is used for accessing data properties for sorting through\n * the default sortData function.\n * This default function assumes that the sort header IDs (which defaults to the column name)\n * matches the data's properties (e.g. column Xyz represents data['Xyz']).\n * May be set to a custom function for different behavior.\n * @param data Data object that is being accessed.\n * @param sortHeaderId The name of the column that represents the data.\n */\n sortingDataAccessor: (data: T, sortHeaderId: string) => string | number = (\n data: T,\n sortHeaderId: string,\n ): string | number => {\n const value = (data as unknown as Record<string, any>)[sortHeaderId];\n\n if (_isNumberValue(value)) {\n const numberValue = Number(value);\n\n // Numbers beyond `MAX_SAFE_INTEGER` can't be compared reliably so we leave them as strings.\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER\n return numberValue < MAX_SAFE_INTEGER ? numberValue : value;\n }\n\n return value;\n };\n\n /**\n * Gets a sorted copy of the data array based on the state of the MatSort. Called\n * after changes are made to the filtered data or when sort changes are emitted from MatSort.\n * By default, the function retrieves the active sort and its direction and compares data\n * by retrieving data using the sortingDataAccessor. May be overridden for a custom implementation\n * of data ordering.\n * @param data The array of data that should be sorted.\n * @param sort The connected MatSort that holds the current sort state.\n */\n sortData: (data: T[], sort: MatSort) => T[] = (data: T[], sort: MatSort): T[] => {\n const active = sort.active;\n const direction = sort.direction;\n if (!active || direction == '') {\n return data;\n }\n\n return data.sort((a, b) => {\n let valueA = this.sortingDataAccessor(a, active);\n let valueB = this.sortingDataAccessor(b, active);\n\n // If there are data in the column that can be converted to a number,\n // it must be ensured that the rest of the data\n // is of the same type so as not to order incorrectly.\n const valueAType = typeof valueA;\n const valueBType = typeof valueB;\n\n if (valueAType !== valueBType) {\n if (valueAType === 'number') {\n valueA += '';\n }\n if (valueBType === 'number') {\n valueB += '';\n }\n }\n\n // If both valueA and valueB exist (truthy), then compare the two. Otherwise, check if\n // one value exists while the other doesn't. In this case, existing value should come last.\n // This avoids inconsistent results when comparing values to undefined/null.\n // If neither value exists, return 0 (equal).\n let comparatorResult = 0;\n if (valueA != null && valueB != null) {\n // Check if one value is greater than the other; if equal, comparatorResult should remain 0.\n if (valueA > valueB) {\n comparatorResult = 1;\n } else if (valueA < valueB) {\n comparatorResult = -1;\n }\n } else if (valueA != null) {\n comparatorResult = 1;\n } else if (valueB != null) {\n comparatorResult = -1;\n }\n\n return comparatorResult * (direction == 'asc' ? 1 : -1);\n });\n };\n\n /**\n * Checks if a data object matches the data source's filter string. By default, each data object\n * is converted to a string of its properties and returns true if the filter has\n * at least one occurrence in that string. By default, the filter string has its whitespace\n * trimmed and the match is case-insensitive. May be overridden for a custom implementation of\n * filter matching.\n * @param data Data object used to check against the filter.\n * @param filter Filter string that has been set on the data source.\n * @returns Whether the filter matches against the data\n */\n filterPredicate: (data: T, filter: string) => boolean = (data: T, filter: string): boolean => {\n if (\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n (typeof data !== 'object' || data === null)\n ) {\n console.warn(\n 'Default implementation of filterPredicate requires data to be a non-null object.',\n );\n }\n\n // Transform the filter by converting it to lowercase and removing whitespace.\n const transformedFilter = filter.trim().toLowerCase();\n // Loops over the values in the array and returns true if any of them match the filter string\n // TODO: Remove `as object` cast when `T` stops extending `any`:\n return Object.values(data as object).some(value =>\n `${value}`.toLowerCase().includes(transformedFilter),\n );\n };\n\n constructor(initialData: T[] = []) {\n super();\n this._data = new BehaviorSubject<T[]>(initialData);\n this._updateChangeSubscription();\n }\n\n /**\n * Subscribe to changes that should trigger an update to the table's rendered rows. When the\n * changes occur, process the current state of the filter, sort, and pagination along with\n * the provided base data and send it to the table for rendering.\n */\n _updateChangeSubscription() {\n // Sorting and/or pagination should be watched if sort and/or paginator are provided.\n // The events should emit whenever the component emits a change or initializes, or if no\n // component is provided, a stream with just a null event should be provided.\n // The `sortChange` and `pageChange` acts as a signal to the combineLatests below so that the\n // pipeline can progress to the next step. Note that the value from these streams are not used,\n // they purely act as a signal to progress in the pipeline.\n const sortChange: Observable<Sort | null | void> = this._sort\n ? (merge(this._sort.sortChange, this._sort.initialized) as Observable<Sort | void>)\n : observableOf(null);\n const pageChange: Observable<PageEvent | null | void> = this._paginator\n ? (merge(\n this._paginator.page,\n this._internalPageChanges,\n this._paginator.initialized,\n ) as Observable<PageEvent | void>)\n : observableOf(null);\n const dataStream = this._data;\n // Watch for base data or filter changes to provide a filtered set of data.\n const filteredData = combineLatest([dataStream, this._filter]).pipe(\n map(([data]) => this._filterData(data)),\n );\n // Watch for filtered data or sort changes to provide an ordered set of data.\n const orderedData = combineLatest([filteredData, sortChange]).pipe(\n map(([data]) => this._orderData(data)),\n );\n // Watch for ordered data or page changes to provide a paged set of data.\n const paginatedData = combineLatest([orderedData, pageChange]).pipe(\n map(([data]) => this._pageData(data)),\n );\n // Watched for paged data changes and send the result to the table to render.\n this._renderChangesSubscription?.unsubscribe();\n this._renderChangesSubscription = paginatedData.subscribe(data => this._renderData.next(data));\n }\n\n /**\n * Returns a filtered data array where each filter object contains the filter string within\n * the result of the filterPredicate function. If no filter is set, returns the data array\n * as provided.\n */\n _filterData(data: T[]) {\n // If there is a filter string, filter out data that does not contain it.\n // Each data object is converted to a string using the function defined by filterPredicate.\n // May be overridden for customization.\n this.filteredData =\n this.filter == null || this.filter === ''\n ? data\n : data.filter(obj => this.filterPredicate(obj, this.filter));\n\n if (this.paginator) {\n this._updatePaginator(this.filteredData.length);\n }\n\n return this.filteredData;\n }\n\n /**\n * Returns a sorted copy of the data if MatSort has a sort applied, otherwise just returns the\n * data array as provided. Uses the default data accessor for data lookup, unless a\n * sortDataAccessor function is defined.\n */\n _orderData(data: T[]): T[] {\n // If there is no active sort or direction, return the data without trying to sort.\n if (!this.sort) {\n return data;\n }\n\n return this.sortData(data.slice(), this.sort);\n }\n\n /**\n * Returns a paged slice of the provided data array according to the provided paginator's page\n * index and length. If there is no paginator provided, returns the data array as provided.\n */\n _pageData(data: T[]): T[] {\n if (!this.paginator) {\n return data;\n }\n\n const startIndex = this.paginator.pageIndex * this.paginator.pageSize;\n return data.slice(startIndex, startIndex + this.paginator.pageSize);\n }\n\n /**\n * Updates the paginator to reflect the length of the filtered data, and makes sure that the page\n * index does not exceed the paginator's last page. Values are changed in a resolved promise to\n * guard against making property changes within a round of change detection.\n */\n _updatePaginator(filteredDataLength: number) {\n Promise.resolve().then(() => {\n const paginator = this.paginator;\n\n if (!paginator) {\n return;\n }\n\n paginator.length = filteredDataLength;\n\n // If the page index is set beyond the page, reduce it to the last page.\n if (paginator.pageIndex > 0) {\n const lastPageIndex = Math.ceil(paginator.length / paginator.pageSize) - 1 || 0;\n const newPageIndex = Math.min(paginator.pageIndex, lastPageIndex);\n\n if (newPageIndex !== paginator.pageIndex) {\n paginator.pageIndex = newPageIndex;\n\n // Since the paginator only emits after user-generated changes,\n // we need our own stream so we know to should re-render the data.\n this._internalPageChanges.next();\n }\n }\n });\n }\n\n /**\n * Used by the MatTable. Called when it connects to the data source.\n * @docs-private\n */\n connect() {\n if (!this._renderChangesSubscription) {\n this._updateChangeSubscription();\n }\n\n return this._renderData;\n }\n\n /**\n * Used by the MatTable. Called when it disconnects from the data source.\n * @docs-private\n */\n disconnect() {\n this._renderChangesSubscription?.unsubscribe();\n this._renderChangesSubscription = null;\n }\n}\n"],"names":["MatRecycleRows","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","ngImport","decorators","MatTable","CdkTable","stickyCssClass","needsPositionStickyOnElement","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","host","properties","classAttribute","providers","provide","useExisting","CDK_TABLE","STICKY_POSITIONING_LISTENER","useValue","exportAs","usesInheritance","template","isInline","styles","dependencies","kind","HeaderRowOutlet","DataRowOutlet","NoDataRowOutlet","FooterRowOutlet","changeDetection","ChangeDetectionStrategy","Eager","encapsulation","ViewEncapsulation","None","Default","imports","MatCellDef","CdkCellDef","args","MatHeaderCellDef","CdkHeaderCellDef","MatFooterCellDef","CdkFooterCellDef","MatColumnDef","CdkColumnDef","name","_name","_setNameInput","_updateColumnCssClassName","_columnCssClassName","push","cssClassFriendlyName","inputs","Input","MatHeaderCell","CdkHeaderCell","attributes","MatFooterCell","CdkFooterCell","MatCell","CdkCell","ROW_TEMPLATE","MatHeaderRowDef","CdkHeaderRowDef","ɵdir","ɵɵngDeclareDirective","columns","sticky","booleanAttribute","alias","transform","MatFooterRowDef","CdkFooterRowDef","MatRowDef","CdkRowDef","when","MatHeaderRow","CdkHeaderRow","CdkCellOutlet","MatFooterRow","CdkFooterRow","MatRow","CdkRow","MatNoDataRow","CdkNoDataRow","_cellSelector","constructor","_contentClassNames","_cellClassNames","MatTextColumn","CdkTextColumn","EXPORTED_DECLARATIONS","MatTableModule","NgModule","ɵmod","ɵɵngDeclareNgModule","CdkTableModule","BidiModule","exports","MAX_SAFE_INTEGER","MatTableDataSource","DataSource","_data","_renderData","BehaviorSubject","_filter","_internalPageChanges","Subject","_renderChangesSubscription","filteredData","data","value","Array","isArray","next","_filterData","filter","sort","_sort","_updateChangeSubscription","paginator","_paginator","sortingDataAccessor","sortHeaderId","_isNumberValue","numberValue","Number","sortData","active","direction","a","b","valueA","valueB","valueAType","valueBType","comparatorResult","filterPredicate","ngDevMode","console","warn","transformedFilter","trim","toLowerCase","Object","values","some","includes","initialData","sortChange","merge","initialized","observableOf","pageChange","page","dataStream","combineLatest","pipe","map","orderedData","_orderData","paginatedData","_pageData","unsubscribe","subscribe","obj","_updatePaginator","length","slice","startIndex","pageIndex","pageSize","filteredDataLength","Promise","resolve","then","lastPageIndex","Math","ceil","newPageIndex","min","connect","disconnect"],"mappings":"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"}
{"version":3,"file":"table.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/table/table.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/table/cell.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/table/row.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/table/text-column.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/table/table-module.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/table/table-data-source.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\nimport {ChangeDetectionStrategy, Component, Directive, ViewEncapsulation} from '@angular/core';\nimport {\n CdkTable,\n CDK_TABLE,\n STICKY_POSITIONING_LISTENER,\n HeaderRowOutlet,\n DataRowOutlet,\n NoDataRowOutlet,\n FooterRowOutlet,\n} from '@angular/cdk/table';\nimport {_DisposeViewRepeaterStrategy, _RecycleViewRepeaterStrategy} from '@angular/cdk/collections';\n\n/**\n * Enables the recycle view repeater strategy, which reduces rendering latency. Not compatible with\n * tables that animate rows.\n *\n * @deprecated This directive is a no-op and will be removed.\n * @breaking-change 23.0.0\n */\n@Directive({selector: 'mat-table[recycleRows], table[mat-table][recycleRows]'})\nexport class MatRecycleRows {}\n\n@Component({\n selector: 'mat-table, table[mat-table]',\n exportAs: 'matTable',\n // Note that according to MDN, the `caption` element has to be projected as the **first**\n // element in the table. See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/caption\n template: `\n <ng-content select=\"caption\"/>\n <ng-content select=\"colgroup, col\"/>\n\n <!--\n Unprojected content throws a hydration error so we need this to capture it.\n It gets removed on the client so it doesn't affect the layout.\n -->\n @if (_isServer) {\n <ng-content/>\n }\n\n @if (_isNativeHtmlTable) {\n <thead role=\"rowgroup\">\n <ng-container headerRowOutlet/>\n </thead>\n <tbody class=\"mdc-data-table__content\" role=\"rowgroup\">\n <ng-container rowOutlet/>\n <ng-container noDataRowOutlet/>\n </tbody>\n <tfoot role=\"rowgroup\">\n <ng-container footerRowOutlet/>\n </tfoot>\n } @else {\n <ng-container headerRowOutlet/>\n <ng-container rowOutlet/>\n <ng-container noDataRowOutlet/>\n <ng-container footerRowOutlet/>\n }\n `,\n styleUrl: 'table.css',\n host: {\n 'class': 'mat-mdc-table mdc-data-table__table',\n '[class.mat-table-fixed-layout]': 'fixedLayout',\n },\n providers: [\n {provide: CdkTable, useExisting: MatTable},\n {provide: CDK_TABLE, useExisting: MatTable},\n // Prevent nested tables from seeing this table's StickyPositioningListener.\n {provide: STICKY_POSITIONING_LISTENER, useValue: null},\n ],\n encapsulation: ViewEncapsulation.None,\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n imports: [HeaderRowOutlet, DataRowOutlet, NoDataRowOutlet, FooterRowOutlet],\n})\nexport class MatTable<T> extends CdkTable<T> {\n /** Overrides the sticky CSS class set by the `CdkTable`. */\n protected override stickyCssClass = 'mat-mdc-table-sticky';\n\n /** Overrides the need to add position: sticky on every sticky cell element in `CdkTable`. */\n protected override needsPositionStickyOnElement = false;\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 {Directive, Input} from '@angular/core';\nimport {\n CdkCell,\n CdkCellDef,\n CdkColumnDef,\n CdkFooterCell,\n CdkFooterCellDef,\n CdkHeaderCell,\n CdkHeaderCellDef,\n} from '@angular/cdk/table';\n\n/**\n * Cell definition for the mat-table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\n@Directive({\n selector: '[matCellDef]',\n providers: [{provide: CdkCellDef, useExisting: MatCellDef}],\n})\nexport class MatCellDef extends CdkCellDef {}\n\n/**\n * Header cell definition for the mat-table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\n@Directive({\n selector: '[matHeaderCellDef]',\n providers: [{provide: CdkHeaderCellDef, useExisting: MatHeaderCellDef}],\n})\nexport class MatHeaderCellDef extends CdkHeaderCellDef {}\n\n/**\n * Footer cell definition for the mat-table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\n@Directive({\n selector: '[matFooterCellDef]',\n providers: [{provide: CdkFooterCellDef, useExisting: MatFooterCellDef}],\n})\nexport class MatFooterCellDef extends CdkFooterCellDef {}\n\n/**\n * Column definition for the mat-table.\n * Defines a set of cells available for a table column.\n */\n@Directive({\n selector: '[matColumnDef]',\n providers: [{provide: CdkColumnDef, useExisting: MatColumnDef}],\n})\nexport class MatColumnDef extends CdkColumnDef {\n /** Unique name for this column. */\n @Input('matColumnDef')\n override get name(): string {\n return this._name;\n }\n override set name(name: string) {\n this._setNameInput(name);\n }\n\n /**\n * Add \"mat-column-\" prefix in addition to \"cdk-column-\" prefix.\n * In the future, this will only add \"mat-column-\" and columnCssClassName\n * will change from type string[] to string.\n * @docs-private\n */\n protected override _updateColumnCssClassName() {\n super._updateColumnCssClassName();\n this._columnCssClassName!.push(`mat-column-${this.cssClassFriendlyName}`);\n }\n}\n\n/** Header cell template container that adds the right classes and role. */\n@Directive({\n selector: 'mat-header-cell, th[mat-header-cell]',\n host: {\n 'class': 'mat-mdc-header-cell mdc-data-table__header-cell',\n 'role': 'columnheader',\n },\n})\nexport class MatHeaderCell extends CdkHeaderCell {}\n\n/** Footer cell template container that adds the right classes and role. */\n@Directive({\n selector: 'mat-footer-cell, td[mat-footer-cell]',\n host: {\n 'class': 'mat-mdc-footer-cell mdc-data-table__cell',\n },\n})\nexport class MatFooterCell extends CdkFooterCell {}\n\n/** Cell template container that adds the right classes and role. */\n@Directive({\n selector: 'mat-cell, td[mat-cell]',\n host: {\n 'class': 'mat-mdc-cell mdc-data-table__cell',\n },\n})\nexport class MatCell extends CdkCell {}\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 CdkFooterRow,\n CdkFooterRowDef,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkRow,\n CdkRowDef,\n CdkNoDataRow,\n CdkCellOutlet,\n} from '@angular/cdk/table';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ViewEncapsulation,\n booleanAttribute,\n} from '@angular/core';\n\n// We can't reuse `CDK_ROW_TEMPLATE` because it's incompatible with local compilation mode.\nconst ROW_TEMPLATE = `<ng-container cdkCellOutlet></ng-container>`;\n\n/**\n * Header row definition for the mat-table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\n@Directive({\n selector: '[matHeaderRowDef]',\n providers: [{provide: CdkHeaderRowDef, useExisting: MatHeaderRowDef}],\n inputs: [\n {name: 'columns', alias: 'matHeaderRowDef'},\n {name: 'sticky', alias: 'matHeaderRowDefSticky', transform: booleanAttribute},\n ],\n})\nexport class MatHeaderRowDef extends CdkHeaderRowDef {}\n\n/**\n * Footer row definition for the mat-table.\n * Captures the footer row's template and other footer properties such as the columns to display.\n */\n@Directive({\n selector: '[matFooterRowDef]',\n providers: [{provide: CdkFooterRowDef, useExisting: MatFooterRowDef}],\n inputs: [\n {name: 'columns', alias: 'matFooterRowDef'},\n {name: 'sticky', alias: 'matFooterRowDefSticky', transform: booleanAttribute},\n ],\n})\nexport class MatFooterRowDef extends CdkFooterRowDef {}\n\n/**\n * Data row definition for the mat-table.\n * Captures the data row's template and other properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n */\n@Directive({\n selector: '[matRowDef]',\n providers: [{provide: CdkRowDef, useExisting: MatRowDef}],\n inputs: [\n {name: 'columns', alias: 'matRowDefColumns'},\n {name: 'when', alias: 'matRowDefWhen'},\n ],\n})\nexport class MatRowDef<T> extends CdkRowDef<T> {}\n\n/** Header template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n selector: 'mat-header-row, tr[mat-header-row]',\n template: ROW_TEMPLATE,\n host: {\n 'class': 'mat-mdc-header-row mdc-data-table__header-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matHeaderRow',\n providers: [{provide: CdkHeaderRow, useExisting: MatHeaderRow}],\n imports: [CdkCellOutlet],\n})\nexport class MatHeaderRow extends CdkHeaderRow {}\n\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n selector: 'mat-footer-row, tr[mat-footer-row]',\n template: ROW_TEMPLATE,\n host: {\n 'class': 'mat-mdc-footer-row mdc-data-table__row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matFooterRow',\n providers: [{provide: CdkFooterRow, useExisting: MatFooterRow}],\n imports: [CdkCellOutlet],\n})\nexport class MatFooterRow extends CdkFooterRow {}\n\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n selector: 'mat-row, tr[mat-row]',\n template: ROW_TEMPLATE,\n host: {\n 'class': 'mat-mdc-row mdc-data-table__row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matRow',\n providers: [{provide: CdkRow, useExisting: MatRow}],\n imports: [CdkCellOutlet],\n})\nexport class MatRow extends CdkRow {}\n\n/** Row that can be used to display a message when no data is shown in the table. */\n@Directive({\n selector: 'ng-template[matNoDataRow]',\n providers: [{provide: CdkNoDataRow, useExisting: MatNoDataRow}],\n})\nexport class MatNoDataRow extends CdkNoDataRow {\n override _cellSelector = 'td, mat-cell, [mat-cell], .mat-cell';\n\n constructor() {\n super();\n this._contentClassNames.push('mat-mdc-no-data-row', 'mat-mdc-row', 'mdc-data-table__row');\n this._cellClassNames.push('mat-mdc-cell', 'mdc-data-table__cell', 'mat-no-data-cell');\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 {CdkTextColumn} from '@angular/cdk/table';\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\nimport {MatColumnDef, MatHeaderCellDef, MatHeaderCell, MatCellDef, MatCell} from './cell';\n\n/**\n * Column that simply shows text content for the header and row cells. Assumes that the table\n * is using the native table implementation (`<table>`).\n *\n * By default, the name of this column will be the header text and data property accessor.\n * The header text can be overridden with the `headerText` input. Cell values can be overridden with\n * the `dataAccessor` input. Change the text justification to the start or end using the `justify`\n * input.\n */\n@Component({\n selector: 'mat-text-column',\n template: `\n <ng-container matColumnDef>\n <th mat-header-cell *matHeaderCellDef [style.text-align]=\"justify\">\n {{headerText}}\n </th>\n <td mat-cell *matCellDef=\"let data\" [style.text-align]=\"justify\">\n {{dataAccessor(data, name)}}\n </td>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n // Change detection is intentionally not set to OnPush. This component's template will be provided\n // to the table to be inserted into its view. This is problematic when change detection runs since\n // the bindings in this template will be evaluated _after_ the table's view is evaluated, which\n // mean's the template in the table's view will not have the updated value (and in fact will cause\n // an ExpressionChangedAfterItHasBeenCheckedError).\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n imports: [MatColumnDef, MatHeaderCellDef, MatHeaderCell, MatCellDef, MatCell],\n})\nexport class MatTextColumn<T> extends CdkTextColumn<T> {}\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 {NgModule} from '@angular/core';\nimport {MatRecycleRows, MatTable} from './table';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {CdkTableModule} from '@angular/cdk/table';\nimport {\n MatCell,\n MatCellDef,\n MatColumnDef,\n MatFooterCell,\n MatFooterCellDef,\n MatHeaderCell,\n MatHeaderCellDef,\n} from './cell';\nimport {\n MatFooterRow,\n MatFooterRowDef,\n MatHeaderRow,\n MatHeaderRowDef,\n MatRow,\n MatRowDef,\n MatNoDataRow,\n} from './row';\nimport {MatTextColumn} from './text-column';\n\nconst EXPORTED_DECLARATIONS = [\n // Table\n MatTable,\n MatRecycleRows,\n\n // Template defs\n MatHeaderCellDef,\n MatHeaderRowDef,\n MatColumnDef,\n MatCellDef,\n MatRowDef,\n MatFooterCellDef,\n MatFooterRowDef,\n\n // Cell directives\n MatHeaderCell,\n MatCell,\n MatFooterCell,\n\n // Row directives\n MatHeaderRow,\n MatRow,\n MatFooterRow,\n MatNoDataRow,\n\n MatTextColumn,\n];\n\n@NgModule({\n imports: [CdkTableModule, ...EXPORTED_DECLARATIONS],\n exports: [BidiModule, EXPORTED_DECLARATIONS],\n})\nexport class MatTableModule {}\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 {MatPaginator, PageEvent} from '../paginator';\nimport {\n BehaviorSubject,\n combineLatest,\n merge,\n Observable,\n of as observableOf,\n Subject,\n Subscription,\n} from 'rxjs';\nimport {DataSource} from '@angular/cdk/collections';\nimport {MatSort, Sort} from '../sort';\nimport {_isNumberValue} from '@angular/cdk/coercion';\nimport {map} from 'rxjs/operators';\n\n/**\n * Corresponds to `Number.MAX_SAFE_INTEGER`. Moved out into a variable here due to\n * flaky browser support and the value not being defined in Closure's typings.\n */\nconst MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Data source that accepts a client-side data array and includes native support of filtering,\n * sorting (using MatSort), and pagination (using MatPaginator).\n *\n * Allows for sort customization by overriding sortingDataAccessor, which defines how data\n * properties are accessed. Also allows for filter customization by overriding filterPredicate,\n * which defines how row data is converted to a string for filter matching.\n *\n * **Note:** This class is meant to be a simple data source to help you get started. As such\n * it isn't equipped to handle some more advanced cases like robust i18n support or server-side\n * interactions. If your app needs to support more advanced use cases, consider implementing your\n * own `DataSource`.\n */\nexport class MatTableDataSource<\n // TODO: Remove `any` type below in a breaking change:\n T extends object | any,\n P extends MatPaginator = MatPaginator,\n> extends DataSource<T> {\n /** Stream that emits when a new data array is set on the data source. */\n private readonly _data: BehaviorSubject<T[]>;\n\n /** Stream emitting render data to the table (depends on ordered data changes). */\n private readonly _renderData = new BehaviorSubject<T[]>([]);\n\n /** Stream that emits when a new filter string is set on the data source. */\n private readonly _filter = new BehaviorSubject<string>('');\n\n /** Used to react to internal changes of the paginator that are made by the data source itself. */\n private readonly _internalPageChanges = new Subject<void>();\n\n /**\n * Subscription to the changes that should trigger an update to the table's rendered rows, such\n * as filtering, sorting, pagination, or base data changes.\n */\n _renderChangesSubscription: Subscription | null = null;\n\n /**\n * The filtered set of data that has been matched by the filter string, or all the data if there\n * is no filter. Useful for knowing the set of data the table represents.\n * For example, a 'selectAll()' function would likely want to select the set of filtered data\n * shown to the user rather than all the data.\n */\n filteredData!: T[];\n\n /** Array of data that should be rendered by the table, where each object represents one row. */\n get data() {\n return this._data.value;\n }\n\n set data(data: T[]) {\n data = Array.isArray(data) ? data : [];\n this._data.next(data);\n // Normally the `filteredData` is updated by the re-render\n // subscription, but that won't happen if it's inactive.\n if (!this._renderChangesSubscription) {\n this._filterData(data);\n }\n }\n\n /**\n * Filter term that should be used to filter out objects from the data array. To override how\n * data objects match to this filter string, provide a custom function for filterPredicate.\n */\n get filter(): string {\n return this._filter.value;\n }\n\n set filter(filter: string) {\n this._filter.next(filter);\n // Normally the `filteredData` is updated by the re-render\n // subscription, but that won't happen if it's inactive.\n if (!this._renderChangesSubscription) {\n this._filterData(this.data);\n }\n }\n\n /**\n * Instance of the MatSort directive used by the table to control its sorting. Sort changes\n * emitted by the MatSort will trigger an update to the table's rendered data.\n */\n get sort(): MatSort | null | undefined {\n return this._sort;\n }\n\n set sort(sort: MatSort | null | undefined) {\n this._sort = sort;\n this._updateChangeSubscription();\n }\n\n private _sort: MatSort | null | undefined;\n\n /**\n * Instance of the paginator component used by the table to control what page of the data is\n * displayed. Page changes emitted by the paginator will trigger an update to the\n * table's rendered data.\n *\n * Note that the data source uses the paginator's properties to calculate which page of data\n * should be displayed. If the paginator receives its properties as template inputs,\n * e.g. `[pageLength]=100` or `[pageIndex]=1`, then be sure that the paginator's view has been\n * initialized before assigning it to this data source.\n */\n get paginator(): P | null | undefined {\n return this._paginator;\n }\n\n set paginator(paginator: P | null | undefined) {\n this._paginator = paginator;\n this._updateChangeSubscription();\n }\n\n private _paginator: P | null | undefined;\n\n /**\n * Data accessor function that is used for accessing data properties for sorting through\n * the default sortData function.\n * This default function assumes that the sort header IDs (which defaults to the column name)\n * matches the data's properties (e.g. column Xyz represents data['Xyz']).\n * May be set to a custom function for different behavior.\n * @param data Data object that is being accessed.\n * @param sortHeaderId The name of the column that represents the data.\n */\n sortingDataAccessor: (data: T, sortHeaderId: string) => string | number = (\n data: T,\n sortHeaderId: string,\n ): string | number => {\n const value = (data as unknown as Record<string, any>)[sortHeaderId];\n\n if (_isNumberValue(value)) {\n const numberValue = Number(value);\n\n // Numbers beyond `MAX_SAFE_INTEGER` can't be compared reliably so we leave them as strings.\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER\n return numberValue < MAX_SAFE_INTEGER ? numberValue : value;\n }\n\n return value;\n };\n\n /**\n * Gets a sorted copy of the data array based on the state of the MatSort. Called\n * after changes are made to the filtered data or when sort changes are emitted from MatSort.\n * By default, the function retrieves the active sort and its direction and compares data\n * by retrieving data using the sortingDataAccessor. May be overridden for a custom implementation\n * of data ordering.\n * @param data The array of data that should be sorted.\n * @param sort The connected MatSort that holds the current sort state.\n */\n sortData: (data: T[], sort: MatSort) => T[] = (data: T[], sort: MatSort): T[] => {\n const active = sort.active;\n const direction = sort.direction;\n if (!active || direction == '') {\n return data;\n }\n\n return data.sort((a, b) => {\n let valueA = this.sortingDataAccessor(a, active);\n let valueB = this.sortingDataAccessor(b, active);\n\n // If there are data in the column that can be converted to a number,\n // it must be ensured that the rest of the data\n // is of the same type so as not to order incorrectly.\n const valueAType = typeof valueA;\n const valueBType = typeof valueB;\n\n if (valueAType !== valueBType) {\n if (valueAType === 'number') {\n valueA += '';\n }\n if (valueBType === 'number') {\n valueB += '';\n }\n }\n\n // If both valueA and valueB exist (truthy), then compare the two. Otherwise, check if\n // one value exists while the other doesn't. In this case, existing value should come last.\n // This avoids inconsistent results when comparing values to undefined/null.\n // If neither value exists, return 0 (equal).\n let comparatorResult = 0;\n if (valueA != null && valueB != null) {\n // Check if one value is greater than the other; if equal, comparatorResult should remain 0.\n if (valueA > valueB) {\n comparatorResult = 1;\n } else if (valueA < valueB) {\n comparatorResult = -1;\n }\n } else if (valueA != null) {\n comparatorResult = 1;\n } else if (valueB != null) {\n comparatorResult = -1;\n }\n\n return comparatorResult * (direction == 'asc' ? 1 : -1);\n });\n };\n\n /**\n * Checks if a data object matches the data source's filter string. By default, each data object\n * is converted to a string of its properties and returns true if the filter has\n * at least one occurrence in that string. By default, the filter string has its whitespace\n * trimmed and the match is case-insensitive. May be overridden for a custom implementation of\n * filter matching.\n * @param data Data object used to check against the filter.\n * @param filter Filter string that has been set on the data source.\n * @returns Whether the filter matches against the data\n */\n filterPredicate: (data: T, filter: string) => boolean = (data: T, filter: string): boolean => {\n if (\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n (typeof data !== 'object' || data === null)\n ) {\n console.warn(\n 'Default implementation of filterPredicate requires data to be a non-null object.',\n );\n }\n\n // Transform the filter by converting it to lowercase and removing whitespace.\n const transformedFilter = filter.trim().toLowerCase();\n // Loops over the values in the array and returns true if any of them match the filter string\n // TODO: Remove `as object` cast when `T` stops extending `any`:\n return Object.values(data as object).some(value =>\n `${value}`.toLowerCase().includes(transformedFilter),\n );\n };\n\n constructor(initialData: T[] = []) {\n super();\n this._data = new BehaviorSubject<T[]>(initialData);\n this._updateChangeSubscription();\n }\n\n /**\n * Subscribe to changes that should trigger an update to the table's rendered rows. When the\n * changes occur, process the current state of the filter, sort, and pagination along with\n * the provided base data and send it to the table for rendering.\n */\n _updateChangeSubscription() {\n // Sorting and/or pagination should be watched if sort and/or paginator are provided.\n // The events should emit whenever the component emits a change or initializes, or if no\n // component is provided, a stream with just a null event should be provided.\n // The `sortChange` and `pageChange` acts as a signal to the combineLatests below so that the\n // pipeline can progress to the next step. Note that the value from these streams are not used,\n // they purely act as a signal to progress in the pipeline.\n const sortChange: Observable<Sort | null | void> = this._sort\n ? (merge(this._sort.sortChange, this._sort.initialized) as Observable<Sort | void>)\n : observableOf(null);\n const pageChange: Observable<PageEvent | null | void> = this._paginator\n ? (merge(\n this._paginator.page,\n this._internalPageChanges,\n this._paginator.initialized,\n ) as Observable<PageEvent | void>)\n : observableOf(null);\n const dataStream = this._data;\n // Watch for base data or filter changes to provide a filtered set of data.\n const filteredData = combineLatest([dataStream, this._filter]).pipe(\n map(([data]) => this._filterData(data)),\n );\n // Watch for filtered data or sort changes to provide an ordered set of data.\n const orderedData = combineLatest([filteredData, sortChange]).pipe(\n map(([data]) => this._orderData(data)),\n );\n // Watch for ordered data or page changes to provide a paged set of data.\n const paginatedData = combineLatest([orderedData, pageChange]).pipe(\n map(([data]) => this._pageData(data)),\n );\n // Watched for paged data changes and send the result to the table to render.\n this._renderChangesSubscription?.unsubscribe();\n this._renderChangesSubscription = paginatedData.subscribe(data => this._renderData.next(data));\n }\n\n /**\n * Returns a filtered data array where each filter object contains the filter string within\n * the result of the filterPredicate function. If no filter is set, returns the data array\n * as provided.\n */\n _filterData(data: T[]) {\n // If there is a filter string, filter out data that does not contain it.\n // Each data object is converted to a string using the function defined by filterPredicate.\n // May be overridden for customization.\n this.filteredData =\n this.filter == null || this.filter === ''\n ? data\n : data.filter(obj => this.filterPredicate(obj, this.filter));\n\n if (this.paginator) {\n this._updatePaginator(this.filteredData.length);\n }\n\n return this.filteredData;\n }\n\n /**\n * Returns a sorted copy of the data if MatSort has a sort applied, otherwise just returns the\n * data array as provided. Uses the default data accessor for data lookup, unless a\n * sortDataAccessor function is defined.\n */\n _orderData(data: T[]): T[] {\n // If there is no active sort or direction, return the data without trying to sort.\n if (!this.sort) {\n return data;\n }\n\n return this.sortData(data.slice(), this.sort);\n }\n\n /**\n * Returns a paged slice of the provided data array according to the provided paginator's page\n * index and length. If there is no paginator provided, returns the data array as provided.\n */\n _pageData(data: T[]): T[] {\n if (!this.paginator) {\n return data;\n }\n\n const startIndex = this.paginator.pageIndex * this.paginator.pageSize;\n return data.slice(startIndex, startIndex + this.paginator.pageSize);\n }\n\n /**\n * Updates the paginator to reflect the length of the filtered data, and makes sure that the page\n * index does not exceed the paginator's last page. Values are changed in a resolved promise to\n * guard against making property changes within a round of change detection.\n */\n _updatePaginator(filteredDataLength: number) {\n Promise.resolve().then(() => {\n const paginator = this.paginator;\n\n if (!paginator) {\n return;\n }\n\n paginator.length = filteredDataLength;\n\n // If the page index is set beyond the page, reduce it to the last page.\n if (paginator.pageIndex > 0) {\n const lastPageIndex = Math.ceil(paginator.length / paginator.pageSize) - 1 || 0;\n const newPageIndex = Math.min(paginator.pageIndex, lastPageIndex);\n\n if (newPageIndex !== paginator.pageIndex) {\n paginator.pageIndex = newPageIndex;\n\n // Since the paginator only emits after user-generated changes,\n // we need our own stream so we know to should re-render the data.\n this._internalPageChanges.next();\n }\n }\n });\n }\n\n /**\n * Used by the MatTable. Called when it connects to the data source.\n * @docs-private\n */\n connect() {\n if (!this._renderChangesSubscription) {\n this._updateChangeSubscription();\n }\n\n return this._renderData;\n }\n\n /**\n * Used by the MatTable. Called when it disconnects from the data source.\n * @docs-private\n */\n disconnect() {\n this._renderChangesSubscription?.unsubscribe();\n this._renderChangesSubscription = null;\n }\n}\n"],"names":["MatRecycleRows","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","ngImport","decorators","MatTable","CdkTable","stickyCssClass","needsPositionStickyOnElement","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","host","properties","classAttribute","providers","provide","useExisting","CDK_TABLE","STICKY_POSITIONING_LISTENER","useValue","exportAs","usesInheritance","template","isInline","styles","dependencies","kind","HeaderRowOutlet","DataRowOutlet","NoDataRowOutlet","FooterRowOutlet","changeDetection","ChangeDetectionStrategy","Eager","encapsulation","ViewEncapsulation","None","Default","imports","MatCellDef","CdkCellDef","args","MatHeaderCellDef","CdkHeaderCellDef","MatFooterCellDef","CdkFooterCellDef","MatColumnDef","CdkColumnDef","name","_name","_setNameInput","_updateColumnCssClassName","_columnCssClassName","push","cssClassFriendlyName","inputs","Input","MatHeaderCell","CdkHeaderCell","attributes","MatFooterCell","CdkFooterCell","MatCell","CdkCell","ROW_TEMPLATE","MatHeaderRowDef","CdkHeaderRowDef","ɵdir","ɵɵngDeclareDirective","columns","sticky","booleanAttribute","alias","transform","MatFooterRowDef","CdkFooterRowDef","MatRowDef","CdkRowDef","when","MatHeaderRow","CdkHeaderRow","CdkCellOutlet","MatFooterRow","CdkFooterRow","MatRow","CdkRow","MatNoDataRow","CdkNoDataRow","_cellSelector","constructor","_contentClassNames","_cellClassNames","MatTextColumn","CdkTextColumn","EXPORTED_DECLARATIONS","MatTableModule","NgModule","ɵmod","ɵɵngDeclareNgModule","CdkTableModule","BidiModule","exports","MAX_SAFE_INTEGER","MatTableDataSource","DataSource","_data","_renderData","BehaviorSubject","_filter","_internalPageChanges","Subject","_renderChangesSubscription","filteredData","data","value","Array","isArray","next","_filterData","filter","sort","_sort","_updateChangeSubscription","paginator","_paginator","sortingDataAccessor","sortHeaderId","_isNumberValue","numberValue","Number","sortData","active","direction","a","b","valueA","valueB","valueAType","valueBType","comparatorResult","filterPredicate","ngDevMode","console","warn","transformedFilter","trim","toLowerCase","Object","values","some","includes","initialData","sortChange","merge","initialized","observableOf","pageChange","page","dataStream","combineLatest","pipe","map","orderedData","_orderData","paginatedData","_pageData","unsubscribe","subscribe","obj","_updatePaginator","length","slice","startIndex","pageIndex","pageSize","filteredDataLength","Promise","resolve","then","lastPageIndex","Math","ceil","newPageIndex","min","connect","disconnect"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"tabs-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/tabs/testing/tab-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/tabs/testing/tab-group-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/tabs/testing/tab-link-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/tabs/testing/tab-nav-panel-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/tabs/testing/tab-nav-bar-harness.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\nimport {\n ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessLoader,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {TabHarnessFilters} from './tab-harness-filters';\n\n/** Harness for interacting with an Angular Material tab in tests. */\nexport class MatTabHarness extends ContentContainerComponentHarness<string> {\n /** The selector for the host element of a `MatTab` instance. */\n static hostSelector = '.mat-mdc-tab';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a tab with specific attributes.\n * @param options Options for filtering which tab instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatTabHarness>(\n this: ComponentHarnessConstructor<T>,\n options: TabHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('label', options.label, (harness, label) =>\n HarnessPredicate.stringMatches(harness.getLabel(), label),\n )\n .addOption(\n 'selected',\n options.selected,\n async (harness, selected) => (await harness.isSelected()) == selected,\n );\n }\n\n /** Gets the label of the tab. */\n async getLabel(): Promise<string> {\n return (await this.host()).text();\n }\n\n /** Gets the aria-label of the tab. */\n async getAriaLabel(): Promise<string | null> {\n return (await this.host()).getAttribute('aria-label');\n }\n\n /** Gets the value of the \"aria-labelledby\" attribute. */\n async getAriaLabelledby(): Promise<string | null> {\n return (await this.host()).getAttribute('aria-labelledby');\n }\n\n /** Whether the tab is selected. */\n async isSelected(): Promise<boolean> {\n const hostEl = await this.host();\n return (await hostEl.getAttribute('aria-selected')) === 'true';\n }\n\n /** Whether the tab is disabled. */\n async isDisabled(): Promise<boolean> {\n const hostEl = await this.host();\n return (await hostEl.getAttribute('aria-disabled')) === 'true';\n }\n\n /** Selects the given tab by clicking on the label. Tab cannot be selected if disabled. */\n async select(): Promise<void> {\n await (await this.host()).click('center');\n }\n\n /** Gets the text content of the tab. */\n async getTextContent(): Promise<string> {\n const contentId = await this._getContentId();\n const contentEl = await this.documentRootLocatorFactory().locatorFor(`#${contentId}`)();\n return contentEl.text();\n }\n\n protected override async getRootHarnessLoader(): Promise<HarnessLoader> {\n const contentId = await this._getContentId();\n return this.documentRootLocatorFactory().harnessLoaderFor(`#${contentId}`);\n }\n\n /** Gets the element id for the content of the current tab. */\n private async _getContentId(): Promise<string> {\n const hostEl = await this.host();\n // Tabs never have an empty \"aria-controls\" attribute.\n return (await hostEl.getAttribute('aria-controls'))!;\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 ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n parallel,\n} from '@angular/cdk/testing';\nimport {TabGroupHarnessFilters, TabHarnessFilters} from './tab-harness-filters';\nimport {MatTabHarness} from './tab-harness';\n\n/** Harness for interacting with a mat-tab-group in tests. */\nexport class MatTabGroupHarness extends ComponentHarness {\n /** The selector for the host element of a `MatTabGroup` instance. */\n static hostSelector = '.mat-mdc-tab-group';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a tab group with specific attributes.\n * @param options Options for filtering which tab group instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatTabGroupHarness>(\n this: ComponentHarnessConstructor<T>,\n options: TabGroupHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options).addOption(\n 'selectedTabLabel',\n options.selectedTabLabel,\n async (harness, label) => {\n const selectedTab = await harness.getSelectedTab();\n return HarnessPredicate.stringMatches(await selectedTab.getLabel(), label);\n },\n );\n }\n\n /**\n * Gets the list of tabs in the tab group.\n * @param filter Optionally filters which tabs are included.\n */\n async getTabs(filter: TabHarnessFilters = {}): Promise<MatTabHarness[]> {\n return this.locatorForAll(MatTabHarness.with(filter))();\n }\n\n /** Gets the selected tab of the tab group. */\n async getSelectedTab(): Promise<MatTabHarness> {\n const tabs = await this.getTabs();\n const isSelected = await parallel(() => tabs.map(t => t.isSelected()));\n for (let i = 0; i < tabs.length; i++) {\n if (isSelected[i]) {\n return tabs[i];\n }\n }\n throw new Error('No selected tab could be found.');\n }\n\n /**\n * Selects a tab in this tab group.\n * @param filter An optional filter to apply to the child tabs. The first tab matching the filter\n * will be selected.\n */\n async selectTab(filter: TabHarnessFilters = {}): Promise<void> {\n const tabs = await this.getTabs(filter);\n if (!tabs.length) {\n throw Error(`Cannot find mat-tab matching filter ${JSON.stringify(filter)}`);\n }\n await tabs[0].select();\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 ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {TabLinkHarnessFilters} from './tab-harness-filters';\n\n/** Harness for interacting with a Angular Material tab link in tests. */\nexport class MatTabLinkHarness extends ComponentHarness {\n /** The selector for the host element of a `MatTabLink` instance. */\n static hostSelector = '.mat-mdc-tab-link';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a tab link with specific attributes.\n * @param options Options for filtering which tab link instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatTabLinkHarness>(\n this: ComponentHarnessConstructor<T>,\n options: TabLinkHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options).addOption('label', options.label, (harness, label) =>\n HarnessPredicate.stringMatches(harness.getLabel(), label),\n );\n }\n\n /** Gets the label of the link. */\n async getLabel(): Promise<string> {\n return (await this.host()).text();\n }\n\n /** Whether the link is active. */\n async isActive(): Promise<boolean> {\n const host = await this.host();\n return host.hasClass('mdc-tab--active');\n }\n\n /** Whether the link is disabled. */\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n return host.hasClass('mat-mdc-tab-disabled');\n }\n\n /** Clicks on the link. */\n async click(): Promise<void> {\n await (await this.host()).click();\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 ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {TabNavPanelHarnessFilters} from './tab-harness-filters';\n\n/** Harness for interacting with a standard mat-tab-nav-panel in tests. */\nexport class MatTabNavPanelHarness extends ContentContainerComponentHarness {\n /** The selector for the host element of a `MatTabNavPanel` instance. */\n static hostSelector = '.mat-mdc-tab-nav-panel';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a tab nav panel with specific\n * attributes.\n * @param options Options for filtering which tab nav panel instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatTabNavPanelHarness>(\n this: ComponentHarnessConstructor<T>,\n options: TabNavPanelHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /** Gets the tab panel text content. */\n async getTextContent(): Promise<string> {\n return (await this.host()).text();\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 ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n parallel,\n} from '@angular/cdk/testing';\nimport {\n TabNavBarHarnessFilters,\n TabNavPanelHarnessFilters,\n TabLinkHarnessFilters,\n} from './tab-harness-filters';\nimport {MatTabLinkHarness} from './tab-link-harness';\nimport {MatTabNavPanelHarness} from './tab-nav-panel-harness';\n\n/** Harness for interacting with a mat-tab-nav-bar in tests. */\nexport class MatTabNavBarHarness extends ComponentHarness {\n /** The selector for the host element of a `MatTabNavBar` instance. */\n static hostSelector = '.mat-mdc-tab-nav-bar';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a tab nav bar with specific\n * attributes.\n * @param options Options for filtering which tab nav bar instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatTabNavBarHarness>(\n this: ComponentHarnessConstructor<T>,\n options: TabNavBarHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /**\n * Gets the list of links in the nav bar.\n * @param filter Optionally filters which links are included.\n */\n async getLinks(filter: TabLinkHarnessFilters = {}): Promise<MatTabLinkHarness[]> {\n return this.locatorForAll(MatTabLinkHarness.with(filter))();\n }\n\n /** Gets the active link in the nav bar. */\n async getActiveLink(): Promise<MatTabLinkHarness> {\n const links = await this.getLinks();\n const isActive = await parallel(() => links.map(t => t.isActive()));\n for (let i = 0; i < links.length; i++) {\n if (isActive[i]) {\n return links[i];\n }\n }\n throw new Error('No active link could be found.');\n }\n\n /**\n * Clicks a link inside the nav bar.\n * @param filter An optional filter to apply to the child link. The first link matching the filter\n * will be clicked.\n */\n async clickLink(filter: TabLinkHarnessFilters = {}): Promise<void> {\n const tabs = await this.getLinks(filter);\n if (!tabs.length) {\n throw Error(`Cannot find mat-tab-link matching filter ${JSON.stringify(filter)}`);\n }\n await tabs[0].click();\n }\n\n /** Gets the panel associated with the nav bar. */\n async getPanel(): Promise<MatTabNavPanelHarness> {\n const link = await this.getActiveLink();\n const host = await link.host();\n const panelId = await host.getAttribute('aria-controls');\n if (!panelId) {\n throw Error('No panel is controlled by the nav bar.');\n }\n\n const filter: TabNavPanelHarnessFilters = {selector: `#${panelId}`};\n return await this.documentRootLocatorFactory().locatorFor(MatTabNavPanelHarness.with(filter))();\n }\n}\n"],"names":["MatTabHarness","ContentContainerComponentHarness","hostSelector","with","options","HarnessPredicate","addOption","label","harness","stringMatches","getLabel","selected","isSelected","host","text","getAriaLabel","getAttribute","getAriaLabelledby","hostEl","isDisabled","select","click","getTextContent","contentId","_getContentId","contentEl","documentRootLocatorFactory","locatorFor","getRootHarnessLoader","harnessLoaderFor","MatTabGroupHarness","ComponentHarness","selectedTabLabel","selectedTab","getSelectedTab","getTabs","filter","locatorForAll","tabs","parallel","map","t","i","length","Error","selectTab","JSON","stringify","MatTabLinkHarness","isActive","hasClass","MatTabNavPanelHarness","MatTabNavBarHarness","getLinks","getActiveLink","links","clickLink","getPanel","link","panelId","selector"],"mappings":"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"}
{"version":3,"file":"tabs-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/tabs/testing/tab-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/tabs/testing/tab-group-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/tabs/testing/tab-link-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/tabs/testing/tab-nav-panel-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/tabs/testing/tab-nav-bar-harness.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\nimport {\n ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessLoader,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {TabHarnessFilters} from './tab-harness-filters';\n\n/** Harness for interacting with an Angular Material tab in tests. */\nexport class MatTabHarness extends ContentContainerComponentHarness<string> {\n /** The selector for the host element of a `MatTab` instance. */\n static hostSelector = '.mat-mdc-tab';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a tab with specific attributes.\n * @param options Options for filtering which tab instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatTabHarness>(\n this: ComponentHarnessConstructor<T>,\n options: TabHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('label', options.label, (harness, label) =>\n HarnessPredicate.stringMatches(harness.getLabel(), label),\n )\n .addOption(\n 'selected',\n options.selected,\n async (harness, selected) => (await harness.isSelected()) == selected,\n );\n }\n\n /** Gets the label of the tab. */\n async getLabel(): Promise<string> {\n return (await this.host()).text();\n }\n\n /** Gets the aria-label of the tab. */\n async getAriaLabel(): Promise<string | null> {\n return (await this.host()).getAttribute('aria-label');\n }\n\n /** Gets the value of the \"aria-labelledby\" attribute. */\n async getAriaLabelledby(): Promise<string | null> {\n return (await this.host()).getAttribute('aria-labelledby');\n }\n\n /** Whether the tab is selected. */\n async isSelected(): Promise<boolean> {\n const hostEl = await this.host();\n return (await hostEl.getAttribute('aria-selected')) === 'true';\n }\n\n /** Whether the tab is disabled. */\n async isDisabled(): Promise<boolean> {\n const hostEl = await this.host();\n return (await hostEl.getAttribute('aria-disabled')) === 'true';\n }\n\n /** Selects the given tab by clicking on the label. Tab cannot be selected if disabled. */\n async select(): Promise<void> {\n await (await this.host()).click('center');\n }\n\n /** Gets the text content of the tab. */\n async getTextContent(): Promise<string> {\n const contentId = await this._getContentId();\n const contentEl = await this.documentRootLocatorFactory().locatorFor(`#${contentId}`)();\n return contentEl.text();\n }\n\n protected override async getRootHarnessLoader(): Promise<HarnessLoader> {\n const contentId = await this._getContentId();\n return this.documentRootLocatorFactory().harnessLoaderFor(`#${contentId}`);\n }\n\n /** Gets the element id for the content of the current tab. */\n private async _getContentId(): Promise<string> {\n const hostEl = await this.host();\n // Tabs never have an empty \"aria-controls\" attribute.\n return (await hostEl.getAttribute('aria-controls'))!;\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 ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n parallel,\n} from '@angular/cdk/testing';\nimport {TabGroupHarnessFilters, TabHarnessFilters} from './tab-harness-filters';\nimport {MatTabHarness} from './tab-harness';\n\n/** Harness for interacting with a mat-tab-group in tests. */\nexport class MatTabGroupHarness extends ComponentHarness {\n /** The selector for the host element of a `MatTabGroup` instance. */\n static hostSelector = '.mat-mdc-tab-group';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a tab group with specific attributes.\n * @param options Options for filtering which tab group instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatTabGroupHarness>(\n this: ComponentHarnessConstructor<T>,\n options: TabGroupHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options).addOption(\n 'selectedTabLabel',\n options.selectedTabLabel,\n async (harness, label) => {\n const selectedTab = await harness.getSelectedTab();\n return HarnessPredicate.stringMatches(await selectedTab.getLabel(), label);\n },\n );\n }\n\n /**\n * Gets the list of tabs in the tab group.\n * @param filter Optionally filters which tabs are included.\n */\n async getTabs(filter: TabHarnessFilters = {}): Promise<MatTabHarness[]> {\n return this.locatorForAll(MatTabHarness.with(filter))();\n }\n\n /** Gets the selected tab of the tab group. */\n async getSelectedTab(): Promise<MatTabHarness> {\n const tabs = await this.getTabs();\n const isSelected = await parallel(() => tabs.map(t => t.isSelected()));\n for (let i = 0; i < tabs.length; i++) {\n if (isSelected[i]) {\n return tabs[i];\n }\n }\n throw new Error('No selected tab could be found.');\n }\n\n /**\n * Selects a tab in this tab group.\n * @param filter An optional filter to apply to the child tabs. The first tab matching the filter\n * will be selected.\n */\n async selectTab(filter: TabHarnessFilters = {}): Promise<void> {\n const tabs = await this.getTabs(filter);\n if (!tabs.length) {\n throw Error(`Cannot find mat-tab matching filter ${JSON.stringify(filter)}`);\n }\n await tabs[0].select();\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 ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {TabLinkHarnessFilters} from './tab-harness-filters';\n\n/** Harness for interacting with a Angular Material tab link in tests. */\nexport class MatTabLinkHarness extends ComponentHarness {\n /** The selector for the host element of a `MatTabLink` instance. */\n static hostSelector = '.mat-mdc-tab-link';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a tab link with specific attributes.\n * @param options Options for filtering which tab link instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatTabLinkHarness>(\n this: ComponentHarnessConstructor<T>,\n options: TabLinkHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options).addOption('label', options.label, (harness, label) =>\n HarnessPredicate.stringMatches(harness.getLabel(), label),\n );\n }\n\n /** Gets the label of the link. */\n async getLabel(): Promise<string> {\n return (await this.host()).text();\n }\n\n /** Whether the link is active. */\n async isActive(): Promise<boolean> {\n const host = await this.host();\n return host.hasClass('mdc-tab--active');\n }\n\n /** Whether the link is disabled. */\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n return host.hasClass('mat-mdc-tab-disabled');\n }\n\n /** Clicks on the link. */\n async click(): Promise<void> {\n await (await this.host()).click();\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 ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {TabNavPanelHarnessFilters} from './tab-harness-filters';\n\n/** Harness for interacting with a standard mat-tab-nav-panel in tests. */\nexport class MatTabNavPanelHarness extends ContentContainerComponentHarness {\n /** The selector for the host element of a `MatTabNavPanel` instance. */\n static hostSelector = '.mat-mdc-tab-nav-panel';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a tab nav panel with specific\n * attributes.\n * @param options Options for filtering which tab nav panel instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatTabNavPanelHarness>(\n this: ComponentHarnessConstructor<T>,\n options: TabNavPanelHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /** Gets the tab panel text content. */\n async getTextContent(): Promise<string> {\n return (await this.host()).text();\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 ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n parallel,\n} from '@angular/cdk/testing';\nimport {\n TabNavBarHarnessFilters,\n TabNavPanelHarnessFilters,\n TabLinkHarnessFilters,\n} from './tab-harness-filters';\nimport {MatTabLinkHarness} from './tab-link-harness';\nimport {MatTabNavPanelHarness} from './tab-nav-panel-harness';\n\n/** Harness for interacting with a mat-tab-nav-bar in tests. */\nexport class MatTabNavBarHarness extends ComponentHarness {\n /** The selector for the host element of a `MatTabNavBar` instance. */\n static hostSelector = '.mat-mdc-tab-nav-bar';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a tab nav bar with specific\n * attributes.\n * @param options Options for filtering which tab nav bar instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatTabNavBarHarness>(\n this: ComponentHarnessConstructor<T>,\n options: TabNavBarHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /**\n * Gets the list of links in the nav bar.\n * @param filter Optionally filters which links are included.\n */\n async getLinks(filter: TabLinkHarnessFilters = {}): Promise<MatTabLinkHarness[]> {\n return this.locatorForAll(MatTabLinkHarness.with(filter))();\n }\n\n /** Gets the active link in the nav bar. */\n async getActiveLink(): Promise<MatTabLinkHarness> {\n const links = await this.getLinks();\n const isActive = await parallel(() => links.map(t => t.isActive()));\n for (let i = 0; i < links.length; i++) {\n if (isActive[i]) {\n return links[i];\n }\n }\n throw new Error('No active link could be found.');\n }\n\n /**\n * Clicks a link inside the nav bar.\n * @param filter An optional filter to apply to the child link. The first link matching the filter\n * will be clicked.\n */\n async clickLink(filter: TabLinkHarnessFilters = {}): Promise<void> {\n const tabs = await this.getLinks(filter);\n if (!tabs.length) {\n throw Error(`Cannot find mat-tab-link matching filter ${JSON.stringify(filter)}`);\n }\n await tabs[0].click();\n }\n\n /** Gets the panel associated with the nav bar. */\n async getPanel(): Promise<MatTabNavPanelHarness> {\n const link = await this.getActiveLink();\n const host = await link.host();\n const panelId = await host.getAttribute('aria-controls');\n if (!panelId) {\n throw Error('No panel is controlled by the nav bar.');\n }\n\n const filter: TabNavPanelHarnessFilters = {selector: `#${panelId}`};\n return await this.documentRootLocatorFactory().locatorFor(MatTabNavPanelHarness.with(filter))();\n }\n}\n"],"names":["MatTabHarness","ContentContainerComponentHarness","hostSelector","with","options","HarnessPredicate","addOption","label","harness","stringMatches","getLabel","selected","isSelected","host","text","getAriaLabel","getAttribute","getAriaLabelledby","hostEl","isDisabled","select","click","getTextContent","contentId","_getContentId","contentEl","documentRootLocatorFactory","locatorFor","getRootHarnessLoader","harnessLoaderFor","MatTabGroupHarness","ComponentHarness","selectedTabLabel","selectedTab","getSelectedTab","getTabs","filter","locatorForAll","tabs","parallel","map","t","i","length","Error","selectTab","JSON","stringify","MatTabLinkHarness","isActive","hasClass","MatTabNavPanelHarness","MatTabNavBarHarness","getLinks","getActiveLink","links","clickLink","getPanel","link","panelId","selector"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"timepicker-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/testing/timepicker-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/testing/timepicker-input-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/testing/timepicker-toggle-harness.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\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {MatOptionHarness, OptionHarnessFilters} from '../../core/testing';\nimport {TimepickerHarnessFilters} from './timepicker-harness-filters';\n\nexport class MatTimepickerHarness extends ComponentHarness {\n private _documentRootLocator = this.documentRootLocatorFactory();\n static hostSelector = 'mat-timepicker';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a timepicker with specific\n * attributes.\n * @param options Options for filtering which timepicker instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatTimepickerHarness>(\n this: ComponentHarnessConstructor<T>,\n options: TimepickerHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /** Whether the timepicker is open. */\n async isOpen(): Promise<boolean> {\n const selector = await this._getPanelSelector();\n const panel = await this._documentRootLocator.locatorForOptional(selector)();\n return panel !== null;\n }\n\n /** Gets the options inside the timepicker panel. */\n async getOptions(filters?: Omit<OptionHarnessFilters, 'ancestor'>): Promise<MatOptionHarness[]> {\n if (!(await this.isOpen())) {\n throw new Error('Unable to retrieve options for timepicker. Timepicker panel is closed.');\n }\n\n return this._documentRootLocator.locatorForAll(\n MatOptionHarness.with({\n ...(filters || {}),\n ancestor: await this._getPanelSelector(),\n } as OptionHarnessFilters),\n )();\n }\n\n /** Selects the first option matching the given filters. */\n async selectOption(filters: OptionHarnessFilters): Promise<void> {\n const options = await this.getOptions(filters);\n if (!options.length) {\n throw Error(`Could not find a mat-option matching ${JSON.stringify(filters)}`);\n }\n await options[0].click();\n }\n\n /** Gets the selector that can be used to find the timepicker's panel. */\n protected async _getPanelSelector(): Promise<string> {\n return `#${await (await this.host()).getAttribute('mat-timepicker-panel-id')}`;\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 ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n TestKey,\n} from '@angular/cdk/testing';\nimport {MatTimepickerHarness} from './timepicker-harness';\nimport {\n TimepickerHarnessFilters,\n TimepickerInputHarnessFilters,\n} from './timepicker-harness-filters';\n\n/** Harness for interacting with a standard Material timepicker inputs in tests. */\nexport class MatTimepickerInputHarness extends ComponentHarness {\n private _documentRootLocator = this.documentRootLocatorFactory();\n static hostSelector = '.mat-timepicker-input';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatTimepickerInputHarness`\n * that meets certain criteria.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatTimepickerInputHarness>(\n this: ComponentHarnessConstructor<T>,\n options: TimepickerInputHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('value', options.value, (harness, value) => {\n return HarnessPredicate.stringMatches(harness.getValue(), value);\n })\n .addOption('placeholder', options.placeholder, (harness, placeholder) => {\n return HarnessPredicate.stringMatches(harness.getPlaceholder(), placeholder);\n });\n }\n\n /** Gets whether the timepicker associated with the input is open. */\n async isTimepickerOpen(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-expanded')) === 'true';\n }\n\n /** Opens the timepicker associated with the input and returns the timepicker instance. */\n async openTimepicker(): Promise<MatTimepickerHarness> {\n if (!(await this.isDisabled())) {\n const host = await this.host();\n await host.sendKeys(TestKey.DOWN_ARROW);\n }\n\n return this.getTimepicker();\n }\n\n /** Closes the timepicker associated with the input. */\n async closeTimepicker(): Promise<void> {\n await this._documentRootLocator.rootElement.click();\n\n // This is necessary so that we wait for the closing animation.\n await this.forceStabilize();\n }\n\n /**\n * Gets the `MatTimepickerHarness` that is associated with the input.\n * @param filter Optionally filters which timepicker is included.\n */\n async getTimepicker(filter: TimepickerHarnessFilters = {}): Promise<MatTimepickerHarness> {\n const host = await this.host();\n const timepickerId = await host.getAttribute('mat-timepicker-id');\n\n if (!timepickerId) {\n throw Error('Element is not associated with a timepicker');\n }\n\n return this._documentRootLocator.locatorFor(\n MatTimepickerHarness.with({\n ...filter,\n selector: `[mat-timepicker-panel-id=\"${timepickerId}\"]`,\n }),\n )();\n }\n\n /** Whether the input is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('disabled');\n }\n\n /** Whether the input is required. */\n async isRequired(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('required');\n }\n\n /** Gets the value of the input. */\n async getValue(): Promise<string> {\n // The \"value\" property of the native input is always defined.\n return await (await this.host()).getProperty<string>('value');\n }\n\n /**\n * Sets the value of the input. The value will be set by simulating\n * keypresses that correspond to the given value.\n */\n async setValue(newValue: string): Promise<void> {\n const inputEl = await this.host();\n await inputEl.clear();\n\n // We don't want to send keys for the value if the value is an empty\n // string in order to clear the value. Sending keys with an empty string\n // still results in unnecessary focus events.\n if (newValue) {\n await inputEl.sendKeys(newValue);\n }\n }\n\n /** Gets the placeholder of the input. */\n async getPlaceholder(): Promise<string> {\n return await (await this.host()).getProperty<string>('placeholder');\n }\n\n /**\n * Focuses the input and returns a promise that indicates when the\n * action is complete.\n */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /**\n * Blurs the input and returns a promise that indicates when the\n * action is complete.\n */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the input is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\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 {ComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {TimepickerToggleHarnessFilters} from './timepicker-harness-filters';\n\n/** Harness for interacting with a standard Material timepicker toggle in tests. */\nexport class MatTimepickerToggleHarness extends ComponentHarness {\n static hostSelector = '.mat-timepicker-toggle';\n\n /** The clickable button inside the toggle. */\n private _button = this.locatorFor('button');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatTimepickerToggleHarness` that\n * meets certain criteria.\n * @param options Options for filtering which timepicker toggle instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: TimepickerToggleHarnessFilters = {},\n ): HarnessPredicate<MatTimepickerToggleHarness> {\n return new HarnessPredicate(MatTimepickerToggleHarness, options);\n }\n\n /** Opens the timepicker associated with the toggle. */\n async openTimepicker(): Promise<void> {\n const isOpen = await this.isTimepickerOpen();\n\n if (!isOpen) {\n const button = await this._button();\n await button.click();\n }\n }\n\n /** Gets whether the timepicker associated with the toggle is open. */\n async isTimepickerOpen(): Promise<boolean> {\n const button = await this._button();\n const ariaExpanded = await button.getAttribute('aria-expanded');\n return ariaExpanded === 'true';\n }\n\n /** Whether the toggle is disabled. */\n async isDisabled(): Promise<boolean> {\n const button = await this._button();\n return coerceBooleanProperty(await button.getAttribute('disabled'));\n }\n}\n"],"names":["MatTimepickerHarness","ComponentHarness","_documentRootLocator","documentRootLocatorFactory","hostSelector","with","options","HarnessPredicate","isOpen","selector","_getPanelSelector","panel","locatorForOptional","getOptions","filters","Error","locatorForAll","MatOptionHarness","ancestor","selectOption","length","JSON","stringify","click","host","getAttribute","MatTimepickerInputHarness","addOption","value","harness","stringMatches","getValue","placeholder","getPlaceholder","isTimepickerOpen","openTimepicker","isDisabled","sendKeys","TestKey","DOWN_ARROW","getTimepicker","closeTimepicker","rootElement","forceStabilize","filter","timepickerId","locatorFor","getProperty","isRequired","setValue","newValue","inputEl","clear","focus","blur","isFocused","MatTimepickerToggleHarness","_button","button","ariaExpanded","coerceBooleanProperty"],"mappings":"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"}
{"version":3,"file":"timepicker-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/testing/timepicker-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/testing/timepicker-input-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/testing/timepicker-toggle-harness.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\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {MatOptionHarness, OptionHarnessFilters} from '../../core/testing';\nimport {TimepickerHarnessFilters} from './timepicker-harness-filters';\n\nexport class MatTimepickerHarness extends ComponentHarness {\n private _documentRootLocator = this.documentRootLocatorFactory();\n static hostSelector = 'mat-timepicker';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a timepicker with specific\n * attributes.\n * @param options Options for filtering which timepicker instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatTimepickerHarness>(\n this: ComponentHarnessConstructor<T>,\n options: TimepickerHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /** Whether the timepicker is open. */\n async isOpen(): Promise<boolean> {\n const selector = await this._getPanelSelector();\n const panel = await this._documentRootLocator.locatorForOptional(selector)();\n return panel !== null;\n }\n\n /** Gets the options inside the timepicker panel. */\n async getOptions(filters?: Omit<OptionHarnessFilters, 'ancestor'>): Promise<MatOptionHarness[]> {\n if (!(await this.isOpen())) {\n throw new Error('Unable to retrieve options for timepicker. Timepicker panel is closed.');\n }\n\n return this._documentRootLocator.locatorForAll(\n MatOptionHarness.with({\n ...(filters || {}),\n ancestor: await this._getPanelSelector(),\n } as OptionHarnessFilters),\n )();\n }\n\n /** Selects the first option matching the given filters. */\n async selectOption(filters: OptionHarnessFilters): Promise<void> {\n const options = await this.getOptions(filters);\n if (!options.length) {\n throw Error(`Could not find a mat-option matching ${JSON.stringify(filters)}`);\n }\n await options[0].click();\n }\n\n /** Gets the selector that can be used to find the timepicker's panel. */\n protected async _getPanelSelector(): Promise<string> {\n return `#${await (await this.host()).getAttribute('mat-timepicker-panel-id')}`;\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 ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n TestKey,\n} from '@angular/cdk/testing';\nimport {MatTimepickerHarness} from './timepicker-harness';\nimport {\n TimepickerHarnessFilters,\n TimepickerInputHarnessFilters,\n} from './timepicker-harness-filters';\n\n/** Harness for interacting with a standard Material timepicker inputs in tests. */\nexport class MatTimepickerInputHarness extends ComponentHarness {\n private _documentRootLocator = this.documentRootLocatorFactory();\n static hostSelector = '.mat-timepicker-input';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatTimepickerInputHarness`\n * that meets certain criteria.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatTimepickerInputHarness>(\n this: ComponentHarnessConstructor<T>,\n options: TimepickerInputHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('value', options.value, (harness, value) => {\n return HarnessPredicate.stringMatches(harness.getValue(), value);\n })\n .addOption('placeholder', options.placeholder, (harness, placeholder) => {\n return HarnessPredicate.stringMatches(harness.getPlaceholder(), placeholder);\n });\n }\n\n /** Gets whether the timepicker associated with the input is open. */\n async isTimepickerOpen(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-expanded')) === 'true';\n }\n\n /** Opens the timepicker associated with the input and returns the timepicker instance. */\n async openTimepicker(): Promise<MatTimepickerHarness> {\n if (!(await this.isDisabled())) {\n const host = await this.host();\n await host.sendKeys(TestKey.DOWN_ARROW);\n }\n\n return this.getTimepicker();\n }\n\n /** Closes the timepicker associated with the input. */\n async closeTimepicker(): Promise<void> {\n await this._documentRootLocator.rootElement.click();\n\n // This is necessary so that we wait for the closing animation.\n await this.forceStabilize();\n }\n\n /**\n * Gets the `MatTimepickerHarness` that is associated with the input.\n * @param filter Optionally filters which timepicker is included.\n */\n async getTimepicker(filter: TimepickerHarnessFilters = {}): Promise<MatTimepickerHarness> {\n const host = await this.host();\n const timepickerId = await host.getAttribute('mat-timepicker-id');\n\n if (!timepickerId) {\n throw Error('Element is not associated with a timepicker');\n }\n\n return this._documentRootLocator.locatorFor(\n MatTimepickerHarness.with({\n ...filter,\n selector: `[mat-timepicker-panel-id=\"${timepickerId}\"]`,\n }),\n )();\n }\n\n /** Whether the input is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('disabled');\n }\n\n /** Whether the input is required. */\n async isRequired(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('required');\n }\n\n /** Gets the value of the input. */\n async getValue(): Promise<string> {\n // The \"value\" property of the native input is always defined.\n return await (await this.host()).getProperty<string>('value');\n }\n\n /**\n * Sets the value of the input. The value will be set by simulating\n * keypresses that correspond to the given value.\n */\n async setValue(newValue: string): Promise<void> {\n const inputEl = await this.host();\n await inputEl.clear();\n\n // We don't want to send keys for the value if the value is an empty\n // string in order to clear the value. Sending keys with an empty string\n // still results in unnecessary focus events.\n if (newValue) {\n await inputEl.sendKeys(newValue);\n }\n }\n\n /** Gets the placeholder of the input. */\n async getPlaceholder(): Promise<string> {\n return await (await this.host()).getProperty<string>('placeholder');\n }\n\n /**\n * Focuses the input and returns a promise that indicates when the\n * action is complete.\n */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /**\n * Blurs the input and returns a promise that indicates when the\n * action is complete.\n */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the input is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\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 {ComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {TimepickerToggleHarnessFilters} from './timepicker-harness-filters';\n\n/** Harness for interacting with a standard Material timepicker toggle in tests. */\nexport class MatTimepickerToggleHarness extends ComponentHarness {\n static hostSelector = '.mat-timepicker-toggle';\n\n /** The clickable button inside the toggle. */\n private _button = this.locatorFor('button');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatTimepickerToggleHarness` that\n * meets certain criteria.\n * @param options Options for filtering which timepicker toggle instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: TimepickerToggleHarnessFilters = {},\n ): HarnessPredicate<MatTimepickerToggleHarness> {\n return new HarnessPredicate(MatTimepickerToggleHarness, options);\n }\n\n /** Opens the timepicker associated with the toggle. */\n async openTimepicker(): Promise<void> {\n const isOpen = await this.isTimepickerOpen();\n\n if (!isOpen) {\n const button = await this._button();\n await button.click();\n }\n }\n\n /** Gets whether the timepicker associated with the toggle is open. */\n async isTimepickerOpen(): Promise<boolean> {\n const button = await this._button();\n const ariaExpanded = await button.getAttribute('aria-expanded');\n return ariaExpanded === 'true';\n }\n\n /** Whether the toggle is disabled. */\n async isDisabled(): Promise<boolean> {\n const button = await this._button();\n return coerceBooleanProperty(await button.getAttribute('disabled'));\n }\n}\n"],"names":["MatTimepickerHarness","ComponentHarness","_documentRootLocator","documentRootLocatorFactory","hostSelector","with","options","HarnessPredicate","isOpen","selector","_getPanelSelector","panel","locatorForOptional","getOptions","filters","Error","locatorForAll","MatOptionHarness","ancestor","selectOption","length","JSON","stringify","click","host","getAttribute","MatTimepickerInputHarness","addOption","value","harness","stringMatches","getValue","placeholder","getPlaceholder","isTimepickerOpen","openTimepicker","isDisabled","sendKeys","TestKey","DOWN_ARROW","getTimepicker","closeTimepicker","rootElement","forceStabilize","filter","timepickerId","locatorFor","getProperty","isRequired","setValue","newValue","inputEl","clear","focus","blur","isFocused","MatTimepickerToggleHarness","_button","button","ariaExpanded","coerceBooleanProperty"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"toolbar-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/toolbar/testing/toolbar-harness.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\nimport {ContentContainerComponentHarness, HarnessPredicate, parallel} from '@angular/cdk/testing';\nimport {ToolbarHarnessFilters} from './toolbar-harness-filters';\n\n/** Selectors for different sections of the mat-toolbar that contain user content. */\nexport enum MatToolbarSection {\n ROW = '.mat-toolbar-row',\n}\n\n/** Harness for interacting with a standard mat-toolbar in tests. */\nexport class MatToolbarHarness extends ContentContainerComponentHarness<MatToolbarSection> {\n static hostSelector = '.mat-toolbar';\n\n private _getRows = this.locatorForAll(MatToolbarSection.ROW);\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatToolbarHarness` that meets\n * certain criteria.\n * @param options Options for filtering which card instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: ToolbarHarnessFilters = {}): HarnessPredicate<MatToolbarHarness> {\n return new HarnessPredicate(MatToolbarHarness, options).addOption(\n 'text',\n options.text,\n (harness, text) => HarnessPredicate.stringMatches(harness._getText(), text),\n );\n }\n\n /** Whether the toolbar has multiple rows. */\n async hasMultipleRows(): Promise<boolean> {\n return (await this.host()).hasClass('mat-toolbar-multiple-rows');\n }\n\n /** Gets all of the toolbar's content as text. */\n private async _getText(): Promise<string> {\n return (await this.host()).text();\n }\n\n /** Gets the text of each row in the toolbar. */\n async getRowsAsText(): Promise<string[]> {\n const rows = await this._getRows();\n return parallel(() => (rows.length ? rows.map(r => r.text()) : [this._getText()]));\n }\n}\n"],"names":["MatToolbarSection","MatToolbarHarness","ContentContainerComponentHarness","hostSelector","_getRows","locatorForAll","ROW","with","options","HarnessPredicate","addOption","text","harness","stringMatches","_getText","hasMultipleRows","host","hasClass","getRowsAsText","rows","parallel","length","map","r"],"mappings":";;IAYYA;AAAZ,CAAA,UAAYA,iBAAiB,EAAA;AAC3BA,EAAAA,iBAAA,CAAA,KAAA,CAAA,GAAA,kBAAwB;AAC1B,CAAC,EAFWA,iBAAiB,KAAjBA,iBAAiB,GAAA,EAAA,CAAA,CAAA;AAKvB,MAAOC,iBAAkB,SAAQC,gCAAmD,CAAA;EACxF,OAAOC,YAAY,GAAG,cAAc;EAE5BC,QAAQ,GAAG,IAAI,CAACC,aAAa,CAACL,iBAAiB,CAACM,GAAG,CAAC;AAQ5D,EAAA,OAAOC,IAAIA,CAACC,OAAA,GAAiC,EAAE,EAAA;AAC7C,IAAA,OAAO,IAAIC,gBAAgB,CAACR,iBAAiB,EAAEO,OAAO,CAAC,CAACE,SAAS,CAC/D,MAAM,EACNF,OAAO,CAACG,IAAI,EACZ,CAACC,OAAO,EAAED,IAAI,KAAKF,gBAAgB,CAACI,aAAa,CAACD,OAAO,CAACE,QAAQ,EAAE,EAAEH,IAAI,CAAC,CAC5E;AACH,EAAA;EAGA,MAAMI,eAAeA,GAAA;IACnB,OAAO,CAAC,MAAM,IAAI,CAACC,IAAI,EAAE,EAAEC,QAAQ,CAAC,2BAA2B,CAAC;AAClE,EAAA;EAGQ,MAAMH,QAAQA,GAAA;IACpB,OAAO,CAAC,MAAM,IAAI,CAACE,IAAI,EAAE,EAAEL,IAAI,EAAE;AACnC,EAAA;EAGA,MAAMO,aAAaA,GAAA;AACjB,IAAA,MAAMC,IAAI,GAAG,MAAM,IAAI,CAACf,QAAQ,EAAE;IAClC,OAAOgB,QAAQ,CAAC,MAAOD,IAAI,CAACE,MAAM,GAAGF,IAAI,CAACG,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACZ,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAACG,QAAQ,EAAE,CAAE,CAAC;AACpF,EAAA;;;;;"}
{"version":3,"file":"toolbar-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/toolbar/testing/toolbar-harness.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\nimport {ContentContainerComponentHarness, HarnessPredicate, parallel} from '@angular/cdk/testing';\nimport {ToolbarHarnessFilters} from './toolbar-harness-filters';\n\n/** Selectors for different sections of the mat-toolbar that contain user content. */\nexport enum MatToolbarSection {\n ROW = '.mat-toolbar-row',\n}\n\n/** Harness for interacting with a standard mat-toolbar in tests. */\nexport class MatToolbarHarness extends ContentContainerComponentHarness<MatToolbarSection> {\n static hostSelector = '.mat-toolbar';\n\n private _getRows = this.locatorForAll(MatToolbarSection.ROW);\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatToolbarHarness` that meets\n * certain criteria.\n * @param options Options for filtering which card instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: ToolbarHarnessFilters = {}): HarnessPredicate<MatToolbarHarness> {\n return new HarnessPredicate(MatToolbarHarness, options).addOption(\n 'text',\n options.text,\n (harness, text) => HarnessPredicate.stringMatches(harness._getText(), text),\n );\n }\n\n /** Whether the toolbar has multiple rows. */\n async hasMultipleRows(): Promise<boolean> {\n return (await this.host()).hasClass('mat-toolbar-multiple-rows');\n }\n\n /** Gets all of the toolbar's content as text. */\n private async _getText(): Promise<string> {\n return (await this.host()).text();\n }\n\n /** Gets the text of each row in the toolbar. */\n async getRowsAsText(): Promise<string[]> {\n const rows = await this._getRows();\n return parallel(() => (rows.length ? rows.map(r => r.text()) : [this._getText()]));\n }\n}\n"],"names":["MatToolbarSection","MatToolbarHarness","ContentContainerComponentHarness","hostSelector","_getRows","locatorForAll","ROW","with","options","HarnessPredicate","addOption","text","harness","stringMatches","_getText","hasMultipleRows","host","hasClass","getRowsAsText","rows","parallel","length","map","r"],"mappings":";;IAYYA;AAAZ,CAAA,UAAYA,iBAAiB,EAAA;AAC3BA,EAAAA,iBAAA,CAAA,KAAA,CAAA,GAAA,kBAAwB;AAC1B,CAAC,EAFWA,iBAAiB,KAAjBA,iBAAiB,GAAA,EAAA,CAAA,CAAA;AAKvB,MAAOC,iBAAkB,SAAQC,gCAAmD,CAAA;EACxF,OAAOC,YAAY,GAAG,cAAc;EAE5BC,QAAQ,GAAG,IAAI,CAACC,aAAa,CAACL,iBAAiB,CAACM,GAAG,CAAC;AAQ5D,EAAA,OAAOC,IAAIA,CAACC,OAAA,GAAiC,EAAE,EAAA;AAC7C,IAAA,OAAO,IAAIC,gBAAgB,CAACR,iBAAiB,EAAEO,OAAO,CAAC,CAACE,SAAS,CAC/D,MAAM,EACNF,OAAO,CAACG,IAAI,EACZ,CAACC,OAAO,EAAED,IAAI,KAAKF,gBAAgB,CAACI,aAAa,CAACD,OAAO,CAACE,QAAQ,EAAE,EAAEH,IAAI,CAAC,CAC5E;AACH,EAAA;EAGA,MAAMI,eAAeA,GAAA;IACnB,OAAO,CAAC,MAAM,IAAI,CAACC,IAAI,EAAE,EAAEC,QAAQ,CAAC,2BAA2B,CAAC;AAClE,EAAA;EAGQ,MAAMH,QAAQA,GAAA;IACpB,OAAO,CAAC,MAAM,IAAI,CAACE,IAAI,EAAE,EAAEL,IAAI,EAAE;AACnC,EAAA;EAGA,MAAMO,aAAaA,GAAA;AACjB,IAAA,MAAMC,IAAI,GAAG,MAAM,IAAI,CAACf,QAAQ,EAAE;IAClC,OAAOgB,QAAQ,CAAC,MAAOD,IAAI,CAACE,MAAM,GAAGF,IAAI,CAACG,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACZ,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAACG,QAAQ,EAAE,CAAE,CAAC;AACpF,EAAA;;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"toolbar.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/toolbar/toolbar.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/toolbar/toolbar.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/toolbar/toolbar-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\nimport {Platform} from '@angular/cdk/platform';\n\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n Directive,\n ElementRef,\n Input,\n QueryList,\n ViewEncapsulation,\n inject,\n DOCUMENT,\n} from '@angular/core';\n\n@Directive({\n selector: 'mat-toolbar-row',\n exportAs: 'matToolbarRow',\n host: {'class': 'mat-toolbar-row'},\n})\nexport class MatToolbarRow {}\n\n@Component({\n selector: 'mat-toolbar',\n exportAs: 'matToolbar',\n templateUrl: 'toolbar.html',\n styleUrl: 'toolbar.css',\n host: {\n 'class': 'mat-toolbar',\n '[class]': 'color ? \"mat-\" + color : \"\"',\n '[class.mat-toolbar-multiple-rows]': '_toolbarRows.length > 0',\n '[class.mat-toolbar-single-row]': '_toolbarRows.length === 0',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatToolbar implements AfterViewInit {\n protected _elementRef = inject(ElementRef);\n private _platform = inject(Platform);\n private _document = inject(DOCUMENT);\n\n // TODO: should be typed as `ThemePalette` but internal apps pass in arbitrary strings.\n /**\n * Theme color of the toolbar. This API is supported in M2 themes only, it has\n * no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/toolbar/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input() color?: string | null;\n\n /** Reference to all toolbar row elements that have been projected. */\n @ContentChildren(MatToolbarRow, {descendants: true}) _toolbarRows!: QueryList<MatToolbarRow>;\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n this._checkToolbarMixedModes();\n this._toolbarRows.changes.subscribe(() => this._checkToolbarMixedModes());\n }\n }\n\n /**\n * Throws an exception when developers are attempting to combine the different toolbar row modes.\n */\n private _checkToolbarMixedModes() {\n if (this._toolbarRows.length && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n // Check if there are any other DOM nodes that can display content but aren't inside of\n // a <mat-toolbar-row> element.\n const isCombinedUsage = Array.from<HTMLElement>(this._elementRef.nativeElement.childNodes)\n .filter(node => !(node.classList && node.classList.contains('mat-toolbar-row')))\n .filter(node => node.nodeType !== (this._document ? this._document.COMMENT_NODE : 8))\n .some(node => !!(node.textContent && node.textContent.trim()));\n\n if (isCombinedUsage) {\n throwToolbarMixedModesError();\n }\n }\n }\n}\n\n/**\n * Throws an exception when attempting to combine the different toolbar row modes.\n * @docs-private\n */\nexport function throwToolbarMixedModesError() {\n throw Error(\n 'MatToolbar: Attempting to combine different toolbar modes. ' +\n 'Either specify multiple `<mat-toolbar-row>` elements explicitly or just place content ' +\n 'inside of a `<mat-toolbar>` for a single row.',\n );\n}\n","<ng-content></ng-content>\n<ng-content select=\"mat-toolbar-row\"></ng-content>\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 {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\nimport {MatToolbar, MatToolbarRow} from './toolbar';\n\n@NgModule({\n imports: [MatToolbar, MatToolbarRow],\n exports: [MatToolbar, MatToolbarRow, BidiModule],\n})\nexport class MatToolbarModule {}\n"],"names":["MatToolbarRow","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","host","classAttribute","exportAs","ngImport","decorators","args","MatToolbar","_elementRef","inject","ElementRef","_platform","Platform","_document","DOCUMENT","color","_toolbarRows","constructor","ngAfterViewInit","isBrowser","_checkToolbarMixedModes","changes","subscribe","length","ngDevMode","isCombinedUsage","Array","from","nativeElement","childNodes","filter","node","classList","contains","nodeType","COMMENT_NODE","some","textContent","trim","throwToolbarMixedModesError","Component","inputs","properties","queries","propertyName","predicate","descendants","template","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","Input","ContentChildren","Error","MatToolbarModule","NgModule","imports","BidiModule","ɵinj","ɵɵngDeclareInjector","minVersion","version","type","exports"],"mappings":"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"}
{"version":3,"file":"toolbar.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/toolbar/toolbar.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/toolbar/toolbar.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/toolbar/toolbar-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\nimport {Platform} from '@angular/cdk/platform';\n\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n Directive,\n ElementRef,\n Input,\n QueryList,\n ViewEncapsulation,\n inject,\n DOCUMENT,\n} from '@angular/core';\n\n@Directive({\n selector: 'mat-toolbar-row',\n exportAs: 'matToolbarRow',\n host: {'class': 'mat-toolbar-row'},\n})\nexport class MatToolbarRow {}\n\n@Component({\n selector: 'mat-toolbar',\n exportAs: 'matToolbar',\n templateUrl: 'toolbar.html',\n styleUrl: 'toolbar.css',\n host: {\n 'class': 'mat-toolbar',\n '[class]': 'color ? \"mat-\" + color : \"\"',\n '[class.mat-toolbar-multiple-rows]': '_toolbarRows.length > 0',\n '[class.mat-toolbar-single-row]': '_toolbarRows.length === 0',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatToolbar implements AfterViewInit {\n protected _elementRef = inject(ElementRef);\n private _platform = inject(Platform);\n private _document = inject(DOCUMENT);\n\n // TODO: should be typed as `ThemePalette` but internal apps pass in arbitrary strings.\n /**\n * Theme color of the toolbar. This API is supported in M2 themes only, it has\n * no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/toolbar/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input() color?: string | null;\n\n /** Reference to all toolbar row elements that have been projected. */\n @ContentChildren(MatToolbarRow, {descendants: true}) _toolbarRows!: QueryList<MatToolbarRow>;\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n this._checkToolbarMixedModes();\n this._toolbarRows.changes.subscribe(() => this._checkToolbarMixedModes());\n }\n }\n\n /**\n * Throws an exception when developers are attempting to combine the different toolbar row modes.\n */\n private _checkToolbarMixedModes() {\n if (this._toolbarRows.length && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n // Check if there are any other DOM nodes that can display content but aren't inside of\n // a <mat-toolbar-row> element.\n const isCombinedUsage = Array.from<HTMLElement>(this._elementRef.nativeElement.childNodes)\n .filter(node => !(node.classList && node.classList.contains('mat-toolbar-row')))\n .filter(node => node.nodeType !== (this._document ? this._document.COMMENT_NODE : 8))\n .some(node => !!(node.textContent && node.textContent.trim()));\n\n if (isCombinedUsage) {\n throwToolbarMixedModesError();\n }\n }\n }\n}\n\n/**\n * Throws an exception when attempting to combine the different toolbar row modes.\n * @docs-private\n */\nexport function throwToolbarMixedModesError() {\n throw Error(\n 'MatToolbar: Attempting to combine different toolbar modes. ' +\n 'Either specify multiple `<mat-toolbar-row>` elements explicitly or just place content ' +\n 'inside of a `<mat-toolbar>` for a single row.',\n );\n}\n","<ng-content></ng-content>\n<ng-content select=\"mat-toolbar-row\"></ng-content>\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 {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\nimport {MatToolbar, MatToolbarRow} from './toolbar';\n\n@NgModule({\n imports: [MatToolbar, MatToolbarRow],\n exports: [MatToolbar, MatToolbarRow, BidiModule],\n})\nexport class MatToolbarModule {}\n"],"names":["MatToolbarRow","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","host","classAttribute","exportAs","ngImport","decorators","args","MatToolbar","_elementRef","inject","ElementRef","_platform","Platform","_document","DOCUMENT","color","_toolbarRows","constructor","ngAfterViewInit","isBrowser","_checkToolbarMixedModes","changes","subscribe","length","ngDevMode","isCombinedUsage","Array","from","nativeElement","childNodes","filter","node","classList","contains","nodeType","COMMENT_NODE","some","textContent","trim","throwToolbarMixedModesError","Component","inputs","properties","queries","propertyName","predicate","descendants","template","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","Input","ContentChildren","Error","MatToolbarModule","NgModule","imports","BidiModule","ɵinj","ɵɵngDeclareInjector","minVersion","version","type","exports"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"tooltip-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/tooltip/testing/tooltip-harness.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\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {TooltipHarnessFilters} from './tooltip-harness-filters';\n\n/** Harness for interacting with a mat-tooltip in tests. */\nexport class MatTooltipHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-tooltip-trigger';\n\n private _optionalPanel = this.documentRootLocatorFactory().locatorForOptional('.mat-mdc-tooltip');\n private _hiddenClass = 'mat-mdc-tooltip-hide';\n private _disabledClass = 'mat-mdc-tooltip-disabled';\n private _showAnimationName = 'mat-mdc-tooltip-show';\n private _hideAnimationName = 'mat-mdc-tooltip-hide';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a tooltip trigger with specific\n * attributes.\n * @param options Options for narrowing the search.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatTooltipHarness>(\n this: ComponentHarnessConstructor<T>,\n options: TooltipHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /** Shows the tooltip. */\n async show(): Promise<void> {\n const host = await this.host();\n\n // We need to dispatch both `touchstart` and a hover event, because the tooltip binds\n // different events depending on the device. The `changedTouches` is there in case the\n // element has ripples.\n await host.dispatchEvent('touchstart', {changedTouches: []});\n await host.hover();\n const panel = await this._optionalPanel();\n await panel?.dispatchEvent('animationend', {animationName: this._showAnimationName});\n }\n\n /** Hides the tooltip. */\n async hide(): Promise<void> {\n const host = await this.host();\n\n // We need to dispatch both `touchstart` and a hover event, because\n // the tooltip binds different events depending on the device.\n await host.dispatchEvent('touchend');\n await host.mouseAway();\n const panel = await this._optionalPanel();\n await panel?.dispatchEvent('animationend', {animationName: this._hideAnimationName});\n }\n\n /** Gets whether the tooltip is open. */\n async isOpen(): Promise<boolean> {\n const panel = await this._optionalPanel();\n return !!panel && !(await panel.hasClass(this._hiddenClass));\n }\n\n /** Gets whether the tooltip is disabled */\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n return host.hasClass(this._disabledClass);\n }\n\n /** Gets a promise for the tooltip panel's text. */\n async getTooltipText(): Promise<string> {\n const panel = await this._optionalPanel();\n return panel ? panel.text() : '';\n }\n}\n"],"names":["MatTooltipHarness","ComponentHarness","hostSelector","_optionalPanel","documentRootLocatorFactory","locatorForOptional","_hiddenClass","_disabledClass","_showAnimationName","_hideAnimationName","with","options","HarnessPredicate","show","host","dispatchEvent","changedTouches","hover","panel","animationName","hide","mouseAway","isOpen","hasClass","isDisabled","getTooltipText","text"],"mappings":";;AAgBM,MAAOA,iBAAkB,SAAQC,gBAAgB,CAAA;EACrD,OAAOC,YAAY,GAAG,0BAA0B;EAExCC,cAAc,GAAG,IAAI,CAACC,0BAA0B,EAAE,CAACC,kBAAkB,CAAC,kBAAkB,CAAC;AACzFC,EAAAA,YAAY,GAAG,sBAAsB;AACrCC,EAAAA,cAAc,GAAG,0BAA0B;AAC3CC,EAAAA,kBAAkB,GAAG,sBAAsB;AAC3CC,EAAAA,kBAAkB,GAAG,sBAAsB;AAQnD,EAAA,OAAOC,IAAIA,CAETC,OAAA,GAAiC,EAAE,EAAA;AAEnC,IAAA,OAAO,IAAIC,gBAAgB,CAAC,IAAI,EAAED,OAAO,CAAC;AAC5C,EAAA;EAGA,MAAME,IAAIA,GAAA;AACR,IAAA,MAAMC,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;AAK9B,IAAA,MAAMA,IAAI,CAACC,aAAa,CAAC,YAAY,EAAE;AAACC,MAAAA,cAAc,EAAE;AAAE,KAAC,CAAC;AAC5D,IAAA,MAAMF,IAAI,CAACG,KAAK,EAAE;AAClB,IAAA,MAAMC,KAAK,GAAG,MAAM,IAAI,CAACf,cAAc,EAAE;AACzC,IAAA,MAAMe,KAAK,EAAEH,aAAa,CAAC,cAAc,EAAE;MAACI,aAAa,EAAE,IAAI,CAACX;AAAkB,KAAC,CAAC;AACtF,EAAA;EAGA,MAAMY,IAAIA,GAAA;AACR,IAAA,MAAMN,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;AAI9B,IAAA,MAAMA,IAAI,CAACC,aAAa,CAAC,UAAU,CAAC;AACpC,IAAA,MAAMD,IAAI,CAACO,SAAS,EAAE;AACtB,IAAA,MAAMH,KAAK,GAAG,MAAM,IAAI,CAACf,cAAc,EAAE;AACzC,IAAA,MAAMe,KAAK,EAAEH,aAAa,CAAC,cAAc,EAAE;MAACI,aAAa,EAAE,IAAI,CAACV;AAAkB,KAAC,CAAC;AACtF,EAAA;EAGA,MAAMa,MAAMA,GAAA;AACV,IAAA,MAAMJ,KAAK,GAAG,MAAM,IAAI,CAACf,cAAc,EAAE;AACzC,IAAA,OAAO,CAAC,CAACe,KAAK,IAAI,EAAE,MAAMA,KAAK,CAACK,QAAQ,CAAC,IAAI,CAACjB,YAAY,CAAC,CAAC;AAC9D,EAAA;EAGA,MAAMkB,UAAUA,GAAA;AACd,IAAA,MAAMV,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;AAC9B,IAAA,OAAOA,IAAI,CAACS,QAAQ,CAAC,IAAI,CAAChB,cAAc,CAAC;AAC3C,EAAA;EAGA,MAAMkB,cAAcA,GAAA;AAClB,IAAA,MAAMP,KAAK,GAAG,MAAM,IAAI,CAACf,cAAc,EAAE;IACzC,OAAOe,KAAK,GAAGA,KAAK,CAACQ,IAAI,EAAE,GAAG,EAAE;AAClC,EAAA;;;;;"}
{"version":3,"file":"tooltip-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/tooltip/testing/tooltip-harness.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\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {TooltipHarnessFilters} from './tooltip-harness-filters';\n\n/** Harness for interacting with a mat-tooltip in tests. */\nexport class MatTooltipHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-tooltip-trigger';\n\n private _optionalPanel = this.documentRootLocatorFactory().locatorForOptional('.mat-mdc-tooltip');\n private _hiddenClass = 'mat-mdc-tooltip-hide';\n private _disabledClass = 'mat-mdc-tooltip-disabled';\n private _showAnimationName = 'mat-mdc-tooltip-show';\n private _hideAnimationName = 'mat-mdc-tooltip-hide';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a tooltip trigger with specific\n * attributes.\n * @param options Options for narrowing the search.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatTooltipHarness>(\n this: ComponentHarnessConstructor<T>,\n options: TooltipHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /** Shows the tooltip. */\n async show(): Promise<void> {\n const host = await this.host();\n\n // We need to dispatch both `touchstart` and a hover event, because the tooltip binds\n // different events depending on the device. The `changedTouches` is there in case the\n // element has ripples.\n await host.dispatchEvent('touchstart', {changedTouches: []});\n await host.hover();\n const panel = await this._optionalPanel();\n await panel?.dispatchEvent('animationend', {animationName: this._showAnimationName});\n }\n\n /** Hides the tooltip. */\n async hide(): Promise<void> {\n const host = await this.host();\n\n // We need to dispatch both `touchstart` and a hover event, because\n // the tooltip binds different events depending on the device.\n await host.dispatchEvent('touchend');\n await host.mouseAway();\n const panel = await this._optionalPanel();\n await panel?.dispatchEvent('animationend', {animationName: this._hideAnimationName});\n }\n\n /** Gets whether the tooltip is open. */\n async isOpen(): Promise<boolean> {\n const panel = await this._optionalPanel();\n return !!panel && !(await panel.hasClass(this._hiddenClass));\n }\n\n /** Gets whether the tooltip is disabled */\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n return host.hasClass(this._disabledClass);\n }\n\n /** Gets a promise for the tooltip panel's text. */\n async getTooltipText(): Promise<string> {\n const panel = await this._optionalPanel();\n return panel ? panel.text() : '';\n }\n}\n"],"names":["MatTooltipHarness","ComponentHarness","hostSelector","_optionalPanel","documentRootLocatorFactory","locatorForOptional","_hiddenClass","_disabledClass","_showAnimationName","_hideAnimationName","with","options","HarnessPredicate","show","host","dispatchEvent","changedTouches","hover","panel","animationName","hide","mouseAway","isOpen","hasClass","isDisabled","getTooltipText","text"],"mappings":";;AAgBM,MAAOA,iBAAkB,SAAQC,gBAAgB,CAAA;EACrD,OAAOC,YAAY,GAAG,0BAA0B;EAExCC,cAAc,GAAG,IAAI,CAACC,0BAA0B,EAAE,CAACC,kBAAkB,CAAC,kBAAkB,CAAC;AACzFC,EAAAA,YAAY,GAAG,sBAAsB;AACrCC,EAAAA,cAAc,GAAG,0BAA0B;AAC3CC,EAAAA,kBAAkB,GAAG,sBAAsB;AAC3CC,EAAAA,kBAAkB,GAAG,sBAAsB;AAQnD,EAAA,OAAOC,IAAIA,CAETC,OAAA,GAAiC,EAAE,EAAA;AAEnC,IAAA,OAAO,IAAIC,gBAAgB,CAAC,IAAI,EAAED,OAAO,CAAC;AAC5C,EAAA;EAGA,MAAME,IAAIA,GAAA;AACR,IAAA,MAAMC,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;AAK9B,IAAA,MAAMA,IAAI,CAACC,aAAa,CAAC,YAAY,EAAE;AAACC,MAAAA,cAAc,EAAE;AAAE,KAAC,CAAC;AAC5D,IAAA,MAAMF,IAAI,CAACG,KAAK,EAAE;AAClB,IAAA,MAAMC,KAAK,GAAG,MAAM,IAAI,CAACf,cAAc,EAAE;AACzC,IAAA,MAAMe,KAAK,EAAEH,aAAa,CAAC,cAAc,EAAE;MAACI,aAAa,EAAE,IAAI,CAACX;AAAkB,KAAC,CAAC;AACtF,EAAA;EAGA,MAAMY,IAAIA,GAAA;AACR,IAAA,MAAMN,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;AAI9B,IAAA,MAAMA,IAAI,CAACC,aAAa,CAAC,UAAU,CAAC;AACpC,IAAA,MAAMD,IAAI,CAACO,SAAS,EAAE;AACtB,IAAA,MAAMH,KAAK,GAAG,MAAM,IAAI,CAACf,cAAc,EAAE;AACzC,IAAA,MAAMe,KAAK,EAAEH,aAAa,CAAC,cAAc,EAAE;MAACI,aAAa,EAAE,IAAI,CAACV;AAAkB,KAAC,CAAC;AACtF,EAAA;EAGA,MAAMa,MAAMA,GAAA;AACV,IAAA,MAAMJ,KAAK,GAAG,MAAM,IAAI,CAACf,cAAc,EAAE;AACzC,IAAA,OAAO,CAAC,CAACe,KAAK,IAAI,EAAE,MAAMA,KAAK,CAACK,QAAQ,CAAC,IAAI,CAACjB,YAAY,CAAC,CAAC;AAC9D,EAAA;EAGA,MAAMkB,UAAUA,GAAA;AACd,IAAA,MAAMV,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;AAC9B,IAAA,OAAOA,IAAI,CAACS,QAAQ,CAAC,IAAI,CAAChB,cAAc,CAAC;AAC3C,EAAA;EAGA,MAAMkB,cAAcA,GAAA;AAClB,IAAA,MAAMP,KAAK,GAAG,MAAM,IAAI,CAACf,cAAc,EAAE;IACzC,OAAOe,KAAK,GAAGA,KAAK,CAACQ,IAAI,EAAE,GAAG,EAAE;AAClC,EAAA;;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"tooltip.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/tooltip/tooltip-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\nimport {NgModule} from '@angular/core';\nimport {A11yModule} from '@angular/cdk/a11y';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {CdkScrollableModule} from '@angular/cdk/scrolling';\nimport {MatTooltip, TooltipComponent} from './tooltip';\n\n@NgModule({\n imports: [A11yModule, OverlayModule, MatTooltip, TooltipComponent],\n exports: [MatTooltip, TooltipComponent, BidiModule, CdkScrollableModule],\n})\nexport class MatTooltipModule {}\n"],"names":["MatTooltipModule","deps","target","i0","ɵɵFactoryTarget","NgModule","ɵmod","ɵɵngDeclareNgModule","minVersion","version","ngImport","type","imports","A11yModule","OverlayModule","MatTooltip","TooltipComponent","exports","BidiModule","CdkScrollableModule","ɵinj","ɵɵngDeclareInjector","decorators","args"],"mappings":";;;;;;;;;;;;;;;;;MAmBaA,gBAAgB,CAAA;;;;;UAAhBA,gBAAgB;AAAAC,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;AAAhB,EAAA,OAAAC,IAAA,GAAAH,EAAA,CAAAI,mBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,QAAA,EAAAP,EAAA;AAAAQ,IAAAA,IAAA,EAAAX,gBAAgB;IAAAY,OAAA,EAAA,CAHjBC,UAAU,EAAEC,aAAa,EAAEC,UAAU,EAAEC,gBAAgB,CAAA;IAAAC,OAAA,EAAA,CACvDF,UAAU,EAAEC,gBAAgB,EAAEE,UAAU,EAAEC,mBAAmB;AAAA,GAAA,CAAA;AAE5D,EAAA,OAAAC,IAAA,GAAAjB,EAAA,CAAAkB,mBAAA,CAAA;AAAAb,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,QAAA,EAAAP,EAAA;AAAAQ,IAAAA,IAAA,EAAAX,gBAAgB;cAHjBa,UAAU,EAAEC,aAAa,EACKI,UAAU,EAAEC,mBAAmB;AAAA,GAAA,CAAA;;;;;;QAE5DnB,gBAAgB;AAAAsB,EAAAA,UAAA,EAAA,CAAA;UAJ5BjB,QAAQ;AAACkB,IAAAA,IAAA,EAAA,CAAA;MACRX,OAAO,EAAE,CAACC,UAAU,EAAEC,aAAa,EAAEC,UAAU,EAAEC,gBAAgB,CAAC;MAClEC,OAAO,EAAE,CAACF,UAAU,EAAEC,gBAAgB,EAAEE,UAAU,EAAEC,mBAAmB;KACxE;;;;;;"}
{"version":3,"file":"tooltip.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/tooltip/tooltip-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\nimport {NgModule} from '@angular/core';\nimport {A11yModule} from '@angular/cdk/a11y';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {CdkScrollableModule} from '@angular/cdk/scrolling';\nimport {MatTooltip, TooltipComponent} from './tooltip';\n\n@NgModule({\n imports: [A11yModule, OverlayModule, MatTooltip, TooltipComponent],\n exports: [MatTooltip, TooltipComponent, BidiModule, CdkScrollableModule],\n})\nexport class MatTooltipModule {}\n"],"names":["MatTooltipModule","deps","target","i0","ɵɵFactoryTarget","NgModule","ɵmod","ɵɵngDeclareNgModule","minVersion","version","ngImport","type","imports","A11yModule","OverlayModule","MatTooltip","TooltipComponent","exports","BidiModule","CdkScrollableModule","ɵinj","ɵɵngDeclareInjector","decorators","args"],"mappings":";;;;;;;;;;;;;;;;;MAmBaA,gBAAgB,CAAA;;;;;UAAhBA,gBAAgB;AAAAC,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;AAAhB,EAAA,OAAAC,IAAA,GAAAH,EAAA,CAAAI,mBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,QAAA,EAAAP,EAAA;AAAAQ,IAAAA,IAAA,EAAAX,gBAAgB;IAAAY,OAAA,EAAA,CAHjBC,UAAU,EAAEC,aAAa,EAAEC,UAAU,EAAEC,gBAAgB,CAAA;IAAAC,OAAA,EAAA,CACvDF,UAAU,EAAEC,gBAAgB,EAAEE,UAAU,EAAEC,mBAAmB;AAAA,GAAA,CAAA;AAE5D,EAAA,OAAAC,IAAA,GAAAjB,EAAA,CAAAkB,mBAAA,CAAA;AAAAb,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,eAAA;AAAAC,IAAAA,QAAA,EAAAP,EAAA;AAAAQ,IAAAA,IAAA,EAAAX,gBAAgB;cAHjBa,UAAU,EAAEC,aAAa,EACKI,UAAU,EAAEC,mBAAmB;AAAA,GAAA,CAAA;;;;;;QAE5DnB,gBAAgB;AAAAsB,EAAAA,UAAA,EAAA,CAAA;UAJ5BjB,QAAQ;AAACkB,IAAAA,IAAA,EAAA,CAAA;MACRX,OAAO,EAAE,CAACC,UAAU,EAAEC,aAAa,EAAEC,UAAU,EAAEC,gBAAgB,CAAC;MAClEC,OAAO,EAAE,CAACF,UAAU,EAAEC,gBAAgB,EAAEE,UAAU,EAAEC,mBAAmB;KACxE;;;;;;"}

@@ -1,1 +0,1 @@

{"version":3,"file":"tree-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/tree/testing/node-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/tree/testing/tree-harness.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\nimport {\n ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {TreeNodeHarnessFilters} from './tree-harness-filters';\nimport {coerceBooleanProperty, coerceNumberProperty} from '@angular/cdk/coercion';\n\n/** Harness for interacting with a standard Angular Material tree node. */\nexport class MatTreeNodeHarness extends ContentContainerComponentHarness<string> {\n /** The selector of the host element of a `MatTreeNode` instance. */\n static hostSelector = '.mat-tree-node, .mat-nested-tree-node';\n\n _toggle = this.locatorForOptional('[matTreeNodeToggle]');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a tree node with specific attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: TreeNodeHarnessFilters = {}): HarnessPredicate<MatTreeNodeHarness> {\n return getNodePredicate(MatTreeNodeHarness, options);\n }\n\n /** Whether the tree node is expanded. */\n async isExpanded(): Promise<boolean> {\n return coerceBooleanProperty(await (await this.host()).getAttribute('aria-expanded'));\n }\n\n /** Whether the tree node is expandable. */\n async isExpandable(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-expanded')) !== null;\n }\n\n /** Whether the tree node is disabled. */\n async isDisabled(): Promise<boolean> {\n return coerceBooleanProperty(await (await this.host()).getProperty('aria-disabled'));\n }\n\n /** Gets the level of the tree node. Note that this gets the aria-level and is 1 indexed. */\n async getLevel(): Promise<number> {\n return coerceNumberProperty(await (await this.host()).getAttribute('aria-level'));\n }\n\n /** Gets the tree node's text. */\n async getText(): Promise<string> {\n return (await this.host()).text({exclude: '.mat-tree-node, .mat-nested-tree-node, button'});\n }\n\n /** Toggles node between expanded/collapsed. Only works when node is not disabled. */\n async toggle(): Promise<void> {\n const toggle = await this._toggle();\n if (toggle) {\n return toggle.click();\n }\n }\n\n /** Expands the node if it is collapsed. Only works when node is not disabled. */\n async expand(): Promise<void> {\n if (!(await this.isExpanded())) {\n await this.toggle();\n }\n }\n\n /** Collapses the node if it is expanded. Only works when node is not disabled. */\n async collapse(): Promise<void> {\n if (await this.isExpanded()) {\n await this.toggle();\n }\n }\n}\n\nfunction getNodePredicate<T extends MatTreeNodeHarness>(\n type: ComponentHarnessConstructor<T>,\n options: TreeNodeHarnessFilters,\n): HarnessPredicate<T> {\n return new HarnessPredicate(type, options)\n .addOption('text', options.text, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getText(), text),\n )\n .addOption(\n 'disabled',\n options.disabled,\n async (harness, disabled) => (await harness.isDisabled()) === disabled,\n )\n .addOption(\n 'expanded',\n options.expanded,\n async (harness, expanded) => (await harness.isExpanded()) === expanded,\n )\n .addOption(\n 'level',\n options.level,\n async (harness, level) => (await harness.getLevel()) === level,\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 {ComponentHarness, HarnessPredicate, parallel} from '@angular/cdk/testing';\nimport {MatTreeNodeHarness} from './node-harness';\nimport {TreeHarnessFilters, TreeNodeHarnessFilters} from './tree-harness-filters';\n\nexport type TextTree = {\n text?: string;\n children?: TextTree[];\n};\n\n/** Harness for interacting with a standard mat-tree in tests. */\nexport class MatTreeHarness extends ComponentHarness {\n /** The selector for the host element of a `MatTableHarness` instance. */\n static hostSelector = '.mat-tree';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a tree with specific attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: TreeHarnessFilters = {}): HarnessPredicate<MatTreeHarness> {\n return new HarnessPredicate(MatTreeHarness, options);\n }\n\n /** Gets all of the nodes in the tree. */\n async getNodes(filter: TreeNodeHarnessFilters = {}): Promise<MatTreeNodeHarness[]> {\n return this.locatorForAll(MatTreeNodeHarness.with(filter))();\n }\n\n /**\n * Gets an object representation for the visible tree structure\n * If a node is under an unexpanded node it will not be included.\n * Eg.\n * Tree (all nodes expanded):\n * `\n * <mat-tree>\n * <mat-tree-node>Node 1<mat-tree-node>\n * <mat-nested-tree-node>\n * Node 2\n * <mat-nested-tree-node>\n * Node 2.1\n * <mat-tree-node>\n * Node 2.1.1\n * <mat-tree-node>\n * <mat-nested-tree-node>\n * <mat-tree-node>\n * Node 2.2\n * <mat-tree-node>\n * <mat-nested-tree-node>\n * </mat-tree>`\n *\n * Tree structure:\n * {\n * children: [\n * {\n * text: 'Node 1',\n * children: [\n * {\n * text: 'Node 2',\n * children: [\n * {\n * text: 'Node 2.1',\n * children: [{text: 'Node 2.1.1'}]\n * },\n * {text: 'Node 2.2'}\n * ]\n * }\n * ]\n * }\n * ]\n * };\n */\n async getTreeStructure(): Promise<TextTree> {\n const nodes = await this.getNodes();\n const nodeInformation = await parallel(() =>\n nodes.map(node => {\n return parallel(() => [node.getLevel(), node.getText(), node.isExpanded()]);\n }),\n );\n return this._getTreeStructure(nodeInformation, 1, true);\n }\n\n /**\n * Recursively collect the structured text of the tree nodes.\n * @param nodes A list of tree nodes\n * @param level The level of nodes that are being accounted for during this iteration\n * @param parentExpanded Whether the parent of the first node in param nodes is expanded\n */\n private _getTreeStructure(\n nodes: [number, string, boolean][],\n level: number,\n parentExpanded: boolean,\n ): TextTree {\n const result: TextTree = {};\n for (let i = 0; i < nodes.length; i++) {\n const [nodeLevel, text, expanded] = nodes[i];\n const nextNodeLevel = nodes[i + 1]?.[0] ?? -1;\n\n // Return the accumulated value for the current level once we reach a shallower level node\n if (nodeLevel < level) {\n return result;\n }\n // Skip deeper level nodes during this iteration, they will be picked up in a later iteration\n if (nodeLevel > level) {\n continue;\n }\n // Only add to representation if it is visible (parent is expanded)\n if (parentExpanded) {\n // Collect the data under this node according to the following rules:\n // 1. If the next node in the list is a sibling of the current node add it to the child list\n // 2. If the next node is a child of the current node, get the sub-tree structure for the\n // child and add it under this node\n // 3. If the next node has a shallower level, we've reached the end of the child nodes for\n // the current parent.\n if (nextNodeLevel === level) {\n this._addChildToNode(result, {text});\n } else if (nextNodeLevel > level) {\n let children = this._getTreeStructure(\n nodes.slice(i + 1),\n nextNodeLevel,\n expanded,\n )?.children;\n let child = children ? {text, children} : {text};\n this._addChildToNode(result, child);\n } else {\n this._addChildToNode(result, {text});\n return result;\n }\n }\n }\n return result;\n }\n\n private _addChildToNode(result: TextTree, child: TextTree) {\n result.children ? result.children.push(child) : (result.children = [child]);\n }\n}\n"],"names":["MatTreeNodeHarness","ContentContainerComponentHarness","hostSelector","_toggle","locatorForOptional","with","options","getNodePredicate","isExpanded","coerceBooleanProperty","host","getAttribute","isExpandable","isDisabled","getProperty","getLevel","coerceNumberProperty","getText","text","exclude","toggle","click","expand","collapse","type","HarnessPredicate","addOption","harness","stringMatches","disabled","expanded","level","MatTreeHarness","ComponentHarness","getNodes","filter","locatorForAll","getTreeStructure","nodes","nodeInformation","parallel","map","node","_getTreeStructure","parentExpanded","result","i","length","nodeLevel","nextNodeLevel","_addChildToNode","children","slice","child","push"],"mappings":"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"}
{"version":3,"file":"tree-testing.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/tree/testing/node-harness.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/tree/testing/tree-harness.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\nimport {\n ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {TreeNodeHarnessFilters} from './tree-harness-filters';\nimport {coerceBooleanProperty, coerceNumberProperty} from '@angular/cdk/coercion';\n\n/** Harness for interacting with a standard Angular Material tree node. */\nexport class MatTreeNodeHarness extends ContentContainerComponentHarness<string> {\n /** The selector of the host element of a `MatTreeNode` instance. */\n static hostSelector = '.mat-tree-node, .mat-nested-tree-node';\n\n _toggle = this.locatorForOptional('[matTreeNodeToggle]');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a tree node with specific attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: TreeNodeHarnessFilters = {}): HarnessPredicate<MatTreeNodeHarness> {\n return getNodePredicate(MatTreeNodeHarness, options);\n }\n\n /** Whether the tree node is expanded. */\n async isExpanded(): Promise<boolean> {\n return coerceBooleanProperty(await (await this.host()).getAttribute('aria-expanded'));\n }\n\n /** Whether the tree node is expandable. */\n async isExpandable(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-expanded')) !== null;\n }\n\n /** Whether the tree node is disabled. */\n async isDisabled(): Promise<boolean> {\n return coerceBooleanProperty(await (await this.host()).getProperty('aria-disabled'));\n }\n\n /** Gets the level of the tree node. Note that this gets the aria-level and is 1 indexed. */\n async getLevel(): Promise<number> {\n return coerceNumberProperty(await (await this.host()).getAttribute('aria-level'));\n }\n\n /** Gets the tree node's text. */\n async getText(): Promise<string> {\n return (await this.host()).text({exclude: '.mat-tree-node, .mat-nested-tree-node, button'});\n }\n\n /** Toggles node between expanded/collapsed. Only works when node is not disabled. */\n async toggle(): Promise<void> {\n const toggle = await this._toggle();\n if (toggle) {\n return toggle.click();\n }\n }\n\n /** Expands the node if it is collapsed. Only works when node is not disabled. */\n async expand(): Promise<void> {\n if (!(await this.isExpanded())) {\n await this.toggle();\n }\n }\n\n /** Collapses the node if it is expanded. Only works when node is not disabled. */\n async collapse(): Promise<void> {\n if (await this.isExpanded()) {\n await this.toggle();\n }\n }\n}\n\nfunction getNodePredicate<T extends MatTreeNodeHarness>(\n type: ComponentHarnessConstructor<T>,\n options: TreeNodeHarnessFilters,\n): HarnessPredicate<T> {\n return new HarnessPredicate(type, options)\n .addOption('text', options.text, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getText(), text),\n )\n .addOption(\n 'disabled',\n options.disabled,\n async (harness, disabled) => (await harness.isDisabled()) === disabled,\n )\n .addOption(\n 'expanded',\n options.expanded,\n async (harness, expanded) => (await harness.isExpanded()) === expanded,\n )\n .addOption(\n 'level',\n options.level,\n async (harness, level) => (await harness.getLevel()) === level,\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 {ComponentHarness, HarnessPredicate, parallel} from '@angular/cdk/testing';\nimport {MatTreeNodeHarness} from './node-harness';\nimport {TreeHarnessFilters, TreeNodeHarnessFilters} from './tree-harness-filters';\n\nexport type TextTree = {\n text?: string;\n children?: TextTree[];\n};\n\n/** Harness for interacting with a standard mat-tree in tests. */\nexport class MatTreeHarness extends ComponentHarness {\n /** The selector for the host element of a `MatTableHarness` instance. */\n static hostSelector = '.mat-tree';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a tree with specific attributes.\n * @param options Options for narrowing the search\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: TreeHarnessFilters = {}): HarnessPredicate<MatTreeHarness> {\n return new HarnessPredicate(MatTreeHarness, options);\n }\n\n /** Gets all of the nodes in the tree. */\n async getNodes(filter: TreeNodeHarnessFilters = {}): Promise<MatTreeNodeHarness[]> {\n return this.locatorForAll(MatTreeNodeHarness.with(filter))();\n }\n\n /**\n * Gets an object representation for the visible tree structure\n * If a node is under an unexpanded node it will not be included.\n * Eg.\n * Tree (all nodes expanded):\n * `\n * <mat-tree>\n * <mat-tree-node>Node 1<mat-tree-node>\n * <mat-nested-tree-node>\n * Node 2\n * <mat-nested-tree-node>\n * Node 2.1\n * <mat-tree-node>\n * Node 2.1.1\n * <mat-tree-node>\n * <mat-nested-tree-node>\n * <mat-tree-node>\n * Node 2.2\n * <mat-tree-node>\n * <mat-nested-tree-node>\n * </mat-tree>`\n *\n * Tree structure:\n * {\n * children: [\n * {\n * text: 'Node 1',\n * children: [\n * {\n * text: 'Node 2',\n * children: [\n * {\n * text: 'Node 2.1',\n * children: [{text: 'Node 2.1.1'}]\n * },\n * {text: 'Node 2.2'}\n * ]\n * }\n * ]\n * }\n * ]\n * };\n */\n async getTreeStructure(): Promise<TextTree> {\n const nodes = await this.getNodes();\n const nodeInformation = await parallel(() =>\n nodes.map(node => {\n return parallel(() => [node.getLevel(), node.getText(), node.isExpanded()]);\n }),\n );\n return this._getTreeStructure(nodeInformation, 1, true);\n }\n\n /**\n * Recursively collect the structured text of the tree nodes.\n * @param nodes A list of tree nodes\n * @param level The level of nodes that are being accounted for during this iteration\n * @param parentExpanded Whether the parent of the first node in param nodes is expanded\n */\n private _getTreeStructure(\n nodes: [number, string, boolean][],\n level: number,\n parentExpanded: boolean,\n ): TextTree {\n const result: TextTree = {};\n for (let i = 0; i < nodes.length; i++) {\n const [nodeLevel, text, expanded] = nodes[i];\n const nextNodeLevel = nodes[i + 1]?.[0] ?? -1;\n\n // Return the accumulated value for the current level once we reach a shallower level node\n if (nodeLevel < level) {\n return result;\n }\n // Skip deeper level nodes during this iteration, they will be picked up in a later iteration\n if (nodeLevel > level) {\n continue;\n }\n // Only add to representation if it is visible (parent is expanded)\n if (parentExpanded) {\n // Collect the data under this node according to the following rules:\n // 1. If the next node in the list is a sibling of the current node add it to the child list\n // 2. If the next node is a child of the current node, get the sub-tree structure for the\n // child and add it under this node\n // 3. If the next node has a shallower level, we've reached the end of the child nodes for\n // the current parent.\n if (nextNodeLevel === level) {\n this._addChildToNode(result, {text});\n } else if (nextNodeLevel > level) {\n let children = this._getTreeStructure(\n nodes.slice(i + 1),\n nextNodeLevel,\n expanded,\n )?.children;\n let child = children ? {text, children} : {text};\n this._addChildToNode(result, child);\n } else {\n this._addChildToNode(result, {text});\n return result;\n }\n }\n }\n return result;\n }\n\n private _addChildToNode(result: TextTree, child: TextTree) {\n result.children ? result.children.push(child) : (result.children = [child]);\n }\n}\n"],"names":["MatTreeNodeHarness","ContentContainerComponentHarness","hostSelector","_toggle","locatorForOptional","with","options","getNodePredicate","isExpanded","coerceBooleanProperty","host","getAttribute","isExpandable","isDisabled","getProperty","getLevel","coerceNumberProperty","getText","text","exclude","toggle","click","expand","collapse","type","HarnessPredicate","addOption","harness","stringMatches","disabled","expanded","level","MatTreeHarness","ComponentHarness","getNodes","filter","locatorForAll","getTreeStructure","nodes","nodeInformation","parallel","map","node","_getTreeStructure","parentExpanded","result","i","length","nodeLevel","nextNodeLevel","_addChildToNode","children","slice","child","push"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"tree.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/tree/node.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/tree/padding.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/tree/outlet.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/tree/tree.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/tree/toggle.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/tree/tree-module.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/tree/data-source/flat-data-source.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/tree/data-source/nested-data-source.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\nimport {\n CDK_TREE_NODE_OUTLET_NODE,\n CdkNestedTreeNode,\n CdkTreeNode,\n CdkTreeNodeDef,\n} from '@angular/cdk/tree';\nimport {\n AfterContentInit,\n Directive,\n Input,\n OnDestroy,\n OnInit,\n booleanAttribute,\n numberAttribute,\n inject,\n HostAttributeToken,\n} from '@angular/core';\nimport {NoopTreeKeyManager, TreeKeyManagerItem, TreeKeyManagerStrategy} from '@angular/cdk/a11y';\n\n/**\n * Determinte if argument TreeKeyManager is the NoopTreeKeyManager. This function is safe to use with SSR.\n */\nfunction isNoopTreeKeyManager<T extends TreeKeyManagerItem>(\n keyManager: TreeKeyManagerStrategy<T>,\n): keyManager is NoopTreeKeyManager<T> {\n return !!(keyManager as NoopTreeKeyManager<T>)._isNoopTreeKeyManager;\n}\n\n/**\n * Wrapper for the CdkTree node with Material design styles.\n */\n@Directive({\n selector: 'mat-tree-node',\n exportAs: 'matTreeNode',\n outputs: ['activation', 'expandedChange'],\n providers: [{provide: CdkTreeNode, useExisting: MatTreeNode}],\n host: {\n 'class': 'mat-tree-node',\n '[attr.aria-expanded]': '_getAriaExpanded()',\n '[attr.aria-level]': 'level + 1',\n '[attr.aria-posinset]': '_getPositionInSet()',\n '[attr.aria-setsize]': '_getSetSize()',\n '(click)': '_focusItem()',\n '[tabindex]': '_getTabindexAttribute()',\n },\n})\nexport class MatTreeNode<T, K = T> extends CdkTreeNode<T, K> implements OnInit, OnDestroy {\n /**\n * The tabindex of the tree node.\n *\n * @deprecated By default MatTreeNode manages focus using TreeKeyManager instead of tabIndex.\n * Recommend to avoid setting tabIndex directly to prevent TreeKeyManager form getting into\n * an unexpected state. Tabindex to be removed in a future version.\n * @breaking-change 21.0.0 Remove this attribute.\n */\n @Input({\n transform: (value: unknown) => (value == null ? 0 : numberAttribute(value)),\n alias: 'tabIndex',\n })\n get tabIndexInputBinding(): number {\n return this._tabIndexInputBinding;\n }\n set tabIndexInputBinding(value: number) {\n // If the specified tabIndex value is null or undefined, fall back to the default value.\n this._tabIndexInputBinding = value;\n }\n private _tabIndexInputBinding!: number;\n\n /**\n * The default tabindex of the tree node.\n *\n * @deprecated By default MatTreeNode manages focus using TreeKeyManager instead of tabIndex.\n * Recommend to avoid setting tabIndex directly to prevent TreeKeyManager form getting into\n * an unexpected state. Tabindex to be removed in a future version.\n * @breaking-change 21.0.0 Remove this attribute.\n */\n defaultTabIndex = 0;\n\n protected _getTabindexAttribute(): number | null {\n if (isNoopTreeKeyManager(this._tree._keyManager)) {\n return this.tabIndexInputBinding;\n }\n return this._tabindex;\n }\n\n /**\n * Whether the component is disabled.\n *\n * @deprecated This is an alias for `isDisabled`.\n * @breaking-change 21.0.0 Remove this input\n */\n @Input({transform: booleanAttribute})\n get disabled(): boolean {\n return this.isDisabled;\n }\n set disabled(value: boolean) {\n this.isDisabled = value;\n }\n\n constructor(...args: unknown[]);\n\n constructor() {\n super();\n\n const tabIndex = inject(new HostAttributeToken('tabindex'), {optional: true});\n this.tabIndexInputBinding = Number(tabIndex) || this.defaultTabIndex;\n }\n\n // This is a workaround for https://github.com/angular/angular/issues/23091\n // In aot mode, the lifecycle hooks from parent class are not called.\n override ngOnInit() {\n super.ngOnInit();\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n\n/**\n * Wrapper for the CdkTree node definition with Material design styles.\n * Captures the node's template and a when predicate that describes when this node should be used.\n */\n@Directive({\n selector: '[matTreeNodeDef]',\n inputs: [{name: 'when', alias: 'matTreeNodeDefWhen'}],\n providers: [{provide: CdkTreeNodeDef, useExisting: MatTreeNodeDef}],\n})\nexport class MatTreeNodeDef<T> extends CdkTreeNodeDef<T> {\n @Input('matTreeNode') data!: T;\n}\n\n/**\n * Wrapper for the CdkTree nested node with Material design styles.\n */\n@Directive({\n selector: 'mat-nested-tree-node',\n exportAs: 'matNestedTreeNode',\n outputs: ['activation', 'expandedChange'],\n providers: [\n {provide: CdkNestedTreeNode, useExisting: MatNestedTreeNode},\n {provide: CdkTreeNode, useExisting: MatNestedTreeNode},\n {provide: CDK_TREE_NODE_OUTLET_NODE, useExisting: MatNestedTreeNode},\n ],\n host: {\n 'class': 'mat-nested-tree-node',\n },\n})\nexport class MatNestedTreeNode<T, K = T>\n extends CdkNestedTreeNode<T, K>\n implements AfterContentInit, OnDestroy, OnInit\n{\n @Input('matNestedTreeNode') node!: T;\n\n /**\n * Whether the node is disabled.\n *\n * @deprecated This is an alias for `isDisabled`.\n * @breaking-change 21.0.0 Remove this input\n */\n @Input({transform: booleanAttribute})\n get disabled(): boolean {\n return this.isDisabled;\n }\n set disabled(value: boolean) {\n this.isDisabled = value;\n }\n\n /** Tabindex of the node. */\n @Input({\n transform: (value: unknown) => (value == null ? 0 : numberAttribute(value)),\n })\n get tabIndex(): number {\n return this.isDisabled ? -1 : this._tabIndex;\n }\n set tabIndex(value: number) {\n // If the specified tabIndex value is null or undefined, fall back to the default value.\n this._tabIndex = value;\n }\n private _tabIndex!: number;\n\n // This is a workaround for https://github.com/angular/angular/issues/19145\n // In aot mode, the lifecycle hooks from parent class are not called.\n // TODO(tinayuangao): Remove when the angular issue #19145 is fixed\n override ngOnInit() {\n super.ngOnInit();\n }\n\n override ngAfterContentInit() {\n super.ngAfterContentInit();\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\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 */\nimport {CdkTreeNodePadding} from '@angular/cdk/tree';\nimport {Directive, Input, numberAttribute} from '@angular/core';\n\n/**\n * Wrapper for the CdkTree padding with Material design styles.\n */\n@Directive({\n selector: '[matTreeNodePadding]',\n providers: [{provide: CdkTreeNodePadding, useExisting: MatTreeNodePadding}],\n})\nexport class MatTreeNodePadding<T, K = T> extends CdkTreeNodePadding<T, K> {\n /** The level of depth of the tree node. The padding will be `level * indent` pixels. */\n @Input({alias: 'matTreeNodePadding', transform: numberAttribute})\n override get level(): number {\n return this._level;\n }\n override set level(value: number) {\n this._setLevelInput(value);\n }\n\n /** The indent for each level. Default number 40px from material design menu sub-menu spec. */\n @Input('matTreeNodePaddingIndent')\n override get indent(): number | string {\n return this._indent;\n }\n override set indent(indent: number | string) {\n this._setIndentInput(indent);\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 */\nimport {CDK_TREE_NODE_OUTLET_NODE, CdkTreeNodeOutlet} from '@angular/cdk/tree';\nimport {Directive, ViewContainerRef, inject} from '@angular/core';\n\n/**\n * Outlet for nested CdkNode. Put `[matTreeNodeOutlet]` on a tag to place children dataNodes\n * inside the outlet.\n */\n@Directive({\n selector: '[matTreeNodeOutlet]',\n providers: [\n {\n provide: CdkTreeNodeOutlet,\n useExisting: MatTreeNodeOutlet,\n },\n ],\n})\nexport class MatTreeNodeOutlet implements CdkTreeNodeOutlet {\n viewContainer = inject(ViewContainerRef);\n _node = inject(CDK_TREE_NODE_OUTLET_NODE, {optional: true});\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 {CdkTree} from '@angular/cdk/tree';\nimport {ChangeDetectionStrategy, Component, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {MatTreeNodeOutlet} from './outlet';\n\n/**\n * Wrapper for the CdkTable with Material design styles.\n */\n@Component({\n selector: 'mat-tree',\n exportAs: 'matTree',\n template: `<ng-container matTreeNodeOutlet></ng-container>`,\n host: {\n 'class': 'mat-tree',\n },\n styleUrl: 'tree.css',\n encapsulation: ViewEncapsulation.None,\n // See note on CdkTree for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [{provide: CdkTree, useExisting: MatTree}],\n imports: [MatTreeNodeOutlet],\n})\nexport class MatTree<T, K = T> extends CdkTree<T, K> {\n // Outlets within the tree's template where the dataNodes will be inserted.\n // We need an initializer here to avoid a TS error. The value will be set in `ngAfterViewInit`.\n @ViewChild(MatTreeNodeOutlet, {static: true}) override _nodeOutlet: MatTreeNodeOutlet =\n undefined!;\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 {CdkTreeNodeToggle} from '@angular/cdk/tree';\nimport {Directive} from '@angular/core';\n\n/**\n * Wrapper for the CdkTree's toggle with Material design styles.\n */\n@Directive({\n selector: '[matTreeNodeToggle]',\n providers: [{provide: CdkTreeNodeToggle, useExisting: MatTreeNodeToggle}],\n inputs: [{name: 'recursive', alias: 'matTreeNodeToggleRecursive'}],\n})\nexport class MatTreeNodeToggle<T, K = T> extends CdkTreeNodeToggle<T, K> {}\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 {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\n\nimport {CdkTreeModule} from '@angular/cdk/tree';\nimport {MatNestedTreeNode, MatTreeNodeDef, MatTreeNode} from './node';\nimport {MatTree} from './tree';\nimport {MatTreeNodeToggle} from './toggle';\nimport {MatTreeNodeOutlet} from './outlet';\nimport {MatTreeNodePadding} from './padding';\n\nconst MAT_TREE_DIRECTIVES = [\n MatNestedTreeNode,\n MatTreeNodeDef,\n MatTreeNodePadding,\n MatTreeNodeToggle,\n MatTree,\n MatTreeNode,\n MatTreeNodeOutlet,\n];\n\n@NgModule({\n imports: [CdkTreeModule, ...MAT_TREE_DIRECTIVES],\n exports: [BidiModule, MAT_TREE_DIRECTIVES],\n})\nexport class MatTreeModule {}\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 {CollectionViewer, DataSource} from '@angular/cdk/collections';\nimport {FlatTreeControl, TreeControl} from '@angular/cdk/tree';\nimport {BehaviorSubject, merge, Observable} from 'rxjs';\nimport {map, take} from 'rxjs/operators';\n\n/**\n * Tree flattener to convert a normal type of node to node with children & level information.\n * Transform nested nodes of type `T` to flattened nodes of type `F`.\n *\n * For example, the input data of type `T` is nested, and contains its children data:\n * SomeNode: {\n * key: 'Fruits',\n * children: [\n * NodeOne: {\n * key: 'Apple',\n * },\n * NodeTwo: {\n * key: 'Pear',\n * }\n * ]\n * }\n * After flattener flatten the tree, the structure will become\n * SomeNode: {\n * key: 'Fruits',\n * expandable: true,\n * level: 1\n * },\n * NodeOne: {\n * key: 'Apple',\n * expandable: false,\n * level: 2\n * },\n * NodeTwo: {\n * key: 'Pear',\n * expandable: false,\n * level: 2\n * }\n * and the output flattened type is `F` with additional information.\n *\n * @deprecated Use MatTree#childrenAccessor and MatTreeNode#isExpandable\n * instead. To be removed in a future version.\n * @breaking-change 21.0.0\n */\nexport class MatTreeFlattener<T, F, K = F> {\n constructor(\n public transformFunction: (node: T, level: number) => F,\n public getLevel: (node: F) => number,\n public isExpandable: (node: F) => boolean,\n public getChildren: (node: T) => Observable<T[]> | T[] | undefined | null,\n ) {}\n\n _flattenNode(node: T, level: number, resultNodes: F[], parentMap: boolean[]): F[] {\n const flatNode = this.transformFunction(node, level);\n resultNodes.push(flatNode);\n\n if (this.isExpandable(flatNode)) {\n const childrenNodes = this.getChildren(node);\n if (childrenNodes) {\n if (Array.isArray(childrenNodes)) {\n this._flattenChildren(childrenNodes, level, resultNodes, parentMap);\n } else {\n childrenNodes.pipe(take(1)).subscribe(children => {\n this._flattenChildren(children, level, resultNodes, parentMap);\n });\n }\n }\n }\n return resultNodes;\n }\n\n _flattenChildren(children: T[], level: number, resultNodes: F[], parentMap: boolean[]): void {\n children.forEach((child, index) => {\n let childParentMap: boolean[] = parentMap.slice();\n childParentMap.push(index != children.length - 1);\n this._flattenNode(child, level + 1, resultNodes, childParentMap);\n });\n }\n\n /**\n * Flatten a list of node type T to flattened version of node F.\n * Please note that type T may be nested, and the length of `structuredData` may be different\n * from that of returned list `F[]`.\n */\n flattenNodes(structuredData: T[]): F[] {\n let resultNodes: F[] = [];\n structuredData.forEach(node => this._flattenNode(node, 0, resultNodes, []));\n return resultNodes;\n }\n\n /**\n * Expand flattened node with current expansion status.\n * The returned list may have different length.\n */\n expandFlattenedNodes(nodes: F[], treeControl: TreeControl<F, K>): F[] {\n let results: F[] = [];\n let currentExpand: boolean[] = [];\n currentExpand[0] = true;\n\n nodes.forEach(node => {\n let expand = true;\n for (let i = 0; i <= this.getLevel(node); i++) {\n expand = expand && currentExpand[i];\n }\n if (expand) {\n results.push(node);\n }\n if (this.isExpandable(node)) {\n currentExpand[this.getLevel(node) + 1] = treeControl.isExpanded(node);\n }\n });\n return results;\n }\n}\n\n/**\n * Data source for flat tree.\n * The data source need to handle expansion/collapsion of the tree node and change the data feed\n * to `MatTree`.\n * The nested tree nodes of type `T` are flattened through `MatTreeFlattener`, and converted\n * to type `F` for `MatTree` to consume.\n *\n * @deprecated Use one of levelAccessor or childrenAccessor instead. To be removed in a future\n * version.\n * @breaking-change 21.0.0\n */\nexport class MatTreeFlatDataSource<T, F, K = F> extends DataSource<F> {\n private readonly _flattenedData = new BehaviorSubject<F[]>([]);\n private readonly _expandedData = new BehaviorSubject<F[]>([]);\n\n get data() {\n return this._data.value;\n }\n set data(value: T[]) {\n this._data.next(value);\n this._flattenedData.next(this._treeFlattener.flattenNodes(this.data));\n this._treeControl.dataNodes = this._flattenedData.value;\n }\n private readonly _data = new BehaviorSubject<T[]>([]);\n\n constructor(\n private _treeControl: FlatTreeControl<F, K>,\n private _treeFlattener: MatTreeFlattener<T, F, K>,\n initialData?: T[],\n ) {\n super();\n\n if (initialData) {\n // Assign the data through the constructor to ensure that all of the logic is executed.\n this.data = initialData;\n }\n }\n\n connect(collectionViewer: CollectionViewer): Observable<F[]> {\n return merge(\n collectionViewer.viewChange,\n this._treeControl.expansionModel.changed,\n this._flattenedData,\n ).pipe(\n map(() => {\n this._expandedData.next(\n this._treeFlattener.expandFlattenedNodes(this._flattenedData.value, this._treeControl),\n );\n return this._expandedData.value;\n }),\n );\n }\n\n disconnect() {\n // no op\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 {CollectionViewer, DataSource} from '@angular/cdk/collections';\nimport {BehaviorSubject, merge, Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\n/**\n * Data source for nested tree.\n *\n * The data source for nested tree doesn't have to consider node flattener, or the way to expand\n * or collapse. The expansion/collapsion will be handled by TreeControl and each non-leaf node.\n */\nexport class MatTreeNestedDataSource<T> extends DataSource<T> {\n /**\n * Data for the nested tree\n */\n get data() {\n return this._data.value;\n }\n set data(value: T[]) {\n this._data.next(value);\n }\n private readonly _data = new BehaviorSubject<T[]>([]);\n\n connect(collectionViewer: CollectionViewer): Observable<T[]> {\n return merge(...([collectionViewer.viewChange, this._data] as Observable<unknown>[])).pipe(\n map(() => this.data),\n );\n }\n\n disconnect() {\n // no op\n }\n}\n"],"names":["isNoopTreeKeyManager","keyManager","_isNoopTreeKeyManager","MatTreeNode","CdkTreeNode","tabIndexInputBinding","_tabIndexInputBinding","value","defaultTabIndex","_getTabindexAttribute","_tree","_keyManager","_tabindex","disabled","isDisabled","constructor","tabIndex","inject","HostAttributeToken","optional","Number","ngOnInit","ngOnDestroy","deps","target","i0","ɵɵFactoryTarget","Directive","ɵdir","ɵɵngDeclareDirective","minVersion","version","type","isStandalone","selector","inputs","numberAttribute","booleanAttribute","provide","useExisting","exportAs","usesInheritance","ngImport","decorators","args","outputs","providers","host","Input","transform","alias","MatTreeNodeDef","CdkTreeNodeDef","data","when","name","MatNestedTreeNode","CdkNestedTreeNode","node","_tabIndex","ngAfterContentInit","activation","expandedChange","classAttribute","CDK_TREE_NODE_OUTLET_NODE","MatTreeNodePadding","CdkTreeNodePadding","level","_level","_setLevelInput","indent","_indent","_setIndentInput","MatTreeNodeOutlet","viewContainer","ViewContainerRef","_node","CdkTreeNodeOutlet","MatTree","CdkTree","_nodeOutlet","undefined","Component","ɵcmp","ɵɵngDeclareComponent","viewQueries","propertyName","first","predicate","descendants","static","template","changeDetection","ChangeDetectionStrategy","Eager","encapsulation","ViewEncapsulation","None","Default","imports","styles","ViewChild","MatTreeNodeToggle","CdkTreeNodeToggle","recursive","MAT_TREE_DIRECTIVES","MatTreeModule","NgModule","CdkTreeModule","exports","BidiModule","MatTreeFlattener","transformFunction","getLevel","isExpandable","getChildren","_flattenNode","resultNodes","parentMap","flatNode","push","childrenNodes","Array","isArray","_flattenChildren","pipe","take","subscribe","children","forEach","child","index","childParentMap","slice","length","flattenNodes","structuredData","expandFlattenedNodes","nodes","treeControl","results","currentExpand","expand","i","isExpanded","MatTreeFlatDataSource","DataSource","_treeControl","_treeFlattener","_flattenedData","BehaviorSubject","_expandedData","_data","next","dataNodes","initialData","connect","collectionViewer","merge","viewChange","expansionModel","changed","map","disconnect","MatTreeNestedDataSource"],"mappings":"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"}
{"version":3,"file":"tree.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/tree/node.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/tree/padding.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/tree/outlet.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/tree/tree.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/tree/toggle.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/tree/tree-module.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/tree/data-source/flat-data-source.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/material/tree/data-source/nested-data-source.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\nimport {\n CDK_TREE_NODE_OUTLET_NODE,\n CdkNestedTreeNode,\n CdkTreeNode,\n CdkTreeNodeDef,\n} from '@angular/cdk/tree';\nimport {\n AfterContentInit,\n Directive,\n Input,\n OnDestroy,\n OnInit,\n booleanAttribute,\n numberAttribute,\n inject,\n HostAttributeToken,\n} from '@angular/core';\nimport {NoopTreeKeyManager, TreeKeyManagerItem, TreeKeyManagerStrategy} from '@angular/cdk/a11y';\n\n/**\n * Determinte if argument TreeKeyManager is the NoopTreeKeyManager. This function is safe to use with SSR.\n */\nfunction isNoopTreeKeyManager<T extends TreeKeyManagerItem>(\n keyManager: TreeKeyManagerStrategy<T>,\n): keyManager is NoopTreeKeyManager<T> {\n return !!(keyManager as NoopTreeKeyManager<T>)._isNoopTreeKeyManager;\n}\n\n/**\n * Wrapper for the CdkTree node with Material design styles.\n */\n@Directive({\n selector: 'mat-tree-node',\n exportAs: 'matTreeNode',\n outputs: ['activation', 'expandedChange'],\n providers: [{provide: CdkTreeNode, useExisting: MatTreeNode}],\n host: {\n 'class': 'mat-tree-node',\n '[attr.aria-expanded]': '_getAriaExpanded()',\n '[attr.aria-level]': 'level + 1',\n '[attr.aria-posinset]': '_getPositionInSet()',\n '[attr.aria-setsize]': '_getSetSize()',\n '(click)': '_focusItem()',\n '[tabindex]': '_getTabindexAttribute()',\n },\n})\nexport class MatTreeNode<T, K = T> extends CdkTreeNode<T, K> implements OnInit, OnDestroy {\n /**\n * The tabindex of the tree node.\n *\n * @deprecated By default MatTreeNode manages focus using TreeKeyManager instead of tabIndex.\n * Recommend to avoid setting tabIndex directly to prevent TreeKeyManager form getting into\n * an unexpected state. Tabindex to be removed in a future version.\n * @breaking-change 21.0.0 Remove this attribute.\n */\n @Input({\n transform: (value: unknown) => (value == null ? 0 : numberAttribute(value)),\n alias: 'tabIndex',\n })\n get tabIndexInputBinding(): number {\n return this._tabIndexInputBinding;\n }\n set tabIndexInputBinding(value: number) {\n // If the specified tabIndex value is null or undefined, fall back to the default value.\n this._tabIndexInputBinding = value;\n }\n private _tabIndexInputBinding!: number;\n\n /**\n * The default tabindex of the tree node.\n *\n * @deprecated By default MatTreeNode manages focus using TreeKeyManager instead of tabIndex.\n * Recommend to avoid setting tabIndex directly to prevent TreeKeyManager form getting into\n * an unexpected state. Tabindex to be removed in a future version.\n * @breaking-change 21.0.0 Remove this attribute.\n */\n defaultTabIndex = 0;\n\n protected _getTabindexAttribute(): number | null {\n if (isNoopTreeKeyManager(this._tree._keyManager)) {\n return this.tabIndexInputBinding;\n }\n return this._tabindex;\n }\n\n /**\n * Whether the component is disabled.\n *\n * @deprecated This is an alias for `isDisabled`.\n * @breaking-change 21.0.0 Remove this input\n */\n @Input({transform: booleanAttribute})\n get disabled(): boolean {\n return this.isDisabled;\n }\n set disabled(value: boolean) {\n this.isDisabled = value;\n }\n\n constructor(...args: unknown[]);\n\n constructor() {\n super();\n\n const tabIndex = inject(new HostAttributeToken('tabindex'), {optional: true});\n this.tabIndexInputBinding = Number(tabIndex) || this.defaultTabIndex;\n }\n\n // This is a workaround for https://github.com/angular/angular/issues/23091\n // In aot mode, the lifecycle hooks from parent class are not called.\n override ngOnInit() {\n super.ngOnInit();\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n\n/**\n * Wrapper for the CdkTree node definition with Material design styles.\n * Captures the node's template and a when predicate that describes when this node should be used.\n */\n@Directive({\n selector: '[matTreeNodeDef]',\n inputs: [{name: 'when', alias: 'matTreeNodeDefWhen'}],\n providers: [{provide: CdkTreeNodeDef, useExisting: MatTreeNodeDef}],\n})\nexport class MatTreeNodeDef<T> extends CdkTreeNodeDef<T> {\n @Input('matTreeNode') data!: T;\n}\n\n/**\n * Wrapper for the CdkTree nested node with Material design styles.\n */\n@Directive({\n selector: 'mat-nested-tree-node',\n exportAs: 'matNestedTreeNode',\n outputs: ['activation', 'expandedChange'],\n providers: [\n {provide: CdkNestedTreeNode, useExisting: MatNestedTreeNode},\n {provide: CdkTreeNode, useExisting: MatNestedTreeNode},\n {provide: CDK_TREE_NODE_OUTLET_NODE, useExisting: MatNestedTreeNode},\n ],\n host: {\n 'class': 'mat-nested-tree-node',\n },\n})\nexport class MatNestedTreeNode<T, K = T>\n extends CdkNestedTreeNode<T, K>\n implements AfterContentInit, OnDestroy, OnInit\n{\n @Input('matNestedTreeNode') node!: T;\n\n /**\n * Whether the node is disabled.\n *\n * @deprecated This is an alias for `isDisabled`.\n * @breaking-change 21.0.0 Remove this input\n */\n @Input({transform: booleanAttribute})\n get disabled(): boolean {\n return this.isDisabled;\n }\n set disabled(value: boolean) {\n this.isDisabled = value;\n }\n\n /** Tabindex of the node. */\n @Input({\n transform: (value: unknown) => (value == null ? 0 : numberAttribute(value)),\n })\n get tabIndex(): number {\n return this.isDisabled ? -1 : this._tabIndex;\n }\n set tabIndex(value: number) {\n // If the specified tabIndex value is null or undefined, fall back to the default value.\n this._tabIndex = value;\n }\n private _tabIndex!: number;\n\n // This is a workaround for https://github.com/angular/angular/issues/19145\n // In aot mode, the lifecycle hooks from parent class are not called.\n // TODO(tinayuangao): Remove when the angular issue #19145 is fixed\n override ngOnInit() {\n super.ngOnInit();\n }\n\n override ngAfterContentInit() {\n super.ngAfterContentInit();\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\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 */\nimport {CdkTreeNodePadding} from '@angular/cdk/tree';\nimport {Directive, Input, numberAttribute} from '@angular/core';\n\n/**\n * Wrapper for the CdkTree padding with Material design styles.\n */\n@Directive({\n selector: '[matTreeNodePadding]',\n providers: [{provide: CdkTreeNodePadding, useExisting: MatTreeNodePadding}],\n})\nexport class MatTreeNodePadding<T, K = T> extends CdkTreeNodePadding<T, K> {\n /** The level of depth of the tree node. The padding will be `level * indent` pixels. */\n @Input({alias: 'matTreeNodePadding', transform: numberAttribute})\n override get level(): number {\n return this._level;\n }\n override set level(value: number) {\n this._setLevelInput(value);\n }\n\n /** The indent for each level. Default number 40px from material design menu sub-menu spec. */\n @Input('matTreeNodePaddingIndent')\n override get indent(): number | string {\n return this._indent;\n }\n override set indent(indent: number | string) {\n this._setIndentInput(indent);\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 */\nimport {CDK_TREE_NODE_OUTLET_NODE, CdkTreeNodeOutlet} from '@angular/cdk/tree';\nimport {Directive, ViewContainerRef, inject} from '@angular/core';\n\n/**\n * Outlet for nested CdkNode. Put `[matTreeNodeOutlet]` on a tag to place children dataNodes\n * inside the outlet.\n */\n@Directive({\n selector: '[matTreeNodeOutlet]',\n providers: [\n {\n provide: CdkTreeNodeOutlet,\n useExisting: MatTreeNodeOutlet,\n },\n ],\n})\nexport class MatTreeNodeOutlet implements CdkTreeNodeOutlet {\n viewContainer = inject(ViewContainerRef);\n _node = inject(CDK_TREE_NODE_OUTLET_NODE, {optional: true});\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 {CdkTree} from '@angular/cdk/tree';\nimport {ChangeDetectionStrategy, Component, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {MatTreeNodeOutlet} from './outlet';\n\n/**\n * Wrapper for the CdkTable with Material design styles.\n */\n@Component({\n selector: 'mat-tree',\n exportAs: 'matTree',\n template: `<ng-container matTreeNodeOutlet></ng-container>`,\n host: {\n 'class': 'mat-tree',\n },\n styleUrl: 'tree.css',\n encapsulation: ViewEncapsulation.None,\n // See note on CdkTree for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [{provide: CdkTree, useExisting: MatTree}],\n imports: [MatTreeNodeOutlet],\n})\nexport class MatTree<T, K = T> extends CdkTree<T, K> {\n // Outlets within the tree's template where the dataNodes will be inserted.\n // We need an initializer here to avoid a TS error. The value will be set in `ngAfterViewInit`.\n @ViewChild(MatTreeNodeOutlet, {static: true}) override _nodeOutlet: MatTreeNodeOutlet =\n undefined!;\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 {CdkTreeNodeToggle} from '@angular/cdk/tree';\nimport {Directive} from '@angular/core';\n\n/**\n * Wrapper for the CdkTree's toggle with Material design styles.\n */\n@Directive({\n selector: '[matTreeNodeToggle]',\n providers: [{provide: CdkTreeNodeToggle, useExisting: MatTreeNodeToggle}],\n inputs: [{name: 'recursive', alias: 'matTreeNodeToggleRecursive'}],\n})\nexport class MatTreeNodeToggle<T, K = T> extends CdkTreeNodeToggle<T, K> {}\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 {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\n\nimport {CdkTreeModule} from '@angular/cdk/tree';\nimport {MatNestedTreeNode, MatTreeNodeDef, MatTreeNode} from './node';\nimport {MatTree} from './tree';\nimport {MatTreeNodeToggle} from './toggle';\nimport {MatTreeNodeOutlet} from './outlet';\nimport {MatTreeNodePadding} from './padding';\n\nconst MAT_TREE_DIRECTIVES = [\n MatNestedTreeNode,\n MatTreeNodeDef,\n MatTreeNodePadding,\n MatTreeNodeToggle,\n MatTree,\n MatTreeNode,\n MatTreeNodeOutlet,\n];\n\n@NgModule({\n imports: [CdkTreeModule, ...MAT_TREE_DIRECTIVES],\n exports: [BidiModule, MAT_TREE_DIRECTIVES],\n})\nexport class MatTreeModule {}\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 {CollectionViewer, DataSource} from '@angular/cdk/collections';\nimport {FlatTreeControl, TreeControl} from '@angular/cdk/tree';\nimport {BehaviorSubject, merge, Observable} from 'rxjs';\nimport {map, take} from 'rxjs/operators';\n\n/**\n * Tree flattener to convert a normal type of node to node with children & level information.\n * Transform nested nodes of type `T` to flattened nodes of type `F`.\n *\n * For example, the input data of type `T` is nested, and contains its children data:\n * SomeNode: {\n * key: 'Fruits',\n * children: [\n * NodeOne: {\n * key: 'Apple',\n * },\n * NodeTwo: {\n * key: 'Pear',\n * }\n * ]\n * }\n * After flattener flatten the tree, the structure will become\n * SomeNode: {\n * key: 'Fruits',\n * expandable: true,\n * level: 1\n * },\n * NodeOne: {\n * key: 'Apple',\n * expandable: false,\n * level: 2\n * },\n * NodeTwo: {\n * key: 'Pear',\n * expandable: false,\n * level: 2\n * }\n * and the output flattened type is `F` with additional information.\n *\n * @deprecated Use MatTree#childrenAccessor and MatTreeNode#isExpandable\n * instead. To be removed in a future version.\n * @breaking-change 21.0.0\n */\nexport class MatTreeFlattener<T, F, K = F> {\n constructor(\n public transformFunction: (node: T, level: number) => F,\n public getLevel: (node: F) => number,\n public isExpandable: (node: F) => boolean,\n public getChildren: (node: T) => Observable<T[]> | T[] | undefined | null,\n ) {}\n\n _flattenNode(node: T, level: number, resultNodes: F[], parentMap: boolean[]): F[] {\n const flatNode = this.transformFunction(node, level);\n resultNodes.push(flatNode);\n\n if (this.isExpandable(flatNode)) {\n const childrenNodes = this.getChildren(node);\n if (childrenNodes) {\n if (Array.isArray(childrenNodes)) {\n this._flattenChildren(childrenNodes, level, resultNodes, parentMap);\n } else {\n childrenNodes.pipe(take(1)).subscribe(children => {\n this._flattenChildren(children, level, resultNodes, parentMap);\n });\n }\n }\n }\n return resultNodes;\n }\n\n _flattenChildren(children: T[], level: number, resultNodes: F[], parentMap: boolean[]): void {\n children.forEach((child, index) => {\n let childParentMap: boolean[] = parentMap.slice();\n childParentMap.push(index != children.length - 1);\n this._flattenNode(child, level + 1, resultNodes, childParentMap);\n });\n }\n\n /**\n * Flatten a list of node type T to flattened version of node F.\n * Please note that type T may be nested, and the length of `structuredData` may be different\n * from that of returned list `F[]`.\n */\n flattenNodes(structuredData: T[]): F[] {\n let resultNodes: F[] = [];\n structuredData.forEach(node => this._flattenNode(node, 0, resultNodes, []));\n return resultNodes;\n }\n\n /**\n * Expand flattened node with current expansion status.\n * The returned list may have different length.\n */\n expandFlattenedNodes(nodes: F[], treeControl: TreeControl<F, K>): F[] {\n let results: F[] = [];\n let currentExpand: boolean[] = [];\n currentExpand[0] = true;\n\n nodes.forEach(node => {\n let expand = true;\n for (let i = 0; i <= this.getLevel(node); i++) {\n expand = expand && currentExpand[i];\n }\n if (expand) {\n results.push(node);\n }\n if (this.isExpandable(node)) {\n currentExpand[this.getLevel(node) + 1] = treeControl.isExpanded(node);\n }\n });\n return results;\n }\n}\n\n/**\n * Data source for flat tree.\n * The data source need to handle expansion/collapsion of the tree node and change the data feed\n * to `MatTree`.\n * The nested tree nodes of type `T` are flattened through `MatTreeFlattener`, and converted\n * to type `F` for `MatTree` to consume.\n *\n * @deprecated Use one of levelAccessor or childrenAccessor instead. To be removed in a future\n * version.\n * @breaking-change 21.0.0\n */\nexport class MatTreeFlatDataSource<T, F, K = F> extends DataSource<F> {\n private readonly _flattenedData = new BehaviorSubject<F[]>([]);\n private readonly _expandedData = new BehaviorSubject<F[]>([]);\n\n get data() {\n return this._data.value;\n }\n set data(value: T[]) {\n this._data.next(value);\n this._flattenedData.next(this._treeFlattener.flattenNodes(this.data));\n this._treeControl.dataNodes = this._flattenedData.value;\n }\n private readonly _data = new BehaviorSubject<T[]>([]);\n\n constructor(\n private _treeControl: FlatTreeControl<F, K>,\n private _treeFlattener: MatTreeFlattener<T, F, K>,\n initialData?: T[],\n ) {\n super();\n\n if (initialData) {\n // Assign the data through the constructor to ensure that all of the logic is executed.\n this.data = initialData;\n }\n }\n\n connect(collectionViewer: CollectionViewer): Observable<F[]> {\n return merge(\n collectionViewer.viewChange,\n this._treeControl.expansionModel.changed,\n this._flattenedData,\n ).pipe(\n map(() => {\n this._expandedData.next(\n this._treeFlattener.expandFlattenedNodes(this._flattenedData.value, this._treeControl),\n );\n return this._expandedData.value;\n }),\n );\n }\n\n disconnect() {\n // no op\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 {CollectionViewer, DataSource} from '@angular/cdk/collections';\nimport {BehaviorSubject, merge, Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\n/**\n * Data source for nested tree.\n *\n * The data source for nested tree doesn't have to consider node flattener, or the way to expand\n * or collapse. The expansion/collapsion will be handled by TreeControl and each non-leaf node.\n */\nexport class MatTreeNestedDataSource<T> extends DataSource<T> {\n /**\n * Data for the nested tree\n */\n get data() {\n return this._data.value;\n }\n set data(value: T[]) {\n this._data.next(value);\n }\n private readonly _data = new BehaviorSubject<T[]>([]);\n\n connect(collectionViewer: CollectionViewer): Observable<T[]> {\n return merge(...([collectionViewer.viewChange, this._data] as Observable<unknown>[])).pipe(\n map(() => this.data),\n );\n }\n\n disconnect() {\n // no op\n }\n}\n"],"names":["isNoopTreeKeyManager","keyManager","_isNoopTreeKeyManager","MatTreeNode","CdkTreeNode","tabIndexInputBinding","_tabIndexInputBinding","value","defaultTabIndex","_getTabindexAttribute","_tree","_keyManager","_tabindex","disabled","isDisabled","constructor","tabIndex","inject","HostAttributeToken","optional","Number","ngOnInit","ngOnDestroy","deps","target","i0","ɵɵFactoryTarget","Directive","ɵdir","ɵɵngDeclareDirective","minVersion","version","type","isStandalone","selector","inputs","numberAttribute","booleanAttribute","provide","useExisting","exportAs","usesInheritance","ngImport","decorators","args","outputs","providers","host","Input","transform","alias","MatTreeNodeDef","CdkTreeNodeDef","data","when","name","MatNestedTreeNode","CdkNestedTreeNode","node","_tabIndex","ngAfterContentInit","activation","expandedChange","classAttribute","CDK_TREE_NODE_OUTLET_NODE","MatTreeNodePadding","CdkTreeNodePadding","level","_level","_setLevelInput","indent","_indent","_setIndentInput","MatTreeNodeOutlet","viewContainer","ViewContainerRef","_node","CdkTreeNodeOutlet","MatTree","CdkTree","_nodeOutlet","undefined","Component","ɵcmp","ɵɵngDeclareComponent","viewQueries","propertyName","first","predicate","descendants","static","template","changeDetection","ChangeDetectionStrategy","Eager","encapsulation","ViewEncapsulation","None","Default","imports","styles","ViewChild","MatTreeNodeToggle","CdkTreeNodeToggle","recursive","MAT_TREE_DIRECTIVES","MatTreeModule","NgModule","CdkTreeModule","exports","BidiModule","MatTreeFlattener","transformFunction","getLevel","isExpandable","getChildren","_flattenNode","resultNodes","parentMap","flatNode","push","childrenNodes","Array","isArray","_flattenChildren","pipe","take","subscribe","children","forEach","child","index","childParentMap","slice","length","flattenNodes","structuredData","expandFlattenedNodes","nodes","treeControl","results","currentExpand","expand","i","isExpanded","MatTreeFlatDataSource","DataSource","_treeControl","_treeFlattener","_flattenedData","BehaviorSubject","_expandedData","_data","next","dataNodes","initialData","connect","collectionViewer","merge","viewChange","expansionModel","changed","map","disconnect","MatTreeNestedDataSource"],"mappings":"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"}
{
"name": "@angular/material",
"version": "21.2.7",
"version": "21.2.8",
"description": "Angular Material",

@@ -356,3 +356,3 @@ "repository": {

"peerDependencies": {
"@angular/cdk": "21.2.7",
"@angular/cdk": "21.2.8",
"@angular/core": "^21.0.0 || ^22.0.0",

@@ -359,0 +359,0 @@ "@angular/common": "^21.0.0 || ^22.0.0",

@@ -22,3 +22,3 @@ "use strict";

*/
const fallbackMaterialVersionRange = `~21.2.7`;
const fallbackMaterialVersionRange = `~21.2.8`;
/**

@@ -25,0 +25,0 @@ * Schematic factory entry-point for the `ng-add` schematic. The ng-add schematic will be

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display