ngx-sp-infra 3.0.9-test → 3.0.12-next

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 (205) hide show
  1. package/esm2022/lib/directives/copy-clipboard.directive.mjs +28 -0
  2. package/esm2022/lib/directives/disable-control.directive.mjs +27 -0
  3. package/esm2022/lib/directives/highlight.directive.mjs +43 -0
  4. package/esm2022/lib/directives/loading-btn.directive.mjs +73 -0
  5. package/esm2022/lib/directives/required.directive.mjs +104 -0
  6. package/esm2022/lib/infra.module.mjs +326 -0
  7. package/esm2022/lib/message/alert/alert.component.mjs +32 -0
  8. package/esm2022/lib/message/confirm/confirm.component.mjs +52 -0
  9. package/esm2022/lib/message/confirm-modal/confirm-modal.component.mjs +72 -0
  10. package/esm2022/lib/message/message-enum.mjs +23 -0
  11. package/esm2022/lib/message/message.service.mjs +132 -0
  12. package/esm2022/lib/message/save/save.component.mjs +46 -0
  13. package/esm2022/lib/models/DownloadArquivos.mjs +3 -0
  14. package/esm2022/lib/models/basic-filters.mjs +7 -0
  15. package/esm2022/lib/models/combobox/record-combobox.mjs +15 -0
  16. package/esm2022/lib/models/combobox/ret-records-combobox.mjs +12 -0
  17. package/esm2022/lib/models/email-model.mjs +35 -0
  18. package/esm2022/lib/models/forms/custom-form-control.mjs +24 -0
  19. package/esm2022/lib/models/icons/icon.model.mjs +854 -0
  20. package/esm2022/lib/models/ierror.mjs +2 -0
  21. package/esm2022/lib/models/ipagination.mjs +2 -0
  22. package/esm2022/lib/models/report-file.mjs +7 -0
  23. package/esm2022/lib/models/ret-error.mjs +3 -0
  24. package/esm2022/lib/models/ret-feedback-message.mjs +7 -0
  25. package/esm2022/lib/models/ret-report-file.mjs +3 -0
  26. package/esm2022/lib/pipes/cpf-cnpj.pipe.mjs +20 -0
  27. package/esm2022/lib/pipes/currency.pipe.mjs +16 -0
  28. package/esm2022/lib/pipes/decimal-comma.pipe.mjs +19 -0
  29. package/esm2022/lib/pipes/filter-multiple-choice.pipe.mjs +16 -0
  30. package/esm2022/lib/pipes/order-sort.pipe.mjs +20 -0
  31. package/esm2022/lib/pipes/phone-format.pipe.mjs +22 -0
  32. package/esm2022/lib/pipes/text-filter.pipe.mjs +17 -0
  33. package/esm2022/lib/pipes/title-case-pipe.pipe.mjs +19 -0
  34. package/esm2022/lib/pipes/to-url.pipe.mjs +32 -0
  35. package/esm2022/lib/service/ip-service.service.mjs +39 -0
  36. package/esm2022/lib/service/modal-utils.service.mjs +59 -0
  37. package/esm2022/lib/templates/footer/footer.component.mjs +25 -0
  38. package/esm2022/lib/templates/header/header.component.mjs +37 -0
  39. package/esm2022/lib/templates/simple-header/simple-header.component.mjs +140 -0
  40. package/esm2022/lib/utils/check-url-and-method.service.mjs +70 -0
  41. package/esm2022/lib/utils/form-utils.mjs +111 -0
  42. package/esm2022/lib/utils/settings.service.mjs +32 -0
  43. package/esm2022/lib/utils/utils.mjs +340 -0
  44. package/esm2022/lib/validators/cpf-cnpj.validator.directive.mjs +24 -0
  45. package/esm2022/lib/validators/cpf-cnpj.validator.mjs +54 -0
  46. package/esm2022/lib/widgets/breadcrumb/infra-breadcrumb/infra-breadcrumb.component.mjs +35 -0
  47. package/esm2022/lib/widgets/breadcrumb/infra-breadcrumb-item/infra-breadcrumb-item.component.mjs +28 -0
  48. package/esm2022/lib/widgets/breadcrumb/portalrh-breadcrumb/breadcrumb.component.mjs +21 -0
  49. package/esm2022/lib/widgets/click-outside/clickoutside.directive.mjs +167 -0
  50. package/esm2022/lib/widgets/combobox/combobox.component.mjs +569 -0
  51. package/esm2022/lib/widgets/combobox/pipes/filter-by.pipe.mjs +44 -0
  52. package/esm2022/lib/widgets/combobox/pipes/limit-to.pipe.mjs +19 -0
  53. package/esm2022/lib/widgets/combobox-multiple-choice/combobox-multiple-choice.component.mjs +49 -0
  54. package/esm2022/lib/widgets/content-container/content-container.component.mjs +44 -0
  55. package/esm2022/lib/widgets/custom-acordion/custom-acordion.component.mjs +29 -0
  56. package/esm2022/lib/widgets/dropdown-options/dropdown-options.component.mjs +32 -0
  57. package/esm2022/lib/widgets/dynamic-input/dynamic-input.component.mjs +37 -0
  58. package/esm2022/lib/widgets/field-contador-message/field-contador-message.component.mjs +45 -0
  59. package/esm2022/lib/widgets/field-control-error/field-control-error.component.mjs +23 -0
  60. package/esm2022/lib/widgets/field-error-message/field-error-message.component.mjs +36 -0
  61. package/esm2022/lib/widgets/generic-modal/generic-modal.component.mjs +23 -0
  62. package/esm2022/lib/widgets/input-trim/input-trim.component.mjs +34 -0
  63. package/esm2022/lib/widgets/lib-combobox/lib-combobox.component.mjs +261 -0
  64. package/esm2022/lib/widgets/lib-header/lib-header.component.mjs +113 -0
  65. package/esm2022/lib/widgets/lib-icons/lib-icons.component.mjs +168 -0
  66. package/esm2022/lib/widgets/loading/loading.component.mjs +12 -0
  67. package/esm2022/lib/widgets/loading-button/loading-button.component.mjs +19 -0
  68. package/esm2022/lib/widgets/nav-produtos/nav-produtos.component.mjs +49 -0
  69. package/esm2022/lib/widgets/ordering/ordering.component.mjs +57 -0
  70. package/esm2022/lib/widgets/pagination/pagination.component.mjs +61 -0
  71. package/esm2022/lib/widgets/search-combobox/search-combobox.component.mjs +209 -0
  72. package/esm2022/lib/widgets/search-filters/search-filters.component.mjs +59 -0
  73. package/esm2022/lib/widgets/side-tabs/side-tabs.component.mjs +42 -0
  74. package/esm2022/lib/widgets/simple-search/simple-search.component.mjs +33 -0
  75. package/esm2022/lib/widgets/spinner/spinner.component.mjs +59 -0
  76. package/esm2022/lib/widgets/svg-storage/svg-storage.component.mjs +95 -0
  77. package/esm2022/lib/widgets/table/table.component.mjs +199 -0
  78. package/esm2022/lib/widgets/tree/models/ret-tree.mjs +3 -0
  79. package/esm2022/lib/widgets/tree/models/tree-item.mjs +7 -0
  80. package/esm2022/lib/widgets/tree/pipes/search-tree.pipe.mjs +17 -0
  81. package/esm2022/lib/widgets/tree/tree.component.mjs +108 -0
  82. package/esm2022/ngx-sp-infra.mjs +5 -0
  83. package/esm2022/public-api.mjs +95 -0
  84. package/fesm2022/ngx-sp-infra.mjs +5585 -0
  85. package/fesm2022/ngx-sp-infra.mjs.map +1 -0
  86. package/index.d.ts +5 -0
  87. package/lib/directives/copy-clipboard.directive.d.ts +7 -0
  88. package/lib/directives/disable-control.directive.d.ts +10 -0
  89. package/lib/directives/highlight.directive.d.ts +15 -0
  90. package/lib/directives/loading-btn.directive.d.ts +26 -0
  91. package/lib/directives/required.directive.d.ts +60 -0
  92. package/lib/infra.module.d.ts +69 -0
  93. package/lib/message/alert/alert.component.d.ts +14 -0
  94. package/lib/message/confirm/confirm.component.d.ts +22 -0
  95. package/lib/message/confirm-modal/confirm-modal.component.d.ts +33 -0
  96. package/lib/message/message-enum.d.ts +20 -0
  97. package/lib/message/message.service.d.ts +31 -0
  98. package/lib/message/save/save.component.d.ts +21 -0
  99. package/lib/models/DownloadArquivos.d.ts +11 -0
  100. package/lib/models/basic-filters.d.ts +4 -0
  101. package/lib/models/combobox/record-combobox.d.ts +15 -0
  102. package/lib/models/combobox/ret-records-combobox.d.ts +11 -0
  103. package/lib/models/email-model.d.ts +30 -0
  104. package/lib/models/forms/custom-form-control.d.ts +15 -0
  105. package/lib/models/icons/icon.model.d.ts +12 -0
  106. package/lib/models/ierror.d.ts +4 -0
  107. package/lib/models/ipagination.d.ts +5 -0
  108. package/lib/models/report-file.d.ts +4 -0
  109. package/lib/models/ret-error.d.ts +5 -0
  110. package/lib/models/ret-feedback-message.d.ts +7 -0
  111. package/lib/models/ret-report-file.d.ts +7 -0
  112. package/lib/pipes/cpf-cnpj.pipe.d.ts +7 -0
  113. package/lib/pipes/currency.pipe.d.ts +7 -0
  114. package/lib/pipes/decimal-comma.pipe.d.ts +7 -0
  115. package/lib/pipes/filter-multiple-choice.pipe.d.ts +8 -0
  116. package/lib/pipes/order-sort.pipe.d.ts +7 -0
  117. package/lib/pipes/phone-format.pipe.d.ts +7 -0
  118. package/lib/pipes/text-filter.pipe.d.ts +8 -0
  119. package/lib/pipes/title-case-pipe.pipe.d.ts +7 -0
  120. package/lib/pipes/to-url.pipe.d.ts +16 -0
  121. package/lib/service/ip-service.service.d.ts +15 -0
  122. package/lib/service/modal-utils.service.d.ts +30 -0
  123. package/lib/templates/footer/footer.component.d.ts +11 -0
  124. package/lib/templates/header/header.component.d.ts +17 -0
  125. package/lib/templates/simple-header/simple-header.component.d.ts +66 -0
  126. package/lib/utils/check-url-and-method.service.d.ts +35 -0
  127. package/lib/utils/form-utils.d.ts +56 -0
  128. package/lib/utils/settings.service.d.ts +9 -0
  129. package/lib/utils/utils.d.ts +58 -0
  130. package/lib/validators/cpf-cnpj.validator.d.ts +18 -0
  131. package/lib/validators/cpf-cnpj.validator.directive.d.ts +7 -0
  132. package/lib/widgets/breadcrumb/infra-breadcrumb/infra-breadcrumb.component.d.ts +29 -0
  133. package/lib/widgets/breadcrumb/infra-breadcrumb-item/infra-breadcrumb-item.component.d.ts +14 -0
  134. package/lib/widgets/breadcrumb/portalrh-breadcrumb/breadcrumb.component.d.ts +10 -0
  135. package/lib/widgets/click-outside/clickoutside.directive.d.ts +40 -0
  136. package/lib/widgets/combobox/combobox.component.d.ts +174 -0
  137. package/lib/widgets/combobox/pipes/filter-by.pipe.d.ts +10 -0
  138. package/lib/widgets/combobox/pipes/limit-to.pipe.d.ts +7 -0
  139. package/lib/widgets/combobox-multiple-choice/combobox-multiple-choice.component.d.ts +16 -0
  140. package/lib/widgets/content-container/content-container.component.d.ts +16 -0
  141. package/lib/widgets/custom-acordion/custom-acordion.component.d.ts +13 -0
  142. package/lib/widgets/dropdown-options/dropdown-options.component.d.ts +16 -0
  143. package/lib/widgets/dynamic-input/dynamic-input.component.d.ts +14 -0
  144. package/lib/widgets/field-contador-message/field-contador-message.component.d.ts +14 -0
  145. package/lib/widgets/field-control-error/field-control-error.component.d.ts +12 -0
  146. package/lib/widgets/field-error-message/field-error-message.component.d.ts +15 -0
  147. package/lib/widgets/generic-modal/generic-modal.component.d.ts +8 -0
  148. package/lib/widgets/input-trim/input-trim.component.d.ts +11 -0
  149. package/lib/widgets/lib-combobox/lib-combobox.component.d.ts +118 -0
  150. package/lib/widgets/lib-header/lib-header.component.d.ts +78 -0
  151. package/lib/widgets/lib-icons/lib-icons.component.d.ts +47 -0
  152. package/lib/widgets/loading/loading.component.d.ts +6 -0
  153. package/lib/widgets/loading-button/loading-button.component.d.ts +7 -0
  154. package/lib/widgets/nav-produtos/nav-produtos.component.d.ts +15 -0
  155. package/lib/widgets/ordering/ordering.component.d.ts +18 -0
  156. package/lib/widgets/pagination/pagination.component.d.ts +20 -0
  157. package/lib/widgets/search-combobox/search-combobox.component.d.ts +98 -0
  158. package/lib/widgets/search-filters/search-filters.component.d.ts +16 -0
  159. package/lib/widgets/side-tabs/side-tabs.component.d.ts +24 -0
  160. package/lib/widgets/simple-search/simple-search.component.d.ts +11 -0
  161. package/lib/widgets/spinner/spinner.component.d.ts +25 -0
  162. package/lib/widgets/svg-storage/svg-storage.component.d.ts +16 -0
  163. package/lib/widgets/table/table.component.d.ts +93 -0
  164. package/lib/widgets/tree/models/ret-tree.d.ts +7 -0
  165. package/lib/widgets/tree/models/tree-item.d.ts +11 -0
  166. package/lib/widgets/tree/pipes/search-tree.pipe.d.ts +8 -0
  167. package/lib/widgets/tree/tree.component.d.ts +27 -0
  168. package/package.json +1 -5
  169. package/public-api.d.ts +91 -0
  170. package/src/assets/fonts/OpenSans/OpenSans-Bold.ttf +0 -0
  171. package/src/assets/fonts/OpenSans/OpenSans-BoldItalic.ttf +0 -0
  172. package/src/assets/fonts/OpenSans/OpenSans-ExtraBold.ttf +0 -0
  173. package/src/assets/fonts/OpenSans/OpenSans-ExtraBoldItalic.ttf +0 -0
  174. package/src/assets/fonts/OpenSans/OpenSans-Italic.ttf +0 -0
  175. package/src/assets/fonts/OpenSans/OpenSans-Light.ttf +0 -0
  176. package/src/assets/fonts/OpenSans/OpenSans-LightItalic.ttf +0 -0
  177. package/src/assets/fonts/OpenSans/OpenSans-Medium.ttf +0 -0
  178. package/src/assets/fonts/OpenSans/OpenSans-MediumItalic.ttf +0 -0
  179. package/src/assets/fonts/OpenSans/OpenSans-Regular.ttf +0 -0
  180. package/src/assets/fonts/OpenSans/OpenSans-SemiBold.ttf +0 -0
  181. package/src/assets/fonts/OpenSans/OpenSans-SemiBoldItalic.ttf +0 -0
  182. package/src/assets/fonts/OpenSans_Condensed/OpenSans_Condensed-Bold.ttf +0 -0
  183. package/src/assets/fonts/OpenSans_Condensed/OpenSans_Condensed-BoldItalic.ttf +0 -0
  184. package/src/assets/fonts/OpenSans_Condensed/OpenSans_Condensed-ExtraBold.ttf +0 -0
  185. package/src/assets/fonts/OpenSans_Condensed/OpenSans_Condensed-ExtraBoldItalic.ttf +0 -0
  186. package/src/assets/fonts/OpenSans_Condensed/OpenSans_Condensed-Italic.ttf +0 -0
  187. package/src/assets/fonts/OpenSans_Condensed/OpenSans_Condensed-Light.ttf +0 -0
  188. package/src/assets/fonts/OpenSans_Condensed/OpenSans_Condensed-LightItalic.ttf +0 -0
  189. package/src/assets/fonts/OpenSans_Condensed/OpenSans_Condensed-Medium.ttf +0 -0
  190. package/src/assets/fonts/OpenSans_Condensed/OpenSans_Condensed-MediumItalic.ttf +0 -0
  191. package/src/assets/fonts/OpenSans_Condensed/OpenSans_Condensed-Regular.ttf +0 -0
  192. package/src/assets/fonts/OpenSans_Condensed/OpenSans_Condensed-SemiBold.ttf +0 -0
  193. package/src/assets/fonts/OpenSans_Condensed/OpenSans_Condensed-SemiBoldItalic.ttf +0 -0
  194. package/src/assets/fonts/OpenSans_SemiCondensed/OpenSans_SemiCondensed-Bold.ttf +0 -0
  195. package/src/assets/fonts/OpenSans_SemiCondensed/OpenSans_SemiCondensed-BoldItalic.ttf +0 -0
  196. package/src/assets/fonts/OpenSans_SemiCondensed/OpenSans_SemiCondensed-ExtraBold.ttf +0 -0
  197. package/src/assets/fonts/OpenSans_SemiCondensed/OpenSans_SemiCondensed-ExtraBoldItalic.ttf +0 -0
  198. package/src/assets/fonts/OpenSans_SemiCondensed/OpenSans_SemiCondensed-Italic.ttf +0 -0
  199. package/src/assets/fonts/OpenSans_SemiCondensed/OpenSans_SemiCondensed-Light.ttf +0 -0
  200. package/src/assets/fonts/OpenSans_SemiCondensed/OpenSans_SemiCondensed-LightItalic.ttf +0 -0
  201. package/src/assets/fonts/OpenSans_SemiCondensed/OpenSans_SemiCondensed-Medium.ttf +0 -0
  202. package/src/assets/fonts/OpenSans_SemiCondensed/OpenSans_SemiCondensed-MediumItalic.ttf +0 -0
  203. package/src/assets/fonts/OpenSans_SemiCondensed/OpenSans_SemiCondensed-Regular.ttf +0 -0
  204. package/src/assets/fonts/OpenSans_SemiCondensed/OpenSans_SemiCondensed-SemiBold.ttf +0 -0
  205. package/src/assets/fonts/OpenSans_SemiCondensed/OpenSans_SemiCondensed-SemiBoldItalic.ttf +0 -0
@@ -0,0 +1,28 @@
1
+ import { Directive, HostListener, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class CopyClipboardDirective {
4
+ constructor() {
5
+ this.payload = "";
6
+ }
7
+ onClick(event) {
8
+ event.preventDefault();
9
+ if (!this.payload)
10
+ return;
11
+ navigator.clipboard.writeText(this.payload.toString());
12
+ }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CopyClipboardDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
14
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: CopyClipboardDirective, selector: "[copy-clipboard]", inputs: { payload: ["copy-clipboard", "payload"] }, host: { listeners: { "click": "onClick($event)" } }, ngImport: i0 }); }
15
+ }
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CopyClipboardDirective, decorators: [{
17
+ type: Directive,
18
+ args: [{
19
+ selector: '[copy-clipboard]'
20
+ }]
21
+ }], propDecorators: { payload: [{
22
+ type: Input,
23
+ args: ["copy-clipboard"]
24
+ }], onClick: [{
25
+ type: HostListener,
26
+ args: ["click", ["$event"]]
27
+ }] } });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29weS1jbGlwYm9hcmQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNwLWluZnJhL3NyYy9saWIvZGlyZWN0aXZlcy9jb3B5LWNsaXBib2FyZC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7QUFLckYsTUFBTSxPQUFPLHNCQUFzQjtJQUhuQztRQU1TLFlBQU8sR0FBVyxFQUFFLENBQUM7S0FZN0I7SUFUUSxPQUFPLENBQUMsS0FBaUI7UUFFOUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUNmLE9BQU87UUFFVCxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDekQsQ0FBQzsrR0FiVSxzQkFBc0I7bUdBQXRCLHNCQUFzQjs7NEZBQXRCLHNCQUFzQjtrQkFIbEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO2lCQUM3Qjs4QkFJUSxPQUFPO3NCQURiLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUloQixPQUFPO3NCQURiLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY29weS1jbGlwYm9hcmRdJ1xufSlcbmV4cG9ydCBjbGFzcyBDb3B5Q2xpcGJvYXJkRGlyZWN0aXZlIHtcblxuICBASW5wdXQoXCJjb3B5LWNsaXBib2FyZFwiKVxuICBwdWJsaWMgcGF5bG9hZDogc3RyaW5nID0gXCJcIjtcblxuICBASG9zdExpc3RlbmVyKFwiY2xpY2tcIiwgW1wiJGV2ZW50XCJdKVxuICBwdWJsaWMgb25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoIXRoaXMucGF5bG9hZClcbiAgICAgIHJldHVybjtcblxuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRoaXMucGF5bG9hZC50b1N0cmluZygpKTtcbiAgfVxuXG59XG4iXX0=
@@ -0,0 +1,27 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/forms";
4
+ export class DisableControlDirective {
5
+ constructor(ngControl) {
6
+ this.ngControl = ngControl;
7
+ }
8
+ ngOnInit() {
9
+ if (this.disableControl) {
10
+ this.ngControl.control?.disable();
11
+ }
12
+ else {
13
+ this.ngControl.control?.enable();
14
+ }
15
+ }
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DisableControlDirective, deps: [{ token: i1.NgControl }], target: i0.ɵɵFactoryTarget.Directive }); }
17
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: DisableControlDirective, selector: "[disableControl]", inputs: { disableControl: "disableControl" }, ngImport: i0 }); }
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DisableControlDirective, decorators: [{
20
+ type: Directive,
21
+ args: [{
22
+ selector: '[disableControl]'
23
+ }]
24
+ }], ctorParameters: () => [{ type: i1.NgControl }], propDecorators: { disableControl: [{
25
+ type: Input
26
+ }] } });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzYWJsZS1jb250cm9sLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zcC1pbmZyYS9zcmMvbGliL2RpcmVjdGl2ZXMvZGlzYWJsZS1jb250cm9sLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBTWpELE1BQU0sT0FBTyx1QkFBdUI7SUFJbEMsWUFBb0IsU0FBb0I7UUFBcEIsY0FBUyxHQUFULFNBQVMsQ0FBVztJQUFHLENBQUM7SUFFNUMsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3BDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7K0dBWlUsdUJBQXVCO21HQUF2Qix1QkFBdUI7OzRGQUF2Qix1QkFBdUI7a0JBSG5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtpQkFDN0I7OEVBR1UsY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2Rpc2FibGVDb250cm9sXSdcbn0pXG5leHBvcnQgY2xhc3MgRGlzYWJsZUNvbnRyb2xEaXJlY3RpdmUge1xuXG4gIEBJbnB1dCgpIGRpc2FibGVDb250cm9sOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbmdDb250cm9sOiBOZ0NvbnRyb2wpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZUNvbnRyb2wpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2w/LmRpc2FibGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5uZ0NvbnRyb2wuY29udHJvbD8uZW5hYmxlKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,43 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class HighlightDirective {
4
+ constructor(el, renderer) {
5
+ this.el = el;
6
+ this.renderer = renderer;
7
+ this.setTitle = false;
8
+ }
9
+ ngOnChanges(changes) {
10
+ if (!this.content) {
11
+ return;
12
+ }
13
+ if (this.setTitle) {
14
+ this.renderer.setProperty(this.el.nativeElement, 'title', this.content);
15
+ }
16
+ if (!this.searchedWord || !this.searchedWord.length || !this.classToApply) {
17
+ this.renderer.setProperty(this.el.nativeElement, 'innerHTML', this.content);
18
+ return;
19
+ }
20
+ this.renderer.setProperty(this.el.nativeElement, 'innerHTML', this.getFormattedText());
21
+ }
22
+ getFormattedText() {
23
+ const re = new RegExp(`(${this.searchedWord})`, 'gi');
24
+ return this.content.replace(re, `<span class="${this.classToApply}">$1</span>`);
25
+ }
26
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HighlightDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
27
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: HighlightDirective, selector: "[appHighlight]", inputs: { searchedWord: "searchedWord", content: "content", classToApply: "classToApply", setTitle: "setTitle" }, usesOnChanges: true, ngImport: i0 }); }
28
+ }
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HighlightDirective, decorators: [{
30
+ type: Directive,
31
+ args: [{
32
+ selector: '[appHighlight]'
33
+ }]
34
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { searchedWord: [{
35
+ type: Input
36
+ }], content: [{
37
+ type: Input
38
+ }], classToApply: [{
39
+ type: Input
40
+ }], setTitle: [{
41
+ type: Input
42
+ }] } });
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlnaGxpZ2h0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zcC1pbmZyYS9zcmMvbGliL2RpcmVjdGl2ZXMvaGlnaGxpZ2h0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBbUQsTUFBTSxlQUFlLENBQUM7O0FBS2xHLE1BQU0sT0FBTyxrQkFBa0I7SUFNN0IsWUFBb0IsRUFBYyxFQUFVLFFBQW1CO1FBQTNDLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBRnRELGFBQVEsR0FBRyxLQUFLLENBQUM7SUFFeUMsQ0FBQztJQUVwRSxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUN2QixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFDckIsT0FBTyxFQUNQLElBQUksQ0FBQyxPQUFPLENBQ2IsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzFFLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDNUUsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FDdkIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQ3JCLFdBQVcsRUFDWCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FDeEIsQ0FBQztJQUNKLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxNQUFNLEVBQUUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN0RCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxnQkFBZ0IsSUFBSSxDQUFDLFlBQVksYUFBYSxDQUFDLENBQUM7SUFDbEYsQ0FBQzsrR0FwQ1Usa0JBQWtCO21HQUFsQixrQkFBa0I7OzRGQUFsQixrQkFBa0I7a0JBSDlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtpQkFDM0I7dUdBRVUsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgU2ltcGxlQ2hhbmdlcywgUmVuZGVyZXIyLCBFbGVtZW50UmVmLCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FwcEhpZ2hsaWdodF0nXG59KVxuZXhwb3J0IGNsYXNzIEhpZ2hsaWdodERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHNlYXJjaGVkV29yZDogc3RyaW5nO1xuICBASW5wdXQoKSBjb250ZW50OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNsYXNzVG9BcHBseTogc3RyaW5nO1xuICBASW5wdXQoKSBzZXRUaXRsZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikgeyB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb250ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2V0VGl0bGUpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkoXG4gICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ3RpdGxlJyxcbiAgICAgICAgdGhpcy5jb250ZW50XG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5zZWFyY2hlZFdvcmQgfHwgIXRoaXMuc2VhcmNoZWRXb3JkLmxlbmd0aCB8fCAhdGhpcy5jbGFzc1RvQXBwbHkpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnaW5uZXJIVE1MJywgdGhpcy5jb250ZW50KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KFxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LFxuICAgICAgJ2lubmVySFRNTCcsXG4gICAgICB0aGlzLmdldEZvcm1hdHRlZFRleHQoKVxuICAgICk7XG4gIH1cblxuICBnZXRGb3JtYXR0ZWRUZXh0KCkge1xuICAgIGNvbnN0IHJlID0gbmV3IFJlZ0V4cChgKCR7dGhpcy5zZWFyY2hlZFdvcmR9KWAsICdnaScpO1xuICAgIHJldHVybiB0aGlzLmNvbnRlbnQucmVwbGFjZShyZSwgYDxzcGFuIGNsYXNzPVwiJHt0aGlzLmNsYXNzVG9BcHBseX1cIj4kMTwvc3Bhbj5gKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,73 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class LoadingBtnDirective {
4
+ get isLoading() { return this._isLoading; }
5
+ set isLoading(value) {
6
+ this._isLoading = value !== false && value !== 'false';
7
+ if (this._isLoading)
8
+ this.setLoadingState();
9
+ else
10
+ this.setDefaultState();
11
+ }
12
+ // #endregion PUBLIC
13
+ // #endregion ==========> PROPERTIES <==========
14
+ // #region ==========> INITIALIZATION <==========
15
+ /**
16
+ * @param _elementRef - Referência ao elemento DOM ao qual a diretiva está associada.
17
+ * @param _renderer - Serviço Angular para manipulação segura do DOM. */
18
+ constructor(_elementRef, _renderer) {
19
+ this._elementRef = _elementRef;
20
+ this._renderer = _renderer;
21
+ // #region ==========> PROPERTIES <==========
22
+ // #region PRIVATE
23
+ this._isLoading = false;
24
+ // #endregion PRIVATE
25
+ // #region PUBLIC
26
+ /** Texto ao trocar o botão para carregamento
27
+ * @example "Salvando..." */
28
+ this.loadingText = "";
29
+ /** Tipo de spinner a ser exibido no botão
30
+ * @default "border" */
31
+ this.loadingType = "border";
32
+ }
33
+ ngOnInit() { }
34
+ ngAfterViewInit() {
35
+ // Somente captura o conteúdo original se ainda não foi capturado
36
+ if (!this._originalContent) {
37
+ this._originalContent = this._elementRef.nativeElement.innerHTML;
38
+ }
39
+ }
40
+ // #endregion ==========> INITIALIZATION <==========
41
+ // #region ==========> UTILS <==========
42
+ setLoadingState() {
43
+ // Captura o conteúdo original se não foi capturado
44
+ if (!this._originalContent)
45
+ this._originalContent = this._elementRef.nativeElement.innerHTML;
46
+ // Desabilita o botão e substitui o conteúdo
47
+ this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', true);
48
+ this._renderer.setProperty(this._elementRef.nativeElement, 'innerHTML', `<span class="spinner-${this.loadingType} spinner-${this.loadingType}-sm" style="width: 1rem; height: 1rem;"></span> ${this.loadingText}`);
49
+ }
50
+ setDefaultState() {
51
+ // Restaura o conteúdo original e habilita o botão
52
+ if (this._originalContent) {
53
+ this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', false);
54
+ this._renderer.setProperty(this._elementRef.nativeElement, 'innerHTML', this._originalContent);
55
+ }
56
+ }
57
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LoadingBtnDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
58
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: LoadingBtnDirective, selector: "button[libLoading], a[libLoading]", inputs: { loadingText: "loadingText", loadingType: "loadingType", isLoading: ["libLoading", "isLoading"] }, ngImport: i0 }); }
59
+ }
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LoadingBtnDirective, decorators: [{
61
+ type: Directive,
62
+ args: [{
63
+ selector: 'button[libLoading], a[libLoading]'
64
+ }]
65
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { loadingText: [{
66
+ type: Input
67
+ }], loadingType: [{
68
+ type: Input
69
+ }], isLoading: [{
70
+ type: Input,
71
+ args: ["libLoading"]
72
+ }] } });
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy1idG4uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNwLWluZnJhL3NyYy9saWIvZGlyZWN0aXZlcy9sb2FkaW5nLWJ0bi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQzs7QUFLL0YsTUFBTSxPQUFPLG1CQUFtQjtJQW1COUIsSUFDVyxTQUFTLEtBQWMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUMzRCxJQUFXLFNBQVMsQ0FBQyxLQUF1QjtRQUMxQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssS0FBSyxLQUFLLElBQUksS0FBSyxLQUFLLE9BQU8sQ0FBQztRQUV2RCxJQUFJLElBQUksQ0FBQyxVQUFVO1lBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDOztZQUN2QyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUNELG9CQUFvQjtJQUVwQixnREFBZ0Q7SUFHaEQsaURBQWlEO0lBQ2pEOzs0RUFFd0U7SUFDeEUsWUFDVSxXQUF1QixFQUN2QixTQUFvQjtRQURwQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBcEM5Qiw2Q0FBNkM7UUFFN0Msa0JBQWtCO1FBQ1YsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUVwQyxxQkFBcUI7UUFFckIsaUJBQWlCO1FBRWpCO29DQUM0QjtRQUNaLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBRXpDOytCQUN1QjtRQUNQLGdCQUFXLEdBQXNCLFFBQVEsQ0FBQztJQXNCdEQsQ0FBQztJQUVMLFFBQVEsS0FBSyxDQUFDO0lBRWQsZUFBZTtRQUNiLGlFQUFpRTtRQUNqRSxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQztRQUNuRSxDQUFDO0lBQ0gsQ0FBQztJQUNELG9EQUFvRDtJQUdwRCx3Q0FBd0M7SUFDaEMsZUFBZTtRQUNyQixtREFBbUQ7UUFDbkQsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0I7WUFBRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO1FBRTdGLDRDQUE0QztRQUM1QyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUM5QixXQUFXLEVBQ1gsd0JBQXdCLElBQUksQ0FBQyxXQUFXLFlBQVksSUFBSSxDQUFDLFdBQVcsbURBQW1ELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FDMUksQ0FBQztJQUNKLENBQUM7SUFFTyxlQUFlO1FBQ3JCLGtEQUFrRDtRQUNsRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM5RSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDakcsQ0FBQztJQUNILENBQUM7K0dBeEVVLG1CQUFtQjttR0FBbkIsbUJBQW1COzs0RkFBbkIsbUJBQW1CO2tCQUgvQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQ0FBbUM7aUJBQzlDO3VHQWNpQixXQUFXO3NCQUExQixLQUFLO2dCQUlVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBR0ssU0FBUztzQkFEbkIsS0FBSzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnYnV0dG9uW2xpYkxvYWRpbmddLCBhW2xpYkxvYWRpbmddJ1xufSlcbmV4cG9ydCBjbGFzcyBMb2FkaW5nQnRuRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgXG4gIC8vICNyZWdpb24gPT09PT09PT09PT4gUFJPUEVSVElFUyA8PT09PT09PT09PVxuXG4gIC8vICNyZWdpb24gUFJJVkFURVxuICBwcml2YXRlIF9pc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfb3JpZ2luYWxDb250ZW50OiBhbnk7XG4gIC8vICNlbmRyZWdpb24gUFJJVkFURVxuXG4gIC8vICNyZWdpb24gUFVCTElDXG5cbiAgLyoqIFRleHRvIGFvIHRyb2NhciBvIGJvdMOjbyBwYXJhIGNhcnJlZ2FtZW50b1xuICAgKiBAZXhhbXBsZSBcIlNhbHZhbmRvLi4uXCIgKi9cbiAgQElucHV0KCkgcHVibGljIGxvYWRpbmdUZXh0OiBzdHJpbmcgPSBcIlwiO1xuXG4gIC8qKiBUaXBvIGRlIHNwaW5uZXIgYSBzZXIgZXhpYmlkbyBubyBib3TDo29cbiAgICogQGRlZmF1bHQgXCJib3JkZXJcIiAqL1xuICBASW5wdXQoKSBwdWJsaWMgbG9hZGluZ1R5cGU6IFwiYm9yZGVyXCIgfCBcImdyb3dcIiA9IFwiYm9yZGVyXCI7XG5cbiAgQElucHV0KFwibGliTG9hZGluZ1wiKVxuICBwdWJsaWMgZ2V0IGlzTG9hZGluZygpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2lzTG9hZGluZzsgfVxuICBwdWJsaWMgc2V0IGlzTG9hZGluZyh2YWx1ZTogYm9vbGVhbiB8IHN0cmluZykge1xuICAgIHRoaXMuX2lzTG9hZGluZyA9IHZhbHVlICE9PSBmYWxzZSAmJiB2YWx1ZSAhPT0gJ2ZhbHNlJztcblxuICAgIGlmICh0aGlzLl9pc0xvYWRpbmcpIHRoaXMuc2V0TG9hZGluZ1N0YXRlKCk7XG4gICAgZWxzZSB0aGlzLnNldERlZmF1bHRTdGF0ZSgpO1xuICB9XG4gIC8vICNlbmRyZWdpb24gUFVCTElDXG5cbiAgLy8gI2VuZHJlZ2lvbiA9PT09PT09PT09PiBQUk9QRVJUSUVTIDw9PT09PT09PT09XG5cblxuICAvLyAjcmVnaW9uID09PT09PT09PT0+IElOSVRJQUxJWkFUSU9OIDw9PT09PT09PT09XG4gIC8qKlxuICAgKiBAcGFyYW0gX2VsZW1lbnRSZWYgLSBSZWZlcsOqbmNpYSBhbyBlbGVtZW50byBET00gYW8gcXVhbCBhIGRpcmV0aXZhIGVzdMOhIGFzc29jaWFkYS5cbiAgICogQHBhcmFtIF9yZW5kZXJlciAtIFNlcnZpw6dvIEFuZ3VsYXIgcGFyYSBtYW5pcHVsYcOnw6NvIHNlZ3VyYSBkbyBET00uICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpIHsgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAvLyBTb21lbnRlIGNhcHR1cmEgbyBjb250ZcO6ZG8gb3JpZ2luYWwgc2UgYWluZGEgbsOjbyBmb2kgY2FwdHVyYWRvXG4gICAgaWYgKCF0aGlzLl9vcmlnaW5hbENvbnRlbnQpIHtcbiAgICAgIHRoaXMuX29yaWdpbmFsQ29udGVudCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5pbm5lckhUTUw7XG4gICAgfVxuICB9XG4gIC8vICNlbmRyZWdpb24gPT09PT09PT09PT4gSU5JVElBTElaQVRJT04gPD09PT09PT09PT1cblxuXG4gIC8vICNyZWdpb24gPT09PT09PT09PT4gVVRJTFMgPD09PT09PT09PT1cbiAgcHJpdmF0ZSBzZXRMb2FkaW5nU3RhdGUoKSB7XG4gICAgLy8gQ2FwdHVyYSBvIGNvbnRlw7pkbyBvcmlnaW5hbCBzZSBuw6NvIGZvaSBjYXB0dXJhZG9cbiAgICBpZiAoIXRoaXMuX29yaWdpbmFsQ29udGVudCkgdGhpcy5fb3JpZ2luYWxDb250ZW50ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmlubmVySFRNTDtcblxuICAgIC8vIERlc2FiaWxpdGEgbyBib3TDo28gZSBzdWJzdGl0dWkgbyBjb250ZcO6ZG9cbiAgICB0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNhYmxlZCcsIHRydWUpO1xuICAgIHRoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KFxuICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgJ2lubmVySFRNTCcsXG4gICAgICBgPHNwYW4gY2xhc3M9XCJzcGlubmVyLSR7dGhpcy5sb2FkaW5nVHlwZX0gc3Bpbm5lci0ke3RoaXMubG9hZGluZ1R5cGV9LXNtXCIgc3R5bGU9XCJ3aWR0aDogMXJlbTsgaGVpZ2h0OiAxcmVtO1wiPjwvc3Bhbj4gJHt0aGlzLmxvYWRpbmdUZXh0fWBcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREZWZhdWx0U3RhdGUoKSB7XG4gICAgLy8gUmVzdGF1cmEgbyBjb250ZcO6ZG8gb3JpZ2luYWwgZSBoYWJpbGl0YSBvIGJvdMOjb1xuICAgIGlmICh0aGlzLl9vcmlnaW5hbENvbnRlbnQpIHtcbiAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2Rpc2FibGVkJywgZmFsc2UpO1xuICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnaW5uZXJIVE1MJywgdGhpcy5fb3JpZ2luYWxDb250ZW50KTtcbiAgICB9XG4gIH1cbiAgLy8gI2VuZHJlZ2lvbiA9PT09PT09PT09PiBVVElMUyA8PT09PT09PT09PVxuXG59XG4iXX0=
@@ -0,0 +1,104 @@
1
+ import { Directive, Input } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Diretiva que adiciona um asterisco vermelho (*) ao lado de um elemento <label>
5
+ * para indicar que o campo é obrigatório.
6
+ *
7
+ * ## Uso
8
+ *
9
+ * No seu template HTML, você pode usar a diretiva de duas maneiras:
10
+ *
11
+ * 1. Sem especificar o valor, onde o marcador será exibido por padrão:
12
+ *
13
+ * ```html
14
+ * <label libRequired for="inputTeste" class="form-label">Pessoa</label>
15
+ * ```
16
+ *
17
+ * 2. Especificando explicitamente o valor (true ou false):
18
+ *
19
+ * ```html
20
+ * <label [libRequired]="true" for="inputTeste" class="form-label">Nome</label>
21
+ * <label [libRequired]="false" for="inputTeste" class="form-label">Empresa</label>
22
+ * ```
23
+ *
24
+ * ### Inputs
25
+ *
26
+ * - `libRequired`: boolean | string
27
+ * - Determina se o asterisco de obrigatoriedade deve ser exibido.
28
+ * - Aceita valores booleanos (`true` ou `false`) ou strings (`"true"` ou `"false"`).
29
+ * - Padrão: `true`
30
+ *
31
+ * - `sisID`: string
32
+ * - Identificador único para o elemento `<span>` criado.
33
+ * - Útil para manipulação direta do DOM ou testes.
34
+ */
35
+ export class RequiredDirective {
36
+ /**
37
+ * @param _elementRef - Referência ao elemento DOM ao qual a diretiva está associada.
38
+ * @param _renderer - Serviço Angular para manipulação segura do DOM.
39
+ */
40
+ constructor(_elementRef, _renderer) {
41
+ this._elementRef = _elementRef;
42
+ this._renderer = _renderer;
43
+ this._showMarker = true; // Valor padrão
44
+ /** Identificador único para o elemento <span> criado. */
45
+ this.spanID = "";
46
+ }
47
+ /**
48
+ * Define se o asterisco de obrigatoriedade deve ser exibido.
49
+ * Se nenhum valor for especificado, o padrão é true.
50
+ */
51
+ set showMarker(value) { this._showMarker = value !== false && value !== 'false'; /* Qualquer valor diferente de false será tratado como true*/ }
52
+ get showMarker() { return this._showMarker; }
53
+ ngOnInit() {
54
+ if (this.showMarker) {
55
+ this.addMarker();
56
+ }
57
+ }
58
+ ngOnChanges(changes) {
59
+ if (changes["showMarker"]?.currentValue !== changes["showMarker"]?.previousValue && changes["showMarker"]?.previousValue !== undefined) {
60
+ if (this.showMarker) {
61
+ this.addMarker();
62
+ }
63
+ else {
64
+ this.removeMarker();
65
+ }
66
+ }
67
+ }
68
+ /** Adiciona o marcador de asterisco ao elemento <label>. */
69
+ addMarker() {
70
+ if (document.getElementById(this.spanID)) {
71
+ return;
72
+ }
73
+ const spanElement = document.createElement("span");
74
+ spanElement.className = "text-danger";
75
+ spanElement.innerHTML = " *";
76
+ spanElement.id = this.spanID;
77
+ this._renderer.appendChild(this._elementRef.nativeElement, spanElement);
78
+ }
79
+ /** Remove o marcador de asterisco do elemento <label>. */
80
+ removeMarker() {
81
+ if (this.spanID === "") {
82
+ return;
83
+ }
84
+ const spanElement = document.getElementById(this.spanID);
85
+ if (spanElement !== null) {
86
+ this._renderer.removeChild(this._elementRef.nativeElement, spanElement);
87
+ }
88
+ }
89
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RequiredDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
90
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: RequiredDirective, selector: "label[libRequired], span[libRequired], p[libRequired]", inputs: { showMarker: ["libRequired", "showMarker"], spanID: ["sisID", "spanID"] }, usesOnChanges: true, ngImport: i0 }); }
91
+ }
92
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RequiredDirective, decorators: [{
93
+ type: Directive,
94
+ args: [{
95
+ selector: "label[libRequired], span[libRequired], p[libRequired]"
96
+ }]
97
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { showMarker: [{
98
+ type: Input,
99
+ args: ["libRequired"]
100
+ }], spanID: [{
101
+ type: Input,
102
+ args: ["sisID"]
103
+ }] } });
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNwLWluZnJhL3NyYy9saWIvZGlyZWN0aXZlcy9yZXF1aXJlZC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQStDLE1BQU0sZUFBZSxDQUFDOztBQUUxRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCRztBQUlILE1BQU0sT0FBTyxpQkFBaUI7SUFHNUI7OztPQUdHO0lBQ0gsWUFDVSxXQUF1QixFQUN2QixTQUFvQjtRQURwQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBUnRCLGdCQUFXLEdBQVksSUFBSSxDQUFDLENBQUMsZUFBZTtRQW1CcEQseURBQXlEO1FBQ3pDLFdBQU0sR0FBVyxFQUFFLENBQUM7SUFYaEMsQ0FBQztJQUVMOzs7T0FHRztJQUNILElBQ0ksVUFBVSxDQUFDLEtBQXVCLElBQUksSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLEtBQUssS0FBSyxJQUFJLEtBQUssS0FBSyxPQUFPLENBQUMsQ0FBQyw2REFBNkQsQ0FBQyxDQUFDO0lBQ2xLLElBQUksVUFBVSxLQUFjLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFNdEQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxZQUFZLEtBQUssT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLGFBQWEsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsYUFBYSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3ZJLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUFDLENBQUM7aUJBQ3JDLENBQUM7Z0JBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQUMsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQztJQUdELDREQUE0RDtJQUNwRCxTQUFTO1FBQ2YsSUFBSSxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQUMsT0FBTztRQUFDLENBQUM7UUFFckQsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuRCxXQUFXLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQztRQUN0QyxXQUFXLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUM3QixXQUFXLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELDBEQUEwRDtJQUNsRCxZQUFZO1FBQ2xCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUFDLE9BQU87UUFBQyxDQUFDO1FBRW5DLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pELElBQUksV0FBVyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFBQyxDQUFDO0lBQ3hHLENBQUM7K0dBdkRVLGlCQUFpQjttR0FBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUg3QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1REFBdUQ7aUJBQ2xFO3VHQWtCSyxVQUFVO3NCQURiLEtBQUs7dUJBQUMsYUFBYTtnQkFLSixNQUFNO3NCQUFyQixLQUFLO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgUmVuZGVyZXIyLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuLyoqXG4gKiBEaXJldGl2YSBxdWUgYWRpY2lvbmEgdW0gYXN0ZXJpc2NvIHZlcm1lbGhvICgqKSBhbyBsYWRvIGRlIHVtIGVsZW1lbnRvIDxsYWJlbD5cbiAqIHBhcmEgaW5kaWNhciBxdWUgbyBjYW1wbyDDqSBvYnJpZ2F0w7NyaW8uXG4gKiBcbiAqICMjIFVzb1xuICogXG4gKiBObyBzZXUgdGVtcGxhdGUgSFRNTCwgdm9jw6ogcG9kZSB1c2FyIGEgZGlyZXRpdmEgZGUgZHVhcyBtYW5laXJhczpcbiAqIFxuICogMS4gU2VtIGVzcGVjaWZpY2FyIG8gdmFsb3IsIG9uZGUgbyBtYXJjYWRvciBzZXLDoSBleGliaWRvIHBvciBwYWRyw6NvOlxuICogXG4gKiBgYGBodG1sXG4gKiA8bGFiZWwgbGliUmVxdWlyZWQgZm9yPVwiaW5wdXRUZXN0ZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlBlc3NvYTwvbGFiZWw+XG4gKiBgYGBcbiAqIFxuICogMi4gRXNwZWNpZmljYW5kbyBleHBsaWNpdGFtZW50ZSBvIHZhbG9yICh0cnVlIG91IGZhbHNlKTpcbiAqIFxuICogYGBgaHRtbFxuICogPGxhYmVsIFtsaWJSZXF1aXJlZF09XCJ0cnVlXCIgZm9yPVwiaW5wdXRUZXN0ZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPk5vbWU8L2xhYmVsPlxuICogPGxhYmVsIFtsaWJSZXF1aXJlZF09XCJmYWxzZVwiIGZvcj1cImlucHV0VGVzdGVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5FbXByZXNhPC9sYWJlbD5cbiAqIGBgYFxuICogXG4gKiAjIyMgSW5wdXRzXG4gKiBcbiAqIC0gYGxpYlJlcXVpcmVkYDogYm9vbGVhbiB8IHN0cmluZ1xuICogICAtIERldGVybWluYSBzZSBvIGFzdGVyaXNjbyBkZSBvYnJpZ2F0b3JpZWRhZGUgZGV2ZSBzZXIgZXhpYmlkby4gXG4gKiAgIC0gQWNlaXRhIHZhbG9yZXMgYm9vbGVhbm9zIChgdHJ1ZWAgb3UgYGZhbHNlYCkgb3Ugc3RyaW5ncyAoYFwidHJ1ZVwiYCBvdSBgXCJmYWxzZVwiYCkuXG4gKiAgIC0gUGFkcsOjbzogYHRydWVgXG4gKiBcbiAqIC0gYHNpc0lEYDogc3RyaW5nXG4gKiAgIC0gSWRlbnRpZmljYWRvciDDum5pY28gcGFyYSBvIGVsZW1lbnRvIGA8c3Bhbj5gIGNyaWFkby5cbiAqICAgLSDDmnRpbCBwYXJhIG1hbmlwdWxhw6fDo28gZGlyZXRhIGRvIERPTSBvdSB0ZXN0ZXMuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogXCJsYWJlbFtsaWJSZXF1aXJlZF0sIHNwYW5bbGliUmVxdWlyZWRdLCBwW2xpYlJlcXVpcmVkXVwiXG59KVxuZXhwb3J0IGNsYXNzIFJlcXVpcmVkRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBwcml2YXRlIF9zaG93TWFya2VyOiBib29sZWFuID0gdHJ1ZTsgLy8gVmFsb3IgcGFkcsOjb1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gX2VsZW1lbnRSZWYgLSBSZWZlcsOqbmNpYSBhbyBlbGVtZW50byBET00gYW8gcXVhbCBhIGRpcmV0aXZhIGVzdMOhIGFzc29jaWFkYS5cbiAgICogQHBhcmFtIF9yZW5kZXJlciAtIFNlcnZpw6dvIEFuZ3VsYXIgcGFyYSBtYW5pcHVsYcOnw6NvIHNlZ3VyYSBkbyBET00uXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICkgeyB9XG5cbiAgLyoqXG4gICAqIERlZmluZSBzZSBvIGFzdGVyaXNjbyBkZSBvYnJpZ2F0b3JpZWRhZGUgZGV2ZSBzZXIgZXhpYmlkby5cbiAgICogU2UgbmVuaHVtIHZhbG9yIGZvciBlc3BlY2lmaWNhZG8sIG8gcGFkcsOjbyDDqSB0cnVlLlxuICAgKi9cbiAgQElucHV0KFwibGliUmVxdWlyZWRcIilcbiAgc2V0IHNob3dNYXJrZXIodmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcpIHsgdGhpcy5fc2hvd01hcmtlciA9IHZhbHVlICE9PSBmYWxzZSAmJiB2YWx1ZSAhPT0gJ2ZhbHNlJzsgLyogUXVhbHF1ZXIgdmFsb3IgZGlmZXJlbnRlIGRlIGZhbHNlIHNlcsOhIHRyYXRhZG8gY29tbyB0cnVlKi8gfVxuICBnZXQgc2hvd01hcmtlcigpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX3Nob3dNYXJrZXI7IH1cblxuICAvKiogSWRlbnRpZmljYWRvciDDum5pY28gcGFyYSBvIGVsZW1lbnRvIDxzcGFuPiBjcmlhZG8uICovXG4gIEBJbnB1dChcInNpc0lEXCIpIHNwYW5JRDogc3RyaW5nID0gXCJcIjtcblxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNob3dNYXJrZXIpIHtcbiAgICAgIHRoaXMuYWRkTWFya2VyKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzW1wic2hvd01hcmtlclwiXT8uY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzW1wic2hvd01hcmtlclwiXT8ucHJldmlvdXNWYWx1ZSAmJiBjaGFuZ2VzW1wic2hvd01hcmtlclwiXT8ucHJldmlvdXNWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodGhpcy5zaG93TWFya2VyKSB7IHRoaXMuYWRkTWFya2VyKCk7IH1cbiAgICAgIGVsc2UgeyB0aGlzLnJlbW92ZU1hcmtlcigpOyB9XG4gICAgfVxuICB9XG5cblxuICAvKiogQWRpY2lvbmEgbyBtYXJjYWRvciBkZSBhc3RlcmlzY28gYW8gZWxlbWVudG8gPGxhYmVsPi4gKi9cbiAgcHJpdmF0ZSBhZGRNYXJrZXIoKTogdm9pZCB7XG4gICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuc3BhbklEKSkgeyByZXR1cm47IH1cblxuICAgIGNvbnN0IHNwYW5FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7XG4gICAgc3BhbkVsZW1lbnQuY2xhc3NOYW1lID0gXCJ0ZXh0LWRhbmdlclwiO1xuICAgIHNwYW5FbGVtZW50LmlubmVySFRNTCA9IFwiICpcIjtcbiAgICBzcGFuRWxlbWVudC5pZCA9IHRoaXMuc3BhbklEO1xuICAgIHRoaXMuX3JlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgc3BhbkVsZW1lbnQpO1xuICB9XG5cbiAgLyoqIFJlbW92ZSBvIG1hcmNhZG9yIGRlIGFzdGVyaXNjbyBkbyBlbGVtZW50byA8bGFiZWw+LiAqL1xuICBwcml2YXRlIHJlbW92ZU1hcmtlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zcGFuSUQgPT09IFwiXCIpIHsgcmV0dXJuOyB9XG5cbiAgICBjb25zdCBzcGFuRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuc3BhbklEKTtcbiAgICBpZiAoc3BhbkVsZW1lbnQgIT09IG51bGwpIHsgdGhpcy5fcmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBzcGFuRWxlbWVudCk7IH1cbiAgfVxufVxuIl19