@spartan-ng/brain 0.0.1-alpha.400 → 0.0.1-alpha.402

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.
@@ -151,6 +151,15 @@ export class BrnSelectService {
151
151
  selectedOptions: this.selectedOptions(),
152
152
  }));
153
153
  }
154
+ /**
155
+ * Sync the updated options with "possibleOptions" in the select service
156
+ */
157
+ updatePossibleOptions(options) {
158
+ this.state.update((state) => ({
159
+ ...state,
160
+ possibleOptions: options,
161
+ }));
162
+ }
154
163
  selectOptionByValue(value) {
155
164
  const options = this.possibleOptions();
156
165
  if (value === null || value === undefined) {
@@ -195,4 +204,4 @@ export class BrnSelectService {
195
204
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnSelectService, decorators: [{
196
205
  type: Injectable
197
206
  }], ctorParameters: () => [] });
198
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLXNlbGVjdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9icmFpbi9zZWxlY3Qvc3JjL2xpYi9icm4tc2VsZWN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUVOLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUVWLFdBQVcsRUFFWCxRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQXVCdEMsTUFBTSxPQUFPLHlCQUF5QjtJQUNwQixHQUFHLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZCLGNBQWMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMxQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELFNBQVMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakMsVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO0lBQzVDLGVBQWUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN6RSxlQUFlLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxD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QUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDN0IsR0FBRyxLQUFLO2dCQUNSLGVBQWUsRUFBRSxDQUFDLGNBQWtDLENBQUM7Z0JBQ3JELEtBQUssRUFBRSxjQUFjLENBQUMsS0FBZTthQUNyQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDRixDQUFDOzBIQW5KVyxnQkFBZ0I7OEhBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ2RrT3B0aW9uLCBMaXN0Ym94VmFsdWVDaGFuZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9saXN0Ym94JztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG5cdHR5cGUgQWZ0ZXJWaWV3SW5pdCxcblx0RGlyZWN0aXZlLFxuXHRFbGVtZW50UmVmLFxuXHRJbmplY3RhYmxlLFxuXHRPbkRlc3Ryb3ksXG5cdFBMQVRGT1JNX0lELFxuXHRTaWduYWwsXG5cdGNvbXB1dGVkLFxuXHRpbmplY3QsXG5cdHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNraXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ1ticm5TZWxlY3RUcmlnZ2VyXScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGhvc3Q6IHtcblx0XHRyb2xlOiAnY29tYm9ib3gnLFxuXHRcdCdbYXR0ci5pZF0nOiAnc2VsZWN0VHJpZ2dlcklkKCknLFxuXHRcdCdbZGlzYWJsZWRdJzogJ3NlbGVjdERpc2FibGUoKScsXG5cdFx0J1thdHRyLmFyaWEtZXhwYW5kZWRdJzogJ2lzRXhwYW5kZWQoKScsXG5cdFx0J1thdHRyLmFyaWEtY29udHJvbHNdJzogXCJzZWxlY3RDb250ZW50SWQoKSArICcnXCIsXG5cdFx0J1thdHRyLmFyaWEtbGFiZWxsZWRCeV0nOiAnc2VsZWN0VHJpZ2dlckxhYmVsbGVkQnkoKScsXG5cdFx0J2FyaWEtYXV0b2NvbXBsZXRlJzogJ25vbmUnLFxuXHRcdCdbYXR0ci5kaXJdJzogJ19zZWxlY3RTZXJ2aWNlLmRpcigpJyxcblx0XHQnW2NsYXNzLm5nLWludmFsaWRdJzogJ3RoaXMuX25nQ29udHJvbD8uaW52YWxpZCB8fCBudWxsJyxcblx0XHQnW2NsYXNzLm5nLWRpcnR5XSc6ICd0aGlzLl9uZ0NvbnRyb2w/LmRpcnR5IHx8IG51bGwnLFxuXHRcdCdbY2xhc3MubmctdmFsaWRdJzogJ3RoaXMuX25nQ29udHJvbD8udmFsaWQgfHwgbnVsbCcsXG5cdFx0J1tjbGFzcy5uZy10b3VjaGVkXSc6ICd0aGlzLl9uZ0NvbnRyb2w/LnRvdWNoZWQgfHwgbnVsbCcsXG5cdFx0J1tjbGFzcy5uZy11bnRvdWNoZWRdJzogJ3RoaXMuX25nQ29udHJvbD8udW50b3VjaGVkIHx8IG51bGwnLFxuXHRcdCdbY2xhc3MubmctcHJpc3RpbmVdJzogJ3RoaXMuX25nQ29udHJvbD8ucHJpc3RpbmUgfHwgbnVsbCcsXG5cdFx0dHlwZTogJ2J1dHRvbicsXG5cdH0sXG59KVxuZXhwb3J0IGNsYXNzIEJyblNlbGVjdFRyaWdnZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXHRwcml2YXRlIHJlYWRvbmx5IF9lbCA9IGluamVjdChFbGVtZW50UmVmKTtcblx0cHJvdGVjdGVkIHJlYWRvbmx5IF9zZWxlY3RTZXJ2aWNlID0gaW5qZWN0KEJyblNlbGVjdFNlcnZpY2UpO1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgX25nQ29udHJvbCA9IGluamVjdChOZ0NvbnRyb2wsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cdHByaXZhdGUgcmVhZG9ubHkgX3BsYXRmb3JtID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcblx0cHVibGljIHJlYWRvbmx5IGlzRXhwYW5kZWQgPSB0aGlzLl9zZWxlY3RTZXJ2aWNlLmlzRXhwYW5kZWQ7XG5cdHB1YmxpYyByZWFkb25seSBzZWxlY3RUcmlnZ2VySWQgPSBjb21wdXRlZCgoKSA9PiBgJHt0aGlzLl9zZWxlY3RTZXJ2aWNlLmlkKCl9LS10cmlnZ2VyYCk7XG5cdHB1YmxpYyByZWFkb25seSBzZWxlY3RDb250ZW50SWQgPSBjb21wdXRlZCgoKSA9PiBgJHt0aGlzLl9zZWxlY3RTZXJ2aWNlLmlkKCl9LS1jb250ZW50YCk7XG5cdHB1YmxpYyByZWFkb25seSBzZWxlY3REaXNhYmxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fc2VsZWN0U2VydmljZS5kaXNhYmxlZCgpKTtcblx0cHVibGljIHJlYWRvbmx5IHNlbGVjdFRyaWdnZXJMYWJlbGxlZEJ5ID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGlmICh0aGlzLl9zZWxlY3RTZXJ2aWNlLnZhbHVlKCkgJiYgdGhpcy5fc2VsZWN0U2VydmljZS52YWx1ZSgpLmxlbmd0aCA+IDApIHtcblx0XHRcdHJldHVybiBgJHt0aGlzLl9zZWxlY3RTZXJ2aWNlLmxhYmVsSWQoKX0gJHt0aGlzLl9zZWxlY3RTZXJ2aWNlLmlkKCl9LS12YWx1ZWA7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLl9zZWxlY3RTZXJ2aWNlLmxhYmVsSWQoKTtcblx0fSk7XG5cblx0cHJpdmF0ZSBfcmVzaXplT2JzZXJ2ZXI/OiBSZXNpemVPYnNlcnZlcjtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRpZiAoIXRoaXMuX3NlbGVjdFNlcnZpY2UpIHJldHVybjtcblx0XHR0aGlzLl9zZWxlY3RTZXJ2aWNlLl9zZXRTZWxlY3RUcmlnZ2VyKHRoaXMpO1xuXHR9XG5cblx0bmdBZnRlclZpZXdJbml0KCkge1xuXHRcdHRoaXMuX3NlbGVjdFNlcnZpY2Uuc2V0VHJpZ2dlcldpZHRoKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpO1xuXG5cdFx0Ly8gaWYgd2UgYXJlIG9uIHRoZSBjbGllbnQsIGxpc3RlbiBmb3IgZWxlbWVudCByZXNpemUgZXZlbnRzXG5cdFx0aWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMuX3BsYXRmb3JtKSkge1xuXHRcdFx0dGhpcy5fcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT5cblx0XHRcdFx0dGhpcy5fc2VsZWN0U2VydmljZS5zZXRUcmlnZ2VyV2lkdGgodGhpcy5fZWwubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCksXG5cdFx0XHQpO1xuXG5cdFx0XHR0aGlzLl9yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQpO1xuXHRcdH1cblx0fVxuXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xuXHRcdHRoaXMuX3Jlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG5cdH1cblxuXHRwdWJsaWMgZm9jdXMoKSB7XG5cdFx0dGhpcy5fZWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXHR9XG59XG5cbnR5cGUgQnJuUmVhZERpcmVjdGlvbiA9ICdsdHInIHwgJ3J0bCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBCcm5TZWxlY3RTZXJ2aWNlIHtcblx0cHVibGljIHJlYWRvbmx5IHN0YXRlID0gc2lnbmFsPHtcblx0XHRpZDogc3RyaW5nO1xuXHRcdGxhYmVsSWQ6IHN0cmluZztcblx0XHRwYW5lbElkOiBzdHJpbmc7XG5cdFx0cGxhY2Vob2xkZXI6IFNpZ25hbDxzdHJpbmc+O1xuXHRcdGlzRXhwYW5kZWQ6IGJvb2xlYW47XG5cdFx0bXVsdGlwbGU6IFNpZ25hbDxib29sZWFuPjtcblx0XHRkaXNhYmxlZDogU2lnbmFsPGJvb2xlYW4+O1xuXHRcdGRpc2FibGVkQnlTZXREaXNhYmxlZDogU2lnbmFsPGJvb2xlYW4+O1xuXHRcdGRpcjogU2lnbmFsPEJyblJlYWREaXJlY3Rpb24+O1xuXHRcdHNlbGVjdGVkT3B0aW9uczogQXJyYXk8Q2RrT3B0aW9uIHwgbnVsbD47XG5cdFx0cG9zc2libGVPcHRpb25zOiBBcnJheTxDZGtPcHRpb24gfCBudWxsPjtcblx0XHR2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW107XG5cdFx0dHJpZ2dlcldpZHRoOiBudW1iZXI7XG5cdH0+KHtcblx0XHRpZDogJycsXG5cdFx0bGFiZWxJZDogJycsXG5cdFx0cGFuZWxJZDogJycsXG5cdFx0aXNFeHBhbmRlZDogZmFsc2UsXG5cdFx0cGxhY2Vob2xkZXI6IHNpZ25hbCgnJyksXG5cdFx0bXVsdGlwbGU6IHNpZ25hbChmYWxzZSksXG5cdFx0ZGlzYWJsZWQ6IHNpZ25hbChmYWxzZSksXG5cdFx0ZGlzYWJsZWRCeVNldERpc2FibGVkOiBzaWduYWwoZmFsc2UpLFxuXHRcdGRpcjogc2lnbmFsKCdsdHInIGFzIEJyblJlYWREaXJlY3Rpb24pLFxuXHRcdHNlbGVjdGVkT3B0aW9uczogW10sXG5cdFx0cG9zc2libGVPcHRpb25zOiBbXSxcblx0XHR2YWx1ZTogJycsXG5cdFx0dHJpZ2dlcldpZHRoOiAwLFxuXHR9KTtcblxuXHRwdWJsaWMgcmVhZG9ubHkgaWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN0YXRlKCkuaWQpO1xuXHRwdWJsaWMgcmVhZG9ubHkgbGFiZWxJZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3RhdGUoKS5sYWJlbElkKTtcblx0cHVibGljIHJlYWRvbmx5IHBhbmVsSWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN0YXRlKCkucGFuZWxJZCk7XG5cdHB1YmxpYyByZWFkb25seSBwbGFjZWhvbGRlciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3RhdGUoKS5wbGFjZWhvbGRlcigpKTtcblx0cHVibGljIHJlYWRvbmx5IGRpc2FibGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGF0ZSgpLmRpc2FibGVkKCkgfHwgdGhpcy5zdGF0ZSgpLmRpc2FibGVkQnlTZXREaXNhYmxlZCgpKTtcblx0cHVibGljIHJlYWRvbmx5IGlzRXhwYW5kZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN0YXRlKCkuaXNFeHBhbmRlZCk7XG5cdHB1YmxpYyByZWFkb25seSBtdWx0aXBsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3RhdGUoKS5tdWx0aXBsZSgpKTtcblx0cHVibGljIHJlYWRvbmx5IGRpciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3RhdGUoKS5kaXIoKSk7XG5cdHB1YmxpYyByZWFkb25seSBzZWxlY3RlZE9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN0YXRlKCkuc2VsZWN0ZWRPcHRpb25zKTtcblx0cHVibGljIHJlYWRvbmx5IHZhbHVlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGF0ZSgpLnZhbHVlKTtcblx0cHVibGljIHJlYWRvbmx5IHRyaWdnZXJXaWR0aCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3RhdGUoKS50cmlnZ2VyV2lkdGgpO1xuXHRwdWJsaWMgcmVhZG9ubHkgcG9zc2libGVPcHRpb25zID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGF0ZSgpLnBvc3NpYmxlT3B0aW9ucyk7XG5cblx0cHJpdmF0ZSByZWFkb25seSBfbXVsdGlwbGUkID0gdG9PYnNlcnZhYmxlKHRoaXMubXVsdGlwbGUpO1xuXG5cdHB1YmxpYyByZWFkb25seSBsaXN0Qm94VmFsdWVDaGFuZ2VFdmVudCQgPSBuZXcgU3ViamVjdDxMaXN0Ym94VmFsdWVDaGFuZ2VFdmVudDx1bmtub3duPj4oKTtcblxuXHRwcml2YXRlIF9zZWxlY3RUcmlnZ2VyPzogQnJuU2VsZWN0VHJpZ2dlckRpcmVjdGl2ZTtcblx0cHVibGljIGdldCBzZWxlY3RUcmlnZ2VyKCkge1xuXHRcdHJldHVybiB0aGlzLl9zZWxlY3RUcmlnZ2VyO1xuXHR9XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy5saXN0Qm94VmFsdWVDaGFuZ2VFdmVudCQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKChsaXN0Qm94Q2hhbmdlKSA9PiB7XG5cdFx0XHRjb25zdCB1cGRhdGVkU2VsZWN0aW9ucyA9IHRoaXMubXVsdGlwbGUoKSA/IHRoaXMuZ2V0VXBkYXRlZE9wdGlvbnMobGlzdEJveENoYW5nZSkgOiBbbGlzdEJveENoYW5nZS5vcHRpb25dO1xuXHRcdFx0Y29uc3QgdmFsdWUgPSB0aGlzLm11bHRpcGxlKCkgPyBsaXN0Qm94Q2hhbmdlLnZhbHVlIDogbGlzdEJveENoYW5nZS52YWx1ZVswXTtcblx0XHRcdHRoaXMuc3RhdGUudXBkYXRlKChzdGF0ZSkgPT4gKHtcblx0XHRcdFx0Li4uc3RhdGUsXG5cdFx0XHRcdHNlbGVjdGVkT3B0aW9uczogWy4uLnVwZGF0ZWRTZWxlY3Rpb25zXSxcblx0XHRcdFx0dmFsdWU6IHZhbHVlIGFzIHN0cmluZyB8IHN0cmluZ1tdLFxuXHRcdFx0fSkpO1xuXHRcdH0pO1xuXG5cdFx0Ly8gV2UgbmVlZCB0byBza2lwIHRoZSBmaXJzdCB2YWx1ZSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gZGVzZWxlY3QgYWxsIG9wdGlvbnMgd2hlbiB0aGUgY29tcG9uZW50IGlzIGluaXRpYWxpemVkIHdpdGggYSBwcmVzZWxlY3RlZCB2YWx1ZSBlLmcuIGJ5IHRoZSBmb3JtIGNvbnRyb2xcblx0XHR0aGlzLl9tdWx0aXBsZSQucGlwZShza2lwKDEpLCB0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKChtdWx0aXBsZSkgPT4ge1xuXHRcdFx0aWYgKCFtdWx0aXBsZSAmJiB0aGlzLnZhbHVlKCkubGVuZ3RoID4gMSkge1xuXHRcdFx0XHR0aGlzLmRlc2VsZWN0QWxsT3B0aW9ucygpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0cHVibGljIHNldFRyaWdnZXJXaWR0aCh0cmlnZ2VyV2lkdGg6IG51bWJlcikge1xuXHRcdHRoaXMuc3RhdGUudXBkYXRlKChzKSA9PiAoeyAuLi5zLCB0cmlnZ2VyV2lkdGggfSkpO1xuXHR9XG5cblx0cHVibGljIGdldFVwZGF0ZWRPcHRpb25zKGxhdGVzdExpc3Rib3hDaGFuZ2U6IExpc3Rib3hWYWx1ZUNoYW5nZUV2ZW50PHVua25vd24+KTogQXJyYXk8Q2RrT3B0aW9uIHwgbnVsbD4ge1xuXHRcdGNvbnN0IGlzTmV3U2VsZWN0aW9uID0gbGF0ZXN0TGlzdGJveENoYW5nZS52YWx1ZS5maW5kSW5kZXgoKHZhbHVlKSA9PiB2YWx1ZSA9PT0gbGF0ZXN0TGlzdGJveENoYW5nZS5vcHRpb24/LnZhbHVlKTtcblx0XHRpZiAoaXNOZXdTZWxlY3Rpb24gPT09IC0xKSB7XG5cdFx0XHRjb25zdCByZW1vdmVkT3B0aW9uSW5kZXggPSB0aGlzLnNlbGVjdGVkT3B0aW9ucygpLmZpbmRJbmRleCgob3B0aW9uKSA9PiBsYXRlc3RMaXN0Ym94Q2hhbmdlLm9wdGlvbiA9PT0gb3B0aW9uKTtcblx0XHRcdGNvbnN0IG9wdGlvbnMgPSB0aGlzLnNlbGVjdGVkT3B0aW9ucygpO1xuXHRcdFx0b3B0aW9ucy5zcGxpY2UocmVtb3ZlZE9wdGlvbkluZGV4LCAxKTtcblx0XHRcdHJldHVybiBvcHRpb25zO1xuXHRcdH1cblx0XHRyZXR1cm4gWy4uLnRoaXMuc2VsZWN0ZWRPcHRpb25zKCksIGxhdGVzdExpc3Rib3hDaGFuZ2Uub3B0aW9uXTtcblx0fVxuXG5cdHB1YmxpYyBkZXNlbGVjdEFsbE9wdGlvbnMoKSB7XG5cdFx0dGhpcy5zdGF0ZS51cGRhdGUoKHN0YXRlKSA9PiAoe1xuXHRcdFx0Li4uc3RhdGUsXG5cdFx0XHRzZWxlY3RlZE9wdGlvbnM6IFtdLFxuXHRcdFx0dmFsdWU6IFtdLFxuXHRcdH0pKTtcblx0fVxuXG5cdC8vIE5lZWRlZCBkdWUgdG8gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMjA4MTBcblx0cHVibGljIF9zZXRTZWxlY3RUcmlnZ2VyKHRyaWdnZXI6IEJyblNlbGVjdFRyaWdnZXJEaXJlY3RpdmUpIHtcblx0XHR0aGlzLl9zZWxlY3RUcmlnZ2VyID0gdHJpZ2dlcjtcblx0fVxuXG5cdHB1YmxpYyBzZXRJbml0aWFsU2VsZWN0ZWRPcHRpb25zKHZhbHVlOiB1bmtub3duKSB7XG5cdFx0dGhpcy5zZWxlY3RPcHRpb25CeVZhbHVlKHZhbHVlKTtcblx0XHR0aGlzLnN0YXRlLnVwZGF0ZSgoc3RhdGUpID0+ICh7XG5cdFx0XHQuLi5zdGF0ZSxcblx0XHRcdHZhbHVlOiB2YWx1ZSBhcyBzdHJpbmcgfCBzdHJpbmdbXSxcblx0XHRcdGluaXRpYWxTZWxlY3RlZE9wdGlvbnM6IHRoaXMuc2VsZWN0ZWRPcHRpb25zKCksXG5cdFx0XHRzZWxlY3RlZE9wdGlvbnM6IHRoaXMuc2VsZWN0ZWRPcHRpb25zKCksXG5cdFx0fSkpO1xuXHR9XG5cblx0cHJpdmF0ZSBzZWxlY3RPcHRpb25CeVZhbHVlKHZhbHVlOiB1bmtub3duKSB7XG5cdFx0Y29uc3Qgb3B0aW9ucyA9IHRoaXMucG9zc2libGVPcHRpb25zKCk7XG5cdFx0aWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGNvbnN0IG51bGxPclVuZGVmaW5lZE9wdGlvbiA9IG9wdGlvbnMuZmluZCgobykgPT4gbyAmJiBvLnZhbHVlID09PSB2YWx1ZSk7XG5cdFx0XHRpZiAoIW51bGxPclVuZGVmaW5lZE9wdGlvbikge1xuXHRcdFx0XHR0aGlzLnN0YXRlLnVwZGF0ZSgoc3RhdGUpID0+ICh7XG5cdFx0XHRcdFx0Li4uc3RhdGUsXG5cdFx0XHRcdFx0c2VsZWN0ZWRPcHRpb25zOiBbXSxcblx0XHRcdFx0XHR2YWx1ZTogdGhpcy5tdWx0aXBsZSgpID8gW10gOiAnJyxcblx0XHRcdFx0fSkpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMubXVsdGlwbGUoKSkge1xuXHRcdFx0Y29uc3Qgc2VsZWN0ZWRPcHRpb25zID0gb3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4ge1xuXHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcblx0XHRcdFx0XHRyZXR1cm4gdmFsdWUuaW5jbHVkZXMob3B0aW9uPy52YWx1ZSBhcyBzdHJpbmcpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB2YWx1ZSA9PT0gb3B0aW9uPy52YWx1ZTtcblx0XHRcdH0pO1xuXHRcdFx0dGhpcy5zdGF0ZS51cGRhdGUoKHN0YXRlKSA9PiAoe1xuXHRcdFx0XHQuLi5zdGF0ZSxcblx0XHRcdFx0c2VsZWN0ZWRPcHRpb25zLFxuXHRcdFx0XHR2YWx1ZTogdmFsdWUgYXMgc3RyaW5nW10sXG5cdFx0XHR9KSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IHNlbGVjdGVkT3B0aW9uID0gb3B0aW9ucy5maW5kKChvcHRpb24pID0+IG9wdGlvbj8udmFsdWUgPT09IHZhbHVlKTtcblx0XHRcdGlmICghc2VsZWN0ZWRPcHRpb24pIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5zdGF0ZS51cGRhdGUoKHN0YXRlKSA9PiAoe1xuXHRcdFx0XHQuLi5zdGF0ZSxcblx0XHRcdFx0c2VsZWN0ZWRPcHRpb25zOiBbc2VsZWN0ZWRPcHRpb24gYXMgQ2RrT3B0aW9uIHwgbnVsbF0sXG5cdFx0XHRcdHZhbHVlOiBzZWxlY3RlZE9wdGlvbi52YWx1ZSBhcyBzdHJpbmcsXG5cdFx0XHR9KSk7XG5cdFx0fVxuXHR9XG59XG4iXX0=
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJuLXNlbGVjdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9icmFpbi9zZWxlY3Qvc3JjL2xpYi9icm4tc2VsZWN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUVOLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUVWLFdBQVcsRUFFWCxRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQXVCdEMsTUFBTSxPQUFPLHlCQUF5QjtJQUNwQixHQUFHLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZCLGNBQWMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMxQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELFNBQVMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakMsVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO0lBQzVDLGVBQWUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN6RSxlQUFlLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxD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QUM7WUFDUCxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxLQUFLLEtBQUssQ0FBQyxDQUFDO1lBQ3pFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDckIsT0FBTztZQUNSLENBQUM7WUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDN0IsR0FBRyxLQUFLO2dCQUNSLGVBQWUsRUFBRSxDQUFDLGNBQWtDLENBQUM7Z0JBQ3JELEtBQUssRUFBRSxjQUFjLENBQUMsS0FBZTthQUNyQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDRixDQUFDOzBIQTdKVyxnQkFBZ0I7OEhBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ2RrT3B0aW9uLCBMaXN0Ym94VmFsdWVDaGFuZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9saXN0Ym94JztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG5cdHR5cGUgQWZ0ZXJWaWV3SW5pdCxcblx0RGlyZWN0aXZlLFxuXHRFbGVtZW50UmVmLFxuXHRJbmplY3RhYmxlLFxuXHRPbkRlc3Ryb3ksXG5cdFBMQVRGT1JNX0lELFxuXHRTaWduYWwsXG5cdGNvbXB1dGVkLFxuXHRpbmplY3QsXG5cdHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNraXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ1ticm5TZWxlY3RUcmlnZ2VyXScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGhvc3Q6IHtcblx0XHRyb2xlOiAnY29tYm9ib3gnLFxuXHRcdCdbYXR0ci5pZF0nOiAnc2VsZWN0VHJpZ2dlcklkKCknLFxuXHRcdCdbZGlzYWJsZWRdJzogJ3NlbGVjdERpc2FibGUoKScsXG5cdFx0J1thdHRyLmFyaWEtZXhwYW5kZWRdJzogJ2lzRXhwYW5kZWQoKScsXG5cdFx0J1thdHRyLmFyaWEtY29udHJvbHNdJzogXCJzZWxlY3RDb250ZW50SWQoKSArICcnXCIsXG5cdFx0J1thdHRyLmFyaWEtbGFiZWxsZWRCeV0nOiAnc2VsZWN0VHJpZ2dlckxhYmVsbGVkQnkoKScsXG5cdFx0J2FyaWEtYXV0b2NvbXBsZXRlJzogJ25vbmUnLFxuXHRcdCdbYXR0ci5kaXJdJzogJ19zZWxlY3RTZXJ2aWNlLmRpcigpJyxcblx0XHQnW2NsYXNzLm5nLWludmFsaWRdJzogJ3RoaXMuX25nQ29udHJvbD8uaW52YWxpZCB8fCBudWxsJyxcblx0XHQnW2NsYXNzLm5nLWRpcnR5XSc6ICd0aGlzLl9uZ0NvbnRyb2w/LmRpcnR5IHx8IG51bGwnLFxuXHRcdCdbY2xhc3MubmctdmFsaWRdJzogJ3RoaXMuX25nQ29udHJvbD8udmFsaWQgfHwgbnVsbCcsXG5cdFx0J1tjbGFzcy5uZy10b3VjaGVkXSc6ICd0aGlzLl9uZ0NvbnRyb2w/LnRvdWNoZWQgfHwgbnVsbCcsXG5cdFx0J1tjbGFzcy5uZy11bnRvdWNoZWRdJzogJ3RoaXMuX25nQ29udHJvbD8udW50b3VjaGVkIHx8IG51bGwnLFxuXHRcdCdbY2xhc3MubmctcHJpc3RpbmVdJzogJ3RoaXMuX25nQ29udHJvbD8ucHJpc3RpbmUgfHwgbnVsbCcsXG5cdFx0dHlwZTogJ2J1dHRvbicsXG5cdH0sXG59KVxuZXhwb3J0IGNsYXNzIEJyblNlbGVjdFRyaWdnZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXHRwcml2YXRlIHJlYWRvbmx5IF9lbCA9IGluamVjdChFbGVtZW50UmVmKTtcblx0cHJvdGVjdGVkIHJlYWRvbmx5IF9zZWxlY3RTZXJ2aWNlID0gaW5qZWN0KEJyblNlbGVjdFNlcnZpY2UpO1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgX25nQ29udHJvbCA9IGluamVjdChOZ0NvbnRyb2wsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cdHByaXZhdGUgcmVhZG9ubHkgX3BsYXRmb3JtID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcblx0cHVibGljIHJlYWRvbmx5IGlzRXhwYW5kZWQgPSB0aGlzLl9zZWxlY3RTZXJ2aWNlLmlzRXhwYW5kZWQ7XG5cdHB1YmxpYyByZWFkb25seSBzZWxlY3RUcmlnZ2VySWQgPSBjb21wdXRlZCgoKSA9PiBgJHt0aGlzLl9zZWxlY3RTZXJ2aWNlLmlkKCl9LS10cmlnZ2VyYCk7XG5cdHB1YmxpYyByZWFkb25seSBzZWxlY3RDb250ZW50SWQgPSBjb21wdXRlZCgoKSA9PiBgJHt0aGlzLl9zZWxlY3RTZXJ2aWNlLmlkKCl9LS1jb250ZW50YCk7XG5cdHB1YmxpYyByZWFkb25seSBzZWxlY3REaXNhYmxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fc2VsZWN0U2VydmljZS5kaXNhYmxlZCgpKTtcblx0cHVibGljIHJlYWRvbmx5IHNlbGVjdFRyaWdnZXJMYWJlbGxlZEJ5ID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGlmICh0aGlzLl9zZWxlY3RTZXJ2aWNlLnZhbHVlKCkgJiYgdGhpcy5fc2VsZWN0U2VydmljZS52YWx1ZSgpLmxlbmd0aCA+IDApIHtcblx0XHRcdHJldHVybiBgJHt0aGlzLl9zZWxlY3RTZXJ2aWNlLmxhYmVsSWQoKX0gJHt0aGlzLl9zZWxlY3RTZXJ2aWNlLmlkKCl9LS12YWx1ZWA7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLl9zZWxlY3RTZXJ2aWNlLmxhYmVsSWQoKTtcblx0fSk7XG5cblx0cHJpdmF0ZSBfcmVzaXplT2JzZXJ2ZXI/OiBSZXNpemVPYnNlcnZlcjtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRpZiAoIXRoaXMuX3NlbGVjdFNlcnZpY2UpIHJldHVybjtcblx0XHR0aGlzLl9zZWxlY3RTZXJ2aWNlLl9zZXRTZWxlY3RUcmlnZ2VyKHRoaXMpO1xuXHR9XG5cblx0bmdBZnRlclZpZXdJbml0KCkge1xuXHRcdHRoaXMuX3NlbGVjdFNlcnZpY2Uuc2V0VHJpZ2dlcldpZHRoKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpO1xuXG5cdFx0Ly8gaWYgd2UgYXJlIG9uIHRoZSBjbGllbnQsIGxpc3RlbiBmb3IgZWxlbWVudCByZXNpemUgZXZlbnRzXG5cdFx0aWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMuX3BsYXRmb3JtKSkge1xuXHRcdFx0dGhpcy5fcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT5cblx0XHRcdFx0dGhpcy5fc2VsZWN0U2VydmljZS5zZXRUcmlnZ2VyV2lkdGgodGhpcy5fZWwubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCksXG5cdFx0XHQpO1xuXG5cdFx0XHR0aGlzLl9yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQpO1xuXHRcdH1cblx0fVxuXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xuXHRcdHRoaXMuX3Jlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG5cdH1cblxuXHRwdWJsaWMgZm9jdXMoKSB7XG5cdFx0dGhpcy5fZWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXHR9XG59XG5cbnR5cGUgQnJuUmVhZERpcmVjdGlvbiA9ICdsdHInIHwgJ3J0bCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBCcm5TZWxlY3RTZXJ2aWNlIHtcblx0cHVibGljIHJlYWRvbmx5IHN0YXRlID0gc2lnbmFsPHtcblx0XHRpZDogc3RyaW5nO1xuXHRcdGxhYmVsSWQ6IHN0cmluZztcblx0XHRwYW5lbElkOiBzdHJpbmc7XG5cdFx0cGxhY2Vob2xkZXI6IFNpZ25hbDxzdHJpbmc+O1xuXHRcdGlzRXhwYW5kZWQ6IGJvb2xlYW47XG5cdFx0bXVsdGlwbGU6IFNpZ25hbDxib29sZWFuPjtcblx0XHRkaXNhYmxlZDogU2lnbmFsPGJvb2xlYW4+O1xuXHRcdGRpc2FibGVkQnlTZXREaXNhYmxlZDogU2lnbmFsPGJvb2xlYW4+O1xuXHRcdGRpcjogU2lnbmFsPEJyblJlYWREaXJlY3Rpb24+O1xuXHRcdHNlbGVjdGVkT3B0aW9uczogQXJyYXk8Q2RrT3B0aW9uIHwgbnVsbD47XG5cdFx0cG9zc2libGVPcHRpb25zOiBBcnJheTxDZGtPcHRpb24gfCBudWxsPjtcblx0XHR2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW107XG5cdFx0dHJpZ2dlcldpZHRoOiBudW1iZXI7XG5cdH0+KHtcblx0XHRpZDogJycsXG5cdFx0bGFiZWxJZDogJycsXG5cdFx0cGFuZWxJZDogJycsXG5cdFx0aXNFeHBhbmRlZDogZmFsc2UsXG5cdFx0cGxhY2Vob2xkZXI6IHNpZ25hbCgnJyksXG5cdFx0bXVsdGlwbGU6IHNpZ25hbChmYWxzZSksXG5cdFx0ZGlzYWJsZWQ6IHNpZ25hbChmYWxzZSksXG5cdFx0ZGlzYWJsZWRCeVNldERpc2FibGVkOiBzaWduYWwoZmFsc2UpLFxuXHRcdGRpcjogc2lnbmFsKCdsdHInIGFzIEJyblJlYWREaXJlY3Rpb24pLFxuXHRcdHNlbGVjdGVkT3B0aW9uczogW10sXG5cdFx0cG9zc2libGVPcHRpb25zOiBbXSxcblx0XHR2YWx1ZTogJycsXG5cdFx0dHJpZ2dlcldpZHRoOiAwLFxuXHR9KTtcblxuXHRwdWJsaWMgcmVhZG9ubHkgaWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN0YXRlKCkuaWQpO1xuXHRwdWJsaWMgcmVhZG9ubHkgbGFiZWxJZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3RhdGUoKS5sYWJlbElkKTtcblx0cHVibGljIHJlYWRvbmx5IHBhbmVsSWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN0YXRlKCkucGFuZWxJZCk7XG5cdHB1YmxpYyByZWFkb25seSBwbGFjZWhvbGRlciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3RhdGUoKS5wbGFjZWhvbGRlcigpKTtcblx0cHVibGljIHJlYWRvbmx5IGRpc2FibGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGF0ZSgpLmRpc2FibGVkKCkgfHwgdGhpcy5zdGF0ZSgpLmRpc2FibGVkQnlTZXREaXNhYmxlZCgpKTtcblx0cHVibGljIHJlYWRvbmx5IGlzRXhwYW5kZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN0YXRlKCkuaXNFeHBhbmRlZCk7XG5cdHB1YmxpYyByZWFkb25seSBtdWx0aXBsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3RhdGUoKS5tdWx0aXBsZSgpKTtcblx0cHVibGljIHJlYWRvbmx5IGRpciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3RhdGUoKS5kaXIoKSk7XG5cdHB1YmxpYyByZWFkb25seSBzZWxlY3RlZE9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN0YXRlKCkuc2VsZWN0ZWRPcHRpb25zKTtcblx0cHVibGljIHJlYWRvbmx5IHZhbHVlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGF0ZSgpLnZhbHVlKTtcblx0cHVibGljIHJlYWRvbmx5IHRyaWdnZXJXaWR0aCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3RhdGUoKS50cmlnZ2VyV2lkdGgpO1xuXHRwdWJsaWMgcmVhZG9ubHkgcG9zc2libGVPcHRpb25zID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGF0ZSgpLnBvc3NpYmxlT3B0aW9ucyk7XG5cblx0cHJpdmF0ZSByZWFkb25seSBfbXVsdGlwbGUkID0gdG9PYnNlcnZhYmxlKHRoaXMubXVsdGlwbGUpO1xuXG5cdHB1YmxpYyByZWFkb25seSBsaXN0Qm94VmFsdWVDaGFuZ2VFdmVudCQgPSBuZXcgU3ViamVjdDxMaXN0Ym94VmFsdWVDaGFuZ2VFdmVudDx1bmtub3duPj4oKTtcblxuXHRwcml2YXRlIF9zZWxlY3RUcmlnZ2VyPzogQnJuU2VsZWN0VHJpZ2dlckRpcmVjdGl2ZTtcblx0cHVibGljIGdldCBzZWxlY3RUcmlnZ2VyKCkge1xuXHRcdHJldHVybiB0aGlzLl9zZWxlY3RUcmlnZ2VyO1xuXHR9XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy5saXN0Qm94VmFsdWVDaGFuZ2VFdmVudCQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKChsaXN0Qm94Q2hhbmdlKSA9PiB7XG5cdFx0XHRjb25zdCB1cGRhdGVkU2VsZWN0aW9ucyA9IHRoaXMubXVsdGlwbGUoKSA/IHRoaXMuZ2V0VXBkYXRlZE9wdGlvbnMobGlzdEJveENoYW5nZSkgOiBbbGlzdEJveENoYW5nZS5vcHRpb25dO1xuXHRcdFx0Y29uc3QgdmFsdWUgPSB0aGlzLm11bHRpcGxlKCkgPyBsaXN0Qm94Q2hhbmdlLnZhbHVlIDogbGlzdEJveENoYW5nZS52YWx1ZVswXTtcblx0XHRcdHRoaXMuc3RhdGUudXBkYXRlKChzdGF0ZSkgPT4gKHtcblx0XHRcdFx0Li4uc3RhdGUsXG5cdFx0XHRcdHNlbGVjdGVkT3B0aW9uczogWy4uLnVwZGF0ZWRTZWxlY3Rpb25zXSxcblx0XHRcdFx0dmFsdWU6IHZhbHVlIGFzIHN0cmluZyB8IHN0cmluZ1tdLFxuXHRcdFx0fSkpO1xuXHRcdH0pO1xuXG5cdFx0Ly8gV2UgbmVlZCB0byBza2lwIHRoZSBmaXJzdCB2YWx1ZSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gZGVzZWxlY3QgYWxsIG9wdGlvbnMgd2hlbiB0aGUgY29tcG9uZW50IGlzIGluaXRpYWxpemVkIHdpdGggYSBwcmVzZWxlY3RlZCB2YWx1ZSBlLmcuIGJ5IHRoZSBmb3JtIGNvbnRyb2xcblx0XHR0aGlzLl9tdWx0aXBsZSQucGlwZShza2lwKDEpLCB0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKChtdWx0aXBsZSkgPT4ge1xuXHRcdFx0aWYgKCFtdWx0aXBsZSAmJiB0aGlzLnZhbHVlKCkubGVuZ3RoID4gMSkge1xuXHRcdFx0XHR0aGlzLmRlc2VsZWN0QWxsT3B0aW9ucygpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0cHVibGljIHNldFRyaWdnZXJXaWR0aCh0cmlnZ2VyV2lkdGg6IG51bWJlcikge1xuXHRcdHRoaXMuc3RhdGUudXBkYXRlKChzKSA9PiAoeyAuLi5zLCB0cmlnZ2VyV2lkdGggfSkpO1xuXHR9XG5cblx0cHVibGljIGdldFVwZGF0ZWRPcHRpb25zKGxhdGVzdExpc3Rib3hDaGFuZ2U6IExpc3Rib3hWYWx1ZUNoYW5nZUV2ZW50PHVua25vd24+KTogQXJyYXk8Q2RrT3B0aW9uIHwgbnVsbD4ge1xuXHRcdGNvbnN0IGlzTmV3U2VsZWN0aW9uID0gbGF0ZXN0TGlzdGJveENoYW5nZS52YWx1ZS5maW5kSW5kZXgoKHZhbHVlKSA9PiB2YWx1ZSA9PT0gbGF0ZXN0TGlzdGJveENoYW5nZS5vcHRpb24/LnZhbHVlKTtcblx0XHRpZiAoaXNOZXdTZWxlY3Rpb24gPT09IC0xKSB7XG5cdFx0XHRjb25zdCByZW1vdmVkT3B0aW9uSW5kZXggPSB0aGlzLnNlbGVjdGVkT3B0aW9ucygpLmZpbmRJbmRleCgob3B0aW9uKSA9PiBsYXRlc3RMaXN0Ym94Q2hhbmdlLm9wdGlvbiA9PT0gb3B0aW9uKTtcblx0XHRcdGNvbnN0IG9wdGlvbnMgPSB0aGlzLnNlbGVjdGVkT3B0aW9ucygpO1xuXHRcdFx0b3B0aW9ucy5zcGxpY2UocmVtb3ZlZE9wdGlvbkluZGV4LCAxKTtcblx0XHRcdHJldHVybiBvcHRpb25zO1xuXHRcdH1cblx0XHRyZXR1cm4gWy4uLnRoaXMuc2VsZWN0ZWRPcHRpb25zKCksIGxhdGVzdExpc3Rib3hDaGFuZ2Uub3B0aW9uXTtcblx0fVxuXG5cdHB1YmxpYyBkZXNlbGVjdEFsbE9wdGlvbnMoKSB7XG5cdFx0dGhpcy5zdGF0ZS51cGRhdGUoKHN0YXRlKSA9PiAoe1xuXHRcdFx0Li4uc3RhdGUsXG5cdFx0XHRzZWxlY3RlZE9wdGlvbnM6IFtdLFxuXHRcdFx0dmFsdWU6IFtdLFxuXHRcdH0pKTtcblx0fVxuXG5cdC8vIE5lZWRlZCBkdWUgdG8gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMjA4MTBcblx0cHVibGljIF9zZXRTZWxlY3RUcmlnZ2VyKHRyaWdnZXI6IEJyblNlbGVjdFRyaWdnZXJEaXJlY3RpdmUpIHtcblx0XHR0aGlzLl9zZWxlY3RUcmlnZ2VyID0gdHJpZ2dlcjtcblx0fVxuXG5cdHB1YmxpYyBzZXRJbml0aWFsU2VsZWN0ZWRPcHRpb25zKHZhbHVlOiB1bmtub3duKSB7XG5cdFx0dGhpcy5zZWxlY3RPcHRpb25CeVZhbHVlKHZhbHVlKTtcblx0XHR0aGlzLnN0YXRlLnVwZGF0ZSgoc3RhdGUpID0+ICh7XG5cdFx0XHQuLi5zdGF0ZSxcblx0XHRcdHZhbHVlOiB2YWx1ZSBhcyBzdHJpbmcgfCBzdHJpbmdbXSxcblx0XHRcdGluaXRpYWxTZWxlY3RlZE9wdGlvbnM6IHRoaXMuc2VsZWN0ZWRPcHRpb25zKCksXG5cdFx0XHRzZWxlY3RlZE9wdGlvbnM6IHRoaXMuc2VsZWN0ZWRPcHRpb25zKCksXG5cdFx0fSkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFN5bmMgdGhlIHVwZGF0ZWQgb3B0aW9ucyB3aXRoIFwicG9zc2libGVPcHRpb25zXCIgaW4gdGhlIHNlbGVjdCBzZXJ2aWNlXG5cdCAqL1xuXHRwdWJsaWMgdXBkYXRlUG9zc2libGVPcHRpb25zKG9wdGlvbnM6IHJlYWRvbmx5IENka09wdGlvbltdKSB7XG5cdFx0dGhpcy5zdGF0ZS51cGRhdGUoKHN0YXRlKSA9PiAoe1xuXHRcdFx0Li4uc3RhdGUsXG5cdFx0XHRwb3NzaWJsZU9wdGlvbnM6IG9wdGlvbnMgYXMgQ2RrT3B0aW9uW10sXG5cdFx0fSkpO1xuXHR9XG5cblx0cHJpdmF0ZSBzZWxlY3RPcHRpb25CeVZhbHVlKHZhbHVlOiB1bmtub3duKSB7XG5cdFx0Y29uc3Qgb3B0aW9ucyA9IHRoaXMucG9zc2libGVPcHRpb25zKCk7XG5cdFx0aWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGNvbnN0IG51bGxPclVuZGVmaW5lZE9wdGlvbiA9IG9wdGlvbnMuZmluZCgobykgPT4gbyAmJiBvLnZhbHVlID09PSB2YWx1ZSk7XG5cdFx0XHRpZiAoIW51bGxPclVuZGVmaW5lZE9wdGlvbikge1xuXHRcdFx0XHR0aGlzLnN0YXRlLnVwZGF0ZSgoc3RhdGUpID0+ICh7XG5cdFx0XHRcdFx0Li4uc3RhdGUsXG5cdFx0XHRcdFx0c2VsZWN0ZWRPcHRpb25zOiBbXSxcblx0XHRcdFx0XHR2YWx1ZTogdGhpcy5tdWx0aXBsZSgpID8gW10gOiAnJyxcblx0XHRcdFx0fSkpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMubXVsdGlwbGUoKSkge1xuXHRcdFx0Y29uc3Qgc2VsZWN0ZWRPcHRpb25zID0gb3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4ge1xuXHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcblx0XHRcdFx0XHRyZXR1cm4gdmFsdWUuaW5jbHVkZXMob3B0aW9uPy52YWx1ZSBhcyBzdHJpbmcpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB2YWx1ZSA9PT0gb3B0aW9uPy52YWx1ZTtcblx0XHRcdH0pO1xuXHRcdFx0dGhpcy5zdGF0ZS51cGRhdGUoKHN0YXRlKSA9PiAoe1xuXHRcdFx0XHQuLi5zdGF0ZSxcblx0XHRcdFx0c2VsZWN0ZWRPcHRpb25zLFxuXHRcdFx0XHR2YWx1ZTogdmFsdWUgYXMgc3RyaW5nW10sXG5cdFx0XHR9KSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IHNlbGVjdGVkT3B0aW9uID0gb3B0aW9ucy5maW5kKChvcHRpb24pID0+IG9wdGlvbj8udmFsdWUgPT09IHZhbHVlKTtcblx0XHRcdGlmICghc2VsZWN0ZWRPcHRpb24pIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5zdGF0ZS51cGRhdGUoKHN0YXRlKSA9PiAoe1xuXHRcdFx0XHQuLi5zdGF0ZSxcblx0XHRcdFx0c2VsZWN0ZWRPcHRpb25zOiBbc2VsZWN0ZWRPcHRpb24gYXMgQ2RrT3B0aW9uIHwgbnVsbF0sXG5cdFx0XHRcdHZhbHVlOiBzZWxlY3RlZE9wdGlvbi52YWx1ZSBhcyBzdHJpbmcsXG5cdFx0XHR9KSk7XG5cdFx0fVxuXHR9XG59XG4iXX0=
@@ -238,6 +238,13 @@ class BrnCommandDirective {
238
238
  .withWrap()
239
239
  .withTypeAhead()
240
240
  .skipPredicate((item) => item.disabled || !item.visible());
241
+ // When clearing the search input we also want to reset the active item to the first one
242
+ effect(() => {
243
+ const searchInput = this._searchInput()?.value();
244
+ if (searchInput !== undefined && searchInput.length === 0) {
245
+ this.keyManager.setActiveItem(0);
246
+ }
247
+ }, { allowSignalWrites: true });
241
248
  }
242
249
  ngAfterViewInit() {
243
250
  if (isPlatformBrowser(this._platform) && this.items().length) {
@@ -1 +1 @@
1
- {"version":3,"file":"spartan-ng-brain-command.mjs","sources":["../../../../libs/brain/command/src/lib/brn-command.token.ts","../../../../libs/brain/command/src/lib/brn-command-empty.directive.ts","../../../../libs/brain/command/src/lib/brn-command-item.token.ts","../../../../libs/brain/command/src/lib/brn-command-group.directive.ts","../../../../libs/brain/command/src/lib/brn-command-item.directive.ts","../../../../libs/brain/command/src/lib/brn-command-list.directive.ts","../../../../libs/brain/command/src/lib/brn-command-search-input.token.ts","../../../../libs/brain/command/src/lib/brn-command-search-input.directive.ts","../../../../libs/brain/command/src/lib/brn-command.directive.ts","../../../../libs/brain/command/src/index.ts","../../../../libs/brain/command/src/spartan-ng-brain-command.ts"],"sourcesContent":["import { ExistingProvider, inject, InjectionToken, Type } from '@angular/core';\nimport type { BrnCommandDirective } from './brn-command.directive';\n\nexport const BrnCommandToken = new InjectionToken<BrnCommandDirective>('BrnCommandToken');\n\nexport function provideBrnCommand(command: Type<BrnCommandDirective>): ExistingProvider {\n\treturn { provide: BrnCommandToken, useExisting: command };\n}\n\nexport function injectBrnCommand(): BrnCommandDirective {\n\treturn inject(BrnCommandToken);\n}\n","import { computed, Directive, effect, inject, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { injectBrnCommand } from './brn-command.token';\n\n@Directive({\n\tstandalone: true,\n\tselector: '[brnCommandEmpty]',\n})\nexport class BrnCommandEmptyDirective {\n\tprivate readonly _templateRef = inject<TemplateRef<void>>(TemplateRef);\n\tprivate readonly _viewContainerRef = inject(ViewContainerRef);\n\tprivate readonly _command = injectBrnCommand();\n\n\t/** Determine if the command has any visible items */\n\tprivate readonly _visible = computed(() => this._command.items().some((item) => item.visible()));\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tif (this._visible()) {\n\t\t\t\tthis._viewContainerRef.clear();\n\t\t\t} else {\n\t\t\t\tthis._viewContainerRef.createEmbeddedView(this._templateRef);\n\t\t\t}\n\t\t});\n\t}\n}\n","import { ExistingProvider, InjectionToken, Type } from '@angular/core';\nimport type { BrnCommandItemDirective } from './brn-command-item.directive';\n\nexport const BrnCommandItemToken = new InjectionToken<BrnCommandItemDirective>('BrnCommandItemToken');\n\nexport function provideBrnCommandItem(command: Type<BrnCommandItemDirective>): ExistingProvider {\n\treturn { provide: BrnCommandItemToken, useExisting: command };\n}\n","import { computed, contentChildren, Directive, input } from '@angular/core';\nimport { BrnCommandItemToken } from './brn-command-item.token';\n\n@Directive({\n\tselector: '[brnCommandGroup]',\n\tstandalone: true,\n\thost: {\n\t\trole: 'group',\n\t\t'[attr.data-hidden]': '!visible() ? \"\" : null',\n\t\t'[id]': 'id()',\n\t},\n})\nexport class BrnCommandGroupDirective {\n\tprivate static _id = 0;\n\n\t/** The id of the command list */\n\tpublic readonly id = input<string>(`brn-command-group-${BrnCommandGroupDirective._id++}`);\n\n\t/** Get the items in the group */\n\tprivate readonly _items = contentChildren(BrnCommandItemToken, {\n\t\tdescendants: true,\n\t});\n\n\t/** Determine if there are any visible items in the group */\n\tprotected readonly visible = computed(() => this._items().some((item) => item.visible()));\n}\n","import { Highlightable } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n\tbooleanAttribute,\n\tcomputed,\n\tDirective,\n\tElementRef,\n\tHostListener,\n\tinject,\n\tinput,\n\toutput,\n\tPLATFORM_ID,\n\tsignal,\n} from '@angular/core';\nimport { provideBrnCommandItem } from './brn-command-item.token';\nimport { injectBrnCommand } from './brn-command.token';\n\n@Directive({\n\tselector: 'button[brnCommandItem]',\n\tstandalone: true,\n\tproviders: [provideBrnCommandItem(BrnCommandItemDirective)],\n\thost: {\n\t\ttype: 'button',\n\t\trole: 'option',\n\t\ttabIndex: '-1',\n\t\t'[id]': 'id()',\n\t\t'[attr.disabled]': '_disabled() ? true : null',\n\t\t'[attr.data-value]': 'value()',\n\t\t'[attr.data-hidden]': \"!visible() ? '' : null\",\n\t\t'[attr.aria-selected]': 'active()',\n\t\t'[attr.data-selected]': \"active() ? '' : null\",\n\t},\n})\nexport class BrnCommandItemDirective implements Highlightable {\n\tprivate static _id = 0;\n\n\tprivate readonly _platform = inject(PLATFORM_ID);\n\n\tprivate readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\t/** Access the command component */\n\tprivate readonly _command = injectBrnCommand();\n\n\t/** A unique id for the item */\n\tpublic readonly id = input(`brn-command-item-${BrnCommandItemDirective._id++}`);\n\n\t/** The value this item represents. */\n\tpublic readonly value = input.required<string>();\n\n\t/** Whether the item is disabled. */\n\tpublic readonly _disabled = input<boolean, BooleanInput>(false, {\n\t\talias: 'disabled',\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** Expose disabled as a value - used by the Highlightable interface */\n\tpublic get disabled() {\n\t\treturn this._disabled();\n\t}\n\n\t/** Whether the item is selected. */\n\tprotected readonly active = signal(false);\n\n\t/** Emits when the item is selected. */\n\tpublic readonly selected = output<void>();\n\n\t/** @internal Determine if this item is visible based on the current search query */\n\tpublic readonly visible = computed(() => this._command.filter()(this.value(), this._command.search()));\n\n\t/** @internal Get the display value */\n\tpublic getLabel(): string {\n\t\treturn this.value();\n\t}\n\n\t/** @internal */\n\tsetActiveStyles(): void {\n\t\tthis.active.set(true);\n\n\t\t// ensure the item is in view\n\t\tif (isPlatformBrowser(this._platform)) {\n\t\t\tthis._elementRef.nativeElement.scrollIntoView({ block: 'nearest' });\n\t\t}\n\t}\n\n\t/** @internal */\n\tsetInactiveStyles(): void {\n\t\tthis.active.set(false);\n\t}\n\n\t@HostListener('click')\n\tprotected onClick(): void {\n\t\tthis._command.keyManager.setActiveItem(this);\n\t\tthis.selected.emit();\n\t}\n}\n","import { Directive, input } from '@angular/core';\n\n@Directive({\n\tstandalone: true,\n\tselector: '[brnCommandList]',\n\thost: {\n\t\trole: 'listbox',\n\t\t'[id]': 'id()',\n\t},\n})\nexport class BrnCommandListDirective {\n\tprivate static _id = 0;\n\n\t/** The id of the command list */\n\tpublic readonly id = input<string>(`brn-command-list-${BrnCommandListDirective._id++}`);\n}\n","import { ExistingProvider, InjectionToken, Type } from '@angular/core';\nimport type { BrnCommandSearchInputDirective } from './brn-command-search-input.directive';\n\nexport const BrnCommandSearchInputToken = new InjectionToken<BrnCommandSearchInputDirective>(\n\t'BrnCommandSearchInputToken',\n);\n\nexport function provideBrnCommandSearchInput(command: Type<BrnCommandSearchInputDirective>): ExistingProvider {\n\treturn { provide: BrnCommandSearchInputToken, useExisting: command };\n}\n","import { Directive, ElementRef, HostListener, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { startWith } from 'rxjs/operators';\nimport { provideBrnCommandSearchInput } from './brn-command-search-input.token';\nimport { injectBrnCommand } from './brn-command.token';\n\n@Directive({\n\tselector: 'input[brnCommandSearchInput]',\n\tstandalone: true,\n\tproviders: [provideBrnCommandSearchInput(BrnCommandSearchInputDirective)],\n\thost: {\n\t\trole: 'combobox',\n\t\t'aria-autocomplete': 'list',\n\t\t'[attr.aria-activedescendant]': '_activeDescendant()',\n\t},\n})\nexport class BrnCommandSearchInputDirective {\n\tprivate readonly _command = injectBrnCommand();\n\tprivate readonly _elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n\t/** @internal Expose the current text value */\n\tpublic readonly value = signal<string>('');\n\n\t/** The id of the active option */\n\tprotected readonly _activeDescendant = signal<string | undefined>(undefined);\n\n\tconstructor() {\n\t\tthis._command.keyManager.change\n\t\t\t.pipe(startWith(this._command.keyManager.activeItemIndex), takeUntilDestroyed())\n\t\t\t.subscribe(() => this._activeDescendant.set(this._command.keyManager.activeItem?.id()));\n\t}\n\n\t/** Listen for changes to the input value */\n\t@HostListener('input')\n\tprotected onInput(): void {\n\t\tthis.value.set(this._elementRef.nativeElement.value);\n\t}\n\n\t/** Listen for keydown events */\n\t@HostListener('keydown', ['$event'])\n\tprotected onKeyDown(event: KeyboardEvent): void {\n\t\tthis._command.keyManager.onKeydown(event);\n\t}\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n\tAfterViewInit,\n\tcomputed,\n\tcontentChild,\n\tcontentChildren,\n\tDirective,\n\tHostListener,\n\tinject,\n\tInjector,\n\tinput,\n\tPLATFORM_ID,\n} from '@angular/core';\nimport { BrnCommandItemToken } from './brn-command-item.token';\nimport { BrnCommandSearchInputDirective } from './brn-command-search-input.directive';\nimport { provideBrnCommand } from './brn-command.token';\n\n@Directive({\n\tselector: '[brnCommand]',\n\tstandalone: true,\n\tproviders: [provideBrnCommand(BrnCommandDirective)],\n\thost: {\n\t\t'[id]': 'id()',\n\t},\n})\nexport class BrnCommandDirective implements AfterViewInit {\n\tprivate static _id = 0;\n\n\tprivate readonly _platform = inject(PLATFORM_ID);\n\n\tprivate readonly _injector = inject(Injector);\n\n\t/** The id of the command */\n\tpublic readonly id = input<string>(`brn-command-${BrnCommandDirective._id++}`);\n\n\t/** The default filter function */\n\tprivate readonly _defaultFilter = (value: string, search: string) =>\n\t\tvalue.toLowerCase().includes(search.toLowerCase());\n\n\t/** A custom filter function to use when searching. */\n\tpublic readonly filter = input<CommandFilter>(this._defaultFilter);\n\n\t/** @internal The search query */\n\tpublic readonly search = computed(() => this._searchInput()?.value() ?? '');\n\n\t/** Access the search input if present */\n\tprivate readonly _searchInput = contentChild(BrnCommandSearchInputDirective, {\n\t\tdescendants: true,\n\t});\n\n\t/** @internal Access all the items within the commmand */\n\tpublic readonly items = contentChildren(BrnCommandItemToken, {\n\t\tdescendants: true,\n\t});\n\n\t/** @internal The key manager for managing active descendant */\n\tpublic readonly keyManager = new ActiveDescendantKeyManager(this.items, this._injector);\n\n\tconstructor() {\n\t\tthis.keyManager\n\t\t\t.withVerticalOrientation()\n\t\t\t.withHomeAndEnd()\n\t\t\t.withWrap()\n\t\t\t.withTypeAhead()\n\t\t\t.skipPredicate((item) => item.disabled || !item.visible());\n\t}\n\n\tngAfterViewInit(): void {\n\t\tif (isPlatformBrowser(this._platform) && this.items().length) {\n\t\t\tthis.keyManager.setActiveItem(0);\n\t\t}\n\t}\n\n\t@HostListener('keydown.enter')\n\tprotected selectActiveItem(): void {\n\t\tthis.keyManager.activeItem?.selected.emit();\n\t}\n}\n\nexport type CommandFilter = (value: string, search: string) => boolean;\n","import { NgModule } from '@angular/core';\nimport { BrnCommandEmptyDirective } from './lib/brn-command-empty.directive';\nimport { BrnCommandGroupDirective } from './lib/brn-command-group.directive';\nimport { BrnCommandItemDirective } from './lib/brn-command-item.directive';\nimport { BrnCommandListDirective } from './lib/brn-command-list.directive';\nimport { BrnCommandSearchInputDirective } from './lib/brn-command-search-input.directive';\nimport { BrnCommandDirective } from './lib/brn-command.directive';\n\nexport * from './lib/brn-command-empty.directive';\nexport * from './lib/brn-command-group.directive';\nexport * from './lib/brn-command-item.directive';\nexport * from './lib/brn-command-item.token';\nexport * from './lib/brn-command-list.directive';\nexport * from './lib/brn-command-search-input.directive';\nexport * from './lib/brn-command-search-input.token';\nexport * from './lib/brn-command.directive';\nexport * from './lib/brn-command.token';\n\nexport const BrnCommandImports = [\n\tBrnCommandEmptyDirective,\n\tBrnCommandGroupDirective,\n\tBrnCommandItemDirective,\n\tBrnCommandListDirective,\n\tBrnCommandSearchInputDirective,\n\tBrnCommandDirective,\n] as const;\n\n@NgModule({\n\timports: [...BrnCommandImports],\n\texports: [...BrnCommandImports],\n})\nexport class BrnCommandModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spartan-ng-brain-command.mjs","sources":["../../../../libs/brain/command/src/lib/brn-command.token.ts","../../../../libs/brain/command/src/lib/brn-command-empty.directive.ts","../../../../libs/brain/command/src/lib/brn-command-item.token.ts","../../../../libs/brain/command/src/lib/brn-command-group.directive.ts","../../../../libs/brain/command/src/lib/brn-command-item.directive.ts","../../../../libs/brain/command/src/lib/brn-command-list.directive.ts","../../../../libs/brain/command/src/lib/brn-command-search-input.token.ts","../../../../libs/brain/command/src/lib/brn-command-search-input.directive.ts","../../../../libs/brain/command/src/lib/brn-command.directive.ts","../../../../libs/brain/command/src/index.ts","../../../../libs/brain/command/src/spartan-ng-brain-command.ts"],"sourcesContent":["import { ExistingProvider, inject, InjectionToken, Type } from '@angular/core';\nimport type { BrnCommandDirective } from './brn-command.directive';\n\nexport const BrnCommandToken = new InjectionToken<BrnCommandDirective>('BrnCommandToken');\n\nexport function provideBrnCommand(command: Type<BrnCommandDirective>): ExistingProvider {\n\treturn { provide: BrnCommandToken, useExisting: command };\n}\n\nexport function injectBrnCommand(): BrnCommandDirective {\n\treturn inject(BrnCommandToken);\n}\n","import { computed, Directive, effect, inject, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { injectBrnCommand } from './brn-command.token';\n\n@Directive({\n\tstandalone: true,\n\tselector: '[brnCommandEmpty]',\n})\nexport class BrnCommandEmptyDirective {\n\tprivate readonly _templateRef = inject<TemplateRef<void>>(TemplateRef);\n\tprivate readonly _viewContainerRef = inject(ViewContainerRef);\n\tprivate readonly _command = injectBrnCommand();\n\n\t/** Determine if the command has any visible items */\n\tprivate readonly _visible = computed(() => this._command.items().some((item) => item.visible()));\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tif (this._visible()) {\n\t\t\t\tthis._viewContainerRef.clear();\n\t\t\t} else {\n\t\t\t\tthis._viewContainerRef.createEmbeddedView(this._templateRef);\n\t\t\t}\n\t\t});\n\t}\n}\n","import { ExistingProvider, InjectionToken, Type } from '@angular/core';\nimport type { BrnCommandItemDirective } from './brn-command-item.directive';\n\nexport const BrnCommandItemToken = new InjectionToken<BrnCommandItemDirective>('BrnCommandItemToken');\n\nexport function provideBrnCommandItem(command: Type<BrnCommandItemDirective>): ExistingProvider {\n\treturn { provide: BrnCommandItemToken, useExisting: command };\n}\n","import { computed, contentChildren, Directive, input } from '@angular/core';\nimport { BrnCommandItemToken } from './brn-command-item.token';\n\n@Directive({\n\tselector: '[brnCommandGroup]',\n\tstandalone: true,\n\thost: {\n\t\trole: 'group',\n\t\t'[attr.data-hidden]': '!visible() ? \"\" : null',\n\t\t'[id]': 'id()',\n\t},\n})\nexport class BrnCommandGroupDirective {\n\tprivate static _id = 0;\n\n\t/** The id of the command list */\n\tpublic readonly id = input<string>(`brn-command-group-${BrnCommandGroupDirective._id++}`);\n\n\t/** Get the items in the group */\n\tprivate readonly _items = contentChildren(BrnCommandItemToken, {\n\t\tdescendants: true,\n\t});\n\n\t/** Determine if there are any visible items in the group */\n\tprotected readonly visible = computed(() => this._items().some((item) => item.visible()));\n}\n","import { Highlightable } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n\tbooleanAttribute,\n\tcomputed,\n\tDirective,\n\tElementRef,\n\tHostListener,\n\tinject,\n\tinput,\n\toutput,\n\tPLATFORM_ID,\n\tsignal,\n} from '@angular/core';\nimport { provideBrnCommandItem } from './brn-command-item.token';\nimport { injectBrnCommand } from './brn-command.token';\n\n@Directive({\n\tselector: 'button[brnCommandItem]',\n\tstandalone: true,\n\tproviders: [provideBrnCommandItem(BrnCommandItemDirective)],\n\thost: {\n\t\ttype: 'button',\n\t\trole: 'option',\n\t\ttabIndex: '-1',\n\t\t'[id]': 'id()',\n\t\t'[attr.disabled]': '_disabled() ? true : null',\n\t\t'[attr.data-value]': 'value()',\n\t\t'[attr.data-hidden]': \"!visible() ? '' : null\",\n\t\t'[attr.aria-selected]': 'active()',\n\t\t'[attr.data-selected]': \"active() ? '' : null\",\n\t},\n})\nexport class BrnCommandItemDirective implements Highlightable {\n\tprivate static _id = 0;\n\n\tprivate readonly _platform = inject(PLATFORM_ID);\n\n\tprivate readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\t/** Access the command component */\n\tprivate readonly _command = injectBrnCommand();\n\n\t/** A unique id for the item */\n\tpublic readonly id = input(`brn-command-item-${BrnCommandItemDirective._id++}`);\n\n\t/** The value this item represents. */\n\tpublic readonly value = input.required<string>();\n\n\t/** Whether the item is disabled. */\n\tpublic readonly _disabled = input<boolean, BooleanInput>(false, {\n\t\talias: 'disabled',\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** Expose disabled as a value - used by the Highlightable interface */\n\tpublic get disabled() {\n\t\treturn this._disabled();\n\t}\n\n\t/** Whether the item is selected. */\n\tprotected readonly active = signal(false);\n\n\t/** Emits when the item is selected. */\n\tpublic readonly selected = output<void>();\n\n\t/** @internal Determine if this item is visible based on the current search query */\n\tpublic readonly visible = computed(() => this._command.filter()(this.value(), this._command.search()));\n\n\t/** @internal Get the display value */\n\tpublic getLabel(): string {\n\t\treturn this.value();\n\t}\n\n\t/** @internal */\n\tsetActiveStyles(): void {\n\t\tthis.active.set(true);\n\n\t\t// ensure the item is in view\n\t\tif (isPlatformBrowser(this._platform)) {\n\t\t\tthis._elementRef.nativeElement.scrollIntoView({ block: 'nearest' });\n\t\t}\n\t}\n\n\t/** @internal */\n\tsetInactiveStyles(): void {\n\t\tthis.active.set(false);\n\t}\n\n\t@HostListener('click')\n\tprotected onClick(): void {\n\t\tthis._command.keyManager.setActiveItem(this);\n\t\tthis.selected.emit();\n\t}\n}\n","import { Directive, input } from '@angular/core';\n\n@Directive({\n\tstandalone: true,\n\tselector: '[brnCommandList]',\n\thost: {\n\t\trole: 'listbox',\n\t\t'[id]': 'id()',\n\t},\n})\nexport class BrnCommandListDirective {\n\tprivate static _id = 0;\n\n\t/** The id of the command list */\n\tpublic readonly id = input<string>(`brn-command-list-${BrnCommandListDirective._id++}`);\n}\n","import { ExistingProvider, InjectionToken, Type } from '@angular/core';\nimport type { BrnCommandSearchInputDirective } from './brn-command-search-input.directive';\n\nexport const BrnCommandSearchInputToken = new InjectionToken<BrnCommandSearchInputDirective>(\n\t'BrnCommandSearchInputToken',\n);\n\nexport function provideBrnCommandSearchInput(command: Type<BrnCommandSearchInputDirective>): ExistingProvider {\n\treturn { provide: BrnCommandSearchInputToken, useExisting: command };\n}\n","import { Directive, ElementRef, HostListener, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { startWith } from 'rxjs/operators';\nimport { provideBrnCommandSearchInput } from './brn-command-search-input.token';\nimport { injectBrnCommand } from './brn-command.token';\n\n@Directive({\n\tselector: 'input[brnCommandSearchInput]',\n\tstandalone: true,\n\tproviders: [provideBrnCommandSearchInput(BrnCommandSearchInputDirective)],\n\thost: {\n\t\trole: 'combobox',\n\t\t'aria-autocomplete': 'list',\n\t\t'[attr.aria-activedescendant]': '_activeDescendant()',\n\t},\n})\nexport class BrnCommandSearchInputDirective {\n\tprivate readonly _command = injectBrnCommand();\n\tprivate readonly _elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n\t/** @internal Expose the current text value */\n\tpublic readonly value = signal<string>('');\n\n\t/** The id of the active option */\n\tprotected readonly _activeDescendant = signal<string | undefined>(undefined);\n\n\tconstructor() {\n\t\tthis._command.keyManager.change\n\t\t\t.pipe(startWith(this._command.keyManager.activeItemIndex), takeUntilDestroyed())\n\t\t\t.subscribe(() => this._activeDescendant.set(this._command.keyManager.activeItem?.id()));\n\t}\n\n\t/** Listen for changes to the input value */\n\t@HostListener('input')\n\tprotected onInput(): void {\n\t\tthis.value.set(this._elementRef.nativeElement.value);\n\t}\n\n\t/** Listen for keydown events */\n\t@HostListener('keydown', ['$event'])\n\tprotected onKeyDown(event: KeyboardEvent): void {\n\t\tthis._command.keyManager.onKeydown(event);\n\t}\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n\tAfterViewInit,\n\tcomputed,\n\tcontentChild,\n\tcontentChildren,\n\tDirective,\n\teffect,\n\tHostListener,\n\tinject,\n\tInjector,\n\tinput,\n\tPLATFORM_ID,\n} from '@angular/core';\nimport { BrnCommandItemToken } from './brn-command-item.token';\nimport { BrnCommandSearchInputDirective } from './brn-command-search-input.directive';\nimport { provideBrnCommand } from './brn-command.token';\n\n@Directive({\n\tselector: '[brnCommand]',\n\tstandalone: true,\n\tproviders: [provideBrnCommand(BrnCommandDirective)],\n\thost: {\n\t\t'[id]': 'id()',\n\t},\n})\nexport class BrnCommandDirective implements AfterViewInit {\n\tprivate static _id = 0;\n\n\tprivate readonly _platform = inject(PLATFORM_ID);\n\n\tprivate readonly _injector = inject(Injector);\n\n\t/** The id of the command */\n\tpublic readonly id = input<string>(`brn-command-${BrnCommandDirective._id++}`);\n\n\t/** The default filter function */\n\tprivate readonly _defaultFilter = (value: string, search: string) =>\n\t\tvalue.toLowerCase().includes(search.toLowerCase());\n\n\t/** A custom filter function to use when searching. */\n\tpublic readonly filter = input<CommandFilter>(this._defaultFilter);\n\n\t/** @internal The search query */\n\tpublic readonly search = computed(() => this._searchInput()?.value() ?? '');\n\n\t/** Access the search input if present */\n\tprivate readonly _searchInput = contentChild(BrnCommandSearchInputDirective, {\n\t\tdescendants: true,\n\t});\n\n\t/** @internal Access all the items within the commmand */\n\tpublic readonly items = contentChildren(BrnCommandItemToken, {\n\t\tdescendants: true,\n\t});\n\n\t/** @internal The key manager for managing active descendant */\n\tpublic readonly keyManager = new ActiveDescendantKeyManager(this.items, this._injector);\n\n\tconstructor() {\n\t\tthis.keyManager\n\t\t\t.withVerticalOrientation()\n\t\t\t.withHomeAndEnd()\n\t\t\t.withWrap()\n\t\t\t.withTypeAhead()\n\t\t\t.skipPredicate((item) => item.disabled || !item.visible());\n\n\t\t// When clearing the search input we also want to reset the active item to the first one\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tconst searchInput = this._searchInput()?.value();\n\t\t\t\tif (searchInput !== undefined && searchInput.length === 0) {\n\t\t\t\t\tthis.keyManager.setActiveItem(0);\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ allowSignalWrites: true },\n\t\t);\n\t}\n\n\tngAfterViewInit(): void {\n\t\tif (isPlatformBrowser(this._platform) && this.items().length) {\n\t\t\tthis.keyManager.setActiveItem(0);\n\t\t}\n\t}\n\n\t@HostListener('keydown.enter')\n\tprotected selectActiveItem(): void {\n\t\tthis.keyManager.activeItem?.selected.emit();\n\t}\n}\n\nexport type CommandFilter = (value: string, search: string) => boolean;\n","import { NgModule } from '@angular/core';\nimport { BrnCommandEmptyDirective } from './lib/brn-command-empty.directive';\nimport { BrnCommandGroupDirective } from './lib/brn-command-group.directive';\nimport { BrnCommandItemDirective } from './lib/brn-command-item.directive';\nimport { BrnCommandListDirective } from './lib/brn-command-list.directive';\nimport { BrnCommandSearchInputDirective } from './lib/brn-command-search-input.directive';\nimport { BrnCommandDirective } from './lib/brn-command.directive';\n\nexport * from './lib/brn-command-empty.directive';\nexport * from './lib/brn-command-group.directive';\nexport * from './lib/brn-command-item.directive';\nexport * from './lib/brn-command-item.token';\nexport * from './lib/brn-command-list.directive';\nexport * from './lib/brn-command-search-input.directive';\nexport * from './lib/brn-command-search-input.token';\nexport * from './lib/brn-command.directive';\nexport * from './lib/brn-command.token';\n\nexport const BrnCommandImports = [\n\tBrnCommandEmptyDirective,\n\tBrnCommandGroupDirective,\n\tBrnCommandItemDirective,\n\tBrnCommandListDirective,\n\tBrnCommandSearchInputDirective,\n\tBrnCommandDirective,\n] as const;\n\n@NgModule({\n\timports: [...BrnCommandImports],\n\texports: [...BrnCommandImports],\n})\nexport class BrnCommandModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -212,6 +212,12 @@ class BrnMenuDirective {
212
212
  // we can access it here and determine the correct side.
213
213
  // eslint-disable-next-line
214
214
  const ps = this._host._parentTrigger._spartanLastPosition;
215
+ if (!ps) {
216
+ // if we have no last position we default to the most likely option
217
+ // I hate that we have to do this and hope we can revisit soon and improve
218
+ this._side.set(isRoot ? 'top' : 'left');
219
+ return;
220
+ }
215
221
  const side = isRoot ? ps.originY : ps.originX === 'end' ? 'right' : 'left';
216
222
  this._side.set(side);
217
223
  });
@@ -1 +1 @@
1
- {"version":3,"file":"spartan-ng-brain-menu.mjs","sources":["../../../../libs/brain/menu/src/lib/brn-menu-align.ts","../../../../libs/brain/menu/src/lib/brn-context-menu-trigger.directive.ts","../../../../libs/brain/menu/src/lib/brn-menu-bar.directive.ts","../../../../libs/brain/menu/src/lib/brn-menu-group.directive.ts","../../../../libs/brain/menu/src/lib/brn-menu-item-checkbox.directive.ts","../../../../libs/brain/menu/src/lib/brn-menu-item-radio.directive.ts","../../../../libs/brain/menu/src/lib/brn-menu-item.directive.ts","../../../../libs/brain/menu/src/lib/brn-menu-trigger.directive.ts","../../../../libs/brain/menu/src/lib/brn-menu.directive.ts","../../../../libs/brain/menu/src/index.ts","../../../../libs/brain/menu/src/spartan-ng-brain-menu.ts"],"sourcesContent":["import { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport type BrnMenuAlign = 'start' | 'center' | 'end' | undefined;\nexport const getBrnMenuAlign = (align: Exclude<BrnMenuAlign, undefined>): ConnectedPosition[] => [\n\t{\n\t\toriginX: align,\n\t\toriginY: 'bottom',\n\t\toverlayX: align,\n\t\toverlayY: 'top',\n\t},\n\t{\n\t\toriginX: align,\n\t\toriginY: 'top',\n\t\toverlayX: align,\n\t\toverlayY: 'bottom',\n\t},\n];\n","import { CdkContextMenuTrigger } from '@angular/cdk/menu';\nimport { Directive, effect, inject, input, type TemplateRef } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BrnMenuAlign, getBrnMenuAlign } from './brn-menu-align';\n\n@Directive({\n\tselector: '[brnCtxMenuTriggerFor]',\n\tstandalone: true,\n\thostDirectives: [CdkContextMenuTrigger],\n})\nexport class BrnContextMenuTriggerDirective {\n\tprivate readonly _cdkTrigger = inject(CdkContextMenuTrigger, { host: true });\n\tpublic brnCtxMenuTriggerFor = input<TemplateRef<unknown> | null>(null);\n\tpublic brnCtxMenuTriggerData = input<unknown>(undefined);\n\tpublic readonly align = input<BrnMenuAlign>(undefined);\n\n\tconstructor() {\n\t\t// once the trigger opens we wait until the next tick and then grab the last position\n\t\t// used to position the menu. we store this in our trigger which the brnMenu directive has\n\t\t// access to through DI\n\t\tthis._cdkTrigger.opened.pipe(takeUntilDestroyed()).subscribe(() =>\n\t\t\tsetTimeout(\n\t\t\t\t() =>\n\t\t\t\t\t// eslint-disable-next-line\n\t\t\t\t\t((this._cdkTrigger as any)._spartanLastPosition = // eslint-disable-next-line\n\t\t\t\t\t\t(this._cdkTrigger as any).overlayRef._positionStrategy._lastPosition),\n\t\t\t),\n\t\t);\n\n\t\teffect(() => (this._cdkTrigger.menuTemplateRef = this.brnCtxMenuTriggerFor()));\n\t\teffect(() => (this._cdkTrigger.menuData = this.brnCtxMenuTriggerData()));\n\t\teffect(() => {\n\t\t\tconst align = this.align();\n\t\t\tif (!align) return;\n\t\t\tthis._cdkTrigger.menuPosition = getBrnMenuAlign(align);\n\t\t});\n\t}\n}\n","import { CdkMenuBar } from '@angular/cdk/menu';\nimport { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnMenuBar]',\n\tstandalone: true,\n\thostDirectives: [CdkMenuBar],\n})\nexport class BrnMenuBarDirective {}\n","import { CdkMenuGroup } from '@angular/cdk/menu';\nimport { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnMenuGroup]',\n\tstandalone: true,\n\thostDirectives: [CdkMenuGroup],\n})\nexport class BrnMenuGroupDirective {}\n","import { CdkMenuItemCheckbox } from '@angular/cdk/menu';\nimport { booleanAttribute, Directive, effect, inject, input } from '@angular/core';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\n\n@Directive({\n\tselector: '[brnMenuItemCheckbox]',\n\tstandalone: true,\n\thostDirectives: [CdkMenuItemCheckbox],\n\thost: {\n\t\t'[class.checked]': 'checked()',\n\t\t'[disabled]': 'disabled()',\n\t},\n})\nexport class BrnMenuItemCheckboxDirective {\n\tprivate readonly _cdkMenuItem = inject(CdkMenuItemCheckbox);\n\tpublic readonly checked = input(this._cdkMenuItem.checked, { transform: booleanAttribute });\n\tpublic readonly disabled = input(this._cdkMenuItem.disabled, { transform: booleanAttribute });\n\tpublic readonly triggered = outputFromObservable(this._cdkMenuItem.triggered);\n\n\tconstructor() {\n\t\teffect(() => (this._cdkMenuItem.disabled = this.disabled()));\n\t\teffect(() => (this._cdkMenuItem.checked = this.checked()));\n\t}\n}\n","import { CdkMenuItemRadio } from '@angular/cdk/menu';\nimport { booleanAttribute, Directive, effect, inject, input } from '@angular/core';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\n\n@Directive({\n\tselector: '[brnMenuItemRadio]',\n\tstandalone: true,\n\thostDirectives: [CdkMenuItemRadio],\n\thost: {\n\t\t'[class.checked]': 'checked()',\n\t\t'[disabled]': 'disabled()',\n\t},\n})\nexport class BrnMenuItemRadioDirective {\n\tprivate readonly _cdkMenuItem = inject(CdkMenuItemRadio);\n\tpublic readonly checked = input(this._cdkMenuItem.checked, { transform: booleanAttribute });\n\tpublic readonly disabled = input(this._cdkMenuItem.disabled, { transform: booleanAttribute });\n\tpublic readonly triggered = outputFromObservable(this._cdkMenuItem.triggered);\n\n\tconstructor() {\n\t\teffect(() => (this._cdkMenuItem.disabled = this.disabled()));\n\t\teffect(() => (this._cdkMenuItem.checked = this.checked()));\n\t}\n}\n","import { CdkMenuItem } from '@angular/cdk/menu';\nimport { booleanAttribute, Directive, effect, inject, input } from '@angular/core';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\n\n@Directive({\n\tselector: '[brnMenuItem]',\n\tstandalone: true,\n\thostDirectives: [CdkMenuItem],\n\thost: {\n\t\t'[disabled]': 'disabled()',\n\t},\n})\nexport class BrnMenuItemDirective {\n\tprivate readonly _cdkMenuItem = inject(CdkMenuItem);\n\tpublic readonly disabled = input(this._cdkMenuItem.disabled, { transform: booleanAttribute });\n\tpublic readonly triggered = outputFromObservable(this._cdkMenuItem.triggered);\n\n\tconstructor() {\n\t\teffect(() => (this._cdkMenuItem.disabled = this.disabled()));\n\t}\n}\n","import { CdkMenuTrigger } from '@angular/cdk/menu';\nimport { Directive, effect, inject, input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BrnMenuAlign, getBrnMenuAlign } from './brn-menu-align';\n\n@Directive({\n\tselector: '[brnMenuTriggerFor]',\n\tstandalone: true,\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: CdkMenuTrigger,\n\t\t\tinputs: ['cdkMenuTriggerFor: brnMenuTriggerFor', 'cdkMenuTriggerData: brnMenuTriggerData'],\n\t\t\toutputs: ['cdkMenuOpened: brnMenuOpened', 'cdkMenuClosed: brnMenuClosed'],\n\t\t},\n\t],\n})\nexport class BrnMenuTriggerDirective {\n\tprivate readonly _cdkTrigger = inject(CdkMenuTrigger, { host: true });\n\tpublic readonly align = input<BrnMenuAlign>(undefined);\n\n\tconstructor() {\n\t\t// once the trigger opens we wait until the next tick and then grab the last position\n\t\t// used to position the menu. we store this in our trigger which the brnMenu directive has\n\t\t// access to through DI\n\t\tthis._cdkTrigger.opened.pipe(takeUntilDestroyed()).subscribe(() =>\n\t\t\tsetTimeout(\n\t\t\t\t() =>\n\t\t\t\t\t// eslint-disable-next-line\n\t\t\t\t\t((this._cdkTrigger as any)._spartanLastPosition = // eslint-disable-next-line\n\t\t\t\t\t\t(this._cdkTrigger as any).overlayRef._positionStrategy._lastPosition),\n\t\t\t),\n\t\t);\n\n\t\teffect(() => {\n\t\t\tconst align = this.align();\n\t\t\tif (!align) return;\n\t\t\tthis._cdkTrigger.menuPosition = getBrnMenuAlign(align);\n\t\t});\n\t}\n}\n","import { CdkMenu } from '@angular/cdk/menu';\nimport { Directive, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n\tselector: '[brnMenu],[brnSubMenu]',\n\tstandalone: true,\n\thost: {\n\t\t'[attr.data-state]': '_state()',\n\t\t'[attr.data-side]': '_side()',\n\t},\n\thostDirectives: [CdkMenu],\n})\nexport class BrnMenuDirective {\n\tprivate readonly _host = inject(CdkMenu);\n\n\tprotected readonly _state = signal('open');\n\tprotected readonly _side = signal('top');\n\n\tconstructor() {\n\t\tthis.setSideWithDarkMagic();\n\t\t// this is a best effort, but does not seem to work currently\n\t\t// TODO: figure out a way for us to know the host is about to be closed. might not be possible with CDK\n\t\tthis._host.closed.pipe(takeUntilDestroyed()).subscribe(() => this._state.set('closed'));\n\t}\n\n\tprivate setSideWithDarkMagic() {\n\t\t/**\n\t\t * This is an ugly workaround to at least figure out the correct side of where a submenu\n\t\t * will appear and set the attribute to the host accordingly\n\t\t *\n\t\t * First of all we take advantage of the menu stack not being aware of the root\n\t\t * object immediately after it is added. This code executes before the root element is added,\n\t\t * which means the stack is still empty and the peek method returns undefined.\n\t\t */\n\t\tconst isRoot = this._host.menuStack.peek() === undefined;\n\t\tsetTimeout(() => {\n\t\t\t// our menu trigger directive leaves the last position used for use immediately after opening\n\t\t\t// we can access it here and determine the correct side.\n\t\t\t// eslint-disable-next-line\n\t\t\tconst ps = (this._host as any)._parentTrigger._spartanLastPosition;\n\t\t\tconst side = isRoot ? ps.originY : ps.originX === 'end' ? 'right' : 'left';\n\t\t\tthis._side.set(side);\n\t\t});\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { BrnContextMenuTriggerDirective } from './lib/brn-context-menu-trigger.directive';\nimport { BrnMenuBarDirective } from './lib/brn-menu-bar.directive';\nimport { BrnMenuGroupDirective } from './lib/brn-menu-group.directive';\nimport { BrnMenuItemCheckboxDirective } from './lib/brn-menu-item-checkbox.directive';\nimport { BrnMenuItemRadioDirective } from './lib/brn-menu-item-radio.directive';\nimport { BrnMenuItemDirective } from './lib/brn-menu-item.directive';\nimport { BrnMenuTriggerDirective } from './lib/brn-menu-trigger.directive';\nimport { BrnMenuDirective } from './lib/brn-menu.directive';\n\nexport * from './lib/brn-context-menu-trigger.directive';\nexport * from './lib/brn-menu-bar.directive';\nexport * from './lib/brn-menu-group.directive';\nexport * from './lib/brn-menu-item-checkbox.directive';\nexport * from './lib/brn-menu-item-radio.directive';\nexport * from './lib/brn-menu-item.directive';\nexport * from './lib/brn-menu-trigger.directive';\nexport * from './lib/brn-menu.directive';\n\nexport const BrnMenuItemImports = [\n\tBrnMenuGroupDirective,\n\tBrnMenuItemDirective,\n\tBrnMenuItemRadioDirective,\n\tBrnMenuItemCheckboxDirective,\n] as const;\nexport const BrnMenuImports = [BrnMenuTriggerDirective, BrnMenuDirective, ...BrnMenuItemImports] as const;\nexport const BrnMenuBarImports = [...BrnMenuImports, BrnMenuBarDirective] as const;\nexport const BrnContextMenuImports = [...BrnMenuImports, BrnContextMenuTriggerDirective] as const;\n\n@NgModule({\n\timports: [...BrnMenuItemImports],\n\texports: [...BrnMenuItemImports],\n})\nexport class BrnMenuItemModule {}\n\n@NgModule({\n\timports: [...BrnMenuImports],\n\texports: [...BrnMenuImports],\n})\nexport class BrnMenuModule {}\n\n@NgModule({\n\timports: [...BrnMenuBarImports],\n\texports: [...BrnMenuBarImports],\n})\nexport class BrnMenuBarModule {}\n\n@NgModule({\n\timports: [...BrnContextMenuImports],\n\texports: [...BrnContextMenuImports],\n})\nexport class BrnContextMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spartan-ng-brain-menu.mjs","sources":["../../../../libs/brain/menu/src/lib/brn-menu-align.ts","../../../../libs/brain/menu/src/lib/brn-context-menu-trigger.directive.ts","../../../../libs/brain/menu/src/lib/brn-menu-bar.directive.ts","../../../../libs/brain/menu/src/lib/brn-menu-group.directive.ts","../../../../libs/brain/menu/src/lib/brn-menu-item-checkbox.directive.ts","../../../../libs/brain/menu/src/lib/brn-menu-item-radio.directive.ts","../../../../libs/brain/menu/src/lib/brn-menu-item.directive.ts","../../../../libs/brain/menu/src/lib/brn-menu-trigger.directive.ts","../../../../libs/brain/menu/src/lib/brn-menu.directive.ts","../../../../libs/brain/menu/src/index.ts","../../../../libs/brain/menu/src/spartan-ng-brain-menu.ts"],"sourcesContent":["import { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport type BrnMenuAlign = 'start' | 'center' | 'end' | undefined;\nexport const getBrnMenuAlign = (align: Exclude<BrnMenuAlign, undefined>): ConnectedPosition[] => [\n\t{\n\t\toriginX: align,\n\t\toriginY: 'bottom',\n\t\toverlayX: align,\n\t\toverlayY: 'top',\n\t},\n\t{\n\t\toriginX: align,\n\t\toriginY: 'top',\n\t\toverlayX: align,\n\t\toverlayY: 'bottom',\n\t},\n];\n","import { CdkContextMenuTrigger } from '@angular/cdk/menu';\nimport { Directive, effect, inject, input, type TemplateRef } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BrnMenuAlign, getBrnMenuAlign } from './brn-menu-align';\n\n@Directive({\n\tselector: '[brnCtxMenuTriggerFor]',\n\tstandalone: true,\n\thostDirectives: [CdkContextMenuTrigger],\n})\nexport class BrnContextMenuTriggerDirective {\n\tprivate readonly _cdkTrigger = inject(CdkContextMenuTrigger, { host: true });\n\tpublic brnCtxMenuTriggerFor = input<TemplateRef<unknown> | null>(null);\n\tpublic brnCtxMenuTriggerData = input<unknown>(undefined);\n\tpublic readonly align = input<BrnMenuAlign>(undefined);\n\n\tconstructor() {\n\t\t// once the trigger opens we wait until the next tick and then grab the last position\n\t\t// used to position the menu. we store this in our trigger which the brnMenu directive has\n\t\t// access to through DI\n\t\tthis._cdkTrigger.opened.pipe(takeUntilDestroyed()).subscribe(() =>\n\t\t\tsetTimeout(\n\t\t\t\t() =>\n\t\t\t\t\t// eslint-disable-next-line\n\t\t\t\t\t((this._cdkTrigger as any)._spartanLastPosition = // eslint-disable-next-line\n\t\t\t\t\t\t(this._cdkTrigger as any).overlayRef._positionStrategy._lastPosition),\n\t\t\t),\n\t\t);\n\n\t\teffect(() => (this._cdkTrigger.menuTemplateRef = this.brnCtxMenuTriggerFor()));\n\t\teffect(() => (this._cdkTrigger.menuData = this.brnCtxMenuTriggerData()));\n\t\teffect(() => {\n\t\t\tconst align = this.align();\n\t\t\tif (!align) return;\n\t\t\tthis._cdkTrigger.menuPosition = getBrnMenuAlign(align);\n\t\t});\n\t}\n}\n","import { CdkMenuBar } from '@angular/cdk/menu';\nimport { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnMenuBar]',\n\tstandalone: true,\n\thostDirectives: [CdkMenuBar],\n})\nexport class BrnMenuBarDirective {}\n","import { CdkMenuGroup } from '@angular/cdk/menu';\nimport { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnMenuGroup]',\n\tstandalone: true,\n\thostDirectives: [CdkMenuGroup],\n})\nexport class BrnMenuGroupDirective {}\n","import { CdkMenuItemCheckbox } from '@angular/cdk/menu';\nimport { booleanAttribute, Directive, effect, inject, input } from '@angular/core';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\n\n@Directive({\n\tselector: '[brnMenuItemCheckbox]',\n\tstandalone: true,\n\thostDirectives: [CdkMenuItemCheckbox],\n\thost: {\n\t\t'[class.checked]': 'checked()',\n\t\t'[disabled]': 'disabled()',\n\t},\n})\nexport class BrnMenuItemCheckboxDirective {\n\tprivate readonly _cdkMenuItem = inject(CdkMenuItemCheckbox);\n\tpublic readonly checked = input(this._cdkMenuItem.checked, { transform: booleanAttribute });\n\tpublic readonly disabled = input(this._cdkMenuItem.disabled, { transform: booleanAttribute });\n\tpublic readonly triggered = outputFromObservable(this._cdkMenuItem.triggered);\n\n\tconstructor() {\n\t\teffect(() => (this._cdkMenuItem.disabled = this.disabled()));\n\t\teffect(() => (this._cdkMenuItem.checked = this.checked()));\n\t}\n}\n","import { CdkMenuItemRadio } from '@angular/cdk/menu';\nimport { booleanAttribute, Directive, effect, inject, input } from '@angular/core';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\n\n@Directive({\n\tselector: '[brnMenuItemRadio]',\n\tstandalone: true,\n\thostDirectives: [CdkMenuItemRadio],\n\thost: {\n\t\t'[class.checked]': 'checked()',\n\t\t'[disabled]': 'disabled()',\n\t},\n})\nexport class BrnMenuItemRadioDirective {\n\tprivate readonly _cdkMenuItem = inject(CdkMenuItemRadio);\n\tpublic readonly checked = input(this._cdkMenuItem.checked, { transform: booleanAttribute });\n\tpublic readonly disabled = input(this._cdkMenuItem.disabled, { transform: booleanAttribute });\n\tpublic readonly triggered = outputFromObservable(this._cdkMenuItem.triggered);\n\n\tconstructor() {\n\t\teffect(() => (this._cdkMenuItem.disabled = this.disabled()));\n\t\teffect(() => (this._cdkMenuItem.checked = this.checked()));\n\t}\n}\n","import { CdkMenuItem } from '@angular/cdk/menu';\nimport { booleanAttribute, Directive, effect, inject, input } from '@angular/core';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\n\n@Directive({\n\tselector: '[brnMenuItem]',\n\tstandalone: true,\n\thostDirectives: [CdkMenuItem],\n\thost: {\n\t\t'[disabled]': 'disabled()',\n\t},\n})\nexport class BrnMenuItemDirective {\n\tprivate readonly _cdkMenuItem = inject(CdkMenuItem);\n\tpublic readonly disabled = input(this._cdkMenuItem.disabled, { transform: booleanAttribute });\n\tpublic readonly triggered = outputFromObservable(this._cdkMenuItem.triggered);\n\n\tconstructor() {\n\t\teffect(() => (this._cdkMenuItem.disabled = this.disabled()));\n\t}\n}\n","import { CdkMenuTrigger } from '@angular/cdk/menu';\nimport { Directive, effect, inject, input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BrnMenuAlign, getBrnMenuAlign } from './brn-menu-align';\n\n@Directive({\n\tselector: '[brnMenuTriggerFor]',\n\tstandalone: true,\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: CdkMenuTrigger,\n\t\t\tinputs: ['cdkMenuTriggerFor: brnMenuTriggerFor', 'cdkMenuTriggerData: brnMenuTriggerData'],\n\t\t\toutputs: ['cdkMenuOpened: brnMenuOpened', 'cdkMenuClosed: brnMenuClosed'],\n\t\t},\n\t],\n})\nexport class BrnMenuTriggerDirective {\n\tprivate readonly _cdkTrigger = inject(CdkMenuTrigger, { host: true });\n\tpublic readonly align = input<BrnMenuAlign>(undefined);\n\n\tconstructor() {\n\t\t// once the trigger opens we wait until the next tick and then grab the last position\n\t\t// used to position the menu. we store this in our trigger which the brnMenu directive has\n\t\t// access to through DI\n\t\tthis._cdkTrigger.opened.pipe(takeUntilDestroyed()).subscribe(() =>\n\t\t\tsetTimeout(\n\t\t\t\t() =>\n\t\t\t\t\t// eslint-disable-next-line\n\t\t\t\t\t((this._cdkTrigger as any)._spartanLastPosition = // eslint-disable-next-line\n\t\t\t\t\t\t(this._cdkTrigger as any).overlayRef._positionStrategy._lastPosition),\n\t\t\t),\n\t\t);\n\n\t\teffect(() => {\n\t\t\tconst align = this.align();\n\t\t\tif (!align) return;\n\t\t\tthis._cdkTrigger.menuPosition = getBrnMenuAlign(align);\n\t\t});\n\t}\n}\n","import { CdkMenu } from '@angular/cdk/menu';\nimport { Directive, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n\tselector: '[brnMenu],[brnSubMenu]',\n\tstandalone: true,\n\thost: {\n\t\t'[attr.data-state]': '_state()',\n\t\t'[attr.data-side]': '_side()',\n\t},\n\thostDirectives: [CdkMenu],\n})\nexport class BrnMenuDirective {\n\tprivate readonly _host = inject(CdkMenu);\n\n\tprotected readonly _state = signal('open');\n\tprotected readonly _side = signal('top');\n\n\tconstructor() {\n\t\tthis.setSideWithDarkMagic();\n\t\t// this is a best effort, but does not seem to work currently\n\t\t// TODO: figure out a way for us to know the host is about to be closed. might not be possible with CDK\n\t\tthis._host.closed.pipe(takeUntilDestroyed()).subscribe(() => this._state.set('closed'));\n\t}\n\n\tprivate setSideWithDarkMagic() {\n\t\t/**\n\t\t * This is an ugly workaround to at least figure out the correct side of where a submenu\n\t\t * will appear and set the attribute to the host accordingly\n\t\t *\n\t\t * First of all we take advantage of the menu stack not being aware of the root\n\t\t * object immediately after it is added. This code executes before the root element is added,\n\t\t * which means the stack is still empty and the peek method returns undefined.\n\t\t */\n\t\tconst isRoot = this._host.menuStack.peek() === undefined;\n\t\tsetTimeout(() => {\n\t\t\t// our menu trigger directive leaves the last position used for use immediately after opening\n\t\t\t// we can access it here and determine the correct side.\n\t\t\t// eslint-disable-next-line\n\t\t\tconst ps = (this._host as any)._parentTrigger._spartanLastPosition;\n\t\t\tif (!ps) {\n\t\t\t\t// if we have no last position we default to the most likely option\n\t\t\t\t// I hate that we have to do this and hope we can revisit soon and improve\n\t\t\t\tthis._side.set(isRoot ? 'top' : 'left');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst side = isRoot ? ps.originY : ps.originX === 'end' ? 'right' : 'left';\n\t\t\tthis._side.set(side);\n\t\t});\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { BrnContextMenuTriggerDirective } from './lib/brn-context-menu-trigger.directive';\nimport { BrnMenuBarDirective } from './lib/brn-menu-bar.directive';\nimport { BrnMenuGroupDirective } from './lib/brn-menu-group.directive';\nimport { BrnMenuItemCheckboxDirective } from './lib/brn-menu-item-checkbox.directive';\nimport { BrnMenuItemRadioDirective } from './lib/brn-menu-item-radio.directive';\nimport { BrnMenuItemDirective } from './lib/brn-menu-item.directive';\nimport { BrnMenuTriggerDirective } from './lib/brn-menu-trigger.directive';\nimport { BrnMenuDirective } from './lib/brn-menu.directive';\n\nexport * from './lib/brn-context-menu-trigger.directive';\nexport * from './lib/brn-menu-bar.directive';\nexport * from './lib/brn-menu-group.directive';\nexport * from './lib/brn-menu-item-checkbox.directive';\nexport * from './lib/brn-menu-item-radio.directive';\nexport * from './lib/brn-menu-item.directive';\nexport * from './lib/brn-menu-trigger.directive';\nexport * from './lib/brn-menu.directive';\n\nexport const BrnMenuItemImports = [\n\tBrnMenuGroupDirective,\n\tBrnMenuItemDirective,\n\tBrnMenuItemRadioDirective,\n\tBrnMenuItemCheckboxDirective,\n] as const;\nexport const BrnMenuImports = [BrnMenuTriggerDirective, BrnMenuDirective, ...BrnMenuItemImports] as const;\nexport const BrnMenuBarImports = [...BrnMenuImports, BrnMenuBarDirective] as const;\nexport const BrnContextMenuImports = [...BrnMenuImports, BrnContextMenuTriggerDirective] as const;\n\n@NgModule({\n\timports: [...BrnMenuItemImports],\n\texports: [...BrnMenuItemImports],\n})\nexport class BrnMenuItemModule {}\n\n@NgModule({\n\timports: [...BrnMenuImports],\n\texports: [...BrnMenuImports],\n})\nexport class BrnMenuModule {}\n\n@NgModule({\n\timports: [...BrnMenuBarImports],\n\texports: [...BrnMenuBarImports],\n})\nexport class BrnMenuBarModule {}\n\n@NgModule({\n\timports: [...BrnContextMenuImports],\n\texports: [...BrnContextMenuImports],\n})\nexport class BrnContextMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -27,10 +27,7 @@ class BrnRadioComponent {
27
27
  /**
28
28
  * Whether the radio button is disabled.
29
29
  */
30
- disabled = input(false, {
31
- transform: booleanAttribute,
32
- alias: 'disabled',
33
- });
30
+ disabled = input(false, { transform: booleanAttribute });
34
31
  /**
35
32
  * Whether the radio button is disabled or the radio group is disabled.
36
33
  */
@@ -52,7 +49,7 @@ class BrnRadioComponent {
52
49
  /**
53
50
  * The unique ID for the radio button input. If none is supplied, it will be auto-generated.
54
51
  */
55
- id = input(`brn-radio-${++BrnRadioComponent._nextUniqueId}`);
52
+ id = input(undefined);
56
53
  ariaLabel = input(undefined, { alias: 'aria-label' });
57
54
  ariaLabelledby = input(undefined, { alias: 'aria-labelledby' });
58
55
  ariaDescribedby = input(undefined, { alias: 'aria-describedby' });
@@ -70,7 +67,8 @@ class BrnRadioComponent {
70
67
  * Event emitted when the checked state of this radio button changes.
71
68
  */
72
69
  change = output();
73
- inputId = computed(() => `${this.id()}-input`);
70
+ hostId = computed(() => this.id() ? this.id() : `brn-radio-${++BrnRadioComponent._nextUniqueId}`);
71
+ inputId = computed(() => `${this.hostId()}-input`);
74
72
  inputElement = viewChild.required('input');
75
73
  constructor() {
76
74
  this._focusMonitor.monitor(this._elementRef, true);
@@ -112,8 +110,12 @@ class BrnRadioComponent {
112
110
  }
113
111
  }
114
112
  /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: BrnRadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
115
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.5", type: BrnRadioComponent, isStandalone: true, selector: "brn-radio", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedby: { classPropertyName: "ariaDescribedby", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { change: "change" }, host: { listeners: { "focus": "inputElement().nativeElement.focus()" }, properties: { "attr.id": "id()", "class.brn-radio-checked": "checked()", "class.brn-radio-disabled": "disabledState()", "attr.data-checked": "checked()", "attr.data-disabled": "disabledState()", "attr.data-value": "value()", "attr.tabindex": "null", "attr.aria-label": "null", "attr.aria-labelledby": "null", "attr.aria-describedby": "null" }, classAttribute: "brn-radio" }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true, isSignal: true }], exportAs: ["brnRadio"], ngImport: i0, template: `
116
- <div style="display: flex; height: fit-content; width: fit-content" (click)="onTouchTargetClick($event)">
113
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.5", type: BrnRadioComponent, isStandalone: true, selector: "brn-radio", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedby: { classPropertyName: "ariaDescribedby", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { change: "change" }, host: { listeners: { "focus": "inputElement().nativeElement.focus()" }, properties: { "attr.id": "hostId()", "class.brn-radio-checked": "checked()", "class.brn-radio-disabled": "disabledState()", "attr.data-checked": "checked()", "attr.data-disabled": "disabledState()", "attr.data-value": "value()", "attr.tabindex": "null", "attr.aria-label": "null", "attr.aria-labelledby": "null", "attr.aria-describedby": "null" }, classAttribute: "brn-radio" }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true, isSignal: true }], exportAs: ["brnRadio"], ngImport: i0, template: `
114
+ <div
115
+ data-slot="indicator"
116
+ style="display: flex; height: fit-content; width: fit-content"
117
+ (click)="onTouchTargetClick($event)"
118
+ >
117
119
  <ng-content select="[target],[indicator]" />
118
120
  </div>
119
121
  <input
@@ -133,7 +135,7 @@ class BrnRadioComponent {
133
135
  (change)="onInputInteraction($event)"
134
136
  (click)="onInputClick($event)"
135
137
  />
136
- <label style="display: flex; height: fit-content; width: fit-content" [for]="inputId()">
138
+ <label [for]="inputId()" data-slot="label">
137
139
  <ng-content />
138
140
  </label>
139
141
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
@@ -145,7 +147,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
145
147
  standalone: true,
146
148
  host: {
147
149
  class: 'brn-radio',
148
- '[attr.id]': 'id()',
150
+ '[attr.id]': 'hostId()',
149
151
  '[class.brn-radio-checked]': 'checked()',
150
152
  '[class.brn-radio-disabled]': 'disabledState()',
151
153
  '[attr.data-checked]': 'checked()',
@@ -165,7 +167,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
165
167
  encapsulation: ViewEncapsulation.None,
166
168
  changeDetection: ChangeDetectionStrategy.OnPush,
167
169
  template: `
168
- <div style="display: flex; height: fit-content; width: fit-content" (click)="onTouchTargetClick($event)">
170
+ <div
171
+ data-slot="indicator"
172
+ style="display: flex; height: fit-content; width: fit-content"
173
+ (click)="onTouchTargetClick($event)"
174
+ >
169
175
  <ng-content select="[target],[indicator]" />
170
176
  </div>
171
177
  <input
@@ -185,7 +191,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
185
191
  (change)="onInputInteraction($event)"
186
192
  (click)="onInputClick($event)"
187
193
  />
188
- <label style="display: flex; height: fit-content; width: fit-content" [for]="inputId()">
194
+ <label [for]="inputId()" data-slot="label">
189
195
  <ng-content />
190
196
  </label>
191
197
  `,
@@ -1 +1 @@
1
- {"version":3,"file":"spartan-ng-brain-radio-group.mjs","sources":["../../../../libs/brain/radio-group/src/lib/brn-radio-group.token.ts","../../../../libs/brain/radio-group/src/lib/brn-radio.component.ts","../../../../libs/brain/radio-group/src/lib/brn-radio-group.directive.ts","../../../../libs/brain/radio-group/src/index.ts","../../../../libs/brain/radio-group/src/spartan-ng-brain-radio-group.ts"],"sourcesContent":["import { ExistingProvider, inject, InjectionToken, Type } from '@angular/core';\nimport type { BrnRadioGroupDirective } from './brn-radio-group.directive';\n\nconst BrnRadioGroupToken = new InjectionToken<BrnRadioGroupDirective<unknown>>('BrnRadioGroupToken');\n\nexport function provideBrnRadioGroupToken<T>(directive: Type<BrnRadioGroupDirective<T>>): ExistingProvider {\n\treturn { provide: BrnRadioGroupToken, useExisting: directive };\n}\n\nexport function injectBrnRadioGroup<T = unknown>(): BrnRadioGroupDirective<T> {\n\treturn inject(BrnRadioGroupToken) as BrnRadioGroupDirective<T>;\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\ttype OnDestroy,\n\tViewEncapsulation,\n\tbooleanAttribute,\n\tcomputed,\n\tinject,\n\tinput,\n\toutput,\n\tviewChild,\n} from '@angular/core';\nimport { injectBrnRadioGroup } from './brn-radio-group.token';\n\nexport class BrnRadioChange<T> {\n\tconstructor(\n\t\tpublic source: BrnRadioComponent<T>,\n\t\tpublic value: T,\n\t) {}\n}\n\n@Component({\n\tselector: 'brn-radio',\n\tstandalone: true,\n\thost: {\n\t\tclass: 'brn-radio',\n\t\t'[attr.id]': 'id()',\n\t\t'[class.brn-radio-checked]': 'checked()',\n\t\t'[class.brn-radio-disabled]': 'disabledState()',\n\t\t'[attr.data-checked]': 'checked()',\n\t\t'[attr.data-disabled]': 'disabledState()',\n\t\t'[attr.data-value]': 'value()',\n\t\t// Needs to be removed since it causes some a11y issues (see #21266).\n\t\t'[attr.tabindex]': 'null',\n\t\t'[attr.aria-label]': 'null',\n\t\t'[attr.aria-labelledby]': 'null',\n\t\t'[attr.aria-describedby]': 'null',\n\t\t// Note: under normal conditions focus shouldn't land on this element, however it may be\n\t\t// programmatically set, for example inside of a focus trap, in this case we want to forward\n\t\t// the focus to the native element.\n\t\t'(focus)': 'inputElement().nativeElement.focus()',\n\t},\n\texportAs: 'brnRadio',\n\tencapsulation: ViewEncapsulation.None,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplate: `\n\t\t<div style=\"display: flex; height: fit-content; width: fit-content\" (click)=\"onTouchTargetClick($event)\">\n\t\t\t<ng-content select=\"[target],[indicator]\" />\n\t\t</div>\n\t\t<input\n\t\t\t#input\n\t\t\tstyle=\"position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border-width: 0;\"\n\t\t\ttype=\"radio\"\n\t\t\t[id]=\"inputId()\"\n\t\t\t[checked]=\"checked()\"\n\t\t\t[disabled]=\"disabledState()\"\n\t\t\t[tabIndex]=\"tabIndex()\"\n\t\t\t[attr.name]=\"radioGroup.name()\"\n\t\t\t[attr.value]=\"value()\"\n\t\t\t[required]=\"required()\"\n\t\t\t[attr.aria-label]=\"ariaLabel()\"\n\t\t\t[attr.aria-labelledby]=\"ariaLabelledby()\"\n\t\t\t[attr.aria-describedby]=\"ariaDescribedby()\"\n\t\t\t(change)=\"onInputInteraction($event)\"\n\t\t\t(click)=\"onInputClick($event)\"\n\t\t/>\n\t\t<label style=\"display: flex; height: fit-content; width: fit-content\" [for]=\"inputId()\">\n\t\t\t<ng-content />\n\t\t</label>\n\t`,\n})\nexport class BrnRadioComponent<T = unknown> implements OnDestroy {\n\tprivate static _nextUniqueId = 0;\n\tprivate readonly _focusMonitor = inject(FocusMonitor);\n\tprivate readonly _elementRef = inject(ElementRef);\n\tprotected readonly radioGroup = injectBrnRadioGroup<T>();\n\n\t/**\n\t * Whether the radio button is disabled.\n\t */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, {\n\t\ttransform: booleanAttribute,\n\t\talias: 'disabled',\n\t});\n\n\t/**\n\t * Whether the radio button is disabled or the radio group is disabled.\n\t */\n\tprotected readonly disabledState = computed(() => this.disabled() || (this.radioGroup && this.radioGroup.disabled()));\n\n\t/**\n\t * Whether the radio button is checked.\n\t */\n\tprotected readonly checked = computed(() => this.radioGroup.value() === this.value());\n\n\tprotected readonly tabIndex = computed(() => {\n\t\tconst disabled = this.disabledState();\n\t\tconst checked = this.checked();\n\t\tconst hasSelectedRadio = this.radioGroup.value() !== undefined;\n\t\tconst isFirstRadio = this.radioGroup.radioButtons()[0] === this;\n\n\t\tif (disabled || (!checked && (hasSelectedRadio || !isFirstRadio))) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn 0;\n\t});\n\n\t/**\n\t * The unique ID for the radio button input. If none is supplied, it will be auto-generated.\n\t */\n\tpublic readonly id = input(`brn-radio-${++BrnRadioComponent._nextUniqueId}`);\n\n\tpublic readonly ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n\n\tpublic readonly ariaLabelledby = input<string | undefined>(undefined, { alias: 'aria-labelledby' });\n\n\tpublic readonly ariaDescribedby = input<string | undefined>(undefined, { alias: 'aria-describedby' });\n\n\t/**\n\t * The value this radio button represents.\n\t */\n\tpublic readonly value = input.required<T>();\n\n\t/**\n\t * Whether the radio button is required.\n\t */\n\tpublic readonly required = input<boolean, BooleanInput>(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/**\n\t * Event emitted when the checked state of this radio button changes.\n\t */\n\tpublic readonly change = output<BrnRadioChange<T>>();\n\n\tprotected readonly inputId = computed(() => `${this.id()}-input`);\n\n\tprotected readonly inputElement = viewChild.required<ElementRef<HTMLInputElement>>('input');\n\n\tconstructor() {\n\t\tthis._focusMonitor.monitor(this._elementRef, true);\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis._focusMonitor.stopMonitoring(this._elementRef);\n\t}\n\n\t/** Dispatch change event with current value. */\n\tprivate emitChangeEvent(): void {\n\t\tthis.change.emit(new BrnRadioChange(this, this.value()));\n\t}\n\n\tprotected onInputClick(event: Event): void {\n\t\t// We have to stop propagation for click events on the visual hidden input element.\n\t\t// By default, when a user clicks on a label element, a generated click event will be\n\t\t// dispatched on the associated input element. Since we are using a label element as our\n\t\t// root container, the click event on the `radio-button` will be executed twice.\n\t\t// The real click event will bubble up, and the generated click event also tries to bubble up.\n\t\t// This will lead to multiple click events.\n\t\t// Preventing bubbling for the second event will solve that issue.\n\t\tevent.stopPropagation();\n\t}\n\n\tprotected onInputInteraction(event: Event): void {\n\t\t// We always have to stop propagation on the change event.\n\t\t// Otherwise the change event, from the input element, will bubble up and\n\t\t// emit its event object to the `change` output.\n\t\tevent.stopPropagation();\n\n\t\tif (!this.checked() && !this.disabledState()) {\n\t\t\tthis.emitChangeEvent();\n\t\t\tthis.radioGroup.select(this, this.value());\n\t\t}\n\t}\n\n\t/** Triggered when the user clicks on the touch target. */\n\tprotected onTouchTargetClick(event: Event): void {\n\t\tthis.onInputInteraction(event);\n\n\t\tif (!this.disabledState()) {\n\t\t\t// Normally the input should be focused already, but if the click\n\t\t\t// comes from the touch target, then we might have to focus it ourselves.\n\t\t\tthis.inputElement().nativeElement.focus();\n\t\t}\n\t}\n}\n","/* eslint-disable @typescript-eslint/no-empty-function */\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport {\n\tbooleanAttribute,\n\tcomputed,\n\tcontentChildren,\n\tDirective,\n\tforwardRef,\n\tinput,\n\tmodel,\n\toutput,\n\tsignal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';\nimport { provideBrnRadioGroupToken } from './brn-radio-group.token';\nimport { BrnRadioChange, BrnRadioComponent } from './brn-radio.component';\n\nexport const BRN_RADIO_GROUP_CONTROL_VALUE_ACCESSOR = {\n\tprovide: NG_VALUE_ACCESSOR,\n\tuseExisting: forwardRef(() => BrnRadioGroupDirective),\n\tmulti: true,\n};\n\n@Directive({\n\tselector: '[brnRadioGroup]',\n\tstandalone: true,\n\tproviders: [BRN_RADIO_GROUP_CONTROL_VALUE_ACCESSOR, provideBrnRadioGroupToken(BrnRadioGroupDirective)],\n\thost: {\n\t\trole: 'radiogroup',\n\t\t'[dir]': 'direction()',\n\t\t'(focusout)': 'onTouched()',\n\t},\n})\nexport class BrnRadioGroupDirective<T = unknown> implements ControlValueAccessor {\n\tprivate static _nextUniqueId = 0;\n\n\tprotected onChange: ChangeFn<T> = () => {};\n\n\tprotected onTouched: TouchFn = () => {};\n\n\tpublic readonly name = input(`brn-radio-group-${BrnRadioGroupDirective._nextUniqueId++}`);\n\n\t/**\n\t * The value of the selected radio button.\n\t */\n\tpublic readonly value = model<T>();\n\n\t/**\n\t * Whether the radio group is disabled.\n\t */\n\tpublic disabled = input<boolean, BooleanInput>(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/**\n\t * Whether the radio group should be required.\n\t */\n\tpublic readonly required = input<boolean, BooleanInput>(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/**\n\t * The direction of the radio group.\n\t */\n\tpublic readonly direction = input<'ltr' | 'rtl' | null>('ltr');\n\n\t/**\n\t * Event emitted when the group value changes.\n\t */\n\tpublic readonly change = output<BrnRadioChange<T>>();\n\n\t/**\n\t * The internal disabled state of the radio group. This could be switched to a linkedSignal when we can drop v18 support.\n\t * @internal\n\t */\n\tpublic readonly disabledState = computed(() => signal(this.disabled()));\n\n\t/**\n\t * Access the radio buttons within the group.\n\t * @internal\n\t */\n\tpublic readonly radioButtons = contentChildren(BrnRadioComponent, { descendants: true });\n\n\twriteValue(value: T): void {\n\t\tthis.value.set(value);\n\t}\n\n\tregisterOnChange(fn: ChangeFn<T>): void {\n\t\tthis.onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: TouchFn): void {\n\t\tthis.onTouched = fn;\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.disabledState().set(isDisabled);\n\t}\n\n\t/**\n\t * Select a radio button.\n\t * @internal\n\t */\n\tselect(radioButton: BrnRadioComponent<T>, value: T): void {\n\t\tif (this.value() === value) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.value.set(value);\n\t\tthis.onChange(value);\n\t\tthis.change.emit(new BrnRadioChange<T>(radioButton, value));\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { BrnRadioGroupDirective } from './lib/brn-radio-group.directive';\nimport { BrnRadioComponent } from './lib/brn-radio.component';\n\nexport * from './lib/brn-radio-group.directive';\nexport * from './lib/brn-radio.component';\n\nexport const BrnRadioGroupImports = [BrnRadioGroupDirective, BrnRadioComponent] as const;\n\n@NgModule({\n\timports: [...BrnRadioGroupImports],\n\texports: [...BrnRadioGroupImports],\n})\nexport class BrnRadioGroupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spartan-ng-brain-radio-group.mjs","sources":["../../../../libs/brain/radio-group/src/lib/brn-radio-group.token.ts","../../../../libs/brain/radio-group/src/lib/brn-radio.component.ts","../../../../libs/brain/radio-group/src/lib/brn-radio-group.directive.ts","../../../../libs/brain/radio-group/src/index.ts","../../../../libs/brain/radio-group/src/spartan-ng-brain-radio-group.ts"],"sourcesContent":["import { ExistingProvider, inject, InjectionToken, Type } from '@angular/core';\nimport type { BrnRadioGroupDirective } from './brn-radio-group.directive';\n\nconst BrnRadioGroupToken = new InjectionToken<BrnRadioGroupDirective<unknown>>('BrnRadioGroupToken');\n\nexport function provideBrnRadioGroupToken<T>(directive: Type<BrnRadioGroupDirective<T>>): ExistingProvider {\n\treturn { provide: BrnRadioGroupToken, useExisting: directive };\n}\n\nexport function injectBrnRadioGroup<T = unknown>(): BrnRadioGroupDirective<T> {\n\treturn inject(BrnRadioGroupToken) as BrnRadioGroupDirective<T>;\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\ttype OnDestroy,\n\tViewEncapsulation,\n\tbooleanAttribute,\n\tcomputed,\n\tinject,\n\tinput,\n\toutput,\n\tviewChild,\n} from '@angular/core';\nimport { injectBrnRadioGroup } from './brn-radio-group.token';\n\nexport class BrnRadioChange<T> {\n\tconstructor(\n\t\tpublic source: BrnRadioComponent<T>,\n\t\tpublic value: T,\n\t) {}\n}\n\n@Component({\n\tselector: 'brn-radio',\n\tstandalone: true,\n\thost: {\n\t\tclass: 'brn-radio',\n\t\t'[attr.id]': 'hostId()',\n\t\t'[class.brn-radio-checked]': 'checked()',\n\t\t'[class.brn-radio-disabled]': 'disabledState()',\n\t\t'[attr.data-checked]': 'checked()',\n\t\t'[attr.data-disabled]': 'disabledState()',\n\t\t'[attr.data-value]': 'value()',\n\t\t// Needs to be removed since it causes some a11y issues (see #21266).\n\t\t'[attr.tabindex]': 'null',\n\t\t'[attr.aria-label]': 'null',\n\t\t'[attr.aria-labelledby]': 'null',\n\t\t'[attr.aria-describedby]': 'null',\n\t\t// Note: under normal conditions focus shouldn't land on this element, however it may be\n\t\t// programmatically set, for example inside of a focus trap, in this case we want to forward\n\t\t// the focus to the native element.\n\t\t'(focus)': 'inputElement().nativeElement.focus()',\n\t},\n\texportAs: 'brnRadio',\n\tencapsulation: ViewEncapsulation.None,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplate: `\n\t\t<div\n\t\t\tdata-slot=\"indicator\"\n\t\t\tstyle=\"display: flex; height: fit-content; width: fit-content\"\n\t\t\t(click)=\"onTouchTargetClick($event)\"\n\t\t>\n\t\t\t<ng-content select=\"[target],[indicator]\" />\n\t\t</div>\n\t\t<input\n\t\t\t#input\n\t\t\tstyle=\"position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border-width: 0;\"\n\t\t\ttype=\"radio\"\n\t\t\t[id]=\"inputId()\"\n\t\t\t[checked]=\"checked()\"\n\t\t\t[disabled]=\"disabledState()\"\n\t\t\t[tabIndex]=\"tabIndex()\"\n\t\t\t[attr.name]=\"radioGroup.name()\"\n\t\t\t[attr.value]=\"value()\"\n\t\t\t[required]=\"required()\"\n\t\t\t[attr.aria-label]=\"ariaLabel()\"\n\t\t\t[attr.aria-labelledby]=\"ariaLabelledby()\"\n\t\t\t[attr.aria-describedby]=\"ariaDescribedby()\"\n\t\t\t(change)=\"onInputInteraction($event)\"\n\t\t\t(click)=\"onInputClick($event)\"\n\t\t/>\n\t\t<label [for]=\"inputId()\" data-slot=\"label\">\n\t\t\t<ng-content />\n\t\t</label>\n\t`,\n})\nexport class BrnRadioComponent<T = unknown> implements OnDestroy {\n\tprivate static _nextUniqueId = 0;\n\tprivate readonly _focusMonitor = inject(FocusMonitor);\n\tprivate readonly _elementRef = inject(ElementRef);\n\tprotected readonly radioGroup = injectBrnRadioGroup<T>();\n\n\t/**\n\t * Whether the radio button is disabled.\n\t */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\t/**\n\t * Whether the radio button is disabled or the radio group is disabled.\n\t */\n\tprotected readonly disabledState = computed(() => this.disabled() || (this.radioGroup && this.radioGroup.disabled()));\n\n\t/**\n\t * Whether the radio button is checked.\n\t */\n\tprotected readonly checked = computed(() => this.radioGroup.value() === this.value());\n\n\tprotected readonly tabIndex = computed(() => {\n\t\tconst disabled = this.disabledState();\n\t\tconst checked = this.checked();\n\t\tconst hasSelectedRadio = this.radioGroup.value() !== undefined;\n\t\tconst isFirstRadio = this.radioGroup.radioButtons()[0] === this;\n\n\t\tif (disabled || (!checked && (hasSelectedRadio || !isFirstRadio))) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn 0;\n\t});\n\n\t/**\n\t * The unique ID for the radio button input. If none is supplied, it will be auto-generated.\n\t */\n\tpublic readonly id = input<string | undefined>(undefined);\n\n\tpublic readonly ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n\n\tpublic readonly ariaLabelledby = input<string | undefined>(undefined, { alias: 'aria-labelledby' });\n\n\tpublic readonly ariaDescribedby = input<string | undefined>(undefined, { alias: 'aria-describedby' });\n\n\t/**\n\t * The value this radio button represents.\n\t */\n\tpublic readonly value = input.required<T>();\n\n\t/**\n\t * Whether the radio button is required.\n\t */\n\tpublic readonly required = input<boolean, BooleanInput>(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/**\n\t * Event emitted when the checked state of this radio button changes.\n\t */\n\tpublic readonly change = output<BrnRadioChange<T>>();\n\n\tprotected readonly hostId = computed(() =>\n\t\tthis.id() ? this.id() : `brn-radio-${++BrnRadioComponent._nextUniqueId}`,\n\t);\n\n\tprotected readonly inputId = computed(() => `${this.hostId()}-input`);\n\n\tprotected readonly inputElement = viewChild.required<ElementRef<HTMLInputElement>>('input');\n\n\tconstructor() {\n\t\tthis._focusMonitor.monitor(this._elementRef, true);\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis._focusMonitor.stopMonitoring(this._elementRef);\n\t}\n\n\t/** Dispatch change event with current value. */\n\tprivate emitChangeEvent(): void {\n\t\tthis.change.emit(new BrnRadioChange(this, this.value()));\n\t}\n\n\tprotected onInputClick(event: Event): void {\n\t\t// We have to stop propagation for click events on the visual hidden input element.\n\t\t// By default, when a user clicks on a label element, a generated click event will be\n\t\t// dispatched on the associated input element. Since we are using a label element as our\n\t\t// root container, the click event on the `radio-button` will be executed twice.\n\t\t// The real click event will bubble up, and the generated click event also tries to bubble up.\n\t\t// This will lead to multiple click events.\n\t\t// Preventing bubbling for the second event will solve that issue.\n\t\tevent.stopPropagation();\n\t}\n\n\tprotected onInputInteraction(event: Event): void {\n\t\t// We always have to stop propagation on the change event.\n\t\t// Otherwise the change event, from the input element, will bubble up and\n\t\t// emit its event object to the `change` output.\n\t\tevent.stopPropagation();\n\n\t\tif (!this.checked() && !this.disabledState()) {\n\t\t\tthis.emitChangeEvent();\n\t\t\tthis.radioGroup.select(this, this.value());\n\t\t}\n\t}\n\n\t/** Triggered when the user clicks on the touch target. */\n\tprotected onTouchTargetClick(event: Event): void {\n\t\tthis.onInputInteraction(event);\n\n\t\tif (!this.disabledState()) {\n\t\t\t// Normally the input should be focused already, but if the click\n\t\t\t// comes from the touch target, then we might have to focus it ourselves.\n\t\t\tthis.inputElement().nativeElement.focus();\n\t\t}\n\t}\n}\n","/* eslint-disable @typescript-eslint/no-empty-function */\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport {\n\tbooleanAttribute,\n\tcomputed,\n\tcontentChildren,\n\tDirective,\n\tforwardRef,\n\tinput,\n\tmodel,\n\toutput,\n\tsignal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';\nimport { provideBrnRadioGroupToken } from './brn-radio-group.token';\nimport { BrnRadioChange, BrnRadioComponent } from './brn-radio.component';\n\nexport const BRN_RADIO_GROUP_CONTROL_VALUE_ACCESSOR = {\n\tprovide: NG_VALUE_ACCESSOR,\n\tuseExisting: forwardRef(() => BrnRadioGroupDirective),\n\tmulti: true,\n};\n\n@Directive({\n\tselector: '[brnRadioGroup]',\n\tstandalone: true,\n\tproviders: [BRN_RADIO_GROUP_CONTROL_VALUE_ACCESSOR, provideBrnRadioGroupToken(BrnRadioGroupDirective)],\n\thost: {\n\t\trole: 'radiogroup',\n\t\t'[dir]': 'direction()',\n\t\t'(focusout)': 'onTouched()',\n\t},\n})\nexport class BrnRadioGroupDirective<T = unknown> implements ControlValueAccessor {\n\tprivate static _nextUniqueId = 0;\n\n\tprotected onChange: ChangeFn<T> = () => {};\n\n\tprotected onTouched: TouchFn = () => {};\n\n\tpublic readonly name = input(`brn-radio-group-${BrnRadioGroupDirective._nextUniqueId++}`);\n\n\t/**\n\t * The value of the selected radio button.\n\t */\n\tpublic readonly value = model<T>();\n\n\t/**\n\t * Whether the radio group is disabled.\n\t */\n\tpublic disabled = input<boolean, BooleanInput>(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/**\n\t * Whether the radio group should be required.\n\t */\n\tpublic readonly required = input<boolean, BooleanInput>(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/**\n\t * The direction of the radio group.\n\t */\n\tpublic readonly direction = input<'ltr' | 'rtl' | null>('ltr');\n\n\t/**\n\t * Event emitted when the group value changes.\n\t */\n\tpublic readonly change = output<BrnRadioChange<T>>();\n\n\t/**\n\t * The internal disabled state of the radio group. This could be switched to a linkedSignal when we can drop v18 support.\n\t * @internal\n\t */\n\tpublic readonly disabledState = computed(() => signal(this.disabled()));\n\n\t/**\n\t * Access the radio buttons within the group.\n\t * @internal\n\t */\n\tpublic readonly radioButtons = contentChildren(BrnRadioComponent, { descendants: true });\n\n\twriteValue(value: T): void {\n\t\tthis.value.set(value);\n\t}\n\n\tregisterOnChange(fn: ChangeFn<T>): void {\n\t\tthis.onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: TouchFn): void {\n\t\tthis.onTouched = fn;\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.disabledState().set(isDisabled);\n\t}\n\n\t/**\n\t * Select a radio button.\n\t * @internal\n\t */\n\tselect(radioButton: BrnRadioComponent<T>, value: T): void {\n\t\tif (this.value() === value) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.value.set(value);\n\t\tthis.onChange(value);\n\t\tthis.change.emit(new BrnRadioChange<T>(radioButton, value));\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { BrnRadioGroupDirective } from './lib/brn-radio-group.directive';\nimport { BrnRadioComponent } from './lib/brn-radio.component';\n\nexport * from './lib/brn-radio-group.directive';\nexport * from './lib/brn-radio.component';\n\nexport const BrnRadioGroupImports = [BrnRadioGroupDirective, BrnRadioComponent] as const;\n\n@NgModule({\n\timports: [...BrnRadioGroupImports],\n\texports: [...BrnRadioGroupImports],\n})\nexport class BrnRadioGroupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}