@angular/core 18.2.7 → 18.2.8

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 (30) hide show
  1. package/esm2022/src/linker/view_ref.mjs +1 -1
  2. package/esm2022/src/platform/bootstrap.mjs +8 -4
  3. package/esm2022/src/platform/platform_ref.mjs +6 -2
  4. package/esm2022/src/render3/after_render/manager.mjs +4 -1
  5. package/esm2022/src/render3/component_ref.mjs +1 -1
  6. package/esm2022/src/render3/view_ref.mjs +1 -1
  7. package/esm2022/src/version.mjs +1 -1
  8. package/esm2022/testing/src/application_error_handler.mjs +3 -3
  9. package/esm2022/testing/src/component_fixture.mjs +1 -1
  10. package/esm2022/testing/src/logger.mjs +3 -3
  11. package/fesm2022/core.mjs +18 -7
  12. package/fesm2022/core.mjs.map +1 -1
  13. package/fesm2022/primitives/event-dispatch.mjs +1 -1
  14. package/fesm2022/primitives/signals.mjs +1 -1
  15. package/fesm2022/rxjs-interop.mjs +1 -1
  16. package/fesm2022/testing.mjs +4 -4
  17. package/fesm2022/testing.mjs.map +1 -1
  18. package/index.d.ts +2 -12
  19. package/package.json +1 -1
  20. package/primitives/event-dispatch/index.d.ts +1 -1
  21. package/primitives/signals/index.d.ts +1 -1
  22. package/rxjs-interop/index.d.ts +1 -1
  23. package/schematics/migrations/after-render-phase/bundle.js +64 -22
  24. package/schematics/migrations/http-providers/bundle.js +64 -22
  25. package/schematics/migrations/invalid-two-way-bindings/bundle.js +64 -22
  26. package/schematics/ng-generate/control-flow-migration/bundle.js +64 -22
  27. package/schematics/ng-generate/inject-migration/bundle.js +64 -22
  28. package/schematics/ng-generate/route-lazy-loading/bundle.js +64 -22
  29. package/schematics/ng-generate/standalone-migration/bundle.js +79 -34
  30. package/testing/index.d.ts +3 -1
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v18.2.7
2
+ * @license Angular v18.2.8
3
3
  * (c) 2010-2024 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -11983,16 +11983,6 @@ export declare abstract class ViewRef extends ChangeDetectorRef {
11983
11983
  abstract onDestroy(callback: Function): void;
11984
11984
  }
11985
11985
 
11986
- /**
11987
- * Interface for tracking root `ViewRef`s in `ApplicationRef`.
11988
- *
11989
- * NOTE: Importing `ApplicationRef` here directly creates circular dependency, which is why we have
11990
- * a subset of the `ApplicationRef` interface `ViewRefTracker` here.
11991
- */
11992
- declare interface ViewRefTracker {
11993
- detachView(viewRef: ViewRef): void;
11994
- }
11995
-
11996
11986
  /**
11997
11987
  * A `Signal` with a value that can be mutated via a setter interface.
11998
11988
  */
@@ -14260,7 +14250,7 @@ export declare class ɵViewRef<T> implements EmbeddedViewRef<T>, ChangeDetectorR
14260
14250
  checkNoChanges(): void;
14261
14251
  attachToViewContainerRef(): void;
14262
14252
  detachFromAppRef(): void;
14263
- attachToAppRef(appRef: ViewRefTracker): void;
14253
+ attachToAppRef(appRef: ApplicationRef): void;
14264
14254
  }
14265
14255
 
14266
14256
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular/core",
3
- "version": "18.2.7",
3
+ "version": "18.2.8",
4
4
  "description": "Angular - the core framework",
5
5
  "author": "angular",
6
6
  "license": "MIT",
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v18.2.7
2
+ * @license Angular v18.2.8
3
3
  * (c) 2010-2024 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v18.2.7
2
+ * @license Angular v18.2.8
3
3
  * (c) 2010-2024 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v18.2.7
2
+ * @license Angular v18.2.8
3
3
  * (c) 2010-2024 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -5889,7 +5889,7 @@ var ShadowCss = class {
5889
5889
  });
5890
5890
  }
5891
5891
  _convertColonHostContext(cssText) {
5892
- return cssText.replace(_cssColonHostContextReGlobal, (selectorText) => {
5892
+ return cssText.replace(_cssColonHostContextReGlobal, (selectorText, pseudoPrefix) => {
5893
5893
  var _a2;
5894
5894
  const contextSelectorGroups = [[]];
5895
5895
  let match;
@@ -5904,7 +5904,7 @@ var ShadowCss = class {
5904
5904
  }
5905
5905
  selectorText = match[2];
5906
5906
  }
5907
- return contextSelectorGroups.map((contextSelectors) => combineHostContextSelectors(contextSelectors, selectorText)).join(", ");
5907
+ return contextSelectorGroups.map((contextSelectors) => _combineHostContextSelectors(contextSelectors, selectorText, pseudoPrefix)).join(", ");
5908
5908
  });
5909
5909
  }
5910
5910
  _convertShadowDOMSelectors(cssText) {
@@ -5915,7 +5915,12 @@ var ShadowCss = class {
5915
5915
  let selector = rule.selector;
5916
5916
  let content = rule.content;
5917
5917
  if (rule.selector[0] !== "@") {
5918
- selector = this._scopeSelector(rule.selector, scopeSelector, hostSelector);
5918
+ selector = this._scopeSelector({
5919
+ selector,
5920
+ scopeSelector,
5921
+ hostSelector,
5922
+ isParentSelector: true
5923
+ });
5919
5924
  } else if (scopedAtRuleIdentifiers.some((atRule) => rule.selector.startsWith(atRule))) {
5920
5925
  content = this._scopeSelectors(rule.content, scopeSelector, hostSelector);
5921
5926
  } else if (rule.selector.startsWith("@font-face") || rule.selector.startsWith("@page")) {
@@ -5930,12 +5935,18 @@ var ShadowCss = class {
5930
5935
  return new CssRule(selector, rule.content);
5931
5936
  });
5932
5937
  }
5933
- _scopeSelector(selector, scopeSelector, hostSelector) {
5934
- return selector.split(/ ?, ?/).map((part) => part.split(_shadowDeepSelectors)).map((deepParts) => {
5938
+ _scopeSelector({ selector, scopeSelector, hostSelector, isParentSelector = false }) {
5939
+ const selectorSplitRe = / ?,(?!(?:[^)(]*(?:\([^)(]*(?:\([^)(]*(?:\([^)(]*\)[^)(]*)*\)[^)(]*)*\)[^)(]*)*\))) ?/;
5940
+ return selector.split(selectorSplitRe).map((part) => part.split(_shadowDeepSelectors)).map((deepParts) => {
5935
5941
  const [shallowPart, ...otherParts] = deepParts;
5936
5942
  const applyScope = (shallowPart2) => {
5937
5943
  if (this._selectorNeedsScoping(shallowPart2, scopeSelector)) {
5938
- return this._applySelectorScope(shallowPart2, scopeSelector, hostSelector);
5944
+ return this._applySelectorScope({
5945
+ selector: shallowPart2,
5946
+ scopeSelector,
5947
+ hostSelector,
5948
+ isParentSelector
5949
+ });
5939
5950
  } else {
5940
5951
  return shallowPart2;
5941
5952
  }
@@ -5957,15 +5968,15 @@ var ShadowCss = class {
5957
5968
  _polyfillHostRe.lastIndex = 0;
5958
5969
  if (_polyfillHostRe.test(selector)) {
5959
5970
  const replaceBy = `[${hostSelector}]`;
5960
- return selector.replace(_polyfillHostNoCombinatorRe, (hnc, selector2) => {
5961
- return selector2.replace(/([^:]*)(:*)(.*)/, (_, before, colon, after) => {
5971
+ return selector.replace(_polyfillHostNoCombinatorReGlobal, (_hnc, selector2) => {
5972
+ return selector2.replace(/([^:\)]*)(:*)(.*)/, (_, before, colon, after) => {
5962
5973
  return before + replaceBy + colon + after;
5963
5974
  });
5964
5975
  }).replace(_polyfillHostRe, replaceBy + " ");
5965
5976
  }
5966
5977
  return scopeSelector + " " + selector;
5967
5978
  }
5968
- _applySelectorScope(selector, scopeSelector, hostSelector) {
5979
+ _applySelectorScope({ selector, scopeSelector, hostSelector, isParentSelector }) {
5969
5980
  var _a2;
5970
5981
  const isRe = /\[is=([^\]]*)\]/g;
5971
5982
  scopeSelector = scopeSelector.replace(isRe, (_, ...parts) => parts[0]);
@@ -5977,6 +5988,10 @@ var ShadowCss = class {
5977
5988
  }
5978
5989
  if (p.includes(_polyfillHostNoCombinator)) {
5979
5990
  scopedP = this._applySimpleSelectorScope(p, scopeSelector, hostSelector);
5991
+ if (_polyfillHostNoCombinatorWithinPseudoFunction.test(p)) {
5992
+ const [_, before, colon, after] = scopedP.match(/([^:]*)(:*)(.*)/);
5993
+ scopedP = before + attrName + colon + after;
5994
+ }
5980
5995
  } else {
5981
5996
  const t = p.replace(_polyfillHostRe, "");
5982
5997
  if (t.length > 0) {
@@ -5988,29 +6003,52 @@ var ShadowCss = class {
5988
6003
  }
5989
6004
  return scopedP;
5990
6005
  };
5991
- const safeContent = new SafeSelector(selector);
5992
- selector = safeContent.content();
6006
+ const _pseudoFunctionAwareScopeSelectorPart = (selectorPart) => {
6007
+ let scopedPart = "";
6008
+ const cssPrefixWithPseudoSelectorFunctionMatch = selectorPart.match(_cssPrefixWithPseudoSelectorFunction);
6009
+ if (cssPrefixWithPseudoSelectorFunctionMatch) {
6010
+ const [cssPseudoSelectorFunction] = cssPrefixWithPseudoSelectorFunctionMatch;
6011
+ const selectorToScope = selectorPart.slice(cssPseudoSelectorFunction.length, -1);
6012
+ if (selectorToScope.includes(_polyfillHostNoCombinator)) {
6013
+ this._shouldScopeIndicator = true;
6014
+ }
6015
+ const scopedInnerPart = this._scopeSelector({
6016
+ selector: selectorToScope,
6017
+ scopeSelector,
6018
+ hostSelector
6019
+ });
6020
+ scopedPart = `${cssPseudoSelectorFunction}${scopedInnerPart})`;
6021
+ } else {
6022
+ this._shouldScopeIndicator = this._shouldScopeIndicator || selectorPart.includes(_polyfillHostNoCombinator);
6023
+ scopedPart = this._shouldScopeIndicator ? _scopeSelectorPart(selectorPart) : selectorPart;
6024
+ }
6025
+ return scopedPart;
6026
+ };
6027
+ if (isParentSelector) {
6028
+ this._safeSelector = new SafeSelector(selector);
6029
+ selector = this._safeSelector.content();
6030
+ }
5993
6031
  let scopedSelector = "";
5994
6032
  let startIndex = 0;
5995
6033
  let res;
5996
- const sep = /( |>|\+|~(?!=))\s*/g;
6034
+ const sep = /( |>|\+|~(?!=))(?!([^)(]*(?:\([^)(]*(?:\([^)(]*(?:\([^)(]*\)[^)(]*)*\)[^)(]*)*\)[^)(]*)*\)))\s*/g;
5997
6035
  const hasHost = selector.includes(_polyfillHostNoCombinator);
5998
- let shouldScope = !hasHost;
6036
+ if (isParentSelector || this._shouldScopeIndicator) {
6037
+ this._shouldScopeIndicator = !hasHost;
6038
+ }
5999
6039
  while ((res = sep.exec(selector)) !== null) {
6000
6040
  const separator = res[1];
6001
6041
  const part2 = selector.slice(startIndex, res.index);
6002
6042
  if (part2.match(/__esc-ph-(\d+)__/) && ((_a2 = selector[res.index + 1]) == null ? void 0 : _a2.match(/[a-fA-F\d]/))) {
6003
6043
  continue;
6004
6044
  }
6005
- shouldScope = shouldScope || part2.includes(_polyfillHostNoCombinator);
6006
- const scopedPart = shouldScope ? _scopeSelectorPart(part2) : part2;
6045
+ const scopedPart = _pseudoFunctionAwareScopeSelectorPart(part2);
6007
6046
  scopedSelector += `${scopedPart} ${separator} `;
6008
6047
  startIndex = sep.lastIndex;
6009
6048
  }
6010
6049
  const part = selector.substring(startIndex);
6011
- shouldScope = shouldScope || part.includes(_polyfillHostNoCombinator);
6012
- scopedSelector += shouldScope ? _scopeSelectorPart(part) : part;
6013
- return safeContent.restore(scopedSelector);
6050
+ scopedSelector += _pseudoFunctionAwareScopeSelectorPart(part);
6051
+ return this._safeSelector.restore(scopedSelector);
6014
6052
  }
6015
6053
  _insertPolyfillHostInCssText(selector) {
6016
6054
  return selector.replace(_colonHostContextRe, _polyfillHostContext).replace(_colonHostRe, _polyfillHost);
@@ -6049,6 +6087,8 @@ var SafeSelector = class {
6049
6087
  });
6050
6088
  }
6051
6089
  };
6090
+ var _cssScopedPseudoFunctionPrefix = "(:(where|is)\\()?";
6091
+ var _cssPrefixWithPseudoSelectorFunction = /^:(where|is)\(/i;
6052
6092
  var _cssContentNextSelectorRe = /polyfill-next-selector[^}]*content:[\s]*?(['"])(.*?)\1[;\s]*}([^{]*?){/gim;
6053
6093
  var _cssContentRuleRe = /(polyfill-rule)[^}]*(content:[\s]*(['"])(.*?)\3)[;\s]*[^}]*}/gim;
6054
6094
  var _cssContentUnscopedRuleRe = /(polyfill-unscoped-rule)[^}]*(content:[\s]*(['"])(.*?)\3)[;\s]*[^}]*}/gim;
@@ -6056,10 +6096,12 @@ var _polyfillHost = "-shadowcsshost";
6056
6096
  var _polyfillHostContext = "-shadowcsscontext";
6057
6097
  var _parenSuffix = "(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))?([^,{]*)";
6058
6098
  var _cssColonHostRe = new RegExp(_polyfillHost + _parenSuffix, "gim");
6059
- var _cssColonHostContextReGlobal = new RegExp(_polyfillHostContext + _parenSuffix, "gim");
6099
+ var _cssColonHostContextReGlobal = new RegExp(_cssScopedPseudoFunctionPrefix + "(" + _polyfillHostContext + _parenSuffix + ")", "gim");
6060
6100
  var _cssColonHostContextRe = new RegExp(_polyfillHostContext + _parenSuffix, "im");
6061
6101
  var _polyfillHostNoCombinator = _polyfillHost + "-no-combinator";
6102
+ var _polyfillHostNoCombinatorWithinPseudoFunction = new RegExp(`:.*\\(.*${_polyfillHostNoCombinator}.*\\)`);
6062
6103
  var _polyfillHostNoCombinatorRe = /-shadowcsshost-no-combinator([^\s]*)/;
6104
+ var _polyfillHostNoCombinatorReGlobal = new RegExp(_polyfillHostNoCombinatorRe, "g");
6063
6105
  var _shadowDOMSelectorsRe = [
6064
6106
  /::shadow/g,
6065
6107
  /::content/g,
@@ -6194,7 +6236,7 @@ function unescapeInStrings(input) {
6194
6236
  function unescapeQuotes(str, isQuoted) {
6195
6237
  return !isQuoted ? str : str.replace(/((?:^|[^\\])(?:\\\\)*)\\(?=['"])/g, "$1");
6196
6238
  }
6197
- function combineHostContextSelectors(contextSelectors, otherSelectors) {
6239
+ function _combineHostContextSelectors(contextSelectors, otherSelectors, pseudoPrefix = "") {
6198
6240
  const hostMarker = _polyfillHostNoCombinator;
6199
6241
  _polyfillHostRe.lastIndex = 0;
6200
6242
  const otherSelectorsHasHost = _polyfillHostRe.test(otherSelectors);
@@ -6212,7 +6254,7 @@ function combineHostContextSelectors(contextSelectors, otherSelectors) {
6212
6254
  combined[i] = contextSelector + previousSelectors;
6213
6255
  }
6214
6256
  }
6215
- return combined.map((s) => otherSelectorsHasHost ? `${s}${otherSelectors}` : `${s}${hostMarker}${otherSelectors}, ${s} ${hostMarker}${otherSelectors}`).join(",");
6257
+ return combined.map((s) => otherSelectorsHasHost ? `${pseudoPrefix}${s}${otherSelectors}` : `${pseudoPrefix}${s}${hostMarker}${otherSelectors}, ${pseudoPrefix}${s} ${hostMarker}${otherSelectors}`).join(",");
6216
6258
  }
6217
6259
  function repeatGroups(groups, multiples) {
6218
6260
  const length = groups.length;
@@ -23451,7 +23493,7 @@ function publishFacade(global) {
23451
23493
  }
23452
23494
 
23453
23495
  // bazel-out/k8-fastbuild/bin/packages/compiler/src/version.mjs
23454
- var VERSION2 = new Version("18.2.7");
23496
+ var VERSION2 = new Version("18.2.8");
23455
23497
 
23456
23498
  // bazel-out/k8-fastbuild/bin/packages/compiler/src/i18n/extractor_merger.mjs
23457
23499
  var _VisitorMode;
@@ -5889,7 +5889,7 @@ var ShadowCss = class {
5889
5889
  });
5890
5890
  }
5891
5891
  _convertColonHostContext(cssText) {
5892
- return cssText.replace(_cssColonHostContextReGlobal, (selectorText) => {
5892
+ return cssText.replace(_cssColonHostContextReGlobal, (selectorText, pseudoPrefix) => {
5893
5893
  var _a2;
5894
5894
  const contextSelectorGroups = [[]];
5895
5895
  let match;
@@ -5904,7 +5904,7 @@ var ShadowCss = class {
5904
5904
  }
5905
5905
  selectorText = match[2];
5906
5906
  }
5907
- return contextSelectorGroups.map((contextSelectors) => combineHostContextSelectors(contextSelectors, selectorText)).join(", ");
5907
+ return contextSelectorGroups.map((contextSelectors) => _combineHostContextSelectors(contextSelectors, selectorText, pseudoPrefix)).join(", ");
5908
5908
  });
5909
5909
  }
5910
5910
  _convertShadowDOMSelectors(cssText) {
@@ -5915,7 +5915,12 @@ var ShadowCss = class {
5915
5915
  let selector = rule.selector;
5916
5916
  let content = rule.content;
5917
5917
  if (rule.selector[0] !== "@") {
5918
- selector = this._scopeSelector(rule.selector, scopeSelector, hostSelector);
5918
+ selector = this._scopeSelector({
5919
+ selector,
5920
+ scopeSelector,
5921
+ hostSelector,
5922
+ isParentSelector: true
5923
+ });
5919
5924
  } else if (scopedAtRuleIdentifiers.some((atRule) => rule.selector.startsWith(atRule))) {
5920
5925
  content = this._scopeSelectors(rule.content, scopeSelector, hostSelector);
5921
5926
  } else if (rule.selector.startsWith("@font-face") || rule.selector.startsWith("@page")) {
@@ -5930,12 +5935,18 @@ var ShadowCss = class {
5930
5935
  return new CssRule(selector, rule.content);
5931
5936
  });
5932
5937
  }
5933
- _scopeSelector(selector, scopeSelector, hostSelector) {
5934
- return selector.split(/ ?, ?/).map((part) => part.split(_shadowDeepSelectors)).map((deepParts) => {
5938
+ _scopeSelector({ selector, scopeSelector, hostSelector, isParentSelector = false }) {
5939
+ const selectorSplitRe = / ?,(?!(?:[^)(]*(?:\([^)(]*(?:\([^)(]*(?:\([^)(]*\)[^)(]*)*\)[^)(]*)*\)[^)(]*)*\))) ?/;
5940
+ return selector.split(selectorSplitRe).map((part) => part.split(_shadowDeepSelectors)).map((deepParts) => {
5935
5941
  const [shallowPart, ...otherParts] = deepParts;
5936
5942
  const applyScope = (shallowPart2) => {
5937
5943
  if (this._selectorNeedsScoping(shallowPart2, scopeSelector)) {
5938
- return this._applySelectorScope(shallowPart2, scopeSelector, hostSelector);
5944
+ return this._applySelectorScope({
5945
+ selector: shallowPart2,
5946
+ scopeSelector,
5947
+ hostSelector,
5948
+ isParentSelector
5949
+ });
5939
5950
  } else {
5940
5951
  return shallowPart2;
5941
5952
  }
@@ -5957,15 +5968,15 @@ var ShadowCss = class {
5957
5968
  _polyfillHostRe.lastIndex = 0;
5958
5969
  if (_polyfillHostRe.test(selector)) {
5959
5970
  const replaceBy = `[${hostSelector}]`;
5960
- return selector.replace(_polyfillHostNoCombinatorRe, (hnc, selector2) => {
5961
- return selector2.replace(/([^:]*)(:*)(.*)/, (_, before, colon, after) => {
5971
+ return selector.replace(_polyfillHostNoCombinatorReGlobal, (_hnc, selector2) => {
5972
+ return selector2.replace(/([^:\)]*)(:*)(.*)/, (_, before, colon, after) => {
5962
5973
  return before + replaceBy + colon + after;
5963
5974
  });
5964
5975
  }).replace(_polyfillHostRe, replaceBy + " ");
5965
5976
  }
5966
5977
  return scopeSelector + " " + selector;
5967
5978
  }
5968
- _applySelectorScope(selector, scopeSelector, hostSelector) {
5979
+ _applySelectorScope({ selector, scopeSelector, hostSelector, isParentSelector }) {
5969
5980
  var _a2;
5970
5981
  const isRe = /\[is=([^\]]*)\]/g;
5971
5982
  scopeSelector = scopeSelector.replace(isRe, (_, ...parts) => parts[0]);
@@ -5977,6 +5988,10 @@ var ShadowCss = class {
5977
5988
  }
5978
5989
  if (p.includes(_polyfillHostNoCombinator)) {
5979
5990
  scopedP = this._applySimpleSelectorScope(p, scopeSelector, hostSelector);
5991
+ if (_polyfillHostNoCombinatorWithinPseudoFunction.test(p)) {
5992
+ const [_, before, colon, after] = scopedP.match(/([^:]*)(:*)(.*)/);
5993
+ scopedP = before + attrName + colon + after;
5994
+ }
5980
5995
  } else {
5981
5996
  const t = p.replace(_polyfillHostRe, "");
5982
5997
  if (t.length > 0) {
@@ -5988,29 +6003,52 @@ var ShadowCss = class {
5988
6003
  }
5989
6004
  return scopedP;
5990
6005
  };
5991
- const safeContent = new SafeSelector(selector);
5992
- selector = safeContent.content();
6006
+ const _pseudoFunctionAwareScopeSelectorPart = (selectorPart) => {
6007
+ let scopedPart = "";
6008
+ const cssPrefixWithPseudoSelectorFunctionMatch = selectorPart.match(_cssPrefixWithPseudoSelectorFunction);
6009
+ if (cssPrefixWithPseudoSelectorFunctionMatch) {
6010
+ const [cssPseudoSelectorFunction] = cssPrefixWithPseudoSelectorFunctionMatch;
6011
+ const selectorToScope = selectorPart.slice(cssPseudoSelectorFunction.length, -1);
6012
+ if (selectorToScope.includes(_polyfillHostNoCombinator)) {
6013
+ this._shouldScopeIndicator = true;
6014
+ }
6015
+ const scopedInnerPart = this._scopeSelector({
6016
+ selector: selectorToScope,
6017
+ scopeSelector,
6018
+ hostSelector
6019
+ });
6020
+ scopedPart = `${cssPseudoSelectorFunction}${scopedInnerPart})`;
6021
+ } else {
6022
+ this._shouldScopeIndicator = this._shouldScopeIndicator || selectorPart.includes(_polyfillHostNoCombinator);
6023
+ scopedPart = this._shouldScopeIndicator ? _scopeSelectorPart(selectorPart) : selectorPart;
6024
+ }
6025
+ return scopedPart;
6026
+ };
6027
+ if (isParentSelector) {
6028
+ this._safeSelector = new SafeSelector(selector);
6029
+ selector = this._safeSelector.content();
6030
+ }
5993
6031
  let scopedSelector = "";
5994
6032
  let startIndex = 0;
5995
6033
  let res;
5996
- const sep = /( |>|\+|~(?!=))\s*/g;
6034
+ const sep = /( |>|\+|~(?!=))(?!([^)(]*(?:\([^)(]*(?:\([^)(]*(?:\([^)(]*\)[^)(]*)*\)[^)(]*)*\)[^)(]*)*\)))\s*/g;
5997
6035
  const hasHost = selector.includes(_polyfillHostNoCombinator);
5998
- let shouldScope = !hasHost;
6036
+ if (isParentSelector || this._shouldScopeIndicator) {
6037
+ this._shouldScopeIndicator = !hasHost;
6038
+ }
5999
6039
  while ((res = sep.exec(selector)) !== null) {
6000
6040
  const separator = res[1];
6001
6041
  const part2 = selector.slice(startIndex, res.index);
6002
6042
  if (part2.match(/__esc-ph-(\d+)__/) && ((_a2 = selector[res.index + 1]) == null ? void 0 : _a2.match(/[a-fA-F\d]/))) {
6003
6043
  continue;
6004
6044
  }
6005
- shouldScope = shouldScope || part2.includes(_polyfillHostNoCombinator);
6006
- const scopedPart = shouldScope ? _scopeSelectorPart(part2) : part2;
6045
+ const scopedPart = _pseudoFunctionAwareScopeSelectorPart(part2);
6007
6046
  scopedSelector += `${scopedPart} ${separator} `;
6008
6047
  startIndex = sep.lastIndex;
6009
6048
  }
6010
6049
  const part = selector.substring(startIndex);
6011
- shouldScope = shouldScope || part.includes(_polyfillHostNoCombinator);
6012
- scopedSelector += shouldScope ? _scopeSelectorPart(part) : part;
6013
- return safeContent.restore(scopedSelector);
6050
+ scopedSelector += _pseudoFunctionAwareScopeSelectorPart(part);
6051
+ return this._safeSelector.restore(scopedSelector);
6014
6052
  }
6015
6053
  _insertPolyfillHostInCssText(selector) {
6016
6054
  return selector.replace(_colonHostContextRe, _polyfillHostContext).replace(_colonHostRe, _polyfillHost);
@@ -6049,6 +6087,8 @@ var SafeSelector = class {
6049
6087
  });
6050
6088
  }
6051
6089
  };
6090
+ var _cssScopedPseudoFunctionPrefix = "(:(where|is)\\()?";
6091
+ var _cssPrefixWithPseudoSelectorFunction = /^:(where|is)\(/i;
6052
6092
  var _cssContentNextSelectorRe = /polyfill-next-selector[^}]*content:[\s]*?(['"])(.*?)\1[;\s]*}([^{]*?){/gim;
6053
6093
  var _cssContentRuleRe = /(polyfill-rule)[^}]*(content:[\s]*(['"])(.*?)\3)[;\s]*[^}]*}/gim;
6054
6094
  var _cssContentUnscopedRuleRe = /(polyfill-unscoped-rule)[^}]*(content:[\s]*(['"])(.*?)\3)[;\s]*[^}]*}/gim;
@@ -6056,10 +6096,12 @@ var _polyfillHost = "-shadowcsshost";
6056
6096
  var _polyfillHostContext = "-shadowcsscontext";
6057
6097
  var _parenSuffix = "(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))?([^,{]*)";
6058
6098
  var _cssColonHostRe = new RegExp(_polyfillHost + _parenSuffix, "gim");
6059
- var _cssColonHostContextReGlobal = new RegExp(_polyfillHostContext + _parenSuffix, "gim");
6099
+ var _cssColonHostContextReGlobal = new RegExp(_cssScopedPseudoFunctionPrefix + "(" + _polyfillHostContext + _parenSuffix + ")", "gim");
6060
6100
  var _cssColonHostContextRe = new RegExp(_polyfillHostContext + _parenSuffix, "im");
6061
6101
  var _polyfillHostNoCombinator = _polyfillHost + "-no-combinator";
6102
+ var _polyfillHostNoCombinatorWithinPseudoFunction = new RegExp(`:.*\\(.*${_polyfillHostNoCombinator}.*\\)`);
6062
6103
  var _polyfillHostNoCombinatorRe = /-shadowcsshost-no-combinator([^\s]*)/;
6104
+ var _polyfillHostNoCombinatorReGlobal = new RegExp(_polyfillHostNoCombinatorRe, "g");
6063
6105
  var _shadowDOMSelectorsRe = [
6064
6106
  /::shadow/g,
6065
6107
  /::content/g,
@@ -6194,7 +6236,7 @@ function unescapeInStrings(input) {
6194
6236
  function unescapeQuotes(str, isQuoted) {
6195
6237
  return !isQuoted ? str : str.replace(/((?:^|[^\\])(?:\\\\)*)\\(?=['"])/g, "$1");
6196
6238
  }
6197
- function combineHostContextSelectors(contextSelectors, otherSelectors) {
6239
+ function _combineHostContextSelectors(contextSelectors, otherSelectors, pseudoPrefix = "") {
6198
6240
  const hostMarker = _polyfillHostNoCombinator;
6199
6241
  _polyfillHostRe.lastIndex = 0;
6200
6242
  const otherSelectorsHasHost = _polyfillHostRe.test(otherSelectors);
@@ -6212,7 +6254,7 @@ function combineHostContextSelectors(contextSelectors, otherSelectors) {
6212
6254
  combined[i] = contextSelector + previousSelectors;
6213
6255
  }
6214
6256
  }
6215
- return combined.map((s) => otherSelectorsHasHost ? `${s}${otherSelectors}` : `${s}${hostMarker}${otherSelectors}, ${s} ${hostMarker}${otherSelectors}`).join(",");
6257
+ return combined.map((s) => otherSelectorsHasHost ? `${pseudoPrefix}${s}${otherSelectors}` : `${pseudoPrefix}${s}${hostMarker}${otherSelectors}, ${pseudoPrefix}${s} ${hostMarker}${otherSelectors}`).join(",");
6216
6258
  }
6217
6259
  function repeatGroups(groups, multiples) {
6218
6260
  const length = groups.length;
@@ -23451,7 +23493,7 @@ function publishFacade(global) {
23451
23493
  }
23452
23494
 
23453
23495
  // bazel-out/k8-fastbuild/bin/packages/compiler/src/version.mjs
23454
- var VERSION2 = new Version("18.2.7");
23496
+ var VERSION2 = new Version("18.2.8");
23455
23497
 
23456
23498
  // bazel-out/k8-fastbuild/bin/packages/compiler/src/i18n/extractor_merger.mjs
23457
23499
  var _VisitorMode;
@@ -6010,7 +6010,7 @@ var ShadowCss = class {
6010
6010
  });
6011
6011
  }
6012
6012
  _convertColonHostContext(cssText) {
6013
- return cssText.replace(_cssColonHostContextReGlobal, (selectorText) => {
6013
+ return cssText.replace(_cssColonHostContextReGlobal, (selectorText, pseudoPrefix) => {
6014
6014
  var _a2;
6015
6015
  const contextSelectorGroups = [[]];
6016
6016
  let match;
@@ -6025,7 +6025,7 @@ var ShadowCss = class {
6025
6025
  }
6026
6026
  selectorText = match[2];
6027
6027
  }
6028
- return contextSelectorGroups.map((contextSelectors) => combineHostContextSelectors(contextSelectors, selectorText)).join(", ");
6028
+ return contextSelectorGroups.map((contextSelectors) => _combineHostContextSelectors(contextSelectors, selectorText, pseudoPrefix)).join(", ");
6029
6029
  });
6030
6030
  }
6031
6031
  _convertShadowDOMSelectors(cssText) {
@@ -6036,7 +6036,12 @@ var ShadowCss = class {
6036
6036
  let selector = rule.selector;
6037
6037
  let content = rule.content;
6038
6038
  if (rule.selector[0] !== "@") {
6039
- selector = this._scopeSelector(rule.selector, scopeSelector, hostSelector);
6039
+ selector = this._scopeSelector({
6040
+ selector,
6041
+ scopeSelector,
6042
+ hostSelector,
6043
+ isParentSelector: true
6044
+ });
6040
6045
  } else if (scopedAtRuleIdentifiers.some((atRule) => rule.selector.startsWith(atRule))) {
6041
6046
  content = this._scopeSelectors(rule.content, scopeSelector, hostSelector);
6042
6047
  } else if (rule.selector.startsWith("@font-face") || rule.selector.startsWith("@page")) {
@@ -6051,12 +6056,18 @@ var ShadowCss = class {
6051
6056
  return new CssRule(selector, rule.content);
6052
6057
  });
6053
6058
  }
6054
- _scopeSelector(selector, scopeSelector, hostSelector) {
6055
- return selector.split(/ ?, ?/).map((part) => part.split(_shadowDeepSelectors)).map((deepParts) => {
6059
+ _scopeSelector({ selector, scopeSelector, hostSelector, isParentSelector = false }) {
6060
+ const selectorSplitRe = / ?,(?!(?:[^)(]*(?:\([^)(]*(?:\([^)(]*(?:\([^)(]*\)[^)(]*)*\)[^)(]*)*\)[^)(]*)*\))) ?/;
6061
+ return selector.split(selectorSplitRe).map((part) => part.split(_shadowDeepSelectors)).map((deepParts) => {
6056
6062
  const [shallowPart, ...otherParts] = deepParts;
6057
6063
  const applyScope = (shallowPart2) => {
6058
6064
  if (this._selectorNeedsScoping(shallowPart2, scopeSelector)) {
6059
- return this._applySelectorScope(shallowPart2, scopeSelector, hostSelector);
6065
+ return this._applySelectorScope({
6066
+ selector: shallowPart2,
6067
+ scopeSelector,
6068
+ hostSelector,
6069
+ isParentSelector
6070
+ });
6060
6071
  } else {
6061
6072
  return shallowPart2;
6062
6073
  }
@@ -6078,15 +6089,15 @@ var ShadowCss = class {
6078
6089
  _polyfillHostRe.lastIndex = 0;
6079
6090
  if (_polyfillHostRe.test(selector)) {
6080
6091
  const replaceBy = `[${hostSelector}]`;
6081
- return selector.replace(_polyfillHostNoCombinatorRe, (hnc, selector2) => {
6082
- return selector2.replace(/([^:]*)(:*)(.*)/, (_, before, colon, after) => {
6092
+ return selector.replace(_polyfillHostNoCombinatorReGlobal, (_hnc, selector2) => {
6093
+ return selector2.replace(/([^:\)]*)(:*)(.*)/, (_, before, colon, after) => {
6083
6094
  return before + replaceBy + colon + after;
6084
6095
  });
6085
6096
  }).replace(_polyfillHostRe, replaceBy + " ");
6086
6097
  }
6087
6098
  return scopeSelector + " " + selector;
6088
6099
  }
6089
- _applySelectorScope(selector, scopeSelector, hostSelector) {
6100
+ _applySelectorScope({ selector, scopeSelector, hostSelector, isParentSelector }) {
6090
6101
  var _a2;
6091
6102
  const isRe = /\[is=([^\]]*)\]/g;
6092
6103
  scopeSelector = scopeSelector.replace(isRe, (_, ...parts) => parts[0]);
@@ -6098,6 +6109,10 @@ var ShadowCss = class {
6098
6109
  }
6099
6110
  if (p.includes(_polyfillHostNoCombinator)) {
6100
6111
  scopedP = this._applySimpleSelectorScope(p, scopeSelector, hostSelector);
6112
+ if (_polyfillHostNoCombinatorWithinPseudoFunction.test(p)) {
6113
+ const [_, before, colon, after] = scopedP.match(/([^:]*)(:*)(.*)/);
6114
+ scopedP = before + attrName + colon + after;
6115
+ }
6101
6116
  } else {
6102
6117
  const t = p.replace(_polyfillHostRe, "");
6103
6118
  if (t.length > 0) {
@@ -6109,29 +6124,52 @@ var ShadowCss = class {
6109
6124
  }
6110
6125
  return scopedP;
6111
6126
  };
6112
- const safeContent = new SafeSelector(selector);
6113
- selector = safeContent.content();
6127
+ const _pseudoFunctionAwareScopeSelectorPart = (selectorPart) => {
6128
+ let scopedPart = "";
6129
+ const cssPrefixWithPseudoSelectorFunctionMatch = selectorPart.match(_cssPrefixWithPseudoSelectorFunction);
6130
+ if (cssPrefixWithPseudoSelectorFunctionMatch) {
6131
+ const [cssPseudoSelectorFunction] = cssPrefixWithPseudoSelectorFunctionMatch;
6132
+ const selectorToScope = selectorPart.slice(cssPseudoSelectorFunction.length, -1);
6133
+ if (selectorToScope.includes(_polyfillHostNoCombinator)) {
6134
+ this._shouldScopeIndicator = true;
6135
+ }
6136
+ const scopedInnerPart = this._scopeSelector({
6137
+ selector: selectorToScope,
6138
+ scopeSelector,
6139
+ hostSelector
6140
+ });
6141
+ scopedPart = `${cssPseudoSelectorFunction}${scopedInnerPart})`;
6142
+ } else {
6143
+ this._shouldScopeIndicator = this._shouldScopeIndicator || selectorPart.includes(_polyfillHostNoCombinator);
6144
+ scopedPart = this._shouldScopeIndicator ? _scopeSelectorPart(selectorPart) : selectorPart;
6145
+ }
6146
+ return scopedPart;
6147
+ };
6148
+ if (isParentSelector) {
6149
+ this._safeSelector = new SafeSelector(selector);
6150
+ selector = this._safeSelector.content();
6151
+ }
6114
6152
  let scopedSelector = "";
6115
6153
  let startIndex = 0;
6116
6154
  let res;
6117
- const sep = /( |>|\+|~(?!=))\s*/g;
6155
+ const sep = /( |>|\+|~(?!=))(?!([^)(]*(?:\([^)(]*(?:\([^)(]*(?:\([^)(]*\)[^)(]*)*\)[^)(]*)*\)[^)(]*)*\)))\s*/g;
6118
6156
  const hasHost = selector.includes(_polyfillHostNoCombinator);
6119
- let shouldScope = !hasHost;
6157
+ if (isParentSelector || this._shouldScopeIndicator) {
6158
+ this._shouldScopeIndicator = !hasHost;
6159
+ }
6120
6160
  while ((res = sep.exec(selector)) !== null) {
6121
6161
  const separator = res[1];
6122
6162
  const part2 = selector.slice(startIndex, res.index);
6123
6163
  if (part2.match(/__esc-ph-(\d+)__/) && ((_a2 = selector[res.index + 1]) == null ? void 0 : _a2.match(/[a-fA-F\d]/))) {
6124
6164
  continue;
6125
6165
  }
6126
- shouldScope = shouldScope || part2.includes(_polyfillHostNoCombinator);
6127
- const scopedPart = shouldScope ? _scopeSelectorPart(part2) : part2;
6166
+ const scopedPart = _pseudoFunctionAwareScopeSelectorPart(part2);
6128
6167
  scopedSelector += `${scopedPart} ${separator} `;
6129
6168
  startIndex = sep.lastIndex;
6130
6169
  }
6131
6170
  const part = selector.substring(startIndex);
6132
- shouldScope = shouldScope || part.includes(_polyfillHostNoCombinator);
6133
- scopedSelector += shouldScope ? _scopeSelectorPart(part) : part;
6134
- return safeContent.restore(scopedSelector);
6171
+ scopedSelector += _pseudoFunctionAwareScopeSelectorPart(part);
6172
+ return this._safeSelector.restore(scopedSelector);
6135
6173
  }
6136
6174
  _insertPolyfillHostInCssText(selector) {
6137
6175
  return selector.replace(_colonHostContextRe, _polyfillHostContext).replace(_colonHostRe, _polyfillHost);
@@ -6170,6 +6208,8 @@ var SafeSelector = class {
6170
6208
  });
6171
6209
  }
6172
6210
  };
6211
+ var _cssScopedPseudoFunctionPrefix = "(:(where|is)\\()?";
6212
+ var _cssPrefixWithPseudoSelectorFunction = /^:(where|is)\(/i;
6173
6213
  var _cssContentNextSelectorRe = /polyfill-next-selector[^}]*content:[\s]*?(['"])(.*?)\1[;\s]*}([^{]*?){/gim;
6174
6214
  var _cssContentRuleRe = /(polyfill-rule)[^}]*(content:[\s]*(['"])(.*?)\3)[;\s]*[^}]*}/gim;
6175
6215
  var _cssContentUnscopedRuleRe = /(polyfill-unscoped-rule)[^}]*(content:[\s]*(['"])(.*?)\3)[;\s]*[^}]*}/gim;
@@ -6177,10 +6217,12 @@ var _polyfillHost = "-shadowcsshost";
6177
6217
  var _polyfillHostContext = "-shadowcsscontext";
6178
6218
  var _parenSuffix = "(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))?([^,{]*)";
6179
6219
  var _cssColonHostRe = new RegExp(_polyfillHost + _parenSuffix, "gim");
6180
- var _cssColonHostContextReGlobal = new RegExp(_polyfillHostContext + _parenSuffix, "gim");
6220
+ var _cssColonHostContextReGlobal = new RegExp(_cssScopedPseudoFunctionPrefix + "(" + _polyfillHostContext + _parenSuffix + ")", "gim");
6181
6221
  var _cssColonHostContextRe = new RegExp(_polyfillHostContext + _parenSuffix, "im");
6182
6222
  var _polyfillHostNoCombinator = _polyfillHost + "-no-combinator";
6223
+ var _polyfillHostNoCombinatorWithinPseudoFunction = new RegExp(`:.*\\(.*${_polyfillHostNoCombinator}.*\\)`);
6183
6224
  var _polyfillHostNoCombinatorRe = /-shadowcsshost-no-combinator([^\s]*)/;
6225
+ var _polyfillHostNoCombinatorReGlobal = new RegExp(_polyfillHostNoCombinatorRe, "g");
6184
6226
  var _shadowDOMSelectorsRe = [
6185
6227
  /::shadow/g,
6186
6228
  /::content/g,
@@ -6315,7 +6357,7 @@ function unescapeInStrings(input) {
6315
6357
  function unescapeQuotes(str, isQuoted) {
6316
6358
  return !isQuoted ? str : str.replace(/((?:^|[^\\])(?:\\\\)*)\\(?=['"])/g, "$1");
6317
6359
  }
6318
- function combineHostContextSelectors(contextSelectors, otherSelectors) {
6360
+ function _combineHostContextSelectors(contextSelectors, otherSelectors, pseudoPrefix = "") {
6319
6361
  const hostMarker = _polyfillHostNoCombinator;
6320
6362
  _polyfillHostRe.lastIndex = 0;
6321
6363
  const otherSelectorsHasHost = _polyfillHostRe.test(otherSelectors);
@@ -6333,7 +6375,7 @@ function combineHostContextSelectors(contextSelectors, otherSelectors) {
6333
6375
  combined[i] = contextSelector + previousSelectors;
6334
6376
  }
6335
6377
  }
6336
- return combined.map((s) => otherSelectorsHasHost ? `${s}${otherSelectors}` : `${s}${hostMarker}${otherSelectors}, ${s} ${hostMarker}${otherSelectors}`).join(",");
6378
+ return combined.map((s) => otherSelectorsHasHost ? `${pseudoPrefix}${s}${otherSelectors}` : `${pseudoPrefix}${s}${hostMarker}${otherSelectors}, ${pseudoPrefix}${s} ${hostMarker}${otherSelectors}`).join(",");
6337
6379
  }
6338
6380
  function repeatGroups(groups, multiples) {
6339
6381
  const length = groups.length;
@@ -23572,7 +23614,7 @@ function publishFacade(global) {
23572
23614
  }
23573
23615
 
23574
23616
  // bazel-out/k8-fastbuild/bin/packages/compiler/src/version.mjs
23575
- var VERSION2 = new Version("18.2.7");
23617
+ var VERSION2 = new Version("18.2.8");
23576
23618
 
23577
23619
  // bazel-out/k8-fastbuild/bin/packages/compiler/src/i18n/extractor_merger.mjs
23578
23620
  var _VisitorMode;