{"version":3,"file":"fabric-msft-fabric-angular-radio-group.mjs","sources":["../../../projects/fabric-wrappers/radio-group/radioGroup.directive.ts","../../../projects/fabric-wrappers/radio-group/public-api.ts","../../../projects/fabric-wrappers/radio-group/fabric-msft-fabric-angular-radio-group.ts"],"sourcesContent":["import {\n  Directive,\n  ElementRef,\n  Input,\n  NgZone,\n  Renderer2,\n  forwardRef\n} from \"@angular/core\";\nimport type { AfterContentInit } from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport type { ControlValueAccessor } from \"@angular/forms\";\nimport type { RadioGroup } from \"@fabric-msft/fabric-web\";\nimport { RadioGroupDefinition } from \"@fabric-msft/fabric-web\";\n\n@Directive({\n  selector: \"fabric-radio-group\",\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => FabricRadioGroupControlDirective),\n      multi: true\n    }\n  ],\n  standalone: true\n})\nexport class FabricRadioGroupControlDirective\n  implements ControlValueAccessor, AfterContentInit\n{\n  protected el: RadioGroup;\n  @Input() name: string;\n  @Input() value: string;\n  disabled: boolean;\n  private _initialValue: string;\n  private observer: MutationObserver;\n\n  constructor(\n    r: ElementRef,\n    protected z: NgZone,\n    private renderer: Renderer2\n  ) {\n    this.el = r.nativeElement;\n    if (!customElements.get(\"fabric-radio-group\")) {\n      RadioGroupDefinition.define(customElements);\n    }\n\n    this.el.requiredChanged = (prev: boolean, next: boolean) => {\n      if (this.el.$fastController.isConnected && this.el.radios) {\n        this.el.elementInternals.ariaRequired = next ? \"true\" : null;\n        this.el.setValidity();\n      }\n    };\n\n    // The mutation observer is needed because of a timing issue between Angular forms and the web component:\n    // 1. Angular forms tries to set the initial value via writeValue() before the radio buttons are created\n    // 2. The web component's ElementInternals.setValidity() throws an error when trying to validate\n    //    before the radio buttons exist\n    // 3. This observer watches for when the radio buttons are created (this.el.radios exists)\n    // 4. Once they exist, we can safely set the initial value\n    this.observer = new MutationObserver((mutations, observer) => {\n      if (this.el.radios) {\n        observer.disconnect();\n        if (this._initialValue !== undefined) {\n          this.writeValue(this._initialValue);\n        }\n      }\n    });\n\n    // Watch for changes in the DOM that would indicate the radio buttons have been created\n    this.observer.observe(this.el, {\n      childList: true,\n      subtree: true,\n      attributes: true\n    });\n  }\n\n  ngAfterContentInit() {\n    this.listenForChanges();\n  }\n\n  private listenForChanges() {\n    this.renderer.listen(this.el, \"change\", (event: Event) => {\n      const target = event.target as HTMLInputElement;\n\n      this.onChange(target.value);\n      this.onTouched(target.value);\n\n      if (this.value != target.value) {\n        this.writeValue(target.value);\n      }\n    });\n  }\n\n  writeValue(newValue: string) {\n    if (!this.el.radios) {\n      this.value = newValue;\n      this._initialValue = newValue;\n      return;\n    }\n    this.value = newValue;\n    this.el.value = newValue;\n  }\n\n  onChange = (value: string) => {};\n  registerOnChange(onChange: (value: string) => void) {\n    this.onChange = onChange;\n  }\n\n  onTouched = (value: string) => {};\n  registerOnTouched(onTouched: () => void) {\n    this.onTouched = onTouched;\n  }\n\n  setDisabledState(isDisabled: boolean) {\n    this.disabled = isDisabled;\n\n    if (isDisabled) {\n      this.renderer.setAttribute(this.el, \"disabled\", \"true\");\n      this.renderer.setAttribute(this.el, \"aria-disabled\", \"true\");\n    } else {\n      this.renderer.removeAttribute(this.el, \"disabled\");\n      this.renderer.setAttribute(this.el, \"aria-disabled\", \"false\");\n    }\n  }\n\n  // private handleRequired(value: boolean) {\n  //   console.log('handleRequired', value);\n  //   //   this.required = value;\n  //   //   if (value) {\n  //   //     this.renderer.setAttribute(this.el, 'required', 'true');\n  //   //     this.renderer.setAttribute(this.el, 'aria-required', 'true');\n  //   //   } else {\n  //   //     this.renderer.removeAttribute(this.el, 'aria-required');\n  //   //     this.renderer.removeAttribute(this.el, 'required');\n  //   //   }\n  // }\n}\n","/*\n * Secondary entry point for RadioGroup\n * Allows importing like: import { FabricRadioGroupDirective } from '@fabric-msft/fabric-angular/radio-group'\n */\nexport { FabricRadioGroupControlDirective } from \"./radioGroup.directive\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAyBa,gCAAgC,CAAA;AAU3C,IAAA,WAAA,CACE,CAAa,EACH,CAAS,EACX,QAAmB,EAAA;QADjB,IAAA,CAAA,CAAC,GAAD,CAAC;QACH,IAAA,CAAA,QAAQ,GAAR,QAAQ;AAgElB,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,KAAa,KAAI,EAAE,CAAC;AAKhC,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,KAAa,KAAI,EAAE,CAAC;AAnE/B,QAAA,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,aAAa;QACzB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE;AAC7C,YAAA,oBAAoB,CAAC,MAAM,CAAC,cAAc,CAAC;QAC7C;QAEA,IAAI,CAAC,EAAE,CAAC,eAAe,GAAG,CAAC,IAAa,EAAE,IAAa,KAAI;AACzD,YAAA,IAAI,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,WAAW,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE;AACzD,gBAAA,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI;AAC5D,gBAAA,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE;YACvB;AACF,QAAA,CAAC;;;;;;;QAQD,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,CAAC,SAAS,EAAE,QAAQ,KAAI;AAC3D,YAAA,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE;gBAClB,QAAQ,CAAC,UAAU,EAAE;AACrB,gBAAA,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE;AACpC,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC;gBACrC;YACF;AACF,QAAA,CAAC,CAAC;;QAGF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE;AAC7B,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,UAAU,EAAE;AACb,SAAA,CAAC;IACJ;IAEA,kBAAkB,GAAA;QAChB,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAY,KAAI;AACvD,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B;AAE/C,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;AAC3B,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;YAE5B,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE;AAC9B,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;YAC/B;AACF,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,UAAU,CAAC,QAAgB,EAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE;AACnB,YAAA,IAAI,CAAC,KAAK,GAAG,QAAQ;AACrB,YAAA,IAAI,CAAC,aAAa,GAAG,QAAQ;YAC7B;QACF;AACA,QAAA,IAAI,CAAC,KAAK,GAAG,QAAQ;AACrB,QAAA,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG,QAAQ;IAC1B;AAGA,IAAA,gBAAgB,CAAC,QAAiC,EAAA;AAChD,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;IAC1B;AAGA,IAAA,iBAAiB,CAAC,SAAqB,EAAA;AACrC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;IAC5B;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;QAE1B,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC;AACvD,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC;QAC9D;aAAO;YACL,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC;AAClD,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,eAAe,EAAE,OAAO,CAAC;QAC/D;IACF;+GAjGW,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAThC;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,gCAAgC,CAAC;AAC/D,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAGU,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAX5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,sCAAsC,CAAC;AAC/D,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA;AACD,oBAAA,UAAU,EAAE;AACb,iBAAA;4HAKU,IAAI,EAAA,CAAA;sBAAZ;gBACQ,KAAK,EAAA,CAAA;sBAAb;;;AC9BH;;;AAGG;;ACHH;;AAEG;;;;"}