@sapphire-ion/framework 1.2.43 → 1.2.44

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 (495) hide show
  1. package/esm2022/lib/classes/comparison/comparison-operator.mjs +18 -0
  2. package/esm2022/lib/classes/comparison/comparison-value-type.mjs +25 -0
  3. package/esm2022/lib/classes/comparison/comparison.mjs +41 -0
  4. package/esm2022/lib/classes/comparison/properties/bool-property.mjs +15 -0
  5. package/esm2022/lib/classes/comparison/properties/date-property.mjs +27 -0
  6. package/esm2022/lib/classes/comparison/properties/datetime-property.mjs +27 -0
  7. package/esm2022/lib/classes/comparison/properties/decimal-property.mjs +27 -0
  8. package/esm2022/lib/classes/comparison/properties/enum-property.mjs +27 -0
  9. package/esm2022/lib/classes/comparison/properties/implicit-property.mjs +12 -0
  10. package/esm2022/lib/classes/comparison/properties/int-property.mjs +27 -0
  11. package/esm2022/lib/classes/comparison/properties/long-property.mjs +27 -0
  12. package/esm2022/lib/classes/comparison/properties/string-property.mjs +15 -0
  13. package/esm2022/lib/classes/comparison/properties/time-property.mjs +27 -0
  14. package/esm2022/lib/classes/credentials.mjs +2 -0
  15. package/esm2022/lib/classes/environment.mjs +34 -0
  16. package/esm2022/lib/classes/filters/view-filtros.mjs +18 -0
  17. package/esm2022/lib/classes/infinite-scroll.mjs +90 -0
  18. package/esm2022/lib/classes/inputs/table-field-form-builder.mjs +10 -0
  19. package/esm2022/lib/classes/inputs/table-field.mjs +79 -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 +95 -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 +120 -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 +216 -0
  36. package/esm2022/lib/components/default/default-table/th-filter/th-filter.component.mjs +206 -0
  37. package/esm2022/lib/components/default/default-view/abstract-view.mjs +22 -0
  38. package/esm2022/lib/components/default/default-view/default-view.component.mjs +63 -0
  39. package/esm2022/lib/components/default/default-view/header-view/header-view.component.mjs +78 -0
  40. package/esm2022/lib/components/default/default-view/view.mjs +188 -0
  41. package/esm2022/lib/components/default/default.module.mjs +98 -0
  42. package/esm2022/lib/components/default-page/default.page.mjs +75 -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 +52 -0
  48. package/esm2022/lib/components/drawer/drawer.component.mjs +156 -0
  49. package/esm2022/lib/components/drawer/menu.mjs +15 -0
  50. package/esm2022/lib/components/filter/filter.component.mjs +145 -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 +85 -0
  55. package/esm2022/lib/components/inputs/input-bool/input-bool.component.mjs +46 -0
  56. package/esm2022/lib/components/inputs/input-bool/input-bool.configuration.mjs +16 -0
  57. package/esm2022/lib/components/inputs/input-cep/input-cep.component.mjs +50 -0
  58. package/esm2022/lib/components/inputs/input-cep/input-cep.configuration.mjs +4 -0
  59. package/esm2022/lib/components/inputs/input-color/input-color.component.mjs +481 -0
  60. package/esm2022/lib/components/inputs/input-configuration.mjs +2 -0
  61. package/esm2022/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.mjs +116 -0
  62. package/esm2022/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.configuration.mjs +6 -0
  63. package/esm2022/lib/components/inputs/input-date/input-date.component.mjs +235 -0
  64. package/esm2022/lib/components/inputs/input-date/input-date.configuration.mjs +8 -0
  65. package/esm2022/lib/components/inputs/input-decimal/input-decimal.component.mjs +243 -0
  66. package/esm2022/lib/components/inputs/input-decimal/input-decimal.configuration.mjs +50 -0
  67. package/esm2022/lib/components/inputs/input-default-configurations.mjs +14 -0
  68. package/esm2022/lib/components/inputs/input-file/download-button/download-button.component.mjs +99 -0
  69. package/esm2022/lib/components/inputs/input-file/input-file.component.mjs +101 -0
  70. package/esm2022/lib/components/inputs/input-file/input-file.configuration.mjs +24 -0
  71. package/esm2022/lib/components/inputs/input-icon/fluenticons.mjs +3734 -0
  72. package/esm2022/lib/components/inputs/input-icon/input-icon.component.mjs +60 -0
  73. package/esm2022/lib/components/inputs/input-icon/ionicons.mjs +1360 -0
  74. package/esm2022/lib/components/inputs/input-provider-factory.mjs +12 -0
  75. package/esm2022/lib/components/inputs/input-select/directives/sion-label-template.directive.mjs +16 -0
  76. package/esm2022/lib/components/inputs/input-select/directives/sion-option-template.directive.mjs +16 -0
  77. package/esm2022/lib/components/inputs/input-select/directives/sion-placeholder-template.directive.mjs +16 -0
  78. package/esm2022/lib/components/inputs/input-select/input-select.component.mjs +373 -0
  79. package/esm2022/lib/components/inputs/input-select/input.select.configuration.mjs +229 -0
  80. package/esm2022/lib/components/inputs/input-string/input-string.component.mjs +41 -0
  81. package/esm2022/lib/components/inputs/input-string/input-string.configuration.mjs +18 -0
  82. package/esm2022/lib/components/inputs/input-telefone/input-telefone.component.mjs +74 -0
  83. package/esm2022/lib/components/inputs/input-telefone/input-telefone.configuration.mjs +12 -0
  84. package/esm2022/lib/components/inputs/input-textarea/input-textarea.component.mjs +41 -0
  85. package/esm2022/lib/components/inputs/input-textarea/input-textarea.configuration.mjs +7 -0
  86. package/esm2022/lib/components/inputs/input-type.mjs +24 -0
  87. package/esm2022/lib/components/inputs/input-validators.mjs +121 -0
  88. package/esm2022/lib/components/inputs/inputs.module.mjs +133 -0
  89. package/esm2022/lib/components/loading/loading.component.mjs +34 -0
  90. package/esm2022/lib/components/login/login-admin/login-admin.component.mjs +52 -0
  91. package/esm2022/lib/components/login/login.component.mjs +99 -0
  92. package/esm2022/lib/components/main-content/main-content.component.mjs +100 -0
  93. package/esm2022/lib/components/popover/sion-popover/sion-popover.component.mjs +182 -0
  94. package/esm2022/lib/components/popover/sion-popover.module.mjs +21 -0
  95. package/esm2022/lib/components/sion-card/sion-card.component.mjs +26 -0
  96. package/esm2022/lib/components/stepper/step/step.component.mjs +43 -0
  97. package/esm2022/lib/components/stepper/stepper.component.mjs +36 -0
  98. package/esm2022/lib/components/stepper/stepper.module.mjs +25 -0
  99. package/esm2022/lib/components/tabs/tab/tab.component.mjs +41 -0
  100. package/esm2022/lib/components/tabs/tabs/tabs.component.mjs +56 -0
  101. package/esm2022/lib/components/tabs/tabs.module.mjs +22 -0
  102. package/esm2022/lib/components/text-tooltip/text-tooltip.component.mjs +51 -0
  103. package/esm2022/lib/components/tooltip/tooltip.component.mjs +21 -0
  104. package/esm2022/lib/core.module.mjs +38 -0
  105. package/esm2022/lib/directives/ng-var.directive.mjs +29 -0
  106. package/esm2022/lib/guards/auth.guard.mjs +26 -0
  107. package/esm2022/lib/guards/error.interceptor.mjs +107 -0
  108. package/esm2022/lib/guards/token.interceptor.mjs +25 -0
  109. package/esm2022/lib/index.mjs +187 -0
  110. package/esm2022/lib/pipes/secure.pipe.mjs +42 -0
  111. package/esm2022/lib/services/auth.service.mjs +150 -0
  112. package/esm2022/lib/services/environment.service.mjs +26 -0
  113. package/esm2022/lib/services/generic.service.mjs +84 -0
  114. package/esm2022/lib/services/modal-focus-trap.service.mjs +62 -0
  115. package/esm2022/lib/services/popover-focus-trap.service.mjs +62 -0
  116. package/esm2022/lib/services/route/route.cache.service.mjs +15 -0
  117. package/esm2022/lib/services/route/route.provider.service.mjs +42 -0
  118. package/esm2022/lib/services/usuario.service.mjs +49 -0
  119. package/esm2022/lib/services/utils.service.mjs +190 -0
  120. package/esm2022/lib/services/web/api-url-provider.service.mjs +29 -0
  121. package/esm2022/lib/services/web/http.ativo.service.mjs +37 -0
  122. package/esm2022/lib/services/web/http.service.mjs +177 -0
  123. package/esm2022/lib/services/web/storage.service.mjs +183 -0
  124. package/esm2022/public-api.mjs +5 -0
  125. package/esm2022/sapphire-ion-framework.mjs +5 -0
  126. package/fesm2022/sapphire-ion-framework.mjs +12234 -0
  127. package/fesm2022/sapphire-ion-framework.mjs.map +1 -0
  128. package/index.d.ts +5 -0
  129. package/lib/classes/comparison/comparison-operator.d.ts +9 -0
  130. package/lib/classes/comparison/comparison-value-type.d.ts +23 -0
  131. package/lib/classes/comparison/comparison.d.ts +25 -0
  132. package/lib/classes/comparison/properties/bool-property.d.ts +7 -0
  133. package/lib/classes/comparison/properties/date-property.d.ts +11 -0
  134. package/lib/classes/comparison/properties/datetime-property.d.ts +11 -0
  135. package/lib/classes/comparison/properties/decimal-property.d.ts +11 -0
  136. package/lib/classes/comparison/properties/enum-property.d.ts +11 -0
  137. package/lib/classes/comparison/properties/implicit-property.d.ts +6 -0
  138. package/lib/classes/comparison/properties/int-property.d.ts +11 -0
  139. package/lib/classes/comparison/properties/long-property.d.ts +11 -0
  140. package/lib/classes/comparison/properties/string-property.d.ts +7 -0
  141. package/lib/classes/comparison/properties/time-property.d.ts +11 -0
  142. package/{src/lib/classes/credentials.ts → lib/classes/credentials.d.ts} +5 -5
  143. package/lib/classes/environment.d.ts +14 -0
  144. package/lib/classes/filters/view-filtros.d.ts +10 -0
  145. package/lib/classes/infinite-scroll.d.ts +26 -0
  146. package/lib/classes/inputs/table-field-form-builder.d.ts +5 -0
  147. package/lib/classes/inputs/table-field.d.ts +20 -0
  148. package/lib/classes/page-option.d.ts +7 -0
  149. package/lib/classes/routes/default-routing-factory.d.ts +8 -0
  150. package/lib/classes/routes/id-preloader-configuration.d.ts +28 -0
  151. package/lib/classes/routes/route-data.d.ts +5 -0
  152. package/lib/components/carousel/carousel-image/carousel-image.component.d.ts +10 -0
  153. package/lib/components/carousel/carousel-item/carousel-item.component.d.ts +9 -0
  154. package/lib/components/carousel/carousel.component.d.ts +32 -0
  155. package/lib/components/carousel/carousel.module.d.ts +12 -0
  156. package/lib/components/carousel/i-carousel-item.component.d.ts +9 -0
  157. package/lib/components/content-block/content-block.component.d.ts +15 -0
  158. package/lib/components/default/default-list/abstract-list.d.ts +21 -0
  159. package/lib/components/default/default-list/default-list.component.d.ts +47 -0
  160. package/lib/components/default/default-list/header-list/header-list.component.d.ts +45 -0
  161. package/lib/components/default/default-list/list.d.ts +40 -0
  162. package/lib/components/default/default-pagination/default-pagination.component.d.ts +36 -0
  163. package/lib/components/default/default-table/default-table.component.d.ts +90 -0
  164. package/lib/components/default/default-table/th-filter/th-filter.component.d.ts +23 -0
  165. package/lib/components/default/default-view/abstract-view.d.ts +18 -0
  166. package/lib/components/default/default-view/default-view.component.d.ts +32 -0
  167. package/lib/components/default/default-view/header-view/header-view.component.d.ts +29 -0
  168. package/lib/components/default/default-view/view.d.ts +59 -0
  169. package/lib/components/default/default.module.d.ts +31 -0
  170. package/lib/components/default-page/default.page.d.ts +35 -0
  171. package/lib/components/drag-drop-file/drag-drop-file.directive.d.ts +14 -0
  172. package/lib/components/drag-drop-file/drag-drop-file.module.d.ts +10 -0
  173. package/lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.d.ts +9 -0
  174. package/lib/components/drawer/default-drawer-end/default-drawer-end.component.d.ts +13 -0
  175. package/lib/components/drawer/drawer-group/drawer-group.component.d.ts +22 -0
  176. package/lib/components/drawer/drawer.component.d.ts +31 -0
  177. package/lib/components/drawer/menu.d.ts +9 -0
  178. package/lib/components/filter/filter.component.d.ts +29 -0
  179. package/lib/components/http-responses-pages/forbidden-403/forbidden-403.component.d.ts +8 -0
  180. package/lib/components/image/image.component.d.ts +23 -0
  181. package/lib/components/info-popover/info-popover.component.d.ts +15 -0
  182. package/lib/components/inputs/custom-input.d.ts +40 -0
  183. package/lib/components/inputs/input-bool/input-bool.component.d.ts +16 -0
  184. package/lib/components/inputs/input-bool/input-bool.configuration.d.ts +17 -0
  185. package/lib/components/inputs/input-cep/input-cep.component.d.ts +18 -0
  186. package/lib/components/inputs/input-cep/input-cep.configuration.d.ts +3 -0
  187. package/lib/components/inputs/input-color/input-color.component.d.ts +77 -0
  188. package/{src/lib/components/inputs/input-configuration.ts → lib/components/inputs/input-configuration.d.ts} +10 -23
  189. package/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.d.ts +19 -0
  190. package/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.configuration.d.ts +5 -0
  191. package/lib/components/inputs/input-date/input-date.component.d.ts +60 -0
  192. package/lib/components/inputs/input-date/input-date.configuration.d.ts +7 -0
  193. package/lib/components/inputs/input-decimal/input-decimal.component.d.ts +26 -0
  194. package/lib/components/inputs/input-decimal/input-decimal.configuration.d.ts +28 -0
  195. package/lib/components/inputs/input-default-configurations.d.ts +13 -0
  196. package/lib/components/inputs/input-file/download-button/download-button.component.d.ts +39 -0
  197. package/lib/components/inputs/input-file/input-file.component.d.ts +27 -0
  198. package/lib/components/inputs/input-file/input-file.configuration.d.ts +8 -0
  199. package/lib/components/inputs/input-icon/fluenticons.d.ts +1 -0
  200. package/lib/components/inputs/input-icon/input-icon.component.d.ts +20 -0
  201. package/lib/components/inputs/input-icon/ionicons.d.ts +1 -0
  202. package/lib/components/inputs/input-provider-factory.d.ts +4 -0
  203. package/lib/components/inputs/input-select/directives/sion-label-template.directive.d.ts +18 -0
  204. package/lib/components/inputs/input-select/directives/sion-option-template.directive.d.ts +14 -0
  205. package/lib/components/inputs/input-select/directives/sion-placeholder-template.directive.d.ts +18 -0
  206. package/lib/components/inputs/input-select/input-select.component.d.ts +83 -0
  207. package/lib/components/inputs/input-select/input.select.configuration.d.ts +122 -0
  208. package/lib/components/inputs/input-string/input-string.component.d.ts +14 -0
  209. package/lib/components/inputs/input-string/input-string.configuration.d.ts +14 -0
  210. package/lib/components/inputs/input-telefone/input-telefone.component.d.ts +19 -0
  211. package/lib/components/inputs/input-telefone/input-telefone.configuration.d.ts +9 -0
  212. package/lib/components/inputs/input-textarea/input-textarea.component.d.ts +14 -0
  213. package/lib/components/inputs/input-textarea/input-textarea.configuration.d.ts +4 -0
  214. package/lib/components/inputs/input-type.d.ts +22 -0
  215. package/lib/components/inputs/input-validators.d.ts +25 -0
  216. package/lib/components/inputs/inputs.module.d.ts +33 -0
  217. package/lib/components/loading/loading.component.d.ts +18 -0
  218. package/lib/components/login/login-admin/login-admin.component.d.ts +20 -0
  219. package/lib/components/login/login.component.d.ts +29 -0
  220. package/lib/components/main-content/main-content.component.d.ts +27 -0
  221. package/lib/components/popover/sion-popover/sion-popover.component.d.ts +43 -0
  222. package/lib/components/popover/sion-popover.module.d.ts +9 -0
  223. package/lib/components/sion-card/sion-card.component.d.ts +11 -0
  224. package/lib/components/stepper/step/step.component.d.ts +15 -0
  225. package/lib/components/stepper/stepper.component.d.ts +14 -0
  226. package/lib/components/stepper/stepper.module.d.ts +10 -0
  227. package/lib/components/tabs/tab/tab.component.d.ts +19 -0
  228. package/lib/components/tabs/tabs/tabs.component.d.ts +18 -0
  229. package/lib/components/tabs/tabs.module.d.ts +12 -0
  230. package/lib/components/text-tooltip/text-tooltip.component.d.ts +16 -0
  231. package/lib/components/tooltip/tooltip.component.d.ts +7 -0
  232. package/lib/core.module.d.ts +16 -0
  233. package/lib/directives/ng-var.directive.d.ts +12 -0
  234. package/lib/guards/auth.guard.d.ts +11 -0
  235. package/lib/guards/error.interceptor.d.ts +32 -0
  236. package/lib/guards/token.interceptor.d.ts +11 -0
  237. package/lib/index.d.ts +117 -0
  238. package/lib/pipes/secure.pipe.d.ts +15 -0
  239. package/lib/services/auth.service.d.ts +47 -0
  240. package/lib/services/environment.service.d.ts +10 -0
  241. package/lib/services/generic.service.d.ts +22 -0
  242. package/lib/services/modal-focus-trap.service.d.ts +13 -0
  243. package/lib/services/popover-focus-trap.service.d.ts +13 -0
  244. package/lib/services/route/route.cache.service.d.ts +7 -0
  245. package/lib/services/route/route.provider.service.d.ts +13 -0
  246. package/lib/services/usuario.service.d.ts +21 -0
  247. package/lib/services/utils.service.d.ts +53 -0
  248. package/lib/services/web/api-url-provider.service.d.ts +13 -0
  249. package/lib/services/web/http.ativo.service.d.ts +20 -0
  250. package/lib/services/web/http.service.d.ts +59 -0
  251. package/lib/services/web/storage.service.d.ts +46 -0
  252. package/package.json +47 -43
  253. package/public-api.d.ts +1 -0
  254. package/{src/lib → themes}/compiled-styles.scss +2551 -2551
  255. package/build.ps1 +0 -39
  256. package/ng-package.json +0 -10
  257. package/src/lib/classes/comparison/comparison-operator.ts +0 -17
  258. package/src/lib/classes/comparison/comparison-value-type.ts +0 -34
  259. package/src/lib/classes/comparison/comparison.ts +0 -45
  260. package/src/lib/classes/comparison/properties/bool-property.ts +0 -16
  261. package/src/lib/classes/comparison/properties/date-property.ts +0 -28
  262. package/src/lib/classes/comparison/properties/datetime-property.ts +0 -28
  263. package/src/lib/classes/comparison/properties/decimal-property.ts +0 -28
  264. package/src/lib/classes/comparison/properties/enum-property.ts +0 -28
  265. package/src/lib/classes/comparison/properties/implicit-property.ts +0 -13
  266. package/src/lib/classes/comparison/properties/int-property.ts +0 -28
  267. package/src/lib/classes/comparison/properties/long-property.ts +0 -28
  268. package/src/lib/classes/comparison/properties/string-property.ts +0 -16
  269. package/src/lib/classes/comparison/properties/time-property.ts +0 -28
  270. package/src/lib/classes/environment.ts +0 -37
  271. package/src/lib/classes/filters/view-filtros.ts +0 -18
  272. package/src/lib/classes/infinite-scroll.ts +0 -112
  273. package/src/lib/classes/inputs/table-field-form-builder.ts +0 -12
  274. package/src/lib/classes/inputs/table-field.ts +0 -62
  275. package/src/lib/classes/page-option.ts +0 -8
  276. package/src/lib/classes/routes/default-routing-factory.ts +0 -24
  277. package/src/lib/classes/routes/id-preloader-configuration.ts +0 -21
  278. package/src/lib/classes/routes/route-data.ts +0 -9
  279. package/src/lib/components/carousel/carousel-image/carousel-image.component.html +0 -4
  280. package/src/lib/components/carousel/carousel-image/carousel-image.component.ts +0 -15
  281. package/src/lib/components/carousel/carousel-item/carousel-item.component.html +0 -3
  282. package/src/lib/components/carousel/carousel-item/carousel-item.component.ts +0 -14
  283. package/src/lib/components/carousel/carousel.component.html +0 -22
  284. package/src/lib/components/carousel/carousel.component.ts +0 -83
  285. package/src/lib/components/carousel/carousel.module.ts +0 -20
  286. package/src/lib/components/carousel/i-carousel-item.component.ts +0 -8
  287. package/src/lib/components/content-block/content-block.component.html +0 -6
  288. package/src/lib/components/content-block/content-block.component.ts +0 -25
  289. package/src/lib/components/default/default-list/abstract-list.ts +0 -56
  290. package/src/lib/components/default/default-list/default-list.component.html +0 -60
  291. package/src/lib/components/default/default-list/default-list.component.ts +0 -72
  292. package/src/lib/components/default/default-list/header-list/header-list.component.html +0 -32
  293. package/src/lib/components/default/default-list/header-list/header-list.component.ts +0 -85
  294. package/src/lib/components/default/default-list/list.ts +0 -127
  295. package/src/lib/components/default/default-pagination/default-pagination.component.html +0 -52
  296. package/src/lib/components/default/default-pagination/default-pagination.component.ts +0 -118
  297. package/src/lib/components/default/default-table/default-table.component.html +0 -104
  298. package/src/lib/components/default/default-table/default-table.component.ts +0 -255
  299. package/src/lib/components/default/default-table/th-filter/th-filter.component.html +0 -69
  300. package/src/lib/components/default/default-table/th-filter/th-filter.component.ts +0 -183
  301. package/src/lib/components/default/default-view/abstract-view.ts +0 -25
  302. package/src/lib/components/default/default-view/default-view.component.html +0 -111
  303. package/src/lib/components/default/default-view/default-view.component.ts +0 -44
  304. package/src/lib/components/default/default-view/header-view/header-view.component.html +0 -64
  305. package/src/lib/components/default/default-view/header-view/header-view.component.ts +0 -57
  306. package/src/lib/components/default/default-view/view.ts +0 -183
  307. package/src/lib/components/default/default.module.ts +0 -61
  308. package/src/lib/components/default-page/default.page.html +0 -63
  309. package/src/lib/components/default-page/default.page.ts +0 -84
  310. package/src/lib/components/drag-drop-file/drag-drop-file.directive.ts +0 -44
  311. package/src/lib/components/drag-drop-file/drag-drop-file.module.ts +0 -21
  312. package/src/lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.html +0 -5
  313. package/src/lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.ts +0 -17
  314. package/src/lib/components/drawer/default-drawer-end/default-drawer-end.component.html +0 -12
  315. package/src/lib/components/drawer/default-drawer-end/default-drawer-end.component.ts +0 -35
  316. package/src/lib/components/drawer/drawer-group/drawer-group.component.html +0 -79
  317. package/src/lib/components/drawer/drawer-group/drawer-group.component.ts +0 -49
  318. package/src/lib/components/drawer/drawer.component.html +0 -120
  319. package/src/lib/components/drawer/drawer.component.ts +0 -157
  320. package/src/lib/components/drawer/menu.ts +0 -20
  321. package/src/lib/components/filter/filter.component.html +0 -43
  322. package/src/lib/components/filter/filter.component.ts +0 -141
  323. package/src/lib/components/http-responses-pages/forbidden-403/forbidden-403.component.html +0 -35
  324. package/src/lib/components/http-responses-pages/forbidden-403/forbidden-403.component.ts +0 -19
  325. package/src/lib/components/image/image.component.html +0 -17
  326. package/src/lib/components/image/image.component.ts +0 -95
  327. package/src/lib/components/info-popover/info-popover.component.html +0 -23
  328. package/src/lib/components/info-popover/info-popover.component.ts +0 -75
  329. package/src/lib/components/inputs/custom-input.ts +0 -94
  330. package/src/lib/components/inputs/input-bool/input-bool.component.html +0 -26
  331. package/src/lib/components/inputs/input-bool/input-bool.component.ts +0 -39
  332. package/src/lib/components/inputs/input-bool/input-bool.configuration.ts +0 -14
  333. package/src/lib/components/inputs/input-cep/input-cep.component.html +0 -27
  334. package/src/lib/components/inputs/input-cep/input-cep.component.ts +0 -41
  335. package/src/lib/components/inputs/input-cep/input-cep.configuration.ts +0 -4
  336. package/src/lib/components/inputs/input-color/input-color.component.html +0 -79
  337. package/src/lib/components/inputs/input-color/input-color.component.ts +0 -544
  338. package/src/lib/components/inputs/input-color/input-color.configuration.ts +0 -0
  339. package/src/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.html +0 -28
  340. package/src/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.ts +0 -99
  341. package/src/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.configuration.ts +0 -4
  342. package/src/lib/components/inputs/input-date/input-date.component.html +0 -88
  343. package/src/lib/components/inputs/input-date/input-date.component.ts +0 -241
  344. package/src/lib/components/inputs/input-date/input-date.configuration.ts +0 -6
  345. package/src/lib/components/inputs/input-decimal/input-decimal.component.html +0 -31
  346. package/src/lib/components/inputs/input-decimal/input-decimal.component.ts +0 -249
  347. package/src/lib/components/inputs/input-decimal/input-decimal.configuration.ts +0 -47
  348. package/src/lib/components/inputs/input-default-configurations.ts +0 -15
  349. package/src/lib/components/inputs/input-file/download-button/download-button.component.html +0 -56
  350. package/src/lib/components/inputs/input-file/download-button/download-button.component.ts +0 -89
  351. package/src/lib/components/inputs/input-file/input-file.component.html +0 -59
  352. package/src/lib/components/inputs/input-file/input-file.component.ts +0 -96
  353. package/src/lib/components/inputs/input-file/input-file.configuration.ts +0 -25
  354. package/src/lib/components/inputs/input-icon/fluenticons.ts +0 -3733
  355. package/src/lib/components/inputs/input-icon/input-icon.component.html +0 -8
  356. package/src/lib/components/inputs/input-icon/input-icon.component.ts +0 -52
  357. package/src/lib/components/inputs/input-icon/ionicons.ts +0 -1359
  358. package/src/lib/components/inputs/input-provider-factory.ts +0 -12
  359. package/src/lib/components/inputs/input-select/directives/sion-label-template.directive.ts +0 -19
  360. package/src/lib/components/inputs/input-select/directives/sion-option-template.directive.ts +0 -16
  361. package/src/lib/components/inputs/input-select/directives/sion-placeholder-template.directive.ts +0 -19
  362. package/src/lib/components/inputs/input-select/input-select.component.html +0 -176
  363. package/src/lib/components/inputs/input-select/input-select.component.ts +0 -361
  364. package/src/lib/components/inputs/input-select/input.select.configuration.ts +0 -292
  365. package/src/lib/components/inputs/input-string/input-string.component.html +0 -27
  366. package/src/lib/components/inputs/input-string/input-string.component.ts +0 -31
  367. package/src/lib/components/inputs/input-string/input-string.configuration.ts +0 -18
  368. package/src/lib/components/inputs/input-telefone/input-telefone.component.html +0 -29
  369. package/src/lib/components/inputs/input-telefone/input-telefone.component.ts +0 -63
  370. package/src/lib/components/inputs/input-telefone/input-telefone.configuration.ts +0 -8
  371. package/src/lib/components/inputs/input-textarea/input-textarea.component.html +0 -27
  372. package/src/lib/components/inputs/input-textarea/input-textarea.component.ts +0 -31
  373. package/src/lib/components/inputs/input-textarea/input-textarea.configuration.ts +0 -7
  374. package/src/lib/components/inputs/input-type.ts +0 -22
  375. package/src/lib/components/inputs/input-validators.ts +0 -111
  376. package/src/lib/components/inputs/inputs.module.ts +0 -74
  377. package/src/lib/components/loading/loading.component.html +0 -28
  378. package/src/lib/components/loading/loading.component.ts +0 -29
  379. package/src/lib/components/login/login-admin/login-admin.component.html +0 -28
  380. package/src/lib/components/login/login-admin/login-admin.component.ts +0 -51
  381. package/src/lib/components/login/login.component.html +0 -104
  382. package/src/lib/components/login/login.component.ts +0 -96
  383. package/src/lib/components/main-content/main-content.component.html +0 -145
  384. package/src/lib/components/main-content/main-content.component.ts +0 -93
  385. package/src/lib/components/popover/sion-popover/sion-popover.component.html +0 -21
  386. package/src/lib/components/popover/sion-popover/sion-popover.component.ts +0 -182
  387. package/src/lib/components/popover/sion-popover.module.ts +0 -12
  388. package/src/lib/components/sion-card/sion-card.component.html +0 -12
  389. package/src/lib/components/sion-card/sion-card.component.ts +0 -23
  390. package/src/lib/components/stepper/step/step.component.html +0 -11
  391. package/src/lib/components/stepper/step/step.component.ts +0 -44
  392. package/src/lib/components/stepper/stepper.component.html +0 -3
  393. package/src/lib/components/stepper/stepper.component.ts +0 -37
  394. package/src/lib/components/stepper/stepper.module.ts +0 -15
  395. package/src/lib/components/tabs/tab/tab.component.html +0 -8
  396. package/src/lib/components/tabs/tab/tab.component.ts +0 -28
  397. package/src/lib/components/tabs/tabs/tabs.component.html +0 -14
  398. package/src/lib/components/tabs/tabs/tabs.component.ts +0 -42
  399. package/src/lib/components/tabs/tabs.module.ts +0 -15
  400. package/src/lib/components/text-tooltip/text-tooltip.component.html +0 -8
  401. package/src/lib/components/text-tooltip/text-tooltip.component.ts +0 -45
  402. package/src/lib/components/tooltip/tooltip.component.html +0 -53
  403. package/src/lib/components/tooltip/tooltip.component.ts +0 -16
  404. package/src/lib/core.module.ts +0 -29
  405. package/src/lib/directives/ng-var.directive.ts +0 -26
  406. package/src/lib/guards/auth.guard.ts +0 -19
  407. package/src/lib/guards/error.interceptor.ts +0 -108
  408. package/src/lib/guards/token.interceptor.ts +0 -28
  409. package/src/lib/index.ts +0 -190
  410. package/src/lib/pipes/secure.pipe.ts +0 -39
  411. package/src/lib/services/auth.service.ts +0 -153
  412. package/src/lib/services/crypto.service.ts +0 -164
  413. package/src/lib/services/environment.service.ts +0 -17
  414. package/src/lib/services/generic.service.ts +0 -85
  415. package/src/lib/services/modal-focus-trap.service.ts +0 -65
  416. package/src/lib/services/popover-focus-trap.service.ts +0 -65
  417. package/src/lib/services/route/route.cache.service.ts +0 -17
  418. package/src/lib/services/route/route.provider.service.ts +0 -49
  419. package/src/lib/services/usuario.service.ts +0 -44
  420. package/src/lib/services/utils.service.ts +0 -216
  421. package/src/lib/services/web/api-url-provider.service.ts +0 -48
  422. package/src/lib/services/web/http.ativo.service.ts +0 -37
  423. package/src/lib/services/web/http.service.ts +0 -193
  424. package/src/lib/services/web/storage.service.ts +0 -206
  425. package/src/public-api.ts +0 -5
  426. package/tailwind.config.js +0 -27
  427. package/tsconfig.lib.json +0 -29
  428. package/tsconfig.lib.prod.json +0 -23
  429. package/tsconfig.spec.json +0 -27
  430. /package/{src/lib → themes}/components/carousel/carousel-image/carousel-image.component.scss +0 -0
  431. /package/{src/lib → themes}/components/carousel/carousel-item/carousel-item.component.scss +0 -0
  432. /package/{src/lib → themes}/components/carousel/carousel.component.scss +0 -0
  433. /package/{src/lib → themes}/components/content-block/content-block.component.scss +0 -0
  434. /package/{src/lib → themes}/components/default/default-list/default-list.component.scss +0 -0
  435. /package/{src/lib → themes}/components/default/default-list/header-list/header-list.component.scss +0 -0
  436. /package/{src/lib → themes}/components/default/default-pagination/default-pagination.component.scss +0 -0
  437. /package/{src/lib → themes}/components/default/default-table/default-table.component.scss +0 -0
  438. /package/{src/lib → themes}/components/default/default-table/th-filter/th-filter.component.scss +0 -0
  439. /package/{src/lib → themes}/components/default/default-view/default-view.component.scss +0 -0
  440. /package/{src/lib → themes}/components/default/default-view/header-view/header-view.component.scss +0 -0
  441. /package/{src/lib → themes}/components/default-page/default.page.scss +0 -0
  442. /package/{src/lib → themes}/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.scss +0 -0
  443. /package/{src/lib → themes}/components/drawer/default-drawer-end/default-drawer-end.component.scss +0 -0
  444. /package/{src/lib → themes}/components/drawer/drawer-group/drawer-group.component.scss +0 -0
  445. /package/{src/lib → themes}/components/drawer/drawer.component.scss +0 -0
  446. /package/{src/lib → themes}/components/filter/filter.component.scss +0 -0
  447. /package/{src/lib → themes}/components/http-responses-pages/forbidden-403/forbidden-403.component.scss +0 -0
  448. /package/{src/lib → themes}/components/image/image.component.scss +0 -0
  449. /package/{src/lib → themes}/components/info-popover/info-popover.component.scss +0 -0
  450. /package/{src/lib → themes}/components/inputs/input-bool/input-bool.component.scss +0 -0
  451. /package/{src/lib → themes}/components/inputs/input-cep/input-cep.component.scss +0 -0
  452. /package/{src/lib → themes}/components/inputs/input-color/input-color.component.scss +0 -0
  453. /package/{src/lib → themes}/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.scss +0 -0
  454. /package/{src/lib → themes}/components/inputs/input-date/input-date.component.scss +0 -0
  455. /package/{src/lib → themes}/components/inputs/input-decimal/input-decimal.component.scss +0 -0
  456. /package/{src/lib → themes}/components/inputs/input-file/download-button/download-button.component.scss +0 -0
  457. /package/{src/lib → themes}/components/inputs/input-file/input-file.component.scss +0 -0
  458. /package/{src/lib → themes}/components/inputs/input-icon/input-icon.component.scss +0 -0
  459. /package/{src/lib → themes}/components/inputs/input-select/input-select.component.scss +0 -0
  460. /package/{src/lib → themes}/components/inputs/input-string/input-string.component.scss +0 -0
  461. /package/{src/lib → themes}/components/inputs/input-telefone/input-telefone.component.scss +0 -0
  462. /package/{src/lib → themes}/components/inputs/input-textarea/input-textarea.component.scss +0 -0
  463. /package/{src/lib → themes}/components/inputs/inputs.scss +0 -0
  464. /package/{src/lib → themes}/components/loading/loading.component.scss +0 -0
  465. /package/{src/lib → themes}/components/login/login-admin/login-admin.component.scss +0 -0
  466. /package/{src/lib → themes}/components/login/login.component.scss +0 -0
  467. /package/{src/lib → themes}/components/main-content/main-content.component.scss +0 -0
  468. /package/{src/lib → themes}/components/popover/sion-popover/sion-popover.component.scss +0 -0
  469. /package/{src/lib → themes}/components/sion-card/sion-card.component.scss +0 -0
  470. /package/{src/lib → themes}/components/stepper/step/step.component.scss +0 -0
  471. /package/{src/lib → themes}/components/stepper/stepper.component.scss +0 -0
  472. /package/{src/lib → themes}/components/tabs/tab/tab.component.scss +0 -0
  473. /package/{src/lib → themes}/components/tabs/tabs/tabs.component.scss +0 -0
  474. /package/{src/lib → themes}/components/text-tooltip/text-tooltip.component.scss +0 -0
  475. /package/{src/lib → themes}/components/tooltip/tooltip.component.scss +0 -0
  476. /package/{src/lib → themes}/styles/components.scss +0 -0
  477. /package/{src/lib → themes}/styles/core.styles.scss +0 -0
  478. /package/{src/lib → themes}/styles/ionic/ion-action-sheet.scss +0 -0
  479. /package/{src/lib → themes}/styles/ionic/ion-alert.scss +0 -0
  480. /package/{src/lib → themes}/styles/ionic/ion-button.scss +0 -0
  481. /package/{src/lib → themes}/styles/ionic/ion-card.scss +0 -0
  482. /package/{src/lib → themes}/styles/ionic/ion-content.scss +0 -0
  483. /package/{src/lib → themes}/styles/ionic/ion-datetime.scss +0 -0
  484. /package/{src/lib → themes}/styles/ionic/ion-item.scss +0 -0
  485. /package/{src/lib → themes}/styles/ionic/ion-list.scss +0 -0
  486. /package/{src/lib → themes}/styles/ionic/ion-modal.scss +0 -0
  487. /package/{src/lib → themes}/styles/ionic/ion-popover.scss +0 -0
  488. /package/{src/lib → themes}/styles/ionic/ion-progress-bar.scss +0 -0
  489. /package/{src/lib → themes}/styles/ionic/ion-searchbar.scss +0 -0
  490. /package/{src/lib → themes}/styles/ionic/ion-toast.scss +0 -0
  491. /package/{src/lib → themes}/styles/ionic.scss +0 -0
  492. /package/{src/lib → themes}/styles/login-default.scss +0 -0
  493. /package/{src/lib → themes}/styles/mixins.scss +0 -0
  494. /package/{src/lib → themes}/styles/styles.scss +0 -0
  495. /package/{src/lib → themes}/styles/translucid.scss +0 -0
@@ -0,0 +1,177 @@
1
+ import { BehaviorSubject, firstValueFrom } from 'rxjs';
2
+ import { HttpClient, HttpEventType } from '@angular/common/http';
3
+ import { FormBuilder, FormGroup } from '@angular/forms';
4
+ import { Injectable, inject } from '@angular/core';
5
+ import { NavController } from '@ionic/angular';
6
+ import { ApiUrlProviderService } from './api-url-provider.service';
7
+ import { GenericService } from '../generic.service';
8
+ import { TableField } from '../../classes/inputs/table-field';
9
+ import { InputType } from '../../components/inputs/input-type';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/common/http";
12
+ import * as i2 from "@angular/forms";
13
+ import * as i3 from "../generic.service";
14
+ import * as i4 from "@ionic/angular";
15
+ import * as i5 from "./api-url-provider.service";
16
+ export class HttpService {
17
+ constructor(http, fb, genericService, navController, apiUrlProviderService) {
18
+ this.http = http;
19
+ this.fb = fb;
20
+ this.genericService = genericService;
21
+ this.navController = navController;
22
+ this.apiUrlProviderService = apiUrlProviderService;
23
+ this.http = inject(HttpClient);
24
+ this.fb = inject(FormBuilder);
25
+ this.genericService = inject(GenericService);
26
+ this.navController = inject(NavController);
27
+ this.apiUrlProviderService = inject(ApiUrlProviderService);
28
+ }
29
+ /**
30
+ * Retorna a rota completa do serviço
31
+ * @return string
32
+ * @example 'https://api.example.com/{route}'
33
+ */
34
+ get fullRoute() {
35
+ return this.apiUrlProviderService.apiUrl + this.route;
36
+ }
37
+ /**
38
+ * Retorna os dados de acordo com os filtros
39
+ * @param vFilter Filtra os dados (Pesquisa, Paginação e IComparison)
40
+ */
41
+ List(vFilter) {
42
+ return this.http.post(this.fullRoute + `/list`, vFilter);
43
+ }
44
+ /** Retorna o dado da tabela associada com a rota com o id indicado
45
+ * @param id id do dado
46
+ */
47
+ Get(id) {
48
+ return this.http.get(this.fullRoute + `/get/${id}`);
49
+ }
50
+ /** Salva as alterações no dado recebido */
51
+ Save(obj, view) {
52
+ if (view) {
53
+ view.submitted = true;
54
+ }
55
+ var object = obj;
56
+ if (obj instanceof FormGroup) {
57
+ if (obj.invalid) {
58
+ const subject = new BehaviorSubject(null);
59
+ subject.error("[ Invalid Form ]");
60
+ subject.complete();
61
+ this.genericService.PresentToast("Verifique os campos!");
62
+ return subject;
63
+ }
64
+ object = obj.value;
65
+ }
66
+ const formData = this.FilesToForm(object);
67
+ formData.append('view', JSON.stringify(object));
68
+ //Check in the case it has a file and the view is not passed
69
+ if (Object.entries(object).find(p => p[1] instanceof File) && this.hasFileForm && !view) {
70
+ console.error("[ FormGroup contains file, but view isnt a valid parameter ]");
71
+ }
72
+ else if (view) {
73
+ return this._Save(formData, view);
74
+ }
75
+ return this.http.post(this.fullRoute + `/save`, formData);
76
+ }
77
+ /** Exclui a entidade */
78
+ Delete(id) {
79
+ return this.http.delete(this.fullRoute + `/delete/` + id);
80
+ }
81
+ /** Retorna todos os dados */
82
+ Load(vFiltros) {
83
+ return firstValueFrom(this.List(vFiltros));
84
+ }
85
+ /** Retorna os campos da tabela */
86
+ get lstTableFields() { return []; }
87
+ /** Retorna os campos da tabela para visualização/edição (se vazio retornara o padrão (lstTableFields)) */
88
+ get lstTableFieldsView() { return this.lstTableFields; }
89
+ /** Retora o TableField padrão de id */
90
+ get defaultId() {
91
+ var control = this.fb.control(0);
92
+ const field = new TableField("id", "id", control, InputType.Number);
93
+ field.hidden = true;
94
+ field.hiddenView = true;
95
+ return field;
96
+ }
97
+ /** Retora o TableField padrão de idEmpresa */
98
+ get defaultIdEmpresa() {
99
+ var control = this.fb.control(0);
100
+ const field = new TableField("Empresa", "idEmpresa", control, InputType.Select);
101
+ field.hiddenView = true;
102
+ field.hidden = true;
103
+ return field;
104
+ }
105
+ get hasFileForm() { return this.lstTableFieldsView.filter(p => p.type == InputType.File).length > 0; }
106
+ _Save(formData, view) {
107
+ view.loading = true;
108
+ const subject = new BehaviorSubject(null);
109
+ this.http.post(this.fullRoute + `/save`, formData, { reportProgress: true, observe: 'events' }).subscribe({
110
+ next: (rez) => {
111
+ if (rez.type == HttpEventType.UploadProgress) {
112
+ const res = rez.loaded / rez.total;
113
+ subject.next(rez);
114
+ view.progress = res;
115
+ }
116
+ else if (rez.type == HttpEventType.Response) {
117
+ view.loading = false;
118
+ view.submitted = false;
119
+ view.Refresh();
120
+ const id = Number(rez.body);
121
+ //[ Redirect to view/:id | redirectPath ]
122
+ if (!view.id && id) {
123
+ this.RedirectRoute(id, view.redirectPath, view.GetCurrentRouting());
124
+ }
125
+ }
126
+ },
127
+ error: (err) => {
128
+ subject.error(err);
129
+ view.loading = false;
130
+ view.submitted = false;
131
+ subject.complete();
132
+ },
133
+ complete: () => {
134
+ this.genericService.PresentToastSuccess();
135
+ subject.complete();
136
+ }
137
+ });
138
+ return subject;
139
+ }
140
+ RedirectRoute(id, redirectPath, activatedRoute) {
141
+ if (!redirectPath) {
142
+ return;
143
+ }
144
+ const path = redirectPath.replace(":id", id.toString());
145
+ this.navController.navigateRoot([`../${path}`], { relativeTo: activatedRoute });
146
+ }
147
+ FilesToForm(object, formData = new FormData(), lstTableFieldsView = null) {
148
+ if (!lstTableFieldsView) {
149
+ lstTableFieldsView = this.lstTableFieldsView.filter(p => p.type == InputType.File);
150
+ }
151
+ for (const [key, value] of Object.entries(object)) {
152
+ if (lstTableFieldsView.find(p => p.index == key && p.type == InputType.File)) {
153
+ if (value && typeof (value) != "string") {
154
+ const file = value;
155
+ const name = `file-${key}`;
156
+ formData.append(name, file, file.name);
157
+ object[key] = "";
158
+ }
159
+ }
160
+ }
161
+ return formData;
162
+ }
163
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpService, deps: [{ token: i1.HttpClient }, { token: i2.FormBuilder }, { token: i3.GenericService }, { token: i4.NavController }, { token: i5.ApiUrlProviderService }], target: i0.ɵɵFactoryTarget.Injectable }); }
164
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpService, providedIn: 'root' }); }
165
+ }
166
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpService, decorators: [{
167
+ type: Injectable,
168
+ args: [{
169
+ providedIn: 'root'
170
+ }]
171
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.FormBuilder }, { type: i3.GenericService }, { type: i4.NavController }, { type: i5.ApiUrlProviderService }] });
172
+ export class ViewRetorno {
173
+ constructor() {
174
+ this.lstDados = [];
175
+ }
176
+ }
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy93ZWIvaHR0cC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQWMsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQWEsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXBELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7QUFNL0QsTUFBTSxPQUFnQixXQUFXO0lBSy9CLFlBQ1ksSUFBMkIsRUFDM0IsRUFBNEIsRUFDNUIsY0FBK0IsRUFDL0IsYUFBOEIsRUFDOUIscUJBQTZDO1FBSjdDLFNBQUksR0FBSixJQUFJLENBQXVCO1FBQzNCLE9BQUUsR0FBRixFQUFFLENBQTBCO1FBQzVCLG1CQUFjLEdBQWQsY0FBYyxDQUFpQjtRQUMvQixrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFDOUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF3QjtRQUV2RCxJQUFJLENBQUMsSUFBSSxHQUFvQixNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLEVBQUUsR0FBc0IsTUFBTSxDQUFDLFdBQVcsQ0FB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QUUsQ0FBQztZQUNsRCxJQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFDLENBQUM7Z0JBQzNFLElBQUcsS0FBSyxJQUFJLE9BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxRQUFRLEVBQUMsQ0FBQztvQkFDckMsTUFBTSxJQUFJLEdBQUcsS0FBYSxDQUFDO29CQUMzQixNQUFNLElBQUksR0FBRyxRQUFRLEdBQUcsRUFBRSxDQUFDO29CQUMzQixRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN2QyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNuQixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDOytHQXpLbUIsV0FBVzttSEFBWCxXQUFXLGNBRm5CLE1BQU07OzRGQUVFLFdBQVc7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COztBQTZLRCxNQUFNLE9BQU8sV0FBVztJQUF4QjtRQUNFLGFBQVEsR0FBUSxFQUFFLENBQUM7SUFFckIsQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXZlbnQsIEh0dHBFdmVudFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE5hdkNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XHJcblxyXG5pbXBvcnQgeyBBcGlVcmxQcm92aWRlclNlcnZpY2UgfSBmcm9tICcuL2FwaS11cmwtcHJvdmlkZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEdlbmVyaWNTZXJ2aWNlIH0gZnJvbSAnLi4vZ2VuZXJpYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmlld0ZpbHRyb3MgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2ZpbHRlcnMvdmlldy1maWx0cm9zJztcclxuaW1wb3J0IHsgVGFibGVGaWVsZCB9IGZyb20gJy4uLy4uL2NsYXNzZXMvaW5wdXRzL3RhYmxlLWZpZWxkJztcclxuaW1wb3J0IHsgSW5wdXRUeXBlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9pbnB1dHMvaW5wdXQtdHlwZSc7XHJcbmltcG9ydCB7IFZpZXcgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2RlZmF1bHQvZGVmYXVsdC12aWV3L3ZpZXcnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSHR0cFNlcnZpY2U8ViA9IGFueT4ge1xyXG5cclxuICBwdWJsaWMgYWJzdHJhY3Qgcm91dGU6IHN0cmluZzsgXHJcbiAgcHVibGljIGFic3RyYWN0IHRpdGxlOiBzdHJpbmc7IFxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCBodHRwPyAgICAgICAgICA6IEh0dHBDbGllbnQsXHJcbiAgICBwcm90ZWN0ZWQgZmI/ICAgICAgICAgICAgOiBGb3JtQnVpbGRlciwgXHJcbiAgICBwcm90ZWN0ZWQgZ2VuZXJpY1NlcnZpY2U/OiBHZW5lcmljU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBuYXZDb250cm9sbGVyPyA6IE5hdkNvbnRyb2xsZXIsXHJcbiAgICBwcm90ZWN0ZWQgYXBpVXJsUHJvdmlkZXJTZXJ2aWNlPzogQXBpVXJsUHJvdmlkZXJTZXJ2aWNlLFxyXG4gICkgeyBcclxuICAgIHRoaXMuaHR0cCAgICAgICAgICAgICAgICAgID0gaW5qZWN0KEh0dHBDbGllbnQpO1xyXG4gICAgdGhpcy5mYiAgICAgICAgICAgICAgICAgICAgPSBpbmplY3QoRm9ybUJ1aWxkZXIpO1xyXG4gICAgdGhpcy5nZW5lcmljU2VydmljZSAgICAgICAgPSBpbmplY3QoR2VuZXJpY1NlcnZpY2UpO1xyXG4gICAgdGhpcy5uYXZDb250cm9sbGVyICAgICAgICAgPSBpbmplY3QoTmF2Q29udHJvbGxlcik7XHJcbiAgICB0aGlzLmFwaVVybFByb3ZpZGVyU2VydmljZSA9IGluamVjdChBcGlVcmxQcm92aWRlclNlcnZpY2UpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0b3JuYSBhIHJvdGEgY29tcGxldGEgZG8gc2VydmnDp29cclxuICAgKiBAcmV0dXJuIHN0cmluZ1xyXG4gICAqIEBleGFtcGxlICdodHRwczovL2FwaS5leGFtcGxlLmNvbS97cm91dGV9J1xyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgZnVsbFJvdXRlKCk6IHN0cmluZ3tcclxuICAgIHJldHVybiB0aGlzLmFwaVVybFByb3ZpZGVyU2VydmljZS5hcGlVcmwgKyB0aGlzLnJvdXRlXHJcbiAgfVxyXG5cclxuICAvKiogXHJcbiAgICogUmV0b3JuYSBvcyBkYWRvcyBkZSBhY29yZG8gY29tIG9zIGZpbHRyb3MgXHJcbiAgICogQHBhcmFtIHZGaWx0ZXIgRmlsdHJhIG9zIGRhZG9zIChQZXNxdWlzYSwgUGFnaW5hw6fDo28gZSBJQ29tcGFyaXNvbilcclxuICAqL1xyXG4gIHB1YmxpYyBMaXN0KHZGaWx0ZXI/OiBWaWV3RmlsdHJvcyk6IE9ic2VydmFibGU8Vmlld1JldG9ybm88Vj4+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFZpZXdSZXRvcm5vPFY+Pih0aGlzLmZ1bGxSb3V0ZSArIGAvbGlzdGAsIHZGaWx0ZXIpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFJldG9ybmEgbyBkYWRvIGRhIHRhYmVsYSBhc3NvY2lhZGEgY29tIGEgcm90YSBjb20gbyBpZCBpbmRpY2FkbyBcclxuICAgKiBAcGFyYW0gaWQgaWQgZG8gZGFkb1xyXG4gICovXHJcbiAgcHVibGljIEdldChpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxWPiB7IFxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8Vj4odGhpcy5mdWxsUm91dGUgK2AvZ2V0LyR7aWR9YCk7XHJcbiAgfVxyXG4gIFxyXG4gIC8qKiBTYWx2YSBhcyBhbHRlcmHDp8O1ZXMgbm8gZGFkbyByZWNlYmlkbyAqL1xyXG4gIHB1YmxpYyBTYXZlPFQgPSBudW1iZXI+KG9iajogYW55IHwgRm9ybUdyb3VwIHwgViwgdmlldz86IFZpZXc8SHR0cFNlcnZpY2U+KTogT2JzZXJ2YWJsZTxUPntcclxuICAgIGlmKHZpZXcpeyB2aWV3LnN1Ym1pdHRlZCA9IHRydWU7IH1cclxuXHJcbiAgICB2YXIgb2JqZWN0ID0gb2JqO1xyXG4gICAgXHJcbiAgICBpZihvYmogaW5zdGFuY2VvZiBGb3JtR3JvdXApeyBcclxuICAgICAgaWYob2JqLmludmFsaWQpeyBcclxuICAgICAgICBjb25zdCBzdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKVxyXG4gICAgICAgIHN1YmplY3QuZXJyb3IoXCJbIEludmFsaWQgRm9ybSBdXCIpO1xyXG4gICAgICAgIHN1YmplY3QuY29tcGxldGUoKTtcclxuICAgICAgICB0aGlzLmdlbmVyaWNTZXJ2aWNlLlByZXNlbnRUb2FzdChcIlZlcmlmaXF1ZSBvcyBjYW1wb3MhXCIpXHJcbiAgICAgICAgcmV0dXJuIHN1YmplY3Q7XHJcbiAgICAgIH1cclxuICAgIFxyXG4gICAgICBvYmplY3QgPSBvYmoudmFsdWU7IFxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZvcm1EYXRhID0gdGhpcy5GaWxlc1RvRm9ybShvYmplY3QpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKCd2aWV3JywgSlNPTi5zdHJpbmdpZnkob2JqZWN0KSk7XHJcblxyXG4gICAgLy9DaGVjayBpbiB0aGUgY2FzZSBpdCBoYXMgYSBmaWxlIGFuZCB0aGUgdmlldyBpcyBub3QgcGFzc2VkXHJcbiAgICBpZihPYmplY3QuZW50cmllcyhvYmplY3QpLmZpbmQocCA9PiBwWzFdIGluc3RhbmNlb2YgRmlsZSkgJiYgdGhpcy5oYXNGaWxlRm9ybSAmJiAhdmlldyl7IFxyXG4gICAgICBjb25zb2xlLmVycm9yKFwiWyBGb3JtR3JvdXAgY29udGFpbnMgZmlsZSwgYnV0IHZpZXcgaXNudCBhIHZhbGlkIHBhcmFtZXRlciBdXCIpOyBcclxuICAgIH0gZWxzZSBcclxuICAgIGlmKHZpZXcpeyBcclxuICAgICAgcmV0dXJuIHRoaXMuX1NhdmUoZm9ybURhdGEsIHZpZXcpOyBcclxuICAgIH0gXHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFQ+KHRoaXMuZnVsbFJvdXRlICsgYC9zYXZlYCwgZm9ybURhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqIEV4Y2x1aSBhIGVudGlkYWRlICovXHJcbiAgcHVibGljIERlbGV0ZShpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTx2b2lkPih0aGlzLmZ1bGxSb3V0ZSArIGAvZGVsZXRlL2AraWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFJldG9ybmEgdG9kb3Mgb3MgZGFkb3MgKi9cclxuICBwdWJsaWMgTG9hZCh2RmlsdHJvcz86IFZpZXdGaWx0cm9zKTogUHJvbWlzZTxWaWV3UmV0b3JubzxWPj57XHJcbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5MaXN0KHZGaWx0cm9zKSk7XHJcbiAgfVxyXG5cclxuICAvKiogUmV0b3JuYSBvcyBjYW1wb3MgZGEgdGFiZWxhICovXHJcbiAgZ2V0IGxzdFRhYmxlRmllbGRzKCkgICAgOiBUYWJsZUZpZWxkW10geyByZXR1cm4gW107IH1cclxuICAvKiogUmV0b3JuYSBvcyBjYW1wb3MgZGEgdGFiZWxhIHBhcmEgdmlzdWFsaXphw6fDo28vZWRpw6fDo28gKHNlIHZhemlvIHJldG9ybmFyYSBvIHBhZHLDo28gKGxzdFRhYmxlRmllbGRzKSkgKi8gXHJcbiAgZ2V0IGxzdFRhYmxlRmllbGRzVmlldygpOiBUYWJsZUZpZWxkW10geyByZXR1cm4gdGhpcy5sc3RUYWJsZUZpZWxkczsgfSBcclxuXHJcbiAgLyoqIFJldG9yYSBvIFRhYmxlRmllbGQgcGFkcsOjbyBkZSBpZCAqL1xyXG4gIGdldCBkZWZhdWx0SWQoKSB7XHJcbiAgICB2YXIgY29udHJvbCA9IHRoaXMuZmIuY29udHJvbCgwKTtcclxuICAgIGNvbnN0IGZpZWxkID0gbmV3IFRhYmxlRmllbGQoXCJpZFwiLCBcImlkXCIsIGNvbnRyb2wsIElucHV0VHlwZS5OdW1iZXIpOyBcclxuICAgIGZpZWxkLmhpZGRlbiAgICAgPSB0cnVlO1xyXG4gICAgZmllbGQuaGlkZGVuVmlldyA9IHRydWU7XHJcbiAgICByZXR1cm4gZmllbGRcclxuICB9XHJcblxyXG4gIC8qKiBSZXRvcmEgbyBUYWJsZUZpZWxkIHBhZHLDo28gZGUgaWRFbXByZXNhICovXHJcbiAgZ2V0IGRlZmF1bHRJZEVtcHJlc2EoKSB7XHJcbiAgICB2YXIgY29udHJvbCA9IHRoaXMuZmIuY29udHJvbCgwKTtcclxuICAgIGNvbnN0IGZpZWxkID0gbmV3IFRhYmxlRmllbGQoXCJFbXByZXNhXCIsIFwiaWRFbXByZXNhXCIsIGNvbnRyb2wsIElucHV0VHlwZS5TZWxlY3QpOyBcclxuICAgIGZpZWxkLmhpZGRlblZpZXcgPSB0cnVlO1xyXG4gICAgZmllbGQuaGlkZGVuICAgICA9IHRydWU7XHJcbiAgICByZXR1cm4gZmllbGQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldCBoYXNGaWxlRm9ybSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMubHN0VGFibGVGaWVsZHNWaWV3LmZpbHRlcihwID0+IHAudHlwZSA9PSBJbnB1dFR5cGUuRmlsZSkubGVuZ3RoID4gMDsgfSBcclxuXHJcbiAgcHJvdGVjdGVkIF9TYXZlKGZvcm1EYXRhOiBGb3JtRGF0YSwgdmlldzogVmlldzxIdHRwU2VydmljZT4pOiBPYnNlcnZhYmxlPGFueSB8IHZvaWQ+e1xyXG4gICAgdmlldy5sb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdCBzdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxIdHRwRXZlbnQ8YW55Pj4obnVsbCk7XHJcblxyXG4gICAgdGhpcy5odHRwLnBvc3QodGhpcy5mdWxsUm91dGUgKyBgL3NhdmVgLCBmb3JtRGF0YSwgeyByZXBvcnRQcm9ncmVzczogdHJ1ZSwgb2JzZXJ2ZTogJ2V2ZW50cycgfSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJleikgPT4geyBcclxuICAgICAgICBpZihyZXoudHlwZSA9PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzKXtcclxuICAgICAgICAgIGNvbnN0IHJlcyA9IHJlei5sb2FkZWQgLyByZXoudG90YWwhOyBcclxuICAgICAgICAgIHN1YmplY3QubmV4dChyZXopO1xyXG4gICAgICAgICAgdmlldy5wcm9ncmVzcyA9IHJlczsgIFxyXG4gICAgICAgIH1lbHNlIFxyXG4gICAgICAgIGlmKHJlei50eXBlID09IEh0dHBFdmVudFR5cGUuUmVzcG9uc2Upe1xyXG4gICAgICAgICAgdmlldy5sb2FkaW5nICAgPSBmYWxzZTsgXHJcbiAgICAgICAgICB2aWV3LnN1Ym1pdHRlZCA9IGZhbHNlOyBcclxuICAgICAgICAgIHZpZXcuUmVmcmVzaCgpOyBcclxuXHJcbiAgICAgICAgICBjb25zdCBpZDogbnVtYmVyID0gTnVtYmVyKHJlei5ib2R5KVxyXG5cclxuICAgICAgICAgIC8vWyBSZWRpcmVjdCB0byB2aWV3LzppZCB8IHJlZGlyZWN0UGF0aCBdXHJcbiAgICAgICAgICBpZighdmlldy5pZCAmJiBpZCl7IFxyXG4gICAgICAgICAgICB0aGlzLlJlZGlyZWN0Um91dGUoaWQsIHZpZXcucmVkaXJlY3RQYXRoLCB2aWV3LkdldEN1cnJlbnRSb3V0aW5nKCkpOyBcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOihlcnIpID0+IHsgXHJcbiAgICAgICAgc3ViamVjdC5lcnJvcihlcnIpOyBcclxuICAgICAgICB2aWV3LmxvYWRpbmcgICA9IGZhbHNlOyBcclxuICAgICAgICB2aWV3LnN1Ym1pdHRlZCA9IGZhbHNlOyBcclxuICAgICAgICBzdWJqZWN0LmNvbXBsZXRlKCk7IFxyXG4gICAgICB9LFxyXG4gICAgICBjb21wbGV0ZTooKSA9PiB7IFxyXG4gICAgICAgIHRoaXMuZ2VuZXJpY1NlcnZpY2UuUHJlc2VudFRvYXN0U3VjY2VzcygpO1xyXG4gICAgICAgIHN1YmplY3QuY29tcGxldGUoKTsgXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBzdWJqZWN0O1xyXG4gIH1cclxuICBwcml2YXRlIFJlZGlyZWN0Um91dGUoaWQ6IG51bWJlciwgcmVkaXJlY3RQYXRoOiBzdHJpbmcsIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IHZvaWQge1xyXG4gICAgaWYoIXJlZGlyZWN0UGF0aCl7IHJldHVybjsgfVxyXG4gICAgY29uc3QgcGF0aCA9IHJlZGlyZWN0UGF0aC5yZXBsYWNlKFwiOmlkXCIsIGlkLnRvU3RyaW5nKCkpO1xyXG4gICAgdGhpcy5uYXZDb250cm9sbGVyLm5hdmlnYXRlUm9vdChbYC4uLyR7cGF0aH1gXSwgeyByZWxhdGl2ZVRvOiBhY3RpdmF0ZWRSb3V0ZSB9KVxyXG4gIH1cclxuXHJcbiAgcHVibGljIEZpbGVzVG9Gb3JtKG9iamVjdDogViwgZm9ybURhdGE6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCksIGxzdFRhYmxlRmllbGRzVmlldzogVGFibGVGaWVsZFtdIHwgbnVsbCA9IG51bGwpOiBGb3JtRGF0YSB7XHJcbiAgICBpZighbHN0VGFibGVGaWVsZHNWaWV3KXsgbHN0VGFibGVGaWVsZHNWaWV3ID0gdGhpcy5sc3RUYWJsZUZpZWxkc1ZpZXcuZmlsdGVyKHAgPT4gcC50eXBlID09IElucHV0VHlwZS5GaWxlKTsgfVxyXG5cclxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG9iamVjdCkpIHtcclxuICAgICAgaWYobHN0VGFibGVGaWVsZHNWaWV3LmZpbmQocCA9PiBwLmluZGV4ID09IGtleSAmJiBwLnR5cGUgPT0gSW5wdXRUeXBlLkZpbGUpKXtcclxuICAgICAgICBpZih2YWx1ZSAmJiB0eXBlb2YodmFsdWUpICE9IFwic3RyaW5nXCIpe1xyXG4gICAgICAgICAgY29uc3QgZmlsZSA9IHZhbHVlIGFzIEZpbGU7XHJcbiAgICAgICAgICBjb25zdCBuYW1lID0gYGZpbGUtJHtrZXl9YDtcclxuICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChuYW1lLCBmaWxlLCBmaWxlLm5hbWUpO1xyXG4gICAgICAgICAgb2JqZWN0W2tleV0gPSBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvcm1EYXRhO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFZpZXdSZXRvcm5vPFQgPSBhbnk+IHtcclxuICBsc3REYWRvczogVFtdID0gW107XHJcbiAgdG90YWw6IG51bWJlcjtcclxufSJdfQ==
@@ -0,0 +1,183 @@
1
+ import { HttpClient, HttpEventType } from '@angular/common/http';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import { Injectable } from '@angular/core';
4
+ import { ApiUrlProviderService } from './api-url-provider.service';
5
+ import { GenericService } from '../generic.service';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common/http";
8
+ import * as i2 from "./api-url-provider.service";
9
+ import * as i3 from "../generic.service";
10
+ export class StorageService {
11
+ constructor(http, apiUrlProviderService, genericService) {
12
+ this.http = http;
13
+ this.apiUrlProviderService = apiUrlProviderService;
14
+ this.genericService = genericService;
15
+ this.currentlyDownloading = [];
16
+ }
17
+ GetProgress(file) {
18
+ const Download = this.currentlyDownloading.find(p => p.file == file);
19
+ return Download ? Download.progress : 0;
20
+ }
21
+ StartDownload(file, params, post = false) {
22
+ if (!this.currentlyDownloading.find(p => p.file == file)) {
23
+ const download = new Download(file);
24
+ this.currentlyDownloading.push(download);
25
+ this.HandleDownload(download, params, post);
26
+ return download;
27
+ }
28
+ return this.currentlyDownloading.find(p => p.file == file);
29
+ }
30
+ HandleDownload(download, params, post = false) {
31
+ var request = this.GetFile(download.file, params, post);
32
+ const requestProgess = new BehaviorSubject(null);
33
+ download.requestProgess = requestProgess;
34
+ request.subscribe({
35
+ next: (event) => {
36
+ if (event.type === HttpEventType.DownloadProgress) {
37
+ download.progress = event.loaded / event.total;
38
+ requestProgess.next(download.progress);
39
+ }
40
+ else if (event.type === HttpEventType.Response) {
41
+ DownloadFile(event, download.file);
42
+ this.currentlyDownloading.splice(this.currentlyDownloading.indexOf(download), 1);
43
+ requestProgess.complete();
44
+ }
45
+ if (event.status == 404) {
46
+ this.genericService.PresentToast("Arquivo não encontrado / Url inválida");
47
+ requestProgess.error(event);
48
+ requestProgess.complete();
49
+ }
50
+ },
51
+ error: (err) => {
52
+ this.currentlyDownloading.splice(this.currentlyDownloading.indexOf(download), 1);
53
+ }
54
+ });
55
+ return request;
56
+ }
57
+ static SanitizeFileName(v) {
58
+ try {
59
+ var filenameEnd = v.split('/').at(-1);
60
+ if (filenameEnd.split('.').length <= 2) {
61
+ return filenameEnd;
62
+ }
63
+ else {
64
+ var lst = filenameEnd.split('.');
65
+ lst[0] = '';
66
+ return lst.join('.').replace('.', '');
67
+ }
68
+ }
69
+ catch {
70
+ return v;
71
+ }
72
+ }
73
+ ;
74
+ GetFile(fileUrl, params, post = false) {
75
+ var url;
76
+ if (fileUrl[0] == '/') {
77
+ url = fileUrl.slice(1, fileUrl.length - 1);
78
+ }
79
+ else {
80
+ url = `${this.apiUrlProviderService.apiUrl}${fileUrl}`;
81
+ }
82
+ url = encodeURI(url).replace(/#/g, '%23');
83
+ if (!post) {
84
+ return this.http.get(url, {
85
+ reportProgress: true,
86
+ observe: 'events',
87
+ responseType: 'blob',
88
+ params: params
89
+ });
90
+ }
91
+ else {
92
+ return this.http.post(url, params, {
93
+ reportProgress: true,
94
+ observe: 'events',
95
+ responseType: 'blob'
96
+ });
97
+ }
98
+ }
99
+ /**
100
+ * @param lstFiles
101
+ * lista de arquivos a serem baixados
102
+ * @param onUpdate
103
+ * funcao chamada a cada progresso de download
104
+ * @returns
105
+ * lista de respostas dos arquivos, como promise, quando todos estiverem completos ou deram erro, é retornada
106
+ */
107
+ async GetBlobBatchLiveResponse(lstFiles, onUpdate) {
108
+ if (!lstFiles || lstFiles.length === 0) {
109
+ return Promise.resolve([]);
110
+ }
111
+ const lst = lstFiles.map(p => ({
112
+ path: p,
113
+ observable: this.GetFile(p),
114
+ progress: 0,
115
+ success: undefined,
116
+ blob: undefined
117
+ }));
118
+ const isAllComplete = () => lst.every(obs => obs.progress >= 1);
119
+ const getTotalProgressAvg = () => lst.reduce((acc, obs) => acc + obs.progress, 0) / lst.length;
120
+ return new Promise((resolve) => {
121
+ for (const obs of lst) {
122
+ obs.observable.subscribe({
123
+ next: (event) => {
124
+ if (event.type === HttpEventType.DownloadProgress) {
125
+ obs.progress = event.loaded / event.total;
126
+ onUpdate(getTotalProgressAvg(), lst, event.type);
127
+ }
128
+ else if (event.type === HttpEventType.Response) {
129
+ obs.blob = new Blob([event.body], { type: event.body.type });
130
+ obs.success = true;
131
+ if (isAllComplete()) {
132
+ resolve(lst);
133
+ }
134
+ onUpdate(getTotalProgressAvg(), lst, event.type);
135
+ }
136
+ },
137
+ error: (err) => {
138
+ obs.success = false;
139
+ obs.progress = 1;
140
+ onUpdate(getTotalProgressAvg(), lst);
141
+ if (isAllComplete()) {
142
+ resolve(lst);
143
+ }
144
+ }
145
+ });
146
+ }
147
+ });
148
+ }
149
+ async GetBlobLiveResponse(file, onUpdate) {
150
+ return (await this.GetBlobBatchLiveResponse([file], (totalProgress, lstResponse, eventType) => {
151
+ onUpdate?.(totalProgress, lstResponse[0], eventType);
152
+ }))[0];
153
+ }
154
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StorageService, deps: [{ token: i1.HttpClient }, { token: i2.ApiUrlProviderService }, { token: i3.GenericService }], target: i0.ɵɵFactoryTarget.Injectable }); }
155
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StorageService, providedIn: 'root' }); }
156
+ }
157
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StorageService, decorators: [{
158
+ type: Injectable,
159
+ args: [{
160
+ providedIn: 'root'
161
+ }]
162
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.ApiUrlProviderService }, { type: i3.GenericService }] });
163
+ export class Download {
164
+ constructor(file) {
165
+ this.file = file;
166
+ this.progress = 0.00001;
167
+ }
168
+ }
169
+ function DownloadFile(data, fileUrl) {
170
+ const downloadedFile = new Blob([data.body], { type: data.body.type });
171
+ var fileURL = URL.createObjectURL(downloadedFile);
172
+ const linkElement = document.createElement("a");
173
+ linkElement.setAttribute("href", fileURL);
174
+ linkElement.setAttribute("target", "_blank");
175
+ linkElement.setAttribute("download", StorageService.SanitizeFileName(fileUrl));
176
+ let me = new MouseEvent("click", {
177
+ view: window,
178
+ bubbles: true,
179
+ cancelable: false,
180
+ });
181
+ linkElement.dispatchEvent(me);
182
+ }
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy93ZWIvc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsYUFBYSxFQUFnQixNQUFNLHNCQUFzQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxlQUFlLEVBQTBDLE1BQU0sTUFBTSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7OztBQVFwRCxNQUFNLE9BQU8sY0FBYztJQUV6QixZQUNRLElBQWlCLEVBQ2pCLHFCQUE0QyxFQUM1QyxjQUE4QjtRQUY5QixTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBRzlCLHlCQUFvQixHQUFlLEVBQUUsQ0FBQztJQUYxQyxDQUFDO0lBSUUsV0FBVyxDQUFDLElBQVk7UUFDN0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUE7UUFDcEUsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU0sYUFBYSxDQUFDLElBQVksRUFBRSxNQUFZLEVBQUUsT0FBZ0IsS0FBSztRQUNwRSxJQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJ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LE9BQU8sRUFBRSxJQUFJO1FBQ2IsVUFBVSxFQUFFLEtBQUs7S0FDcEIsQ0FBQyxDQUFDO0lBRUgsV0FBVyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEV2ZW50LCBIdHRwRXZlbnRUeXBlLCBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgbGFzdFZhbHVlRnJvbSwgbWFwLCBmaWx0ZXIgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQXBpVXJsUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi9hcGktdXJsLXByb3ZpZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHZW5lcmljU2VydmljZSB9IGZyb20gJy4uL2dlbmVyaWMuc2VydmljZSc7XHJcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vdXRpbHMuc2VydmljZSc7XHJcblxyXG5cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFN0b3JhZ2VTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgcHJpdmF0ZSBodHRwIDogSHR0cENsaWVudCxcclxuICBwcml2YXRlIGFwaVVybFByb3ZpZGVyU2VydmljZTogQXBpVXJsUHJvdmlkZXJTZXJ2aWNlLFxyXG4gIHByaXZhdGUgZ2VuZXJpY1NlcnZpY2U6IEdlbmVyaWNTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgcHJpdmF0ZSBjdXJyZW50bHlEb3dubG9hZGluZzogRG93bmxvYWRbXSA9IFtdO1xyXG5cclxuICBwdWJsaWMgR2V0UHJvZ3Jlc3MoZmlsZTogc3RyaW5nKTogbnVtYmVye1xyXG4gICAgY29uc3QgRG93bmxvYWQgPSB0aGlzLmN1cnJlbnRseURvd25sb2FkaW5nLmZpbmQocCA9PiBwLmZpbGUgPT0gZmlsZSlcclxuICAgIHJldHVybiBEb3dubG9hZCA/IERvd25sb2FkLnByb2dyZXNzIDogMDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTdGFydERvd25sb2FkKGZpbGU6IHN0cmluZywgcGFyYW1zPzogYW55LCBwb3N0OiBib29sZWFuID0gZmFsc2UpOiBEb3dubG9hZCB7XHJcbiAgICBpZighdGhpcy5jdXJyZW50bHlEb3dubG9hZGluZy5maW5kKHAgPT4gcC5maWxlID09IGZpbGUpKXtcclxuICAgICAgY29uc3QgZG93bmxvYWQgPSBuZXcgRG93bmxvYWQoZmlsZSk7XHJcbiAgICAgIHRoaXMuY3VycmVudGx5RG93bmxvYWRpbmcucHVzaChkb3dubG9hZCk7XHJcbiAgICAgIHRoaXMuSGFuZGxlRG93bmxvYWQoZG93bmxvYWQsIHBhcmFtcywgcG9zdCk7XHJcbiAgICAgIHJldHVybiBkb3dubG9hZDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmN1cnJlbnRseURvd25sb2FkaW5nLmZpbmQocCA9PiBwLmZpbGUgPT0gZmlsZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIEhhbmRsZURvd25sb2FkKGRvd25sb2FkOiBEb3dubG9hZCwgcGFyYW1zPzogYW55LCBwb3N0OiBib29sZWFuID0gZmFsc2Upe1xyXG4gICAgdmFyIHJlcXVlc3Q6IE9ic2VydmFibGU8YW55PiA9IHRoaXMuR2V0RmlsZShkb3dubG9hZC5maWxlLCBwYXJhbXMsIHBvc3QpO1xyXG5cclxuICAgIGNvbnN0IHJlcXVlc3RQcm9nZXNzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xyXG4gICAgZG93bmxvYWQucmVxdWVzdFByb2dlc3MgPSByZXF1ZXN0UHJvZ2VzcztcclxuICAgIHJlcXVlc3Quc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuRG93bmxvYWRQcm9ncmVzcykgeyBcclxuICAgICAgICAgIGRvd25sb2FkLnByb2dyZXNzID0gZXZlbnQubG9hZGVkIC8gZXZlbnQudG90YWw7IFxyXG4gICAgICAgICAgcmVxdWVzdFByb2dlc3MubmV4dChkb3dubG9hZC5wcm9ncmVzcyk7XHJcbiAgICAgICAgfSBlbHNlIFxyXG4gICAgICAgIGlmIChldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlKSB7XHJcbiAgICAgICAgICBEb3dubG9hZEZpbGUoZXZlbnQsIGRvd25sb2FkLmZpbGUpO1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50bHlEb3dubG9hZGluZy5zcGxpY2UodGhpcy5jdXJyZW50bHlEb3dubG9hZGluZy5pbmRleE9mKGRvd25sb2FkKSwgMSk7XHJcbiAgICAgICAgICByZXF1ZXN0UHJvZ2Vzcy5jb21wbGV0ZSgpOyBcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoZXZlbnQuc3RhdHVzID09IDQwNCl7XHJcbiAgICAgICAgICB0aGlzLmdlbmVyaWNTZXJ2aWNlLlByZXNlbnRUb2FzdChcIkFycXVpdm8gbsOjbyBlbmNvbnRyYWRvIC8gVXJsIGludsOhbGlkYVwiKVxyXG4gICAgICAgICAgcmVxdWVzdFByb2dlc3MuZXJyb3IoZXZlbnQpOyBcclxuICAgICAgICAgIHJlcXVlc3RQcm9nZXNzLmNvbXBsZXRlKCk7IFxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRseURvd25sb2FkaW5nLnNwbGljZSh0aGlzLmN1cnJlbnRseURvd25sb2FkaW5nLmluZGV4T2YoZG93bmxvYWQpLCAxKVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiByZXF1ZXN0O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBTYW5pdGl6ZUZpbGVOYW1lKHY6IHN0cmluZyk6IHN0cmluZ3tcclxuICAgIHRyeXtcclxuICAgICAgdmFyIGZpbGVuYW1lRW5kOiBzdHJpbmcgID0gdi5zcGxpdCgnLycpLmF0KC0xKTtcclxuICAgICAgXHJcbiAgICAgIGlmKGZpbGVuYW1lRW5kLnNwbGl0KCcuJykubGVuZ3RoIDw9IDIpe1xyXG4gICAgICAgIHJldHVybiBmaWxlbmFtZUVuZDtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdmFyIGxzdCA9IGZpbGVuYW1lRW5kLnNwbGl0KCcuJyk7XHJcbiAgICAgICAgbHN0WzBdID0gJyc7XHJcbiAgICAgICAgcmV0dXJuIGxzdC5qb2luKCcuJykucmVwbGFjZSgnLicsICcnKTtcclxuICAgICAgfVxyXG4gICAgfWNhdGNoe1xyXG4gICAgICByZXR1cm4gdjtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBwdWJsaWMgR2V0RmlsZShmaWxlVXJsOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgcG9zdDogYm9vbGVhbiA9IGZhbHNlKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8QmxvYj4+IHtcclxuICAgIHZhciB1cmw6IHN0cmluZztcclxuICAgIGlmKGZpbGVVcmxbMF0gPT0gJy8nKXsgXHJcbiAgICAgIHVybCA9IGZpbGVVcmwuc2xpY2UoMSwgZmlsZVVybC5sZW5ndGggLSAxKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB1cmwgPSBgJHt0aGlzLmFwaVVybFByb3ZpZGVyU2VydmljZS5hcGlVcmx9JHtmaWxlVXJsfWA7XHJcbiAgICB9XHJcbiAgICB1cmwgPSBlbmNvZGVVUkkodXJsKS5yZXBsYWNlKC8jL2csICclMjMnKVxyXG5cclxuICAgIGlmKCFwb3N0KXtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsLCB7XHJcbiAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWUsXHJcbiAgICAgICAgb2JzZXJ2ZTogJ2V2ZW50cycsXHJcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYicsXHJcbiAgICAgICAgcGFyYW1zOiBwYXJhbXNcclxuICAgICAgfSk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHVybCwgcGFyYW1zLCB7XHJcbiAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWUsXHJcbiAgICAgICAgb2JzZXJ2ZTogJ2V2ZW50cycsXHJcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYidcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcGFyYW0gbHN0RmlsZXMgXHJcbiAgICogbGlzdGEgZGUgYXJxdWl2b3MgYSBzZXJlbSBiYWl4YWRvcyBcclxuICAgKiBAcGFyYW0gb25VcGRhdGUgXHJcbiAgICogZnVuY2FvIGNoYW1hZGEgYSBjYWRhIHByb2dyZXNzbyBkZSBkb3dubG9hZFxyXG4gICAqIEByZXR1cm5zIFxyXG4gICAqIGxpc3RhIGRlIHJlc3Bvc3RhcyBkb3MgYXJxdWl2b3MsIGNvbW8gcHJvbWlzZSwgcXVhbmRvIHRvZG9zIGVzdGl2ZXJlbSBjb21wbGV0b3Mgb3UgZGVyYW0gZXJybywgw6kgcmV0b3JuYWRhXHJcbiAgICovXHJcbiAgcHVibGljIGFzeW5jIEdldEJsb2JCYXRjaExpdmVSZXNwb25zZShsc3RGaWxlczogc3RyaW5nW10sIG9uVXBkYXRlOiAodG90YWxQcm9ncmVzczogbnVtYmVyLCBsc3RSZXNwb25zZT86IExpdmVSZXNwb25zZVtdLCBldmVudFR5cGU/OiBIdHRwRXZlbnRUeXBlKSA9PiB2b2lkKTogUHJvbWlzZTxMaXZlUmVzcG9uc2VbXT4ge1xyXG4gICAgaWYoIWxzdEZpbGVzIHx8IGxzdEZpbGVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBsc3Q6IExpdmVSZXNwb25zZVtdID0gbHN0RmlsZXMubWFwKHAgPT4gKHtcclxuICAgICAgcGF0aCAgICAgIDogcCxcclxuICAgICAgb2JzZXJ2YWJsZTogdGhpcy5HZXRGaWxlKHApLFxyXG4gICAgICBwcm9ncmVzcyAgOiAwLFxyXG4gICAgICBzdWNjZXNzICAgOiB1bmRlZmluZWQsXHJcbiAgICAgIGJsb2IgICAgICA6IHVuZGVmaW5lZFxyXG4gICAgfSkpO1xyXG5cclxuICAgIGNvbnN0IGlzQWxsQ29tcGxldGUgPSAoKSA9PiBsc3QuZXZlcnkob2JzID0+IG9icy5wcm9ncmVzcyA+PSAxKTtcclxuICAgIGNvbnN0IGdldFRvdGFsUHJvZ3Jlc3NBdmcgPSAoKSA9PiBsc3QucmVkdWNlKChhY2MsIG9icykgPT4gYWNjICsgb2JzLnByb2dyZXNzLCAwKSAvIGxzdC5sZW5ndGg7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPExpdmVSZXNwb25zZVtdPigocmVzb2x2ZSkgPT4ge1xyXG4gICAgICBmb3IgKGNvbnN0IG9icyBvZiBsc3QpIHtcclxuICAgICAgICBvYnMub2JzZXJ2YWJsZS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLkRvd25sb2FkUHJvZ3Jlc3MpIHtcclxuICAgICAgICAgICAgICBvYnMucHJvZ3Jlc3MgPSBldmVudC5sb2FkZWQgLyBldmVudC50b3RhbDtcclxuICAgICAgICAgICAgICBvblVwZGF0ZShnZXRUb3RhbFByb2dyZXNzQXZnKCksIGxzdCwgZXZlbnQudHlwZSk7XHJcbiAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuUmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICBvYnMuYmxvYiA9IG5ldyBCbG9iKFtldmVudC5ib2R5XSwgeyB0eXBlOiBldmVudC5ib2R5LnR5cGUgfSk7XHJcbiAgICAgICAgICAgICAgb2JzLnN1Y2Nlc3MgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIGlmKGlzQWxsQ29tcGxldGUoKSl7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKGxzdCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIG9uVXBkYXRlKGdldFRvdGFsUHJvZ3Jlc3NBdmcoKSwgbHN0LCBldmVudC50eXBlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIG9icy5zdWNjZXNzID0gZmFsc2U7XHJcbiAgICAgICAgICAgIG9icy5wcm9ncmVzcyA9IDE7XHJcbiAgICAgICAgICAgIG9uVXBkYXRlKGdldFRvdGFsUHJvZ3Jlc3NBdmcoKSwgbHN0KTtcclxuICAgICAgICAgICAgaWYoaXNBbGxDb21wbGV0ZSgpKXtcclxuICAgICAgICAgICAgICByZXNvbHZlKGxzdCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBHZXRCbG9iTGl2ZVJlc3BvbnNlKGZpbGU6IHN0cmluZywgb25VcGRhdGU/OiAocHJvZ3Jlc3M6IG51bWJlciwgcmVzcG9uc2U/OiBMaXZlUmVzcG9uc2UsIGV2ZW50VHlwZT86IEh0dHBFdmVudFR5cGUpID0+IHZvaWQpOiBQcm9taXNlPExpdmVSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLkdldEJsb2JCYXRjaExpdmVSZXNwb25zZShbZmlsZV0sICh0b3RhbFByb2dyZXNzLCBsc3RSZXNwb25zZSwgZXZlbnRUeXBlKSA9PiB7XHJcbiAgICAgIG9uVXBkYXRlPy4odG90YWxQcm9ncmVzcywgbHN0UmVzcG9uc2VbMF0sIGV2ZW50VHlwZSk7XHJcbiAgICB9KSlbMF07XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEdldEZpbGVSZXNwb25zZXtcclxuICBwYXRoOiBzdHJpbmc7XHJcbiAgYmxvYj86IEJsb2I7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGl2ZVJlc3BvbnNle1xyXG4gIHBhdGg6IHN0cmluZztcclxuICBvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxCbG9iPj47XHJcbiAgcHJvZ3Jlc3M6IG51bWJlcjtcclxuICBibG9iPzogQmxvYjtcclxuICBzdWNjZXNzPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIERvd25sb2FkIHtcclxuICByZXF1ZXN0UHJvZ2VzczogT2JzZXJ2YWJsZTxhbnk+O1xyXG4gIHByb2dyZXNzICAgICAgOiBudW1iZXIgPSAwLjAwMDAxO1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBmaWxlOiBzdHJpbmcpe31cclxufVxyXG5cclxuZnVuY3Rpb24gRG93bmxvYWRGaWxlKGRhdGE6IEh0dHBSZXNwb25zZTxCbG9iPiwgZmlsZVVybCkge1xyXG4gIGNvbnN0IGRvd25sb2FkZWRGaWxlID0gbmV3IEJsb2IoW2RhdGEuYm9keV0sIHsgdHlwZTogZGF0YS5ib2R5LnR5cGUgfSk7XHJcblxyXG4gIHZhciBmaWxlVVJMID0gVVJMLmNyZWF0ZU9iamVjdFVSTChkb3dubG9hZGVkRmlsZSk7XHJcbiAgY29uc3QgbGlua0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcclxuICBsaW5rRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIGZpbGVVUkwpO1xyXG4gIGxpbmtFbGVtZW50LnNldEF0dHJpYnV0ZShcInRhcmdldFwiLCBcIl9ibGFua1wiKTtcclxuICBsaW5rRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJkb3dubG9hZFwiLCBTdG9yYWdlU2VydmljZS5TYW5pdGl6ZUZpbGVOYW1lKGZpbGVVcmwpKTtcclxuXHJcbiAgbGV0IG1lID0gbmV3IE1vdXNlRXZlbnQoXCJjbGlja1wiLCB7XHJcbiAgICAgIHZpZXc6IHdpbmRvdyxcclxuICAgICAgYnViYmxlczogdHJ1ZSxcclxuICAgICAgY2FuY2VsYWJsZTogZmFsc2UsXHJcbiAgfSk7XHJcblxyXG4gIGxpbmtFbGVtZW50LmRpc3BhdGNoRXZlbnQobWUpO1xyXG59Il19
@@ -0,0 +1,5 @@
1
+ /*
2
+ * Public API Surface of ion-sapphire-framework
3
+ */
4
+ export * from './lib/index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgaW9uLXNhcHBoaXJlLWZyYW1ld29ya1xyXG4gKi9cclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2luZGV4JzsiXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FwcGhpcmUtaW9uLWZyYW1ld29yay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zYXBwaGlyZS1pb24tZnJhbWV3b3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=