@cqa-lib/cqa-ui 1.0.53 → 1.0.55

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.
@@ -43,59 +43,75 @@ export class TailwindOverlayContainer extends OverlayContainer {
43
43
  // Also check immediately in case overlays already exist
44
44
  requestAnimationFrame(() => this.updateContainerClass());
45
45
  }
46
- isElementVisible(element) {
46
+ isElementClosing(element) {
47
+ // Check if element is closing (very low opacity AND shrinking dimensions)
47
48
  const style = window.getComputedStyle(element);
48
- // Check if element is visible (not display: none, not opacity: 0, not visibility: hidden)
49
- const isDisplayed = style.display !== 'none';
50
- const isOpaque = parseFloat(style.opacity) > 0.01; // Allow for very small opacity values during animations
51
- const isVisible = style.visibility !== 'hidden';
52
- // Also check if element has dimensions (width/height > 0)
49
+ const opacity = parseFloat(style.opacity);
53
50
  const rect = element.getBoundingClientRect();
54
- const hasSize = rect.width > 0 && rect.height > 0;
55
- return isDisplayed && isOpaque && isVisible && hasSize;
51
+ // If opacity is very low (< 0.1) AND dimensions are very small, it's likely closing
52
+ // This helps filter out closing animations while allowing opening animations
53
+ return opacity < 0.1 && (rect.width < 10 || rect.height < 10);
56
54
  }
57
55
  updateContainerClass() {
58
56
  if (!this._containerElement)
59
57
  return;
60
58
  // Count library overlays (dialogs, select panels, datepicker panels)
61
- // Only count overlays that are actually visible/active (not hidden or closing)
62
- // Library dialogs - check visibility
59
+ // Count them if they exist in DOM (even during opening animations)
60
+ // But exclude them if they're clearly closing (very low opacity + small size)
61
+ // Library dialogs - count if not closing
63
62
  const libraryDialogs = Array.from(this._containerElement.querySelectorAll('.cqa-dialog-panel'));
64
- const visibleLibraryDialogs = libraryDialogs.filter(dialog => this.isElementVisible(dialog)).length;
65
- // Library backdrops - check visibility (backdrops can be transparent but still present)
63
+ const activeLibraryDialogs = libraryDialogs.filter(dialog => {
64
+ const style = window.getComputedStyle(dialog);
65
+ return style.display !== 'none' && !this.isElementClosing(dialog);
66
+ }).length;
67
+ // Library backdrops - check if showing (backdrops can be transparent but still present)
66
68
  const libraryBackdrops = Array.from(this._containerElement.querySelectorAll('.cqa-dialog-backdrop'));
67
- const visibleLibraryBackdrops = libraryBackdrops.filter(backdrop => {
68
- // Backdrops might have low opacity but should still be considered if they're showing
69
+ const activeLibraryBackdrops = libraryBackdrops.filter(backdrop => {
69
70
  const style = window.getComputedStyle(backdrop);
71
+ // Backdrop is active if it's showing (has the showing class) and not display: none
70
72
  return style.display !== 'none' && backdrop.classList.contains('cdk-overlay-backdrop-showing');
71
73
  }).length;
72
- // Select panels - check visibility
74
+ // Select panels - count if not closing
73
75
  const selectPanels = Array.from(this._containerElement.querySelectorAll('.ctc-select-panel'));
74
- const visibleSelectPanels = selectPanels.filter(panel => this.isElementVisible(panel)).length;
75
- // Date panels - check visibility
76
+ const activeSelectPanels = selectPanels.filter(panel => {
77
+ const style = window.getComputedStyle(panel);
78
+ return style.display !== 'none' && !this.isElementClosing(panel);
79
+ }).length;
80
+ // Date panels - count if not closing
76
81
  const datePanels = Array.from(this._containerElement.querySelectorAll('.ctc-date-range-panel'));
77
- const visibleDatePanels = datePanels.filter(panel => this.isElementVisible(panel)).length;
78
- const totalLibraryOverlays = visibleLibraryDialogs + visibleLibraryBackdrops + visibleSelectPanels + visibleDatePanels;
82
+ const activeDatePanels = datePanels.filter(panel => {
83
+ const style = window.getComputedStyle(panel);
84
+ return style.display !== 'none' && !this.isElementClosing(panel);
85
+ }).length;
86
+ const totalLibraryOverlays = activeLibraryDialogs + activeLibraryBackdrops + activeSelectPanels + activeDatePanels;
79
87
  // Check for portal Material dialogs (those without .cqa-dialog-panel class)
80
88
  // Portal dialogs use .mat-dialog-container but NOT .cqa-dialog-panel
89
+ // Only count visible portal dialogs to avoid false positives
81
90
  const portalDialogs = Array.from(this._containerElement.querySelectorAll('.mat-dialog-container:not(.cqa-dialog-panel)'));
82
- const visiblePortalDialogs = portalDialogs.filter(dialog => this.isElementVisible(dialog)).length;
83
- // Decision logic: Only add cqa-ui-root when VISIBLE library overlays are present
84
- // This ensures portal Material dialogs don't get affected by library CSS
85
- // even if library overlays are in the DOM but closing/hidden
91
+ const visiblePortalDialogs = portalDialogs.filter(dialog => {
92
+ const style = window.getComputedStyle(dialog);
93
+ const rect = dialog.getBoundingClientRect();
94
+ return style.display !== 'none' &&
95
+ parseFloat(style.opacity) > 0.1 &&
96
+ rect.width > 0 &&
97
+ rect.height > 0;
98
+ }).length;
99
+ // Decision logic: Add cqa-ui-root when library overlays are present (even during opening animations)
100
+ // Remove it only when library overlays are clearly gone or closing
101
+ // This ensures library overlays get styles immediately, while portal dialogs don't get affected
86
102
  if (totalLibraryOverlays > 0) {
87
- // Visible library overlays exist - add the class (they need Tailwind styles scoped to .cqa-ui-root)
103
+ // Library overlays exist - add the class (they need Tailwind styles scoped to .cqa-ui-root)
88
104
  this._containerElement.classList.add('cqa-ui-root');
89
105
  }
90
106
  else {
91
- // No visible library overlays exist - remove the class
107
+ // No active library overlays exist - remove the class
92
108
  // This handles:
93
109
  // 1. Only portal dialogs exist (should not have cqa-ui-root)
94
- // 2. Library overlays are closing/hidden (should not have cqa-ui-root)
110
+ // 2. Library overlays are closing/closed (should not have cqa-ui-root)
95
111
  // 3. No overlays exist at all (clean state)
96
112
  this._containerElement.classList.remove('cqa-ui-root');
97
113
  }
98
- // Note: If both library overlays and portal dialogs exist simultaneously and are visible,
114
+ // Note: If both library overlays and portal dialogs exist simultaneously,
99
115
  // the class will be present because library overlays need it. In this case,
100
116
  // portal dialogs may be affected by library CSS. To avoid this, ensure library
101
117
  // overlays are closed before opening portal dialogs, or use CSS specificity
@@ -107,4 +123,4 @@ TailwindOverlayContainer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0
107
123
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TailwindOverlayContainer, decorators: [{
108
124
  type: Injectable
109
125
  }] });
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHctb3ZlcmxheS1jb250YWluZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3V0aWxzL3R3LW92ZXJsYXktY29udGFpbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBRXhEOzs7Ozs7O0dBT0c7QUFFSCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsZ0JBQWdCO0lBRDlEOztRQUVVLGtCQUFhLEdBQWtCLElBQUksQ0FBQztLQXlHN0M7SUF2R29CLGdCQUFnQjtRQUNqQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQix5RkFBeUY7WUFDekYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFdkQsNkVBQTZFO1lBQzdFLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUVPLHNCQUFzQjtRQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQjtZQUFFLE9BQU87UUFFcEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUU7WUFDekMsc0VBQXNFO1lBQ3RFLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxJQUFJLEVBQUU7Z0JBQy9CLG9CQUFvQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUMxQztZQUNELElBQUksQ0FBQyxhQUFhLEdBQUcscUJBQXFCLENBQUMsR0FBRyxFQUFFO2dCQUM5QyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7WUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFDTCxD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UUFFMUYsTUFBTSxvQkFBb0IsR0FBRyxxQkFBcUIsR0FBRyx1QkFBdUIsR0FBRyxtQkFBbUIsR0FBRyxpQkFBaUIsQ0FBQztRQUV2SCw0RUFBNEU7UUFDNUUscUVBQXFFO1FBQ3JFLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLDhDQUE4QyxDQUFDLENBQUMsQ0FBQztRQUMxSCxNQUFNLG9CQUFvQixHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFFbEcsaUZBQWlGO1FBQ2pGLHlFQUF5RTtRQUN6RSw2REFBNkQ7UUFFN0QsSUFBSSxvQkFBb0IsR0FBRyxDQUFDLEVBQUU7WUFDNUIsb0dBQW9HO1lBQ3BHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3JEO2FBQU07WUFDTCx1REFBdUQ7WUFDdkQsZ0JBQWdCO1lBQ2hCLDZEQUE2RDtZQUM3RCx1RUFBdUU7WUFDdkUsNENBQTRDO1lBQzVDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3hEO1FBRUQsMEZBQTBGO1FBQzFGLDRFQUE0RTtRQUM1RSwrRUFBK0U7UUFDL0UsNEVBQTRFO1FBQzVFLG9EQUFvRDtJQUN0RCxDQUFDOztxSEF6R1Usd0JBQXdCO3lIQUF4Qix3QkFBd0I7MkZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXlDb250YWluZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5cbi8qKlxuICogRW5zdXJlcyBBbmd1bGFyIENESyBvdmVybGF5IGNvbnRlbnQgKGUuZy4sIE1hdFNlbGVjdCwgRGF0ZXBpY2tlciBwYW5lbHMsIGxpYnJhcnkgZGlhbG9ncylcbiAqIGlzIG5lc3RlZCB1bmRlciBhbiBlbGVtZW50IHdpdGggY2xhc3M9XCJjcWEtdWktcm9vdFwiIHNvIFRhaWx3aW5kIHV0aWxpdGllc1xuICogY29uZmlndXJlZCB3aXRoIGltcG9ydGFudDogJy5jcWEtdWktcm9vdCcgYXJlIGFwcGxpZWQgaW5zaWRlIG92ZXJsYXlzLlxuICogXG4gKiBJTVBPUlRBTlQ6IE9ubHkgc2V0cyBjbGFzcz1cImNxYS11aS1yb290XCIgd2hlbiBsaWJyYXJ5IG92ZXJsYXlzIGFyZSBwcmVzZW50LlxuICogUG9ydGFsIE1hdGVyaWFsIGRpYWxvZ3Mgc2hvdWxkIE5PVCBoYXZlIHRoaXMgY2xhc3MgdG8gcHJldmVudCBsaWJyYXJ5IENTUyBmcm9tIGFmZmVjdGluZyB0aGVtLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGFpbHdpbmRPdmVybGF5Q29udGFpbmVyIGV4dGVuZHMgT3ZlcmxheUNvbnRhaW5lciB7XG4gIHByaXZhdGUgdXBkYXRlVGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIF9jcmVhdGVDb250YWluZXIoKTogdm9pZCB7XG4gICAgc3VwZXIuX2NyZWF0ZUNvbnRhaW5lcigpO1xuICAgIGlmICh0aGlzLl9jb250YWluZXJFbGVtZW50KSB7XG4gICAgICAvLyBEb24ndCBzZXQgY2xhc3MgaW5pdGlhbGx5IC0gd2UnbGwgc2V0IGl0IGR5bmFtaWNhbGx5IHdoZW4gbGlicmFyeSBvdmVybGF5cyBhcmUgY3JlYXRlZFxuICAgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdjcWEtdWktcm9vdCcpO1xuICAgICAgXG4gICAgICAvLyBVc2UgTXV0YXRpb25PYnNlcnZlciB0byBkZXRlY3Qgd2hlbiBsaWJyYXJ5IG92ZXJsYXlzIGFyZSBjcmVhdGVkL2Rlc3Ryb3llZFxuICAgICAgdGhpcy5vYnNlcnZlTGlicmFyeU92ZXJsYXlzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlTGlicmFyeU92ZXJsYXlzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fY29udGFpbmVyRWxlbWVudCkgcmV0dXJuO1xuXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB7XG4gICAgICAvLyBEZWJvdW5jZSB1cGRhdGVzIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBjaGVja3MgZHVyaW5nIHJhcGlkIERPTSBjaGFuZ2VzXG4gICAgICBpZiAodGhpcy51cGRhdGVUaW1lb3V0ICE9PSBudWxsKSB7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMudXBkYXRlVGltZW91dCk7XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZVRpbWVvdXQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbnRhaW5lckNsYXNzKCk7XG4gICAgICAgIHRoaXMudXBkYXRlVGltZW91dCA9IG51bGw7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIG9ic2VydmVyLm9ic2VydmUodGhpcy5fY29udGFpbmVyRWxlbWVudCwge1xuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICB9KTtcblxuICAgIC8vIEFsc28gY2hlY2sgaW1tZWRpYXRlbHkgaW4gY2FzZSBvdmVybGF5cyBhbHJlYWR5IGV4aXN0XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHRoaXMudXBkYXRlQ29udGFpbmVyQ2xhc3MoKSk7XG4gIH1cblxuICBwcml2YXRlIGlzRWxlbWVudFZpc2libGUoZWxlbWVudDogRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gICAgLy8gQ2hlY2sgaWYgZWxlbWVudCBpcyB2aXNpYmxlIChub3QgZGlzcGxheTogbm9uZSwgbm90IG9wYWNpdHk6IDAsIG5vdCB2aXNpYmlsaXR5OiBoaWRkZW4pXG4gICAgY29uc3QgaXNEaXNwbGF5ZWQgPSBzdHlsZS5kaXNwbGF5ICE9PSAnbm9uZSc7XG4gICAgY29uc3QgaXNPcGFxdWUgPSBwYXJzZUZsb2F0KHN0eWxlLm9wYWNpdHkpID4gMC4wMTsgLy8gQWxsb3cgZm9yIHZlcnkgc21hbGwgb3BhY2l0eSB2YWx1ZXMgZHVyaW5nIGFuaW1hdGlvbnNcbiAgICBjb25zdCBpc1Zpc2libGUgPSBzdHlsZS52aXNpYmlsaXR5ICE9PSAnaGlkZGVuJztcbiAgICBcbiAgICAvLyBBbHNvIGNoZWNrIGlmIGVsZW1lbnQgaGFzIGRpbWVuc2lvbnMgKHdpZHRoL2hlaWdodCA+IDApXG4gICAgY29uc3QgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgaGFzU2l6ZSA9IHJlY3Qud2lkdGggPiAwICYmIHJlY3QuaGVpZ2h0ID4gMDtcbiAgICBcbiAgICByZXR1cm4gaXNEaXNwbGF5ZWQgJiYgaXNPcGFxdWUgJiYgaXNWaXNpYmxlICYmIGhhc1NpemU7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbnRhaW5lckNsYXNzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fY29udGFpbmVyRWxlbWVudCkgcmV0dXJuO1xuXG4gICAgLy8gQ291bnQgbGlicmFyeSBvdmVybGF5cyAoZGlhbG9ncywgc2VsZWN0IHBhbmVscywgZGF0ZXBpY2tlciBwYW5lbHMpXG4gICAgLy8gT25seSBjb3VudCBvdmVybGF5cyB0aGF0IGFyZSBhY3R1YWxseSB2aXNpYmxlL2FjdGl2ZSAobm90IGhpZGRlbiBvciBjbG9zaW5nKVxuICAgIFxuICAgIC8vIExpYnJhcnkgZGlhbG9ncyAtIGNoZWNrIHZpc2liaWxpdHlcbiAgICBjb25zdCBsaWJyYXJ5RGlhbG9ncyA9IEFycmF5LmZyb20odGhpcy5fY29udGFpbmVyRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuY3FhLWRpYWxvZy1wYW5lbCcpKTtcbiAgICBjb25zdCB2aXNpYmxlTGlicmFyeURpYWxvZ3MgPSBsaWJyYXJ5RGlhbG9ncy5maWx0ZXIoZGlhbG9nID0+IHRoaXMuaXNFbGVtZW50VmlzaWJsZShkaWFsb2cpKS5sZW5ndGg7XG4gICAgXG4gICAgLy8gTGlicmFyeSBiYWNrZHJvcHMgLSBjaGVjayB2aXNpYmlsaXR5IChiYWNrZHJvcHMgY2FuIGJlIHRyYW5zcGFyZW50IGJ1dCBzdGlsbCBwcmVzZW50KVxuICAgIGNvbnN0IGxpYnJhcnlCYWNrZHJvcHMgPSBBcnJheS5mcm9tKHRoaXMuX2NvbnRhaW5lckVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmNxYS1kaWFsb2ctYmFja2Ryb3AnKSk7XG4gICAgY29uc3QgdmlzaWJsZUxpYnJhcnlCYWNrZHJvcHMgPSBsaWJyYXJ5QmFja2Ryb3BzLmZpbHRlcihiYWNrZHJvcCA9PiB7XG4gICAgICAvLyBCYWNrZHJvcHMgbWlnaHQgaGF2ZSBsb3cgb3BhY2l0eSBidXQgc2hvdWxkIHN0aWxsIGJlIGNvbnNpZGVyZWQgaWYgdGhleSdyZSBzaG93aW5nXG4gICAgICBjb25zdCBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGJhY2tkcm9wKTtcbiAgICAgIHJldHVybiBzdHlsZS5kaXNwbGF5ICE9PSAnbm9uZScgJiYgYmFja2Ryb3AuY2xhc3NMaXN0LmNvbnRhaW5zKCdjZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nJyk7XG4gICAgfSkubGVuZ3RoO1xuICAgIFxuICAgIC8vIFNlbGVjdCBwYW5lbHMgLSBjaGVjayB2aXNpYmlsaXR5XG4gICAgY29uc3Qgc2VsZWN0UGFuZWxzID0gQXJyYXkuZnJvbSh0aGlzLl9jb250YWluZXJFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jdGMtc2VsZWN0LXBhbmVsJykpO1xuICAgIGNvbnN0IHZpc2libGVTZWxlY3RQYW5lbHMgPSBzZWxlY3RQYW5lbHMuZmlsdGVyKHBhbmVsID0+IHRoaXMuaXNFbGVtZW50VmlzaWJsZShwYW5lbCkpLmxlbmd0aDtcbiAgICBcbiAgICAvLyBEYXRlIHBhbmVscyAtIGNoZWNrIHZpc2liaWxpdHlcbiAgICBjb25zdCBkYXRlUGFuZWxzID0gQXJyYXkuZnJvbSh0aGlzLl9jb250YWluZXJFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jdGMtZGF0ZS1yYW5nZS1wYW5lbCcpKTtcbiAgICBjb25zdCB2aXNpYmxlRGF0ZVBhbmVscyA9IGRhdGVQYW5lbHMuZmlsdGVyKHBhbmVsID0+IHRoaXMuaXNFbGVtZW50VmlzaWJsZShwYW5lbCkpLmxlbmd0aDtcbiAgICBcbiAgICBjb25zdCB0b3RhbExpYnJhcnlPdmVybGF5cyA9IHZpc2libGVMaWJyYXJ5RGlhbG9ncyArIHZpc2libGVMaWJyYXJ5QmFja2Ryb3BzICsgdmlzaWJsZVNlbGVjdFBhbmVscyArIHZpc2libGVEYXRlUGFuZWxzO1xuICAgIFxuICAgIC8vIENoZWNrIGZvciBwb3J0YWwgTWF0ZXJpYWwgZGlhbG9ncyAodGhvc2Ugd2l0aG91dCAuY3FhLWRpYWxvZy1wYW5lbCBjbGFzcylcbiAgICAvLyBQb3J0YWwgZGlhbG9ncyB1c2UgLm1hdC1kaWFsb2ctY29udGFpbmVyIGJ1dCBOT1QgLmNxYS1kaWFsb2ctcGFuZWxcbiAgICBjb25zdCBwb3J0YWxEaWFsb2dzID0gQXJyYXkuZnJvbSh0aGlzLl9jb250YWluZXJFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5tYXQtZGlhbG9nLWNvbnRhaW5lcjpub3QoLmNxYS1kaWFsb2ctcGFuZWwpJykpO1xuICAgIGNvbnN0IHZpc2libGVQb3J0YWxEaWFsb2dzID0gcG9ydGFsRGlhbG9ncy5maWx0ZXIoZGlhbG9nID0+IHRoaXMuaXNFbGVtZW50VmlzaWJsZShkaWFsb2cpKS5sZW5ndGg7XG5cbiAgICAvLyBEZWNpc2lvbiBsb2dpYzogT25seSBhZGQgY3FhLXVpLXJvb3Qgd2hlbiBWSVNJQkxFIGxpYnJhcnkgb3ZlcmxheXMgYXJlIHByZXNlbnRcbiAgICAvLyBUaGlzIGVuc3VyZXMgcG9ydGFsIE1hdGVyaWFsIGRpYWxvZ3MgZG9uJ3QgZ2V0IGFmZmVjdGVkIGJ5IGxpYnJhcnkgQ1NTXG4gICAgLy8gZXZlbiBpZiBsaWJyYXJ5IG92ZXJsYXlzIGFyZSBpbiB0aGUgRE9NIGJ1dCBjbG9zaW5nL2hpZGRlblxuICAgIFxuICAgIGlmICh0b3RhbExpYnJhcnlPdmVybGF5cyA+IDApIHtcbiAgICAgIC8vIFZpc2libGUgbGlicmFyeSBvdmVybGF5cyBleGlzdCAtIGFkZCB0aGUgY2xhc3MgKHRoZXkgbmVlZCBUYWlsd2luZCBzdHlsZXMgc2NvcGVkIHRvIC5jcWEtdWktcm9vdClcbiAgICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnY3FhLXVpLXJvb3QnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTm8gdmlzaWJsZSBsaWJyYXJ5IG92ZXJsYXlzIGV4aXN0IC0gcmVtb3ZlIHRoZSBjbGFzc1xuICAgICAgLy8gVGhpcyBoYW5kbGVzOlxuICAgICAgLy8gMS4gT25seSBwb3J0YWwgZGlhbG9ncyBleGlzdCAoc2hvdWxkIG5vdCBoYXZlIGNxYS11aS1yb290KVxuICAgICAgLy8gMi4gTGlicmFyeSBvdmVybGF5cyBhcmUgY2xvc2luZy9oaWRkZW4gKHNob3VsZCBub3QgaGF2ZSBjcWEtdWktcm9vdClcbiAgICAgIC8vIDMuIE5vIG92ZXJsYXlzIGV4aXN0IGF0IGFsbCAoY2xlYW4gc3RhdGUpXG4gICAgICB0aGlzLl9jb250YWluZXJFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2NxYS11aS1yb290Jyk7XG4gICAgfVxuICAgIFxuICAgIC8vIE5vdGU6IElmIGJvdGggbGlicmFyeSBvdmVybGF5cyBhbmQgcG9ydGFsIGRpYWxvZ3MgZXhpc3Qgc2ltdWx0YW5lb3VzbHkgYW5kIGFyZSB2aXNpYmxlLFxuICAgIC8vIHRoZSBjbGFzcyB3aWxsIGJlIHByZXNlbnQgYmVjYXVzZSBsaWJyYXJ5IG92ZXJsYXlzIG5lZWQgaXQuIEluIHRoaXMgY2FzZSxcbiAgICAvLyBwb3J0YWwgZGlhbG9ncyBtYXkgYmUgYWZmZWN0ZWQgYnkgbGlicmFyeSBDU1MuIFRvIGF2b2lkIHRoaXMsIGVuc3VyZSBsaWJyYXJ5XG4gICAgLy8gb3ZlcmxheXMgYXJlIGNsb3NlZCBiZWZvcmUgb3BlbmluZyBwb3J0YWwgZGlhbG9ncywgb3IgdXNlIENTUyBzcGVjaWZpY2l0eVxuICAgIC8vIHRvIG92ZXJyaWRlIGxpYnJhcnkgc3R5bGVzIHdpdGhpbiBwb3J0YWwgZGlhbG9ncy5cbiAgfVxufVxuXG5cbiJdfQ==
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHctb3ZlcmxheS1jb250YWluZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3V0aWxzL3R3LW92ZXJsYXktY29udGFpbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBRXhEOzs7Ozs7O0dBT0c7QUFFSCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsZ0JBQWdCO0lBRDlEOztRQUVVLGtCQUFhLEdBQWtCLElBQUksQ0FBQztLQXdIN0M7SUF0SG9CLGdCQUFnQjtRQUNqQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQix5RkFBeUY7WUFDekYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFdkQsNkVBQTZFO1lBQzdFLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUVPLHNCQUFzQjtRQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQjtZQUFFLE9BQU87UUFFcEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUU7WUFDekMsc0VBQXNFO1lBQ3RFLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxJQUFJLEVBQUU7Z0JBQy9CLG9CQUFvQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUMxQztZQUNELElBQUksQ0FBQyxhQUFhLEdBQUcscUJBQXFCLENBQUMsR0FBRyxFQUFFO2dCQUM5QyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7WUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFDTCxD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QWEsQ0FBQyxDQUFDO1NBQ3JEO2FBQU07WUFDTCxzREFBc0Q7WUFDdEQsZ0JBQWdCO1lBQ2hCLDZEQUE2RDtZQUM3RCx1RUFBdUU7WUFDdkUsNENBQTRDO1lBQzVDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3hEO1FBRUQsMEVBQTBFO1FBQzFFLDRFQUE0RTtRQUM1RSwrRUFBK0U7UUFDL0UsNEVBQTRFO1FBQzVFLG9EQUFvRDtJQUN0RCxDQUFDOztxSEF4SFUsd0JBQXdCO3lIQUF4Qix3QkFBd0I7MkZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXlDb250YWluZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5cbi8qKlxuICogRW5zdXJlcyBBbmd1bGFyIENESyBvdmVybGF5IGNvbnRlbnQgKGUuZy4sIE1hdFNlbGVjdCwgRGF0ZXBpY2tlciBwYW5lbHMsIGxpYnJhcnkgZGlhbG9ncylcbiAqIGlzIG5lc3RlZCB1bmRlciBhbiBlbGVtZW50IHdpdGggY2xhc3M9XCJjcWEtdWktcm9vdFwiIHNvIFRhaWx3aW5kIHV0aWxpdGllc1xuICogY29uZmlndXJlZCB3aXRoIGltcG9ydGFudDogJy5jcWEtdWktcm9vdCcgYXJlIGFwcGxpZWQgaW5zaWRlIG92ZXJsYXlzLlxuICogXG4gKiBJTVBPUlRBTlQ6IE9ubHkgc2V0cyBjbGFzcz1cImNxYS11aS1yb290XCIgd2hlbiBsaWJyYXJ5IG92ZXJsYXlzIGFyZSBwcmVzZW50LlxuICogUG9ydGFsIE1hdGVyaWFsIGRpYWxvZ3Mgc2hvdWxkIE5PVCBoYXZlIHRoaXMgY2xhc3MgdG8gcHJldmVudCBsaWJyYXJ5IENTUyBmcm9tIGFmZmVjdGluZyB0aGVtLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGFpbHdpbmRPdmVybGF5Q29udGFpbmVyIGV4dGVuZHMgT3ZlcmxheUNvbnRhaW5lciB7XG4gIHByaXZhdGUgdXBkYXRlVGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIF9jcmVhdGVDb250YWluZXIoKTogdm9pZCB7XG4gICAgc3VwZXIuX2NyZWF0ZUNvbnRhaW5lcigpO1xuICAgIGlmICh0aGlzLl9jb250YWluZXJFbGVtZW50KSB7XG4gICAgICAvLyBEb24ndCBzZXQgY2xhc3MgaW5pdGlhbGx5IC0gd2UnbGwgc2V0IGl0IGR5bmFtaWNhbGx5IHdoZW4gbGlicmFyeSBvdmVybGF5cyBhcmUgY3JlYXRlZFxuICAgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdjcWEtdWktcm9vdCcpO1xuICAgICAgXG4gICAgICAvLyBVc2UgTXV0YXRpb25PYnNlcnZlciB0byBkZXRlY3Qgd2hlbiBsaWJyYXJ5IG92ZXJsYXlzIGFyZSBjcmVhdGVkL2Rlc3Ryb3llZFxuICAgICAgdGhpcy5vYnNlcnZlTGlicmFyeU92ZXJsYXlzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlTGlicmFyeU92ZXJsYXlzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fY29udGFpbmVyRWxlbWVudCkgcmV0dXJuO1xuXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB7XG4gICAgICAvLyBEZWJvdW5jZSB1cGRhdGVzIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBjaGVja3MgZHVyaW5nIHJhcGlkIERPTSBjaGFuZ2VzXG4gICAgICBpZiAodGhpcy51cGRhdGVUaW1lb3V0ICE9PSBudWxsKSB7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMudXBkYXRlVGltZW91dCk7XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZVRpbWVvdXQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbnRhaW5lckNsYXNzKCk7XG4gICAgICAgIHRoaXMudXBkYXRlVGltZW91dCA9IG51bGw7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIG9ic2VydmVyLm9ic2VydmUodGhpcy5fY29udGFpbmVyRWxlbWVudCwge1xuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICB9KTtcblxuICAgIC8vIEFsc28gY2hlY2sgaW1tZWRpYXRlbHkgaW4gY2FzZSBvdmVybGF5cyBhbHJlYWR5IGV4aXN0XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHRoaXMudXBkYXRlQ29udGFpbmVyQ2xhc3MoKSk7XG4gIH1cblxuICBwcml2YXRlIGlzRWxlbWVudENsb3NpbmcoZWxlbWVudDogRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIC8vIENoZWNrIGlmIGVsZW1lbnQgaXMgY2xvc2luZyAodmVyeSBsb3cgb3BhY2l0eSBBTkQgc2hyaW5raW5nIGRpbWVuc2lvbnMpXG4gICAgY29uc3Qgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgICBjb25zdCBvcGFjaXR5ID0gcGFyc2VGbG9hdChzdHlsZS5vcGFjaXR5KTtcbiAgICBjb25zdCByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBcbiAgICAvLyBJZiBvcGFjaXR5IGlzIHZlcnkgbG93ICg8IDAuMSkgQU5EIGRpbWVuc2lvbnMgYXJlIHZlcnkgc21hbGwsIGl0J3MgbGlrZWx5IGNsb3NpbmdcbiAgICAvLyBUaGlzIGhlbHBzIGZpbHRlciBvdXQgY2xvc2luZyBhbmltYXRpb25zIHdoaWxlIGFsbG93aW5nIG9wZW5pbmcgYW5pbWF0aW9uc1xuICAgIHJldHVybiBvcGFjaXR5IDwgMC4xICYmIChyZWN0LndpZHRoIDwgMTAgfHwgcmVjdC5oZWlnaHQgPCAxMCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbnRhaW5lckNsYXNzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fY29udGFpbmVyRWxlbWVudCkgcmV0dXJuO1xuXG4gICAgLy8gQ291bnQgbGlicmFyeSBvdmVybGF5cyAoZGlhbG9ncywgc2VsZWN0IHBhbmVscywgZGF0ZXBpY2tlciBwYW5lbHMpXG4gICAgLy8gQ291bnQgdGhlbSBpZiB0aGV5IGV4aXN0IGluIERPTSAoZXZlbiBkdXJpbmcgb3BlbmluZyBhbmltYXRpb25zKVxuICAgIC8vIEJ1dCBleGNsdWRlIHRoZW0gaWYgdGhleSdyZSBjbGVhcmx5IGNsb3NpbmcgKHZlcnkgbG93IG9wYWNpdHkgKyBzbWFsbCBzaXplKVxuICAgIFxuICAgIC8vIExpYnJhcnkgZGlhbG9ncyAtIGNvdW50IGlmIG5vdCBjbG9zaW5nXG4gICAgY29uc3QgbGlicmFyeURpYWxvZ3MgPSBBcnJheS5mcm9tKHRoaXMuX2NvbnRhaW5lckVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmNxYS1kaWFsb2ctcGFuZWwnKSk7XG4gICAgY29uc3QgYWN0aXZlTGlicmFyeURpYWxvZ3MgPSBsaWJyYXJ5RGlhbG9ncy5maWx0ZXIoZGlhbG9nID0+IHtcbiAgICAgIGNvbnN0IHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZGlhbG9nKTtcbiAgICAgIHJldHVybiBzdHlsZS5kaXNwbGF5ICE9PSAnbm9uZScgJiYgIXRoaXMuaXNFbGVtZW50Q2xvc2luZyhkaWFsb2cpO1xuICAgIH0pLmxlbmd0aDtcbiAgICBcbiAgICAvLyBMaWJyYXJ5IGJhY2tkcm9wcyAtIGNoZWNrIGlmIHNob3dpbmcgKGJhY2tkcm9wcyBjYW4gYmUgdHJhbnNwYXJlbnQgYnV0IHN0aWxsIHByZXNlbnQpXG4gICAgY29uc3QgbGlicmFyeUJhY2tkcm9wcyA9IEFycmF5LmZyb20odGhpcy5fY29udGFpbmVyRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuY3FhLWRpYWxvZy1iYWNrZHJvcCcpKTtcbiAgICBjb25zdCBhY3RpdmVMaWJyYXJ5QmFja2Ryb3BzID0gbGlicmFyeUJhY2tkcm9wcy5maWx0ZXIoYmFja2Ryb3AgPT4ge1xuICAgICAgY29uc3Qgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShiYWNrZHJvcCk7XG4gICAgICAvLyBCYWNrZHJvcCBpcyBhY3RpdmUgaWYgaXQncyBzaG93aW5nIChoYXMgdGhlIHNob3dpbmcgY2xhc3MpIGFuZCBub3QgZGlzcGxheTogbm9uZVxuICAgICAgcmV0dXJuIHN0eWxlLmRpc3BsYXkgIT09ICdub25lJyAmJiBiYWNrZHJvcC5jbGFzc0xpc3QuY29udGFpbnMoJ2Nkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmcnKTtcbiAgICB9KS5sZW5ndGg7XG4gICAgXG4gICAgLy8gU2VsZWN0IHBhbmVscyAtIGNvdW50IGlmIG5vdCBjbG9zaW5nXG4gICAgY29uc3Qgc2VsZWN0UGFuZWxzID0gQXJyYXkuZnJvbSh0aGlzLl9jb250YWluZXJFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jdGMtc2VsZWN0LXBhbmVsJykpO1xuICAgIGNvbnN0IGFjdGl2ZVNlbGVjdFBhbmVscyA9IHNlbGVjdFBhbmVscy5maWx0ZXIocGFuZWwgPT4ge1xuICAgICAgY29uc3Qgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShwYW5lbCk7XG4gICAgICByZXR1cm4gc3R5bGUuZGlzcGxheSAhPT0gJ25vbmUnICYmICF0aGlzLmlzRWxlbWVudENsb3NpbmcocGFuZWwpO1xuICAgIH0pLmxlbmd0aDtcbiAgICBcbiAgICAvLyBEYXRlIHBhbmVscyAtIGNvdW50IGlmIG5vdCBjbG9zaW5nXG4gICAgY29uc3QgZGF0ZVBhbmVscyA9IEFycmF5LmZyb20odGhpcy5fY29udGFpbmVyRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuY3RjLWRhdGUtcmFuZ2UtcGFuZWwnKSk7XG4gICAgY29uc3QgYWN0aXZlRGF0ZVBhbmVscyA9IGRhdGVQYW5lbHMuZmlsdGVyKHBhbmVsID0+IHtcbiAgICAgIGNvbnN0IHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUocGFuZWwpO1xuICAgICAgcmV0dXJuIHN0eWxlLmRpc3BsYXkgIT09ICdub25lJyAmJiAhdGhpcy5pc0VsZW1lbnRDbG9zaW5nKHBhbmVsKTtcbiAgICB9KS5sZW5ndGg7XG4gICAgXG4gICAgY29uc3QgdG90YWxMaWJyYXJ5T3ZlcmxheXMgPSBhY3RpdmVMaWJyYXJ5RGlhbG9ncyArIGFjdGl2ZUxpYnJhcnlCYWNrZHJvcHMgKyBhY3RpdmVTZWxlY3RQYW5lbHMgKyBhY3RpdmVEYXRlUGFuZWxzO1xuICAgIFxuICAgIC8vIENoZWNrIGZvciBwb3J0YWwgTWF0ZXJpYWwgZGlhbG9ncyAodGhvc2Ugd2l0aG91dCAuY3FhLWRpYWxvZy1wYW5lbCBjbGFzcylcbiAgICAvLyBQb3J0YWwgZGlhbG9ncyB1c2UgLm1hdC1kaWFsb2ctY29udGFpbmVyIGJ1dCBOT1QgLmNxYS1kaWFsb2ctcGFuZWxcbiAgICAvLyBPbmx5IGNvdW50IHZpc2libGUgcG9ydGFsIGRpYWxvZ3MgdG8gYXZvaWQgZmFsc2UgcG9zaXRpdmVzXG4gICAgY29uc3QgcG9ydGFsRGlhbG9ncyA9IEFycmF5LmZyb20odGhpcy5fY29udGFpbmVyRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubWF0LWRpYWxvZy1jb250YWluZXI6bm90KC5jcWEtZGlhbG9nLXBhbmVsKScpKTtcbiAgICBjb25zdCB2aXNpYmxlUG9ydGFsRGlhbG9ncyA9IHBvcnRhbERpYWxvZ3MuZmlsdGVyKGRpYWxvZyA9PiB7XG4gICAgICBjb25zdCBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRpYWxvZyk7XG4gICAgICBjb25zdCByZWN0ID0gZGlhbG9nLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgcmV0dXJuIHN0eWxlLmRpc3BsYXkgIT09ICdub25lJyAmJiBcbiAgICAgICAgICAgICBwYXJzZUZsb2F0KHN0eWxlLm9wYWNpdHkpID4gMC4xICYmIFxuICAgICAgICAgICAgIHJlY3Qud2lkdGggPiAwICYmIFxuICAgICAgICAgICAgIHJlY3QuaGVpZ2h0ID4gMDtcbiAgICB9KS5sZW5ndGg7XG5cbiAgICAvLyBEZWNpc2lvbiBsb2dpYzogQWRkIGNxYS11aS1yb290IHdoZW4gbGlicmFyeSBvdmVybGF5cyBhcmUgcHJlc2VudCAoZXZlbiBkdXJpbmcgb3BlbmluZyBhbmltYXRpb25zKVxuICAgIC8vIFJlbW92ZSBpdCBvbmx5IHdoZW4gbGlicmFyeSBvdmVybGF5cyBhcmUgY2xlYXJseSBnb25lIG9yIGNsb3NpbmdcbiAgICAvLyBUaGlzIGVuc3VyZXMgbGlicmFyeSBvdmVybGF5cyBnZXQgc3R5bGVzIGltbWVkaWF0ZWx5LCB3aGlsZSBwb3J0YWwgZGlhbG9ncyBkb24ndCBnZXQgYWZmZWN0ZWRcbiAgICBcbiAgICBpZiAodG90YWxMaWJyYXJ5T3ZlcmxheXMgPiAwKSB7XG4gICAgICAvLyBMaWJyYXJ5IG92ZXJsYXlzIGV4aXN0IC0gYWRkIHRoZSBjbGFzcyAodGhleSBuZWVkIFRhaWx3aW5kIHN0eWxlcyBzY29wZWQgdG8gLmNxYS11aS1yb290KVxuICAgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdjcWEtdWktcm9vdCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBObyBhY3RpdmUgbGlicmFyeSBvdmVybGF5cyBleGlzdCAtIHJlbW92ZSB0aGUgY2xhc3NcbiAgICAgIC8vIFRoaXMgaGFuZGxlczpcbiAgICAgIC8vIDEuIE9ubHkgcG9ydGFsIGRpYWxvZ3MgZXhpc3QgKHNob3VsZCBub3QgaGF2ZSBjcWEtdWktcm9vdClcbiAgICAgIC8vIDIuIExpYnJhcnkgb3ZlcmxheXMgYXJlIGNsb3NpbmcvY2xvc2VkIChzaG91bGQgbm90IGhhdmUgY3FhLXVpLXJvb3QpXG4gICAgICAvLyAzLiBObyBvdmVybGF5cyBleGlzdCBhdCBhbGwgKGNsZWFuIHN0YXRlKVxuICAgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdjcWEtdWktcm9vdCcpO1xuICAgIH1cbiAgICBcbiAgICAvLyBOb3RlOiBJZiBib3RoIGxpYnJhcnkgb3ZlcmxheXMgYW5kIHBvcnRhbCBkaWFsb2dzIGV4aXN0IHNpbXVsdGFuZW91c2x5LFxuICAgIC8vIHRoZSBjbGFzcyB3aWxsIGJlIHByZXNlbnQgYmVjYXVzZSBsaWJyYXJ5IG92ZXJsYXlzIG5lZWQgaXQuIEluIHRoaXMgY2FzZSxcbiAgICAvLyBwb3J0YWwgZGlhbG9ncyBtYXkgYmUgYWZmZWN0ZWQgYnkgbGlicmFyeSBDU1MuIFRvIGF2b2lkIHRoaXMsIGVuc3VyZSBsaWJyYXJ5XG4gICAgLy8gb3ZlcmxheXMgYXJlIGNsb3NlZCBiZWZvcmUgb3BlbmluZyBwb3J0YWwgZGlhbG9ncywgb3IgdXNlIENTUyBzcGVjaWZpY2l0eVxuICAgIC8vIHRvIG92ZXJyaWRlIGxpYnJhcnkgc3R5bGVzIHdpdGhpbiBwb3J0YWwgZGlhbG9ncy5cbiAgfVxufVxuXG5cbiJdfQ==
@@ -4255,59 +4255,75 @@ class TailwindOverlayContainer extends OverlayContainer {
4255
4255
  // Also check immediately in case overlays already exist
4256
4256
  requestAnimationFrame(() => this.updateContainerClass());
4257
4257
  }
4258
- isElementVisible(element) {
4258
+ isElementClosing(element) {
4259
+ // Check if element is closing (very low opacity AND shrinking dimensions)
4259
4260
  const style = window.getComputedStyle(element);
4260
- // Check if element is visible (not display: none, not opacity: 0, not visibility: hidden)
4261
- const isDisplayed = style.display !== 'none';
4262
- const isOpaque = parseFloat(style.opacity) > 0.01; // Allow for very small opacity values during animations
4263
- const isVisible = style.visibility !== 'hidden';
4264
- // Also check if element has dimensions (width/height > 0)
4261
+ const opacity = parseFloat(style.opacity);
4265
4262
  const rect = element.getBoundingClientRect();
4266
- const hasSize = rect.width > 0 && rect.height > 0;
4267
- return isDisplayed && isOpaque && isVisible && hasSize;
4263
+ // If opacity is very low (< 0.1) AND dimensions are very small, it's likely closing
4264
+ // This helps filter out closing animations while allowing opening animations
4265
+ return opacity < 0.1 && (rect.width < 10 || rect.height < 10);
4268
4266
  }
4269
4267
  updateContainerClass() {
4270
4268
  if (!this._containerElement)
4271
4269
  return;
4272
4270
  // Count library overlays (dialogs, select panels, datepicker panels)
4273
- // Only count overlays that are actually visible/active (not hidden or closing)
4274
- // Library dialogs - check visibility
4271
+ // Count them if they exist in DOM (even during opening animations)
4272
+ // But exclude them if they're clearly closing (very low opacity + small size)
4273
+ // Library dialogs - count if not closing
4275
4274
  const libraryDialogs = Array.from(this._containerElement.querySelectorAll('.cqa-dialog-panel'));
4276
- const visibleLibraryDialogs = libraryDialogs.filter(dialog => this.isElementVisible(dialog)).length;
4277
- // Library backdrops - check visibility (backdrops can be transparent but still present)
4275
+ const activeLibraryDialogs = libraryDialogs.filter(dialog => {
4276
+ const style = window.getComputedStyle(dialog);
4277
+ return style.display !== 'none' && !this.isElementClosing(dialog);
4278
+ }).length;
4279
+ // Library backdrops - check if showing (backdrops can be transparent but still present)
4278
4280
  const libraryBackdrops = Array.from(this._containerElement.querySelectorAll('.cqa-dialog-backdrop'));
4279
- const visibleLibraryBackdrops = libraryBackdrops.filter(backdrop => {
4280
- // Backdrops might have low opacity but should still be considered if they're showing
4281
+ const activeLibraryBackdrops = libraryBackdrops.filter(backdrop => {
4281
4282
  const style = window.getComputedStyle(backdrop);
4283
+ // Backdrop is active if it's showing (has the showing class) and not display: none
4282
4284
  return style.display !== 'none' && backdrop.classList.contains('cdk-overlay-backdrop-showing');
4283
4285
  }).length;
4284
- // Select panels - check visibility
4286
+ // Select panels - count if not closing
4285
4287
  const selectPanels = Array.from(this._containerElement.querySelectorAll('.ctc-select-panel'));
4286
- const visibleSelectPanels = selectPanels.filter(panel => this.isElementVisible(panel)).length;
4287
- // Date panels - check visibility
4288
+ const activeSelectPanels = selectPanels.filter(panel => {
4289
+ const style = window.getComputedStyle(panel);
4290
+ return style.display !== 'none' && !this.isElementClosing(panel);
4291
+ }).length;
4292
+ // Date panels - count if not closing
4288
4293
  const datePanels = Array.from(this._containerElement.querySelectorAll('.ctc-date-range-panel'));
4289
- const visibleDatePanels = datePanels.filter(panel => this.isElementVisible(panel)).length;
4290
- const totalLibraryOverlays = visibleLibraryDialogs + visibleLibraryBackdrops + visibleSelectPanels + visibleDatePanels;
4294
+ const activeDatePanels = datePanels.filter(panel => {
4295
+ const style = window.getComputedStyle(panel);
4296
+ return style.display !== 'none' && !this.isElementClosing(panel);
4297
+ }).length;
4298
+ const totalLibraryOverlays = activeLibraryDialogs + activeLibraryBackdrops + activeSelectPanels + activeDatePanels;
4291
4299
  // Check for portal Material dialogs (those without .cqa-dialog-panel class)
4292
4300
  // Portal dialogs use .mat-dialog-container but NOT .cqa-dialog-panel
4301
+ // Only count visible portal dialogs to avoid false positives
4293
4302
  const portalDialogs = Array.from(this._containerElement.querySelectorAll('.mat-dialog-container:not(.cqa-dialog-panel)'));
4294
- const visiblePortalDialogs = portalDialogs.filter(dialog => this.isElementVisible(dialog)).length;
4295
- // Decision logic: Only add cqa-ui-root when VISIBLE library overlays are present
4296
- // This ensures portal Material dialogs don't get affected by library CSS
4297
- // even if library overlays are in the DOM but closing/hidden
4303
+ const visiblePortalDialogs = portalDialogs.filter(dialog => {
4304
+ const style = window.getComputedStyle(dialog);
4305
+ const rect = dialog.getBoundingClientRect();
4306
+ return style.display !== 'none' &&
4307
+ parseFloat(style.opacity) > 0.1 &&
4308
+ rect.width > 0 &&
4309
+ rect.height > 0;
4310
+ }).length;
4311
+ // Decision logic: Add cqa-ui-root when library overlays are present (even during opening animations)
4312
+ // Remove it only when library overlays are clearly gone or closing
4313
+ // This ensures library overlays get styles immediately, while portal dialogs don't get affected
4298
4314
  if (totalLibraryOverlays > 0) {
4299
- // Visible library overlays exist - add the class (they need Tailwind styles scoped to .cqa-ui-root)
4315
+ // Library overlays exist - add the class (they need Tailwind styles scoped to .cqa-ui-root)
4300
4316
  this._containerElement.classList.add('cqa-ui-root');
4301
4317
  }
4302
4318
  else {
4303
- // No visible library overlays exist - remove the class
4319
+ // No active library overlays exist - remove the class
4304
4320
  // This handles:
4305
4321
  // 1. Only portal dialogs exist (should not have cqa-ui-root)
4306
- // 2. Library overlays are closing/hidden (should not have cqa-ui-root)
4322
+ // 2. Library overlays are closing/closed (should not have cqa-ui-root)
4307
4323
  // 3. No overlays exist at all (clean state)
4308
4324
  this._containerElement.classList.remove('cqa-ui-root');
4309
4325
  }
4310
- // Note: If both library overlays and portal dialogs exist simultaneously and are visible,
4326
+ // Note: If both library overlays and portal dialogs exist simultaneously,
4311
4327
  // the class will be present because library overlays need it. In this case,
4312
4328
  // portal dialogs may be affected by library CSS. To avoid this, ensure library
4313
4329
  // overlays are closed before opening portal dialogs, or use CSS specificity