ngx-sfc-common 0.0.1 → 0.0.4

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 (103) hide show
  1. package/README.md +196 -12
  2. package/_ngx-sfc-common.styles.scss +96 -0
  3. package/esm2020/lib/components/button/button.component.mjs +7 -6
  4. package/esm2020/lib/components/checkmark/checkmark.component.mjs +8 -6
  5. package/esm2020/lib/components/close/close.component.mjs +16 -0
  6. package/esm2020/lib/components/delimeter/delimeter.component.mjs +4 -4
  7. package/esm2020/lib/components/dots/dots.component.mjs +4 -4
  8. package/esm2020/lib/components/hamburger/hamburger.component.mjs +4 -4
  9. package/esm2020/lib/components/index.mjs +7 -1
  10. package/esm2020/lib/components/loader/bounce/bounce-loader.component.mjs +4 -4
  11. package/esm2020/lib/components/loader/circle/circle-loader.component.mjs +4 -4
  12. package/esm2020/lib/components/loader/loader-base.component.mjs +3 -3
  13. package/esm2020/lib/components/loader/service/loader.service.mjs +3 -3
  14. package/esm2020/lib/components/modal/directive/modal-open-on-click.directive.mjs +3 -3
  15. package/esm2020/lib/components/modal/footer/default/default-modal-footer.component.mjs +3 -3
  16. package/esm2020/lib/components/modal/header/default/default-modal-header.component.mjs +13 -7
  17. package/esm2020/lib/components/modal/header/default/default-modal-header.model.mjs +1 -1
  18. package/esm2020/lib/components/modal/modal.component.mjs +8 -21
  19. package/esm2020/lib/components/modal/service/modal.service.mjs +3 -3
  20. package/esm2020/lib/components/pagination/models/pagination-view.model.mjs +2 -0
  21. package/esm2020/lib/components/pagination/pagination.component.mjs +104 -0
  22. package/esm2020/lib/components/pagination/pagination.constants.mjs +6 -0
  23. package/esm2020/lib/components/pagination/service/pagination.event.mjs +2 -0
  24. package/esm2020/lib/components/pagination/service/pagination.service.mjs +47 -0
  25. package/esm2020/lib/components/sorting/service/sorting.event.mjs +2 -0
  26. package/esm2020/lib/components/sorting/service/sorting.service.mjs +21 -0
  27. package/esm2020/lib/components/sorting/sorting.component.mjs +71 -0
  28. package/esm2020/lib/components/sorting/sorting.constants.mjs +6 -0
  29. package/esm2020/lib/components/sorting/sorting.model.mjs +2 -0
  30. package/esm2020/lib/components/template-content/template-content.component.mjs +31 -0
  31. package/esm2020/lib/components/toggle-switcher/toggle-switcher.component.mjs +7 -6
  32. package/esm2020/lib/components/toggle-switcher/toggle-switcher.model.mjs +1 -1
  33. package/esm2020/lib/components/tooltip/tooltip.component.mjs +4 -4
  34. package/esm2020/lib/constants/common.constants.mjs +2 -1
  35. package/esm2020/lib/constants/ui.constants.mjs +6 -3
  36. package/esm2020/lib/directives/click-outside/click-outside.directive.mjs +3 -3
  37. package/esm2020/lib/directives/component-size/component-size.directive.mjs +3 -3
  38. package/esm2020/lib/directives/destroy-parent/destroy-parent.directive.mjs +27 -0
  39. package/esm2020/lib/directives/index.mjs +2 -1
  40. package/esm2020/lib/directives/mouse-down/mouse-down.directive.mjs +3 -3
  41. package/esm2020/lib/directives/show-hide-element/show-hide-element.directive.mjs +3 -3
  42. package/esm2020/lib/directives/template-reference/template-reference.directive.mjs +6 -4
  43. package/esm2020/lib/directives/throw-element-on-hover/throw-element-on-hover.directive.mjs +3 -3
  44. package/esm2020/lib/enums/direction.enum.mjs +9 -0
  45. package/esm2020/lib/enums/index.mjs +8 -2
  46. package/esm2020/lib/enums/media.enum.mjs +10 -0
  47. package/esm2020/lib/enums/position.enum.mjs +12 -0
  48. package/esm2020/lib/enums/size.enum.mjs +11 -0
  49. package/esm2020/lib/enums/sorting-direction.enum.mjs +9 -0
  50. package/esm2020/lib/enums/theme.enum.mjs +9 -0
  51. package/esm2020/lib/enums/ui.enum.mjs +27 -0
  52. package/esm2020/lib/ngx-sfc-common.module.mjs +54 -42
  53. package/esm2020/lib/services/document-ref.service.mjs +6 -5
  54. package/esm2020/lib/services/resize.service.mjs +3 -3
  55. package/esm2020/lib/services/window-ref.service.mjs +3 -3
  56. package/esm2020/lib/utils/collections.utils.mjs +2 -2
  57. package/esm2020/lib/utils/common.utils.mjs +10 -2
  58. package/esm2020/lib/utils/index.mjs +3 -3
  59. package/esm2020/lib/utils/string.utils.mjs +2 -2
  60. package/esm2020/lib/utils/ui.utils.mjs +44 -1
  61. package/fesm2015/ngx-sfc-common.mjs +587 -216
  62. package/fesm2015/ngx-sfc-common.mjs.map +1 -1
  63. package/fesm2020/ngx-sfc-common.mjs +585 -215
  64. package/fesm2020/ngx-sfc-common.mjs.map +1 -1
  65. package/lib/components/button/button.component.d.ts +3 -2
  66. package/lib/components/checkmark/checkmark.component.d.ts +2 -1
  67. package/lib/components/close/close.component.d.ts +6 -0
  68. package/lib/components/index.d.ts +9 -0
  69. package/lib/components/modal/header/default/default-modal-header.component.d.ts +2 -0
  70. package/lib/components/modal/header/default/default-modal-header.model.d.ts +2 -1
  71. package/lib/components/modal/modal.component.d.ts +3 -4
  72. package/lib/components/pagination/models/pagination-view.model.d.ts +12 -0
  73. package/lib/components/pagination/pagination.component.d.ts +31 -0
  74. package/lib/components/pagination/pagination.constants.d.ts +5 -0
  75. package/lib/components/pagination/service/pagination.event.d.ts +6 -0
  76. package/lib/components/pagination/service/pagination.service.d.ts +25 -0
  77. package/lib/components/sorting/service/sorting.event.d.ts +5 -0
  78. package/lib/components/sorting/service/sorting.service.d.ts +9 -0
  79. package/lib/components/sorting/sorting.component.d.ts +22 -0
  80. package/lib/components/sorting/sorting.constants.d.ts +4 -0
  81. package/lib/components/sorting/sorting.model.d.ts +12 -0
  82. package/lib/components/template-content/template-content.component.d.ts +14 -0
  83. package/lib/components/toggle-switcher/toggle-switcher.model.d.ts +2 -1
  84. package/lib/constants/common.constants.d.ts +1 -0
  85. package/lib/constants/ui.constants.d.ts +5 -2
  86. package/lib/directives/destroy-parent/destroy-parent.directive.d.ts +10 -0
  87. package/lib/directives/index.d.ts +1 -0
  88. package/lib/directives/template-reference/template-reference.directive.d.ts +2 -1
  89. package/lib/enums/direction.enum.d.ts +7 -0
  90. package/lib/enums/index.d.ts +7 -1
  91. package/lib/enums/media.enum.d.ts +8 -0
  92. package/lib/enums/position.enum.d.ts +10 -0
  93. package/lib/enums/size.enum.d.ts +9 -0
  94. package/lib/enums/sorting-direction.enum.d.ts +7 -0
  95. package/lib/enums/theme.enum.d.ts +7 -0
  96. package/lib/enums/ui.enum.d.ts +24 -0
  97. package/lib/ngx-sfc-common.module.d.ts +22 -16
  98. package/lib/utils/common.utils.d.ts +6 -0
  99. package/lib/utils/index.d.ts +2 -2
  100. package/lib/utils/ui.utils.d.ts +28 -0
  101. package/package.json +5 -2
  102. package/esm2020/lib/enums/common.enums.mjs +0 -69
  103. package/lib/enums/common.enums.d.ts +0 -61
@@ -16,6 +16,15 @@ export function getCssLikeValue(value, type = UIConstants.CSS_PIXELS) {
16
16
  export function getValueFromCssLikeValue(value, type = UIConstants.CSS_PIXELS) {
17
17
  return +value.replace(type, CommonConstants.EMPTY_STRING);
18
18
  }
19
+ /**
20
+ * Return CCS like calc value
21
+ * @param value All value (100% by default)
22
+ * @param part Part value
23
+ * @returns Calc value
24
+ */
25
+ export function getCalcValue(part, value = 100) {
26
+ return `calc(${value}${UIConstants.CSS_PERCENTAGE} / ${part} )`;
27
+ }
19
28
  /**
20
29
  * Add classes to HTML element
21
30
  * @param element HTML element
@@ -36,4 +45,38 @@ export function removeClasses(element, ...classNames) {
36
45
  classNames.forEach((className) => element.classList.remove(className));
37
46
  }
38
47
  }
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWkudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2ZjLWNvbW1vbi9zcmMvbGliL3V0aWxzL3VpLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQzs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxLQUFhLEVBQ3pDLE9BQWUsV0FBVyxDQUFDLFVBQVU7SUFDckMsT0FBTyxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQ3hCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHdCQUF3QixDQUFDLEtBQWEsRUFDbEQsT0FBZSxXQUFXLENBQUMsVUFBVTtJQUNyQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzlELENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFVBQVUsQ0FBQyxPQUFvQixFQUFFLEdBQUcsVUFBeUI7SUFDekUsSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDcEIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztLQUN2RTtBQUNMLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUFvQixFQUFFLEdBQUcsVUFBeUI7SUFDNUUsSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDcEIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztLQUMxRTtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Db25zdGFudHMsIFVJQ29uc3RhbnRzIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBpc0RlZmluZWQgfSBmcm9tIFwiLi9jb21tb24udXRpbHNcIjtcclxuXHJcbi8qKlxyXG4gKiBSZXR1cm4gQ1NTIGxpa2UgdmFsdWVcclxuICogQHBhcmFtIHZhbHVlIFZhbHVlIGFzIG51bWJlclxyXG4gKiBAcmV0dXJucyBWYWx1ZSBhcyAnMXB4J1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldENzc0xpa2VWYWx1ZSh2YWx1ZTogbnVtYmVyLFxyXG4gICAgdHlwZTogc3RyaW5nID0gVUlDb25zdGFudHMuQ1NTX1BJWEVMUyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdmFsdWUgKyB0eXBlO1xyXG59XHJcblxyXG4vKipcclxuICogUGFyc2UgQ1NTIGxpa2UgdmFsdWUgdG8gbnVtYmVyXHJcbiAqIEBwYXJhbSB2YWx1ZSBDU1MgbGlrZSB2YWx1ZVxyXG4gKiBAcmV0dXJucyBOdW1iZXIgdmFsdWVcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRWYWx1ZUZyb21Dc3NMaWtlVmFsdWUodmFsdWU6IHN0cmluZyxcclxuICAgIHR5cGU6IHN0cmluZyA9IFVJQ29uc3RhbnRzLkNTU19QSVhFTFMpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuICt2YWx1ZS5yZXBsYWNlKHR5cGUsIENvbW1vbkNvbnN0YW50cy5FTVBUWV9TVFJJTkcpO1xyXG59XHJcblxyXG4vKipcclxuICogQWRkIGNsYXNzZXMgdG8gSFRNTCBlbGVtZW50XHJcbiAqIEBwYXJhbSBlbGVtZW50IEhUTUwgZWxlbWVudFxyXG4gKiBAcGFyYW0gY2xhc3NOYW1lcyBBcnJheSBvZiBDU1MgY2xhc3Nlc1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZENsYXNzZXMoZWxlbWVudDogSFRNTEVsZW1lbnQsIC4uLmNsYXNzTmFtZXM6IEFycmF5PHN0cmluZz4pOiB2b2lkIHtcclxuICAgIGlmIChpc0RlZmluZWQoZWxlbWVudCkpIHtcclxuICAgICAgICBjbGFzc05hbWVzLmZvckVhY2goKGNsYXNzTmFtZSkgPT4gZWxlbWVudC5jbGFzc0xpc3QuYWRkKGNsYXNzTmFtZSkpO1xyXG4gICAgfVxyXG59XHJcblxyXG4vKipcclxuICogUmVtb3ZlIGNsYXNzZXMgdG8gSFRNTCBlbGVtZW50XHJcbiAqIEBwYXJhbSBlbGVtZW50IEhUTUwgZWxlbWVudFxyXG4gKiBAcGFyYW0gY2xhc3NOYW1lcyBBcnJheSBvZiBDU1MgY2xhc3Nlc1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUNsYXNzZXMoZWxlbWVudDogSFRNTEVsZW1lbnQsIC4uLmNsYXNzTmFtZXM6IEFycmF5PHN0cmluZz4pOiB2b2lkIHtcclxuICAgIGlmIChpc0RlZmluZWQoZWxlbWVudCkpIHtcclxuICAgICAgICBjbGFzc05hbWVzLmZvckVhY2goKGNsYXNzTmFtZSkgPT4gZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGNsYXNzTmFtZSkpO1xyXG4gICAgfVxyXG59Il19
48
+ /**
49
+ * Convert RGB color to HEX
50
+ * @param r Red
51
+ * @param g Green
52
+ * @param b Blue
53
+ * @returns HEX value
54
+ */
55
+ export function rgbToHex(r, g, b) {
56
+ return "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);
57
+ }
58
+ /**
59
+ * Convert HEX to RGB value
60
+ * @param hex HEX value
61
+ * @returns RGB value
62
+ */
63
+ export function hexToRgb(hex) {
64
+ var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
65
+ if (result) {
66
+ var r = parseInt(result[1], 16);
67
+ var g = parseInt(result[2], 16);
68
+ var b = parseInt(result[3], 16);
69
+ return `rgb(${r}, ${g}, ${b})`;
70
+ }
71
+ return null;
72
+ }
73
+ /**
74
+ * Set opacity for RGB value
75
+ * @param rgb Rgb value with {opacity} placeholder
76
+ * @param opacity Opacity value
77
+ * @returns RGB value with relevant opacity
78
+ */
79
+ export function replaceRgbOpacity(rgb, opacity) {
80
+ return rgb.replace(UIConstants.RGB_OPACITY_PLACEHOLDER, opacity.toString());
81
+ }
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWkudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2ZjLWNvbW1vbi9zcmMvbGliL3V0aWxzL3VpLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQzs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxLQUFhLEVBQ3pDLE9BQWUsV0FBVyxDQUFDLFVBQVU7SUFDckMsT0FBTyxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQ3hCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHdCQUF3QixDQUFDLEtBQWEsRUFDbEQsT0FBZSxXQUFXLENBQUMsVUFBVTtJQUNyQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzlELENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsSUFBWSxFQUFFLFFBQWdCLEdBQUc7SUFDMUQsT0FBTyxRQUFRLEtBQUssR0FBRyxXQUFXLENBQUMsY0FBYyxNQUFNLElBQUksSUFBSSxDQUFDO0FBQ3BFLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFVBQVUsQ0FBQyxPQUFvQixFQUFFLEdBQUcsVUFBeUI7SUFDekUsSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDcEIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztLQUN2RTtBQUNMLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUFvQixFQUFFLEdBQUcsVUFBeUI7SUFDNUUsSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDcEIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztLQUMxRTtBQUNMLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsQ0FBUztJQUNwRCxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUUsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFDLEdBQVc7SUFDaEMsSUFBSSxNQUFNLEdBQUcsMkNBQTJDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25FLElBQUksTUFBTSxFQUFFO1FBQ1IsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEMsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7S0FDbEM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsR0FBVyxFQUFFLE9BQWU7SUFDMUQsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztBQUNoRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uQ29uc3RhbnRzLCBVSUNvbnN0YW50cyB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgaXNEZWZpbmVkIH0gZnJvbSBcIi4vY29tbW9uLnV0aWxzXCI7XHJcblxyXG4vKipcclxuICogUmV0dXJuIENTUyBsaWtlIHZhbHVlXHJcbiAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSBhcyBudW1iZXJcclxuICogQHJldHVybnMgVmFsdWUgYXMgJzFweCdcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRDc3NMaWtlVmFsdWUodmFsdWU6IG51bWJlcixcclxuICAgIHR5cGU6IHN0cmluZyA9IFVJQ29uc3RhbnRzLkNTU19QSVhFTFMpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHZhbHVlICsgdHlwZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFBhcnNlIENTUyBsaWtlIHZhbHVlIHRvIG51bWJlclxyXG4gKiBAcGFyYW0gdmFsdWUgQ1NTIGxpa2UgdmFsdWVcclxuICogQHJldHVybnMgTnVtYmVyIHZhbHVlXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFsdWVGcm9tQ3NzTGlrZVZhbHVlKHZhbHVlOiBzdHJpbmcsXHJcbiAgICB0eXBlOiBzdHJpbmcgPSBVSUNvbnN0YW50cy5DU1NfUElYRUxTKTogbnVtYmVyIHtcclxuICAgIHJldHVybiArdmFsdWUucmVwbGFjZSh0eXBlLCBDb21tb25Db25zdGFudHMuRU1QVFlfU1RSSU5HKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybiBDQ1MgbGlrZSBjYWxjIHZhbHVlXHJcbiAqIEBwYXJhbSB2YWx1ZSBBbGwgdmFsdWUgKDEwMCUgYnkgZGVmYXVsdClcclxuICogQHBhcmFtIHBhcnQgUGFydCB2YWx1ZVxyXG4gKiBAcmV0dXJucyBDYWxjIHZhbHVlXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2FsY1ZhbHVlKHBhcnQ6IG51bWJlciwgdmFsdWU6IG51bWJlciA9IDEwMCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYGNhbGMoJHt2YWx1ZX0ke1VJQ29uc3RhbnRzLkNTU19QRVJDRU5UQUdFfSAvICR7cGFydH0gKWA7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBZGQgY2xhc3NlcyB0byBIVE1MIGVsZW1lbnRcclxuICogQHBhcmFtIGVsZW1lbnQgSFRNTCBlbGVtZW50XHJcbiAqIEBwYXJhbSBjbGFzc05hbWVzIEFycmF5IG9mIENTUyBjbGFzc2VzXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gYWRkQ2xhc3NlcyhlbGVtZW50OiBIVE1MRWxlbWVudCwgLi4uY2xhc3NOYW1lczogQXJyYXk8c3RyaW5nPik6IHZvaWQge1xyXG4gICAgaWYgKGlzRGVmaW5lZChlbGVtZW50KSkge1xyXG4gICAgICAgIGNsYXNzTmFtZXMuZm9yRWFjaCgoY2xhc3NOYW1lKSA9PiBlbGVtZW50LmNsYXNzTGlzdC5hZGQoY2xhc3NOYW1lKSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZW1vdmUgY2xhc3NlcyB0byBIVE1MIGVsZW1lbnRcclxuICogQHBhcmFtIGVsZW1lbnQgSFRNTCBlbGVtZW50XHJcbiAqIEBwYXJhbSBjbGFzc05hbWVzIEFycmF5IG9mIENTUyBjbGFzc2VzXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlQ2xhc3NlcyhlbGVtZW50OiBIVE1MRWxlbWVudCwgLi4uY2xhc3NOYW1lczogQXJyYXk8c3RyaW5nPik6IHZvaWQge1xyXG4gICAgaWYgKGlzRGVmaW5lZChlbGVtZW50KSkge1xyXG4gICAgICAgIGNsYXNzTmFtZXMuZm9yRWFjaCgoY2xhc3NOYW1lKSA9PiBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoY2xhc3NOYW1lKSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0IFJHQiBjb2xvciB0byBIRVhcclxuICogQHBhcmFtIHIgUmVkXHJcbiAqIEBwYXJhbSBnIEdyZWVuXHJcbiAqIEBwYXJhbSBiIEJsdWVcclxuICogQHJldHVybnMgSEVYIHZhbHVlXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcmdiVG9IZXgocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIFwiI1wiICsgKCgxIDw8IDI0KSArIChyIDw8IDE2KSArIChnIDw8IDgpICsgYikudG9TdHJpbmcoMTYpLnNsaWNlKDEpO1xyXG59XHJcblxyXG4vKipcclxuICogQ29udmVydCBIRVggdG8gUkdCIHZhbHVlXHJcbiAqIEBwYXJhbSBoZXggSEVYIHZhbHVlXHJcbiAqIEByZXR1cm5zIFJHQiB2YWx1ZVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGhleFRvUmdiKGhleDogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICB2YXIgcmVzdWx0ID0gL14jPyhbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KSQvaS5leGVjKGhleCk7XHJcbiAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgdmFyIHIgPSBwYXJzZUludChyZXN1bHRbMV0sIDE2KTtcclxuICAgICAgICB2YXIgZyA9IHBhcnNlSW50KHJlc3VsdFsyXSwgMTYpO1xyXG4gICAgICAgIHZhciBiID0gcGFyc2VJbnQocmVzdWx0WzNdLCAxNik7XHJcbiAgICAgICAgcmV0dXJuIGByZ2IoJHtyfSwgJHtnfSwgJHtifSlgO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTZXQgb3BhY2l0eSBmb3IgUkdCIHZhbHVlXHJcbiAqIEBwYXJhbSByZ2IgUmdiIHZhbHVlIHdpdGgge29wYWNpdHl9IHBsYWNlaG9sZGVyXHJcbiAqIEBwYXJhbSBvcGFjaXR5IE9wYWNpdHkgdmFsdWVcclxuICogQHJldHVybnMgUkdCIHZhbHVlIHdpdGggcmVsZXZhbnQgb3BhY2l0eVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VSZ2JPcGFjaXR5KHJnYjogc3RyaW5nLCBvcGFjaXR5OiBudW1iZXIpIHtcclxuICAgIHJldHVybiByZ2IucmVwbGFjZShVSUNvbnN0YW50cy5SR0JfT1BBQ0lUWV9QTEFDRUhPTERFUiwgb3BhY2l0eS50b1N0cmluZygpKTtcclxufSJdfQ==