@smartsoft001/crud-shell-angular 1.2.72 → 1.2.75

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 (66) hide show
  1. package/{esm2020 → esm2022}/lib/+state/crud.effects.mjs +4 -4
  2. package/{esm2020 → esm2022}/lib/+state/crud.facade.mjs +4 -4
  3. package/{esm2020 → esm2022}/lib/components/components.module.mjs +51 -51
  4. package/{esm2020 → esm2022}/lib/components/export/export.component.mjs +4 -4
  5. package/esm2022/lib/components/filter/base/base.component.mjs +152 -0
  6. package/{esm2020 → esm2022}/lib/components/filter/check/check.component.mjs +4 -4
  7. package/{esm2020 → esm2022}/lib/components/filter/date/date.component.mjs +4 -4
  8. package/{esm2020 → esm2022}/lib/components/filter/date-time/date-time.component.mjs +4 -4
  9. package/{esm2020 → esm2022}/lib/components/filter/date-with-edit/date-with-edit.component.mjs +4 -4
  10. package/{esm2020 → esm2022}/lib/components/filter/filter.component.mjs +4 -4
  11. package/{esm2020 → esm2022}/lib/components/filter/flag/flag.component.mjs +4 -4
  12. package/{esm2020 → esm2022}/lib/components/filter/int/int.component.mjs +4 -4
  13. package/{esm2020 → esm2022}/lib/components/filter/radio/radio.component.mjs +4 -4
  14. package/esm2022/lib/components/filter/text/text.component.mjs +16 -0
  15. package/{esm2020 → esm2022}/lib/components/filters/filters.component.mjs +4 -4
  16. package/{esm2020 → esm2022}/lib/components/filters-config/filters-config.component.mjs +4 -4
  17. package/{esm2020 → esm2022}/lib/components/group/group.component.mjs +4 -4
  18. package/{esm2020 → esm2022}/lib/components/multiselect/multiselect.component.mjs +4 -4
  19. package/esm2022/lib/crud-full.module.mjs +103 -0
  20. package/{esm2020 → esm2022}/lib/crud.config.mjs +7 -7
  21. package/{esm2020 → esm2022}/lib/crud.module.mjs +33 -33
  22. package/{esm2020 → esm2022}/lib/factories/list-pagination/list-pagination.factory.mjs +4 -4
  23. package/esm2022/lib/pages/item/base/base.component.mjs +44 -0
  24. package/esm2022/lib/pages/item/item.component.mjs +395 -0
  25. package/{esm2020 → esm2022}/lib/pages/item/standard/standard.component.mjs +4 -4
  26. package/esm2022/lib/pages/list/base/base.component.mjs +23 -0
  27. package/{esm2020 → esm2022}/lib/pages/list/list.component.mjs +6 -6
  28. package/{esm2020 → esm2022}/lib/pages/list/standard/standard.component.mjs +6 -6
  29. package/{esm2020 → esm2022}/lib/pipes/form-options/form-options.pipe.mjs +4 -4
  30. package/{esm2020 → esm2022}/lib/pipes/pipes.module.mjs +5 -5
  31. package/{esm2020 → esm2022}/lib/services/crud/crud.service.mjs +4 -4
  32. package/{esm2020 → esm2022}/lib/services/list-group/list-group.service.mjs +4 -4
  33. package/{esm2020 → esm2022}/lib/services/page/page.service.mjs +4 -4
  34. package/{esm2020 → esm2022}/lib/services/search/search.service.mjs +4 -4
  35. package/{esm2020 → esm2022}/lib/services/socket/socket.service.mjs +7 -7
  36. package/{fesm2020 → fesm2022}/smartsoft001-crud-shell-angular.mjs +237 -237
  37. package/{fesm2020 → fesm2022}/smartsoft001-crud-shell-angular.mjs.map +1 -1
  38. package/lib/components/filter/base/base.component.d.ts +1 -1
  39. package/lib/components/filter/filter.component.d.ts +1 -1
  40. package/lib/components/filters/filters.component.d.ts +1 -1
  41. package/lib/components/group/group.component.d.ts +1 -1
  42. package/lib/models/interfaces.d.ts +1 -1
  43. package/lib/models/interfaces.d.ts.map +1 -1
  44. package/lib/pages/item/base/base.component.d.ts +1 -1
  45. package/lib/pages/list/base/base.component.d.ts +1 -1
  46. package/package.json +8 -14
  47. package/esm2020/lib/components/filter/base/base.component.mjs +0 -152
  48. package/esm2020/lib/components/filter/text/text.component.mjs +0 -16
  49. package/esm2020/lib/crud-full.module.mjs +0 -103
  50. package/esm2020/lib/pages/item/base/base.component.mjs +0 -44
  51. package/esm2020/lib/pages/item/item.component.mjs +0 -395
  52. package/esm2020/lib/pages/list/base/base.component.mjs +0 -23
  53. package/fesm2015/smartsoft001-crud-shell-angular.mjs +0 -2654
  54. package/fesm2015/smartsoft001-crud-shell-angular.mjs.map +0 -1
  55. /package/{esm2020 → esm2022}/index.mjs +0 -0
  56. /package/{esm2020 → esm2022}/lib/+state/crud.actions.mjs +0 -0
  57. /package/{esm2020 → esm2022}/lib/+state/crud.reducer.mjs +0 -0
  58. /package/{esm2020 → esm2022}/lib/+state/crud.selectors.mjs +0 -0
  59. /package/{esm2020 → esm2022}/lib/components/filter/index.mjs +0 -0
  60. /package/{esm2020 → esm2022}/lib/components/index.mjs +0 -0
  61. /package/{esm2020 → esm2022}/lib/models/index.mjs +0 -0
  62. /package/{esm2020 → esm2022}/lib/models/interfaces.mjs +0 -0
  63. /package/{esm2020 → esm2022}/lib/pages/index.mjs +0 -0
  64. /package/{esm2020 → esm2022}/lib/pipes/index.mjs +0 -0
  65. /package/{esm2020 → esm2022}/lib/providers/model-possibilities/model-possibilities.provider.mjs +0 -0
  66. /package/{esm2020 → esm2022}/smartsoft001-crud-shell-angular.mjs +0 -0
@@ -60,10 +60,10 @@ export class CrudListPaginationFactory {
60
60
  })),
61
61
  };
62
62
  }
63
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: CrudListPaginationFactory, deps: [{ token: i1.CrudFacade }], target: i0.ɵɵFactoryTarget.Injectable }); }
64
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: CrudListPaginationFactory }); }
63
65
  }
64
- /** @nocollapse */ CrudListPaginationFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: CrudListPaginationFactory, deps: [{ token: i1.CrudFacade }], target: i0.ɵɵFactoryTarget.Injectable });
65
- /** @nocollapse */ CrudListPaginationFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: CrudListPaginationFactory });
66
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: CrudListPaginationFactory, decorators: [{
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: CrudListPaginationFactory, decorators: [{
67
67
  type: Injectable
68
68
  }], ctorParameters: function () { return [{ type: i1.CrudFacade }]; } });
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1wYWdpbmF0aW9uLmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NydWQvc2hlbGwvYW5ndWxhci9zcmMvbGliL2ZhY3Rvcmllcy9saXN0LXBhZ2luYXRpb24vbGlzdC1wYWdpbmF0aW9uLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUtyQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7OztBQUlwRCxNQUFNLE9BQU8seUJBQXlCO0lBQ3BDLFlBQTZCLE1BQXFCO1FBQXJCLFdBQU0sR0FBTixNQUFNLENBQWU7SUFBRyxDQUFDO0lBRXRELEtBQUssQ0FBQyxNQUFNLENBQUMsT0FPWjtRQUNDLE9BQU87WUFDTCxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7WUFDbEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1lBQ3BCLFlBQVksRUFBRSxHQUFHLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJO29CQUNuRSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRWhDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDekIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7d0JBQzlDLElBQUksQ0FBQyxFQUFFOzRCQUNMLDZDQUE2Qzs0QkFDN0MsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQ0FDZCxHQUFHLENBQ0QsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUU7b0NBQ3pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUNuQyxDQUFDOzRCQUNKLENBQUMsQ0FBQyxDQUFDO3lCQUNKO29CQUNILENBQUMsQ0FBQyxDQUFDO29CQUVILElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO3dCQUNmLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUU7d0JBQy9CLE1BQU0sRUFDSixPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDLE1BQU07NEJBQ25DLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBSztxQkFDckMsQ0FBQyxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNELFlBQVksRUFBRSxHQUFHLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJO29CQUNuRSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRWhDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDekIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7d0JBQzlDLElBQUksQ0FBQyxFQUFFOzRCQUNMLDZDQUE2Qzs0QkFDN0MsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQ0FDZCxHQUFHLENBQ0QsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUU7b0NBQ3pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUNuQyxDQUFDOzRCQUNKLENBQUMsQ0FBQyxDQUFDO3lCQUNKO29CQUNILENBQUMsQ0FBQyxDQUFDO29CQUVILElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO3dCQUNmLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUU7d0JBQy9CLE1BQU0sRUFDSixPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDLE1BQU07NEJBQ25DLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBSztxQkFDckMsQ0FBQyxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNELEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQzdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNSLE9BQU8sQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9DLENBQUMsQ0FBQyxDQUNIO1lBQ0QsV0FBVyxFQUFFLGFBQWEsQ0FDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUN4QixDQUFDLElBQUksQ0FDSixHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFO2dCQUMzQixPQUFPLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xFLENBQUMsQ0FBQyxDQUNIO1NBQ0YsQ0FBQztJQUNKLENBQUM7O3lJQTlFVSx5QkFBeUI7NklBQXpCLHlCQUF5QjsyRkFBekIseUJBQXlCO2tCQURyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmltcG9ydCB7IG1hcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCB9IGZyb20gXCJyeGpzXCI7XG5cbmltcG9ydCB7IElFbnRpdHkgfSBmcm9tIFwiQHNtYXJ0c29mdDAwMS9kb21haW4tY29yZVwiO1xuaW1wb3J0IHtJTGlzdFBhZ2luYXRpb25PcHRpb25zLCBQYWdpbmF0aW9uTW9kZX0gZnJvbSBcIkBzbWFydHNvZnQwMDEvYW5ndWxhclwiO1xuXG5pbXBvcnQge0NydWRGYWNhZGV9IGZyb20gXCIuLi8uLi8rc3RhdGUvY3J1ZC5mYWNhZGVcIjtcbmltcG9ydCB7SUNydWRGaWx0ZXJ9IGZyb20gXCIuLi8uLi9tb2RlbHMvaW50ZXJmYWNlc1wiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ3J1ZExpc3RQYWdpbmF0aW9uRmFjdG9yeTxUIGV4dGVuZHMgSUVudGl0eTxzdHJpbmc+PiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZmFjYWRlOiBDcnVkRmFjYWRlPFQ+KSB7fVxuXG4gIGFzeW5jIGNyZWF0ZShvcHRpb25zOiB7XG4gICAgbW9kZT86IFBhZ2luYXRpb25Nb2RlLFxuICAgIGxpbWl0OiBudW1iZXI7XG4gICAgcHJvdmlkZXI6IHtcbiAgICAgIGdldExpbmtzKCk6IGFueTtcbiAgICAgIGdldEZpbHRlcigpOiBJQ3J1ZEZpbHRlcjtcbiAgICB9O1xuICB9KTogUHJvbWlzZTxJTGlzdFBhZ2luYXRpb25PcHRpb25zPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vZGU6IG9wdGlvbnMubW9kZSxcbiAgICAgIGxpbWl0OiBvcHRpb25zLmxpbWl0LFxuICAgICAgbG9hZE5leHRQYWdlOiAoKSA9PiB7XG4gICAgICAgIGlmICghb3B0aW9ucy5wcm92aWRlci5nZXRMaW5rcygpIHx8ICFvcHRpb25zLnByb3ZpZGVyLmdldExpbmtzKCkubmV4dClcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcblxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlcykgPT4ge1xuICAgICAgICAgIGNvbnN0IHN1YiA9IHRoaXMuZmFjYWRlLmxvYWRlZCQuc3Vic2NyaWJlKChsKSA9PiB7XG4gICAgICAgICAgICBpZiAobCkge1xuICAgICAgICAgICAgICAvLyBpZiAoc3ViICYmICFzdWIuY2xvc2VkKSBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzKFxuICAgICAgICAgICAgICAgICAgb3B0aW9ucy5wcm92aWRlci5nZXRMaW5rcygpICYmXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMucHJvdmlkZXIuZ2V0TGlua3MoKS5uZXh0XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB0aGlzLmZhY2FkZS5yZWFkKHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMucHJvdmlkZXIuZ2V0RmlsdGVyKCksXG4gICAgICAgICAgICBvZmZzZXQ6XG4gICAgICAgICAgICAgIG9wdGlvbnMucHJvdmlkZXIuZ2V0RmlsdGVyKCkub2Zmc2V0ICtcbiAgICAgICAgICAgICAgb3B0aW9ucy5wcm92aWRlci5nZXRGaWx0ZXIoKS5saW1pdCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgbG9hZFByZXZQYWdlOiAoKSA9PiB7XG4gICAgICAgIGlmICghb3B0aW9ucy5wcm92aWRlci5nZXRMaW5rcygpIHx8ICFvcHRpb25zLnByb3ZpZGVyLmdldExpbmtzKCkucHJldilcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcblxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlcykgPT4ge1xuICAgICAgICAgIGNvbnN0IHN1YiA9IHRoaXMuZmFjYWRlLmxvYWRlZCQuc3Vic2NyaWJlKChsKSA9PiB7XG4gICAgICAgICAgICBpZiAobCkge1xuICAgICAgICAgICAgICAvLyBpZiAoc3ViICYmICFzdWIuY2xvc2VkKSBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzKFxuICAgICAgICAgICAgICAgICAgb3B0aW9ucy5wcm92aWRlci5nZXRMaW5rcygpICYmXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMucHJvdmlkZXIuZ2V0TGlua3MoKS5wcmV2XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB0aGlzLmZhY2FkZS5yZWFkKHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMucHJvdmlkZXIuZ2V0RmlsdGVyKCksXG4gICAgICAgICAgICBvZmZzZXQ6XG4gICAgICAgICAgICAgIG9wdGlvbnMucHJvdmlkZXIuZ2V0RmlsdGVyKCkub2Zmc2V0IC1cbiAgICAgICAgICAgICAgb3B0aW9ucy5wcm92aWRlci5nZXRGaWx0ZXIoKS5saW1pdCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgcGFnZSQ6IHRoaXMuZmFjYWRlLmZpbHRlciQucGlwZShcbiAgICAgICAgbWFwKChmKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGY/LmxpbWl0ID8gZi5vZmZzZXQgLyBmLmxpbWl0ICsgMSA6IDA7XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgICAgdG90YWxQYWdlcyQ6IGNvbWJpbmVMYXRlc3QoXG4gICAgICAgIHRoaXMuZmFjYWRlLmZpbHRlciQsXG4gICAgICAgIHRoaXMuZmFjYWRlLnRvdGFsQ291bnQkXG4gICAgICApLnBpcGUoXG4gICAgICAgIG1hcCgoW2ZpbHRlciwgdG90YWxDb3VudF0pID0+IHtcbiAgICAgICAgICByZXR1cm4gZmlsdGVyPy5saW1pdCA/IE1hdGguY2VpbCh0b3RhbENvdW50IC8gZmlsdGVyLmxpbWl0KSA6IDA7XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1wYWdpbmF0aW9uLmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NydWQvc2hlbGwvYW5ndWxhci9zcmMvbGliL2ZhY3Rvcmllcy9saXN0LXBhZ2luYXRpb24vbGlzdC1wYWdpbmF0aW9uLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUtyQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7OztBQUlwRCxNQUFNLE9BQU8seUJBQXlCO0lBQ3BDLFlBQTZCLE1BQXFCO1FBQXJCLFdBQU0sR0FBTixNQUFNLENBQWU7SUFBRyxDQUFDO0lBRXRELEtBQUssQ0FBQyxNQUFNLENBQUMsT0FPWjtRQUNDLE9BQU87WUFDTCxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7WUFDbEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1lBQ3BCLFlBQVksRUFBRSxHQUFHLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJO29CQUNuRSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRWhDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDekIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7d0JBQzlDLElBQUksQ0FBQyxFQUFFOzRCQUNMLDZDQUE2Qzs0QkFDN0MsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQ0FDZCxHQUFHLENBQ0QsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUU7b0NBQ3pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUNuQyxDQUFDOzRCQUNKLENBQUMsQ0FBQyxDQUFDO3lCQUNKO29CQUNILENBQUMsQ0FBQyxDQUFDO29CQUVILElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO3dCQUNmLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUU7d0JBQy9CLE1BQU0sRUFDSixPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDLE1BQU07NEJBQ25DLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBSztxQkFDckMsQ0FBQyxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNELFlBQVksRUFBRSxHQUFHLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJO29CQUNuRSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRWhDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDekIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7d0JBQzlDLElBQUksQ0FBQyxFQUFFOzRCQUNMLDZDQUE2Qzs0QkFDN0MsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQ0FDZCxHQUFHLENBQ0QsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUU7b0NBQ3pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUNuQyxDQUFDOzRCQUNKLENBQUMsQ0FBQyxDQUFDO3lCQUNKO29CQUNILENBQUMsQ0FBQyxDQUFDO29CQUVILElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO3dCQUNmLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUU7d0JBQy9CLE1BQU0sRUFDSixPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDLE1BQU07NEJBQ25DLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBSztxQkFDckMsQ0FBQyxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNELEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQzdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNSLE9BQU8sQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9DLENBQUMsQ0FBQyxDQUNIO1lBQ0QsV0FBVyxFQUFFLGFBQWEsQ0FDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUN4QixDQUFDLElBQUksQ0FDSixHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFO2dCQUMzQixPQUFPLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xFLENBQUMsQ0FBQyxDQUNIO1NBQ0YsQ0FBQztJQUNKLENBQUM7aUlBOUVVLHlCQUF5QjtxSUFBekIseUJBQXlCOzsyRkFBekIseUJBQXlCO2tCQURyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmltcG9ydCB7IG1hcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCB9IGZyb20gXCJyeGpzXCI7XG5cbmltcG9ydCB7IElFbnRpdHkgfSBmcm9tIFwiQHNtYXJ0c29mdDAwMS9kb21haW4tY29yZVwiO1xuaW1wb3J0IHtJTGlzdFBhZ2luYXRpb25PcHRpb25zLCBQYWdpbmF0aW9uTW9kZX0gZnJvbSBcIkBzbWFydHNvZnQwMDEvYW5ndWxhclwiO1xuXG5pbXBvcnQge0NydWRGYWNhZGV9IGZyb20gXCIuLi8uLi8rc3RhdGUvY3J1ZC5mYWNhZGVcIjtcbmltcG9ydCB7SUNydWRGaWx0ZXJ9IGZyb20gXCIuLi8uLi9tb2RlbHMvaW50ZXJmYWNlc1wiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ3J1ZExpc3RQYWdpbmF0aW9uRmFjdG9yeTxUIGV4dGVuZHMgSUVudGl0eTxzdHJpbmc+PiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZmFjYWRlOiBDcnVkRmFjYWRlPFQ+KSB7fVxuXG4gIGFzeW5jIGNyZWF0ZShvcHRpb25zOiB7XG4gICAgbW9kZT86IFBhZ2luYXRpb25Nb2RlLFxuICAgIGxpbWl0OiBudW1iZXI7XG4gICAgcHJvdmlkZXI6IHtcbiAgICAgIGdldExpbmtzKCk6IGFueTtcbiAgICAgIGdldEZpbHRlcigpOiBJQ3J1ZEZpbHRlcjtcbiAgICB9O1xuICB9KTogUHJvbWlzZTxJTGlzdFBhZ2luYXRpb25PcHRpb25zPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vZGU6IG9wdGlvbnMubW9kZSxcbiAgICAgIGxpbWl0OiBvcHRpb25zLmxpbWl0LFxuICAgICAgbG9hZE5leHRQYWdlOiAoKSA9PiB7XG4gICAgICAgIGlmICghb3B0aW9ucy5wcm92aWRlci5nZXRMaW5rcygpIHx8ICFvcHRpb25zLnByb3ZpZGVyLmdldExpbmtzKCkubmV4dClcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcblxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlcykgPT4ge1xuICAgICAgICAgIGNvbnN0IHN1YiA9IHRoaXMuZmFjYWRlLmxvYWRlZCQuc3Vic2NyaWJlKChsKSA9PiB7XG4gICAgICAgICAgICBpZiAobCkge1xuICAgICAgICAgICAgICAvLyBpZiAoc3ViICYmICFzdWIuY2xvc2VkKSBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzKFxuICAgICAgICAgICAgICAgICAgb3B0aW9ucy5wcm92aWRlci5nZXRMaW5rcygpICYmXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMucHJvdmlkZXIuZ2V0TGlua3MoKS5uZXh0XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB0aGlzLmZhY2FkZS5yZWFkKHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMucHJvdmlkZXIuZ2V0RmlsdGVyKCksXG4gICAgICAgICAgICBvZmZzZXQ6XG4gICAgICAgICAgICAgIG9wdGlvbnMucHJvdmlkZXIuZ2V0RmlsdGVyKCkub2Zmc2V0ICtcbiAgICAgICAgICAgICAgb3B0aW9ucy5wcm92aWRlci5nZXRGaWx0ZXIoKS5saW1pdCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgbG9hZFByZXZQYWdlOiAoKSA9PiB7XG4gICAgICAgIGlmICghb3B0aW9ucy5wcm92aWRlci5nZXRMaW5rcygpIHx8ICFvcHRpb25zLnByb3ZpZGVyLmdldExpbmtzKCkucHJldilcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcblxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlcykgPT4ge1xuICAgICAgICAgIGNvbnN0IHN1YiA9IHRoaXMuZmFjYWRlLmxvYWRlZCQuc3Vic2NyaWJlKChsKSA9PiB7XG4gICAgICAgICAgICBpZiAobCkge1xuICAgICAgICAgICAgICAvLyBpZiAoc3ViICYmICFzdWIuY2xvc2VkKSBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzKFxuICAgICAgICAgICAgICAgICAgb3B0aW9ucy5wcm92aWRlci5nZXRMaW5rcygpICYmXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMucHJvdmlkZXIuZ2V0TGlua3MoKS5wcmV2XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB0aGlzLmZhY2FkZS5yZWFkKHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMucHJvdmlkZXIuZ2V0RmlsdGVyKCksXG4gICAgICAgICAgICBvZmZzZXQ6XG4gICAgICAgICAgICAgIG9wdGlvbnMucHJvdmlkZXIuZ2V0RmlsdGVyKCkub2Zmc2V0IC1cbiAgICAgICAgICAgICAgb3B0aW9ucy5wcm92aWRlci5nZXRGaWx0ZXIoKS5saW1pdCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgcGFnZSQ6IHRoaXMuZmFjYWRlLmZpbHRlciQucGlwZShcbiAgICAgICAgbWFwKChmKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGY/LmxpbWl0ID8gZi5vZmZzZXQgLyBmLmxpbWl0ICsgMSA6IDA7XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgICAgdG90YWxQYWdlcyQ6IGNvbWJpbmVMYXRlc3QoXG4gICAgICAgIHRoaXMuZmFjYWRlLmZpbHRlciQsXG4gICAgICAgIHRoaXMuZmFjYWRlLnRvdGFsQ291bnQkXG4gICAgICApLnBpcGUoXG4gICAgICAgIG1hcCgoW2ZpbHRlciwgdG90YWxDb3VudF0pID0+IHtcbiAgICAgICAgICByZXR1cm4gZmlsdGVyPy5saW1pdCA/IE1hdGguY2VpbCh0b3RhbENvdW50IC8gZmlsdGVyLmxpbWl0KSA6IDA7XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,44 @@
1
+ import { Directive, EventEmitter, Input, Output, QueryList, ViewChild, ViewChildren, ViewContainerRef } from "@angular/core";
2
+ import { BaseComponent, FormComponent, } from "@smartsoft001/angular";
3
+ import { CrudFullConfig } from "../../../crud.config";
4
+ import { CrudFacade } from "../../../+state/crud.facade";
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../../../crud.config";
7
+ import * as i2 from "../../../+state/crud.facade";
8
+ export class CrudItemPageBaseComponent extends BaseComponent {
9
+ static { this.smartType = "crud-item-page"; }
10
+ constructor(config, facade) {
11
+ super();
12
+ this.config = config;
13
+ this.facade = facade;
14
+ this.formComponents = new QueryList();
15
+ this.onPartialChange = new EventEmitter();
16
+ this.onChange = new EventEmitter();
17
+ this.onValidChange = new EventEmitter();
18
+ this.selected$ = facade.selected$;
19
+ }
20
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: CrudItemPageBaseComponent, deps: [{ token: i1.CrudFullConfig }, { token: i2.CrudFacade }], target: i0.ɵɵFactoryTarget.Directive }); }
21
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.3", type: CrudItemPageBaseComponent, inputs: { detailsOptions: "detailsOptions", mode: "mode", uniqueProvider: "uniqueProvider" }, outputs: { onPartialChange: "onPartialChange", onChange: "onChange", onValidChange: "onValidChange" }, viewQueries: [{ propertyName: "contentTpl", first: true, predicate: ["contentTpl"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "formComponents", predicate: FormComponent, descendants: true, read: FormComponent }], usesInheritance: true, ngImport: i0 }); }
22
+ }
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: CrudItemPageBaseComponent, decorators: [{
24
+ type: Directive
25
+ }], ctorParameters: function () { return [{ type: i1.CrudFullConfig }, { type: i2.CrudFacade }]; }, propDecorators: { contentTpl: [{
26
+ type: ViewChild,
27
+ args: ["contentTpl", { read: ViewContainerRef, static: true }]
28
+ }], formComponents: [{
29
+ type: ViewChildren,
30
+ args: [FormComponent, { read: FormComponent }]
31
+ }], detailsOptions: [{
32
+ type: Input
33
+ }], mode: [{
34
+ type: Input
35
+ }], uniqueProvider: [{
36
+ type: Input
37
+ }], onPartialChange: [{
38
+ type: Output
39
+ }], onChange: [{
40
+ type: Output
41
+ }], onValidChange: [{
42
+ type: Output
43
+ }] } });
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NydWQvc2hlbGwvYW5ndWxhci9zcmMvbGliL3BhZ2VzL2l0ZW0vYmFzZS9iYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUFFLFlBQVksRUFDdkIsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQ3hCLFNBQVMsRUFBRSxZQUFZLEVBQ3ZCLGdCQUFnQixFQUNuQixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQ0gsYUFBYSxFQUNTLGFBQWEsR0FDdEMsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7O0FBR3pELE1BQU0sT0FBZ0IseUJBQXFELFNBQVEsYUFBYTthQUNyRixjQUFTLEdBQXlCLGdCQUFnQixBQUF6QyxDQUEwQztJQTJCMUQsWUFDVyxNQUF5QixFQUN6QixNQUFxQjtRQUU1QixLQUFLLEVBQUUsQ0FBQztRQUhELFdBQU0sR0FBTixNQUFNLENBQW1CO1FBQ3pCLFdBQU0sR0FBTixNQUFNLENBQWU7UUF0QnNCLG1CQUFjLEdBQUcsSUFBSSxTQUFTLEVBQXNCLENBQUM7UUFZM0csb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBR2pELGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBSyxDQUFDO1FBR2pDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQU94QyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7SUFHdEMsQ0FBQztpSUFwQ2lCLHlCQUF5QjtxSEFBekIseUJBQXlCLG9UQUtWLGdCQUFnQiwrREFHbkMsYUFBYSwyQkFBVSxhQUFhOzsyRkFSaEMseUJBQXlCO2tCQUQ5QyxTQUFTOzhIQU9OLFVBQVU7c0JBRFQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFHWCxjQUFjO3NCQUFuRSxZQUFZO3VCQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUU7Z0JBR3BELGNBQWM7c0JBRGIsS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQUlOLGVBQWU7c0JBRGQsTUFBTTtnQkFJUCxRQUFRO3NCQURQLE1BQU07Z0JBSVAsYUFBYTtzQkFEWixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCwgT3V0cHV0LCBRdWVyeUxpc3QsXG4gICAgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW4sXG4gICAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tIFwicnhqc1wiO1xuXG5pbXBvcnQge1xuICAgIEJhc2VDb21wb25lbnQsXG4gICAgRHluYW1pY0NvbXBvbmVudFR5cGUsIEZvcm1Db21wb25lbnQsIElEZXRhaWxzT3B0aW9ucyxcbn0gZnJvbSBcIkBzbWFydHNvZnQwMDEvYW5ndWxhclwiO1xuaW1wb3J0IHtJRW50aXR5fSBmcm9tIFwiQHNtYXJ0c29mdDAwMS9kb21haW4tY29yZVwiO1xuaW1wb3J0IHsgQ3J1ZEZ1bGxDb25maWcgfSBmcm9tIFwiLi4vLi4vLi4vY3J1ZC5jb25maWdcIjtcbmltcG9ydCB7IENydWRGYWNhZGUgfSBmcm9tIFwiLi4vLi4vLi4vK3N0YXRlL2NydWQuZmFjYWRlXCI7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENydWRJdGVtUGFnZUJhc2VDb21wb25lbnQ8VCBleHRlbmRzIElFbnRpdHk8c3RyaW5nPj4gZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgc21hcnRUeXBlOiBEeW5hbWljQ29tcG9uZW50VHlwZSA9IFwiY3J1ZC1pdGVtLXBhZ2VcIjtcblxuICAgIHNlbGVjdGVkJDogT2JzZXJ2YWJsZTxUPjtcblxuICAgIEBWaWV3Q2hpbGQoXCJjb250ZW50VHBsXCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pXG4gICAgY29udGVudFRwbDogVmlld0NvbnRhaW5lclJlZjtcblxuICAgIEBWaWV3Q2hpbGRyZW4oRm9ybUNvbXBvbmVudCwgeyByZWFkOiBGb3JtQ29tcG9uZW50IH0pIGZvcm1Db21wb25lbnRzID0gbmV3IFF1ZXJ5TGlzdDxGb3JtQ29tcG9uZW50PGFueT4+KCk7XG5cbiAgICBASW5wdXQoKVxuICAgIGRldGFpbHNPcHRpb25zOiBJRGV0YWlsc09wdGlvbnM8VD47XG5cbiAgICBASW5wdXQoKVxuICAgIG1vZGU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgdW5pcXVlUHJvdmlkZXI6ICh2YWx1ZXM6IFJlY29yZDxrZXlvZiBULCBhbnk+KSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuXG4gICAgQE91dHB1dCgpXG4gICAgb25QYXJ0aWFsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxQYXJ0aWFsPFQ+PigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBvblZhbGlkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBjb25maWc6IENydWRGdWxsQ29uZmlnPFQ+LFxuICAgICAgICBwdWJsaWMgZmFjYWRlOiBDcnVkRmFjYWRlPFQ+XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQkID0gZmFjYWRlLnNlbGVjdGVkJDtcblxuXG4gICAgfVxufSJdfQ==
@@ -0,0 +1,395 @@
1
+ import { ChangeDetectorRef, Component, ComponentFactoryResolver, ElementRef, NgModuleRef, QueryList, TemplateRef, ViewChild, ViewChildren, ViewContainerRef } from "@angular/core";
2
+ import { ActivatedRoute, Router } from "@angular/router";
3
+ import { BehaviorSubject } from "rxjs";
4
+ import { Location } from "@angular/common";
5
+ import { TranslateService } from "@ngx-translate/core";
6
+ import { AuthService, CreateDynamicComponent, DetailsService, DynamicComponentLoader, DynamicContentDirective, StyleService, ToastService, } from "@smartsoft001/angular";
7
+ import { getModelOptions } from "@smartsoft001/models";
8
+ import { SpecificationService } from "@smartsoft001/utils";
9
+ import { CrudFacade } from "../../+state/crud.facade";
10
+ import { CrudFullConfig } from "../../crud.config";
11
+ import { CrudService } from "../../services/crud/crud.service";
12
+ import { IonContent } from "@ionic/angular";
13
+ import { UntypedFormArray, UntypedFormControl, UntypedFormGroup } from "@angular/forms";
14
+ import { ItemStandardComponent } from "./standard/standard.component";
15
+ import { PageService } from "../../services/page/page.service";
16
+ import * as i0 from "@angular/core";
17
+ import * as i1 from "@angular/router";
18
+ import * as i2 from "../../+state/crud.facade";
19
+ import * as i3 from "../../services/crud/crud.service";
20
+ import * as i4 from "@smartsoft001/angular";
21
+ import * as i5 from "@ngx-translate/core";
22
+ import * as i6 from "../../crud.config";
23
+ import * as i7 from "@angular/common";
24
+ import * as i8 from "../../services/page/page.service";
25
+ import * as i9 from "./standard/standard.component";
26
+ export class ItemComponent extends CreateDynamicComponent('crud-item-page') {
27
+ set mode(val) {
28
+ this._mode = val;
29
+ this.refreshDynamicInstance();
30
+ }
31
+ get mode() {
32
+ return this._mode;
33
+ }
34
+ constructor(router, activeRoute, facade, service, route, dynamicComponentLoader, translateService, config, location, cd, authService, styleService, elementRef, toastService, pageService, moduleRef, componentFactoryResolver, detailsService) {
35
+ super(cd, moduleRef, componentFactoryResolver);
36
+ this.router = router;
37
+ this.activeRoute = activeRoute;
38
+ this.facade = facade;
39
+ this.service = service;
40
+ this.route = route;
41
+ this.dynamicComponentLoader = dynamicComponentLoader;
42
+ this.translateService = translateService;
43
+ this.config = config;
44
+ this.location = location;
45
+ this.cd = cd;
46
+ this.styleService = styleService;
47
+ this.elementRef = elementRef;
48
+ this.toastService = toastService;
49
+ this.pageService = pageService;
50
+ this.moduleRef = moduleRef;
51
+ this.componentFactoryResolver = componentFactoryResolver;
52
+ this.detailsService = detailsService;
53
+ this.pageOptions = {
54
+ title: "",
55
+ showBackButton: true,
56
+ hideMenuButton: true,
57
+ };
58
+ this.formValid = false;
59
+ this.standardComponents = new QueryList();
60
+ this.dynamicContents = new QueryList();
61
+ this.selected$ = this.facade.selected$;
62
+ }
63
+ refreshProperties() {
64
+ this.baseInstance.detailsOptions = this.detailsOptions;
65
+ this.baseInstance.mode = this.mode;
66
+ this.baseInstance.uniqueProvider = this.uniqueProvider;
67
+ this.baseInstance.onPartialChange.pipe(this.takeUntilDestroy).subscribe(val => this.onPartialChange(val));
68
+ this.baseInstance.onChange.pipe(this.takeUntilDestroy).subscribe(val => this.onChange(val));
69
+ this.baseInstance.onValidChange.pipe(this.takeUntilDestroy).subscribe(val => this.onValidChange(val));
70
+ }
71
+ async ngOnInit() {
72
+ this.detailsService.init();
73
+ this.styleService.init(this.elementRef);
74
+ this.pageService.checkPermissions();
75
+ if (this.router.routerState.snapshot.url.split('?')[0].endsWith("/add")) {
76
+ this.mode = "create";
77
+ await this.generateComponents('add');
78
+ }
79
+ else {
80
+ this.mode = this.config.details ? "details" : "update";
81
+ if (this.mode === 'update') {
82
+ await this.generateComponents('edit');
83
+ }
84
+ this.activeRoute.params
85
+ .pipe(this.takeUntilDestroy)
86
+ .subscribe(({ id }) => {
87
+ this.facade.select(id);
88
+ this.id = id;
89
+ });
90
+ this.activeRoute.queryParams
91
+ .pipe(this.takeUntilDestroy)
92
+ .subscribe(({ edit }) => {
93
+ if (edit) {
94
+ this.mode = "update";
95
+ this.generateComponents('edit');
96
+ }
97
+ });
98
+ }
99
+ this.uniqueProvider = async (values) => {
100
+ const filter = {
101
+ query: [],
102
+ };
103
+ Object.keys(values).forEach((key) => {
104
+ filter.query.push({
105
+ key: key,
106
+ value: values[key],
107
+ type: "=",
108
+ });
109
+ });
110
+ if (this.id) {
111
+ filter.query.push({
112
+ key: "id",
113
+ value: this.id,
114
+ type: "!=",
115
+ });
116
+ }
117
+ const { totalCount } = await this.service.getList(filter).toPromise();
118
+ return !totalCount;
119
+ };
120
+ if (this.config.details) {
121
+ const compiledComponents = await this.dynamicComponentLoader.getComponentsWithFactories({
122
+ components: [
123
+ ...(this.config.details &&
124
+ this.config.details["components"] &&
125
+ this.config.details["components"].top
126
+ ? [this.config.details["components"].top]
127
+ : []),
128
+ ...(this.config.details &&
129
+ this.config.details["components"] &&
130
+ this.config.details["components"].bottom
131
+ ? [this.config.details["components"].bottom]
132
+ : []),
133
+ ],
134
+ });
135
+ this.detailsOptions = {
136
+ type: this.config.type,
137
+ item$: this.facade.selected$,
138
+ cellPipe: this.config.details ? this.config.details.cellPipe : null,
139
+ componentFactories: {
140
+ top: this.config.details &&
141
+ this.config.details["components"] &&
142
+ this.config.details["components"].top
143
+ ? compiledComponents.find((cc) => cc.component === this.config.details["components"].top).factory
144
+ : null,
145
+ bottom: this.config.details &&
146
+ this.config.details["components"] &&
147
+ this.config.details["components"].bottom
148
+ ? compiledComponents.find((cc) => cc.component === this.config.details["components"].bottom).factory
149
+ : null,
150
+ },
151
+ };
152
+ }
153
+ this.initPageOptions();
154
+ this.facade.selected$.pipe(this.takeUntilDestroy).subscribe(item => {
155
+ this.item = item;
156
+ this.initPageOptions();
157
+ this.cd.detectChanges();
158
+ });
159
+ this.refreshDynamicInstance();
160
+ }
161
+ async generateComponents(mode) {
162
+ const compiledComponents = await this.dynamicComponentLoader.getComponentsWithFactories({
163
+ components: [
164
+ ...(this.config[mode] &&
165
+ this.config[mode]["components"] &&
166
+ this.config[mode]["components"].top
167
+ ? [this.config[mode]["components"].top]
168
+ : []),
169
+ ...(this.config[mode] &&
170
+ this.config[mode]["components"] &&
171
+ this.config[mode]["components"].bottom
172
+ ? [this.config[mode]["components"].bottom]
173
+ : []),
174
+ ],
175
+ });
176
+ const topComponentFactory = compiledComponents.find((cc) => cc.component === this.config[mode]["components"]?.top)?.factory;
177
+ const bottomComponentFactory = compiledComponents.find((cc) => cc.component === this.config[mode]["components"]?.bottom)?.factory;
178
+ if (!this.topTpl.get(0) && topComponentFactory) {
179
+ this.topTpl.createComponent(topComponentFactory);
180
+ }
181
+ if (!this.bottomTpl.get(0) && bottomComponentFactory) {
182
+ this.bottomTpl.createComponent(bottomComponentFactory);
183
+ }
184
+ }
185
+ onPartialChange(val) {
186
+ this.formPartialValue = val;
187
+ }
188
+ onChange(val) {
189
+ this.formValue = val;
190
+ }
191
+ onValidChange(val) {
192
+ this.formValid = val;
193
+ }
194
+ initPageOptions() {
195
+ this.pageOptions = {
196
+ ...this.pageOptions,
197
+ title: this.getTitle(),
198
+ endButtons: this.getButtons(),
199
+ };
200
+ }
201
+ getButtons() {
202
+ const options = getModelOptions(this.config.type);
203
+ switch (this.mode) {
204
+ case "create":
205
+ return [
206
+ {
207
+ icon: "add",
208
+ text: "add",
209
+ handler: () => {
210
+ if (this.checkFirstInvalid()) {
211
+ return;
212
+ }
213
+ this.facade.create(this.formValue);
214
+ this.location.back();
215
+ },
216
+ },
217
+ ];
218
+ case "update":
219
+ return [
220
+ ...(this.config.details
221
+ ? [
222
+ {
223
+ icon: "close",
224
+ text: "cancel",
225
+ handler: () => {
226
+ this.mode = "details";
227
+ this.initPageOptions();
228
+ this.topTpl.clear();
229
+ this.bottomTpl.clear();
230
+ },
231
+ disabled$: new BehaviorSubject(false),
232
+ },
233
+ ]
234
+ : []),
235
+ {
236
+ icon: "save",
237
+ text: "save",
238
+ handler: () => {
239
+ if (this.checkFirstInvalid()) {
240
+ return;
241
+ }
242
+ this.formPartialValue.id = this.id;
243
+ this.facade.updatePartial(this.formPartialValue);
244
+ if (this.config.details) {
245
+ this.mode = "details";
246
+ this.initPageOptions();
247
+ }
248
+ else {
249
+ this.location.back();
250
+ }
251
+ },
252
+ },
253
+ ];
254
+ case "details":
255
+ return this.config.edit && (!options?.update?.enabled || SpecificationService.valid(this.item, options?.update?.enabled))
256
+ ? [
257
+ {
258
+ icon: "create",
259
+ text: "edit",
260
+ handler: () => {
261
+ this.mode = "update";
262
+ this.generateComponents('edit');
263
+ this.initPageOptions();
264
+ },
265
+ disabled$: new BehaviorSubject(false),
266
+ },
267
+ ]
268
+ : [];
269
+ }
270
+ }
271
+ getTitle() {
272
+ const options = getModelOptions(this.config.type);
273
+ const prefix = options.titleKey && this.item ? this.removeParagraph(this.item[options.titleKey]) + ' - ' : '';
274
+ switch (this.mode) {
275
+ case "create":
276
+ return "add";
277
+ case "update":
278
+ return prefix + this.translateService.instant("change");
279
+ case "details":
280
+ return prefix + this.translateService.instant("details");
281
+ }
282
+ }
283
+ removeParagraph(val) {
284
+ if (!val || val.indexOf('<p>') !== 0)
285
+ return val;
286
+ const div = document.createElement("div");
287
+ div.innerHTML = val;
288
+ const item = div.querySelectorAll("p").item(0);
289
+ return item.innerHTML;
290
+ }
291
+ checkFirstInvalid() {
292
+ this.cd.detectChanges();
293
+ const form = this.template === 'default'
294
+ ? this.standardComponents.first.formComponents.first.form
295
+ : this.baseInstance.formComponents.first.form;
296
+ this.cd.detectChanges();
297
+ if (form.valid)
298
+ return false;
299
+ const invalidFields = [];
300
+ this.getInvalidFields(form, invalidFields, '');
301
+ this.toastService.info({
302
+ title: this.translateService.instant('INPUT.ERRORS.requires'),
303
+ message: invalidFields.slice(0, 3).join('<br/>')
304
+ });
305
+ return true;
306
+ }
307
+ getInvalidFields(control, invalidFields, baseField, key = null) {
308
+ if (control.valid)
309
+ return;
310
+ const field = key ? baseField + ' > ' + this.translateService.instant('MODEL.' + key) : baseField;
311
+ if (control.errors?.customMessage) {
312
+ invalidFields.push(field + ` (${control.errors.customMessage})`);
313
+ return;
314
+ }
315
+ if (control instanceof UntypedFormControl) {
316
+ invalidFields.push(field);
317
+ }
318
+ if (control instanceof UntypedFormGroup) {
319
+ Object.keys(control.controls).forEach(groupKey => {
320
+ this.getInvalidFields(control.controls[groupKey], invalidFields, field, groupKey);
321
+ });
322
+ }
323
+ if (control instanceof UntypedFormArray) {
324
+ control.controls.forEach((c, index) => {
325
+ this.getInvalidFields(c, invalidFields, field + `(${index + 1})`);
326
+ });
327
+ }
328
+ }
329
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ItemComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.CrudFacade }, { token: i3.CrudService }, { token: i1.ActivatedRoute }, { token: i4.DynamicComponentLoader }, { token: i5.TranslateService }, { token: i6.CrudFullConfig }, { token: i7.Location }, { token: i0.ChangeDetectorRef }, { token: i4.AuthService }, { token: i4.StyleService }, { token: i0.ElementRef }, { token: i4.ToastService }, { token: i8.PageService }, { token: i0.NgModuleRef }, { token: i0.ComponentFactoryResolver }, { token: i4.DetailsService }], target: i0.ɵɵFactoryTarget.Component }); }
330
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.3", type: ItemComponent, selector: "smart-crud-item-page", viewQueries: [{ propertyName: "content", first: true, predicate: IonContent, descendants: true, static: true }, { propertyName: "contentTpl", first: true, predicate: ["contentTpl"], descendants: true, read: TemplateRef }, { propertyName: "topTpl", first: true, predicate: ["topTpl"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "bottomTpl", first: true, predicate: ["bottomTpl"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "standardComponents", predicate: ItemStandardComponent, descendants: true, read: ItemStandardComponent }, { propertyName: "dynamicContents", predicate: DynamicContentDirective, descendants: true, read: DynamicContentDirective }], usesInheritance: true, ngImport: i0, template: `
331
+ <smart-page [options]="pageOptions">
332
+ <div #topTpl class="top-content"></div>
333
+ <smart-crud-item-standard-page *ngIf="template === 'default'"
334
+ [detailsOptions]="detailsOptions"
335
+ [mode]="mode"
336
+ [uniqueProvider]="uniqueProvider"
337
+ (onPartialChange)="onPartialChange($event)"
338
+ (onChange)="onChange($event)"
339
+ (onValidChange)="onValidChange($event)"
340
+ >
341
+ <ng-container [ngTemplateOutlet]="contentTpl"></ng-container>
342
+ </smart-crud-item-standard-page>
343
+ <ng-template #contentTpl>
344
+ <ng-content></ng-content>
345
+ </ng-template>
346
+ <div class="dynamic-content"></div>
347
+ <div #bottomTpl class="bottom-content"></div>
348
+ </smart-page>
349
+ `, isInline: true, dependencies: [{ kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.PageComponent, selector: "smart-page", inputs: ["options"] }, { kind: "directive", type: i4.DynamicContentDirective, selector: ".dynamic-content" }, { kind: "component", type: i9.ItemStandardComponent, selector: "smart-crud-item-standard-page" }] }); }
350
+ }
351
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ItemComponent, decorators: [{
352
+ type: Component,
353
+ args: [{
354
+ selector: "smart-crud-item-page",
355
+ template: `
356
+ <smart-page [options]="pageOptions">
357
+ <div #topTpl class="top-content"></div>
358
+ <smart-crud-item-standard-page *ngIf="template === 'default'"
359
+ [detailsOptions]="detailsOptions"
360
+ [mode]="mode"
361
+ [uniqueProvider]="uniqueProvider"
362
+ (onPartialChange)="onPartialChange($event)"
363
+ (onChange)="onChange($event)"
364
+ (onValidChange)="onValidChange($event)"
365
+ >
366
+ <ng-container [ngTemplateOutlet]="contentTpl"></ng-container>
367
+ </smart-crud-item-standard-page>
368
+ <ng-template #contentTpl>
369
+ <ng-content></ng-content>
370
+ </ng-template>
371
+ <div class="dynamic-content"></div>
372
+ <div #bottomTpl class="bottom-content"></div>
373
+ </smart-page>
374
+ `
375
+ }]
376
+ }], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.CrudFacade }, { type: i3.CrudService }, { type: i1.ActivatedRoute }, { type: i4.DynamicComponentLoader }, { type: i5.TranslateService }, { type: i6.CrudFullConfig }, { type: i7.Location }, { type: i0.ChangeDetectorRef }, { type: i4.AuthService }, { type: i4.StyleService }, { type: i0.ElementRef }, { type: i4.ToastService }, { type: i8.PageService }, { type: i0.NgModuleRef }, { type: i0.ComponentFactoryResolver }, { type: i4.DetailsService }]; }, propDecorators: { standardComponents: [{
377
+ type: ViewChildren,
378
+ args: [ItemStandardComponent, { read: ItemStandardComponent }]
379
+ }], content: [{
380
+ type: ViewChild,
381
+ args: [IonContent, { static: true }]
382
+ }], contentTpl: [{
383
+ type: ViewChild,
384
+ args: ["contentTpl", { read: TemplateRef, static: false }]
385
+ }], topTpl: [{
386
+ type: ViewChild,
387
+ args: ["topTpl", { read: ViewContainerRef, static: true }]
388
+ }], bottomTpl: [{
389
+ type: ViewChild,
390
+ args: ["bottomTpl", { read: ViewContainerRef, static: true }]
391
+ }], dynamicContents: [{
392
+ type: ViewChildren,
393
+ args: [DynamicContentDirective, { read: DynamicContentDirective }]
394
+ }] } });
395
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NydWQvc2hlbGwvYW5ndWxhci9zcmMvbGliL3BhZ2VzL2l0ZW0vaXRlbS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQUUsd0JBQXdCLEVBQ25DLFVBQVUsRUFBRSxXQUFXLEVBRXZCLFNBQVMsRUFBRSxXQUFXLEVBQ3RCLFNBQVMsRUFDVCxZQUFZLEVBQUUsZ0JBQWdCLEVBQy9CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFckQsT0FBTyxFQUNMLFdBQVcsRUFBRSxzQkFBc0IsRUFBRSxjQUFjLEVBQ25ELHNCQUFzQixFQUFFLHVCQUF1QixFQUdqQyxZQUFZLEVBQUUsWUFBWSxHQUN6QyxNQUFNLHVCQUF1QixDQUFDO0FBRS9CLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUUvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFrQixnQkFBZ0Is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QUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSTdELE1BQU07c0JBREwsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJN0QsU0FBUztzQkFEUixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUloRSxlQUFlO3NCQURkLFlBQVk7dUJBQUMsdUJBQXVCLEVBQUUsRUFBRSxJQUFJLEVBQUUsdUJBQXVCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIEVsZW1lbnRSZWYsIE5nTW9kdWxlUmVmLFxuICBPbkluaXQsXG4gIFF1ZXJ5TGlzdCwgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLCBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuXG5pbXBvcnQge1xuICBBdXRoU2VydmljZSwgQ3JlYXRlRHluYW1pY0NvbXBvbmVudCwgRGV0YWlsc1NlcnZpY2UsXG4gIER5bmFtaWNDb21wb25lbnRMb2FkZXIsIER5bmFtaWNDb250ZW50RGlyZWN0aXZlLCBJQ2VsbFBpcGUsXG4gIElEZXRhaWxzT3B0aW9ucyxcbiAgSUljb25CdXR0b25PcHRpb25zLFxuICBJUGFnZU9wdGlvbnMsIFN0eWxlU2VydmljZSwgVG9hc3RTZXJ2aWNlLFxufSBmcm9tIFwiQHNtYXJ0c29mdDAwMS9hbmd1bGFyXCI7XG5pbXBvcnQgeyBJRW50aXR5IH0gZnJvbSBcIkBzbWFydHNvZnQwMDEvZG9tYWluLWNvcmVcIjtcbmltcG9ydCB7Z2V0TW9kZWxPcHRpb25zfSBmcm9tIFwiQHNtYXJ0c29mdDAwMS9tb2RlbHNcIjtcbmltcG9ydCB7IFNwZWNpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSBcIkBzbWFydHNvZnQwMDEvdXRpbHNcIjtcblxuaW1wb3J0IHsgQ3J1ZEZhY2FkZSB9IGZyb20gXCIuLi8uLi8rc3RhdGUvY3J1ZC5mYWNhZGVcIjtcbmltcG9ydCB7IENydWRGdWxsQ29uZmlnIH0gZnJvbSBcIi4uLy4uL2NydWQuY29uZmlnXCI7XG5pbXBvcnQgeyBDcnVkU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9jcnVkL2NydWQuc2VydmljZVwiO1xuaW1wb3J0IHsgSUNydWRGaWx0ZXIgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2ludGVyZmFjZXNcIjtcbmltcG9ydCB7IElvbkNvbnRlbnQgfSBmcm9tIFwiQGlvbmljL2FuZ3VsYXJcIjtcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBVbnR5cGVkRm9ybUFycmF5LCBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiXG5pbXBvcnQge0l0ZW1TdGFuZGFyZENvbXBvbmVudH0gZnJvbSBcIi4vc3RhbmRhcmQvc3RhbmRhcmQuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBDcnVkSXRlbVBhZ2VCYXNlQ29tcG9uZW50IH0gZnJvbSBcIi4vYmFzZS9iYXNlLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgUGFnZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvcGFnZS9wYWdlLnNlcnZpY2VcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcInNtYXJ0LWNydWQtaXRlbS1wYWdlXCIsXG4gIHRlbXBsYXRlOiBgXG4gICAgPHNtYXJ0LXBhZ2UgW29wdGlvbnNdPVwicGFnZU9wdGlvbnNcIj5cbiAgICAgIDxkaXYgI3RvcFRwbCBjbGFzcz1cInRvcC1jb250ZW50XCI+PC9kaXY+XG4gICAgICA8c21hcnQtY3J1ZC1pdGVtLXN0YW5kYXJkLXBhZ2UgKm5nSWY9XCJ0ZW1wbGF0ZSA9PT0gJ2RlZmF1bHQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGV0YWlsc09wdGlvbnNdPVwiZGV0YWlsc09wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2RlXT1cIm1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1bmlxdWVQcm92aWRlcl09XCJ1bmlxdWVQcm92aWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uUGFydGlhbENoYW5nZSk9XCJvblBhcnRpYWxDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvblZhbGlkQ2hhbmdlKT1cIm9uVmFsaWRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udGVudFRwbFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9zbWFydC1jcnVkLWl0ZW0tc3RhbmRhcmQtcGFnZT5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjY29udGVudFRwbD5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWNvbnRlbnRcIj48L2Rpdj5cbiAgICAgIDxkaXYgI2JvdHRvbVRwbCBjbGFzcz1cImJvdHRvbS1jb250ZW50XCI+PC9kaXY+XG4gICAgPC9zbWFydC1wYWdlPlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIEl0ZW1Db21wb25lbnQ8VCBleHRlbmRzIElFbnRpdHk8c3RyaW5nPj5cbiAgICBleHRlbmRzIENyZWF0ZUR5bmFtaWNDb21wb25lbnQ8Q3J1ZEl0ZW1QYWdlQmFzZUNvbXBvbmVudDxhbnk+PignY3J1ZC1pdGVtLXBhZ2UnKVxuICBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgX21vZGU6IHN0cmluZztcblxuICBwYWdlT3B0aW9uczogSVBhZ2VPcHRpb25zID0ge1xuICAgIHRpdGxlOiBcIlwiLFxuICAgIHNob3dCYWNrQnV0dG9uOiB0cnVlLFxuICAgIGhpZGVNZW51QnV0dG9uOiB0cnVlLFxuICB9O1xuICBkZXRhaWxzT3B0aW9uczogSURldGFpbHNPcHRpb25zPFQ+O1xuICBpZDogc3RyaW5nO1xuICBmb3JtVmFsdWU6IFQ7XG4gIGZvcm1WYWxpZCA9IGZhbHNlO1xuICBpdGVtOiBUO1xuICBmb3JtUGFydGlhbFZhbHVlOiBQYXJ0aWFsPFQ+O1xuICB1bmlxdWVQcm92aWRlcjogKHZhbHVlczogUmVjb3JkPGtleW9mIFQsIGFueT4pID0+IFByb21pc2U8Ym9vbGVhbj47XG5cbiAgc2V0IG1vZGUodmFsOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9tb2RlID0gdmFsO1xuICAgIHRoaXMucmVmcmVzaER5bmFtaWNJbnN0YW5jZSgpO1xuICB9XG4gIGdldCBtb2RlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX21vZGU7XG4gIH1cblxuXG4gIHNlbGVjdGVkJDogT2JzZXJ2YWJsZTxUPjtcblxuICBAVmlld0NoaWxkcmVuKEl0ZW1TdGFuZGFyZENvbXBvbmVudCwgeyByZWFkOiBJdGVtU3RhbmRhcmRDb21wb25lbnQgfSkgc3RhbmRhcmRDb21wb25lbnRzID0gbmV3IFF1ZXJ5TGlzdDxJdGVtU3RhbmRhcmRDb21wb25lbnQ8YW55Pj4oKTtcbiAgQFZpZXdDaGlsZChJb25Db250ZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBjb250ZW50OiBJb25Db250ZW50O1xuXG4gIEBWaWV3Q2hpbGQoXCJjb250ZW50VHBsXCIsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogZmFsc2UgfSlcbiAgY29udGVudFRwbDogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAVmlld0NoaWxkKFwidG9wVHBsXCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIHRvcFRwbDogVmlld0NvbnRhaW5lclJlZjtcblxuICBAVmlld0NoaWxkKFwiYm90dG9tVHBsXCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIGJvdHRvbVRwbDogVmlld0NvbnRhaW5lclJlZjtcblxuICBAVmlld0NoaWxkcmVuKER5bmFtaWNDb250ZW50RGlyZWN0aXZlLCB7IHJlYWQ6IER5bmFtaWNDb250ZW50RGlyZWN0aXZlIH0pXG4gIGR5bmFtaWNDb250ZW50cyA9IG5ldyBRdWVyeUxpc3Q8RHluYW1pY0NvbnRlbnREaXJlY3RpdmU+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGFjdGl2ZVJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIGZhY2FkZTogQ3J1ZEZhY2FkZTxUPixcbiAgICBwcml2YXRlIHNlcnZpY2U6IENydWRTZXJ2aWNlPFQ+LFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgZHluYW1pY0NvbXBvbmVudExvYWRlcjogRHluYW1pY0NvbXBvbmVudExvYWRlcjxUPixcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHVibGljIGNvbmZpZzogQ3J1ZEZ1bGxDb25maWc8VD4sXG4gICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3R5bGVTZXJ2aWNlOiBTdHlsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwYWdlU2VydmljZTogUGFnZVNlcnZpY2U8VD4sXG4gICAgcHJpdmF0ZSBtb2R1bGVSZWY6IE5nTW9kdWxlUmVmPGFueT4sXG4gICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwcml2YXRlIGRldGFpbHNTZXJ2aWNlOiBEZXRhaWxzU2VydmljZVxuICApIHtcbiAgICBzdXBlcihjZCwgbW9kdWxlUmVmLCBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpO1xuXG4gICAgdGhpcy5zZWxlY3RlZCQgPSB0aGlzLmZhY2FkZS5zZWxlY3RlZCQ7XG4gIH1cblxuICByZWZyZXNoUHJvcGVydGllcygpIHtcbiAgICB0aGlzLmJhc2VJbnN0YW5jZS5kZXRhaWxzT3B0aW9ucyA9IHRoaXMuZGV0YWlsc09wdGlvbnM7XG4gICAgdGhpcy5iYXNlSW5zdGFuY2UubW9kZSA9IHRoaXMubW9kZTtcbiAgICB0aGlzLmJhc2VJbnN0YW5jZS51bmlxdWVQcm92aWRlciA9IHRoaXMudW5pcXVlUHJvdmlkZXI7XG4gICAgdGhpcy5iYXNlSW5zdGFuY2Uub25QYXJ0aWFsQ2hhbmdlLnBpcGUodGhpcy50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUodmFsID0+IHRoaXMub25QYXJ0aWFsQ2hhbmdlKHZhbCkpO1xuICAgIHRoaXMuYmFzZUluc3RhbmNlLm9uQ2hhbmdlLnBpcGUodGhpcy50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUodmFsID0+IHRoaXMub25DaGFuZ2UodmFsKSk7XG4gICAgdGhpcy5iYXNlSW5zdGFuY2Uub25WYWxpZENoYW5nZS5waXBlKHRoaXMudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKHZhbCA9PiB0aGlzLm9uVmFsaWRDaGFuZ2UodmFsKSk7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmRldGFpbHNTZXJ2aWNlLmluaXQoKTtcbiAgICB0aGlzLnN0eWxlU2VydmljZS5pbml0KHRoaXMuZWxlbWVudFJlZik7XG5cbiAgICB0aGlzLnBhZ2VTZXJ2aWNlLmNoZWNrUGVybWlzc2lvbnMoKTtcblxuICAgIGlmICh0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC51cmwuc3BsaXQoJz8nKVswXS5lbmRzV2l0aChcIi9hZGRcIikpIHtcbiAgICAgIHRoaXMubW9kZSA9IFwiY3JlYXRlXCI7XG4gICAgICBhd2FpdCB0aGlzLmdlbmVyYXRlQ29tcG9uZW50cygnYWRkJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubW9kZSA9IHRoaXMuY29uZmlnLmRldGFpbHMgPyBcImRldGFpbHNcIiA6IFwidXBkYXRlXCI7XG5cbiAgICAgIGlmICh0aGlzLm1vZGUgPT09ICd1cGRhdGUnKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZ2VuZXJhdGVDb21wb25lbnRzKCdlZGl0Jyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYWN0aXZlUm91dGUucGFyYW1zXG4gICAgICAgIC5waXBlKHRoaXMudGFrZVVudGlsRGVzdHJveSlcbiAgICAgICAgLnN1YnNjcmliZSgoeyBpZCB9KSA9PiB7XG4gICAgICAgICAgdGhpcy5mYWNhZGUuc2VsZWN0KGlkKTtcbiAgICAgICAgICB0aGlzLmlkID0gaWQ7XG4gICAgICAgIH0pO1xuXG4gICAgICB0aGlzLmFjdGl2ZVJvdXRlLnF1ZXJ5UGFyYW1zXG4gICAgICAgICAgLnBpcGUodGhpcy50YWtlVW50aWxEZXN0cm95KVxuICAgICAgICAgIC5zdWJzY3JpYmUoKHsgZWRpdCB9KSA9PiB7XG4gICAgICAgICAgICBpZiAoZWRpdCkge1xuICAgICAgICAgICAgICB0aGlzLm1vZGUgPSBcInVwZGF0ZVwiO1xuICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlQ29tcG9uZW50cygnZWRpdCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMudW5pcXVlUHJvdmlkZXIgPSBhc3luYyAodmFsdWVzKSA9PiB7XG4gICAgICBjb25zdCBmaWx0ZXI6IElDcnVkRmlsdGVyID0ge1xuICAgICAgICBxdWVyeTogW10sXG4gICAgICB9O1xuXG4gICAgICBPYmplY3Qua2V5cyh2YWx1ZXMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBmaWx0ZXIucXVlcnkucHVzaCh7XG4gICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgdmFsdWU6IHZhbHVlc1trZXldLFxuICAgICAgICAgIHR5cGU6IFwiPVwiLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5pZCkge1xuICAgICAgICBmaWx0ZXIucXVlcnkucHVzaCh7XG4gICAgICAgICAga2V5OiBcImlkXCIsXG4gICAgICAgICAgdmFsdWU6IHRoaXMuaWQsXG4gICAgICAgICAgdHlwZTogXCIhPVwiLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgdG90YWxDb3VudCB9ID0gYXdhaXQgdGhpcy5zZXJ2aWNlLmdldExpc3QoZmlsdGVyKS50b1Byb21pc2UoKTtcblxuICAgICAgcmV0dXJuICF0b3RhbENvdW50O1xuICAgIH07XG5cbiAgICBpZiAodGhpcy5jb25maWcuZGV0YWlscykge1xuICAgICAgY29uc3QgY29tcGlsZWRDb21wb25lbnRzID0gYXdhaXQgdGhpcy5keW5hbWljQ29tcG9uZW50TG9hZGVyLmdldENvbXBvbmVudHNXaXRoRmFjdG9yaWVzKFxuICAgICAgICB7XG4gICAgICAgICAgY29tcG9uZW50czogW1xuICAgICAgICAgICAgLi4uKHRoaXMuY29uZmlnLmRldGFpbHMgJiZcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLmRldGFpbHNbXCJjb21wb25lbnRzXCJdICYmXG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5kZXRhaWxzW1wiY29tcG9uZW50c1wiXS50b3BcbiAgICAgICAgICAgICAgPyBbdGhpcy5jb25maWcuZGV0YWlsc1tcImNvbXBvbmVudHNcIl0udG9wXVxuICAgICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgICAgIC4uLih0aGlzLmNvbmZpZy5kZXRhaWxzICYmXG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5kZXRhaWxzW1wiY29tcG9uZW50c1wiXSAmJlxuICAgICAgICAgICAgdGhpcy5jb25maWcuZGV0YWlsc1tcImNvbXBvbmVudHNcIl0uYm90dG9tXG4gICAgICAgICAgICAgICAgPyBbdGhpcy5jb25maWcuZGV0YWlsc1tcImNvbXBvbmVudHNcIl0uYm90dG9tXVxuICAgICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIHRoaXMuZGV0YWlsc09wdGlvbnMgPSB7XG4gICAgICAgIHR5cGU6IHRoaXMuY29uZmlnLnR5cGUsXG4gICAgICAgIGl0ZW0kOiB0aGlzLmZhY2FkZS5zZWxlY3RlZCQsXG4gICAgICAgIGNlbGxQaXBlOiB0aGlzLmNvbmZpZy5kZXRhaWxzID8gKHRoaXMuY29uZmlnLmRldGFpbHMgYXMge2NlbGxQaXBlPzogSUNlbGxQaXBlPFQ+fSkuY2VsbFBpcGUgOiBudWxsLFxuICAgICAgICBjb21wb25lbnRGYWN0b3JpZXM6IHtcbiAgICAgICAgICB0b3A6XG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5kZXRhaWxzICYmXG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5kZXRhaWxzW1wiY29tcG9uZW50c1wiXSAmJlxuICAgICAgICAgICAgdGhpcy5jb25maWcuZGV0YWlsc1tcImNvbXBvbmVudHNcIl0udG9wXG4gICAgICAgICAgICAgID8gY29tcGlsZWRDb21wb25lbnRzLmZpbmQoXG4gICAgICAgICAgICAgICAgICAoY2MpID0+IGNjLmNvbXBvbmVudCA9PT0gdGhpcy5jb25maWcuZGV0YWlsc1tcImNvbXBvbmVudHNcIl0udG9wXG4gICAgICAgICAgICAgICAgKS5mYWN0b3J5XG4gICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICBib3R0b206XG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnLmRldGFpbHMgJiZcbiAgICAgICAgICAgICAgdGhpcy5jb25maWcuZGV0YWlsc1tcImNvbXBvbmVudHNcIl0gJiZcbiAgICAgICAgICAgICAgdGhpcy5jb25maWcuZGV0YWlsc1tcImNvbXBvbmVudHNcIl0uYm90dG9tXG4gICAgICAgICAgICAgICAgICA/IGNvbXBpbGVkQ29tcG9uZW50cy5maW5kKFxuICAgICAgICAgICAgICAgICAgKGNjKSA9PiBjYy5jb21wb25lbnQgPT09IHRoaXMuY29uZmlnLmRldGFpbHNbXCJjb21wb25lbnRzXCJdLmJvdHRvbVxuICAgICAgICAgICAgICAgICAgKS5mYWN0b3J5XG4gICAgICAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIHRoaXMuaW5pdFBhZ2VPcHRpb25zKCk7XG5cbiAgICB0aGlzLmZhY2FkZS5zZWxlY3RlZCQucGlwZSh0aGlzLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZShpdGVtID0+IHtcbiAgICAgIHRoaXMuaXRlbSA9IGl0ZW07XG4gICAgICB0aGlzLmluaXRQYWdlT3B0aW9ucygpO1xuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlZnJlc2hEeW5hbWljSW5zdGFuY2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2VuZXJhdGVDb21wb25lbnRzKG1vZGU6ICdhZGQnIHwgJ2VkaXQnKSB7XG4gICAgY29uc3QgY29tcGlsZWRDb21wb25lbnRzID0gYXdhaXQgdGhpcy5keW5hbWljQ29tcG9uZW50TG9hZGVyLmdldENvbXBvbmVudHNXaXRoRmFjdG9yaWVzKFxuICAgICAgICB7XG4gICAgICAgICAgY29tcG9uZW50czogW1xuICAgICAgICAgICAgLi4uKHRoaXMuY29uZmlnW21vZGVdICYmXG4gICAgICAgICAgICB0aGlzLmNvbmZpZ1ttb2RlXVtcImNvbXBvbmVudHNcIl0gJiZcbiAgICAgICAgICAgIHRoaXMuY29uZmlnW21vZGVdW1wiY29tcG9uZW50c1wiXS50b3BcbiAgICAgICAgICAgICAgICA/IFt0aGlzLmNvbmZpZ1ttb2RlXVtcImNvbXBvbmVudHNcIl0udG9wXVxuICAgICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgICAgLi4uKHRoaXMuY29uZmlnW21vZGVdICYmXG4gICAgICAgICAgICB0aGlzLmNvbmZpZ1ttb2RlXVtcImNvbXBvbmVudHNcIl0gJiZcbiAgICAgICAgICAgIHRoaXMuY29uZmlnW21vZGVdW1wiY29tcG9uZW50c1wiXS5ib3R0b21cbiAgICAgICAgICAgICAgICA/IFt0aGlzLmNvbmZpZ1ttb2RlXVtcImNvbXBvbmVudHNcIl0uYm90dG9tXVxuICAgICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgdG9wQ29tcG9uZW50RmFjdG9yeSA9IGNvbXBpbGVkQ29tcG9uZW50cy5maW5kKFxuICAgICAgICAoY2MpID0+IGNjLmNvbXBvbmVudCA9PT0gdGhpcy5jb25maWdbbW9kZV1bXCJjb21wb25lbnRzXCJdPy50b3BcbiAgICApPy5mYWN0b3J5O1xuXG4gICAgY29uc3QgYm90dG9tQ29tcG9uZW50RmFjdG9yeSA9IGNvbXBpbGVkQ29tcG9uZW50cy5maW5kKFxuICAgICAgICAoY2MpID0+IGNjLmNvbXBvbmVudCA9PT0gdGhpcy5jb25maWdbbW9kZV1bXCJjb21wb25lbnRzXCJdPy5ib3R0b21cbiAgICApPy5mYWN0b3J5O1xuXG4gICAgaWYgKCF0aGlzLnRvcFRwbC5nZXQoMCkgJiYgdG9wQ29tcG9uZW50RmFjdG9yeSkge1xuICAgICAgdGhpcy50b3BUcGwuY3JlYXRlQ29tcG9uZW50KHRvcENvbXBvbmVudEZhY3RvcnkpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5ib3R0b21UcGwuZ2V0KDApICYmIGJvdHRvbUNvbXBvbmVudEZhY3RvcnkpIHtcbiAgICAgIHRoaXMuYm90dG9tVHBsLmNyZWF0ZUNvbXBvbmVudChib3R0b21Db21wb25lbnRGYWN0b3J5KTtcbiAgICB9XG4gIH1cblxuICBvblBhcnRpYWxDaGFuZ2UodmFsOiBQYXJ0aWFsPFQ+KSB7XG4gICAgdGhpcy5mb3JtUGFydGlhbFZhbHVlID0gdmFsO1xuICB9XG5cbiAgb25DaGFuZ2UodmFsOiBUKSB7XG4gICAgdGhpcy5mb3JtVmFsdWUgPSB2YWw7XG4gIH1cblxuICBvblZhbGlkQ2hhbmdlKHZhbDogYm9vbGVhbikge1xuICAgIHRoaXMuZm9ybVZhbGlkID0gdmFsO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0UGFnZU9wdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5wYWdlT3B0aW9ucyA9IHtcbiAgICAgIC4uLnRoaXMucGFnZU9wdGlvbnMsXG4gICAgICB0aXRsZTogdGhpcy5nZXRUaXRsZSgpLFxuICAgICAgZW5kQnV0dG9uczogdGhpcy5nZXRCdXR0b25zKCksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QnV0dG9ucygpOiBBcnJheTxJSWNvbkJ1dHRvbk9wdGlvbnM+IHtcbiAgICBjb25zdCBvcHRpb25zID0gZ2V0TW9kZWxPcHRpb25zKHRoaXMuY29uZmlnLnR5cGUpO1xuXG4gICAgc3dpdGNoICh0aGlzLm1vZGUpIHtcbiAgICAgIGNhc2UgXCJjcmVhdGVcIjpcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpY29uOiBcImFkZFwiLFxuICAgICAgICAgICAgdGV4dDogXCJhZGRcIixcbiAgICAgICAgICAgIGhhbmRsZXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tGaXJzdEludmFsaWQoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuZmFjYWRlLmNyZWF0ZSh0aGlzLmZvcm1WYWx1ZSk7XG4gICAgICAgICAgICAgIHRoaXMubG9jYXRpb24uYmFjaygpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgY2FzZSBcInVwZGF0ZVwiOlxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIC4uLih0aGlzLmNvbmZpZy5kZXRhaWxzXG4gICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBpY29uOiBcImNsb3NlXCIsXG4gICAgICAgICAgICAgICAgICB0ZXh0OiBcImNhbmNlbFwiLFxuICAgICAgICAgICAgICAgICAgaGFuZGxlcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGUgPSBcImRldGFpbHNcIjtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0UGFnZU9wdGlvbnMoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b3BUcGwuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ib3R0b21UcGwuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZCQ6IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGljb246IFwic2F2ZVwiLFxuICAgICAgICAgICAgdGV4dDogXCJzYXZlXCIsXG4gICAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLmNoZWNrRmlyc3RJbnZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLmZvcm1QYXJ0aWFsVmFsdWUuaWQgPSB0aGlzLmlkO1xuICAgICAgICAgICAgICB0aGlzLmZhY2FkZS51cGRhdGVQYXJ0aWFsKHRoaXMuZm9ybVBhcnRpYWxWYWx1ZSBhcyBhbnkpO1xuXG4gICAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy5kZXRhaWxzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb2RlID0gXCJkZXRhaWxzXCI7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0UGFnZU9wdGlvbnMoKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2F0aW9uLmJhY2soKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgY2FzZSBcImRldGFpbHNcIjpcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmVkaXQgJiYgKFxuICAgICAgICAgICAgIW9wdGlvbnM/LnVwZGF0ZT8uZW5hYmxlZCB8fCBTcGVjaWZpY2F0aW9uU2VydmljZS52YWxpZCh0aGlzLml0ZW0sIG9wdGlvbnM/LnVwZGF0ZT8uZW5hYmxlZClcbiAgICAgICAgKVxuICAgICAgICAgID8gW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWNvbjogXCJjcmVhdGVcIixcbiAgICAgICAgICAgICAgICB0ZXh0OiBcImVkaXRcIixcbiAgICAgICAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLm1vZGUgPSBcInVwZGF0ZVwiO1xuICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUNvbXBvbmVudHMoJ2VkaXQnKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdFBhZ2VPcHRpb25zKCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZCQ6IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXVxuICAgICAgICAgIDogW107XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRUaXRsZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBnZXRNb2RlbE9wdGlvbnModGhpcy5jb25maWcudHlwZSk7XG5cbiAgICBjb25zdCBwcmVmaXggPSBvcHRpb25zLnRpdGxlS2V5ICYmIHRoaXMuaXRlbSA/IHRoaXMucmVtb3ZlUGFyYWdyYXBoKHRoaXMuaXRlbVtvcHRpb25zLnRpdGxlS2V5XSkgKyAnIC0gJyA6ICcnO1xuXG4gICAgc3dpdGNoICh0aGlzLm1vZGUpIHtcbiAgICAgIGNhc2UgXCJjcmVhdGVcIjpcbiAgICAgICAgcmV0dXJuIFwiYWRkXCI7XG4gICAgICBjYXNlIFwidXBkYXRlXCI6XG4gICAgICAgIHJldHVybiBwcmVmaXggKyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImNoYW5nZVwiKTtcbiAgICAgIGNhc2UgXCJkZXRhaWxzXCI6XG4gICAgICAgIHJldHVybiBwcmVmaXggKyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImRldGFpbHNcIik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVQYXJhZ3JhcGgodmFsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghdmFsIHx8IHZhbC5pbmRleE9mKCc8cD4nKSAhPT0gMCkgcmV0dXJuIHZhbDtcblxuICAgIGNvbnN0IGRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgIGRpdi5pbm5lckhUTUw9dmFsO1xuXG4gICAgY29uc3QgaXRlbSA9IGRpdi5xdWVyeVNlbGVjdG9yQWxsKFwicFwiKS5pdGVtKDApO1xuXG4gICAgcmV0dXJuIGl0ZW0uaW5uZXJIVE1MO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0ZpcnN0SW52YWxpZCgpOiBib29sZWFuIHtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcblxuICAgIGNvbnN0IGZvcm0gPSB0aGlzLnRlbXBsYXRlID09PSAnZGVmYXVsdCdcbiAgICAgICAgPyB0aGlzLnN0YW5kYXJkQ29tcG9uZW50cy5maXJzdC5mb3JtQ29tcG9uZW50cy5maXJzdC5mb3JtXG4gICAgICAgIDogdGhpcy5iYXNlSW5zdGFuY2UuZm9ybUNvbXBvbmVudHMuZmlyc3QuZm9ybTtcblxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgaWYgKGZvcm0udmFsaWQpIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IGludmFsaWRGaWVsZHMgPSBbXTtcblxuICAgIHRoaXMuZ2V0SW52YWxpZEZpZWxkcyhmb3JtLCBpbnZhbGlkRmllbGRzLCAnJyk7XG5cbiAgICB0aGlzLnRvYXN0U2VydmljZS5pbmZvKHtcbiAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnSU5QVVQuRVJST1JTLnJlcXVpcmVzJyksXG4gICAgICBtZXNzYWdlOiBpbnZhbGlkRmllbGRzLnNsaWNlKDAsIDMpLmpvaW4oJzxici8+JylcbiAgICB9KTtcblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbnZhbGlkRmllbGRzKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgaW52YWxpZEZpZWxkczogYW55W10sIGJhc2VGaWVsZDogc3RyaW5nLCBrZXkgPSBudWxsKSB7XG4gICAgaWYgKGNvbnRyb2wudmFsaWQpIHJldHVybjtcblxuICAgIGNvbnN0IGZpZWxkID0ga2V5ID8gYmFzZUZpZWxkICsgJyA+ICcgKyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTU9ERUwuJyArIGtleSkgOiBiYXNlRmllbGQ7XG5cbiAgICBpZiAoY29udHJvbC5lcnJvcnM/LmN1c3RvbU1lc3NhZ2UpIHtcbiAgICAgIGludmFsaWRGaWVsZHMucHVzaChmaWVsZCArIGAgKCR7Y29udHJvbC5lcnJvcnMuY3VzdG9tTWVzc2FnZX0pYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUNvbnRyb2wpIHtcbiAgICAgIGludmFsaWRGaWVsZHMucHVzaChmaWVsZCk7XG4gICAgfVxuXG4gICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgICBPYmplY3Qua2V5cyhjb250cm9sLmNvbnRyb2xzKS5mb3JFYWNoKGdyb3VwS2V5ID0+IHtcbiAgICAgICAgdGhpcy5nZXRJbnZhbGlkRmllbGRzKGNvbnRyb2wuY29udHJvbHNbZ3JvdXBLZXldLCBpbnZhbGlkRmllbGRzLCBmaWVsZCwgZ3JvdXBLZXkpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUFycmF5KSB7XG4gICAgICBjb250cm9sLmNvbnRyb2xzLmZvckVhY2goKGMsIGluZGV4KSA9PiB7XG4gICAgICAgIHRoaXMuZ2V0SW52YWxpZEZpZWxkcyhjLCBpbnZhbGlkRmllbGRzLCBmaWVsZCArIGAoJHtpbmRleCArIDF9KWApO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -5,11 +5,11 @@ import * as i1 from "@angular/common";
5
5
  import * as i2 from "@smartsoft001/angular";
6
6
  import * as i3 from "../../../pipes/form-options/form-options.pipe";
7
7
  export class ItemStandardComponent extends CrudItemPageBaseComponent {
8
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ItemStandardComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
9
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.3", type: ItemStandardComponent, selector: "smart-crud-item-standard-page", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"mode === 'details'; else editTpl\">\n <smart-details *ngIf=\"detailsOptions\" [options]='detailsOptions'></smart-details>\n</ng-container>\n\n<ng-template #editTpl>\n <smart-form\n [options]=\"\n (selected$ | async)\n | smartFormOptions : mode:config?.type:uniqueProvider : config.inputComponents\n \"\n (valuePartialChange)=\"onPartialChange.emit($event)\"\n (valueChange)=\"onChange.emit($event)\"\n (validChange)=\"onValidChange.emit($event)\"\n ></smart-form>\n</ng-template>\n\n<br/><br/>", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.FormComponent, selector: "smart-form", inputs: ["options"], outputs: ["invokeSubmit", "valueChange", "valuePartialChange", "validChange"] }, { kind: "component", type: i2.DetailsComponent, selector: "smart-details", inputs: ["options"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.FormOptionsPipe, name: "smartFormOptions" }] }); }
8
10
  }
9
- /** @nocollapse */ ItemStandardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: ItemStandardComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
10
- /** @nocollapse */ ItemStandardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: ItemStandardComponent, selector: "smart-crud-item-standard-page", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"mode === 'details'; else editTpl\">\n <smart-details *ngIf=\"detailsOptions\" [options]='detailsOptions'></smart-details>\n</ng-container>\n\n<ng-template #editTpl>\n <smart-form\n [options]=\"\n (selected$ | async)\n | smartFormOptions : mode:config?.type:uniqueProvider : config.inputComponents\n \"\n (valuePartialChange)=\"onPartialChange.emit($event)\"\n (valueChange)=\"onChange.emit($event)\"\n (validChange)=\"onValidChange.emit($event)\"\n ></smart-form>\n</ng-template>\n\n<br/><br/>", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.FormComponent, selector: "smart-form", inputs: ["options"], outputs: ["invokeSubmit", "valueChange", "valuePartialChange", "validChange"] }, { kind: "component", type: i2.DetailsComponent, selector: "smart-details", inputs: ["options"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.FormOptionsPipe, name: "smartFormOptions" }] });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: ItemStandardComponent, decorators: [{
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: ItemStandardComponent, decorators: [{
12
12
  type: Component,
13
13
  args: [{ selector: "smart-crud-item-standard-page", template: "<ng-container *ngIf=\"mode === 'details'; else editTpl\">\n <smart-details *ngIf=\"detailsOptions\" [options]='detailsOptions'></smart-details>\n</ng-container>\n\n<ng-template #editTpl>\n <smart-form\n [options]=\"\n (selected$ | async)\n | smartFormOptions : mode:config?.type:uniqueProvider : config.inputComponents\n \"\n (valuePartialChange)=\"onPartialChange.emit($event)\"\n (valueChange)=\"onChange.emit($event)\"\n (validChange)=\"onValidChange.emit($event)\"\n ></smart-form>\n</ng-template>\n\n<br/><br/>" }]
14
14
  }] });
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jcnVkL3NoZWxsL2FuZ3VsYXIvc3JjL2xpYi9wYWdlcy9pdGVtL3N0YW5kYXJkL3N0YW5kYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY3J1ZC9zaGVsbC9hbmd1bGFyL3NyYy9saWIvcGFnZXMvaXRlbS9zdGFuZGFyZC9zdGFuZGFyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBSXhDLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDOzs7OztBQU9qRSxNQUFNLE9BQU8scUJBQWlELFNBQVEseUJBQTRCOztxSUFBckYscUJBQXFCO3lIQUFyQixxQkFBcUIsNEZDWGxDLG1sQkFnQlU7MkZETEcscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNJLCtCQUErQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5pbXBvcnQge0lFbnRpdHl9IGZyb20gXCJAc21hcnRzb2Z0MDAxL2RvbWFpbi1jb3JlXCI7XG5cbmltcG9ydCB7Q3J1ZEl0ZW1QYWdlQmFzZUNvbXBvbmVudH0gZnJvbSBcIi4uL2Jhc2UvYmFzZS5jb21wb25lbnRcIjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwic21hcnQtY3J1ZC1pdGVtLXN0YW5kYXJkLXBhZ2VcIixcbiAgICB0ZW1wbGF0ZVVybDogXCIuL3N0YW5kYXJkLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCIuL3N0YW5kYXJkLmNvbXBvbmVudC5zY3NzXCJdLFxufSlcbmV4cG9ydCBjbGFzcyBJdGVtU3RhbmRhcmRDb21wb25lbnQ8VCBleHRlbmRzIElFbnRpdHk8c3RyaW5nPj4gZXh0ZW5kcyBDcnVkSXRlbVBhZ2VCYXNlQ29tcG9uZW50PFQ+IHt9IiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGUgPT09ICdkZXRhaWxzJzsgZWxzZSBlZGl0VHBsXCI+XG4gICAgPHNtYXJ0LWRldGFpbHMgKm5nSWY9XCJkZXRhaWxzT3B0aW9uc1wiIFtvcHRpb25zXT0nZGV0YWlsc09wdGlvbnMnPjwvc21hcnQtZGV0YWlscz5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2VkaXRUcGw+XG4gICAgPHNtYXJ0LWZvcm1cbiAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgIChzZWxlY3RlZCQgfCBhc3luYylcbiAgICAgICAgICB8IHNtYXJ0Rm9ybU9wdGlvbnMgOiBtb2RlOmNvbmZpZz8udHlwZTp1bmlxdWVQcm92aWRlciA6IGNvbmZpZy5pbnB1dENvbXBvbmVudHNcbiAgICAgICAgXCJcbiAgICAgICAgICAgICh2YWx1ZVBhcnRpYWxDaGFuZ2UpPVwib25QYXJ0aWFsQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25DaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICh2YWxpZENoYW5nZSk9XCJvblZhbGlkQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgPjwvc21hcnQtZm9ybT5cbjwvbmctdGVtcGxhdGU+XG5cbjxici8+PGJyLz4iXX0=
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jcnVkL3NoZWxsL2FuZ3VsYXIvc3JjL2xpYi9wYWdlcy9pdGVtL3N0YW5kYXJkL3N0YW5kYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY3J1ZC9zaGVsbC9hbmd1bGFyL3NyYy9saWIvcGFnZXMvaXRlbS9zdGFuZGFyZC9zdGFuZGFyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBSXhDLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDOzs7OztBQU9qRSxNQUFNLE9BQU8scUJBQWlELFNBQVEseUJBQTRCO2lJQUFyRixxQkFBcUI7cUhBQXJCLHFCQUFxQiw0RkNYbEMsbWxCQWdCVTs7MkZETEcscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNJLCtCQUErQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5pbXBvcnQge0lFbnRpdHl9IGZyb20gXCJAc21hcnRzb2Z0MDAxL2RvbWFpbi1jb3JlXCI7XG5cbmltcG9ydCB7Q3J1ZEl0ZW1QYWdlQmFzZUNvbXBvbmVudH0gZnJvbSBcIi4uL2Jhc2UvYmFzZS5jb21wb25lbnRcIjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwic21hcnQtY3J1ZC1pdGVtLXN0YW5kYXJkLXBhZ2VcIixcbiAgICB0ZW1wbGF0ZVVybDogXCIuL3N0YW5kYXJkLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCIuL3N0YW5kYXJkLmNvbXBvbmVudC5zY3NzXCJdLFxufSlcbmV4cG9ydCBjbGFzcyBJdGVtU3RhbmRhcmRDb21wb25lbnQ8VCBleHRlbmRzIElFbnRpdHk8c3RyaW5nPj4gZXh0ZW5kcyBDcnVkSXRlbVBhZ2VCYXNlQ29tcG9uZW50PFQ+IHt9IiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGUgPT09ICdkZXRhaWxzJzsgZWxzZSBlZGl0VHBsXCI+XG4gICAgPHNtYXJ0LWRldGFpbHMgKm5nSWY9XCJkZXRhaWxzT3B0aW9uc1wiIFtvcHRpb25zXT0nZGV0YWlsc09wdGlvbnMnPjwvc21hcnQtZGV0YWlscz5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2VkaXRUcGw+XG4gICAgPHNtYXJ0LWZvcm1cbiAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgIChzZWxlY3RlZCQgfCBhc3luYylcbiAgICAgICAgICB8IHNtYXJ0Rm9ybU9wdGlvbnMgOiBtb2RlOmNvbmZpZz8udHlwZTp1bmlxdWVQcm92aWRlciA6IGNvbmZpZy5pbnB1dENvbXBvbmVudHNcbiAgICAgICAgXCJcbiAgICAgICAgICAgICh2YWx1ZVBhcnRpYWxDaGFuZ2UpPVwib25QYXJ0aWFsQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25DaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICh2YWxpZENoYW5nZSk9XCJvblZhbGlkQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgPjwvc21hcnQtZm9ybT5cbjwvbmctdGVtcGxhdGU+XG5cbjxici8+PGJyLz4iXX0=