@mediusinc/mng-commons 0.2.8 → 0.2.9

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 (49) hide show
  1. package/README.md +46 -0
  2. package/assets/i18n/en.json +202 -151
  3. package/assets/i18n/sl.json +202 -151
  4. package/esm2020/lib/api/utils/object-serializer.util.mjs +12 -7
  5. package/esm2020/lib/components/action/dialog/action-dialog.component.mjs +2 -2
  6. package/esm2020/lib/components/form/editor/form-editor.component.mjs +1 -1
  7. package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +3 -3
  8. package/esm2020/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +3 -3
  9. package/esm2020/lib/components/tableview/services/tableview.component.service.mjs +1 -1
  10. package/esm2020/lib/components/tableview/table/table.component.mjs +5 -4
  11. package/esm2020/lib/components/tableview/tableview.component.mjs +1 -1
  12. package/esm2020/lib/data-providers/base.data-provider.mjs +1 -8
  13. package/esm2020/lib/descriptors/editor.descriptor.mjs +87 -66
  14. package/esm2020/lib/descriptors/table.descriptor.mjs +51 -42
  15. package/esm2020/lib/descriptors/tableview.descriptor.mjs +6 -6
  16. package/esm2020/lib/mng-commons.module.mjs +5 -2
  17. package/esm2020/lib/models/enum.model.mjs +2 -0
  18. package/esm2020/lib/models/index.mjs +2 -1
  19. package/esm2020/lib/pipes/i18n-property.pipe.mjs +18 -0
  20. package/esm2020/lib/pipes/index.mjs +2 -1
  21. package/esm2020/lib/types/type.decorator.mjs +7 -1
  22. package/esm2020/lib/types/type.model.mjs +1 -1
  23. package/esm2020/lib/utils/editor-formly.util.mjs +4 -1
  24. package/esm2020/lib/utils/enum.util.mjs +61 -0
  25. package/esm2020/lib/utils/i18n.util.mjs +38 -26
  26. package/esm2020/lib/utils/index.mjs +2 -1
  27. package/esm2020/lib/utils/type.util.mjs +39 -2
  28. package/fesm2015/mediusinc-mng-commons.mjs +321 -154
  29. package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
  30. package/fesm2020/mediusinc-mng-commons.mjs +320 -154
  31. package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
  32. package/lib/api/utils/object-serializer.util.d.ts +1 -0
  33. package/lib/data-providers/base.data-provider.d.ts +0 -3
  34. package/lib/descriptors/editor.descriptor.d.ts +32 -27
  35. package/lib/descriptors/table.descriptor.d.ts +15 -12
  36. package/lib/descriptors/tableview.descriptor.d.ts +8 -8
  37. package/lib/mng-commons.module.d.ts +68 -67
  38. package/lib/models/enum.model.d.ts +5 -0
  39. package/lib/models/index.d.ts +1 -0
  40. package/lib/pipes/i18n-property.pipe.d.ts +8 -0
  41. package/lib/pipes/index.d.ts +1 -0
  42. package/lib/types/type.decorator.d.ts +2 -0
  43. package/lib/types/type.model.d.ts +2 -2
  44. package/lib/utils/enum.util.d.ts +39 -0
  45. package/lib/utils/i18n.util.d.ts +6 -2
  46. package/lib/utils/index.d.ts +1 -0
  47. package/lib/utils/type.util.d.ts +22 -1
  48. package/package.json +2 -2
  49. package/scss/mng-overrides/_layout_forms.scss +5 -0
@@ -1,6 +1,11 @@
1
1
  import 'reflect-metadata';
2
- import { typeNameDecoratorPropertyName } from '../types';
2
+ import { enumNameDecoratorPropertyName, typeNameDecoratorPropertyName } from '../types';
3
3
  export class TypeUtil {
4
+ /**
5
+ * Defines type name decorator.
6
+ * @param targetType class.
7
+ * @param typeName Name of the type.
8
+ */
4
9
  static defineReflectTypeName(targetType, typeName) {
5
10
  if (!typeName) {
6
11
  typeName = TypeUtil.getDecoratorTypeName(targetType);
@@ -13,6 +18,16 @@ export class TypeUtil {
13
18
  Reflect.defineMetadata(typeNameDecoratorPropertyName, typeName, targetType);
14
19
  }
15
20
  }
21
+ /**
22
+ * Defines enum name decorator.
23
+ * @param targetType enum object.
24
+ * @param enumName Name of the enum.
25
+ */
26
+ static defineReflectEnumName(targetType, enumName) {
27
+ if (!Reflect.hasOwnMetadata(enumNameDecoratorPropertyName, targetType)) {
28
+ Reflect.defineMetadata(enumNameDecoratorPropertyName, enumName, targetType);
29
+ }
30
+ }
16
31
  /**
17
32
  * Gets type name from either decorator or reflect metadata.
18
33
  * @param type Class.
@@ -28,6 +43,21 @@ export class TypeUtil {
28
43
  }
29
44
  return type.name;
30
45
  }
46
+ /**
47
+ * Gets enum name from either decorator or reflect metadata.
48
+ * @param enumType Class.
49
+ */
50
+ static findEnumName(enumType) {
51
+ let decoratorName = TypeUtil.getDecoratorEnumName(enumType);
52
+ if (decoratorName) {
53
+ return decoratorName;
54
+ }
55
+ decoratorName = Reflect.getMetadata(enumNameDecoratorPropertyName, enumType);
56
+ if (decoratorName) {
57
+ return decoratorName;
58
+ }
59
+ throw new Error('Could not fined enum name');
60
+ }
31
61
  /**
32
62
  * Get value from decorator defined property name
33
63
  * @param type Class.
@@ -36,5 +66,12 @@ export class TypeUtil {
36
66
  static getDecoratorTypeName(type) {
37
67
  return type[typeNameDecoratorPropertyName];
38
68
  }
69
+ /**
70
+ * Get value from decorator defined property name
71
+ * @param type Enum object.
72
+ */
73
+ static getDecoratorEnumName(type) {
74
+ return type[enumNameDecoratorPropertyName];
75
+ }
39
76
  }
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi91dGlscy90eXBlLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxrQkFBa0IsQ0FBQztBQUUxQixPQUFPLEVBQVksNkJBQTZCLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFbEUsTUFBTSxPQUFPLFFBQVE7SUFDVixNQUFNLENBQUMscUJBQXFCLENBQUMsVUFBMEIsRUFBRSxRQUFpQjtRQUM3RSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ1gsUUFBUSxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNYLE9BQU8sQ0FBQyxJQUFJLENBQUMscUNBQXFDLFVBQVUsbUZBQW1GLENBQUMsQ0FBQztnQkFDakosT0FBTzthQUNWO1NBQ0o7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyw2QkFBNkIsRUFBRSxVQUFVLENBQUMsRUFBRTtZQUNwRSxPQUFPLENBQUMsY0FBYyxDQUFDLDZCQUE2QixFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztTQUMvRTtJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsWUFBWSxDQUFDLElBQW9CO1FBQzNDLElBQUksYUFBYSxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4RCxJQUFJLGFBQWEsRUFBRTtZQUNmLE9BQU8sYUFBYSxDQUFDO1NBQ3hCO1FBQ0QsYUFBYSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsNkJBQTZCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekUsSUFBSSxhQUFhLEVBQUU7WUFDZixPQUFPLGFBQWEsQ0FBQztTQUN4QjtRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsd0RBQXdEO0lBQ2pELE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFjO1FBQzdDLE9BQVEsSUFBWSxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDeEQsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJztcblxuaW1wb3J0IHtDbGFzc1R5cGUsIHR5cGVOYW1lRGVjb3JhdG9yUHJvcGVydHlOYW1lfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBUeXBlVXRpbCB7XG4gICAgcHVibGljIHN0YXRpYyBkZWZpbmVSZWZsZWN0VHlwZU5hbWUodGFyZ2V0VHlwZTogQ2xhc3NUeXBlPGFueT4sIHR5cGVOYW1lPzogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdHlwZU5hbWUpIHtcbiAgICAgICAgICAgIHR5cGVOYW1lID0gVHlwZVV0aWwuZ2V0RGVjb3JhdG9yVHlwZU5hbWUodGFyZ2V0VHlwZSk7XG4gICAgICAgICAgICBpZiAoIXR5cGVOYW1lKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBUeXBlIG5hbWUgbm90IHByb3ZpZGVkIGZvciB0YXJnZXQgJHt0YXJnZXRUeXBlfSwgbm9yIGNvdWxkIGJlIHJldHJpZXZlZCBmcm9tIGRlY29yYXRvci4gVHlwZSBuYW1lIHdhcyBub3QgcmVnaXN0ZXJlZCB0byByZWZsZWN0LmApO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghUmVmbGVjdC5oYXNPd25NZXRhZGF0YSh0eXBlTmFtZURlY29yYXRvclByb3BlcnR5TmFtZSwgdGFyZ2V0VHlwZSkpIHtcbiAgICAgICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEodHlwZU5hbWVEZWNvcmF0b3JQcm9wZXJ0eU5hbWUsIHR5cGVOYW1lLCB0YXJnZXRUeXBlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdHlwZSBuYW1lIGZyb20gZWl0aGVyIGRlY29yYXRvciBvciByZWZsZWN0IG1ldGFkYXRhLlxuICAgICAqIEBwYXJhbSB0eXBlIENsYXNzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZmluZFR5cGVOYW1lKHR5cGU6IENsYXNzVHlwZTxhbnk+KTogc3RyaW5nIHtcbiAgICAgICAgbGV0IGRlY29yYXRvck5hbWUgPSBUeXBlVXRpbC5nZXREZWNvcmF0b3JUeXBlTmFtZSh0eXBlKTtcbiAgICAgICAgaWYgKGRlY29yYXRvck5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWNvcmF0b3JOYW1lO1xuICAgICAgICB9XG4gICAgICAgIGRlY29yYXRvck5hbWUgPSBSZWZsZWN0LmdldE1ldGFkYXRhKHR5cGVOYW1lRGVjb3JhdG9yUHJvcGVydHlOYW1lLCB0eXBlKTtcbiAgICAgICAgaWYgKGRlY29yYXRvck5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWNvcmF0b3JOYW1lO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0eXBlLm5hbWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHZhbHVlIGZyb20gZGVjb3JhdG9yIGRlZmluZWQgcHJvcGVydHkgbmFtZVxuICAgICAqIEBwYXJhbSB0eXBlIENsYXNzLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXR5cGVzXG4gICAgcHVibGljIHN0YXRpYyBnZXREZWNvcmF0b3JUeXBlTmFtZSh0eXBlOiBGdW5jdGlvbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiAodHlwZSBhcyBhbnkpW3R5cGVOYW1lRGVjb3JhdG9yUHJvcGVydHlOYW1lXTtcbiAgICB9XG59XG4iXX0=
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi91dGlscy90eXBlLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxrQkFBa0IsQ0FBQztBQUUxQixPQUFPLEVBQXNCLDZCQUE2QixFQUFFLDZCQUE2QixFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRTNHLE1BQU0sT0FBTyxRQUFRO0lBQ2pCOzs7O09BSUc7SUFDSSxNQUFNLENBQUMscUJBQXFCLENBQUMsVUFBMEIsRUFBRSxRQUFpQjtRQUM3RSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ1gsUUFBUSxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNYLE9BQU8sQ0FBQyxJQUFJLENBQUMscUNBQXFDLFVBQVUsbUZBQW1GLENBQUMsQ0FBQztnQkFDakosT0FBTzthQUNWO1NBQ0o7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyw2QkFBNkIsRUFBRSxVQUFVLENBQUMsRUFBRTtZQUNwRSxPQUFPLENBQUMsY0FBYyxDQUFDLDZCQUE2QixFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztTQUMvRTtJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLHFCQUFxQixDQUFDLFVBQW9CLEVBQUUsUUFBZ0I7UUFDdEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsNkJBQTZCLEVBQUUsVUFBVSxDQUFDLEVBQUU7WUFDcEUsT0FBTyxDQUFDLGNBQWMsQ0FBQyw2QkFBNkIsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7U0FDL0U7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFvQjtRQUMzQyxJQUFJLGFBQWEsR0FBRyxRQUFRLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEQsSUFBSSxhQUFhLEVBQUU7WUFDZixPQUFPLGFBQWEsQ0FBQztTQUN4QjtRQUNELGFBQWEsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLDZCQUE2QixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3pFLElBQUksYUFBYSxFQUFFO1lBQ2YsT0FBTyxhQUFhLENBQUM7U0FDeEI7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBa0I7UUFDekMsSUFBSSxhQUFhLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVELElBQUksYUFBYSxFQUFFO1lBQ2YsT0FBTyxhQUFhLENBQUM7U0FDeEI7UUFDRCxhQUFhLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyw2QkFBNkIsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM3RSxJQUFJLGFBQWEsRUFBRTtZQUNmLE9BQU8sYUFBYSxDQUFDO1NBQ3hCO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRDs7O09BR0c7SUFDSCx3REFBd0Q7SUFDakQsTUFBTSxDQUFDLG9CQUFvQixDQUFDLElBQWM7UUFDN0MsT0FBUSxJQUFZLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLG9CQUFvQixDQUFDLElBQWM7UUFDN0MsT0FBUSxJQUFZLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUN4RCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3JlZmxlY3QtbWV0YWRhdGEnO1xuXG5pbXBvcnQge0NsYXNzVHlwZSwgRW51bVR5cGUsIGVudW1OYW1lRGVjb3JhdG9yUHJvcGVydHlOYW1lLCB0eXBlTmFtZURlY29yYXRvclByb3BlcnR5TmFtZX0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgVHlwZVV0aWwge1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgdHlwZSBuYW1lIGRlY29yYXRvci5cbiAgICAgKiBAcGFyYW0gdGFyZ2V0VHlwZSBjbGFzcy5cbiAgICAgKiBAcGFyYW0gdHlwZU5hbWUgTmFtZSBvZiB0aGUgdHlwZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGRlZmluZVJlZmxlY3RUeXBlTmFtZSh0YXJnZXRUeXBlOiBDbGFzc1R5cGU8YW55PiwgdHlwZU5hbWU/OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCF0eXBlTmFtZSkge1xuICAgICAgICAgICAgdHlwZU5hbWUgPSBUeXBlVXRpbC5nZXREZWNvcmF0b3JUeXBlTmFtZSh0YXJnZXRUeXBlKTtcbiAgICAgICAgICAgIGlmICghdHlwZU5hbWUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFR5cGUgbmFtZSBub3QgcHJvdmlkZWQgZm9yIHRhcmdldCAke3RhcmdldFR5cGV9LCBub3IgY291bGQgYmUgcmV0cmlldmVkIGZyb20gZGVjb3JhdG9yLiBUeXBlIG5hbWUgd2FzIG5vdCByZWdpc3RlcmVkIHRvIHJlZmxlY3QuYCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFSZWZsZWN0Lmhhc093bk1ldGFkYXRhKHR5cGVOYW1lRGVjb3JhdG9yUHJvcGVydHlOYW1lLCB0YXJnZXRUeXBlKSkge1xuICAgICAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSh0eXBlTmFtZURlY29yYXRvclByb3BlcnR5TmFtZSwgdHlwZU5hbWUsIHRhcmdldFR5cGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyBlbnVtIG5hbWUgZGVjb3JhdG9yLlxuICAgICAqIEBwYXJhbSB0YXJnZXRUeXBlIGVudW0gb2JqZWN0LlxuICAgICAqIEBwYXJhbSBlbnVtTmFtZSBOYW1lIG9mIHRoZSBlbnVtLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZGVmaW5lUmVmbGVjdEVudW1OYW1lKHRhcmdldFR5cGU6IEVudW1UeXBlLCBlbnVtTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghUmVmbGVjdC5oYXNPd25NZXRhZGF0YShlbnVtTmFtZURlY29yYXRvclByb3BlcnR5TmFtZSwgdGFyZ2V0VHlwZSkpIHtcbiAgICAgICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoZW51bU5hbWVEZWNvcmF0b3JQcm9wZXJ0eU5hbWUsIGVudW1OYW1lLCB0YXJnZXRUeXBlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdHlwZSBuYW1lIGZyb20gZWl0aGVyIGRlY29yYXRvciBvciByZWZsZWN0IG1ldGFkYXRhLlxuICAgICAqIEBwYXJhbSB0eXBlIENsYXNzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZmluZFR5cGVOYW1lKHR5cGU6IENsYXNzVHlwZTxhbnk+KTogc3RyaW5nIHtcbiAgICAgICAgbGV0IGRlY29yYXRvck5hbWUgPSBUeXBlVXRpbC5nZXREZWNvcmF0b3JUeXBlTmFtZSh0eXBlKTtcbiAgICAgICAgaWYgKGRlY29yYXRvck5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWNvcmF0b3JOYW1lO1xuICAgICAgICB9XG4gICAgICAgIGRlY29yYXRvck5hbWUgPSBSZWZsZWN0LmdldE1ldGFkYXRhKHR5cGVOYW1lRGVjb3JhdG9yUHJvcGVydHlOYW1lLCB0eXBlKTtcbiAgICAgICAgaWYgKGRlY29yYXRvck5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWNvcmF0b3JOYW1lO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0eXBlLm5hbWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBlbnVtIG5hbWUgZnJvbSBlaXRoZXIgZGVjb3JhdG9yIG9yIHJlZmxlY3QgbWV0YWRhdGEuXG4gICAgICogQHBhcmFtIGVudW1UeXBlIENsYXNzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZmluZEVudW1OYW1lKGVudW1UeXBlOiBFbnVtVHlwZSk6IHN0cmluZyB7XG4gICAgICAgIGxldCBkZWNvcmF0b3JOYW1lID0gVHlwZVV0aWwuZ2V0RGVjb3JhdG9yRW51bU5hbWUoZW51bVR5cGUpO1xuICAgICAgICBpZiAoZGVjb3JhdG9yTmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIGRlY29yYXRvck5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgZGVjb3JhdG9yTmFtZSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoZW51bU5hbWVEZWNvcmF0b3JQcm9wZXJ0eU5hbWUsIGVudW1UeXBlKTtcbiAgICAgICAgaWYgKGRlY29yYXRvck5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWNvcmF0b3JOYW1lO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGZpbmVkIGVudW0gbmFtZScpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB2YWx1ZSBmcm9tIGRlY29yYXRvciBkZWZpbmVkIHByb3BlcnR5IG5hbWVcbiAgICAgKiBAcGFyYW0gdHlwZSBDbGFzcy5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0RGVjb3JhdG9yVHlwZU5hbWUodHlwZTogRnVuY3Rpb24pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gKHR5cGUgYXMgYW55KVt0eXBlTmFtZURlY29yYXRvclByb3BlcnR5TmFtZV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHZhbHVlIGZyb20gZGVjb3JhdG9yIGRlZmluZWQgcHJvcGVydHkgbmFtZVxuICAgICAqIEBwYXJhbSB0eXBlIEVudW0gb2JqZWN0LlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0RGVjb3JhdG9yRW51bU5hbWUodHlwZTogRW51bVR5cGUpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gKHR5cGUgYXMgYW55KVtlbnVtTmFtZURlY29yYXRvclByb3BlcnR5TmFtZV07XG4gICAgfVxufVxuIl19