mis-crystal-design-system 18.0.13-test-9 → 18.0.13-test-11

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,46 +1,76 @@
1
- import { Component, Input, Output, EventEmitter } from "@angular/core";
2
- import { UntypedFormControl } from "@angular/forms";
1
+ import { Component, Input, Output, EventEmitter, forwardRef } from "@angular/core";
2
+ import { NG_VALUE_ACCESSOR, AbstractControl } from "@angular/forms";
3
3
  import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/forms";
5
4
  export class RadioButtonComponent {
6
5
  constructor() {
7
- /** When multiple radio input fields are used
8
- * an "id" can be given to keep track of them */
9
6
  this.id = "";
10
- /** Name of the attribute for which the radio
11
- * selection is provided */
12
7
  this.name = "";
13
- /** Value of the attribute which is to be emitted
14
- * when selected */
15
8
  this.value = "";
16
- /** Controls the state of the radio button */
17
9
  this.disabled = false;
18
- /** Can be used to attach the radio input field
19
- * to a reactive form by passing in a
20
- * “FormControl“ Object. It can also be
21
- * used to set the default attribute value */
22
- this.formControl = new UntypedFormControl(null);
23
- /** Emits "value" of the radio button on selection */
24
10
  this.valueChange = new EventEmitter();
11
+ this.selectedValue = null;
12
+ this.onChangeFn = () => { };
13
+ this.onTouchedFn = () => { };
25
14
  }
26
- ngOnInit() { }
27
- onChange(event) {
28
- this.valueChange.emit(this.formControl.value);
15
+ ngOnInit() {
16
+ // For backward compatibility: if formControl is passed directly
17
+ if (this.formControl instanceof AbstractControl) {
18
+ this.formControl.valueChanges.subscribe(val => {
19
+ this.selectedValue = val;
20
+ });
21
+ }
22
+ }
23
+ writeValue(value) {
24
+ this.selectedValue = value;
25
+ }
26
+ registerOnChange(fn) {
27
+ this.onChangeFn = fn;
28
+ }
29
+ registerOnTouched(fn) {
30
+ this.onTouchedFn = fn;
31
+ }
32
+ setDisabledState(isDisabled) {
33
+ this.disabled = isDisabled;
34
+ }
35
+ onUserSelect() {
36
+ if (this.disabled)
37
+ return;
38
+ this.selectedValue = this.value;
39
+ // Trigger ControlValueAccessor handler if used
40
+ this.onChangeFn(this.value);
41
+ this.onTouchedFn();
42
+ // Legacy: update formControl if passed directly
43
+ if (this.formControl && this.formControl.setValue) {
44
+ this.formControl.setValue(this.value);
45
+ }
46
+ // Emit for external listeners
47
+ this.valueChange.emit(this.value);
29
48
  }
30
49
  static { this.ɵfac = function RadioButtonComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || RadioButtonComponent)(); }; }
31
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: RadioButtonComponent, selectors: [["mis-radio"]], inputs: { id: "id", name: "name", value: "value", disabled: "disabled", formControl: "formControl" }, outputs: { valueChange: "valueChange" }, decls: 1, vars: 5, consts: [["tabindex", "-1", "type", "radio", 3, "change", "keup.enter", "id", "name", "disabled", "value", "formControl"]], template: function RadioButtonComponent_Template(rf, ctx) { if (rf & 1) {
50
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: RadioButtonComponent, selectors: [["mis-radio"]], inputs: { id: "id", name: "name", value: "value", disabled: "disabled", formControl: "formControl" }, outputs: { valueChange: "valueChange" }, features: [i0.ɵɵProvidersFeature([
51
+ {
52
+ provide: NG_VALUE_ACCESSOR,
53
+ useExisting: forwardRef(() => RadioButtonComponent),
54
+ multi: true
55
+ }
56
+ ])], decls: 1, vars: 5, consts: [["type", "radio", "tabindex", "-1", 3, "change", "keyup.enter", "id", "name", "disabled", "value", "checked"]], template: function RadioButtonComponent_Template(rf, ctx) { if (rf & 1) {
32
57
  i0.ɵɵelementStart(0, "input", 0);
33
- i0.ɵɵlistener("change", function RadioButtonComponent_Template_input_change_0_listener($event) { return ctx.onChange($event); })("keup.enter", function RadioButtonComponent_Template_input_keup_enter_0_listener($event) { return ctx.onChange($event); });
58
+ i0.ɵɵlistener("change", function RadioButtonComponent_Template_input_change_0_listener() { return ctx.onUserSelect(); })("keyup.enter", function RadioButtonComponent_Template_input_keyup_enter_0_listener() { return ctx.onUserSelect(); });
34
59
  i0.ɵɵelementEnd();
35
60
  } if (rf & 2) {
36
- i0.ɵɵpropertyInterpolate("id", ctx.id);
37
- i0.ɵɵproperty("name", ctx.name)("disabled", ctx.disabled)("value", ctx.value)("formControl", ctx.formControl);
38
- } }, dependencies: [i1.DefaultValueAccessor, i1.RadioControlValueAccessor, i1.NgControlStatus, i1.FormControlDirective], styles: ["input[type=radio][_ngcontent-%COMP%]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:20px;height:20px;margin:0;padding:3px;background-clip:content-box;border:2px solid #6a737d;background-color:#fff;border-radius:50%;cursor:pointer}input[type=radio][_ngcontent-%COMP%]:checked{background-color:#0937b2;border:2px solid #0937b2}input[type=radio][_ngcontent-%COMP%]:hover{border:2px solid #929dab}input[type=radio][_ngcontent-%COMP%]:checked:hover{border:2px solid #0937b2}input[type=radio][_ngcontent-%COMP%]:disabled{border:2px solid #c8cdd3}input[type=radio][_ngcontent-%COMP%]:checked:disabled{border:2px solid #c8cdd3;background-color:#c8cdd3}"] }); }
61
+ i0.ɵɵproperty("id", ctx.id)("name", ctx.name)("disabled", ctx.disabled)("value", ctx.value)("checked", ctx.selectedValue === ctx.value);
62
+ } }, styles: ["input[type=radio][_ngcontent-%COMP%]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:20px;height:20px;margin:0;padding:3px;background-clip:content-box;border:2px solid #6a737d;background-color:#fff;border-radius:50%;cursor:pointer}input[type=radio][_ngcontent-%COMP%]:checked{background-color:#0937b2;border:2px solid #0937b2}input[type=radio][_ngcontent-%COMP%]:hover{border:2px solid #929dab}input[type=radio][_ngcontent-%COMP%]:checked:hover{border:2px solid #0937b2}input[type=radio][_ngcontent-%COMP%]:disabled{border:2px solid #c8cdd3}input[type=radio][_ngcontent-%COMP%]:checked:disabled{border:2px solid #c8cdd3;background-color:#c8cdd3}"] }); }
39
63
  }
40
64
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(RadioButtonComponent, [{
41
65
  type: Component,
42
- args: [{ selector: "mis-radio", template: "<input \n (change)=\"onChange($event)\" \n (keup.enter)=\"onChange($event)\"\n tabindex=\"-1\"\n id=\"{{ id }}\" type=\"radio\" \n [name]=\"name\" [disabled]=\"disabled\" \n [value]=\"value\"\n [formControl]=\"formControl\" \n/>\n", styles: ["input[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:20px;height:20px;margin:0;padding:3px;background-clip:content-box;border:2px solid #6a737d;background-color:#fff;border-radius:50%;cursor:pointer}input[type=radio]:checked{background-color:#0937b2;border:2px solid #0937b2}input[type=radio]:hover{border:2px solid #929dab}input[type=radio]:checked:hover{border:2px solid #0937b2}input[type=radio]:disabled{border:2px solid #c8cdd3}input[type=radio]:checked:disabled{border:2px solid #c8cdd3;background-color:#c8cdd3}\n"] }]
43
- }], () => [], { id: [{
66
+ args: [{ selector: "mis-radio", providers: [
67
+ {
68
+ provide: NG_VALUE_ACCESSOR,
69
+ useExisting: forwardRef(() => RadioButtonComponent),
70
+ multi: true
71
+ }
72
+ ], template: "<input \n type=\"radio\"\n tabindex=\"-1\"\n [id]=\"id\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n [value]=\"value\"\n [checked]=\"selectedValue === value\"\n (change)=\"onUserSelect()\"\n (keyup.enter)=\"onUserSelect()\"\n/>\n", styles: ["input[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:20px;height:20px;margin:0;padding:3px;background-clip:content-box;border:2px solid #6a737d;background-color:#fff;border-radius:50%;cursor:pointer}input[type=radio]:checked{background-color:#0937b2;border:2px solid #0937b2}input[type=radio]:hover{border:2px solid #929dab}input[type=radio]:checked:hover{border:2px solid #0937b2}input[type=radio]:disabled{border:2px solid #c8cdd3}input[type=radio]:checked:disabled{border:2px solid #c8cdd3;background-color:#c8cdd3}\n"] }]
73
+ }], null, { id: [{
44
74
  type: Input
45
75
  }], name: [{
46
76
  type: Input
@@ -54,4 +84,4 @@ export class RadioButtonComponent {
54
84
  type: Output
55
85
  }] }); })();
56
86
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(RadioButtonComponent, { className: "RadioButtonComponent" }); })();
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3JhZGlvLWJ1dHRvbi9yYWRpby1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvcmFkaW8tYnV0dG9uL3JhZGlvLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBbUIsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBT3JFLE1BQU0sT0FBTyxvQkFBb0I7SUFzQi9CO1FBckJBO3dEQUNnRDtRQUN2QyxPQUFFLEdBQW9CLEVBQUUsQ0FBQztRQUNsQzttQ0FDMkI7UUFDbEIsU0FBSSxHQUFvQixFQUFFLENBQUM7UUFDcEM7MkJBQ21CO1FBQ1YsVUFBSyxHQUFvQixFQUFFLENBQUM7UUFDckMsNkNBQTZDO1FBQ3BDLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFbkM7OztxREFHNkM7UUFDcEMsZ0JBQVcsR0FBb0IsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyRSxxREFBcUQ7UUFDM0MsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBRWpDLENBQUM7SUFDaEIsUUFBUSxLQUFJLENBQUM7SUFDYixRQUFRLENBQUMsS0FBSztRQUNaLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztxSEExQlUsb0JBQW9CO29FQUFwQixvQkFBb0I7WUNSakMsZ0NBUUU7WUFORSxBQURBLHdHQUFVLG9CQUFnQixJQUFDLG1HQUNiLG9CQUFnQixJQUFDO1lBRm5DLGlCQVFFOztZQUpFLHNDQUFhO1lBR2IsQUFEQSxBQURjLEFBQWQsK0JBQWEsMEJBQXNCLG9CQUNwQixnQ0FDWTs7O2lGRENsQixvQkFBb0I7Y0FMaEMsU0FBUzsyQkFDRSxXQUFXO29CQU9aLEVBQUU7a0JBQVYsS0FBSztZQUdHLElBQUk7a0JBQVosS0FBSztZQUdHLEtBQUs7a0JBQWIsS0FBSztZQUVHLFFBQVE7a0JBQWhCLEtBQUs7WUFNRyxXQUFXO2tCQUFuQixLQUFLO1lBR0ksV0FBVztrQkFBcEIsTUFBTTs7a0ZBcEJJLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBVbnR5cGVkRm9ybUNvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1pcy1yYWRpb1wiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3JhZGlvLWJ1dHRvbi5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vcmFkaW8tYnV0dG9uLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIFJhZGlvQnV0dG9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqIFdoZW4gbXVsdGlwbGUgcmFkaW8gaW5wdXQgZmllbGRzIGFyZSB1c2VkXG4gICAqIGFuIFwiaWRcIiBjYW4gYmUgZ2l2ZW4gdG8ga2VlcCB0cmFjayBvZiB0aGVtICovXG4gIEBJbnB1dCgpIGlkOiBzdHJpbmcgfCBudW1iZXIgPSBcIlwiO1xuICAvKiogTmFtZSBvZiB0aGUgYXR0cmlidXRlIGZvciB3aGljaCB0aGUgcmFkaW9cbiAgICogc2VsZWN0aW9uIGlzIHByb3ZpZGVkICovXG4gIEBJbnB1dCgpIG5hbWU6IHN0cmluZyB8IG51bWJlciA9IFwiXCI7XG4gIC8qKiBWYWx1ZSBvZiB0aGUgYXR0cmlidXRlIHdoaWNoIGlzIHRvIGJlIGVtaXR0ZWRcbiAgICogd2hlbiBzZWxlY3RlZCAqL1xuICBASW5wdXQoKSB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyID0gXCJcIjtcbiAgLyoqIENvbnRyb2xzIHRoZSBzdGF0ZSBvZiB0aGUgcmFkaW8gYnV0dG9uICovXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIENhbiBiZSB1c2VkIHRvIGF0dGFjaCB0aGUgcmFkaW8gaW5wdXQgZmllbGRcbiAgICogdG8gYSByZWFjdGl2ZSBmb3JtIGJ5IHBhc3NpbmcgaW4gYVxuICAgKiDigJxGb3JtQ29udHJvbOKAnCBPYmplY3QuIEl0IGNhbiBhbHNvIGJlXG4gICAqIHVzZWQgdG8gc2V0IHRoZSBkZWZhdWx0IGF0dHJpYnV0ZSB2YWx1ZSAqL1xuICBASW5wdXQoKSBmb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChudWxsKTtcblxuICAvKiogRW1pdHMgXCJ2YWx1ZVwiIG9mIHRoZSByYWRpbyBidXR0b24gb24gc2VsZWN0aW9uICovXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cbiAgbmdPbkluaXQoKSB7fVxuICBvbkNoYW5nZShldmVudCkge1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLmZvcm1Db250cm9sLnZhbHVlKTtcbiAgfVxufVxuIiwiPGlucHV0IFxuICAgIChjaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiIFxuICAgIChrZXVwLmVudGVyKT1cIm9uQ2hhbmdlKCRldmVudClcIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuICAgIGlkPVwie3sgaWQgfX1cIiB0eXBlPVwicmFkaW9cIiBcbiAgICBbbmFtZV09XCJuYW1lXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgXG4gICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIiBcbi8+XG4iXX0=
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3JhZGlvLWJ1dHRvbi9yYWRpby1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvcmFkaW8tYnV0dG9uL3JhZGlvLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLFVBQVUsRUFFWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDaEIsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFjeEIsTUFBTSxPQUFPLG9CQUFvQjtJQVpqQztRQWFXLE9BQUUsR0FBb0IsRUFBRSxDQUFDO1FBQ3pCLFNBQUksR0FBb0IsRUFBRSxDQUFDO1FBQzNCLFVBQUssR0FBb0IsRUFBRSxDQUFDO1FBQzVCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFJekIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRWhELGtCQUFhLEdBQVEsSUFBSSxDQUFDO1FBRWxCLGVBQVUsR0FBeUIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQzVDLGdCQUFXLEdBQWUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0tBNEM1QztJQTFDQyxRQUFRO1FBQ04sZ0VBQWdFO1FBQ2hFLElBQUksSUFBSSxDQUFDLFdBQVcsWUFBWSxlQUFlLEVBQUUsQ0FBQztZQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDO1lBQzNCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsS0FBVTtRQUNuQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUM3QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBTztRQUN0QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBTztRQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsVUFBbUI7UUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDN0IsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUUxQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFFaEMsK0NBQStDO1FBQy9DLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVuQixnREFBZ0Q7UUFDaEQsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFFRCw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7cUhBeERVLG9CQUFvQjtvRUFBcEIsb0JBQW9CLDhNQVJwQjtnQkFDVDtvQkFDRSxPQUFPLEVBQUUsaUJBQWlCO29CQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDO29CQUNuRCxLQUFLLEVBQUUsSUFBSTtpQkFDWjthQUNGO1lDeEJILGdDQVVFO1lBREEsQUFEQSxrR0FBVSxrQkFBYyxJQUFDLCtGQUNWLGtCQUFjLElBQUM7WUFUaEMsaUJBVUU7O1lBSEEsQUFEQSxBQURBLEFBREEsQUFEQSwyQkFBUyxrQkFDSSwwQkFDUSxvQkFDTiw0Q0FDb0I7OztpRkRtQnhCLG9CQUFvQjtjQVpoQyxTQUFTOzJCQUNFLFdBQVcsYUFHVjtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQzt3QkFDbkQsS0FBSyxFQUFFLElBQUk7cUJBQ1o7aUJBQ0Y7Z0JBR1EsRUFBRTtrQkFBVixLQUFLO1lBQ0csSUFBSTtrQkFBWixLQUFLO1lBQ0csS0FBSztrQkFBYixLQUFLO1lBQ0csUUFBUTtrQkFBaEIsS0FBSztZQUVHLFdBQVc7a0JBQW5CLEtBQUs7WUFFSSxXQUFXO2tCQUFwQixNQUFNOztrRkFSSSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgT25Jbml0XG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIEFic3RyYWN0Q29udHJvbFxufSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1pcy1yYWRpb1wiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3JhZGlvLWJ1dHRvbi5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vcmFkaW8tYnV0dG9uLmNvbXBvbmVudC5zY3NzXCJdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJhZGlvQnV0dG9uQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFJhZGlvQnV0dG9uQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGlkOiBzdHJpbmcgfCBudW1iZXIgPSBcIlwiO1xuICBASW5wdXQoKSBuYW1lOiBzdHJpbmcgfCBudW1iZXIgPSBcIlwiO1xuICBASW5wdXQoKSB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyID0gXCJcIjtcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBmb3JtQ29udHJvbD86IEFic3RyYWN0Q29udHJvbDsgLy8gT3B0aW9uYWwgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcblxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBzZWxlY3RlZFZhbHVlOiBhbnkgPSBudWxsO1xuXG4gIHByaXZhdGUgb25DaGFuZ2VGbjogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSBvblRvdWNoZWRGbjogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5OiBpZiBmb3JtQ29udHJvbCBpcyBwYXNzZWQgZGlyZWN0bHlcbiAgICBpZiAodGhpcy5mb3JtQ29udHJvbCBpbnN0YW5jZW9mIEFic3RyYWN0Q29udHJvbCkge1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbCA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IHZhbDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZUZuID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWRGbiA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBvblVzZXJTZWxlY3QoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybjtcblxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IHRoaXMudmFsdWU7XG5cbiAgICAvLyBUcmlnZ2VyIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGhhbmRsZXIgaWYgdXNlZFxuICAgIHRoaXMub25DaGFuZ2VGbih0aGlzLnZhbHVlKTtcbiAgICB0aGlzLm9uVG91Y2hlZEZuKCk7XG5cbiAgICAvLyBMZWdhY3k6IHVwZGF0ZSBmb3JtQ29udHJvbCBpZiBwYXNzZWQgZGlyZWN0bHlcbiAgICBpZiAodGhpcy5mb3JtQ29udHJvbCAmJiB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKSB7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIC8vIEVtaXQgZm9yIGV4dGVybmFsIGxpc3RlbmVyc1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgfVxufVxuIiwiPGlucHV0IFxuICB0eXBlPVwicmFkaW9cIlxuICB0YWJpbmRleD1cIi0xXCJcbiAgW2lkXT1cImlkXCJcbiAgW25hbWVdPVwibmFtZVwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gIFtjaGVja2VkXT1cInNlbGVjdGVkVmFsdWUgPT09IHZhbHVlXCJcbiAgKGNoYW5nZSk9XCJvblVzZXJTZWxlY3QoKVwiXG4gIChrZXl1cC5lbnRlcik9XCJvblVzZXJTZWxlY3QoKVwiXG4vPlxuIl19
@@ -1,16 +1,17 @@
1
1
  import { Component, EventEmitter, Input, Output, HostListener } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@angular/common";
4
+ import * as i2 from "mis-crystal-design-system/checkbox";
4
5
  const _c0 = a0 => ({ "disabled": a0 });
5
6
  function ActionsCellComponent_div_1_div_1_img_1_Template(rf, ctx) { if (rf & 1) {
6
- i0.ɵɵelement(0, "img", 8);
7
+ i0.ɵɵelement(0, "img", 9);
7
8
  } if (rf & 2) {
8
9
  const item_r1 = i0.ɵɵnextContext().$implicit;
9
10
  i0.ɵɵproperty("src", item_r1.icon, i0.ɵɵsanitizeUrl)("alt", item_r1.label);
10
11
  } }
11
12
  function ActionsCellComponent_div_1_div_1_Template(rf, ctx) { if (rf & 1) {
12
- i0.ɵɵelementStart(0, "div", 6);
13
- i0.ɵɵtemplate(1, ActionsCellComponent_div_1_div_1_img_1_Template, 1, 2, "img", 7);
13
+ i0.ɵɵelementStart(0, "div", 7);
14
+ i0.ɵɵtemplate(1, ActionsCellComponent_div_1_div_1_img_1_Template, 1, 2, "img", 8);
14
15
  i0.ɵɵelementEnd();
15
16
  } if (rf & 2) {
16
17
  const item_r1 = ctx.$implicit;
@@ -20,8 +21,8 @@ function ActionsCellComponent_div_1_div_1_Template(rf, ctx) { if (rf & 1) {
20
21
  i0.ɵɵproperty("ngIf", ctx_r1.isSvgFile(item_r1.icon));
21
22
  } }
22
23
  function ActionsCellComponent_div_1_Template(rf, ctx) { if (rf & 1) {
23
- i0.ɵɵelementStart(0, "div", 4);
24
- i0.ɵɵtemplate(1, ActionsCellComponent_div_1_div_1_Template, 2, 4, "div", 5);
24
+ i0.ɵɵelementStart(0, "div", 5);
25
+ i0.ɵɵtemplate(1, ActionsCellComponent_div_1_div_1_Template, 2, 4, "div", 6);
25
26
  i0.ɵɵelementEnd();
26
27
  } if (rf & 2) {
27
28
  const ctx_r1 = i0.ɵɵnextContext();
@@ -29,8 +30,8 @@ function ActionsCellComponent_div_1_Template(rf, ctx) { if (rf & 1) {
29
30
  i0.ɵɵproperty("ngForOf", ctx_r1.actionItems)("ngForTrackBy", ctx_r1.trackByAction);
30
31
  } }
31
32
  function ActionsCellComponent_div_2_div_6_div_1_ng_container_1_span_1_Template(rf, ctx) { if (rf & 1) {
32
- i0.ɵɵelementStart(0, "span", 26);
33
- i0.ɵɵelement(1, "img", 27);
33
+ i0.ɵɵelementStart(0, "span", 27);
34
+ i0.ɵɵelement(1, "img", 28);
34
35
  i0.ɵɵelementEnd();
35
36
  } if (rf & 2) {
36
37
  const item_r5 = i0.ɵɵnextContext(2).$implicit;
@@ -38,8 +39,8 @@ function ActionsCellComponent_div_2_div_6_div_1_ng_container_1_span_1_Template(r
38
39
  i0.ɵɵproperty("src", item_r5.icon, i0.ɵɵsanitizeUrl);
39
40
  } }
40
41
  function ActionsCellComponent_div_2_div_6_div_1_ng_container_1_div_7_div_1_span_1_Template(rf, ctx) { if (rf & 1) {
41
- i0.ɵɵelementStart(0, "span", 26);
42
- i0.ɵɵelement(1, "img", 27);
42
+ i0.ɵɵelementStart(0, "span", 27);
43
+ i0.ɵɵelement(1, "img", 28);
43
44
  i0.ɵɵelementEnd();
44
45
  } if (rf & 2) {
45
46
  const child_r7 = i0.ɵɵnextContext().$implicit;
@@ -48,10 +49,10 @@ function ActionsCellComponent_div_2_div_6_div_1_ng_container_1_div_7_div_1_span_
48
49
  } }
49
50
  function ActionsCellComponent_div_2_div_6_div_1_ng_container_1_div_7_div_1_Template(rf, ctx) { if (rf & 1) {
50
51
  const _r6 = i0.ɵɵgetCurrentView();
51
- i0.ɵɵelementStart(0, "div", 18);
52
+ i0.ɵɵelementStart(0, "div", 19);
52
53
  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_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.onDropdownItemClick(child_r7, $event)); });
53
- i0.ɵɵtemplate(1, ActionsCellComponent_div_2_div_6_div_1_ng_container_1_div_7_div_1_span_1_Template, 2, 1, "span", 20);
54
- i0.ɵɵelementStart(2, "span", 21);
54
+ i0.ɵɵtemplate(1, ActionsCellComponent_div_2_div_6_div_1_ng_container_1_div_7_div_1_span_1_Template, 2, 1, "span", 21);
55
+ i0.ɵɵelementStart(2, "span", 22);
55
56
  i0.ɵɵtext(3);
56
57
  i0.ɵɵelementEnd()();
57
58
  } if (rf & 2) {
@@ -64,8 +65,8 @@ function ActionsCellComponent_div_2_div_6_div_1_ng_container_1_div_7_div_1_Templ
64
65
  i0.ɵɵtextInterpolate(child_r7.label);
65
66
  } }
66
67
  function ActionsCellComponent_div_2_div_6_div_1_ng_container_1_div_7_Template(rf, ctx) { if (rf & 1) {
67
- i0.ɵɵelementStart(0, "div", 28);
68
- i0.ɵɵtemplate(1, ActionsCellComponent_div_2_div_6_div_1_ng_container_1_div_7_div_1_Template, 4, 5, "div", 17);
68
+ i0.ɵɵelementStart(0, "div", 29);
69
+ i0.ɵɵtemplate(1, ActionsCellComponent_div_2_div_6_div_1_ng_container_1_div_7_div_1_Template, 4, 5, "div", 18);
69
70
  i0.ɵɵelementEnd();
70
71
  } if (rf & 2) {
71
72
  const item_r5 = i0.ɵɵnextContext(2).$implicit;
@@ -75,16 +76,16 @@ function ActionsCellComponent_div_2_div_6_div_1_ng_container_1_div_7_Template(rf
75
76
  } }
76
77
  function ActionsCellComponent_div_2_div_6_div_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
77
78
  i0.ɵɵelementContainerStart(0);
78
- i0.ɵɵtemplate(1, ActionsCellComponent_div_2_div_6_div_1_ng_container_1_span_1_Template, 2, 1, "span", 20);
79
- i0.ɵɵelementStart(2, "span", 21);
79
+ i0.ɵɵtemplate(1, ActionsCellComponent_div_2_div_6_div_1_ng_container_1_span_1_Template, 2, 1, "span", 21);
80
+ i0.ɵɵelementStart(2, "span", 22);
80
81
  i0.ɵɵtext(3);
81
82
  i0.ɵɵelementEnd();
82
- i0.ɵɵelementStart(4, "span", 22);
83
+ i0.ɵɵelementStart(4, "span", 23);
83
84
  i0.ɵɵnamespaceSVG();
84
- i0.ɵɵelementStart(5, "svg", 23);
85
- i0.ɵɵelement(6, "path", 24);
85
+ i0.ɵɵelementStart(5, "svg", 24);
86
+ i0.ɵɵelement(6, "path", 25);
86
87
  i0.ɵɵelementEnd()();
87
- i0.ɵɵtemplate(7, ActionsCellComponent_div_2_div_6_div_1_ng_container_1_div_7_Template, 2, 2, "div", 25);
88
+ i0.ɵɵtemplate(7, ActionsCellComponent_div_2_div_6_div_1_ng_container_1_div_7_Template, 2, 2, "div", 26);
88
89
  i0.ɵɵelementContainerEnd();
89
90
  } if (rf & 2) {
90
91
  const item_r5 = i0.ɵɵnextContext().$implicit;
@@ -97,8 +98,8 @@ function ActionsCellComponent_div_2_div_6_div_1_ng_container_1_Template(rf, ctx)
97
98
  i0.ɵɵproperty("ngIf", item_r5.showSubmenu);
98
99
  } }
99
100
  function ActionsCellComponent_div_2_div_6_div_1_ng_template_2_span_0_Template(rf, ctx) { if (rf & 1) {
100
- i0.ɵɵelementStart(0, "span", 26);
101
- i0.ɵɵelement(1, "img", 27);
101
+ i0.ɵɵelementStart(0, "span", 27);
102
+ i0.ɵɵelement(1, "img", 28);
102
103
  i0.ɵɵelementEnd();
103
104
  } if (rf & 2) {
104
105
  const item_r5 = i0.ɵɵnextContext(2).$implicit;
@@ -106,8 +107,8 @@ function ActionsCellComponent_div_2_div_6_div_1_ng_template_2_span_0_Template(rf
106
107
  i0.ɵɵproperty("src", item_r5.icon, i0.ɵɵsanitizeUrl);
107
108
  } }
108
109
  function ActionsCellComponent_div_2_div_6_div_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {
109
- i0.ɵɵtemplate(0, ActionsCellComponent_div_2_div_6_div_1_ng_template_2_span_0_Template, 2, 1, "span", 20);
110
- i0.ɵɵelementStart(1, "span", 21);
110
+ i0.ɵɵtemplate(0, ActionsCellComponent_div_2_div_6_div_1_ng_template_2_span_0_Template, 2, 1, "span", 21);
111
+ i0.ɵɵelementStart(1, "span", 22);
111
112
  i0.ɵɵtext(2);
112
113
  i0.ɵɵelementEnd();
113
114
  } if (rf & 2) {
@@ -119,9 +120,9 @@ function ActionsCellComponent_div_2_div_6_div_1_ng_template_2_Template(rf, ctx)
119
120
  } }
120
121
  function ActionsCellComponent_div_2_div_6_div_1_Template(rf, ctx) { if (rf & 1) {
121
122
  const _r4 = i0.ɵɵgetCurrentView();
122
- i0.ɵɵelementStart(0, "div", 18);
123
+ i0.ɵɵelementStart(0, "div", 19);
123
124
  i0.ɵɵlistener("click", function ActionsCellComponent_div_2_div_6_div_1_Template_div_click_0_listener($event) { const item_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onDropdownItemClick(item_r5, $event)); });
124
- 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);
125
+ i0.ɵɵtemplate(1, ActionsCellComponent_div_2_div_6_div_1_ng_container_1_Template, 8, 3, "ng-container", 20)(2, ActionsCellComponent_div_2_div_6_div_1_ng_template_2_Template, 3, 2, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
125
126
  i0.ɵɵelementEnd();
126
127
  } if (rf & 2) {
127
128
  const item_r5 = ctx.$implicit;
@@ -132,8 +133,8 @@ function ActionsCellComponent_div_2_div_6_div_1_Template(rf, ctx) { if (rf & 1)
132
133
  i0.ɵɵproperty("ngIf", item_r5.children == null ? null : item_r5.children.length)("ngIfElse", noChildren_r8);
133
134
  } }
134
135
  function ActionsCellComponent_div_2_div_6_Template(rf, ctx) { if (rf & 1) {
135
- i0.ɵɵelementStart(0, "div", 16);
136
- i0.ɵɵtemplate(1, ActionsCellComponent_div_2_div_6_div_1_Template, 4, 5, "div", 17);
136
+ i0.ɵɵelementStart(0, "div", 17);
137
+ i0.ɵɵtemplate(1, ActionsCellComponent_div_2_div_6_div_1_Template, 4, 5, "div", 18);
137
138
  i0.ɵɵelementEnd();
138
139
  } if (rf & 2) {
139
140
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -143,19 +144,29 @@ function ActionsCellComponent_div_2_div_6_Template(rf, ctx) { if (rf & 1) {
143
144
  } }
144
145
  function ActionsCellComponent_div_2_Template(rf, ctx) { if (rf & 1) {
145
146
  const _r3 = i0.ɵɵgetCurrentView();
146
- i0.ɵɵelementStart(0, "div", 9)(1, "div", 10);
147
+ i0.ɵɵelementStart(0, "div", 10)(1, "div", 11);
147
148
  i0.ɵɵlistener("click", function ActionsCellComponent_div_2_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleDropdown($event)); });
148
149
  i0.ɵɵnamespaceSVG();
149
- i0.ɵɵelementStart(2, "svg", 11);
150
- i0.ɵɵelement(3, "circle", 12)(4, "circle", 13)(5, "circle", 14);
150
+ i0.ɵɵelementStart(2, "svg", 12);
151
+ i0.ɵɵelement(3, "circle", 13)(4, "circle", 14)(5, "circle", 15);
151
152
  i0.ɵɵelementEnd()();
152
- i0.ɵɵtemplate(6, ActionsCellComponent_div_2_div_6_Template, 2, 2, "div", 15);
153
+ i0.ɵɵtemplate(6, ActionsCellComponent_div_2_div_6_Template, 2, 2, "div", 16);
153
154
  i0.ɵɵelementEnd();
154
155
  } if (rf & 2) {
155
156
  const ctx_r1 = i0.ɵɵnextContext();
156
157
  i0.ɵɵadvance(6);
157
158
  i0.ɵɵproperty("ngIf", ctx_r1.isDropdownOpen);
158
159
  } }
160
+ function ActionsCellComponent_div_3_Template(rf, ctx) { if (rf & 1) {
161
+ const _r9 = i0.ɵɵgetCurrentView();
162
+ i0.ɵɵelementStart(0, "div", 30)(1, "mis-checkbox", 31);
163
+ i0.ɵɵlistener("valueChange", function ActionsCellComponent_div_3_Template_mis_checkbox_valueChange_1_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCheckboxChange($event)); });
164
+ i0.ɵɵelementEnd()();
165
+ } if (rf & 2) {
166
+ const ctx_r1 = i0.ɵɵnextContext();
167
+ i0.ɵɵadvance();
168
+ i0.ɵɵproperty("checked", ctx_r1.isChecked)("disabled", ctx_r1.actionPermissions && ctx_r1.actionPermissions.hasOwnProperty("checkbox") && ctx_r1.actionPermissions["checkbox"] === false);
169
+ } }
159
170
  export class ActionsCellComponent {
160
171
  constructor() {
161
172
  this.actionItems = [];
@@ -163,6 +174,8 @@ export class ActionsCellComponent {
163
174
  this.dropdownIcon = '';
164
175
  this.submenuAlign = 'right';
165
176
  this.menuAlign = 'left';
177
+ this.isChecked = false;
178
+ this.checkboxChange = new EventEmitter();
166
179
  this._style = {};
167
180
  this.containerStyle = {};
168
181
  this.actionClick = new EventEmitter();
@@ -245,12 +258,20 @@ export class ActionsCellComponent {
245
258
  this.isDropdownOpen = false; // Only close if action was executed
246
259
  }
247
260
  }
261
+ onCheckboxChange(event) {
262
+ // Check permissions before allowing change
263
+ if (this.actionPermissions && this.actionPermissions.hasOwnProperty('checkbox') && this.actionPermissions['checkbox'] === false) {
264
+ return; // Don't allow change if disabled
265
+ }
266
+ this.isChecked = event.value;
267
+ this.actionClick.emit({ isChecked: this.isChecked, data: this.data });
268
+ }
248
269
  static { this.ɵfac = function ActionsCellComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ActionsCellComponent)(); }; }
249
270
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ActionsCellComponent, selectors: [["mis-actions-cell"]], hostBindings: function ActionsCellComponent_HostBindings(rf, ctx) { if (rf & 1) {
250
271
  i0.ɵɵlistener("click", function ActionsCellComponent_click_HostBindingHandler() { return ctx.onDocumentClick(); }, false, i0.ɵɵresolveDocument);
251
- } }, inputs: { data: "data", actionItems: "actionItems", actionType: "actionType", dropdownIcon: "dropdownIcon", submenuAlign: "submenuAlign", menuAlign: "menuAlign", actionPermissions: "actionPermissions", style: "style" }, outputs: { actionClick: "actionClick" }, decls: 3, vars: 3, consts: [["noChildren", ""], [1, "actions-cell-container", 3, "ngStyle"], ["class", "inline-actions", 4, "ngIf"], ["class", "dropdown-actions", 4, "ngIf"], [1, "inline-actions"], ["class", "action-item", 3, "ngClass", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "action-item", 3, "ngClass"], ["class", "action-icon-svg", 3, "src", "alt", 4, "ngIf"], [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"]], template: function ActionsCellComponent_Template(rf, ctx) { if (rf & 1) {
272
+ } }, inputs: { data: "data", actionItems: "actionItems", actionType: "actionType", dropdownIcon: "dropdownIcon", submenuAlign: "submenuAlign", menuAlign: "menuAlign", actionPermissions: "actionPermissions", isChecked: "isChecked", style: "style" }, outputs: { checkboxChange: "checkboxChange", 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", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "action-item", 3, "ngClass"], ["class", "action-icon-svg", 3, "src", "alt", 4, "ngIf"], [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) {
252
273
  i0.ɵɵelementStart(0, "div", 1);
253
- i0.ɵɵtemplate(1, ActionsCellComponent_div_1_Template, 2, 2, "div", 2)(2, ActionsCellComponent_div_2_Template, 7, 1, "div", 3);
274
+ 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);
254
275
  i0.ɵɵelementEnd();
255
276
  } if (rf & 2) {
256
277
  i0.ɵɵproperty("ngStyle", ctx.containerStyle);
@@ -258,11 +279,13 @@ export class ActionsCellComponent {
258
279
  i0.ɵɵproperty("ngIf", ctx.actionType === "inline");
259
280
  i0.ɵɵadvance();
260
281
  i0.ɵɵproperty("ngIf", ctx.actionType === "dropdown");
261
- } }, dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgStyle], 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}"] }); }
282
+ i0.ɵɵadvance();
283
+ i0.ɵɵproperty("ngIf", ctx.actionType === "checkbox");
284
+ } }, 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}"] }); }
262
285
  }
263
286
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ActionsCellComponent, [{
264
287
  type: Component,
265
- 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 *ngFor=\"let item of actionItems; trackBy: trackByAction\" class=\"action-item\"\n [ngClass]=\"{ 'disabled': actionPermissions && actionPermissions.hasOwnProperty(item.value) && actionPermissions[item.value] === false }\"> \n <img *ngIf=\"isSvgFile(item.icon)\" [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\" \n *ngIf=\"isDropdownOpen\" \n [ngClass]=\"menuAlign\"\n >\n <div class=\"dropdown-menu-item\" *ngFor=\"let item of actionItems\" \n (click)=\"onDropdownItemClick(item, $event)\" [ngClass]=\"{ 'disabled': actionPermissions && actionPermissions.hasOwnProperty(item.value) && actionPermissions[item.value] === false }\">\n <ng-container *ngIf=\"item.children?.length; else noChildren\">\n <span class=\"dropdown-icon\" *ngIf=\"item.icon && isSvgFile(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\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n\n <!-- DYNAMIC SUBMENU -->\n <div class=\"dropdown-submenu\"\n [ngClass]=\"item.submenuAlign\"\n *ngIf=\"item.showSubmenu\">\n <div class=\"dropdown-menu-item\" *ngFor=\"let child of item.children\"\n [ngClass]=\"{ 'disabled': actionPermissions && actionPermissions.hasOwnProperty(child.value) && actionPermissions[child.value] === false }\"\n (click)=\"onDropdownItemClick(child, $event)\">\n <span class=\"dropdown-icon\" *ngIf=\"child.icon && isSvgFile(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 && isSvgFile(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</div>", 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
+ 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 *ngFor=\"let item of actionItems; trackBy: trackByAction\" class=\"action-item\"\n [ngClass]=\"{ 'disabled': actionPermissions && actionPermissions.hasOwnProperty(item.value) && actionPermissions[item.value] === false }\"> \n <img *ngIf=\"isSvgFile(item.icon)\" [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\" \n *ngIf=\"isDropdownOpen\" \n [ngClass]=\"menuAlign\"\n >\n <div class=\"dropdown-menu-item\" *ngFor=\"let item of actionItems\" \n (click)=\"onDropdownItemClick(item, $event)\" [ngClass]=\"{ 'disabled': actionPermissions && actionPermissions.hasOwnProperty(item.value) && actionPermissions[item.value] === false }\">\n <ng-container *ngIf=\"item.children?.length; else noChildren\">\n <span class=\"dropdown-icon\" *ngIf=\"item.icon && isSvgFile(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\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n\n <!-- DYNAMIC SUBMENU -->\n <div class=\"dropdown-submenu\"\n [ngClass]=\"item.submenuAlign\"\n *ngIf=\"item.showSubmenu\">\n <div class=\"dropdown-menu-item\" *ngFor=\"let child of item.children\"\n [ngClass]=\"{ 'disabled': actionPermissions && actionPermissions.hasOwnProperty(child.value) && actionPermissions[child.value] === false }\"\n (click)=\"onDropdownItemClick(child, $event)\">\n <span class=\"dropdown-icon\" *ngIf=\"child.icon && isSvgFile(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 && isSvgFile(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 \n [checked]=\"isChecked\"\n (valueChange)=\"onCheckboxChange($event)\"\n [disabled]=\"actionPermissions && actionPermissions.hasOwnProperty('checkbox') && actionPermissions['checkbox'] === false\">\n </mis-checkbox>\n </div>\n</div>", 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"] }]
266
289
  }], null, { data: [{
267
290
  type: Input
268
291
  }], actionItems: [{
@@ -277,6 +300,10 @@ export class ActionsCellComponent {
277
300
  type: Input
278
301
  }], actionPermissions: [{
279
302
  type: Input
303
+ }], isChecked: [{
304
+ type: Input
305
+ }], checkboxChange: [{
306
+ type: Output
280
307
  }], style: [{
281
308
  type: Input
282
309
  }], actionClick: [{
@@ -286,4 +313,4 @@ export class ActionsCellComponent {
286
313
  args: ['document:click']
287
314
  }] }); })();
288
315
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ActionsCellComponent, { className: "ActionsCellComponent" }); })();
289
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy1jZWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3RhYmxlL2FjdGlvbnMtY2VsbC9hY3Rpb25zLWNlbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGFibGUvYWN0aW9ucy1jZWxsL2FjdGlvbnMtY2VsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7SUNLakYseUJBQWlHOzs7SUFBN0MsQUFBbEIsb0RBQWlCLHNCQUFtQjs7O0lBRjFFLDhCQUN5STtJQUNySSxpRkFBaUc7SUFDckcsaUJBQU07Ozs7SUFGTiw2TEFBd0k7SUFDOUgsY0FBMEI7SUFBMUIscURBQTBCOzs7SUFIeEMsOEJBQTREO0lBQ3hELDJFQUN5STtJQUc3SSxpQkFBTTs7O0lBSm9CLGNBQWdCO0lBQUEsQUFBaEIsNENBQWdCLHNDQUFzQjs7O0lBdUJoRCxnQ0FBc0U7SUFDbEUsMEJBQXlCO0lBQzdCLGlCQUFPOzs7SUFERSxjQUFpQjtJQUFqQixvREFBaUI7OztJQWlCbEIsZ0NBQXdFO0lBQ3BFLDBCQUEwQjtJQUM5QixpQkFBTzs7O0lBREUsY0FBa0I7SUFBbEIscURBQWtCOzs7O0lBSi9CLCtCQUVpRDtJQUE3QyxzUEFBUyw0Q0FBa0MsS0FBQztJQUM1QyxxSEFBd0U7SUFHeEUsZ0NBQTZCO0lBQUEsWUFBaUI7SUFDbEQsQUFEa0QsaUJBQU8sRUFDbkQ7Ozs7SUFORiwrTEFBMEk7SUFFN0csY0FBeUM7SUFBekMsdUVBQXlDO0lBR3pDLGVBQWlCO0lBQWpCLG9DQUFpQjs7O0lBVHRELCtCQUU2QjtJQUN6Qiw2R0FFaUQ7SUFNckQsaUJBQU07OztJ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RyxVQUFVO2tCQUFsQixLQUFLO1lBQ0csWUFBWTtrQkFBcEIsS0FBSztZQUNHLFlBQVk7a0JBQXBCLEtBQUs7WUFDRyxTQUFTO2tCQUFqQixLQUFLO1lBQ0csaUJBQWlCO2tCQUF6QixLQUFLO1lBTU8sS0FBSztrQkFBakIsS0FBSztZQVNJLFdBQVc7a0JBQXBCLE1BQU07WUE2Q1AsZUFBZTtrQkFEZCxZQUFZO21CQUFDLGdCQUFnQjs7a0ZBbEVuQixvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbkl0ZW0gfSBmcm9tICcuLi90YWJsZS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtaXMtYWN0aW9ucy1jZWxsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FjdGlvbnMtY2VsbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9hY3Rpb25zLWNlbGwuY29tcG9uZW50LmNzcydcbn0pXG5leHBvcnQgY2xhc3MgQWN0aW9uc0NlbGxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBkYXRhOiBhbnk7XG4gIEBJbnB1dCgpIGFjdGlvbkl0ZW1zOiBBY3Rpb25JdGVtW10gPSBbXTtcbiAgQElucHV0KCkgYWN0aW9uVHlwZTogJ2lubGluZScgfCAnZHJvcGRvd24nIHwgJ2NoZWNrYm94JyA9ICdpbmxpbmUnO1xuICBASW5wdXQoKSBkcm9wZG93bkljb246IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzdWJtZW51QWxpZ246ICdsZWZ0JyB8ICdyaWdodCcgPSAncmlnaHQnO1xuICBASW5wdXQoKSBtZW51QWxpZ246ICdsZWZ0JyB8ICdyaWdodCcgPSAnbGVmdCc7XG4gIEBJbnB1dCgpIGFjdGlvblBlcm1pc3Npb25zOiBhbnk7XG5cbiAgXG4gIHByaXZhdGUgX3N0eWxlOiBhbnkgPSB7fTtcbiAgY29udGFpbmVyU3R5bGU6IGFueSA9IHt9O1xuXG4gIEBJbnB1dCgpIHNldCBzdHlsZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fc3R5bGUgPSB2YWx1ZSB8fCB7fTtcbiAgICB0aGlzLnByb2Nlc3NTdHlsZSgpO1xuICB9XG5cbiAgZ2V0IHN0eWxlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0eWxlO1xuICB9XG4gIFxuICBAT3V0cHV0KCkgYWN0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHsgaXRlbTogQWN0aW9uSXRlbSwgZGF0YTogYW55IH0+KCk7XG5cbiAgaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcbiAgZGVmYXVsdERyb3Bkb3duSWNvbiA9IGBcbiAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgPGNpcmNsZSBjeD1cIjhcIiBjeT1cIjRcIiByPVwiMlwiIGZpbGw9XCIjMzMzXCIvPlxuICAgIDxjaXJjbGUgY3g9XCI4XCIgY3k9XCI4XCIgcj1cIjJcIiBmaWxsPVwiIzMzM1wiLz5cbiAgICA8Y2lyY2xlIGN4PVwiOFwiIGN5PVwiMTJcIiByPVwiMlwiIGZpbGw9XCIjMzMzXCIvPlxuICA8L3N2Zz5cbmA7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gIHByaXZhdGUgcHJvY2Vzc1N0eWxlKCk6IHZvaWQge1xuICAgIC8vIFJlbW92ZSB3aWR0aCBmcm9tIHN0eWxlIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIHRhYmxlIGNvbHVtbiB3aWR0aFxuICAgIGNvbnN0IHsgd2lkdGgsIC4uLnJlc3RTdHlsZSB9ID0gdGhpcy5fc3R5bGU7XG4gICAgdGhpcy5jb250YWluZXJTdHlsZSA9IHJlc3RTdHlsZTtcbiAgfVxuXG4gIG9uQWN0aW9uQ2xpY2soaXRlbTogQWN0aW9uSXRlbSwgZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgXG4gICAgLy8gQ2hlY2sgcGVybWlzc2lvbnMgYmVmb3JlIGV4ZWN1dGluZyBhY3Rpb25cbiAgICBpZiAodGhpcy5hY3Rpb25QZXJtaXNzaW9ucyAmJiB0aGlzLmFjdGlvblBlcm1pc3Npb25zLmhhc093blByb3BlcnR5KGl0ZW0udmFsdWUpICYmIHRoaXMuYWN0aW9uUGVybWlzc2lvbnNbaXRlbS52YWx1ZV0gPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm47IFxuICAgIH1cbiAgICBcbiAgICAvLyBFeGVjdXRlIGFjdGlvbiBvbmx5IGlmIHBlcm1pdHRlZFxuICAgIGlmIChpdGVtLmFjdGlvbikge1xuICAgICAgaXRlbS5hY3Rpb24odGhpcy5kYXRhKTtcbiAgICB9XG4gICAgXG4gICAgdGhpcy5hY3Rpb25DbGljay5lbWl0KHsgaXRlbSwgZGF0YTogdGhpcy5kYXRhIH0pO1xuICB9XG5cbiAgdHJhY2tCeUFjdGlvbihpbmRleDogbnVtYmVyLCBpdGVtOiBBY3Rpb25JdGVtKTogc3RyaW5nIHtcbiAgICByZXR1cm4gaXRlbS52YWx1ZTtcbiAgfVxuXG4gIGlzU3ZnRmlsZShpY29uUGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCFpY29uUGF0aCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBpY29uUGF0aC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCcuc3ZnJykgfHwgaWNvblBhdGgudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnYXNzZXRzL2ljb25zLycpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snKVxuICBvbkRvY3VtZW50Q2xpY2soKSB7XG4gICAgaWYgKHRoaXMuaXNEcm9wZG93bk9wZW4pIHtcbiAgICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVEcm9wZG93bihldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmlzRHJvcGRvd25PcGVuID0gIXRoaXMuaXNEcm9wZG93bk9wZW47XG4gICAgLy8gQ2xvc2UgYWxsIHN1Ym1lbnVzIHdoZW4gb3BlbmluZy9jbG9zaW5nIG1haW4gbWVudVxuICAgIHRoaXMuYWN0aW9uSXRlbXMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiBpdGVtLnNob3dTdWJtZW51ID0gZmFsc2UpO1xuICB9XG4gIFxuICBvbkRyb3Bkb3duSXRlbUNsaWNrKGl0ZW06IGFueSwgZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgXG4gICAgLy8gQ2hlY2sgcGVybWlzc2lvbnMgZmlyc3RcbiAgICBpZiAodGhpcy5hY3Rpb25QZXJtaXNzaW9ucyAmJiB0aGlzLmFjdGlvblBlcm1pc3Npb25zLmhhc093blByb3BlcnR5KGl0ZW0udmFsdWUpICYmIHRoaXMuYWN0aW9uUGVybWlzc2lvbnNbaXRlbS52YWx1ZV0gPT09IGZhbHNlKSB7XG4gICAgICBjb25zb2xlLmxvZygnQWN0aW9uIGJsb2NrZWQ6IGluc3VmZmljaWVudCBwZXJtaXNzaW9ucycpO1xuICAgICAgcmV0dXJuOyAvLyBEb24ndCBjbG9zZSBkcm9wZG93biBvciBleGVjdXRlIGFjdGlvblxuICAgIH1cbiAgICBcbiAgICBpZiAoaXRlbS5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIFxuICAgIGlmIChpdGVtLmNoaWxkcmVuKSB7XG4gICAgICAvLyBUb2dnbGUgc3VibWVudVxuICAgICAgaXRlbS5zaG93U3VibWVudSA9ICFpdGVtLnNob3dTdWJtZW51O1xuICAgICAgLy8gT3B0aW9uYWxseSBjbG9zZSBvdGhlciBzdWJtZW51c1xuICAgICAgdGhpcy5hY3Rpb25JdGVtcy5mb3JFYWNoKChpOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGkgIT09IGl0ZW0pIGkuc2hvd1N1Ym1lbnUgPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBIYW5kbGUgYWN0aW9uXG4gICAgICBpZiAoaXRlbS5hY3Rpb24pIGl0ZW0uYWN0aW9uKHRoaXMuZGF0YSk7XG4gICAgICB0aGlzLmFjdGlvbkNsaWNrLmVtaXQoeyBpdGVtLCBkYXRhOiB0aGlzLmRhdGEgfSk7XG4gICAgICB0aGlzLmlzRHJvcGRvd25PcGVuID0gZmFsc2U7IC8vIE9ubHkgY2xvc2UgaWYgYWN0aW9uIHdhcyBleGVjdXRlZFxuICAgIH1cbiAgfVxufSIsIjxkaXYgY2xhc3M9XCJhY3Rpb25zLWNlbGwtY29udGFpbmVyXCIgW25nU3R5bGVdPVwiY29udGFpbmVyU3R5bGVcIj5cbiAgICA8IS0tIElubGluZSBBY3Rpb25zIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJhY3Rpb25UeXBlID09PSAnaW5saW5lJ1wiIGNsYXNzPVwiaW5saW5lLWFjdGlvbnNcIj5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBhY3Rpb25JdGVtczsgdHJhY2tCeTogdHJhY2tCeUFjdGlvblwiIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdkaXNhYmxlZCc6IGFjdGlvblBlcm1pc3Npb25zICYmIGFjdGlvblBlcm1pc3Npb25zLmhhc093blByb3BlcnR5KGl0ZW0udmFsdWUpICYmIGFjdGlvblBlcm1pc3Npb25zW2l0ZW0udmFsdWVdID09PSBmYWxzZSB9XCI+IFxuICAgICAgICAgICAgPGltZyAqbmdJZj1cImlzU3ZnRmlsZShpdGVtLmljb24pXCIgW3NyY109XCJpdGVtLmljb25cIiBbYWx0XT1cIml0ZW0ubGFiZWxcIiBjbGFzcz1cImFjdGlvbi1pY29uLXN2Z1wiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBEcm9wZG93biBBY3Rpb25zIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJhY3Rpb25UeXBlID09PSAnZHJvcGRvd24nXCIgY2xhc3M9XCJkcm9wZG93bi1hY3Rpb25zXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi10cmlnZ2VyXCIgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKCRldmVudClcIiB0aXRsZT1cIk1vcmUgYWN0aW9uc1wiPlxuICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTBcIiBjeT1cIjRcIiByPVwiMlwiIGZpbGw9XCIjMzMzXCIgLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTBcIiBjeT1cIjEwXCIgcj1cIjJcIiBmaWxsPVwiIzMzM1wiIC8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjEwXCIgY3k9XCIxNlwiIHI9XCIyXCIgZmlsbD1cIiMzMzNcIiAvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgXG4gICAgICAgICAgICAgKm5nSWY9XCJpc0Ryb3Bkb3duT3BlblwiIFxuICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIm1lbnVBbGlnblwiXG4gICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnUtaXRlbVwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGFjdGlvbkl0ZW1zXCIgXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRHJvcGRvd25JdGVtQ2xpY2soaXRlbSwgJGV2ZW50KVwiIFtuZ0NsYXNzXT1cInsgJ2Rpc2FibGVkJzogYWN0aW9uUGVybWlzc2lvbnMgJiYgYWN0aW9uUGVybWlzc2lvbnMuaGFzT3duUHJvcGVydHkoaXRlbS52YWx1ZSkgJiYgYWN0aW9uUGVybWlzc2lvbnNbaXRlbS52YWx1ZV0gPT09IGZhbHNlIH1cIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5jaGlsZHJlbj8ubGVuZ3RoOyBlbHNlIG5vQ2hpbGRyZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wZG93bi1pY29uXCIgKm5nSWY9XCJpdGVtLmljb24gJiYgaXNTdmdGaWxlKGl0ZW0uaWNvbilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpdGVtLmljb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcGRvd24tbGFiZWxcIj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1Ym1lbnUtYXJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDZMMTUgMTJMOSAxOFwiIHN0cm9rZT1cIiMwRDEzMjFcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBEWU5BTUlDIFNVQk1FTlUgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1zdWJtZW51XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIml0ZW0uc3VibWVudUFsaWduXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5zaG93U3VibWVudVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnUtaXRlbVwiICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBpdGVtLmNoaWxkcmVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdkaXNhYmxlZCc6IGFjdGlvblBlcm1pc3Npb25zICYmIGFjdGlvblBlcm1pc3Npb25zLmhhc093blByb3BlcnR5KGNoaWxkLnZhbHVlKSAmJiBhY3Rpb25QZXJtaXNzaW9uc1tjaGlsZC52YWx1ZV0gPT09IGZhbHNlIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRyb3Bkb3duSXRlbUNsaWNrKGNoaWxkLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wZG93bi1pY29uXCIgKm5nSWY9XCJjaGlsZC5pY29uICYmIGlzU3ZnRmlsZShjaGlsZC5pY29uKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiY2hpbGQuaWNvblwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcGRvd24tbGFiZWxcIj57eyBjaGlsZC5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9DaGlsZHJlbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wZG93bi1pY29uXCIgKm5nSWY9XCJpdGVtLmljb24gJiYgaXNTdmdGaWxlKGl0ZW0uaWNvbilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpdGVtLmljb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcGRvd24tbGFiZWxcIj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=
316
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy1jZWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3RhYmxlL2FjdGlvbnMtY2VsbC9hY3Rpb25zLWNlbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGFibGUvYWN0aW9ucy1jZWxsL2FjdGlvbnMtY2VsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0lDS2pGLHlCQUFpRzs7O0lBQTdDLEFBQWxCLG9EQUFpQixzQkFBbUI7OztJQUYxRSw4QkFDeUk7SUFDckksaUZBQWlHO0lBQ3JHLGlCQUFNOzs7O0lBRk4sNkxBQXdJO0lBQzlILGNBQTBCO0lBQTFCLHFEQUEwQjs7O0lBSHhDLDhCQUE0RDtJQUN4RCwyRUFDeUk7SUFHN0ksaUJBQU07OztJQUpvQixjQUFnQjtJQUFBLEFBQWhCLDRDQUFnQixzQ0FBc0I7OztJQXVCaEQsZ0NBQXNFO0lBQ2xFLDBCQUF5QjtJQUM3QixpQkFBTzs7O0lBREUsY0FBaUI7SUFBakIsb0RBQWlCOzs7SUFpQmxCLGdDQUF3RTtJQUNwRSwwQkFBMEI7SUFDOUIsaUJBQU87OztJQURFLGNBQWtCO0lBQWxCLHFEQUFrQjs7OztJQUovQiwrQkFFaUQ7SUFBN0Msc1BBQVMsNENBQWtDLEtBQUM7SUFDNUMscUhBQXdFO0lBR3hFLGdDQUE2QjtJQUFBLFlBQWlCO0lBQ2xELEFBRGtELGlCQUFPLEVBQ25EOzs7O0lBTkYsK0xBQTBJO0lBRTdHLGNBQXlDO0lBQXpDLHVFQUF5QztJQUd6QyxlQUFpQjtJQUFqQixvQ0FBaUI7OztJQVR0RCwrQkFFNkI7SUFDekIsNkdBRWlEO0lBTXJELGlCQUFNOzs7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dCwgT3V0cHV0LCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbkl0ZW0gfSBmcm9tICcuLi90YWJsZS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtaXMtYWN0aW9ucy1jZWxsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FjdGlvbnMtY2VsbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9hY3Rpb25zLWNlbGwuY29tcG9uZW50LmNzcydcbn0pXG5leHBvcnQgY2xhc3MgQWN0aW9uc0NlbGxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBkYXRhOiBhbnk7XG4gIEBJbnB1dCgpIGFjdGlvbkl0ZW1zOiBBY3Rpb25JdGVtW10gPSBbXTtcbiAgQElucHV0KCkgYWN0aW9uVHlwZTogJ2lubGluZScgfCAnZHJvcGRvd24nIHwgJ2NoZWNrYm94JyA9ICdpbmxpbmUnO1xuICBASW5wdXQoKSBkcm9wZG93bkljb246IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzdWJtZW51QWxpZ246ICdsZWZ0JyB8ICdyaWdodCcgPSAncmlnaHQnO1xuICBASW5wdXQoKSBtZW51QWxpZ246ICdsZWZ0JyB8ICdyaWdodCcgPSAnbGVmdCc7XG4gIEBJbnB1dCgpIGFjdGlvblBlcm1pc3Npb25zOiBhbnk7XG4gIEBJbnB1dCgpIGlzQ2hlY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgY2hlY2tib3hDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgXG4gIHByaXZhdGUgX3N0eWxlOiBhbnkgPSB7fTtcbiAgY29udGFpbmVyU3R5bGU6IGFueSA9IHt9O1xuXG4gIEBJbnB1dCgpIHNldCBzdHlsZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fc3R5bGUgPSB2YWx1ZSB8fCB7fTtcbiAgICB0aGlzLnByb2Nlc3NTdHlsZSgpO1xuICB9XG5cbiAgZ2V0IHN0eWxlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0eWxlO1xuICB9XG4gIFxuICBAT3V0cHV0KCkgYWN0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHsgaXRlbT86IEFjdGlvbkl0ZW0sIGRhdGE6IGFueSwgaXNDaGVja2VkPzogYm9vbGVhbiB9PigpO1xuXG4gIGlzRHJvcGRvd25PcGVuID0gZmFsc2U7XG4gIGRlZmF1bHREcm9wZG93bkljb24gPSBgXG4gIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgIDxjaXJjbGUgY3g9XCI4XCIgY3k9XCI0XCIgcj1cIjJcIiBmaWxsPVwiIzMzM1wiLz5cbiAgICA8Y2lyY2xlIGN4PVwiOFwiIGN5PVwiOFwiIHI9XCIyXCIgZmlsbD1cIiMzMzNcIi8+XG4gICAgPGNpcmNsZSBjeD1cIjhcIiBjeT1cIjEyXCIgcj1cIjJcIiBmaWxsPVwiIzMzM1wiLz5cbiAgPC9zdmc+XG5gO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge31cblxuICBwcml2YXRlIHByb2Nlc3NTdHlsZSgpOiB2b2lkIHtcbiAgICAvLyBSZW1vdmUgd2lkdGggZnJvbSBzdHlsZSB0byBhdm9pZCBjb25mbGljdHMgd2l0aCB0YWJsZSBjb2x1bW4gd2lkdGhcbiAgICBjb25zdCB7IHdpZHRoLCAuLi5yZXN0U3R5bGUgfSA9IHRoaXMuX3N0eWxlO1xuICAgIHRoaXMuY29udGFpbmVyU3R5bGUgPSByZXN0U3R5bGU7XG4gIH1cblxuICBvbkFjdGlvbkNsaWNrKGl0ZW06IEFjdGlvbkl0ZW0sIGV2ZW50OiBFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIFxuICAgIC8vIENoZWNrIHBlcm1pc3Npb25zIGJlZm9yZSBleGVjdXRpbmcgYWN0aW9uXG4gICAgaWYgKHRoaXMuYWN0aW9uUGVybWlzc2lvbnMgJiYgdGhpcy5hY3Rpb25QZXJtaXNzaW9ucy5oYXNPd25Qcm9wZXJ0eShpdGVtLnZhbHVlKSAmJiB0aGlzLmFjdGlvblBlcm1pc3Npb25zW2l0ZW0udmFsdWVdID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuOyBcbiAgICB9XG4gICAgXG4gICAgLy8gRXhlY3V0ZSBhY3Rpb24gb25seSBpZiBwZXJtaXR0ZWRcbiAgICBpZiAoaXRlbS5hY3Rpb24pIHtcbiAgICAgIGl0ZW0uYWN0aW9uKHRoaXMuZGF0YSk7XG4gICAgfVxuICAgIFxuICAgIHRoaXMuYWN0aW9uQ2xpY2suZW1pdCh7IGl0ZW0sIGRhdGE6IHRoaXMuZGF0YSB9KTtcbiAgfVxuXG4gIHRyYWNrQnlBY3Rpb24oaW5kZXg6IG51bWJlciwgaXRlbTogQWN0aW9uSXRlbSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGl0ZW0udmFsdWU7XG4gIH1cblxuICBpc1N2Z0ZpbGUoaWNvblBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghaWNvblBhdGgpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gaWNvblBhdGgudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnLnN2ZycpIHx8IGljb25QYXRoLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2Fzc2V0cy9pY29ucy8nKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJylcbiAgb25Eb2N1bWVudENsaWNrKCkge1xuICAgIGlmICh0aGlzLmlzRHJvcGRvd25PcGVuKSB7XG4gICAgICB0aGlzLmlzRHJvcGRvd25PcGVuID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlRHJvcGRvd24oZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9ICF0aGlzLmlzRHJvcGRvd25PcGVuO1xuICAgIC8vIENsb3NlIGFsbCBzdWJtZW51cyB3aGVuIG9wZW5pbmcvY2xvc2luZyBtYWluIG1lbnVcbiAgICB0aGlzLmFjdGlvbkl0ZW1zLmZvckVhY2goKGl0ZW06IGFueSkgPT4gaXRlbS5zaG93U3VibWVudSA9IGZhbHNlKTtcbiAgfVxuICBcbiAgb25Ecm9wZG93bkl0ZW1DbGljayhpdGVtOiBhbnksIGV2ZW50OiBFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIFxuICAgIC8vIENoZWNrIHBlcm1pc3Npb25zIGZpcnN0XG4gICAgaWYgKHRoaXMuYWN0aW9uUGVybWlzc2lvbnMgJiYgdGhpcy5hY3Rpb25QZXJtaXNzaW9ucy5oYXNPd25Qcm9wZXJ0eShpdGVtLnZhbHVlKSAmJiB0aGlzLmFjdGlvblBlcm1pc3Npb25zW2l0ZW0udmFsdWVdID09PSBmYWxzZSkge1xuICAgICAgY29uc29sZS5sb2coJ0FjdGlvbiBibG9ja2VkOiBpbnN1ZmZpY2llbnQgcGVybWlzc2lvbnMnKTtcbiAgICAgIHJldHVybjsgLy8gRG9uJ3QgY2xvc2UgZHJvcGRvd24gb3IgZXhlY3V0ZSBhY3Rpb25cbiAgICB9XG4gICAgXG4gICAgaWYgKGl0ZW0uZGlzYWJsZWQpIHJldHVybjtcbiAgICBcbiAgICBpZiAoaXRlbS5jaGlsZHJlbikge1xuICAgICAgLy8gVG9nZ2xlIHN1Ym1lbnVcbiAgICAgIGl0ZW0uc2hvd1N1Ym1lbnUgPSAhaXRlbS5zaG93U3VibWVudTtcbiAgICAgIC8vIE9wdGlvbmFsbHkgY2xvc2Ugb3RoZXIgc3VibWVudXNcbiAgICAgIHRoaXMuYWN0aW9uSXRlbXMuZm9yRWFjaCgoaTogYW55KSA9PiB7XG4gICAgICAgIGlmIChpICE9PSBpdGVtKSBpLnNob3dTdWJtZW51ID0gZmFsc2U7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSGFuZGxlIGFjdGlvblxuICAgICAgaWYgKGl0ZW0uYWN0aW9uKSBpdGVtLmFjdGlvbih0aGlzLmRhdGEpO1xuICAgICAgdGhpcy5hY3Rpb25DbGljay5lbWl0KHsgaXRlbSwgZGF0YTogdGhpcy5kYXRhIH0pO1xuICAgICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9IGZhbHNlOyAvLyBPbmx5IGNsb3NlIGlmIGFjdGlvbiB3YXMgZXhlY3V0ZWRcbiAgICB9XG4gIH1cblxuICBvbkNoZWNrYm94Q2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICAvLyBDaGVjayBwZXJtaXNzaW9ucyBiZWZvcmUgYWxsb3dpbmcgY2hhbmdlXG4gICAgaWYgKHRoaXMuYWN0aW9uUGVybWlzc2lvbnMgJiYgdGhpcy5hY3Rpb25QZXJtaXNzaW9ucy5oYXNPd25Qcm9wZXJ0eSgnY2hlY2tib3gnKSAmJiB0aGlzLmFjdGlvblBlcm1pc3Npb25zWydjaGVja2JveCddID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuOyAvLyBEb24ndCBhbGxvdyBjaGFuZ2UgaWYgZGlzYWJsZWRcbiAgICB9XG4gICAgdGhpcy5pc0NoZWNrZWQgPSBldmVudC52YWx1ZTtcbiAgICB0aGlzLmFjdGlvbkNsaWNrLmVtaXQoeyBpc0NoZWNrZWQ6IHRoaXMuaXNDaGVja2VkLCBkYXRhOiB0aGlzLmRhdGEgfSk7XG4gIH1cbn0iLCI8ZGl2IGNsYXNzPVwiYWN0aW9ucy1jZWxsLWNvbnRhaW5lclwiIFtuZ1N0eWxlXT1cImNvbnRhaW5lclN0eWxlXCI+XG4gICAgPCEtLSBJbmxpbmUgQWN0aW9ucyAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiYWN0aW9uVHlwZSA9PT0gJ2lubGluZSdcIiBjbGFzcz1cImlubGluZS1hY3Rpb25zXCI+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYWN0aW9uSXRlbXM7IHRyYWNrQnk6IHRyYWNrQnlBY3Rpb25cIiBjbGFzcz1cImFjdGlvbi1pdGVtXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnZGlzYWJsZWQnOiBhY3Rpb25QZXJtaXNzaW9ucyAmJiBhY3Rpb25QZXJtaXNzaW9ucy5oYXNPd25Qcm9wZXJ0eShpdGVtLnZhbHVlKSAmJiBhY3Rpb25QZXJtaXNzaW9uc1tpdGVtLnZhbHVlXSA9PT0gZmFsc2UgfVwiPiBcbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJpc1N2Z0ZpbGUoaXRlbS5pY29uKVwiIFtzcmNdPVwiaXRlbS5pY29uXCIgW2FsdF09XCJpdGVtLmxhYmVsXCIgY2xhc3M9XCJhY3Rpb24taWNvbi1zdmdcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gRHJvcGRvd24gQWN0aW9ucyAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiYWN0aW9uVHlwZSA9PT0gJ2Ryb3Bkb3duJ1wiIGNsYXNzPVwiZHJvcGRvd24tYWN0aW9uc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tdHJpZ2dlclwiIChjbGljayk9XCJ0b2dnbGVEcm9wZG93bigkZXZlbnQpXCIgdGl0bGU9XCJNb3JlIGFjdGlvbnNcIj5cbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjEwXCIgY3k9XCI0XCIgcj1cIjJcIiBmaWxsPVwiIzMzM1wiIC8+XG4gICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjEwXCIgY3k9XCIxMFwiIHI9XCIyXCIgZmlsbD1cIiMzMzNcIiAvPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMFwiIGN5PVwiMTZcIiByPVwiMlwiIGZpbGw9XCIjMzMzXCIgLz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIFxuICAgICAgICAgICAgICpuZ0lmPVwiaXNEcm9wZG93bk9wZW5cIiBcbiAgICAgICAgICAgICBbbmdDbGFzc109XCJtZW51QWxpZ25cIlxuICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51LWl0ZW1cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBhY3Rpb25JdGVtc1wiIFxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRyb3Bkb3duSXRlbUNsaWNrKGl0ZW0sICRldmVudClcIiBbbmdDbGFzc109XCJ7ICdkaXNhYmxlZCc6IGFjdGlvblBlcm1pc3Npb25zICYmIGFjdGlvblBlcm1pc3Npb25zLmhhc093blByb3BlcnR5KGl0ZW0udmFsdWUpICYmIGFjdGlvblBlcm1pc3Npb25zW2l0ZW0udmFsdWVdID09PSBmYWxzZSB9XCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0uY2hpbGRyZW4/Lmxlbmd0aDsgZWxzZSBub0NoaWxkcmVuXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcGRvd24taWNvblwiICpuZ0lmPVwiaXRlbS5pY29uICYmIGlzU3ZnRmlsZShpdGVtLmljb24pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiaXRlbS5pY29uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3Bkb3duLWxhYmVsXCI+e3sgaXRlbS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWJtZW51LWFycm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOSA2TDE1IDEyTDkgMThcIiBzdHJva2U9XCIjMEQxMzIxXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gRFlOQU1JQyBTVUJNRU5VIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tc3VibWVudVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJpdGVtLnN1Ym1lbnVBbGlnblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0uc2hvd1N1Ym1lbnVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51LWl0ZW1cIiAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgaXRlbS5jaGlsZHJlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnZGlzYWJsZWQnOiBhY3Rpb25QZXJtaXNzaW9ucyAmJiBhY3Rpb25QZXJtaXNzaW9ucy5oYXNPd25Qcm9wZXJ0eShjaGlsZC52YWx1ZSkgJiYgYWN0aW9uUGVybWlzc2lvbnNbY2hpbGQudmFsdWVdID09PSBmYWxzZSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Ecm9wZG93bkl0ZW1DbGljayhjaGlsZCwgJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcGRvd24taWNvblwiICpuZ0lmPVwiY2hpbGQuaWNvbiAmJiBpc1N2Z0ZpbGUoY2hpbGQuaWNvbilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImNoaWxkLmljb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3Bkb3duLWxhYmVsXCI+e3sgY2hpbGQubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vQ2hpbGRyZW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcGRvd24taWNvblwiICpuZ0lmPVwiaXRlbS5pY29uICYmIGlzU3ZnRmlsZShpdGVtLmljb24pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiaXRlbS5pY29uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3Bkb3duLWxhYmVsXCI+e3sgaXRlbS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBDaGVja2JveCBBY3Rpb25zIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJhY3Rpb25UeXBlID09PSAnY2hlY2tib3gnXCIgY2xhc3M9XCJjaGVja2JveC1hY3Rpb25zXCI+XG4gICAgICAgIDxtaXMtY2hlY2tib3ggXG4gICAgICAgIFtjaGVja2VkXT1cImlzQ2hlY2tlZFwiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkNoZWNrYm94Q2hhbmdlKCRldmVudClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiYWN0aW9uUGVybWlzc2lvbnMgJiYgYWN0aW9uUGVybWlzc2lvbnMuaGFzT3duUHJvcGVydHkoJ2NoZWNrYm94JykgJiYgYWN0aW9uUGVybWlzc2lvbnNbJ2NoZWNrYm94J10gPT09IGZhbHNlXCI+XG4gICAgPC9taXMtY2hlY2tib3g+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=