@angular/cdk 21.0.0-next.8 → 21.0.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/_adev_assets/cdk_drag_drop.json +13 -12
  2. package/_adev_assets/cdk_testing.json +15 -25
  3. package/_adev_assets/cdk_testing_protractor.json +1 -1
  4. package/_adev_assets/cdk_testing_selenium_webdriver.json +1 -1
  5. package/_adev_assets/cdk_testing_testbed.json +1 -1
  6. package/fesm2022/_a11y-module-chunk.mjs +755 -869
  7. package/fesm2022/_a11y-module-chunk.mjs.map +1 -1
  8. package/fesm2022/_activedescendant-key-manager-chunk.mjs +8 -8
  9. package/fesm2022/_activedescendant-key-manager-chunk.mjs.map +1 -1
  10. package/fesm2022/_array-chunk.mjs +1 -1
  11. package/fesm2022/_array-chunk.mjs.map +1 -1
  12. package/fesm2022/_breakpoints-observer-chunk.mjs +149 -152
  13. package/fesm2022/_breakpoints-observer-chunk.mjs.map +1 -1
  14. package/fesm2022/_css-pixel-value-chunk.mjs +4 -5
  15. package/fesm2022/_css-pixel-value-chunk.mjs.map +1 -1
  16. package/fesm2022/_data-source-chunk.mjs +2 -8
  17. package/fesm2022/_data-source-chunk.mjs.map +1 -1
  18. package/fesm2022/_directionality-chunk.mjs +54 -54
  19. package/fesm2022/_directionality-chunk.mjs.map +1 -1
  20. package/fesm2022/_dispose-view-repeater-strategy-chunk.mjs +25 -36
  21. package/fesm2022/_dispose-view-repeater-strategy-chunk.mjs.map +1 -1
  22. package/fesm2022/_element-chunk.mjs +6 -17
  23. package/fesm2022/_element-chunk.mjs.map +1 -1
  24. package/fesm2022/_fake-event-detection-chunk.mjs +3 -17
  25. package/fesm2022/_fake-event-detection-chunk.mjs.map +1 -1
  26. package/fesm2022/_focus-key-manager-chunk.mjs +10 -14
  27. package/fesm2022/_focus-key-manager-chunk.mjs.map +1 -1
  28. package/fesm2022/_focus-monitor-chunk.mjs +376 -566
  29. package/fesm2022/_focus-monitor-chunk.mjs.map +1 -1
  30. package/fesm2022/_id-generator-chunk.mjs +36 -27
  31. package/fesm2022/_id-generator-chunk.mjs.map +1 -1
  32. package/fesm2022/_keycodes-chunk.mjs +9 -9
  33. package/fesm2022/_keycodes-chunk.mjs.map +1 -1
  34. package/fesm2022/_list-key-manager-chunk.mjs +248 -336
  35. package/fesm2022/_list-key-manager-chunk.mjs.map +1 -1
  36. package/fesm2022/_overlay-module-chunk.mjs +2534 -2948
  37. package/fesm2022/_overlay-module-chunk.mjs.map +1 -1
  38. package/fesm2022/_passive-listeners-chunk.mjs +10 -22
  39. package/fesm2022/_passive-listeners-chunk.mjs.map +1 -1
  40. package/fesm2022/_platform-chunk.mjs +42 -65
  41. package/fesm2022/_platform-chunk.mjs.map +1 -1
  42. package/fesm2022/_recycle-view-repeater-strategy-chunk.mjs +78 -134
  43. package/fesm2022/_recycle-view-repeater-strategy-chunk.mjs.map +1 -1
  44. package/fesm2022/_scrolling-chunk.mjs +44 -85
  45. package/fesm2022/_scrolling-chunk.mjs.map +1 -1
  46. package/fesm2022/_selection-model-chunk.mjs +138 -209
  47. package/fesm2022/_selection-model-chunk.mjs.map +1 -1
  48. package/fesm2022/_shadow-dom-chunk.mjs +21 -35
  49. package/fesm2022/_shadow-dom-chunk.mjs.map +1 -1
  50. package/fesm2022/_style-loader-chunk.mjs +50 -37
  51. package/fesm2022/_style-loader-chunk.mjs.map +1 -1
  52. package/fesm2022/_test-environment-chunk.mjs +2 -14
  53. package/fesm2022/_test-environment-chunk.mjs.map +1 -1
  54. package/fesm2022/_tree-key-manager-chunk.mjs +229 -308
  55. package/fesm2022/_tree-key-manager-chunk.mjs.map +1 -1
  56. package/fesm2022/_typeahead-chunk.mjs +52 -74
  57. package/fesm2022/_typeahead-chunk.mjs.map +1 -1
  58. package/fesm2022/_unique-selection-dispatcher-chunk.mjs +43 -40
  59. package/fesm2022/_unique-selection-dispatcher-chunk.mjs.map +1 -1
  60. package/fesm2022/a11y.mjs +351 -449
  61. package/fesm2022/a11y.mjs.map +1 -1
  62. package/fesm2022/accordion.mjs +254 -192
  63. package/fesm2022/accordion.mjs.map +1 -1
  64. package/fesm2022/bidi.mjs +121 -64
  65. package/fesm2022/bidi.mjs.map +1 -1
  66. package/fesm2022/cdk.mjs +1 -2
  67. package/fesm2022/cdk.mjs.map +1 -1
  68. package/fesm2022/clipboard.mjs +208 -186
  69. package/fesm2022/clipboard.mjs.map +1 -1
  70. package/fesm2022/coercion-private.mjs +4 -8
  71. package/fesm2022/coercion-private.mjs.map +1 -1
  72. package/fesm2022/coercion.mjs +11 -29
  73. package/fesm2022/coercion.mjs.map +1 -1
  74. package/fesm2022/dialog.mjs +660 -808
  75. package/fesm2022/dialog.mjs.map +1 -1
  76. package/fesm2022/drag-drop.mjs +3347 -4286
  77. package/fesm2022/drag-drop.mjs.map +1 -1
  78. package/fesm2022/keycodes.mjs +4 -8
  79. package/fesm2022/keycodes.mjs.map +1 -1
  80. package/fesm2022/layout.mjs +44 -26
  81. package/fesm2022/layout.mjs.map +1 -1
  82. package/fesm2022/listbox.mjs +841 -895
  83. package/fesm2022/listbox.mjs.map +1 -1
  84. package/fesm2022/menu.mjs +1942 -1858
  85. package/fesm2022/menu.mjs.map +1 -1
  86. package/fesm2022/observers-private.mjs +88 -106
  87. package/fesm2022/observers-private.mjs.map +1 -1
  88. package/fesm2022/observers.mjs +262 -184
  89. package/fesm2022/observers.mjs.map +1 -1
  90. package/fesm2022/overlay.mjs +72 -68
  91. package/fesm2022/overlay.mjs.map +1 -1
  92. package/fesm2022/platform.mjs +43 -54
  93. package/fesm2022/platform.mjs.map +1 -1
  94. package/fesm2022/portal.mjs +402 -560
  95. package/fesm2022/portal.mjs.map +1 -1
  96. package/fesm2022/private.mjs +38 -10
  97. package/fesm2022/private.mjs.map +1 -1
  98. package/fesm2022/scrolling.mjs +1323 -1400
  99. package/fesm2022/scrolling.mjs.map +1 -1
  100. package/fesm2022/stepper.mjs +758 -590
  101. package/fesm2022/stepper.mjs.map +1 -1
  102. package/fesm2022/table.mjs +2327 -2319
  103. package/fesm2022/table.mjs.map +1 -1
  104. package/fesm2022/testing-selenium-webdriver.mjs +252 -325
  105. package/fesm2022/testing-selenium-webdriver.mjs.map +1 -1
  106. package/fesm2022/testing-testbed.mjs +592 -709
  107. package/fesm2022/testing-testbed.mjs.map +1 -1
  108. package/fesm2022/testing.mjs +368 -889
  109. package/fesm2022/testing.mjs.map +1 -1
  110. package/fesm2022/text-field.mjs +459 -388
  111. package/fesm2022/text-field.mjs.map +1 -1
  112. package/fesm2022/tree.mjs +1483 -1731
  113. package/fesm2022/tree.mjs.map +1 -1
  114. package/overlay/_index.scss +28 -0
  115. package/overlay-prebuilt.css +1 -1
  116. package/package.json +1 -1
  117. package/schematics/ng-add/index.js +1 -1
  118. package/types/_harness-environment-chunk.d.ts +1 -2
  119. package/types/_overlay-module-chunk.d.ts +59 -7
  120. package/types/_portal-directives-chunk.d.ts +2 -18
  121. package/types/accordion.d.ts +3 -1
  122. package/types/dialog.d.ts +1 -1
  123. package/types/overlay.d.ts +6 -2
  124. package/types/portal.d.ts +1 -1
@@ -5,174 +5,171 @@ import { take, skip, debounceTime, map, startWith, takeUntil } from 'rxjs/operat
5
5
  import { Platform } from './_platform-chunk.mjs';
6
6
  import { coerceArray } from './_array-chunk.mjs';
7
7
 
8
- /** Global registry for all dynamically-created, injected media queries. */
9
8
  const mediaQueriesForWebkitCompatibility = new Set();
10
- /** Style tag that holds all of the dynamically-created media queries. */
11
9
  let mediaQueryStyleNode;
12
- /** A utility for calling matchMedia queries. */
13
10
  class MediaMatcher {
14
- _platform = inject(Platform);
15
- _nonce = inject(CSP_NONCE, { optional: true });
16
- /** The internal matchMedia method to return back a MediaQueryList like object. */
17
- _matchMedia;
18
- constructor() {
19
- this._matchMedia =
20
- this._platform.isBrowser && window.matchMedia
21
- ? // matchMedia is bound to the window scope intentionally as it is an illegal invocation to
22
- // call it from a different scope.
23
- window.matchMedia.bind(window)
24
- : noopMatchMedia;
11
+ _platform = inject(Platform);
12
+ _nonce = inject(CSP_NONCE, {
13
+ optional: true
14
+ });
15
+ _matchMedia;
16
+ constructor() {
17
+ this._matchMedia = this._platform.isBrowser && window.matchMedia ? window.matchMedia.bind(window) : noopMatchMedia;
18
+ }
19
+ matchMedia(query) {
20
+ if (this._platform.WEBKIT || this._platform.BLINK) {
21
+ createEmptyStyleRule(query, this._nonce);
25
22
  }
26
- /**
27
- * Evaluates the given media query and returns the native MediaQueryList from which results
28
- * can be retrieved.
29
- * Confirms the layout engine will trigger for the selector query provided and returns the
30
- * MediaQueryList for the query provided.
31
- */
32
- matchMedia(query) {
33
- if (this._platform.WEBKIT || this._platform.BLINK) {
34
- createEmptyStyleRule(query, this._nonce);
35
- }
36
- return this._matchMedia(query);
37
- }
38
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: MediaMatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
39
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: MediaMatcher, providedIn: 'root' });
23
+ return this._matchMedia(query);
24
+ }
25
+ static ɵfac = i0.ɵɵngDeclareFactory({
26
+ minVersion: "12.0.0",
27
+ version: "20.2.0-next.2",
28
+ ngImport: i0,
29
+ type: MediaMatcher,
30
+ deps: [],
31
+ target: i0.ɵɵFactoryTarget.Injectable
32
+ });
33
+ static ɵprov = i0.ɵɵngDeclareInjectable({
34
+ minVersion: "12.0.0",
35
+ version: "20.2.0-next.2",
36
+ ngImport: i0,
37
+ type: MediaMatcher,
38
+ providedIn: 'root'
39
+ });
40
40
  }
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: MediaMatcher, decorators: [{
42
- type: Injectable,
43
- args: [{ providedIn: 'root' }]
44
- }], ctorParameters: () => [] });
45
- /**
46
- * Creates an empty stylesheet that is used to work around browser inconsistencies related to
47
- * `matchMedia`. At the time of writing, it handles the following cases:
48
- * 1. On WebKit browsers, a media query has to have at least one rule in order for `matchMedia`
49
- * to fire. We work around it by declaring a dummy stylesheet with a `@media` declaration.
50
- * 2. In some cases Blink browsers will stop firing the `matchMedia` listener if none of the rules
51
- * inside the `@media` match existing elements on the page. We work around it by having one rule
52
- * targeting the `body`. See https://github.com/angular/components/issues/23546.
53
- */
41
+ i0.ɵɵngDeclareClassMetadata({
42
+ minVersion: "12.0.0",
43
+ version: "20.2.0-next.2",
44
+ ngImport: i0,
45
+ type: MediaMatcher,
46
+ decorators: [{
47
+ type: Injectable,
48
+ args: [{
49
+ providedIn: 'root'
50
+ }]
51
+ }],
52
+ ctorParameters: () => []
53
+ });
54
54
  function createEmptyStyleRule(query, nonce) {
55
- if (mediaQueriesForWebkitCompatibility.has(query)) {
56
- return;
57
- }
58
- try {
59
- if (!mediaQueryStyleNode) {
60
- mediaQueryStyleNode = document.createElement('style');
61
- if (nonce) {
62
- mediaQueryStyleNode.setAttribute('nonce', nonce);
63
- }
64
- mediaQueryStyleNode.setAttribute('type', 'text/css');
65
- document.head.appendChild(mediaQueryStyleNode);
66
- }
67
- if (mediaQueryStyleNode.sheet) {
68
- mediaQueryStyleNode.sheet.insertRule(`@media ${query} {body{ }}`, 0);
69
- mediaQueriesForWebkitCompatibility.add(query);
70
- }
55
+ if (mediaQueriesForWebkitCompatibility.has(query)) {
56
+ return;
57
+ }
58
+ try {
59
+ if (!mediaQueryStyleNode) {
60
+ mediaQueryStyleNode = document.createElement('style');
61
+ if (nonce) {
62
+ mediaQueryStyleNode.setAttribute('nonce', nonce);
63
+ }
64
+ mediaQueryStyleNode.setAttribute('type', 'text/css');
65
+ document.head.appendChild(mediaQueryStyleNode);
71
66
  }
72
- catch (e) {
73
- console.error(e);
67
+ if (mediaQueryStyleNode.sheet) {
68
+ mediaQueryStyleNode.sheet.insertRule(`@media ${query} {body{ }}`, 0);
69
+ mediaQueriesForWebkitCompatibility.add(query);
74
70
  }
71
+ } catch (e) {
72
+ console.error(e);
73
+ }
75
74
  }
76
- /** No-op matchMedia replacement for non-browser platforms. */
77
75
  function noopMatchMedia(query) {
78
- // Use `as any` here to avoid adding additional necessary properties for
79
- // the noop matcher.
80
- return {
81
- matches: query === 'all' || query === '',
82
- media: query,
83
- addListener: () => { },
84
- removeListener: () => { },
85
- };
76
+ return {
77
+ matches: query === 'all' || query === '',
78
+ media: query,
79
+ addListener: () => {},
80
+ removeListener: () => {}
81
+ };
86
82
  }
87
83
 
88
- /** Utility for checking the matching state of `@media` queries. */
89
84
  class BreakpointObserver {
90
- _mediaMatcher = inject(MediaMatcher);
91
- _zone = inject(NgZone);
92
- /** A map of all media queries currently being listened for. */
93
- _queries = new Map();
94
- /** A subject for all other observables to takeUntil based on. */
95
- _destroySubject = new Subject();
96
- constructor() { }
97
- /** Completes the active subject, signalling to all other observables to complete. */
98
- ngOnDestroy() {
99
- this._destroySubject.next();
100
- this._destroySubject.complete();
101
- }
102
- /**
103
- * Whether one or more media queries match the current viewport size.
104
- * @param value One or more media queries to check.
105
- * @returns Whether any of the media queries match.
106
- */
107
- isMatched(value) {
108
- const queries = splitQueries(coerceArray(value));
109
- return queries.some(mediaQuery => this._registerQuery(mediaQuery).mql.matches);
85
+ _mediaMatcher = inject(MediaMatcher);
86
+ _zone = inject(NgZone);
87
+ _queries = new Map();
88
+ _destroySubject = new Subject();
89
+ constructor() {}
90
+ ngOnDestroy() {
91
+ this._destroySubject.next();
92
+ this._destroySubject.complete();
93
+ }
94
+ isMatched(value) {
95
+ const queries = splitQueries(coerceArray(value));
96
+ return queries.some(mediaQuery => this._registerQuery(mediaQuery).mql.matches);
97
+ }
98
+ observe(value) {
99
+ const queries = splitQueries(coerceArray(value));
100
+ const observables = queries.map(query => this._registerQuery(query).observable);
101
+ let stateObservable = combineLatest(observables);
102
+ stateObservable = concat(stateObservable.pipe(take(1)), stateObservable.pipe(skip(1), debounceTime(0)));
103
+ return stateObservable.pipe(map(breakpointStates => {
104
+ const response = {
105
+ matches: false,
106
+ breakpoints: {}
107
+ };
108
+ breakpointStates.forEach(({
109
+ matches,
110
+ query
111
+ }) => {
112
+ response.matches = response.matches || matches;
113
+ response.breakpoints[query] = matches;
114
+ });
115
+ return response;
116
+ }));
117
+ }
118
+ _registerQuery(query) {
119
+ if (this._queries.has(query)) {
120
+ return this._queries.get(query);
110
121
  }
111
- /**
112
- * Gets an observable of results for the given queries that will emit new results for any changes
113
- * in matching of the given queries.
114
- * @param value One or more media queries to check.
115
- * @returns A stream of matches for the given queries.
116
- */
117
- observe(value) {
118
- const queries = splitQueries(coerceArray(value));
119
- const observables = queries.map(query => this._registerQuery(query).observable);
120
- let stateObservable = combineLatest(observables);
121
- // Emit the first state immediately, and then debounce the subsequent emissions.
122
- stateObservable = concat(stateObservable.pipe(take(1)), stateObservable.pipe(skip(1), debounceTime(0)));
123
- return stateObservable.pipe(map(breakpointStates => {
124
- const response = {
125
- matches: false,
126
- breakpoints: {},
127
- };
128
- breakpointStates.forEach(({ matches, query }) => {
129
- response.matches = response.matches || matches;
130
- response.breakpoints[query] = matches;
131
- });
132
- return response;
133
- }));
134
- }
135
- /** Registers a specific query to be listened for. */
136
- _registerQuery(query) {
137
- // Only set up a new MediaQueryList if it is not already being listened for.
138
- if (this._queries.has(query)) {
139
- return this._queries.get(query);
140
- }
141
- const mql = this._mediaMatcher.matchMedia(query);
142
- // Create callback for match changes and add it is as a listener.
143
- const queryObservable = new Observable((observer) => {
144
- // Listener callback methods are wrapped to be placed back in ngZone. Callbacks must be placed
145
- // back into the zone because matchMedia is only included in Zone.js by loading the
146
- // webapis-media-query.js file alongside the zone.js file. Additionally, some browsers do not
147
- // have MediaQueryList inherit from EventTarget, which causes inconsistencies in how Zone.js
148
- // patches it.
149
- const handler = (e) => this._zone.run(() => observer.next(e));
150
- mql.addListener(handler);
151
- return () => {
152
- mql.removeListener(handler);
153
- };
154
- }).pipe(startWith(mql), map(({ matches }) => ({ query, matches })), takeUntil(this._destroySubject));
155
- // Add the MediaQueryList to the set of queries.
156
- const output = { observable: queryObservable, mql };
157
- this._queries.set(query, output);
158
- return output;
159
- }
160
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: BreakpointObserver, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
161
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: BreakpointObserver, providedIn: 'root' });
122
+ const mql = this._mediaMatcher.matchMedia(query);
123
+ const queryObservable = new Observable(observer => {
124
+ const handler = e => this._zone.run(() => observer.next(e));
125
+ mql.addListener(handler);
126
+ return () => {
127
+ mql.removeListener(handler);
128
+ };
129
+ }).pipe(startWith(mql), map(({
130
+ matches
131
+ }) => ({
132
+ query,
133
+ matches
134
+ })), takeUntil(this._destroySubject));
135
+ const output = {
136
+ observable: queryObservable,
137
+ mql
138
+ };
139
+ this._queries.set(query, output);
140
+ return output;
141
+ }
142
+ static ɵfac = i0.ɵɵngDeclareFactory({
143
+ minVersion: "12.0.0",
144
+ version: "20.2.0-next.2",
145
+ ngImport: i0,
146
+ type: BreakpointObserver,
147
+ deps: [],
148
+ target: i0.ɵɵFactoryTarget.Injectable
149
+ });
150
+ static ɵprov = i0.ɵɵngDeclareInjectable({
151
+ minVersion: "12.0.0",
152
+ version: "20.2.0-next.2",
153
+ ngImport: i0,
154
+ type: BreakpointObserver,
155
+ providedIn: 'root'
156
+ });
162
157
  }
163
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: BreakpointObserver, decorators: [{
164
- type: Injectable,
165
- args: [{ providedIn: 'root' }]
166
- }], ctorParameters: () => [] });
167
- /**
168
- * Split each query string into separate query strings if two queries are provided as comma
169
- * separated.
170
- */
158
+ i0.ɵɵngDeclareClassMetadata({
159
+ minVersion: "12.0.0",
160
+ version: "20.2.0-next.2",
161
+ ngImport: i0,
162
+ type: BreakpointObserver,
163
+ decorators: [{
164
+ type: Injectable,
165
+ args: [{
166
+ providedIn: 'root'
167
+ }]
168
+ }],
169
+ ctorParameters: () => []
170
+ });
171
171
  function splitQueries(queries) {
172
- return queries
173
- .map(query => query.split(','))
174
- .reduce((a1, a2) => a1.concat(a2))
175
- .map(query => query.trim());
172
+ return queries.map(query => query.split(',')).reduce((a1, a2) => a1.concat(a2)).map(query => query.trim());
176
173
  }
177
174
 
178
175
  export { BreakpointObserver, MediaMatcher };
@@ -1 +1 @@
1
- {"version":3,"file":"_breakpoints-observer-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/cdk/layout/media-matcher.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/cdk/layout/breakpoints-observer.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 {Injectable, CSP_NONCE, inject} from '@angular/core';\nimport {Platform} from '../platform';\n\n/** Global registry for all dynamically-created, injected media queries. */\nconst mediaQueriesForWebkitCompatibility: Set<string> = new Set<string>();\n\n/** Style tag that holds all of the dynamically-created media queries. */\nlet mediaQueryStyleNode: HTMLStyleElement | undefined;\n\n/** A utility for calling matchMedia queries. */\n@Injectable({providedIn: 'root'})\nexport class MediaMatcher {\n private _platform = inject(Platform);\n private _nonce = inject(CSP_NONCE, {optional: true});\n\n /** The internal matchMedia method to return back a MediaQueryList like object. */\n private _matchMedia: (query: string) => MediaQueryList;\n\n constructor(...args: unknown[]);\n\n constructor() {\n this._matchMedia =\n this._platform.isBrowser && window.matchMedia\n ? // matchMedia is bound to the window scope intentionally as it is an illegal invocation to\n // call it from a different scope.\n window.matchMedia.bind(window)\n : noopMatchMedia;\n }\n\n /**\n * Evaluates the given media query and returns the native MediaQueryList from which results\n * can be retrieved.\n * Confirms the layout engine will trigger for the selector query provided and returns the\n * MediaQueryList for the query provided.\n */\n matchMedia(query: string): MediaQueryList {\n if (this._platform.WEBKIT || this._platform.BLINK) {\n createEmptyStyleRule(query, this._nonce);\n }\n return this._matchMedia(query);\n }\n}\n\n/**\n * Creates an empty stylesheet that is used to work around browser inconsistencies related to\n * `matchMedia`. At the time of writing, it handles the following cases:\n * 1. On WebKit browsers, a media query has to have at least one rule in order for `matchMedia`\n * to fire. We work around it by declaring a dummy stylesheet with a `@media` declaration.\n * 2. In some cases Blink browsers will stop firing the `matchMedia` listener if none of the rules\n * inside the `@media` match existing elements on the page. We work around it by having one rule\n * targeting the `body`. See https://github.com/angular/components/issues/23546.\n */\nfunction createEmptyStyleRule(query: string, nonce: string | undefined | null) {\n if (mediaQueriesForWebkitCompatibility.has(query)) {\n return;\n }\n\n try {\n if (!mediaQueryStyleNode) {\n mediaQueryStyleNode = document.createElement('style');\n\n if (nonce) {\n mediaQueryStyleNode.setAttribute('nonce', nonce);\n }\n\n mediaQueryStyleNode.setAttribute('type', 'text/css');\n document.head!.appendChild(mediaQueryStyleNode);\n }\n\n if (mediaQueryStyleNode.sheet) {\n mediaQueryStyleNode.sheet.insertRule(`@media ${query} {body{ }}`, 0);\n mediaQueriesForWebkitCompatibility.add(query);\n }\n } catch (e) {\n console.error(e);\n }\n}\n\n/** No-op matchMedia replacement for non-browser platforms. */\nfunction noopMatchMedia(query: string): MediaQueryList {\n // Use `as any` here to avoid adding additional necessary properties for\n // the noop matcher.\n return {\n matches: query === 'all' || query === '',\n media: query,\n addListener: () => {},\n removeListener: () => {},\n } as any;\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 {coerceArray} from '../coercion';\nimport {Injectable, NgZone, OnDestroy, inject} from '@angular/core';\nimport {combineLatest, concat, Observable, Observer, Subject} from 'rxjs';\nimport {debounceTime, map, skip, startWith, take, takeUntil} from 'rxjs/operators';\nimport {MediaMatcher} from './media-matcher';\n\n/** The current state of a layout breakpoint. */\nexport interface BreakpointState {\n /** Whether the breakpoint is currently matching. */\n matches: boolean;\n /**\n * A key boolean pair for each query provided to the observe method,\n * with its current matched state.\n */\n breakpoints: {\n [key: string]: boolean;\n };\n}\n\n/** The current state of a layout breakpoint. */\ninterface InternalBreakpointState {\n /** Whether the breakpoint is currently matching. */\n matches: boolean;\n /** The media query being to be matched */\n query: string;\n}\n\ninterface Query {\n observable: Observable<InternalBreakpointState>;\n mql: MediaQueryList;\n}\n\n/** Utility for checking the matching state of `@media` queries. */\n@Injectable({providedIn: 'root'})\nexport class BreakpointObserver implements OnDestroy {\n private _mediaMatcher = inject(MediaMatcher);\n private _zone = inject(NgZone);\n\n /** A map of all media queries currently being listened for. */\n private _queries = new Map<string, Query>();\n /** A subject for all other observables to takeUntil based on. */\n private readonly _destroySubject = new Subject<void>();\n\n constructor(...args: unknown[]);\n constructor() {}\n\n /** Completes the active subject, signalling to all other observables to complete. */\n ngOnDestroy() {\n this._destroySubject.next();\n this._destroySubject.complete();\n }\n\n /**\n * Whether one or more media queries match the current viewport size.\n * @param value One or more media queries to check.\n * @returns Whether any of the media queries match.\n */\n isMatched(value: string | readonly string[]): boolean {\n const queries = splitQueries(coerceArray(value));\n return queries.some(mediaQuery => this._registerQuery(mediaQuery).mql.matches);\n }\n\n /**\n * Gets an observable of results for the given queries that will emit new results for any changes\n * in matching of the given queries.\n * @param value One or more media queries to check.\n * @returns A stream of matches for the given queries.\n */\n observe(value: string | readonly string[]): Observable<BreakpointState> {\n const queries = splitQueries(coerceArray(value));\n const observables = queries.map(query => this._registerQuery(query).observable);\n\n let stateObservable = combineLatest(observables);\n // Emit the first state immediately, and then debounce the subsequent emissions.\n stateObservable = concat(\n stateObservable.pipe(take(1)),\n stateObservable.pipe(skip(1), debounceTime(0)),\n );\n return stateObservable.pipe(\n map(breakpointStates => {\n const response: BreakpointState = {\n matches: false,\n breakpoints: {},\n };\n breakpointStates.forEach(({matches, query}) => {\n response.matches = response.matches || matches;\n response.breakpoints[query] = matches;\n });\n return response;\n }),\n );\n }\n\n /** Registers a specific query to be listened for. */\n private _registerQuery(query: string): Query {\n // Only set up a new MediaQueryList if it is not already being listened for.\n if (this._queries.has(query)) {\n return this._queries.get(query)!;\n }\n\n const mql = this._mediaMatcher.matchMedia(query);\n\n // Create callback for match changes and add it is as a listener.\n const queryObservable = new Observable((observer: Observer<MediaQueryListEvent>) => {\n // Listener callback methods are wrapped to be placed back in ngZone. Callbacks must be placed\n // back into the zone because matchMedia is only included in Zone.js by loading the\n // webapis-media-query.js file alongside the zone.js file. Additionally, some browsers do not\n // have MediaQueryList inherit from EventTarget, which causes inconsistencies in how Zone.js\n // patches it.\n const handler = (e: MediaQueryListEvent): void => this._zone.run(() => observer.next(e));\n mql.addListener(handler);\n\n return () => {\n mql.removeListener(handler);\n };\n }).pipe(\n startWith(mql),\n map(({matches}) => ({query, matches})),\n takeUntil(this._destroySubject),\n );\n\n // Add the MediaQueryList to the set of queries.\n const output = {observable: queryObservable, mql};\n this._queries.set(query, output);\n return output;\n }\n}\n\n/**\n * Split each query string into separate query strings if two queries are provided as comma\n * separated.\n */\nfunction splitQueries(queries: readonly string[]): readonly string[] {\n return queries\n .map(query => query.split(','))\n .reduce((a1, a2) => a1.concat(a2))\n .map(query => query.trim());\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_breakpoints-observer-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/cdk/layout/media-matcher.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/cdk/layout/breakpoints-observer.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 {Injectable, CSP_NONCE, inject} from '@angular/core';\nimport {Platform} from '../platform';\n\n/** Global registry for all dynamically-created, injected media queries. */\nconst mediaQueriesForWebkitCompatibility: Set<string> = new Set<string>();\n\n/** Style tag that holds all of the dynamically-created media queries. */\nlet mediaQueryStyleNode: HTMLStyleElement | undefined;\n\n/** A utility for calling matchMedia queries. */\n@Injectable({providedIn: 'root'})\nexport class MediaMatcher {\n private _platform = inject(Platform);\n private _nonce = inject(CSP_NONCE, {optional: true});\n\n /** The internal matchMedia method to return back a MediaQueryList like object. */\n private _matchMedia: (query: string) => MediaQueryList;\n\n constructor(...args: unknown[]);\n\n constructor() {\n this._matchMedia =\n this._platform.isBrowser && window.matchMedia\n ? // matchMedia is bound to the window scope intentionally as it is an illegal invocation to\n // call it from a different scope.\n window.matchMedia.bind(window)\n : noopMatchMedia;\n }\n\n /**\n * Evaluates the given media query and returns the native MediaQueryList from which results\n * can be retrieved.\n * Confirms the layout engine will trigger for the selector query provided and returns the\n * MediaQueryList for the query provided.\n */\n matchMedia(query: string): MediaQueryList {\n if (this._platform.WEBKIT || this._platform.BLINK) {\n createEmptyStyleRule(query, this._nonce);\n }\n return this._matchMedia(query);\n }\n}\n\n/**\n * Creates an empty stylesheet that is used to work around browser inconsistencies related to\n * `matchMedia`. At the time of writing, it handles the following cases:\n * 1. On WebKit browsers, a media query has to have at least one rule in order for `matchMedia`\n * to fire. We work around it by declaring a dummy stylesheet with a `@media` declaration.\n * 2. In some cases Blink browsers will stop firing the `matchMedia` listener if none of the rules\n * inside the `@media` match existing elements on the page. We work around it by having one rule\n * targeting the `body`. See https://github.com/angular/components/issues/23546.\n */\nfunction createEmptyStyleRule(query: string, nonce: string | undefined | null) {\n if (mediaQueriesForWebkitCompatibility.has(query)) {\n return;\n }\n\n try {\n if (!mediaQueryStyleNode) {\n mediaQueryStyleNode = document.createElement('style');\n\n if (nonce) {\n mediaQueryStyleNode.setAttribute('nonce', nonce);\n }\n\n mediaQueryStyleNode.setAttribute('type', 'text/css');\n document.head!.appendChild(mediaQueryStyleNode);\n }\n\n if (mediaQueryStyleNode.sheet) {\n mediaQueryStyleNode.sheet.insertRule(`@media ${query} {body{ }}`, 0);\n mediaQueriesForWebkitCompatibility.add(query);\n }\n } catch (e) {\n console.error(e);\n }\n}\n\n/** No-op matchMedia replacement for non-browser platforms. */\nfunction noopMatchMedia(query: string): MediaQueryList {\n // Use `as any` here to avoid adding additional necessary properties for\n // the noop matcher.\n return {\n matches: query === 'all' || query === '',\n media: query,\n addListener: () => {},\n removeListener: () => {},\n } as any;\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 {coerceArray} from '../coercion';\nimport {Injectable, NgZone, OnDestroy, inject} from '@angular/core';\nimport {combineLatest, concat, Observable, Observer, Subject} from 'rxjs';\nimport {debounceTime, map, skip, startWith, take, takeUntil} from 'rxjs/operators';\nimport {MediaMatcher} from './media-matcher';\n\n/** The current state of a layout breakpoint. */\nexport interface BreakpointState {\n /** Whether the breakpoint is currently matching. */\n matches: boolean;\n /**\n * A key boolean pair for each query provided to the observe method,\n * with its current matched state.\n */\n breakpoints: {\n [key: string]: boolean;\n };\n}\n\n/** The current state of a layout breakpoint. */\ninterface InternalBreakpointState {\n /** Whether the breakpoint is currently matching. */\n matches: boolean;\n /** The media query being to be matched */\n query: string;\n}\n\ninterface Query {\n observable: Observable<InternalBreakpointState>;\n mql: MediaQueryList;\n}\n\n/** Utility for checking the matching state of `@media` queries. */\n@Injectable({providedIn: 'root'})\nexport class BreakpointObserver implements OnDestroy {\n private _mediaMatcher = inject(MediaMatcher);\n private _zone = inject(NgZone);\n\n /** A map of all media queries currently being listened for. */\n private _queries = new Map<string, Query>();\n /** A subject for all other observables to takeUntil based on. */\n private readonly _destroySubject = new Subject<void>();\n\n constructor(...args: unknown[]);\n constructor() {}\n\n /** Completes the active subject, signalling to all other observables to complete. */\n ngOnDestroy() {\n this._destroySubject.next();\n this._destroySubject.complete();\n }\n\n /**\n * Whether one or more media queries match the current viewport size.\n * @param value One or more media queries to check.\n * @returns Whether any of the media queries match.\n */\n isMatched(value: string | readonly string[]): boolean {\n const queries = splitQueries(coerceArray(value));\n return queries.some(mediaQuery => this._registerQuery(mediaQuery).mql.matches);\n }\n\n /**\n * Gets an observable of results for the given queries that will emit new results for any changes\n * in matching of the given queries.\n * @param value One or more media queries to check.\n * @returns A stream of matches for the given queries.\n */\n observe(value: string | readonly string[]): Observable<BreakpointState> {\n const queries = splitQueries(coerceArray(value));\n const observables = queries.map(query => this._registerQuery(query).observable);\n\n let stateObservable = combineLatest(observables);\n // Emit the first state immediately, and then debounce the subsequent emissions.\n stateObservable = concat(\n stateObservable.pipe(take(1)),\n stateObservable.pipe(skip(1), debounceTime(0)),\n );\n return stateObservable.pipe(\n map(breakpointStates => {\n const response: BreakpointState = {\n matches: false,\n breakpoints: {},\n };\n breakpointStates.forEach(({matches, query}) => {\n response.matches = response.matches || matches;\n response.breakpoints[query] = matches;\n });\n return response;\n }),\n );\n }\n\n /** Registers a specific query to be listened for. */\n private _registerQuery(query: string): Query {\n // Only set up a new MediaQueryList if it is not already being listened for.\n if (this._queries.has(query)) {\n return this._queries.get(query)!;\n }\n\n const mql = this._mediaMatcher.matchMedia(query);\n\n // Create callback for match changes and add it is as a listener.\n const queryObservable = new Observable((observer: Observer<MediaQueryListEvent>) => {\n // Listener callback methods are wrapped to be placed back in ngZone. Callbacks must be placed\n // back into the zone because matchMedia is only included in Zone.js by loading the\n // webapis-media-query.js file alongside the zone.js file. Additionally, some browsers do not\n // have MediaQueryList inherit from EventTarget, which causes inconsistencies in how Zone.js\n // patches it.\n const handler = (e: MediaQueryListEvent): void => this._zone.run(() => observer.next(e));\n mql.addListener(handler);\n\n return () => {\n mql.removeListener(handler);\n };\n }).pipe(\n startWith(mql),\n map(({matches}) => ({query, matches})),\n takeUntil(this._destroySubject),\n );\n\n // Add the MediaQueryList to the set of queries.\n const output = {observable: queryObservable, mql};\n this._queries.set(query, output);\n return output;\n }\n}\n\n/**\n * Split each query string into separate query strings if two queries are provided as comma\n * separated.\n */\nfunction splitQueries(queries: readonly string[]): readonly string[] {\n return queries\n .map(query => query.split(','))\n .reduce((a1, a2) => a1.concat(a2))\n .map(query => query.trim());\n}\n"],"names":["mediaQueryStyleNode","_matchMedia","constructor","_platform","isBrowser","window","matchMedia","query","nonce","setAttribute","document","head","appendChild","sheet","insertRule","add","console","error","e","noopMatchMedia","BreakpointObserver","_mediaMatcher","inject","MediaMatcher","NgZone","Map","_destroySubject","Subject","ngOnDestroy","complete","observe","value","queries","splitQueries","coerceArray","response","matches","_registerQuery"],"mappings":";;;;;;;;IAcAA,mBAAA;kBAIyB,CAAA;;;;;EASvBC,WAAA;EACEC,WAAA,GAAA;IAEI,IAAAD,CAAAA,WAAA,GAEE,IAAA,CAAAE,SAAA,CAAAC,SAAA,IAAAC,MAAA,CAAAC,UAAA;AAUR;AAxBWA,EAAAA,UAAAA,CAAAC,KAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDP,MAAA,IAAAC,KAAA,EAAA;AACAR,QAAAA,mBAAA,CAAAS,YAA2B,CAAA,OAAA,EAAAD,KAAA,CAAA;;AAG7BR,MAAAA,mBAAA,CAAAS,YAAA,CAAA,MAAA,EAAA,UAAA,CAAA;AAEEC,MAAAA,QAAA,CAAAC,IAAA,CAAAC,WAAA,CAAAZ,mBAAA,CAAA;;AAEJA,IAAAA,IAAAA,mBAAA,CAAAa,KAAA,EAAA;AACEb,MAAAA,mBAAQ,CAAAa,KAAA,CAAAC,UAAA,WAAAP,KAAA,CAAA,UAAA,CAAA,EAAA,CAAA,CAAA;wCACV,CAAAQ,GAAA,CAAAR,KAAA,CAAA;;AAKwE,GAAA,CAAA,OAAA,CAAA,EAAA;IACxES,OAAoB,CAAAC,KAAA,CAAAC,CAAA,CAAA;;;AAKlBC,SAAAA,cAAAA,CAAAZ,KAAA,EAAA;AAEJ,EAAA,OAAA;;;;;;;;ACpDU,MAAAa,kBAAsB,CAAA;EACtBC,aAAA,GAAcC,MAAC,CAAOC,YAAA,CAAA;OAEkC,GAAAD,MAAA,CAAAE,MAAA,CAAA;UAEC,GAAA,IAAAC,GAAA,EAAA;AAkC/DC,EAAAA,eAAA,OAAAC,OAAA,EAAA;AAMIzB,EAAAA,WAAAA,GAAA;AAEE0B,EAAAA,WAAAA,GAAA;;QAGQ,CAAAF,eAA2B,CAAAG,QAAA,EAAA;AACnC;;;;;AAwBJC,EAAAA,OAAAA,CAAAC,KAAA,EAAA;AAGE,IAAA,MAAAC,OAAA,GAAAC,YAAA,CAAAC,WAAA,CAAAH,KAAA,CAAA,CAAA;;;;;AAWJ,MAAA,MAAaI,QAAA,GAAA;AACfC,QAAAA,OAAA,EAAA,KAAA;;;;;;;gBA5FS,CAAAA,OAAA,mBAAE,IAAAA,OAAY;;AAkGtB,OAAA,CAAA;aACMD,QAAA;;;AAIDE,EAAAA,cAAAA,CAAA9B,KAAM,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BA1DJ,EAAA;;;;;;"}
@@ -1,9 +1,8 @@
1
- /** Coerces a value to a CSS pixel value. */
2
1
  function coerceCssPixelValue(value) {
3
- if (value == null) {
4
- return '';
5
- }
6
- return typeof value === 'string' ? value : `${value}px`;
2
+ if (value == null) {
3
+ return '';
4
+ }
5
+ return typeof value === 'string' ? value : `${value}px`;
7
6
  }
8
7
 
9
8
  export { coerceCssPixelValue };
@@ -1 +1 @@
1
- {"version":3,"file":"_css-pixel-value-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/cdk/coercion/css-pixel-value.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/** Coerces a value to a CSS pixel value. */\nexport function coerceCssPixelValue(value: any): string {\n if (value == null) {\n return '';\n }\n\n return typeof value === 'string' ? value : `${value}px`;\n}\n"],"names":[],"mappings":"AAQA;AACM,SAAU,mBAAmB,CAAC,KAAU,EAAA;AAC5C,IAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,QAAA,OAAO,EAAE;;AAGX,IAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,CAAG,EAAA,KAAK,IAAI;AACzD;;;;"}
1
+ {"version":3,"file":"_css-pixel-value-chunk.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -1,14 +1,8 @@
1
1
  import { ConnectableObservable } from 'rxjs';
2
2
 
3
- class DataSource {
4
- }
5
- /** Checks whether an object is a data source. */
3
+ class DataSource {}
6
4
  function isDataSource(value) {
7
- // Check if the value is a DataSource by observing if it has a connect function. Cannot
8
- // be checked as an `instanceof DataSource` since people could create their own sources
9
- // that match the interface, but don't extend DataSource. We also can't use `isObservable`
10
- // here, because of some internal apps.
11
- return value && typeof value.connect === 'function' && !(value instanceof ConnectableObservable);
5
+ return value && typeof value.connect === 'function' && !(value instanceof ConnectableObservable);
12
6
  }
13
7
 
14
8
  export { DataSource, isDataSource };
@@ -1 +1 @@
1
- {"version":3,"file":"_data-source-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/cdk/collections/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 {ConnectableObservable, Observable} from 'rxjs';\nimport {CollectionViewer} from './collection-viewer';\n\nexport abstract class DataSource<T> {\n /**\n * Connects a collection viewer (such as a data-table) to this data source. Note that\n * the stream provided will be accessed during change detection and should not directly change\n * values that are bound in template views.\n * @param collectionViewer The component that exposes a view over the data provided by this\n * data source.\n * @returns Observable that emits a new value when the data changes.\n */\n abstract connect(collectionViewer: CollectionViewer): Observable<readonly T[]>;\n\n /**\n * Disconnects a collection viewer (such as a data-table) from this data source. Can be used\n * to perform any clean-up or tear-down operations when a view is being destroyed.\n *\n * @param collectionViewer The component that exposes a view over the data provided by this\n * data source.\n */\n abstract disconnect(collectionViewer: CollectionViewer): void;\n}\n\n/** Checks whether an object is a data source. */\nexport function isDataSource(value: any): value is DataSource<any> {\n // Check if the value is a DataSource by observing if it has a connect function. Cannot\n // be checked as an `instanceof DataSource` since people could create their own sources\n // that match the interface, but don't extend DataSource. We also can't use `isObservable`\n // here, because of some internal apps.\n return value && typeof value.connect === 'function' && !(value instanceof ConnectableObservable);\n}\n"],"names":[],"mappings":";;MAWsB,UAAU,CAAA;AAmB/B;AAED;AACM,SAAU,YAAY,CAAC,KAAU,EAAA;;;;;AAKrC,IAAA,OAAO,KAAK,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,UAAU,IAAI,EAAE,KAAK,YAAY,qBAAqB,CAAC;AAClG;;;;"}
1
+ {"version":3,"file":"_data-source-chunk.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -1,69 +1,69 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { InjectionToken, inject, DOCUMENT, signal, EventEmitter, Injectable } from '@angular/core';
3
3
 
4
- /**
5
- * Injection token used to inject the document into Directionality.
6
- * This is used so that the value can be faked in tests.
7
- *
8
- * We can't use the real document in tests because changing the real `dir` causes geometry-based
9
- * tests in Safari to fail.
10
- *
11
- * We also can't re-provide the DOCUMENT token from platform-browser because the unit tests
12
- * themselves use things like `querySelector` in test code.
13
- *
14
- * This token is defined in a separate file from Directionality as a workaround for
15
- * https://github.com/angular/angular/issues/22559
16
- *
17
- * @docs-private
18
- */
19
4
  const DIR_DOCUMENT = new InjectionToken('cdk-dir-doc', {
20
- providedIn: 'root',
21
- factory: () => inject(DOCUMENT),
5
+ providedIn: 'root',
6
+ factory: () => inject(DOCUMENT)
22
7
  });
23
8
 
24
- /** Regex that matches locales with an RTL script. Taken from `goog.i18n.bidi.isRtlLanguage`. */
25
9
  const RTL_LOCALE_PATTERN = /^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;
26
- /** Resolves a string value to a specific direction. */
27
10
  function _resolveDirectionality(rawValue) {
28
- const value = rawValue?.toLowerCase() || '';
29
- if (value === 'auto' && typeof navigator !== 'undefined' && navigator?.language) {
30
- return RTL_LOCALE_PATTERN.test(navigator.language) ? 'rtl' : 'ltr';
31
- }
32
- return value === 'rtl' ? 'rtl' : 'ltr';
11
+ const value = rawValue?.toLowerCase() || '';
12
+ if (value === 'auto' && typeof navigator !== 'undefined' && navigator?.language) {
13
+ return RTL_LOCALE_PATTERN.test(navigator.language) ? 'rtl' : 'ltr';
14
+ }
15
+ return value === 'rtl' ? 'rtl' : 'ltr';
33
16
  }
34
- /**
35
- * The directionality (LTR / RTL) context for the application (or a subtree of it).
36
- * Exposes the current direction and a stream of direction changes.
37
- */
38
17
  class Directionality {
39
- /** The current 'ltr' or 'rtl' value. */
40
- get value() {
41
- return this.valueSignal();
42
- }
43
- /**
44
- * The current 'ltr' or 'rtl' value.
45
- */
46
- valueSignal = signal('ltr', ...(ngDevMode ? [{ debugName: "valueSignal" }] : []));
47
- /** Stream that emits whenever the 'ltr' / 'rtl' state changes. */
48
- change = new EventEmitter();
49
- constructor() {
50
- const _document = inject(DIR_DOCUMENT, { optional: true });
51
- if (_document) {
52
- const bodyDir = _document.body ? _document.body.dir : null;
53
- const htmlDir = _document.documentElement ? _document.documentElement.dir : null;
54
- this.valueSignal.set(_resolveDirectionality(bodyDir || htmlDir || 'ltr'));
55
- }
18
+ get value() {
19
+ return this.valueSignal();
20
+ }
21
+ valueSignal = signal('ltr', ...(ngDevMode ? [{
22
+ debugName: "valueSignal"
23
+ }] : []));
24
+ change = new EventEmitter();
25
+ constructor() {
26
+ const _document = inject(DIR_DOCUMENT, {
27
+ optional: true
28
+ });
29
+ if (_document) {
30
+ const bodyDir = _document.body ? _document.body.dir : null;
31
+ const htmlDir = _document.documentElement ? _document.documentElement.dir : null;
32
+ this.valueSignal.set(_resolveDirectionality(bodyDir || htmlDir || 'ltr'));
56
33
  }
57
- ngOnDestroy() {
58
- this.change.complete();
59
- }
60
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: Directionality, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
61
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: Directionality, providedIn: 'root' });
34
+ }
35
+ ngOnDestroy() {
36
+ this.change.complete();
37
+ }
38
+ static ɵfac = i0.ɵɵngDeclareFactory({
39
+ minVersion: "12.0.0",
40
+ version: "20.2.0-next.2",
41
+ ngImport: i0,
42
+ type: Directionality,
43
+ deps: [],
44
+ target: i0.ɵɵFactoryTarget.Injectable
45
+ });
46
+ static ɵprov = i0.ɵɵngDeclareInjectable({
47
+ minVersion: "12.0.0",
48
+ version: "20.2.0-next.2",
49
+ ngImport: i0,
50
+ type: Directionality,
51
+ providedIn: 'root'
52
+ });
62
53
  }
63
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: Directionality, decorators: [{
64
- type: Injectable,
65
- args: [{ providedIn: 'root' }]
66
- }], ctorParameters: () => [] });
54
+ i0.ɵɵngDeclareClassMetadata({
55
+ minVersion: "12.0.0",
56
+ version: "20.2.0-next.2",
57
+ ngImport: i0,
58
+ type: Directionality,
59
+ decorators: [{
60
+ type: Injectable,
61
+ args: [{
62
+ providedIn: 'root'
63
+ }]
64
+ }],
65
+ ctorParameters: () => []
66
+ });
67
67
 
68
68
  export { DIR_DOCUMENT, Directionality, _resolveDirectionality };
69
69
  //# sourceMappingURL=_directionality-chunk.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"_directionality-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/cdk/bidi/dir-document-token.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/cdk/bidi/directionality.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, DOCUMENT} from '@angular/core';\n\n/**\n * Injection token used to inject the document into Directionality.\n * This is used so that the value can be faked in tests.\n *\n * We can't use the real document in tests because changing the real `dir` causes geometry-based\n * tests in Safari to fail.\n *\n * We also can't re-provide the DOCUMENT token from platform-browser because the unit tests\n * themselves use things like `querySelector` in test code.\n *\n * This token is defined in a separate file from Directionality as a workaround for\n * https://github.com/angular/angular/issues/22559\n *\n * @docs-private\n */\nexport const DIR_DOCUMENT = new InjectionToken<Document>('cdk-dir-doc', {\n providedIn: 'root',\n factory: () => inject(DOCUMENT),\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 {EventEmitter, Injectable, OnDestroy, inject, signal} from '@angular/core';\nimport {DIR_DOCUMENT} from './dir-document-token';\n\nexport type Direction = 'ltr' | 'rtl';\n\n/** Regex that matches locales with an RTL script. Taken from `goog.i18n.bidi.isRtlLanguage`. */\nconst RTL_LOCALE_PATTERN =\n /^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;\n\n/** Resolves a string value to a specific direction. */\nexport function _resolveDirectionality(rawValue: string): Direction {\n const value = rawValue?.toLowerCase() || '';\n\n if (value === 'auto' && typeof navigator !== 'undefined' && navigator?.language) {\n return RTL_LOCALE_PATTERN.test(navigator.language) ? 'rtl' : 'ltr';\n }\n\n return value === 'rtl' ? 'rtl' : 'ltr';\n}\n\n/**\n * The directionality (LTR / RTL) context for the application (or a subtree of it).\n * Exposes the current direction and a stream of direction changes.\n */\n@Injectable({providedIn: 'root'})\nexport class Directionality implements OnDestroy {\n /** The current 'ltr' or 'rtl' value. */\n get value() {\n return this.valueSignal();\n }\n\n /**\n * The current 'ltr' or 'rtl' value.\n */\n readonly valueSignal = signal<Direction>('ltr');\n\n /** Stream that emits whenever the 'ltr' / 'rtl' state changes. */\n readonly change = new EventEmitter<Direction>();\n\n constructor(...args: unknown[]);\n\n constructor() {\n const _document = inject(DIR_DOCUMENT, {optional: true});\n\n if (_document) {\n const bodyDir = _document.body ? _document.body.dir : null;\n const htmlDir = _document.documentElement ? _document.documentElement.dir : null;\n this.valueSignal.set(_resolveDirectionality(bodyDir || htmlDir || 'ltr'));\n }\n }\n\n ngOnDestroy() {\n this.change.complete();\n }\n}\n"],"names":[],"mappings":";;;AAUA;;;;;;;;;;;;;;AAcG;MACU,YAAY,GAAG,IAAI,cAAc,CAAW,aAAa,EAAE;AACtE,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAAM,MAAM,CAAC,QAAQ,CAAC;AAChC,CAAA;;ACfD;AACA,MAAM,kBAAkB,GACtB,oHAAoH;AAEtH;AACM,SAAU,sBAAsB,CAAC,QAAgB,EAAA;IACrD,MAAM,KAAK,GAAG,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE;AAE3C,IAAA,IAAI,KAAK,KAAK,MAAM,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,EAAE,QAAQ,EAAE;AAC/E,QAAA,OAAO,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,KAAK,GAAG,KAAK;;IAGpE,OAAO,KAAK,KAAK,KAAK,GAAG,KAAK,GAAG,KAAK;AACxC;AAEA;;;AAGG;MAEU,cAAc,CAAA;;AAEzB,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE;;AAG3B;;AAEG;AACM,IAAA,WAAW,GAAG,MAAM,CAAY,KAAK,uDAAC;;AAGtC,IAAA,MAAM,GAAG,IAAI,YAAY,EAAa;AAI/C,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;QAExD,IAAI,SAAS,EAAE;AACb,YAAA,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI;AAC1D,YAAA,MAAM,OAAO,GAAG,SAAS,CAAC,eAAe,GAAG,SAAS,CAAC,eAAe,CAAC,GAAG,GAAG,IAAI;AAChF,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,sBAAsB,CAAC,OAAO,IAAI,OAAO,IAAI,KAAK,CAAC,CAAC;;;IAI7E,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;;8GA3Bb,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,eAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADF,MAAM,EAAA,CAAA;;kGAClB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;;;"}
1
+ {"version":3,"file":"_directionality-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/cdk/bidi/directionality.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 {EventEmitter, Injectable, OnDestroy, inject, signal} from '@angular/core';\nimport {DIR_DOCUMENT} from './dir-document-token';\n\nexport type Direction = 'ltr' | 'rtl';\n\n/** Regex that matches locales with an RTL script. Taken from `goog.i18n.bidi.isRtlLanguage`. */\nconst RTL_LOCALE_PATTERN =\n /^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;\n\n/** Resolves a string value to a specific direction. */\nexport function _resolveDirectionality(rawValue: string): Direction {\n const value = rawValue?.toLowerCase() || '';\n\n if (value === 'auto' && typeof navigator !== 'undefined' && navigator?.language) {\n return RTL_LOCALE_PATTERN.test(navigator.language) ? 'rtl' : 'ltr';\n }\n\n return value === 'rtl' ? 'rtl' : 'ltr';\n}\n\n/**\n * The directionality (LTR / RTL) context for the application (or a subtree of it).\n * Exposes the current direction and a stream of direction changes.\n */\n@Injectable({providedIn: 'root'})\nexport class Directionality implements OnDestroy {\n /** The current 'ltr' or 'rtl' value. */\n get value() {\n return this.valueSignal();\n }\n\n /**\n * The current 'ltr' or 'rtl' value.\n */\n readonly valueSignal = signal<Direction>('ltr');\n\n /** Stream that emits whenever the 'ltr' / 'rtl' state changes. */\n readonly change = new EventEmitter<Direction>();\n\n constructor(...args: unknown[]);\n\n constructor() {\n const _document = inject(DIR_DOCUMENT, {optional: true});\n\n if (_document) {\n const bodyDir = _document.body ? _document.body.dir : null;\n const htmlDir = _document.documentElement ? _document.documentElement.dir : null;\n this.valueSignal.set(_resolveDirectionality(bodyDir || htmlDir || 'ltr'));\n }\n }\n\n ngOnDestroy() {\n this.change.complete();\n }\n}\n"],"names":["_resolveDirectionality","rawValue","value","toLowerCase","navigator","language","valueSignal","debugName","EventEmitter","constructor"],"mappings":";;;;;;;;;AAkBM,SAAAA,uBAAAC,QAAA,EAAA;AAGJ,EAAA,MAAIC,KAAA,GAAAD,QAAgB,EAAAE,WAAyB,EAAA,IAAA,EAAA;EAC3C,IAAAD,KAAA,+CAAiD,IAAAE,SAAA,EAAAC,QAAA,EAAA;;AAMrD;;AAKA;;;AAgBE,IAAA,OAAA,IAAA,CAAAC,WAAA,EAAA;;2CAOE,GAAA,CAAA;IAAAC,SAAA,EAAA;AAAA,GAAA,CAAA,GAAA,EAAA,CAAA,CAAA;AAGF,EAAA,MAAA,GAAA,IAAWC,YAAA,EAAA;AACTC,EAAAA,WAAAA,GAAA;;;;;;;oEA5B4B,IAAA,KAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}