@metadev/lux 0.9.0 → 0.12.0

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.
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Lux
2
2
 
3
3
  [![npm version](https://badge.fury.io/js/%40metadev%2Flux.svg)](https://badge.fury.io/js/%40metadev%2Flux)
4
- [![Build Status](https://travis-ci.org/metadevpro/lux.svg?branch=devel)](https://travis-ci.org/metadevpro/lux)
4
+ [![Build Status](https://travis-ci.com/metadevpro/lux.svg?branch=devel)](https://travis-ci.com/metadevpro/lux)
5
5
  [![Dependencies Status](https://david-dm.org/metadevpro/lux/status.svg)](https://david-dm.org/metadevpro/lux)
6
6
  [![codecov](https://codecov.io/gh/metadevpro/lux/branch/devel/graph/badge.svg)](https://codecov.io/gh/metadevpro/lux)
7
7
  [![Known Vulnerabilities](https://snyk.io//test/github/metadevpro/lux/badge.svg?targetFile=projects/lux/package.json)](https://snyk.io//test/github/metadevpro/lux?targetFile=projects/lux/package.json)
@@ -115,6 +115,7 @@
115
115
  var AutocompleteComponent = /** @class */ (function () {
116
116
  function AutocompleteComponent(cd) {
117
117
  this.cd = cd;
118
+ this.showSpinner = false;
118
119
  this.touched = false;
119
120
  this.completionList = [];
120
121
  this.showCompletion = false;
@@ -125,6 +126,11 @@
125
126
  this.label = '';
126
127
  /** If canAddNewValues, user can type items not present in the data-source. */
127
128
  this.canAddNewValues = false;
129
+ /** After cleaning the selection should the completion list remain open or closed:
130
+ * false: (default) close on filters, to clean a filter and select all.
131
+ * true: keep open (when the action most likely is to pick another one).
132
+ */
133
+ this.keepOpenAfterDelete = false;
128
134
  this.required = false;
129
135
  this.resolveLabelsFunction = undefined;
130
136
  this.populateFunction = undefined;
@@ -201,7 +207,7 @@
201
207
  // End of Validator interface
202
208
  AutocompleteComponent.prototype.clear = function () {
203
209
  this.value = null;
204
- this.toggleCompletion(true, '');
210
+ this.toggleCompletion(this.keepOpenAfterDelete, '');
205
211
  };
206
212
  AutocompleteComponent.prototype.completeLabel = function () {
207
213
  var _this = this;
@@ -211,7 +217,7 @@
211
217
  }
212
218
  else if (this.instance && this.resolveLabelsFunction) {
213
219
  this.resolveLabelsFunction(this.instance, [this.value])
214
- .pipe(operators.first())
220
+ .pipe(operators.debounceTime(1), operators.first())
215
221
  .subscribe(function (data) {
216
222
  _this.label = findLabelForId(data, _this.value) || '';
217
223
  });
@@ -384,12 +390,34 @@
384
390
  AutocompleteComponent.prototype.showCompletionList = function (text) {
385
391
  var _this = this;
386
392
  this.setSameWidth();
387
- this.computeCompletionList(text).subscribe(function (cl) {
388
- _this.completionList = cl;
389
- _this.focusItem =
390
- _this.completionList.length > 0 ? _this.completionList[0] : null;
391
- _this.showCompletion = true;
392
- });
393
+ var useSpinner = this.hasExternalDataSource();
394
+ this.spinnerVisibility(useSpinner, true);
395
+ setTimeout(function () {
396
+ // for spinner to be shown
397
+ _this.computeCompletionList(text).subscribe({
398
+ next: function (cl) {
399
+ _this.completionList = cl;
400
+ _this.focusItem =
401
+ _this.completionList.length > 0 ? _this.completionList[0] : null;
402
+ _this.showCompletion = true;
403
+ _this.spinnerVisibility(useSpinner, false);
404
+ },
405
+ error: function () {
406
+ _this.spinnerVisibility(useSpinner, false);
407
+ },
408
+ complete: function () {
409
+ _this.spinnerVisibility(useSpinner, false);
410
+ }
411
+ });
412
+ }, 1);
413
+ };
414
+ AutocompleteComponent.prototype.spinnerVisibility = function (useSpinner, value) {
415
+ if (useSpinner) {
416
+ this.showSpinner = value;
417
+ }
418
+ };
419
+ AutocompleteComponent.prototype.hasExternalDataSource = function () {
420
+ return !this.dataSource && !!this.instance && !!this.populateFunction;
393
421
  };
394
422
  AutocompleteComponent.prototype.computeCompletionList = function (text) {
395
423
  var searchText = (text || '').toLowerCase();
@@ -400,7 +428,7 @@
400
428
  return rxjs.of(decorateDataSource(ds, searchText));
401
429
  }
402
430
  else if (this.instance && this.populateFunction) {
403
- return this.populateFunction(this.instance, searchText).pipe(operators.first(), operators.map(function (ds) {
431
+ return this.populateFunction(this.instance, searchText).pipe(operators.debounceTime(1), operators.first(), operators.map(function (ds) {
404
432
  ds.filter(function (it) { return ignoreAccentsInclude(it.label, searchText); }).sort(function (a, b) { return a.label.localeCompare(b.label); });
405
433
  return decorateDataSource(ds, searchText);
406
434
  }));
@@ -415,7 +443,7 @@
415
443
  AutocompleteComponent.decorators = [
416
444
  { type: i0.Component, args: [{
417
445
  selector: 'lux-autocomplete',
418
- template: "<div class=\"lux-autocomplete\" (blur)=\"toggleCompletion(false, i0.value)\">\n <div class=\"lux-autocomplete-box\">\n <input\n #i0\n [id]=\"inputId\"\n [(ngModel)]=\"label\"\n [placeholder]=\"placeholder\"\n [attr.disabled]=\"disabled || null\"\n [attr.readonly]=\"readonly || null\"\n (keydown)=\"onKeydown($event, i0.value)\"\n (keypress)=\"onKeypress($event, i0.value)\"\n (keyup)=\"onKeyup($event, i0.value)\"\n (blur)=\"onLostFocus()\"\n (focus)=\"toggleCompletion(true, i0.value)\"\n (click)=\"toggleCompletion(true, i0.value)\"\n (resized)=\"onInputResized()\"\n (window:resize)=\"onInputResized()\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n [attr.aria-expanded]=\"showCompletion\"\n aria-haspopup=\"true\"\n attr.aria-owns=\"{{ inputId + '_list' }}\"\n [attr.aria-activedescendant]=\"selectedOption\"\n />\n <button\n *ngIf=\"!disabled && i0.value; else dropdown\"\n class=\"icon-clear\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n ></button>\n <ng-template #dropdown>\n <div\n class=\"icon-dropdown\"\n (click)=\"toggleCompletion(!showCompletion, i0.value)\"\n ></div>\n </ng-template>\n </div>\n <div\n #completeDiv\n [class.showCompletion]=\"showCompletion\"\n class=\"lux-completion-list\"\n id=\"{{ inputId + '_list' }}\"\n >\n <ul>\n <li\n *ngFor=\"let item of completionList; let index = index\"\n id=\"{{ inputId + '_' + index }}\"\n class=\"lux-completion-item\"\n [class.selected]=\"focusItem && item.key === focusItem.key\"\n (click)=\"complete(item)\"\n [attr.aria-label]=\"item.label\"\n >\n <span>{{ item.labelPrefix }}</span>\n <span class=\"bold\">{{ item.labelMatch }}</span>\n <span>{{ item.labelPostfix }}</span>\n </li>\n </ul>\n </div>\n</div>\n",
446
+ template: "<div class=\"lux-autocomplete\" (blur)=\"toggleCompletion(false, i0.value)\">\n <div class=\"lux-autocomplete-box\">\n <input\n #i0\n [id]=\"inputId\"\n [(ngModel)]=\"label\"\n [placeholder]=\"placeholder\"\n [attr.disabled]=\"disabled || null\"\n [attr.readonly]=\"readonly || null\"\n (keydown)=\"onKeydown($event, i0.value)\"\n (keypress)=\"onKeypress($event, i0.value)\"\n (keyup)=\"onKeyup($event, i0.value)\"\n (blur)=\"onLostFocus()\"\n (focus)=\"toggleCompletion(true, i0.value)\"\n (click)=\"toggleCompletion(true, i0.value)\"\n (resized)=\"onInputResized()\"\n (window:resize)=\"onInputResized()\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n [attr.aria-expanded]=\"showCompletion\"\n aria-haspopup=\"true\"\n attr.aria-owns=\"{{ inputId + '_list' }}\"\n [attr.aria-activedescendant]=\"selectedOption\"\n />\n <div *ngIf=\"canAddNewValues\" class=\"icon-suggestions\"></div>\n <div *ngIf=\"showSpinner; else noLoading\" class=\"icon-spinner\"></div>\n <ng-template #noLoading>\n <button\n *ngIf=\"!disabled && i0.value; else dropdown\"\n class=\"icon-clear\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n ></button>\n <ng-template #dropdown>\n <div\n class=\"icon-dropdown\"\n (click)=\"toggleCompletion(!showCompletion, i0.value)\"\n ></div>\n </ng-template>\n </ng-template>\n </div>\n <div\n #completeDiv\n [class.showCompletion]=\"showCompletion\"\n class=\"lux-completion-list\"\n id=\"{{ inputId + '_list' }}\"\n >\n <ul>\n <li\n *ngFor=\"let item of completionList; let index = index\"\n id=\"{{ inputId + '_' + index }}\"\n class=\"lux-completion-item\"\n [class.selected]=\"focusItem && item.key === focusItem.key\"\n (click)=\"complete(item)\"\n [attr.aria-label]=\"item.label\"\n >\n <span>{{ item.labelPrefix }}</span>\n <span class=\"bold\">{{ item.labelMatch }}</span>\n <span>{{ item.labelPostfix }}</span>\n </li>\n </ul>\n </div>\n</div>\n",
419
447
  providers: [
420
448
  {
421
449
  provide: forms.NG_VALUE_ACCESSOR,
@@ -428,7 +456,7 @@
428
456
  useExisting: i0.forwardRef(function () { return AutocompleteComponent; })
429
457
  }
430
458
  ],
431
- styles: [".lux-autocomplete .lux-autocomplete-box{display:grid;grid-template-columns:auto 1.5rem}.lux-autocomplete input{padding:.1rem 1.5rem .1rem .5rem;text-overflow:ellipsis;grid-row:1;grid-column-start:1;grid-column-end:3}.lux-autocomplete .icon-clear{grid-row:1;grid-column:2;width:1.5rem;border:none;background-color:transparent;background:url(/assets/img/filter-clear.png) no-repeat 50%;background-size:.5rem .5rem;z-index:1}.lux-autocomplete .icon-dropdown{grid-row:1;grid-column:2;width:1.5rem;height:1.3rem;border:none;background-color:transparent;background:url(/assets/img/drop-down-arrow.svg) no-repeat 50%;background-size:.5rem .5rem;z-index:1}.lux-completion-list{visibility:collapse;position:absolute;border:1px solid #ccc;margin:0;padding:0;max-height:10rem;overflow:auto;z-index:2}.lux-completion-list ul{list-style:none;margin:0;padding:0}.showCompletion{visibility:visible}.lux-completion-item{background-color:#fff;color:#000;padding:.1rem .5rem;cursor:pointer}.selected{background-color:#2e2eac;color:#fff}.disabled{background-color:#f0f0f0;color:#444}.disabled .selected{background-color:#9898ec;color:#fff}.bold{font-weight:700}"]
459
+ styles: [".lux-autocomplete .lux-autocomplete-box{display:grid;grid-template-columns:1fr -webkit-max-content;grid-template-columns:1fr max-content}.lux-autocomplete input{padding:.1rem 1.5rem .1rem .5rem;padding:var(--lux-autocomplete-input-padding, .1rem 1.5rem .1rem .5rem);text-overflow:ellipsis;grid-row:1;grid-column-start:1;grid-column-end:3}.lux-autocomplete .icon-suggestions{grid-row:1;grid-column:2;width:1.5rem;border:none;background-color:transparent;background:url(/assets/img/suggestions.svg) no-repeat center;background-size:.5rem .5rem;z-index:1;position:relative;left:-1rem}.lux-autocomplete .icon-clear{grid-row:1;grid-column:2;width:1.5rem;width:var(--lux-autocomplete-icon-width, 1.5rem);border:none;background-color:transparent;background:url(/assets/img/filter-clear.png) no-repeat center;background:var(--lux-autocomplete-icon-clear, url(/assets/img/filter-clear.png) no-repeat center);background-size:.5rem .5rem;background-size:var(--lux-autocomplete-icon-bg-size, .5rem .5rem);z-index:1}.lux-autocomplete .icon-dropdown{grid-row:1;grid-column:2;width:1.5rem;width:var(--lux-autocomplete-icon-width, 1.5rem);height:1.3rem;height:var(--lux-autocomplete-icon-height, 1.3rem);border:none;background-color:transparent;background:url(/assets/img/drop-down-arrow.svg) no-repeat center;background:var(--lux-autocomplete-icon-dropdown, url(/assets/img/drop-down-arrow.svg) no-repeat center);background-size:.5rem .5rem;background-size:var(--lux-autocomplete-icon-bg-size, .5rem .5rem);z-index:1}.lux-autocomplete .icon-spinner{grid-row:1;grid-column:2;width:1.5rem;border:none;background-color:transparent;background:url(/assets/img/spinner.svg) no-repeat center;background-size:1.2rem 1.2rem;z-index:1}.lux-completion-list{visibility:collapse;position:absolute;border:1px solid #ccc;margin:0;padding:0;max-height:10rem;overflow:auto;z-index:2}.lux-completion-list ul{list-style:none;margin:0;padding:0}.showCompletion{visibility:visible}.lux-completion-item{background-color:#fff;color:#000;padding:.1rem .5rem;cursor:pointer}.selected{background-color:#2e2eac;color:#fff}.disabled{background-color:#f0f0f0;color:#444}.disabled .selected{background-color:#9898ec;color:#fff}.bold{font-weight:bold}\n"]
432
460
  },] }
433
461
  ];
434
462
  AutocompleteComponent.ctorParameters = function () { return [
@@ -444,6 +472,7 @@
444
472
  readonly: [{ type: i0.Input }],
445
473
  label: [{ type: i0.Input }],
446
474
  canAddNewValues: [{ type: i0.Input }],
475
+ keepOpenAfterDelete: [{ type: i0.Input }],
447
476
  value: [{ type: i0.Input }],
448
477
  dataSource: [{ type: i0.Input }],
449
478
  required: [{ type: i0.Input }],
@@ -710,7 +739,7 @@
710
739
  useExisting: i0.forwardRef(function () { return AutocompleteListComponent; })
711
740
  }
712
741
  ],
713
- styles: [".new-entry{margin-left:1.5rem;display:grid;grid-template-columns:auto 1.5rem}.new-entry lux-autocomplete{grid-column:1;grid-row:1}.new-entry .add-item{grid-column:2;grid-row:1;border:none;background:url(/assets/img/create.png) no-repeat .2rem .2rem;background-size:1.1rem;height:1.4rem;width:1.4rem}.remove-item{margin-left:.5rem;border:none;background:url(/assets/img/delete.svg) no-repeat .2rem .1rem;height:1.2rem;width:1.3rem;position:relative;top:.2rem;background-size:1rem 1rem}"]
742
+ styles: [".new-entry{margin-left:1.5rem;display:grid;grid-template-columns:-webkit-max-content -webkit-max-content;grid-template-columns:max-content max-content}.new-entry lux-autocomplete{grid-column:1;grid-row:1}.new-entry .add-item{grid-column:2;grid-row:1;border:none;background:url(/assets/img/create.png) no-repeat .2rem .2rem;background:var(--lux-autocomplete-list-add-icon, url(/assets/img/create.png) no-repeat .2rem .2rem);background-size:1.1rem;background-size:var(--lux-autocomplete-list-add-icon-size, 1.1rem);height:1.4rem;height:var(--lux-autocomplete-list-add-icon-height, 1.4rem);width:1.4rem;width:var(--lux-autocomplete-list-add-icon-width, 1.4rem)}.remove-item{margin-left:.5rem;border:none;background:url(/assets/img/delete.svg) no-repeat .2rem .1rem;background:var(--lux-autocomplete-list-remove-icon, url(/assets/img/delete.svg) no-repeat .2rem .1rem);height:1.2rem;height:var(--lux-autocomplete-list-remove-icon-height, 1.2rem);width:1.3rem;width:var(--lux-autocomplete-list-remove-icon-width, 1.3rem);position:relative;top:.2rem;top:var(--lux-autocomplete-list-remove-icon-top, .2rem);background-size:1rem 1rem;background-size:var(--lux-autocomplete-list-remove-icon-size, 1rem 1rem)}\n"]
714
743
  },] }
715
744
  ];
716
745
  AutocompleteListComponent.propDecorators = {
@@ -870,7 +899,7 @@
870
899
  useExisting: i0.forwardRef(function () { return CheckboxComponent; })
871
900
  }
872
901
  ],
873
- styles: [".switch{display:flex;flex-flow:row wrap;align-items:center}label{padding-right:1.1rem}.switch-item{padding-right:.5em}.slider.round{border-radius:.7rem;width:3.1rem;height:1.4rem}.slider.round:before{border-radius:50%}.switch input{opacity:0;width:0;height:0}.slider{cursor:pointer;position:relative;top:-.7rem;background-color:#ccc;transition:.4s}.slider.on{background-color:#2196f3}.slider:before{position:absolute;content:\"\";height:1rem;width:1rem;left:.2rem;bottom:.2rem;background-color:#fff;transition:.4s}input:focus+.slider{box-shadow:0 0 1px #2196f3}input:checked+.slider:before{transform:translateX(26px)}"]
902
+ styles: [".switch{display:flex;flex-flow:row wrap;align-items:center}label{padding-right:1.1rem}.switch-item{padding-right:.5em}.slider.round{border-radius:.7rem;width:3.1rem;height:1.4rem}.slider.round:before{border-radius:50%}.switch input{opacity:0;width:0;height:0}.slider{cursor:pointer;position:relative;top:-.7rem;background-color:#ccc;transition:.4s}.slider.on{background-color:#2196f3}.slider:before{position:absolute;content:\"\";height:1rem;width:1rem;left:.2rem;bottom:.2rem;background-color:#fff;transition:.4s}.slider.on:before{transform:translate(26px)}input:focus+.slider{box-shadow:0 0 1px #2196f3}\n"]
874
903
  },] }
875
904
  ];
876
905
  CheckboxComponent.ctorParameters = function () { return []; };
@@ -891,6 +920,8 @@
891
920
  this.dirty = false;
892
921
  this.lastErrors = null;
893
922
  this._value = '';
923
+ this._pattern = undefined;
924
+ this._regexp = undefined;
894
925
  this.userErrors = {
895
926
  en: {
896
927
  required: 'Required field.',
@@ -931,6 +962,28 @@
931
962
  enumerable: false,
932
963
  configurable: true
933
964
  });
965
+ Object.defineProperty(InputComponent.prototype, "pattern", {
966
+ get: function () {
967
+ return this._pattern;
968
+ },
969
+ set: function (p) {
970
+ this._pattern = p;
971
+ if (p === undefined) {
972
+ this._regexp = undefined;
973
+ }
974
+ else {
975
+ try {
976
+ this._regexp = new RegExp(p);
977
+ }
978
+ catch (e) {
979
+ this._pattern = undefined;
980
+ this._regexp = undefined;
981
+ }
982
+ }
983
+ },
984
+ enumerable: false,
985
+ configurable: true
986
+ });
934
987
  Object.defineProperty(InputComponent.prototype, "currency", {
935
988
  get: function () {
936
989
  return this._currency;
@@ -1042,6 +1095,13 @@
1042
1095
  result = result || {};
1043
1096
  result.required = { value: value, reason: 'Required field.' };
1044
1097
  }
1098
+ if (this._regexp && hasValue(value) && !this._regexp.test(value)) {
1099
+ result = result || {};
1100
+ result.pattern = {
1101
+ value: value,
1102
+ reason: "Value must follow the pattern: " + this._pattern
1103
+ };
1104
+ }
1045
1105
  if (this.type === 'email' && hasValue(value) && !isValidEmail(value)) {
1046
1106
  result = result || {};
1047
1107
  result.email = { value: value, reason: 'Invalid email.' };
@@ -1104,6 +1164,9 @@
1104
1164
  ? this.inputId
1105
1165
  : this.type + "$" + InputComponent.idCounter++;
1106
1166
  };
1167
+ InputComponent.prototype.onLostFocus = function () {
1168
+ this.markAsTouched();
1169
+ };
1107
1170
  InputComponent.prototype.onKeyUp = function (newValue) {
1108
1171
  this.value = newValue;
1109
1172
  };
@@ -1197,7 +1260,7 @@
1197
1260
  InputComponent.decorators = [
1198
1261
  { type: i0.Component, args: [{
1199
1262
  selector: 'lux-input',
1200
- template: "<div *ngIf=\"currency && currency === 'USD'\" class=\"prefix\">\n <span>$</span>\n</div>\n<input\n #input\n *ngIf=\"type !== 'textarea'\"\n placement=\"top\"\n [id]=\"inputId\"\n [type]=\"domain\"\n [attr.value]=\"value\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.min]=\"min !== undefined && min !== null ? min.toString() : undefined\"\n [attr.max]=\"max !== undefined && max !== null ? max.toString() : undefined\"\n [attr.step]=\"\n step !== undefined && step !== null ? step.toString() : undefined\n \"\n [placeholder]=\"placeholder\"\n [ngClass]=\"className\"\n (keyup)=\"onKeyUp(input.value)\"\n (change)=\"onChangeValue(input.value)\"\n (keypress)=\"onKeyPress($event)\"\n/>\n<textarea\n #textarea\n *ngIf=\"type === 'textarea'\"\n placement=\"top\"\n [id]=\"inputId\"\n [attr.value]=\"value\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.cols]=\"cols !== undefined && cols !== null ? cols.toString() : undefined\"\n [attr.rows]=\"rows !== undefined && rows !== null ? rows.toString() : undefined\"\n [placeholder]=\"placeholder\"\n [ngClass]=\"className\"\n (keyup)=\"onKeyUp(textarea.value)\"\n (change)=\"onChangeValue(textarea.value)\"\n (keypress)=\"onKeyPress($event)\"\n></textarea>\n<div *ngIf=\"currency && currency === 'EUR'\" class=\"postfix\">\n <span>\u20AC</span>\n</div>\n<div *ngIf=\"isPercentage()\" class=\"postfix\">\n <span>%</span>\n</div>\n<div *ngIf=\"isPermillage()\" class=\"postfix\">\n <span>\u2030</span>\n</div>\n\n<div *ngIf=\"inlineErrors && lastErrors && (dirty || touched)\" class=\"alert\">\n <div *ngIf=\"lastErrors.required\">\n {{ userErrors[this.lang].required }}\n </div>\n <div *ngIf=\"lastErrors.email\">{{ userErrors[this.lang].email }}</div>\n <div *ngIf=\"lastErrors.min\">\n {{ userErrors[this.lang].min.replace('$min', lastErrors.min.min) }}\n </div>\n <div *ngIf=\"lastErrors.max\">\n {{ userErrors[this.lang].max.replace('$max', lastErrors.max.max) }}\n </div>\n</div>\n",
1263
+ template: "<div *ngIf=\"currency && currency === 'USD'\" class=\"prefix\">\n <span>$</span>\n</div>\n<input\n #input\n *ngIf=\"type !== 'textarea'\"\n placement=\"top\"\n [id]=\"inputId\"\n [type]=\"domain\"\n [attr.value]=\"value\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.min]=\"min?.toString() || undefined\"\n [attr.max]=\"max?.toString() || undefined\"\n [attr.step]=\"step?.toString() || undefined\"\n [attr.pattern]=\"pattern || undefined\"\n [placeholder]=\"placeholder\"\n [ngClass]=\"className\"\n (keyup)=\"onKeyUp(input.value)\"\n (change)=\"onChangeValue(input.value)\"\n (keypress)=\"onKeyPress($event)\"\n (blur)=\"onLostFocus()\"\n/>\n<textarea\n #textarea\n *ngIf=\"type === 'textarea'\"\n placement=\"top\"\n [id]=\"inputId\"\n [attr.value]=\"value\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.cols]=\"cols?.toString() || undefined\"\n [attr.rows]=\"rows?.toString() || undefined\"\n [placeholder]=\"placeholder\"\n [ngClass]=\"className\"\n (keyup)=\"onKeyUp(textarea.value)\"\n (change)=\"onChangeValue(textarea.value)\"\n (keypress)=\"onKeyPress($event)\"\n (blur)=\"onLostFocus()\"\n></textarea>\n<div *ngIf=\"currency && currency === 'EUR'\" class=\"postfix\">\n <span>\u20AC</span>\n</div>\n<div *ngIf=\"isPercentage()\" class=\"postfix\">\n <span>%</span>\n</div>\n<div *ngIf=\"isPermillage()\" class=\"postfix\">\n <span>\u2030</span>\n</div>\n\n<div *ngIf=\"inlineErrors && lastErrors && (dirty || touched)\" class=\"alert\">\n <div *ngIf=\"lastErrors.required\">\n {{ userErrors[this.lang].required }}\n </div>\n <div *ngIf=\"lastErrors.email\">{{ userErrors[this.lang].email }}</div>\n <div *ngIf=\"lastErrors.min\">\n {{ userErrors[this.lang].min.replace('$min', lastErrors.min.min) }}\n </div>\n <div *ngIf=\"lastErrors.max\">\n {{ userErrors[this.lang].max.replace('$max', lastErrors.max.max) }}\n </div>\n</div>\n",
1201
1264
  providers: [
1202
1265
  {
1203
1266
  provide: forms.NG_VALUE_ACCESSOR,
@@ -1210,7 +1273,7 @@
1210
1273
  useExisting: i0.forwardRef(function () { return InputComponent; })
1211
1274
  }
1212
1275
  ],
1213
- styles: [":host{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:20rem}.alert{padding:.2rem 2rem;background:#fe2e2e;color:#fff;font-family:Consolas,monospace;width:45%;margin-right:1rem;display:inline-block}.postfix,.prefix,.symbol{display:inline-block;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.prefix{border-top-right-radius:0;border-bottom-right-radius:0}.postfix{border-top-left-radius:0;border-bottom-left-radius:0}.readonly{border:none}.readonly:focus{border:none;outline:none}"]
1276
+ styles: [":host{position:relative;display:flex;align-items:stretch;width:20rem}input,textarea{margin:inherit;margin:var(--lux-input-margin, inherit);padding:inherit;padding:var(--lux-input-padding, inherit)}.alert{padding:.2rem 2rem;background:#fe2e2e;color:#fff;font-family:Consolas,monospace;width:45%;margin-right:1rem;display:inline-block}.symbol,.postfix,.prefix{display:inline-block;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-weight:400;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem;line-height:1.5px;line-height:var(--lux-input-postfix-line-height, 1.5px);font-size:1rem;font-size:var(--lux-input-postfix-font-size, 1rem);height:inherit;height:var(--lux-input-postfix-height, inherit)}.prefix{border-top-right-radius:0;border-bottom-right-radius:0}.postfix{border-top-left-radius:0;border-bottom-left-radius:0}.readonly{border:none}.readonly:focus{border:none;outline:none}\n"]
1214
1277
  },] }
1215
1278
  ];
1216
1279
  InputComponent.ctorParameters = function () { return []; };
@@ -1228,6 +1291,7 @@
1228
1291
  ariaLabel: [{ type: i0.Input, args: ['aria-label',] }],
1229
1292
  readonly: [{ type: i0.Input }],
1230
1293
  disabled: [{ type: i0.Input }],
1294
+ pattern: [{ type: i0.Input }],
1231
1295
  currency: [{ type: i0.Input }],
1232
1296
  placeholder: [{ type: i0.Input }],
1233
1297
  required: [{ type: i0.Input }],
@@ -1368,7 +1432,7 @@
1368
1432
  useExisting: i0.forwardRef(function () { return FilterComponent; })
1369
1433
  }
1370
1434
  ],
1371
- styles: [".filter{display:grid;grid-template-columns:auto 1.5rem 1.5rem .5rem auto}.filter input{grid-row:1;grid-column-start:1;grid-column-end:4}.filter .hide{visibility:collapse}.filter .clear-indicator{grid-row:1;grid-column:2;border:none}.filter .search-indicator{grid-row:1;grid-column:3}.filter .btn-search{grid-row:1;grid-column:5}.filter .icon-search{background:url(/assets/img/filter-search.png) no-repeat;background-size:1rem;background-position:50%;width:1rem}.filter .icon-clear{background:url(/assets/img/filter-clear.png) no-repeat;background-size:1rem;background-position:50%}"]
1435
+ styles: [".filter{display:grid;grid-template-columns:auto 1.5rem 1.5rem .5rem auto}.filter input{grid-row:1;grid-column-start:1;grid-column-end:4}.filter .hide{visibility:collapse}.filter .clear-indicator{grid-row:1;grid-column:2;border:none}.filter .search-indicator{grid-row:1;grid-column:3}.filter .btn-search{grid-row:1;grid-column:5}.filter .icon-search{background:url(/assets/img/filter-search.png) no-repeat center;background:var(--lux-filter-icon-search, url(/assets/img/filter-search.png) no-repeat center);background-size:1rem;background-size:var(--lux-filter-icon-bg-size, 1rem);background-position:center;width:1rem;width:var(--lux-filter-icon-width, 1rem)}.filter .icon-clear{background:url(/assets/img/filter-clear.png) no-repeat center;background:var(--lux-filter-icon-clear, url(/assets/img/filter-clear.png) no-repeat center);background-size:1rem;background-size:var(--lux-filter-icon-bg-size, 1rem);background-position:center}\n"]
1372
1436
  },] }
1373
1437
  ];
1374
1438
  FilterComponent.ctorParameters = function () { return []; };
@@ -1719,7 +1783,7 @@
1719
1783
  ar[i] = from[i];
1720
1784
  }
1721
1785
  }
1722
- return to.concat(ar || from);
1786
+ return to.concat(ar || Array.prototype.slice.call(from));
1723
1787
  }
1724
1788
  function __await(v) {
1725
1789
  return this instanceof __await ? (this.v = v, this) : new __await(v);
@@ -2649,7 +2713,7 @@
2649
2713
  useExisting: i0.forwardRef(function () { return GeolocationComponent; })
2650
2714
  }
2651
2715
  ],
2652
- styles: [".lux-geolocation{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:30rem}.alert{padding:.2rem 2rem;background:#fe2e2e;color:#fff;font-family:Consolas,monospace;width:45%;margin-right:1rem}.alert,.symbol{display:inline-block}.symbol{align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef}.infix,.postfix,.prefix,.rounded{border:1px solid #ced4da;border-radius:.25rem}.infix,.prefix{border-top-right-radius:0;border-bottom-right-radius:0}.infix,.postfix{border-top-left-radius:0;border-bottom-left-radius:0}.btn,.btn-cancel,.btn-select{margin:.2em}.btn-select{background-color:#b4b8f0}.btn-cancel{background-color:#ffced7}.lux-modal-body{padding:0}.map-container{width:90vw;height:45vh}.readonly:focus{outline:none}"]
2716
+ styles: [".lux-geolocation{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:30rem}.alert{padding:.2rem 2rem;background:#fe2e2e;color:#fff;font-family:Consolas,monospace;width:45%;margin-right:1rem;display:inline-block}.symbol{display:inline-block;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef}.rounded,.postfix,.infix,.prefix{border:1px solid #ced4da;border-radius:.25rem}.prefix{border-top-right-radius:0;border-bottom-right-radius:0}.infix{border-radius:0}.postfix{border-top-left-radius:0;border-bottom-left-radius:0}.btn,.btn-cancel,.btn-select{margin:.2em}.btn-select{background-color:#b4b8f0}.btn-cancel{background-color:#ffced7}.lux-modal-body{padding:0}.map-container{width:90vw;height:45vh}.readonly:focus{outline:none}\n"]
2653
2717
  },] }
2654
2718
  ];
2655
2719
  GeolocationComponent.ctorParameters = function () { return [
@@ -2964,7 +3028,7 @@
2964
3028
  { type: i0.Component, args: [{
2965
3029
  selector: 'lux-breadcrumb',
2966
3030
  template: "<ul class=\"lux-breadcrumb\">\n <li *ngFor=\"let breadcrumb of breadcrumbs; last as isLast; first as isFirst\"\n class=\"lux-breadcrumb-item\">\n <a [class.first]=\"isFirst\" routerLink=\"{{ breadcrumb.url }}\">{{ breadcrumb.label }}</a>\n <div *ngIf=\"!isLast\" class=\"lux-breadcrumb-separator\"></div>\n </li>\n</ul>\n",
2967
- styles: [".lux-breadcrumb{padding:10px 12px;list-style:none;list-style-type:none}.lux-breadcrumb li{display:inline;font-size:.8em}.lux-breadcrumb li a.first{font-weight:700}.lux-breadcrumb li+li:before{padding:8px;color:#000}.lux-breadcrumb li a,ol.lux-breadcrumb li a:hover{text-decoration:underline}.lux-breadcrumb a{cursor:hand}.lux-breadcrumb-separator{color:red;position:relative;top:5px;height:16px;padding:0 8px;background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 viewBox%3D%220 0 512 512%22%3E %3Cpath d%3D%22M294.1 256L167 129c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.3 34 0L345 239c9.1 9.1 9.3 23.7.7 33.1L201.1 417c-4.7 4.7-10.9 7-17 7s-12.3-2.3-17-7c-9.4-9.4-9.4-24.6 0-33.9l127-127.1z%22%2F%3E%3C%2Fsvg%3E\");background-repeat:no-repeat;display:inline-block}"]
3031
+ styles: [".lux-breadcrumb{padding:10px 12px;list-style:none;list-style-type:none}.lux-breadcrumb li{display:inline;font-size:.8em}.lux-breadcrumb li a.first{font-weight:bold}.lux-breadcrumb li+li:before{padding:8px;color:#000}.lux-breadcrumb li a{text-decoration:underline}ol.lux-breadcrumb li a:hover{text-decoration:underline}.lux-breadcrumb a{cursor:hand}.lux-breadcrumb-separator{color:red;position:relative;top:5px;height:16px;padding:0 8px;background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 viewBox%3D%220 0 512 512%22%3E %3Cpath d%3D%22M294.1 256L167 129c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.3 34 0L345 239c9.1 9.1 9.3 23.7.7 33.1L201.1 417c-4.7 4.7-10.9 7-17 7s-12.3-2.3-17-7c-9.4-9.4-9.4-24.6 0-33.9l127-127.1z%22%2F%3E%3C%2Fsvg%3E\");background-repeat:no-repeat;display:inline-block}\n"]
2968
3032
  },] }
2969
3033
  ];
2970
3034
  LuxBreadcrumbComponent.ctorParameters = function () { return [
@@ -3304,7 +3368,7 @@
3304
3368
  { type: i0.Component, args: [{
3305
3369
  selector: 'lux-map',
3306
3370
  template: "<div [id]=\"mapId\" class=\"map\" (resized)=\"onResize()\"></div>\n",
3307
- styles: [".map{min-height:100px;height:100%;min-width:160px;width:100%}"]
3371
+ styles: [".map{min-height:100px;height:100%;min-width:160px;width:100%}\n"]
3308
3372
  },] }
3309
3373
  ];
3310
3374
  MapComponent.ctorParameters = function () { return [
@@ -3450,7 +3514,7 @@
3450
3514
  { type: i0.Component, args: [{
3451
3515
  selector: 'lux-pagination',
3452
3516
  template: "<div class=\"lux-pagination\" *ngIf=\"showPagination\">\n <ng-container *ngIf=\"!hidePrevious\">\n <a\n luxTooltip\n [content]=\"first\"\n placement=\"top\"\n delay=\"500\"\n (click)=\"onFirst()\"\n [ngClass]=\"{\n enabledFirstLast: !hidePrevious\n }\"\n class=\"button-pagination icon arrow-left-end\"\n ></a>\n <a\n luxTooltip\n [content]=\"previous\"\n placement=\"top\"\n delay=\"500\"\n (click)=\"onPrevious()\"\n [ngClass]=\"{\n enabledFirstLast: !hidePrevious\n }\"\n class=\"button-pagination icon arrow-left\"\n ></a>\n </ng-container>\n\n <span class=\"ellipsis\" *ngIf=\"displayPreviousEllipsis\">...</span>\n\n <ng-container *ngFor=\"let pageNum of pages\">\n <a\n luxTooltip\n content=\"{{ pageNum + 1 }}\"\n placement=\"top\"\n delay=\"500\"\n [ngClass]=\"{\n disabled: pageNum === paginationInfo.page,\n enabled: pageNum !== paginationInfo.page\n }\"\n class=\"button-pagination\"\n (click)=\"onPage(pageNum)\"\n >{{ pageNum + 1 }}</a\n >\n </ng-container>\n\n <span class=\"ellipsis\" *ngIf=\"displayNextEllipsis\">...</span>\n\n <ng-container *ngIf=\"!lastPage\">\n <a\n luxTooltip\n [content]=\"next\"\n placement=\"top\"\n delay=\"500\"\n (click)=\"onNext()\"\n [ngClass]=\"{\n enabledFirstLast: !lastPage\n }\"\n class=\"button-pagination icon arrow-right\"\n ></a>\n <a\n luxTooltip\n [content]=\"last\"\n placement=\"top\"\n delay=\"500\"\n (click)=\"onLast()\"\n [ngClass]=\"{\n enabledFirstLast: !lastPage\n }\"\n class=\"button-pagination icon arrow-right-end\"\n ></a>\n </ng-container>\n</div>\n",
3453
- styles: [".lux-pagination{display:flex;flex-direction:row;margin:2% 0;width:100%;background:#fff;align-items:center}.disabled{cursor:not-allowed;border:1px solid #325c81;border-radius:10%;padding:1%;color:#fff;margin:0 .7%;background-color:#325c81;text-decoration:none;pointer-events:none}.enabled,.enabledFirstLast{border:1px solid #cfcfcf;border-radius:10%;padding:1%;margin:0 .7%;cursor:pointer}.ellipsis,.enabled,.enabledFirstLast{color:#325c81;width:-webkit-min-content;width:-moz-min-content;width:min-content}.ellipsis{margin:0 .5rem;padding:0}.button-pagination{width:1em;height:1.2em;font-size:80%;text-align:center}.icon{background-size:1.3em 1.4em;background-position:50%;background-repeat:no-repeat}.arrow-left,.arrow-right{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2268%22 height%3D%2248%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E %3Cg%3E %3Ctitle%3Ebackground%3C%2Ftitle%3E %3Crect fill%3D%22none%22 id%3D%22canvas_background%22 height%3D%22402%22 width%3D%221082%22 y%3D%22-1%22 x%3D%22-1%22%2F%3E %3C%2Fg%3E %3Cg%3E %3Ctitle%3ELayer 1%3C%2Ftitle%3E %3Cpolygon fill%3D%22%23325C81%22 id%3D%22svg_2%22 points%3D%2221.8%2C45.7 10.4%2C44.3 30.8%2C24 10.4%2C3.7 21.8%2C2.3 43.5%2C24 %22%2F%3E %3C%2Fg%3E%3C%2Fsvg%3E\");background-position:.4em}.arrow-left{transform:rotate(180deg)}.arrow-left-end,.arrow-right-end{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2268%22 height%3D%2248%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E %3Cg%3E %3Ctitle%3Ebackground%3C%2Ftitle%3E %3Crect fill%3D%22none%22 id%3D%22canvas_background%22 height%3D%22402%22 width%3D%221082%22 y%3D%22-1%22 x%3D%22-1%22%2F%3E %3C%2Fg%3E %3Cg%3E %3Ctitle%3ELayer 1%3C%2Ftitle%3E %3Cpolygon fill%3D%22%23325C81%22 id%3D%22svg_2%22 points%3D%2221.8%2C45.7 10.4%2C44.3 30.8%2C24 10.4%2C3.7 21.8%2C2.3 43.5%2C24 %22%2F%3E %3Cpolygon fill%3D%22%23325C81%22 id%3D%22svg_3%22 points%3D%2241.8%2C45.7 30.4%2C44.3 50.8%2C24 30.4%2C3.7 41.8%2C2.3 63.5%2C24 %22%2F%3E %3C%2Fg%3E%3C%2Fsvg%3E\");background-position:.1em}.arrow-left-end{transform:rotate(180deg)}@media only screen and (min-width:300px) and (max-width:500px){.arrow-left,.arrow-right{background-position:.2em}.arrow-left-end,.arrow-right-end{background-position:0}}@media only screen and (min-width:500px) and (max-width:850px){.arrow-left,.arrow-right{background-position:.3em}.arrow-left-end,.arrow-right-end{background-position:0}}@media only screen and (min-width:900px){.arrow-left,.arrow-right{background-position:.2em}.arrow-left-end,.arrow-right-end{background-position:0}}"]
3517
+ styles: [".lux-pagination{display:flex;flex-direction:row;margin:2% 0;width:100%;background:white;align-items:center}.disabled{cursor:not-allowed;border:1px solid #325c81;border:var(--lux-pagination-disabled-border, 1px solid #325c81);border-radius:10%;border-radius:var(--lux-pagination-disabled-border-radius, 10%);padding:1%;margin:0 .7%;color:#fff;color:var(--lux-pagination-disabled-color, white);background-color:#325c81;background-color:var(--lux-pagination-disabled-background-color, #325c81);text-decoration:none;pointer-events:none}.enabled{border:1px solid #cfcfcf;border:var(--lux-pagination-enabled-border, 1px solid #cfcfcf);border-radius:10%;border-radius:var(--lux-pagination-enabled-border-radius, 10%);padding:1%;margin:0 .7%;color:#325c81;color:var(--lux-pagination-enabled-color, #325c81);width:-webkit-min-content;width:-moz-min-content;width:min-content;cursor:pointer}.enabledFirstLast{border:1px solid #cfcfcf;border-radius:10%;padding:1%;color:#325c81;margin:0 .7%;width:-webkit-min-content;width:-moz-min-content;width:min-content;cursor:pointer}.ellipsis{margin:0 .5rem;padding:0;color:#325c81;width:-webkit-min-content;width:-moz-min-content;width:min-content}.button-pagination{width:1em;width:var(--lux-pagination-button-width, 1em);height:1.2em;height:var(--lux-pagination-button-height, 1.2em);font-size:80%;font-size:var(--lux-pagination-font-size, 80%);text-align:center}.icon{background-size:1.3em 1.4em;background-position:center;background-repeat:no-repeat}.arrow-right{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2268%22 height%3D%2248%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E %3Cg%3E %3Ctitle%3Ebackground%3C%2Ftitle%3E %3Crect fill%3D%22none%22 id%3D%22canvas_background%22 height%3D%22402%22 width%3D%221082%22 y%3D%22-1%22 x%3D%22-1%22%2F%3E %3C%2Fg%3E %3Cg%3E %3Ctitle%3ELayer 1%3C%2Ftitle%3E %3Cpolygon fill%3D%22%23325C81%22 id%3D%22svg_2%22 points%3D%2221.8%2C45.7 10.4%2C44.3 30.8%2C24 10.4%2C3.7 21.8%2C2.3 43.5%2C24 %22%2F%3E %3C%2Fg%3E%3C%2Fsvg%3E\");background-position:.4em}.arrow-left{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2268%22 height%3D%2248%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E %3Cg%3E %3Ctitle%3Ebackground%3C%2Ftitle%3E %3Crect fill%3D%22none%22 id%3D%22canvas_background%22 height%3D%22402%22 width%3D%221082%22 y%3D%22-1%22 x%3D%22-1%22%2F%3E %3C%2Fg%3E %3Cg%3E %3Ctitle%3ELayer 1%3C%2Ftitle%3E %3Cpolygon fill%3D%22%23325C81%22 id%3D%22svg_2%22 points%3D%2221.8%2C45.7 10.4%2C44.3 30.8%2C24 10.4%2C3.7 21.8%2C2.3 43.5%2C24 %22%2F%3E %3C%2Fg%3E%3C%2Fsvg%3E\");transform:rotate(180deg);background-position:.4em}.arrow-right-end{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2268%22 height%3D%2248%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E %3Cg%3E %3Ctitle%3Ebackground%3C%2Ftitle%3E %3Crect fill%3D%22none%22 id%3D%22canvas_background%22 height%3D%22402%22 width%3D%221082%22 y%3D%22-1%22 x%3D%22-1%22%2F%3E %3C%2Fg%3E %3Cg%3E %3Ctitle%3ELayer 1%3C%2Ftitle%3E %3Cpolygon fill%3D%22%23325C81%22 id%3D%22svg_2%22 points%3D%2221.8%2C45.7 10.4%2C44.3 30.8%2C24 10.4%2C3.7 21.8%2C2.3 43.5%2C24 %22%2F%3E %3Cpolygon fill%3D%22%23325C81%22 id%3D%22svg_3%22 points%3D%2241.8%2C45.7 30.4%2C44.3 50.8%2C24 30.4%2C3.7 41.8%2C2.3 63.5%2C24 %22%2F%3E %3C%2Fg%3E%3C%2Fsvg%3E\");background-position:.1em}.arrow-left-end{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2268%22 height%3D%2248%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E %3Cg%3E %3Ctitle%3Ebackground%3C%2Ftitle%3E %3Crect fill%3D%22none%22 id%3D%22canvas_background%22 height%3D%22402%22 width%3D%221082%22 y%3D%22-1%22 x%3D%22-1%22%2F%3E %3C%2Fg%3E %3Cg%3E %3Ctitle%3ELayer 1%3C%2Ftitle%3E %3Cpolygon fill%3D%22%23325C81%22 id%3D%22svg_2%22 points%3D%2221.8%2C45.7 10.4%2C44.3 30.8%2C24 10.4%2C3.7 21.8%2C2.3 43.5%2C24 %22%2F%3E %3Cpolygon fill%3D%22%23325C81%22 id%3D%22svg_3%22 points%3D%2241.8%2C45.7 30.4%2C44.3 50.8%2C24 30.4%2C3.7 41.8%2C2.3 63.5%2C24 %22%2F%3E %3C%2Fg%3E%3C%2Fsvg%3E\");background-position:.1em;transform:rotate(180deg)}@media only screen and (min-width: 300px) and (max-width: 500px){.arrow-right{background-position:.2em}.arrow-left{background-position:.2em}.arrow-right-end{background-position:0em}.arrow-left-end{background-position:0em}}@media only screen and (min-width: 500px) and (max-width: 850px){.arrow-right{background-position:.3em}.arrow-left{background-position:.3em}.arrow-right-end{background-position:0em}.arrow-left-end{background-position:0em}}@media only screen and (min-width: 900px){.arrow-right{background-position:.2em}.arrow-left{background-position:.2em}.arrow-right-end{background-position:0em}.arrow-left-end{background-position:0em}}\n"]
3454
3518
  },] }
3455
3519
  ];
3456
3520
  PaginationComponent.ctorParameters = function () { return []; };
@@ -3567,7 +3631,7 @@
3567
3631
  useExisting: i0.forwardRef(function () { return RadiogroupComponent; })
3568
3632
  }
3569
3633
  ],
3570
- styles: [".radiogroup{display:flex}.radio-item{border-radius:0;border:1px solid #ccc;padding:0 .5rem}.radio-item input{display:none}.radio-item label{margin-top:.3rem;margin-bottom:.3rem}.radio-start{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.radio-end{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.selected{background-color:#2e2eac;color:#fff}.disabled .radio-item{background-color:#f0f0f0;color:#444}.disabled .selected{background-color:#9898ec;color:#fff}.unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}"]
3634
+ styles: [".radiogroup{display:flex}.radio-item{border-radius:0;border:1px solid #ccc;padding:0 .5rem;padding:var(--lux-radiogroup-padding, 0rem .5rem)}.radio-item input{display:none}.radio-item label{color:initial;color:var(--lux-radiogroup-color, initial);font-size:initial;font-size:var(--lux-radiogroup-font-size, initial);margin-top:.3rem;margin-bottom:.3rem}.radio-item.selected{background-color:#2e2eac;background-color:var(--lux-radiogroup-selected-background-color, #2e2eac)}.radio-item.selected label{font-size:initial;font-size:var(--lux-radiogroup-font-size, initial);color:#fff;color:var(--lux-radiogroup-selected-color, white)}.radio-start{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.radio-end{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.disabled .radio-item{background-color:#f0f0f0;color:#444}.disabled .selected{font-size:initial;font-size:var(--lux-radiogroup-selected-disabled-font-size, initial);color:#fff;color:var(--lux-radiogroup-selected-disabled-color, white);background-color:#9898ec;background-color:var(--lux-radiogroup-selected-disabled-background-color, #9898ec)}.unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}\n"]
3571
3635
  },] }
3572
3636
  ];
3573
3637
  RadiogroupComponent.ctorParameters = function () { return []; };
@@ -3700,7 +3764,7 @@
3700
3764
  useExisting: i0.forwardRef(function () { return SelectComponent; })
3701
3765
  }
3702
3766
  ],
3703
- styles: [".lux-select{margin-bottom:.5em}.lux-select .list{margin:1em;padding-bottom:.2em;list-style-type:square}.lux-select .list span{margin-bottom:.3em}.remove{margin-left:2em;font-size:.65em;color:#b22222;background:transparent;border:2px solid #bbb}.add-new-item{display:inline-flex;margin-left:2.2em;height:1.6em}.error{margin:.5em 0;color:#b22222}"]
3767
+ styles: [".lux-select{margin-bottom:.5em}.lux-select .list{margin:1em;padding-bottom:.2em;list-style-type:square}.lux-select .list span{margin-bottom:.3em}.remove{margin-left:2em;font-size:.65em;color:#b22222;background:transparent;border:2px solid #BBB}.add-new-item{display:inline-flex;margin-left:2.2em;height:1.6em}.error{margin:.5em 0;color:#b22222}\n"]
3704
3768
  },] }
3705
3769
  ];
3706
3770
  SelectComponent.ctorParameters = function () { return []; };
@@ -1 +1 @@
1
- {"version":3,"file":"metadev-lux.umd.js","sources":["../../../projects/lux/src/lib/helperFns.ts","../../../projects/lux/src/lib/autocomplete/autocomplete.component.ts","../../../projects/lux/src/lib/lang.ts","../../../projects/lux/src/lib/autocomplete-list/autocomplete-list.component.ts","../../../projects/lux/src/lib/checkbox/checkbox.component.ts","../../../projects/lux/src/lib/input/input.component.ts","../../../projects/lux/src/lib/filter/filter.component.ts","../../../projects/lux/src/lib/modal/modal-ref.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/lux/src/lib/modal/util.ts","../../../projects/lux/src/lib/modal/modal-dismiss-reasons.ts","../../../projects/lux/src/lib/modal/modal-window.ts","../../../projects/lux/src/lib/modal/modal-backdrop.ts","../../../projects/lux/src/lib/modal/modal-config.ts","../../../projects/lux/src/lib/modal/modal-stack.ts","../../../projects/lux/src/lib/modal/modal.service.ts","../../../projects/lux/src/lib/geolocation/geolocation.service.ts","../../../projects/lux/src/lib/geolocation/geolocation.component.ts","../../../projects/lux/src/lib/tooltip/placement.ts","../../../projects/lux/src/lib/tooltip/tooltip.component.ts","../../../projects/lux/src/lib/tooltip/tooltop-content.ts","../../../projects/lux/src/lib/tooltip/tooltip.service.ts","../../../projects/lux/src/lib/tooltip/tooltip.directive.ts","../../../projects/lux/src/lib/breadcrumb/breadcrumb.component.ts","../../../projects/lux/src/lib/geolocation/openlayer-loader.service.ts","../../../projects/lux/src/lib/map/map.component.ts","../../../projects/lux/src/lib/pagination/pagination.component.ts","../../../projects/lux/src/lib/radiogroup/radiogroup.component.ts","../../../projects/lux/src/lib/select/select.component.ts","../../../projects/lux/src/lib/voice-recognition/voice-recognition.directive.ts","../../../projects/lux/src/lib/window/window.service.ts","../../../projects/lux/src/lib/lux.module.ts","../../../projects/lux/src/public-api.ts","../../../projects/lux/src/metadev-lux.ts"],"sourcesContent":["// undefined and null functions\r\n\r\nexport const exists = (value: any): boolean =>\r\n value !== null && value !== undefined;\r\n\r\nexport const hasValue = (value: any): boolean =>\r\n exists(value) && (typeof value === 'string' ? !isEmptyString(value) : true);\r\n\r\n// string functions\r\n\r\nexport const isEmptyString = (value: string): boolean => value.trim() === '';\r\n\r\nexport const isValidEmail = (value: string): boolean => {\r\n const re =\r\n /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/;\r\n return re.test(String(value).toLowerCase().trim());\r\n};\r\n\r\n// date functions\r\n\r\nexport const normalizeDate = (value: any): string => {\r\n if (typeof value === 'string' && value.length > 10) {\r\n return value.substr(0, 10);\r\n }\r\n return value ? value.toString() : null;\r\n};\r\n\r\n// number functions\r\n\r\nexport const isValidNumber = (\r\n value: string | number | undefined | null\r\n): boolean => (hasValue(value) ? !Number.isNaN(Number(value)) : false);\r\n\r\nexport const numberOfDecimalDigits = (\r\n x: number | string\r\n): number | undefined => {\r\n if (isValidNumber(x)) {\r\n const xString = String(Number(x));\r\n if (xString === 'Infinity') {\r\n return 0;\r\n }\r\n const indexOfE = xString.indexOf('e');\r\n if (indexOfE >= 0) {\r\n return 0;\r\n }\r\n const indexOfDecimalPoint = xString.indexOf('.');\r\n if (indexOfDecimalPoint < 0) {\r\n return 0;\r\n } else {\r\n return xString.length - indexOfDecimalPoint - 1;\r\n }\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const numberOfWholeDigits = (x: number | string): number | undefined => {\r\n if (isValidNumber(x)) {\r\n let xString = String(Number(x));\r\n if (xString.indexOf('-') === 0) {\r\n xString = xString.slice(1, xString.length);\r\n }\r\n if (xString === 'Infinity') {\r\n return Infinity;\r\n }\r\n if (xString.indexOf('0') === 0) {\r\n xString = xString.slice(1, xString.length);\r\n }\r\n const indexOfE = xString.indexOf('e');\r\n if (indexOfE >= 0) {\r\n return Number(xString.slice(indexOfE + 1, xString.length)) + 1;\r\n }\r\n const indexOfDecimalPoint = xString.indexOf('.');\r\n if (indexOfDecimalPoint < 0) {\r\n return xString.length;\r\n } else {\r\n return indexOfDecimalPoint;\r\n }\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const roundToMultipleOf = (x: number, modulo: number): number => {\r\n const moduloString = String(modulo);\r\n // approximates the result\r\n // prone to inexactitude because of floating point arithmetic\r\n const approximation = Math.round(x / modulo) * modulo;\r\n const approximationString = String(approximation);\r\n // remove useless decimals\r\n const uselessDecimalsInApproximation =\r\n numberOfDecimalDigits(approximationString) -\r\n numberOfDecimalDigits(moduloString);\r\n const resultString = approximationString.slice(\r\n 0,\r\n approximationString.length - uselessDecimalsInApproximation\r\n );\r\n return Number(resultString);\r\n};\r\n\r\n// other functions\r\n\r\nexport const isInitialAndEmpty = (\r\n previousValue: any,\r\n newValue: any\r\n): boolean => {\r\n const isPrevArray = Array.isArray(previousValue);\r\n const isNewArray = Array.isArray(newValue);\r\n return !(\r\n (isPrevArray ? previousValue.length !== 0 : Boolean(previousValue)) ||\r\n (isNewArray ? newValue.length !== 0 : Boolean(newValue))\r\n );\r\n};\r\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { first, map } from 'rxjs/operators';\n// Do not remove this import: needed in the template\nimport { ResizedEvent } from 'angular-resize-event';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport {\n DataSource,\n DataSourceItem,\n DecoratedDataSource,\n DecoratedDataSourceItem\n} from '../datasource';\nimport { isInitialAndEmpty } from '../helperFns';\n\n@Component({\n selector: 'lux-autocomplete',\n templateUrl: './autocomplete.component.html',\n styleUrls: ['./autocomplete.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => AutocompleteComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => AutocompleteComponent)\n }\n ]\n})\nexport class AutocompleteComponent\n implements ControlValueAccessor, Validator, OnInit, AfterViewInit\n{\n static idCounter = 0;\n\n @ViewChild('i0', { static: true }) i0: ElementRef;\n @ViewChild('completeDiv', { static: true }) completeDiv: ElementRef;\n\n private _dataSource: DataSource<any, string>;\n private _placeholder: string;\n private _value: any;\n\n touched = false;\n completionList: DecoratedDataSource = [];\n showCompletion = false;\n focusItem: DataSourceItem<any, string>;\n\n @Output() valueChange = new EventEmitter<any>();\n @Output() dataSourceChange = new EventEmitter<DataSource<any, string>>();\n\n @Input() public inputId: string;\n @Input() public disabled: boolean | null = null;\n @Input() public readonly: boolean | null = null;\n @Input() label = '';\n /** If canAddNewValues, user can type items not present in the data-source. */\n @Input() canAddNewValues = false;\n\n @Input()\n get value(): any {\n return this._value;\n }\n set value(v: any) {\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\n this._value = v;\n this.onChange(v);\n this.completeLabel();\n if (!initialAndEmpty) {\n this.valueChange.emit(v);\n }\n }\n @Input()\n get dataSource(): DataSource<any, string> {\n return this._dataSource;\n }\n set dataSource(v: DataSource<any, string>) {\n this._dataSource = v;\n this.dataSourceChange.emit(v);\n }\n @Input() required = false;\n\n @Input()\n set placeholder(v: string) {\n this._placeholder = v;\n }\n get placeholder(): string {\n return this._placeholder ? this._placeholder : '';\n }\n\n @Input() resolveLabelsFunction?: (\n instance: any,\n keys: any[]\n ) => Observable<DataSource<any, string>> = undefined;\n @Input() populateFunction?: (\n instance: any,\n search: string\n ) => Observable<DataSource<any, string>> = undefined;\n @Input() instance: any;\n\n constructor(private cd: ChangeDetectorRef) {}\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched && !this.disabled) {\n this.onTouched();\n this.touched = true;\n }\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n if (\n this.required &&\n (value === '' || value === null || value === undefined)\n ) {\n return { required: { value, reason: 'Required field.' } };\n }\n return null;\n }\n // End of Validator interface\n\n clear(): void {\n this.value = null;\n this.toggleCompletion(true, '');\n }\n\n private completeLabel(): void {\n if (this.value) {\n if (this.dataSource) {\n this.label = findLabelForId(this.dataSource, this.value) || '';\n } else if (this.instance && this.resolveLabelsFunction) {\n this.resolveLabelsFunction(this.instance, [this.value])\n .pipe(first())\n .subscribe((data) => {\n this.label = findLabelForId(data, this.value) || '';\n });\n }\n } else {\n this.label = '';\n }\n }\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `autocompletelist${AutocompleteComponent.idCounter++}`;\n this.completeLabel();\n }\n ngAfterViewInit(): void {\n this.setSameWidth();\n }\n onInputResized(): void {\n this.setSameWidth();\n }\n private setSameWidth(): void {\n const width = this.i0.nativeElement.getBoundingClientRect().width;\n this.completeDiv.nativeElement.style.width = `${width}px`;\n }\n\n onKeydown(event: KeyboardEvent, label: string): void {\n switch (event.key) {\n case 'Tab':\n if (label) {\n this.pickSelectionOrFirstMatch(label);\n }\n this.showCompletion = false;\n break;\n }\n this.markAsTouched();\n }\n onKeypress(event: KeyboardEvent, label: string): void {\n switch (event.key) {\n case 'Intro':\n case 'Enter':\n this.pickSelectionOrFirstMatch(label);\n event.preventDefault();\n break;\n }\n this.markAsTouched();\n }\n onKeyup(event: KeyboardEvent, label: string): void {\n switch (event.key) {\n case 'PageDown':\n this.focusOnNext(5);\n event.preventDefault();\n break;\n case 'ArrowDown':\n this.focusOnNext(1);\n event.preventDefault();\n break;\n case 'PageUp':\n this.focusOnPrevious(5);\n event.preventDefault();\n break;\n case 'ArrowUp':\n this.focusOnPrevious(1);\n event.preventDefault();\n break;\n case 'Escape':\n this.complete(null);\n event.preventDefault();\n break;\n case 'Intro':\n case 'Enter':\n event.preventDefault();\n break;\n default:\n this.showCompletionList(label);\n // event.preventDefault();\n }\n this.markAsTouched();\n }\n private focusOnNext(offset: number): void {\n const list = this.completionList || [];\n const index = list.findIndex(\n (it) => this.focusItem && it.key === this.focusItem.key\n );\n const next =\n index !== -1 && list.length > index + offset\n ? list[index + offset]\n : list[list.length - 1];\n this.focusItem = next;\n this.ensureItemVisible(index);\n }\n private focusOnPrevious(offset: number): void {\n const list = this.completionList || [];\n const index = list.findIndex(\n (it) => this.focusItem && it.key === this.focusItem.key\n );\n const next =\n index !== -1 && index > offset ? list[index - offset] : list[0];\n this.focusItem = next;\n this.ensureItemVisible(index);\n }\n onLostFocus(): void {\n setTimeout(() => {\n this.toggleCompletion(false, null);\n }, 200);\n }\n complete(item: DataSourceItem<Record<string, unknown>, string>): void {\n if (item !== null) {\n this.value = item.key;\n this.label = item.label;\n } else {\n this.value = null;\n this.label = '';\n }\n this.toggleCompletion(false, null);\n this.markAsTouched();\n }\n toggleCompletion(show: boolean, label: string): void {\n if (show && !this.disabled) {\n this.showCompletionList(label);\n } else {\n this.showCompletion = false;\n if (this.canAddNewValues) {\n this.syncCustomValue(this.label);\n return;\n }\n }\n this.cd.markForCheck();\n }\n\n get selectedOption(): string {\n const index = this.completionList.findIndex(\n (i) => i.key === this.focusItem.key\n );\n if (index === -1 || !this.focusItem) {\n return null;\n }\n return `${this.inputId}_${index}`;\n }\n\n private ensureItemVisible(index: number): void {\n const target = this.completeDiv.nativeElement.querySelectorAll('li')[index];\n if (target) {\n target.scrollIntoView({ block: 'center' });\n }\n }\n private syncCustomValue(text: string): void {\n this.value = text;\n this.label = text;\n }\n private pickSelectionOrFirstMatch(text: string): void {\n if (this.canAddNewValues) {\n this.syncCustomValue(text);\n return;\n }\n if (this.focusItem && this.focusItem.label) {\n this.complete(this.focusItem);\n return;\n }\n const source = (text || '').trim();\n if (source === '') {\n this.showCompletion = false;\n return;\n }\n this.completionList = [];\n this.computeCompletionList(source).subscribe((suggestions) => {\n this.complete(\n suggestions && suggestions.length > 0 ? suggestions[0] : null\n );\n });\n }\n private showCompletionList(text: string): void {\n this.setSameWidth();\n this.computeCompletionList(text).subscribe((cl) => {\n this.completionList = cl;\n this.focusItem =\n this.completionList.length > 0 ? this.completionList[0] : null;\n this.showCompletion = true;\n });\n }\n private computeCompletionList(text: string): Observable<DecoratedDataSource> {\n const searchText = (text || '').toLowerCase();\n if (this.dataSource) {\n const ds = (this.dataSource || [])\n .filter((it) => ignoreAccentsInclude(it.label, searchText))\n .sort((a, b) => a.label.localeCompare(b.label));\n return of(decorateDataSource(ds, searchText));\n } else if (this.instance && this.populateFunction) {\n return this.populateFunction(this.instance, searchText).pipe(\n first(),\n map((ds) => {\n ds.filter((it) => ignoreAccentsInclude(it.label, searchText)).sort(\n (a, b) => a.label.localeCompare(b.label)\n );\n return decorateDataSource(ds, searchText);\n })\n );\n } else {\n return of([]);\n }\n }\n}\n\n/** Returns true if text includes substring. No accents considered. Ignorecase */\nconst ignoreAccentsInclude = (text: string, substring: string): boolean => {\n text = normalizedString(text).toLowerCase();\n substring = normalizedString(substring).toLowerCase();\n return text.includes(substring);\n};\n\n/** Returns a normalized string with no accents: used for comparison */\nconst normalizedString = (a: string): string =>\n (a || '').normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n\nconst decorateDataSource = (\n dataSource: DataSource<any, string>,\n subString: string\n): DecoratedDataSource => dataSource.map((it) => decorateItem(it, subString));\n\nconst decorateItem = (\n item: DataSourceItem<any, string>,\n tx: string\n): DecoratedDataSourceItem => {\n const index = normalizedString(item.label)\n .toLowerCase()\n .indexOf(normalizedString(tx).toLowerCase());\n const labelPrefix = index === -1 ? item.label : item.label.substr(0, index);\n const labelMatch = index === -1 ? '' : item.label.substr(index, tx.length);\n const labelPostfix = index === -1 ? '' : item.label.substr(index + tx.length);\n const newItem: DecoratedDataSourceItem = {\n ...item,\n labelPrefix,\n labelMatch,\n labelPostfix\n };\n return newItem;\n};\n\nconst findLabelForId = (data: DataSource<any, string>, id: any): string => {\n const found = data.find((it) => it.key === id);\n return found ? found.label : null;\n};\n","/** Language detector based on Navigator preferences */\nexport const languageDetector = (): string => {\n const lang = navigator.language.split('-')[0];\n if (lang === 'es' || lang === 'en') {\n return lang;\n }\n return 'en'; // default\n};\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { first } from 'rxjs/operators';\nimport { AutocompleteComponent } from '../autocomplete/autocomplete.component';\nimport { DataSource } from '../datasource';\nimport { isInitialAndEmpty } from '../helperFns';\nimport { languageDetector } from '../lang';\n\n@Component({\n selector: 'lux-autocomplete-list',\n templateUrl: './autocomplete-list.component.html',\n styleUrls: ['./autocomplete-list.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => AutocompleteListComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => AutocompleteListComponent)\n }\n ]\n})\nexport class AutocompleteListComponent\n implements ControlValueAccessor, Validator, OnInit\n{\n static idCounter = 0;\n\n @ViewChild('auto') auto!: AutocompleteListComponent;\n\n literals = {\n en: {\n placeholder: 'new item',\n deleteLabelTemplate: 'Delete <<label>>',\n addMessage: 'Add'\n },\n es: {\n placeholder: 'nuevo elemento',\n deleteLabelTemplate: 'Eliminar <<label>>',\n addMessage: 'Añadir'\n }\n };\n\n public internalDataSource: DataSource<any, string> = [];\n private autoPopulate = false;\n\n private _value: any[] = [];\n @Input()\n set value(val: any[]) {\n if (val === this._value) {\n return;\n }\n const initialAndEmpty = isInitialAndEmpty(this._value, val);\n this._value = val;\n this.ensureLabelsForIds();\n this.populateWith('');\n this.onChange(this._value);\n if (!initialAndEmpty) {\n this.valueChange.emit(this._value);\n }\n }\n get value(): any[] {\n return this._value;\n }\n labels: string[] = [];\n newEntry: any;\n canAdd = false;\n touched = false;\n\n private _lang = languageDetector();\n @Input()\n get lang(): string {\n return this._lang;\n }\n set lang(l: string) {\n if (l === this._lang) {\n return;\n }\n if (Object.keys(this.literals).includes(l)) {\n this._lang = l;\n } else {\n this._lang = 'en';\n }\n }\n\n @Input() inputId: string;\n @Input() dataSource: DataSource<any, any> = [];\n @Input() placeholder?: string;\n @Input() disabled = false;\n @Input() deleteLabelTemplate?: string;\n @Input() addMessage?: string;\n @Input() required = false;\n\n @Input() resolveLabelsFunction?: (\n instance: any,\n ids: any[]\n ) => Observable<DataSource<any, string>> = undefined;\n @Input() populateFunction?: (\n instance: any,\n search: string\n ) => Observable<DataSource<any, string>> = undefined;\n @Input() instance: any;\n\n @Output() valueChange = new EventEmitter<any[]>();\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched && !this.disabled) {\n this.onTouched();\n this.touched = true;\n }\n }\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n if (\n this.required &&\n (value === '' || value === null || value === undefined)\n ) {\n return { required: { value, reason: 'Required field.' } };\n }\n return null;\n }\n // End of Validator interface\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `autocompletelist${AutocompleteListComponent.idCounter++}`;\n this.autoPopulate =\n !!this.resolveLabelsFunction && !!this.populateFunction && this.instance;\n this.ensureLabelsForIds();\n }\n ensureLabelsForIds(): void {\n if (this.autoPopulate && this.resolveLabelsFunction) {\n this.resolveLabelsFunction(this.instance, this._value)\n .pipe(first())\n .subscribe((data) => {\n const res: string[] = [];\n (this._value || []).map((id) => {\n const found = data.find((it) => it.key === id);\n if (found) {\n res.push(found.label);\n } else {\n res.push('(unset)');\n }\n });\n this.labels = res;\n });\n } else if (this.dataSource) {\n const res: string[] = [];\n (this._value || []).map((id) => {\n const found = this.dataSource.find((it) => it.key === id);\n if (found) {\n res.push(found.label);\n } else {\n res.push('(unset)');\n }\n });\n this.labels = res;\n } else {\n this.labels = this._value.map((it) => (it ? it.toString() : '(unset)'));\n }\n }\n removeAt(index: number): void {\n if (this._value.length > index) {\n const key = this._value.splice(index, 1)[0];\n const label = this.labels.splice(index, 1)[0];\n this.internalDataSource.push({ key, label });\n }\n this.markAsTouched();\n }\n onValueChange(): void {\n this.updateCanAdd();\n }\n onNewEntryChange(event: KeyboardEvent, auto: AutocompleteComponent): void {\n if (event.key === 'Enter' && !!auto.value) {\n this.addNew(auto);\n } else if (event.key === 'Delete' || event.key === 'Backspace') {\n // todo\n } else {\n this.populateWith(auto.label + event.key);\n }\n this.updateCanAdd();\n }\n populateWith(searchText: string): void {\n if (this.autoPopulate && this.populateFunction && this.instance) {\n this.populateFunction(this.instance, searchText)\n .pipe(first())\n .subscribe((data) => {\n this.internalDataSource = data.filter(\n (it) => !(this._value || []).includes(it.key)\n );\n });\n } else if (this.dataSource) {\n this.internalDataSource = this.dataSource.filter(\n (it) => !(this._value || []).includes(it.key)\n );\n }\n }\n updateCanAdd(): void {\n this.canAdd =\n !this.disabled &&\n this.auto &&\n !!this.auto.value && // has value\n !this.value.find((it) => it === this.auto.value); // not already in\n }\n\n addNew(auto: AutocompleteComponent): void {\n this.value.push(auto.value);\n this.ensureLabelsForIds();\n this.newEntry = '';\n this.internalDataSource = this.internalDataSource.filter(\n (it) => !this._value.includes(it.key)\n );\n this.markAsTouched();\n }\n\n getDeleteMessage(label: string): string {\n return (\n this.deleteLabelTemplate ?? this.literals[this.lang].deleteLabelTemplate\n ).replace('<<label>>', label);\n }\n}\n","import {\n Component,\n Input,\n EventEmitter,\n Output,\n OnInit,\n forwardRef,\n ViewChild,\n ElementRef,\n AfterViewInit\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { isInitialAndEmpty } from '../helperFns';\nimport { languageDetector } from '../lang';\n\nconst KEY_SPACE = ' ';\n\n@Component({\n selector: 'lux-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => CheckboxComponent)\n }\n ]\n})\nexport class CheckboxComponent\n implements ControlValueAccessor, OnInit, AfterViewInit\n{\n static idCounter = 0;\n\n @ViewChild('ck', { static: false }) ck: ElementRef;\n\n private _lang = languageDetector();\n @Input()\n set lang(l: string) {\n if (l === this._lang) {\n return;\n }\n if (Object.keys(this.literals).includes(l)) {\n this._lang = l;\n } else {\n this._lang = 'en';\n }\n }\n get lang(): string {\n return this._lang;\n }\n private internalValue: boolean;\n @Input()\n get value(): boolean {\n return this.internalValue;\n }\n set value(v: boolean) {\n if (this.internalValue === v) {\n return;\n }\n const initialAndEmpty = isInitialAndEmpty(this.internalValue, v);\n this.internalValue = v;\n this.syncModel();\n this.onChange(v);\n if (!initialAndEmpty) {\n this.valueChange.emit(v);\n }\n }\n\n get tabindexValue(): string {\n return this.disabled ? null : '0';\n }\n\n @Input() label: string = null;\n @Input() name: string = null;\n private _disabled = false;\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(v: boolean) {\n if (v === this._disabled) {\n return;\n }\n this._disabled = v;\n this.syncModel();\n }\n @Input() inputId: string;\n\n literals = {\n en: {\n yesLabel: 'Yes',\n noLabel: 'No'\n },\n es: {\n yesLabel: 'Sí',\n noLabel: 'No'\n }\n };\n touched = false;\n\n @Output() valueChange = new EventEmitter<boolean>();\n\n constructor() {}\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n writeValue(value: any): void {\n this.value = !!value;\n }\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `${this.name || 'checkbox'}$${CheckboxComponent.idCounter++}`;\n }\n ngAfterViewInit(): void {\n this.syncModel();\n }\n\n clicked(): void {\n if (!this.disabled) {\n this.value = !this.internalValue;\n this.markAsTouched();\n }\n }\n onKey(event: KeyboardEvent): void {\n if (event.key === KEY_SPACE && !this.disabled) {\n this.value = !this.internalValue;\n this.markAsTouched();\n event.preventDefault();\n }\n }\n\n private syncModel(): void {\n if (this.ck) {\n this.ck.nativeElement.checked = this.internalValue;\n }\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n ElementRef,\n ViewChild,\n forwardRef\n} from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR,\n ControlValueAccessor,\n AbstractControl,\n ValidationErrors,\n Validator,\n NG_VALIDATORS\n} from '@angular/forms';\nimport {\n hasValue,\n isInitialAndEmpty,\n isValidEmail,\n isValidNumber,\n normalizeDate\n} from '../helperFns';\nimport { languageDetector } from '../lang';\n@Component({\n selector: 'lux-input',\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => InputComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => InputComponent)\n }\n ]\n})\nexport class InputComponent implements OnInit, ControlValueAccessor, Validator {\n static idCounter = 0;\n\n @ViewChild('input', { static: false }) input: ElementRef;\n @ViewChild('textarea', { static: false }) textarea: ElementRef;\n\n touched = false;\n dirty = false;\n lastErrors: ValidationErrors | null = null;\n\n private _disabled: string | boolean;\n private _value: any = '';\n private _type: string;\n private _placeholder: string;\n private _currency: string;\n private _required: boolean;\n\n public userErrors = {\n en: {\n required: 'Required field.',\n min: 'Minimum value is $min.',\n max: 'Maximum value is $max.',\n email: 'Format should match example@example.com.'\n },\n es: {\n required: 'El campo es obligatorio.',\n min: 'El valor mínimo es $min.',\n max: 'El valor máximo es $max.',\n email: 'El campo debe tener un formato como ejemplo@ejemplo.com.'\n }\n };\n\n public domain: string;\n @Input()\n public rows?: number | string;\n @Input()\n public cols?: number | string;\n @Input()\n public step?: number;\n @Input()\n public min?: number | string;\n @Input()\n public max?: number | string;\n\n get className(): string {\n return this.checkClassName();\n }\n\n @Input() lang = languageDetector();\n @Input() public inlineErrors = false;\n @Input() public inputId: string;\n @Input('aria-label') public ariaLabel: string;\n @Input() public readonly: boolean | null = null;\n\n @Input()\n set disabled(v: string | boolean) {\n v = typeof v === 'string' ? true : v;\n this._disabled = v;\n }\n get disabled(): string | boolean {\n return this._disabled;\n }\n\n @Input()\n set currency(v: string) {\n this._currency = v.toUpperCase();\n }\n get currency(): string {\n return this._currency;\n }\n\n @Input()\n set placeholder(v: string) {\n this._placeholder = v;\n }\n get placeholder(): string {\n return this._placeholder ? this._placeholder : '';\n }\n\n @Input()\n set required(v: boolean) {\n this._required = v;\n }\n get required(): boolean {\n return this._required;\n }\n\n @Input()\n set type(v: string) {\n this._type = v.toLowerCase();\n this.domain = v.toLowerCase();\n this.checkType(v);\n }\n get type(): string {\n return this._type ? this._type : 'text';\n }\n\n @Input()\n set value(v: any) {\n v = v === undefined ? null : v;\n if (v === this._value) {\n return; // prevent events when there is no changes\n }\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\n if (this.type === 'date') {\n v = normalizeDate(v);\n }\n\n this._value = v;\n this.onChange(v);\n if (!initialAndEmpty) {\n this.valueChange.emit(v);\n }\n }\n get value(): any {\n if (this.isPercentage() || this.isPermillage() || this.isNumber()) {\n const numVal = parseFloat(this._value);\n if (!Number.isNaN(numVal)) {\n return numVal;\n }\n }\n return this._value;\n }\n @Output() valueChange = new EventEmitter<any>();\n @Output() keyPress = new EventEmitter<KeyboardEvent>();\n\n onChange = (value): void => {};\n onTouched = (): void => {};\n\n constructor() {}\n\n // ControlValueAccessor Interface implementation\n writeValue(value: any): void {\n this.value = value;\n this.setValueInControl(value);\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End of ControlValueAccessor Interface implementation\n\n private setValueInControl(v: any): void {\n if (this.domain === 'date') {\n v = normalizeDate(v);\n }\n if (this.input) {\n this.input.nativeElement.value = v;\n }\n if (this.textarea) {\n this.textarea.nativeElement.value = v;\n }\n }\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n let result: ValidationErrors | null = null;\n\n if (this.required && !hasValue(hasValue)) {\n result = result || {};\n result.required = { value, reason: 'Required field.' };\n }\n if (this.type === 'email' && hasValue(value) && !isValidEmail(value)) {\n result = result || {};\n result.email = { value, reason: 'Invalid email.' };\n }\n if (this.type === 'number' && hasValue(value) && !isValidNumber(value)) {\n result = result || {};\n result.numeric = { value, reason: 'Invalid number.' };\n }\n if (\n this.type === 'date' ||\n this.type === 'time' ||\n this.type === 'timestamp'\n ) {\n if (\n typeof this.min === 'string' &&\n hasValue(value) &&\n String(value).localeCompare(this.min) === -1\n ) {\n result = result || {};\n result.min = {\n value,\n min: this.min,\n reason: `Value is lower than minimum value: ${this.min}.`\n };\n }\n if (\n typeof this.max === 'string' &&\n hasValue(value) &&\n String(value).localeCompare(this.max) !== -1\n ) {\n result = result || {};\n result.max = {\n value,\n max: this.max,\n reason: `Value is greater than than maximum value: ${this.max}.`\n };\n }\n }\n\n if (\n this.type === 'percentage' ||\n this.type === 'permillage' ||\n this.type === 'number' ||\n this.type === 'currency'\n ) {\n if (hasValue(this.min) && hasValue(value) && value < +this.min) {\n result = result || {};\n result.min = {\n value,\n min: this.min,\n reason: `Value is lower than minimum value: ${this.min}.`\n };\n }\n if (hasValue(this.max) && hasValue(value) && value > +this.max) {\n result = result || {};\n result.max = {\n value,\n max: this.max,\n reason: `Value is greater than than maximum value: ${this.max}.`\n };\n }\n }\n this.lastErrors = result;\n return result;\n }\n // End of Validator interface\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `${this.type}$${InputComponent.idCounter++}`;\n }\n\n onKeyUp(newValue: string): void {\n this.value = newValue;\n }\n onChangeValue(newValue: string): void {\n this.value = newValue;\n this.markAsTouched();\n }\n onKeyPress(event: KeyboardEvent): void {\n this.keyPress.emit(event);\n }\n\n isNumber(): boolean {\n return this.type === 'number';\n }\n isPercentage(): boolean {\n return this.type === 'percentage';\n }\n isPermillage(): boolean {\n return this.type === 'permillage';\n }\n\n checkClassName(): string {\n if (this.readonly === true) {\n return 'readonly';\n }\n return '';\n }\n\n checkType(type: string): void {\n switch (type) {\n case 'email':\n this.setEmailPatterns();\n break;\n case 'date':\n this.setDatePatterns();\n break;\n case 'time':\n this.setTimePatterns();\n break;\n case 'password':\n this.setPasswordPatterns();\n break;\n case 'number':\n this.setNumberPatterns();\n break;\n case 'currency':\n this.setCurrencyPatterns();\n break;\n case 'percentage':\n this.setPercentagePatterns();\n break;\n case 'permillage':\n this.setPermillagePatterns();\n break;\n default:\n break;\n }\n }\n\n setEmailPatterns(): void {}\n\n setDatePatterns(): void {\n this.min = this.min || '1900-01-01';\n this.max = this.max || '2100-01-01';\n }\n\n setTimePatterns(): void {}\n\n setPasswordPatterns(): void {}\n\n setNumberPatterns(): void {\n this.domain = 'number';\n this.placeholder = '0';\n }\n\n setCurrencyPatterns(): void {\n this.domain = 'number';\n this.step = this.step || 0.1;\n this.min = this.min || 0.0;\n this.max = this.max || 10000.0;\n this.value = 0.0;\n }\n\n setPercentagePatterns(): void {\n this.domain = 'number';\n this.step = this.step || 0.01;\n this.min = this.min || 0.0;\n this.max = this.max || 100.0;\n this.placeholder = '0.00';\n }\n\n setPermillagePatterns(): void {\n this.domain = 'number';\n this.step = this.step || 0.01;\n this.min = this.min || 0.0;\n this.max = this.max || 1000.0;\n this.placeholder = '0.00';\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnDestroy,\n OnInit,\n forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject, Observable, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n/** Filter component to query for objects. */\n@Component({\n selector: 'lux-filter',\n templateUrl: './filter.component.html',\n styleUrls: ['./filter.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => FilterComponent)\n }\n ]\n})\nexport class FilterComponent\n implements ControlValueAccessor, OnInit, OnDestroy\n{\n static idCounter = 0;\n\n private touched = false;\n private _searchValue = '';\n\n @Input() disabled = false;\n /** id for the input. If left blank, it is autogenerated */\n @Input() inputId: string;\n /** Placeholder default text. */\n @Input() placeholder = '';\n /** Search value introduced by the user. */\n @Input()\n get searchValue(): string {\n return this._searchValue;\n }\n set searchValue(v: string) {\n v = (v || '').toString();\n if (v === this._searchValue) {\n return;\n }\n this.onChange(v);\n this._searchValue = v;\n }\n /** Search on type: (default true) Auto-search when user types in. */\n @Input() searchOnType = true;\n /** Custom aria label in case of not using a label */\n @Input('aria-label') ariaLabel: string;\n\n private debounceValue = 300; // 300 ms\n /** Debounce time in milliseconds. (defaults to 300 ms) */\n @Input()\n set debounce(val: number) {\n this.debounceValue = val;\n this.recreateObservable();\n }\n get debounce(): number {\n return this.debounceValue;\n }\n\n /** Search value changed by user. */\n @Output() searchValueChange = new EventEmitter<string>();\n\n searchValue$: Observable<string>;\n\n private subject = new Subject<string>();\n private sub: Subscription;\n\n constructor() {\n this.recreateObservable();\n }\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n writeValue(value: any): void {\n this.searchValue = (value || '').toString();\n }\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `filter$${FilterComponent.idCounter++}`;\n }\n ngOnDestroy(): void {\n this.freeSubscriptions();\n }\n clear(): void {\n this.searchValue = '';\n this.search();\n }\n search(): void {\n this.searchValueChange.emit(this.searchValue);\n }\n keyup(event: KeyboardEvent, newValue: string): void {\n this.markAsTouched();\n this.searchValue = newValue;\n if (event.key === 'Enter') {\n this.searchNow(this.searchValue);\n }\n if (this.searchOnType) {\n this.addEvent();\n }\n }\n onInputValueChange(newValue: string): void {\n this.markAsTouched();\n this.searchValue = newValue;\n }\n\n private recreateObservable(): void {\n this.searchValue$ = this.subject\n .asObservable()\n .pipe(debounceTime(this.debounce));\n\n this.freeSubscriptions();\n this.sub = this.searchValue$.subscribe((value) => {\n this.searchValueChange.emit(value);\n });\n }\n private freeSubscriptions(): void {\n if (this.sub) {\n this.sub.unsubscribe();\n this.sub = null;\n }\n }\n private searchNow(value: string): void {\n this.searchValueChange.emit(value);\n }\n private addEvent(): void {\n this.subject.next(this.searchValue);\n }\n}\n","import { ComponentRef } from '@angular/core';\nimport { LuxModalWindowComponent } from './modal-window';\nimport { ContentRef } from './util';\nimport { LuxModalBackdropComponent } from './modal-backdrop';\n\nexport class ActiveModal {\n close(result?: any): void {}\n dismiss(reason?: any): void {}\n}\n\nexport class ModalRef {\n private _resolve: (result?: any) => void;\n private _reject: (reason?: any) => void;\n\n /**\n * The instance of a component used for the modal content.\n *\n * When a `TemplateRef` is used as the content, will return `undefined`.\n */\n get componentInstance(): any {\n if (this._contentRef.componentRef) {\n return this._contentRef.componentRef.instance;\n }\n }\n\n /**\n * The promise that is resolved when the modal is closed and rejected when the modal is dismissed.\n */\n result: Promise<any>;\n\n constructor(\n private _windowCmptRef: ComponentRef<LuxModalWindowComponent>,\n private _contentRef: ContentRef,\n private _backdropCmptRef?: ComponentRef<LuxModalBackdropComponent>,\n private _beforeDismiss?: () => any\n ) {\n _windowCmptRef.instance.dismissEvent.subscribe((reason: any) => {\n this.dismiss(reason);\n });\n\n this.result = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n this.result.then(null, () => {});\n }\n\n /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\n */\n close(result?: any): void {\n if (this._windowCmptRef) {\n if (this._resolve) {\n this._resolve(result);\n }\n this._removeModalElements();\n }\n }\n\n private _dismiss(reason?: any): void {\n if (this._reject) {\n this._reject(reason);\n }\n this._removeModalElements();\n }\n\n /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n */\n dismiss(reason?: any): void {\n if (this._windowCmptRef) {\n if (!this._beforeDismiss) {\n this._dismiss(reason);\n } else {\n const dismiss = this._beforeDismiss();\n if (dismiss && dismiss.then) {\n dismiss.then(\n (result) => {\n if (result !== false) {\n this._dismiss(reason);\n }\n },\n () => {}\n );\n } else if (dismiss !== false) {\n this._dismiss(reason);\n }\n }\n }\n }\n\n private _removeModalElements(): void {\n const windowNativeEl = this._windowCmptRef.location.nativeElement;\n windowNativeEl.parentNode.removeChild(windowNativeEl);\n this._windowCmptRef.destroy();\n\n if (this._backdropCmptRef) {\n const backdropNativeEl = this._backdropCmptRef.location.nativeElement;\n backdropNativeEl.parentNode.removeChild(backdropNativeEl);\n this._backdropCmptRef.destroy();\n }\n\n if (this._contentRef && this._contentRef.viewRef) {\n this._contentRef.viewRef.destroy();\n }\n\n this._windowCmptRef = null;\n this._backdropCmptRef = null;\n this._contentRef = null;\n }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { ViewRef, ComponentRef } from '@angular/core';\nimport { fromEvent, Observable } from 'rxjs';\nimport { filter, map, takeUntil, withLatestFrom } from 'rxjs/operators';\n\nexport const FOCUS = 'focus';\n\nexport enum Key {\n Tab = 9,\n Enter = 13,\n Escape = 27,\n Space = 32,\n PageUp = 33,\n PageDown = 34,\n End = 35,\n Home = 36,\n ArrowLeft = 37,\n ArrowUp = 38,\n ArrowRight = 39,\n ArrowDown = 40\n}\n\nexport const isDefined = (value: any): boolean =>\n value !== undefined && value !== null;\n\nexport class ContentRef {\n constructor(\n public nodes: any[],\n public viewRef?: ViewRef,\n public componentRef?: ComponentRef<any>\n ) {}\n}\n\nconst FOCUSABLE_ELEMENTS_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled]):not([type=\"hidden\"])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[contenteditable]',\n '[tabindex]:not([tabindex=\"-1\"])'\n].join(', ');\n\n/**\n * Returns first and last focusable elements inside of a given element based on specific CSS selector\n */\nexport const getFocusableBoundaryElements = (\n element: HTMLElement\n): HTMLElement[] => {\n const list: HTMLElement[] = Array.from(\n element.querySelectorAll(\n FOCUSABLE_ELEMENTS_SELECTOR\n ) as NodeListOf<HTMLElement>\n ).filter((el) => el.tabIndex !== -1);\n return [list[0], list[list.length - 1]];\n};\n\n/**\n * Function that enforces browser focus to be trapped inside a DOM element.\n *\n * Works only for clicks inside the element and navigation with 'Tab', ignoring clicks outside of the element\n *\n * @param element The element around which focus will be trapped inside\n * @param stopFocusTrap$ The observable stream. When completed the focus trap will clean up listeners\n * and free internal resources\n * @param refocusOnClick Put the focus back to the last focused element whenever a click occurs on element (default to\n * false)\n */\nexport const focusTrap = (\n element: HTMLElement,\n stopFocusTrap$: Observable<any>,\n refocusOnClick = false\n): void => {\n // last focused element\n const lastFocusedElement$ = fromEvent<FocusEvent>(element, 'focusin').pipe(\n takeUntil(stopFocusTrap$),\n map((e) => e.target)\n );\n\n // 'tab' / 'shift+tab' stream\n fromEvent<KeyboardEvent>(element, 'keydown')\n .pipe(\n takeUntil(stopFocusTrap$),\n /* eslint-disable import/no-deprecated */\n filter((e) => e.which === Key.Tab),\n /* eslint-enable import/no-deprecated */\n withLatestFrom(lastFocusedElement$)\n )\n .subscribe(([tabEvent, focusedElement]) => {\n const [first, last] = getFocusableBoundaryElements(element);\n\n if (\n (focusedElement === first || focusedElement === element) &&\n tabEvent.shiftKey\n ) {\n last.focus();\n tabEvent.preventDefault();\n }\n\n if (focusedElement === last && !tabEvent.shiftKey) {\n first.focus();\n tabEvent.preventDefault();\n }\n });\n\n // inside click\n if (refocusOnClick) {\n fromEvent(element, 'click')\n .pipe(\n takeUntil(stopFocusTrap$),\n withLatestFrom(lastFocusedElement$),\n map((arr) => arr[1] as HTMLElement)\n )\n .subscribe((lastFocusedElement) => lastFocusedElement.focus());\n }\n};\n","export enum ModalDismissReasons {\n BackdropClick,\n Esc\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n HostBinding,\n HostListener\n} from '@angular/core';\n\nimport { getFocusableBoundaryElements, FOCUS } from './util';\nimport { ModalDismissReasons } from './modal-dismiss-reasons';\n\n@Component({\n selector: 'lux-modal-window',\n template: `\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\"><ng-content></ng-content></div>\n </div>\n `\n})\nexport class LuxModalWindowComponent\n implements OnInit, AfterViewInit, OnDestroy\n{\n private _elWithFocus: Element; // element that is focused prior to modal opening\n\n @Input() ariaDescribedBy: string;\n @Input() ariaLabelledBy: string;\n @Input() backdrop: boolean | string = false;\n @Input() keyboard = true;\n @Input() windowClass: string;\n\n @Output() dismissEvent = new EventEmitter();\n\n @HostBinding('class') get class(): string {\n return `modal ${this.windowClass || ''}`;\n }\n @HostBinding('attr.role') role = 'dialog';\n @HostBinding('tabindex') tabindex = '-1';\n @HostBinding('attr.aria-modal') ariamodal = true;\n @HostBinding('attr.aria-labelledby') get hostAriaLabelledBy(): string {\n return this.ariaLabelledBy;\n }\n @HostBinding('attr.aria-describedby') get hostAriaDescribedBy(): string {\n return this.ariaDescribedBy;\n }\n @HostListener('click', ['$event.target']) backdropClick(\n btn: HTMLElement\n ): void {\n if (this.backdrop === true && this._elRef.nativeElement === btn) {\n this.dismiss(ModalDismissReasons.BackdropClick);\n }\n }\n @HostListener('keyup.esc', ['$event']) escKey(event): void {\n if (this.keyboard && !event.defaultPrevented) {\n this.dismiss(ModalDismissReasons.Esc);\n }\n }\n\n constructor(\n @Inject(DOCUMENT) private _document: any,\n private _elRef: ElementRef<HTMLElement>\n ) {}\n\n dismiss(reason): void {\n this.dismissEvent.emit(reason);\n }\n\n ngOnInit(): void {\n this._elWithFocus = this._document.activeElement;\n }\n\n ngAfterViewInit(): void {\n if (!this._elRef.nativeElement.contains(document.activeElement)) {\n const firstFocusable = getFocusableBoundaryElements(\n this._elRef.nativeElement\n )[0];\n\n const elementToFocus = firstFocusable || this._elRef.nativeElement;\n elementToFocus.focus();\n }\n }\n\n ngOnDestroy(): void {\n const body = this._document.body;\n const elWithFocus = this._elWithFocus;\n\n let elementToFocus;\n if (elWithFocus && elWithFocus[FOCUS] && body.contains(elWithFocus)) {\n elementToFocus = elWithFocus;\n } else {\n elementToFocus = body;\n }\n elementToFocus.focus();\n this._elWithFocus = null;\n }\n}\n","import {Component, Input, HostBinding} from '@angular/core';\n\n@Component({\n selector: 'lux-modal-backdrop',\n template: ''\n})\nexport class LuxModalBackdropComponent {\n @Input() backdropClass: string;\n\n @HostBinding('class') class = 'modal-backdrop fade show';\n @HostBinding('style') style = 'z-index: 1050';\n}\n","import { Injectable } from '@angular/core';\n\nexport interface LuxModalOptions {\n ariaDescribedBy?: string;\n ariaLabelledBy?: string;\n backdrop?: boolean;\n keyboard?: boolean;\n windowClass?: string;\n backdropClass?: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class LuxModalConfig implements LuxModalOptions {\n backdrop = true;\n}\n","import {\n Injectable,\n ApplicationRef,\n ComponentFactoryResolver,\n TemplateRef,\n ComponentRef,\n Inject,\n Injector,\n RendererFactory2\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\nimport { ActiveModal, ModalRef } from './modal-ref';\nimport { ContentRef, focusTrap, isDefined } from './util';\nimport { LuxModalWindowComponent } from './modal-window';\nimport { Subject } from 'rxjs';\nimport { LuxModalBackdropComponent } from './modal-backdrop';\nimport { LuxModalOptions, LuxModalConfig } from './modal-config';\n\n@Injectable({ providedIn: 'root' })\nexport class ModalStack {\n private _activeWindowCmptHasChanged = new Subject();\n private _modalRefs: ModalRef[] = [];\n private _windowCmpts: ComponentRef<LuxModalWindowComponent>[] = [];\n private _ariaHiddenValues: Map<Element, string> = new Map();\n private _backdropAttributes = ['backdropClass'];\n private _windowAttributes = [\n 'ariaLabelledBy',\n 'backdrop',\n 'centered',\n 'keyboard',\n 'scrollable',\n 'size',\n 'windowClass'\n ];\n\n constructor(\n private _applicationRef: ApplicationRef,\n @Inject(DOCUMENT) private _document: any,\n private _injector: Injector,\n private _rendererFactory: RendererFactory2,\n private modalConfig: LuxModalConfig\n ) {\n this._activeWindowCmptHasChanged.subscribe(() => {\n if (this._windowCmpts.length) {\n const activeWindowCmpt =\n this._windowCmpts[this._windowCmpts.length - 1];\n focusTrap(\n activeWindowCmpt.location.nativeElement,\n this._activeWindowCmptHasChanged\n );\n this._revertAriaHidden();\n this._setAriaHidden(activeWindowCmpt.location.nativeElement);\n }\n });\n }\n\n open(\n moduleCFR: ComponentFactoryResolver,\n content: any,\n options: LuxModalOptions\n ): ModalRef {\n const config = Object.assign({}, this.modalConfig, options);\n const containerEl = this._document.body;\n const renderer = this._rendererFactory.createRenderer(null, null);\n const removeBodyClass = (): void => {\n if (!this._modalRefs.length) {\n renderer.removeClass(this._document.body, 'modal-open');\n this._revertAriaHidden();\n }\n };\n const activeModal = new ActiveModal();\n const contentRef = this.getContentRef(moduleCFR, content, activeModal);\n const backdropCmptRef: ComponentRef<LuxModalBackdropComponent> =\n config.backdrop ? this._attachBackdrop(moduleCFR, containerEl) : null;\n const windowCmptRef: ComponentRef<LuxModalWindowComponent> =\n this._attachWindowComponent(moduleCFR, containerEl, contentRef);\n const modalRef: ModalRef = new ModalRef(\n windowCmptRef,\n contentRef,\n backdropCmptRef\n );\n this._registerModalRef(modalRef);\n this._registerWindowCmpt(windowCmptRef);\n modalRef.result.then(removeBodyClass, removeBodyClass);\n activeModal.close = (result: any): void => {\n modalRef.close(result);\n };\n activeModal.dismiss = (reason: any): void => {\n modalRef.dismiss(reason);\n };\n\n this._applyWindowOptions(windowCmptRef.instance, config);\n if (this._modalRefs.length === 1) {\n renderer.addClass(this._document.body, 'modal-open');\n }\n if (backdropCmptRef && backdropCmptRef.instance) {\n this._applyBackgroundOptions(backdropCmptRef.instance, config);\n backdropCmptRef.changeDetectorRef.detectChanges();\n }\n windowCmptRef.changeDetectorRef.detectChanges();\n\n return modalRef;\n }\n\n private _applyWindowOptions(\n windowInstance: LuxModalWindowComponent,\n config: LuxModalOptions\n ): void {\n this._windowAttributes.forEach((optionName: string) => {\n if (isDefined(config[optionName])) {\n windowInstance[optionName] = config[optionName];\n }\n });\n }\n\n private _applyBackgroundOptions(\n backgroudInstance: LuxModalBackdropComponent,\n config: LuxModalOptions\n ): void {\n this._backdropAttributes.forEach((optionName: string) => {\n if (isDefined(config[optionName])) {\n backgroudInstance[optionName] = config[optionName];\n }\n });\n }\n\n private _revertAriaHidden(): void {\n this._ariaHiddenValues.forEach((value, element) => {\n if (value) {\n element.setAttribute('aria-hidden', value);\n } else {\n element.removeAttribute('aria-hidden');\n }\n });\n this._ariaHiddenValues.clear();\n }\n\n private getContentRef(\n moduleCFR: ComponentFactoryResolver,\n content: any,\n activeModal: ActiveModal\n ): ContentRef {\n if (content instanceof TemplateRef) {\n return this.createFromTemplateRef(content, activeModal);\n }\n }\n\n private createFromTemplateRef(\n content: TemplateRef<any>,\n activeModal: ActiveModal\n ): ContentRef {\n const context = {\n $implicit: activeModal,\n // eslint-disable-next-line prefer-arrow/prefer-arrow-functions\n close(result): void {\n activeModal.close(result);\n },\n // eslint-disable-next-line prefer-arrow/prefer-arrow-functions\n dismiss(reason): void {\n activeModal.dismiss(reason);\n }\n };\n const viewRef = content.createEmbeddedView(context);\n this._applicationRef.attachView(viewRef);\n return new ContentRef([viewRef.rootNodes], viewRef);\n }\n\n private _attachBackdrop(\n moduleCFR: ComponentFactoryResolver,\n containerEl: any\n ): ComponentRef<LuxModalBackdropComponent> {\n const backdropFactory = moduleCFR.resolveComponentFactory(\n LuxModalBackdropComponent\n );\n const backdropCmptRef = backdropFactory.create(this._injector);\n this._applicationRef.attachView(backdropCmptRef.hostView);\n containerEl.appendChild(backdropCmptRef.location.nativeElement);\n return backdropCmptRef;\n }\n\n private _attachWindowComponent(\n moduleCFR: ComponentFactoryResolver,\n containerEl: any,\n contentRef: any\n ): ComponentRef<LuxModalWindowComponent> {\n const windowFactory = moduleCFR.resolveComponentFactory(\n LuxModalWindowComponent\n );\n const windowCmptRef = windowFactory.create(\n this._injector,\n contentRef.nodes\n );\n this._applicationRef.attachView(windowCmptRef.hostView);\n containerEl.appendChild(windowCmptRef.location.nativeElement);\n return windowCmptRef;\n }\n\n private _registerModalRef(modalRef: ModalRef): void {\n const unregisterModalRef = (): void => {\n const index = this._modalRefs.indexOf(modalRef);\n if (index > -1) {\n this._modalRefs.splice(index, 1);\n }\n };\n this._modalRefs.push(modalRef);\n modalRef.result.then(unregisterModalRef, unregisterModalRef);\n }\n\n private _registerWindowCmpt(\n windowCmpt: ComponentRef<LuxModalWindowComponent>\n ): void {\n this._windowCmpts.push(windowCmpt);\n this._activeWindowCmptHasChanged.next();\n\n windowCmpt.onDestroy(() => {\n const index = this._windowCmpts.indexOf(windowCmpt);\n if (index > -1) {\n this._windowCmpts.splice(index, 1);\n this._activeWindowCmptHasChanged.next();\n }\n });\n }\n\n private _setAriaHidden(element: Element): void {\n const parent = element.parentElement;\n if (parent && element !== this._document.body) {\n Array.from(parent.children).forEach((sibling) => {\n if (sibling !== element && sibling.nodeName !== 'SCRIPT') {\n this._ariaHiddenValues.set(\n sibling,\n sibling.getAttribute('aria-hidden')\n );\n sibling.setAttribute('aria-hidden', 'true');\n }\n });\n this._setAriaHidden(parent);\n }\n }\n}\n","import {\n Injectable,\n ComponentFactoryResolver,\n TemplateRef,\n} from '@angular/core';\nimport { ModalStack } from './modal-stack';\nimport { ModalRef } from './modal-ref';\nimport { LuxModalOptions } from './modal-config';\n\n/**\n * A service that it allow open an close modal components\n */\n@Injectable({ providedIn: 'root' })\nexport class ModalService {\n constructor(\n private modalStack: ModalStack,\n private moduleCFR: ComponentFactoryResolver\n ) {}\n\n /**Open a modal component\n * @param content TemplateRef\n */\n open(content: TemplateRef<any>, options: LuxModalOptions = {}): ModalRef {\n return this.modalStack.open(this.moduleCFR, content, options);\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { DataSource } from '../datasource';\nimport { Observable, of, Subject } from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n map,\n switchMap\n} from 'rxjs/operators';\nimport { GeoPoint } from '../map/geopoint';\n\ninterface SearchResult {\n place_id: number;\n lat: number;\n lon: number;\n display_name: string;\n icon: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class GeolocationService {\n private debouncePeriodMs = 300; // ms\n private cacheSize = 20;\n private lastQueriesWithResults = new Map<string, SearchResult[]>();\n private lastQueriesLru: string[] = [];\n private currentSearch$: Subject<string>;\n private currentQuery$: Observable<SearchResult[]>;\n\n constructor(private http: HttpClient) {\n this.currentSearch$ = new Subject<string>();\n\n const typed$ = this.currentSearch$\n .asObservable()\n .pipe(distinctUntilChanged());\n\n this.currentQuery$ = typed$.pipe(\n debounceTime(this.debouncePeriodMs),\n\n switchMap((currentQuery) => {\n const data = this.getFromCache(currentQuery);\n if (data !== undefined) {\n return of(data);\n }\n // Nominatim search documentation:\n // https://nominatim.org/release-docs/develop/api/Search/\n const url =\n 'https://nominatim.openstreetmap.org/search?format=json&limit=20&q=' +\n encodeURIComponent(currentQuery);\n const headers = {\n 'Content-Type': 'application/json'\n };\n this.addToCache(currentQuery, []);\n\n return this.http.get(url, { headers }).pipe(\n map((response) => {\n const searchResults = response as unknown as SearchResult[];\n const uniqueResults = distinct(searchResults);\n return this.addToCache(currentQuery, uniqueResults);\n })\n );\n })\n );\n }\n\n searchGeolocation(query: string): Observable<SearchResult[]> {\n this.currentSearch$.next(query);\n return this.currentQuery$;\n }\n\n getLabels(\n instance: GeolocationService,\n keys: GeoPoint[]\n ): Observable<DataSource<GeoPoint, string>> {\n const searchResults = instance.lastQueriesWithResults\n .get(instance.getLatestQuery())\n .filter((searchResult) => samePosition(searchResult, keys));\n return of(\n searchResults.map((searchResult) => {\n const key: GeoPoint = {\n type: 'Point',\n coordinates: [searchResult.lon, searchResult.lat]\n };\n return {\n key,\n label: searchResult.display_name\n };\n })\n );\n }\n\n getData(\n instance: GeolocationService,\n search: string\n ): Observable<DataSource<GeoPoint, string>> {\n return instance.searchGeolocation(search).pipe(\n map((searchResults) =>\n searchResults.map((searchResult) => {\n const key: GeoPoint = {\n type: 'Point',\n coordinates: [searchResult.lon, searchResult.lat]\n };\n const label = searchResult.display_name;\n return { key, label };\n })\n )\n );\n }\n\n // Cache implemementation ---\n private getFromCache(query: string): SearchResult[] {\n if (this.lastQueriesWithResults.has(query)) {\n return this.lastQueriesWithResults.get(query);\n }\n return undefined;\n }\n private addToCache(query: string, data: SearchResult[]): SearchResult[] {\n if (this.lastQueriesWithResults.keys.length >= this.cacheSize) {\n const deletedQuery = this.lastQueriesLru[0];\n this.revomeFromCache(deletedQuery);\n }\n this.lastQueriesWithResults.set(query, data);\n this.lastQueriesLru.push(query);\n return data;\n }\n private revomeFromCache(query: string): void {\n this.lastQueriesWithResults.delete(query);\n const index = this.lastQueriesLru.findIndex((it) => it === query);\n this.lastQueriesLru.splice(index, 1);\n }\n private getLatestQuery(): string | null {\n return this.lastQueriesLru.length\n ? this.lastQueriesLru[this.lastQueriesLru.length - 1]\n : null;\n }\n // End cache implemementation ---\n}\n\nconst samePosition = (\n searchResult: SearchResult,\n keys: GeoPoint[]\n): boolean => {\n let found = false;\n keys.forEach((item) => {\n if (\n searchResult.lon === item.coordinates[0] &&\n searchResult.lat === item.coordinates[1]\n ) {\n found = true;\n }\n });\n return found;\n};\n\nconst distinct = (data: SearchResult[]): SearchResult[] => {\n const unique: { [key: string]: number } = {};\n return data.filter((r) => {\n if (unique[r.display_name]) {\n return false;\n }\n unique[r.display_name] = 1;\n return true;\n });\n};\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n ElementRef,\n ViewChild,\n forwardRef,\n TemplateRef\n} from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR,\n AbstractControl,\n ValidationErrors,\n NG_VALIDATORS\n} from '@angular/forms';\nimport { DataSource } from '../datasource';\nimport {\n isInitialAndEmpty,\n isValidNumber,\n roundToMultipleOf\n} from '../helperFns';\nimport { languageDetector } from '../lang';\nimport { ModalService } from '../modal/modal.service';\nimport { GeoPoint } from '../map/geopoint';\nimport { Observable } from 'rxjs';\nimport { GeolocationService } from './geolocation.service';\n\n@Component({\n selector: 'lux-geolocation',\n templateUrl: './geolocation.component.html',\n styleUrls: ['./geolocation.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => GeolocationComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => GeolocationComponent)\n }\n ]\n})\nexport class GeolocationComponent implements OnInit {\n static idCounter = 0;\n\n @ViewChild('latitude', { static: true }) latitude: ElementRef;\n @ViewChild('longitude', { static: true }) longitude: ElementRef;\n\n touched = false;\n dirty = false;\n lastErrors: ValidationErrors | null = null;\n\n private _disabled: string | boolean;\n private _required: boolean;\n private _value: any;\n\n public latitudeValue?: number = null;\n public longitudeValue?: number = null;\n\n isValidNumber = isValidNumber;\n\n public userErrors = {\n en: {\n required: 'Required field.',\n minLatitude: 'Minimum latitude is $minLatitude.',\n maxLatitude: 'Maximum latitude is $maxLatitude.',\n minLongitude: 'Minimum longitude is $minLongitude.',\n maxLongitude: 'Maximum longitude is $maxLongitude.'\n },\n es: {\n required: 'El campo es obligatorio.',\n minLatitude: 'La latitud mínima es $minLatitude.',\n maxLatitude: 'La latitud máxima es $maxLatitude.',\n minLongitude: 'La longitud mínima es $minLongitude.',\n maxLongitude: 'La longitud máxima es $maxLongitude.'\n }\n };\n\n public cardinalPoints = {\n en: {\n north: 'N',\n south: 'S',\n east: 'E',\n west: 'W',\n unknown: '?'\n },\n es: {\n north: 'N',\n south: 'S',\n east: 'E',\n west: 'O',\n unknown: '?'\n }\n };\n\n @Input()\n public minLatitude: number;\n @Input()\n public maxLatitude: number;\n @Input()\n public minLongitude: number;\n @Input()\n public maxLongitude: number;\n @Input()\n public step: number;\n @Input()\n public zoom: number;\n\n get className(): string {\n return this.checkClassName();\n }\n\n @Input() lang = languageDetector();\n @Input() public inlineErrors = false;\n @Input() public inputId: string;\n @Input('aria-label') public ariaLabel: string;\n @Input() public readonly: boolean | null = null;\n\n @Input()\n set disabled(v: string | boolean) {\n v = typeof v === 'string' ? true : v;\n this._disabled = v;\n }\n get disabled(): string | boolean {\n return this._disabled;\n }\n\n @Input()\n set required(v: boolean) {\n this._required = v;\n }\n get required(): boolean {\n return this._required;\n }\n\n @Input()\n set value(v: GeoPoint) {\n if (v === this._value) {\n return; // prevent events when there is no changes\n }\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\n if (v.coordinates && v.coordinates.length === 2) {\n this._value = v;\n this.latitudeValue = v.coordinates[1];\n this.longitudeValue = v.coordinates[0];\n this.setLatitudeInControl(this.latitudeValue);\n this.setLongitudeInControl(this.longitudeValue);\n } else {\n this._value = undefined;\n this.latitudeValue = undefined;\n this.longitudeValue = undefined;\n this.setLatitudeInControl(this.latitudeValue);\n this.setLongitudeInControl(this.longitudeValue);\n }\n this.onChange(v);\n if (!initialAndEmpty) {\n this.valueChange.emit(v);\n }\n }\n get value(): GeoPoint {\n return this._value;\n }\n\n @Output() valueChange = new EventEmitter<GeoPoint>();\n @Output() keyPress = new EventEmitter<KeyboardEvent>();\n\n onChange = (value: any): void => {};\n onTouched = (): void => {};\n\n constructor(\n private modalService: ModalService,\n public locationService: GeolocationService\n ) {}\n\n // ControlValueAccessor Interface implementation\n writeValue(value: any): void {\n this.value = value;\n this.setLatitudeInControl(this.latitudeValue);\n this.setLongitudeInControl(this.longitudeValue);\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End of ControlValueAccessor Interface implementation\n\n private setLatitudeInControl(latitude: number): void {\n this.latitude.nativeElement.value = latitude;\n }\n private setLongitudeInControl(longitude: number): void {\n this.longitude.nativeElement.value = longitude;\n }\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n let result: ValidationErrors | null = null;\n\n if (this.required && (value === null || value === undefined)) {\n result = result || {};\n result.required = { value, reason: 'Required field.' };\n }\n if (\n this.minLatitude !== undefined &&\n this.minLatitude !== null &&\n this.latitudeValue < this.minLatitude\n ) {\n result = result || {};\n result.minLatitude = {\n value,\n min: this.minLatitude,\n reason: `Value is lower than minimum value: ${this.minLatitude}.`\n };\n }\n if (\n this.maxLatitude !== undefined &&\n this.maxLatitude !== null &&\n this.latitudeValue < this.maxLatitude\n ) {\n result = result || {};\n result.maxLatitude = {\n value,\n max: this.maxLatitude,\n reason: `Value is lower than maximum value: ${this.maxLatitude}.`\n };\n }\n if (\n this.minLongitude !== undefined &&\n this.minLongitude !== null &&\n this.longitudeValue < this.minLongitude\n ) {\n result = result || {};\n result.minLongitude = {\n value,\n min: this.minLongitude,\n reason: `Value is lower than minimum value: ${this.minLongitude}.`\n };\n }\n if (\n this.maxLongitude !== undefined &&\n this.maxLongitude !== null &&\n this.longitudeValue < this.maxLongitude\n ) {\n result = result || {};\n result.maxLongitude = {\n value,\n max: this.maxLongitude,\n reason: `Value is lower than maximum value: ${this.maxLongitude}.`\n };\n }\n this.lastErrors = result;\n return result;\n }\n // End of Validator interface\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `geolocation$${GeolocationComponent.idCounter++}`;\n this.setPatterns();\n }\n\n updateLatitude(newLatitude: number | null): void {\n if (this.disabled || this.readonly) {\n return;\n }\n this.value = {\n type: 'Point',\n coordinates: [this.longitudeValue, newLatitude]\n };\n }\n updateLongitude(newLongitude: number | null): void {\n if (this.disabled || this.readonly) {\n return;\n }\n this.value = {\n type: 'Point',\n coordinates: [newLongitude, this.latitudeValue]\n };\n }\n updateLatitudeAndLongitude(newLatitudeAndLongitude: number[]): void {\n if (this.disabled || this.readonly) {\n return;\n }\n this.value = {\n type: 'Point',\n coordinates: newLatitudeAndLongitude\n };\n }\n\n roundToStepAndUpdateLatitudeAndLongitude(\n newLatitudeAndLongitude: number[]\n ): void {\n const newLatitude = roundToMultipleOf(\n newLatitudeAndLongitude[1],\n this.step\n );\n const newLongitude = roundToMultipleOf(\n newLatitudeAndLongitude[0],\n this.step\n );\n if (this.disabled || this.readonly) {\n return;\n }\n this.value = {\n type: 'Point',\n coordinates: [newLongitude, newLatitude]\n };\n }\n\n onEventLatitude(newLatitude: string): void {\n if (isValidNumber(newLatitude)) {\n this.updateLatitude(+newLatitude);\n }\n }\n onEventLongitude(newLongitude: string): void {\n if (isValidNumber(newLongitude)) {\n this.updateLongitude(+newLongitude);\n }\n }\n onKeyPress(event: KeyboardEvent): void {\n this.keyPress.emit(event);\n }\n\n checkClassName(): string {\n if (this.readonly === true) {\n return 'readonly';\n }\n return '';\n }\n\n openModalMap(modal: TemplateRef<any>): void {\n this.modalService.open(modal).result.then(\n (result) => {\n if (result !== 'cancel') {\n this.roundToStepAndUpdateLatitudeAndLongitude(result);\n }\n },\n (_) => {}\n );\n }\n\n get mapTitle(): string {\n return this._disabled || !!this.readonly ? 'Location:' : 'Select location:';\n }\n\n get self(): GeolocationComponent {\n return this;\n }\n\n getLabels(\n instance: GeolocationComponent,\n keys: GeoPoint[]\n ): Observable<DataSource<GeoPoint, string>> {\n return instance.locationService.getLabels(instance.locationService, keys);\n }\n\n getData(\n instance: GeolocationComponent,\n search: string\n ): Observable<DataSource<GeoPoint, string>> {\n return instance.locationService.getData(instance.locationService, search);\n }\n\n setPatterns(): void {\n this.step = this.step || 0.00001; // 0.00001 degrees = 1.11 meters\n this.zoom = this.zoom || 18; // (360/2^18) degrees ~ 0.00137 degrees ~ 153 meters\n this.minLatitude = this.minLatitude || -90;\n this.maxLatitude = this.maxLatitude || +90;\n this.minLongitude = this.minLongitude || -180;\n this.maxLongitude = this.maxLongitude || +180;\n }\n}\n","export enum Placement {\n Top = 'top',\n Bottom = 'bottom',\n Left = 'left',\n Right = 'right'\n}\nexport type PlacementValue = 'left' | 'right' | 'top' | 'bottom';\n","import { Component, Input } from '@angular/core';\nimport { LuxTooltipContext } from './tooltip-context';\n\n/**\n * Default Tooltip Component\n */\n@Component({\n template: `\n <span class=\"lux-tooltip\" style=\"transition: opacity 200ms\">{{context.message}}</span>\n `\n})\nexport class TooltipComponent {\n\n @Input() context: LuxTooltipContext;\n\n constructor() { }\n\n}\n","import { ViewRef, ComponentRef } from '@angular/core';\n\nexport class TooltipContentRef {\n constructor(public viewRef?: ViewRef, public componentRef?: ComponentRef<any>) {}\n}\n","import {\n Injectable,\n Injector,\n ComponentRef,\n ComponentFactoryResolver,\n ApplicationRef,\n EmbeddedViewRef,\n ElementRef,\n TemplateRef\n} from '@angular/core';\n\nimport { PlacementValue, Placement } from './placement';\nimport { LuxTooltipContext } from './tooltip-context';\nimport { TooltipComponent } from './tooltip.component';\nimport { TooltipContentRef } from './tooltop-content';\n\n@Injectable()\nexport class TooltipService {\n constructor(\n private _injector: Injector,\n private _crf: ComponentFactoryResolver,\n private _applicationRef: ApplicationRef\n ) {}\n\n appendComponentToBody(\n content: any,\n elHost: ElementRef,\n placement: PlacementValue\n ): TooltipContentRef {\n const tooltipContentRef = this.getTooltipContentRef(content);\n if (tooltipContentRef) {\n let domElem = (tooltipContentRef.viewRef as EmbeddedViewRef<any>)\n .rootNodes[0];\n document.body.appendChild(domElem);\n if (tooltipContentRef.componentRef) {\n tooltipContentRef.componentRef.changeDetectorRef.detectChanges();\n }\n domElem = this.setStyle(domElem, placement);\n domElem = this.setPosition(domElem, elHost, placement);\n return tooltipContentRef;\n }\n return null;\n }\n\n removeComponentFromBody(tooltipContentRef: TooltipContentRef): void {\n this._applicationRef.detachView(tooltipContentRef.viewRef);\n if (tooltipContentRef.componentRef) {\n tooltipContentRef.componentRef.destroy();\n }\n }\n\n private getTooltipContentRef(content: any): TooltipContentRef {\n if (!content) {\n // nothing to show\n } else if (content instanceof TemplateRef) {\n return this.createFromTemplateRef(content);\n } else if (typeof content === 'string') {\n return this.createFromComponent(TooltipComponent, { message: content });\n } else {\n return this.createFromComponent(content);\n }\n }\n\n private createFromTemplateRef(content: TemplateRef<any>): TooltipContentRef {\n const viewRef = content.createEmbeddedView({});\n this._applicationRef.attachView(viewRef);\n return new TooltipContentRef(viewRef);\n }\n\n private createFromComponent(\n component: any,\n context?: LuxTooltipContext\n ): TooltipContentRef {\n const componentRef: ComponentRef<any> = this._crf\n .resolveComponentFactory(component)\n .create(this._injector);\n if (context) {\n componentRef.instance.context = context;\n }\n this._applicationRef.attachView(componentRef.hostView);\n return new TooltipContentRef(componentRef.hostView, componentRef);\n }\n\n private setStyle(\n domElem: HTMLElement,\n placement: PlacementValue\n ): HTMLElement {\n domElem.style.position = 'absolute';\n domElem.style.minWidth = 'min-content';\n domElem.style.minHeight = 'min-content';\n const tooltipElement = this.getTooltipElementFromHTMLElemnt(domElem);\n placement =\n placement !== undefined\n ? (placement.toLocaleLowerCase() as PlacementValue)\n : 'top'; // 'Top' is the default value of placement\n tooltipElement.classList.add(`lux-tooltip-${placement}`);\n tooltipElement.classList.add('lux-tooltip-show');\n return domElem;\n }\n\n private getTooltipElementFromHTMLElemnt(domElem: HTMLElement): any {\n const elementsArray = Array.from(domElem.classList).filter(\n (className) => className === 'lux-tooltip'\n );\n if (elementsArray.length !== 0) {\n return domElem;\n } else if (domElem.hasChildNodes()) {\n const childrenArray = Array.from(domElem.children).filter(\n (child) =>\n this.getTooltipElementFromHTMLElemnt(child as HTMLElement) !== null\n );\n if (childrenArray.length !== 0) {\n return this.getTooltipElementFromHTMLElemnt(\n childrenArray[0] as HTMLElement\n );\n } else {\n return null;\n }\n } else {\n return null;\n }\n }\n\n private setPosition(\n domElem: HTMLElement,\n elHost: ElementRef,\n placement: PlacementValue\n ): HTMLElement {\n const hostPos = elHost.nativeElement.getBoundingClientRect();\n const tooltipPos = domElem.getBoundingClientRect();\n const scrollPos =\n window.pageYOffset ||\n document.documentElement.scrollTop ||\n document.body.scrollTop ||\n 0;\n let top = 0;\n let left = 0;\n const offset = 10;\n\n switch (placement) {\n case Placement.Bottom:\n top = hostPos.bottom + offset;\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\n break;\n case Placement.Left:\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\n left = hostPos.left - tooltipPos.width - offset;\n break;\n case Placement.Right:\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\n left = hostPos.right + offset;\n break;\n case Placement.Top:\n default:\n top = hostPos.top - tooltipPos.height - offset;\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\n break;\n }\n top = Math.max(0, top);\n left = Math.max(0, left);\n domElem.style.top = `${top + scrollPos}px`;\n domElem.style.left = `${left}px`;\n return domElem;\n }\n}\n","import { HostListener, Input, Directive, ElementRef } from '@angular/core';\n\nimport { TooltipService } from './tooltip.service';\nimport { PlacementValue } from './placement';\nimport { TooltipContentRef } from './tooltop-content';\n\n/**\n * Tooltip directive\n */\n@Directive({\n selector: '[luxTooltip]'\n})\nexport class LuxTooltipDirective {\n /** Tooltip title */\n @Input() luxTooltip: any;\n\n /** Component, TemplateRef or String */\n @Input() content: any;\n\n /** Placement */\n @Input() placement: PlacementValue;\n\n tooltipRef: TooltipContentRef;\n\n constructor(\n private elHost: ElementRef,\n private tooltipService: TooltipService\n ) {}\n\n @HostListener('mouseenter') onMouseEnter(): void {\n if (!this.tooltipRef) {\n this.tooltipRef = this.show(this.content, this.elHost, this.placement);\n }\n }\n\n @HostListener('mouseleave') onMouseLeave(): void {\n if (this.tooltipRef) {\n this.remove(this.tooltipRef);\n this.tooltipRef = null;\n }\n }\n\n @HostListener('click') onClick(): void {\n if (this.tooltipRef) {\n this.remove(this.tooltipRef);\n this.tooltipRef = null;\n }\n }\n\n show(\n component: any,\n elHost: ElementRef,\n placement: PlacementValue\n ): TooltipContentRef {\n return this.tooltipService.appendComponentToBody(\n component,\n elHost,\n placement\n );\n }\n\n remove(tooltipRef: TooltipContentRef): void {\n this.tooltipService.removeComponentFromBody(tooltipRef);\n }\n}\n","import { Component, OnInit, OnDestroy, Inject } from '@angular/core';\nimport {\n Router,\n NavigationEnd,\n ActivatedRoute,\n ActivatedRouteSnapshot\n} from '@angular/router';\nimport { filter } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\n\nexport interface BreadcrumbItem {\n label: string;\n url: string;\n}\n@Component({\n selector: 'lux-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss']\n})\nexport class LuxBreadcrumbComponent implements OnInit, OnDestroy {\n public breadcrumbs: BreadcrumbItem[];\n private subs: Subscription[] = [];\n public imagePath = '../assets/img/arrow-forward.svg';\n\n constructor(private route: Router, private activedRoute: ActivatedRoute) {}\n\n ngOnInit(): void {\n this.subs.push(\n this.route.events\n .pipe(filter((event) => event instanceof NavigationEnd))\n .subscribe((_) => {\n this.breadcrumbs = [];\n this.addBreadcrumbs(this.activedRoute.snapshot.root, true, null);\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subs.forEach((s) => s.unsubscribe());\n this.subs = [];\n }\n\n private addBreadcrumbs(\n activedRouteSnapshot: ActivatedRouteSnapshot,\n isRoot: boolean,\n urlPrefix: string\n ): void {\n const routeConfig = activedRouteSnapshot.routeConfig;\n let url = urlPrefix || '';\n url += routeConfig ? '/' + this.getUrl(activedRouteSnapshot) : '';\n const label = routeConfig\n ? this.getLabel(activedRouteSnapshot)\n : isRoot\n ? 'Home'\n : '';\n if (label && url !== '/') {\n const breadcrumb = { label, url };\n this.breadcrumbs.push(breadcrumb);\n }\n if (activedRouteSnapshot.children.length) {\n this.addBreadcrumbs(activedRouteSnapshot.children[0], false, url);\n }\n }\n\n private getUrl(activedRouteSnapshot: ActivatedRouteSnapshot): string {\n if (!activedRouteSnapshot.url[0]) {\n return '';\n }\n const id = activedRouteSnapshot.params.id;\n return id\n ? `${activedRouteSnapshot.url[0]}/${id}`\n : activedRouteSnapshot.routeConfig.path || '';\n }\n\n private getLabel(activedRouteSnapshot: ActivatedRouteSnapshot): string {\n const routeConfig = activedRouteSnapshot.routeConfig;\n if (!routeConfig) {\n return null;\n }\n if (activedRouteSnapshot.data && activedRouteSnapshot.data.title) {\n const data = activedRouteSnapshot.data;\n if (data.objectTitle) {\n return `${data.title} ${data.objectTitle}`;\n } else {\n return data.title;\n }\n }\n return activedRouteSnapshot.params.id || routeConfig.path;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { from, Observable, of } from 'rxjs';\n\nlet openLayersIsInstalled = false;\n\n@Injectable({ providedIn: 'root' })\nexport class OpenLayerLoaderService {\n load(): Observable<boolean> {\n if ((window as any).ol) {\n return of(true);\n }\n\n const openLayerJsUrl = 'https://openlayers.org/en/v5.3.0/build/ol.js';\n const openLayerCssUrl = 'https://openlayers.org/en/v5.3.0/css/ol.css';\n\n if (!openLayersIsInstalled) {\n openLayersIsInstalled = true; // only try to install it once\n loadCss(openLayerCssUrl, () => {});\n return from(\n new Promise<boolean>((resolve, _) => {\n loadScript(openLayerJsUrl, () => resolve(true));\n })\n );\n }\n return of(true);\n }\n}\n\n/** Dynamically load a script from url and return a callback */\nconst loadScript = (url: string, callback: () => void): void => {\n const script: any = document.createElement('script');\n script.type = 'text/javascript';\n\n if (script.readyState) {\n // for old IE\n script.onreadystatechange = (): void => {\n if (script.readyState === 'loaded' || script.readyState === 'complete') {\n script.onreadystatechange = null;\n callback();\n }\n };\n } else {\n // Others browsers\n script.onload = (): void => {\n callback();\n };\n }\n script.src = url;\n document.getElementsByTagName('head')[0].appendChild(script);\n};\n\n/** Dynamically load css from url and return a callback */\nconst loadCss = (url: string, callback: () => void): void => {\n const link: any = document.createElement('link');\n link.type = 'text/css';\n link.rel = 'stylesheet';\n link.type = 'text/javascript';\n link.href = url;\n link.onload = (): void => {\n callback();\n };\n document.getElementsByTagName('head')[0].appendChild(link);\n};\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n AfterViewInit\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { OpenLayerLoaderService } from '../geolocation/openlayer-loader.service';\n\nimport { GeoPoint } from './geopoint';\n\n// @dynamic\ndeclare const ol: any;\n\n@Component({\n selector: 'lux-map',\n templateUrl: './map.component.html',\n styleUrls: ['./map.component.scss']\n})\nexport class MapComponent implements OnInit, AfterViewInit {\n static idCounter = 0;\n\n private loaded$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n\n private _map: any;\n\n @Input() mapId;\n\n _zoom: number;\n @Input()\n set zoom(zoom: number) {\n if (!isNaN(zoom)) {\n this._zoom = zoom;\n if (this._map) {\n this._map.getView().setZoom(zoom);\n }\n }\n }\n get zoom(): number {\n return this._zoom;\n }\n\n _center: GeoPoint;\n @Input()\n set center(center: GeoPoint) {\n if (center) {\n if (center.coordinates && center.coordinates.length === 2) {\n this._center = center;\n if (this._map) {\n this._map.getView().setCenter(ol.proj.fromLonLat(center.coordinates));\n }\n }\n }\n }\n get center(): GeoPoint {\n return this._center;\n }\n\n _readonly: boolean;\n @Input()\n set readonly(readonly: boolean) {\n if (!readonly) {\n if (this._map) {\n this._map.on('click', (args: any) => {\n // args.coordinate is in EPSG:3857 (meters), we transform it into EPSG:4326 (degrees)\n const coordinates = ol.proj.toLonLat(args.coordinate);\n // alternatively: const lonLat = ol.proj.transform(args.coordinate,'EPSG:3857','EPSG:4326');\n this.addMarkerAtCoordinates(coordinates);\n });\n this._map.on('pointermove', (event: any) => {\n const pixel = this._map.getEventPixel(event.originalEvent);\n const hit = this._map.hasFeatureAtPixel(pixel);\n this._map.getViewport().style.cursor = hit ? 'move' : 'grab';\n });\n }\n } else {\n if (this._map) {\n this._map.on('click', (args: any) => {});\n this._map.on('pointermove', (event: any) => {});\n this._map.getViewport().style.cursor = 'grab';\n }\n }\n this._readonly = readonly;\n // reset marker coordinates so marker interactions can be created or recreated accordingly\n // to the changes to readonly\n this.markerCoordinates = this.markerCoordinates;\n }\n get readonly(): boolean {\n return this._readonly;\n }\n\n private _marker: any;\n private _markerInteraction: any;\n private _markerCoordinates: number[];\n @Input()\n private set markerCoordinates(markerCoordinates: number[]) {\n if (markerCoordinates && markerCoordinates.length === 2) {\n this._markerCoordinates = markerCoordinates;\n if (this._map) {\n this.addMarkerAtCoordinates(markerCoordinates);\n }\n } else {\n this._markerCoordinates = undefined;\n if (this._map) {\n this.removeMarker();\n }\n }\n }\n private get markerCoordinates(): number[] {\n return this._markerCoordinates;\n }\n @Input()\n set markerPoint(markerPoint: GeoPoint) {\n if (\n !markerPoint ||\n !(markerPoint.coordinates && markerPoint.coordinates.length === 2)\n ) {\n this.markerCoordinates = undefined;\n } else {\n this.markerCoordinates = [\n +markerPoint.coordinates[0],\n +markerPoint.coordinates[1]\n ];\n }\n this.valueChange.emit(markerPoint);\n }\n get markerPoint(): GeoPoint {\n return {\n type: 'Point',\n coordinates: this.markerCoordinates\n };\n }\n @Output() valueChange = new EventEmitter<GeoPoint>();\n\n private _markerSource: any;\n private _markerStyle: any;\n\n constructor(olLoader: OpenLayerLoaderService) {\n olLoader.load().subscribe((_) => {\n // Initialize\n this._markerSource = new ol.source.Vector();\n this._markerStyle = new ol.style.Style({\n image: new ol.style.Icon({\n anchor: [0.5, 1],\n scale: 0.25,\n src: '/assets/img/marker.png'\n })\n });\n this.loaded$.next(true);\n });\n }\n\n ngOnInit(): void {\n this.mapId = this.mapId ? this.mapId : 'map' + MapComponent.idCounter++;\n }\n\n ngAfterViewInit(): void {\n this.loaded$.subscribe((loaded) => {\n if (loaded) {\n this.initMap();\n }\n });\n }\n private initMap(): void {\n this._map = new ol.Map({\n target: this.mapId,\n controls: ol.control.defaults({ attribution: false }),\n layers: [\n new ol.layer.Tile({\n source: new ol.source.OSM()\n }),\n new ol.layer.Vector({\n source: this._markerSource,\n style: this._markerStyle\n })\n ],\n view: new ol.View({\n center: ol.proj.fromLonLat(\n this.center !== undefined ? this.center.coordinates : [0, 0]\n ),\n zoom: this.zoom\n })\n });\n\n if (this.center === undefined || this.center === null) {\n // if the center is not set, we set its default value\n if ('geolocation' in navigator) {\n navigator.geolocation.getCurrentPosition(\n (position) => {\n this.center = {\n type: 'Point',\n coordinates: [position.coords.longitude, position.coords.latitude]\n };\n },\n (error) => {\n this.center = {\n type: 'Point',\n coordinates: [0, 0]\n };\n }\n );\n } else {\n this.center = {\n type: 'Point',\n coordinates: [0, 0]\n };\n }\n } else {\n // the center needs the map to be properly set, so if it was set before the map was initialized,\n // we set the center again to perform necessary adjustements\n this.center = this.center;\n }\n\n if (this.zoom === undefined || this.zoom === null) {\n // if the zoom is not set, we set its default value\n this.zoom = 18;\n } else {\n // the zoom needs the map to be properly set, so if it was set before the map was initialized,\n // we set the zoom again to perform necessary adjustements\n this.zoom = this.zoom;\n }\n\n if (this.readonly === undefined || this.readonly === null) {\n // if readonly is not set, we set its default value\n this.readonly = false;\n } else {\n // readonly needs the map to be properly set, so if it was set before the map was initialized,\n // we set readonly again to perform necessary adjustements\n this.readonly = this.readonly;\n }\n\n if (\n this.markerCoordinates !== undefined &&\n this.markerCoordinates !== null\n ) {\n // the marker coordinates need the map to be properly set, so if they were set before the map was initialized,\n // we set the marker coordinates again to perform necessary adjustements\n this.markerCoordinates = this.markerCoordinates;\n }\n }\n\n private addMarkerAtCoordinates(coordinates: number[]): void {\n if (coordinates && coordinates.length === 2) {\n if (this._marker !== undefined) {\n this.removeMarker();\n }\n this._marker = new ol.Feature({\n geometry: new ol.geom.Point(\n // [lon, lat] is in EPSG:4326 (degrees), we transform it into EPSG:3857 (meters)\n ol.proj.transform(coordinates, 'EPSG:4326', 'EPSG:3857')\n )\n });\n this._markerSource.addFeature(this._marker);\n this._markerCoordinates = this.getMarkerCoordinates();\n\n if (!this.readonly) {\n const dragInteraction = new ol.interaction.Modify({\n features: new ol.Collection([this._marker]),\n style: this._markerStyle,\n pixelTolerance: 50,\n hitDetection: true\n });\n this._markerInteraction = dragInteraction;\n this._map.addInteraction(dragInteraction);\n }\n\n this._marker.on(\n 'change',\n () => {\n this._markerCoordinates = this.getMarkerCoordinates();\n },\n this._marker\n );\n }\n }\n\n private removeMarker(): void {\n if (this._marker !== undefined) {\n this._markerSource.removeFeature(this._marker);\n this._marker = undefined;\n }\n if (this._markerInteraction !== undefined) {\n this._map.getInteractions().pop();\n this._markerInteraction = undefined;\n }\n }\n\n private getMarkerCoordinates(): number[] | null {\n if (this._marker === undefined || this._marker == null) {\n return this._marker;\n }\n const coordinates = this._marker.getGeometry().getCoordinates();\n // coordinates is in EPSG:3857 (meters), we transform it into EPSG:4326 (degrees)\n return ol.proj.transform(coordinates, 'EPSG:3857', 'EPSG:4326');\n }\n\n onResize(): void {\n if (this._map) {\n this._map.updateSize();\n }\n }\n}\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\r\nimport { languageDetector } from '../lang';\r\nimport { PaginationInfo } from './pagination';\r\n\r\n@Component({\r\n selector: 'lux-pagination',\r\n templateUrl: './pagination.component.html',\r\n styleUrls: ['./pagination.component.scss']\r\n})\r\nexport class PaginationComponent implements OnInit {\r\n literals = {\r\n en: {\r\n first: 'First',\r\n previous: 'Previous',\r\n next: 'Next',\r\n last: 'Last'\r\n },\r\n es: {\r\n first: 'Primero',\r\n previous: 'Anterior',\r\n next: 'Siguiente',\r\n last: 'Último'\r\n }\r\n };\r\n\r\n public first: string;\r\n public previous: string;\r\n public next: string;\r\n public last: string;\r\n\r\n public showPagination = false;\r\n public hidePrevious = false;\r\n public lastPage = false;\r\n public totalPages = 0;\r\n public displayNextEllipsis = false;\r\n public displayPreviousEllipsis = false;\r\n\r\n public pages: number[] = [];\r\n\r\n @Output() goToPage = new EventEmitter<number>();\r\n @Output() pageSizeChange = new EventEmitter<number>();\r\n\r\n /** Current page, total items and items to show per page */\r\n private paginationInfoValue: PaginationInfo;\r\n\r\n private _lang: string;\r\n @Input()\r\n set lang(l: string) {\r\n if (l === this._lang) {\r\n return;\r\n }\r\n if (Object.keys(this.literals).includes(l)) {\r\n this._lang = l;\r\n } else {\r\n this._lang = 'en';\r\n }\r\n this.loadLanguage();\r\n }\r\n get lang(): string {\r\n return this._lang;\r\n }\r\n\r\n @Input()\r\n set paginationInfo(value: PaginationInfo) {\r\n this.paginationInfoValue = value;\r\n this.syncState();\r\n }\r\n get paginationInfo(): PaginationInfo {\r\n return this.paginationInfoValue;\r\n }\r\n\r\n constructor() {\r\n this.lang = languageDetector();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.calculatePages();\r\n }\r\n\r\n pageSizeChanged(pageSize: number): void {\r\n this.paginationInfo.pageSize = pageSize;\r\n this.syncState();\r\n this.pageSizeChange.emit(pageSize);\r\n }\r\n\r\n onPage(n: number): void {\r\n this.goToPage.emit(n);\r\n }\r\n\r\n onFirst(): void {\r\n this.goToPage.emit(0);\r\n }\r\n\r\n onLast(): void {\r\n this.goToPage.emit(this.totalPages - 1);\r\n }\r\n onNext(): void {\r\n const page = (this.paginationInfo.page || 0) + 1;\r\n this.goToPage.emit(page);\r\n }\r\n onPrevious(): void {\r\n const page = (this.paginationInfo.page || 0) - 1;\r\n this.goToPage.emit(page);\r\n }\r\n\r\n private syncState(): void {\r\n this.pages = this.calculatePages();\r\n\r\n this.showPagination =\r\n this.paginationInfo.total > this.paginationInfo.pageSize;\r\n this.hidePrevious = this.paginationInfo.page === 0;\r\n this.lastPage =\r\n this.paginationInfo.pageSize * (this.paginationInfo.page + 1) >=\r\n this.paginationInfo.total;\r\n this.totalPages =\r\n Math.ceil(this.paginationInfo.total / this.paginationInfo.pageSize) || 0;\r\n this.displayNextEllipsis = !this.pages.includes(this.totalPages - 1);\r\n this.displayPreviousEllipsis = !this.pages.includes(0);\r\n }\r\n\r\n private calculatePages(): number[] {\r\n const totalPages =\r\n Math.ceil(this.paginationInfo.total / this.paginationInfo.pageSize) - 1; // 0-index\r\n const p = this.paginationInfo.page || 0;\r\n const pagesToShow = this.paginationInfo.pagesToShow;\r\n const pages: number[] = [];\r\n pages.push(p);\r\n const times = pagesToShow - 1;\r\n for (let i = 0; i < times; i++) {\r\n if (pages.length < pagesToShow) {\r\n if (Math.min(...pages) > 0) {\r\n pages.unshift(Math.min(...pages) - 1);\r\n }\r\n }\r\n if (pages.length < pagesToShow) {\r\n if (Math.max(...pages) < totalPages) {\r\n pages.push(Math.max(...pages) + 1);\r\n }\r\n }\r\n }\r\n pages.sort((a, b) => a - b);\r\n return pages;\r\n }\r\n\r\n private loadLanguage(): void {\r\n const l = this.literals[this.lang];\r\n this.first = l.first;\r\n this.previous = l.previous;\r\n this.next = l.next;\r\n this.last = l.last;\r\n }\r\n}\r\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n Output\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport { isInitialAndEmpty } from '../helperFns';\n\nexport interface RadioItem {\n name?: string;\n label: string;\n value: any;\n}\n\n@Component({\n selector: 'lux-radiogroup',\n templateUrl: './radiogroup.component.html',\n styleUrls: ['./radiogroup.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => RadiogroupComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => RadiogroupComponent)\n }\n ]\n})\nexport class RadiogroupComponent implements ControlValueAccessor, Validator {\n private touched = false;\n\n @Input() name = 'radiogroup1';\n @Input() public disabled: boolean | null = false;\n @Input() public readonly: boolean | null = false;\n @Input() public required: boolean | null = false;\n\n @Input()\n set items(col: RadioItem[]) {\n this._items = (col || []).map((it, index) =>\n this.ensureHasUniqueName(it, index)\n );\n this.itemsChange.emit(col);\n }\n get items(): RadioItem[] {\n return this._items;\n }\n @Output() itemsChange = new EventEmitter<RadioItem[]>();\n\n @Input()\n set value(v: any) {\n if (v === this._value) {\n return;\n }\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\n this._value = v;\n this.onChange(v);\n if (!initialAndEmpty) {\n this.valueChange.emit(v);\n }\n }\n get value(): any {\n return this._value;\n }\n @Output() valueChange = new EventEmitter<any>();\n\n private _value: any = undefined;\n private _items: RadioItem[] = [];\n\n constructor() {}\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n writeValue(value: any): void {\n this.value = value;\n }\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n if (\n this.required &&\n (value === '' || value === null || value === undefined)\n ) {\n return { required: { value, reason: 'Required field.' } };\n }\n return null;\n }\n // End of Validator interface\n\n setValue(event: MouseEvent, item: RadioItem): void {\n if (!this.disabled && !this.readonly) {\n this.value = item.value;\n this.markAsTouched();\n }\n event.preventDefault();\n }\n ensureHasUniqueName(item: RadioItem, index: number): RadioItem {\n if (!item.name) {\n item.name = `${this.name}_${index}`;\n }\n return item;\n }\n}\n","import {\n Component,\n Input,\n EventEmitter,\n Output,\n forwardRef\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\n\nlet sequencer = 0;\n\n@Component({\n selector: 'lux-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => SelectComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => SelectComponent)\n }\n ]\n})\nexport class SelectComponent implements ControlValueAccessor, Validator {\n @Input() id = 'stringList' + sequencer++;\n @Input() disabled = false;\n @Input() required = false;\n /** Allow multiple elements */\n @Input() multiple = true;\n @Input() value: string[] = [];\n @Output() valueChange = new EventEmitter<string[]>();\n @Input() placeholder = 'Add new';\n /** If set, check there is no duplicates in the data. */\n @Input() unique = true;\n /** Validation function for new items. Returns error or null if valid */\n @Input() validateItem: (item: string) => string = (_) => null;\n\n newEntry = '';\n error = null;\n isValidNewEntry = false;\n\n private touched = false;\n\n constructor() {}\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n writeValue(value: any): void {\n this.value = value;\n }\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n if (\n this.required &&\n (value === '' || value === null || value === undefined)\n ) {\n return { required: { value, reason: 'Required field.' } };\n }\n return null;\n }\n // End of Validator interface\n\n get canAdd(): boolean {\n return this.multiple || this.value.length === 0;\n }\n add(val: string): void {\n this.value.push(val);\n this.newEntry = '';\n this.markAsTouched();\n this.valueChange.emit(this.value);\n }\n remove(index: number): void {\n if (this.value.length > index) {\n this.value.splice(index, 1);\n this.markAsTouched();\n this.valueChange.emit(this.value);\n }\n }\n onKeyPress(event: KeyboardEvent): void {\n if (event.key === 'Enter' && !this.error && this.newEntry !== '') {\n // Add on pressing Enter/Return\n this.markAsTouched();\n this.add(this.newEntry);\n }\n }\n onChangeNewEntry(newValue: string): void {\n this.markAsTouched();\n if (!newValue) {\n this.isValidNewEntry = false;\n this.error = null;\n return;\n }\n if (this.unique) {\n const found = (this.value || []).find((it) => it === newValue);\n this.isValidNewEntry = !found;\n this.error = found\n ? `Value '${newValue}' is already in. Cannot add duplicates.`\n : null;\n if (!this.isValidNewEntry) {\n return;\n }\n }\n this.error = this.validateItem(newValue);\n this.isValidNewEntry = !this.error;\n }\n}\n","import { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[luxVoiceRecognition]'\n})\nexport class VoiceRecognitionDirective implements OnInit {\n @Input() language: string;\n // See API at: https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition\n private recognition: any;\n private isRecognizing = false;\n private mic: any;\n\n constructor(private el: ElementRef, private renderer: Renderer2) {\n const speechRecognition = (window as any).webkitSpeechRecognition;\n if (speechRecognition) {\n this.recognition = new speechRecognition();\n }\n }\n\n ngOnInit(): void {\n if (this.recognition) {\n // API is available\n this.recognition.lang = this.language || window.navigator.language;\n this.recognition.interimResults = false;\n this.recognition.maxAlternatives = 1;\n\n // Add mic icon\n this.mic = document.createElement('div');\n this.mic.setAttribute('class', 'lux-microphone');\n\n const parent = this.el.nativeElement.parentElement;\n parent.appendChild(this.mic);\n\n // Add event handlers\n this.mic.onclick = (): void => this.microphoneClick();\n this.recognition.onresult = (event): void => this.onRecognized(event);\n }\n }\n\n microphoneClick(): void {\n if (this.isRecognizing) {\n // stop\n this.isRecognizing = false;\n this.renderer.removeClass(this.mic, 'lux-recording');\n this.recognition.abort();\n } else {\n // start\n this.el.nativeElement.value = getRecordingMessage(this.language);\n this.isRecognizing = true;\n this.renderer.addClass(this.mic, 'lux-recording');\n this.recognition.start();\n }\n }\n onRecognized(event: any): void {\n const recognizedText = event.results[0][0].transcript;\n this.isRecognizing = false;\n this.el.nativeElement.value = recognizedText;\n this.renderer.removeClass(this.mic, 'lux-recording');\n }\n}\n\nconst getRecordingMessage = (lang: string): string => {\n switch (lang.toLowerCase()) {\n case 'es':\n case 'es-es':\n return 'Grabando...';\n case 'en':\n case 'en-uk':\n case 'en-us':\n default:\n return 'Recording...';\n }\n};\n","\nimport { isPlatformBrowser } from '@angular/common';\n\nimport { ClassProvider, FactoryProvider, InjectionToken, PLATFORM_ID } from '@angular/core';\n\n/* Create a new injection token for injecting the window into a component. */\nexport const WINDOW = new InjectionToken('WindowToken');\n\n/* Define abstract class for obtaining reference to the global window object. */\nexport abstract class WindowRef {\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n get nativeWindow(): Window | Object {\n throw new Error('Not implemented.');\n }\n\n}\n\n/* Define class that implements the abstract class and returns the native window object. */\nexport class BrowserWindowRef extends WindowRef {\n\n constructor() {\n super();\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n get nativeWindow(): Window | Object {\n return window;\n }\n\n}\n\n/* Create an factory function that returns the native window object. */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const windowFactory = (browserWindowRef: BrowserWindowRef, platformId: Object): Window | Object => {\n if (isPlatformBrowser(platformId)) {\n return browserWindowRef.nativeWindow;\n }\n return new Object();\n};\n\n/* Create a injectable provider for the WindowRef token that uses the BrowserWindowRef class. */\nconst browserWindowProvider: ClassProvider = {\n provide: WindowRef,\n useClass: BrowserWindowRef\n};\n\n/* Create an injectable provider that uses the windowFactory function for returning the native window object. */\nconst windowProvider: FactoryProvider = {\n provide: WINDOW,\n useFactory: windowFactory,\n deps: [ WindowRef, PLATFORM_ID ]\n};\n\n/* Create an array of providers. */\nexport const WINDOW_PROVIDERS = [\n browserWindowProvider,\n windowProvider\n];\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { AngularResizedEventModule } from 'angular-resize-event';\nimport { AutocompleteComponent } from './autocomplete/autocomplete.component';\nimport { AutocompleteListComponent } from './autocomplete-list/autocomplete-list.component';\nimport { CheckboxComponent } from './checkbox/checkbox.component';\nimport { InputComponent } from './input/input.component';\nimport { FilterComponent } from './filter/filter.component';\nimport { GeolocationComponent } from './geolocation/geolocation.component';\nimport { HttpClientModule } from '@angular/common/http';\nimport { LuxTooltipDirective } from './tooltip/tooltip.directive';\nimport { LuxBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\nimport { LuxModalWindowComponent } from './modal/modal-window';\nimport { LuxModalBackdropComponent } from './modal/modal-backdrop';\nimport { MapComponent } from './map/map.component';\nimport { ModalService } from './modal/modal.service';\nimport { PaginationComponent } from './pagination/pagination.component';\nimport { RadiogroupComponent } from './radiogroup/radiogroup.component';\nimport { SelectComponent } from './select/select.component';\nimport { TooltipComponent } from './tooltip/tooltip.component';\nimport { TooltipService } from './tooltip/tooltip.service';\nimport { VoiceRecognitionDirective } from './voice-recognition/voice-recognition.directive';\nimport { WINDOW_PROVIDERS } from './window/window.service';\n\n@NgModule({\n declarations: [\n AutocompleteComponent,\n AutocompleteListComponent,\n FilterComponent,\n CheckboxComponent,\n InputComponent,\n GeolocationComponent,\n LuxTooltipDirective,\n LuxModalWindowComponent,\n LuxModalBackdropComponent,\n LuxBreadcrumbComponent,\n MapComponent,\n SelectComponent,\n TooltipComponent,\n PaginationComponent,\n RadiogroupComponent,\n VoiceRecognitionDirective\n ],\n entryComponents: [\n LuxModalWindowComponent,\n LuxModalBackdropComponent,\n TooltipComponent\n ],\n providers: [ModalService, TooltipService, WINDOW_PROVIDERS],\n imports: [\n AngularResizedEventModule,\n FormsModule,\n HttpClientModule,\n ReactiveFormsModule,\n RouterModule,\n CommonModule\n ],\n exports: [\n AutocompleteComponent,\n AutocompleteListComponent,\n FilterComponent,\n CheckboxComponent,\n InputComponent,\n GeolocationComponent,\n LuxTooltipDirective,\n LuxBreadcrumbComponent,\n LuxBreadcrumbComponent,\n MapComponent,\n SelectComponent,\n PaginationComponent,\n RadiogroupComponent,\n VoiceRecognitionDirective\n ]\n})\nexport class LuxModule {}\n","/*\n * Public API Surface of lux\n */\n\nexport { LuxModule } from './lib/lux.module';\nexport {\n DataSource,\n DataSourceItem,\n DecoratedDataSource,\n DecoratedDataSourceItem\n} from './lib/datasource';\nexport { AutocompleteComponent } from './lib/autocomplete/autocomplete.component';\nexport { AutocompleteListComponent } from './lib/autocomplete-list/autocomplete-list.component';\nexport {\n LuxBreadcrumbComponent,\n BreadcrumbItem\n} from './lib/breadcrumb/breadcrumb.component';\nexport { CheckboxComponent } from './lib/checkbox/checkbox.component';\nexport { FilterComponent } from './lib/filter/filter.component';\nexport { InputComponent } from './lib/input/input.component';\nexport { PaginationComponent } from './lib/pagination/pagination.component';\nexport { LuxTooltipDirective } from './lib/tooltip/tooltip.directive';\nexport { ModalService } from './lib/modal/modal.service';\nexport {\n RadioItem,\n RadiogroupComponent\n} from './lib/radiogroup/radiogroup.component';\nexport { ModalRef } from './lib/modal/modal-ref';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {GeolocationComponent as ɵa} from './lib/geolocation/geolocation.component';\nexport {GeolocationService as ɵd} from './lib/geolocation/geolocation.service';\nexport {OpenLayerLoaderService as ɵi} from './lib/geolocation/openlayer-loader.service';\nexport {MapComponent as ɵh} from './lib/map/map.component';\nexport {LuxModalBackdropComponent as ɵg} from './lib/modal/modal-backdrop';\nexport {LuxModalConfig as ɵc} from './lib/modal/modal-config';\nexport {ModalStack as ɵb} from './lib/modal/modal-stack';\nexport {LuxModalWindowComponent as ɵf} from './lib/modal/modal-window';\nexport {ContentRef as ɵr} from './lib/modal/util';\nexport {SelectComponent as ɵj} from './lib/select/select.component';\nexport {TooltipComponent as ɵk} from './lib/tooltip/tooltip.component';\nexport {TooltipService as ɵe} from './lib/tooltip/tooltip.service';\nexport {VoiceRecognitionDirective as ɵl} from './lib/voice-recognition/voice-recognition.directive';\nexport {BrowserWindowRef as ɵo,WINDOW as ɵm,WINDOW_PROVIDERS as ɵq,WindowRef as ɵn,windowFactory as ɵp} from './lib/window/window.service';"],"names":["EventEmitter","first","of","map","Component","NG_VALUE_ACCESSOR","forwardRef","NG_VALIDATORS","ChangeDetectorRef","ViewChild","Output","Input","Subject","debounceTime","fromEvent","takeUntil","filter","withLatestFrom","Inject","DOCUMENT","ElementRef","HostBinding","HostListener","Injectable","TemplateRef","ApplicationRef","Injector","RendererFactory2","ComponentFactoryResolver","distinctUntilChanged","switchMap","HttpClient","Directive","NavigationEnd","Router","ActivatedRoute","from","BehaviorSubject","Renderer2","InjectionToken","isPlatformBrowser","PLATFORM_ID","NgModule","AngularResizedEventModule","FormsModule","HttpClientModule","ReactiveFormsModule","RouterModule","CommonModule"],"mappings":"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"}
1
+ {"version":3,"file":"metadev-lux.umd.js","sources":["../../../projects/lux/src/lib/helperFns.ts","../../../projects/lux/src/lib/autocomplete/autocomplete.component.ts","../../../projects/lux/src/lib/lang.ts","../../../projects/lux/src/lib/autocomplete-list/autocomplete-list.component.ts","../../../projects/lux/src/lib/checkbox/checkbox.component.ts","../../../projects/lux/src/lib/input/input.component.ts","../../../projects/lux/src/lib/filter/filter.component.ts","../../../projects/lux/src/lib/modal/modal-ref.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/lux/src/lib/modal/util.ts","../../../projects/lux/src/lib/modal/modal-dismiss-reasons.ts","../../../projects/lux/src/lib/modal/modal-window.ts","../../../projects/lux/src/lib/modal/modal-backdrop.ts","../../../projects/lux/src/lib/modal/modal-config.ts","../../../projects/lux/src/lib/modal/modal-stack.ts","../../../projects/lux/src/lib/modal/modal.service.ts","../../../projects/lux/src/lib/geolocation/geolocation.service.ts","../../../projects/lux/src/lib/geolocation/geolocation.component.ts","../../../projects/lux/src/lib/tooltip/placement.ts","../../../projects/lux/src/lib/tooltip/tooltip.component.ts","../../../projects/lux/src/lib/tooltip/tooltop-content.ts","../../../projects/lux/src/lib/tooltip/tooltip.service.ts","../../../projects/lux/src/lib/tooltip/tooltip.directive.ts","../../../projects/lux/src/lib/breadcrumb/breadcrumb.component.ts","../../../projects/lux/src/lib/geolocation/openlayer-loader.service.ts","../../../projects/lux/src/lib/map/map.component.ts","../../../projects/lux/src/lib/pagination/pagination.component.ts","../../../projects/lux/src/lib/radiogroup/radiogroup.component.ts","../../../projects/lux/src/lib/select/select.component.ts","../../../projects/lux/src/lib/voice-recognition/voice-recognition.directive.ts","../../../projects/lux/src/lib/window/window.service.ts","../../../projects/lux/src/lib/lux.module.ts","../../../projects/lux/src/public-api.ts","../../../projects/lux/src/metadev-lux.ts"],"sourcesContent":["// undefined and null functions\r\n\r\nexport const exists = (value: any): boolean =>\r\n value !== null && value !== undefined;\r\n\r\nexport const hasValue = (value: any): boolean =>\r\n exists(value) && (typeof value === 'string' ? !isEmptyString(value) : true);\r\n\r\n// string functions\r\n\r\nexport const isEmptyString = (value: string): boolean => value.trim() === '';\r\n\r\nexport const isValidEmail = (value: string): boolean => {\r\n const re =\r\n /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/;\r\n return re.test(String(value).toLowerCase().trim());\r\n};\r\n\r\n// date functions\r\n\r\nexport const normalizeDate = (value: any): string => {\r\n if (typeof value === 'string' && value.length > 10) {\r\n return value.substr(0, 10);\r\n }\r\n return value ? value.toString() : null;\r\n};\r\n\r\n// number functions\r\n\r\nexport const isValidNumber = (\r\n value: string | number | undefined | null\r\n): boolean => (hasValue(value) ? !Number.isNaN(Number(value)) : false);\r\n\r\nexport const numberOfDecimalDigits = (\r\n x: number | string\r\n): number | undefined => {\r\n if (isValidNumber(x)) {\r\n const xString = String(Number(x));\r\n if (xString === 'Infinity') {\r\n return 0;\r\n }\r\n const indexOfE = xString.indexOf('e');\r\n if (indexOfE >= 0) {\r\n return 0;\r\n }\r\n const indexOfDecimalPoint = xString.indexOf('.');\r\n if (indexOfDecimalPoint < 0) {\r\n return 0;\r\n } else {\r\n return xString.length - indexOfDecimalPoint - 1;\r\n }\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const numberOfWholeDigits = (x: number | string): number | undefined => {\r\n if (isValidNumber(x)) {\r\n let xString = String(Number(x));\r\n if (xString.indexOf('-') === 0) {\r\n xString = xString.slice(1, xString.length);\r\n }\r\n if (xString === 'Infinity') {\r\n return Infinity;\r\n }\r\n if (xString.indexOf('0') === 0) {\r\n xString = xString.slice(1, xString.length);\r\n }\r\n const indexOfE = xString.indexOf('e');\r\n if (indexOfE >= 0) {\r\n return Number(xString.slice(indexOfE + 1, xString.length)) + 1;\r\n }\r\n const indexOfDecimalPoint = xString.indexOf('.');\r\n if (indexOfDecimalPoint < 0) {\r\n return xString.length;\r\n } else {\r\n return indexOfDecimalPoint;\r\n }\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const roundToMultipleOf = (x: number, modulo: number): number => {\r\n const moduloString = String(modulo);\r\n // approximates the result\r\n // prone to inexactitude because of floating point arithmetic\r\n const approximation = Math.round(x / modulo) * modulo;\r\n const approximationString = String(approximation);\r\n // remove useless decimals\r\n const uselessDecimalsInApproximation =\r\n numberOfDecimalDigits(approximationString) -\r\n numberOfDecimalDigits(moduloString);\r\n const resultString = approximationString.slice(\r\n 0,\r\n approximationString.length - uselessDecimalsInApproximation\r\n );\r\n return Number(resultString);\r\n};\r\n\r\n// other functions\r\n\r\nexport const isInitialAndEmpty = (\r\n previousValue: any,\r\n newValue: any\r\n): boolean => {\r\n const isPrevArray = Array.isArray(previousValue);\r\n const isNewArray = Array.isArray(newValue);\r\n return !(\r\n (isPrevArray ? previousValue.length !== 0 : Boolean(previousValue)) ||\r\n (isNewArray ? newValue.length !== 0 : Boolean(newValue))\r\n );\r\n};\r\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { debounceTime, first, map } from 'rxjs/operators';\n// Do not remove this import: needed in the template\nimport { ResizedEvent } from 'angular-resize-event';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport {\n DataSource,\n DataSourceItem,\n DecoratedDataSource,\n DecoratedDataSourceItem\n} from '../datasource';\nimport { isInitialAndEmpty } from '../helperFns';\n\n@Component({\n selector: 'lux-autocomplete',\n templateUrl: './autocomplete.component.html',\n styleUrls: ['./autocomplete.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => AutocompleteComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => AutocompleteComponent)\n }\n ]\n})\nexport class AutocompleteComponent\n implements ControlValueAccessor, Validator, OnInit, AfterViewInit\n{\n static idCounter = 0;\n\n @ViewChild('i0', { static: true }) i0: ElementRef;\n @ViewChild('completeDiv', { static: true }) completeDiv: ElementRef;\n\n private _dataSource: DataSource<any, string>;\n private _placeholder: string;\n private _value: any;\n\n showSpinner = false;\n touched = false;\n completionList: DecoratedDataSource = [];\n showCompletion = false;\n focusItem: DataSourceItem<any, string>;\n\n @Output() valueChange = new EventEmitter<any>();\n @Output() dataSourceChange = new EventEmitter<DataSource<any, string>>();\n\n @Input() public inputId: string;\n @Input() public disabled: boolean | null = null;\n @Input() public readonly: boolean | null = null;\n @Input() label = '';\n /** If canAddNewValues, user can type items not present in the data-source. */\n @Input() canAddNewValues = false;\n /** After cleaning the selection should the completion list remain open or closed:\n * false: (default) close on filters, to clean a filter and select all.\n * true: keep open (when the action most likely is to pick another one).\n */\n @Input() keepOpenAfterDelete = false;\n\n @Input()\n get value(): any {\n return this._value;\n }\n set value(v: any) {\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\n this._value = v;\n this.onChange(v);\n this.completeLabel();\n if (!initialAndEmpty) {\n this.valueChange.emit(v);\n }\n }\n @Input()\n get dataSource(): DataSource<any, string> {\n return this._dataSource;\n }\n set dataSource(v: DataSource<any, string>) {\n this._dataSource = v;\n this.dataSourceChange.emit(v);\n }\n @Input() required = false;\n\n @Input()\n set placeholder(v: string) {\n this._placeholder = v;\n }\n get placeholder(): string {\n return this._placeholder ? this._placeholder : '';\n }\n\n @Input() resolveLabelsFunction?: (\n instance: any,\n keys: any[]\n ) => Observable<DataSource<any, string>> = undefined;\n @Input() populateFunction?: (\n instance: any,\n search: string\n ) => Observable<DataSource<any, string>> = undefined;\n @Input() instance: any;\n\n constructor(private cd: ChangeDetectorRef) {}\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched && !this.disabled) {\n this.onTouched();\n this.touched = true;\n }\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n if (\n this.required &&\n (value === '' || value === null || value === undefined)\n ) {\n return { required: { value, reason: 'Required field.' } };\n }\n return null;\n }\n // End of Validator interface\n\n clear(): void {\n this.value = null;\n this.toggleCompletion(this.keepOpenAfterDelete, '');\n }\n\n private completeLabel(): void {\n if (this.value) {\n if (this.dataSource) {\n this.label = findLabelForId(this.dataSource, this.value) || '';\n } else if (this.instance && this.resolveLabelsFunction) {\n this.resolveLabelsFunction(this.instance, [this.value])\n .pipe(debounceTime(1), first())\n .subscribe((data) => {\n this.label = findLabelForId(data, this.value) || '';\n });\n }\n } else {\n this.label = '';\n }\n }\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `autocompletelist${AutocompleteComponent.idCounter++}`;\n this.completeLabel();\n }\n ngAfterViewInit(): void {\n this.setSameWidth();\n }\n onInputResized(): void {\n this.setSameWidth();\n }\n private setSameWidth(): void {\n const width = this.i0.nativeElement.getBoundingClientRect().width;\n this.completeDiv.nativeElement.style.width = `${width}px`;\n }\n\n onKeydown(event: KeyboardEvent, label: string): void {\n switch (event.key) {\n case 'Tab':\n if (label) {\n this.pickSelectionOrFirstMatch(label);\n }\n this.showCompletion = false;\n break;\n }\n this.markAsTouched();\n }\n onKeypress(event: KeyboardEvent, label: string): void {\n switch (event.key) {\n case 'Intro':\n case 'Enter':\n this.pickSelectionOrFirstMatch(label);\n event.preventDefault();\n break;\n }\n this.markAsTouched();\n }\n onKeyup(event: KeyboardEvent, label: string): void {\n switch (event.key) {\n case 'PageDown':\n this.focusOnNext(5);\n event.preventDefault();\n break;\n case 'ArrowDown':\n this.focusOnNext(1);\n event.preventDefault();\n break;\n case 'PageUp':\n this.focusOnPrevious(5);\n event.preventDefault();\n break;\n case 'ArrowUp':\n this.focusOnPrevious(1);\n event.preventDefault();\n break;\n case 'Escape':\n this.complete(null);\n event.preventDefault();\n break;\n case 'Intro':\n case 'Enter':\n event.preventDefault();\n break;\n default:\n this.showCompletionList(label);\n // event.preventDefault();\n }\n this.markAsTouched();\n }\n private focusOnNext(offset: number): void {\n const list = this.completionList || [];\n const index = list.findIndex(\n (it) => this.focusItem && it.key === this.focusItem.key\n );\n const next =\n index !== -1 && list.length > index + offset\n ? list[index + offset]\n : list[list.length - 1];\n this.focusItem = next;\n this.ensureItemVisible(index);\n }\n private focusOnPrevious(offset: number): void {\n const list = this.completionList || [];\n const index = list.findIndex(\n (it) => this.focusItem && it.key === this.focusItem.key\n );\n const next =\n index !== -1 && index > offset ? list[index - offset] : list[0];\n this.focusItem = next;\n this.ensureItemVisible(index);\n }\n onLostFocus(): void {\n setTimeout(() => {\n this.toggleCompletion(false, null);\n }, 200);\n }\n complete(item: DataSourceItem<Record<string, unknown>, string>): void {\n if (item !== null) {\n this.value = item.key;\n this.label = item.label;\n } else {\n this.value = null;\n this.label = '';\n }\n this.toggleCompletion(false, null);\n this.markAsTouched();\n }\n toggleCompletion(show: boolean, label: string): void {\n if (show && !this.disabled) {\n this.showCompletionList(label);\n } else {\n this.showCompletion = false;\n if (this.canAddNewValues) {\n this.syncCustomValue(this.label);\n return;\n }\n }\n this.cd.markForCheck();\n }\n\n get selectedOption(): string {\n const index = this.completionList.findIndex(\n (i) => i.key === this.focusItem.key\n );\n if (index === -1 || !this.focusItem) {\n return null;\n }\n return `${this.inputId}_${index}`;\n }\n\n private ensureItemVisible(index: number): void {\n const target = this.completeDiv.nativeElement.querySelectorAll('li')[index];\n if (target) {\n target.scrollIntoView({ block: 'center' });\n }\n }\n private syncCustomValue(text: string): void {\n this.value = text;\n this.label = text;\n }\n private pickSelectionOrFirstMatch(text: string): void {\n if (this.canAddNewValues) {\n this.syncCustomValue(text);\n return;\n }\n if (this.focusItem && this.focusItem.label) {\n this.complete(this.focusItem);\n return;\n }\n const source = (text || '').trim();\n if (source === '') {\n this.showCompletion = false;\n return;\n }\n this.completionList = [];\n this.computeCompletionList(source).subscribe((suggestions) => {\n this.complete(\n suggestions && suggestions.length > 0 ? suggestions[0] : null\n );\n });\n }\n private showCompletionList(text: string): void {\n this.setSameWidth();\n const useSpinner = this.hasExternalDataSource();\n this.spinnerVisibility(useSpinner, true);\n setTimeout(() => {\n // for spinner to be shown\n this.computeCompletionList(text).subscribe({\n next: (cl) => {\n this.completionList = cl;\n this.focusItem =\n this.completionList.length > 0 ? this.completionList[0] : null;\n this.showCompletion = true;\n this.spinnerVisibility(useSpinner, false);\n },\n error: () => {\n this.spinnerVisibility(useSpinner, false);\n },\n complete: () => {\n this.spinnerVisibility(useSpinner, false);\n }\n });\n }, 1);\n }\n private spinnerVisibility(useSpinner: boolean, value: boolean): void {\n if (useSpinner) {\n this.showSpinner = value;\n }\n }\n private hasExternalDataSource(): boolean {\n return !this.dataSource && !!this.instance && !!this.populateFunction;\n }\n private computeCompletionList(text: string): Observable<DecoratedDataSource> {\n const searchText = (text || '').toLowerCase();\n if (this.dataSource) {\n const ds = (this.dataSource || [])\n .filter((it) => ignoreAccentsInclude(it.label, searchText))\n .sort((a, b) => a.label.localeCompare(b.label));\n return of(decorateDataSource(ds, searchText));\n } else if (this.instance && this.populateFunction) {\n return this.populateFunction(this.instance, searchText).pipe(\n debounceTime(1),\n first(),\n map((ds) => {\n ds.filter((it) => ignoreAccentsInclude(it.label, searchText)).sort(\n (a, b) => a.label.localeCompare(b.label)\n );\n return decorateDataSource(ds, searchText);\n })\n );\n } else {\n return of([]);\n }\n }\n}\n\n/** Returns true if text includes substring. No accents considered. Ignorecase */\nconst ignoreAccentsInclude = (text: string, substring: string): boolean => {\n text = normalizedString(text).toLowerCase();\n substring = normalizedString(substring).toLowerCase();\n return text.includes(substring);\n};\n\n/** Returns a normalized string with no accents: used for comparison */\nconst normalizedString = (a: string): string =>\n (a || '').normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n\nconst decorateDataSource = (\n dataSource: DataSource<any, string>,\n subString: string\n): DecoratedDataSource => dataSource.map((it) => decorateItem(it, subString));\n\nconst decorateItem = (\n item: DataSourceItem<any, string>,\n tx: string\n): DecoratedDataSourceItem => {\n const index = normalizedString(item.label)\n .toLowerCase()\n .indexOf(normalizedString(tx).toLowerCase());\n const labelPrefix = index === -1 ? item.label : item.label.substr(0, index);\n const labelMatch = index === -1 ? '' : item.label.substr(index, tx.length);\n const labelPostfix = index === -1 ? '' : item.label.substr(index + tx.length);\n const newItem: DecoratedDataSourceItem = {\n ...item,\n labelPrefix,\n labelMatch,\n labelPostfix\n };\n return newItem;\n};\n\nconst findLabelForId = (data: DataSource<any, string>, id: any): string => {\n const found = data.find((it) => it.key === id);\n return found ? found.label : null;\n};\n","/** Language detector based on Navigator preferences */\nexport const languageDetector = (): string => {\n const lang = navigator.language.split('-')[0];\n if (lang === 'es' || lang === 'en') {\n return lang;\n }\n return 'en'; // default\n};\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { first } from 'rxjs/operators';\nimport { AutocompleteComponent } from '../autocomplete/autocomplete.component';\nimport { DataSource } from '../datasource';\nimport { isInitialAndEmpty } from '../helperFns';\nimport { languageDetector } from '../lang';\n\n@Component({\n selector: 'lux-autocomplete-list',\n templateUrl: './autocomplete-list.component.html',\n styleUrls: ['./autocomplete-list.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => AutocompleteListComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => AutocompleteListComponent)\n }\n ]\n})\nexport class AutocompleteListComponent\n implements ControlValueAccessor, Validator, OnInit\n{\n static idCounter = 0;\n\n @ViewChild('auto') auto!: AutocompleteListComponent;\n\n literals = {\n en: {\n placeholder: 'new item',\n deleteLabelTemplate: 'Delete <<label>>',\n addMessage: 'Add'\n },\n es: {\n placeholder: 'nuevo elemento',\n deleteLabelTemplate: 'Eliminar <<label>>',\n addMessage: 'Añadir'\n }\n };\n\n public internalDataSource: DataSource<any, string> = [];\n private autoPopulate = false;\n\n private _value: any[] = [];\n @Input()\n set value(val: any[]) {\n if (val === this._value) {\n return;\n }\n const initialAndEmpty = isInitialAndEmpty(this._value, val);\n this._value = val;\n this.ensureLabelsForIds();\n this.populateWith('');\n this.onChange(this._value);\n if (!initialAndEmpty) {\n this.valueChange.emit(this._value);\n }\n }\n get value(): any[] {\n return this._value;\n }\n labels: string[] = [];\n newEntry: any;\n canAdd = false;\n touched = false;\n\n private _lang = languageDetector();\n @Input()\n get lang(): string {\n return this._lang;\n }\n set lang(l: string) {\n if (l === this._lang) {\n return;\n }\n if (Object.keys(this.literals).includes(l)) {\n this._lang = l;\n } else {\n this._lang = 'en';\n }\n }\n\n @Input() inputId: string;\n @Input() dataSource: DataSource<any, any> = [];\n @Input() placeholder?: string;\n @Input() disabled = false;\n @Input() deleteLabelTemplate?: string;\n @Input() addMessage?: string;\n @Input() required = false;\n\n @Input() resolveLabelsFunction?: (\n instance: any,\n ids: any[]\n ) => Observable<DataSource<any, string>> = undefined;\n @Input() populateFunction?: (\n instance: any,\n search: string\n ) => Observable<DataSource<any, string>> = undefined;\n @Input() instance: any;\n\n @Output() valueChange = new EventEmitter<any[]>();\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched && !this.disabled) {\n this.onTouched();\n this.touched = true;\n }\n }\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n if (\n this.required &&\n (value === '' || value === null || value === undefined)\n ) {\n return { required: { value, reason: 'Required field.' } };\n }\n return null;\n }\n // End of Validator interface\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `autocompletelist${AutocompleteListComponent.idCounter++}`;\n this.autoPopulate =\n !!this.resolveLabelsFunction && !!this.populateFunction && this.instance;\n this.ensureLabelsForIds();\n }\n ensureLabelsForIds(): void {\n if (this.autoPopulate && this.resolveLabelsFunction) {\n this.resolveLabelsFunction(this.instance, this._value)\n .pipe(first())\n .subscribe((data) => {\n const res: string[] = [];\n (this._value || []).map((id) => {\n const found = data.find((it) => it.key === id);\n if (found) {\n res.push(found.label);\n } else {\n res.push('(unset)');\n }\n });\n this.labels = res;\n });\n } else if (this.dataSource) {\n const res: string[] = [];\n (this._value || []).map((id) => {\n const found = this.dataSource.find((it) => it.key === id);\n if (found) {\n res.push(found.label);\n } else {\n res.push('(unset)');\n }\n });\n this.labels = res;\n } else {\n this.labels = this._value.map((it) => (it ? it.toString() : '(unset)'));\n }\n }\n removeAt(index: number): void {\n if (this._value.length > index) {\n const key = this._value.splice(index, 1)[0];\n const label = this.labels.splice(index, 1)[0];\n this.internalDataSource.push({ key, label });\n }\n this.markAsTouched();\n }\n onValueChange(): void {\n this.updateCanAdd();\n }\n onNewEntryChange(event: KeyboardEvent, auto: AutocompleteComponent): void {\n if (event.key === 'Enter' && !!auto.value) {\n this.addNew(auto);\n } else if (event.key === 'Delete' || event.key === 'Backspace') {\n // todo\n } else {\n this.populateWith(auto.label + event.key);\n }\n this.updateCanAdd();\n }\n populateWith(searchText: string): void {\n if (this.autoPopulate && this.populateFunction && this.instance) {\n this.populateFunction(this.instance, searchText)\n .pipe(first())\n .subscribe((data) => {\n this.internalDataSource = data.filter(\n (it) => !(this._value || []).includes(it.key)\n );\n });\n } else if (this.dataSource) {\n this.internalDataSource = this.dataSource.filter(\n (it) => !(this._value || []).includes(it.key)\n );\n }\n }\n updateCanAdd(): void {\n this.canAdd =\n !this.disabled &&\n this.auto &&\n !!this.auto.value && // has value\n !this.value.find((it) => it === this.auto.value); // not already in\n }\n\n addNew(auto: AutocompleteComponent): void {\n this.value.push(auto.value);\n this.ensureLabelsForIds();\n this.newEntry = '';\n this.internalDataSource = this.internalDataSource.filter(\n (it) => !this._value.includes(it.key)\n );\n this.markAsTouched();\n }\n\n getDeleteMessage(label: string): string {\n return (\n this.deleteLabelTemplate ?? this.literals[this.lang].deleteLabelTemplate\n ).replace('<<label>>', label);\n }\n}\n","import {\n Component,\n Input,\n EventEmitter,\n Output,\n OnInit,\n forwardRef,\n ViewChild,\n ElementRef,\n AfterViewInit\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { isInitialAndEmpty } from '../helperFns';\nimport { languageDetector } from '../lang';\n\nconst KEY_SPACE = ' ';\n\n@Component({\n selector: 'lux-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => CheckboxComponent)\n }\n ]\n})\nexport class CheckboxComponent\n implements ControlValueAccessor, OnInit, AfterViewInit\n{\n static idCounter = 0;\n\n @ViewChild('ck', { static: false }) ck: ElementRef;\n\n private _lang = languageDetector();\n @Input()\n set lang(l: string) {\n if (l === this._lang) {\n return;\n }\n if (Object.keys(this.literals).includes(l)) {\n this._lang = l;\n } else {\n this._lang = 'en';\n }\n }\n get lang(): string {\n return this._lang;\n }\n private internalValue: boolean;\n @Input()\n get value(): boolean {\n return this.internalValue;\n }\n set value(v: boolean) {\n if (this.internalValue === v) {\n return;\n }\n const initialAndEmpty = isInitialAndEmpty(this.internalValue, v);\n this.internalValue = v;\n this.syncModel();\n this.onChange(v);\n if (!initialAndEmpty) {\n this.valueChange.emit(v);\n }\n }\n\n get tabindexValue(): string {\n return this.disabled ? null : '0';\n }\n\n @Input() label: string = null;\n @Input() name: string = null;\n private _disabled = false;\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(v: boolean) {\n if (v === this._disabled) {\n return;\n }\n this._disabled = v;\n this.syncModel();\n }\n @Input() inputId: string;\n\n literals = {\n en: {\n yesLabel: 'Yes',\n noLabel: 'No'\n },\n es: {\n yesLabel: 'Sí',\n noLabel: 'No'\n }\n };\n touched = false;\n\n @Output() valueChange = new EventEmitter<boolean>();\n\n constructor() {}\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n writeValue(value: any): void {\n this.value = !!value;\n }\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `${this.name || 'checkbox'}$${CheckboxComponent.idCounter++}`;\n }\n ngAfterViewInit(): void {\n this.syncModel();\n }\n\n clicked(): void {\n if (!this.disabled) {\n this.value = !this.internalValue;\n this.markAsTouched();\n }\n }\n onKey(event: KeyboardEvent): void {\n if (event.key === KEY_SPACE && !this.disabled) {\n this.value = !this.internalValue;\n this.markAsTouched();\n event.preventDefault();\n }\n }\n\n private syncModel(): void {\n if (this.ck) {\n this.ck.nativeElement.checked = this.internalValue;\n }\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n ElementRef,\n ViewChild,\n forwardRef\n} from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR,\n ControlValueAccessor,\n AbstractControl,\n ValidationErrors,\n Validator,\n NG_VALIDATORS\n} from '@angular/forms';\nimport {\n hasValue,\n isInitialAndEmpty,\n isValidEmail,\n isValidNumber,\n normalizeDate\n} from '../helperFns';\nimport { languageDetector } from '../lang';\n@Component({\n selector: 'lux-input',\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => InputComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => InputComponent)\n }\n ]\n})\nexport class InputComponent implements OnInit, ControlValueAccessor, Validator {\n static idCounter = 0;\n\n @ViewChild('input', { static: false }) input: ElementRef;\n @ViewChild('textarea', { static: false }) textarea: ElementRef;\n\n touched = false;\n dirty = false;\n lastErrors: ValidationErrors | null = null;\n\n private _disabled: string | boolean;\n private _value: any = '';\n private _type: string;\n private _placeholder: string;\n private _pattern?: string = undefined;\n private _regexp?: RegExp = undefined;\n private _currency: string;\n private _required: boolean;\n\n public userErrors = {\n en: {\n required: 'Required field.',\n min: 'Minimum value is $min.',\n max: 'Maximum value is $max.',\n email: 'Format should match example@example.com.'\n },\n es: {\n required: 'El campo es obligatorio.',\n min: 'El valor mínimo es $min.',\n max: 'El valor máximo es $max.',\n email: 'El campo debe tener un formato como ejemplo@ejemplo.com.'\n }\n };\n\n public domain: string;\n @Input()\n public rows?: number | string;\n @Input()\n public cols?: number | string;\n @Input()\n public step?: number;\n @Input()\n public min?: number | string;\n @Input()\n public max?: number | string;\n\n get className(): string {\n return this.checkClassName();\n }\n\n @Input() lang = languageDetector();\n @Input() public inlineErrors = false;\n @Input() public inputId: string;\n @Input('aria-label') public ariaLabel: string;\n @Input() public readonly: boolean | null = null;\n\n @Input()\n set disabled(v: string | boolean) {\n v = typeof v === 'string' ? true : v;\n this._disabled = v;\n }\n get disabled(): string | boolean {\n return this._disabled;\n }\n\n @Input()\n set pattern(p: string | undefined) {\n this._pattern = p;\n if (p === undefined) {\n this._regexp = undefined;\n } else {\n try {\n this._regexp = new RegExp(p);\n } catch (e) {\n this._pattern = undefined;\n this._regexp = undefined;\n }\n }\n }\n get pattern(): string | undefined {\n return this._pattern;\n }\n\n @Input()\n set currency(v: string) {\n this._currency = v.toUpperCase();\n }\n get currency(): string {\n return this._currency;\n }\n\n @Input()\n set placeholder(v: string) {\n this._placeholder = v;\n }\n get placeholder(): string {\n return this._placeholder ? this._placeholder : '';\n }\n\n @Input()\n set required(v: boolean) {\n this._required = v;\n }\n get required(): boolean {\n return this._required;\n }\n\n @Input()\n set type(v: string) {\n this._type = v.toLowerCase();\n this.domain = v.toLowerCase();\n this.checkType(v);\n }\n get type(): string {\n return this._type ? this._type : 'text';\n }\n\n @Input()\n set value(v: any) {\n v = v === undefined ? null : v;\n if (v === this._value) {\n return; // prevent events when there is no changes\n }\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\n if (this.type === 'date') {\n v = normalizeDate(v);\n }\n\n this._value = v;\n this.onChange(v);\n if (!initialAndEmpty) {\n this.valueChange.emit(v);\n }\n }\n get value(): any {\n if (this.isPercentage() || this.isPermillage() || this.isNumber()) {\n const numVal = parseFloat(this._value);\n if (!Number.isNaN(numVal)) {\n return numVal;\n }\n }\n return this._value;\n }\n @Output() valueChange = new EventEmitter<any>();\n @Output() keyPress = new EventEmitter<KeyboardEvent>();\n\n onChange = (value): void => {};\n onTouched = (): void => {};\n\n constructor() {}\n\n // ControlValueAccessor Interface implementation\n writeValue(value: any): void {\n this.value = value;\n this.setValueInControl(value);\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End of ControlValueAccessor Interface implementation\n\n private setValueInControl(v: any): void {\n if (this.domain === 'date') {\n v = normalizeDate(v);\n }\n if (this.input) {\n this.input.nativeElement.value = v;\n }\n if (this.textarea) {\n this.textarea.nativeElement.value = v;\n }\n }\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n let result: ValidationErrors | null = null;\n\n if (this.required && !hasValue(hasValue)) {\n result = result || {};\n result.required = { value, reason: 'Required field.' };\n }\n if (this._regexp && hasValue(value) && !this._regexp.test(value)) {\n result = result || {};\n result.pattern = {\n value,\n reason: `Value must follow the pattern: ${this._pattern}`\n };\n }\n if (this.type === 'email' && hasValue(value) && !isValidEmail(value)) {\n result = result || {};\n result.email = { value, reason: 'Invalid email.' };\n }\n if (this.type === 'number' && hasValue(value) && !isValidNumber(value)) {\n result = result || {};\n result.numeric = { value, reason: 'Invalid number.' };\n }\n if (\n this.type === 'date' ||\n this.type === 'time' ||\n this.type === 'timestamp'\n ) {\n if (\n typeof this.min === 'string' &&\n hasValue(value) &&\n String(value).localeCompare(this.min) === -1\n ) {\n result = result || {};\n result.min = {\n value,\n min: this.min,\n reason: `Value is lower than minimum value: ${this.min}.`\n };\n }\n if (\n typeof this.max === 'string' &&\n hasValue(value) &&\n String(value).localeCompare(this.max) !== -1\n ) {\n result = result || {};\n result.max = {\n value,\n max: this.max,\n reason: `Value is greater than than maximum value: ${this.max}.`\n };\n }\n }\n\n if (\n this.type === 'percentage' ||\n this.type === 'permillage' ||\n this.type === 'number' ||\n this.type === 'currency'\n ) {\n if (hasValue(this.min) && hasValue(value) && value < +this.min) {\n result = result || {};\n result.min = {\n value,\n min: this.min,\n reason: `Value is lower than minimum value: ${this.min}.`\n };\n }\n if (hasValue(this.max) && hasValue(value) && value > +this.max) {\n result = result || {};\n result.max = {\n value,\n max: this.max,\n reason: `Value is greater than than maximum value: ${this.max}.`\n };\n }\n }\n this.lastErrors = result;\n return result;\n }\n // End of Validator interface\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `${this.type}$${InputComponent.idCounter++}`;\n }\n onLostFocus(): void {\n this.markAsTouched();\n }\n onKeyUp(newValue: string): void {\n this.value = newValue;\n }\n onChangeValue(newValue: string): void {\n this.value = newValue;\n this.markAsTouched();\n }\n onKeyPress(event: KeyboardEvent): void {\n this.keyPress.emit(event);\n }\n\n isNumber(): boolean {\n return this.type === 'number';\n }\n isPercentage(): boolean {\n return this.type === 'percentage';\n }\n isPermillage(): boolean {\n return this.type === 'permillage';\n }\n\n checkClassName(): string {\n if (this.readonly === true) {\n return 'readonly';\n }\n return '';\n }\n\n checkType(type: string): void {\n switch (type) {\n case 'email':\n this.setEmailPatterns();\n break;\n case 'date':\n this.setDatePatterns();\n break;\n case 'time':\n this.setTimePatterns();\n break;\n case 'password':\n this.setPasswordPatterns();\n break;\n case 'number':\n this.setNumberPatterns();\n break;\n case 'currency':\n this.setCurrencyPatterns();\n break;\n case 'percentage':\n this.setPercentagePatterns();\n break;\n case 'permillage':\n this.setPermillagePatterns();\n break;\n default:\n break;\n }\n }\n\n setEmailPatterns(): void {}\n\n setDatePatterns(): void {\n this.min = this.min || '1900-01-01';\n this.max = this.max || '2100-01-01';\n }\n\n setTimePatterns(): void {}\n\n setPasswordPatterns(): void {}\n\n setNumberPatterns(): void {\n this.domain = 'number';\n this.placeholder = '0';\n }\n\n setCurrencyPatterns(): void {\n this.domain = 'number';\n this.step = this.step || 0.1;\n this.min = this.min || 0.0;\n this.max = this.max || 10000.0;\n this.value = 0.0;\n }\n\n setPercentagePatterns(): void {\n this.domain = 'number';\n this.step = this.step || 0.01;\n this.min = this.min || 0.0;\n this.max = this.max || 100.0;\n this.placeholder = '0.00';\n }\n\n setPermillagePatterns(): void {\n this.domain = 'number';\n this.step = this.step || 0.01;\n this.min = this.min || 0.0;\n this.max = this.max || 1000.0;\n this.placeholder = '0.00';\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnDestroy,\n OnInit,\n forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject, Observable, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n/** Filter component to query for objects. */\n@Component({\n selector: 'lux-filter',\n templateUrl: './filter.component.html',\n styleUrls: ['./filter.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => FilterComponent)\n }\n ]\n})\nexport class FilterComponent\n implements ControlValueAccessor, OnInit, OnDestroy\n{\n static idCounter = 0;\n\n private touched = false;\n private _searchValue = '';\n\n @Input() disabled = false;\n /** id for the input. If left blank, it is autogenerated */\n @Input() inputId: string;\n /** Placeholder default text. */\n @Input() placeholder = '';\n /** Search value introduced by the user. */\n @Input()\n get searchValue(): string {\n return this._searchValue;\n }\n set searchValue(v: string) {\n v = (v || '').toString();\n if (v === this._searchValue) {\n return;\n }\n this.onChange(v);\n this._searchValue = v;\n }\n /** Search on type: (default true) Auto-search when user types in. */\n @Input() searchOnType = true;\n /** Custom aria label in case of not using a label */\n @Input('aria-label') ariaLabel: string;\n\n private debounceValue = 300; // 300 ms\n /** Debounce time in milliseconds. (defaults to 300 ms) */\n @Input()\n set debounce(val: number) {\n this.debounceValue = val;\n this.recreateObservable();\n }\n get debounce(): number {\n return this.debounceValue;\n }\n\n /** Search value changed by user. */\n @Output() searchValueChange = new EventEmitter<string>();\n\n searchValue$: Observable<string>;\n\n private subject = new Subject<string>();\n private sub: Subscription;\n\n constructor() {\n this.recreateObservable();\n }\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n writeValue(value: any): void {\n this.searchValue = (value || '').toString();\n }\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `filter$${FilterComponent.idCounter++}`;\n }\n ngOnDestroy(): void {\n this.freeSubscriptions();\n }\n clear(): void {\n this.searchValue = '';\n this.search();\n }\n search(): void {\n this.searchValueChange.emit(this.searchValue);\n }\n keyup(event: KeyboardEvent, newValue: string): void {\n this.markAsTouched();\n this.searchValue = newValue;\n if (event.key === 'Enter') {\n this.searchNow(this.searchValue);\n }\n if (this.searchOnType) {\n this.addEvent();\n }\n }\n onInputValueChange(newValue: string): void {\n this.markAsTouched();\n this.searchValue = newValue;\n }\n\n private recreateObservable(): void {\n this.searchValue$ = this.subject\n .asObservable()\n .pipe(debounceTime(this.debounce));\n\n this.freeSubscriptions();\n this.sub = this.searchValue$.subscribe((value) => {\n this.searchValueChange.emit(value);\n });\n }\n private freeSubscriptions(): void {\n if (this.sub) {\n this.sub.unsubscribe();\n this.sub = null;\n }\n }\n private searchNow(value: string): void {\n this.searchValueChange.emit(value);\n }\n private addEvent(): void {\n this.subject.next(this.searchValue);\n }\n}\n","import { ComponentRef } from '@angular/core';\nimport { LuxModalWindowComponent } from './modal-window';\nimport { ContentRef } from './util';\nimport { LuxModalBackdropComponent } from './modal-backdrop';\n\nexport class ActiveModal {\n close(result?: any): void {}\n dismiss(reason?: any): void {}\n}\n\nexport class ModalRef {\n private _resolve: (result?: any) => void;\n private _reject: (reason?: any) => void;\n\n /**\n * The instance of a component used for the modal content.\n *\n * When a `TemplateRef` is used as the content, will return `undefined`.\n */\n get componentInstance(): any {\n if (this._contentRef.componentRef) {\n return this._contentRef.componentRef.instance;\n }\n }\n\n /**\n * The promise that is resolved when the modal is closed and rejected when the modal is dismissed.\n */\n result: Promise<any>;\n\n constructor(\n private _windowCmptRef: ComponentRef<LuxModalWindowComponent>,\n private _contentRef: ContentRef,\n private _backdropCmptRef?: ComponentRef<LuxModalBackdropComponent>,\n private _beforeDismiss?: () => any\n ) {\n _windowCmptRef.instance.dismissEvent.subscribe((reason: any) => {\n this.dismiss(reason);\n });\n\n this.result = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n this.result.then(null, () => {});\n }\n\n /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\n */\n close(result?: any): void {\n if (this._windowCmptRef) {\n if (this._resolve) {\n this._resolve(result);\n }\n this._removeModalElements();\n }\n }\n\n private _dismiss(reason?: any): void {\n if (this._reject) {\n this._reject(reason);\n }\n this._removeModalElements();\n }\n\n /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n */\n dismiss(reason?: any): void {\n if (this._windowCmptRef) {\n if (!this._beforeDismiss) {\n this._dismiss(reason);\n } else {\n const dismiss = this._beforeDismiss();\n if (dismiss && dismiss.then) {\n dismiss.then(\n (result) => {\n if (result !== false) {\n this._dismiss(reason);\n }\n },\n () => {}\n );\n } else if (dismiss !== false) {\n this._dismiss(reason);\n }\n }\n }\n }\n\n private _removeModalElements(): void {\n const windowNativeEl = this._windowCmptRef.location.nativeElement;\n windowNativeEl.parentNode.removeChild(windowNativeEl);\n this._windowCmptRef.destroy();\n\n if (this._backdropCmptRef) {\n const backdropNativeEl = this._backdropCmptRef.location.nativeElement;\n backdropNativeEl.parentNode.removeChild(backdropNativeEl);\n this._backdropCmptRef.destroy();\n }\n\n if (this._contentRef && this._contentRef.viewRef) {\n this._contentRef.viewRef.destroy();\n }\n\n this._windowCmptRef = null;\n this._backdropCmptRef = null;\n this._contentRef = null;\n }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { ViewRef, ComponentRef } from '@angular/core';\nimport { fromEvent, Observable } from 'rxjs';\nimport { filter, map, takeUntil, withLatestFrom } from 'rxjs/operators';\n\nexport const FOCUS = 'focus';\n\nexport enum Key {\n Tab = 9,\n Enter = 13,\n Escape = 27,\n Space = 32,\n PageUp = 33,\n PageDown = 34,\n End = 35,\n Home = 36,\n ArrowLeft = 37,\n ArrowUp = 38,\n ArrowRight = 39,\n ArrowDown = 40\n}\n\nexport const isDefined = (value: any): boolean =>\n value !== undefined && value !== null;\n\nexport class ContentRef {\n constructor(\n public nodes: any[],\n public viewRef?: ViewRef,\n public componentRef?: ComponentRef<any>\n ) {}\n}\n\nconst FOCUSABLE_ELEMENTS_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled]):not([type=\"hidden\"])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[contenteditable]',\n '[tabindex]:not([tabindex=\"-1\"])'\n].join(', ');\n\n/**\n * Returns first and last focusable elements inside of a given element based on specific CSS selector\n */\nexport const getFocusableBoundaryElements = (\n element: HTMLElement\n): HTMLElement[] => {\n const list: HTMLElement[] = Array.from(\n element.querySelectorAll(\n FOCUSABLE_ELEMENTS_SELECTOR\n ) as NodeListOf<HTMLElement>\n ).filter((el) => el.tabIndex !== -1);\n return [list[0], list[list.length - 1]];\n};\n\n/**\n * Function that enforces browser focus to be trapped inside a DOM element.\n *\n * Works only for clicks inside the element and navigation with 'Tab', ignoring clicks outside of the element\n *\n * @param element The element around which focus will be trapped inside\n * @param stopFocusTrap$ The observable stream. When completed the focus trap will clean up listeners\n * and free internal resources\n * @param refocusOnClick Put the focus back to the last focused element whenever a click occurs on element (default to\n * false)\n */\nexport const focusTrap = (\n element: HTMLElement,\n stopFocusTrap$: Observable<any>,\n refocusOnClick = false\n): void => {\n // last focused element\n const lastFocusedElement$ = fromEvent<FocusEvent>(element, 'focusin').pipe(\n takeUntil(stopFocusTrap$),\n map((e) => e.target)\n );\n\n // 'tab' / 'shift+tab' stream\n fromEvent<KeyboardEvent>(element, 'keydown')\n .pipe(\n takeUntil(stopFocusTrap$),\n /* eslint-disable import/no-deprecated */\n filter((e) => e.which === Key.Tab),\n /* eslint-enable import/no-deprecated */\n withLatestFrom(lastFocusedElement$)\n )\n .subscribe(([tabEvent, focusedElement]) => {\n const [first, last] = getFocusableBoundaryElements(element);\n\n if (\n (focusedElement === first || focusedElement === element) &&\n tabEvent.shiftKey\n ) {\n last.focus();\n tabEvent.preventDefault();\n }\n\n if (focusedElement === last && !tabEvent.shiftKey) {\n first.focus();\n tabEvent.preventDefault();\n }\n });\n\n // inside click\n if (refocusOnClick) {\n fromEvent(element, 'click')\n .pipe(\n takeUntil(stopFocusTrap$),\n withLatestFrom(lastFocusedElement$),\n map((arr) => arr[1] as HTMLElement)\n )\n .subscribe((lastFocusedElement) => lastFocusedElement.focus());\n }\n};\n","export enum ModalDismissReasons {\n BackdropClick,\n Esc\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n HostBinding,\n HostListener\n} from '@angular/core';\n\nimport { getFocusableBoundaryElements, FOCUS } from './util';\nimport { ModalDismissReasons } from './modal-dismiss-reasons';\n\n@Component({\n selector: 'lux-modal-window',\n template: `\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\"><ng-content></ng-content></div>\n </div>\n `\n})\nexport class LuxModalWindowComponent\n implements OnInit, AfterViewInit, OnDestroy\n{\n private _elWithFocus: Element; // element that is focused prior to modal opening\n\n @Input() ariaDescribedBy: string;\n @Input() ariaLabelledBy: string;\n @Input() backdrop: boolean | string = false;\n @Input() keyboard = true;\n @Input() windowClass: string;\n\n @Output() dismissEvent = new EventEmitter();\n\n @HostBinding('class') get class(): string {\n return `modal ${this.windowClass || ''}`;\n }\n @HostBinding('attr.role') role = 'dialog';\n @HostBinding('tabindex') tabindex = '-1';\n @HostBinding('attr.aria-modal') ariamodal = true;\n @HostBinding('attr.aria-labelledby') get hostAriaLabelledBy(): string {\n return this.ariaLabelledBy;\n }\n @HostBinding('attr.aria-describedby') get hostAriaDescribedBy(): string {\n return this.ariaDescribedBy;\n }\n @HostListener('click', ['$event.target']) backdropClick(\n btn: HTMLElement\n ): void {\n if (this.backdrop === true && this._elRef.nativeElement === btn) {\n this.dismiss(ModalDismissReasons.BackdropClick);\n }\n }\n @HostListener('keyup.esc', ['$event']) escKey(event): void {\n if (this.keyboard && !event.defaultPrevented) {\n this.dismiss(ModalDismissReasons.Esc);\n }\n }\n\n constructor(\n @Inject(DOCUMENT) private _document: any,\n private _elRef: ElementRef<HTMLElement>\n ) {}\n\n dismiss(reason): void {\n this.dismissEvent.emit(reason);\n }\n\n ngOnInit(): void {\n this._elWithFocus = this._document.activeElement;\n }\n\n ngAfterViewInit(): void {\n if (!this._elRef.nativeElement.contains(document.activeElement)) {\n const firstFocusable = getFocusableBoundaryElements(\n this._elRef.nativeElement\n )[0];\n\n const elementToFocus = firstFocusable || this._elRef.nativeElement;\n elementToFocus.focus();\n }\n }\n\n ngOnDestroy(): void {\n const body = this._document.body;\n const elWithFocus = this._elWithFocus;\n\n let elementToFocus;\n if (elWithFocus && elWithFocus[FOCUS] && body.contains(elWithFocus)) {\n elementToFocus = elWithFocus;\n } else {\n elementToFocus = body;\n }\n elementToFocus.focus();\n this._elWithFocus = null;\n }\n}\n","import {Component, Input, HostBinding} from '@angular/core';\n\n@Component({\n selector: 'lux-modal-backdrop',\n template: ''\n})\nexport class LuxModalBackdropComponent {\n @Input() backdropClass: string;\n\n @HostBinding('class') class = 'modal-backdrop fade show';\n @HostBinding('style') style = 'z-index: 1050';\n}\n","import { Injectable } from '@angular/core';\n\nexport interface LuxModalOptions {\n ariaDescribedBy?: string;\n ariaLabelledBy?: string;\n backdrop?: boolean;\n keyboard?: boolean;\n windowClass?: string;\n backdropClass?: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class LuxModalConfig implements LuxModalOptions {\n backdrop = true;\n}\n","import {\n Injectable,\n ApplicationRef,\n ComponentFactoryResolver,\n TemplateRef,\n ComponentRef,\n Inject,\n Injector,\n RendererFactory2\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\nimport { ActiveModal, ModalRef } from './modal-ref';\nimport { ContentRef, focusTrap, isDefined } from './util';\nimport { LuxModalWindowComponent } from './modal-window';\nimport { Subject } from 'rxjs';\nimport { LuxModalBackdropComponent } from './modal-backdrop';\nimport { LuxModalOptions, LuxModalConfig } from './modal-config';\n\n@Injectable({ providedIn: 'root' })\nexport class ModalStack {\n private _activeWindowCmptHasChanged = new Subject();\n private _modalRefs: ModalRef[] = [];\n private _windowCmpts: ComponentRef<LuxModalWindowComponent>[] = [];\n private _ariaHiddenValues: Map<Element, string> = new Map();\n private _backdropAttributes = ['backdropClass'];\n private _windowAttributes = [\n 'ariaLabelledBy',\n 'backdrop',\n 'centered',\n 'keyboard',\n 'scrollable',\n 'size',\n 'windowClass'\n ];\n\n constructor(\n private _applicationRef: ApplicationRef,\n @Inject(DOCUMENT) private _document: any,\n private _injector: Injector,\n private _rendererFactory: RendererFactory2,\n private modalConfig: LuxModalConfig\n ) {\n this._activeWindowCmptHasChanged.subscribe(() => {\n if (this._windowCmpts.length) {\n const activeWindowCmpt =\n this._windowCmpts[this._windowCmpts.length - 1];\n focusTrap(\n activeWindowCmpt.location.nativeElement,\n this._activeWindowCmptHasChanged\n );\n this._revertAriaHidden();\n this._setAriaHidden(activeWindowCmpt.location.nativeElement);\n }\n });\n }\n\n open(\n moduleCFR: ComponentFactoryResolver,\n content: any,\n options: LuxModalOptions\n ): ModalRef {\n const config = Object.assign({}, this.modalConfig, options);\n const containerEl = this._document.body;\n const renderer = this._rendererFactory.createRenderer(null, null);\n const removeBodyClass = (): void => {\n if (!this._modalRefs.length) {\n renderer.removeClass(this._document.body, 'modal-open');\n this._revertAriaHidden();\n }\n };\n const activeModal = new ActiveModal();\n const contentRef = this.getContentRef(moduleCFR, content, activeModal);\n const backdropCmptRef: ComponentRef<LuxModalBackdropComponent> =\n config.backdrop ? this._attachBackdrop(moduleCFR, containerEl) : null;\n const windowCmptRef: ComponentRef<LuxModalWindowComponent> =\n this._attachWindowComponent(moduleCFR, containerEl, contentRef);\n const modalRef: ModalRef = new ModalRef(\n windowCmptRef,\n contentRef,\n backdropCmptRef\n );\n this._registerModalRef(modalRef);\n this._registerWindowCmpt(windowCmptRef);\n modalRef.result.then(removeBodyClass, removeBodyClass);\n activeModal.close = (result: any): void => {\n modalRef.close(result);\n };\n activeModal.dismiss = (reason: any): void => {\n modalRef.dismiss(reason);\n };\n\n this._applyWindowOptions(windowCmptRef.instance, config);\n if (this._modalRefs.length === 1) {\n renderer.addClass(this._document.body, 'modal-open');\n }\n if (backdropCmptRef && backdropCmptRef.instance) {\n this._applyBackgroundOptions(backdropCmptRef.instance, config);\n backdropCmptRef.changeDetectorRef.detectChanges();\n }\n windowCmptRef.changeDetectorRef.detectChanges();\n\n return modalRef;\n }\n\n private _applyWindowOptions(\n windowInstance: LuxModalWindowComponent,\n config: LuxModalOptions\n ): void {\n this._windowAttributes.forEach((optionName: string) => {\n if (isDefined(config[optionName])) {\n windowInstance[optionName] = config[optionName];\n }\n });\n }\n\n private _applyBackgroundOptions(\n backgroudInstance: LuxModalBackdropComponent,\n config: LuxModalOptions\n ): void {\n this._backdropAttributes.forEach((optionName: string) => {\n if (isDefined(config[optionName])) {\n backgroudInstance[optionName] = config[optionName];\n }\n });\n }\n\n private _revertAriaHidden(): void {\n this._ariaHiddenValues.forEach((value, element) => {\n if (value) {\n element.setAttribute('aria-hidden', value);\n } else {\n element.removeAttribute('aria-hidden');\n }\n });\n this._ariaHiddenValues.clear();\n }\n\n private getContentRef(\n moduleCFR: ComponentFactoryResolver,\n content: any,\n activeModal: ActiveModal\n ): ContentRef {\n if (content instanceof TemplateRef) {\n return this.createFromTemplateRef(content, activeModal);\n }\n }\n\n private createFromTemplateRef(\n content: TemplateRef<any>,\n activeModal: ActiveModal\n ): ContentRef {\n const context = {\n $implicit: activeModal,\n // eslint-disable-next-line prefer-arrow/prefer-arrow-functions\n close(result): void {\n activeModal.close(result);\n },\n // eslint-disable-next-line prefer-arrow/prefer-arrow-functions\n dismiss(reason): void {\n activeModal.dismiss(reason);\n }\n };\n const viewRef = content.createEmbeddedView(context);\n this._applicationRef.attachView(viewRef);\n return new ContentRef([viewRef.rootNodes], viewRef);\n }\n\n private _attachBackdrop(\n moduleCFR: ComponentFactoryResolver,\n containerEl: any\n ): ComponentRef<LuxModalBackdropComponent> {\n const backdropFactory = moduleCFR.resolveComponentFactory(\n LuxModalBackdropComponent\n );\n const backdropCmptRef = backdropFactory.create(this._injector);\n this._applicationRef.attachView(backdropCmptRef.hostView);\n containerEl.appendChild(backdropCmptRef.location.nativeElement);\n return backdropCmptRef;\n }\n\n private _attachWindowComponent(\n moduleCFR: ComponentFactoryResolver,\n containerEl: any,\n contentRef: any\n ): ComponentRef<LuxModalWindowComponent> {\n const windowFactory = moduleCFR.resolveComponentFactory(\n LuxModalWindowComponent\n );\n const windowCmptRef = windowFactory.create(\n this._injector,\n contentRef.nodes\n );\n this._applicationRef.attachView(windowCmptRef.hostView);\n containerEl.appendChild(windowCmptRef.location.nativeElement);\n return windowCmptRef;\n }\n\n private _registerModalRef(modalRef: ModalRef): void {\n const unregisterModalRef = (): void => {\n const index = this._modalRefs.indexOf(modalRef);\n if (index > -1) {\n this._modalRefs.splice(index, 1);\n }\n };\n this._modalRefs.push(modalRef);\n modalRef.result.then(unregisterModalRef, unregisterModalRef);\n }\n\n private _registerWindowCmpt(\n windowCmpt: ComponentRef<LuxModalWindowComponent>\n ): void {\n this._windowCmpts.push(windowCmpt);\n this._activeWindowCmptHasChanged.next();\n\n windowCmpt.onDestroy(() => {\n const index = this._windowCmpts.indexOf(windowCmpt);\n if (index > -1) {\n this._windowCmpts.splice(index, 1);\n this._activeWindowCmptHasChanged.next();\n }\n });\n }\n\n private _setAriaHidden(element: Element): void {\n const parent = element.parentElement;\n if (parent && element !== this._document.body) {\n Array.from(parent.children).forEach((sibling) => {\n if (sibling !== element && sibling.nodeName !== 'SCRIPT') {\n this._ariaHiddenValues.set(\n sibling,\n sibling.getAttribute('aria-hidden')\n );\n sibling.setAttribute('aria-hidden', 'true');\n }\n });\n this._setAriaHidden(parent);\n }\n }\n}\n","import {\n Injectable,\n ComponentFactoryResolver,\n TemplateRef,\n} from '@angular/core';\nimport { ModalStack } from './modal-stack';\nimport { ModalRef } from './modal-ref';\nimport { LuxModalOptions } from './modal-config';\n\n/**\n * A service that it allow open an close modal components\n */\n@Injectable({ providedIn: 'root' })\nexport class ModalService {\n constructor(\n private modalStack: ModalStack,\n private moduleCFR: ComponentFactoryResolver\n ) {}\n\n /**Open a modal component\n * @param content TemplateRef\n */\n open(content: TemplateRef<any>, options: LuxModalOptions = {}): ModalRef {\n return this.modalStack.open(this.moduleCFR, content, options);\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { DataSource } from '../datasource';\nimport { Observable, of, Subject } from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n map,\n switchMap\n} from 'rxjs/operators';\nimport { GeoPoint } from '../map/geopoint';\n\ninterface SearchResult {\n place_id: number;\n lat: number;\n lon: number;\n display_name: string;\n icon: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class GeolocationService {\n private debouncePeriodMs = 300; // ms\n private cacheSize = 20;\n private lastQueriesWithResults = new Map<string, SearchResult[]>();\n private lastQueriesLru: string[] = [];\n private currentSearch$: Subject<string>;\n private currentQuery$: Observable<SearchResult[]>;\n\n constructor(private http: HttpClient) {\n this.currentSearch$ = new Subject<string>();\n\n const typed$ = this.currentSearch$\n .asObservable()\n .pipe(distinctUntilChanged());\n\n this.currentQuery$ = typed$.pipe(\n debounceTime(this.debouncePeriodMs),\n\n switchMap((currentQuery) => {\n const data = this.getFromCache(currentQuery);\n if (data !== undefined) {\n return of(data);\n }\n // Nominatim search documentation:\n // https://nominatim.org/release-docs/develop/api/Search/\n const url =\n 'https://nominatim.openstreetmap.org/search?format=json&limit=20&q=' +\n encodeURIComponent(currentQuery);\n const headers = {\n 'Content-Type': 'application/json'\n };\n this.addToCache(currentQuery, []);\n\n return this.http.get(url, { headers }).pipe(\n map((response) => {\n const searchResults = response as unknown as SearchResult[];\n const uniqueResults = distinct(searchResults);\n return this.addToCache(currentQuery, uniqueResults);\n })\n );\n })\n );\n }\n\n searchGeolocation(query: string): Observable<SearchResult[]> {\n this.currentSearch$.next(query);\n return this.currentQuery$;\n }\n\n getLabels(\n instance: GeolocationService,\n keys: GeoPoint[]\n ): Observable<DataSource<GeoPoint, string>> {\n const searchResults = instance.lastQueriesWithResults\n .get(instance.getLatestQuery())\n .filter((searchResult) => samePosition(searchResult, keys));\n return of(\n searchResults.map((searchResult) => {\n const key: GeoPoint = {\n type: 'Point',\n coordinates: [searchResult.lon, searchResult.lat]\n };\n return {\n key,\n label: searchResult.display_name\n };\n })\n );\n }\n\n getData(\n instance: GeolocationService,\n search: string\n ): Observable<DataSource<GeoPoint, string>> {\n return instance.searchGeolocation(search).pipe(\n map((searchResults) =>\n searchResults.map((searchResult) => {\n const key: GeoPoint = {\n type: 'Point',\n coordinates: [searchResult.lon, searchResult.lat]\n };\n const label = searchResult.display_name;\n return { key, label };\n })\n )\n );\n }\n\n // Cache implemementation ---\n private getFromCache(query: string): SearchResult[] {\n if (this.lastQueriesWithResults.has(query)) {\n return this.lastQueriesWithResults.get(query);\n }\n return undefined;\n }\n private addToCache(query: string, data: SearchResult[]): SearchResult[] {\n if (this.lastQueriesWithResults.keys.length >= this.cacheSize) {\n const deletedQuery = this.lastQueriesLru[0];\n this.revomeFromCache(deletedQuery);\n }\n this.lastQueriesWithResults.set(query, data);\n this.lastQueriesLru.push(query);\n return data;\n }\n private revomeFromCache(query: string): void {\n this.lastQueriesWithResults.delete(query);\n const index = this.lastQueriesLru.findIndex((it) => it === query);\n this.lastQueriesLru.splice(index, 1);\n }\n private getLatestQuery(): string | null {\n return this.lastQueriesLru.length\n ? this.lastQueriesLru[this.lastQueriesLru.length - 1]\n : null;\n }\n // End cache implemementation ---\n}\n\nconst samePosition = (\n searchResult: SearchResult,\n keys: GeoPoint[]\n): boolean => {\n let found = false;\n keys.forEach((item) => {\n if (\n searchResult.lon === item.coordinates[0] &&\n searchResult.lat === item.coordinates[1]\n ) {\n found = true;\n }\n });\n return found;\n};\n\nconst distinct = (data: SearchResult[]): SearchResult[] => {\n const unique: { [key: string]: number } = {};\n return data.filter((r) => {\n if (unique[r.display_name]) {\n return false;\n }\n unique[r.display_name] = 1;\n return true;\n });\n};\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n ElementRef,\n ViewChild,\n forwardRef,\n TemplateRef\n} from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR,\n AbstractControl,\n ValidationErrors,\n NG_VALIDATORS\n} from '@angular/forms';\nimport { DataSource } from '../datasource';\nimport {\n isInitialAndEmpty,\n isValidNumber,\n roundToMultipleOf\n} from '../helperFns';\nimport { languageDetector } from '../lang';\nimport { ModalService } from '../modal/modal.service';\nimport { GeoPoint } from '../map/geopoint';\nimport { Observable } from 'rxjs';\nimport { GeolocationService } from './geolocation.service';\n\n@Component({\n selector: 'lux-geolocation',\n templateUrl: './geolocation.component.html',\n styleUrls: ['./geolocation.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => GeolocationComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => GeolocationComponent)\n }\n ]\n})\nexport class GeolocationComponent implements OnInit {\n static idCounter = 0;\n\n @ViewChild('latitude', { static: true }) latitude: ElementRef;\n @ViewChild('longitude', { static: true }) longitude: ElementRef;\n\n touched = false;\n dirty = false;\n lastErrors: ValidationErrors | null = null;\n\n private _disabled: string | boolean;\n private _required: boolean;\n private _value: any;\n\n public latitudeValue?: number = null;\n public longitudeValue?: number = null;\n\n isValidNumber = isValidNumber;\n\n public userErrors = {\n en: {\n required: 'Required field.',\n minLatitude: 'Minimum latitude is $minLatitude.',\n maxLatitude: 'Maximum latitude is $maxLatitude.',\n minLongitude: 'Minimum longitude is $minLongitude.',\n maxLongitude: 'Maximum longitude is $maxLongitude.'\n },\n es: {\n required: 'El campo es obligatorio.',\n minLatitude: 'La latitud mínima es $minLatitude.',\n maxLatitude: 'La latitud máxima es $maxLatitude.',\n minLongitude: 'La longitud mínima es $minLongitude.',\n maxLongitude: 'La longitud máxima es $maxLongitude.'\n }\n };\n\n public cardinalPoints = {\n en: {\n north: 'N',\n south: 'S',\n east: 'E',\n west: 'W',\n unknown: '?'\n },\n es: {\n north: 'N',\n south: 'S',\n east: 'E',\n west: 'O',\n unknown: '?'\n }\n };\n\n @Input()\n public minLatitude: number;\n @Input()\n public maxLatitude: number;\n @Input()\n public minLongitude: number;\n @Input()\n public maxLongitude: number;\n @Input()\n public step: number;\n @Input()\n public zoom: number;\n\n get className(): string {\n return this.checkClassName();\n }\n\n @Input() lang = languageDetector();\n @Input() public inlineErrors = false;\n @Input() public inputId: string;\n @Input('aria-label') public ariaLabel: string;\n @Input() public readonly: boolean | null = null;\n\n @Input()\n set disabled(v: string | boolean) {\n v = typeof v === 'string' ? true : v;\n this._disabled = v;\n }\n get disabled(): string | boolean {\n return this._disabled;\n }\n\n @Input()\n set required(v: boolean) {\n this._required = v;\n }\n get required(): boolean {\n return this._required;\n }\n\n @Input()\n set value(v: GeoPoint) {\n if (v === this._value) {\n return; // prevent events when there is no changes\n }\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\n if (v.coordinates && v.coordinates.length === 2) {\n this._value = v;\n this.latitudeValue = v.coordinates[1];\n this.longitudeValue = v.coordinates[0];\n this.setLatitudeInControl(this.latitudeValue);\n this.setLongitudeInControl(this.longitudeValue);\n } else {\n this._value = undefined;\n this.latitudeValue = undefined;\n this.longitudeValue = undefined;\n this.setLatitudeInControl(this.latitudeValue);\n this.setLongitudeInControl(this.longitudeValue);\n }\n this.onChange(v);\n if (!initialAndEmpty) {\n this.valueChange.emit(v);\n }\n }\n get value(): GeoPoint {\n return this._value;\n }\n\n @Output() valueChange = new EventEmitter<GeoPoint>();\n @Output() keyPress = new EventEmitter<KeyboardEvent>();\n\n onChange = (value: any): void => {};\n onTouched = (): void => {};\n\n constructor(\n private modalService: ModalService,\n public locationService: GeolocationService\n ) {}\n\n // ControlValueAccessor Interface implementation\n writeValue(value: any): void {\n this.value = value;\n this.setLatitudeInControl(this.latitudeValue);\n this.setLongitudeInControl(this.longitudeValue);\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End of ControlValueAccessor Interface implementation\n\n private setLatitudeInControl(latitude: number): void {\n this.latitude.nativeElement.value = latitude;\n }\n private setLongitudeInControl(longitude: number): void {\n this.longitude.nativeElement.value = longitude;\n }\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n let result: ValidationErrors | null = null;\n\n if (this.required && (value === null || value === undefined)) {\n result = result || {};\n result.required = { value, reason: 'Required field.' };\n }\n if (\n this.minLatitude !== undefined &&\n this.minLatitude !== null &&\n this.latitudeValue < this.minLatitude\n ) {\n result = result || {};\n result.minLatitude = {\n value,\n min: this.minLatitude,\n reason: `Value is lower than minimum value: ${this.minLatitude}.`\n };\n }\n if (\n this.maxLatitude !== undefined &&\n this.maxLatitude !== null &&\n this.latitudeValue < this.maxLatitude\n ) {\n result = result || {};\n result.maxLatitude = {\n value,\n max: this.maxLatitude,\n reason: `Value is lower than maximum value: ${this.maxLatitude}.`\n };\n }\n if (\n this.minLongitude !== undefined &&\n this.minLongitude !== null &&\n this.longitudeValue < this.minLongitude\n ) {\n result = result || {};\n result.minLongitude = {\n value,\n min: this.minLongitude,\n reason: `Value is lower than minimum value: ${this.minLongitude}.`\n };\n }\n if (\n this.maxLongitude !== undefined &&\n this.maxLongitude !== null &&\n this.longitudeValue < this.maxLongitude\n ) {\n result = result || {};\n result.maxLongitude = {\n value,\n max: this.maxLongitude,\n reason: `Value is lower than maximum value: ${this.maxLongitude}.`\n };\n }\n this.lastErrors = result;\n return result;\n }\n // End of Validator interface\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `geolocation$${GeolocationComponent.idCounter++}`;\n this.setPatterns();\n }\n\n updateLatitude(newLatitude: number | null): void {\n if (this.disabled || this.readonly) {\n return;\n }\n this.value = {\n type: 'Point',\n coordinates: [this.longitudeValue, newLatitude]\n };\n }\n updateLongitude(newLongitude: number | null): void {\n if (this.disabled || this.readonly) {\n return;\n }\n this.value = {\n type: 'Point',\n coordinates: [newLongitude, this.latitudeValue]\n };\n }\n updateLatitudeAndLongitude(newLatitudeAndLongitude: number[]): void {\n if (this.disabled || this.readonly) {\n return;\n }\n this.value = {\n type: 'Point',\n coordinates: newLatitudeAndLongitude\n };\n }\n\n roundToStepAndUpdateLatitudeAndLongitude(\n newLatitudeAndLongitude: number[]\n ): void {\n const newLatitude = roundToMultipleOf(\n newLatitudeAndLongitude[1],\n this.step\n );\n const newLongitude = roundToMultipleOf(\n newLatitudeAndLongitude[0],\n this.step\n );\n if (this.disabled || this.readonly) {\n return;\n }\n this.value = {\n type: 'Point',\n coordinates: [newLongitude, newLatitude]\n };\n }\n\n onEventLatitude(newLatitude: string): void {\n if (isValidNumber(newLatitude)) {\n this.updateLatitude(+newLatitude);\n }\n }\n onEventLongitude(newLongitude: string): void {\n if (isValidNumber(newLongitude)) {\n this.updateLongitude(+newLongitude);\n }\n }\n onKeyPress(event: KeyboardEvent): void {\n this.keyPress.emit(event);\n }\n\n checkClassName(): string {\n if (this.readonly === true) {\n return 'readonly';\n }\n return '';\n }\n\n openModalMap(modal: TemplateRef<any>): void {\n this.modalService.open(modal).result.then(\n (result) => {\n if (result !== 'cancel') {\n this.roundToStepAndUpdateLatitudeAndLongitude(result);\n }\n },\n (_) => {}\n );\n }\n\n get mapTitle(): string {\n return this._disabled || !!this.readonly ? 'Location:' : 'Select location:';\n }\n\n get self(): GeolocationComponent {\n return this;\n }\n\n getLabels(\n instance: GeolocationComponent,\n keys: GeoPoint[]\n ): Observable<DataSource<GeoPoint, string>> {\n return instance.locationService.getLabels(instance.locationService, keys);\n }\n\n getData(\n instance: GeolocationComponent,\n search: string\n ): Observable<DataSource<GeoPoint, string>> {\n return instance.locationService.getData(instance.locationService, search);\n }\n\n setPatterns(): void {\n this.step = this.step || 0.00001; // 0.00001 degrees = 1.11 meters\n this.zoom = this.zoom || 18; // (360/2^18) degrees ~ 0.00137 degrees ~ 153 meters\n this.minLatitude = this.minLatitude || -90;\n this.maxLatitude = this.maxLatitude || +90;\n this.minLongitude = this.minLongitude || -180;\n this.maxLongitude = this.maxLongitude || +180;\n }\n}\n","export enum Placement {\n Top = 'top',\n Bottom = 'bottom',\n Left = 'left',\n Right = 'right'\n}\nexport type PlacementValue = 'left' | 'right' | 'top' | 'bottom';\n","import { Component, Input } from '@angular/core';\nimport { LuxTooltipContext } from './tooltip-context';\n\n/**\n * Default Tooltip Component\n */\n@Component({\n template: `\n <span class=\"lux-tooltip\" style=\"transition: opacity 200ms\">{{context.message}}</span>\n `\n})\nexport class TooltipComponent {\n\n @Input() context: LuxTooltipContext;\n\n constructor() { }\n\n}\n","import { ViewRef, ComponentRef } from '@angular/core';\n\nexport class TooltipContentRef {\n constructor(public viewRef?: ViewRef, public componentRef?: ComponentRef<any>) {}\n}\n","import {\n Injectable,\n Injector,\n ComponentRef,\n ComponentFactoryResolver,\n ApplicationRef,\n EmbeddedViewRef,\n ElementRef,\n TemplateRef\n} from '@angular/core';\n\nimport { PlacementValue, Placement } from './placement';\nimport { LuxTooltipContext } from './tooltip-context';\nimport { TooltipComponent } from './tooltip.component';\nimport { TooltipContentRef } from './tooltop-content';\n\n@Injectable()\nexport class TooltipService {\n constructor(\n private _injector: Injector,\n private _crf: ComponentFactoryResolver,\n private _applicationRef: ApplicationRef\n ) {}\n\n appendComponentToBody(\n content: any,\n elHost: ElementRef,\n placement: PlacementValue\n ): TooltipContentRef {\n const tooltipContentRef = this.getTooltipContentRef(content);\n if (tooltipContentRef) {\n let domElem = (tooltipContentRef.viewRef as EmbeddedViewRef<any>)\n .rootNodes[0];\n document.body.appendChild(domElem);\n if (tooltipContentRef.componentRef) {\n tooltipContentRef.componentRef.changeDetectorRef.detectChanges();\n }\n domElem = this.setStyle(domElem, placement);\n domElem = this.setPosition(domElem, elHost, placement);\n return tooltipContentRef;\n }\n return null;\n }\n\n removeComponentFromBody(tooltipContentRef: TooltipContentRef): void {\n this._applicationRef.detachView(tooltipContentRef.viewRef);\n if (tooltipContentRef.componentRef) {\n tooltipContentRef.componentRef.destroy();\n }\n }\n\n private getTooltipContentRef(content: any): TooltipContentRef {\n if (!content) {\n // nothing to show\n } else if (content instanceof TemplateRef) {\n return this.createFromTemplateRef(content);\n } else if (typeof content === 'string') {\n return this.createFromComponent(TooltipComponent, { message: content });\n } else {\n return this.createFromComponent(content);\n }\n }\n\n private createFromTemplateRef(content: TemplateRef<any>): TooltipContentRef {\n const viewRef = content.createEmbeddedView({});\n this._applicationRef.attachView(viewRef);\n return new TooltipContentRef(viewRef);\n }\n\n private createFromComponent(\n component: any,\n context?: LuxTooltipContext\n ): TooltipContentRef {\n const componentRef: ComponentRef<any> = this._crf\n .resolveComponentFactory(component)\n .create(this._injector);\n if (context) {\n componentRef.instance.context = context;\n }\n this._applicationRef.attachView(componentRef.hostView);\n return new TooltipContentRef(componentRef.hostView, componentRef);\n }\n\n private setStyle(\n domElem: HTMLElement,\n placement: PlacementValue\n ): HTMLElement {\n domElem.style.position = 'absolute';\n domElem.style.minWidth = 'min-content';\n domElem.style.minHeight = 'min-content';\n const tooltipElement = this.getTooltipElementFromHTMLElemnt(domElem);\n placement =\n placement !== undefined\n ? (placement.toLocaleLowerCase() as PlacementValue)\n : 'top'; // 'Top' is the default value of placement\n tooltipElement.classList.add(`lux-tooltip-${placement}`);\n tooltipElement.classList.add('lux-tooltip-show');\n return domElem;\n }\n\n private getTooltipElementFromHTMLElemnt(domElem: HTMLElement): any {\n const elementsArray = Array.from(domElem.classList).filter(\n (className) => className === 'lux-tooltip'\n );\n if (elementsArray.length !== 0) {\n return domElem;\n } else if (domElem.hasChildNodes()) {\n const childrenArray = Array.from(domElem.children).filter(\n (child) =>\n this.getTooltipElementFromHTMLElemnt(child as HTMLElement) !== null\n );\n if (childrenArray.length !== 0) {\n return this.getTooltipElementFromHTMLElemnt(\n childrenArray[0] as HTMLElement\n );\n } else {\n return null;\n }\n } else {\n return null;\n }\n }\n\n private setPosition(\n domElem: HTMLElement,\n elHost: ElementRef,\n placement: PlacementValue\n ): HTMLElement {\n const hostPos = elHost.nativeElement.getBoundingClientRect();\n const tooltipPos = domElem.getBoundingClientRect();\n const scrollPos =\n window.pageYOffset ||\n document.documentElement.scrollTop ||\n document.body.scrollTop ||\n 0;\n let top = 0;\n let left = 0;\n const offset = 10;\n\n switch (placement) {\n case Placement.Bottom:\n top = hostPos.bottom + offset;\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\n break;\n case Placement.Left:\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\n left = hostPos.left - tooltipPos.width - offset;\n break;\n case Placement.Right:\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\n left = hostPos.right + offset;\n break;\n case Placement.Top:\n default:\n top = hostPos.top - tooltipPos.height - offset;\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\n break;\n }\n top = Math.max(0, top);\n left = Math.max(0, left);\n domElem.style.top = `${top + scrollPos}px`;\n domElem.style.left = `${left}px`;\n return domElem;\n }\n}\n","import { HostListener, Input, Directive, ElementRef } from '@angular/core';\n\nimport { TooltipService } from './tooltip.service';\nimport { PlacementValue } from './placement';\nimport { TooltipContentRef } from './tooltop-content';\n\n/**\n * Tooltip directive\n */\n@Directive({\n selector: '[luxTooltip]'\n})\nexport class LuxTooltipDirective {\n /** Tooltip title */\n @Input() luxTooltip: any;\n\n /** Component, TemplateRef or String */\n @Input() content: any;\n\n /** Placement */\n @Input() placement: PlacementValue;\n\n tooltipRef: TooltipContentRef;\n\n constructor(\n private elHost: ElementRef,\n private tooltipService: TooltipService\n ) {}\n\n @HostListener('mouseenter') onMouseEnter(): void {\n if (!this.tooltipRef) {\n this.tooltipRef = this.show(this.content, this.elHost, this.placement);\n }\n }\n\n @HostListener('mouseleave') onMouseLeave(): void {\n if (this.tooltipRef) {\n this.remove(this.tooltipRef);\n this.tooltipRef = null;\n }\n }\n\n @HostListener('click') onClick(): void {\n if (this.tooltipRef) {\n this.remove(this.tooltipRef);\n this.tooltipRef = null;\n }\n }\n\n show(\n component: any,\n elHost: ElementRef,\n placement: PlacementValue\n ): TooltipContentRef {\n return this.tooltipService.appendComponentToBody(\n component,\n elHost,\n placement\n );\n }\n\n remove(tooltipRef: TooltipContentRef): void {\n this.tooltipService.removeComponentFromBody(tooltipRef);\n }\n}\n","import { Component, OnInit, OnDestroy, Inject } from '@angular/core';\nimport {\n Router,\n NavigationEnd,\n ActivatedRoute,\n ActivatedRouteSnapshot\n} from '@angular/router';\nimport { filter } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\n\nexport interface BreadcrumbItem {\n label: string;\n url: string;\n}\n@Component({\n selector: 'lux-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss']\n})\nexport class LuxBreadcrumbComponent implements OnInit, OnDestroy {\n public breadcrumbs: BreadcrumbItem[];\n private subs: Subscription[] = [];\n public imagePath = '../assets/img/arrow-forward.svg';\n\n constructor(private route: Router, private activedRoute: ActivatedRoute) {}\n\n ngOnInit(): void {\n this.subs.push(\n this.route.events\n .pipe(filter((event) => event instanceof NavigationEnd))\n .subscribe((_) => {\n this.breadcrumbs = [];\n this.addBreadcrumbs(this.activedRoute.snapshot.root, true, null);\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subs.forEach((s) => s.unsubscribe());\n this.subs = [];\n }\n\n private addBreadcrumbs(\n activedRouteSnapshot: ActivatedRouteSnapshot,\n isRoot: boolean,\n urlPrefix: string\n ): void {\n const routeConfig = activedRouteSnapshot.routeConfig;\n let url = urlPrefix || '';\n url += routeConfig ? '/' + this.getUrl(activedRouteSnapshot) : '';\n const label = routeConfig\n ? this.getLabel(activedRouteSnapshot)\n : isRoot\n ? 'Home'\n : '';\n if (label && url !== '/') {\n const breadcrumb = { label, url };\n this.breadcrumbs.push(breadcrumb);\n }\n if (activedRouteSnapshot.children.length) {\n this.addBreadcrumbs(activedRouteSnapshot.children[0], false, url);\n }\n }\n\n private getUrl(activedRouteSnapshot: ActivatedRouteSnapshot): string {\n if (!activedRouteSnapshot.url[0]) {\n return '';\n }\n const id = activedRouteSnapshot.params.id;\n return id\n ? `${activedRouteSnapshot.url[0]}/${id}`\n : activedRouteSnapshot.routeConfig.path || '';\n }\n\n private getLabel(activedRouteSnapshot: ActivatedRouteSnapshot): string {\n const routeConfig = activedRouteSnapshot.routeConfig;\n if (!routeConfig) {\n return null;\n }\n if (activedRouteSnapshot.data && activedRouteSnapshot.data.title) {\n const data = activedRouteSnapshot.data;\n if (data.objectTitle) {\n return `${data.title} ${data.objectTitle}`;\n } else {\n return data.title;\n }\n }\n return activedRouteSnapshot.params.id || routeConfig.path;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { from, Observable, of } from 'rxjs';\n\nlet openLayersIsInstalled = false;\n\n@Injectable({ providedIn: 'root' })\nexport class OpenLayerLoaderService {\n load(): Observable<boolean> {\n if ((window as any).ol) {\n return of(true);\n }\n\n const openLayerJsUrl = 'https://openlayers.org/en/v5.3.0/build/ol.js';\n const openLayerCssUrl = 'https://openlayers.org/en/v5.3.0/css/ol.css';\n\n if (!openLayersIsInstalled) {\n openLayersIsInstalled = true; // only try to install it once\n loadCss(openLayerCssUrl, () => {});\n return from(\n new Promise<boolean>((resolve, _) => {\n loadScript(openLayerJsUrl, () => resolve(true));\n })\n );\n }\n return of(true);\n }\n}\n\n/** Dynamically load a script from url and return a callback */\nconst loadScript = (url: string, callback: () => void): void => {\n const script: any = document.createElement('script');\n script.type = 'text/javascript';\n\n if (script.readyState) {\n // for old IE\n script.onreadystatechange = (): void => {\n if (script.readyState === 'loaded' || script.readyState === 'complete') {\n script.onreadystatechange = null;\n callback();\n }\n };\n } else {\n // Others browsers\n script.onload = (): void => {\n callback();\n };\n }\n script.src = url;\n document.getElementsByTagName('head')[0].appendChild(script);\n};\n\n/** Dynamically load css from url and return a callback */\nconst loadCss = (url: string, callback: () => void): void => {\n const link: any = document.createElement('link');\n link.type = 'text/css';\n link.rel = 'stylesheet';\n link.type = 'text/javascript';\n link.href = url;\n link.onload = (): void => {\n callback();\n };\n document.getElementsByTagName('head')[0].appendChild(link);\n};\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n AfterViewInit\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { OpenLayerLoaderService } from '../geolocation/openlayer-loader.service';\n\nimport { GeoPoint } from './geopoint';\n\n// @dynamic\ndeclare const ol: any;\n\n@Component({\n selector: 'lux-map',\n templateUrl: './map.component.html',\n styleUrls: ['./map.component.scss']\n})\nexport class MapComponent implements OnInit, AfterViewInit {\n static idCounter = 0;\n\n private loaded$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n\n private _map: any;\n\n @Input() mapId;\n\n _zoom: number;\n @Input()\n set zoom(zoom: number) {\n if (!isNaN(zoom)) {\n this._zoom = zoom;\n if (this._map) {\n this._map.getView().setZoom(zoom);\n }\n }\n }\n get zoom(): number {\n return this._zoom;\n }\n\n _center: GeoPoint;\n @Input()\n set center(center: GeoPoint) {\n if (center) {\n if (center.coordinates && center.coordinates.length === 2) {\n this._center = center;\n if (this._map) {\n this._map.getView().setCenter(ol.proj.fromLonLat(center.coordinates));\n }\n }\n }\n }\n get center(): GeoPoint {\n return this._center;\n }\n\n _readonly: boolean;\n @Input()\n set readonly(readonly: boolean) {\n if (!readonly) {\n if (this._map) {\n this._map.on('click', (args: any) => {\n // args.coordinate is in EPSG:3857 (meters), we transform it into EPSG:4326 (degrees)\n const coordinates = ol.proj.toLonLat(args.coordinate);\n // alternatively: const lonLat = ol.proj.transform(args.coordinate,'EPSG:3857','EPSG:4326');\n this.addMarkerAtCoordinates(coordinates);\n });\n this._map.on('pointermove', (event: any) => {\n const pixel = this._map.getEventPixel(event.originalEvent);\n const hit = this._map.hasFeatureAtPixel(pixel);\n this._map.getViewport().style.cursor = hit ? 'move' : 'grab';\n });\n }\n } else {\n if (this._map) {\n this._map.on('click', (args: any) => {});\n this._map.on('pointermove', (event: any) => {});\n this._map.getViewport().style.cursor = 'grab';\n }\n }\n this._readonly = readonly;\n // reset marker coordinates so marker interactions can be created or recreated accordingly\n // to the changes to readonly\n this.markerCoordinates = this.markerCoordinates;\n }\n get readonly(): boolean {\n return this._readonly;\n }\n\n private _marker: any;\n private _markerInteraction: any;\n private _markerCoordinates: number[];\n @Input()\n private set markerCoordinates(markerCoordinates: number[]) {\n if (markerCoordinates && markerCoordinates.length === 2) {\n this._markerCoordinates = markerCoordinates;\n if (this._map) {\n this.addMarkerAtCoordinates(markerCoordinates);\n }\n } else {\n this._markerCoordinates = undefined;\n if (this._map) {\n this.removeMarker();\n }\n }\n }\n private get markerCoordinates(): number[] {\n return this._markerCoordinates;\n }\n @Input()\n set markerPoint(markerPoint: GeoPoint) {\n if (\n !markerPoint ||\n !(markerPoint.coordinates && markerPoint.coordinates.length === 2)\n ) {\n this.markerCoordinates = undefined;\n } else {\n this.markerCoordinates = [\n +markerPoint.coordinates[0],\n +markerPoint.coordinates[1]\n ];\n }\n this.valueChange.emit(markerPoint);\n }\n get markerPoint(): GeoPoint {\n return {\n type: 'Point',\n coordinates: this.markerCoordinates\n };\n }\n @Output() valueChange = new EventEmitter<GeoPoint>();\n\n private _markerSource: any;\n private _markerStyle: any;\n\n constructor(olLoader: OpenLayerLoaderService) {\n olLoader.load().subscribe((_) => {\n // Initialize\n this._markerSource = new ol.source.Vector();\n this._markerStyle = new ol.style.Style({\n image: new ol.style.Icon({\n anchor: [0.5, 1],\n scale: 0.25,\n src: '/assets/img/marker.png'\n })\n });\n this.loaded$.next(true);\n });\n }\n\n ngOnInit(): void {\n this.mapId = this.mapId ? this.mapId : 'map' + MapComponent.idCounter++;\n }\n\n ngAfterViewInit(): void {\n this.loaded$.subscribe((loaded) => {\n if (loaded) {\n this.initMap();\n }\n });\n }\n private initMap(): void {\n this._map = new ol.Map({\n target: this.mapId,\n controls: ol.control.defaults({ attribution: false }),\n layers: [\n new ol.layer.Tile({\n source: new ol.source.OSM()\n }),\n new ol.layer.Vector({\n source: this._markerSource,\n style: this._markerStyle\n })\n ],\n view: new ol.View({\n center: ol.proj.fromLonLat(\n this.center !== undefined ? this.center.coordinates : [0, 0]\n ),\n zoom: this.zoom\n })\n });\n\n if (this.center === undefined || this.center === null) {\n // if the center is not set, we set its default value\n if ('geolocation' in navigator) {\n navigator.geolocation.getCurrentPosition(\n (position) => {\n this.center = {\n type: 'Point',\n coordinates: [position.coords.longitude, position.coords.latitude]\n };\n },\n (error) => {\n this.center = {\n type: 'Point',\n coordinates: [0, 0]\n };\n }\n );\n } else {\n this.center = {\n type: 'Point',\n coordinates: [0, 0]\n };\n }\n } else {\n // the center needs the map to be properly set, so if it was set before the map was initialized,\n // we set the center again to perform necessary adjustements\n this.center = this.center;\n }\n\n if (this.zoom === undefined || this.zoom === null) {\n // if the zoom is not set, we set its default value\n this.zoom = 18;\n } else {\n // the zoom needs the map to be properly set, so if it was set before the map was initialized,\n // we set the zoom again to perform necessary adjustements\n this.zoom = this.zoom;\n }\n\n if (this.readonly === undefined || this.readonly === null) {\n // if readonly is not set, we set its default value\n this.readonly = false;\n } else {\n // readonly needs the map to be properly set, so if it was set before the map was initialized,\n // we set readonly again to perform necessary adjustements\n this.readonly = this.readonly;\n }\n\n if (\n this.markerCoordinates !== undefined &&\n this.markerCoordinates !== null\n ) {\n // the marker coordinates need the map to be properly set, so if they were set before the map was initialized,\n // we set the marker coordinates again to perform necessary adjustements\n this.markerCoordinates = this.markerCoordinates;\n }\n }\n\n private addMarkerAtCoordinates(coordinates: number[]): void {\n if (coordinates && coordinates.length === 2) {\n if (this._marker !== undefined) {\n this.removeMarker();\n }\n this._marker = new ol.Feature({\n geometry: new ol.geom.Point(\n // [lon, lat] is in EPSG:4326 (degrees), we transform it into EPSG:3857 (meters)\n ol.proj.transform(coordinates, 'EPSG:4326', 'EPSG:3857')\n )\n });\n this._markerSource.addFeature(this._marker);\n this._markerCoordinates = this.getMarkerCoordinates();\n\n if (!this.readonly) {\n const dragInteraction = new ol.interaction.Modify({\n features: new ol.Collection([this._marker]),\n style: this._markerStyle,\n pixelTolerance: 50,\n hitDetection: true\n });\n this._markerInteraction = dragInteraction;\n this._map.addInteraction(dragInteraction);\n }\n\n this._marker.on(\n 'change',\n () => {\n this._markerCoordinates = this.getMarkerCoordinates();\n },\n this._marker\n );\n }\n }\n\n private removeMarker(): void {\n if (this._marker !== undefined) {\n this._markerSource.removeFeature(this._marker);\n this._marker = undefined;\n }\n if (this._markerInteraction !== undefined) {\n this._map.getInteractions().pop();\n this._markerInteraction = undefined;\n }\n }\n\n private getMarkerCoordinates(): number[] | null {\n if (this._marker === undefined || this._marker == null) {\n return this._marker;\n }\n const coordinates = this._marker.getGeometry().getCoordinates();\n // coordinates is in EPSG:3857 (meters), we transform it into EPSG:4326 (degrees)\n return ol.proj.transform(coordinates, 'EPSG:3857', 'EPSG:4326');\n }\n\n onResize(): void {\n if (this._map) {\n this._map.updateSize();\n }\n }\n}\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\r\nimport { languageDetector } from '../lang';\r\nimport { PaginationInfo } from './pagination';\r\n\r\n@Component({\r\n selector: 'lux-pagination',\r\n templateUrl: './pagination.component.html',\r\n styleUrls: ['./pagination.component.scss']\r\n})\r\nexport class PaginationComponent implements OnInit {\r\n literals = {\r\n en: {\r\n first: 'First',\r\n previous: 'Previous',\r\n next: 'Next',\r\n last: 'Last'\r\n },\r\n es: {\r\n first: 'Primero',\r\n previous: 'Anterior',\r\n next: 'Siguiente',\r\n last: 'Último'\r\n }\r\n };\r\n\r\n public first: string;\r\n public previous: string;\r\n public next: string;\r\n public last: string;\r\n\r\n public showPagination = false;\r\n public hidePrevious = false;\r\n public lastPage = false;\r\n public totalPages = 0;\r\n public displayNextEllipsis = false;\r\n public displayPreviousEllipsis = false;\r\n\r\n public pages: number[] = [];\r\n\r\n @Output() goToPage = new EventEmitter<number>();\r\n @Output() pageSizeChange = new EventEmitter<number>();\r\n\r\n /** Current page, total items and items to show per page */\r\n private paginationInfoValue: PaginationInfo;\r\n\r\n private _lang: string;\r\n @Input()\r\n set lang(l: string) {\r\n if (l === this._lang) {\r\n return;\r\n }\r\n if (Object.keys(this.literals).includes(l)) {\r\n this._lang = l;\r\n } else {\r\n this._lang = 'en';\r\n }\r\n this.loadLanguage();\r\n }\r\n get lang(): string {\r\n return this._lang;\r\n }\r\n\r\n @Input()\r\n set paginationInfo(value: PaginationInfo) {\r\n this.paginationInfoValue = value;\r\n this.syncState();\r\n }\r\n get paginationInfo(): PaginationInfo {\r\n return this.paginationInfoValue;\r\n }\r\n\r\n constructor() {\r\n this.lang = languageDetector();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.calculatePages();\r\n }\r\n\r\n pageSizeChanged(pageSize: number): void {\r\n this.paginationInfo.pageSize = pageSize;\r\n this.syncState();\r\n this.pageSizeChange.emit(pageSize);\r\n }\r\n\r\n onPage(n: number): void {\r\n this.goToPage.emit(n);\r\n }\r\n\r\n onFirst(): void {\r\n this.goToPage.emit(0);\r\n }\r\n\r\n onLast(): void {\r\n this.goToPage.emit(this.totalPages - 1);\r\n }\r\n onNext(): void {\r\n const page = (this.paginationInfo.page || 0) + 1;\r\n this.goToPage.emit(page);\r\n }\r\n onPrevious(): void {\r\n const page = (this.paginationInfo.page || 0) - 1;\r\n this.goToPage.emit(page);\r\n }\r\n\r\n private syncState(): void {\r\n this.pages = this.calculatePages();\r\n\r\n this.showPagination =\r\n this.paginationInfo.total > this.paginationInfo.pageSize;\r\n this.hidePrevious = this.paginationInfo.page === 0;\r\n this.lastPage =\r\n this.paginationInfo.pageSize * (this.paginationInfo.page + 1) >=\r\n this.paginationInfo.total;\r\n this.totalPages =\r\n Math.ceil(this.paginationInfo.total / this.paginationInfo.pageSize) || 0;\r\n this.displayNextEllipsis = !this.pages.includes(this.totalPages - 1);\r\n this.displayPreviousEllipsis = !this.pages.includes(0);\r\n }\r\n\r\n private calculatePages(): number[] {\r\n const totalPages =\r\n Math.ceil(this.paginationInfo.total / this.paginationInfo.pageSize) - 1; // 0-index\r\n const p = this.paginationInfo.page || 0;\r\n const pagesToShow = this.paginationInfo.pagesToShow;\r\n const pages: number[] = [];\r\n pages.push(p);\r\n const times = pagesToShow - 1;\r\n for (let i = 0; i < times; i++) {\r\n if (pages.length < pagesToShow) {\r\n if (Math.min(...pages) > 0) {\r\n pages.unshift(Math.min(...pages) - 1);\r\n }\r\n }\r\n if (pages.length < pagesToShow) {\r\n if (Math.max(...pages) < totalPages) {\r\n pages.push(Math.max(...pages) + 1);\r\n }\r\n }\r\n }\r\n pages.sort((a, b) => a - b);\r\n return pages;\r\n }\r\n\r\n private loadLanguage(): void {\r\n const l = this.literals[this.lang];\r\n this.first = l.first;\r\n this.previous = l.previous;\r\n this.next = l.next;\r\n this.last = l.last;\r\n }\r\n}\r\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n Output\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport { isInitialAndEmpty } from '../helperFns';\n\nexport interface RadioItem {\n name?: string;\n label: string;\n value: any;\n}\n\n@Component({\n selector: 'lux-radiogroup',\n templateUrl: './radiogroup.component.html',\n styleUrls: ['./radiogroup.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => RadiogroupComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => RadiogroupComponent)\n }\n ]\n})\nexport class RadiogroupComponent implements ControlValueAccessor, Validator {\n private touched = false;\n\n @Input() name = 'radiogroup1';\n @Input() public disabled: boolean | null = false;\n @Input() public readonly: boolean | null = false;\n @Input() public required: boolean | null = false;\n\n @Input()\n set items(col: RadioItem[]) {\n this._items = (col || []).map((it, index) =>\n this.ensureHasUniqueName(it, index)\n );\n this.itemsChange.emit(col);\n }\n get items(): RadioItem[] {\n return this._items;\n }\n @Output() itemsChange = new EventEmitter<RadioItem[]>();\n\n @Input()\n set value(v: any) {\n if (v === this._value) {\n return;\n }\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\n this._value = v;\n this.onChange(v);\n if (!initialAndEmpty) {\n this.valueChange.emit(v);\n }\n }\n get value(): any {\n return this._value;\n }\n @Output() valueChange = new EventEmitter<any>();\n\n private _value: any = undefined;\n private _items: RadioItem[] = [];\n\n constructor() {}\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n writeValue(value: any): void {\n this.value = value;\n }\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n if (\n this.required &&\n (value === '' || value === null || value === undefined)\n ) {\n return { required: { value, reason: 'Required field.' } };\n }\n return null;\n }\n // End of Validator interface\n\n setValue(event: MouseEvent, item: RadioItem): void {\n if (!this.disabled && !this.readonly) {\n this.value = item.value;\n this.markAsTouched();\n }\n event.preventDefault();\n }\n ensureHasUniqueName(item: RadioItem, index: number): RadioItem {\n if (!item.name) {\n item.name = `${this.name}_${index}`;\n }\n return item;\n }\n}\n","import {\n Component,\n Input,\n EventEmitter,\n Output,\n forwardRef\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\n\nlet sequencer = 0;\n\n@Component({\n selector: 'lux-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => SelectComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => SelectComponent)\n }\n ]\n})\nexport class SelectComponent implements ControlValueAccessor, Validator {\n @Input() id = 'stringList' + sequencer++;\n @Input() disabled = false;\n @Input() required = false;\n /** Allow multiple elements */\n @Input() multiple = true;\n @Input() value: string[] = [];\n @Output() valueChange = new EventEmitter<string[]>();\n @Input() placeholder = 'Add new';\n /** If set, check there is no duplicates in the data. */\n @Input() unique = true;\n /** Validation function for new items. Returns error or null if valid */\n @Input() validateItem: (item: string) => string = (_) => null;\n\n newEntry = '';\n error = null;\n isValidNewEntry = false;\n\n private touched = false;\n\n constructor() {}\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n writeValue(value: any): void {\n this.value = value;\n }\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n if (\n this.required &&\n (value === '' || value === null || value === undefined)\n ) {\n return { required: { value, reason: 'Required field.' } };\n }\n return null;\n }\n // End of Validator interface\n\n get canAdd(): boolean {\n return this.multiple || this.value.length === 0;\n }\n add(val: string): void {\n this.value.push(val);\n this.newEntry = '';\n this.markAsTouched();\n this.valueChange.emit(this.value);\n }\n remove(index: number): void {\n if (this.value.length > index) {\n this.value.splice(index, 1);\n this.markAsTouched();\n this.valueChange.emit(this.value);\n }\n }\n onKeyPress(event: KeyboardEvent): void {\n if (event.key === 'Enter' && !this.error && this.newEntry !== '') {\n // Add on pressing Enter/Return\n this.markAsTouched();\n this.add(this.newEntry);\n }\n }\n onChangeNewEntry(newValue: string): void {\n this.markAsTouched();\n if (!newValue) {\n this.isValidNewEntry = false;\n this.error = null;\n return;\n }\n if (this.unique) {\n const found = (this.value || []).find((it) => it === newValue);\n this.isValidNewEntry = !found;\n this.error = found\n ? `Value '${newValue}' is already in. Cannot add duplicates.`\n : null;\n if (!this.isValidNewEntry) {\n return;\n }\n }\n this.error = this.validateItem(newValue);\n this.isValidNewEntry = !this.error;\n }\n}\n","import { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[luxVoiceRecognition]'\n})\nexport class VoiceRecognitionDirective implements OnInit {\n @Input() language: string;\n // See API at: https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition\n private recognition: any;\n private isRecognizing = false;\n private mic: any;\n\n constructor(private el: ElementRef, private renderer: Renderer2) {\n const speechRecognition = (window as any).webkitSpeechRecognition;\n if (speechRecognition) {\n this.recognition = new speechRecognition();\n }\n }\n\n ngOnInit(): void {\n if (this.recognition) {\n // API is available\n this.recognition.lang = this.language || window.navigator.language;\n this.recognition.interimResults = false;\n this.recognition.maxAlternatives = 1;\n\n // Add mic icon\n this.mic = document.createElement('div');\n this.mic.setAttribute('class', 'lux-microphone');\n\n const parent = this.el.nativeElement.parentElement;\n parent.appendChild(this.mic);\n\n // Add event handlers\n this.mic.onclick = (): void => this.microphoneClick();\n this.recognition.onresult = (event): void => this.onRecognized(event);\n }\n }\n\n microphoneClick(): void {\n if (this.isRecognizing) {\n // stop\n this.isRecognizing = false;\n this.renderer.removeClass(this.mic, 'lux-recording');\n this.recognition.abort();\n } else {\n // start\n this.el.nativeElement.value = getRecordingMessage(this.language);\n this.isRecognizing = true;\n this.renderer.addClass(this.mic, 'lux-recording');\n this.recognition.start();\n }\n }\n onRecognized(event: any): void {\n const recognizedText = event.results[0][0].transcript;\n this.isRecognizing = false;\n this.el.nativeElement.value = recognizedText;\n this.renderer.removeClass(this.mic, 'lux-recording');\n }\n}\n\nconst getRecordingMessage = (lang: string): string => {\n switch (lang.toLowerCase()) {\n case 'es':\n case 'es-es':\n return 'Grabando...';\n case 'en':\n case 'en-uk':\n case 'en-us':\n default:\n return 'Recording...';\n }\n};\n","\nimport { isPlatformBrowser } from '@angular/common';\n\nimport { ClassProvider, FactoryProvider, InjectionToken, PLATFORM_ID } from '@angular/core';\n\n/* Create a new injection token for injecting the window into a component. */\nexport const WINDOW = new InjectionToken('WindowToken');\n\n/* Define abstract class for obtaining reference to the global window object. */\nexport abstract class WindowRef {\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n get nativeWindow(): Window | Object {\n throw new Error('Not implemented.');\n }\n\n}\n\n/* Define class that implements the abstract class and returns the native window object. */\nexport class BrowserWindowRef extends WindowRef {\n\n constructor() {\n super();\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n get nativeWindow(): Window | Object {\n return window;\n }\n\n}\n\n/* Create an factory function that returns the native window object. */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const windowFactory = (browserWindowRef: BrowserWindowRef, platformId: Object): Window | Object => {\n if (isPlatformBrowser(platformId)) {\n return browserWindowRef.nativeWindow;\n }\n return new Object();\n};\n\n/* Create a injectable provider for the WindowRef token that uses the BrowserWindowRef class. */\nconst browserWindowProvider: ClassProvider = {\n provide: WindowRef,\n useClass: BrowserWindowRef\n};\n\n/* Create an injectable provider that uses the windowFactory function for returning the native window object. */\nconst windowProvider: FactoryProvider = {\n provide: WINDOW,\n useFactory: windowFactory,\n deps: [ WindowRef, PLATFORM_ID ]\n};\n\n/* Create an array of providers. */\nexport const WINDOW_PROVIDERS = [\n browserWindowProvider,\n windowProvider\n];\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { AngularResizedEventModule } from 'angular-resize-event';\nimport { AutocompleteComponent } from './autocomplete/autocomplete.component';\nimport { AutocompleteListComponent } from './autocomplete-list/autocomplete-list.component';\nimport { CheckboxComponent } from './checkbox/checkbox.component';\nimport { InputComponent } from './input/input.component';\nimport { FilterComponent } from './filter/filter.component';\nimport { GeolocationComponent } from './geolocation/geolocation.component';\nimport { HttpClientModule } from '@angular/common/http';\nimport { LuxTooltipDirective } from './tooltip/tooltip.directive';\nimport { LuxBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\nimport { LuxModalWindowComponent } from './modal/modal-window';\nimport { LuxModalBackdropComponent } from './modal/modal-backdrop';\nimport { MapComponent } from './map/map.component';\nimport { ModalService } from './modal/modal.service';\nimport { PaginationComponent } from './pagination/pagination.component';\nimport { RadiogroupComponent } from './radiogroup/radiogroup.component';\nimport { SelectComponent } from './select/select.component';\nimport { TooltipComponent } from './tooltip/tooltip.component';\nimport { TooltipService } from './tooltip/tooltip.service';\nimport { VoiceRecognitionDirective } from './voice-recognition/voice-recognition.directive';\nimport { WINDOW_PROVIDERS } from './window/window.service';\n\n@NgModule({\n declarations: [\n AutocompleteComponent,\n AutocompleteListComponent,\n FilterComponent,\n CheckboxComponent,\n InputComponent,\n GeolocationComponent,\n LuxTooltipDirective,\n LuxModalWindowComponent,\n LuxModalBackdropComponent,\n LuxBreadcrumbComponent,\n MapComponent,\n SelectComponent,\n TooltipComponent,\n PaginationComponent,\n RadiogroupComponent,\n VoiceRecognitionDirective\n ],\n entryComponents: [\n LuxModalWindowComponent,\n LuxModalBackdropComponent,\n TooltipComponent\n ],\n providers: [ModalService, TooltipService, WINDOW_PROVIDERS],\n imports: [\n AngularResizedEventModule,\n FormsModule,\n HttpClientModule,\n ReactiveFormsModule,\n RouterModule,\n CommonModule\n ],\n exports: [\n AutocompleteComponent,\n AutocompleteListComponent,\n FilterComponent,\n CheckboxComponent,\n InputComponent,\n GeolocationComponent,\n LuxTooltipDirective,\n LuxBreadcrumbComponent,\n LuxBreadcrumbComponent,\n MapComponent,\n SelectComponent,\n PaginationComponent,\n RadiogroupComponent,\n VoiceRecognitionDirective\n ]\n})\nexport class LuxModule {}\n","/*\n * Public API Surface of lux\n */\n\nexport { LuxModule } from './lib/lux.module';\nexport {\n DataSource,\n DataSourceItem,\n DecoratedDataSource,\n DecoratedDataSourceItem\n} from './lib/datasource';\nexport { AutocompleteComponent } from './lib/autocomplete/autocomplete.component';\nexport { AutocompleteListComponent } from './lib/autocomplete-list/autocomplete-list.component';\nexport {\n LuxBreadcrumbComponent,\n BreadcrumbItem\n} from './lib/breadcrumb/breadcrumb.component';\nexport { CheckboxComponent } from './lib/checkbox/checkbox.component';\nexport { FilterComponent } from './lib/filter/filter.component';\nexport { InputComponent } from './lib/input/input.component';\nexport { PaginationComponent } from './lib/pagination/pagination.component';\nexport { LuxTooltipDirective } from './lib/tooltip/tooltip.directive';\nexport { ModalService } from './lib/modal/modal.service';\nexport {\n RadioItem,\n RadiogroupComponent\n} from './lib/radiogroup/radiogroup.component';\nexport { ModalRef } from './lib/modal/modal-ref';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {GeolocationComponent as ɵa} from './lib/geolocation/geolocation.component';\nexport {GeolocationService as ɵd} from './lib/geolocation/geolocation.service';\nexport {OpenLayerLoaderService as ɵi} from './lib/geolocation/openlayer-loader.service';\nexport {MapComponent as ɵh} from './lib/map/map.component';\nexport {LuxModalBackdropComponent as ɵg} from './lib/modal/modal-backdrop';\nexport {LuxModalConfig as ɵc} from './lib/modal/modal-config';\nexport {ModalStack as ɵb} from './lib/modal/modal-stack';\nexport {LuxModalWindowComponent as ɵf} from './lib/modal/modal-window';\nexport {ContentRef as ɵr} from './lib/modal/util';\nexport {SelectComponent as ɵj} from './lib/select/select.component';\nexport {TooltipComponent as ɵk} from './lib/tooltip/tooltip.component';\nexport {TooltipService as ɵe} from './lib/tooltip/tooltip.service';\nexport {VoiceRecognitionDirective as ɵl} from './lib/voice-recognition/voice-recognition.directive';\nexport {BrowserWindowRef as ɵo,WINDOW as ɵm,WINDOW_PROVIDERS as ɵq,WindowRef as ɵn,windowFactory as ɵp} from './lib/window/window.service';"],"names":["EventEmitter","debounceTime","first","of","map","Component","NG_VALUE_ACCESSOR","forwardRef","NG_VALIDATORS","ChangeDetectorRef","ViewChild","Output","Input","Subject","fromEvent","takeUntil","filter","withLatestFrom","Inject","DOCUMENT","ElementRef","HostBinding","HostListener","Injectable","TemplateRef","ApplicationRef","Injector","RendererFactory2","ComponentFactoryResolver","distinctUntilChanged","switchMap","HttpClient","Directive","NavigationEnd","Router","ActivatedRoute","from","BehaviorSubject","Renderer2","InjectionToken","isPlatformBrowser","PLATFORM_ID","NgModule","AngularResizedEventModule","FormsModule","HttpClientModule","ReactiveFormsModule","RouterModule","CommonModule"],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  import { ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, Input, Output, ViewChild } from '@angular/core';
2
2
  import { of } from 'rxjs';
3
- import { first, map } from 'rxjs/operators';
3
+ import { debounceTime, first, map } from 'rxjs/operators';
4
4
  import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
5
5
  import { isInitialAndEmpty } from '../helperFns';
6
6
  export class AutocompleteComponent {
7
7
  constructor(cd) {
8
8
  this.cd = cd;
9
+ this.showSpinner = false;
9
10
  this.touched = false;
10
11
  this.completionList = [];
11
12
  this.showCompletion = false;
@@ -16,6 +17,11 @@ export class AutocompleteComponent {
16
17
  this.label = '';
17
18
  /** If canAddNewValues, user can type items not present in the data-source. */
18
19
  this.canAddNewValues = false;
20
+ /** After cleaning the selection should the completion list remain open or closed:
21
+ * false: (default) close on filters, to clean a filter and select all.
22
+ * true: keep open (when the action most likely is to pick another one).
23
+ */
24
+ this.keepOpenAfterDelete = false;
19
25
  this.required = false;
20
26
  this.resolveLabelsFunction = undefined;
21
27
  this.populateFunction = undefined;
@@ -80,7 +86,7 @@ export class AutocompleteComponent {
80
86
  // End of Validator interface
81
87
  clear() {
82
88
  this.value = null;
83
- this.toggleCompletion(true, '');
89
+ this.toggleCompletion(this.keepOpenAfterDelete, '');
84
90
  }
85
91
  completeLabel() {
86
92
  if (this.value) {
@@ -89,7 +95,7 @@ export class AutocompleteComponent {
89
95
  }
90
96
  else if (this.instance && this.resolveLabelsFunction) {
91
97
  this.resolveLabelsFunction(this.instance, [this.value])
92
- .pipe(first())
98
+ .pipe(debounceTime(1), first())
93
99
  .subscribe((data) => {
94
100
  this.label = findLabelForId(data, this.value) || '';
95
101
  });
@@ -252,12 +258,34 @@ export class AutocompleteComponent {
252
258
  }
253
259
  showCompletionList(text) {
254
260
  this.setSameWidth();
255
- this.computeCompletionList(text).subscribe((cl) => {
256
- this.completionList = cl;
257
- this.focusItem =
258
- this.completionList.length > 0 ? this.completionList[0] : null;
259
- this.showCompletion = true;
260
- });
261
+ const useSpinner = this.hasExternalDataSource();
262
+ this.spinnerVisibility(useSpinner, true);
263
+ setTimeout(() => {
264
+ // for spinner to be shown
265
+ this.computeCompletionList(text).subscribe({
266
+ next: (cl) => {
267
+ this.completionList = cl;
268
+ this.focusItem =
269
+ this.completionList.length > 0 ? this.completionList[0] : null;
270
+ this.showCompletion = true;
271
+ this.spinnerVisibility(useSpinner, false);
272
+ },
273
+ error: () => {
274
+ this.spinnerVisibility(useSpinner, false);
275
+ },
276
+ complete: () => {
277
+ this.spinnerVisibility(useSpinner, false);
278
+ }
279
+ });
280
+ }, 1);
281
+ }
282
+ spinnerVisibility(useSpinner, value) {
283
+ if (useSpinner) {
284
+ this.showSpinner = value;
285
+ }
286
+ }
287
+ hasExternalDataSource() {
288
+ return !this.dataSource && !!this.instance && !!this.populateFunction;
261
289
  }
262
290
  computeCompletionList(text) {
263
291
  const searchText = (text || '').toLowerCase();
@@ -268,7 +296,7 @@ export class AutocompleteComponent {
268
296
  return of(decorateDataSource(ds, searchText));
269
297
  }
270
298
  else if (this.instance && this.populateFunction) {
271
- return this.populateFunction(this.instance, searchText).pipe(first(), map((ds) => {
299
+ return this.populateFunction(this.instance, searchText).pipe(debounceTime(1), first(), map((ds) => {
272
300
  ds.filter((it) => ignoreAccentsInclude(it.label, searchText)).sort((a, b) => a.label.localeCompare(b.label));
273
301
  return decorateDataSource(ds, searchText);
274
302
  }));
@@ -282,7 +310,7 @@ AutocompleteComponent.idCounter = 0;
282
310
  AutocompleteComponent.decorators = [
283
311
  { type: Component, args: [{
284
312
  selector: 'lux-autocomplete',
285
- template: "<div class=\"lux-autocomplete\" (blur)=\"toggleCompletion(false, i0.value)\">\n <div class=\"lux-autocomplete-box\">\n <input\n #i0\n [id]=\"inputId\"\n [(ngModel)]=\"label\"\n [placeholder]=\"placeholder\"\n [attr.disabled]=\"disabled || null\"\n [attr.readonly]=\"readonly || null\"\n (keydown)=\"onKeydown($event, i0.value)\"\n (keypress)=\"onKeypress($event, i0.value)\"\n (keyup)=\"onKeyup($event, i0.value)\"\n (blur)=\"onLostFocus()\"\n (focus)=\"toggleCompletion(true, i0.value)\"\n (click)=\"toggleCompletion(true, i0.value)\"\n (resized)=\"onInputResized()\"\n (window:resize)=\"onInputResized()\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n [attr.aria-expanded]=\"showCompletion\"\n aria-haspopup=\"true\"\n attr.aria-owns=\"{{ inputId + '_list' }}\"\n [attr.aria-activedescendant]=\"selectedOption\"\n />\n <button\n *ngIf=\"!disabled && i0.value; else dropdown\"\n class=\"icon-clear\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n ></button>\n <ng-template #dropdown>\n <div\n class=\"icon-dropdown\"\n (click)=\"toggleCompletion(!showCompletion, i0.value)\"\n ></div>\n </ng-template>\n </div>\n <div\n #completeDiv\n [class.showCompletion]=\"showCompletion\"\n class=\"lux-completion-list\"\n id=\"{{ inputId + '_list' }}\"\n >\n <ul>\n <li\n *ngFor=\"let item of completionList; let index = index\"\n id=\"{{ inputId + '_' + index }}\"\n class=\"lux-completion-item\"\n [class.selected]=\"focusItem && item.key === focusItem.key\"\n (click)=\"complete(item)\"\n [attr.aria-label]=\"item.label\"\n >\n <span>{{ item.labelPrefix }}</span>\n <span class=\"bold\">{{ item.labelMatch }}</span>\n <span>{{ item.labelPostfix }}</span>\n </li>\n </ul>\n </div>\n</div>\n",
313
+ template: "<div class=\"lux-autocomplete\" (blur)=\"toggleCompletion(false, i0.value)\">\n <div class=\"lux-autocomplete-box\">\n <input\n #i0\n [id]=\"inputId\"\n [(ngModel)]=\"label\"\n [placeholder]=\"placeholder\"\n [attr.disabled]=\"disabled || null\"\n [attr.readonly]=\"readonly || null\"\n (keydown)=\"onKeydown($event, i0.value)\"\n (keypress)=\"onKeypress($event, i0.value)\"\n (keyup)=\"onKeyup($event, i0.value)\"\n (blur)=\"onLostFocus()\"\n (focus)=\"toggleCompletion(true, i0.value)\"\n (click)=\"toggleCompletion(true, i0.value)\"\n (resized)=\"onInputResized()\"\n (window:resize)=\"onInputResized()\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n [attr.aria-expanded]=\"showCompletion\"\n aria-haspopup=\"true\"\n attr.aria-owns=\"{{ inputId + '_list' }}\"\n [attr.aria-activedescendant]=\"selectedOption\"\n />\n <div *ngIf=\"canAddNewValues\" class=\"icon-suggestions\"></div>\n <div *ngIf=\"showSpinner; else noLoading\" class=\"icon-spinner\"></div>\n <ng-template #noLoading>\n <button\n *ngIf=\"!disabled && i0.value; else dropdown\"\n class=\"icon-clear\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n ></button>\n <ng-template #dropdown>\n <div\n class=\"icon-dropdown\"\n (click)=\"toggleCompletion(!showCompletion, i0.value)\"\n ></div>\n </ng-template>\n </ng-template>\n </div>\n <div\n #completeDiv\n [class.showCompletion]=\"showCompletion\"\n class=\"lux-completion-list\"\n id=\"{{ inputId + '_list' }}\"\n >\n <ul>\n <li\n *ngFor=\"let item of completionList; let index = index\"\n id=\"{{ inputId + '_' + index }}\"\n class=\"lux-completion-item\"\n [class.selected]=\"focusItem && item.key === focusItem.key\"\n (click)=\"complete(item)\"\n [attr.aria-label]=\"item.label\"\n >\n <span>{{ item.labelPrefix }}</span>\n <span class=\"bold\">{{ item.labelMatch }}</span>\n <span>{{ item.labelPostfix }}</span>\n </li>\n </ul>\n </div>\n</div>\n",
286
314
  providers: [
287
315
  {
288
316
  provide: NG_VALUE_ACCESSOR,
@@ -295,7 +323,7 @@ AutocompleteComponent.decorators = [
295
323
  useExisting: forwardRef(() => AutocompleteComponent)
296
324
  }
297
325
  ],
298
- styles: [".lux-autocomplete .lux-autocomplete-box{display:grid;grid-template-columns:auto 1.5rem}.lux-autocomplete input{padding:.1rem 1.5rem .1rem .5rem;text-overflow:ellipsis;grid-row:1;grid-column-start:1;grid-column-end:3}.lux-autocomplete .icon-clear{grid-row:1;grid-column:2;width:1.5rem;border:none;background-color:transparent;background:url(/assets/img/filter-clear.png) no-repeat 50%;background-size:.5rem .5rem;z-index:1}.lux-autocomplete .icon-dropdown{grid-row:1;grid-column:2;width:1.5rem;height:1.3rem;border:none;background-color:transparent;background:url(/assets/img/drop-down-arrow.svg) no-repeat 50%;background-size:.5rem .5rem;z-index:1}.lux-completion-list{visibility:collapse;position:absolute;border:1px solid #ccc;margin:0;padding:0;max-height:10rem;overflow:auto;z-index:2}.lux-completion-list ul{list-style:none;margin:0;padding:0}.showCompletion{visibility:visible}.lux-completion-item{background-color:#fff;color:#000;padding:.1rem .5rem;cursor:pointer}.selected{background-color:#2e2eac;color:#fff}.disabled{background-color:#f0f0f0;color:#444}.disabled .selected{background-color:#9898ec;color:#fff}.bold{font-weight:700}"]
326
+ styles: [".lux-autocomplete .lux-autocomplete-box{display:grid;grid-template-columns:1fr -webkit-max-content;grid-template-columns:1fr max-content}.lux-autocomplete input{padding:.1rem 1.5rem .1rem .5rem;padding:var(--lux-autocomplete-input-padding, .1rem 1.5rem .1rem .5rem);text-overflow:ellipsis;grid-row:1;grid-column-start:1;grid-column-end:3}.lux-autocomplete .icon-suggestions{grid-row:1;grid-column:2;width:1.5rem;border:none;background-color:transparent;background:url(/assets/img/suggestions.svg) no-repeat center;background-size:.5rem .5rem;z-index:1;position:relative;left:-1rem}.lux-autocomplete .icon-clear{grid-row:1;grid-column:2;width:1.5rem;width:var(--lux-autocomplete-icon-width, 1.5rem);border:none;background-color:transparent;background:url(/assets/img/filter-clear.png) no-repeat center;background:var(--lux-autocomplete-icon-clear, url(/assets/img/filter-clear.png) no-repeat center);background-size:.5rem .5rem;background-size:var(--lux-autocomplete-icon-bg-size, .5rem .5rem);z-index:1}.lux-autocomplete .icon-dropdown{grid-row:1;grid-column:2;width:1.5rem;width:var(--lux-autocomplete-icon-width, 1.5rem);height:1.3rem;height:var(--lux-autocomplete-icon-height, 1.3rem);border:none;background-color:transparent;background:url(/assets/img/drop-down-arrow.svg) no-repeat center;background:var(--lux-autocomplete-icon-dropdown, url(/assets/img/drop-down-arrow.svg) no-repeat center);background-size:.5rem .5rem;background-size:var(--lux-autocomplete-icon-bg-size, .5rem .5rem);z-index:1}.lux-autocomplete .icon-spinner{grid-row:1;grid-column:2;width:1.5rem;border:none;background-color:transparent;background:url(/assets/img/spinner.svg) no-repeat center;background-size:1.2rem 1.2rem;z-index:1}.lux-completion-list{visibility:collapse;position:absolute;border:1px solid #ccc;margin:0;padding:0;max-height:10rem;overflow:auto;z-index:2}.lux-completion-list ul{list-style:none;margin:0;padding:0}.showCompletion{visibility:visible}.lux-completion-item{background-color:#fff;color:#000;padding:.1rem .5rem;cursor:pointer}.selected{background-color:#2e2eac;color:#fff}.disabled{background-color:#f0f0f0;color:#444}.disabled .selected{background-color:#9898ec;color:#fff}.bold{font-weight:bold}\n"]
299
327
  },] }
300
328
  ];
301
329
  AutocompleteComponent.ctorParameters = () => [
@@ -311,6 +339,7 @@ AutocompleteComponent.propDecorators = {
311
339
  readonly: [{ type: Input }],
312
340
  label: [{ type: Input }],
313
341
  canAddNewValues: [{ type: Input }],
342
+ keepOpenAfterDelete: [{ type: Input }],
314
343
  value: [{ type: Input }],
315
344
  dataSource: [{ type: Input }],
316
345
  required: [{ type: Input }],
@@ -350,4 +379,4 @@ const findLabelForId = (data, id) => {
350
379
  };
351
380
  const ɵ4 = findLabelForId;
352
381
  export { ɵ0, ɵ1, ɵ2, ɵ3, ɵ4 };
353
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2x1eC9zcmMvbGliL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc1QyxPQUFPLEVBR0wsYUFBYSxFQUNiLGlCQUFpQixFQUdsQixNQUFNLGdCQUFnQixDQUFDO0FBT3hCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQW1CakQsTUFBTSxPQUFPLHFCQUFxQjtJQW9FaEMsWUFBb0IsRUFBcUI7UUFBckIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUF4RHpDLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsbUJBQWMsR0FBd0IsRUFBRSxDQUFDO1FBQ3pDLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBR2IsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3RDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUEyQixDQUFDO1FBR3pELGFBQVEsR0FBbUIsSUFBSSxDQUFDO1FBQ2hDLGFBQVEsR0FBbUIsSUFBSSxDQUFDO1FBQ3ZDLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDcEIsOEVBQThFO1FBQ3JFLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBdUJ4QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBVWpCLDBCQUFxQixHQUdhLFNBQVMsQ0FBQztRQUM1QyxxQkFBZ0IsR0FH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QUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5RSxNQUFNLE9BQU8sbUNBQ1IsSUFBSSxLQUNQLFdBQVc7UUFDWCxVQUFVO1FBQ1YsWUFBWSxHQUNiLENBQUM7SUFDRixPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDLENBQUM7O0FBRUYsTUFBTSxjQUFjLEdBQUcsQ0FBQyxJQUE2QixFQUFFLEVBQU8sRUFBVSxFQUFFO0lBQ3hFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDL0MsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNwQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpcnN0LCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG4vLyBEbyBub3QgcmVtb3ZlIHRoaXMgaW1wb3J0OiBuZWVkZWQgaW4gdGhlIHRlbXBsYXRlXG5pbXBvcnQgeyBSZXNpemVkRXZlbnQgfSBmcm9tICdhbmd1bGFyLXJlc2l6ZS1ldmVudCc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOR19WQUxJREFUT1JTLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIERhdGFTb3VyY2UsXG4gIERhdGFTb3VyY2VJdGVtLFxuICBEZWNvcmF0ZWREYXRhU291cmNlLFxuICBEZWNvcmF0ZWREYXRhU291cmNlSXRlbVxufSBmcm9tICcuLi9kYXRhc291cmNlJztcbmltcG9ydCB7IGlzSW5pdGlhbEFuZEVtcHR5IH0gZnJvbSAnLi4vaGVscGVyRm5zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbHV4LWF1dG9jb21wbGV0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hdXRvY29tcGxldGUuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEF1dG9jb21wbGV0ZUNvbXBvbmVudClcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEF1dG9jb21wbGV0ZUNvbXBvbmVudClcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgT25Jbml0LCBBZnRlclZpZXdJbml0XG57XG4gIHN0YXRpYyBpZENvdW50ZXIgPSAwO1xuXG4gIEBWaWV3Q2hpbGQoJ2kwJywgeyBzdGF0aWM6IHRydWUgfSkgaTA6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2NvbXBsZXRlRGl2JywgeyBzdGF0aWM6IHRydWUgfSkgY29tcGxldGVEaXY6IEVsZW1lbnRSZWY7XG5cbiAgcHJpdmF0ZSBfZGF0YVNvdXJjZTogRGF0YVNvdXJjZTxhbnksIHN0cmluZz47XG4gIHByaXZhdGUgX3BsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIHByaXZhdGUgX3ZhbHVlOiBhbnk7XG5cbiAgdG91Y2hlZCA9IGZhbHNlO1xuICBjb21wbGV0aW9uTGlzdDogRGVjb3JhdGVkRGF0YVNvdXJjZSA9IFtdO1xuICBzaG93Q29tcGxldGlvbiA9IGZhbHNlO1xuICBmb2N1c0l0ZW06IERhdGFTb3VyY2VJdGVtPGFueSwgc3RyaW5nPjtcblxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGRhdGFTb3VyY2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGFTb3VyY2U8YW55LCBzdHJpbmc+PigpO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBpbnB1dElkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbiB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBwdWJsaWMgcmVhZG9ubHk6IGJvb2xlYW4gfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgbGFiZWwgPSAnJztcbiAgLyoqIElmIGNhbkFkZE5ld1ZhbHVlcywgdXNlciBjYW4gdHlwZSBpdGVtcyBub3QgcHJlc2VudCBpbiB0aGUgZGF0YS1zb3VyY2UuICovXG4gIEBJbnB1dCgpIGNhbkFkZE5ld1ZhbHVlcyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuICBzZXQgdmFsdWUodjogYW55KSB7XG4gICAgY29uc3QgaW5pdGlhbEFuZEVtcHR5ID0gaXNJbml0aWFsQW5kRW1wdHkodGhpcy5fdmFsdWUsIHYpO1xuICAgIHRoaXMuX3ZhbHVlID0gdjtcbiAgICB0aGlzLm9uQ2hhbmdlKHYpO1xuICAgIHRoaXMuY29tcGxldGVMYWJlbCgpO1xuICAgIGlmICghaW5pdGlhbEFuZEVtcHR5KSB7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodik7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpXG4gIGdldCBkYXRhU291cmNlKCk6IERhdGFTb3VyY2U8YW55LCBzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZTtcbiAgfVxuICBzZXQgZGF0YVNvdXJjZSh2OiBEYXRhU291cmNlPGFueSwgc3RyaW5nPikge1xuICAgIHRoaXMuX2RhdGFTb3VyY2UgPSB2O1xuICAgIHRoaXMuZGF0YVNvdXJjZUNoYW5nZS5lbWl0KHYpO1xuICB9XG4gIEBJbnB1dCgpIHJlcXVpcmVkID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgc2V0IHBsYWNlaG9sZGVyKHY6IHN0cmluZykge1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gdjtcbiAgfVxuICBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXIgPyB0aGlzLl9wbGFjZWhvbGRlciA6ICcnO1xuICB9XG5cbiAgQElucHV0KCkgcmVzb2x2ZUxhYmVsc0Z1bmN0aW9uPzogKFxuICAgIGluc3RhbmNlOiBhbnksXG4gICAga2V5czogYW55W11cbiAgKSA9PiBPYnNlcnZhYmxlPERhdGFTb3VyY2U8YW55LCBzdHJpbmc+PiA9IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgcG9wdWxhdGVGdW5jdGlvbj86IChcbiAgICBpbnN0YW5jZTogYW55LFxuICAgIHNlYXJjaDogc3RyaW5nXG4gICkgPT4gT2JzZXJ2YWJsZTxEYXRhU291cmNlPGFueSwgc3RyaW5nPj4gPSB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGluc3RhbmNlOiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgLy8gQ29udHJvbFZhbHVlQWNjZXNzb3IgSW50ZXJmYWNlXG4gIG9uQ2hhbmdlID0gKHZhbHVlKTogdm9pZCA9PiB7fTtcbiAgb25Ub3VjaGVkID0gKCk6IHZvaWQgPT4ge307XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IG9uQ2hhbmdlO1xuICB9XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKG9uVG91Y2hlZDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBvblRvdWNoZWQ7XG4gIH1cbiAgbWFya0FzVG91Y2hlZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudG91Y2hlZCAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMudG91Y2hlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgfVxuICAvLyBFbmQgQ29udHJvbFZhbHVlQWNjZXNzb3IgSW50ZXJmYWNlXG5cbiAgLy8gVmFsaWRhdG9yIGludGVyZmFjZVxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKCk6IHZvaWQge31cblxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xuICAgIGlmIChcbiAgICAgIHRoaXMucmVxdWlyZWQgJiZcbiAgICAgICh2YWx1ZSA9PT0gJycgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZClcbiAgICApIHtcbiAgICAgIHJldHVybiB7IHJlcXVpcmVkOiB7IHZhbHVlLCByZWFzb246ICdSZXF1aXJlZCBmaWVsZC4nIH0gfTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gRW5kIG9mIFZhbGlkYXRvciBpbnRlcmZhY2VcblxuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICB0aGlzLnRvZ2dsZUNvbXBsZXRpb24odHJ1ZSwgJycpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb21wbGV0ZUxhYmVsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICBpZiAodGhpcy5kYXRhU291cmNlKSB7XG4gICAgICAgIHRoaXMubGFiZWwgPSBmaW5kTGFiZWxGb3JJZCh0aGlzLmRhdGFTb3VyY2UsIHRoaXMudmFsdWUpIHx8ICcnO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmluc3RhbmNlICYmIHRoaXMucmVzb2x2ZUxhYmVsc0Z1bmN0aW9uKSB7XG4gICAgICAgIHRoaXMucmVzb2x2ZUxhYmVsc0Z1bmN0aW9uKHRoaXMuaW5zdGFuY2UsIFt0aGlzLnZhbHVlXSlcbiAgICAgICAgICAucGlwZShmaXJzdCgpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgICAgIHRoaXMubGFiZWwgPSBmaW5kTGFiZWxGb3JJZChkYXRhLCB0aGlzLnZhbHVlKSB8fCAnJztcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sYWJlbCA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRJZCA9IHRoaXMuaW5wdXRJZFxuICAgICAgPyB0aGlzLmlucHV0SWRcbiAgICAgIDogYGF1dG9jb21wbGV0ZWxpc3Qke0F1dG9jb21wbGV0ZUNvbXBvbmVudC5pZENvdW50ZXIrK31gO1xuICAgIHRoaXMuY29tcGxldGVMYWJlbCgpO1xuICB9XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldFNhbWVXaWR0aCgpO1xuICB9XG4gIG9uSW5wdXRSZXNpemVkKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0U2FtZVdpZHRoKCk7XG4gIH1cbiAgcHJpdmF0ZSBzZXRTYW1lV2lkdGgoKTogdm9pZCB7XG4gICAgY29uc3Qgd2lkdGggPSB0aGlzLmkwLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgdGhpcy5jb21wbGV0ZURpdi5uYXRpdmVFbGVtZW50LnN0eWxlLndpZHRoID0gYCR7d2lkdGh9cHhgO1xuICB9XG5cbiAgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBsYWJlbDogc3RyaW5nKTogdm9pZCB7XG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ1RhYic6XG4gICAgICAgIGlmIChsYWJlbCkge1xuICAgICAgICAgIHRoaXMucGlja1NlbGVjdGlvbk9yRmlyc3RNYXRjaChsYWJlbCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zaG93Q29tcGxldGlvbiA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XG4gIH1cbiAgb25LZXlwcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCwgbGFiZWw6IHN0cmluZyk6IHZvaWQge1xuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdJbnRybyc6XG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgIHRoaXMucGlja1NlbGVjdGlvbk9yRmlyc3RNYXRjaChsYWJlbCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLm1hcmtBc1RvdWNoZWQoKTtcbiAgfVxuICBvbktleXVwKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBsYWJlbDogc3RyaW5nKTogdm9pZCB7XG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ1BhZ2VEb3duJzpcbiAgICAgICAgdGhpcy5mb2N1c09uTmV4dCg1KTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICB0aGlzLmZvY3VzT25OZXh0KDEpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1BhZ2VVcCc6XG4gICAgICAgIHRoaXMuZm9jdXNPblByZXZpb3VzKDUpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICB0aGlzLmZvY3VzT25QcmV2aW91cygxKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICB0aGlzLmNvbXBsZXRlKG51bGwpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0ludHJvJzpcbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLnNob3dDb21wbGV0aW9uTGlzdChsYWJlbCk7XG4gICAgICAvLyBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICB0aGlzLm1hcmtBc1RvdWNoZWQoKTtcbiAgfVxuICBwcml2YXRlIGZvY3VzT25OZXh0KG9mZnNldDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgbGlzdCA9IHRoaXMuY29tcGxldGlvbkxpc3QgfHwgW107XG4gICAgY29uc3QgaW5kZXggPSBsaXN0LmZpbmRJbmRleChcbiAgICAgIChpdCkgPT4gdGhpcy5mb2N1c0l0ZW0gJiYgaXQua2V5ID09PSB0aGlzLmZvY3VzSXRlbS5rZXlcbiAgICApO1xuICAgIGNvbnN0IG5leHQgPVxuICAgICAgaW5kZXggIT09IC0xICYmIGxpc3QubGVuZ3RoID4gaW5kZXggKyBvZmZzZXRcbiAgICAgICAgPyBsaXN0W2luZGV4ICsgb2Zmc2V0XVxuICAgICAgICA6IGxpc3RbbGlzdC5sZW5ndGggLSAxXTtcbiAgICB0aGlzLmZvY3VzSXRlbSA9IG5leHQ7XG4gICAgdGhpcy5lbnN1cmVJdGVtVmlzaWJsZShpbmRleCk7XG4gIH1cbiAgcHJpdmF0ZSBmb2N1c09uUHJldmlvdXMob2Zmc2V0OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5jb21wbGV0aW9uTGlzdCB8fCBbXTtcbiAgICBjb25zdCBpbmRleCA9IGxpc3QuZmluZEluZGV4KFxuICAgICAgKGl0KSA9PiB0aGlzLmZvY3VzSXRlbSAmJiBpdC5rZXkgPT09IHRoaXMuZm9jdXNJdGVtLmtleVxuICAgICk7XG4gICAgY29uc3QgbmV4dCA9XG4gICAgICBpbmRleCAhPT0gLTEgJiYgaW5kZXggPiBvZmZzZXQgPyBsaXN0W2luZGV4IC0gb2Zmc2V0XSA6IGxpc3RbMF07XG4gICAgdGhpcy5mb2N1c0l0ZW0gPSBuZXh0O1xuICAgIHRoaXMuZW5zdXJlSXRlbVZpc2libGUoaW5kZXgpO1xuICB9XG4gIG9uTG9zdEZvY3VzKCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy50b2dnbGVDb21wbGV0aW9uKGZhbHNlLCBudWxsKTtcbiAgICB9LCAyMDApO1xuICB9XG4gIGNvbXBsZXRlKGl0ZW06IERhdGFTb3VyY2VJdGVtPFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBzdHJpbmc+KTogdm9pZCB7XG4gICAgaWYgKGl0ZW0gIT09IG51bGwpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBpdGVtLmtleTtcbiAgICAgIHRoaXMubGFiZWwgPSBpdGVtLmxhYmVsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMubGFiZWwgPSAnJztcbiAgICB9XG4gICAgdGhpcy50b2dnbGVDb21wbGV0aW9uKGZhbHNlLCBudWxsKTtcbiAgICB0aGlzLm1hcmtBc1RvdWNoZWQoKTtcbiAgfVxuICB0b2dnbGVDb21wbGV0aW9uKHNob3c6IGJvb2xlYW4sIGxhYmVsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoc2hvdyAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5zaG93Q29tcGxldGlvbkxpc3QobGFiZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNob3dDb21wbGV0aW9uID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5jYW5BZGROZXdWYWx1ZXMpIHtcbiAgICAgICAgdGhpcy5zeW5jQ3VzdG9tVmFsdWUodGhpcy5sYWJlbCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZE9wdGlvbigpOiBzdHJpbmcge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jb21wbGV0aW9uTGlzdC5maW5kSW5kZXgoXG4gICAgICAoaSkgPT4gaS5rZXkgPT09IHRoaXMuZm9jdXNJdGVtLmtleVxuICAgICk7XG4gICAgaWYgKGluZGV4ID09PSAtMSB8fCAhdGhpcy5mb2N1c0l0ZW0pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gYCR7dGhpcy5pbnB1dElkfV8ke2luZGV4fWA7XG4gIH1cblxuICBwcml2YXRlIGVuc3VyZUl0ZW1WaXNpYmxlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSB0aGlzLmNvbXBsZXRlRGl2Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnbGknKVtpbmRleF07XG4gICAgaWYgKHRhcmdldCkge1xuICAgICAgdGFyZ2V0LnNjcm9sbEludG9WaWV3KHsgYmxvY2s6ICdjZW50ZXInIH0pO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIHN5bmNDdXN0b21WYWx1ZSh0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdGV4dDtcbiAgICB0aGlzLmxhYmVsID0gdGV4dDtcbiAgfVxuICBwcml2YXRlIHBpY2tTZWxlY3Rpb25PckZpcnN0TWF0Y2godGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2FuQWRkTmV3VmFsdWVzKSB7XG4gICAgICB0aGlzLnN5bmNDdXN0b21WYWx1ZSh0ZXh0KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuZm9jdXNJdGVtICYmIHRoaXMuZm9jdXNJdGVtLmxhYmVsKSB7XG4gICAgICB0aGlzLmNvbXBsZXRlKHRoaXMuZm9jdXNJdGVtKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc291cmNlID0gKHRleHQgfHwgJycpLnRyaW0oKTtcbiAgICBpZiAoc291cmNlID09PSAnJykge1xuICAgICAgdGhpcy5zaG93Q29tcGxldGlvbiA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNvbXBsZXRpb25MaXN0ID0gW107XG4gICAgdGhpcy5jb21wdXRlQ29tcGxldGlvbkxpc3Qoc291cmNlKS5zdWJzY3JpYmUoKHN1Z2dlc3Rpb25zKSA9PiB7XG4gICAgICB0aGlzLmNvbXBsZXRlKFxuICAgICAgICBzdWdnZXN0aW9ucyAmJiBzdWdnZXN0aW9ucy5sZW5ndGggPiAwID8gc3VnZ2VzdGlvbnNbMF0gOiBudWxsXG4gICAgICApO1xuICAgIH0pO1xuICB9XG4gIHByaXZhdGUgc2hvd0NvbXBsZXRpb25MaXN0KHRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2V0U2FtZVdpZHRoKCk7XG4gICAgdGhpcy5jb21wdXRlQ29tcGxldGlvbkxpc3QodGV4dCkuc3Vic2NyaWJlKChjbCkgPT4ge1xuICAgICAgdGhpcy5jb21wbGV0aW9uTGlzdCA9IGNsO1xuICAgICAgdGhpcy5mb2N1c0l0ZW0gPVxuICAgICAgICB0aGlzLmNvbXBsZXRpb25MaXN0Lmxlbmd0aCA+IDAgPyB0aGlzLmNvbXBsZXRpb25MaXN0WzBdIDogbnVsbDtcbiAgICAgIHRoaXMuc2hvd0NvbXBsZXRpb24gPSB0cnVlO1xuICAgIH0pO1xuICB9XG4gIHByaXZhdGUgY29tcHV0ZUNvbXBsZXRpb25MaXN0KHRleHQ6IHN0cmluZyk6IE9ic2VydmFibGU8RGVjb3JhdGVkRGF0YVNvdXJjZT4ge1xuICAgIGNvbnN0IHNlYXJjaFRleHQgPSAodGV4dCB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAodGhpcy5kYXRhU291cmNlKSB7XG4gICAgICBjb25zdCBkcyA9ICh0aGlzLmRhdGFTb3VyY2UgfHwgW10pXG4gICAgICAgIC5maWx0ZXIoKGl0KSA9PiBpZ25vcmVBY2NlbnRzSW5jbHVkZShpdC5sYWJlbCwgc2VhcmNoVGV4dCkpXG4gICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmxhYmVsLmxvY2FsZUNvbXBhcmUoYi5sYWJlbCkpO1xuICAgICAgcmV0dXJuIG9mKGRlY29yYXRlRGF0YVNvdXJjZShkcywgc2VhcmNoVGV4dCkpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pbnN0YW5jZSAmJiB0aGlzLnBvcHVsYXRlRnVuY3Rpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLnBvcHVsYXRlRnVuY3Rpb24odGhpcy5pbnN0YW5jZSwgc2VhcmNoVGV4dCkucGlwZShcbiAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgbWFwKChkcykgPT4ge1xuICAgICAgICAgIGRzLmZpbHRlcigoaXQpID0+IGlnbm9yZUFjY2VudHNJbmNsdWRlKGl0LmxhYmVsLCBzZWFyY2hUZXh0KSkuc29ydChcbiAgICAgICAgICAgIChhLCBiKSA9PiBhLmxhYmVsLmxvY2FsZUNvbXBhcmUoYi5sYWJlbClcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBkZWNvcmF0ZURhdGFTb3VyY2UoZHMsIHNlYXJjaFRleHQpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqIFJldHVybnMgdHJ1ZSBpZiB0ZXh0IGluY2x1ZGVzIHN1YnN0cmluZy4gTm8gYWNjZW50cyBjb25zaWRlcmVkLiBJZ25vcmVjYXNlICovXG5jb25zdCBpZ25vcmVBY2NlbnRzSW5jbHVkZSA9ICh0ZXh0OiBzdHJpbmcsIHN1YnN0cmluZzogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gIHRleHQgPSBub3JtYWxpemVkU3RyaW5nKHRleHQpLnRvTG93ZXJDYXNlKCk7XG4gIHN1YnN0cmluZyA9IG5vcm1hbGl6ZWRTdHJpbmcoc3Vic3RyaW5nKS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gdGV4dC5pbmNsdWRlcyhzdWJzdHJpbmcpO1xufTtcblxuLyoqIFJldHVybnMgYSBub3JtYWxpemVkIHN0cmluZyB3aXRoIG5vIGFjY2VudHM6IHVzZWQgZm9yIGNvbXBhcmlzb24gKi9cbmNvbnN0IG5vcm1hbGl6ZWRTdHJpbmcgPSAoYTogc3RyaW5nKTogc3RyaW5nID0+XG4gIChhIHx8ICcnKS5ub3JtYWxpemUoJ05GRCcpLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csICcnKTtcblxuY29uc3QgZGVjb3JhdGVEYXRhU291cmNlID0gKFxuICBkYXRhU291cmNlOiBEYXRhU291cmNlPGFueSwgc3RyaW5nPixcbiAgc3ViU3RyaW5nOiBzdHJpbmdcbik6IERlY29yYXRlZERhdGFTb3VyY2UgPT4gZGF0YVNvdXJjZS5tYXAoKGl0KSA9PiBkZWNvcmF0ZUl0ZW0oaXQsIHN1YlN0cmluZykpO1xuXG5jb25zdCBkZWNvcmF0ZUl0ZW0gPSAoXG4gIGl0ZW06IERhdGFTb3VyY2VJdGVtPGFueSwgc3RyaW5nPixcbiAgdHg6IHN0cmluZ1xuKTogRGVjb3JhdGVkRGF0YVNvdXJjZUl0ZW0gPT4ge1xuICBjb25zdCBpbmRleCA9IG5vcm1hbGl6ZWRTdHJpbmcoaXRlbS5sYWJlbClcbiAgICAudG9Mb3dlckNhc2UoKVxuICAgIC5pbmRleE9mKG5vcm1hbGl6ZWRTdHJpbmcodHgpLnRvTG93ZXJDYXNlKCkpO1xuICBjb25zdCBsYWJlbFByZWZpeCA9IGluZGV4ID09PSAtMSA/IGl0ZW0ubGFiZWwgOiBpdGVtLmxhYmVsLnN1YnN0cigwLCBpbmRleCk7XG4gIGNvbnN0IGxhYmVsTWF0Y2ggPSBpbmRleCA9PT0gLTEgPyAnJyA6IGl0ZW0ubGFiZWwuc3Vic3RyKGluZGV4LCB0eC5sZW5ndGgpO1xuICBjb25zdCBsYWJlbFBvc3RmaXggPSBpbmRleCA9PT0gLTEgPyAnJyA6IGl0ZW0ubGFiZWwuc3Vic3RyKGluZGV4ICsgdHgubGVuZ3RoKTtcbiAgY29uc3QgbmV3SXRlbTogRGVjb3JhdGVkRGF0YVNvdXJjZUl0ZW0gPSB7XG4gICAgLi4uaXRlbSxcbiAgICBsYWJlbFByZWZpeCxcbiAgICBsYWJlbE1hdGNoLFxuICAgIGxhYmVsUG9zdGZpeFxuICB9O1xuICByZXR1cm4gbmV3SXRlbTtcbn07XG5cbmNvbnN0IGZpbmRMYWJlbEZvcklkID0gKGRhdGE6IERhdGFTb3VyY2U8YW55LCBzdHJpbmc+LCBpZDogYW55KTogc3RyaW5nID0+IHtcbiAgY29uc3QgZm91bmQgPSBkYXRhLmZpbmQoKGl0KSA9PiBpdC5rZXkgPT09IGlkKTtcbiAgcmV0dXJuIGZvdW5kID8gZm91bmQubGFiZWwgOiBudWxsO1xufTtcbiJdfQ==
382
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2x1eC9zcmMvbGliL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHMUQsT0FBTyxFQUdMLGFBQWEsRUFDYixpQkFBaUIsRUFHbEIsTUFBTSxnQkFBZ0IsQ0FBQztBQU94QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFtQmpELE1BQU0sT0FBTyxxQkFBcUI7SUEwRWhDLFlBQW9CLEVBQXFCO1FBQXJCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBOUR6QyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLG1CQUFjLEdBQXdCLEVBQUUsQ0FBQztRQUN6QyxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUdiLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN0QyxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBMkIsQ0FBQztRQUd6RCxhQUFRLEdBQW1CLElBQUksQ0FBQztRQUNoQyxhQUFRLEdBQW1CLElBQUksQ0FBQztRQUN2QyxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLDhFQUE4RTtRQUNyRSxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUNqQzs7O1dBR0c7UUFDTSx3QkFBbUIsR0FBRyxLQUFL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Q0FBQztJQUM5RSxNQUFNLE9BQU8sbUNBQ1IsSUFBSSxLQUNQLFdBQVc7UUFDWCxVQUFVO1FBQ1YsWUFBWSxHQUNiLENBQUM7SUFDRixPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDLENBQUM7O0FBRUYsTUFBTSxjQUFjLEdBQUcsQ0FBQyxJQUE2QixFQUFFLEVBQU8sRUFBVSxFQUFFO0lBQ3hFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDL0MsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNwQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlyc3QsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbi8vIERvIG5vdCByZW1vdmUgdGhpcyBpbXBvcnQ6IG5lZWRlZCBpbiB0aGUgdGVtcGxhdGVcbmltcG9ydCB7IFJlc2l6ZWRFdmVudCB9IGZyb20gJ2FuZ3VsYXItcmVzaXplLWV2ZW50JztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3Jcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgRGF0YVNvdXJjZSxcbiAgRGF0YVNvdXJjZUl0ZW0sXG4gIERlY29yYXRlZERhdGFTb3VyY2UsXG4gIERlY29yYXRlZERhdGFTb3VyY2VJdGVtXG59IGZyb20gJy4uL2RhdGFzb3VyY2UnO1xuaW1wb3J0IHsgaXNJbml0aWFsQW5kRW1wdHkgfSBmcm9tICcuLi9oZWxwZXJGbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsdXgtYXV0b2NvbXBsZXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQXV0b2NvbXBsZXRlQ29tcG9uZW50KVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQXV0b2NvbXBsZXRlQ29tcG9uZW50KVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVDb21wb25lbnRcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBPbkluaXQsIEFmdGVyVmlld0luaXRcbntcbiAgc3RhdGljIGlkQ291bnRlciA9IDA7XG5cbiAgQFZpZXdDaGlsZCgnaTAnLCB7IHN0YXRpYzogdHJ1ZSB9KSBpMDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnY29tcGxldGVEaXYnLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb21wbGV0ZURpdjogRWxlbWVudFJlZjtcblxuICBwcml2YXRlIF9kYXRhU291cmNlOiBEYXRhU291cmNlPGFueSwgc3RyaW5nPjtcbiAgcHJpdmF0ZSBfcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgcHJpdmF0ZSBfdmFsdWU6IGFueTtcblxuICBzaG93U3Bpbm5lciA9IGZhbHNlO1xuICB0b3VjaGVkID0gZmFsc2U7XG4gIGNvbXBsZXRpb25MaXN0OiBEZWNvcmF0ZWREYXRhU291cmNlID0gW107XG4gIHNob3dDb21wbGV0aW9uID0gZmFsc2U7XG4gIGZvY3VzSXRlbTogRGF0YVNvdXJjZUl0ZW08YW55LCBzdHJpbmc+O1xuXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZGF0YVNvdXJjZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0YVNvdXJjZTxhbnksIHN0cmluZz4+KCk7XG5cbiAgQElucHV0KCkgcHVibGljIGlucHV0SWQ6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVkOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIHB1YmxpYyByZWFkb25seTogYm9vbGVhbiB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuICAvKiogSWYgY2FuQWRkTmV3VmFsdWVzLCB1c2VyIGNhbiB0eXBlIGl0ZW1zIG5vdCBwcmVzZW50IGluIHRoZSBkYXRhLXNvdXJjZS4gKi9cbiAgQElucHV0KCkgY2FuQWRkTmV3VmFsdWVzID0gZmFsc2U7XG4gIC8qKiBBZnRlciBjbGVhbmluZyB0aGUgc2VsZWN0aW9uIHNob3VsZCB0aGUgY29tcGxldGlvbiBsaXN0IHJlbWFpbiBvcGVuIG9yIGNsb3NlZDpcbiAgICogIGZhbHNlOiAoZGVmYXVsdCkgY2xvc2Ugb24gZmlsdGVycywgdG8gY2xlYW4gYSBmaWx0ZXIgYW5kIHNlbGVjdCBhbGwuXG4gICAqICB0cnVlOiBrZWVwIG9wZW4gKHdoZW4gdGhlIGFjdGlvbiBtb3N0IGxpa2VseSBpcyB0byBwaWNrIGFub3RoZXIgb25lKS5cbiAgICovXG4gIEBJbnB1dCgpIGtlZXBPcGVuQWZ0ZXJEZWxldGUgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cbiAgc2V0IHZhbHVlKHY6IGFueSkge1xuICAgIGNvbnN0IGluaXRpYWxBbmRFbXB0eSA9IGlzSW5pdGlhbEFuZEVtcHR5KHRoaXMuX3ZhbHVlLCB2KTtcbiAgICB0aGlzLl92YWx1ZSA9IHY7XG4gICAgdGhpcy5vbkNoYW5nZSh2KTtcbiAgICB0aGlzLmNvbXBsZXRlTGFiZWwoKTtcbiAgICBpZiAoIWluaXRpYWxBbmRFbXB0eSkge1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHYpO1xuICAgIH1cbiAgfVxuICBASW5wdXQoKVxuICBnZXQgZGF0YVNvdXJjZSgpOiBEYXRhU291cmNlPGFueSwgc3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2U7XG4gIH1cbiAgc2V0IGRhdGFTb3VyY2UodjogRGF0YVNvdXJjZTxhbnksIHN0cmluZz4pIHtcbiAgICB0aGlzLl9kYXRhU291cmNlID0gdjtcbiAgICB0aGlzLmRhdGFTb3VyY2VDaGFuZ2UuZW1pdCh2KTtcbiAgfVxuICBASW5wdXQoKSByZXF1aXJlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBwbGFjZWhvbGRlcih2OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9wbGFjZWhvbGRlciA9IHY7XG4gIH1cbiAgZ2V0IHBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyID8gdGhpcy5fcGxhY2Vob2xkZXIgOiAnJztcbiAgfVxuXG4gIEBJbnB1dCgpIHJlc29sdmVMYWJlbHNGdW5jdGlvbj86IChcbiAgICBpbnN0YW5jZTogYW55LFxuICAgIGtleXM6IGFueVtdXG4gICkgPT4gT2JzZXJ2YWJsZTxEYXRhU291cmNlPGFueSwgc3RyaW5nPj4gPSB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIHBvcHVsYXRlRnVuY3Rpb24/OiAoXG4gICAgaW5zdGFuY2U6IGFueSxcbiAgICBzZWFyY2g6IHN0cmluZ1xuICApID0+IE9ic2VydmFibGU8RGF0YVNvdXJjZTxhbnksIHN0cmluZz4+ID0gdW5kZWZpbmVkO1xuICBASW5wdXQoKSBpbnN0YW5jZTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIC8vIENvbnRyb2xWYWx1ZUFjY2Vzc29yIEludGVyZmFjZVxuICBvbkNoYW5nZSA9ICh2YWx1ZSk6IHZvaWQgPT4ge307XG4gIG9uVG91Y2hlZCA9ICgpOiB2b2lkID0+IHt9O1xuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBvbkNoYW5nZTtcbiAgfVxuICByZWdpc3Rlck9uVG91Y2hlZChvblRvdWNoZWQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gb25Ub3VjaGVkO1xuICB9XG4gIG1hcmtBc1RvdWNoZWQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRvdWNoZWQgJiYgIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICB0aGlzLnRvdWNoZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gIH1cbiAgLy8gRW5kIENvbnRyb2xWYWx1ZUFjY2Vzc29yIEludGVyZmFjZVxuXG4gIC8vIFZhbGlkYXRvciBpbnRlcmZhY2VcbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZSgpOiB2b2lkIHt9XG5cbiAgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGNvbnN0IHZhbHVlID0gY29udHJvbC52YWx1ZTtcbiAgICBpZiAoXG4gICAgICB0aGlzLnJlcXVpcmVkICYmXG4gICAgICAodmFsdWUgPT09ICcnIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpXG4gICAgKSB7XG4gICAgICByZXR1cm4geyByZXF1aXJlZDogeyB2YWx1ZSwgcmVhc29uOiAnUmVxdWlyZWQgZmllbGQuJyB9IH07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIC8vIEVuZCBvZiBWYWxpZGF0b3IgaW50ZXJmYWNlXG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgdGhpcy50b2dnbGVDb21wbGV0aW9uKHRoaXMua2VlcE9wZW5BZnRlckRlbGV0ZSwgJycpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb21wbGV0ZUxhYmVsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICBpZiAodGhpcy5kYXRhU291cmNlKSB7XG4gICAgICAgIHRoaXMubGFiZWwgPSBmaW5kTGFiZWxGb3JJZCh0aGlzLmRhdGFTb3VyY2UsIHRoaXMudmFsdWUpIHx8ICcnO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmluc3RhbmNlICYmIHRoaXMucmVzb2x2ZUxhYmVsc0Z1bmN0aW9uKSB7XG4gICAgICAgIHRoaXMucmVzb2x2ZUxhYmVsc0Z1bmN0aW9uKHRoaXMuaW5zdGFuY2UsIFt0aGlzLnZhbHVlXSlcbiAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMSksIGZpcnN0KCkpXG4gICAgICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sYWJlbCA9IGZpbmRMYWJlbEZvcklkKGRhdGEsIHRoaXMudmFsdWUpIHx8ICcnO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxhYmVsID0gJyc7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dElkID0gdGhpcy5pbnB1dElkXG4gICAgICA/IHRoaXMuaW5wdXRJZFxuICAgICAgOiBgYXV0b2NvbXBsZXRlbGlzdCR7QXV0b2NvbXBsZXRlQ29tcG9uZW50LmlkQ291bnRlcisrfWA7XG4gICAgdGhpcy5jb21wbGV0ZUxhYmVsKCk7XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0U2FtZVdpZHRoKCk7XG4gIH1cbiAgb25JbnB1dFJlc2l6ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRTYW1lV2lkdGgoKTtcbiAgfVxuICBwcml2YXRlIHNldFNhbWVXaWR0aCgpOiB2b2lkIHtcbiAgICBjb25zdCB3aWR0aCA9IHRoaXMuaTAubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICB0aGlzLmNvbXBsZXRlRGl2Lm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHt3aWR0aH1weGA7XG4gIH1cblxuICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGxhYmVsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnVGFiJzpcbiAgICAgICAgaWYgKGxhYmVsKSB7XG4gICAgICAgICAgdGhpcy5waWNrU2VsZWN0aW9uT3JGaXJzdE1hdGNoKGxhYmVsKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNob3dDb21wbGV0aW9uID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLm1hcmtBc1RvdWNoZWQoKTtcbiAgfVxuICBvbktleXByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBsYWJlbDogc3RyaW5nKTogdm9pZCB7XG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0ludHJvJzpcbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgdGhpcy5waWNrU2VsZWN0aW9uT3JGaXJzdE1hdGNoKGxhYmVsKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xuICB9XG4gIG9uS2V5dXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGxhYmVsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnUGFnZURvd24nOlxuICAgICAgICB0aGlzLmZvY3VzT25OZXh0KDUpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgIHRoaXMuZm9jdXNPbk5leHQoMSk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnUGFnZVVwJzpcbiAgICAgICAgdGhpcy5mb2N1c09uUHJldmlvdXMoNSk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgIHRoaXMuZm9jdXNPblByZXZpb3VzKDEpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0VzY2FwZSc6XG4gICAgICAgIHRoaXMuY29tcGxldGUobnVsbCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnSW50cm8nOlxuICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuc2hvd0NvbXBsZXRpb25MaXN0KGxhYmVsKTtcbiAgICAgIC8vIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xuICB9XG4gIHByaXZhdGUgZm9jdXNPbk5leHQob2Zmc2V0OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5jb21wbGV0aW9uTGlzdCB8fCBbXTtcbiAgICBjb25zdCBpbmRleCA9IGxpc3QuZmluZEluZGV4KFxuICAgICAgKGl0KSA9PiB0aGlzLmZvY3VzSXRlbSAmJiBpdC5rZXkgPT09IHRoaXMuZm9jdXNJdGVtLmtleVxuICAgICk7XG4gICAgY29uc3QgbmV4dCA9XG4gICAgICBpbmRleCAhPT0gLTEgJiYgbGlzdC5sZW5ndGggPiBpbmRleCArIG9mZnNldFxuICAgICAgICA/IGxpc3RbaW5kZXggKyBvZmZzZXRdXG4gICAgICAgIDogbGlzdFtsaXN0Lmxlbmd0aCAtIDFdO1xuICAgIHRoaXMuZm9jdXNJdGVtID0gbmV4dDtcbiAgICB0aGlzLmVuc3VyZUl0ZW1WaXNpYmxlKGluZGV4KTtcbiAgfVxuICBwcml2YXRlIGZvY3VzT25QcmV2aW91cyhvZmZzZXQ6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGxpc3QgPSB0aGlzLmNvbXBsZXRpb25MaXN0IHx8IFtdO1xuICAgIGNvbnN0IGluZGV4ID0gbGlzdC5maW5kSW5kZXgoXG4gICAgICAoaXQpID0+IHRoaXMuZm9jdXNJdGVtICYmIGl0LmtleSA9PT0gdGhpcy5mb2N1c0l0ZW0ua2V5XG4gICAgKTtcbiAgICBjb25zdCBuZXh0ID1cbiAgICAgIGluZGV4ICE9PSAtMSAmJiBpbmRleCA+IG9mZnNldCA/IGxpc3RbaW5kZXggLSBvZmZzZXRdIDogbGlzdFswXTtcbiAgICB0aGlzLmZvY3VzSXRlbSA9IG5leHQ7XG4gICAgdGhpcy5lbnN1cmVJdGVtVmlzaWJsZShpbmRleCk7XG4gIH1cbiAgb25Mb3N0Rm9jdXMoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnRvZ2dsZUNvbXBsZXRpb24oZmFsc2UsIG51bGwpO1xuICAgIH0sIDIwMCk7XG4gIH1cbiAgY29tcGxldGUoaXRlbTogRGF0YVNvdXJjZUl0ZW08UmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHN0cmluZz4pOiB2b2lkIHtcbiAgICBpZiAoaXRlbSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy52YWx1ZSA9IGl0ZW0ua2V5O1xuICAgICAgdGhpcy5sYWJlbCA9IGl0ZW0ubGFiZWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy5sYWJlbCA9ICcnO1xuICAgIH1cbiAgICB0aGlzLnRvZ2dsZUNvbXBsZXRpb24oZmFsc2UsIG51bGwpO1xuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xuICB9XG4gIHRvZ2dsZUNvbXBsZXRpb24oc2hvdzogYm9vbGVhbiwgbGFiZWw6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChzaG93ICYmICF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnNob3dDb21wbGV0aW9uTGlzdChsYWJlbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2hvd0NvbXBsZXRpb24gPSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLmNhbkFkZE5ld1ZhbHVlcykge1xuICAgICAgICB0aGlzLnN5bmNDdXN0b21WYWx1ZSh0aGlzLmxhYmVsKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgZ2V0IHNlbGVjdGVkT3B0aW9uKCk6IHN0cmluZyB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmNvbXBsZXRpb25MaXN0LmZpbmRJbmRleChcbiAgICAgIChpKSA9PiBpLmtleSA9PT0gdGhpcy5mb2N1c0l0ZW0ua2V5XG4gICAgKTtcbiAgICBpZiAoaW5kZXggPT09IC0xIHx8ICF0aGlzLmZvY3VzSXRlbSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBgJHt0aGlzLmlucHV0SWR9XyR7aW5kZXh9YDtcbiAgfVxuXG4gIHByaXZhdGUgZW5zdXJlSXRlbVZpc2libGUoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldCA9IHRoaXMuY29tcGxldGVEaXYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdsaScpW2luZGV4XTtcbiAgICBpZiAodGFyZ2V0KSB7XG4gICAgICB0YXJnZXQuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ2NlbnRlcicgfSk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgc3luY0N1c3RvbVZhbHVlKHRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB0ZXh0O1xuICAgIHRoaXMubGFiZWwgPSB0ZXh0O1xuICB9XG4gIHByaXZhdGUgcGlja1NlbGVjdGlvbk9yRmlyc3RNYXRjaCh0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYW5BZGROZXdWYWx1ZXMpIHtcbiAgICAgIHRoaXMuc3luY0N1c3RvbVZhbHVlKHRleHQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5mb2N1c0l0ZW0gJiYgdGhpcy5mb2N1c0l0ZW0ubGFiZWwpIHtcbiAgICAgIHRoaXMuY29tcGxldGUodGhpcy5mb2N1c0l0ZW0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzb3VyY2UgPSAodGV4dCB8fCAnJykudHJpbSgpO1xuICAgIGlmIChzb3VyY2UgPT09ICcnKSB7XG4gICAgICB0aGlzLnNob3dDb21wbGV0aW9uID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY29tcGxldGlvbkxpc3QgPSBbXTtcbiAgICB0aGlzLmNvbXB1dGVDb21wbGV0aW9uTGlzdChzb3VyY2UpLnN1YnNjcmliZSgoc3VnZ2VzdGlvbnMpID0+IHtcbiAgICAgIHRoaXMuY29tcGxldGUoXG4gICAgICAgIHN1Z2dlc3Rpb25zICYmIHN1Z2dlc3Rpb25zLmxlbmd0aCA+IDAgPyBzdWdnZXN0aW9uc1swXSA6IG51bGxcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cbiAgcHJpdmF0ZSBzaG93Q29tcGxldGlvbkxpc3QodGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZXRTYW1lV2lkdGgoKTtcbiAgICBjb25zdCB1c2VTcGlubmVyID0gdGhpcy5oYXNFeHRlcm5hbERhdGFTb3VyY2UoKTtcbiAgICB0aGlzLnNwaW5uZXJWaXNpYmlsaXR5KHVzZVNwaW5uZXIsIHRydWUpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLy8gZm9yIHNwaW5uZXIgdG8gYmUgc2hvd25cbiAgICAgIHRoaXMuY29tcHV0ZUNvbXBsZXRpb25MaXN0KHRleHQpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChjbCkgPT4ge1xuICAgICAgICAgIHRoaXMuY29tcGxldGlvbkxpc3QgPSBjbDtcbiAgICAgICAgICB0aGlzLmZvY3VzSXRlbSA9XG4gICAgICAgICAgICB0aGlzLmNvbXBsZXRpb25MaXN0Lmxlbmd0aCA+IDAgPyB0aGlzLmNvbXBsZXRpb25MaXN0WzBdIDogbnVsbDtcbiAgICAgICAgICB0aGlzLnNob3dDb21wbGV0aW9uID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnNwaW5uZXJWaXNpYmlsaXR5KHVzZVNwaW5uZXIsIGZhbHNlKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnNwaW5uZXJWaXNpYmlsaXR5KHVzZVNwaW5uZXIsIGZhbHNlKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnNwaW5uZXJWaXNpYmlsaXR5KHVzZVNwaW5uZXIsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSwgMSk7XG4gIH1cbiAgcHJpdmF0ZSBzcGlubmVyVmlzaWJpbGl0eSh1c2VTcGlubmVyOiBib29sZWFuLCB2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh1c2VTcGlubmVyKSB7XG4gICAgICB0aGlzLnNob3dTcGlubmVyID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgaGFzRXh0ZXJuYWxEYXRhU291cmNlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5kYXRhU291cmNlICYmICEhdGhpcy5pbnN0YW5jZSAmJiAhIXRoaXMucG9wdWxhdGVGdW5jdGlvbjtcbiAgfVxuICBwcml2YXRlIGNvbXB1dGVDb21wbGV0aW9uTGlzdCh0ZXh0OiBzdHJpbmcpOiBPYnNlcnZhYmxlPERlY29yYXRlZERhdGFTb3VyY2U+IHtcbiAgICBjb25zdCBzZWFyY2hUZXh0ID0gKHRleHQgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKHRoaXMuZGF0YVNvdXJjZSkge1xuICAgICAgY29uc3QgZHMgPSAodGhpcy5kYXRhU291cmNlIHx8IFtdKVxuICAgICAgICAuZmlsdGVyKChpdCkgPT4gaWdub3JlQWNjZW50c0luY2x1ZGUoaXQubGFiZWwsIHNlYXJjaFRleHQpKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5sYWJlbC5sb2NhbGVDb21wYXJlKGIubGFiZWwpKTtcbiAgICAgIHJldHVybiBvZihkZWNvcmF0ZURhdGFTb3VyY2UoZHMsIHNlYXJjaFRleHQpKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaW5zdGFuY2UgJiYgdGhpcy5wb3B1bGF0ZUZ1bmN0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5wb3B1bGF0ZUZ1bmN0aW9uKHRoaXMuaW5zdGFuY2UsIHNlYXJjaFRleHQpLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgxKSxcbiAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgbWFwKChkcykgPT4ge1xuICAgICAgICAgIGRzLmZpbHRlcigoaXQpID0+IGlnbm9yZUFjY2VudHNJbmNsdWRlKGl0LmxhYmVsLCBzZWFyY2hUZXh0KSkuc29ydChcbiAgICAgICAgICAgIChhLCBiKSA9PiBhLmxhYmVsLmxvY2FsZUNvbXBhcmUoYi5sYWJlbClcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBkZWNvcmF0ZURhdGFTb3VyY2UoZHMsIHNlYXJjaFRleHQpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqIFJldHVybnMgdHJ1ZSBpZiB0ZXh0IGluY2x1ZGVzIHN1YnN0cmluZy4gTm8gYWNjZW50cyBjb25zaWRlcmVkLiBJZ25vcmVjYXNlICovXG5jb25zdCBpZ25vcmVBY2NlbnRzSW5jbHVkZSA9ICh0ZXh0OiBzdHJpbmcsIHN1YnN0cmluZzogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gIHRleHQgPSBub3JtYWxpemVkU3RyaW5nKHRleHQpLnRvTG93ZXJDYXNlKCk7XG4gIHN1YnN0cmluZyA9IG5vcm1hbGl6ZWRTdHJpbmcoc3Vic3RyaW5nKS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gdGV4dC5pbmNsdWRlcyhzdWJzdHJpbmcpO1xufTtcblxuLyoqIFJldHVybnMgYSBub3JtYWxpemVkIHN0cmluZyB3aXRoIG5vIGFjY2VudHM6IHVzZWQgZm9yIGNvbXBhcmlzb24gKi9cbmNvbnN0IG5vcm1hbGl6ZWRTdHJpbmcgPSAoYTogc3RyaW5nKTogc3RyaW5nID0+XG4gIChhIHx8ICcnKS5ub3JtYWxpemUoJ05GRCcpLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csICcnKTtcblxuY29uc3QgZGVjb3JhdGVEYXRhU291cmNlID0gKFxuICBkYXRhU291cmNlOiBEYXRhU291cmNlPGFueSwgc3RyaW5nPixcbiAgc3ViU3RyaW5nOiBzdHJpbmdcbik6IERlY29yYXRlZERhdGFTb3VyY2UgPT4gZGF0YVNvdXJjZS5tYXAoKGl0KSA9PiBkZWNvcmF0ZUl0ZW0oaXQsIHN1YlN0cmluZykpO1xuXG5jb25zdCBkZWNvcmF0ZUl0ZW0gPSAoXG4gIGl0ZW06IERhdGFTb3VyY2VJdGVtPGFueSwgc3RyaW5nPixcbiAgdHg6IHN0cmluZ1xuKTogRGVjb3JhdGVkRGF0YVNvdXJjZUl0ZW0gPT4ge1xuICBjb25zdCBpbmRleCA9IG5vcm1hbGl6ZWRTdHJpbmcoaXRlbS5sYWJlbClcbiAgICAudG9Mb3dlckNhc2UoKVxuICAgIC5pbmRleE9mKG5vcm1hbGl6ZWRTdHJpbmcodHgpLnRvTG93ZXJDYXNlKCkpO1xuICBjb25zdCBsYWJlbFByZWZpeCA9IGluZGV4ID09PSAtMSA/IGl0ZW0ubGFiZWwgOiBpdGVtLmxhYmVsLnN1YnN0cigwLCBpbmRleCk7XG4gIGNvbnN0IGxhYmVsTWF0Y2ggPSBpbmRleCA9PT0gLTEgPyAnJyA6IGl0ZW0ubGFiZWwuc3Vic3RyKGluZGV4LCB0eC5sZW5ndGgpO1xuICBjb25zdCBsYWJlbFBvc3RmaXggPSBpbmRleCA9PT0gLTEgPyAnJyA6IGl0ZW0ubGFiZWwuc3Vic3RyKGluZGV4ICsgdHgubGVuZ3RoKTtcbiAgY29uc3QgbmV3SXRlbTogRGVjb3JhdGVkRGF0YVNvdXJjZUl0ZW0gPSB7XG4gICAgLi4uaXRlbSxcbiAgICBsYWJlbFByZWZpeCxcbiAgICBsYWJlbE1hdGNoLFxuICAgIGxhYmVsUG9zdGZpeFxuICB9O1xuICByZXR1cm4gbmV3SXRlbTtcbn07XG5cbmNvbnN0IGZpbmRMYWJlbEZvcklkID0gKGRhdGE6IERhdGFTb3VyY2U8YW55LCBzdHJpbmc+LCBpZDogYW55KTogc3RyaW5nID0+IHtcbiAgY29uc3QgZm91bmQgPSBkYXRhLmZpbmQoKGl0KSA9PiBpdC5rZXkgPT09IGlkKTtcbiAgcmV0dXJuIGZvdW5kID8gZm91bmQubGFiZWwgOiBudWxsO1xufTtcbiJdfQ==
@@ -208,7 +208,7 @@ AutocompleteListComponent.decorators = [
208
208
  useExisting: forwardRef(() => AutocompleteListComponent)
209
209
  }
210
210
  ],
211
- styles: [".new-entry{margin-left:1.5rem;display:grid;grid-template-columns:auto 1.5rem}.new-entry lux-autocomplete{grid-column:1;grid-row:1}.new-entry .add-item{grid-column:2;grid-row:1;border:none;background:url(/assets/img/create.png) no-repeat .2rem .2rem;background-size:1.1rem;height:1.4rem;width:1.4rem}.remove-item{margin-left:.5rem;border:none;background:url(/assets/img/delete.svg) no-repeat .2rem .1rem;height:1.2rem;width:1.3rem;position:relative;top:.2rem;background-size:1rem 1rem}"]
211
+ styles: [".new-entry{margin-left:1.5rem;display:grid;grid-template-columns:-webkit-max-content -webkit-max-content;grid-template-columns:max-content max-content}.new-entry lux-autocomplete{grid-column:1;grid-row:1}.new-entry .add-item{grid-column:2;grid-row:1;border:none;background:url(/assets/img/create.png) no-repeat .2rem .2rem;background:var(--lux-autocomplete-list-add-icon, url(/assets/img/create.png) no-repeat .2rem .2rem);background-size:1.1rem;background-size:var(--lux-autocomplete-list-add-icon-size, 1.1rem);height:1.4rem;height:var(--lux-autocomplete-list-add-icon-height, 1.4rem);width:1.4rem;width:var(--lux-autocomplete-list-add-icon-width, 1.4rem)}.remove-item{margin-left:.5rem;border:none;background:url(/assets/img/delete.svg) no-repeat .2rem .1rem;background:var(--lux-autocomplete-list-remove-icon, url(/assets/img/delete.svg) no-repeat .2rem .1rem);height:1.2rem;height:var(--lux-autocomplete-list-remove-icon-height, 1.2rem);width:1.3rem;width:var(--lux-autocomplete-list-remove-icon-width, 1.3rem);position:relative;top:.2rem;top:var(--lux-autocomplete-list-remove-icon-top, .2rem);background-size:1rem 1rem;background-size:var(--lux-autocomplete-list-remove-icon-size, 1rem 1rem)}\n"]
212
212
  },] }
213
213
  ];
214
214
  AutocompleteListComponent.propDecorators = {
@@ -67,7 +67,7 @@ LuxBreadcrumbComponent.decorators = [
67
67
  { type: Component, args: [{
68
68
  selector: 'lux-breadcrumb',
69
69
  template: "<ul class=\"lux-breadcrumb\">\n <li *ngFor=\"let breadcrumb of breadcrumbs; last as isLast; first as isFirst\"\n class=\"lux-breadcrumb-item\">\n <a [class.first]=\"isFirst\" routerLink=\"{{ breadcrumb.url }}\">{{ breadcrumb.label }}</a>\n <div *ngIf=\"!isLast\" class=\"lux-breadcrumb-separator\"></div>\n </li>\n</ul>\n",
70
- styles: [".lux-breadcrumb{padding:10px 12px;list-style:none;list-style-type:none}.lux-breadcrumb li{display:inline;font-size:.8em}.lux-breadcrumb li a.first{font-weight:700}.lux-breadcrumb li+li:before{padding:8px;color:#000}.lux-breadcrumb li a,ol.lux-breadcrumb li a:hover{text-decoration:underline}.lux-breadcrumb a{cursor:hand}.lux-breadcrumb-separator{color:red;position:relative;top:5px;height:16px;padding:0 8px;background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 viewBox%3D%220 0 512 512%22%3E %3Cpath d%3D%22M294.1 256L167 129c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.3 34 0L345 239c9.1 9.1 9.3 23.7.7 33.1L201.1 417c-4.7 4.7-10.9 7-17 7s-12.3-2.3-17-7c-9.4-9.4-9.4-24.6 0-33.9l127-127.1z%22%2F%3E%3C%2Fsvg%3E\");background-repeat:no-repeat;display:inline-block}"]
70
+ styles: [".lux-breadcrumb{padding:10px 12px;list-style:none;list-style-type:none}.lux-breadcrumb li{display:inline;font-size:.8em}.lux-breadcrumb li a.first{font-weight:bold}.lux-breadcrumb li+li:before{padding:8px;color:#000}.lux-breadcrumb li a{text-decoration:underline}ol.lux-breadcrumb li a:hover{text-decoration:underline}.lux-breadcrumb a{cursor:hand}.lux-breadcrumb-separator{color:red;position:relative;top:5px;height:16px;padding:0 8px;background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 viewBox%3D%220 0 512 512%22%3E %3Cpath d%3D%22M294.1 256L167 129c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.3 34 0L345 239c9.1 9.1 9.3 23.7.7 33.1L201.1 417c-4.7 4.7-10.9 7-17 7s-12.3-2.3-17-7c-9.4-9.4-9.4-24.6 0-33.9l127-127.1z%22%2F%3E%3C%2Fsvg%3E\");background-repeat:no-repeat;display:inline-block}\n"]
71
71
  },] }
72
72
  ];
73
73
  LuxBreadcrumbComponent.ctorParameters = () => [
@@ -125,7 +125,7 @@ CheckboxComponent.decorators = [
125
125
  useExisting: forwardRef(() => CheckboxComponent)
126
126
  }
127
127
  ],
128
- styles: [".switch{display:flex;flex-flow:row wrap;align-items:center}label{padding-right:1.1rem}.switch-item{padding-right:.5em}.slider.round{border-radius:.7rem;width:3.1rem;height:1.4rem}.slider.round:before{border-radius:50%}.switch input{opacity:0;width:0;height:0}.slider{cursor:pointer;position:relative;top:-.7rem;background-color:#ccc;transition:.4s}.slider.on{background-color:#2196f3}.slider:before{position:absolute;content:\"\";height:1rem;width:1rem;left:.2rem;bottom:.2rem;background-color:#fff;transition:.4s}input:focus+.slider{box-shadow:0 0 1px #2196f3}input:checked+.slider:before{transform:translateX(26px)}"]
128
+ styles: [".switch{display:flex;flex-flow:row wrap;align-items:center}label{padding-right:1.1rem}.switch-item{padding-right:.5em}.slider.round{border-radius:.7rem;width:3.1rem;height:1.4rem}.slider.round:before{border-radius:50%}.switch input{opacity:0;width:0;height:0}.slider{cursor:pointer;position:relative;top:-.7rem;background-color:#ccc;transition:.4s}.slider.on{background-color:#2196f3}.slider:before{position:absolute;content:\"\";height:1rem;width:1rem;left:.2rem;bottom:.2rem;background-color:#fff;transition:.4s}.slider.on:before{transform:translate(26px)}input:focus+.slider{box-shadow:0 0 1px #2196f3}\n"]
129
129
  },] }
130
130
  ];
131
131
  CheckboxComponent.ctorParameters = () => [];
@@ -123,7 +123,7 @@ FilterComponent.decorators = [
123
123
  useExisting: forwardRef(() => FilterComponent)
124
124
  }
125
125
  ],
126
- styles: [".filter{display:grid;grid-template-columns:auto 1.5rem 1.5rem .5rem auto}.filter input{grid-row:1;grid-column-start:1;grid-column-end:4}.filter .hide{visibility:collapse}.filter .clear-indicator{grid-row:1;grid-column:2;border:none}.filter .search-indicator{grid-row:1;grid-column:3}.filter .btn-search{grid-row:1;grid-column:5}.filter .icon-search{background:url(/assets/img/filter-search.png) no-repeat;background-size:1rem;background-position:50%;width:1rem}.filter .icon-clear{background:url(/assets/img/filter-clear.png) no-repeat;background-size:1rem;background-position:50%}"]
126
+ styles: [".filter{display:grid;grid-template-columns:auto 1.5rem 1.5rem .5rem auto}.filter input{grid-row:1;grid-column-start:1;grid-column-end:4}.filter .hide{visibility:collapse}.filter .clear-indicator{grid-row:1;grid-column:2;border:none}.filter .search-indicator{grid-row:1;grid-column:3}.filter .btn-search{grid-row:1;grid-column:5}.filter .icon-search{background:url(/assets/img/filter-search.png) no-repeat center;background:var(--lux-filter-icon-search, url(/assets/img/filter-search.png) no-repeat center);background-size:1rem;background-size:var(--lux-filter-icon-bg-size, 1rem);background-position:center;width:1rem;width:var(--lux-filter-icon-width, 1rem)}.filter .icon-clear{background:url(/assets/img/filter-clear.png) no-repeat center;background:var(--lux-filter-icon-clear, url(/assets/img/filter-clear.png) no-repeat center);background-size:1rem;background-size:var(--lux-filter-icon-bg-size, 1rem);background-position:center}\n"]
127
127
  },] }
128
128
  ];
129
129
  FilterComponent.ctorParameters = () => [];