@sd-angular/core 1.0.13 → 1.0.17

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.
Files changed (59) hide show
  1. package/api/src/lib/api.service.d.ts +2 -0
  2. package/bundles/sd-angular-core-api.umd.js +3 -3
  3. package/bundles/sd-angular-core-api.umd.js.map +1 -1
  4. package/bundles/sd-angular-core-api.umd.min.js +1 -1
  5. package/bundles/sd-angular-core-api.umd.min.js.map +1 -1
  6. package/bundles/sd-angular-core-chip.umd.js +18 -0
  7. package/bundles/sd-angular-core-chip.umd.js.map +1 -1
  8. package/bundles/sd-angular-core-chip.umd.min.js +1 -1
  9. package/bundles/sd-angular-core-chip.umd.min.js.map +1 -1
  10. package/bundles/sd-angular-core-common.umd.js +99 -35
  11. package/bundles/sd-angular-core-common.umd.js.map +1 -1
  12. package/bundles/sd-angular-core-common.umd.min.js +2 -2
  13. package/bundles/sd-angular-core-common.umd.min.js.map +1 -1
  14. package/bundles/sd-angular-core-grid-material.umd.js +6 -2
  15. package/bundles/sd-angular-core-grid-material.umd.js.map +1 -1
  16. package/bundles/sd-angular-core-grid-material.umd.min.js +1 -1
  17. package/bundles/sd-angular-core-grid-material.umd.min.js.map +1 -1
  18. package/bundles/sd-angular-core-view.umd.js +32 -0
  19. package/bundles/sd-angular-core-view.umd.js.map +1 -0
  20. package/bundles/sd-angular-core-view.umd.min.js +2 -0
  21. package/bundles/sd-angular-core-view.umd.min.js.map +1 -0
  22. package/chip/src/lib/chip.component.d.ts +1 -0
  23. package/common/sd-angular-core-common.metadata.json +1 -1
  24. package/common/src/lib/directives/sd-scroll.directive.d.ts +3 -1
  25. package/common/src/lib/services/browser.service.d.ts +9 -0
  26. package/common/src/public-api.d.ts +2 -1
  27. package/esm2015/api/src/lib/api.service.js +4 -4
  28. package/esm2015/chip/src/lib/chip.component.js +19 -1
  29. package/esm2015/common/src/lib/directives/sd-scroll.directive.js +7 -4
  30. package/esm2015/common/src/lib/services/browser.service.js +51 -0
  31. package/esm2015/common/src/public-api.js +3 -2
  32. package/esm2015/grid-material/src/lib/components/desktop-cell-view/desktop-cell-view.component.js +2 -2
  33. package/esm2015/grid-material/src/lib/grid-material.component.js +2 -2
  34. package/esm2015/grid-material/src/lib/models/grid-cell.model.js +1 -1
  35. package/esm2015/grid-material/src/lib/pipes/cell-view.pipe.js +5 -1
  36. package/esm2015/view/index.js +2 -0
  37. package/esm2015/view/sd-angular-core-view.js +5 -0
  38. package/esm2015/view/src/lib/view.module.js +16 -0
  39. package/esm2015/view/src/public-api.js +2 -0
  40. package/fesm2015/sd-angular-core-api.js +3 -3
  41. package/fesm2015/sd-angular-core-api.js.map +1 -1
  42. package/fesm2015/sd-angular-core-chip.js +18 -0
  43. package/fesm2015/sd-angular-core-chip.js.map +1 -1
  44. package/fesm2015/sd-angular-core-common.js +68 -18
  45. package/fesm2015/sd-angular-core-common.js.map +1 -1
  46. package/fesm2015/sd-angular-core-grid-material.js +6 -2
  47. package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
  48. package/fesm2015/sd-angular-core-view.js +23 -0
  49. package/fesm2015/sd-angular-core-view.js.map +1 -0
  50. package/grid-material/sd-angular-core-grid-material.metadata.json +1 -1
  51. package/grid-material/src/lib/models/grid-cell.model.d.ts +1 -0
  52. package/package.json +1 -1
  53. package/{sd-angular-core-1.0.13.tgz → sd-angular-core-1.0.17.tgz} +0 -0
  54. package/view/index.d.ts +1 -0
  55. package/view/package.json +12 -0
  56. package/view/sd-angular-core-view.d.ts +4 -0
  57. package/view/sd-angular-core-view.metadata.json +1 -0
  58. package/view/src/lib/view.module.d.ts +2 -0
  59. package/view/src/public-api.d.ts +1 -0
@@ -32,6 +32,7 @@ export class SdCellViewPipe {
32
32
  };
33
33
  // Display
34
34
  if (typeof (htmlTemplate) === 'function') {
35
+ result.display.hasHtml = true;
35
36
  result.display.html = htmlTemplate(value, rowData, __classPrivateFieldGet(this, _isMobileOrTablet));
36
37
  }
37
38
  else {
@@ -71,6 +72,7 @@ export class SdCellViewPipe {
71
72
  else {
72
73
  result.display.value = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');
73
74
  if (column.type === 'datetime' && result.display.value) {
75
+ result.display.hasHtml = true;
74
76
  result.display.html = `<span class="d-block T14R text-black400">${Date.toFormat(value, 'HH:mm')}</span><span class="d-block T14R">${Date.toFormat(value, 'dd/MM/yyyy')}</span>`;
75
77
  }
76
78
  }
@@ -92,9 +94,11 @@ export class SdCellViewPipe {
92
94
  }
93
95
  if (displayOnEmpty && (result.display.value === null || result.display.value === undefined || result.display.value === '')) {
94
96
  if (typeof (displayOnEmpty) === 'function') {
97
+ result.display.hasHtml = true;
95
98
  result.display.html = displayOnEmpty(rowData, column);
96
99
  }
97
100
  else {
101
+ result.display.hasHtml = true;
98
102
  result.display.html = `<div class="T16R text-black400">--</div>`;
99
103
  }
100
104
  }
@@ -137,4 +141,4 @@ SdCellViewPipe.ctorParameters = () => [
137
141
  { type: SdUtilityService },
138
142
  { type: SdGridService }
139
143
  ];
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC12aWV3LnBpcGUuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1L0Rlc2t0b3AvV29ya2luZy8xTUcvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9ncmlkLW1hdGVyaWFsLyIsInNvdXJjZXMiOlsic3JjL2xpYi9waXBlcy9jZWxsLXZpZXcucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSTVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUl6RCxNQUFNLE9BQU8sY0FBYztJQU96QixZQUNFLGFBQW9DLEVBQzVCLGNBQWdDLEVBQ2hDLFdBQTBCO1FBRDFCLG1CQUFjLEdBQWQsY0FBYyxDQUFrQjtRQUNoQyxnQkFBVyxHQUFYLFdBQVcsQ0FBZTtRQVRwQyxxQkFBYSxFQUFFLEVBQUM7UUFDaEIscUJBQWEsMkNBQWtCLEVBQUUsRUFBQztRQUNsQyxtQkFBVywyQ0FBa0IsRUFBRSxFQUFDO1FBQ2hDLGtCQUFVLHlDQUFnQixFQUFFLEVBQUM7UUFDN0Isb0JBQVkseUNBQWdCLEdBQUcsRUFBQztRQUNoQyw0QkFBb0IsS0FBSyxFQUFDO1FBS3hCLHVCQUFBLElBQUkscUJBQXFCLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxFQUFDO0lBQ3RELENBQUM7SUFDSyxTQUFTLENBQUMsS0FBVSxFQUFFLE9BQVksRUFBRSxNQUE0QixFQUFFLFVBQWdDLEVBQUUsR0FBVzs7O1lBQ25ILE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRyxVQUFVLENBQUM7WUFDdEMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsR0FB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QUFNLENBQUMsS0FBSyxHQUFHO29CQUNiLElBQUksRUFBRSxFQUFDLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxTQUFTLENBQUEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUztvQkFDckQsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUTtvQkFDckMsSUFBSSxFQUFFLElBQUk7aUJBQ1gsQ0FBQTthQUNGO1lBQ0QsVUFBVTtZQUNWLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLFVBQVUsRUFBRTtnQkFDbkMsTUFBTSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2FBQzFDO1lBQ0QsWUFBWTtZQUNaLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLFVBQVUsRUFBRTtnQkFDakMsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2FBQzVDO1lBQ0QsT0FBTyxNQUFNLENBQUM7O0tBQ2Y7Ozs7WUE5R0YsSUFBSSxTQUFDO2dCQUNKLElBQUksRUFBRSxVQUFVO2FBQ2pCOzs7WUFQUSxxQkFBcUI7WUFEckIsZ0JBQWdCO1lBS2hCLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcclxuaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTZFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS91dGlsaXR5JztcclxuaW1wb3J0IHsgRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlIH0gZnJvbSAnbmd4LWRldmljZS1kZXRlY3Rvcic7XHJcbmltcG9ydCB7IFNkQ2VsbFZpZXcgfSBmcm9tICcuLi9tb2RlbHMvZ3JpZC1jZWxsLm1vZGVsJztcclxuaW1wb3J0IHsgU2RHcmlkTWF0ZXJpYWxDb2x1bW4gfSBmcm9tICcuLi9tb2RlbHMvZ3JpZC1jb2x1bW4ubW9kZWwnO1xyXG5pbXBvcnQgeyBTZEdyaWRNYXRlcmlhbE9wdGlvbiB9IGZyb20gJy4uL21vZGVscy9ncmlkLW9wdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IFNkR3JpZFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9ncmlkLnNlcnZpY2UnO1xyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ2NlbGxWaWV3J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RDZWxsVmlld1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICAjbWF4U2Vjb25kID0gNjA7XHJcbiAgI21heE1pbnV0ZSA9IHRoaXMuI21heFNlY29uZCAqIDYwO1xyXG4gICNtYXhIb3VyID0gdGhpcy4jbWF4TWludXRlICogMjQ7XHJcbiAgI21heERheSA9IHRoaXMuI21heEhvdXIgKiAzMDtcclxuICAjbWF4TW9udGggPSB0aGlzLiNtYXhIb3VyICogMzY1O1xyXG4gICNpc01vYmlsZU9yVGFibGV0ID0gZmFsc2U7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBkZXZpY2VTZXJ2aWNlOiBEZXZpY2VEZXRlY3RvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHV0aWxpdHlTZXJ2aWNlOiBTZFV0aWxpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBncmlkU2VydmljZTogU2RHcmlkU2VydmljZSkge1xyXG4gICAgdGhpcy4jaXNNb2JpbGVPclRhYmxldCA9ICFkZXZpY2VTZXJ2aWNlLmlzRGVza3RvcCgpO1xyXG4gIH1cclxuICBhc3luYyB0cmFuc2Zvcm0odmFsdWU6IGFueSwgcm93RGF0YTogYW55LCBjb2x1bW46IFNkR3JpZE1hdGVyaWFsQ29sdW1uLCBncmlkT3B0aW9uOiBTZEdyaWRNYXRlcmlhbE9wdGlvbiwga2V5OiBzdHJpbmcpOiBQcm9taXNlPFNkQ2VsbFZpZXc+IHtcclxuICAgIGNvbnN0IHsgZGlzcGxheU9uRW1wdHkgfSA9IGdyaWRPcHRpb247XHJcbiAgICBjb25zdCB7IGFsaWduLCBjbGljaywgdG9vbHRpcCwgaHRtbFRlbXBsYXRlLCB0cmFuc2Zvcm0gfSA9IGNvbHVtbjtcclxuICAgIGNvbnN0IHJlc3VsdDogU2RDZWxsVmlldyA9IHtcclxuICAgICAgYmFkZ2U6IG51bGwsXHJcbiAgICAgIHRvb2x0aXA6IG51bGwsXHJcbiAgICAgIGRpc3BsYXk6IHtcclxuICAgICAgICBhbGlnbjogYWxpZ24gfHwgKGNvbHVtbi50eXBlID09PSAnbnVtYmVyJyA/ICdyaWdodCcgOiAnbGVmdCcpLFxyXG4gICAgICAgIHZhbHVlXHJcbiAgICAgIH0sXHJcbiAgICAgIGNsaWNrOiBudWxsXHJcbiAgICB9O1xyXG4gICAgLy8gRGlzcGxheVxyXG4gICAgaWYgKHR5cGVvZiAoaHRtbFRlbXBsYXRlKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICByZXN1bHQuZGlzcGxheS5odG1sID0gaHRtbFRlbXBsYXRlKHZhbHVlLCByb3dEYXRhLCB0aGlzLiNpc01vYmlsZU9yVGFibGV0KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0eXBlb2YgKHRyYW5zZm9ybSkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICBjb25zdCB2YWwgPSB0cmFuc2Zvcm0odmFsdWUsIHJvd0RhdGEpO1xyXG4gICAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgICAgICByZXN1bHQuZGlzcGxheS52YWx1ZSA9IGF3YWl0IHZhbDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVzdWx0LmRpc3BsYXkudmFsdWUgPSB2YWw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2RhdGUnIHx8IGNvbHVtbi50eXBlID09PSAnZGF0ZXRpbWUnKSB7XHJcbiAgICAgICAgICBjb25zdCB7IG9wdGlvbiB9ID0gY29sdW1uO1xyXG4gICAgICAgICAgY29uc3Qgc2Vjb25kcyA9IE1hdGgucm91bmQoKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gbmV3IERhdGUodmFsdWUpLmdldFRpbWUoKSkgLyAxMDAwKTtcclxuICAgICAgICAgIGlmIChvcHRpb24/LnRpbWVEaWZmZXJlbnQgPT09ICdtb250aCcgJiYgc2Vjb25kcyA8IHRoaXMuI21heE1vbnRoKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5kaXNwbGF5LnZhbHVlID0gdGhpcy51dGlsaXR5U2VydmljZS50aW1lRGlmZmVyZW5jZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgIHJlc3VsdC50b29sdGlwID0gRGF0ZS50b0Zvcm1hdCh2YWx1ZSwgY29sdW1uLnR5cGUgPT09ICdkYXRlJyA/ICdkZC9NTS95eXl5JyA6ICdkZC9NTS95eXl5IEhIOm1tJyk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbj8udGltZURpZmZlcmVudCA9PT0gJ2RheScgJiYgc2Vjb25kcyA8IHRoaXMuI21heERheSkge1xyXG4gICAgICAgICAgICByZXN1bHQuZGlzcGxheS52YWx1ZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UudGltZURpZmZlcmVuY2UodmFsdWUpO1xyXG4gICAgICAgICAgICByZXN1bHQudG9vbHRpcCA9IERhdGUudG9Gb3JtYXQodmFsdWUsIGNvbHVtbi50eXBlID09PSAnZGF0ZScgPyAnZGQvTU0veXl5eScgOiAnZGQvTU0veXl5eSBISDptbScpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChvcHRpb24/LnRpbWVEaWZmZXJlbnQgPT09ICdob3VyJyAmJiBzZWNvbmRzIDwgdGhpcy4jbWF4SG91cikge1xyXG4gICAgICAgICAgICByZXN1bHQuZGlzcGxheS52YWx1ZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UudGltZURpZmZlcmVuY2UodmFsdWUpO1xyXG4gICAgICAgICAgICByZXN1bHQudG9vbHRpcCA9IERhdGUudG9Gb3JtYXQodmFsdWUsIGNvbHVtbi50eXBlID09PSAnZGF0ZScgPyAnZGQvTU0veXl5eScgOiAnZGQvTU0veXl5eSBISDptbScpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChvcHRpb24/LnRpbWVEaWZmZXJlbnQgPT09ICdtaW51dGUnICYmIHNlY29uZHMgPCB0aGlzLiNtYXhNaW51dGUpIHtcclxuICAgICAgICAgICAgcmVzdWx0LmRpc3BsYXkudmFsdWUgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLnRpbWVEaWZmZXJlbmNlKHZhbHVlKTtcclxuICAgICAgICAgICAgcmVzdWx0LnRvb2x0aXAgPSBEYXRlLnRvRm9ybWF0KHZhbHVlLCBjb2x1bW4udHlwZSA9PT0gJ2RhdGUnID8gJ2RkL01NL3l5eXknIDogJ2RkL01NL3l5eXkgSEg6bW0nKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9uPy50aW1lRGlmZmVyZW50ID09PSAnc2Vjb25kJyAmJiBzZWNvbmRzIDwgdGhpcy4jbWF4U2Vjb25kKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5kaXNwbGF5LnZhbHVlID0gdGhpcy51dGlsaXR5U2VydmljZS50aW1lRGlmZmVyZW5jZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgIHJlc3VsdC50b29sdGlwID0gRGF0ZS50b0Zvcm1hdCh2YWx1ZSwgY29sdW1uLnR5cGUgPT09ICdkYXRlJyA/ICdkZC9NTS95eXl5JyA6ICdkZC9NTS95eXl5IEhIOm1tJyk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXN1bHQuZGlzcGxheS52YWx1ZSA9IERhdGUudG9Gb3JtYXQodmFsdWUsIGNvbHVtbi50eXBlID09PSAnZGF0ZScgPyAnZGQvTU0veXl5eScgOiAnZGQvTU0veXl5eSBISDptbScpO1xyXG4gICAgICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdkYXRldGltZScgJiYgcmVzdWx0LmRpc3BsYXkudmFsdWUpIHtcclxuICAgICAgICAgICAgICByZXN1bHQuZGlzcGxheS5odG1sID0gYDxzcGFuIGNsYXNzPVwiZC1ibG9jayBUMTRSIHRleHQtYmxhY2s0MDBcIj4ke0RhdGUudG9Gb3JtYXQodmFsdWUsICdISDptbScpfTwvc3Bhbj48c3BhbiBjbGFzcz1cImQtYmxvY2sgVDE0UlwiPiR7RGF0ZS50b0Zvcm1hdCh2YWx1ZSwgJ2RkL01NL3l5eXknKX08L3NwYW4+YFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ3RpbWUnKSB7XHJcbiAgICAgICAgICByZXN1bHQuZGlzcGxheS52YWx1ZSA9IERhdGUudG9Gb3JtYXQodmFsdWUsICdISDptbScpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICd2YWx1ZXMnKSB7XHJcbiAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5ncmlkU2VydmljZS5sb2FkVmFsdWVzKGNvbHVtbiwga2V5KTtcclxuICAgICAgICAgIHJlc3VsdC5kaXNwbGF5LnZhbHVlID0gZGF0YS5vYmpbdmFsdWVdPy5bY29sdW1uLm9wdGlvbj8uZGlzcGxheUZpZWxkXSA/PyB2YWx1ZTtcclxuICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNOdW1iZXIodmFsdWUpKSB7XHJcbiAgICAgICAgICByZXN1bHQuZGlzcGxheS52YWx1ZSA9IE51bWJlci50b1ZOQ3VycmVuY3kodmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdib29sJykge1xyXG4gICAgICAgICAgY29uc3QgeyBvcHRpb24gfSA9IGNvbHVtbjtcclxuICAgICAgICAgIHJlc3VsdC5kaXNwbGF5LnZhbHVlID0gdmFsdWUgPT09IHRydWUgPyAob3B0aW9uPy5kaXNwbGF5T25UcnVlIHx8ICdUcnVlJykgOiAob3B0aW9uPy5kaXNwbGF5T25GYWxzZSB8fCAnRmFsc2UnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGRpc3BsYXlPbkVtcHR5ICYmIChyZXN1bHQuZGlzcGxheS52YWx1ZSA9PT0gbnVsbCB8fCByZXN1bHQuZGlzcGxheS52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHJlc3VsdC5kaXNwbGF5LnZhbHVlID09PSAnJykpIHtcclxuICAgICAgICBpZiAodHlwZW9mIChkaXNwbGF5T25FbXB0eSkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgIHJlc3VsdC5kaXNwbGF5Lmh0bWwgPSBkaXNwbGF5T25FbXB0eShyb3dEYXRhLCBjb2x1bW4pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXN1bHQuZGlzcGxheS5odG1sID0gYDxkaXYgY2xhc3M9XCJUMTZSIHRleHQtYmxhY2s0MDBcIj4tLTwvZGl2PmBcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIEJhZGdlXHJcbiAgICBpZiAoKGNvbHVtbi50eXBlID09PSAnc3RyaW5nJyB8fCBjb2x1bW4udHlwZSA9PT0gJ251bWJlcicgfHwgY29sdW1uLnR5cGUgPT09ICd2YWx1ZXMnKSAmJiBjb2x1bW4uYmFkZ2UpIHtcclxuICAgICAgcmVzdWx0LmJhZGdlID0ge1xyXG4gICAgICAgIHR5cGU6ICFjb2x1bW4/LmJhZGdlVHlwZSA/ICdyb3VuZCcgOiBjb2x1bW4uYmFkZ2VUeXBlLFxyXG4gICAgICAgIGNvbG9yOiBjb2x1bW4uYmFkZ2UodmFsdWUsIHJvd0RhdGEpLFxyXG4gICAgICAgIGljb246IGNvbHVtbj8uYmFkZ2VJY29uPy4odmFsdWUsIHJvd0RhdGEpXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICdib29sJykge1xyXG4gICAgICByZXN1bHQuYmFkZ2UgPSB7XHJcbiAgICAgICAgdHlwZTogIWNvbHVtbj8uYmFkZ2VUeXBlID8gJ3JvdW5kJyA6IGNvbHVtbi5iYWRnZVR5cGUsXHJcbiAgICAgICAgY29sb3I6ICEhdmFsdWUgPyAnc3VjY2VzcycgOiAnZGFuZ2VyJyxcclxuICAgICAgICBpY29uOiBudWxsXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIFRvb2x0aXBcclxuICAgIGlmICh0eXBlb2YgKHRvb2x0aXApID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIHJlc3VsdC50b29sdGlwID0gdG9vbHRpcCh2YWx1ZSwgcm93RGF0YSk7XHJcbiAgICB9XHJcbiAgICAvLyBDbGlja2FibGVcclxuICAgIGlmICh0eXBlb2YgKGNsaWNrKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICByZXN1bHQuY2xpY2sgPSAoKSA9PiBjbGljayh2YWx1ZSwgcm93RGF0YSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxufVxyXG4iXX0=
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC12aWV3LnBpcGUuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1L0Rlc2t0b3AvV29ya2luZy8xTUcvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9ncmlkLW1hdGVyaWFsLyIsInNvdXJjZXMiOlsic3JjL2xpYi9waXBlcy9jZWxsLXZpZXcucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSTVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUl6RCxNQUFNLE9BQU8sY0FBYztJQU96QixZQUNFLGFBQW9DLEVBQzVCLGNBQWdDLEVBQ2hDLFdBQTBCO1FBRDFCLG1CQUFjLEdBQWQsY0FBYyxDQUFrQjtRQUNoQyxnQkFBVyxHQUFYLFdBQVcsQ0FBZTtRQVRwQyxxQkFBYSxFQUFFLEVBQUM7UUFDaEIscUJBQWEsMkNBQWtCLEVBQUUsRUFBQztRQUNsQyxtQkFBVywyQ0FBa0IsRUFBRSxFQUFDO1FBQ2hDLGtCQUFVLHlDQUFnQixFQUFFLEVBQUM7UUFDN0Isb0JBQVkseUNBQWdCLEdBQUcsRUFBQztRQUNoQyw0QkFBb0IsS0FBSyxFQUFDO1FBS3hCLHVCQUFBLElBQUkscUJBQXFCLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxFQUFDO0lBQ3RELENBQUM7SUFDSyxTQUFTLENBQ2IsS0FBVSxFQUNWLE9BQVksRUFDWixNQUE0QixFQUM1QixVQUFnQyxFQUNoQyxHQUFXOzs7WUFDWCxNQUFNLEVBQUUsY0FBYyxFQUFFLEdBQUcsVUFBVSxDQUFDO1lBQ3RDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLEdB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QUMsS0FBSyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUM7b0JBQ25DLElBQUksUUFBRSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsU0FBUywrQ0FBakIsTUFBTSxFQUFjLEtBQUssRUFBRSxPQUFPLENBQUM7aUJBQzFDLENBQUM7YUFDSDtpQkFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO2dCQUNqQyxNQUFNLENBQUMsS0FBSyxHQUFHO29CQUNiLElBQUksRUFBRSxFQUFDLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxTQUFTLENBQUEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUztvQkFDckQsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUTtvQkFDckMsSUFBSSxFQUFFLElBQUk7aUJBQ1gsQ0FBQzthQUNIO1lBQ0QsVUFBVTtZQUNWLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLFVBQVUsRUFBRTtnQkFDbkMsTUFBTSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2FBQzFDO1lBQ0QsWUFBWTtZQUNaLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLFVBQVUsRUFBRTtnQkFDakMsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2FBQzVDO1lBQ0QsT0FBTyxNQUFNLENBQUM7O0tBQ2Y7Ozs7WUF2SEYsSUFBSSxTQUFDO2dCQUNKLElBQUksRUFBRSxVQUFVO2FBQ2pCOzs7WUFQUSxxQkFBcUI7WUFEckIsZ0JBQWdCO1lBS2hCLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcclxuaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTZFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS91dGlsaXR5JztcclxuaW1wb3J0IHsgRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlIH0gZnJvbSAnbmd4LWRldmljZS1kZXRlY3Rvcic7XHJcbmltcG9ydCB7IFNkQ2VsbFZpZXcgfSBmcm9tICcuLi9tb2RlbHMvZ3JpZC1jZWxsLm1vZGVsJztcclxuaW1wb3J0IHsgU2RHcmlkTWF0ZXJpYWxDb2x1bW4gfSBmcm9tICcuLi9tb2RlbHMvZ3JpZC1jb2x1bW4ubW9kZWwnO1xyXG5pbXBvcnQgeyBTZEdyaWRNYXRlcmlhbE9wdGlvbiB9IGZyb20gJy4uL21vZGVscy9ncmlkLW9wdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IFNkR3JpZFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9ncmlkLnNlcnZpY2UnO1xyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ2NlbGxWaWV3J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RDZWxsVmlld1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICAjbWF4U2Vjb25kID0gNjA7XHJcbiAgI21heE1pbnV0ZSA9IHRoaXMuI21heFNlY29uZCAqIDYwO1xyXG4gICNtYXhIb3VyID0gdGhpcy4jbWF4TWludXRlICogMjQ7XHJcbiAgI21heERheSA9IHRoaXMuI21heEhvdXIgKiAzMDtcclxuICAjbWF4TW9udGggPSB0aGlzLiNtYXhIb3VyICogMzY1O1xyXG4gICNpc01vYmlsZU9yVGFibGV0ID0gZmFsc2U7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBkZXZpY2VTZXJ2aWNlOiBEZXZpY2VEZXRlY3RvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHV0aWxpdHlTZXJ2aWNlOiBTZFV0aWxpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBncmlkU2VydmljZTogU2RHcmlkU2VydmljZSkge1xyXG4gICAgdGhpcy4jaXNNb2JpbGVPclRhYmxldCA9ICFkZXZpY2VTZXJ2aWNlLmlzRGVza3RvcCgpO1xyXG4gIH1cclxuICBhc3luYyB0cmFuc2Zvcm0oXHJcbiAgICB2YWx1ZTogYW55LFxyXG4gICAgcm93RGF0YTogYW55LFxyXG4gICAgY29sdW1uOiBTZEdyaWRNYXRlcmlhbENvbHVtbixcclxuICAgIGdyaWRPcHRpb246IFNkR3JpZE1hdGVyaWFsT3B0aW9uLFxyXG4gICAga2V5OiBzdHJpbmcpOiBQcm9taXNlPFNkQ2VsbFZpZXc+IHtcclxuICAgIGNvbnN0IHsgZGlzcGxheU9uRW1wdHkgfSA9IGdyaWRPcHRpb247XHJcbiAgICBjb25zdCB7IGFsaWduLCBjbGljaywgdG9vbHRpcCwgaHRtbFRlbXBsYXRlLCB0cmFuc2Zvcm0gfSA9IGNvbHVtbjtcclxuICAgIGNvbnN0IHJlc3VsdDogU2RDZWxsVmlldyA9IHtcclxuICAgICAgYmFkZ2U6IG51bGwsXHJcbiAgICAgIHRvb2x0aXA6IG51bGwsXHJcbiAgICAgIGRpc3BsYXk6IHtcclxuICAgICAgICBhbGlnbjogYWxpZ24gfHwgKGNvbHVtbi50eXBlID09PSAnbnVtYmVyJyA/ICdyaWdodCcgOiAnbGVmdCcpLFxyXG4gICAgICAgIHZhbHVlXHJcbiAgICAgIH0sXHJcbiAgICAgIGNsaWNrOiBudWxsXHJcbiAgICB9O1xyXG4gICAgLy8gRGlzcGxheVxyXG4gICAgaWYgKHR5cGVvZiAoaHRtbFRlbXBsYXRlKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICByZXN1bHQuZGlzcGxheS5oYXNIdG1sID0gdHJ1ZTtcclxuICAgICAgcmVzdWx0LmRpc3BsYXkuaHRtbCA9IGh0bWxUZW1wbGF0ZSh2YWx1ZSwgcm93RGF0YSwgdGhpcy4jaXNNb2JpbGVPclRhYmxldCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodHlwZW9mICh0cmFuc2Zvcm0pID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgY29uc3QgdmFsID0gdHJhbnNmb3JtKHZhbHVlLCByb3dEYXRhKTtcclxuICAgICAgICBpZiAodmFsIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICAgICAgcmVzdWx0LmRpc3BsYXkudmFsdWUgPSBhd2FpdCB2YWw7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc3VsdC5kaXNwbGF5LnZhbHVlID0gdmFsO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdkYXRlJyB8fCBjb2x1bW4udHlwZSA9PT0gJ2RhdGV0aW1lJykge1xyXG4gICAgICAgICAgY29uc3QgeyBvcHRpb24gfSA9IGNvbHVtbjtcclxuICAgICAgICAgIGNvbnN0IHNlY29uZHMgPSBNYXRoLnJvdW5kKChuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIG5ldyBEYXRlKHZhbHVlKS5nZXRUaW1lKCkpIC8gMTAwMCk7XHJcbiAgICAgICAgICBpZiAob3B0aW9uPy50aW1lRGlmZmVyZW50ID09PSAnbW9udGgnICYmIHNlY29uZHMgPCB0aGlzLiNtYXhNb250aCkge1xyXG4gICAgICAgICAgICByZXN1bHQuZGlzcGxheS52YWx1ZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UudGltZURpZmZlcmVuY2UodmFsdWUpO1xyXG4gICAgICAgICAgICByZXN1bHQudG9vbHRpcCA9IERhdGUudG9Gb3JtYXQodmFsdWUsIGNvbHVtbi50eXBlID09PSAnZGF0ZScgPyAnZGQvTU0veXl5eScgOiAnZGQvTU0veXl5eSBISDptbScpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChvcHRpb24/LnRpbWVEaWZmZXJlbnQgPT09ICdkYXknICYmIHNlY29uZHMgPCB0aGlzLiNtYXhEYXkpIHtcclxuICAgICAgICAgICAgcmVzdWx0LmRpc3BsYXkudmFsdWUgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLnRpbWVEaWZmZXJlbmNlKHZhbHVlKTtcclxuICAgICAgICAgICAgcmVzdWx0LnRvb2x0aXAgPSBEYXRlLnRvRm9ybWF0KHZhbHVlLCBjb2x1bW4udHlwZSA9PT0gJ2RhdGUnID8gJ2RkL01NL3l5eXknIDogJ2RkL01NL3l5eXkgSEg6bW0nKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9uPy50aW1lRGlmZmVyZW50ID09PSAnaG91cicgJiYgc2Vjb25kcyA8IHRoaXMuI21heEhvdXIpIHtcclxuICAgICAgICAgICAgcmVzdWx0LmRpc3BsYXkudmFsdWUgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLnRpbWVEaWZmZXJlbmNlKHZhbHVlKTtcclxuICAgICAgICAgICAgcmVzdWx0LnRvb2x0aXAgPSBEYXRlLnRvRm9ybWF0KHZhbHVlLCBjb2x1bW4udHlwZSA9PT0gJ2RhdGUnID8gJ2RkL01NL3l5eXknIDogJ2RkL01NL3l5eXkgSEg6bW0nKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9uPy50aW1lRGlmZmVyZW50ID09PSAnbWludXRlJyAmJiBzZWNvbmRzIDwgdGhpcy4jbWF4TWludXRlKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5kaXNwbGF5LnZhbHVlID0gdGhpcy51dGlsaXR5U2VydmljZS50aW1lRGlmZmVyZW5jZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgIHJlc3VsdC50b29sdGlwID0gRGF0ZS50b0Zvcm1hdCh2YWx1ZSwgY29sdW1uLnR5cGUgPT09ICdkYXRlJyA/ICdkZC9NTS95eXl5JyA6ICdkZC9NTS95eXl5IEhIOm1tJyk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbj8udGltZURpZmZlcmVudCA9PT0gJ3NlY29uZCcgJiYgc2Vjb25kcyA8IHRoaXMuI21heFNlY29uZCkge1xyXG4gICAgICAgICAgICByZXN1bHQuZGlzcGxheS52YWx1ZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UudGltZURpZmZlcmVuY2UodmFsdWUpO1xyXG4gICAgICAgICAgICByZXN1bHQudG9vbHRpcCA9IERhdGUudG9Gb3JtYXQodmFsdWUsIGNvbHVtbi50eXBlID09PSAnZGF0ZScgPyAnZGQvTU0veXl5eScgOiAnZGQvTU0veXl5eSBISDptbScpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmVzdWx0LmRpc3BsYXkudmFsdWUgPSBEYXRlLnRvRm9ybWF0KHZhbHVlLCBjb2x1bW4udHlwZSA9PT0gJ2RhdGUnID8gJ2RkL01NL3l5eXknIDogJ2RkL01NL3l5eXkgSEg6bW0nKTtcclxuICAgICAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnZGF0ZXRpbWUnICYmIHJlc3VsdC5kaXNwbGF5LnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgcmVzdWx0LmRpc3BsYXkuaGFzSHRtbCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgcmVzdWx0LmRpc3BsYXkuaHRtbCA9IGA8c3BhbiBjbGFzcz1cImQtYmxvY2sgVDE0UiB0ZXh0LWJsYWNrNDAwXCI+JHtEYXRlLnRvRm9ybWF0KHZhbHVlLCAnSEg6bW0nKX08L3NwYW4+PHNwYW4gY2xhc3M9XCJkLWJsb2NrIFQxNFJcIj4ke0RhdGUudG9Gb3JtYXQodmFsdWUsICdkZC9NTS95eXl5Jyl9PC9zcGFuPmBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICd0aW1lJykge1xyXG4gICAgICAgICAgcmVzdWx0LmRpc3BsYXkudmFsdWUgPSBEYXRlLnRvRm9ybWF0KHZhbHVlLCAnSEg6bW0nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAndmFsdWVzJykge1xyXG4gICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuZ3JpZFNlcnZpY2UubG9hZFZhbHVlcyhjb2x1bW4sIGtleSk7XHJcbiAgICAgICAgICByZXN1bHQuZGlzcGxheS52YWx1ZSA9IGRhdGEub2JqW3ZhbHVlXT8uW2NvbHVtbi5vcHRpb24/LmRpc3BsYXlGaWVsZF0gPz8gdmFsdWU7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzTnVtYmVyKHZhbHVlKSkge1xyXG4gICAgICAgICAgcmVzdWx0LmRpc3BsYXkudmFsdWUgPSBOdW1iZXIudG9WTkN1cnJlbmN5KHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnYm9vbCcpIHtcclxuICAgICAgICAgIGNvbnN0IHsgb3B0aW9uIH0gPSBjb2x1bW47XHJcbiAgICAgICAgICByZXN1bHQuZGlzcGxheS52YWx1ZSA9IHZhbHVlID09PSB0cnVlID8gKG9wdGlvbj8uZGlzcGxheU9uVHJ1ZSB8fCAnVHJ1ZScpIDogKG9wdGlvbj8uZGlzcGxheU9uRmFsc2UgfHwgJ0ZhbHNlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChkaXNwbGF5T25FbXB0eSAmJiAocmVzdWx0LmRpc3BsYXkudmFsdWUgPT09IG51bGwgfHwgcmVzdWx0LmRpc3BsYXkudmFsdWUgPT09IHVuZGVmaW5lZCB8fCByZXN1bHQuZGlzcGxheS52YWx1ZSA9PT0gJycpKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiAoZGlzcGxheU9uRW1wdHkpID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICByZXN1bHQuZGlzcGxheS5oYXNIdG1sID0gdHJ1ZTtcclxuICAgICAgICAgIHJlc3VsdC5kaXNwbGF5Lmh0bWwgPSBkaXNwbGF5T25FbXB0eShyb3dEYXRhLCBjb2x1bW4pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXN1bHQuZGlzcGxheS5oYXNIdG1sID0gdHJ1ZTtcclxuICAgICAgICAgIHJlc3VsdC5kaXNwbGF5Lmh0bWwgPSBgPGRpdiBjbGFzcz1cIlQxNlIgdGV4dC1ibGFjazQwMFwiPi0tPC9kaXY+YDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIEJhZGdlXHJcbiAgICBpZiAoKGNvbHVtbi50eXBlID09PSAnc3RyaW5nJyB8fCBjb2x1bW4udHlwZSA9PT0gJ251bWJlcicgfHwgY29sdW1uLnR5cGUgPT09ICd2YWx1ZXMnKSAmJiBjb2x1bW4uYmFkZ2UpIHtcclxuICAgICAgcmVzdWx0LmJhZGdlID0ge1xyXG4gICAgICAgIHR5cGU6ICFjb2x1bW4/LmJhZGdlVHlwZSA/ICdyb3VuZCcgOiBjb2x1bW4uYmFkZ2VUeXBlLFxyXG4gICAgICAgIGNvbG9yOiBjb2x1bW4uYmFkZ2UodmFsdWUsIHJvd0RhdGEpLFxyXG4gICAgICAgIGljb246IGNvbHVtbj8uYmFkZ2VJY29uPy4odmFsdWUsIHJvd0RhdGEpXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlID09PSAnYm9vbCcpIHtcclxuICAgICAgcmVzdWx0LmJhZGdlID0ge1xyXG4gICAgICAgIHR5cGU6ICFjb2x1bW4/LmJhZGdlVHlwZSA/ICdyb3VuZCcgOiBjb2x1bW4uYmFkZ2VUeXBlLFxyXG4gICAgICAgIGNvbG9yOiAhIXZhbHVlID8gJ3N1Y2Nlc3MnIDogJ2RhbmdlcicsXHJcbiAgICAgICAgaWNvbjogbnVsbFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgLy8gVG9vbHRpcFxyXG4gICAgaWYgKHR5cGVvZiAodG9vbHRpcCkgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgcmVzdWx0LnRvb2x0aXAgPSB0b29sdGlwKHZhbHVlLCByb3dEYXRhKTtcclxuICAgIH1cclxuICAgIC8vIENsaWNrYWJsZVxyXG4gICAgaWYgKHR5cGVvZiAoY2xpY2spID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIHJlc3VsdC5jbGljayA9ICgpID0+IGNsaWNrKHZhbHVlLCByb3dEYXRhKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './src/public-api';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1L0Rlc2t0b3AvV29ya2luZy8xTUcvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS92aWV3LyIsInNvdXJjZXMiOlsiaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3JjL3B1YmxpYy1hcGknO1xyXG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2QtYW5ndWxhci1jb3JlLXZpZXcuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1L0Rlc2t0b3AvV29ya2luZy8xTUcvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS92aWV3LyIsInNvdXJjZXMiOlsic2QtYW5ndWxhci1jb3JlLXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -0,0 +1,16 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { MatIconModule } from '@angular/material/icon';
4
+ export class SdViewModule {
5
+ }
6
+ SdViewModule.decorators = [
7
+ { type: NgModule, args: [{
8
+ imports: [
9
+ CommonModule,
10
+ MatIconModule
11
+ ],
12
+ declarations: [],
13
+ exports: []
14
+ },] }
15
+ ];
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1L0Rlc2t0b3AvV29ya2luZy8xTUcvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS92aWV3LyIsInNvdXJjZXMiOlsic3JjL2xpYi92aWV3Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFZdkQsTUFBTSxPQUFPLFlBQVk7OztZQVZ4QixRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osYUFBYTtpQkFDZDtnQkFDRCxZQUFZLEVBQUUsRUFDYjtnQkFDRCxPQUFPLEVBQUUsRUFDUjthQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBNYXRJY29uTW9kdWxlXHJcbiAgXSxcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZFZpZXdNb2R1bGUgeyB9XHJcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './lib/view.module';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTUvRGVza3RvcC9Xb3JraW5nLzFNRy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL3ZpZXcvIiwic291cmNlcyI6WyJzcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvdmlldy5tb2R1bGUnO1xyXG4iXX0=
@@ -243,7 +243,7 @@ class SdApiService {
243
243
  return this.get(`${url}${__classPrivateFieldGet(this, _defineParams).call(this, params)}`, options === null || options === void 0 ? void 0 : options.headers, Object.assign(Object.assign({}, options), { encodeURI: false }));
244
244
  };
245
245
  this.getCacheWithParams = (url, params, headers, options) => {
246
- return this.getCache(`${url}${__classPrivateFieldGet(this, _defineParams).call(this, params)}`, Object.assign(Object.assign({}, options), { encodeURI: false }));
246
+ return this.getCache(`${url}${__classPrivateFieldGet(this, _defineParams).call(this, params)}`, Object.assign(Object.assign({}, options), { headers, encodeURI: false }));
247
247
  };
248
248
  this.get = (url, headers, options) => {
249
249
  var _a, _b;
@@ -322,8 +322,8 @@ class SdApiService {
322
322
  type: options === null || options === void 0 ? void 0 : options.cacheType,
323
323
  hours: options === null || options === void 0 ? void 0 : options.cacheHours
324
324
  });
325
- if (!has()) {
326
- const result = yield this.get(encodedUrl, options === null || options === void 0 ? void 0 : options.headers);
325
+ if (!has() || (options === null || options === void 0 ? void 0 : options.reload)) {
326
+ const result = yield this.get(encodedUrl, options === null || options === void 0 ? void 0 : options.headers, { encodeURI: false });
327
327
  set(result);
328
328
  return result;
329
329
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sd-angular-core-api.js","sources":["../../../../projects/sd-core/api/src/lib/api.model.ts","../../../../projects/sd-core/api/src/lib/token.service.ts","../../../../projects/sd-core/api/src/lib/http.interceptor.ts","../../../../projects/sd-core/api/src/lib/api.module.ts","../../../../projects/sd-core/api/src/lib/api.service.ts","../../../../projects/sd-core/api/src/lib/http.service.ts","../../../../projects/sd-core/api/src/public-api.ts","../../../../projects/sd-core/api/sd-angular-core-api.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\nimport { HttpErrorResponse, HttpHeaders, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport hash from 'object-hash';\r\n\r\nexport interface IApiConfiguration {\r\n host?: string;\r\n tokenHeader?: string;\r\n customHeaders?: () => HttpHeaders;\r\n beforeRemote?: (request: HttpRequest<any>) => void | Promise<void>;\r\n afterRemote?: (response: HttpResponse<any> | HttpErrorResponse) => void | Promise<void>;\r\n translate?: (value: string) => string;\r\n}\r\n\r\nexport const API_CONFIG = new InjectionToken<IApiConfiguration>('api.configuration');\r\n\r\nexport const TOKEN = hash({\r\n origin: location.origin,\r\n key: 'ed4a2ffc-af43-41fb-9ac9-970f43d99571'\r\n});","import { Injectable, Inject, Optional } from '@angular/core';\r\nimport { IApiConfiguration, API_CONFIG, TOKEN } from './api.model';\r\nimport { SdCacheService } from '@sd-angular/core/cache';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdTokenService {\r\n\r\n get token() {\r\n const { get } = this.cacheService.create<string>(TOKEN, {\r\n type: 'local',\r\n hours: 240\r\n });\r\n return get();\r\n }\r\n\r\n set = (token: string) => {\r\n const { set } = this.cacheService.create<string>(TOKEN, {\r\n type: 'local',\r\n hours: 240\r\n });\r\n set(token);\r\n }\r\n\r\n clear = () => {\r\n const { remove } = this.cacheService.create<string>(TOKEN, {\r\n type: 'local',\r\n hours: 240\r\n });\r\n remove();\r\n }\r\n\r\n get customHeaders() {\r\n return this.configuration?.customHeaders?.() || null;\r\n }\r\n\r\n constructor(\r\n @Inject(API_CONFIG) @Optional() private configuration: IApiConfiguration,\r\n private cacheService: SdCacheService) {\r\n }\r\n}\r\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { from, Observable, of, throwError } from 'rxjs';\r\nimport { catchError, map, switchMap } from 'rxjs/operators';\r\nimport { API_CONFIG, IApiConfiguration } from './api.model';\r\nimport { SdTokenService } from './token.service';\r\n\r\n@Injectable()\r\nexport class SdHttpInterceptor implements HttpInterceptor {\r\n constructor(\r\n @Inject(API_CONFIG) @Optional() private configuration: IApiConfiguration,\r\n private tokenService: SdTokenService\r\n ) { }\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n if (this.configuration?.tokenHeader && this.tokenService.token) {\r\n request = request.clone({ headers: request.headers.set(this.configuration.tokenHeader, this.tokenService.token) });\r\n }\r\n\r\n if (!request.url.startsWith('http')) {\r\n request = request.clone({\r\n url: (this.configuration?.host || location.host) + request.url\r\n });\r\n }\r\n if (request.body instanceof FormData) {\r\n request = request.clone({\r\n headers: request.headers.delete('Content-Type')\r\n });\r\n }\r\n const beforeRemote = this.configuration?.beforeRemote?.(request);\r\n if (beforeRemote instanceof Promise) {\r\n return from(beforeRemote).pipe(\r\n switchMap(() => next.handle(request)),\r\n map((event: HttpEvent<any>) => {\r\n if (event instanceof HttpResponse) {\r\n this.configuration?.afterRemote?.(event);\r\n }\r\n return event;\r\n }),\r\n catchError((error: HttpErrorResponse) => {\r\n this.configuration?.afterRemote?.(error);\r\n return throwError(error);\r\n }));\r\n }\r\n return next.handle(request).pipe(\r\n map((event: HttpEvent<any>) => {\r\n if (event instanceof HttpResponse) {\r\n this.configuration?.afterRemote?.(event);\r\n }\r\n return event;\r\n }),\r\n catchError((error: HttpErrorResponse) => {\r\n this.configuration?.afterRemote?.(error);\r\n return throwError(error);\r\n }));\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { SdHttpInterceptor } from './http.interceptor';\r\n\r\n@NgModule({\r\n imports: [\r\n HttpClientModule,\r\n ],\r\n exports: [\r\n HttpClientModule\r\n ],\r\n providers: [\r\n { provide: HTTP_INTERCEPTORS, useClass: SdHttpInterceptor, multi: true }\r\n ],\r\n})\r\nexport class SdApiModule { }\r\n","import { Injectable, Inject, Optional } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\r\nimport { take, timeout } from 'rxjs/operators';\r\nimport $ from 'jquery';\r\nimport { IApiConfiguration, API_CONFIG } from './api.model';\r\nimport { SdCacheService } from '@sd-angular/core/cache';\r\nimport { SdTokenService } from './token.service';\r\nimport { Subject } from 'rxjs';\r\nimport hash from 'object-hash';\r\nimport * as uuid from 'uuid';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdApiService {\r\n private uploadId = 'U118fefb1-3085-4641-8cb8-f7fe5c28f509';\r\n\r\n #timeout = 120000; // 120s\r\n\r\n #cacheDuration = 2000; // 2s\r\n #cache: {\r\n [key: string]: {\r\n createdDate: Date;\r\n subject: Subject<any>;\r\n response?: {\r\n status?: 'success' | 'error';\r\n result: any,\r\n }\r\n }\r\n } = {};\r\n\r\n private translate = (value: string): string => {\r\n return this.configuration?.translate(value) || value;\r\n }\r\n\r\n constructor(\r\n private httpClient: HttpClient,\r\n @Inject(API_CONFIG) @Optional() private configuration: IApiConfiguration,\r\n private cacheService: SdCacheService,\r\n private tokenService: SdTokenService) {\r\n }\r\n\r\n post = async <T = any>(url: string, body?: any, headers?: HttpHeaders, options?: {\r\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\r\n }): Promise<T> => {\r\n headers = headers || this.tokenService.customHeaders;\r\n let hashKey = uuid.v4();\r\n if (!(body instanceof FormData)) {\r\n hashKey = hash({\r\n url,\r\n headers,\r\n body\r\n });\r\n }\r\n if (!this.#cache[hashKey] || Date.addMiliseconds(this.#cache[hashKey].createdDate, this.#cacheDuration) < new Date()) {\r\n this.#cache[hashKey] = {\r\n createdDate: new Date(),\r\n subject: new Subject(),\r\n };\r\n if (options?.responseType && options.responseType !== 'json') {\r\n this.httpClient.post(encodeURI(url), body, {\r\n observe: 'body',\r\n headers,\r\n responseType: options?.responseType as any\r\n }).pipe(timeout(this.#timeout)).subscribe((res) => {\r\n this.#cache[hashKey].response = {\r\n status: 'success',\r\n result: res\r\n };\r\n this.#cache[hashKey].subject.next(res);\r\n }, err => {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: err\r\n };\r\n this.#cache[hashKey].subject.error(err);\r\n });\r\n } else {\r\n this.httpClient.post(encodeURI(url), body, {\r\n observe: 'response',\r\n headers\r\n }).pipe(timeout(this.#timeout)).subscribe((res) => {\r\n if (res.ok) {\r\n this.#cache[hashKey].response = {\r\n status: 'success',\r\n result: res.body\r\n };\r\n this.#cache[hashKey].subject.next(res.body);\r\n } else {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: res.body\r\n };\r\n this.#cache[hashKey].subject.error(res.body);\r\n }\r\n }, err => {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: err\r\n };\r\n this.#cache[hashKey].subject.error(err);\r\n });\r\n }\r\n }\r\n if (this.#cache[hashKey].response?.status) {\r\n if (this.#cache[hashKey].response?.status === 'success') {\r\n return this.#cache[hashKey].response.result;\r\n }\r\n throw this.#cache[hashKey].response.result;\r\n }\r\n return this.#cache[hashKey].subject.pipe(take(1)).toPromise();\r\n }\r\n\r\n postCache = async <T = any>(url: string, body?: any, options?: {\r\n cacheType?: 'default' | 'session' | 'local';\r\n cacheHours?: number;\r\n headers?: HttpHeaders;\r\n }): Promise<T> => {\r\n const headers = options?.headers || this.tokenService.customHeaders;\r\n const { get, set, has } = this.cacheService.create({\r\n url,\r\n headers,\r\n body\r\n }, {\r\n type: options?.cacheType,\r\n hours: options?.cacheHours\r\n });\r\n if (!has()) {\r\n const result = await this.post(url, body, options?.headers);\r\n set(result);\r\n return result;\r\n }\r\n return get();\r\n }\r\n\r\n put<T = any>(url: string, body?: any, headers?: HttpHeaders): Promise<T> {\r\n headers = headers || this.tokenService.customHeaders;\r\n return new Promise<any>((resolve, reject) => {\r\n this.httpClient.put(encodeURI(url), body, {\r\n observe: 'response',\r\n headers\r\n }).pipe(timeout(this.#timeout)).toPromise().then(result => {\r\n if (result.ok) {\r\n resolve(result.body);\r\n } else {\r\n reject(result.body);\r\n }\r\n }).catch((httpErrorResponse: HttpErrorResponse) => {\r\n reject(httpErrorResponse);\r\n });\r\n });\r\n }\r\n\r\n #defineParams = (request: any) => {\r\n const rq = [];\r\n for (const [key, value] of Object.entries(request)) {\r\n if (value || value === 0) {\r\n rq.push(\r\n `${encodeURIComponent(key as string)}=${encodeURIComponent(\r\n value as string\r\n )}`\r\n );\r\n }\r\n }\r\n return `?${rq?.join('&')}`;\r\n }\r\n\r\n getWithParams = <T = any>(url: string, params: any, options?: {\r\n headers?: HttpHeaders,\r\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\r\n }): Promise<T> => {\r\n return this.get(`${url}${this.#defineParams(params)}`, options?.headers, { ...options, encodeURI: false });\r\n }\r\n\r\n getCacheWithParams = <T = any>(url: string, params: any, headers?: HttpHeaders, options?: {\r\n cacheType?: 'default' | 'session' | 'local';\r\n cacheHours?: number;\r\n headers?: HttpHeaders;\r\n }): Promise<T> => {\r\n return this.getCache(`${url}${this.#defineParams(params)}`, { ...options, encodeURI: false });\r\n }\r\n\r\n get = <T = any>(url: string, headers?: HttpHeaders, options?: {\r\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\r\n encodeURI?: boolean\r\n }): Promise<T> => {\r\n headers = headers || this.tokenService.customHeaders;\r\n const encodedUrl = options?.encodeURI === false ? url : encodeURI(url);\r\n // const hashKey = hash({\r\n // encodedUrl,\r\n // headers\r\n // });\r\n const hashKey = hash({\r\n encodedUrl,\r\n headers\r\n });\r\n if (!this.#cache[hashKey] || Date.addMiliseconds(this.#cache[hashKey].createdDate, this.#cacheDuration) < new Date()) {\r\n this.#cache[hashKey] = {\r\n createdDate: new Date(),\r\n subject: new Subject()\r\n };\r\n if (options?.responseType && options.responseType !== 'json') {\r\n this.httpClient.get(encodedUrl, { observe: 'body', headers, responseType: options?.responseType as any })\r\n .pipe(timeout(this.#timeout)).subscribe((res) => {\r\n this.#cache[hashKey].response = {\r\n status: 'success',\r\n result: res\r\n };\r\n this.#cache[hashKey].subject.next(res);\r\n }, err => {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: err\r\n };\r\n this.#cache[hashKey].subject.error(err);\r\n });\r\n } else {\r\n this.httpClient.get(encodedUrl, { observe: 'response', headers })\r\n .pipe(timeout(this.#timeout)).subscribe((res) => {\r\n if (res.ok) {\r\n this.#cache[hashKey].response = {\r\n status: 'success',\r\n result: res.body\r\n };\r\n this.#cache[hashKey].subject.next(res.body);\r\n } else {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: res.body\r\n };\r\n this.#cache[hashKey].subject.error(res.body);\r\n }\r\n }, err => {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: err\r\n };\r\n this.#cache[hashKey].subject.error(err);\r\n });\r\n }\r\n }\r\n if (this.#cache[hashKey].response?.status) {\r\n if (this.#cache[hashKey].response?.status === 'success') {\r\n return this.#cache[hashKey].response.result;\r\n }\r\n throw this.#cache[hashKey].response.result;\r\n }\r\n return this.#cache[hashKey].subject.pipe(take(1)).toPromise();\r\n }\r\n\r\n getCache = async <T = any>(url: string, options?: {\r\n cacheType?: 'default' | 'session' | 'local';\r\n cacheHours?: number;\r\n headers?: HttpHeaders;\r\n encodeURI?: boolean\r\n }): Promise<T> => {\r\n const headers = options?.headers || this.tokenService.customHeaders;\r\n const encodedUrl = options?.encodeURI === false ? url : encodeURI(url);\r\n const { get, set, has } = this.cacheService.create({\r\n encodedUrl,\r\n headers\r\n }, {\r\n type: options?.cacheType,\r\n hours: options?.cacheHours\r\n });\r\n if (!has()) {\r\n const result = await this.get(encodedUrl, options?.headers);\r\n set(result);\r\n return result;\r\n }\r\n return get();\r\n }\r\n\r\n delete<T = any>(url: string, headers?: HttpHeaders): Promise<T> {\r\n headers = headers || this.tokenService.customHeaders;\r\n return new Promise<any>((resolve, reject) => {\r\n this.httpClient.delete(encodeURI(url), { observe: 'response', headers })\r\n .pipe(timeout(this.#timeout))\r\n .toPromise().then(result => {\r\n if (result.ok) {\r\n resolve(result.body);\r\n } else {\r\n reject(result.body);\r\n }\r\n }).catch((httpErrorResponse: HttpErrorResponse) => {\r\n reject(httpErrorResponse);\r\n });\r\n });\r\n }\r\n\r\n uploadSingle = (url: string, option?: {\r\n extensions?: string[],\r\n maxSizeInMb?: number,\r\n validator?: (fileName: string) => string\r\n }): Promise<any> => {\r\n return new Promise((resolve, reject) => {\r\n if ($(`#${this.uploadId}`).length) {\r\n $('body').children(`#${this.uploadId}`).remove();\r\n }\r\n $('body').append(`<input id='${this.uploadId}' style='display: none' type='file' />`);\r\n $(`#${this.uploadId}`).on('change', (evt: any) => {\r\n try {\r\n const target: DataTransfer = evt.target;\r\n const fileToUpload = target.files.item(0);\r\n this.upload(url, fileToUpload, option).then(resolve).catch(reject);\r\n } catch (error) {\r\n reject(error);\r\n }\r\n });\r\n $(`#${this.uploadId}`).trigger('click');\r\n });\r\n }\r\n\r\n upload = async (url: string, file: File, option?: {\r\n extensions?: string[],\r\n maxSizeInMb?: number,\r\n validator?: (fileName: string) => string\r\n }) => {\r\n const lastDot = file.name.lastIndexOf('.');\r\n if (lastDot === -1) {\r\n const message = this.translate(`Invalid file extension`);\r\n throw new Error(message);\r\n }\r\n const extension = file.name.substring(lastDot + 1);\r\n if (option) {\r\n if (option.extensions?.length && !option.extensions.some(e => e.toUpperCase() === extension.toUpperCase())) {\r\n const message = `[${file.name}] ${this.translate('Uploaded file is not match extension')} ${option.extensions.join(', ')}`;\r\n throw new Error(message);\r\n }\r\n if (option.maxSizeInMb > 0 && option.maxSizeInMb * 1024 * 1024 < file.size) {\r\n const message = `[${file.name}] ${this.translate('Max file size')} ${option.maxSizeInMb} Mbs`;\r\n throw new Error(message);\r\n }\r\n if (option.validator && option.validator(file.name)) {\r\n const message = option.validator(file.name);\r\n throw new Error(message);\r\n }\r\n }\r\n const formData: FormData = new FormData();\r\n formData.append('file', file, file.name);\r\n return await this.post(url, formData);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { SdTokenService } from './token.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdHttpService {\r\n constructor(\r\n private httpClient: HttpClient,\r\n private tokenService: SdTokenService) {\r\n }\r\n\r\n get =<T = any>(url: string, option?: ObservableOption): Observable<T> => {\r\n option = {\r\n ...option,\r\n headers: option.headers || this.tokenService.customHeaders\r\n }\r\n return this.httpClient.get<T>(url, option);\r\n }\r\n\r\n post = <T = any>(url: string, body?: any, option?: ObservableOption): Observable<T> => {\r\n option = {\r\n ...option,\r\n headers: option.headers || this.tokenService.customHeaders\r\n }\r\n return this.httpClient.post<T>(url, body, option);\r\n }\r\n\r\n put = <T = any>(url: string, body?: any, option?: ObservableOption): Observable<T> => {\r\n option = {\r\n ...option,\r\n headers: option.headers || this.tokenService.customHeaders\r\n }\r\n return this.httpClient.put<T>(url, body, option);\r\n }\r\n\r\n delete = <T = any>(url: string, option?: ObservableOption): Observable<T> => {\r\n option = {\r\n ...option,\r\n headers: option.headers || this.tokenService.customHeaders\r\n }\r\n return this.httpClient.delete<T>(url, option);\r\n }\r\n\r\n request = <T = any>(method: string, url: string, option?: ObservableOption): Observable<T> => {\r\n option = {\r\n ...option,\r\n headers: option.headers || this.tokenService.customHeaders\r\n }\r\n return this.httpClient.request<T>(method, url, option);\r\n }\r\n}\r\n\r\ninterface ObservableOption {\r\n body?: any;\r\n headers?: HttpHeaders | {\r\n [header: string]: string | string[];\r\n };\r\n observe?: 'body';\r\n params?: HttpParams | {\r\n [param: string]: string | string[];\r\n };\r\n reportProgress?: boolean;\r\n responseType?: 'json';\r\n withCredentials?: boolean;\r\n}","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/api.module';\r\nexport * from './lib/token.service';\r\nexport * from './lib/api.model';\r\nexport * from './lib/api.service';\r\nexport * from './lib/http.service';\r\nexport * from './lib/http.interceptor';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":"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"}
1
+ {"version":3,"file":"sd-angular-core-api.js","sources":["../../../../projects/sd-core/api/src/lib/api.model.ts","../../../../projects/sd-core/api/src/lib/token.service.ts","../../../../projects/sd-core/api/src/lib/http.interceptor.ts","../../../../projects/sd-core/api/src/lib/api.module.ts","../../../../projects/sd-core/api/src/lib/api.service.ts","../../../../projects/sd-core/api/src/lib/http.service.ts","../../../../projects/sd-core/api/src/public-api.ts","../../../../projects/sd-core/api/sd-angular-core-api.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\nimport { HttpErrorResponse, HttpHeaders, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport hash from 'object-hash';\r\n\r\nexport interface IApiConfiguration {\r\n host?: string;\r\n tokenHeader?: string;\r\n customHeaders?: () => HttpHeaders;\r\n beforeRemote?: (request: HttpRequest<any>) => void | Promise<void>;\r\n afterRemote?: (response: HttpResponse<any> | HttpErrorResponse) => void | Promise<void>;\r\n translate?: (value: string) => string;\r\n}\r\n\r\nexport const API_CONFIG = new InjectionToken<IApiConfiguration>('api.configuration');\r\n\r\nexport const TOKEN = hash({\r\n origin: location.origin,\r\n key: 'ed4a2ffc-af43-41fb-9ac9-970f43d99571'\r\n});","import { Injectable, Inject, Optional } from '@angular/core';\r\nimport { IApiConfiguration, API_CONFIG, TOKEN } from './api.model';\r\nimport { SdCacheService } from '@sd-angular/core/cache';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdTokenService {\r\n\r\n get token() {\r\n const { get } = this.cacheService.create<string>(TOKEN, {\r\n type: 'local',\r\n hours: 240\r\n });\r\n return get();\r\n }\r\n\r\n set = (token: string) => {\r\n const { set } = this.cacheService.create<string>(TOKEN, {\r\n type: 'local',\r\n hours: 240\r\n });\r\n set(token);\r\n }\r\n\r\n clear = () => {\r\n const { remove } = this.cacheService.create<string>(TOKEN, {\r\n type: 'local',\r\n hours: 240\r\n });\r\n remove();\r\n }\r\n\r\n get customHeaders() {\r\n return this.configuration?.customHeaders?.() || null;\r\n }\r\n\r\n constructor(\r\n @Inject(API_CONFIG) @Optional() private configuration: IApiConfiguration,\r\n private cacheService: SdCacheService) {\r\n }\r\n}\r\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { from, Observable, of, throwError } from 'rxjs';\r\nimport { catchError, map, switchMap } from 'rxjs/operators';\r\nimport { API_CONFIG, IApiConfiguration } from './api.model';\r\nimport { SdTokenService } from './token.service';\r\n\r\n@Injectable()\r\nexport class SdHttpInterceptor implements HttpInterceptor {\r\n constructor(\r\n @Inject(API_CONFIG) @Optional() private configuration: IApiConfiguration,\r\n private tokenService: SdTokenService\r\n ) { }\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n if (this.configuration?.tokenHeader && this.tokenService.token) {\r\n request = request.clone({ headers: request.headers.set(this.configuration.tokenHeader, this.tokenService.token) });\r\n }\r\n\r\n if (!request.url.startsWith('http')) {\r\n request = request.clone({\r\n url: (this.configuration?.host || location.host) + request.url\r\n });\r\n }\r\n if (request.body instanceof FormData) {\r\n request = request.clone({\r\n headers: request.headers.delete('Content-Type')\r\n });\r\n }\r\n const beforeRemote = this.configuration?.beforeRemote?.(request);\r\n if (beforeRemote instanceof Promise) {\r\n return from(beforeRemote).pipe(\r\n switchMap(() => next.handle(request)),\r\n map((event: HttpEvent<any>) => {\r\n if (event instanceof HttpResponse) {\r\n this.configuration?.afterRemote?.(event);\r\n }\r\n return event;\r\n }),\r\n catchError((error: HttpErrorResponse) => {\r\n this.configuration?.afterRemote?.(error);\r\n return throwError(error);\r\n }));\r\n }\r\n return next.handle(request).pipe(\r\n map((event: HttpEvent<any>) => {\r\n if (event instanceof HttpResponse) {\r\n this.configuration?.afterRemote?.(event);\r\n }\r\n return event;\r\n }),\r\n catchError((error: HttpErrorResponse) => {\r\n this.configuration?.afterRemote?.(error);\r\n return throwError(error);\r\n }));\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { SdHttpInterceptor } from './http.interceptor';\r\n\r\n@NgModule({\r\n imports: [\r\n HttpClientModule,\r\n ],\r\n exports: [\r\n HttpClientModule\r\n ],\r\n providers: [\r\n { provide: HTTP_INTERCEPTORS, useClass: SdHttpInterceptor, multi: true }\r\n ],\r\n})\r\nexport class SdApiModule { }\r\n","import { Injectable, Inject, Optional } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\r\nimport { take, timeout } from 'rxjs/operators';\r\nimport $ from 'jquery';\r\nimport { IApiConfiguration, API_CONFIG } from './api.model';\r\nimport { SdCacheService } from '@sd-angular/core/cache';\r\nimport { SdTokenService } from './token.service';\r\nimport { Subject } from 'rxjs';\r\nimport hash from 'object-hash';\r\nimport * as uuid from 'uuid';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdApiService {\r\n private uploadId = 'U118fefb1-3085-4641-8cb8-f7fe5c28f509';\r\n\r\n #timeout = 120000; // 120s\r\n\r\n #cacheDuration = 2000; // 2s\r\n #cache: {\r\n [key: string]: {\r\n createdDate: Date;\r\n subject: Subject<any>;\r\n response?: {\r\n status?: 'success' | 'error';\r\n result: any,\r\n }\r\n }\r\n } = {};\r\n\r\n private translate = (value: string): string => {\r\n return this.configuration?.translate(value) || value;\r\n }\r\n\r\n constructor(\r\n private httpClient: HttpClient,\r\n @Inject(API_CONFIG) @Optional() private configuration: IApiConfiguration,\r\n private cacheService: SdCacheService,\r\n private tokenService: SdTokenService) {\r\n }\r\n\r\n post = async <T = any>(url: string, body?: any, headers?: HttpHeaders, options?: {\r\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\r\n }): Promise<T> => {\r\n headers = headers || this.tokenService.customHeaders;\r\n let hashKey = uuid.v4();\r\n if (!(body instanceof FormData)) {\r\n hashKey = hash({\r\n url,\r\n headers,\r\n body\r\n });\r\n }\r\n if (!this.#cache[hashKey] || Date.addMiliseconds(this.#cache[hashKey].createdDate, this.#cacheDuration) < new Date()) {\r\n this.#cache[hashKey] = {\r\n createdDate: new Date(),\r\n subject: new Subject(),\r\n };\r\n if (options?.responseType && options.responseType !== 'json') {\r\n this.httpClient.post(encodeURI(url), body, {\r\n observe: 'body',\r\n headers,\r\n responseType: options?.responseType as any\r\n }).pipe(timeout(this.#timeout)).subscribe((res) => {\r\n this.#cache[hashKey].response = {\r\n status: 'success',\r\n result: res\r\n };\r\n this.#cache[hashKey].subject.next(res);\r\n }, err => {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: err\r\n };\r\n this.#cache[hashKey].subject.error(err);\r\n });\r\n } else {\r\n this.httpClient.post(encodeURI(url), body, {\r\n observe: 'response',\r\n headers\r\n }).pipe(timeout(this.#timeout)).subscribe((res) => {\r\n if (res.ok) {\r\n this.#cache[hashKey].response = {\r\n status: 'success',\r\n result: res.body\r\n };\r\n this.#cache[hashKey].subject.next(res.body);\r\n } else {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: res.body\r\n };\r\n this.#cache[hashKey].subject.error(res.body);\r\n }\r\n }, err => {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: err\r\n };\r\n this.#cache[hashKey].subject.error(err);\r\n });\r\n }\r\n }\r\n if (this.#cache[hashKey].response?.status) {\r\n if (this.#cache[hashKey].response?.status === 'success') {\r\n return this.#cache[hashKey].response.result;\r\n }\r\n throw this.#cache[hashKey].response.result;\r\n }\r\n return this.#cache[hashKey].subject.pipe(take(1)).toPromise();\r\n }\r\n\r\n postCache = async <T = any>(url: string, body?: any, options?: {\r\n cacheType?: 'default' | 'session' | 'local';\r\n cacheHours?: number;\r\n headers?: HttpHeaders;\r\n }): Promise<T> => {\r\n const headers = options?.headers || this.tokenService.customHeaders;\r\n const { get, set, has } = this.cacheService.create({\r\n url,\r\n headers,\r\n body\r\n }, {\r\n type: options?.cacheType,\r\n hours: options?.cacheHours\r\n });\r\n if (!has()) {\r\n const result = await this.post(url, body, options?.headers);\r\n set(result);\r\n return result;\r\n }\r\n return get();\r\n }\r\n\r\n put<T = any>(url: string, body?: any, headers?: HttpHeaders): Promise<T> {\r\n headers = headers || this.tokenService.customHeaders;\r\n return new Promise<any>((resolve, reject) => {\r\n this.httpClient.put(encodeURI(url), body, {\r\n observe: 'response',\r\n headers\r\n }).pipe(timeout(this.#timeout)).toPromise().then(result => {\r\n if (result.ok) {\r\n resolve(result.body);\r\n } else {\r\n reject(result.body);\r\n }\r\n }).catch((httpErrorResponse: HttpErrorResponse) => {\r\n reject(httpErrorResponse);\r\n });\r\n });\r\n }\r\n\r\n #defineParams = (request: any) => {\r\n const rq = [];\r\n for (const [key, value] of Object.entries(request)) {\r\n if (value || value === 0) {\r\n rq.push(\r\n `${encodeURIComponent(key as string)}=${encodeURIComponent(\r\n value as string\r\n )}`\r\n );\r\n }\r\n }\r\n return `?${rq?.join('&')}`;\r\n }\r\n\r\n getWithParams = <T = any>(url: string, params: any, options?: {\r\n headers?: HttpHeaders,\r\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\r\n }): Promise<T> => {\r\n return this.get(`${url}${this.#defineParams(params)}`, options?.headers, { ...options, encodeURI: false });\r\n }\r\n\r\n getCacheWithParams = <T = any>(url: string, params: any, headers?: HttpHeaders, options?: {\r\n reload?: boolean,\r\n cacheType?: 'default' | 'session' | 'local';\r\n cacheHours?: number;\r\n headers?: HttpHeaders;\r\n }): Promise<T> => {\r\n return this.getCache(`${url}${this.#defineParams(params)}`, { ...options, headers, encodeURI: false });\r\n }\r\n\r\n get = <T = any>(url: string, headers?: HttpHeaders, options?: {\r\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\r\n encodeURI?: boolean\r\n }): Promise<T> => {\r\n headers = headers || this.tokenService.customHeaders;\r\n const encodedUrl = options?.encodeURI === false ? url : encodeURI(url);\r\n // const hashKey = hash({\r\n // encodedUrl,\r\n // headers\r\n // });\r\n const hashKey = hash({\r\n encodedUrl,\r\n headers\r\n });\r\n if (!this.#cache[hashKey] || Date.addMiliseconds(this.#cache[hashKey].createdDate, this.#cacheDuration) < new Date()) {\r\n this.#cache[hashKey] = {\r\n createdDate: new Date(),\r\n subject: new Subject()\r\n };\r\n if (options?.responseType && options.responseType !== 'json') {\r\n this.httpClient.get(encodedUrl, { observe: 'body', headers, responseType: options?.responseType as any })\r\n .pipe(timeout(this.#timeout)).subscribe((res) => {\r\n this.#cache[hashKey].response = {\r\n status: 'success',\r\n result: res\r\n };\r\n this.#cache[hashKey].subject.next(res);\r\n }, err => {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: err\r\n };\r\n this.#cache[hashKey].subject.error(err);\r\n });\r\n } else {\r\n this.httpClient.get(encodedUrl, { observe: 'response', headers })\r\n .pipe(timeout(this.#timeout)).subscribe((res) => {\r\n if (res.ok) {\r\n this.#cache[hashKey].response = {\r\n status: 'success',\r\n result: res.body\r\n };\r\n this.#cache[hashKey].subject.next(res.body);\r\n } else {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: res.body\r\n };\r\n this.#cache[hashKey].subject.error(res.body);\r\n }\r\n }, err => {\r\n this.#cache[hashKey].response = {\r\n status: 'error',\r\n result: err\r\n };\r\n this.#cache[hashKey].subject.error(err);\r\n });\r\n }\r\n }\r\n if (this.#cache[hashKey].response?.status) {\r\n if (this.#cache[hashKey].response?.status === 'success') {\r\n return this.#cache[hashKey].response.result;\r\n }\r\n throw this.#cache[hashKey].response.result;\r\n }\r\n return this.#cache[hashKey].subject.pipe(take(1)).toPromise();\r\n }\r\n\r\n getCache = async <T = any>(url: string, options?: {\r\n reload?: boolean,\r\n cacheType?: 'default' | 'session' | 'local';\r\n cacheHours?: number;\r\n headers?: HttpHeaders;\r\n encodeURI?: boolean\r\n }): Promise<T> => {\r\n const headers = options?.headers || this.tokenService.customHeaders;\r\n const encodedUrl = options?.encodeURI === false ? url : encodeURI(url);\r\n const { get, set, has } = this.cacheService.create({\r\n encodedUrl,\r\n headers\r\n }, {\r\n type: options?.cacheType,\r\n hours: options?.cacheHours\r\n });\r\n if (!has() || options?.reload) {\r\n const result = await this.get(encodedUrl, options?.headers, { encodeURI: false });\r\n set(result);\r\n return result;\r\n }\r\n return get();\r\n }\r\n\r\n delete<T = any>(url: string, headers?: HttpHeaders): Promise<T> {\r\n headers = headers || this.tokenService.customHeaders;\r\n return new Promise<any>((resolve, reject) => {\r\n this.httpClient.delete(encodeURI(url), { observe: 'response', headers })\r\n .pipe(timeout(this.#timeout))\r\n .toPromise().then(result => {\r\n if (result.ok) {\r\n resolve(result.body);\r\n } else {\r\n reject(result.body);\r\n }\r\n }).catch((httpErrorResponse: HttpErrorResponse) => {\r\n reject(httpErrorResponse);\r\n });\r\n });\r\n }\r\n\r\n uploadSingle = (url: string, option?: {\r\n extensions?: string[],\r\n maxSizeInMb?: number,\r\n validator?: (fileName: string) => string\r\n }): Promise<any> => {\r\n return new Promise((resolve, reject) => {\r\n if ($(`#${this.uploadId}`).length) {\r\n $('body').children(`#${this.uploadId}`).remove();\r\n }\r\n $('body').append(`<input id='${this.uploadId}' style='display: none' type='file' />`);\r\n $(`#${this.uploadId}`).on('change', (evt: any) => {\r\n try {\r\n const target: DataTransfer = evt.target;\r\n const fileToUpload = target.files.item(0);\r\n this.upload(url, fileToUpload, option).then(resolve).catch(reject);\r\n } catch (error) {\r\n reject(error);\r\n }\r\n });\r\n $(`#${this.uploadId}`).trigger('click');\r\n });\r\n }\r\n\r\n upload = async (url: string, file: File, option?: {\r\n extensions?: string[],\r\n maxSizeInMb?: number,\r\n validator?: (fileName: string) => string\r\n }) => {\r\n const lastDot = file.name.lastIndexOf('.');\r\n if (lastDot === -1) {\r\n const message = this.translate(`Invalid file extension`);\r\n throw new Error(message);\r\n }\r\n const extension = file.name.substring(lastDot + 1);\r\n if (option) {\r\n if (option.extensions?.length && !option.extensions.some(e => e.toUpperCase() === extension.toUpperCase())) {\r\n const message = `[${file.name}] ${this.translate('Uploaded file is not match extension')} ${option.extensions.join(', ')}`;\r\n throw new Error(message);\r\n }\r\n if (option.maxSizeInMb > 0 && option.maxSizeInMb * 1024 * 1024 < file.size) {\r\n const message = `[${file.name}] ${this.translate('Max file size')} ${option.maxSizeInMb} Mbs`;\r\n throw new Error(message);\r\n }\r\n if (option.validator && option.validator(file.name)) {\r\n const message = option.validator(file.name);\r\n throw new Error(message);\r\n }\r\n }\r\n const formData: FormData = new FormData();\r\n formData.append('file', file, file.name);\r\n return await this.post(url, formData);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { SdTokenService } from './token.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdHttpService {\r\n constructor(\r\n private httpClient: HttpClient,\r\n private tokenService: SdTokenService) {\r\n }\r\n\r\n get =<T = any>(url: string, option?: ObservableOption): Observable<T> => {\r\n option = {\r\n ...option,\r\n headers: option.headers || this.tokenService.customHeaders\r\n }\r\n return this.httpClient.get<T>(url, option);\r\n }\r\n\r\n post = <T = any>(url: string, body?: any, option?: ObservableOption): Observable<T> => {\r\n option = {\r\n ...option,\r\n headers: option.headers || this.tokenService.customHeaders\r\n }\r\n return this.httpClient.post<T>(url, body, option);\r\n }\r\n\r\n put = <T = any>(url: string, body?: any, option?: ObservableOption): Observable<T> => {\r\n option = {\r\n ...option,\r\n headers: option.headers || this.tokenService.customHeaders\r\n }\r\n return this.httpClient.put<T>(url, body, option);\r\n }\r\n\r\n delete = <T = any>(url: string, option?: ObservableOption): Observable<T> => {\r\n option = {\r\n ...option,\r\n headers: option.headers || this.tokenService.customHeaders\r\n }\r\n return this.httpClient.delete<T>(url, option);\r\n }\r\n\r\n request = <T = any>(method: string, url: string, option?: ObservableOption): Observable<T> => {\r\n option = {\r\n ...option,\r\n headers: option.headers || this.tokenService.customHeaders\r\n }\r\n return this.httpClient.request<T>(method, url, option);\r\n }\r\n}\r\n\r\ninterface ObservableOption {\r\n body?: any;\r\n headers?: HttpHeaders | {\r\n [header: string]: string | string[];\r\n };\r\n observe?: 'body';\r\n params?: HttpParams | {\r\n [param: string]: string | string[];\r\n };\r\n reportProgress?: boolean;\r\n responseType?: 'json';\r\n withCredentials?: boolean;\r\n}","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/api.module';\r\nexport * from './lib/token.service';\r\nexport * from './lib/api.model';\r\nexport * from './lib/api.service';\r\nexport * from './lib/http.service';\r\nexport * from './lib/http.interceptor';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":"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"}
@@ -112,6 +112,24 @@ class SdChip {
112
112
  this.inputControl.setValue('');
113
113
  }
114
114
  };
115
+ // andn1 viết để xử lý tạm us B2B1D-18289 ở S69
116
+ this.onAdd2 = (event) => {
117
+ var _a, _b;
118
+ const value = ((_a = event.value) !== null && _a !== void 0 ? _a : '').toString().toLowerCase().trim();
119
+ if (value) {
120
+ const item = __classPrivateFieldGet(this, _items).find(e => e[this.valueField]
121
+ && e[this.valueField].toString().toLowerCase().trim() === value);
122
+ if (item) {
123
+ const values = (_b = this.formControl.value) !== null && _b !== void 0 ? _b : [];
124
+ if (!values.includes(item[this.valueField])) {
125
+ values.push(item[this.valueField]);
126
+ }
127
+ this.formControl.setValue(values);
128
+ }
129
+ }
130
+ this.inputControl.setValue('');
131
+ this.ref.detectChanges();
132
+ };
115
133
  this.onRemove = (item) => {
116
134
  var _a;
117
135
  const values = (_a = this.formControl.value) !== null && _a !== void 0 ? _a : [];
@@ -1 +1 @@
1
- {"version":3,"file":"sd-angular-core-chip.js","sources":["../../../../projects/sd-core/chip/src/lib/directives/sd-chip-display-def.directive.ts","../../../../projects/sd-core/chip/src/lib/chip.component.ts","../../../../projects/sd-core/chip/src/lib/pipes/removable-chip.pipe.ts","../../../../projects/sd-core/chip/src/lib/chip.module.ts","../../../../projects/sd-core/chip/src/public-api.ts","../../../../projects/sd-core/chip/sd-angular-core-chip.ts"],"sourcesContent":["import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdChipDisplayDef]'\r\n})\r\nexport class SdChipDisplayDef {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n Output,\r\n EventEmitter,\r\n OnInit, OnDestroy,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n ElementRef,\r\n ContentChild\r\n} from '@angular/core';\r\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\r\nimport { map, startWith, switchMap } from 'rxjs/operators';\r\n\r\nimport * as uuid from 'uuid';\r\nimport { NgForm, NgModel, FormControl, FormGroup, ValidatorFn, AsyncValidatorFn, Validators, FormGroupDirective } from '@angular/forms';\r\nimport { Observable, Subscription, Subject } from 'rxjs';\r\nimport { SdUtilityService } from '@sd-angular/core/utility';\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport { MatChipInputEvent, MatChipList } from '@angular/material/chips';\r\nimport { MatAutocomplete, MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete';\r\nimport { SdChipUpdate } from './chip.model';\r\nimport { ErrorStateMatcher } from '@angular/material/core';\r\nimport { SdChipDisplayDef } from './directives/sd-chip-display-def.directive';\r\nimport { SdViewDefDirective } from '@sd-angular/core/common';\r\n\r\nclass SdChipErrotStateMatcher implements ErrorStateMatcher {\r\n constructor(private formControl: FormControl) { }\r\n isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\r\n const isSubmitted = form && form.submitted;\r\n return !!(this.formControl?.invalid && (this.formControl?.dirty || this.formControl?.touched || isSubmitted));\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'sd-chip',\r\n templateUrl: './chip.component.html',\r\n styleUrls: ['./chip.component.scss']\r\n})\r\nexport class SdChip implements OnInit, OnDestroy, AfterViewInit {\r\n #name = uuid.v4();\r\n @Input() set name(val: string) {\r\n if (val) {\r\n this.#name = val;\r\n }\r\n }\r\n separatorKeysCodes: number[] = [ENTER, COMMA];\r\n selectable = true;\r\n @Input() size: 'sm' | 'lg';\r\n #form: FormGroup;\r\n @Input() set form(val: NgForm | FormGroup) {\r\n if (val) {\r\n if (val instanceof NgForm) {\r\n this.#form = val.form;\r\n } else {\r\n this.#form = val;\r\n }\r\n }\r\n }\r\n @Input() label: string;\r\n @Input() valueField: string;\r\n @Input() displayField: string;\r\n @Input() placeholder: string;\r\n removable: boolean | ((item: any) => boolean) = true;\r\n @Input('removable') set _removable(val: '' | boolean | ((item: any) => boolean)) {\r\n this.removable = (val === '') || val;\r\n }\r\n #itemChanges = new Subject<any[]>();\r\n #items: any[] = [];\r\n @Input() set items(items: undefined | any[]) {\r\n if (!items) {\r\n this.#items = [];\r\n } else if (Array.isArray(items)) {\r\n this.#items = items.filter(e => (e ?? '').toString().trim() !== '');\r\n } else {\r\n this.#items = items;\r\n }\r\n this.inputControl.updateValueAndValidity();\r\n this.#itemChanges.next(this.items);\r\n }\r\n @Input() limit = 50;\r\n selectedItems: any[] = [];\r\n filteredItems: Observable<any[]>;\r\n\r\n ipt: any;\r\n\r\n // model\r\n @Input() set model(values: undefined | (string | number)[]) {\r\n if (!Array.isArray(values)) {\r\n values = [];\r\n }\r\n this.formControl.setValue(values, {\r\n emitEvent: false\r\n });\r\n }\r\n // Validator\r\n isRequired = false;\r\n @Input() set required(val: boolean | '') {\r\n this.isRequired = (val === '') || val;\r\n this.#updateValidator();\r\n }\r\n\r\n min: number;\r\n @Input('min') set pMin(val: number | string) {\r\n this.min = +val || 0;\r\n this.#updateValidator();\r\n }\r\n max: number;\r\n @Input('max') set pMax(val: number | string) {\r\n this.max = +val || 0;\r\n this.#updateValidator();\r\n }\r\n @Output() modelChange = new EventEmitter();\r\n\r\n // Optional\r\n @Input() set disabled(val: boolean | '') {\r\n val = (val === '') || val;\r\n if (val) {\r\n this.formControl.disable();\r\n this.inputControl.disable();\r\n } else {\r\n this.formControl.enable();\r\n this.inputControl.enable();\r\n }\r\n }\r\n\r\n @Output() sdChange = new EventEmitter<any[]>();\r\n @Output() sdUpdate = new EventEmitter<SdChipUpdate>();\r\n @Output() chipSelected = new EventEmitter<any>();\r\n\r\n @ViewChild('input') input: ElementRef<HTMLInputElement>;\r\n @ViewChild('auto') matAutocomplete: MatAutocomplete;\r\n @ViewChild('chipList', { static: true }) chipList: MatChipList;\r\n @ViewChild(MatAutocompleteTrigger, { read: MatAutocompleteTrigger }) autocompleteTrigger: MatAutocompleteTrigger;\r\n @ContentChild(SdViewDefDirective) sdView: SdViewDefDirective;\r\n @ContentChild(SdChipDisplayDef) sdChipDisplay: SdChipDisplayDef;\r\n isFocused = false;\r\n inputControl = new FormControl();\r\n formControl = new FormControl();\r\n matcher = new SdChipErrotStateMatcher(this.formControl);\r\n #subscription = new Subscription();\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private utilityService: SdUtilityService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.filteredItems = this.inputControl.valueChanges.pipe(\r\n startWith<string | { [key: string]: string }>(''),\r\n map(item => typeof item === 'string' ? item : (item?.[this.displayField] ?? '')),\r\n map(name => this.filter(name))\r\n );\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.formControl.valueChanges.subscribe(() => {\r\n const values: (string | number)[] = this.formControl.value || [];\r\n this.selectedItems = this.#items.filter(item => values.findIndex(value => value === item?.[this.valueField]) !== -1);\r\n this.modelChange.emit(values);\r\n this.sdChange.emit(values);\r\n setTimeout(() => {\r\n this.#form?.markAsDirty();\r\n }, 0);\r\n }));\r\n this.#subscription.add(this.#itemChanges.pipe(startWith(this.#items)).subscribe(() => {\r\n const values: (string | number)[] = this.formControl.value || [];\r\n this.selectedItems = [];\r\n for (const value of values) {\r\n const item = this.#items.find(e => e?.[this.valueField] === value) || {};\r\n this.selectedItems.push({\r\n ...item,\r\n [this.valueField]: value\r\n });\r\n }\r\n }));\r\n this.#form?.addControl(this.#name, this.formControl);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#form?.removeControl(this.#name);\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #updateValidator = () => {\r\n this.formControl.clearValidators();\r\n this.formControl.clearAsyncValidators();\r\n const validators: ValidatorFn[] = [];\r\n const asyncValidators: AsyncValidatorFn[] = [];\r\n if (this.isRequired) {\r\n validators.push(Validators.required);\r\n }\r\n if (this.min > 0) {\r\n validators.push(Validators.minLength(this.min));\r\n }\r\n if (this.max > 0) {\r\n validators.push(Validators.maxLength(this.max));\r\n }\r\n this.formControl.setValidators(validators);\r\n this.formControl.setAsyncValidators(asyncValidators);\r\n this.formControl.updateValueAndValidity();\r\n }\r\n\r\n filter = (value: string): { [key: string]: string }[] => {\r\n return this.#items\r\n .filter(item => {\r\n if (this.formControl.value?.some(val => val === item[this.valueField])) {\r\n return false;\r\n }\r\n return !value || this.utilityService.changeAliasLowerCase(item[this.displayField])\r\n .indexOf(this.utilityService.changeAliasLowerCase(value)) !== -1;\r\n }).filter((item, index) => index < this.limit);\r\n }\r\n\r\n onAdd = (event: MatChipInputEvent): void => {\r\n // Add item only when MatAutocomplete is not open\r\n // To make sure this does not conflict with OptionSelected Event\r\n if (!this.matAutocomplete.isOpen) {\r\n const value = (event.value ?? '').toString().toLowerCase().trim();\r\n if (value) {\r\n\r\n const item = this.#items.find(e => e[this.displayField]\r\n && e[this.displayField].toString().toLowerCase().trim() === value);\r\n\r\n if (item) {\r\n const values: (string | number)[] = this.formControl.value ?? [];\r\n values.push(item[this.valueField]);\r\n this.formControl.setValue(values);\r\n }\r\n }\r\n this.inputControl.setValue('');\r\n }\r\n }\r\n\r\n onRemove = (item: any): void => {\r\n const values: (string | number)[] = this.formControl.value ?? [];\r\n this.formControl.setValue(values.filter(value => item?.[this.valueField] !== value));\r\n this.inputControl.setValue('');\r\n }\r\n\r\n select = (item: any): void => {\r\n this.chipSelected.emit(item);\r\n }\r\n\r\n onSelect = (event: MatAutocompleteSelectedEvent) => {\r\n const value = (event.option.value?.[this.valueField] ?? '').toString().trim();\r\n if (value) {\r\n const item = this.#items.find(e => e[this.valueField]\r\n && e[this.valueField].toString().trim() === value);\r\n if (item) {\r\n const values: (string | number)[] = this.formControl.value ?? [];\r\n values.push(item[this.valueField]);\r\n this.formControl.setValue(values);\r\n this.input.nativeElement.value = '';\r\n this.inputControl.setValue('');\r\n setTimeout(() => {\r\n this.autocompleteTrigger?.openPanel();\r\n }, 0);\r\n }\r\n }\r\n }\r\n\r\n displayFn = (value: string | { [key: string]: string }): string | undefined => {\r\n if (typeof value === 'string') {\r\n if (!this.#items) {\r\n return undefined;\r\n }\r\n const selectedItem = this.#items.find(item => item[this.valueField] === value);\r\n if (selectedItem) {\r\n return selectedItem[this.displayField];\r\n }\r\n if (this.#items.some(item => item[this.displayField].toLowerCase().indexOf(value.toLowerCase()) !== -1)) {\r\n return value;\r\n } else {\r\n return undefined;\r\n }\r\n } else {\r\n return value ? value[this.displayField] : undefined;\r\n }\r\n }\r\n\r\n onFocus = () => {\r\n this.isFocused = true;\r\n this.inputControl.setValue('');\r\n // this.inputControl.updateValueAndValidity();\r\n }\r\n\r\n onBlur = () => {\r\n this.isFocused = false;\r\n this.inputControl.setValue('', {\r\n emitEvent: false\r\n });\r\n }\r\n\r\n onClick = () => {\r\n if (this.sdView?.templateRef) {\r\n if (!this.formControl.disabled && !this.isFocused) {\r\n this.focus();\r\n }\r\n }\r\n }\r\n\r\n focus = () => {\r\n this.isFocused = true;\r\n setTimeout(() => {\r\n this.autocompleteTrigger?.openPanel();\r\n this.input?.nativeElement?.focus();\r\n }, 100);\r\n }\r\n\r\n onClear = ($event?: any) => {\r\n $event?.stopPropagation();\r\n this.inputControl.setValue('');\r\n this.formControl.setValue([]);\r\n this.autocompleteTrigger?.openPanel();\r\n this.ref.detectChanges();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n@Pipe({\r\n name: 'sdRemovableChip'\r\n})\r\nexport class SdRemovableChipPipe implements PipeTransform {\r\n constructor() { }\r\n transform(item: any, removable: boolean | ((item: any) => boolean)): boolean {\r\n if(typeof(removable) === 'boolean') {\r\n return removable;\r\n }\r\n return removable(item);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { SdChip } from './chip.component';\r\nimport { SdChipDisplayDef } from './directives/sd-chip-display-def.directive';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { SdRemovableChipPipe } from './pipes/removable-chip.pipe';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatTooltipModule,\r\n MatFormFieldModule,\r\n MatAutocompleteModule,\r\n MatIconModule,\r\n MatProgressSpinnerModule,\r\n MatChipsModule,\r\n SdTranslateModule,\r\n SdCommonModule\r\n ],\r\n declarations: [\r\n SdChip,\r\n SdChipDisplayDef,\r\n SdRemovableChipPipe\r\n ],\r\n exports: [\r\n SdCommonModule,\r\n SdChip,\r\n SdChipDisplayDef,\r\n ]\r\n})\r\nexport class SdChipModule { }\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/chip.module';\r\nexport * from './lib/chip.component';\r\nexport * from './lib/chip.model';\r\nexport * from './lib/directives/sd-chip-display-def.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {SdRemovableChipPipe as ɵa} from './src/lib/pipes/removable-chip.pipe';"],"names":["uuid.v4"],"mappings":"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"}
1
+ {"version":3,"file":"sd-angular-core-chip.js","sources":["../../../../projects/sd-core/chip/src/lib/directives/sd-chip-display-def.directive.ts","../../../../projects/sd-core/chip/src/lib/chip.component.ts","../../../../projects/sd-core/chip/src/lib/pipes/removable-chip.pipe.ts","../../../../projects/sd-core/chip/src/lib/chip.module.ts","../../../../projects/sd-core/chip/src/public-api.ts","../../../../projects/sd-core/chip/sd-angular-core-chip.ts"],"sourcesContent":["import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdChipDisplayDef]'\r\n})\r\nexport class SdChipDisplayDef {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n Output,\r\n EventEmitter,\r\n OnInit, OnDestroy,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n ElementRef,\r\n ContentChild\r\n} from '@angular/core';\r\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\r\nimport { map, startWith, switchMap } from 'rxjs/operators';\r\n\r\nimport * as uuid from 'uuid';\r\nimport { NgForm, NgModel, FormControl, FormGroup, ValidatorFn, AsyncValidatorFn, Validators, FormGroupDirective } from '@angular/forms';\r\nimport { Observable, Subscription, Subject } from 'rxjs';\r\nimport { SdUtilityService } from '@sd-angular/core/utility';\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport { MatChipInputEvent, MatChipList } from '@angular/material/chips';\r\nimport { MatAutocomplete, MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete';\r\nimport { SdChipUpdate } from './chip.model';\r\nimport { ErrorStateMatcher } from '@angular/material/core';\r\nimport { SdChipDisplayDef } from './directives/sd-chip-display-def.directive';\r\nimport { SdViewDefDirective } from '@sd-angular/core/common';\r\n\r\nclass SdChipErrotStateMatcher implements ErrorStateMatcher {\r\n constructor(private formControl: FormControl) { }\r\n isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\r\n const isSubmitted = form && form.submitted;\r\n return !!(this.formControl?.invalid && (this.formControl?.dirty || this.formControl?.touched || isSubmitted));\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'sd-chip',\r\n templateUrl: './chip.component.html',\r\n styleUrls: ['./chip.component.scss']\r\n})\r\nexport class SdChip implements OnInit, OnDestroy, AfterViewInit {\r\n #name = uuid.v4();\r\n @Input() set name(val: string) {\r\n if (val) {\r\n this.#name = val;\r\n }\r\n }\r\n separatorKeysCodes: number[] = [ENTER, COMMA];\r\n selectable = true;\r\n @Input() size: 'sm' | 'lg';\r\n #form: FormGroup;\r\n @Input() set form(val: NgForm | FormGroup) {\r\n if (val) {\r\n if (val instanceof NgForm) {\r\n this.#form = val.form;\r\n } else {\r\n this.#form = val;\r\n }\r\n }\r\n }\r\n @Input() label: string;\r\n @Input() valueField: string;\r\n @Input() displayField: string;\r\n @Input() placeholder: string;\r\n removable: boolean | ((item: any) => boolean) = true;\r\n @Input('removable') set _removable(val: '' | boolean | ((item: any) => boolean)) {\r\n this.removable = (val === '') || val;\r\n }\r\n #itemChanges = new Subject<any[]>();\r\n #items: any[] = [];\r\n @Input() set items(items: undefined | any[]) {\r\n if (!items) {\r\n this.#items = [];\r\n } else if (Array.isArray(items)) {\r\n this.#items = items.filter(e => (e ?? '').toString().trim() !== '');\r\n } else {\r\n this.#items = items;\r\n }\r\n this.inputControl.updateValueAndValidity();\r\n this.#itemChanges.next(this.items);\r\n }\r\n @Input() limit = 50;\r\n selectedItems: any[] = [];\r\n filteredItems: Observable<any[]>;\r\n\r\n ipt: any;\r\n\r\n // model\r\n @Input() set model(values: undefined | (string | number)[]) {\r\n if (!Array.isArray(values)) {\r\n values = [];\r\n }\r\n this.formControl.setValue(values, {\r\n emitEvent: false\r\n });\r\n }\r\n // Validator\r\n isRequired = false;\r\n @Input() set required(val: boolean | '') {\r\n this.isRequired = (val === '') || val;\r\n this.#updateValidator();\r\n }\r\n\r\n min: number;\r\n @Input('min') set pMin(val: number | string) {\r\n this.min = +val || 0;\r\n this.#updateValidator();\r\n }\r\n max: number;\r\n @Input('max') set pMax(val: number | string) {\r\n this.max = +val || 0;\r\n this.#updateValidator();\r\n }\r\n @Output() modelChange = new EventEmitter();\r\n\r\n // Optional\r\n @Input() set disabled(val: boolean | '') {\r\n val = (val === '') || val;\r\n if (val) {\r\n this.formControl.disable();\r\n this.inputControl.disable();\r\n } else {\r\n this.formControl.enable();\r\n this.inputControl.enable();\r\n }\r\n }\r\n\r\n @Output() sdChange = new EventEmitter<any[]>();\r\n @Output() sdUpdate = new EventEmitter<SdChipUpdate>();\r\n @Output() chipSelected = new EventEmitter<any>();\r\n\r\n @ViewChild('input') input: ElementRef<HTMLInputElement>;\r\n @ViewChild('auto') matAutocomplete: MatAutocomplete;\r\n @ViewChild('chipList', { static: true }) chipList: MatChipList;\r\n @ViewChild(MatAutocompleteTrigger, { read: MatAutocompleteTrigger }) autocompleteTrigger: MatAutocompleteTrigger;\r\n @ContentChild(SdViewDefDirective) sdView: SdViewDefDirective;\r\n @ContentChild(SdChipDisplayDef) sdChipDisplay: SdChipDisplayDef;\r\n isFocused = false;\r\n inputControl = new FormControl();\r\n formControl = new FormControl();\r\n matcher = new SdChipErrotStateMatcher(this.formControl);\r\n #subscription = new Subscription();\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private utilityService: SdUtilityService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.filteredItems = this.inputControl.valueChanges.pipe(\r\n startWith<string | { [key: string]: string }>(''),\r\n map(item => typeof item === 'string' ? item : (item?.[this.displayField] ?? '')),\r\n map(name => this.filter(name))\r\n );\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.formControl.valueChanges.subscribe(() => {\r\n const values: (string | number)[] = this.formControl.value || [];\r\n this.selectedItems = this.#items.filter(item => values.findIndex(value => value === item?.[this.valueField]) !== -1);\r\n this.modelChange.emit(values);\r\n this.sdChange.emit(values);\r\n setTimeout(() => {\r\n this.#form?.markAsDirty();\r\n }, 0);\r\n }));\r\n this.#subscription.add(this.#itemChanges.pipe(startWith(this.#items)).subscribe(() => {\r\n const values: (string | number)[] = this.formControl.value || [];\r\n this.selectedItems = [];\r\n for (const value of values) {\r\n const item = this.#items.find(e => e?.[this.valueField] === value) || {};\r\n this.selectedItems.push({\r\n ...item,\r\n [this.valueField]: value\r\n });\r\n }\r\n }));\r\n this.#form?.addControl(this.#name, this.formControl);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#form?.removeControl(this.#name);\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #updateValidator = () => {\r\n this.formControl.clearValidators();\r\n this.formControl.clearAsyncValidators();\r\n const validators: ValidatorFn[] = [];\r\n const asyncValidators: AsyncValidatorFn[] = [];\r\n if (this.isRequired) {\r\n validators.push(Validators.required);\r\n }\r\n if (this.min > 0) {\r\n validators.push(Validators.minLength(this.min));\r\n }\r\n if (this.max > 0) {\r\n validators.push(Validators.maxLength(this.max));\r\n }\r\n this.formControl.setValidators(validators);\r\n this.formControl.setAsyncValidators(asyncValidators);\r\n this.formControl.updateValueAndValidity();\r\n }\r\n\r\n filter = (value: string): { [key: string]: string }[] => {\r\n return this.#items\r\n .filter(item => {\r\n if (this.formControl.value?.some(val => val === item[this.valueField])) {\r\n return false;\r\n }\r\n return !value || this.utilityService.changeAliasLowerCase(item[this.displayField])\r\n .indexOf(this.utilityService.changeAliasLowerCase(value)) !== -1;\r\n }).filter((item, index) => index < this.limit);\r\n }\r\n\r\n onAdd = (event: MatChipInputEvent): void => {\r\n // Add item only when MatAutocomplete is not open\r\n // To make sure this does not conflict with OptionSelected Event\r\n if (!this.matAutocomplete.isOpen) {\r\n const value = (event.value ?? '').toString().toLowerCase().trim();\r\n if (value) {\r\n\r\n const item = this.#items.find(e => e[this.displayField]\r\n && e[this.displayField].toString().toLowerCase().trim() === value);\r\n\r\n if (item) {\r\n const values: (string | number)[] = this.formControl.value ?? [];\r\n values.push(item[this.valueField]);\r\n this.formControl.setValue(values);\r\n }\r\n }\r\n this.inputControl.setValue('');\r\n }\r\n }\r\n\r\n // andn1 viết để xử lý tạm us B2B1D-18289 ở S69\r\n onAdd2 = (event: MatChipInputEvent): void => {\r\n\r\n const value = (event.value ?? '').toString().toLowerCase().trim();\r\n if (value) {\r\n const item = this.#items.find(e => e[this.valueField]\r\n && e[this.valueField].toString().toLowerCase().trim() === value);\r\n\r\n if (item) {\r\n const values: (string | number)[] = this.formControl.value ?? [];\r\n if (!values.includes(item[this.valueField])) {\r\n values.push(item[this.valueField]);\r\n }\r\n this.formControl.setValue(values);\r\n }\r\n }\r\n this.inputControl.setValue('');\r\n this.ref.detectChanges();\r\n }\r\n\r\n onRemove = (item: any): void => {\r\n const values: (string | number)[] = this.formControl.value ?? [];\r\n this.formControl.setValue(values.filter(value => item?.[this.valueField] !== value));\r\n this.inputControl.setValue('');\r\n }\r\n\r\n select = (item: any): void => {\r\n this.chipSelected.emit(item);\r\n }\r\n\r\n onSelect = (event: MatAutocompleteSelectedEvent) => {\r\n const value = (event.option.value?.[this.valueField] ?? '').toString().trim();\r\n if (value) {\r\n const item = this.#items.find(e => e[this.valueField]\r\n && e[this.valueField].toString().trim() === value);\r\n if (item) {\r\n const values: (string | number)[] = this.formControl.value ?? [];\r\n values.push(item[this.valueField]);\r\n this.formControl.setValue(values);\r\n this.input.nativeElement.value = '';\r\n this.inputControl.setValue('');\r\n setTimeout(() => {\r\n this.autocompleteTrigger?.openPanel();\r\n }, 0);\r\n }\r\n }\r\n }\r\n\r\n displayFn = (value: string | { [key: string]: string }): string | undefined => {\r\n if (typeof value === 'string') {\r\n if (!this.#items) {\r\n return undefined;\r\n }\r\n const selectedItem = this.#items.find(item => item[this.valueField] === value);\r\n if (selectedItem) {\r\n return selectedItem[this.displayField];\r\n }\r\n if (this.#items.some(item => item[this.displayField].toLowerCase().indexOf(value.toLowerCase()) !== -1)) {\r\n return value;\r\n } else {\r\n return undefined;\r\n }\r\n } else {\r\n return value ? value[this.displayField] : undefined;\r\n }\r\n }\r\n\r\n onFocus = () => {\r\n this.isFocused = true;\r\n this.inputControl.setValue('');\r\n // this.inputControl.updateValueAndValidity();\r\n }\r\n\r\n onBlur = () => {\r\n this.isFocused = false;\r\n this.inputControl.setValue('', {\r\n emitEvent: false\r\n });\r\n }\r\n\r\n onClick = () => {\r\n if (this.sdView?.templateRef) {\r\n if (!this.formControl.disabled && !this.isFocused) {\r\n this.focus();\r\n }\r\n }\r\n }\r\n\r\n focus = () => {\r\n this.isFocused = true;\r\n setTimeout(() => {\r\n this.autocompleteTrigger?.openPanel();\r\n this.input?.nativeElement?.focus();\r\n }, 100);\r\n }\r\n\r\n onClear = ($event?: any) => {\r\n $event?.stopPropagation();\r\n this.inputControl.setValue('');\r\n this.formControl.setValue([]);\r\n this.autocompleteTrigger?.openPanel();\r\n this.ref.detectChanges();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n@Pipe({\r\n name: 'sdRemovableChip'\r\n})\r\nexport class SdRemovableChipPipe implements PipeTransform {\r\n constructor() { }\r\n transform(item: any, removable: boolean | ((item: any) => boolean)): boolean {\r\n if(typeof(removable) === 'boolean') {\r\n return removable;\r\n }\r\n return removable(item);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { SdChip } from './chip.component';\r\nimport { SdChipDisplayDef } from './directives/sd-chip-display-def.directive';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { SdRemovableChipPipe } from './pipes/removable-chip.pipe';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatTooltipModule,\r\n MatFormFieldModule,\r\n MatAutocompleteModule,\r\n MatIconModule,\r\n MatProgressSpinnerModule,\r\n MatChipsModule,\r\n SdTranslateModule,\r\n SdCommonModule\r\n ],\r\n declarations: [\r\n SdChip,\r\n SdChipDisplayDef,\r\n SdRemovableChipPipe\r\n ],\r\n exports: [\r\n SdCommonModule,\r\n SdChip,\r\n SdChipDisplayDef,\r\n ]\r\n})\r\nexport class SdChipModule { }\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/chip.module';\r\nexport * from './lib/chip.component';\r\nexport * from './lib/chip.model';\r\nexport * from './lib/directives/sd-chip-display-def.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {SdRemovableChipPipe as ɵa} from './src/lib/pipes/removable-chip.pipe';"],"names":["uuid.v4"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { of, Subject } from 'rxjs';
2
- import { Directive, TemplateRef, ViewContainerRef, Input, ElementRef, Renderer2, HostListener, NgModule } from '@angular/core';
3
- import { CommonModule } from '@angular/common';
4
- import { __classPrivateFieldGet, __classPrivateFieldSet } from 'tslib';
5
2
  import { FormControl } from '@angular/forms';
3
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from 'tslib';
4
+ import { ɵɵdefineInjectable, Injectable, Directive, TemplateRef, ViewContainerRef, Input, ElementRef, Renderer2, HostListener, NgModule } from '@angular/core';
5
+ import { CommonModule } from '@angular/common';
6
6
 
7
7
  Array.prototype.search = function (searchText, fields) {
8
8
  const items = this;
@@ -283,6 +283,65 @@ String.aliasIncludes = (alias, searchText) => {
283
283
  return String.changeAliasLowerCase(alias).includes(String.changeAliasLowerCase(searchText));
284
284
  };
285
285
 
286
+ class SdFormControl extends FormControl {
287
+ constructor(formState, validator = null, asyncValidator = null) {
288
+ super(formState, validator, asyncValidator);
289
+ this.touchedChanges = new Subject();
290
+ }
291
+ markAsTouched({ onlySelf } = {}) {
292
+ super.markAsTouched({ onlySelf });
293
+ this.touchedChanges.next(true);
294
+ }
295
+ }
296
+
297
+ var _getBrowserNameAndVersion;
298
+ class SdBrowserService {
299
+ constructor() {
300
+ _getBrowserNameAndVersion.set(this, () => {
301
+ const ua = navigator.userAgent;
302
+ let M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
303
+ let tem;
304
+ if (/trident/i.test(M[1])) {
305
+ tem = /\brv[ :]+(\d+)/g.exec(ua) || [];
306
+ return { name: 'IE', version: (tem[1] || '') };
307
+ }
308
+ if (M[1] === 'Chrome') {
309
+ tem = ua.match(/\bEdg\/(\d+)/);
310
+ if (tem != null) {
311
+ return { name: 'Edge(Chromium)', version: tem[1] };
312
+ }
313
+ tem = ua.match(/\bOPR\/(\d+)/);
314
+ if (tem != null) {
315
+ return { name: 'Opera', version: tem[1] };
316
+ }
317
+ }
318
+ M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];
319
+ tem = ua.match(/version\/(\d+)/i);
320
+ if (tem != null) {
321
+ M.splice(1, 1, tem[1]);
322
+ }
323
+ return {
324
+ name: M[0],
325
+ version: M[1]
326
+ };
327
+ });
328
+ const browserNameAndVersion = __classPrivateFieldGet(this, _getBrowserNameAndVersion).call(this);
329
+ this.browerName = browserNameAndVersion.name;
330
+ this.browserVersion = browserNameAndVersion.version;
331
+ }
332
+ get isChrome() { return this.browerName === 'Chrome'; }
333
+ get isFirefox() { return this.browerName === 'Firefox'; }
334
+ get isSafari() { return this.browerName === 'Safari'; }
335
+ }
336
+ _getBrowserNameAndVersion = new WeakMap();
337
+ SdBrowserService.ɵprov = ɵɵdefineInjectable({ factory: function SdBrowserService_Factory() { return new SdBrowserService(); }, token: SdBrowserService, providedIn: "root" });
338
+ SdBrowserService.decorators = [
339
+ { type: Injectable, args: [{
340
+ providedIn: 'root'
341
+ },] }
342
+ ];
343
+ SdBrowserService.ctorParameters = () => [];
344
+
286
345
  class SdViewDefDirective {
287
346
  // @Input() sdViewDef: string;
288
347
  constructor(templateRef) {
@@ -330,13 +389,14 @@ SdLetDirective.propDecorators = {
330
389
 
331
390
  var _overflow;
332
391
  class SdScrollDirective {
333
- constructor(elementRef, renderer) {
392
+ constructor(elementRef, renderer, browserService) {
334
393
  this.elementRef = elementRef;
335
394
  this.renderer = renderer;
395
+ this.browserService = browserService;
336
396
  _overflow.set(this, 'hidden');
337
397
  }
338
398
  onMouseOver() {
339
- __classPrivateFieldSet(this, _overflow, 'overlay');
399
+ __classPrivateFieldSet(this, _overflow, this.browserService.isFirefox ? 'auto' : 'overlay');
340
400
  this.renderer.setStyle(this.elementRef.nativeElement, 'overflow', __classPrivateFieldGet(this, _overflow));
341
401
  }
342
402
  onMouseOut() {
@@ -356,7 +416,8 @@ SdScrollDirective.decorators = [
356
416
  ];
357
417
  SdScrollDirective.ctorParameters = () => [
358
418
  { type: ElementRef },
359
- { type: Renderer2 }
419
+ { type: Renderer2 },
420
+ { type: SdBrowserService }
360
421
  ];
361
422
  SdScrollDirective.propDecorators = {
362
423
  onMouseOver: [{ type: HostListener, args: ['mouseover',] }],
@@ -385,20 +446,9 @@ SdCommonModule.decorators = [
385
446
  },] }
386
447
  ];
387
448
 
388
- class SdFormControl extends FormControl {
389
- constructor(formState, validator = null, asyncValidator = null) {
390
- super(formState, validator, asyncValidator);
391
- this.touchedChanges = new Subject();
392
- }
393
- markAsTouched({ onlySelf } = {}) {
394
- super.markAsTouched({ onlySelf });
395
- this.touchedChanges.next(true);
396
- }
397
- }
398
-
399
449
  /**
400
450
  * Generated bundle index. Do not edit.
401
451
  */
402
452
 
403
- export { SdCommonModule, SdFormControl, SdLetDirective, SdScrollDirective, SdViewDefDirective };
453
+ export { SdBrowserService, SdCommonModule, SdFormControl, SdLetDirective, SdScrollDirective, SdViewDefDirective };
404
454
  //# sourceMappingURL=sd-angular-core-common.js.map