mis-crystal-design-system 18.0.19 → 18.0.20

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.
@@ -1,178 +1,166 @@
1
- import { Component, EventEmitter, Input, Output, HostListener } from "@angular/core";
1
+ import { Component, EventEmitter, Input, Output, HostListener, ViewChild } from "@angular/core";
2
+ import { ConnectionPositionPair, OverlayConfig } from "@angular/cdk/overlay";
3
+ import { TemplatePortal } from "@angular/cdk/portal";
2
4
  import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- import * as i2 from "mis-crystal-design-system/checkbox";
5
- const _c0 = a0 => ({ disabled: a0 });
5
+ import * as i1 from "@angular/cdk/overlay";
6
+ import * as i2 from "@angular/common";
7
+ import * as i3 from "mis-crystal-design-system/checkbox";
8
+ const _c0 = ["dropdownMenu"];
9
+ const _c1 = ["dropdownTrigger"];
10
+ const _c2 = a0 => ({ disabled: a0 });
6
11
  function ActionsCellComponent_div_1_div_1_Template(rf, ctx) { if (rf & 1) {
7
12
  const _r1 = i0.ɵɵgetCurrentView();
8
- i0.ɵɵelementStart(0, "div", 7);
13
+ i0.ɵɵelementStart(0, "div", 9);
9
14
  i0.ɵɵlistener("click", function ActionsCellComponent_div_1_div_1_Template_div_click_0_listener($event) { const item_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onActionClick(item_r2, $event)); });
10
- i0.ɵɵelement(1, "img", 8);
15
+ i0.ɵɵelement(1, "img", 10);
11
16
  i0.ɵɵelementEnd();
12
17
  } if (rf & 2) {
13
18
  const item_r2 = ctx.$implicit;
14
19
  const ctx_r2 = i0.ɵɵnextContext(2);
15
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c0, ctx_r2.isDisabled(item_r2)));
20
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c2, ctx_r2.isDisabled(item_r2)));
16
21
  i0.ɵɵadvance();
17
22
  i0.ɵɵproperty("src", item_r2.icon, i0.ɵɵsanitizeUrl)("alt", item_r2.label);
18
23
  } }
19
24
  function ActionsCellComponent_div_1_Template(rf, ctx) { if (rf & 1) {
20
- i0.ɵɵelementStart(0, "div", 5);
21
- i0.ɵɵtemplate(1, ActionsCellComponent_div_1_div_1_Template, 2, 5, "div", 6);
25
+ i0.ɵɵelementStart(0, "div", 7);
26
+ i0.ɵɵtemplate(1, ActionsCellComponent_div_1_div_1_Template, 2, 5, "div", 8);
22
27
  i0.ɵɵelementEnd();
23
28
  } if (rf & 2) {
24
29
  const ctx_r2 = i0.ɵɵnextContext();
25
30
  i0.ɵɵadvance();
26
31
  i0.ɵɵproperty("ngForOf", ctx_r2.actionItems)("ngForTrackBy", ctx_r2.trackByAction);
27
32
  } }
28
- function ActionsCellComponent_div_2_div_6_div_1_ng_container_1_span_1_Template(rf, ctx) { if (rf & 1) {
29
- i0.ɵɵelementStart(0, "span", 26);
30
- i0.ɵɵelement(1, "img", 27);
33
+ function ActionsCellComponent_div_2_Template(rf, ctx) { if (rf & 1) {
34
+ const _r4 = i0.ɵɵgetCurrentView();
35
+ i0.ɵɵelementStart(0, "div", 11)(1, "div", 12, 1);
36
+ i0.ɵɵlistener("click", function ActionsCellComponent_div_2_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleDropdown($event)); });
37
+ i0.ɵɵnamespaceSVG();
38
+ i0.ɵɵelementStart(3, "svg", 13);
39
+ i0.ɵɵelement(4, "circle", 14)(5, "circle", 15)(6, "circle", 16);
40
+ i0.ɵɵelementEnd()()();
41
+ } }
42
+ function ActionsCellComponent_div_3_Template(rf, ctx) { if (rf & 1) {
43
+ const _r5 = i0.ɵɵgetCurrentView();
44
+ i0.ɵɵelementStart(0, "div", 17)(1, "mis-checkbox", 18);
45
+ i0.ɵɵlistener("valueChange", function ActionsCellComponent_div_3_Template_mis_checkbox_valueChange_1_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onCheckboxChange($event)); });
46
+ i0.ɵɵelementEnd()();
47
+ } if (rf & 2) {
48
+ const ctx_r2 = i0.ɵɵnextContext();
49
+ i0.ɵɵadvance();
50
+ i0.ɵɵproperty("checked", ctx_r2.isChecked)("disabled", ctx_r2.disable ? ctx_r2.disable(ctx_r2.data) : false);
51
+ } }
52
+ function ActionsCellComponent_ng_template_4_div_1_ng_container_1_span_1_Template(rf, ctx) { if (rf & 1) {
53
+ i0.ɵɵelementStart(0, "span", 29);
54
+ i0.ɵɵelement(1, "img", 30);
31
55
  i0.ɵɵelementEnd();
32
56
  } if (rf & 2) {
33
- const item_r6 = i0.ɵɵnextContext(2).$implicit;
57
+ const item_r7 = i0.ɵɵnextContext(2).$implicit;
34
58
  i0.ɵɵadvance();
35
- i0.ɵɵproperty("src", item_r6.icon, i0.ɵɵsanitizeUrl);
59
+ i0.ɵɵproperty("src", item_r7.icon, i0.ɵɵsanitizeUrl);
36
60
  } }
37
- function ActionsCellComponent_div_2_div_6_div_1_ng_container_1_div_7_div_1_span_1_Template(rf, ctx) { if (rf & 1) {
38
- i0.ɵɵelementStart(0, "span", 26);
39
- i0.ɵɵelement(1, "img", 27);
61
+ function ActionsCellComponent_ng_template_4_div_1_ng_container_1_div_7_div_1_span_1_Template(rf, ctx) { if (rf & 1) {
62
+ i0.ɵɵelementStart(0, "span", 29);
63
+ i0.ɵɵelement(1, "img", 30);
40
64
  i0.ɵɵelementEnd();
41
65
  } if (rf & 2) {
42
- const child_r8 = i0.ɵɵnextContext().$implicit;
66
+ const child_r9 = i0.ɵɵnextContext().$implicit;
43
67
  i0.ɵɵadvance();
44
- i0.ɵɵproperty("src", child_r8.icon, i0.ɵɵsanitizeUrl);
68
+ i0.ɵɵproperty("src", child_r9.icon, i0.ɵɵsanitizeUrl);
45
69
  } }
46
- function ActionsCellComponent_div_2_div_6_div_1_ng_container_1_div_7_div_1_Template(rf, ctx) { if (rf & 1) {
47
- const _r7 = i0.ɵɵgetCurrentView();
48
- i0.ɵɵelementStart(0, "div", 18);
49
- i0.ɵɵlistener("click", function ActionsCellComponent_div_2_div_6_div_1_ng_container_1_div_7_div_1_Template_div_click_0_listener($event) { const child_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r2 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r2.onDropdownItemClick(child_r8, $event)); });
50
- i0.ɵɵtemplate(1, ActionsCellComponent_div_2_div_6_div_1_ng_container_1_div_7_div_1_span_1_Template, 2, 1, "span", 20);
51
- i0.ɵɵelementStart(2, "span", 21);
70
+ function ActionsCellComponent_ng_template_4_div_1_ng_container_1_div_7_div_1_Template(rf, ctx) { if (rf & 1) {
71
+ const _r8 = i0.ɵɵgetCurrentView();
72
+ i0.ɵɵelementStart(0, "div", 21);
73
+ i0.ɵɵlistener("click", function ActionsCellComponent_ng_template_4_div_1_ng_container_1_div_7_div_1_Template_div_click_0_listener($event) { const child_r9 = i0.ɵɵrestoreView(_r8).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.onDropdownItemClick(child_r9, $event)); });
74
+ i0.ɵɵtemplate(1, ActionsCellComponent_ng_template_4_div_1_ng_container_1_div_7_div_1_span_1_Template, 2, 1, "span", 23);
75
+ i0.ɵɵelementStart(2, "span", 24);
52
76
  i0.ɵɵtext(3);
53
77
  i0.ɵɵelementEnd()();
54
78
  } if (rf & 2) {
55
- const child_r8 = ctx.$implicit;
56
- const ctx_r2 = i0.ɵɵnextContext(6);
57
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c0, ctx_r2.isDisabled(child_r8)));
79
+ const child_r9 = ctx.$implicit;
80
+ const ctx_r2 = i0.ɵɵnextContext(5);
81
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c2, ctx_r2.isDisabled(child_r9)));
58
82
  i0.ɵɵadvance();
59
- i0.ɵɵproperty("ngIf", child_r8.icon);
83
+ i0.ɵɵproperty("ngIf", child_r9.icon);
60
84
  i0.ɵɵadvance(2);
61
- i0.ɵɵtextInterpolate(child_r8.label);
85
+ i0.ɵɵtextInterpolate(child_r9.label);
62
86
  } }
63
- function ActionsCellComponent_div_2_div_6_div_1_ng_container_1_div_7_Template(rf, ctx) { if (rf & 1) {
64
- i0.ɵɵelementStart(0, "div", 28);
65
- i0.ɵɵtemplate(1, ActionsCellComponent_div_2_div_6_div_1_ng_container_1_div_7_div_1_Template, 4, 5, "div", 17);
87
+ function ActionsCellComponent_ng_template_4_div_1_ng_container_1_div_7_Template(rf, ctx) { if (rf & 1) {
88
+ i0.ɵɵelementStart(0, "div", 31);
89
+ i0.ɵɵtemplate(1, ActionsCellComponent_ng_template_4_div_1_ng_container_1_div_7_div_1_Template, 4, 5, "div", 20);
66
90
  i0.ɵɵelementEnd();
67
91
  } if (rf & 2) {
68
- const item_r6 = i0.ɵɵnextContext(2).$implicit;
69
- i0.ɵɵproperty("ngClass", item_r6.submenuAlign);
92
+ const item_r7 = i0.ɵɵnextContext(2).$implicit;
93
+ i0.ɵɵproperty("ngClass", item_r7.submenuAlign);
70
94
  i0.ɵɵadvance();
71
- i0.ɵɵproperty("ngForOf", item_r6.children);
95
+ i0.ɵɵproperty("ngForOf", item_r7.children);
72
96
  } }
73
- function ActionsCellComponent_div_2_div_6_div_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
97
+ function ActionsCellComponent_ng_template_4_div_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
74
98
  i0.ɵɵelementContainerStart(0);
75
- i0.ɵɵtemplate(1, ActionsCellComponent_div_2_div_6_div_1_ng_container_1_span_1_Template, 2, 1, "span", 20);
76
- i0.ɵɵelementStart(2, "span", 21);
99
+ i0.ɵɵtemplate(1, ActionsCellComponent_ng_template_4_div_1_ng_container_1_span_1_Template, 2, 1, "span", 23);
100
+ i0.ɵɵelementStart(2, "span", 24);
77
101
  i0.ɵɵtext(3);
78
102
  i0.ɵɵelementEnd();
79
- i0.ɵɵelementStart(4, "span", 22);
103
+ i0.ɵɵelementStart(4, "span", 25);
80
104
  i0.ɵɵnamespaceSVG();
81
- i0.ɵɵelementStart(5, "svg", 23);
82
- i0.ɵɵelement(6, "path", 24);
105
+ i0.ɵɵelementStart(5, "svg", 26);
106
+ i0.ɵɵelement(6, "path", 27);
83
107
  i0.ɵɵelementEnd()();
84
- i0.ɵɵtemplate(7, ActionsCellComponent_div_2_div_6_div_1_ng_container_1_div_7_Template, 2, 2, "div", 25);
108
+ i0.ɵɵtemplate(7, ActionsCellComponent_ng_template_4_div_1_ng_container_1_div_7_Template, 2, 2, "div", 28);
85
109
  i0.ɵɵelementContainerEnd();
86
110
  } if (rf & 2) {
87
- const item_r6 = i0.ɵɵnextContext().$implicit;
111
+ const item_r7 = i0.ɵɵnextContext().$implicit;
88
112
  i0.ɵɵadvance();
89
- i0.ɵɵproperty("ngIf", item_r6.icon);
113
+ i0.ɵɵproperty("ngIf", item_r7.icon);
90
114
  i0.ɵɵadvance(2);
91
- i0.ɵɵtextInterpolate(item_r6.label);
115
+ i0.ɵɵtextInterpolate(item_r7.label);
92
116
  i0.ɵɵadvance(4);
93
- i0.ɵɵproperty("ngIf", item_r6.showSubmenu);
117
+ i0.ɵɵproperty("ngIf", item_r7.showSubmenu);
94
118
  } }
95
- function ActionsCellComponent_div_2_div_6_div_1_ng_template_2_span_0_Template(rf, ctx) { if (rf & 1) {
96
- i0.ɵɵelementStart(0, "span", 26);
97
- i0.ɵɵelement(1, "img", 27);
119
+ function ActionsCellComponent_ng_template_4_div_1_ng_template_2_span_0_Template(rf, ctx) { if (rf & 1) {
120
+ i0.ɵɵelementStart(0, "span", 29);
121
+ i0.ɵɵelement(1, "img", 30);
98
122
  i0.ɵɵelementEnd();
99
123
  } if (rf & 2) {
100
- const item_r6 = i0.ɵɵnextContext(2).$implicit;
124
+ const item_r7 = i0.ɵɵnextContext(2).$implicit;
101
125
  i0.ɵɵadvance();
102
- i0.ɵɵproperty("src", item_r6.icon, i0.ɵɵsanitizeUrl);
126
+ i0.ɵɵproperty("src", item_r7.icon, i0.ɵɵsanitizeUrl);
103
127
  } }
104
- function ActionsCellComponent_div_2_div_6_div_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {
105
- i0.ɵɵtemplate(0, ActionsCellComponent_div_2_div_6_div_1_ng_template_2_span_0_Template, 2, 1, "span", 20);
106
- i0.ɵɵelementStart(1, "span", 21);
128
+ function ActionsCellComponent_ng_template_4_div_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {
129
+ i0.ɵɵtemplate(0, ActionsCellComponent_ng_template_4_div_1_ng_template_2_span_0_Template, 2, 1, "span", 23);
130
+ i0.ɵɵelementStart(1, "span", 24);
107
131
  i0.ɵɵtext(2);
108
132
  i0.ɵɵelementEnd();
109
133
  } if (rf & 2) {
110
- const item_r6 = i0.ɵɵnextContext().$implicit;
111
- i0.ɵɵproperty("ngIf", item_r6.icon);
134
+ const item_r7 = i0.ɵɵnextContext().$implicit;
135
+ i0.ɵɵproperty("ngIf", item_r7.icon);
112
136
  i0.ɵɵadvance(2);
113
- i0.ɵɵtextInterpolate(item_r6.label);
114
- } }
115
- function ActionsCellComponent_div_2_div_6_div_1_Template(rf, ctx) { if (rf & 1) {
116
- const _r5 = i0.ɵɵgetCurrentView();
117
- i0.ɵɵelementStart(0, "div", 18);
118
- i0.ɵɵlistener("click", function ActionsCellComponent_div_2_div_6_div_1_Template_div_click_0_listener($event) { const item_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onDropdownItemClick(item_r6, $event)); });
119
- i0.ɵɵtemplate(1, ActionsCellComponent_div_2_div_6_div_1_ng_container_1_Template, 8, 3, "ng-container", 19)(2, ActionsCellComponent_div_2_div_6_div_1_ng_template_2_Template, 3, 2, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
120
- i0.ɵɵelementEnd();
121
- } if (rf & 2) {
122
- const item_r6 = ctx.$implicit;
123
- const noChildren_r9 = i0.ɵɵreference(3);
124
- const ctx_r2 = i0.ɵɵnextContext(3);
125
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c0, ctx_r2.isDisabled(item_r6)));
126
- i0.ɵɵadvance();
127
- i0.ɵɵproperty("ngIf", item_r6.children == null ? null : item_r6.children.length)("ngIfElse", noChildren_r9);
137
+ i0.ɵɵtextInterpolate(item_r7.label);
128
138
  } }
129
- function ActionsCellComponent_div_2_div_6_Template(rf, ctx) { if (rf & 1) {
130
- i0.ɵɵelementStart(0, "div", 16);
131
- i0.ɵɵtemplate(1, ActionsCellComponent_div_2_div_6_div_1_Template, 4, 5, "div", 17);
139
+ function ActionsCellComponent_ng_template_4_div_1_Template(rf, ctx) { if (rf & 1) {
140
+ const _r6 = i0.ɵɵgetCurrentView();
141
+ i0.ɵɵelementStart(0, "div", 21);
142
+ i0.ɵɵlistener("click", function ActionsCellComponent_ng_template_4_div_1_Template_div_click_0_listener($event) { const item_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onDropdownItemClick(item_r7, $event)); });
143
+ i0.ɵɵtemplate(1, ActionsCellComponent_ng_template_4_div_1_ng_container_1_Template, 8, 3, "ng-container", 22)(2, ActionsCellComponent_ng_template_4_div_1_ng_template_2_Template, 3, 2, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
132
144
  i0.ɵɵelementEnd();
133
145
  } if (rf & 2) {
146
+ const item_r7 = ctx.$implicit;
147
+ const noChildren_r10 = i0.ɵɵreference(3);
134
148
  const ctx_r2 = i0.ɵɵnextContext(2);
135
- i0.ɵɵproperty("ngClass", ctx_r2.menuAlign);
149
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c2, ctx_r2.isDisabled(item_r7)));
136
150
  i0.ɵɵadvance();
137
- i0.ɵɵproperty("ngForOf", ctx_r2.actionItems);
151
+ i0.ɵɵproperty("ngIf", item_r7.children == null ? null : item_r7.children.length)("ngIfElse", noChildren_r10);
138
152
  } }
139
- function ActionsCellComponent_div_2_Template(rf, ctx) { if (rf & 1) {
140
- const _r4 = i0.ɵɵgetCurrentView();
141
- i0.ɵɵelementStart(0, "div", 9)(1, "div", 10);
142
- i0.ɵɵlistener("click", function ActionsCellComponent_div_2_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleDropdown($event)); });
143
- i0.ɵɵnamespaceSVG();
144
- i0.ɵɵelementStart(2, "svg", 11);
145
- i0.ɵɵelement(3, "circle", 12)(4, "circle", 13)(5, "circle", 14);
146
- i0.ɵɵelementEnd()();
147
- i0.ɵɵtemplate(6, ActionsCellComponent_div_2_div_6_Template, 2, 2, "div", 15);
153
+ function ActionsCellComponent_ng_template_4_Template(rf, ctx) { if (rf & 1) {
154
+ i0.ɵɵelementStart(0, "div", 19);
155
+ i0.ɵɵtemplate(1, ActionsCellComponent_ng_template_4_div_1_Template, 4, 5, "div", 20);
148
156
  i0.ɵɵelementEnd();
149
157
  } if (rf & 2) {
150
158
  const ctx_r2 = i0.ɵɵnextContext();
151
- i0.ɵɵadvance(6);
152
- i0.ɵɵproperty("ngIf", ctx_r2.isDropdownOpen);
153
- } }
154
- function ActionsCellComponent_div_3_Template(rf, ctx) { if (rf & 1) {
155
- const _r10 = i0.ɵɵgetCurrentView();
156
- i0.ɵɵelementStart(0, "div", 29)(1, "mis-checkbox", 30);
157
- i0.ɵɵlistener("valueChange", function ActionsCellComponent_div_3_Template_mis_checkbox_valueChange_1_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onCheckboxChange($event)); });
158
- i0.ɵɵelementEnd()();
159
- } if (rf & 2) {
160
- const ctx_r2 = i0.ɵɵnextContext();
159
+ i0.ɵɵproperty("ngClass", ctx_r2.menuAlign);
161
160
  i0.ɵɵadvance();
162
- i0.ɵɵproperty("checked", ctx_r2.isChecked)("disabled", ctx_r2.disable ? ctx_r2.disable(ctx_r2.data) : false);
161
+ i0.ɵɵproperty("ngForOf", ctx_r2.actionItems);
163
162
  } }
164
163
  export class ActionsCellComponent {
165
- constructor() {
166
- this.isChecked = false;
167
- this.actionClick = new EventEmitter();
168
- this.isDropdownOpen = false;
169
- this.actionItems = [];
170
- this.actionType = "inline";
171
- this.submenuAlign = "right";
172
- this.menuAlign = "left";
173
- this._style = {};
174
- this.containerStyle = {};
175
- }
176
164
  set rowData(value) {
177
165
  if (this.actionType === 'checkbox') {
178
166
  // For checkbox, keep the rowData structure
@@ -195,7 +183,24 @@ export class ActionsCellComponent {
195
183
  this.disable = config.disable;
196
184
  this.processStyle();
197
185
  }
186
+ constructor(overlay, viewContainerRef) {
187
+ this.overlay = overlay;
188
+ this.viewContainerRef = viewContainerRef;
189
+ this.isChecked = false;
190
+ this.actionClick = new EventEmitter();
191
+ this.isDropdownOpen = false;
192
+ this.actionItems = [];
193
+ this.actionType = "inline";
194
+ this.submenuAlign = "right";
195
+ this.menuAlign = "left";
196
+ this._style = {};
197
+ this.containerStyle = {};
198
+ this.overlayRef = null;
199
+ }
198
200
  ngOnInit() { }
201
+ ngOnDestroy() {
202
+ this.closeDropdown();
203
+ }
199
204
  processStyle() {
200
205
  // Remove width from style to avoid conflicts with table column width
201
206
  const { width, ...restStyle } = this._style;
@@ -222,14 +227,60 @@ export class ActionsCellComponent {
222
227
  }
223
228
  onDocumentClick() {
224
229
  if (this.isDropdownOpen) {
225
- this.isDropdownOpen = false;
230
+ this.closeDropdown();
226
231
  }
227
232
  }
228
233
  toggleDropdown(event) {
229
234
  event.stopPropagation();
230
- this.isDropdownOpen = !this.isDropdownOpen;
231
- // Close all submenus when opening/closing main menu
235
+ if (this.isDropdownOpen) {
236
+ this.closeDropdown();
237
+ }
238
+ else {
239
+ this.openDropdown();
240
+ }
241
+ }
242
+ openDropdown() {
243
+ if (!this.dropdownTrigger || !this.dropdownMenu)
244
+ return;
245
+ // Close all submenus when opening main menu
232
246
  this.actionItems.forEach((item) => (item.showSubmenu = false));
247
+ const positions = this.getDropdownPositions();
248
+ const overlayConfig = new OverlayConfig({
249
+ hasBackdrop: true,
250
+ backdropClass: 'cdk-overlay-transparent-backdrop',
251
+ positionStrategy: this.overlay
252
+ .position()
253
+ .flexibleConnectedTo(this.dropdownTrigger)
254
+ .withPositions(positions)
255
+ .withPush(true),
256
+ scrollStrategy: this.overlay.scrollStrategies.reposition()
257
+ });
258
+ this.overlayRef = this.overlay.create(overlayConfig);
259
+ const portal = new TemplatePortal(this.dropdownMenu, this.viewContainerRef);
260
+ this.overlayRef.attach(portal);
261
+ this.overlayRef.backdropClick().subscribe(() => {
262
+ this.closeDropdown();
263
+ });
264
+ this.isDropdownOpen = true;
265
+ }
266
+ closeDropdown() {
267
+ if (this.overlayRef) {
268
+ this.overlayRef.dispose();
269
+ this.overlayRef = null;
270
+ }
271
+ this.isDropdownOpen = false;
272
+ }
273
+ getDropdownPositions() {
274
+ const positions = [];
275
+ if (this.menuAlign === 'left') {
276
+ // Menu opens to the left of trigger
277
+ positions.push(new ConnectionPositionPair({ originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' }, 0, 4), new ConnectionPositionPair({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'bottom' }, 0, -4));
278
+ }
279
+ else {
280
+ // Menu opens to the right of trigger
281
+ positions.push(new ConnectionPositionPair({ originX: 'end', originY: 'bottom' }, { overlayX: 'end', overlayY: 'top' }, 0, 4), new ConnectionPositionPair({ originX: 'end', originY: 'top' }, { overlayX: 'end', overlayY: 'bottom' }, 0, -4));
282
+ }
283
+ return positions;
233
284
  }
234
285
  onDropdownItemClick(item, event) {
235
286
  event.stopPropagation();
@@ -249,7 +300,7 @@ export class ActionsCellComponent {
249
300
  if (item.action)
250
301
  item.action(this.data);
251
302
  this.actionClick.emit({ item, data: this.data });
252
- this.isDropdownOpen = false; // Only close if action was executed
303
+ this.closeDropdown(); // Only close if action was executed
253
304
  }
254
305
  }
255
306
  onCheckboxChange(event) {
@@ -265,13 +316,21 @@ export class ActionsCellComponent {
265
316
  }
266
317
  return false;
267
318
  }
268
- static { this.ɵfac = function ActionsCellComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ActionsCellComponent)(); }; }
269
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ActionsCellComponent, selectors: [["mis-actions-cell"]], hostBindings: function ActionsCellComponent_HostBindings(rf, ctx) { if (rf & 1) {
319
+ static { this.ɵfac = function ActionsCellComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ActionsCellComponent)(i0.ɵɵdirectiveInject(i1.Overlay), i0.ɵɵdirectiveInject(i0.ViewContainerRef)); }; }
320
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ActionsCellComponent, selectors: [["mis-actions-cell"]], viewQuery: function ActionsCellComponent_Query(rf, ctx) { if (rf & 1) {
321
+ i0.ɵɵviewQuery(_c0, 5);
322
+ i0.ɵɵviewQuery(_c1, 5);
323
+ } if (rf & 2) {
324
+ let _t;
325
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dropdownMenu = _t.first);
326
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dropdownTrigger = _t.first);
327
+ } }, hostBindings: function ActionsCellComponent_HostBindings(rf, ctx) { if (rf & 1) {
270
328
  i0.ɵɵlistener("click", function ActionsCellComponent_click_HostBindingHandler() { return ctx.onDocumentClick(); }, false, i0.ɵɵresolveDocument);
271
- } }, inputs: { rowData: "rowData", isChecked: "isChecked", config: "config" }, outputs: { actionClick: "actionClick" }, decls: 4, vars: 4, consts: [["noChildren", ""], [1, "actions-cell-container", 3, "ngStyle"], ["class", "inline-actions", 4, "ngIf"], ["class", "dropdown-actions", 4, "ngIf"], ["class", "checkbox-actions", 4, "ngIf"], [1, "inline-actions"], ["class", "action-item", 3, "ngClass", "click", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "action-item", 3, "click", "ngClass"], [1, "action-icon-svg", 3, "src", "alt"], [1, "dropdown-actions"], ["title", "More actions", 1, "dropdown-trigger", 3, "click"], ["width", "20", "height", "20", "viewBox", "0 0 20 20", "fill", "none"], ["cx", "10", "cy", "4", "r", "2", "fill", "#333"], ["cx", "10", "cy", "10", "r", "2", "fill", "#333"], ["cx", "10", "cy", "16", "r", "2", "fill", "#333"], ["class", "dropdown-menu", 3, "ngClass", 4, "ngIf"], [1, "dropdown-menu", 3, "ngClass"], ["class", "dropdown-menu-item", 3, "ngClass", "click", 4, "ngFor", "ngForOf"], [1, "dropdown-menu-item", 3, "click", "ngClass"], [4, "ngIf", "ngIfElse"], ["class", "dropdown-icon", 4, "ngIf"], [1, "dropdown-label"], [1, "submenu-arrow"], ["width", "20", "height", "20", "viewBox", "0 0 24 24", "fill", "none"], ["d", "M9 6L15 12L9 18", "stroke", "#0D1321", "stroke-width", "2", "stroke-linecap", "round", "stroke-linejoin", "round"], ["class", "dropdown-submenu", 3, "ngClass", 4, "ngIf"], [1, "dropdown-icon"], [3, "src"], [1, "dropdown-submenu", 3, "ngClass"], [1, "checkbox-actions"], [3, "valueChange", "checked", "disabled"]], template: function ActionsCellComponent_Template(rf, ctx) { if (rf & 1) {
272
- i0.ɵɵelementStart(0, "div", 1);
273
- i0.ɵɵtemplate(1, ActionsCellComponent_div_1_Template, 2, 2, "div", 2)(2, ActionsCellComponent_div_2_Template, 7, 1, "div", 3)(3, ActionsCellComponent_div_3_Template, 2, 2, "div", 4);
329
+ } }, inputs: { rowData: "rowData", isChecked: "isChecked", config: "config" }, outputs: { actionClick: "actionClick" }, decls: 6, vars: 4, consts: [["dropdownMenu", ""], ["dropdownTrigger", ""], ["noChildren", ""], [1, "actions-cell-container", 3, "ngStyle"], ["class", "inline-actions", 4, "ngIf"], ["class", "dropdown-actions", 4, "ngIf"], ["class", "checkbox-actions", 4, "ngIf"], [1, "inline-actions"], ["class", "action-item", 3, "ngClass", "click", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "action-item", 3, "click", "ngClass"], [1, "action-icon-svg", 3, "src", "alt"], [1, "dropdown-actions"], ["title", "More actions", 1, "dropdown-trigger", 3, "click"], ["width", "20", "height", "20", "viewBox", "0 0 20 20", "fill", "none"], ["cx", "10", "cy", "4", "r", "2", "fill", "#333"], ["cx", "10", "cy", "10", "r", "2", "fill", "#333"], ["cx", "10", "cy", "16", "r", "2", "fill", "#333"], [1, "checkbox-actions"], [3, "valueChange", "checked", "disabled"], [1, "dropdown-menu-overlay", 3, "ngClass"], ["class", "dropdown-menu-item", 3, "ngClass", "click", 4, "ngFor", "ngForOf"], [1, "dropdown-menu-item", 3, "click", "ngClass"], [4, "ngIf", "ngIfElse"], ["class", "dropdown-icon", 4, "ngIf"], [1, "dropdown-label"], [1, "submenu-arrow"], ["width", "20", "height", "20", "viewBox", "0 0 24 24", "fill", "none"], ["d", "M9 6L15 12L9 18", "stroke", "#0D1321", "stroke-width", "2", "stroke-linecap", "round", "stroke-linejoin", "round"], ["class", "dropdown-submenu", 3, "ngClass", 4, "ngIf"], [1, "dropdown-icon"], [3, "src"], [1, "dropdown-submenu", 3, "ngClass"]], template: function ActionsCellComponent_Template(rf, ctx) { if (rf & 1) {
330
+ i0.ɵɵelementStart(0, "div", 3);
331
+ i0.ɵɵtemplate(1, ActionsCellComponent_div_1_Template, 2, 2, "div", 4)(2, ActionsCellComponent_div_2_Template, 7, 0, "div", 5)(3, ActionsCellComponent_div_3_Template, 2, 2, "div", 6);
274
332
  i0.ɵɵelementEnd();
333
+ i0.ɵɵtemplate(4, ActionsCellComponent_ng_template_4_Template, 2, 2, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
275
334
  } if (rf & 2) {
276
335
  i0.ɵɵproperty("ngStyle", ctx.containerStyle);
277
336
  i0.ɵɵadvance();
@@ -280,12 +339,12 @@ export class ActionsCellComponent {
280
339
  i0.ɵɵproperty("ngIf", ctx.actionType === "dropdown");
281
340
  i0.ɵɵadvance();
282
341
  i0.ɵɵproperty("ngIf", ctx.actionType === "checkbox");
283
- } }, dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgStyle, i2.CheckboxComponent], styles: [".actions-cell-container[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;width:100%;height:100%;position:relative;box-sizing:border-box}.inline-actions[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;height:100%;flex-wrap:nowrap;padding:4px 0;flex-direction:row}.action-item[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;height:20px;border-radius:4px;cursor:pointer;transition:all .2s ease;background-color:transparent;border:none;outline:none;flex-shrink:0;min-height:20px}.action-item[_ngcontent-%COMP%]:hover:not(.disabled){background-color:#0000000a;transform:scale(1.05)}.action-item[_ngcontent-%COMP%]:active:not(.disabled){transform:scale(.95)}.action-item.disabled[_ngcontent-%COMP%]{opacity:.5;cursor:not-allowed}.action-item.disabled[_ngcontent-%COMP%]:hover{background-color:transparent;transform:none}.action-icon[_ngcontent-%COMP%]{font-size:16px;color:#666;display:flex;align-items:center;justify-content:center;width:100%;height:100%}.action-icon-svg[_ngcontent-%COMP%]{width:18px;height:18px;object-fit:contain;filter:brightness(0) saturate(100%) invert(40%) sepia(0%) saturate(0%) hue-rotate(0deg) brightness(.6) contrast(1);flex-shrink:0}.action-icon-svg[_ngcontent-%COMP%]:hover{filter:brightness(0) saturate(100%) invert(0%) sepia(0%) saturate(0%) hue-rotate(0deg) brightness(0) contrast(1)}.dropdown-trigger[_ngcontent-%COMP%]{cursor:pointer}.dropdown-actions[_ngcontent-%COMP%]{position:relative}.dropdown-trigger[_ngcontent-%COMP%]{cursor:pointer;display:flex;align-items:center;justify-content:center}.dropdown-menu[_ngcontent-%COMP%]{position:absolute;top:100%;width:232px;background:#fff;border-radius:12px;box-shadow:0 4px 24px #0000001f;z-index:1000;padding:8px 0}.dropdown-menu.left[_ngcontent-%COMP%]{right:0!important;left:auto!important}.dropdown-menu.right[_ngcontent-%COMP%]{left:0!important;right:auto!important}.dropdown-menu-item.disabled[_ngcontent-%COMP%]{color:#aaa;cursor:not-allowed}.dropdown-menu-item[_ngcontent-%COMP%]:hover:not(.disabled), .dropdown-menu-item.has-submenu[_ngcontent-%COMP%]:hover{background:#f5f5f5}.dropdown-menu-item[_ngcontent-%COMP%]{display:flex;align-items:center;padding:10px 18px;cursor:pointer;font-size:14px;position:relative}.dropdown-menu-item[_ngcontent-%COMP%] .dropdown-label[_ngcontent-%COMP%]{flex:1;margin-left:8px}.dropdown-menu-item[_ngcontent-%COMP%] .submenu-arrow[_ngcontent-%COMP%]{margin-left:auto;width:16px;height:16px}.submenu-container[_ngcontent-%COMP%]{position:absolute;top:0;left:100%;margin-left:4px;background:#fff;box-shadow:0 4px 8px #0000001a;border-radius:8px;z-index:1000;white-space:nowrap}.dropdown-submenu[_ngcontent-%COMP%]{position:absolute;top:0;min-width:132px;background:#fff;border-radius:12px;box-shadow:0 4px 24px #0000001f;padding:8px 0;z-index:1001}.dropdown-submenu.right[_ngcontent-%COMP%]{left:100%;margin-left:4px}.dropdown-submenu.left[_ngcontent-%COMP%]{left:auto;right:100%;background-color:#fff;border:1px solid #ddd;z-index:9999;position:absolute;margin-right:4px}.submenu-arrow[_ngcontent-%COMP%]{display:flex;align-items:center;margin-left:auto;z-index:9999}.dropdown-icon[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center}.dropdown-menu-item.disabled[_ngcontent-%COMP%]{color:#181f33;filter:grayscale(100%) opacity(.3);cursor:not-allowed}"] }); }
342
+ } }, dependencies: [i2.NgClass, i2.NgForOf, i2.NgIf, i2.NgStyle, i3.CheckboxComponent], styles: [".actions-cell-container[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;width:100%;height:100%;position:relative;box-sizing:border-box}.inline-actions[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;height:100%;flex-wrap:nowrap;padding:4px 0;flex-direction:row}.action-item[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;height:20px;border-radius:4px;cursor:pointer;transition:all .2s ease;background-color:transparent;border:none;outline:none;flex-shrink:0;min-height:20px}.action-item[_ngcontent-%COMP%]:hover:not(.disabled){background-color:#0000000a;transform:scale(1.05)}.action-item[_ngcontent-%COMP%]:active:not(.disabled){transform:scale(.95)}.action-item.disabled[_ngcontent-%COMP%]{opacity:.5;cursor:not-allowed}.action-item.disabled[_ngcontent-%COMP%]:hover{background-color:transparent;transform:none}.action-icon[_ngcontent-%COMP%]{font-size:16px;color:#666;display:flex;align-items:center;justify-content:center;width:100%;height:100%}.action-icon-svg[_ngcontent-%COMP%]{width:18px;height:18px;object-fit:contain;filter:brightness(0) saturate(100%) invert(40%) sepia(0%) saturate(0%) hue-rotate(0deg) brightness(.6) contrast(1);flex-shrink:0}.action-icon-svg[_ngcontent-%COMP%]:hover{filter:brightness(0) saturate(100%) invert(0%) sepia(0%) saturate(0%) hue-rotate(0deg) brightness(0) contrast(1)}.dropdown-trigger[_ngcontent-%COMP%]{cursor:pointer;display:flex;align-items:center;justify-content:center}.dropdown-actions[_ngcontent-%COMP%]{position:relative}.dropdown-menu-overlay[_ngcontent-%COMP%]{width:232px;background:#fff;border-radius:12px;box-shadow:0 4px 24px #0000001f;padding:8px 0;z-index:1000}.dropdown-menu-item.disabled[_ngcontent-%COMP%]{color:#aaa;cursor:not-allowed}.dropdown-menu-item[_ngcontent-%COMP%]:hover:not(.disabled), .dropdown-menu-item.has-submenu[_ngcontent-%COMP%]:hover{background:#f5f5f5}.dropdown-menu-item[_ngcontent-%COMP%]{display:flex;align-items:center;padding:10px 18px;cursor:pointer;font-size:14px;position:relative}.dropdown-menu-item[_ngcontent-%COMP%] .dropdown-label[_ngcontent-%COMP%]{flex:1;margin-left:8px}.dropdown-menu-item[_ngcontent-%COMP%] .submenu-arrow[_ngcontent-%COMP%]{margin-left:auto;width:16px;height:16px}.dropdown-submenu[_ngcontent-%COMP%]{position:absolute;top:0;min-width:132px;background:#fff;border-radius:12px;box-shadow:0 4px 24px #0000001f;padding:8px 0;z-index:1001}.dropdown-submenu.right[_ngcontent-%COMP%]{left:100%;margin-left:4px}.dropdown-submenu.left[_ngcontent-%COMP%]{left:auto;right:100%;background-color:#fff;border:1px solid #ddd;z-index:9999;position:absolute;margin-right:4px}.submenu-arrow[_ngcontent-%COMP%]{display:flex;align-items:center;margin-left:auto;z-index:9999}.dropdown-icon[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center}.dropdown-menu-item.disabled[_ngcontent-%COMP%]{color:#181f33;filter:grayscale(100%) opacity(.3);cursor:not-allowed}.checkbox-actions[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;width:100%;height:100%}"] }); }
284
343
  }
285
344
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ActionsCellComponent, [{
286
345
  type: Component,
287
- args: [{ selector: "mis-actions-cell", template: "<div class=\"actions-cell-container\" [ngStyle]=\"containerStyle\">\n <!-- Inline Actions -->\n <div *ngIf=\"actionType === 'inline'\" class=\"inline-actions\">\n <div\n *ngFor=\"let item of actionItems; trackBy: trackByAction\"\n class=\"action-item\"\n [ngClass]=\"{ disabled: isDisabled(item) }\"\n (click)=\"onActionClick(item, $event)\"\n >\n <img [src]=\"item.icon\" [alt]=\"item.label\" class=\"action-icon-svg\" />\n </div>\n </div>\n\n <!-- Dropdown Actions -->\n <div *ngIf=\"actionType === 'dropdown'\" class=\"dropdown-actions\">\n <div class=\"dropdown-trigger\" (click)=\"toggleDropdown($event)\" title=\"More actions\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <circle cx=\"10\" cy=\"4\" r=\"2\" fill=\"#333\" />\n <circle cx=\"10\" cy=\"10\" r=\"2\" fill=\"#333\" />\n <circle cx=\"10\" cy=\"16\" r=\"2\" fill=\"#333\" />\n </svg>\n </div>\n\n <div class=\"dropdown-menu\" *ngIf=\"isDropdownOpen\" [ngClass]=\"menuAlign\">\n <div\n class=\"dropdown-menu-item\"\n *ngFor=\"let item of actionItems\"\n (click)=\"onDropdownItemClick(item, $event)\"\n [ngClass]=\"{ disabled: isDisabled(item) }\"\n >\n <ng-container *ngIf=\"item.children?.length; else noChildren\">\n <span class=\"dropdown-icon\" *ngIf=\"item.icon\">\n <img [src]=\"item.icon\" />\n </span>\n <span class=\"dropdown-label\">{{ item.label }}</span>\n <span class=\"submenu-arrow\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M9 6L15 12L9 18\" stroke=\"#0D1321\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n\n <!-- DYNAMIC SUBMENU -->\n <div class=\"dropdown-submenu\" [ngClass]=\"item.submenuAlign\" *ngIf=\"item.showSubmenu\">\n <div\n class=\"dropdown-menu-item\"\n *ngFor=\"let child of item.children\"\n [ngClass]=\"{ disabled: isDisabled(child) }\"\n (click)=\"onDropdownItemClick(child, $event)\"\n >\n <span class=\"dropdown-icon\" *ngIf=\"child.icon\">\n <img [src]=\"child.icon\" />\n </span>\n <span class=\"dropdown-label\">{{ child.label }}</span>\n </div>\n </div>\n </ng-container>\n\n <ng-template #noChildren>\n <span class=\"dropdown-icon\" *ngIf=\"item.icon\">\n <img [src]=\"item.icon\" />\n </span>\n <span class=\"dropdown-label\">{{ item.label }}</span>\n </ng-template>\n </div>\n </div>\n </div>\n\n <!-- Checkbox Actions -->\n <div *ngIf=\"actionType === 'checkbox'\" class=\"checkbox-actions\">\n <mis-checkbox [checked]=\"isChecked\" (valueChange)=\"onCheckboxChange($event)\" [disabled]=\"disable ? disable(data) : false\"\n > </mis-checkbox>\n </div>\n</div>\n", styles: [".actions-cell-container{display:flex;align-items:center;justify-content:center;width:100%;height:100%;position:relative;box-sizing:border-box}.inline-actions{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;height:100%;flex-wrap:nowrap;padding:4px 0;flex-direction:row}.action-item{display:flex;align-items:center;justify-content:center;height:20px;border-radius:4px;cursor:pointer;transition:all .2s ease;background-color:transparent;border:none;outline:none;flex-shrink:0;min-height:20px}.action-item:hover:not(.disabled){background-color:#0000000a;transform:scale(1.05)}.action-item:active:not(.disabled){transform:scale(.95)}.action-item.disabled{opacity:.5;cursor:not-allowed}.action-item.disabled:hover{background-color:transparent;transform:none}.action-icon{font-size:16px;color:#666;display:flex;align-items:center;justify-content:center;width:100%;height:100%}.action-icon-svg{width:18px;height:18px;object-fit:contain;filter:brightness(0) saturate(100%) invert(40%) sepia(0%) saturate(0%) hue-rotate(0deg) brightness(.6) contrast(1);flex-shrink:0}.action-icon-svg:hover{filter:brightness(0) saturate(100%) invert(0%) sepia(0%) saturate(0%) hue-rotate(0deg) brightness(0) contrast(1)}.dropdown-trigger{cursor:pointer}.dropdown-actions{position:relative}.dropdown-trigger{cursor:pointer;display:flex;align-items:center;justify-content:center}.dropdown-menu{position:absolute;top:100%;width:232px;background:#fff;border-radius:12px;box-shadow:0 4px 24px #0000001f;z-index:1000;padding:8px 0}.dropdown-menu.left{right:0!important;left:auto!important}.dropdown-menu.right{left:0!important;right:auto!important}.dropdown-menu-item.disabled{color:#aaa;cursor:not-allowed}.dropdown-menu-item:hover:not(.disabled),.dropdown-menu-item.has-submenu:hover{background:#f5f5f5}.dropdown-menu-item{display:flex;align-items:center;padding:10px 18px;cursor:pointer;font-size:14px;position:relative}.dropdown-menu-item .dropdown-label{flex:1;margin-left:8px}.dropdown-menu-item .submenu-arrow{margin-left:auto;width:16px;height:16px}.submenu-container{position:absolute;top:0;left:100%;margin-left:4px;background:#fff;box-shadow:0 4px 8px #0000001a;border-radius:8px;z-index:1000;white-space:nowrap}.dropdown-submenu{position:absolute;top:0;min-width:132px;background:#fff;border-radius:12px;box-shadow:0 4px 24px #0000001f;padding:8px 0;z-index:1001}.dropdown-submenu.right{left:100%;margin-left:4px}.dropdown-submenu.left{left:auto;right:100%;background-color:#fff;border:1px solid #ddd;z-index:9999;position:absolute;margin-right:4px}.submenu-arrow{display:flex;align-items:center;margin-left:auto;z-index:9999}.dropdown-icon{display:flex;justify-content:center;align-items:center}.dropdown-menu-item.disabled{color:#181f33;filter:grayscale(100%) opacity(.3);cursor:not-allowed}\n"] }]
288
- }], null, { rowData: [{
346
+ args: [{ selector: "mis-actions-cell", template: "<div class=\"actions-cell-container\" [ngStyle]=\"containerStyle\">\n <!-- Inline Actions -->\n <div *ngIf=\"actionType === 'inline'\" class=\"inline-actions\">\n <div\n *ngFor=\"let item of actionItems; trackBy: trackByAction\"\n class=\"action-item\"\n [ngClass]=\"{ disabled: isDisabled(item) }\"\n (click)=\"onActionClick(item, $event)\"\n >\n <img [src]=\"item.icon\" [alt]=\"item.label\" class=\"action-icon-svg\" />\n </div>\n </div>\n\n <!-- Dropdown Actions -->\n <div *ngIf=\"actionType === 'dropdown'\" class=\"dropdown-actions\">\n <div #dropdownTrigger class=\"dropdown-trigger\" (click)=\"toggleDropdown($event)\" title=\"More actions\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <circle cx=\"10\" cy=\"4\" r=\"2\" fill=\"#333\" />\n <circle cx=\"10\" cy=\"10\" r=\"2\" fill=\"#333\" />\n <circle cx=\"10\" cy=\"16\" r=\"2\" fill=\"#333\" />\n </svg>\n </div>\n </div>\n\n <!-- Checkbox Actions -->\n <div *ngIf=\"actionType === 'checkbox'\" class=\"checkbox-actions\">\n <mis-checkbox [checked]=\"isChecked\" (valueChange)=\"onCheckboxChange($event)\" [disabled]=\"disable ? disable(data) : false\"\n > </mis-checkbox>\n </div>\n</div>\n\n<!-- CDK Overlay Template for Dropdown Menu -->\n<ng-template #dropdownMenu>\n <div class=\"dropdown-menu-overlay\" [ngClass]=\"menuAlign\">\n <div\n class=\"dropdown-menu-item\"\n *ngFor=\"let item of actionItems\"\n (click)=\"onDropdownItemClick(item, $event)\"\n [ngClass]=\"{ disabled: isDisabled(item) }\"\n >\n <ng-container *ngIf=\"item.children?.length; else noChildren\">\n <span class=\"dropdown-icon\" *ngIf=\"item.icon\">\n <img [src]=\"item.icon\" />\n </span>\n <span class=\"dropdown-label\">{{ item.label }}</span>\n <span class=\"submenu-arrow\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M9 6L15 12L9 18\" stroke=\"#0D1321\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n\n <!-- DYNAMIC SUBMENU -->\n <div class=\"dropdown-submenu\" [ngClass]=\"item.submenuAlign\" *ngIf=\"item.showSubmenu\">\n <div\n class=\"dropdown-menu-item\"\n *ngFor=\"let child of item.children\"\n [ngClass]=\"{ disabled: isDisabled(child) }\"\n (click)=\"onDropdownItemClick(child, $event)\"\n >\n <span class=\"dropdown-icon\" *ngIf=\"child.icon\">\n <img [src]=\"child.icon\" />\n </span>\n <span class=\"dropdown-label\">{{ child.label }}</span>\n </div>\n </div>\n </ng-container>\n\n <ng-template #noChildren>\n <span class=\"dropdown-icon\" *ngIf=\"item.icon\">\n <img [src]=\"item.icon\" />\n </span>\n <span class=\"dropdown-label\">{{ item.label }}</span>\n </ng-template>\n </div>\n </div>\n</ng-template>\n", styles: [".actions-cell-container{display:flex;align-items:center;justify-content:center;width:100%;height:100%;position:relative;box-sizing:border-box}.inline-actions{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;height:100%;flex-wrap:nowrap;padding:4px 0;flex-direction:row}.action-item{display:flex;align-items:center;justify-content:center;height:20px;border-radius:4px;cursor:pointer;transition:all .2s ease;background-color:transparent;border:none;outline:none;flex-shrink:0;min-height:20px}.action-item:hover:not(.disabled){background-color:#0000000a;transform:scale(1.05)}.action-item:active:not(.disabled){transform:scale(.95)}.action-item.disabled{opacity:.5;cursor:not-allowed}.action-item.disabled:hover{background-color:transparent;transform:none}.action-icon{font-size:16px;color:#666;display:flex;align-items:center;justify-content:center;width:100%;height:100%}.action-icon-svg{width:18px;height:18px;object-fit:contain;filter:brightness(0) saturate(100%) invert(40%) sepia(0%) saturate(0%) hue-rotate(0deg) brightness(.6) contrast(1);flex-shrink:0}.action-icon-svg:hover{filter:brightness(0) saturate(100%) invert(0%) sepia(0%) saturate(0%) hue-rotate(0deg) brightness(0) contrast(1)}.dropdown-trigger{cursor:pointer;display:flex;align-items:center;justify-content:center}.dropdown-actions{position:relative}.dropdown-menu-overlay{width:232px;background:#fff;border-radius:12px;box-shadow:0 4px 24px #0000001f;padding:8px 0;z-index:1000}.dropdown-menu-item.disabled{color:#aaa;cursor:not-allowed}.dropdown-menu-item:hover:not(.disabled),.dropdown-menu-item.has-submenu:hover{background:#f5f5f5}.dropdown-menu-item{display:flex;align-items:center;padding:10px 18px;cursor:pointer;font-size:14px;position:relative}.dropdown-menu-item .dropdown-label{flex:1;margin-left:8px}.dropdown-menu-item .submenu-arrow{margin-left:auto;width:16px;height:16px}.dropdown-submenu{position:absolute;top:0;min-width:132px;background:#fff;border-radius:12px;box-shadow:0 4px 24px #0000001f;padding:8px 0;z-index:1001}.dropdown-submenu.right{left:100%;margin-left:4px}.dropdown-submenu.left{left:auto;right:100%;background-color:#fff;border:1px solid #ddd;z-index:9999;position:absolute;margin-right:4px}.submenu-arrow{display:flex;align-items:center;margin-left:auto;z-index:9999}.dropdown-icon{display:flex;justify-content:center;align-items:center}.dropdown-menu-item.disabled{color:#181f33;filter:grayscale(100%) opacity(.3);cursor:not-allowed}.checkbox-actions{display:flex;align-items:center;justify-content:center;width:100%;height:100%}\n"] }]
347
+ }], () => [{ type: i1.Overlay }, { type: i0.ViewContainerRef }], { rowData: [{
289
348
  type: Input
290
349
  }], isChecked: [{
291
350
  type: Input
@@ -293,9 +352,15 @@ export class ActionsCellComponent {
293
352
  type: Input
294
353
  }], actionClick: [{
295
354
  type: Output
355
+ }], dropdownMenu: [{
356
+ type: ViewChild,
357
+ args: ['dropdownMenu', { static: false }]
358
+ }], dropdownTrigger: [{
359
+ type: ViewChild,
360
+ args: ['dropdownTrigger', { static: false }]
296
361
  }], onDocumentClick: [{
297
362
  type: HostListener,
298
363
  args: ["document:click"]
299
364
  }] }); })();
300
365
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ActionsCellComponent, { className: "ActionsCellComponent" }); })();
301
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy1jZWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3RhYmxlL2FjdGlvbnMtY2VsbC9hY3Rpb25zLWNlbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGFibGUvYWN0aW9ucy1jZWxsL2FjdGlvbnMtY2VsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztJQ0d6Riw4QkFLQztJQURDLG9OQUFTLHFDQUEyQixLQUFDO0lBRXJDLHlCQUFvRTtJQUN0RSxpQkFBTTs7OztJQUpKLGdGQUEwQztJQUdyQyxjQUFpQjtJQUFDLEFBQWxCLG9EQUFpQixzQkFBbUI7OztJQVA3Qyw4QkFBNEQ7SUFDMUQsMkVBS0M7SUFHSCxpQkFBTTs7O0lBUGUsY0FBZ0I7SUFBQSxBQUFoQiw0Q0FBZ0Isc0NBQXNCOzs7SUEyQm5ELGdDQUE4QztJQUM1QywwQkFBeUI7SUFDM0IsaUJBQU87OztJQURBLGNBQWlCO0lBQWpCLG9EQUFpQjs7O0lBaUJwQixnQ0FBK0M7SUFDN0MsMEJBQTBCO0lBQzVCLGlCQUFPOzs7SUFEQSxjQUFrQjtJQUFsQixxREFBa0I7Ozs7SUFQM0IsK0JBS0M7SUFEQyxzUEFBUyw0Q0FBa0MsS0FBQztJQUU1QyxxSEFBK0M7SUFHL0MsZ0NBQTZCO0lBQUEsWUFBaUI7SUFDaEQsQUFEZ0QsaUJBQU8sRUFDakQ7Ozs7SUFQSixpRkFBMkM7SUFHZCxjQUFnQjtJQUFoQixvQ0FBZ0I7SUFHaEIsZUFBaUI7SUFBakIsb0NBQWlCOzs7SUFWbEQsK0JBQXFGO0lBQ25GLDZHQUtDO0lBTUgsaUJBQU07OztJQVp3Qiw4Q0FBNkI7SUFH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SCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBVTtRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssRUFBRSxLQUFLLElBQUksS0FBSyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ3BCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDaEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdELFVBQVUsQ0FBQyxJQUFnQjtRQUN6QixJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUN2QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7cUhBckhVLG9CQUFvQjtvRUFBcEIsb0JBQW9CO1lBQXBCLHlGQUFBLHFCQUFpQixpQ0FBRzs7WUNSakMsOEJBQStEO1lBb0U3RCxBQXREQSxBQVpBLHFFQUE0RCx3REFZSSx3REFzREE7WUFJbEUsaUJBQU07O1lBeEU4Qiw0Q0FBMEI7WUFFdEQsY0FBNkI7WUFBN0Isa0RBQTZCO1lBWTdCLGNBQStCO1lBQS9CLG9EQUErQjtZQXNEL0IsY0FBK0I7WUFBL0Isb0RBQStCOzs7aUZENUQxQixvQkFBb0I7Y0FMaEMsU0FBUzsyQkFDRSxrQkFBa0I7Z0JBS2YsT0FBTztrQkFBbkIsS0FBSztZQVdHLFNBQVM7a0JBQWpCLEtBQUs7WUFDTyxNQUFNO2tCQUFsQixLQUFLO1lBV0ksV0FBVztrQkFBcEIsTUFBTTtZQThDUCxlQUFlO2tCQURkLFlBQVk7bUJBQUMsZ0JBQWdCOztrRkFyRW5CLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIEhvc3RMaXN0ZW5lciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBY3Rpb25JdGVtIH0gZnJvbSBcIi4uL3RhYmxlLmNvbXBvbmVudFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWlzLWFjdGlvbnMtY2VsbFwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2FjdGlvbnMtY2VsbC5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybDogXCIuL2FjdGlvbnMtY2VsbC5jb21wb25lbnQuY3NzXCJcbn0pXG5leHBvcnQgY2xhc3MgQWN0aW9uc0NlbGxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBzZXQgcm93RGF0YSh2YWx1ZTogYW55KXtcbiAgICBpZiAodGhpcy5hY3Rpb25UeXBlID09PSAnY2hlY2tib3gnKSB7XG4gICAgICAvLyBGb3IgY2hlY2tib3gsIGtlZXAgdGhlIHJvd0RhdGEgc3RydWN0dXJlXG4gICAgICB0aGlzLmRhdGEgPSB2YWx1ZT8ucm93RGF0YSA/PyB7fTtcbiAgICAgIHRoaXMuaXNDaGVja2VkID0gdmFsdWU/LmlzQ2hlY2tlZCA/PyBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRm9yIG90aGVyIGFjdGlvbnMgKGRyb3Bkb3duLCBpbmxpbmUpLCB1c2UgdGhlIHZhbHVlIGRpcmVjdGx5XG4gICAgICB0aGlzLmRhdGEgPSB2YWx1ZTtcbiAgICAgIHRoaXMuaXNDaGVja2VkID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpIGlzQ2hlY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzZXQgY29uZmlnKGNvbmZpZzogYW55KXtcbiAgICB0aGlzLmFjdGlvbkl0ZW1zID0gY29uZmlnPy5hY3Rpb25JdGVtcyxcbiAgICB0aGlzLmFjdGlvblR5cGUgPSBjb25maWcuYWN0aW9uVHlwZSxcbiAgICB0aGlzLnN1Ym1lbnVBbGlnbiA9IGNvbmZpZy5zdWJtZW51QWxpZ24sXG4gICAgdGhpcy5tZW51QWxpZ24gPSBjb25maWcubWVudUFsaWduXG4gICAgdGhpcy5fc3R5bGUgPSBjb25maWcuc3R5bGU7XG4gICAgdGhpcy5hY3Rpb24gPSBjb25maWcuYWN0aW9uO1xuICAgIHRoaXMuZGlzYWJsZSA9IGNvbmZpZy5kaXNhYmxlO1xuICAgIHRoaXMucHJvY2Vzc1N0eWxlKCk7XG4gIH1cblxuICBAT3V0cHV0KCkgYWN0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHsgaXRlbT86IEFjdGlvbkl0ZW07IGRhdGE6IGFueTsgaXNDaGVja2VkPzogYW55IH0+KCk7XG5cblxuICBpc0Ryb3Bkb3duT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICBhY3Rpb25JdGVtczogQWN0aW9uSXRlbVtdID0gW107XG4gIGFjdGlvblR5cGU6IFwiaW5saW5lXCIgfCBcImRyb3Bkb3duXCIgfCBcImNoZWNrYm94XCIgPSBcImlubGluZVwiO1xuICBzdWJtZW51QWxpZ246IFwibGVmdFwiIHwgXCJyaWdodFwiID0gXCJyaWdodFwiO1xuICBtZW51QWxpZ246IFwibGVmdFwiIHwgXCJyaWdodFwiID0gXCJsZWZ0XCI7XG4gIGFjdGlvbj86IChkYXRhOiBhbnkpID0+IHZvaWQ7XG4gIGRhdGE6IGFueTtcbiAgZGlzYWJsZTogKGRhdGE6IGFueSkgPT4gYm9vbGVhbjtcbiAgcHJpdmF0ZSBfc3R5bGU6IGFueSA9IHt9O1xuICBjb250YWluZXJTdHlsZTogYW55ID0ge307XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gIHByaXZhdGUgcHJvY2Vzc1N0eWxlKCk6IHZvaWQge1xuICAgIC8vIFJlbW92ZSB3aWR0aCBmcm9tIHN0eWxlIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIHRhYmxlIGNvbHVtbiB3aWR0aFxuICAgIGNvbnN0IHsgd2lkdGgsIC4uLnJlc3RTdHlsZSB9ID0gdGhpcy5fc3R5bGU7XG4gICAgdGhpcy5jb250YWluZXJTdHlsZSA9IHJlc3RTdHlsZTtcbiAgfVxuXG4gIG9uQWN0aW9uQ2xpY2soaXRlbTogQWN0aW9uSXRlbSwgZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAvLyBDaGVjayBwZXJtaXNzaW9ucyBiZWZvcmUgZXhlY3V0aW5nIGFjdGlvblxuICAgIGlmICh0aGlzLmlzRGlzYWJsZWQoaXRlbSkpIHJldHVybjtcblxuICAgIC8vIEV4ZWN1dGUgYWN0aW9uIG9ubHkgaWYgcGVybWl0dGVkXG4gICAgaWYgKGl0ZW0uYWN0aW9uKSB7XG4gICAgICBpdGVtLmFjdGlvbih0aGlzLmRhdGEpO1xuICAgIH1cblxuICAgIHRoaXMuYWN0aW9uQ2xpY2suZW1pdCh7IGl0ZW0sIGRhdGE6IHRoaXMuZGF0YSB9KTtcbiAgfVxuXG4gIHRyYWNrQnlBY3Rpb24oaW5kZXg6IG51bWJlciwgaXRlbTogQWN0aW9uSXRlbSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGl0ZW0udmFsdWU7XG4gIH1cblxuICBpc1N2Z0ZpbGUoaWNvblBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghaWNvblBhdGgpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gaWNvblBhdGgudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhcIi5zdmdcIikgfHwgaWNvblBhdGgudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhcImFzc2V0cy9pY29ucy9cIik7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKFwiZG9jdW1lbnQ6Y2xpY2tcIilcbiAgb25Eb2N1bWVudENsaWNrKCkge1xuICAgIGlmICh0aGlzLmlzRHJvcGRvd25PcGVuKSB7XG4gICAgICB0aGlzLmlzRHJvcGRvd25PcGVuID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlRHJvcGRvd24oZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9ICF0aGlzLmlzRHJvcGRvd25PcGVuO1xuICAgIC8vIENsb3NlIGFsbCBzdWJtZW51cyB3aGVuIG9wZW5pbmcvY2xvc2luZyBtYWluIG1lbnVcbiAgICB0aGlzLmFjdGlvbkl0ZW1zLmZvckVhY2goKGl0ZW06IGFueSkgPT4gKGl0ZW0uc2hvd1N1Ym1lbnUgPSBmYWxzZSkpO1xuICB9XG5cbiAgb25Ecm9wZG93bkl0ZW1DbGljayhpdGVtOiBhbnksIGV2ZW50OiBFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZChpdGVtKSkgcmV0dXJuO1xuXG4gICAgaWYgKGl0ZW0/LmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgIC8vIFRvZ2dsZSBzdWJtZW51XG4gICAgICBpdGVtLnNob3dTdWJtZW51ID0gIWl0ZW0uc2hvd1N1Ym1lbnU7XG4gICAgICAvLyBPcHRpb25hbGx5IGNsb3NlIG90aGVyIHN1Ym1lbnVzXG4gICAgICB0aGlzLmFjdGlvbkl0ZW1zLmZvckVhY2goKGk6IGFueSkgPT4ge1xuICAgICAgICBpZiAoaSAhPT0gaXRlbSkgaS5zaG93U3VibWVudSA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEhhbmRsZSBhY3Rpb25cbiAgICAgIGlmIChpdGVtLmFjdGlvbikgaXRlbS5hY3Rpb24odGhpcy5kYXRhKTtcbiAgICAgIHRoaXMuYWN0aW9uQ2xpY2suZW1pdCh7IGl0ZW0sIGRhdGE6IHRoaXMuZGF0YSB9KTtcbiAgICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSBmYWxzZTsgLy8gT25seSBjbG9zZSBpZiBhY3Rpb24gd2FzIGV4ZWN1dGVkXG4gICAgfVxuICB9XG5cbiAgb25DaGVja2JveENoYW5nZShldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5pc0NoZWNrZWQgPSBldmVudD8udmFsdWUgPz8gZmFsc2U7XG4gICAgdGhpcy5hY3Rpb25DbGljay5lbWl0KHsgXG4gICAgICBpc0NoZWNrZWQ6IHRoaXMuaXNDaGVja2VkLCBcbiAgICAgIGRhdGE6IHRoaXMuZGF0YSBcbiAgICB9KTtcbiAgfVxuXG5cbiAgaXNEaXNhYmxlZChpdGVtOiBBY3Rpb25JdGVtKTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGVvZiBpdGVtLmRpc2FibGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuIGl0ZW0uZGlzYWJsZSh0aGlzLmRhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhY3Rpb25zLWNlbGwtY29udGFpbmVyXCIgW25nU3R5bGVdPVwiY29udGFpbmVyU3R5bGVcIj5cbiAgPCEtLSBJbmxpbmUgQWN0aW9ucyAtLT5cbiAgPGRpdiAqbmdJZj1cImFjdGlvblR5cGUgPT09ICdpbmxpbmUnXCIgY2xhc3M9XCJpbmxpbmUtYWN0aW9uc1wiPlxuICAgIDxkaXZcbiAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGFjdGlvbkl0ZW1zOyB0cmFja0J5OiB0cmFja0J5QWN0aW9uXCJcbiAgICAgIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIlxuICAgICAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogaXNEaXNhYmxlZChpdGVtKSB9XCJcbiAgICAgIChjbGljayk9XCJvbkFjdGlvbkNsaWNrKGl0ZW0sICRldmVudClcIlxuICAgID5cbiAgICAgIDxpbWcgW3NyY109XCJpdGVtLmljb25cIiBbYWx0XT1cIml0ZW0ubGFiZWxcIiBjbGFzcz1cImFjdGlvbi1pY29uLXN2Z1wiIC8+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gRHJvcGRvd24gQWN0aW9ucyAtLT5cbiAgPGRpdiAqbmdJZj1cImFjdGlvblR5cGUgPT09ICdkcm9wZG93bidcIiBjbGFzcz1cImRyb3Bkb3duLWFjdGlvbnNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tdHJpZ2dlclwiIChjbGljayk9XCJ0b2dnbGVEcm9wZG93bigkZXZlbnQpXCIgdGl0bGU9XCJNb3JlIGFjdGlvbnNcIj5cbiAgICAgIDxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgIDxjaXJjbGUgY3g9XCIxMFwiIGN5PVwiNFwiIHI9XCIyXCIgZmlsbD1cIiMzMzNcIiAvPlxuICAgICAgICA8Y2lyY2xlIGN4PVwiMTBcIiBjeT1cIjEwXCIgcj1cIjJcIiBmaWxsPVwiIzMzM1wiIC8+XG4gICAgICAgIDxjaXJjbGUgY3g9XCIxMFwiIGN5PVwiMTZcIiByPVwiMlwiIGZpbGw9XCIjMzMzXCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiAqbmdJZj1cImlzRHJvcGRvd25PcGVuXCIgW25nQ2xhc3NdPVwibWVudUFsaWduXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudS1pdGVtXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYWN0aW9uSXRlbXNcIlxuICAgICAgICAoY2xpY2spPVwib25Ecm9wZG93bkl0ZW1DbGljayhpdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogaXNEaXNhYmxlZChpdGVtKSB9XCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0uY2hpbGRyZW4/Lmxlbmd0aDsgZWxzZSBub0NoaWxkcmVuXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wZG93bi1pY29uXCIgKm5nSWY9XCJpdGVtLmljb25cIj5cbiAgICAgICAgICAgIDxpbWcgW3NyY109XCJpdGVtLmljb25cIiAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3Bkb3duLWxhYmVsXCI+e3sgaXRlbS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1Ym1lbnUtYXJyb3dcIj5cbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOSA2TDE1IDEyTDkgMThcIiBzdHJva2U9XCIjMEQxMzIxXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICA8IS0tIERZTkFNSUMgU1VCTUVOVSAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tc3VibWVudVwiIFtuZ0NsYXNzXT1cIml0ZW0uc3VibWVudUFsaWduXCIgKm5nSWY9XCJpdGVtLnNob3dTdWJtZW51XCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudS1pdGVtXCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGl0ZW0uY2hpbGRyZW5cIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBpc0Rpc2FibGVkKGNoaWxkKSB9XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRHJvcGRvd25JdGVtQ2xpY2soY2hpbGQsICRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3Bkb3duLWljb25cIiAqbmdJZj1cImNoaWxkLmljb25cIj5cbiAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiY2hpbGQuaWNvblwiIC8+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wZG93bi1sYWJlbFwiPnt7IGNoaWxkLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9DaGlsZHJlbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3Bkb3duLWljb25cIiAqbmdJZj1cIml0ZW0uaWNvblwiPlxuICAgICAgICAgICAgPGltZyBbc3JjXT1cIml0ZW0uaWNvblwiIC8+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcGRvd24tbGFiZWxcIj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gQ2hlY2tib3ggQWN0aW9ucyAtLT5cbiAgPGRpdiAqbmdJZj1cImFjdGlvblR5cGUgPT09ICdjaGVja2JveCdcIiBjbGFzcz1cImNoZWNrYm94LWFjdGlvbnNcIj5cbiAgICA8bWlzLWNoZWNrYm94IFtjaGVja2VkXT1cImlzQ2hlY2tlZFwiICh2YWx1ZUNoYW5nZSk9XCJvbkNoZWNrYm94Q2hhbmdlKCRldmVudClcIiAgW2Rpc2FibGVkXT1cImRpc2FibGUgPyBkaXNhYmxlKGRhdGEpIDogZmFsc2VcIlxuICAgID4gPC9taXMtY2hlY2tib3g+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
366
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy1jZWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3RhYmxlL2FjdGlvbnMtY2VsbC9hY3Rpb25zLWNlbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGFibGUvYWN0aW9ucy1jZWxsL2FjdGlvbnMtY2VsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFlBQVksRUFBYyxTQUFTLEVBQTRDLE1BQU0sZUFBZSxDQUFDO0FBQzlKLE9BQU8sRUFBRSxzQkFBc0IsRUFBVyxhQUFhLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7SUNDakQsOEJBS0M7SUFEQyxvTkFBUyxxQ0FBMkIsS0FBQztJQUVyQywwQkFBb0U7SUFDdEUsaUJBQU07Ozs7SUFKSixnRkFBMEM7SUFHckMsY0FBaUI7SUFBQyxBQUFsQixvREFBaUIsc0JBQW1COzs7SUFQN0MsOEJBQTREO0lBQzFELDJFQUtDO0lBR0gsaUJBQU07OztJQVBlLGNBQWdCO0lBQUEsQUFBaEIsNENBQWdCLHNDQUFzQjs7OztJQVd6RCxBQURGLCtCQUFnRSxpQkFDdUM7SUFBdEQsbUxBQVMsNkJBQXNCLEtBQUM7O0lBQzdFLCtCQUE0RDtJQUcxRCxBQURBLEFBREEsNkJBQTJDLGlCQUNDLGlCQUNBO0lBR2xELEFBREUsQUFERSxpQkFBTSxFQUNGLEVBQ0Y7Ozs7SUFJSixBQURGLCtCQUFnRSx1QkFFN0Q7SUFEbUMsd01BQWUsK0JBQXdCLEtBQUM7SUFFOUUsQUFESSxpQkFBZSxFQUNiOzs7SUFGVSxjQUFxQjtJQUEyQyxBQUFoRSwwQ0FBcUIsa0VB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b0JBQW9CO2NBTGhDLFNBQVM7MkJBQ0Usa0JBQWtCO3VFQUtmLE9BQU87a0JBQW5CLEtBQUs7WUFXRyxTQUFTO2tCQUFqQixLQUFLO1lBQ08sTUFBTTtrQkFBbEIsS0FBSztZQVdJLFdBQVc7a0JBQXBCLE1BQU07WUFFdUMsWUFBWTtrQkFBekQsU0FBUzttQkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQ0ssZUFBZTtrQkFBL0QsU0FBUzttQkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUF1RC9DLGVBQWU7a0JBRGQsWUFBWTttQkFBQyxnQkFBZ0I7O2tGQWpGbkIsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgSG9zdExpc3RlbmVyLCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmLCBPbkRlc3Ryb3kgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29ubmVjdGlvblBvc2l0aW9uUGFpciwgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVJlZiB9IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3BvcnRhbFwiO1xuaW1wb3J0IHsgQWN0aW9uSXRlbSB9IGZyb20gXCIuLi90YWJsZS5jb21wb25lbnRcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1pcy1hY3Rpb25zLWNlbGxcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9hY3Rpb25zLWNlbGwuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmw6IFwiLi9hY3Rpb25zLWNlbGwuY29tcG9uZW50LmNzc1wiXG59KVxuZXhwb3J0IGNsYXNzIEFjdGlvbnNDZWxsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBzZXQgcm93RGF0YSh2YWx1ZTogYW55KXtcbiAgICBpZiAodGhpcy5hY3Rpb25UeXBlID09PSAnY2hlY2tib3gnKSB7XG4gICAgICAvLyBGb3IgY2hlY2tib3gsIGtlZXAgdGhlIHJvd0RhdGEgc3RydWN0dXJlXG4gICAgICB0aGlzLmRhdGEgPSB2YWx1ZT8ucm93RGF0YSA/PyB7fTtcbiAgICAgIHRoaXMuaXNDaGVja2VkID0gdmFsdWU/LmlzQ2hlY2tlZCA/PyBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRm9yIG90aGVyIGFjdGlvbnMgKGRyb3Bkb3duLCBpbmxpbmUpLCB1c2UgdGhlIHZhbHVlIGRpcmVjdGx5XG4gICAgICB0aGlzLmRhdGEgPSB2YWx1ZTtcbiAgICAgIHRoaXMuaXNDaGVja2VkID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpIGlzQ2hlY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzZXQgY29uZmlnKGNvbmZpZzogYW55KXtcbiAgICB0aGlzLmFjdGlvbkl0ZW1zID0gY29uZmlnPy5hY3Rpb25JdGVtcyxcbiAgICB0aGlzLmFjdGlvblR5cGUgPSBjb25maWcuYWN0aW9uVHlwZSxcbiAgICB0aGlzLnN1Ym1lbnVBbGlnbiA9IGNvbmZpZy5zdWJtZW51QWxpZ24sXG4gICAgdGhpcy5tZW51QWxpZ24gPSBjb25maWcubWVudUFsaWduXG4gICAgdGhpcy5fc3R5bGUgPSBjb25maWcuc3R5bGU7XG4gICAgdGhpcy5hY3Rpb24gPSBjb25maWcuYWN0aW9uO1xuICAgIHRoaXMuZGlzYWJsZSA9IGNvbmZpZy5kaXNhYmxlO1xuICAgIHRoaXMucHJvY2Vzc1N0eWxlKCk7XG4gIH1cblxuICBAT3V0cHV0KCkgYWN0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHsgaXRlbT86IEFjdGlvbkl0ZW07IGRhdGE6IGFueTsgaXNDaGVja2VkPzogYW55IH0+KCk7XG5cbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25NZW51JywgeyBzdGF0aWM6IGZhbHNlIH0pIGRyb3Bkb3duTWVudTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25UcmlnZ2VyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGRyb3Bkb3duVHJpZ2dlcjogRWxlbWVudFJlZjtcblxuICBpc0Ryb3Bkb3duT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICBhY3Rpb25JdGVtczogQWN0aW9uSXRlbVtdID0gW107XG4gIGFjdGlvblR5cGU6IFwiaW5saW5lXCIgfCBcImRyb3Bkb3duXCIgfCBcImNoZWNrYm94XCIgPSBcImlubGluZVwiO1xuICBzdWJtZW51QWxpZ246IFwibGVmdFwiIHwgXCJyaWdodFwiID0gXCJyaWdodFwiO1xuICBtZW51QWxpZ246IFwibGVmdFwiIHwgXCJyaWdodFwiID0gXCJsZWZ0XCI7XG4gIGFjdGlvbj86IChkYXRhOiBhbnkpID0+IHZvaWQ7XG4gIGRhdGE6IGFueTtcbiAgZGlzYWJsZTogKGRhdGE6IGFueSkgPT4gYm9vbGVhbjtcbiAgcHJpdmF0ZSBfc3R5bGU6IGFueSA9IHt9O1xuICBjb250YWluZXJTdHlsZTogYW55ID0ge307XG4gIHByaXZhdGUgb3ZlcmxheVJlZjogT3ZlcmxheVJlZiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWZcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge31cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc1N0eWxlKCk6IHZvaWQge1xuICAgIC8vIFJlbW92ZSB3aWR0aCBmcm9tIHN0eWxlIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIHRhYmxlIGNvbHVtbiB3aWR0aFxuICAgIGNvbnN0IHsgd2lkdGgsIC4uLnJlc3RTdHlsZSB9ID0gdGhpcy5fc3R5bGU7XG4gICAgdGhpcy5jb250YWluZXJTdHlsZSA9IHJlc3RTdHlsZTtcbiAgfVxuXG4gIG9uQWN0aW9uQ2xpY2soaXRlbTogQWN0aW9uSXRlbSwgZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAvLyBDaGVjayBwZXJtaXNzaW9ucyBiZWZvcmUgZXhlY3V0aW5nIGFjdGlvblxuICAgIGlmICh0aGlzLmlzRGlzYWJsZWQoaXRlbSkpIHJldHVybjtcblxuICAgIC8vIEV4ZWN1dGUgYWN0aW9uIG9ubHkgaWYgcGVybWl0dGVkXG4gICAgaWYgKGl0ZW0uYWN0aW9uKSB7XG4gICAgICBpdGVtLmFjdGlvbih0aGlzLmRhdGEpO1xuICAgIH1cblxuICAgIHRoaXMuYWN0aW9uQ2xpY2suZW1pdCh7IGl0ZW0sIGRhdGE6IHRoaXMuZGF0YSB9KTtcbiAgfVxuXG4gIHRyYWNrQnlBY3Rpb24oaW5kZXg6IG51bWJlciwgaXRlbTogQWN0aW9uSXRlbSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGl0ZW0udmFsdWU7XG4gIH1cblxuICBpc1N2Z0ZpbGUoaWNvblBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghaWNvblBhdGgpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gaWNvblBhdGgudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhcIi5zdmdcIikgfHwgaWNvblBhdGgudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhcImFzc2V0cy9pY29ucy9cIik7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKFwiZG9jdW1lbnQ6Y2xpY2tcIilcbiAgb25Eb2N1bWVudENsaWNrKCkge1xuICAgIGlmICh0aGlzLmlzRHJvcGRvd25PcGVuKSB7XG4gICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVEcm9wZG93bihldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBcbiAgICBpZiAodGhpcy5pc0Ryb3Bkb3duT3Blbikge1xuICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3BlbkRyb3Bkb3duKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvcGVuRHJvcGRvd24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRyb3Bkb3duVHJpZ2dlciB8fCAhdGhpcy5kcm9wZG93bk1lbnUpIHJldHVybjtcblxuICAgIC8vIENsb3NlIGFsbCBzdWJtZW51cyB3aGVuIG9wZW5pbmcgbWFpbiBtZW51XG4gICAgdGhpcy5hY3Rpb25JdGVtcy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IChpdGVtLnNob3dTdWJtZW51ID0gZmFsc2UpKTtcblxuICAgIGNvbnN0IHBvc2l0aW9ucyA9IHRoaXMuZ2V0RHJvcGRvd25Qb3NpdGlvbnMoKTtcbiAgICBcbiAgICBjb25zdCBvdmVybGF5Q29uZmlnID0gbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICBiYWNrZHJvcENsYXNzOiAnY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AnLFxuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5vdmVybGF5XG4gICAgICAgIC5wb3NpdGlvbigpXG4gICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZHJvcGRvd25UcmlnZ2VyKVxuICAgICAgICAud2l0aFBvc2l0aW9ucyhwb3NpdGlvbnMpXG4gICAgICAgIC53aXRoUHVzaCh0cnVlKSxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKClcbiAgICB9KTtcblxuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUob3ZlcmxheUNvbmZpZyk7XG4gICAgY29uc3QgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMuZHJvcGRvd25NZW51LCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gocG9ydGFsKTtcblxuICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9IHRydWU7XG4gIH1cblxuICBwcml2YXRlIGNsb3NlRHJvcGRvd24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RHJvcGRvd25Qb3NpdGlvbnMoKTogQ29ubmVjdGlvblBvc2l0aW9uUGFpcltdIHtcbiAgICBjb25zdCBwb3NpdGlvbnM6IENvbm5lY3Rpb25Qb3NpdGlvblBhaXJbXSA9IFtdO1xuXG4gICAgaWYgKHRoaXMubWVudUFsaWduID09PSAnbGVmdCcpIHtcbiAgICAgIC8vIE1lbnUgb3BlbnMgdG8gdGhlIGxlZnQgb2YgdHJpZ2dlclxuICAgICAgcG9zaXRpb25zLnB1c2goXG4gICAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKFxuICAgICAgICAgIHsgb3JpZ2luWDogJ3N0YXJ0Jywgb3JpZ2luWTogJ2JvdHRvbScgfSxcbiAgICAgICAgICB7IG92ZXJsYXlYOiAnc3RhcnQnLCBvdmVybGF5WTogJ3RvcCcgfSxcbiAgICAgICAgICAwLCA0XG4gICAgICAgICksXG4gICAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKFxuICAgICAgICAgIHsgb3JpZ2luWDogJ3N0YXJ0Jywgb3JpZ2luWTogJ3RvcCcgfSxcbiAgICAgICAgICB7IG92ZXJsYXlYOiAnc3RhcnQnLCBvdmVybGF5WTogJ2JvdHRvbScgfSxcbiAgICAgICAgICAwLCAtNFxuICAgICAgICApXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBNZW51IG9wZW5zIHRvIHRoZSByaWdodCBvZiB0cmlnZ2VyXG4gICAgICBwb3NpdGlvbnMucHVzaChcbiAgICAgICAgbmV3IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIoXG4gICAgICAgICAgeyBvcmlnaW5YOiAnZW5kJywgb3JpZ2luWTogJ2JvdHRvbScgfSxcbiAgICAgICAgICB7IG92ZXJsYXlYOiAnZW5kJywgb3ZlcmxheVk6ICd0b3AnIH0sXG4gICAgICAgICAgMCwgNFxuICAgICAgICApLFxuICAgICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcihcbiAgICAgICAgICB7IG9yaWdpblg6ICdlbmQnLCBvcmlnaW5ZOiAndG9wJyB9LFxuICAgICAgICAgIHsgb3ZlcmxheVg6ICdlbmQnLCBvdmVybGF5WTogJ2JvdHRvbScgfSxcbiAgICAgICAgICAwLCAtNFxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gcG9zaXRpb25zO1xuICB9XG5cbiAgb25Ecm9wZG93bkl0ZW1DbGljayhpdGVtOiBhbnksIGV2ZW50OiBFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZChpdGVtKSkgcmV0dXJuO1xuXG4gICAgaWYgKGl0ZW0/LmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgIC8vIFRvZ2dsZSBzdWJtZW51XG4gICAgICBpdGVtLnNob3dTdWJtZW51ID0gIWl0ZW0uc2hvd1N1Ym1lbnU7XG4gICAgICAvLyBPcHRpb25hbGx5IGNsb3NlIG90aGVyIHN1Ym1lbnVzXG4gICAgICB0aGlzLmFjdGlvbkl0ZW1zLmZvckVhY2goKGk6IGFueSkgPT4ge1xuICAgICAgICBpZiAoaSAhPT0gaXRlbSkgaS5zaG93U3VibWVudSA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEhhbmRsZSBhY3Rpb25cbiAgICAgIGlmIChpdGVtLmFjdGlvbikgaXRlbS5hY3Rpb24odGhpcy5kYXRhKTtcbiAgICAgIHRoaXMuYWN0aW9uQ2xpY2suZW1pdCh7IGl0ZW0sIGRhdGE6IHRoaXMuZGF0YSB9KTtcbiAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpOyAvLyBPbmx5IGNsb3NlIGlmIGFjdGlvbiB3YXMgZXhlY3V0ZWRcbiAgICB9XG4gIH1cblxuICBvbkNoZWNrYm94Q2hhbmdlKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmlzQ2hlY2tlZCA9IGV2ZW50Py52YWx1ZSA/PyBmYWxzZTtcbiAgICB0aGlzLmFjdGlvbkNsaWNrLmVtaXQoeyBcbiAgICAgIGlzQ2hlY2tlZDogdGhpcy5pc0NoZWNrZWQsIFxuICAgICAgZGF0YTogdGhpcy5kYXRhIFxuICAgIH0pO1xuICB9XG5cbiAgaXNEaXNhYmxlZChpdGVtOiBBY3Rpb25JdGVtKTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGVvZiBpdGVtLmRpc2FibGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuIGl0ZW0uZGlzYWJsZSh0aGlzLmRhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhY3Rpb25zLWNlbGwtY29udGFpbmVyXCIgW25nU3R5bGVdPVwiY29udGFpbmVyU3R5bGVcIj5cbiAgPCEtLSBJbmxpbmUgQWN0aW9ucyAtLT5cbiAgPGRpdiAqbmdJZj1cImFjdGlvblR5cGUgPT09ICdpbmxpbmUnXCIgY2xhc3M9XCJpbmxpbmUtYWN0aW9uc1wiPlxuICAgIDxkaXZcbiAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGFjdGlvbkl0ZW1zOyB0cmFja0J5OiB0cmFja0J5QWN0aW9uXCJcbiAgICAgIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIlxuICAgICAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogaXNEaXNhYmxlZChpdGVtKSB9XCJcbiAgICAgIChjbGljayk9XCJvbkFjdGlvbkNsaWNrKGl0ZW0sICRldmVudClcIlxuICAgID5cbiAgICAgIDxpbWcgW3NyY109XCJpdGVtLmljb25cIiBbYWx0XT1cIml0ZW0ubGFiZWxcIiBjbGFzcz1cImFjdGlvbi1pY29uLXN2Z1wiIC8+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gRHJvcGRvd24gQWN0aW9ucyAtLT5cbiAgPGRpdiAqbmdJZj1cImFjdGlvblR5cGUgPT09ICdkcm9wZG93bidcIiBjbGFzcz1cImRyb3Bkb3duLWFjdGlvbnNcIj5cbiAgICA8ZGl2ICNkcm9wZG93blRyaWdnZXIgY2xhc3M9XCJkcm9wZG93bi10cmlnZ2VyXCIgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKCRldmVudClcIiB0aXRsZT1cIk1vcmUgYWN0aW9uc1wiPlxuICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgPGNpcmNsZSBjeD1cIjEwXCIgY3k9XCI0XCIgcj1cIjJcIiBmaWxsPVwiIzMzM1wiIC8+XG4gICAgICAgIDxjaXJjbGUgY3g9XCIxMFwiIGN5PVwiMTBcIiByPVwiMlwiIGZpbGw9XCIjMzMzXCIgLz5cbiAgICAgICAgPGNpcmNsZSBjeD1cIjEwXCIgY3k9XCIxNlwiIHI9XCIyXCIgZmlsbD1cIiMzMzNcIiAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gQ2hlY2tib3ggQWN0aW9ucyAtLT5cbiAgPGRpdiAqbmdJZj1cImFjdGlvblR5cGUgPT09ICdjaGVja2JveCdcIiBjbGFzcz1cImNoZWNrYm94LWFjdGlvbnNcIj5cbiAgICA8bWlzLWNoZWNrYm94IFtjaGVja2VkXT1cImlzQ2hlY2tlZFwiICh2YWx1ZUNoYW5nZSk9XCJvbkNoZWNrYm94Q2hhbmdlKCRldmVudClcIiAgW2Rpc2FibGVkXT1cImRpc2FibGUgPyBkaXNhYmxlKGRhdGEpIDogZmFsc2VcIlxuICAgID4gPC9taXMtY2hlY2tib3g+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gQ0RLIE92ZXJsYXkgVGVtcGxhdGUgZm9yIERyb3Bkb3duIE1lbnUgLS0+XG48bmctdGVtcGxhdGUgI2Ryb3Bkb3duTWVudT5cbiAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnUtb3ZlcmxheVwiIFtuZ0NsYXNzXT1cIm1lbnVBbGlnblwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudS1pdGVtXCJcbiAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGFjdGlvbkl0ZW1zXCJcbiAgICAgIChjbGljayk9XCJvbkRyb3Bkb3duSXRlbUNsaWNrKGl0ZW0sICRldmVudClcIlxuICAgICAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogaXNEaXNhYmxlZChpdGVtKSB9XCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5jaGlsZHJlbj8ubGVuZ3RoOyBlbHNlIG5vQ2hpbGRyZW5cIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wZG93bi1pY29uXCIgKm5nSWY9XCJpdGVtLmljb25cIj5cbiAgICAgICAgICA8aW1nIFtzcmNdPVwiaXRlbS5pY29uXCIgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3Bkb3duLWxhYmVsXCI+e3sgaXRlbS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWJtZW51LWFycm93XCI+XG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNOSA2TDE1IDEyTDkgMThcIiBzdHJva2U9XCIjMEQxMzIxXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8IS0tIERZTkFNSUMgU1VCTUVOVSAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLXN1Ym1lbnVcIiBbbmdDbGFzc109XCJpdGVtLnN1Ym1lbnVBbGlnblwiICpuZ0lmPVwiaXRlbS5zaG93U3VibWVudVwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudS1pdGVtXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBpdGVtLmNoaWxkcmVuXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IGlzRGlzYWJsZWQoY2hpbGQpIH1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRHJvcGRvd25JdGVtQ2xpY2soY2hpbGQsICRldmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcGRvd24taWNvblwiICpuZ0lmPVwiY2hpbGQuaWNvblwiPlxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiY2hpbGQuaWNvblwiIC8+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3Bkb3duLWxhYmVsXCI+e3sgY2hpbGQubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbm9DaGlsZHJlbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wZG93bi1pY29uXCIgKm5nSWY9XCJpdGVtLmljb25cIj5cbiAgICAgICAgICA8aW1nIFtzcmNdPVwiaXRlbS5pY29uXCIgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3Bkb3duLWxhYmVsXCI+e3sgaXRlbS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==