@sapphire-ion/framework 0.30.0

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 (299) hide show
  1. package/README.md +24 -0
  2. package/esm2022/lib/classes/comparison/comparison-operator.mjs +18 -0
  3. package/esm2022/lib/classes/comparison/comparison-value-type.mjs +25 -0
  4. package/esm2022/lib/classes/comparison/comparison.mjs +41 -0
  5. package/esm2022/lib/classes/comparison/properties/bool-property.mjs +15 -0
  6. package/esm2022/lib/classes/comparison/properties/date-property.mjs +27 -0
  7. package/esm2022/lib/classes/comparison/properties/datetime-property.mjs +27 -0
  8. package/esm2022/lib/classes/comparison/properties/decimal-property.mjs +27 -0
  9. package/esm2022/lib/classes/comparison/properties/enum-property.mjs +27 -0
  10. package/esm2022/lib/classes/comparison/properties/implicit-property.mjs +12 -0
  11. package/esm2022/lib/classes/comparison/properties/int-property.mjs +27 -0
  12. package/esm2022/lib/classes/comparison/properties/long-property.mjs +27 -0
  13. package/esm2022/lib/classes/comparison/properties/string-property.mjs +15 -0
  14. package/esm2022/lib/classes/comparison/properties/time-property.mjs +27 -0
  15. package/esm2022/lib/classes/credentials.mjs +2 -0
  16. package/esm2022/lib/classes/environment.mjs +32 -0
  17. package/esm2022/lib/classes/filters/view-filtros.mjs +18 -0
  18. package/esm2022/lib/classes/inputs/table-field-form-builder.mjs +10 -0
  19. package/esm2022/lib/classes/inputs/table-field.mjs +63 -0
  20. package/esm2022/lib/classes/page-option.mjs +2 -0
  21. package/esm2022/lib/classes/routes/default-routing-factory.mjs +23 -0
  22. package/esm2022/lib/classes/routes/id-preloader-configuration.mjs +22 -0
  23. package/esm2022/lib/classes/routes/route-data.mjs +9 -0
  24. package/esm2022/lib/components/carousel/carousel-image/carousel-image.component.mjs +18 -0
  25. package/esm2022/lib/components/carousel/carousel-item/carousel-item.component.mjs +15 -0
  26. package/esm2022/lib/components/carousel/carousel.component.mjs +79 -0
  27. package/esm2022/lib/components/carousel/carousel.module.mjs +31 -0
  28. package/esm2022/lib/components/carousel/i-carousel-item.component.mjs +16 -0
  29. package/esm2022/lib/components/content-block/content-block.component.mjs +27 -0
  30. package/esm2022/lib/components/default/default-list/abstract-list.mjs +49 -0
  31. package/esm2022/lib/components/default/default-list/default-list.component.mjs +94 -0
  32. package/esm2022/lib/components/default/default-list/header-list/header-list.component.mjs +98 -0
  33. package/esm2022/lib/components/default/default-list/list.mjs +110 -0
  34. package/esm2022/lib/components/default/default-pagination/default-pagination.component.mjs +123 -0
  35. package/esm2022/lib/components/default/default-table/default-table.component.mjs +206 -0
  36. package/esm2022/lib/components/default/default-table/th-filter/th-filter.component.mjs +182 -0
  37. package/esm2022/lib/components/default/default-view/abstract-view.mjs +18 -0
  38. package/esm2022/lib/components/default/default-view/default-view.component.mjs +51 -0
  39. package/esm2022/lib/components/default/default-view/header-view/header-view.component.mjs +72 -0
  40. package/esm2022/lib/components/default/default-view/view.mjs +170 -0
  41. package/esm2022/lib/components/default/default.module.mjs +87 -0
  42. package/esm2022/lib/components/default-page/default.page.mjs +73 -0
  43. package/esm2022/lib/components/drag-drop-file/drag-drop-file.directive.mjs +60 -0
  44. package/esm2022/lib/components/drag-drop-file/drag-drop-file.module.mjs +31 -0
  45. package/esm2022/lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.mjs +15 -0
  46. package/esm2022/lib/components/drawer/default-drawer-end/default-drawer-end.component.mjs +34 -0
  47. package/esm2022/lib/components/drawer/drawer-group/drawer-group.component.mjs +49 -0
  48. package/esm2022/lib/components/drawer/drawer.component.mjs +117 -0
  49. package/esm2022/lib/components/drawer/menu.mjs +15 -0
  50. package/esm2022/lib/components/filter/filter.component.mjs +124 -0
  51. package/esm2022/lib/components/http-responses-pages/forbidden-403/forbidden-403.component.mjs +17 -0
  52. package/esm2022/lib/components/image/image.component.mjs +91 -0
  53. package/esm2022/lib/components/info-popover/info-popover.component.mjs +91 -0
  54. package/esm2022/lib/components/inputs/custom-input.mjs +77 -0
  55. package/esm2022/lib/components/inputs/custom-signal-input.mjs +74 -0
  56. package/esm2022/lib/components/inputs/input-bool/input-bool.component.mjs +43 -0
  57. package/esm2022/lib/components/inputs/input-bool/input-bool.configuration.mjs +16 -0
  58. package/esm2022/lib/components/inputs/input-color/input-color.component.mjs +487 -0
  59. package/esm2022/lib/components/inputs/input-configuration.mjs +2 -0
  60. package/esm2022/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.mjs +93 -0
  61. package/esm2022/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.configuration.mjs +6 -0
  62. package/esm2022/lib/components/inputs/input-date/input-date.component.mjs +119 -0
  63. package/esm2022/lib/components/inputs/input-date/input-date.configuration.mjs +8 -0
  64. package/esm2022/lib/components/inputs/input-decimal/input-decimal.component.mjs +269 -0
  65. package/esm2022/lib/components/inputs/input-decimal/input-decimal.configuration.mjs +45 -0
  66. package/esm2022/lib/components/inputs/input-default-configurations.mjs +14 -0
  67. package/esm2022/lib/components/inputs/input-file/download-button/download-button.component.mjs +91 -0
  68. package/esm2022/lib/components/inputs/input-file/input-file.component.mjs +128 -0
  69. package/esm2022/lib/components/inputs/input-file/input-file.configuration.mjs +11 -0
  70. package/esm2022/lib/components/inputs/input-loading/input-loading.component.mjs +16 -0
  71. package/esm2022/lib/components/inputs/input-provider-factory.mjs +15 -0
  72. package/esm2022/lib/components/inputs/input-select/ISelect.mjs +11 -0
  73. package/esm2022/lib/components/inputs/input-select/input-select-internal-option/input-select-internal-option.component.mjs +42 -0
  74. package/esm2022/lib/components/inputs/input-select/input-select-option/input-select-option.component.mjs +46 -0
  75. package/esm2022/lib/components/inputs/input-select/input-select-template.directive.mjs +16 -0
  76. package/esm2022/lib/components/inputs/input-select/input-select.component.mjs +322 -0
  77. package/esm2022/lib/components/inputs/input-select/input.select.configuration.mjs +164 -0
  78. package/esm2022/lib/components/inputs/input-string/input-string.component.mjs +50 -0
  79. package/esm2022/lib/components/inputs/input-string/input-string.configuration.mjs +18 -0
  80. package/esm2022/lib/components/inputs/input-textarea/input-textarea.component.mjs +47 -0
  81. package/esm2022/lib/components/inputs/input-type.mjs +18 -0
  82. package/esm2022/lib/components/inputs/input-validators.mjs +90 -0
  83. package/esm2022/lib/components/inputs/inputs.module.mjs +101 -0
  84. package/esm2022/lib/components/loading/loading.component.mjs +34 -0
  85. package/esm2022/lib/components/login/login-admin/login-admin.component.mjs +52 -0
  86. package/esm2022/lib/components/login/login.component.mjs +93 -0
  87. package/esm2022/lib/components/main-content/main-content.component.mjs +62 -0
  88. package/esm2022/lib/components/stepper/step/step.component.mjs +43 -0
  89. package/esm2022/lib/components/stepper/stepper.component.mjs +36 -0
  90. package/esm2022/lib/components/stepper/stepper.module.mjs +25 -0
  91. package/esm2022/lib/components/tabs/tab/tab.component.mjs +41 -0
  92. package/esm2022/lib/components/tabs/tabs/tabs.component.mjs +56 -0
  93. package/esm2022/lib/components/tabs/tabs.module.mjs +22 -0
  94. package/esm2022/lib/components/text-tooltip/text-tooltip.component.mjs +51 -0
  95. package/esm2022/lib/components/tooltip/tooltip.component.mjs +21 -0
  96. package/esm2022/lib/core.module.mjs +29 -0
  97. package/esm2022/lib/directives/ng-var.directive.mjs +29 -0
  98. package/esm2022/lib/guards/auth.guard.mjs +26 -0
  99. package/esm2022/lib/guards/error.interceptor.mjs +106 -0
  100. package/esm2022/lib/guards/token.interceptor.mjs +25 -0
  101. package/esm2022/lib/index.mjs +172 -0
  102. package/esm2022/lib/pipes/secure.pipe.mjs +42 -0
  103. package/esm2022/lib/services/auth.service.mjs +149 -0
  104. package/esm2022/lib/services/environment.service.mjs +26 -0
  105. package/esm2022/lib/services/generics.service.mjs +84 -0
  106. package/esm2022/lib/services/route/route.cache.service.mjs +15 -0
  107. package/esm2022/lib/services/route/route.provider.service.mjs +42 -0
  108. package/esm2022/lib/services/usuario.service.mjs +49 -0
  109. package/esm2022/lib/services/utils.service.mjs +149 -0
  110. package/esm2022/lib/services/web/api-url-provider.service.mjs +29 -0
  111. package/esm2022/lib/services/web/http.ativo.service.mjs +55 -0
  112. package/esm2022/lib/services/web/http.service.mjs +175 -0
  113. package/esm2022/lib/services/web/storage.service.mjs +115 -0
  114. package/esm2022/public-api.mjs +5 -0
  115. package/esm2022/sapphire-ion-framework.mjs +5 -0
  116. package/fesm2022/sapphire-ion-framework.mjs +6080 -0
  117. package/fesm2022/sapphire-ion-framework.mjs.map +1 -0
  118. package/index.d.ts +5 -0
  119. package/lib/classes/comparison/comparison-operator.d.ts +9 -0
  120. package/lib/classes/comparison/comparison-value-type.d.ts +23 -0
  121. package/lib/classes/comparison/comparison.d.ts +25 -0
  122. package/lib/classes/comparison/properties/bool-property.d.ts +7 -0
  123. package/lib/classes/comparison/properties/date-property.d.ts +11 -0
  124. package/lib/classes/comparison/properties/datetime-property.d.ts +11 -0
  125. package/lib/classes/comparison/properties/decimal-property.d.ts +11 -0
  126. package/lib/classes/comparison/properties/enum-property.d.ts +11 -0
  127. package/lib/classes/comparison/properties/implicit-property.d.ts +6 -0
  128. package/lib/classes/comparison/properties/int-property.d.ts +11 -0
  129. package/lib/classes/comparison/properties/long-property.d.ts +11 -0
  130. package/lib/classes/comparison/properties/string-property.d.ts +7 -0
  131. package/lib/classes/comparison/properties/time-property.d.ts +11 -0
  132. package/lib/classes/credentials.d.ts +5 -0
  133. package/lib/classes/environment.d.ts +13 -0
  134. package/lib/classes/filters/view-filtros.d.ts +10 -0
  135. package/lib/classes/inputs/table-field-form-builder.d.ts +5 -0
  136. package/lib/classes/inputs/table-field.d.ts +19 -0
  137. package/lib/classes/page-option.d.ts +7 -0
  138. package/lib/classes/routes/default-routing-factory.d.ts +8 -0
  139. package/lib/classes/routes/id-preloader-configuration.d.ts +28 -0
  140. package/lib/classes/routes/route-data.d.ts +5 -0
  141. package/lib/components/carousel/carousel-image/carousel-image.component.d.ts +10 -0
  142. package/lib/components/carousel/carousel-item/carousel-item.component.d.ts +9 -0
  143. package/lib/components/carousel/carousel.component.d.ts +32 -0
  144. package/lib/components/carousel/carousel.module.d.ts +12 -0
  145. package/lib/components/carousel/i-carousel-item.component.d.ts +9 -0
  146. package/lib/components/content-block/content-block.component.d.ts +15 -0
  147. package/lib/components/default/default-list/abstract-list.d.ts +21 -0
  148. package/lib/components/default/default-list/default-list.component.d.ts +42 -0
  149. package/lib/components/default/default-list/header-list/header-list.component.d.ts +45 -0
  150. package/lib/components/default/default-list/list.d.ts +37 -0
  151. package/lib/components/default/default-pagination/default-pagination.component.d.ts +36 -0
  152. package/lib/components/default/default-table/default-table.component.d.ts +71 -0
  153. package/lib/components/default/default-table/th-filter/th-filter.component.d.ts +20 -0
  154. package/lib/components/default/default-view/abstract-view.d.ts +16 -0
  155. package/lib/components/default/default-view/default-view.component.d.ts +26 -0
  156. package/lib/components/default/default-view/header-view/header-view.component.d.ts +25 -0
  157. package/lib/components/default/default-view/view.d.ts +55 -0
  158. package/lib/components/default/default.module.d.ts +28 -0
  159. package/lib/components/default-page/default.page.d.ts +35 -0
  160. package/lib/components/drag-drop-file/drag-drop-file.directive.d.ts +14 -0
  161. package/lib/components/drag-drop-file/drag-drop-file.module.d.ts +10 -0
  162. package/lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.d.ts +9 -0
  163. package/lib/components/drawer/default-drawer-end/default-drawer-end.component.d.ts +13 -0
  164. package/lib/components/drawer/drawer-group/drawer-group.component.d.ts +22 -0
  165. package/lib/components/drawer/drawer.component.d.ts +23 -0
  166. package/lib/components/drawer/menu.d.ts +9 -0
  167. package/lib/components/filter/filter.component.d.ts +29 -0
  168. package/lib/components/http-responses-pages/forbidden-403/forbidden-403.component.d.ts +8 -0
  169. package/lib/components/image/image.component.d.ts +23 -0
  170. package/lib/components/info-popover/info-popover.component.d.ts +15 -0
  171. package/lib/components/inputs/custom-input.d.ts +36 -0
  172. package/lib/components/inputs/custom-signal-input.d.ts +38 -0
  173. package/lib/components/inputs/input-bool/input-bool.component.d.ts +19 -0
  174. package/lib/components/inputs/input-bool/input-bool.configuration.d.ts +17 -0
  175. package/lib/components/inputs/input-color/input-color.component.d.ts +80 -0
  176. package/lib/components/inputs/input-configuration.d.ts +8 -0
  177. package/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.d.ts +24 -0
  178. package/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.configuration.d.ts +5 -0
  179. package/lib/components/inputs/input-date/input-date.component.d.ts +30 -0
  180. package/lib/components/inputs/input-date/input-date.configuration.d.ts +7 -0
  181. package/lib/components/inputs/input-decimal/input-decimal.component.d.ts +41 -0
  182. package/lib/components/inputs/input-decimal/input-decimal.configuration.d.ts +25 -0
  183. package/lib/components/inputs/input-default-configurations.d.ts +13 -0
  184. package/lib/components/inputs/input-file/download-button/download-button.component.d.ts +36 -0
  185. package/lib/components/inputs/input-file/input-file.component.d.ts +39 -0
  186. package/lib/components/inputs/input-file/input-file.configuration.d.ts +11 -0
  187. package/lib/components/inputs/input-loading/input-loading.component.d.ts +7 -0
  188. package/lib/components/inputs/input-provider-factory.d.ts +4 -0
  189. package/lib/components/inputs/input-select/ISelect.d.ts +21 -0
  190. package/lib/components/inputs/input-select/input-select-internal-option/input-select-internal-option.component.d.ts +18 -0
  191. package/lib/components/inputs/input-select/input-select-option/input-select-option.component.d.ts +24 -0
  192. package/lib/components/inputs/input-select/input-select-template.directive.d.ts +8 -0
  193. package/lib/components/inputs/input-select/input-select.component.d.ts +66 -0
  194. package/lib/components/inputs/input-select/input.select.configuration.d.ts +87 -0
  195. package/lib/components/inputs/input-string/input-string.component.d.ts +19 -0
  196. package/lib/components/inputs/input-string/input-string.configuration.d.ts +14 -0
  197. package/lib/components/inputs/input-textarea/input-textarea.component.d.ts +18 -0
  198. package/lib/components/inputs/input-type.d.ts +16 -0
  199. package/lib/components/inputs/input-validators.d.ts +19 -0
  200. package/lib/components/inputs/inputs.module.d.ts +28 -0
  201. package/lib/components/loading/loading.component.d.ts +18 -0
  202. package/lib/components/login/login-admin/login-admin.component.d.ts +20 -0
  203. package/lib/components/login/login.component.d.ts +28 -0
  204. package/lib/components/main-content/main-content.component.d.ts +17 -0
  205. package/lib/components/stepper/step/step.component.d.ts +15 -0
  206. package/lib/components/stepper/stepper.component.d.ts +17 -0
  207. package/lib/components/stepper/stepper.module.d.ts +10 -0
  208. package/lib/components/tabs/tab/tab.component.d.ts +19 -0
  209. package/lib/components/tabs/tabs/tabs.component.d.ts +18 -0
  210. package/lib/components/tabs/tabs.module.d.ts +12 -0
  211. package/lib/components/text-tooltip/text-tooltip.component.d.ts +16 -0
  212. package/lib/components/tooltip/tooltip.component.d.ts +7 -0
  213. package/lib/core.module.d.ts +11 -0
  214. package/lib/directives/ng-var.directive.d.ts +12 -0
  215. package/lib/guards/auth.guard.d.ts +11 -0
  216. package/lib/guards/error.interceptor.d.ts +32 -0
  217. package/lib/guards/token.interceptor.d.ts +11 -0
  218. package/lib/index.d.ts +108 -0
  219. package/lib/pipes/secure.pipe.d.ts +15 -0
  220. package/lib/services/auth.service.d.ts +47 -0
  221. package/lib/services/environment.service.d.ts +10 -0
  222. package/lib/services/generics.service.d.ts +22 -0
  223. package/lib/services/route/route.cache.service.d.ts +7 -0
  224. package/lib/services/route/route.provider.service.d.ts +13 -0
  225. package/lib/services/usuario.service.d.ts +21 -0
  226. package/lib/services/utils.service.d.ts +36 -0
  227. package/lib/services/web/api-url-provider.service.d.ts +13 -0
  228. package/lib/services/web/http.ativo.service.d.ts +31 -0
  229. package/lib/services/web/http.service.d.ts +51 -0
  230. package/lib/services/web/storage.service.d.ts +25 -0
  231. package/package.json +41 -0
  232. package/public-api.d.ts +1 -0
  233. package/themes/compiled-styles.scss +2291 -0
  234. package/themes/components/_inputs_new/input-string/input-string.component.scss +0 -0
  235. package/themes/components/_inputs_new/inputs.scss +15 -0
  236. package/themes/components/carousel/carousel-image/carousel-image.component.scss +0 -0
  237. package/themes/components/carousel/carousel-item/carousel-item.component.scss +0 -0
  238. package/themes/components/carousel/carousel.component.scss +9 -0
  239. package/themes/components/content-block/content-block.component.scss +0 -0
  240. package/themes/components/default/default-list/default-list.component.scss +0 -0
  241. package/themes/components/default/default-list/header-list/header-list.component.scss +0 -0
  242. package/themes/components/default/default-pagination/default-pagination.component.scss +22 -0
  243. package/themes/components/default/default-table/default-table.component.scss +33 -0
  244. package/themes/components/default/default-table/th-filter/th-filter.component.scss +24 -0
  245. package/themes/components/default/default-view/default-view.component.scss +5 -0
  246. package/themes/components/default/default-view/header-view/header-view.component.scss +7 -0
  247. package/themes/components/default-page/default.page.scss +4 -0
  248. package/themes/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.scss +9 -0
  249. package/themes/components/drawer/default-drawer-end/default-drawer-end.component.scss +0 -0
  250. package/themes/components/drawer/drawer-group/drawer-group.component.scss +22 -0
  251. package/themes/components/drawer/drawer.component.scss +46 -0
  252. package/themes/components/filter/filter.component.scss +0 -0
  253. package/themes/components/http-responses-pages/forbidden-403/forbidden-403.component.scss +19 -0
  254. package/themes/components/image/image.component.scss +0 -0
  255. package/themes/components/info-popover/info-popover.component.scss +3 -0
  256. package/themes/components/inputs/input-bool/input-bool.component.scss +14 -0
  257. package/themes/components/inputs/input-color/input-color.component.scss +48 -0
  258. package/themes/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.scss +0 -0
  259. package/themes/components/inputs/input-date/input-date.component.scss +41 -0
  260. package/themes/components/inputs/input-decimal/input-decimal.component.scss +44 -0
  261. package/themes/components/inputs/input-file/download-button/download-button.component.scss +3 -0
  262. package/themes/components/inputs/input-file/input-file.component.scss +3 -0
  263. package/themes/components/inputs/input-loading/input-loading.component.scss +0 -0
  264. package/themes/components/inputs/input-select/input-select-internal-option/input-select-internal-option.component.scss +0 -0
  265. package/themes/components/inputs/input-select/input-select-option/input-select-option.component.scss +0 -0
  266. package/themes/components/inputs/input-select/input-select.component.scss +28 -0
  267. package/themes/components/inputs/input-string/input-string.component.scss +0 -0
  268. package/themes/components/inputs/input-textarea/input-textarea.component.scss +0 -0
  269. package/themes/components/inputs/inputs.scss +67 -0
  270. package/themes/components/loading/loading.component.scss +0 -0
  271. package/themes/components/login/login-admin/login-admin.component.scss +3 -0
  272. package/themes/components/login/login.component.scss +40 -0
  273. package/themes/components/main-content/main-content.component.scss +9 -0
  274. package/themes/components/stepper/step/step.component.scss +48 -0
  275. package/themes/components/stepper/stepper.component.scss +0 -0
  276. package/themes/components/tabs/tab/tab.component.scss +0 -0
  277. package/themes/components/tabs/tabs/tabs.component.scss +23 -0
  278. package/themes/components/text-tooltip/text-tooltip.component.scss +0 -0
  279. package/themes/components/tooltip/tooltip.component.scss +23 -0
  280. package/themes/styles/components.scss +52 -0
  281. package/themes/styles/core.styles.scss +409 -0
  282. package/themes/styles/ionic/ion-action-sheet.scss +8 -0
  283. package/themes/styles/ionic/ion-alert.scss +9 -0
  284. package/themes/styles/ionic/ion-button.scss +3 -0
  285. package/themes/styles/ionic/ion-card.scss +3 -0
  286. package/themes/styles/ionic/ion-content.scss +3 -0
  287. package/themes/styles/ionic/ion-datetime.scss +6 -0
  288. package/themes/styles/ionic/ion-item.scss +10 -0
  289. package/themes/styles/ionic/ion-list.scss +4 -0
  290. package/themes/styles/ionic/ion-modal.scss +8 -0
  291. package/themes/styles/ionic/ion-popover.scss +31 -0
  292. package/themes/styles/ionic/ion-progress-bar.scss +3 -0
  293. package/themes/styles/ionic/ion-searchbar.scss +4 -0
  294. package/themes/styles/ionic/ion-toast.scss +14 -0
  295. package/themes/styles/ionic.scss +13 -0
  296. package/themes/styles/login-default.scss +87 -0
  297. package/themes/styles/mixins.scss +467 -0
  298. package/themes/styles/styles.scss +1 -0
  299. package/themes/styles/translucid.scss +21 -0
@@ -0,0 +1,322 @@
1
+ import { Component, ContentChildren, ElementRef, Host, HostListener, Optional, QueryList, SkipSelf, ViewChild, ViewChildren, computed, effect, forwardRef, model, signal } from '@angular/core';
2
+ import { IonInput, IonItem, IonPopover, IonSearchbar } from '@ionic/angular';
3
+ import { ControlContainer } from '@angular/forms';
4
+ import { interval } from 'rxjs';
5
+ import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
6
+ import { BindLabelFactory, BindValueFactory, InputSelectConfiguration } from './input.select.configuration';
7
+ import { InputSelectInternalOptionComponent } from './input-select-internal-option/input-select-internal-option.component';
8
+ import { InputSelectOptionComponent } from './input-select-option/input-select-option.component';
9
+ import { ISelect } from './ISelect';
10
+ import { InputProviderFactory } from '../input-provider-factory';
11
+ import { CustomSignalInput } from '../custom-signal-input';
12
+ import { Search } from '../../../services/utils.service';
13
+ import * as i0 from "@angular/core";
14
+ import * as i1 from "@angular/forms";
15
+ import * as i2 from "@angular/common";
16
+ import * as i3 from "@ionic/angular";
17
+ import * as i4 from "@angular/cdk/scrolling";
18
+ import * as i5 from "../input-loading/input-loading.component";
19
+ import * as i6 from "./input-select-internal-option/input-select-internal-option.component";
20
+ export class InputSelectComponent extends CustomSignalInput {
21
+ constructor(controlContainer, elementRef) {
22
+ super();
23
+ this.controlContainer = controlContainer;
24
+ this.elementRef = elementRef;
25
+ /** Items disponíveis no select */
26
+ this.items = model([]);
27
+ /** Configuração do select */
28
+ this.configuration = model(new InputSelectConfiguration());
29
+ this.loadingFromLoader = false;
30
+ this.useDefaultModelOptions = signal(false);
31
+ this.bindValue = computed(() => {
32
+ if (this.useDefaultModelOptions()) {
33
+ return ((obj) => { return obj.value; });
34
+ }
35
+ return BindValueFactory(this.configuration());
36
+ });
37
+ this.bindLabel = computed(() => {
38
+ if (this.useDefaultModelOptions()) {
39
+ return ((obj) => { return obj.label; });
40
+ }
41
+ return BindLabelFactory(this.configuration());
42
+ });
43
+ this.lastItemsQtd = null;
44
+ this.CurrentLabel = "";
45
+ this.CurrentlyNoValue = true;
46
+ //[ Model ]
47
+ this._model = null;
48
+ this.interfaceOptions = { cssClass: 'wider-popover' };
49
+ this.Search = model("");
50
+ this.lstSearchItens = computed(() => { return Search(this.items(), this.Search(), this.bindLabel()); });
51
+ effect(() => { this.Update(); }, { allowSignalWrites: true });
52
+ this.updateInterval = interval(1000);
53
+ this.updateSubscription = this.updateInterval.subscribe(() => {
54
+ if (this.lastItemsQtd != this.items().length) {
55
+ this.lastItemsQtd = this.items().length;
56
+ this.Update();
57
+ }
58
+ });
59
+ }
60
+ ngOnDestroy() {
61
+ this.updateSubscription.unsubscribe();
62
+ }
63
+ ngOnInit() {
64
+ super.ngOnInit();
65
+ this.configuration().loader.AddComponent(this);
66
+ this.configuration().loader.Refresh(this.items());
67
+ }
68
+ Clear() {
69
+ this.model = null;
70
+ this.Update();
71
+ }
72
+ Update() {
73
+ this.UpdateSelected();
74
+ this.UpdateCurrentLabel();
75
+ }
76
+ UpdateCurrentLabel() {
77
+ if (this._model == null) {
78
+ this.CurrentLabel = this.configuration().placeholder;
79
+ this.CurrentlyNoValue = true;
80
+ return;
81
+ }
82
+ if (!this.configuration().multiple) {
83
+ const m = this.items().find(p => this.bindValue()(p) == this._model);
84
+ if (m) {
85
+ this.CurrentLabel = this.bindLabel()(m);
86
+ this.CurrentlyNoValue = false;
87
+ }
88
+ return;
89
+ }
90
+ else {
91
+ if (!this._model) {
92
+ this.CurrentLabel = this.configuration().placeholder;
93
+ this.CurrentlyNoValue = true;
94
+ return;
95
+ }
96
+ else if (Array.isArray(this.model) && !this.model.length) {
97
+ this.CurrentLabel = this.configuration().placeholder;
98
+ this.CurrentlyNoValue = true;
99
+ return;
100
+ }
101
+ this.CurrentLabel = "";
102
+ this.CurrentlyNoValue = false;
103
+ return;
104
+ }
105
+ }
106
+ UpdateSelected() {
107
+ if (this.lstOptions && this.lstOptions.length) {
108
+ this.lstOptions.forEach(p => p.isSelected = false);
109
+ this.lstOptions.filter(p => Array.isArray(this._model) ? this._model.includes(p.value) : this._model == p.value).forEach(p => p.isSelected = true);
110
+ }
111
+ }
112
+ IsSelected(item) {
113
+ if (Array.isArray(this._model)) {
114
+ return this._model.includes(this.bindValue()(item));
115
+ }
116
+ return this._model == this.bindValue()(item);
117
+ }
118
+ /** Applies only on multiple */
119
+ GetSelectedItens() {
120
+ if (this._model && this.lstOptions.length) {
121
+ return this.lstOptions.filter(p => p.isSelected).map(p => p.model());
122
+ }
123
+ if (this._model && this.items()) {
124
+ return this.items().filter(p => Array.isArray(this._model) ? this._model.includes(this.bindValue()(p)) : this._model == this.bindValue()(p));
125
+ }
126
+ return [];
127
+ }
128
+ get model() { return this._model; }
129
+ set model(value) {
130
+ this.SetModel(value);
131
+ this.propagateChange(this._model);
132
+ }
133
+ SetModel(value) {
134
+ if (value == null) {
135
+ this._model = null;
136
+ return;
137
+ }
138
+ this._model = value;
139
+ this.Update();
140
+ return;
141
+ }
142
+ SearchChanged() {
143
+ if (this.lstOptions.length) {
144
+ this.useDefaultModelOptions.set(true);
145
+ var lst = Search(this.lstOptions.map(p => p.model()), this.Search(), this.bindLabel());
146
+ this.lstOptions.forEach(p => p.hidden = !lst.includes(p.model()));
147
+ }
148
+ }
149
+ GetUseDefaultModelOptions() {
150
+ if (this.lstOptions && this.lstOptions.length) {
151
+ return true;
152
+ }
153
+ return false;
154
+ }
155
+ UpdateUseDefaultModelOptions() {
156
+ this.useDefaultModelOptions.set(this.GetUseDefaultModelOptions());
157
+ if (this.useDefaultModelOptions()) {
158
+ if (this.items().length != this.lstOptions.length) {
159
+ this.items.set(this.lstOptions.map(p => p.model()));
160
+ }
161
+ }
162
+ }
163
+ //[ Select ]
164
+ writeValue(obj) { this.SetModel(obj); }
165
+ Select(item) {
166
+ this.UpdateUseDefaultModelOptions();
167
+ if (!this.configuration().multiple) {
168
+ this.model = this.bindValue()(item);
169
+ }
170
+ else {
171
+ var value = this.bindValue()(item);
172
+ if (this._model) {
173
+ if (this._model.includes(value)) {
174
+ this.model = [...this._model.filter(p => p != value)];
175
+ }
176
+ else {
177
+ this.model = [...this._model, value];
178
+ }
179
+ return;
180
+ }
181
+ this.model = [value];
182
+ return;
183
+ }
184
+ }
185
+ async PresentPopover($event) {
186
+ Object.defineProperty($event, 'target', { writable: false, value: this.inputContainer.nativeElement });
187
+ const Popover = this.ionPopoverComponent;
188
+ const PopoverElement = this.ionPopoverElement.nativeElement;
189
+ const PopoverContent = Array.from(Array.from(PopoverElement.shadowRoot.children).find(p => p.classList.contains("popover-wrapper")).children).find(p => p.classList.contains("popover-content"));
190
+ PopoverContent.style.width = this.inputContainer.nativeElement.offsetWidth + 'px';
191
+ await Popover.present($event);
192
+ this.searchbarComponent.setFocus();
193
+ if (this.cdkVirtualScrollViewport) {
194
+ this.cdkVirtualScrollViewport.nativeElement.scroll({ top: 1, behavior: 'smooth' });
195
+ }
196
+ this.focusedModel = null;
197
+ this.UpdateUseDefaultModelOptions();
198
+ }
199
+ ;
200
+ async HandleKeyboardEvent(event) {
201
+ if (!this.inputComponent || !this.searchbarComponent) {
202
+ return;
203
+ }
204
+ const inputComponent = await this.inputComponent.getInputElement();
205
+ const searchbarComponent = await this.searchbarComponent.getInputElement();
206
+ if (event.target == inputComponent && event.key == "ArrowDown" && this.configuration().searcheable) {
207
+ this.itemComponent.nativeElement.click();
208
+ event.preventDefault();
209
+ }
210
+ else if (event.target == searchbarComponent) {
211
+ this.UpdateUseDefaultModelOptions();
212
+ const items = this.lstSearchItens();
213
+ if (event.key == "ArrowDown") {
214
+ if (this.focusedModel) {
215
+ const index = items.indexOf(this.focusedModel);
216
+ if (items[index + 1]) {
217
+ this.SetFocusedElement(items[index + 1]);
218
+ }
219
+ else {
220
+ this.SetFocusedElement(items[0]);
221
+ }
222
+ }
223
+ else {
224
+ if (items[0]) {
225
+ this.SetFocusedElement(items[0]);
226
+ }
227
+ }
228
+ }
229
+ else if (event.key == "ArrowUp") {
230
+ if (this.focusedModel) {
231
+ const index = items.indexOf(this.focusedModel);
232
+ if (items[index - 1]) {
233
+ this.SetFocusedElement(items[index - 1]);
234
+ }
235
+ else {
236
+ this.SetFocusedElement(items[items.length - 1]);
237
+ }
238
+ }
239
+ }
240
+ else if (event.key == "Enter") {
241
+ var Option;
242
+ if (this.useDefaultModelOptions()) {
243
+ Option = this.lstOptions.find(p => p.model() == this.focusedModel);
244
+ }
245
+ else {
246
+ Option = this.lstInternalOptions.find(p => p.model == this.focusedModel);
247
+ }
248
+ if (!Option.disabled) {
249
+ this.Select(this.focusedModel);
250
+ }
251
+ }
252
+ }
253
+ }
254
+ SetFocusedElement(focusedModel, scroll = true) {
255
+ this.focusedModel = focusedModel;
256
+ var Option;
257
+ if (this.useDefaultModelOptions()) {
258
+ Option = this.lstOptions.find(p => p.model() == focusedModel);
259
+ this.lstOptions.filter(p => p.onFocus).forEach(p => p.onFocus = false);
260
+ Option.onFocus = true;
261
+ }
262
+ else {
263
+ Option = this.lstInternalOptions.find(p => p.model == focusedModel);
264
+ this.lstInternalOptions.filter(p => p.onFocus).forEach(p => p.onFocus = false);
265
+ Option.onFocus = true;
266
+ }
267
+ if (scroll) {
268
+ Option.GetNativeElement().scrollIntoView({ behavior: 'smooth' });
269
+ }
270
+ }
271
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InputSelectComponent, deps: [{ token: i1.ControlContainer, host: true, optional: true, skipSelf: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
272
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: InputSelectComponent, selector: "input-select", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, configuration: { classPropertyName: "configuration", publicName: "configuration", isSignal: true, isRequired: false, transformFunction: null }, Search: { classPropertyName: "Search", publicName: "Search", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { items: "itemsChange", configuration: "configurationChange", Search: "SearchChange" }, host: { listeners: { "document:keydown": "HandleKeyboardEvent($event)" } }, providers: [InputProviderFactory.GetProvider(InputSelectComponent, [
273
+ {
274
+ provide: ISelect, useExisting: forwardRef(() => InputSelectComponent)
275
+ }
276
+ ])], queries: [{ propertyName: "lstOptions", predicate: InputSelectOptionComponent }], viewQueries: [{ propertyName: "cdkVirtualScrollViewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true, read: (ElementRef) }, { propertyName: "inputContainer", first: true, predicate: ["container"], descendants: true, read: ElementRef }, { propertyName: "ionPopoverComponent", first: true, predicate: IonPopover, descendants: true }, { propertyName: "ionPopoverElement", first: true, predicate: IonPopover, descendants: true, read: ElementRef }, { propertyName: "searchbarComponent", first: true, predicate: IonSearchbar, descendants: true }, { propertyName: "inputComponent", first: true, predicate: IonInput, descendants: true }, { propertyName: "itemComponent", first: true, predicate: IonItem, descendants: true, read: ElementRef }, { propertyName: "lstInternalOptions", predicate: InputSelectInternalOptionComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"relative flex overflow-hidden\" #container>\r\n <ion-card \r\n class=\"focus-within:on-focus ion-card-input\" \r\n [disabled]=\"loading || loadingFromLoader || disabled\" \r\n [class.invalid]=\"invalid\"\r\n [class.submitted]=\"submitted\"\r\n [class.disabled]=\"disabled\"\r\n [ngClass]=\"{'!rounded-l-2xl !rounded-r-none !border-r-0': configuration().clearable}\"\r\n >\r\n <ion-card-content>\r\n <ion-item lines=\"none\" class=\"rounded-2xl w-full relative\" (click)=\"PresentPopover($event)\" [ngClass]=\"{'!rounded-l-2xl !rounded-r-none': configuration().clearable }\">\r\n <ion-input fill=\"none\" [readonly]=\"true\" labelPlacement=\"stacked\" [value]=\"CurrentLabel\" [class.no-items-opacity]=\"CurrentlyNoValue\">\r\n <ion-text id=\"label\" [ngClass]=\"{'required': required() }\" slot=\"label\" class=\"!text-dark\"> \r\n {{label}} \r\n </ion-text>\r\n </ion-input>\r\n @if(configuration().multiple){\r\n <div class=\"absolute left-0 bottom-0 h-6 w-full flex z-[90] overflow-x-auto\">\r\n @for(item of GetSelectedItens(); track $index){\r\n <div class=\"h-full flex bg-medium/10 border translucid-border rounded-lg mr-1 animated\">\r\n <div (click)=\"Select(item); $event.stopPropagation()\" class=\"bg-medium/10 cursor-pointer translucid-border min-w-min !border-l-0 !border-y-0 h-full aspect-square flex items-center justify-center rounded-r-lg\"> \r\n <ion-icon color=\"danger\" name=\"close\"></ion-icon>\r\n </div>\r\n <div class=\"h-full px-1 select-none\"> {{bindLabel()(item)}} </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </ion-item>\r\n \r\n </ion-card-content>\r\n </ion-card>\r\n <input-loading [loading]=\"loading || loadingFromLoader\"></input-loading>\r\n @if(configuration().clearable){\r\n <div class=\"w-12\">\r\n <ion-button (click)=\"Clear()\" [disabled]=\"loading || disabled || loadingFromLoader\" size=\"small\" fill=\"outline\" color=\"medium\" class=\"rounded-r-2xl h-full w-full\" style=\"--border-width: 1px 1px 2px 1px;\">\r\n <ion-icon name=\"backspace\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n </div>\r\n }\r\n</div>\r\n\r\n<ion-popover class=\"input-select-popover\" [keepContentsMounted]=\"false\" [dismissOnSelect]=\"!configuration().multiple\" (didDismiss)=\"Search.set('')\">\r\n <ng-template>\r\n <div class=\"size-full flex flex-col bg-primary/10\">\r\n <div class=\"w-full shrink-0\" [hidden]=\"!configuration().searcheable\">\r\n <ion-searchbar [(ngModel)]=\"Search\" (ngModelChange)=\"SearchChanged()\" placeholder=\"Pesquisa...\" class=\"size-full bg-transparent\" [debounce]=\"100\"></ion-searchbar>\r\n </div>\r\n\r\n <div class=\"h-48 w-full overflow-hidden translucid-border !border-x-0 !border-b-0 rounded-t-2xl bg-light\" [ngClass]=\"{'!border-0': !configuration().searcheable}\">\r\n @if(!lstOptions || !lstOptions.length){\r\n <cdk-virtual-scroll-viewport itemSize=\"45\" [minBufferPx]=\"200\" [maxBufferPx]=\"300\" class=\"size-full\">\r\n <input-select-internal-option [model]=\"item\" *cdkVirtualFor=\"let item of lstSearchItens()\" [isSelected]=\"IsSelected(item)\">\r\n <ion-label class=\"truncate\">{{bindLabel()(item)}}</ion-label>\r\n </input-select-internal-option>\r\n </cdk-virtual-scroll-viewport>\r\n }\r\n @else {\r\n <div class=\"size-full overflow-y-auto overflow-x-hidden mask-y\">\r\n <ng-content select=\"input-select-option\"></ng-content>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </ng-template>\r\n</ion-popover>", styles: [".no-items-opacity{--color: color-mix(in srgb, var(--ion-color-dark) 60%, transparent 40%)}.rounded-2xl,.\\!rounded-2xl{--border-radius: 1rem}.rounded-r-2xl,.\\!rounded-r-2xl{--border-radius: 0rem 1rem 1rem 0rem}.rounded-l-2xl,.\\!rounded-l-2xl{--border-radius: 1rem 0rem 0rem 1rem}.rounded-tr-none,.\\!rounded-tr-none{--border-radius: 0rem 0rem 1rem 0rem}\n", ".on-hover{background:color-mix(in srgb,var(--ion-color-light) 97%,transparent 3%)}.on-hover:hover{transition-property:all;transition-duration:.3s;transition-timing-function:cubic-bezier(.4,0,.2,1);background:color-mix(in srgb,var(--ion-color-dark) 15%,transparent 93%)}ion-card.ion-card-input{margin:0;display:flex;height:100%;width:100%;align-items:center;justify-content:center;overflow:hidden;border-radius:1rem;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition-property:all;transition-duration:.3s;transition-timing-function:cubic-bezier(.4,0,.2,1);background:color-mix(in srgb,var(--ion-color-light) 97%,transparent 3%);border-bottom-color:var(--ion-color-medium);border-right-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%);border-top-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%);border-left-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%);border-width:1px 1px 2px 1px;min-height:58px;max-height:58px;height:58px}ion-card.ion-card-input:hover{background:color-mix(in srgb,var(--ion-color-dark) 15%,transparent 93%)}ion-card.ion-card-input.submitted.invalid{border-color:color-mix(in srgb,var(--ion-color-danger) 75%,transparent 25%)!important}ion-card.ion-card-input.disabled{background-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%)!important}ion-card.ion-card-input ion-card-content{width:100%;height:100%;background-color:transparent;padding:0}ion-item{--background: transparent}ion-text#label.required:after{content:\"*\";color:var(--ion-color-danger);vertical-align:text-bottom;font-size:small}ion-text#label:not(.required):after{content:var(--input-opcional-label, \"(Opcional)\");color:var(--ion-color-medium);vertical-align:text-bottom;font-size:small}.on-focus{border-bottom-color:var(--ion-color-primary)}.focus-within\\:on-focus:focus-within{border-bottom-color:var(--ion-color-primary)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i3.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i3.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i3.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i3.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i3.IonInput, selector: "ion-input", inputs: ["autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearInputIcon", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "spellcheck", "step", "type", "value"] }, { kind: "component", type: i3.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i3.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i3.IonSearchbar, selector: "ion-searchbar", inputs: ["animated", "autocapitalize", "autocomplete", "autocorrect", "cancelButtonIcon", "cancelButtonText", "clearIcon", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "maxlength", "minlength", "mode", "name", "placeholder", "searchIcon", "showCancelButton", "showClearButton", "spellcheck", "type", "value"] }, { kind: "component", type: i3.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i3.IonPopover, selector: "ion-popover" }, { kind: "directive", type: i3.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i4.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i4.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: i5.InputLoadingComponent, selector: "input-loading", inputs: ["loading"] }, { kind: "component", type: i6.InputSelectInternalOptionComponent, selector: "input-select-internal-option", inputs: ["hidden", "disabled", "label", "model", "isSelected"], outputs: ["labelChange"] }] }); }
277
+ }
278
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InputSelectComponent, decorators: [{
279
+ type: Component,
280
+ args: [{ selector: 'input-select', providers: [InputProviderFactory.GetProvider(InputSelectComponent, [
281
+ {
282
+ provide: ISelect, useExisting: forwardRef(() => InputSelectComponent)
283
+ }
284
+ ])], template: "<div class=\"relative flex overflow-hidden\" #container>\r\n <ion-card \r\n class=\"focus-within:on-focus ion-card-input\" \r\n [disabled]=\"loading || loadingFromLoader || disabled\" \r\n [class.invalid]=\"invalid\"\r\n [class.submitted]=\"submitted\"\r\n [class.disabled]=\"disabled\"\r\n [ngClass]=\"{'!rounded-l-2xl !rounded-r-none !border-r-0': configuration().clearable}\"\r\n >\r\n <ion-card-content>\r\n <ion-item lines=\"none\" class=\"rounded-2xl w-full relative\" (click)=\"PresentPopover($event)\" [ngClass]=\"{'!rounded-l-2xl !rounded-r-none': configuration().clearable }\">\r\n <ion-input fill=\"none\" [readonly]=\"true\" labelPlacement=\"stacked\" [value]=\"CurrentLabel\" [class.no-items-opacity]=\"CurrentlyNoValue\">\r\n <ion-text id=\"label\" [ngClass]=\"{'required': required() }\" slot=\"label\" class=\"!text-dark\"> \r\n {{label}} \r\n </ion-text>\r\n </ion-input>\r\n @if(configuration().multiple){\r\n <div class=\"absolute left-0 bottom-0 h-6 w-full flex z-[90] overflow-x-auto\">\r\n @for(item of GetSelectedItens(); track $index){\r\n <div class=\"h-full flex bg-medium/10 border translucid-border rounded-lg mr-1 animated\">\r\n <div (click)=\"Select(item); $event.stopPropagation()\" class=\"bg-medium/10 cursor-pointer translucid-border min-w-min !border-l-0 !border-y-0 h-full aspect-square flex items-center justify-center rounded-r-lg\"> \r\n <ion-icon color=\"danger\" name=\"close\"></ion-icon>\r\n </div>\r\n <div class=\"h-full px-1 select-none\"> {{bindLabel()(item)}} </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </ion-item>\r\n \r\n </ion-card-content>\r\n </ion-card>\r\n <input-loading [loading]=\"loading || loadingFromLoader\"></input-loading>\r\n @if(configuration().clearable){\r\n <div class=\"w-12\">\r\n <ion-button (click)=\"Clear()\" [disabled]=\"loading || disabled || loadingFromLoader\" size=\"small\" fill=\"outline\" color=\"medium\" class=\"rounded-r-2xl h-full w-full\" style=\"--border-width: 1px 1px 2px 1px;\">\r\n <ion-icon name=\"backspace\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n </div>\r\n }\r\n</div>\r\n\r\n<ion-popover class=\"input-select-popover\" [keepContentsMounted]=\"false\" [dismissOnSelect]=\"!configuration().multiple\" (didDismiss)=\"Search.set('')\">\r\n <ng-template>\r\n <div class=\"size-full flex flex-col bg-primary/10\">\r\n <div class=\"w-full shrink-0\" [hidden]=\"!configuration().searcheable\">\r\n <ion-searchbar [(ngModel)]=\"Search\" (ngModelChange)=\"SearchChanged()\" placeholder=\"Pesquisa...\" class=\"size-full bg-transparent\" [debounce]=\"100\"></ion-searchbar>\r\n </div>\r\n\r\n <div class=\"h-48 w-full overflow-hidden translucid-border !border-x-0 !border-b-0 rounded-t-2xl bg-light\" [ngClass]=\"{'!border-0': !configuration().searcheable}\">\r\n @if(!lstOptions || !lstOptions.length){\r\n <cdk-virtual-scroll-viewport itemSize=\"45\" [minBufferPx]=\"200\" [maxBufferPx]=\"300\" class=\"size-full\">\r\n <input-select-internal-option [model]=\"item\" *cdkVirtualFor=\"let item of lstSearchItens()\" [isSelected]=\"IsSelected(item)\">\r\n <ion-label class=\"truncate\">{{bindLabel()(item)}}</ion-label>\r\n </input-select-internal-option>\r\n </cdk-virtual-scroll-viewport>\r\n }\r\n @else {\r\n <div class=\"size-full overflow-y-auto overflow-x-hidden mask-y\">\r\n <ng-content select=\"input-select-option\"></ng-content>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </ng-template>\r\n</ion-popover>", styles: [".no-items-opacity{--color: color-mix(in srgb, var(--ion-color-dark) 60%, transparent 40%)}.rounded-2xl,.\\!rounded-2xl{--border-radius: 1rem}.rounded-r-2xl,.\\!rounded-r-2xl{--border-radius: 0rem 1rem 1rem 0rem}.rounded-l-2xl,.\\!rounded-l-2xl{--border-radius: 1rem 0rem 0rem 1rem}.rounded-tr-none,.\\!rounded-tr-none{--border-radius: 0rem 0rem 1rem 0rem}\n", ".on-hover{background:color-mix(in srgb,var(--ion-color-light) 97%,transparent 3%)}.on-hover:hover{transition-property:all;transition-duration:.3s;transition-timing-function:cubic-bezier(.4,0,.2,1);background:color-mix(in srgb,var(--ion-color-dark) 15%,transparent 93%)}ion-card.ion-card-input{margin:0;display:flex;height:100%;width:100%;align-items:center;justify-content:center;overflow:hidden;border-radius:1rem;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition-property:all;transition-duration:.3s;transition-timing-function:cubic-bezier(.4,0,.2,1);background:color-mix(in srgb,var(--ion-color-light) 97%,transparent 3%);border-bottom-color:var(--ion-color-medium);border-right-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%);border-top-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%);border-left-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%);border-width:1px 1px 2px 1px;min-height:58px;max-height:58px;height:58px}ion-card.ion-card-input:hover{background:color-mix(in srgb,var(--ion-color-dark) 15%,transparent 93%)}ion-card.ion-card-input.submitted.invalid{border-color:color-mix(in srgb,var(--ion-color-danger) 75%,transparent 25%)!important}ion-card.ion-card-input.disabled{background-color:color-mix(in srgb,var(--ion-color-medium) 30%,transparent 70%)!important}ion-card.ion-card-input ion-card-content{width:100%;height:100%;background-color:transparent;padding:0}ion-item{--background: transparent}ion-text#label.required:after{content:\"*\";color:var(--ion-color-danger);vertical-align:text-bottom;font-size:small}ion-text#label:not(.required):after{content:var(--input-opcional-label, \"(Opcional)\");color:var(--ion-color-medium);vertical-align:text-bottom;font-size:small}.on-focus{border-bottom-color:var(--ion-color-primary)}.focus-within\\:on-focus:focus-within{border-bottom-color:var(--ion-color-primary)}\n"] }]
285
+ }], ctorParameters: () => [{ type: i1.ControlContainer, decorators: [{
286
+ type: Optional
287
+ }, {
288
+ type: Host
289
+ }, {
290
+ type: SkipSelf
291
+ }] }, { type: i0.ElementRef }], propDecorators: { lstOptions: [{
292
+ type: ContentChildren,
293
+ args: [InputSelectOptionComponent]
294
+ }], lstInternalOptions: [{
295
+ type: ViewChildren,
296
+ args: [InputSelectInternalOptionComponent]
297
+ }], cdkVirtualScrollViewport: [{
298
+ type: ViewChild,
299
+ args: [CdkVirtualScrollViewport, { read: (ElementRef) }]
300
+ }], inputContainer: [{
301
+ type: ViewChild,
302
+ args: ['container', { read: ElementRef }]
303
+ }], ionPopoverComponent: [{
304
+ type: ViewChild,
305
+ args: [IonPopover]
306
+ }], ionPopoverElement: [{
307
+ type: ViewChild,
308
+ args: [IonPopover, { read: ElementRef }]
309
+ }], searchbarComponent: [{
310
+ type: ViewChild,
311
+ args: [IonSearchbar]
312
+ }], inputComponent: [{
313
+ type: ViewChild,
314
+ args: [IonInput]
315
+ }], itemComponent: [{
316
+ type: ViewChild,
317
+ args: [IonItem, { read: ElementRef }]
318
+ }], HandleKeyboardEvent: [{
319
+ type: HostListener,
320
+ args: ['document:keydown', ['$event']]
321
+ }] } });
322
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NhcHBoaXJlLWlvbi1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0cy9pbnB1dC1zZWxlY3QvaW5wdXQtc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NhcHBoaXJlLWlvbi1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0cy9pbnB1dC1zZWxlY3QvaW5wdXQtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFrQyxRQUFRLEVBQUUsU0FBUyxFQUFVLFFBQVEsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFrQixRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hQLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQXdCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEUsT0FBTyxFQUE0QixRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUF1Qix3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pJLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLHVFQUF1RSxDQUFDO0FBQzNILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ2pHLE9BQU8s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RUFDOUIsWUFBWSxpRkE4QlosUUFBUSxnRkFDUixPQUFPLDJCQUFVLFVBQVUscURBck54QixrQ0FBa0MsdUVDbkNsRCw0dkhBaUVjOzs0RkR2Q0Qsb0JBQW9CO2tCQVpoQyxTQUFTOytCQUNFLGNBQWMsYUFHYixDQUFDLG9CQUFvQixDQUFDLFdBQVcsdUJBQzFDOzRCQUNFO2dDQUNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUM7NkJBQ3RFO3lCQUNGLENBQ0YsQ0FBQzs7MEJBeUJDLFFBQVE7OzBCQUFJLElBQUk7OzBCQUFJLFFBQVE7a0VBZmMsVUFBVTtzQkFBdEQsZUFBZTt1QkFBQywwQkFBMEI7Z0JBQ08sa0JBQWtCO3NCQUFuRSxZQUFZO3VCQUFDLGtDQUFrQztnQkFDZ0Isd0JBQXdCO3NCQUF2RixTQUFTO3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUEsVUFBZSxDQUFBLEVBQUU7Z0JBa0xoQixjQUFjO3NCQUEzRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ3JCLG1CQUFtQjtzQkFBekMsU0FBUzt1QkFBQyxVQUFVO2dCQUN3QixpQkFBaUI7c0JBQTdELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFDbEIsa0JBQWtCO3NCQUExQyxTQUFTO3VCQUFDLFlBQVk7Z0JBOEJGLGNBQWM7c0JBQWxDLFNBQVM7dUJBQUMsUUFBUTtnQkFDd0IsYUFBYTtzQkFBdkQsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUVsQyxtQkFBbUI7c0JBRHhCLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRWxlbWVudFJlZiwgSG9zdCwgSG9zdExpc3RlbmVyLCBNb2RlbFNpZ25hbCwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsLCBRdWVyeUxpc3QsIFNpZ25hbCwgU2tpcFNlbGYsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuLCBXcml0YWJsZVNpZ25hbCwgY29tcHV0ZWQsIGVmZmVjdCwgZm9yd2FyZFJlZiwgbW9kZWwsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJb25JbnB1dCwgSW9uSXRlbSwgSW9uUG9wb3ZlciwgSW9uU2VhcmNoYmFyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBDb250cm9sQ29udGFpbmVyLCBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBpbnRlcnZhbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcclxuXHJcbmltcG9ydCB7IEJpbmRMYWJlbEZhY3RvcnksIEJpbmRWYWx1ZUZhY3RvcnksIERlZmF1bHRNb2RlbE9wdGlvbnMsIElucHV0U2VsZWN0Q29uZmlndXJhdGlvbiB9IGZyb20gJy4vaW5wdXQuc2VsZWN0LmNvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBJbnB1dFNlbGVjdEludGVybmFsT3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC1zZWxlY3QtaW50ZXJuYWwtb3B0aW9uL2lucHV0LXNlbGVjdC1pbnRlcm5hbC1vcHRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgSW5wdXRTZWxlY3RPcHRpb25Db21wb25lbnQgfSBmcm9tICcuL2lucHV0LXNlbGVjdC1vcHRpb24vaW5wdXQtc2VsZWN0LW9wdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJU2VsZWN0LCBJU2VsZWN0T3B0aW9uIH0gZnJvbSAnLi9JU2VsZWN0JztcclxuaW1wb3J0IHsgSW5wdXRQcm92aWRlckZhY3RvcnkgfSBmcm9tICcuLi9pbnB1dC1wcm92aWRlci1mYWN0b3J5JztcclxuaW1wb3J0IHsgQ3VzdG9tU2lnbmFsSW5wdXQgfSBmcm9tICcuLi9jdXN0b20tc2lnbmFsLWlucHV0JztcclxuaW1wb3J0IHsgU2VhcmNoIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lucHV0LXNlbGVjdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtc2VsZWN0LmNvbXBvbmVudC5zY3NzJywgJy4uL2lucHV0cy5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbSW5wdXRQcm92aWRlckZhY3RvcnkuR2V0UHJvdmlkZXIoSW5wdXRTZWxlY3RDb21wb25lbnQsIFxyXG4gICAgW1xyXG4gICAgICB7IFxyXG4gICAgICAgIHByb3ZpZGU6IElTZWxlY3QsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0U2VsZWN0Q29tcG9uZW50KVxyXG4gICAgICB9XHJcbiAgICBdXHJcbiAgKV1cclxufSlcclxuZXhwb3J0IGNsYXNzIElucHV0U2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgQ3VzdG9tU2lnbmFsSW5wdXQ8YW55PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgSVNlbGVjdCB7XHJcblxyXG4gIC8qKiBJdGVtcyBkaXNwb27DrXZlaXMgbm8gc2VsZWN0ICovXHJcbiAgcHVibGljIGl0ZW1zICAgICAgICAgICAgOiBNb2RlbFNpZ25hbDxhbnlbXT4gICAgICAgICAgICAgICAgICAgID0gbW9kZWw8YW55W10+KFtdKTtcclxuICAvKiogQ29uZmlndXJhw6fDo28gZG8gc2VsZWN0ICovXHJcbiAgcHVibGljIGNvbmZpZ3VyYXRpb24gICAgOiBNb2RlbFNpZ25hbDxJbnB1dFNlbGVjdENvbmZpZ3VyYXRpb24+ID0gbW9kZWw8SW5wdXRTZWxlY3RDb25maWd1cmF0aW9uPihuZXcgSW5wdXRTZWxlY3RDb25maWd1cmF0aW9uKCkpOyBcclxuICBwdWJsaWMgbG9hZGluZ0Zyb21Mb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQENvbnRlbnRDaGlsZHJlbihJbnB1dFNlbGVjdE9wdGlvbkNvbXBvbmVudCkgbHN0T3B0aW9uczogUXVlcnlMaXN0PElucHV0U2VsZWN0T3B0aW9uQ29tcG9uZW50PjtcclxuICBAVmlld0NoaWxkcmVuKElucHV0U2VsZWN0SW50ZXJuYWxPcHRpb25Db21wb25lbnQpIGxzdEludGVybmFsT3B0aW9uczogUXVlcnlMaXN0PElucHV0U2VsZWN0SW50ZXJuYWxPcHRpb25Db21wb25lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LCB7IHJlYWQ6IEVsZW1lbnRSZWY8YW55PiB9KSBjZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ6IEVsZW1lbnRSZWY8YW55PlxyXG5cclxuICBwcml2YXRlIHVzZURlZmF1bHRNb2RlbE9wdGlvbnM6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcm90ZWN0ZWQgYmluZFZhbHVlOiBTaWduYWw8KChhcmdzOiBhbnkpID0+IGFueSk+ICAgICAgICAgPSBjb21wdXRlZCgoKSA9PiB7IFxyXG4gICAgaWYodGhpcy51c2VEZWZhdWx0TW9kZWxPcHRpb25zKCkpeyByZXR1cm4gKChvYmo6IERlZmF1bHRNb2RlbE9wdGlvbnMpOiBzdHJpbmcgPT4geyByZXR1cm4gb2JqLnZhbHVlOyB9KTsgfVxyXG4gICAgcmV0dXJuIEJpbmRWYWx1ZUZhY3RvcnkodGhpcy5jb25maWd1cmF0aW9uKCkpO1xyXG4gIH0pO1xyXG4gIHByb3RlY3RlZCBiaW5kTGFiZWw6IFNpZ25hbDwoKGFyZ3M6IGFueSkgPT4gc3RyaW5nKT4gICAgICA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGlmKHRoaXMudXNlRGVmYXVsdE1vZGVsT3B0aW9ucygpKXsgcmV0dXJuICgob2JqOiBEZWZhdWx0TW9kZWxPcHRpb25zKTogc3RyaW5nID0+IHsgcmV0dXJuIG9iai5sYWJlbDsgfSk7IH1cclxuICAgIHJldHVybiBCaW5kTGFiZWxGYWN0b3J5KHRoaXMuY29uZmlndXJhdGlvbigpKTtcclxuICB9KTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBAT3B0aW9uYWwoKSBASG9zdCgpIEBTa2lwU2VsZigpXHJcbiAgICBvdmVycmlkZSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxyXG4gICAgb3ZlcnJpZGUgZWxlbWVudFJlZiAgICAgIDogRWxlbWVudFJlZlxyXG4gICkgeyBzdXBlcigpO1xyXG4gICAgZWZmZWN0KCgpID0+IHsgdGhpcy5VcGRhdGUoKTsgfSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZUludGVydmFsICAgICA9IGludGVydmFsKDEwMDApO1xyXG4gICAgdGhpcy51cGRhdGVTdWJzY3JpcHRpb24gPSB0aGlzLnVwZGF0ZUludGVydmFsLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGlmKHRoaXMubGFzdEl0ZW1zUXRkICE9IHRoaXMuaXRlbXMoKS5sZW5ndGgpe1xyXG4gICAgICAgIHRoaXMubGFzdEl0ZW1zUXRkID0gdGhpcy5pdGVtcygpLmxlbmd0aDtcclxuICAgICAgICB0aGlzLlVwZGF0ZSgpO1xyXG4gICAgICB9IFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMudXBkYXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVJbnRlcnZhbDogT2JzZXJ2YWJsZTxudW1iZXI+IHwgbnVsbDtcclxuICB1cGRhdGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgbGFzdEl0ZW1zUXRkOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBcclxuICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcblxyXG4gICAgdGhpcy5jb25maWd1cmF0aW9uKCkubG9hZGVyLkFkZENvbXBvbmVudCh0aGlzKTtcclxuICAgIHRoaXMuY29uZmlndXJhdGlvbigpLmxvYWRlci5SZWZyZXNoKHRoaXMuaXRlbXMoKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgQ2xlYXIoKTogdm9pZHsgXHJcbiAgICB0aGlzLm1vZGVsID0gbnVsbDsgXHJcbiAgICB0aGlzLlVwZGF0ZSgpO1xyXG4gIH1cclxuICBcclxuICBwcm90ZWN0ZWQgQ3VycmVudExhYmVsICAgICAgOiBzdHJpbmcgID0gXCJcIjtcclxuICBwcm90ZWN0ZWQgQ3VycmVudGx5Tm9WYWx1ZSAgOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgcHVibGljIFVwZGF0ZSgpe1xyXG4gICAgdGhpcy5VcGRhdGVTZWxlY3RlZCgpO1xyXG4gICAgdGhpcy5VcGRhdGVDdXJyZW50TGFiZWwoKTsgXHJcbiAgfVxyXG4gIHByaXZhdGUgVXBkYXRlQ3VycmVudExhYmVsKCk6IHZvaWR7XHJcbiAgICBpZih0aGlzLl9tb2RlbCA9PSBudWxsKXsgXHJcbiAgICAgIHRoaXMuQ3VycmVudExhYmVsID0gdGhpcy5jb25maWd1cmF0aW9uKCkucGxhY2Vob2xkZXI7XHJcbiAgICAgIHRoaXMuQ3VycmVudGx5Tm9WYWx1ZSA9IHRydWU7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmKCF0aGlzLmNvbmZpZ3VyYXRpb24oKS5tdWx0aXBsZSl7XHJcbiAgICAgIGNvbnN0IG06IGFueSB8IG51bGwgPSB0aGlzLml0ZW1zKCkuZmluZChwID0+IHRoaXMuYmluZFZhbHVlKCkocCkgPT0gdGhpcy5fbW9kZWwpO1xyXG4gICAgICBpZihtKXsgXHJcbiAgICAgICAgdGhpcy5DdXJyZW50TGFiZWwgICAgID0gdGhpcy5iaW5kTGFiZWwoKShtKTtcclxuICAgICAgICB0aGlzLkN1cnJlbnRseU5vVmFsdWUgPSBmYWxzZTsgXHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIGlmKCF0aGlzLl9tb2RlbCl7IFxyXG4gICAgICAgIHRoaXMuQ3VycmVudExhYmVsID0gdGhpcy5jb25maWd1cmF0aW9uKCkucGxhY2Vob2xkZXI7IFxyXG4gICAgICAgIHRoaXMuQ3VycmVudGx5Tm9WYWx1ZSA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuOyBcclxuICAgICAgfWVsc2VcclxuICAgICAgaWYoQXJyYXkuaXNBcnJheSh0aGlzLm1vZGVsKSAmJiAhdGhpcy5tb2RlbC5sZW5ndGgpeyBcclxuICAgICAgICB0aGlzLkN1cnJlbnRMYWJlbCA9IHRoaXMuY29uZmlndXJhdGlvbigpLnBsYWNlaG9sZGVyOyBcclxuICAgICAgICB0aGlzLkN1cnJlbnRseU5vVmFsdWUgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybjsgXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5DdXJyZW50TGFiZWwgICAgID0gXCJcIjsgXHJcbiAgICAgIHRoaXMuQ3VycmVudGx5Tm9WYWx1ZSA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgVXBkYXRlU2VsZWN0ZWQoKXtcclxuICAgIGlmKHRoaXMubHN0T3B0aW9ucyAmJiB0aGlzLmxzdE9wdGlvbnMubGVuZ3RoKXtcclxuICAgICAgdGhpcy5sc3RPcHRpb25zLmZvckVhY2gocCA9PiBwLmlzU2VsZWN0ZWQgPSBmYWxzZSk7XHJcbiAgICAgIHRoaXMubHN0T3B0aW9ucy5maWx0ZXIocCA9PiBBcnJheS5pc0FycmF5KHRoaXMuX21vZGVsKSA/IHRoaXMuX21vZGVsLmluY2x1ZGVzKHAudmFsdWUpIDogdGhpcy5fbW9kZWwgPT0gcC52YWx1ZSkuZm9yRWFjaChwID0+IHAuaXNTZWxlY3RlZCA9IHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgSXNTZWxlY3RlZChpdGVtOiBhbnkpe1xyXG4gICAgaWYoQXJyYXkuaXNBcnJheSh0aGlzLl9tb2RlbCkpe1xyXG4gICAgICByZXR1cm4gdGhpcy5fbW9kZWwuaW5jbHVkZXModGhpcy5iaW5kVmFsdWUoKShpdGVtKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fbW9kZWwgPT0gdGhpcy5iaW5kVmFsdWUoKShpdGVtKTtcclxuICB9XHJcblxyXG4gIC8qKiBBcHBsaWVzIG9ubHkgb24gbXVsdGlwbGUgKi9cclxuICBwcm90ZWN0ZWQgR2V0U2VsZWN0ZWRJdGVucygpOiBhbnlbXXtcclxuICAgIGlmKHRoaXMuX21vZGVsICYmIHRoaXMubHN0T3B0aW9ucy5sZW5ndGgpe1xyXG4gICAgICByZXR1cm4gdGhpcy5sc3RPcHRpb25zLmZpbHRlcihwID0+IHAuaXNTZWxlY3RlZCkubWFwKHAgPT4gcC5tb2RlbCgpKTsgXHJcbiAgICB9XHJcbiAgICBpZih0aGlzLl9tb2RlbCAmJiB0aGlzLml0ZW1zKCkpe1xyXG4gICAgICByZXR1cm4gdGhpcy5pdGVtcygpLmZpbHRlcihwID0+IEFycmF5LmlzQXJyYXkodGhpcy5fbW9kZWwpID8gdGhpcy5fbW9kZWwuaW5jbHVkZXModGhpcy5iaW5kVmFsdWUoKShwKSkgOiB0aGlzLl9tb2RlbCA9PSB0aGlzLmJpbmRWYWx1ZSgpKHApKTsgXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFtdO1xyXG4gIH1cclxuXHJcbiAgLy9bIE1vZGVsIF1cclxuICBvdmVycmlkZSBfbW9kZWw6IGFueSA9IG51bGw7XHJcbiAgb3ZlcnJpZGUgZ2V0IG1vZGVsKCk6IGFueSAgICAgIHsgcmV0dXJuIHRoaXMuX21vZGVsOyAgfVxyXG4gIG92ZXJyaWRlIHNldCBtb2RlbCh2YWx1ZTogYW55KSB7IFxyXG4gICAgdGhpcy5TZXRNb2RlbCh2YWx1ZSk7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLl9tb2RlbCk7IFxyXG4gIH1cclxuICBwcm90ZWN0ZWQgU2V0TW9kZWwodmFsdWU6IGFueSk6IHZvaWQgeyBcclxuICAgIGlmKHZhbHVlID09IG51bGwgKXsgdGhpcy5fbW9kZWwgPSBudWxsOyByZXR1cm47IH1cclxuXHJcbiAgICB0aGlzLl9tb2RlbCA9IHZhbHVlO1xyXG5cclxuICAgIHRoaXMuVXBkYXRlKCk7XHJcbiAgICByZXR1cm47IFxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIFNlYXJjaENoYW5nZWQoKTogdm9pZHtcclxuICAgIGlmKHRoaXMubHN0T3B0aW9ucy5sZW5ndGgpe1xyXG4gICAgICB0aGlzLnVzZURlZmF1bHRNb2RlbE9wdGlvbnMuc2V0KHRydWUpO1xyXG4gICAgICB2YXIgbHN0ID0gU2VhcmNoKHRoaXMubHN0T3B0aW9ucy5tYXAocCA9PiBwLm1vZGVsKCkpLCB0aGlzLlNlYXJjaCgpLCB0aGlzLmJpbmRMYWJlbCgpKTsgXHJcbiAgICAgIHRoaXMubHN0T3B0aW9ucy5mb3JFYWNoKHAgPT4gcC5oaWRkZW4gPSAhbHN0LmluY2x1ZGVzKHAubW9kZWwoKSkpXHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIHByb3RlY3RlZCBHZXRVc2VEZWZhdWx0TW9kZWxPcHRpb25zKCk6IGJvb2xlYW57XHJcbiAgICBpZih0aGlzLmxzdE9wdGlvbnMgJiYgdGhpcy5sc3RPcHRpb25zLmxlbmd0aCl7IHJldHVybiB0cnVlOyB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgVXBkYXRlVXNlRGVmYXVsdE1vZGVsT3B0aW9ucygpOiB2b2lke1xyXG4gICAgdGhpcy51c2VEZWZhdWx0TW9kZWxPcHRpb25zLnNldCh0aGlzLkdldFVzZURlZmF1bHRNb2RlbE9wdGlvbnMoKSk7XHJcbiAgICBpZih0aGlzLnVzZURlZmF1bHRNb2RlbE9wdGlvbnMoKSl7IFxyXG4gICAgICBpZih0aGlzLml0ZW1zKCkubGVuZ3RoICE9IHRoaXMubHN0T3B0aW9ucy5sZW5ndGgpe1xyXG4gICAgICAgIHRoaXMuaXRlbXMuc2V0KHRoaXMubHN0T3B0aW9ucy5tYXAocCA9PiBwLm1vZGVsKCkpKTsgXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vWyBTZWxlY3QgXVxyXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHsgdGhpcy5TZXRNb2RlbChvYmopOyB9XHJcblxyXG4gIHB1YmxpYyBTZWxlY3QoaXRlbTogYW55KTogdm9pZHtcclxuICAgIHRoaXMuVXBkYXRlVXNlRGVmYXVsdE1vZGVsT3B0aW9ucygpO1xyXG4gICAgXHJcbiAgICBpZighdGhpcy5jb25maWd1cmF0aW9uKCkubXVsdGlwbGUpeyBcclxuICAgICAgdGhpcy5tb2RlbCA9IHRoaXMuYmluZFZhbHVlKCkoaXRlbSk7IFxyXG4gICAgfSBcclxuICAgIGVsc2V7XHJcbiAgICAgIHZhciB2YWx1ZSA9ICB0aGlzLmJpbmRWYWx1ZSgpKGl0ZW0pO1xyXG5cclxuICAgICAgaWYodGhpcy5fbW9kZWwpe1xyXG4gICAgICAgIGlmKHRoaXMuX21vZGVsLmluY2x1ZGVzKHZhbHVlKSl7IFxyXG4gICAgICAgICAgdGhpcy5tb2RlbCA9IFsuLi50aGlzLl9tb2RlbC5maWx0ZXIocCA9PiBwICE9IHZhbHVlKV07IFxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgdGhpcy5tb2RlbCA9IFsuLi50aGlzLl9tb2RlbCwgdmFsdWVdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMubW9kZWwgPSBbdmFsdWVdO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgaW50ZXJmYWNlT3B0aW9ucyA9IHsgY3NzQ2xhc3MgOiAnd2lkZXItcG9wb3ZlcicgfVxyXG5cclxuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgaW5wdXRDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoSW9uUG9wb3ZlcikgaW9uUG9wb3ZlckNvbXBvbmVudDogSW9uUG9wb3ZlcjtcclxuICBAVmlld0NoaWxkKElvblBvcG92ZXIsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBpb25Qb3BvdmVyRWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZChJb25TZWFyY2hiYXIpIHNlYXJjaGJhckNvbXBvbmVudDogSW9uU2VhcmNoYmFyO1xyXG5cclxuICBwdWJsaWMgYXN5bmMgUHJlc2VudFBvcG92ZXIoJGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoJGV2ZW50LCAndGFyZ2V0JywgeyB3cml0YWJsZTogZmFsc2UsIHZhbHVlOiB0aGlzLmlucHV0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQgfSk7XHJcbiAgICBjb25zdCBQb3BvdmVyICAgICAgICA9IHRoaXMuaW9uUG9wb3ZlckNvbXBvbmVudDtcclxuICAgIGNvbnN0IFBvcG92ZXJFbGVtZW50ID0gdGhpcy5pb25Qb3BvdmVyRWxlbWVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgXHJcbiAgICBjb25zdCBQb3BvdmVyQ29udGVudCA9IEFycmF5LmZyb20oXHJcbiAgICAgIEFycmF5LmZyb20oUG9wb3ZlckVsZW1lbnQuc2hhZG93Um9vdC5jaGlsZHJlbikuZmluZChcclxuICAgICAgICBwID0+IHAuY2xhc3NMaXN0LmNvbnRhaW5zKFwicG9wb3Zlci13cmFwcGVyXCIpXHJcbiAgICAgICkuY2hpbGRyZW5cclxuICAgICkuZmluZChcclxuICAgICAgcCA9PiBwLmNsYXNzTGlzdC5jb250YWlucyhcInBvcG92ZXItY29udGVudFwiKVxyXG4gICAgKSBhcyBIVE1MRWxlbWVudFxyXG4gICAgUG9wb3ZlckNvbnRlbnQuc3R5bGUud2lkdGggPSB0aGlzLmlucHV0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggKyAncHgnO1xyXG4gICAgYXdhaXQgUG9wb3Zlci5wcmVzZW50KCRldmVudCk7XHJcbiAgICB0aGlzLnNlYXJjaGJhckNvbXBvbmVudC5zZXRGb2N1cygpO1xyXG5cclxuICAgIGlmKHRoaXMuY2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0KXtcclxuICAgICAgdGhpcy5jZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQubmF0aXZlRWxlbWVudC5zY3JvbGwoeyB0b3A6IDEsIGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZvY3VzZWRNb2RlbCA9IG51bGw7XHJcbiAgICB0aGlzLlVwZGF0ZVVzZURlZmF1bHRNb2RlbE9wdGlvbnMoKTtcclxuICB9O1xyXG5cclxuICBwcm90ZWN0ZWQgU2VhcmNoICAgICAgICA6IE1vZGVsU2lnbmFsPHN0cmluZz4gPSBtb2RlbDxzdHJpbmc+KFwiXCIpO1xyXG4gIHByb3RlY3RlZCBsc3RTZWFyY2hJdGVuczogU2lnbmFsPGFueVtdPiAgICAgICA9IGNvbXB1dGVkPGFueVtdPigoKSA9PiB7IHJldHVybiBTZWFyY2godGhpcy5pdGVtcygpLCB0aGlzLlNlYXJjaCgpLCB0aGlzLmJpbmRMYWJlbCgpKTsgfSlcclxuXHJcbiAgLy8jcmVnaW9uIFsgQXJyb3cvVGFiIENvbnRyb2wgXVxyXG4gIEBWaWV3Q2hpbGQoSW9uSW5wdXQpIGlucHV0Q29tcG9uZW50OiBJb25JbnB1dDtcclxuICBAVmlld0NoaWxkKElvbkl0ZW0sIHsgcmVhZDogRWxlbWVudFJlZiB9KSAgaXRlbUNvbXBvbmVudCA6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxyXG4gIGFzeW5jIEhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmKCF0aGlzLmlucHV0Q29tcG9uZW50IHx8ICF0aGlzLnNlYXJjaGJhckNvbXBvbmVudCl7IHJldHVybjsgfVxyXG4gICAgXHJcbiAgICBjb25zdCBpbnB1dENvbXBvbmVudCAgICAgPSBhd2FpdCB0aGlzLmlucHV0Q29tcG9uZW50LmdldElucHV0RWxlbWVudCgpO1xyXG4gICAgY29uc3Qgc2VhcmNoYmFyQ29tcG9uZW50ID0gYXdhaXQgdGhpcy5zZWFyY2hiYXJDb21wb25lbnQuZ2V0SW5wdXRFbGVtZW50KCk7XHJcbiAgICBcclxuICAgIGlmKGV2ZW50LnRhcmdldCA9PSBpbnB1dENvbXBvbmVudCAmJiBldmVudC5rZXkgPT0gXCJBcnJvd0Rvd25cIiAmJiB0aGlzLmNvbmZpZ3VyYXRpb24oKS5zZWFyY2hlYWJsZSl7XHJcbiAgICAgIHRoaXMuaXRlbUNvbXBvbmVudC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9ZWxzZVxyXG4gICAgaWYoZXZlbnQudGFyZ2V0ID09IHNlYXJjaGJhckNvbXBvbmVudCl7XHJcbiAgICAgIHRoaXMuVXBkYXRlVXNlRGVmYXVsdE1vZGVsT3B0aW9ucygpO1xyXG5cclxuICAgICAgY29uc3QgaXRlbXMgID0gdGhpcy5sc3RTZWFyY2hJdGVucygpO1xyXG4gICAgICBpZihldmVudC5rZXkgPT0gXCJBcnJvd0Rvd25cIil7XHJcbiAgICAgICAgaWYodGhpcy5mb2N1c2VkTW9kZWwpe1xyXG4gICAgICAgICAgY29uc3QgaW5kZXggPSBpdGVtcy5pbmRleE9mKHRoaXMuZm9jdXNlZE1vZGVsKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgaWYoaXRlbXNbaW5kZXggKyAxXSl7XHJcbiAgICAgICAgICAgIHRoaXMuU2V0Rm9jdXNlZEVsZW1lbnQoaXRlbXNbaW5kZXggKyAxXSk7XHJcbiAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5TZXRGb2N1c2VkRWxlbWVudChpdGVtc1swXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICBpZihpdGVtc1swXSl7XHJcbiAgICAgICAgICAgIHRoaXMuU2V0Rm9jdXNlZEVsZW1lbnQoaXRlbXNbMF0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfWVsc2VcclxuICAgICAgaWYoZXZlbnQua2V5ID09IFwiQXJyb3dVcFwiKXtcclxuICAgICAgICBpZih0aGlzLmZvY3VzZWRNb2RlbCl7XHJcbiAgICAgICAgICBjb25zdCBpbmRleCA9IGl0ZW1zLmluZGV4T2YodGhpcy5mb2N1c2VkTW9kZWwpO1xyXG5cclxuICAgICAgICAgIGlmKGl0ZW1zW2luZGV4IC0gMV0pe1xyXG4gICAgICAgICAgICB0aGlzLlNldEZvY3VzZWRFbGVtZW50KGl0ZW1zW2luZGV4IC0gMV0pO1xyXG4gICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuU2V0Rm9jdXNlZEVsZW1lbnQoaXRlbXNbaXRlbXMubGVuZ3RoIC0xXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9ZWxzZVxyXG4gICAgICBpZihldmVudC5rZXkgPT0gXCJFbnRlclwiKXtcclxuICAgICAgICB2YXIgT3B0aW9uOiBJU2VsZWN0T3B0aW9uO1xyXG4gICAgICAgIGlmKHRoaXMudXNlRGVmYXVsdE1vZGVsT3B0aW9ucygpKXtcclxuICAgICAgICAgIE9wdGlvbiA9IHRoaXMubHN0T3B0aW9ucy5maW5kKHAgPT4gcC5tb2RlbCgpID09IHRoaXMuZm9jdXNlZE1vZGVsKTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIE9wdGlvbiA9IHRoaXMubHN0SW50ZXJuYWxPcHRpb25zLmZpbmQocCA9PiBwLm1vZGVsID09IHRoaXMuZm9jdXNlZE1vZGVsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoIU9wdGlvbi5kaXNhYmxlZCl7XHJcbiAgICAgICAgICB0aGlzLlNlbGVjdCh0aGlzLmZvY3VzZWRNb2RlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIFNldEZvY3VzZWRFbGVtZW50KGZvY3VzZWRNb2RlbDogYW55LCBzY3JvbGw6IGJvb2xlYW4gPSB0cnVlLCk6IHZvaWR7XHJcbiAgICB0aGlzLmZvY3VzZWRNb2RlbCA9IGZvY3VzZWRNb2RlbDtcclxuICAgIFxyXG4gICAgdmFyIE9wdGlvbjogSVNlbGVjdE9wdGlvbjtcclxuICAgIGlmKHRoaXMudXNlRGVmYXVsdE1vZGVsT3B0aW9ucygpKXtcclxuICAgICAgT3B0aW9uID0gdGhpcy5sc3RPcHRpb25zLmZpbmQocCA9PiBwLm1vZGVsKCkgPT0gZm9jdXNlZE1vZGVsKTtcclxuICAgICAgdGhpcy5sc3RPcHRpb25zLmZpbHRlcihwID0+IHAub25Gb2N1cykuZm9yRWFjaChwID0+IHAub25Gb2N1cyA9IGZhbHNlKTtcclxuICAgICAgT3B0aW9uLm9uRm9jdXMgPSB0cnVlO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIE9wdGlvbiA9IHRoaXMubHN0SW50ZXJuYWxPcHRpb25zLmZpbmQocCA9PiBwLm1vZGVsID09IGZvY3VzZWRNb2RlbCk7XHJcbiAgICAgIHRoaXMubHN0SW50ZXJuYWxPcHRpb25zLmZpbHRlcihwID0+IHAub25Gb2N1cykuZm9yRWFjaChwID0+IHAub25Gb2N1cyA9IGZhbHNlKTtcclxuICAgICAgT3B0aW9uLm9uRm9jdXMgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZihzY3JvbGwpeyBPcHRpb24uR2V0TmF0aXZlRWxlbWVudCgpLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnIH0pOyB9XHJcbiAgfVxyXG5cclxuICBmb2N1c2VkTW9kZWw6IGFueSB8IG51bGw7XHJcbiAgLy8jZW5kcmVnaW9uIFsgQXJyb3cvVGFiIENvbnRyb2wgXVxyXG59IiwiPGRpdiBjbGFzcz1cInJlbGF0aXZlIGZsZXggb3ZlcmZsb3ctaGlkZGVuXCIgI2NvbnRhaW5lcj5cclxuICA8aW9uLWNhcmQgXHJcbiAgICAgIGNsYXNzPVwiZm9jdXMtd2l0aGluOm9uLWZvY3VzIGlvbi1jYXJkLWlucHV0XCIgXHJcbiAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nIHx8IGxvYWRpbmdGcm9tTG9hZGVyIHx8IGRpc2FibGVkXCIgXHJcbiAgICAgIFtjbGFzcy5pbnZhbGlkXT1cImludmFsaWRcIlxyXG4gICAgICBbY2xhc3Muc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiXHJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cInsnIXJvdW5kZWQtbC0yeGwgIXJvdW5kZWQtci1ub25lICFib3JkZXItci0wJzogY29uZmlndXJhdGlvbigpLmNsZWFyYWJsZX1cIlxyXG4gICAgPlxyXG4gICAgPGlvbi1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgIDxpb24taXRlbSBsaW5lcz1cIm5vbmVcIiBjbGFzcz1cInJvdW5kZWQtMnhsIHctZnVsbCByZWxhdGl2ZVwiIChjbGljayk9XCJQcmVzZW50UG9wb3ZlcigkZXZlbnQpXCIgW25nQ2xhc3NdPVwieychcm91bmRlZC1sLTJ4bCAhcm91bmRlZC1yLW5vbmUnOiBjb25maWd1cmF0aW9uKCkuY2xlYXJhYmxlIH1cIj5cclxuICAgICAgICA8aW9uLWlucHV0IGZpbGw9XCJub25lXCIgW3JlYWRvbmx5XT1cInRydWVcIiBsYWJlbFBsYWNlbWVudD1cInN0YWNrZWRcIiBbdmFsdWVdPVwiQ3VycmVudExhYmVsXCIgW2NsYXNzLm5vLWl0ZW1zLW9wYWNpdHldPVwiQ3VycmVudGx5Tm9WYWx1ZVwiPlxyXG4gICAgICAgICAgPGlvbi10ZXh0IGlkPVwibGFiZWxcIiBbbmdDbGFzc109XCJ7J3JlcXVpcmVkJzogcmVxdWlyZWQoKSB9XCIgc2xvdD1cImxhYmVsXCIgY2xhc3M9XCIhdGV4dC1kYXJrXCI+IFxyXG4gICAgICAgICAgICB7e2xhYmVsfX0gXHJcbiAgICAgICAgICA8L2lvbi10ZXh0PlxyXG4gICAgICAgIDwvaW9uLWlucHV0PlxyXG4gICAgICAgIEBpZihjb25maWd1cmF0aW9uKCkubXVsdGlwbGUpe1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIGxlZnQtMCBib3R0b20tMCBoLTYgdy1mdWxsIGZsZXggei1bOTBdIG92ZXJmbG93LXgtYXV0b1wiPlxyXG4gICAgICAgICAgICBAZm9yKGl0ZW0gb2YgR2V0U2VsZWN0ZWRJdGVucygpOyB0cmFjayAkaW5kZXgpe1xyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLWZ1bGwgZmxleCBiZy1tZWRpdW0vMTAgYm9yZGVyIHRyYW5zbHVjaWQtYm9yZGVyIHJvdW5kZWQtbGcgbXItMSBhbmltYXRlZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwiU2VsZWN0KGl0ZW0pOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiBjbGFzcz1cImJnLW1lZGl1bS8xMCBjdXJzb3ItcG9pbnRlciB0cmFuc2x1Y2lkLWJvcmRlciBtaW4tdy1taW4gIWJvcmRlci1sLTAgIWJvcmRlci15LTAgaC1mdWxsIGFzcGVjdC1zcXVhcmUgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1yLWxnXCI+IFxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBjb2xvcj1cImRhbmdlclwiIG5hbWU9XCJjbG9zZVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLWZ1bGwgcHgtMSBzZWxlY3Qtbm9uZVwiPiB7e2JpbmRMYWJlbCgpKGl0ZW0pfX0gPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgPC9pb24taXRlbT5cclxuICAgICAgXHJcbiAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XHJcbiAgPC9pb24tY2FyZD5cclxuICA8aW5wdXQtbG9hZGluZyBbbG9hZGluZ109XCJsb2FkaW5nIHx8IGxvYWRpbmdGcm9tTG9hZGVyXCI+PC9pbnB1dC1sb2FkaW5nPlxyXG4gIEBpZihjb25maWd1cmF0aW9uKCkuY2xlYXJhYmxlKXtcclxuICAgIDxkaXYgY2xhc3M9XCJ3LTEyXCI+XHJcbiAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJDbGVhcigpXCIgW2Rpc2FibGVkXT1cImxvYWRpbmcgfHwgZGlzYWJsZWQgfHwgbG9hZGluZ0Zyb21Mb2FkZXJcIiBzaXplPVwic21hbGxcIiBmaWxsPVwib3V0bGluZVwiIGNvbG9yPVwibWVkaXVtXCIgY2xhc3M9XCJyb3VuZGVkLXItMnhsIGgtZnVsbCB3LWZ1bGxcIiBzdHlsZT1cIi0tYm9yZGVyLXdpZHRoOiAxcHggMXB4IDJweCAxcHg7XCI+XHJcbiAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJiYWNrc3BhY2VcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cclxuICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG48L2Rpdj5cclxuXHJcbjxpb24tcG9wb3ZlciBjbGFzcz1cImlucHV0LXNlbGVjdC1wb3BvdmVyXCIgW2tlZXBDb250ZW50c01vdW50ZWRdPVwiZmFsc2VcIiBbZGlzbWlzc09uU2VsZWN0XT1cIiFjb25maWd1cmF0aW9uKCkubXVsdGlwbGVcIiAoZGlkRGlzbWlzcyk9XCJTZWFyY2guc2V0KCcnKVwiPlxyXG4gIDxuZy10ZW1wbGF0ZT5cclxuICAgIDxkaXYgY2xhc3M9XCJzaXplLWZ1bGwgZmxleCBmbGV4LWNvbCBiZy1wcmltYXJ5LzEwXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgc2hyaW5rLTBcIiBbaGlkZGVuXT1cIiFjb25maWd1cmF0aW9uKCkuc2VhcmNoZWFibGVcIj5cclxuICAgICAgICA8aW9uLXNlYXJjaGJhciBbKG5nTW9kZWwpXT1cIlNlYXJjaFwiIChuZ01vZGVsQ2hhbmdlKT1cIlNlYXJjaENoYW5nZWQoKVwiIHBsYWNlaG9sZGVyPVwiUGVzcXVpc2EuLi5cIiBjbGFzcz1cInNpemUtZnVsbCBiZy10cmFuc3BhcmVudFwiIFtkZWJvdW5jZV09XCIxMDBcIj48L2lvbi1zZWFyY2hiYXI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImgtNDggdy1mdWxsIG92ZXJmbG93LWhpZGRlbiB0cmFuc2x1Y2lkLWJvcmRlciAhYm9yZGVyLXgtMCAhYm9yZGVyLWItMCByb3VuZGVkLXQtMnhsIGJnLWxpZ2h0XCIgW25nQ2xhc3NdPVwieychYm9yZGVyLTAnOiAhY29uZmlndXJhdGlvbigpLnNlYXJjaGVhYmxlfVwiPlxyXG4gICAgICAgIEBpZighbHN0T3B0aW9ucyB8fCAhbHN0T3B0aW9ucy5sZW5ndGgpe1xyXG4gICAgICAgICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCBpdGVtU2l6ZT1cIjQ1XCIgW21pbkJ1ZmZlclB4XT1cIjIwMFwiIFttYXhCdWZmZXJQeF09XCIzMDBcIiBjbGFzcz1cInNpemUtZnVsbFwiPlxyXG4gICAgICAgICAgICA8aW5wdXQtc2VsZWN0LWludGVybmFsLW9wdGlvbiBbbW9kZWxdPVwiaXRlbVwiICpjZGtWaXJ0dWFsRm9yPVwibGV0IGl0ZW0gb2YgbHN0U2VhcmNoSXRlbnMoKVwiIFtpc1NlbGVjdGVkXT1cIklzU2VsZWN0ZWQoaXRlbSlcIj5cclxuICAgICAgICAgICAgICA8aW9uLWxhYmVsIGNsYXNzPVwidHJ1bmNhdGVcIj57e2JpbmRMYWJlbCgpKGl0ZW0pfX08L2lvbi1sYWJlbD5cclxuICAgICAgICAgICAgPC9pbnB1dC1zZWxlY3QtaW50ZXJuYWwtb3B0aW9uPlxyXG4gICAgICAgICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBlbHNlIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaXplLWZ1bGwgb3ZlcmZsb3cteS1hdXRvIG92ZXJmbG93LXgtaGlkZGVuIG1hc2steVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJpbnB1dC1zZWxlY3Qtb3B0aW9uXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvaW9uLXBvcG92ZXI+Il19
@@ -0,0 +1,164 @@
1
+ import { firstValueFrom } from "rxjs";
2
+ import { HttpService } from "../../../services/web/http.service";
3
+ import { HttpServiceAtivo } from "../../../services/web/http.ativo.service";
4
+ import { ViewFiltros } from "../../../classes/filters/view-filtros";
5
+ import { INT_MAX } from "../../../services/utils.service";
6
+ export class InputSelectConfiguration {
7
+ constructor(
8
+ /** Valor que será setado no formControl */
9
+ bindValue = "id",
10
+ /** Valor que será exibido */
11
+ bindLabel = "nome",
12
+ /** Indica se o select pode ser nulo e limpavel */
13
+ clearable = true,
14
+ /** Indica se o select pode ser pesquisado */
15
+ searcheable = true,
16
+ /**
17
+ * Se LoadFrom instanceof HttpService -> Os dados serão carregados do List()
18
+ * Se LoadFrom instanceof HttpServiceAtivo -> Os dados serão carregados do ListAtivo()
19
+ * Se LoadFrom instanceof Observable -> Os dados serão carregados da função indicada
20
+ * Se LoadFrom instanceof Array -> Os dados serão o array
21
+ */
22
+ loadFrom,
23
+ /** Se = true Os valores no form control seráo um array dos items selecionados */
24
+ multiple = false,
25
+ /** Aplica os filtros na pesquisa */
26
+ vFiltros = null,
27
+ /** Desativa os items que estão de acordo com a função */
28
+ disableConditional = null) {
29
+ this.bindValue = bindValue;
30
+ this.bindLabel = bindLabel;
31
+ this.clearable = clearable;
32
+ this.searcheable = searcheable;
33
+ this.loadFrom = loadFrom;
34
+ this.multiple = multiple;
35
+ this.disableConditional = disableConditional;
36
+ this.placeholder = "Selecione um item...";
37
+ this.noItensFoundText = "Sem items encontrados...";
38
+ this.vFiltros = null;
39
+ this.clearable = clearable;
40
+ this.searcheable = searcheable;
41
+ this.multiple = multiple;
42
+ if (vFiltros != null) {
43
+ const v = vFiltros;
44
+ if (v.ascending == null || v.ascending == undefined) {
45
+ v.ascending = true;
46
+ }
47
+ this.vFiltros = new ViewFiltros(INT_MAX, v.search, 1, v.orderByProperty, v.ascending);
48
+ this.vFiltros.filter = v.filter;
49
+ }
50
+ if (loadFrom) {
51
+ if (Array.isArray(loadFrom)) {
52
+ this.loadFromArray = loadFrom;
53
+ }
54
+ else if (loadFrom instanceof HttpService || loadFrom instanceof HttpServiceAtivo) {
55
+ this.loadFromService = loadFrom;
56
+ }
57
+ else {
58
+ this.loadFromFunction = loadFrom;
59
+ }
60
+ }
61
+ this.loader = new InputSelectDataLoader(this);
62
+ }
63
+ }
64
+ export class InputSelectDataLoader {
65
+ constructor(configuration) {
66
+ this.lstComponents = [];
67
+ /** Valor que será setado no formControl */
68
+ this.bindValue = null;
69
+ /** Valor que será exibido */
70
+ this.bindLabel = null;
71
+ this._isLoaded = false;
72
+ this.items = [];
73
+ this.configuration = configuration;
74
+ this.bindValue = BindValueFactory(configuration);
75
+ this.bindLabel = BindLabelFactory(configuration);
76
+ }
77
+ GetLabel(value) {
78
+ if (!this.items || !this.bindValue || !this.bindLabel) {
79
+ return "";
80
+ }
81
+ const item = this.items.find(p => this.bindValue(p) == value);
82
+ if (!item) {
83
+ return "";
84
+ }
85
+ return this.bindLabel(item);
86
+ }
87
+ AddComponent(component) {
88
+ this.lstComponents.push(component);
89
+ }
90
+ async Refresh(items) {
91
+ this.lstComponents.forEach(component => { component.loadingFromLoader = true; });
92
+ if (!this.configuration.loadFromService && !this.configuration.loadFromFunction && (!this.configuration.loadFromArray || !(this.configuration.loadFromArray.length > 0))) {
93
+ this.items = items;
94
+ this._isLoaded = true;
95
+ this.lstComponents.forEach(component => { component.items.set(this.items); });
96
+ }
97
+ try {
98
+ await this.Load();
99
+ this._isLoaded = true;
100
+ this.lstComponents.forEach(component => { component.items.set(this.items); });
101
+ }
102
+ finally {
103
+ this.lstComponents.forEach(component => { component.loadingFromLoader = false; });
104
+ }
105
+ }
106
+ SetLstComponentsThisItens() {
107
+ this.lstComponents.forEach(component => { component.items.set(this.items); return; });
108
+ }
109
+ async Load() {
110
+ if (this._isLoaded) {
111
+ this.SetLstComponentsThisItens();
112
+ return;
113
+ }
114
+ //[ Load from Array ]
115
+ if (this.configuration.loadFromArray != undefined && this.configuration.loadFromArray.length) {
116
+ this.items = this.configuration.loadFromArray;
117
+ this.SetLstComponentsThisItens();
118
+ return;
119
+ }
120
+ //[ Load from api ]
121
+ var vFiltros = this.configuration.vFiltros;
122
+ try {
123
+ var lstDados = [];
124
+ if (this.configuration.loadFromService) {
125
+ lstDados = (await firstValueFrom(this.configuration.loadFromService.List(vFiltros))).lstDados;
126
+ }
127
+ else {
128
+ lstDados = (await firstValueFrom(this.configuration.loadFromFunction)).lstDados;
129
+ }
130
+ this.items = lstDados;
131
+ this.SetLstComponentsThisItens();
132
+ }
133
+ finally {
134
+ return;
135
+ }
136
+ }
137
+ }
138
+ export function BindValueFactory(configuration) {
139
+ const cBindValue = configuration.bindValue;
140
+ var bindValue = null;
141
+ if (typeof (cBindValue) == 'string') {
142
+ var bvS = cBindValue;
143
+ bindValue = ((obj) => { return obj[bvS]; });
144
+ }
145
+ else {
146
+ var bvF = cBindValue;
147
+ bindValue = ((obj) => { return bvF(obj); });
148
+ }
149
+ return bindValue;
150
+ }
151
+ export function BindLabelFactory(configuration) {
152
+ const cBindLabel = configuration.bindLabel;
153
+ var bindLabel = null;
154
+ if (typeof (cBindLabel) == 'string') {
155
+ var blS = cBindLabel;
156
+ bindLabel = ((obj) => { return obj[blS] + ''; });
157
+ }
158
+ else {
159
+ var blF = cBindLabel;
160
+ bindLabel = ((obj) => { return blF(obj) + ''; });
161
+ }
162
+ return bindLabel;
163
+ }
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuc2VsZWN0LmNvbmZpZ3VyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zYXBwaGlyZS1pb24tZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dHMvaW5wdXQtc2VsZWN0L2lucHV0LnNlbGVjdC5jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEQsT0FBTyxFQUFFLFdBQVcsRUFBZSxNQUFNLG9DQUFvQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFNMUQsTUFBTSxPQUFPLHdCQUF3QjtJQVduQztJQUNFLDJDQUEyQztJQUNwQyxZQUE4QyxJQUFJO0lBQ3pELDZCQUE2QjtJQUN0QixZQUE4QyxNQUFNO0lBRTNELGtEQUFrRDtJQUMzQyxZQUF1QixJQUFJO0lBQ2xDLDZDQUE2QztJQUN0QyxjQUF1QixJQUFJO0lBRWxDOzs7OztPQUtHO0lBQ0ksUUFBNEU7SUFDbkYsaUZBQWlGO0lBQzFFLFdBQXFCLEtBQUs7SUFDakMsb0NBQW9DO0lBQ3BDLFdBU1ksSUFBSTtJQUNoQix5REFBeUQ7SUFDbEQscUJBQXFELElBQUk7UUE5QnpELGNBQVMsR0FBVCxTQUFTLENBQXlDO1FBRWxELGNBQVMsR0FBVCxTQUFTLENBQTJDO1FBR3BELGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBRTNCLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQVEzQixhQUFRLEdBQVIsUUFBUSxDQUFvRTtRQUU1RSxhQUFRLEdBQVIsUUFBUSxDQUFrQjtRQWExQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXVD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QUF5QixVQUFVLENBQUM7UUFDM0MsU0FBUyxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQVUsRUFBRSxHQUFHLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZmlyc3RWYWx1ZUZyb20gfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuaW1wb3J0IHsgSHR0cFNlcnZpY2UsIFZpZXdSZXRvcm5vIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3dlYi9odHRwLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2VBdGl2byB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy93ZWIvaHR0cC5hdGl2by5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFZpZXdGaWx0cm9zIH0gZnJvbSBcIi4uLy4uLy4uL2NsYXNzZXMvZmlsdGVycy92aWV3LWZpbHRyb3NcIjtcclxuaW1wb3J0IHsgSU5UX01BWCB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy91dGlscy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IElTZWxlY3QgfSBmcm9tIFwiLi9JU2VsZWN0XCI7XHJcbmltcG9ydCB7IENvbXBhcmlzb24gfSBmcm9tIFwiLi4vLi4vLi4vY2xhc3Nlcy9jb21wYXJpc29uL2NvbXBhcmlzb25cIjtcclxuXHJcbmV4cG9ydCB0eXBlIERlZmF1bHRNb2RlbE9wdGlvbnMgPSB7IHZhbHVlOiBzdHJpbmcsIGxhYmVsOiBzdHJpbmcgfTtcclxuXHJcbmV4cG9ydCBjbGFzcyBJbnB1dFNlbGVjdENvbmZpZ3VyYXRpb257XHJcbiAgcGxhY2Vob2xkZXIgICAgIDogc3RyaW5nID0gXCJTZWxlY2lvbmUgdW0gaXRlbS4uLlwiXHJcbiAgbm9JdGVuc0ZvdW5kVGV4dDogc3RyaW5nID0gXCJTZW0gaXRlbXMgZW5jb250cmFkb3MuLi5cIlxyXG5cclxuICBsb2FkZXI6IElucHV0U2VsZWN0RGF0YUxvYWRlcjtcclxuICBsb2FkRnJvbUFycmF5ICAgOiBhbnlbXTtcclxuICBsb2FkRnJvbVNlcnZpY2UgOiBIdHRwU2VydmljZSB8IEh0dHBTZXJ2aWNlQXRpdm9cclxuICBsb2FkRnJvbUZ1bmN0aW9uOiBPYnNlcnZhYmxlPGFueT5cclxuXHJcbiAgcHVibGljIHZGaWx0cm9zOiBWaWV3RmlsdHJvcyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIC8qKiBWYWxvciBxdWUgc2Vyw6Egc2V0YWRvIG5vIGZvcm1Db250cm9sICovXHJcbiAgICBwdWJsaWMgYmluZFZhbHVlOiBzdHJpbmcgfCAoKG9iajogYW55KSA9PiBhbnkpICAgICA9IFwiaWRcIiAgLFxyXG4gICAgLyoqIFZhbG9yIHF1ZSBzZXLDoSBleGliaWRvICovXHJcbiAgICBwdWJsaWMgYmluZExhYmVsOiBzdHJpbmcgfCAoKG9iajogYW55KSA9PiBzdHJpbmcpICA9IFwibm9tZVwiLCBcclxuICAgIFxyXG4gICAgLyoqIEluZGljYSBzZSBvIHNlbGVjdCBwb2RlIHNlciBudWxvIGUgbGltcGF2ZWwgKi9cclxuICAgIHB1YmxpYyBjbGVhcmFibGUgIDogYm9vbGVhbiA9IHRydWUsIFxyXG4gICAgLyoqIEluZGljYSBzZSBvIHNlbGVjdCBwb2RlIHNlciBwZXNxdWlzYWRvICovXHJcbiAgICBwdWJsaWMgc2VhcmNoZWFibGU6IGJvb2xlYW4gPSB0cnVlLCBcclxuICAgIFxyXG4gICAgLyoqIFxyXG4gICAgICogU2UgTG9hZEZyb20gaW5zdGFuY2VvZiBIdHRwU2VydmljZSAgICAgIC0+IE9zIGRhZG9zIHNlcsOjbyBjYXJyZWdhZG9zIGRvIExpc3QoKVxyXG4gICAgICogU2UgTG9hZEZyb20gaW5zdGFuY2VvZiBIdHRwU2VydmljZUF0aXZvIC0+IE9zIGRhZG9zIHNlcsOjbyBjYXJyZWdhZG9zIGRvIExpc3RBdGl2bygpXHJcbiAgICAgKiBTZSBMb2FkRnJvbSBpbnN0YW5jZW9mIE9ic2VydmFibGUgICAgICAgLT4gT3MgZGFkb3Mgc2Vyw6NvIGNhcnJlZ2Fkb3MgZGEgZnVuw6fDo28gaW5kaWNhZGFcclxuICAgICAqIFNlIExvYWRGcm9tIGluc3RhbmNlb2YgQXJyYXkgICAgICAgICAgICAtPiBPcyBkYWRvcyBzZXLDo28gbyBhcnJheVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbG9hZEZyb20/OiAgSHR0cFNlcnZpY2UgfCBIdHRwU2VydmljZUF0aXZvIHwgT2JzZXJ2YWJsZTxWaWV3UmV0b3Jubz4gfCBhbnlbXSwgXHJcbiAgICAvKiogU2UgPSB0cnVlIE9zIHZhbG9yZXMgbm8gZm9ybSBjb250cm9sIHNlcsOhbyB1bSBhcnJheSBkb3MgaXRlbXMgc2VsZWNpb25hZG9zICovXHJcbiAgICBwdWJsaWMgbXVsdGlwbGUgOiBib29sZWFuID0gZmFsc2UsXHJcbiAgICAvKiogQXBsaWNhIG9zIGZpbHRyb3MgbmEgcGVzcXVpc2EgKi9cclxuICAgIHZGaWx0cm9zIDogUGFydGlhbDx7IFxyXG4gICAgICAvKiogQXBsaWNhIHVtYSBwZXNxdWlzYSBlbSB0ZXh0byAgKi9cclxuICAgICAgc2VhcmNoOiBzdHJpbmdcclxuICAgICAgLyoqIFByb3ByaWVkYWRlIGRlIG9yZGVuYcOnw6NvICovXHJcbiAgICAgIG9yZGVyQnlQcm9wZXJ0eTogc3RyaW5nXHJcbiAgICAgIC8qKiBPcmllbnRhw6fDo28gZGUgb3JkZW5hw6fDo28gKi9cclxuICAgICAgYXNjZW5kaW5nOiBib29sZWFuLFxyXG4gICAgICAvKiogRmlsdHJvICAqL1xyXG4gICAgICBmaWx0ZXI6IENvbXBhcmlzb25bXVxyXG4gICAgfT4gfCBudWxsID0gbnVsbCxcclxuICAgIC8qKiBEZXNhdGl2YSBvcyBpdGVtcyBxdWUgZXN0w6NvIGRlIGFjb3JkbyBjb20gYSBmdW7Dp8OjbyAqL1xyXG4gICAgcHVibGljIGRpc2FibGVDb25kaXRpb25hbDogKChvYmo6IGFueSkgPT4gYm9vbGVhbikgfCBudWxsID0gbnVsbFxyXG4gICl7XHJcbiAgICB0aGlzLmNsZWFyYWJsZSAgID0gY2xlYXJhYmxlO1xyXG4gICAgdGhpcy5zZWFyY2hlYWJsZSA9IHNlYXJjaGVhYmxlO1xyXG4gICAgdGhpcy5tdWx0aXBsZSAgICA9IG11bHRpcGxlO1xyXG5cclxuICAgIGlmKHZGaWx0cm9zICE9IG51bGwpe1xyXG4gICAgICBjb25zdCB2ID0gdkZpbHRyb3M7XHJcbiAgICAgIGlmKHYuYXNjZW5kaW5nID09IG51bGwgfHwgdi5hc2NlbmRpbmcgPT0gdW5kZWZpbmVkKXsgdi5hc2NlbmRpbmcgPSB0cnVlOyB9XHJcbiAgICAgIHRoaXMudkZpbHRyb3MgPSBuZXcgVmlld0ZpbHRyb3MoSU5UX01BWCwgdi5zZWFyY2gsIDEsIHYub3JkZXJCeVByb3BlcnR5LCB2LmFzY2VuZGluZyk7XHJcbiAgICAgICh0aGlzLnZGaWx0cm9zIGFzIFZpZXdGaWx0cm9zKS5maWx0ZXIgPSB2LmZpbHRlcjtcclxuICAgIH1cclxuXHJcbiAgICBpZihsb2FkRnJvbSl7XHJcbiAgICAgIGlmKEFycmF5LmlzQXJyYXkobG9hZEZyb20pKXsgXHJcbiAgICAgICAgdGhpcy5sb2FkRnJvbUFycmF5ICAgID0gbG9hZEZyb207IFxyXG4gICAgICB9IGVsc2VcclxuICAgICAgaWYobG9hZEZyb20gaW5zdGFuY2VvZiBIdHRwU2VydmljZSB8fCBsb2FkRnJvbSBpbnN0YW5jZW9mIEh0dHBTZXJ2aWNlQXRpdm8peyBcclxuICAgICAgICB0aGlzLmxvYWRGcm9tU2VydmljZSAgPSBsb2FkRnJvbTtcclxuICAgICAgfSBlbHNlIHsgIFxyXG4gICAgICAgIHRoaXMubG9hZEZyb21GdW5jdGlvbiA9IGxvYWRGcm9tO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmxvYWRlciA9IG5ldyBJbnB1dFNlbGVjdERhdGFMb2FkZXIodGhpcyk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgSW5wdXRTZWxlY3REYXRhTG9hZGVye1xyXG4gIGxzdENvbXBvbmVudHM6IElTZWxlY3RbXSA9IFtdO1xyXG4gIGNvbmZpZ3VyYXRpb246IElucHV0U2VsZWN0Q29uZmlndXJhdGlvbjtcclxuXHJcbiAgLyoqIFZhbG9yIHF1ZSBzZXLDoSBzZXRhZG8gbm8gZm9ybUNvbnRyb2wgKi9cclxuICBwdWJsaWMgYmluZFZhbHVlOiAoKG9iajogYW55KSA9PiBhbnkpICAgfCBudWxsID0gbnVsbDtcclxuICAvKiogVmFsb3IgcXVlIHNlcsOhIGV4aWJpZG8gKi9cclxuICBwdWJsaWMgYmluZExhYmVsOiAoKG9iajogYW55KSA9PiBzdHJpbmcpfCBudWxsID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoY29uZmlndXJhdGlvbjogSW5wdXRTZWxlY3RDb25maWd1cmF0aW9uKXsgXHJcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uOyBcclxuICAgIHRoaXMuYmluZFZhbHVlID0gQmluZFZhbHVlRmFjdG9yeShjb25maWd1cmF0aW9uKVxyXG4gICAgdGhpcy5iaW5kTGFiZWwgPSBCaW5kTGFiZWxGYWN0b3J5KGNvbmZpZ3VyYXRpb24pXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0TGFiZWwodmFsdWU6IGFueSl7XHJcbiAgICBpZighdGhpcy5pdGVtcyB8fCAhdGhpcy5iaW5kVmFsdWUgfHwgIXRoaXMuYmluZExhYmVsKXsgcmV0dXJuIFwiXCI7IH1cclxuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLml0ZW1zLmZpbmQocCA9PiB0aGlzLmJpbmRWYWx1ZShwKSA9PSB2YWx1ZSk7XHJcbiAgICBpZighaXRlbSl7IHJldHVybiBcIlwiIDt9XHJcbiAgICByZXR1cm4gdGhpcy5iaW5kTGFiZWwoaXRlbSk7XHJcbiAgfVxyXG5cclxuICBBZGRDb21wb25lbnQoY29tcG9uZW50OiBJU2VsZWN0KXsgXHJcbiAgICB0aGlzLmxzdENvbXBvbmVudHMucHVzaChjb21wb25lbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaXNMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgYXN5bmMgUmVmcmVzaChpdGVtcz86IGFueVtdKTogUHJvbWlzZTx2b2lkPntcclxuICAgIHRoaXMubHN0Q29tcG9uZW50cy5mb3JFYWNoKGNvbXBvbmVudCA9PiB7IGNvbXBvbmVudC5sb2FkaW5nRnJvbUxvYWRlciA9IHRydWU7IH0pO1xyXG4gICAgXHJcbiAgICBpZighdGhpcy5jb25maWd1cmF0aW9uLmxvYWRGcm9tU2VydmljZSAmJiAhdGhpcy5jb25maWd1cmF0aW9uLmxvYWRGcm9tRnVuY3Rpb24gJiYgKCF0aGlzLmNvbmZpZ3VyYXRpb24ubG9hZEZyb21BcnJheSB8fCAhKHRoaXMuY29uZmlndXJhdGlvbi5sb2FkRnJvbUFycmF5Lmxlbmd0aCA+IDApKSl7XHJcbiAgICAgIHRoaXMuaXRlbXMgPSBpdGVtcztcclxuICAgICAgdGhpcy5faXNMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmxzdENvbXBvbmVudHMuZm9yRWFjaChjb21wb25lbnQgPT4geyBjb21wb25lbnQuaXRlbXMuc2V0KHRoaXMuaXRlbXMpOyB9KTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdHJ5e1xyXG4gICAgICBhd2FpdCB0aGlzLkxvYWQoKTtcclxuICAgICAgdGhpcy5faXNMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmxzdENvbXBvbmVudHMuZm9yRWFjaChjb21wb25lbnQgPT4geyBjb21wb25lbnQuaXRlbXMuc2V0KHRoaXMuaXRlbXMpOyB9KTtcclxuICAgIH1cclxuICAgIGZpbmFsbHl7XHJcbiAgICAgIHRoaXMubHN0Q29tcG9uZW50cy5mb3JFYWNoKGNvbXBvbmVudCA9PiB7IGNvbXBvbmVudC5sb2FkaW5nRnJvbUxvYWRlciA9IGZhbHNlOyB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgU2V0THN0Q29tcG9uZW50c1RoaXNJdGVucygpe1xyXG4gICAgdGhpcy5sc3RDb21wb25lbnRzLmZvckVhY2goY29tcG9uZW50ID0+IHsgY29tcG9uZW50Lml0ZW1zLnNldCh0aGlzLml0ZW1zKTsgcmV0dXJuOyB9KTtcclxuICB9XHJcblxyXG4gIGl0ZW1zOiBhbnlbXSA9IFtdO1xyXG4gIGFzeW5jIExvYWQoKTogUHJvbWlzZTx2b2lkPntcclxuICAgIGlmKHRoaXMuX2lzTG9hZGVkKXtcclxuICAgICAgdGhpcy5TZXRMc3RDb21wb25lbnRzVGhpc0l0ZW5zKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvL1sgTG9hZCBmcm9tIEFycmF5IF1cclxuICAgIGlmKHRoaXMuY29uZmlndXJhdGlvbi5sb2FkRnJvbUFycmF5ICE9IHVuZGVmaW5lZCAmJiB0aGlzLmNvbmZpZ3VyYXRpb24ubG9hZEZyb21BcnJheS5sZW5ndGgpe1xyXG4gICAgICB0aGlzLml0ZW1zID0gdGhpcy5jb25maWd1cmF0aW9uLmxvYWRGcm9tQXJyYXk7XHJcbiAgICAgIHRoaXMuU2V0THN0Q29tcG9uZW50c1RoaXNJdGVucygpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy9bIExvYWQgZnJvbSBhcGkgXVxyXG4gICAgdmFyIHZGaWx0cm9zOiBWaWV3RmlsdHJvcyB8IG51bGwgPSB0aGlzLmNvbmZpZ3VyYXRpb24udkZpbHRyb3M7XHJcbiAgICB0cnl7XHJcbiAgICAgIHZhciBsc3REYWRvczogYW55W10gPSBbXTtcclxuICAgICAgXHJcbiAgICAgIGlmKHRoaXMuY29uZmlndXJhdGlvbi5sb2FkRnJvbVNlcnZpY2Upe1xyXG4gICAgICAgIGxzdERhZG9zID0gKGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuY29uZmlndXJhdGlvbi5sb2FkRnJvbVNlcnZpY2UuTGlzdCh2RmlsdHJvcykpKS5sc3REYWRvc1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBsc3REYWRvcyA9IChhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmNvbmZpZ3VyYXRpb24ubG9hZEZyb21GdW5jdGlvbikpLmxzdERhZG9zO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLml0ZW1zID0gbHN0RGFkb3M7XHJcbiAgICAgIHRoaXMuU2V0THN0Q29tcG9uZW50c1RoaXNJdGVucygpO1xyXG4gICAgfWZpbmFsbHl7IHJldHVybjsgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIEJpbmRWYWx1ZUZhY3RvcnkoY29uZmlndXJhdGlvbjogSW5wdXRTZWxlY3RDb25maWd1cmF0aW9uKTogKChvYmo6IGFueSkgPT4gYW55KSB7XHJcbiAgY29uc3QgY0JpbmRWYWx1ZSA9IGNvbmZpZ3VyYXRpb24uYmluZFZhbHVlO1xyXG4gIHZhciBiaW5kVmFsdWU6ICgoYXJnczogYW55KSA9PiBhbnkpID0gbnVsbDtcclxuICBpZih0eXBlb2YoY0JpbmRWYWx1ZSkgPT0gJ3N0cmluZycpe1xyXG4gICAgdmFyIGJ2Uzogc3RyaW5nICAgICAgICAgICAgICAgPSBjQmluZFZhbHVlO1xyXG4gICAgYmluZFZhbHVlID0gKChvYmo6IGFueSk6IGFueSA9PiB7IHJldHVybiBvYmpbYnZTXTsgfSk7XHJcbiAgfWVsc2V7XHJcbiAgICB2YXIgYnZGOiAoKGFyZ3M6IGFueSkgPT4gYW55KSA9IGNCaW5kVmFsdWU7XHJcbiAgICBiaW5kVmFsdWUgPSAoKG9iajogYW55KTogYW55ID0+IHsgcmV0dXJuIGJ2RihvYmopOyB9KTtcclxuICB9XHJcbiAgcmV0dXJuIGJpbmRWYWx1ZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIEJpbmRMYWJlbEZhY3RvcnkoY29uZmlndXJhdGlvbjogSW5wdXRTZWxlY3RDb25maWd1cmF0aW9uKTogKChvYmo6IGFueSkgPT4gc3RyaW5nKXtcclxuICBjb25zdCBjQmluZExhYmVsID0gY29uZmlndXJhdGlvbi5iaW5kTGFiZWw7XHJcbiAgdmFyIGJpbmRMYWJlbDogKChhcmdzOiBhbnkpID0+IHN0cmluZykgPSBudWxsO1xyXG4gIGlmKHR5cGVvZihjQmluZExhYmVsKSA9PSAnc3RyaW5nJyl7XHJcbiAgICB2YXIgYmxTOiBzdHJpbmcgICAgICAgICAgICAgICA9IGNCaW5kTGFiZWw7XHJcbiAgICBiaW5kTGFiZWwgPSAoKG9iajogYW55KTogc3RyaW5nID0+IHsgcmV0dXJuIG9ialtibFNdICsgJyc7IH0pO1xyXG4gIH1lbHNle1xyXG4gICAgdmFyIGJsRjogKChhcmdzOiBhbnkpID0+IGFueSkgPSBjQmluZExhYmVsO1xyXG4gICAgYmluZExhYmVsID0gKChvYmo6IGFueSk6IHN0cmluZyA9PiB7IHJldHVybiBibEYob2JqKSArICcnOyB9KTtcclxuICB9XHJcbiAgcmV0dXJuIGJpbmRMYWJlbDtcclxufSJdfQ==