@gnggln/ng-ui-system 1.0.0-alpha.2 → 1.0.0-alpha.21

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 (721) hide show
  1. package/accordion/entry-accordion.d.ts +4 -0
  2. package/accordion/index.d.ts +5 -0
  3. package/accordion/lib/components/accordion/accordion.component.d.ts +125 -0
  4. package/accordion/lib/components/accordion/accordion.types.d.ts +64 -0
  5. package/accordion/lib/components/accordion/index.d.ts +2 -0
  6. package/accordion/lib/core/types/index.d.ts +133 -0
  7. package/base-layout/entry-base-layout.d.ts +4 -0
  8. package/base-layout/index.d.ts +5 -0
  9. package/base-layout/lib/components/base-layout/base-layout.component.d.ts +108 -0
  10. package/base-layout/lib/components/base-layout/base-layout.types.d.ts +40 -0
  11. package/base-layout/lib/components/base-layout/index.d.ts +13 -0
  12. package/base-layout/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
  13. package/base-layout/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
  14. package/base-layout/lib/components/blackbox/blackbox.service.d.ts +144 -0
  15. package/base-layout/lib/components/blackbox/blackbox.types.d.ts +238 -0
  16. package/base-layout/lib/components/button/button-area.component.d.ts +93 -0
  17. package/base-layout/lib/components/button/button.component.d.ts +61 -0
  18. package/base-layout/lib/components/button/button.types.d.ts +75 -0
  19. package/base-layout/lib/components/page-header/breadcrumb.service.d.ts +96 -0
  20. package/base-layout/lib/components/page-header/page-header.component.d.ts +59 -0
  21. package/base-layout/lib/components/page-header/page-header.types.d.ts +96 -0
  22. package/base-layout/lib/core/types/index.d.ts +133 -0
  23. package/blackbox/entry-blackbox.d.ts +4 -0
  24. package/blackbox/index.d.ts +5 -0
  25. package/blackbox/lib/components/blackbox/blackbox-debugger.component.d.ts +80 -0
  26. package/blackbox/lib/components/blackbox/blackbox-debugger.service.d.ts +34 -0
  27. package/blackbox/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
  28. package/blackbox/lib/components/blackbox/blackbox-json-viewer.component.d.ts +18 -0
  29. package/blackbox/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
  30. package/blackbox/lib/components/blackbox/blackbox.interceptor.d.ts +38 -0
  31. package/blackbox/lib/components/blackbox/blackbox.service.d.ts +144 -0
  32. package/blackbox/lib/components/blackbox/blackbox.types.d.ts +238 -0
  33. package/blackbox/lib/components/blackbox/index.d.ts +23 -0
  34. package/blackbox/lib/components/blackbox/ui-track.directive.d.ts +20 -0
  35. package/blackbox/lib/components/button/button-area.component.d.ts +93 -0
  36. package/blackbox/lib/components/button/button.component.d.ts +61 -0
  37. package/blackbox/lib/components/button/button.types.d.ts +75 -0
  38. package/blackbox/lib/components/button/index.d.ts +15 -0
  39. package/blackbox/lib/components/modal/confirm-dialog.component.d.ts +46 -0
  40. package/blackbox/lib/components/modal/index.d.ts +4 -0
  41. package/blackbox/lib/components/modal/modal.component.d.ts +44 -0
  42. package/blackbox/lib/components/modal/modal.service.d.ts +93 -0
  43. package/blackbox/lib/components/modal/modal.types.d.ts +110 -0
  44. package/blackbox/lib/core/types/index.d.ts +133 -0
  45. package/button/entry-button.d.ts +4 -0
  46. package/button/index.d.ts +5 -0
  47. package/button/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
  48. package/button/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
  49. package/button/lib/components/blackbox/blackbox.service.d.ts +144 -0
  50. package/button/lib/components/blackbox/blackbox.types.d.ts +238 -0
  51. package/button/lib/components/button/button-area.component.d.ts +93 -0
  52. package/button/lib/components/button/button.component.d.ts +61 -0
  53. package/button/lib/components/button/button.types.d.ts +75 -0
  54. package/button/lib/components/button/index.d.ts +15 -0
  55. package/button/lib/core/types/index.d.ts +133 -0
  56. package/core/entry-core.d.ts +5 -0
  57. package/core/index.d.ts +5 -0
  58. package/core/lib/core/types/index.d.ts +133 -0
  59. package/core/lib/core/utils/index.d.ts +60 -0
  60. package/crud-table/entry-crud-table.d.ts +4 -0
  61. package/crud-table/index.d.ts +5 -0
  62. package/crud-table/lib/components/accordion/accordion.component.d.ts +125 -0
  63. package/crud-table/lib/components/accordion/accordion.types.d.ts +64 -0
  64. package/crud-table/lib/components/accordion/index.d.ts +2 -0
  65. package/crud-table/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
  66. package/crud-table/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
  67. package/crud-table/lib/components/blackbox/blackbox.service.d.ts +144 -0
  68. package/crud-table/lib/components/blackbox/blackbox.types.d.ts +238 -0
  69. package/crud-table/lib/components/button/button-area.component.d.ts +93 -0
  70. package/crud-table/lib/components/button/button.component.d.ts +61 -0
  71. package/crud-table/lib/components/button/button.types.d.ts +75 -0
  72. package/crud-table/lib/components/button/index.d.ts +15 -0
  73. package/crud-table/lib/components/crud-table/crud-table.component.d.ts +143 -0
  74. package/crud-table/lib/components/crud-table/crud-table.types.d.ts +207 -0
  75. package/crud-table/lib/components/crud-table/index.d.ts +15 -0
  76. package/crud-table/lib/components/form-builder/adapters/it-date-adapter.d.ts +32 -0
  77. package/crud-table/lib/components/form-builder/directives/currency-input.directive.d.ts +48 -0
  78. package/crud-table/lib/components/form-builder/form-builder.component.d.ts +279 -0
  79. package/crud-table/lib/components/form-builder/services/form-condition.service.d.ts +46 -0
  80. package/crud-table/lib/components/form-builder/services/form-error-state.matcher.d.ts +9 -0
  81. package/crud-table/lib/components/form-builder/services/form-field-error.service.d.ts +38 -0
  82. package/crud-table/lib/components/form-builder/services/form-validation.service.d.ts +63 -0
  83. package/crud-table/lib/components/form-builder/services/location.service.d.ts +83 -0
  84. package/crud-table/lib/components/form-builder/services/nominatim-geocoding.service.d.ts +37 -0
  85. package/crud-table/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.d.ts +31 -0
  86. package/crud-table/lib/components/form-builder/sub-components/file-input/file-input.component.d.ts +41 -0
  87. package/crud-table/lib/components/form-builder/sub-components/form-fields/form-number-field.component.d.ts +42 -0
  88. package/crud-table/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.d.ts +45 -0
  89. package/crud-table/lib/components/form-builder/sub-components/form-fields/form-select-field.component.d.ts +44 -0
  90. package/crud-table/lib/components/form-builder/sub-components/form-fields/form-text-field.component.d.ts +62 -0
  91. package/crud-table/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.d.ts +39 -0
  92. package/crud-table/lib/components/form-builder/sub-components/form-fields/index.d.ts +5 -0
  93. package/crud-table/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.d.ts +84 -0
  94. package/crud-table/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.d.ts +145 -0
  95. package/crud-table/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.d.ts +108 -0
  96. package/crud-table/lib/components/form-builder/types/condition.types.d.ts +51 -0
  97. package/crud-table/lib/components/form-builder/types/field.types.d.ts +330 -0
  98. package/crud-table/lib/components/form-builder/types/geocoded-location.types.d.ts +116 -0
  99. package/crud-table/lib/components/form-builder/types/schema.types.d.ts +304 -0
  100. package/crud-table/lib/components/form-builder/types/territoriale.types.d.ts +170 -0
  101. package/crud-table/lib/components/form-builder/types/validation.types.d.ts +179 -0
  102. package/crud-table/lib/components/modal/confirm-dialog.component.d.ts +46 -0
  103. package/crud-table/lib/components/modal/modal.service.d.ts +93 -0
  104. package/crud-table/lib/components/modal/modal.types.d.ts +110 -0
  105. package/crud-table/lib/core/logging/logger.config.d.ts +18 -0
  106. package/crud-table/lib/core/logging/logger.service.d.ts +75 -0
  107. package/crud-table/lib/core/logging/logger.types.d.ts +70 -0
  108. package/crud-table/lib/core/types/index.d.ts +133 -0
  109. package/esm2022/accordion/entry-accordion.mjs +5 -0
  110. package/esm2022/accordion/gnggln-ng-ui-system-accordion.mjs +5 -0
  111. package/esm2022/accordion/lib/components/accordion/accordion.component.mjs +398 -0
  112. package/esm2022/accordion/lib/components/accordion/accordion.types.mjs +6 -0
  113. package/esm2022/accordion/lib/components/accordion/index.mjs +2 -0
  114. package/esm2022/accordion/lib/core/types/index.mjs +6 -0
  115. package/esm2022/base-layout/entry-base-layout.mjs +5 -0
  116. package/esm2022/base-layout/gnggln-ng-ui-system-base-layout.mjs +5 -0
  117. package/esm2022/base-layout/lib/components/base-layout/base-layout.component.mjs +272 -0
  118. package/esm2022/base-layout/lib/components/base-layout/base-layout.types.mjs +6 -0
  119. package/esm2022/base-layout/lib/components/base-layout/index.mjs +14 -0
  120. package/esm2022/base-layout/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
  121. package/esm2022/base-layout/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
  122. package/esm2022/base-layout/lib/components/blackbox/blackbox.service.mjs +323 -0
  123. package/esm2022/base-layout/lib/components/blackbox/blackbox.types.mjs +25 -0
  124. package/esm2022/base-layout/lib/components/button/button-area.component.mjs +210 -0
  125. package/esm2022/base-layout/lib/components/button/button.component.mjs +180 -0
  126. package/esm2022/base-layout/lib/components/button/button.types.mjs +6 -0
  127. package/esm2022/base-layout/lib/components/page-header/breadcrumb.service.mjs +243 -0
  128. package/esm2022/base-layout/lib/components/page-header/page-header.component.mjs +243 -0
  129. package/esm2022/base-layout/lib/components/page-header/page-header.types.mjs +21 -0
  130. package/esm2022/base-layout/lib/core/types/index.mjs +6 -0
  131. package/esm2022/blackbox/entry-blackbox.mjs +5 -0
  132. package/esm2022/blackbox/gnggln-ng-ui-system-blackbox.mjs +5 -0
  133. package/esm2022/blackbox/lib/components/blackbox/blackbox-debugger.component.mjs +904 -0
  134. package/esm2022/blackbox/lib/components/blackbox/blackbox-debugger.service.mjs +51 -0
  135. package/esm2022/blackbox/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
  136. package/esm2022/blackbox/lib/components/blackbox/blackbox-json-viewer.component.mjs +66 -0
  137. package/esm2022/blackbox/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
  138. package/esm2022/blackbox/lib/components/blackbox/blackbox.interceptor.mjs +135 -0
  139. package/esm2022/blackbox/lib/components/blackbox/blackbox.service.mjs +323 -0
  140. package/esm2022/blackbox/lib/components/blackbox/blackbox.types.mjs +25 -0
  141. package/esm2022/blackbox/lib/components/blackbox/index.mjs +27 -0
  142. package/esm2022/blackbox/lib/components/blackbox/ui-track.directive.mjs +69 -0
  143. package/esm2022/blackbox/lib/components/button/button-area.component.mjs +210 -0
  144. package/esm2022/blackbox/lib/components/button/button.component.mjs +180 -0
  145. package/esm2022/blackbox/lib/components/button/button.types.mjs +6 -0
  146. package/esm2022/blackbox/lib/components/button/index.mjs +16 -0
  147. package/esm2022/blackbox/lib/components/modal/confirm-dialog.component.mjs +151 -0
  148. package/esm2022/blackbox/lib/components/modal/index.mjs +4 -0
  149. package/esm2022/blackbox/lib/components/modal/modal.component.mjs +139 -0
  150. package/esm2022/blackbox/lib/components/modal/modal.service.mjs +197 -0
  151. package/esm2022/blackbox/lib/components/modal/modal.types.mjs +6 -0
  152. package/esm2022/blackbox/lib/core/types/index.mjs +6 -0
  153. package/esm2022/button/entry-button.mjs +5 -0
  154. package/esm2022/button/gnggln-ng-ui-system-button.mjs +5 -0
  155. package/esm2022/button/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
  156. package/esm2022/button/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
  157. package/esm2022/button/lib/components/blackbox/blackbox.service.mjs +323 -0
  158. package/esm2022/button/lib/components/blackbox/blackbox.types.mjs +25 -0
  159. package/esm2022/button/lib/components/button/button-area.component.mjs +210 -0
  160. package/esm2022/button/lib/components/button/button.component.mjs +180 -0
  161. package/esm2022/button/lib/components/button/button.types.mjs +6 -0
  162. package/esm2022/button/lib/components/button/index.mjs +16 -0
  163. package/esm2022/button/lib/core/types/index.mjs +6 -0
  164. package/esm2022/core/entry-core.mjs +6 -0
  165. package/esm2022/core/gnggln-ng-ui-system-core.mjs +5 -0
  166. package/esm2022/core/lib/core/types/index.mjs +6 -0
  167. package/esm2022/core/lib/core/utils/index.mjs +102 -0
  168. package/esm2022/crud-table/entry-crud-table.mjs +5 -0
  169. package/esm2022/crud-table/gnggln-ng-ui-system-crud-table.mjs +5 -0
  170. package/esm2022/crud-table/lib/components/accordion/accordion.component.mjs +398 -0
  171. package/esm2022/crud-table/lib/components/accordion/accordion.types.mjs +6 -0
  172. package/esm2022/crud-table/lib/components/accordion/index.mjs +2 -0
  173. package/esm2022/crud-table/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
  174. package/esm2022/crud-table/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
  175. package/esm2022/crud-table/lib/components/blackbox/blackbox.service.mjs +323 -0
  176. package/esm2022/crud-table/lib/components/blackbox/blackbox.types.mjs +25 -0
  177. package/esm2022/crud-table/lib/components/button/button-area.component.mjs +210 -0
  178. package/esm2022/crud-table/lib/components/button/button.component.mjs +180 -0
  179. package/esm2022/crud-table/lib/components/button/button.types.mjs +6 -0
  180. package/esm2022/crud-table/lib/components/button/index.mjs +16 -0
  181. package/esm2022/crud-table/lib/components/crud-table/crud-table.component.mjs +789 -0
  182. package/esm2022/crud-table/lib/components/crud-table/crud-table.types.mjs +6 -0
  183. package/esm2022/crud-table/lib/components/crud-table/index.mjs +16 -0
  184. package/esm2022/crud-table/lib/components/form-builder/adapters/it-date-adapter.mjs +82 -0
  185. package/esm2022/crud-table/lib/components/form-builder/directives/currency-input.directive.mjs +184 -0
  186. package/esm2022/crud-table/lib/components/form-builder/form-builder.component.mjs +1351 -0
  187. package/esm2022/crud-table/lib/components/form-builder/services/form-condition.service.mjs +132 -0
  188. package/esm2022/crud-table/lib/components/form-builder/services/form-error-state.matcher.mjs +10 -0
  189. package/esm2022/crud-table/lib/components/form-builder/services/form-field-error.service.mjs +103 -0
  190. package/esm2022/crud-table/lib/components/form-builder/services/form-validation.service.mjs +381 -0
  191. package/esm2022/crud-table/lib/components/form-builder/services/location.service.mjs +141 -0
  192. package/esm2022/crud-table/lib/components/form-builder/services/nominatim-geocoding.service.mjs +120 -0
  193. package/esm2022/crud-table/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.mjs +190 -0
  194. package/esm2022/crud-table/lib/components/form-builder/sub-components/file-input/file-input.component.mjs +310 -0
  195. package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-number-field.component.mjs +113 -0
  196. package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.mjs +105 -0
  197. package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-select-field.component.mjs +126 -0
  198. package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-text-field.component.mjs +147 -0
  199. package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.mjs +99 -0
  200. package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/index.mjs +6 -0
  201. package/esm2022/crud-table/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.mjs +322 -0
  202. package/esm2022/crud-table/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.mjs +648 -0
  203. package/esm2022/crud-table/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.mjs +432 -0
  204. package/esm2022/crud-table/lib/components/form-builder/types/condition.types.mjs +6 -0
  205. package/esm2022/crud-table/lib/components/form-builder/types/field.types.mjs +6 -0
  206. package/esm2022/crud-table/lib/components/form-builder/types/geocoded-location.types.mjs +6 -0
  207. package/esm2022/crud-table/lib/components/form-builder/types/schema.types.mjs +6 -0
  208. package/esm2022/crud-table/lib/components/form-builder/types/territoriale.types.mjs +6 -0
  209. package/esm2022/crud-table/lib/components/form-builder/types/validation.types.mjs +10 -0
  210. package/esm2022/crud-table/lib/components/modal/confirm-dialog.component.mjs +151 -0
  211. package/esm2022/crud-table/lib/components/modal/modal.service.mjs +197 -0
  212. package/esm2022/crud-table/lib/components/modal/modal.types.mjs +6 -0
  213. package/esm2022/crud-table/lib/core/logging/logger.config.mjs +18 -0
  214. package/esm2022/crud-table/lib/core/logging/logger.service.mjs +295 -0
  215. package/esm2022/crud-table/lib/core/logging/logger.types.mjs +7 -0
  216. package/esm2022/crud-table/lib/core/types/index.mjs +6 -0
  217. package/esm2022/crud-table/lib/sources/location-data.opt.json +8942 -0
  218. package/esm2022/crud-table/lib/sources/nazioni.opt.json +215 -0
  219. package/esm2022/form-builder/entry-form-builder.mjs +5 -0
  220. package/esm2022/form-builder/gnggln-ng-ui-system-form-builder.mjs +5 -0
  221. package/esm2022/form-builder/lib/components/accordion/accordion.component.mjs +398 -0
  222. package/esm2022/form-builder/lib/components/accordion/accordion.types.mjs +6 -0
  223. package/esm2022/form-builder/lib/components/accordion/index.mjs +2 -0
  224. package/esm2022/form-builder/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
  225. package/esm2022/form-builder/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
  226. package/esm2022/form-builder/lib/components/blackbox/blackbox.service.mjs +323 -0
  227. package/esm2022/form-builder/lib/components/blackbox/blackbox.types.mjs +25 -0
  228. package/esm2022/form-builder/lib/components/button/button-area.component.mjs +210 -0
  229. package/esm2022/form-builder/lib/components/button/button.component.mjs +180 -0
  230. package/esm2022/form-builder/lib/components/button/button.types.mjs +6 -0
  231. package/esm2022/form-builder/lib/components/button/index.mjs +16 -0
  232. package/esm2022/form-builder/lib/components/form-builder/adapters/it-date-adapter.mjs +82 -0
  233. package/esm2022/form-builder/lib/components/form-builder/directives/currency-input.directive.mjs +184 -0
  234. package/esm2022/form-builder/lib/components/form-builder/form-builder.component.mjs +1351 -0
  235. package/esm2022/form-builder/lib/components/form-builder/form-wizard.component.mjs +1064 -0
  236. package/esm2022/form-builder/lib/components/form-builder/index.mjs +24 -0
  237. package/esm2022/form-builder/lib/components/form-builder/services/form-condition.service.mjs +132 -0
  238. package/esm2022/form-builder/lib/components/form-builder/services/form-error-state.matcher.mjs +10 -0
  239. package/esm2022/form-builder/lib/components/form-builder/services/form-field-error.service.mjs +103 -0
  240. package/esm2022/form-builder/lib/components/form-builder/services/form-validation.service.mjs +381 -0
  241. package/esm2022/form-builder/lib/components/form-builder/services/location.service.mjs +141 -0
  242. package/esm2022/form-builder/lib/components/form-builder/services/nominatim-geocoding.service.mjs +120 -0
  243. package/esm2022/form-builder/lib/components/form-builder/services/wizard-sync.service.mjs +84 -0
  244. package/esm2022/form-builder/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.mjs +190 -0
  245. package/esm2022/form-builder/lib/components/form-builder/sub-components/file-input/file-input.component.mjs +310 -0
  246. package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-number-field.component.mjs +113 -0
  247. package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.mjs +105 -0
  248. package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-select-field.component.mjs +126 -0
  249. package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-text-field.component.mjs +147 -0
  250. package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.mjs +99 -0
  251. package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/index.mjs +6 -0
  252. package/esm2022/form-builder/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.mjs +322 -0
  253. package/esm2022/form-builder/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.mjs +648 -0
  254. package/esm2022/form-builder/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.mjs +432 -0
  255. package/esm2022/form-builder/lib/components/form-builder/types/condition.types.mjs +6 -0
  256. package/esm2022/form-builder/lib/components/form-builder/types/field.types.mjs +6 -0
  257. package/esm2022/form-builder/lib/components/form-builder/types/geocoded-location.types.mjs +6 -0
  258. package/esm2022/form-builder/lib/components/form-builder/types/index.mjs +3 -0
  259. package/esm2022/form-builder/lib/components/form-builder/types/schema.types.mjs +6 -0
  260. package/esm2022/form-builder/lib/components/form-builder/types/territoriale.types.mjs +6 -0
  261. package/esm2022/form-builder/lib/components/form-builder/types/validation.types.mjs +10 -0
  262. package/esm2022/form-builder/lib/core/logging/logger.config.mjs +18 -0
  263. package/esm2022/form-builder/lib/core/logging/logger.service.mjs +295 -0
  264. package/esm2022/form-builder/lib/core/logging/logger.types.mjs +7 -0
  265. package/esm2022/form-builder/lib/core/types/index.mjs +6 -0
  266. package/esm2022/form-builder/lib/sources/location-data.opt.json +8942 -0
  267. package/esm2022/form-builder/lib/sources/nazioni.opt.json +215 -0
  268. package/esm2022/form-builder-editor/entry-form-builder-editor.mjs +5 -0
  269. package/esm2022/form-builder-editor/gnggln-ng-ui-system-form-builder-editor.mjs +5 -0
  270. package/esm2022/form-builder-editor/lib/components/accordion/accordion.component.mjs +398 -0
  271. package/esm2022/form-builder-editor/lib/components/accordion/accordion.types.mjs +6 -0
  272. package/esm2022/form-builder-editor/lib/components/accordion/index.mjs +2 -0
  273. package/esm2022/form-builder-editor/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
  274. package/esm2022/form-builder-editor/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
  275. package/esm2022/form-builder-editor/lib/components/blackbox/blackbox.service.mjs +323 -0
  276. package/esm2022/form-builder-editor/lib/components/blackbox/blackbox.types.mjs +25 -0
  277. package/esm2022/form-builder-editor/lib/components/button/button-area.component.mjs +210 -0
  278. package/esm2022/form-builder-editor/lib/components/button/button.component.mjs +180 -0
  279. package/esm2022/form-builder-editor/lib/components/button/button.types.mjs +6 -0
  280. package/esm2022/form-builder-editor/lib/components/button/index.mjs +16 -0
  281. package/esm2022/form-builder-editor/lib/components/form-builder/adapters/it-date-adapter.mjs +82 -0
  282. package/esm2022/form-builder-editor/lib/components/form-builder/directives/currency-input.directive.mjs +184 -0
  283. package/esm2022/form-builder-editor/lib/components/form-builder/form-builder.component.mjs +1351 -0
  284. package/esm2022/form-builder-editor/lib/components/form-builder/services/form-condition.service.mjs +132 -0
  285. package/esm2022/form-builder-editor/lib/components/form-builder/services/form-error-state.matcher.mjs +10 -0
  286. package/esm2022/form-builder-editor/lib/components/form-builder/services/form-field-error.service.mjs +103 -0
  287. package/esm2022/form-builder-editor/lib/components/form-builder/services/form-validation.service.mjs +381 -0
  288. package/esm2022/form-builder-editor/lib/components/form-builder/services/location.service.mjs +141 -0
  289. package/esm2022/form-builder-editor/lib/components/form-builder/services/nominatim-geocoding.service.mjs +120 -0
  290. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.mjs +190 -0
  291. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/file-input/file-input.component.mjs +310 -0
  292. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-number-field.component.mjs +113 -0
  293. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.mjs +105 -0
  294. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-select-field.component.mjs +126 -0
  295. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-text-field.component.mjs +147 -0
  296. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.mjs +99 -0
  297. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/index.mjs +6 -0
  298. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.mjs +322 -0
  299. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.mjs +648 -0
  300. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.mjs +432 -0
  301. package/esm2022/form-builder-editor/lib/components/form-builder/types/condition.types.mjs +6 -0
  302. package/esm2022/form-builder-editor/lib/components/form-builder/types/field.types.mjs +6 -0
  303. package/esm2022/form-builder-editor/lib/components/form-builder/types/geocoded-location.types.mjs +6 -0
  304. package/esm2022/form-builder-editor/lib/components/form-builder/types/index.mjs +3 -0
  305. package/esm2022/form-builder-editor/lib/components/form-builder/types/schema.types.mjs +6 -0
  306. package/esm2022/form-builder-editor/lib/components/form-builder/types/territoriale.types.mjs +6 -0
  307. package/esm2022/form-builder-editor/lib/components/form-builder/types/validation.types.mjs +10 -0
  308. package/esm2022/form-builder-editor/lib/components/form-builder-editor/form-builder-editor.component.mjs +730 -0
  309. package/esm2022/form-builder-editor/lib/components/form-builder-editor/form-builder-editor.service.mjs +56 -0
  310. package/esm2022/form-builder-editor/lib/components/form-builder-editor/index.mjs +23 -0
  311. package/esm2022/form-builder-editor/lib/components/form-builder-editor/presets/editor-presets.mjs +395 -0
  312. package/esm2022/form-builder-editor/lib/components/form-builder-editor/services/editor-persistence.service.mjs +190 -0
  313. package/esm2022/form-builder-editor/lib/components/form-builder-editor/services/editor-state.service.mjs +324 -0
  314. package/esm2022/form-builder-editor/lib/components/form-builder-editor/services/field-factory.service.mjs +188 -0
  315. package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/condition-editor/condition-editor.component.mjs +667 -0
  316. package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/editor-toolbar/editor-toolbar.component.mjs +317 -0
  317. package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/field-config-panel/field-config-panel.component.mjs +611 -0
  318. package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/field-palette/field-palette.component.mjs +267 -0
  319. package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/form-values-panel/form-values-panel.component.mjs +276 -0
  320. package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/options-editor/options-editor.component.mjs +323 -0
  321. package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/preview-container/preview-container.component.mjs +238 -0
  322. package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/section-editor/section-editor.component.mjs +473 -0
  323. package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/validation-editor/validation-editor.component.mjs +473 -0
  324. package/esm2022/form-builder-editor/lib/components/form-builder-editor/types/editor.types.mjs +6 -0
  325. package/esm2022/form-builder-editor/lib/components/modal/confirm-dialog.component.mjs +151 -0
  326. package/esm2022/form-builder-editor/lib/components/modal/index.mjs +4 -0
  327. package/esm2022/form-builder-editor/lib/components/modal/modal.component.mjs +139 -0
  328. package/esm2022/form-builder-editor/lib/components/modal/modal.service.mjs +197 -0
  329. package/esm2022/form-builder-editor/lib/components/modal/modal.types.mjs +6 -0
  330. package/esm2022/form-builder-editor/lib/core/logging/logger.config.mjs +18 -0
  331. package/esm2022/form-builder-editor/lib/core/logging/logger.service.mjs +295 -0
  332. package/esm2022/form-builder-editor/lib/core/logging/logger.types.mjs +7 -0
  333. package/esm2022/form-builder-editor/lib/core/types/index.mjs +6 -0
  334. package/esm2022/form-builder-editor/lib/sources/location-data.opt.json +8942 -0
  335. package/esm2022/form-builder-editor/lib/sources/nazioni.opt.json +215 -0
  336. package/esm2022/http/entry-http.mjs +5 -0
  337. package/esm2022/http/gnggln-ng-ui-system-http.mjs +5 -0
  338. package/esm2022/http/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
  339. package/esm2022/http/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
  340. package/esm2022/http/lib/components/blackbox/blackbox.service.mjs +323 -0
  341. package/esm2022/http/lib/components/blackbox/blackbox.types.mjs +25 -0
  342. package/esm2022/http/lib/components/http/http-message.handler.mjs +143 -0
  343. package/esm2022/http/lib/components/http/http.service.mjs +228 -0
  344. package/esm2022/http/lib/components/http/http.tokens.mjs +29 -0
  345. package/esm2022/http/lib/components/http/http.types.mjs +6 -0
  346. package/esm2022/http/lib/components/http/index.mjs +19 -0
  347. package/esm2022/http/lib/components/layout-builder/layout-builder.types.mjs +9 -0
  348. package/esm2022/http/lib/components/layout-builder/layout.service.mjs +239 -0
  349. package/esm2022/http/lib/components/toast/toast-container.component.mjs +80 -0
  350. package/esm2022/http/lib/components/toast/toast.component.mjs +151 -0
  351. package/esm2022/http/lib/components/toast/toast.service.mjs +156 -0
  352. package/esm2022/http/lib/components/toast/toast.types.mjs +12 -0
  353. package/esm2022/http/lib/core/types/index.mjs +6 -0
  354. package/esm2022/http/lib/core/utils/index.mjs +102 -0
  355. package/esm2022/layout-builder/entry-layout-builder.mjs +5 -0
  356. package/esm2022/layout-builder/gnggln-ng-ui-system-layout-builder.mjs +5 -0
  357. package/esm2022/layout-builder/lib/components/layout-builder/index.mjs +18 -0
  358. package/esm2022/layout-builder/lib/components/layout-builder/layout-builder.component.mjs +1804 -0
  359. package/esm2022/layout-builder/lib/components/layout-builder/layout-builder.types.mjs +9 -0
  360. package/esm2022/layout-builder/lib/components/layout-builder/layout.service.mjs +239 -0
  361. package/esm2022/layout-builder/lib/core/types/index.mjs +6 -0
  362. package/esm2022/lib/components/accordion/accordion.component.mjs +106 -61
  363. package/esm2022/lib/components/accordion/accordion.types.mjs +1 -1
  364. package/esm2022/lib/components/base-layout/base-layout.component.mjs +88 -34
  365. package/esm2022/lib/components/base-layout/base-layout.types.mjs +1 -1
  366. package/esm2022/lib/components/base-layout/index.mjs +1 -1
  367. package/esm2022/lib/components/blackbox/blackbox-debugger.component.mjs +904 -0
  368. package/esm2022/lib/components/blackbox/blackbox-debugger.service.mjs +51 -0
  369. package/esm2022/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
  370. package/esm2022/lib/components/blackbox/blackbox-json-viewer.component.mjs +66 -0
  371. package/esm2022/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
  372. package/esm2022/lib/components/blackbox/blackbox.interceptor.mjs +135 -0
  373. package/esm2022/lib/components/blackbox/blackbox.service.mjs +323 -0
  374. package/esm2022/lib/components/blackbox/blackbox.types.mjs +25 -0
  375. package/esm2022/lib/components/blackbox/index.mjs +27 -0
  376. package/esm2022/lib/components/blackbox/ui-track.directive.mjs +69 -0
  377. package/esm2022/lib/components/button/button-area.component.mjs +16 -2
  378. package/esm2022/lib/components/button/button.component.mjs +23 -7
  379. package/esm2022/lib/components/button/button.types.mjs +1 -1
  380. package/esm2022/lib/components/crud-table/crud-table.component.mjs +14 -14
  381. package/esm2022/lib/components/form-builder/form-builder.component.mjs +710 -183
  382. package/esm2022/lib/components/form-builder/form-wizard.component.mjs +789 -235
  383. package/esm2022/lib/components/form-builder/index.mjs +7 -2
  384. package/esm2022/lib/components/form-builder/services/form-error-state.matcher.mjs +10 -0
  385. package/esm2022/lib/components/form-builder/services/form-field-error.service.mjs +103 -0
  386. package/esm2022/lib/components/form-builder/services/location.service.mjs +4 -3
  387. package/esm2022/lib/components/form-builder/services/nominatim-geocoding.service.mjs +120 -0
  388. package/esm2022/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.mjs +142 -113
  389. package/esm2022/lib/components/form-builder/sub-components/form-fields/form-number-field.component.mjs +113 -0
  390. package/esm2022/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.mjs +105 -0
  391. package/esm2022/lib/components/form-builder/sub-components/form-fields/form-select-field.component.mjs +126 -0
  392. package/esm2022/lib/components/form-builder/sub-components/form-fields/form-text-field.component.mjs +147 -0
  393. package/esm2022/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.mjs +99 -0
  394. package/esm2022/lib/components/form-builder/sub-components/form-fields/index.mjs +6 -0
  395. package/esm2022/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.mjs +322 -0
  396. package/esm2022/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.mjs +3 -3
  397. package/esm2022/lib/components/form-builder/types/field.types.mjs +1 -1
  398. package/esm2022/lib/components/form-builder/types/geocoded-location.types.mjs +6 -0
  399. package/esm2022/lib/components/form-builder/types/index.mjs +3 -2
  400. package/esm2022/lib/components/form-builder/types/schema.types.mjs +1 -1
  401. package/esm2022/lib/components/form-builder/types/validation.types.mjs +6 -2
  402. package/esm2022/lib/components/form-builder-editor/form-builder-editor.component.mjs +3 -3
  403. package/esm2022/lib/components/form-builder-editor/index.mjs +3 -1
  404. package/esm2022/lib/components/form-builder-editor/presets/editor-presets.mjs +395 -0
  405. package/esm2022/lib/components/form-builder-editor/sub-components/preview-container/preview-container.component.mjs +2 -2
  406. package/esm2022/lib/components/form-builder-editor/sub-components/section-editor/section-editor.component.mjs +2 -1
  407. package/esm2022/lib/components/http/http-message.handler.mjs +143 -0
  408. package/esm2022/lib/components/http/http.service.mjs +228 -0
  409. package/esm2022/lib/components/http/http.tokens.mjs +29 -0
  410. package/esm2022/lib/components/http/http.types.mjs +6 -0
  411. package/esm2022/lib/components/http/index.mjs +19 -0
  412. package/esm2022/lib/components/layout-builder/layout-builder.component.mjs +27 -15
  413. package/esm2022/lib/components/modal/confirm-dialog.component.mjs +3 -3
  414. package/esm2022/lib/components/modal/modal.service.mjs +5 -2
  415. package/esm2022/lib/components/page-header/breadcrumb.service.mjs +5 -4
  416. package/esm2022/lib/components/table/paginated-table.component.mjs +17 -3
  417. package/esm2022/lib/components/table/table.types.mjs +1 -1
  418. package/esm2022/lib/components/toast/index.mjs +18 -0
  419. package/esm2022/lib/components/toast/toast-container.component.mjs +80 -0
  420. package/esm2022/lib/components/toast/toast.component.mjs +151 -0
  421. package/esm2022/lib/components/toast/toast.service.mjs +156 -0
  422. package/esm2022/lib/components/toast/toast.types.mjs +12 -0
  423. package/esm2022/lib/core/logging/index.mjs +10 -0
  424. package/esm2022/lib/core/logging/logger.config.mjs +18 -0
  425. package/esm2022/lib/core/logging/logger.service.mjs +295 -0
  426. package/esm2022/lib/core/logging/logger.types.mjs +7 -0
  427. package/esm2022/lib/core/types/index.mjs +1 -1
  428. package/esm2022/lib/core/utils/index.mjs +50 -1
  429. package/esm2022/lib/version/ng-ui-system-version.mjs +12 -0
  430. package/esm2022/modal/entry-modal.mjs +5 -0
  431. package/esm2022/modal/gnggln-ng-ui-system-modal.mjs +5 -0
  432. package/esm2022/modal/lib/components/button/button.component.mjs +180 -0
  433. package/esm2022/modal/lib/components/button/button.types.mjs +6 -0
  434. package/esm2022/modal/lib/components/modal/confirm-dialog.component.mjs +151 -0
  435. package/esm2022/modal/lib/components/modal/index.mjs +4 -0
  436. package/esm2022/modal/lib/components/modal/modal.component.mjs +139 -0
  437. package/esm2022/modal/lib/components/modal/modal.service.mjs +197 -0
  438. package/esm2022/modal/lib/components/modal/modal.types.mjs +6 -0
  439. package/esm2022/modal/lib/core/types/index.mjs +6 -0
  440. package/esm2022/page-header/entry-page-header.mjs +5 -0
  441. package/esm2022/page-header/gnggln-ng-ui-system-page-header.mjs +5 -0
  442. package/esm2022/page-header/lib/components/page-header/breadcrumb.service.mjs +243 -0
  443. package/esm2022/page-header/lib/components/page-header/index.mjs +20 -0
  444. package/esm2022/page-header/lib/components/page-header/page-header.component.mjs +243 -0
  445. package/esm2022/page-header/lib/components/page-header/page-header.types.mjs +21 -0
  446. package/esm2022/public-api.mjs +17 -8
  447. package/esm2022/table/entry-table.mjs +5 -0
  448. package/esm2022/table/gnggln-ng-ui-system-table.mjs +5 -0
  449. package/esm2022/table/lib/components/table/index.mjs +2 -0
  450. package/esm2022/table/lib/components/table/paginated-table.component.mjs +421 -0
  451. package/esm2022/table/lib/components/table/table.types.mjs +6 -0
  452. package/esm2022/table/lib/core/utils/index.mjs +102 -0
  453. package/esm2022/toast/entry-toast.mjs +5 -0
  454. package/esm2022/toast/gnggln-ng-ui-system-toast.mjs +5 -0
  455. package/esm2022/toast/lib/components/toast/index.mjs +18 -0
  456. package/esm2022/toast/lib/components/toast/toast-container.component.mjs +80 -0
  457. package/esm2022/toast/lib/components/toast/toast.component.mjs +151 -0
  458. package/esm2022/toast/lib/components/toast/toast.service.mjs +156 -0
  459. package/esm2022/toast/lib/components/toast/toast.types.mjs +12 -0
  460. package/esm2022/toast/lib/core/types/index.mjs +6 -0
  461. package/esm2022/toast/lib/core/utils/index.mjs +102 -0
  462. package/fesm2022/gnggln-ng-ui-system-accordion.mjs +409 -0
  463. package/fesm2022/gnggln-ng-ui-system-accordion.mjs.map +1 -0
  464. package/fesm2022/gnggln-ng-ui-system-base-layout.mjs +1905 -0
  465. package/fesm2022/gnggln-ng-ui-system-base-layout.mjs.map +1 -0
  466. package/fesm2022/gnggln-ng-ui-system-blackbox.mjs +2829 -0
  467. package/fesm2022/gnggln-ng-ui-system-blackbox.mjs.map +1 -0
  468. package/fesm2022/gnggln-ng-ui-system-button.mjs +1148 -0
  469. package/fesm2022/gnggln-ng-ui-system-button.mjs.map +1 -0
  470. package/fesm2022/gnggln-ng-ui-system-core.mjs +117 -0
  471. package/fesm2022/gnggln-ng-ui-system-core.mjs.map +1 -0
  472. package/fesm2022/gnggln-ng-ui-system-crud-table.mjs +49600 -0
  473. package/fesm2022/gnggln-ng-ui-system-crud-table.mjs.map +1 -0
  474. package/fesm2022/gnggln-ng-ui-system-form-builder-editor.mjs +54332 -0
  475. package/fesm2022/gnggln-ng-ui-system-form-builder-editor.mjs.map +1 -0
  476. package/fesm2022/gnggln-ng-ui-system-form-builder.mjs +49609 -0
  477. package/fesm2022/gnggln-ng-ui-system-form-builder.mjs.map +1 -0
  478. package/fesm2022/gnggln-ng-ui-system-http.mjs +1878 -0
  479. package/fesm2022/gnggln-ng-ui-system-http.mjs.map +1 -0
  480. package/fesm2022/gnggln-ng-ui-system-layout-builder.mjs +2064 -0
  481. package/fesm2022/gnggln-ng-ui-system-layout-builder.mjs.map +1 -0
  482. package/fesm2022/gnggln-ng-ui-system-modal.mjs +664 -0
  483. package/fesm2022/gnggln-ng-ui-system-modal.mjs.map +1 -0
  484. package/fesm2022/gnggln-ng-ui-system-page-header.mjs +526 -0
  485. package/fesm2022/gnggln-ng-ui-system-page-header.mjs.map +1 -0
  486. package/fesm2022/gnggln-ng-ui-system-table.mjs +533 -0
  487. package/fesm2022/gnggln-ng-ui-system-table.mjs.map +1 -0
  488. package/fesm2022/gnggln-ng-ui-system-toast.mjs +516 -0
  489. package/fesm2022/gnggln-ng-ui-system-toast.mjs.map +1 -0
  490. package/fesm2022/gnggln-ng-ui-system.mjs +10068 -4234
  491. package/fesm2022/gnggln-ng-ui-system.mjs.map +1 -1
  492. package/form-builder/entry-form-builder.d.ts +4 -0
  493. package/form-builder/index.d.ts +5 -0
  494. package/form-builder/lib/components/accordion/accordion.component.d.ts +125 -0
  495. package/form-builder/lib/components/accordion/accordion.types.d.ts +64 -0
  496. package/form-builder/lib/components/accordion/index.d.ts +2 -0
  497. package/form-builder/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
  498. package/form-builder/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
  499. package/form-builder/lib/components/blackbox/blackbox.service.d.ts +144 -0
  500. package/form-builder/lib/components/blackbox/blackbox.types.d.ts +238 -0
  501. package/form-builder/lib/components/button/button-area.component.d.ts +93 -0
  502. package/form-builder/lib/components/button/button.component.d.ts +61 -0
  503. package/form-builder/lib/components/button/button.types.d.ts +75 -0
  504. package/form-builder/lib/components/button/index.d.ts +15 -0
  505. package/form-builder/lib/components/form-builder/adapters/it-date-adapter.d.ts +32 -0
  506. package/form-builder/lib/components/form-builder/directives/currency-input.directive.d.ts +48 -0
  507. package/form-builder/lib/components/form-builder/form-builder.component.d.ts +279 -0
  508. package/form-builder/lib/components/form-builder/form-wizard.component.d.ts +172 -0
  509. package/form-builder/lib/components/form-builder/index.d.ts +19 -0
  510. package/form-builder/lib/components/form-builder/services/form-condition.service.d.ts +46 -0
  511. package/form-builder/lib/components/form-builder/services/form-error-state.matcher.d.ts +9 -0
  512. package/form-builder/lib/components/form-builder/services/form-field-error.service.d.ts +38 -0
  513. package/form-builder/lib/components/form-builder/services/form-validation.service.d.ts +63 -0
  514. package/form-builder/lib/components/form-builder/services/location.service.d.ts +83 -0
  515. package/form-builder/lib/components/form-builder/services/nominatim-geocoding.service.d.ts +37 -0
  516. package/form-builder/lib/components/form-builder/services/wizard-sync.service.d.ts +63 -0
  517. package/form-builder/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.d.ts +31 -0
  518. package/form-builder/lib/components/form-builder/sub-components/file-input/file-input.component.d.ts +41 -0
  519. package/form-builder/lib/components/form-builder/sub-components/form-fields/form-number-field.component.d.ts +42 -0
  520. package/form-builder/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.d.ts +45 -0
  521. package/form-builder/lib/components/form-builder/sub-components/form-fields/form-select-field.component.d.ts +44 -0
  522. package/form-builder/lib/components/form-builder/sub-components/form-fields/form-text-field.component.d.ts +62 -0
  523. package/form-builder/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.d.ts +39 -0
  524. package/form-builder/lib/components/form-builder/sub-components/form-fields/index.d.ts +5 -0
  525. package/form-builder/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.d.ts +84 -0
  526. package/form-builder/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.d.ts +145 -0
  527. package/form-builder/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.d.ts +108 -0
  528. package/form-builder/lib/components/form-builder/types/condition.types.d.ts +51 -0
  529. package/form-builder/lib/components/form-builder/types/field.types.d.ts +330 -0
  530. package/form-builder/lib/components/form-builder/types/geocoded-location.types.d.ts +116 -0
  531. package/form-builder/lib/components/form-builder/types/index.d.ts +6 -0
  532. package/form-builder/lib/components/form-builder/types/schema.types.d.ts +304 -0
  533. package/form-builder/lib/components/form-builder/types/territoriale.types.d.ts +170 -0
  534. package/form-builder/lib/components/form-builder/types/validation.types.d.ts +179 -0
  535. package/form-builder/lib/core/logging/logger.config.d.ts +18 -0
  536. package/form-builder/lib/core/logging/logger.service.d.ts +75 -0
  537. package/form-builder/lib/core/logging/logger.types.d.ts +70 -0
  538. package/form-builder/lib/core/types/index.d.ts +133 -0
  539. package/form-builder-editor/entry-form-builder-editor.d.ts +4 -0
  540. package/form-builder-editor/index.d.ts +5 -0
  541. package/form-builder-editor/lib/components/accordion/accordion.component.d.ts +125 -0
  542. package/form-builder-editor/lib/components/accordion/accordion.types.d.ts +64 -0
  543. package/form-builder-editor/lib/components/accordion/index.d.ts +2 -0
  544. package/form-builder-editor/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
  545. package/form-builder-editor/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
  546. package/form-builder-editor/lib/components/blackbox/blackbox.service.d.ts +144 -0
  547. package/form-builder-editor/lib/components/blackbox/blackbox.types.d.ts +238 -0
  548. package/form-builder-editor/lib/components/button/button-area.component.d.ts +93 -0
  549. package/form-builder-editor/lib/components/button/button.component.d.ts +61 -0
  550. package/form-builder-editor/lib/components/button/button.types.d.ts +75 -0
  551. package/form-builder-editor/lib/components/button/index.d.ts +15 -0
  552. package/form-builder-editor/lib/components/form-builder/adapters/it-date-adapter.d.ts +32 -0
  553. package/form-builder-editor/lib/components/form-builder/directives/currency-input.directive.d.ts +48 -0
  554. package/form-builder-editor/lib/components/form-builder/form-builder.component.d.ts +279 -0
  555. package/form-builder-editor/lib/components/form-builder/services/form-condition.service.d.ts +46 -0
  556. package/form-builder-editor/lib/components/form-builder/services/form-error-state.matcher.d.ts +9 -0
  557. package/form-builder-editor/lib/components/form-builder/services/form-field-error.service.d.ts +38 -0
  558. package/form-builder-editor/lib/components/form-builder/services/form-validation.service.d.ts +63 -0
  559. package/form-builder-editor/lib/components/form-builder/services/location.service.d.ts +83 -0
  560. package/form-builder-editor/lib/components/form-builder/services/nominatim-geocoding.service.d.ts +37 -0
  561. package/form-builder-editor/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.d.ts +31 -0
  562. package/form-builder-editor/lib/components/form-builder/sub-components/file-input/file-input.component.d.ts +41 -0
  563. package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-number-field.component.d.ts +42 -0
  564. package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.d.ts +45 -0
  565. package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-select-field.component.d.ts +44 -0
  566. package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-text-field.component.d.ts +62 -0
  567. package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.d.ts +39 -0
  568. package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/index.d.ts +5 -0
  569. package/form-builder-editor/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.d.ts +84 -0
  570. package/form-builder-editor/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.d.ts +145 -0
  571. package/form-builder-editor/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.d.ts +108 -0
  572. package/form-builder-editor/lib/components/form-builder/types/condition.types.d.ts +51 -0
  573. package/form-builder-editor/lib/components/form-builder/types/field.types.d.ts +330 -0
  574. package/form-builder-editor/lib/components/form-builder/types/geocoded-location.types.d.ts +116 -0
  575. package/form-builder-editor/lib/components/form-builder/types/index.d.ts +6 -0
  576. package/form-builder-editor/lib/components/form-builder/types/schema.types.d.ts +304 -0
  577. package/form-builder-editor/lib/components/form-builder/types/territoriale.types.d.ts +170 -0
  578. package/form-builder-editor/lib/components/form-builder/types/validation.types.d.ts +179 -0
  579. package/form-builder-editor/lib/components/form-builder-editor/form-builder-editor.component.d.ts +117 -0
  580. package/form-builder-editor/lib/components/form-builder-editor/form-builder-editor.service.d.ts +38 -0
  581. package/form-builder-editor/lib/components/form-builder-editor/index.d.ts +17 -0
  582. package/form-builder-editor/lib/components/form-builder-editor/presets/editor-presets.d.ts +25 -0
  583. package/form-builder-editor/lib/components/form-builder-editor/services/editor-persistence.service.d.ts +42 -0
  584. package/form-builder-editor/lib/components/form-builder-editor/services/editor-state.service.d.ts +66 -0
  585. package/form-builder-editor/lib/components/form-builder-editor/services/field-factory.service.d.ts +28 -0
  586. package/form-builder-editor/lib/components/form-builder-editor/sub-components/condition-editor/condition-editor.component.d.ts +139 -0
  587. package/form-builder-editor/lib/components/form-builder-editor/sub-components/editor-toolbar/editor-toolbar.component.d.ts +43 -0
  588. package/form-builder-editor/lib/components/form-builder-editor/sub-components/field-config-panel/field-config-panel.component.d.ts +83 -0
  589. package/form-builder-editor/lib/components/form-builder-editor/sub-components/field-palette/field-palette.component.d.ts +40 -0
  590. package/form-builder-editor/lib/components/form-builder-editor/sub-components/form-values-panel/form-values-panel.component.d.ts +51 -0
  591. package/form-builder-editor/lib/components/form-builder-editor/sub-components/options-editor/options-editor.component.d.ts +63 -0
  592. package/form-builder-editor/lib/components/form-builder-editor/sub-components/preview-container/preview-container.component.d.ts +68 -0
  593. package/form-builder-editor/lib/components/form-builder-editor/sub-components/section-editor/section-editor.component.d.ts +82 -0
  594. package/form-builder-editor/lib/components/form-builder-editor/sub-components/validation-editor/validation-editor.component.d.ts +112 -0
  595. package/form-builder-editor/lib/components/form-builder-editor/types/editor.types.d.ts +124 -0
  596. package/form-builder-editor/lib/components/modal/confirm-dialog.component.d.ts +46 -0
  597. package/form-builder-editor/lib/components/modal/index.d.ts +4 -0
  598. package/form-builder-editor/lib/components/modal/modal.component.d.ts +44 -0
  599. package/form-builder-editor/lib/components/modal/modal.service.d.ts +93 -0
  600. package/form-builder-editor/lib/components/modal/modal.types.d.ts +110 -0
  601. package/form-builder-editor/lib/core/logging/logger.config.d.ts +18 -0
  602. package/form-builder-editor/lib/core/logging/logger.service.d.ts +75 -0
  603. package/form-builder-editor/lib/core/logging/logger.types.d.ts +70 -0
  604. package/form-builder-editor/lib/core/types/index.d.ts +133 -0
  605. package/http/entry-http.d.ts +4 -0
  606. package/http/index.d.ts +5 -0
  607. package/http/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
  608. package/http/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
  609. package/http/lib/components/blackbox/blackbox.service.d.ts +144 -0
  610. package/http/lib/components/blackbox/blackbox.types.d.ts +238 -0
  611. package/http/lib/components/http/http-message.handler.d.ts +59 -0
  612. package/http/lib/components/http/http.service.d.ts +98 -0
  613. package/http/lib/components/http/http.tokens.d.ts +29 -0
  614. package/http/lib/components/http/http.types.d.ts +50 -0
  615. package/http/lib/components/http/index.d.ts +17 -0
  616. package/http/lib/components/layout-builder/layout-builder.types.d.ts +436 -0
  617. package/http/lib/components/layout-builder/layout.service.d.ts +100 -0
  618. package/http/lib/components/toast/toast-container.component.d.ts +27 -0
  619. package/http/lib/components/toast/toast.component.d.ts +37 -0
  620. package/http/lib/components/toast/toast.service.d.ts +39 -0
  621. package/http/lib/components/toast/toast.types.d.ts +52 -0
  622. package/http/lib/core/types/index.d.ts +133 -0
  623. package/http/lib/core/utils/index.d.ts +60 -0
  624. package/layout-builder/entry-layout-builder.d.ts +4 -0
  625. package/layout-builder/index.d.ts +5 -0
  626. package/layout-builder/lib/components/layout-builder/index.d.ts +16 -0
  627. package/layout-builder/lib/components/layout-builder/layout-builder.component.d.ts +85 -0
  628. package/layout-builder/lib/components/layout-builder/layout-builder.types.d.ts +436 -0
  629. package/layout-builder/lib/components/layout-builder/layout.service.d.ts +100 -0
  630. package/layout-builder/lib/core/types/index.d.ts +133 -0
  631. package/lib/components/accordion/accordion.component.d.ts +10 -3
  632. package/lib/components/accordion/accordion.types.d.ts +2 -0
  633. package/lib/components/base-layout/base-layout.component.d.ts +36 -11
  634. package/lib/components/base-layout/base-layout.types.d.ts +14 -0
  635. package/lib/components/base-layout/index.d.ts +1 -1
  636. package/lib/components/blackbox/blackbox-debugger.component.d.ts +80 -0
  637. package/lib/components/blackbox/blackbox-debugger.service.d.ts +34 -0
  638. package/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
  639. package/lib/components/blackbox/blackbox-json-viewer.component.d.ts +18 -0
  640. package/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
  641. package/lib/components/blackbox/blackbox.interceptor.d.ts +38 -0
  642. package/lib/components/blackbox/blackbox.service.d.ts +144 -0
  643. package/lib/components/blackbox/blackbox.types.d.ts +238 -0
  644. package/lib/components/blackbox/index.d.ts +23 -0
  645. package/lib/components/blackbox/ui-track.directive.d.ts +20 -0
  646. package/lib/components/button/button-area.component.d.ts +6 -1
  647. package/lib/components/button/button.component.d.ts +8 -2
  648. package/lib/components/button/button.types.d.ts +5 -0
  649. package/lib/components/form-builder/form-builder.component.d.ts +125 -29
  650. package/lib/components/form-builder/form-wizard.component.d.ts +89 -4
  651. package/lib/components/form-builder/index.d.ts +7 -1
  652. package/lib/components/form-builder/services/form-error-state.matcher.d.ts +9 -0
  653. package/lib/components/form-builder/services/form-field-error.service.d.ts +38 -0
  654. package/lib/components/form-builder/services/nominatim-geocoding.service.d.ts +37 -0
  655. package/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.d.ts +9 -6
  656. package/lib/components/form-builder/sub-components/form-fields/form-number-field.component.d.ts +42 -0
  657. package/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.d.ts +45 -0
  658. package/lib/components/form-builder/sub-components/form-fields/form-select-field.component.d.ts +44 -0
  659. package/lib/components/form-builder/sub-components/form-fields/form-text-field.component.d.ts +62 -0
  660. package/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.d.ts +39 -0
  661. package/lib/components/form-builder/sub-components/form-fields/index.d.ts +5 -0
  662. package/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.d.ts +84 -0
  663. package/lib/components/form-builder/types/field.types.d.ts +48 -6
  664. package/lib/components/form-builder/types/geocoded-location.types.d.ts +116 -0
  665. package/lib/components/form-builder/types/index.d.ts +4 -3
  666. package/lib/components/form-builder/types/schema.types.d.ts +83 -6
  667. package/lib/components/form-builder/types/validation.types.d.ts +5 -0
  668. package/lib/components/form-builder-editor/index.d.ts +2 -0
  669. package/lib/components/form-builder-editor/presets/editor-presets.d.ts +25 -0
  670. package/lib/components/http/http-message.handler.d.ts +59 -0
  671. package/lib/components/http/http.service.d.ts +98 -0
  672. package/lib/components/http/http.tokens.d.ts +29 -0
  673. package/lib/components/http/http.types.d.ts +50 -0
  674. package/lib/components/http/index.d.ts +17 -0
  675. package/lib/components/page-header/breadcrumb.service.d.ts +2 -2
  676. package/lib/components/table/table.types.d.ts +5 -0
  677. package/lib/components/toast/index.d.ts +17 -0
  678. package/lib/components/toast/toast-container.component.d.ts +27 -0
  679. package/lib/components/toast/toast.component.d.ts +37 -0
  680. package/lib/components/toast/toast.service.d.ts +39 -0
  681. package/lib/components/toast/toast.types.d.ts +52 -0
  682. package/lib/core/logging/index.d.ts +8 -0
  683. package/lib/core/logging/logger.config.d.ts +18 -0
  684. package/lib/core/logging/logger.service.d.ts +75 -0
  685. package/lib/core/logging/logger.types.d.ts +70 -0
  686. package/lib/core/types/index.d.ts +76 -0
  687. package/lib/core/utils/index.d.ts +31 -0
  688. package/lib/version/ng-ui-system-version.d.ts +9 -0
  689. package/modal/entry-modal.d.ts +4 -0
  690. package/modal/index.d.ts +5 -0
  691. package/modal/lib/components/button/button.component.d.ts +61 -0
  692. package/modal/lib/components/button/button.types.d.ts +75 -0
  693. package/modal/lib/components/modal/confirm-dialog.component.d.ts +46 -0
  694. package/modal/lib/components/modal/index.d.ts +4 -0
  695. package/modal/lib/components/modal/modal.component.d.ts +44 -0
  696. package/modal/lib/components/modal/modal.service.d.ts +93 -0
  697. package/modal/lib/components/modal/modal.types.d.ts +110 -0
  698. package/modal/lib/core/types/index.d.ts +133 -0
  699. package/package.json +93 -8
  700. package/page-header/entry-page-header.d.ts +4 -0
  701. package/page-header/index.d.ts +5 -0
  702. package/page-header/lib/components/page-header/breadcrumb.service.d.ts +96 -0
  703. package/page-header/lib/components/page-header/index.d.ts +16 -0
  704. package/page-header/lib/components/page-header/page-header.component.d.ts +59 -0
  705. package/page-header/lib/components/page-header/page-header.types.d.ts +96 -0
  706. package/public-api.d.ts +11 -6
  707. package/table/entry-table.d.ts +4 -0
  708. package/table/index.d.ts +5 -0
  709. package/table/lib/components/table/index.d.ts +2 -0
  710. package/table/lib/components/table/paginated-table.component.d.ts +85 -0
  711. package/table/lib/components/table/table.types.d.ts +86 -0
  712. package/table/lib/core/utils/index.d.ts +60 -0
  713. package/toast/entry-toast.d.ts +4 -0
  714. package/toast/index.d.ts +5 -0
  715. package/toast/lib/components/toast/index.d.ts +17 -0
  716. package/toast/lib/components/toast/toast-container.component.d.ts +27 -0
  717. package/toast/lib/components/toast/toast.component.d.ts +37 -0
  718. package/toast/lib/components/toast/toast.service.d.ts +39 -0
  719. package/toast/lib/components/toast/toast.types.d.ts +52 -0
  720. package/toast/lib/core/types/index.d.ts +133 -0
  721. package/toast/lib/core/utils/index.d.ts +60 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gnggln-ng-ui-system-http.mjs","sources":["../../../packages/ng-ui-system/src/lib/core/utils/index.ts","../../../packages/ng-ui-system/src/lib/components/toast/toast.types.ts","../../../packages/ng-ui-system/src/lib/components/toast/toast.component.ts","../../../packages/ng-ui-system/src/lib/components/toast/toast-container.component.ts","../../../packages/ng-ui-system/src/lib/components/toast/toast.service.ts","../../../packages/ng-ui-system/src/lib/components/layout-builder/layout.service.ts","../../../packages/ng-ui-system/src/lib/components/http/http-message.handler.ts","../../../packages/ng-ui-system/src/lib/components/http/http.tokens.ts","../../../packages/ng-ui-system/src/lib/components/blackbox/blackbox.types.ts","../../../packages/ng-ui-system/src/lib/components/blackbox/blackbox-fingerprint.service.ts","../../../packages/ng-ui-system/src/lib/components/blackbox/blackbox-storage.service.ts","../../../packages/ng-ui-system/src/lib/components/blackbox/blackbox.service.ts","../../../packages/ng-ui-system/src/lib/components/http/http.service.ts","../../../packages/ng-ui-system/src/lib/components/http/index.ts","../../../packages/ng-ui-system/src/entry-http.ts","../../../packages/ng-ui-system/src/gnggln-ng-ui-system-http.ts"],"sourcesContent":["/**\r\n * Shared utility functions for ng-ui-system components.\r\n */\r\n\r\n/**\r\n * Generates a unique ID with an optional prefix.\r\n * Uses crypto.randomUUID() when available for better randomness, falls back to crypto.getRandomValues().\r\n * Useful for linking labels to form controls, ARIA attributes, etc.\r\n *\r\n * @param prefix - Optional prefix for the generated ID.\r\n * @returns A unique string ID.\r\n */\r\nexport function uiUniqueId(prefix = 'ui'): string {\r\n let randomPart: string;\r\n\r\n // Try crypto.randomUUID() first (modern browsers/Node 19+)\r\n if (typeof crypto !== 'undefined' && crypto.randomUUID) {\r\n randomPart = crypto.randomUUID().substring(0, 8);\r\n }\r\n // Fallback to crypto.getRandomValues()\r\n else if (typeof crypto !== 'undefined' && crypto.getRandomValues) {\r\n const array = new Uint8Array(4);\r\n crypto.getRandomValues(array);\r\n randomPart = Array.from(array, (byte) => byte.toString(36))\r\n .join('')\r\n .substring(0, 8);\r\n }\r\n // Final fallback to Math.random() for older environments\r\n else {\r\n randomPart = Math.random().toString(36).substring(2, 9); // NOSONAR - Fallback for environments without crypto API\r\n }\r\n\r\n return `${prefix}-${randomPart}`;\r\n}\r\n\r\n/**\r\n * Coerces a value to a boolean.\r\n * Useful for handling string boolean attributes in templates.\r\n *\r\n * @param value - The value to coerce.\r\n * @returns The boolean representation.\r\n */\r\nexport function uiCoerceBoolean(value: unknown): boolean {\r\n return value != null && `${value}` !== 'false';\r\n}\r\n\r\n/**\r\n * Clamps a number between a minimum and maximum value.\r\n *\r\n * @param value - The value to clamp.\r\n * @param min - The minimum allowed value.\r\n * @param max - The maximum allowed value.\r\n * @returns The clamped value.\r\n */\r\nexport function uiClamp(value: number, min: number, max: number): number {\r\n return Math.max(min, Math.min(max, value));\r\n}\r\n\r\n/**\r\n * Removes all `null` and `undefined` values from an object.\r\n * Returns a new object — the original is not mutated.\r\n *\r\n * @param obj - The source object.\r\n * @returns A shallow copy with nullish entries removed.\r\n *\r\n * @example\r\n * ```typescript\r\n * uiFilterNullish({ a: 1, b: null, c: 'x', d: undefined });\r\n * // → { a: 1, c: 'x' }\r\n * ```\r\n */\r\nexport function uiFilterNullish<T extends Record<string, unknown>>(obj: T): Partial<T> {\r\n return Object.entries(obj)\r\n .filter(([, value]) => value !== null && value !== undefined)\r\n .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {} as Partial<T>);\r\n}\r\n\r\n/**\r\n * Converts a key-value object into a URL query string.\r\n * Nullish values are filtered out automatically.\r\n *\r\n * @param params - Query parameter object.\r\n * @returns A query string like `?key=value&key2=value2`, or an empty string if no params.\r\n *\r\n * @example\r\n * ```typescript\r\n * uiQueryParamsToPath({ search: 'test', page: 1, active: true });\r\n * // → '?search=test&page=1&active=true'\r\n *\r\n * uiQueryParamsToPath(undefined);\r\n * // → ''\r\n * ```\r\n */\r\nexport function uiQueryParamsToPath(params?: Record<string, unknown>): string {\r\n if (!params) return '';\r\n const searchParams = new URLSearchParams();\r\n Object.entries(uiFilterNullish(params)).forEach(([key, value]) => {\r\n if (Array.isArray(value)) {\r\n value.forEach((v) => searchParams.append(key, String(v ?? '')));\r\n } else {\r\n searchParams.append(key, String(value ?? ''));\r\n }\r\n });\r\n const str = searchParams.toString();\r\n return str ? `?${str}` : '';\r\n}\r\n","/**\r\n * @module ng-ui-system/toast\r\n * Types and interfaces for the proprietary toast notification system.\r\n */\r\n\r\nimport type { UiToastType } from '../../core/types/index';\r\n\r\n/** Position of the toast container on screen. */\r\nexport type UiToastPosition =\r\n | 'top-right'\r\n | 'top-left'\r\n | 'bottom-right'\r\n | 'bottom-left'\r\n | 'top-center'\r\n | 'bottom-center';\r\n\r\n/**\r\n * Configuration options for a toast notification.\r\n *\r\n * @usageNotes\r\n * ```typescript\r\n * toastService.success('Saved!', { duration: 3000, position: 'bottom-right' });\r\n * ```\r\n */\r\nexport interface UiToastConfig {\r\n /** Toast type (overrides the method-level default). */\r\n type?: UiToastType;\r\n /** Auto-dismiss duration in milliseconds. `0` = persistent. Default: `5000`. */\r\n duration?: number;\r\n /** Screen position for this toast. Default: `'top-right'`. */\r\n position?: UiToastPosition;\r\n /** Whether a close button is shown. Default: `true`. */\r\n dismissible?: boolean;\r\n /** Allow HTML content in the message. Default: `false`. */\r\n enableHtml?: boolean;\r\n /** Custom Lucide icon name. Defaults to type-specific icon. */\r\n icon?: string;\r\n /** Additional CSS class appended to the toast element. */\r\n customClass?: string;\r\n}\r\n\r\n/**\r\n * Reference to a live toast instance.\r\n * Can be used to dismiss the toast programmatically.\r\n */\r\nexport interface UiToastRef {\r\n /** Unique identifier for this toast instance. */\r\n id: string;\r\n /** Dismiss this specific toast. */\r\n dismiss: () => void;\r\n}\r\n\r\n/** @internal Data model for a toast managed by the service. */\r\nexport interface UiToastData {\r\n id: string;\r\n message: string;\r\n type: UiToastType;\r\n config: Required<Pick<UiToastConfig, 'duration' | 'position' | 'dismissible' | 'enableHtml'>> & UiToastConfig;\r\n state: 'entering' | 'visible' | 'exiting';\r\n timeoutId?: ReturnType<typeof setTimeout>;\r\n}\r\n\r\n/** Defaults applied to every toast unless overridden. */\r\nexport const UI_TOAST_DEFAULTS: Required<Pick<UiToastConfig, 'duration' | 'position' | 'dismissible' | 'enableHtml'>> = {\r\n duration: 5000,\r\n position: 'top-right',\r\n dismissible: true,\r\n enableHtml: false,\r\n};\r\n","/**\r\n * Individual toast notification element.\r\n *\r\n * Rendered dynamically by `UiToastContainerComponent`.\r\n * Handles its own enter/exit CSS animations and auto-dismiss countdown.\r\n *\r\n * @selector ui-toast\r\n * @internal Not intended for direct use — managed by `UiToastService`.\r\n */\r\nimport {\r\n Component,\r\n ChangeDetectionStrategy,\r\n ViewEncapsulation,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n OnInit,\r\n OnDestroy,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LucideAngularModule } from 'lucide-angular';\r\nimport type { UiToastType } from '../../core/types/index';\r\n\r\n@Component({\r\n selector: 'ui-toast',\r\n standalone: true,\r\n imports: [CommonModule, LucideAngularModule],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n 'class': 'ui-toast-host',\r\n },\r\n template: `\r\n <div\r\n class=\"ui-toast {{ customClass || '' }}\"\r\n [class.ui-toast--success]=\"type === 'success'\"\r\n [class.ui-toast--error]=\"type === 'error'\"\r\n [class.ui-toast--warning]=\"type === 'warning'\"\r\n [class.ui-toast--info]=\"type === 'info'\"\r\n [class.ui-toast--entering]=\"state === 'entering'\"\r\n [class.ui-toast--visible]=\"state === 'visible'\"\r\n [class.ui-toast--exiting]=\"state === 'exiting'\"\r\n role=\"alert\"\r\n aria-live=\"assertive\"\r\n aria-atomic=\"true\"\r\n >\r\n <div class=\"ui-toast__icon\">\r\n <lucide-icon [name]=\"resolvedIcon\" [size]=\"20\"></lucide-icon>\r\n </div>\r\n\r\n <div class=\"ui-toast__content\">\r\n @if (enableHtml) {\r\n <span class=\"ui-toast__message\" [innerHTML]=\"message\"></span>\r\n } @else {\r\n <span class=\"ui-toast__message\">{{ message }}</span>\r\n }\r\n </div>\r\n\r\n @if (dismissible) {\r\n <button\r\n class=\"ui-toast__close\"\r\n type=\"button\"\r\n (click)=\"dismissed.emit()\"\r\n aria-label=\"Chiudi notifica\"\r\n >\r\n <lucide-icon name=\"x\" [size]=\"16\"></lucide-icon>\r\n </button>\r\n }\r\n </div>\r\n `,\r\n styleUrl: './toast.component.scss',\r\n})\r\nexport class UiToastComponent implements OnInit, OnDestroy {\r\n /** Toast message text. */\r\n @Input() message = '';\r\n /** Toast type for styling. */\r\n @Input() type: UiToastType = 'info';\r\n /** Animation state. */\r\n @Input() state: 'entering' | 'visible' | 'exiting' = 'entering';\r\n /** Whether the close button is shown. */\r\n @Input() dismissible = true;\r\n /** Whether HTML rendering is enabled. */\r\n @Input() enableHtml = false;\r\n /** Custom Lucide icon override. */\r\n @Input() icon?: string;\r\n /** Additional CSS class. */\r\n @Input() customClass?: string;\r\n\r\n /** Emitted when the user clicks the dismiss button. */\r\n @Output() dismissed = new EventEmitter<void>();\r\n\r\n private enterTimeout?: ReturnType<typeof setTimeout>;\r\n\r\n /** Resolved icon name based on type. */\r\n get resolvedIcon(): string {\r\n if (this.icon) return this.icon;\r\n switch (this.type) {\r\n case 'success': return 'check-circle';\r\n case 'error': return 'x-circle';\r\n case 'warning': return 'alert-triangle';\r\n case 'info':\r\n default: return 'info';\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n // Transition from entering → visible after the CSS animation completes\r\n this.enterTimeout = setTimeout(() => {\r\n this.state = 'visible';\r\n }, 320);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.enterTimeout) clearTimeout(this.enterTimeout);\r\n }\r\n}\r\n","/**\r\n * Toast container — manages stacking and positioning of active toasts.\r\n *\r\n * Dynamically attached to the DOM by `UiToastService` on first use.\r\n * Renders one `ui-toast` per active notification.\r\n *\r\n * @selector ui-toast-container\r\n * @internal Not intended for direct use.\r\n */\r\nimport {\r\n Component,\r\n ChangeDetectionStrategy,\r\n ViewEncapsulation,\r\n ChangeDetectorRef,\r\n inject,\r\n} from '@angular/core';\r\nimport { UiToastComponent } from './toast.component';\r\nimport type { UiToastData } from './toast.types';\r\n\r\n@Component({\r\n selector: 'ui-toast-container',\r\n standalone: true,\r\n imports: [UiToastComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n 'class': 'ui-toast-container-host',\r\n },\r\n template: `\r\n @for (toast of toasts; track toast.id) {\r\n <ui-toast\r\n [message]=\"toast.message\"\r\n [type]=\"toast.type\"\r\n [state]=\"toast.state\"\r\n [dismissible]=\"toast.config.dismissible\"\r\n [enableHtml]=\"toast.config.enableHtml\"\r\n [icon]=\"toast.config.icon\"\r\n [customClass]=\"toast.config.customClass\"\r\n (dismissed)=\"onDismiss(toast)\"\r\n />\r\n }\r\n `,\r\n styleUrl: './toast-container.component.scss',\r\n})\r\nexport class UiToastContainerComponent {\r\n readonly cdr = inject(ChangeDetectorRef);\r\n\r\n /** Active toasts — managed by UiToastService. */\r\n toasts: UiToastData[] = [];\r\n\r\n /** Called by UiToastService to add a toast. */\r\n addToast(toast: UiToastData): void {\r\n this.toasts = [...this.toasts, toast];\r\n this.cdr.markForCheck();\r\n }\r\n\r\n /** Called by UiToastService to remove a toast. */\r\n removeToast(id: string): void {\r\n this.toasts = this.toasts.filter(t => t.id !== id);\r\n this.cdr.markForCheck();\r\n }\r\n\r\n /** Update a toast's state (e.g. entering → exiting). */\r\n updateToastState(id: string, state: UiToastData['state']): void {\r\n const toast = this.toasts.find(t => t.id === id);\r\n if (toast) {\r\n toast.state = state;\r\n this.cdr.markForCheck();\r\n }\r\n }\r\n\r\n /** Dismiss handler from the toast component. */\r\n onDismiss(toast: UiToastData): void {\r\n // This is handled by the service via dismiss()\r\n if (toast.timeoutId) clearTimeout(toast.timeoutId);\r\n this.updateToastState(toast.id, 'exiting');\r\n setTimeout(() => this.removeToast(toast.id), 260);\r\n }\r\n}\r\n","/**\r\n * @module ng-ui-system/toast\r\n * Proprietary toast notification service.\r\n *\r\n * Zero external dependencies — renders toast components directly into the DOM\r\n * via Angular's `ApplicationRef`.\r\n *\r\n * @usageNotes\r\n * ### Basic usage\r\n * ```typescript\r\n * const toast = inject(UiToastService);\r\n * toast.success('Record salvato!');\r\n * toast.error('Errore durante il salvataggio');\r\n * ```\r\n *\r\n * ### With config\r\n * ```typescript\r\n * toast.warning('Attenzione', { duration: 8000, position: 'bottom-right' });\r\n * ```\r\n *\r\n * ### Programmatic dismiss\r\n * ```typescript\r\n * const ref = toast.info('Caricamento in corso...', { duration: 0 });\r\n * // ...later\r\n * ref.dismiss();\r\n * ```\r\n *\r\n * @selector —\r\n */\r\nimport {\r\n Injectable,\r\n ApplicationRef,\r\n createComponent,\r\n EnvironmentInjector,\r\n inject,\r\n ComponentRef,\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport type { UiToastType } from '../../core/types/index';\r\nimport { uiUniqueId } from '../../core/utils/index';\r\nimport {\r\n UiToastConfig,\r\n UiToastRef,\r\n UiToastData,\r\n UI_TOAST_DEFAULTS,\r\n} from './toast.types';\r\nimport { UiToastContainerComponent } from './toast-container.component';\r\n\r\n/**\r\n * Central toast notification service.\r\n *\r\n * Manages a single `UiToastContainerComponent` in the DOM and provides\r\n * convenience methods for showing typed notifications.\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class UiToastService {\r\n private readonly appRef = inject(ApplicationRef);\r\n private readonly injector = inject(EnvironmentInjector);\r\n private readonly document = inject(DOCUMENT);\r\n\r\n /** Reference to the singleton container component. */\r\n private containerRef: ComponentRef<UiToastContainerComponent> | null = null;\r\n\r\n // ── Public API ─────────────────────────────────────────────────────\r\n\r\n /** Show a **success** toast. */\r\n success(message: string, config?: UiToastConfig): UiToastRef {\r\n return this.show(message, 'success', config);\r\n }\r\n\r\n /** Show an **error** toast. */\r\n error(message: string, config?: UiToastConfig): UiToastRef {\r\n return this.show(message, 'error', config);\r\n }\r\n\r\n /** Show a **warning** toast. */\r\n warning(message: string, config?: UiToastConfig): UiToastRef {\r\n return this.show(message, 'warning', config);\r\n }\r\n\r\n /** Show an **info** toast. */\r\n info(message: string, config?: UiToastConfig): UiToastRef {\r\n return this.show(message, 'info', config);\r\n }\r\n\r\n /** Show a toast with explicit type. */\r\n show(message: string, type: UiToastType = 'info', config?: UiToastConfig): UiToastRef {\r\n this.ensureContainer(config?.position);\r\n const container = this.containerRef!.instance;\r\n\r\n const id = uiUniqueId('toast');\r\n const merged = {\r\n ...UI_TOAST_DEFAULTS,\r\n ...config,\r\n };\r\n\r\n const data: UiToastData = {\r\n id,\r\n message,\r\n type: config?.type ?? type,\r\n config: merged,\r\n state: 'entering',\r\n };\r\n\r\n // Auto-dismiss\r\n if (merged.duration > 0) {\r\n data.timeoutId = setTimeout(() => this.dismiss(id), merged.duration);\r\n }\r\n\r\n container.addToast(data);\r\n\r\n return {\r\n id,\r\n dismiss: () => this.dismiss(id),\r\n };\r\n }\r\n\r\n /** Dismiss a specific toast by ID. */\r\n dismiss(id: string): void {\r\n const container = this.containerRef?.instance;\r\n if (!container) return;\r\n\r\n const toast = container.toasts.find(t => t.id === id);\r\n if (!toast || toast.state === 'exiting') return;\r\n\r\n if (toast.timeoutId) clearTimeout(toast.timeoutId);\r\n\r\n // Animate out, then remove\r\n container.updateToastState(id, 'exiting');\r\n setTimeout(() => container.removeToast(id), 260);\r\n }\r\n\r\n /** Dismiss all active toasts. */\r\n dismissAll(): void {\r\n const container = this.containerRef?.instance;\r\n if (!container) return;\r\n\r\n const ids = container.toasts.map(t => t.id);\r\n ids.forEach(id => this.dismiss(id));\r\n }\r\n\r\n // ── Internals ──────────────────────────────────────────────────────\r\n\r\n /**\r\n * Ensures the container component exists in the DOM.\r\n * Creates it lazily on first toast call.\r\n */\r\n private ensureContainer(position?: string): void {\r\n if (this.containerRef) {\r\n // Update position class if needed\r\n if (position) {\r\n const el = this.containerRef.location.nativeElement as HTMLElement;\r\n this.applyPositionClass(el, position);\r\n }\r\n return;\r\n }\r\n\r\n // Create the container component dynamically\r\n this.containerRef = createComponent(UiToastContainerComponent, {\r\n environmentInjector: this.injector,\r\n });\r\n\r\n // Attach to Angular's change detection\r\n this.appRef.attachView(this.containerRef.hostView);\r\n\r\n // Insert into the DOM\r\n const el = this.containerRef.location.nativeElement as HTMLElement;\r\n this.applyPositionClass(el, position ?? UI_TOAST_DEFAULTS.position);\r\n this.document.body.appendChild(el);\r\n }\r\n\r\n /** Apply CSS position modifier class to the container element. */\r\n private applyPositionClass(el: HTMLElement, position: string): void {\r\n // Remove old position classes\r\n el.className = el.className\r\n .split(' ')\r\n .filter(c => !c.startsWith('ui-toast-container-host--'))\r\n .join(' ');\r\n el.classList.add(`ui-toast-container-host--${position}`);\r\n }\r\n}\r\n","/**\r\n * Central service for programmatic control of the `ui-layout-builder` shell.\r\n *\r\n * Provides reactive state management for:\r\n * - Overlay loader (with body scroll locking)\r\n * - Sidebar open / collapsed state\r\n * - Context-sensitive FAB actions\r\n * - Navigation badge and visibility overrides\r\n * - Layout mode switching (sidebar / topbar / slotted)\r\n * - Content type (fluid / boxed / fullscreen)\r\n * - Topbar bar visibility (notification bars show/hide)\r\n *\r\n * @example\r\n * ```typescript\r\n * export class MyPageComponent {\r\n * private layout = inject(UiLayoutService);\r\n *\r\n * async loadData() {\r\n * this.layout.showLoader();\r\n * try {\r\n * await this.api.fetchAll();\r\n * } finally {\r\n * this.layout.hideLoader();\r\n * }\r\n * }\r\n * }\r\n * ```\r\n */\r\nimport { Injectable, inject, PLATFORM_ID } from '@angular/core';\r\nimport { isPlatformBrowser } from '@angular/common';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport {\r\n UiFabAction,\r\n UiLayoutFabConfig,\r\n UiLayoutMode,\r\n UiContentType,\r\n} from './layout-builder.types';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class UiLayoutService {\r\n private readonly platformId = inject(PLATFORM_ID);\r\n\r\n // ── Loader ───────────────────────────────────────────────────────\r\n\r\n private readonly _loading$ = new BehaviorSubject<boolean>(false);\r\n /** Whether the overlay loader is currently visible. */\r\n readonly loading$: Observable<boolean> = this._loading$.asObservable();\r\n\r\n /** Show the full-screen overlay loader and block body scroll. */\r\n showLoader(): void {\r\n this._loading$.next(true);\r\n this.setBodyOverflow(true);\r\n }\r\n\r\n /** Hide the overlay loader and restore body scroll. */\r\n hideLoader(): void {\r\n this._loading$.next(false);\r\n this.setBodyOverflow(false);\r\n }\r\n\r\n /** Toggle the overlay loader. */\r\n toggleLoader(): void {\r\n if (this._loading$.value) {\r\n this.hideLoader();\r\n } else {\r\n this.showLoader();\r\n }\r\n }\r\n\r\n /** Synchronous snapshot of the loading state. */\r\n isLoading(): boolean {\r\n return this._loading$.value;\r\n }\r\n\r\n // ── Layout Mode ─────────────────────────────────────────────────\r\n\r\n private readonly _layoutMode$ = new BehaviorSubject<UiLayoutMode>('sidebar');\r\n /** Current layout mode (sidebar or topbar). */\r\n readonly layoutMode$: Observable<UiLayoutMode> = this._layoutMode$.asObservable();\r\n\r\n /**\r\n * Switch layout mode with loader masking the transition.\r\n * Shows the loader, applies the mode change, then hides the loader\r\n * after a short delay to prevent visible layout shift.\r\n */\r\n setLayoutMode(mode: UiLayoutMode, transitionMs = 300): void {\r\n if (this._layoutMode$.value === mode) return;\r\n this.showLoader();\r\n this._layoutMode$.next(mode);\r\n setTimeout(() => this.hideLoader(), transitionMs);\r\n }\r\n\r\n /** Synchronous snapshot of the current layout mode. */\r\n getLayoutMode(): UiLayoutMode {\r\n return this._layoutMode$.value;\r\n }\r\n\r\n /**\r\n * @internal Called by the layout-builder component to set the initial mode\r\n * from the schema without triggering the loader transition.\r\n */\r\n _setInitialLayoutMode(mode: UiLayoutMode): void {\r\n this._layoutMode$.next(mode);\r\n }\r\n\r\n // ── Content Type ────────────────────────────────────────────────\r\n\r\n private readonly _contentType$ = new BehaviorSubject<UiContentType>('fluid');\r\n /** Current content type (fluid, boxed, fullscreen). */\r\n readonly contentType$: Observable<UiContentType> = this._contentType$.asObservable();\r\n\r\n /** Set the content type per-route or globally. */\r\n setContentType(type: UiContentType): void {\r\n this._contentType$.next(type);\r\n }\r\n\r\n /** Synchronous snapshot of the current content type. */\r\n getContentType(): UiContentType {\r\n return this._contentType$.value;\r\n }\r\n\r\n /** @internal */\r\n _setInitialContentType(type: UiContentType): void {\r\n this._contentType$.next(type);\r\n }\r\n\r\n // ── Sidebar ──────────────────────────────────────────────────────\r\n\r\n private readonly _sidebarOpen$ = new BehaviorSubject<boolean>(false);\r\n /** Whether the mobile sidebar drawer is open. */\r\n readonly sidebarOpen$: Observable<boolean> = this._sidebarOpen$.asObservable();\r\n\r\n private readonly _sidebarCollapsed$ = new BehaviorSubject<boolean>(false);\r\n /** Whether the desktop sidebar is in collapsed (icon-only) mode. */\r\n readonly sidebarCollapsed$: Observable<boolean> = this._sidebarCollapsed$.asObservable();\r\n\r\n /** Toggle the desktop sidebar between expanded and collapsed. */\r\n toggleSidebar(): void {\r\n this._sidebarCollapsed$.next(!this._sidebarCollapsed$.value);\r\n }\r\n\r\n /** Set the desktop sidebar collapsed state explicitly. */\r\n collapseSidebar(collapsed = true): void {\r\n this._sidebarCollapsed$.next(collapsed);\r\n }\r\n\r\n /** Open the mobile sidebar drawer. */\r\n openMobileSidebar(): void {\r\n this._sidebarOpen$.next(true);\r\n }\r\n\r\n /** Close the mobile sidebar drawer. */\r\n closeMobileSidebar(): void {\r\n this._sidebarOpen$.next(false);\r\n }\r\n\r\n /** Synchronous snapshot: is the mobile sidebar open? */\r\n isSidebarOpen(): boolean {\r\n return this._sidebarOpen$.value;\r\n }\r\n\r\n /** Synchronous snapshot: is the desktop sidebar collapsed? */\r\n isSidebarCollapsed(): boolean {\r\n return this._sidebarCollapsed$.value;\r\n }\r\n\r\n // ── FAB (context-sensitive) ──────────────────────────────────────\r\n\r\n private _defaultFabConfig: UiLayoutFabConfig | null = null;\r\n private readonly _fabConfig$ = new BehaviorSubject<UiLayoutFabConfig | null>(null);\r\n /** Current FAB configuration (schema default merged with page overrides). */\r\n readonly fabConfig$: Observable<UiLayoutFabConfig | null> = this._fabConfig$.asObservable();\r\n\r\n /**\r\n * Called internally by the layout-builder component to register the\r\n * schema-level default FAB config.\r\n * @internal\r\n */\r\n _setDefaultFabConfig(config: UiLayoutFabConfig | null): void {\r\n this._defaultFabConfig = config;\r\n this._fabConfig$.next(config);\r\n }\r\n\r\n /** Override the FAB main action for the current page context. */\r\n setMainFabAction(action: UiFabAction): void {\r\n const current = this._fabConfig$.value;\r\n this._fabConfig$.next({\r\n mainAction: action,\r\n secondaryActions: current?.secondaryActions ?? [],\r\n position: current?.position ?? 'bottom-right',\r\n });\r\n }\r\n\r\n /** Override all FAB actions for the current page context. */\r\n setFabActions(main: UiFabAction, secondary?: UiFabAction[]): void {\r\n const current = this._fabConfig$.value;\r\n this._fabConfig$.next({\r\n mainAction: main,\r\n secondaryActions: secondary ?? [],\r\n position: current?.position ?? 'bottom-right',\r\n });\r\n }\r\n\r\n /** Reset FAB to the schema-level default configuration. */\r\n clearFabActions(): void {\r\n this._fabConfig$.next(this._defaultFabConfig);\r\n }\r\n\r\n // ── Navigation helpers ───────────────────────────────────────────\r\n\r\n private readonly _navBadges$ = new BehaviorSubject<Map<string, string | number | null>>(new Map());\r\n /** Observable map of nav-item badges keyed by item ID. */\r\n readonly navBadges$: Observable<Map<string, string | number | null>> = this._navBadges$.asObservable();\r\n\r\n private readonly _navVisibility$ = new BehaviorSubject<Map<string, boolean>>(new Map());\r\n /** Observable map of nav-item visibility overrides keyed by item ID. */\r\n readonly navVisibility$: Observable<Map<string, boolean>> = this._navVisibility$.asObservable();\r\n\r\n /** Set or clear a badge on a navigation item. Pass `null` to remove. */\r\n setNavBadge(itemId: string, badge: string | number | null): void {\r\n const map = new Map(this._navBadges$.value);\r\n if (badge === null) {\r\n map.delete(itemId);\r\n } else {\r\n map.set(itemId, badge);\r\n }\r\n this._navBadges$.next(map);\r\n }\r\n\r\n /** Override visibility of a navigation item. */\r\n setNavItemVisibility(itemId: string, visible: boolean): void {\r\n const map = new Map(this._navVisibility$.value);\r\n map.set(itemId, visible);\r\n this._navVisibility$.next(map);\r\n }\r\n\r\n // ── Bar visibility (topbar notification bars) ───────────────────\r\n\r\n private readonly _barVisibility$ = new BehaviorSubject<Map<string, boolean>>(new Map());\r\n /** Observable map of topbar bar visibility keyed by bar ID. */\r\n readonly barVisibility$: Observable<Map<string, boolean>> = this._barVisibility$.asObservable();\r\n\r\n /** Show a topbar bar by ID. */\r\n showBar(barId: string): void {\r\n const map = new Map(this._barVisibility$.value);\r\n map.set(barId, true);\r\n this._barVisibility$.next(map);\r\n }\r\n\r\n /** Hide a topbar bar by ID. */\r\n hideBar(barId: string): void {\r\n const map = new Map(this._barVisibility$.value);\r\n map.set(barId, false);\r\n this._barVisibility$.next(map);\r\n }\r\n\r\n /** Toggle visibility of a topbar bar by ID. */\r\n toggleBar(barId: string): void {\r\n const map = new Map(this._barVisibility$.value);\r\n const current = map.get(barId);\r\n map.set(barId, current === undefined ? false : !current);\r\n this._barVisibility$.next(map);\r\n }\r\n\r\n /** Synchronous check of bar visibility (schema `visible` fallback). */\r\n isBarVisible(barId: string, schemaVisible = true): boolean {\r\n const override = this._barVisibility$.value.get(barId);\r\n return override !== undefined ? override : schemaVisible;\r\n }\r\n\r\n // ── Private helpers ──────────────────────────────────────────────\r\n\r\n private setBodyOverflow(locked: boolean): void {\r\n if (isPlatformBrowser(this.platformId)) {\r\n document.body.style.overflow = locked ? 'hidden' : '';\r\n }\r\n }\r\n}\r\n","/**\r\n * @module ng-ui-system/http\r\n * Message handler — coordinates toast notifications and loader state\r\n * for the HTTP service pipeline.\r\n *\r\n * Extracted as a standalone injectable so it can be tested independently\r\n * and potentially reused outside HTTP flows.\r\n */\r\nimport { Injectable, inject, Optional } from '@angular/core';\r\nimport type { UiEndpoint } from '../../core/types/index';\r\nimport { UiToastService } from '../toast/toast.service';\r\nimport { UiLayoutService } from '../layout-builder/layout.service';\r\n\r\n/**\r\n * Orchestrates toast notifications and loader state for HTTP requests.\r\n *\r\n * Features:\r\n * - Debounce anti-spam (groups identical messages within 300ms)\r\n * - Inline message resolution with placeholder replacements\r\n * - `successMessageResolver` / `errorExtractor` for dynamic messages\r\n * - Loader integration via `UiLayoutService` (optional)\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class UiHttpMessageHandler {\r\n private readonly toast = inject(UiToastService);\r\n private readonly layout = inject(UiLayoutService, { optional: true });\r\n\r\n /** Debounce time in milliseconds. */\r\n private readonly DEBOUNCE_TIME = 300;\r\n\r\n /** Active debounce timeouts keyed by message content. */\r\n private readonly messageTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\r\n\r\n // ── Loader ─────────────────────────────────────────────────────────\r\n\r\n /** Show the global loader (via UiLayoutService if available). */\r\n startLoading(): void {\r\n this.layout?.showLoader();\r\n }\r\n\r\n /** Hide the global loader. */\r\n stopLoading(): void {\r\n this.layout?.hideLoader();\r\n }\r\n\r\n // ── Success ────────────────────────────────────────────────────────\r\n\r\n /**\r\n * Show a success toast for the given endpoint.\r\n *\r\n * Resolution priority:\r\n * 1. `successMessageResolver()` if provided and returns non-null\r\n * 2. `messages.success` with placeholder replacements\r\n * 3. No toast if no message is configured\r\n */\r\n showSuccess(endpoint: UiEndpoint): void {\r\n if (!endpoint.showSuccess) return;\r\n\r\n let message: string | null = null;\r\n\r\n // Priority 1: custom resolver\r\n if (endpoint.successMessageResolver) {\r\n message = endpoint.successMessageResolver();\r\n }\r\n\r\n // Priority 2: inline message with replacements\r\n if (!message && endpoint.messages?.success) {\r\n message = this.applyReplacements(endpoint.messages.success, endpoint.replacements);\r\n }\r\n\r\n if (message) {\r\n this.debounceToast(message, 'success');\r\n }\r\n }\r\n\r\n // ── Error ──────────────────────────────────────────────────────────\r\n\r\n /**\r\n * Show an error toast for the given endpoint.\r\n *\r\n * Resolution priority:\r\n * 1. `errorExtractor(error)` if provided and returns non-null\r\n * 2. `messages.error` with placeholder replacements\r\n * 3. `fallbackMessage` if everything else is empty\r\n */\r\n showError(endpoint: UiEndpoint, error?: any, fallbackMessage?: string): void {\r\n if (!endpoint.showError) return;\r\n\r\n let message: string | null = null;\r\n\r\n // Priority 1: error extractor\r\n if (endpoint.errorExtractor && error) {\r\n message = endpoint.errorExtractor(error);\r\n }\r\n\r\n // Priority 2: inline message\r\n if (!message && endpoint.messages?.error) {\r\n message = this.applyReplacements(endpoint.messages.error, endpoint.replacements);\r\n }\r\n\r\n if (message) {\r\n this.debounceToast(message, 'error');\r\n } else if (fallbackMessage) {\r\n this.debounceToast(fallbackMessage, 'error');\r\n }\r\n }\r\n\r\n // ── Custom messages ────────────────────────────────────────────────\r\n\r\n /** Show a custom success toast (not tied to an endpoint). */\r\n showCustomSuccess(message: string): void {\r\n this.debounceToast(message, 'success');\r\n }\r\n\r\n /** Show a custom error toast (not tied to an endpoint). */\r\n showCustomError(message: string): void {\r\n this.debounceToast(message, 'error');\r\n }\r\n\r\n // ── Cleanup ────────────────────────────────────────────────────────\r\n\r\n /** Cancel all pending debounce timeouts. */\r\n clearAllTimeouts(): void {\r\n this.messageTimeouts.forEach(t => clearTimeout(t));\r\n this.messageTimeouts.clear();\r\n }\r\n\r\n // ── Internals ──────────────────────────────────────────────────────\r\n\r\n /**\r\n * Debounce mechanism for toast messages.\r\n * If the same message is requested within DEBOUNCE_TIME ms,\r\n * only the last one is shown.\r\n */\r\n private debounceToast(message: string, type: 'success' | 'error'): void {\r\n const existing = this.messageTimeouts.get(message);\r\n if (existing) clearTimeout(existing);\r\n\r\n const timeout = setTimeout(() => {\r\n this.toast[type](message);\r\n this.messageTimeouts.delete(message);\r\n }, this.DEBOUNCE_TIME);\r\n\r\n this.messageTimeouts.set(message, timeout);\r\n }\r\n\r\n /**\r\n * Replace `${key}` placeholders in a message string.\r\n */\r\n private applyReplacements(\r\n message: string,\r\n replacements?: Record<string, string | number>,\r\n ): string {\r\n if (!replacements) return message;\r\n let result = message;\r\n Object.entries(replacements).forEach(([key, value]) => {\r\n result = result.replace(new RegExp(`\\\\$\\\\{${key}\\\\}`, 'g'), String(value));\r\n });\r\n return result;\r\n }\r\n}\r\n","/**\r\n * @module ng-ui-system/http\r\n * Injection tokens for the HTTP orchestration service.\r\n */\r\nimport { InjectionToken } from '@angular/core';\r\nimport type { UiHttpConfig, UiHeadersProvider } from './http.types';\r\n\r\n/**\r\n * Optional global configuration for `UiHttpService`.\r\n *\r\n * @usageNotes\r\n * ```typescript\r\n * providers: [\r\n * { provide: UI_HTTP_CONFIG, useValue: { baseUrl: '/api' } },\r\n * ]\r\n * ```\r\n */\r\nexport const UI_HTTP_CONFIG = new InjectionToken<UiHttpConfig>('UI_HTTP_CONFIG');\r\n\r\n/**\r\n * Optional headers provider for injecting custom headers (auth, correlation, etc.)\r\n * into every HTTP request.\r\n *\r\n * @usageNotes\r\n * ```typescript\r\n * providers: [\r\n * { provide: UI_HEADERS_PROVIDER, useClass: MyAuthHeadersProvider },\r\n * ]\r\n * ```\r\n */\r\nexport const UI_HEADERS_PROVIDER = new InjectionToken<UiHeadersProvider>('UI_HEADERS_PROVIDER');\r\n","/**\r\n * @module ng-ui-system/blackbox\r\n * Types and interfaces for the BlackBox observability service.\r\n *\r\n * The BlackBox service acts as a \"black box recorder\" for user sessions,\r\n * capturing navigation, UI interactions, form events and HTTP calls\r\n * in a compressed, opaque format stored in IndexedDB.\r\n */\r\n\r\n// ─── Configuration ───────────────────────────────────────────────────\r\n\r\n/**\r\n * Form tracking granularity flags.\r\n *\r\n * Controls which form events are captured by the BlackBox service.\r\n * All flags default to `true` except `trackValues` which defaults to `false`\r\n * for privacy reasons.\r\n */\r\nexport interface UiBlackboxFormTrackingConfig {\r\n /**\r\n * When `true`, the actual field values are stored in form events.\r\n * When `false`, only the fact that a change occurred is recorded.\r\n * @default false\r\n */\r\n trackValues: boolean;\r\n\r\n /** Track focus events on form fields. @default true */\r\n trackFocus: boolean;\r\n\r\n /** Track blur events on form fields. @default true */\r\n trackBlur: boolean;\r\n\r\n /** Track value change events on form fields. @default true */\r\n trackValueChanges: boolean;\r\n\r\n /** Track validation error events on form fields. @default true */\r\n trackValidation: boolean;\r\n\r\n /**\r\n * Debounce interval (ms) for `valueChanges` subscriptions.\r\n * Higher values reduce noise but increase latency.\r\n * @default 500\r\n */\r\n debounceMs: number;\r\n}\r\n\r\n/**\r\n * Root configuration for the BlackBox service.\r\n *\r\n * All properties are optional — sensible defaults are applied when omitted.\r\n *\r\n * @example\r\n * ```typescript\r\n * blackboxService.configure({\r\n * maxStorageMb: 30,\r\n * formTracking: { trackValues: true, debounceMs: 1000 },\r\n * });\r\n * ```\r\n */\r\nexport interface UiBlackboxConfig {\r\n /**\r\n * Maximum IndexedDB storage quota in megabytes.\r\n * Oldest sessions are pruned when the quota is exceeded.\r\n * @default 50\r\n */\r\n maxStorageMb: number;\r\n\r\n /**\r\n * Interval (ms) at which the in-memory buffer is flushed to IndexedDB.\r\n * @default 5000\r\n */\r\n flushIntervalMs: number;\r\n\r\n /**\r\n * Number of buffered events that trigger an immediate flush.\r\n * @default 20\r\n */\r\n flushThreshold: number;\r\n\r\n /**\r\n * Centralised debounce (ms) applied to the event buffer.\r\n * @default 500\r\n */\r\n bufferDebounceMs: number;\r\n\r\n /** Per-field form tracking configuration. */\r\n formTracking: UiBlackboxFormTrackingConfig;\r\n}\r\n\r\n// ─── Fingerprint ─────────────────────────────────────────────────────\r\n\r\n/**\r\n * Stable device/browser fingerprint generated by FingerprintJS (open-source).\r\n * Persists across sessions and incognito mode.\r\n */\r\nexport type UiBlackboxFingerprint = string;\r\n\r\n// ─── Session ─────────────────────────────────────────────────────────\r\n\r\n/**\r\n * A single recording session, corresponding to one browser tab lifecycle.\r\n *\r\n * Sessions are associated to a stable `fingerprint` so that multiple\r\n * sessions from the same device can be grouped together.\r\n */\r\nexport interface UiBlackboxSession {\r\n /** Unique session identifier (UUID v4). */\r\n sessionId: string;\r\n\r\n /** Stable device/browser fingerprint. */\r\n fingerprint: UiBlackboxFingerprint;\r\n\r\n /** Timestamp (ms since epoch) when the session started. */\r\n startedAt: number;\r\n\r\n /** Timestamp (ms since epoch) when the session ended (tab closed). */\r\n endedAt?: number;\r\n\r\n /** Raw `navigator.userAgent` string captured at session start. */\r\n userAgent: string;\r\n\r\n /**\r\n * Ordered list of navigation steps (route changes).\r\n * Each step contains the actions performed on that page.\r\n */\r\n steps: UiBlackboxStep[];\r\n\r\n /**\r\n * Parallel stream of form interaction events.\r\n * Ordered by timestamp, correlated to routes via `route` field.\r\n */\r\n formEvents: UiBlackboxFormEvent[];\r\n\r\n /**\r\n * Intercepted HTTP calls, ordered by timestamp.\r\n * Only requests explicitly marked with the `X-Ui-Blackbox` header.\r\n */\r\n calls: UiBlackboxHttpCall[];\r\n}\r\n\r\n// ─── Step (Route Change) ─────────────────────────────────────────────\r\n\r\n/**\r\n * A single navigation step created on every `NavigationEnd` event.\r\n * Contains all UI actions performed during this route.\r\n */\r\nexport interface UiBlackboxStep {\r\n /** Timestamp (ms) of the navigation event. */\r\n timestamp: number;\r\n\r\n /** The route URL navigated to. */\r\n route: string;\r\n\r\n /** The previous route URL (undefined for the first step). */\r\n previousRoute?: string;\r\n\r\n /**\r\n * Ordered list of UI actions (clicks) performed on this page.\r\n */\r\n actions: UiBlackboxAction[];\r\n}\r\n\r\n// ─── Action (UI Click) ──────────────────────────────────────────────\r\n\r\n/**\r\n * A single tracked UI action, typically a click.\r\n */\r\nexport interface UiBlackboxAction {\r\n /** Timestamp (ms) of the action. */\r\n timestamp: number;\r\n\r\n /** Type discriminator. Currently only `click` is supported. */\r\n type: 'click';\r\n\r\n /** Information about the clicked element. */\r\n target: UiBlackboxActionTarget;\r\n}\r\n\r\n/**\r\n * Minimal information about the element that was interacted with.\r\n */\r\nexport interface UiBlackboxActionTarget {\r\n /** HTML tag name (lowercase). */\r\n tag: string;\r\n\r\n /** Element `id` attribute, if present. */\r\n id?: string;\r\n\r\n /**\r\n * Custom tracking identifier, set via `data-track-id` attribute\r\n * or the `[uiTrack]` directive value.\r\n */\r\n trackId?: string;\r\n\r\n /** First 50 characters of `innerText` (trimmed). */\r\n text?: string;\r\n}\r\n\r\n// ─── Form Event ──────────────────────────────────────────────────────\r\n\r\n/** Discriminator for form event types. */\r\nexport type UiBlackboxFormEventType =\r\n | 'focus'\r\n | 'blur'\r\n | 'valueChange'\r\n | 'validationError';\r\n\r\n/**\r\n * A single form interaction event from the parallel form stream.\r\n *\r\n * Each event is timestamped and tagged with the current route, allowing\r\n * correlation with navigation steps on a shared timeline.\r\n */\r\nexport interface UiBlackboxFormEvent {\r\n /** Timestamp (ms) of the event. */\r\n timestamp: number;\r\n\r\n /** Route URL where the event occurred. */\r\n route: string;\r\n\r\n /** Schema `id` of the `UiFormBuilderComponent` that owns the field. */\r\n formId: string;\r\n\r\n /** `key` of the field descriptor from the form schema. */\r\n fieldKey: string;\r\n\r\n /** Type of form interaction. */\r\n eventType: UiBlackboxFormEventType;\r\n\r\n /** Optional metadata depending on event type and config. */\r\n metadata?: UiBlackboxFormEventMetadata;\r\n}\r\n\r\n/**\r\n * Optional metadata attached to a `UiBlackboxFormEvent`.\r\n */\r\nexport interface UiBlackboxFormEventMetadata {\r\n /** Field value (only captured when `config.formTracking.trackValues` is `true`). */\r\n value?: any;\r\n\r\n /** Whether the field is currently valid. */\r\n valid?: boolean;\r\n\r\n /** List of active validation error keys. */\r\n errors?: string[];\r\n\r\n /**\r\n * Full form values snapshot at the moment of the event.\r\n * Only captured when `config.formTracking.trackValues` is `true`.\r\n */\r\n formValues?: Record<string, any>;\r\n}\r\n\r\n// ─── HTTP Call ────────────────────────────────────────────────────────\r\n\r\n/**\r\n * A single intercepted HTTP call.\r\n *\r\n * Only requests bearing the `X-Ui-Blackbox` header are captured.\r\n */\r\nexport interface UiBlackboxHttpCall {\r\n /** Timestamp (ms) when the request was initiated. */\r\n timestamp: number;\r\n\r\n /** HTTP method (GET, POST, PUT, DELETE, …). */\r\n method: string;\r\n\r\n /** Request URL. */\r\n url: string;\r\n\r\n /** HTTP status code of the response (undefined if the request failed). */\r\n status?: number;\r\n\r\n /** Round-trip duration in milliseconds. */\r\n durationMs?: number;\r\n\r\n /** Request body payload (serialisable). */\r\n requestPayload?: any;\r\n\r\n /** Response headers filtered by the `X-Ui-Blackbox-Headers` regex. */\r\n responseHeaders?: Record<string, string>;\r\n\r\n /** The regex pattern used to filter response headers. */\r\n headerFilter?: string;\r\n}\r\n\r\n// ─── Internal Buffer Event ───────────────────────────────────────────\r\n\r\n/**\r\n * Union type for all events flowing through the centralised buffer.\r\n * @internal\r\n */\r\nexport type UiBlackboxBufferEvent =\r\n | { kind: 'action'; payload: UiBlackboxAction & { route: string } }\r\n | { kind: 'formEvent'; payload: UiBlackboxFormEvent }\r\n | { kind: 'httpCall'; payload: UiBlackboxHttpCall }\r\n | { kind: 'step'; payload: UiBlackboxStep };\r\n\r\n// ─── Defaults ────────────────────────────────────────────────────────\r\n\r\n/** Default configuration values. */\r\nexport const UI_BLACKBOX_DEFAULTS: UiBlackboxConfig = {\r\n maxStorageMb: 50,\r\n flushIntervalMs: 5000,\r\n flushThreshold: 20,\r\n bufferDebounceMs: 500,\r\n formTracking: {\r\n trackValues: false,\r\n trackFocus: true,\r\n trackBlur: true,\r\n trackValueChanges: true,\r\n trackValidation: true,\r\n debounceMs: 500,\r\n },\r\n};\r\n","/**\r\n * @module ng-ui-system/blackbox\r\n * Fingerprint service — generates a stable device/browser hash\r\n * using the open-source FingerprintJS library (MIT, no API key required).\r\n *\r\n * The fingerprint is computed once and cached in `localStorage` under\r\n * the key `__ui_bb_fp` to avoid redundant recalculations.\r\n */\r\n\r\nimport { Injectable, inject, PLATFORM_ID } from '@angular/core';\r\nimport { isPlatformBrowser } from '@angular/common';\r\nimport type { UiBlackboxFingerprint } from './blackbox.types';\r\n\r\n/** localStorage key for the cached fingerprint. */\r\nconst FP_CACHE_KEY = '__ui_bb_fp';\r\n\r\n/**\r\n * Generates and caches a stable browser/device fingerprint.\r\n *\r\n * Uses `@fingerprintjs/fingerprintjs` (open-source, MIT) which analyses\r\n * canvas rendering, WebGL, audio context, screen properties, timezone,\r\n * user-agent, and other browser signals to produce a stable hash.\r\n *\r\n * @usageNotes\r\n * ```typescript\r\n * const fp = inject(UiBlackboxFingerprintService);\r\n * const hash = await fp.getFingerprint();\r\n * // => \"a1b2c3d4e5f6...\" (stable across sessions)\r\n * ```\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class UiBlackboxFingerprintService {\r\n private readonly platformId = inject(PLATFORM_ID);\r\n private cached: UiBlackboxFingerprint | null = null;\r\n\r\n /**\r\n * Returns the stable fingerprint for this device/browser.\r\n *\r\n * On first call, loads FingerprintJS dynamically, computes the hash,\r\n * and caches it in both memory and `localStorage`.\r\n * Subsequent calls return the cached value immediately.\r\n */\r\n async getFingerprint(): Promise<UiBlackboxFingerprint> {\r\n // Return cached value if available\r\n if (this.cached) {\r\n return this.cached;\r\n }\r\n\r\n // SSR guard\r\n if (!isPlatformBrowser(this.platformId)) {\r\n return 'ssr-placeholder';\r\n }\r\n\r\n // Try localStorage cache first\r\n try {\r\n const stored = localStorage.getItem(FP_CACHE_KEY);\r\n if (stored) {\r\n this.cached = stored;\r\n return stored;\r\n }\r\n } catch {\r\n // localStorage may be unavailable (privacy mode, quota exceeded)\r\n }\r\n\r\n // Compute fingerprint via FingerprintJS\r\n try {\r\n const FingerprintJS = await import('@fingerprintjs/fingerprintjs');\r\n const agent = await FingerprintJS.load();\r\n const result = await agent.get();\r\n this.cached = result.visitorId;\r\n\r\n // Persist to localStorage\r\n try {\r\n localStorage.setItem(FP_CACHE_KEY, this.cached);\r\n } catch {\r\n // Silently ignore storage errors\r\n }\r\n\r\n return this.cached;\r\n } catch {\r\n // Fallback: generate a pseudo-fingerprint from available signals\r\n const fallback = this.generateFallbackFingerprint();\r\n this.cached = fallback;\r\n\r\n try {\r\n localStorage.setItem(FP_CACHE_KEY, fallback);\r\n } catch {\r\n // Silently ignore\r\n }\r\n\r\n return fallback;\r\n }\r\n }\r\n\r\n /**\r\n * Fallback fingerprint when FingerprintJS is unavailable.\r\n * Combines basic browser signals into a hash.\r\n * @internal\r\n */\r\n private generateFallbackFingerprint(): string {\r\n const signals = [\r\n navigator.userAgent,\r\n navigator.language,\r\n screen.width + 'x' + screen.height,\r\n screen.colorDepth?.toString() ?? '',\r\n Intl.DateTimeFormat().resolvedOptions().timeZone,\r\n navigator.hardwareConcurrency?.toString() ?? '',\r\n ].join('|');\r\n\r\n // Simple string hash (djb2)\r\n let hash = 5381;\r\n for (let i = 0; i < signals.length; i++) {\r\n hash = ((hash << 5) + hash + signals.charCodeAt(i)) >>> 0;\r\n }\r\n return hash.toString(36).padStart(12, '0');\r\n }\r\n}\r\n","/**\r\n * @module ng-ui-system/blackbox\r\n * IndexedDB storage adapter for BlackBox sessions.\r\n *\r\n * Handles persistence, compression (via native CompressionStream gzip),\r\n * quota enforcement, and JSONL export.\r\n *\r\n * Design notes:\r\n * - DB name: `ui-blackbox`, object store: `sessions`\r\n * - Each session is gzip-compressed before storage for both size\r\n * reduction and inherent obfuscation\r\n * - Quota enforced by total stored size; oldest sessions are pruned first\r\n */\r\n\r\nimport { Injectable, inject, PLATFORM_ID } from '@angular/core';\r\nimport { isPlatformBrowser } from '@angular/common';\r\nimport type { UiBlackboxSession, UiBlackboxConfig } from './blackbox.types';\r\nimport { UI_BLACKBOX_DEFAULTS } from './blackbox.types';\r\n\r\nconst DB_NAME = 'ui-blackbox';\r\nconst DB_VERSION = 1;\r\nconst STORE_NAME = 'sessions';\r\n\r\n/**\r\n * Low-level IndexedDB adapter for reading/writing compressed BlackBox sessions.\r\n *\r\n * @usageNotes\r\n * This service is used internally by `UiBlackboxService`.\r\n * Consumers should interact with the higher-level `UiBlackboxService` API.\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class UiBlackboxStorageService {\r\n private readonly platformId = inject(PLATFORM_ID);\r\n private db: IDBDatabase | null = null;\r\n private maxStorageMb = UI_BLACKBOX_DEFAULTS.maxStorageMb;\r\n\r\n // ─── Configuration ─────────────────────────────────────────────────\r\n\r\n /** Update the storage quota from the parent service config. */\r\n setMaxStorageMb(mb: number): void {\r\n this.maxStorageMb = mb;\r\n }\r\n\r\n // ─── Database lifecycle ────────────────────────────────────────────\r\n\r\n /** Open (or create) the IndexedDB database. */\r\n private async openDb(): Promise<IDBDatabase> {\r\n if (this.db) return this.db;\r\n if (!isPlatformBrowser(this.platformId)) {\r\n throw new Error('IndexedDB is not available in SSR');\r\n }\r\n\r\n return new Promise<IDBDatabase>((resolve, reject) => {\r\n const request = indexedDB.open(DB_NAME, DB_VERSION);\r\n\r\n request.onupgradeneeded = () => {\r\n const db = request.result;\r\n if (!db.objectStoreNames.contains(STORE_NAME)) {\r\n const store = db.createObjectStore(STORE_NAME, { keyPath: 'sessionId' });\r\n store.createIndex('fingerprint', 'fingerprint', { unique: false });\r\n store.createIndex('startedAt', 'startedAt', { unique: false });\r\n }\r\n };\r\n\r\n request.onsuccess = () => {\r\n this.db = request.result;\r\n resolve(this.db);\r\n };\r\n\r\n request.onerror = () => reject(request.error);\r\n });\r\n }\r\n\r\n // ─── Compression helpers ───────────────────────────────────────────\r\n\r\n /** Compress a string to a gzip Uint8Array using native CompressionStream. */\r\n private async compress(data: string): Promise<Uint8Array> {\r\n const encoder = new TextEncoder();\r\n const stream = new Blob([encoder.encode(data) as BlobPart])\r\n .stream()\r\n .pipeThrough(new CompressionStream('gzip'));\r\n\r\n const reader = stream.getReader();\r\n const chunks: Uint8Array[] = [];\r\n let done = false;\r\n\r\n while (!done) {\r\n const result = await reader.read();\r\n done = result.done;\r\n if (result.value) {\r\n chunks.push(result.value);\r\n }\r\n }\r\n\r\n // Merge chunks into a single ArrayBuffer-backed Uint8Array\r\n const totalLength = chunks.reduce((sum, c) => sum + c.length, 0);\r\n const buffer = new ArrayBuffer(totalLength);\r\n const merged = new Uint8Array(buffer);\r\n let offset = 0;\r\n for (const chunk of chunks) {\r\n merged.set(chunk, offset);\r\n offset += chunk.length;\r\n }\r\n return merged;\r\n }\r\n\r\n /** Decompress a gzip Uint8Array back to a string. */\r\n private async decompress(data: Uint8Array): Promise<string> {\r\n const stream = new Blob([data as BlobPart])\r\n .stream()\r\n .pipeThrough(new DecompressionStream('gzip'));\r\n\r\n const reader = stream.getReader();\r\n const decoder = new TextDecoder();\r\n let result = '';\r\n let done = false;\r\n\r\n while (!done) {\r\n const chunk = await reader.read();\r\n done = chunk.done;\r\n if (chunk.value) {\r\n result += decoder.decode(chunk.value, { stream: !done });\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n // ─── CRUD ──────────────────────────────────────────────────────────\r\n\r\n /**\r\n * Persist a session to IndexedDB (gzip-compressed).\r\n * Enforces quota after saving.\r\n */\r\n async saveSession(session: UiBlackboxSession): Promise<void> {\r\n const db = await this.openDb();\r\n const json = JSON.stringify(session);\r\n const compressed = await this.compress(json);\r\n\r\n return new Promise<void>((resolve, reject) => {\r\n const tx = db.transaction(STORE_NAME, 'readwrite');\r\n const store = tx.objectStore(STORE_NAME);\r\n\r\n // Store as { sessionId, fingerprint, startedAt, data: Uint8Array }\r\n store.put({\r\n sessionId: session.sessionId,\r\n fingerprint: session.fingerprint,\r\n startedAt: session.startedAt,\r\n sizeBytes: compressed.byteLength,\r\n data: compressed,\r\n });\r\n\r\n tx.oncomplete = () => {\r\n this.enforceQuota().then(resolve).catch(resolve);\r\n };\r\n tx.onerror = () => reject(tx.error);\r\n });\r\n }\r\n\r\n /**\r\n * Read and decompress a single session by ID.\r\n */\r\n async getSession(sessionId: string): Promise<UiBlackboxSession | null> {\r\n const db = await this.openDb();\r\n\r\n return new Promise((resolve, reject) => {\r\n const tx = db.transaction(STORE_NAME, 'readonly');\r\n const store = tx.objectStore(STORE_NAME);\r\n const req = store.get(sessionId);\r\n\r\n req.onsuccess = async () => {\r\n if (!req.result) {\r\n resolve(null);\r\n return;\r\n }\r\n try {\r\n const json = await this.decompress(req.result.data);\r\n resolve(JSON.parse(json));\r\n } catch (e) {\r\n reject(e);\r\n }\r\n };\r\n req.onerror = () => reject(req.error);\r\n });\r\n }\r\n\r\n /**\r\n * Get all stored sessions (decompressed).\r\n */\r\n async getAllSessions(): Promise<UiBlackboxSession[]> {\r\n const db = await this.openDb();\r\n\r\n return new Promise((resolve, reject) => {\r\n const tx = db.transaction(STORE_NAME, 'readonly');\r\n const store = tx.objectStore(STORE_NAME);\r\n const req = store.getAll();\r\n\r\n req.onsuccess = async () => {\r\n try {\r\n const sessions: UiBlackboxSession[] = [];\r\n for (const record of req.result) {\r\n const json = await this.decompress(record.data);\r\n sessions.push(JSON.parse(json));\r\n }\r\n resolve(sessions);\r\n } catch (e) {\r\n reject(e);\r\n }\r\n };\r\n req.onerror = () => reject(req.error);\r\n });\r\n }\r\n\r\n /**\r\n * Get all sessions for a given fingerprint.\r\n */\r\n async getSessionsByFingerprint(fingerprint: string): Promise<UiBlackboxSession[]> {\r\n const db = await this.openDb();\r\n\r\n return new Promise((resolve, reject) => {\r\n const tx = db.transaction(STORE_NAME, 'readonly');\r\n const store = tx.objectStore(STORE_NAME);\r\n const index = store.index('fingerprint');\r\n const req = index.getAll(fingerprint);\r\n\r\n req.onsuccess = async () => {\r\n try {\r\n const sessions: UiBlackboxSession[] = [];\r\n for (const record of req.result) {\r\n const json = await this.decompress(record.data);\r\n sessions.push(JSON.parse(json));\r\n }\r\n resolve(sessions);\r\n } catch (e) {\r\n reject(e);\r\n }\r\n };\r\n req.onerror = () => reject(req.error);\r\n });\r\n }\r\n\r\n /**\r\n * Generate a downloadable JSONL Blob of all sessions.\r\n * Each line is one JSON-serialised session (decompressed).\r\n */\r\n async exportDump(): Promise<Blob> {\r\n const sessions = await this.getAllSessions();\r\n const lines = sessions.map((s) => JSON.stringify(s)).join('\\n');\r\n return new Blob([lines], { type: 'application/x-ndjson' });\r\n }\r\n\r\n /**\r\n * Delete all stored sessions.\r\n */\r\n async clearAll(): Promise<void> {\r\n const db = await this.openDb();\r\n\r\n return new Promise<void>((resolve, reject) => {\r\n const tx = db.transaction(STORE_NAME, 'readwrite');\r\n const store = tx.objectStore(STORE_NAME);\r\n store.clear();\r\n tx.oncomplete = () => resolve();\r\n tx.onerror = () => reject(tx.error);\r\n });\r\n }\r\n\r\n // ─── Quota enforcement ─────────────────────────────────────────────\r\n\r\n /**\r\n * Prune oldest sessions until total stored size is under `maxStorageMb`.\r\n * @internal\r\n */\r\n async enforceQuota(): Promise<void> {\r\n const db = await this.openDb();\r\n const maxBytes = this.maxStorageMb * 1024 * 1024;\r\n\r\n return new Promise<void>((resolve, reject) => {\r\n const tx = db.transaction(STORE_NAME, 'readwrite');\r\n const store = tx.objectStore(STORE_NAME);\r\n const index = store.index('startedAt');\r\n\r\n // Collect all records sorted by startedAt (ascending = oldest first)\r\n const cursorReq = index.openCursor();\r\n const records: { key: IDBValidKey; size: number }[] = [];\r\n let totalSize = 0;\r\n\r\n cursorReq.onsuccess = () => {\r\n const cursor = cursorReq.result;\r\n if (cursor) {\r\n const size: number = cursor.value.sizeBytes || 0;\r\n totalSize += size;\r\n records.push({ key: cursor.primaryKey, size });\r\n cursor.continue();\r\n } else {\r\n // Cursor exhausted — prune if over quota\r\n if (totalSize <= maxBytes) {\r\n resolve();\r\n return;\r\n }\r\n\r\n let freed = 0;\r\n const target = totalSize - maxBytes;\r\n for (const record of records) {\r\n if (freed >= target) break;\r\n store.delete(record.key);\r\n freed += record.size;\r\n }\r\n resolve();\r\n }\r\n };\r\n\r\n cursorReq.onerror = () => reject(cursorReq.error);\r\n tx.onerror = () => reject(tx.error);\r\n });\r\n }\r\n}\r\n","/**\r\n * @module ng-ui-system/blackbox\r\n * Core BlackBox observability service — the main entry point for session\r\n * recording, event buffering, and export.\r\n *\r\n * Architecture:\r\n * - Root singleton (`providedIn: 'root'`)\r\n * - On first inject: generates fingerprint, creates session, subscribes to Router events\r\n * - Centralised in-memory buffer with periodic/threshold-based flush to IndexedDB\r\n * - `window:beforeunload` triggers a final best-effort async flush\r\n */\r\n\r\nimport {\r\n Injectable,\r\n inject,\r\n PLATFORM_ID,\r\n OnDestroy,\r\n NgZone,\r\n} from '@angular/core';\r\nimport { isPlatformBrowser } from '@angular/common';\r\nimport { Router, NavigationEnd } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\n\r\nimport {\r\n UiBlackboxConfig,\r\n UiBlackboxFormTrackingConfig,\r\n UiBlackboxSession,\r\n UiBlackboxStep,\r\n UiBlackboxAction,\r\n UiBlackboxFormEvent,\r\n UiBlackboxHttpCall,\r\n UiBlackboxBufferEvent,\r\n UI_BLACKBOX_DEFAULTS,\r\n} from './blackbox.types';\r\nimport { UiBlackboxFingerprintService } from './blackbox-fingerprint.service';\r\nimport { UiBlackboxStorageService } from './blackbox-storage.service';\r\n\r\n/**\r\n * Central BlackBox observability service.\r\n *\r\n * Records navigation, UI interactions, form events, and HTTP calls\r\n * into compressed sessions stored in IndexedDB.\r\n *\r\n * @usageNotes\r\n * The service activates automatically when injected. Provide it at root level\r\n * and it will start recording immediately.\r\n *\r\n * ```typescript\r\n * // app.config.ts — just importing the service is enough\r\n * import { UiBlackboxService } from '@gnggln/ng-ui-system';\r\n *\r\n * export const appConfig: ApplicationConfig = {\r\n * providers: [\r\n * // The service is providedIn: 'root', so it's auto-provided.\r\n * // To force eager initialisation:\r\n * { provide: APP_INITIALIZER, useFactory: () => () => inject(UiBlackboxService), multi: true },\r\n * ],\r\n * };\r\n * ```\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class UiBlackboxService implements OnDestroy {\r\n private readonly platformId = inject(PLATFORM_ID);\r\n private readonly router = inject(Router);\r\n private readonly zone = inject(NgZone);\r\n private readonly fingerprint = inject(UiBlackboxFingerprintService);\r\n private readonly storage = inject(UiBlackboxStorageService);\r\n\r\n private readonly destroy$ = new Subject<void>();\r\n private config: UiBlackboxConfig = { ...UI_BLACKBOX_DEFAULTS };\r\n\r\n // ─── Session state ─────────────────────────────────────────────────\r\n private session!: UiBlackboxSession;\r\n private currentStep: UiBlackboxStep | null = null;\r\n private initialised = false;\r\n\r\n // ─── Centralised event buffer ──────────────────────────────────────\r\n private buffer: UiBlackboxBufferEvent[] = [];\r\n private flushTimerId: ReturnType<typeof setInterval> | null = null;\r\n private beforeUnloadHandler: (() => void) | null = null;\r\n\r\n constructor() {\r\n if (isPlatformBrowser(this.platformId)) {\r\n this.init();\r\n }\r\n }\r\n\r\n // ─── Initialisation ────────────────────────────────────────────────\r\n\r\n private async init(): Promise<void> {\r\n // Generate session ID\r\n const sessionId = this.generateUuid();\r\n const fp = await this.fingerprint.getFingerprint();\r\n\r\n this.session = {\r\n sessionId,\r\n fingerprint: fp,\r\n startedAt: Date.now(),\r\n userAgent: navigator.userAgent,\r\n steps: [],\r\n formEvents: [],\r\n calls: [],\r\n };\r\n\r\n // Create initial step from current URL\r\n this.currentStep = {\r\n timestamp: Date.now(),\r\n route: this.router.url,\r\n actions: [],\r\n };\r\n this.session.steps.push(this.currentStep);\r\n\r\n // Subscribe to router navigation\r\n this.router.events\r\n .pipe(\r\n filter((e): e is NavigationEnd => e instanceof NavigationEnd),\r\n takeUntil(this.destroy$),\r\n )\r\n .subscribe((event) => {\r\n const previousRoute = this.currentStep?.route;\r\n this.currentStep = {\r\n timestamp: Date.now(),\r\n route: event.urlAfterRedirects,\r\n previousRoute,\r\n actions: [],\r\n };\r\n this.pushBufferEvent({ kind: 'step', payload: this.currentStep });\r\n });\r\n\r\n // Setup periodic flush (outside Angular zone to avoid triggering CD)\r\n this.zone.runOutsideAngular(() => {\r\n this.flushTimerId = setInterval(\r\n () => this.flush(),\r\n this.config.flushIntervalMs,\r\n );\r\n\r\n // Best-effort flush on tab close (IndexedDB is async, no sync fallback)\r\n this.beforeUnloadHandler = () => {\r\n this.session.endedAt = Date.now();\r\n void this.flush();\r\n };\r\n window.addEventListener('beforeunload', this.beforeUnloadHandler);\r\n });\r\n\r\n this.initialised = true;\r\n }\r\n\r\n // ─── Public API: Configuration ─────────────────────────────────────\r\n\r\n /**\r\n * Update the BlackBox configuration.\r\n * Can be called at any time; changes take effect immediately.\r\n */\r\n configure(config: Partial<Omit<UiBlackboxConfig, 'formTracking'>> & { formTracking?: Partial<UiBlackboxFormTrackingConfig> }): void {\r\n this.config = {\r\n ...this.config,\r\n ...config,\r\n formTracking: {\r\n ...this.config.formTracking,\r\n ...(config.formTracking ?? {}),\r\n },\r\n };\r\n this.storage.setMaxStorageMb(this.config.maxStorageMb);\r\n\r\n // Restart flush timer with new interval\r\n if (this.flushTimerId !== null) {\r\n clearInterval(this.flushTimerId);\r\n this.zone.runOutsideAngular(() => {\r\n this.flushTimerId = setInterval(\r\n () => this.flush(),\r\n this.config.flushIntervalMs,\r\n );\r\n });\r\n }\r\n }\r\n\r\n /** Returns the current configuration (readonly snapshot). */\r\n getConfig(): Readonly<UiBlackboxConfig> {\r\n return { ...this.config };\r\n }\r\n\r\n // ─── Public API: Tracking ──────────────────────────────────────────\r\n\r\n /**\r\n * Manually track a UI action (click).\r\n *\r\n * Called automatically by `UiButtonAreaComponent` and the `[uiTrack]` directive.\r\n * Can also be called programmatically for custom interactions.\r\n *\r\n * @param trackId - Identifier for the action (e.g. button id, link name).\r\n * @param meta - Optional metadata: `tag`, `text`, `id` of the element.\r\n */\r\n trackAction(\r\n trackId: string,\r\n meta?: { tag?: string; text?: string; id?: string },\r\n ): void {\r\n if (!this.initialised) return;\r\n\r\n const action: UiBlackboxAction = {\r\n timestamp: Date.now(),\r\n type: 'click',\r\n target: {\r\n tag: meta?.tag ?? 'unknown',\r\n id: meta?.id,\r\n trackId,\r\n text: meta?.text?.substring(0, 50),\r\n },\r\n };\r\n\r\n // Add to current step immediately (for in-memory session access)\r\n this.currentStep?.actions.push(action);\r\n\r\n // Also push to buffer for persistence\r\n this.pushBufferEvent({\r\n kind: 'action',\r\n payload: { ...action, route: this.currentStep?.route ?? this.router.url },\r\n });\r\n }\r\n\r\n /**\r\n * Track a form interaction event.\r\n *\r\n * Called automatically by `UiFormBuilderComponent` when the BlackBox\r\n * service is available.\r\n */\r\n trackFormEvent(event: UiBlackboxFormEvent): void {\r\n if (!this.initialised) return;\r\n\r\n this.session.formEvents.push(event);\r\n this.pushBufferEvent({ kind: 'formEvent', payload: event });\r\n }\r\n\r\n /**\r\n * Track an intercepted HTTP call.\r\n * Called by `UiBlackboxInterceptor`.\r\n * @internal\r\n */\r\n trackHttpCall(call: UiBlackboxHttpCall): void {\r\n if (!this.initialised) return;\r\n\r\n this.session.calls.push(call);\r\n this.pushBufferEvent({ kind: 'httpCall', payload: call });\r\n }\r\n\r\n // ─── Public API: Session access ────────────────────────────────────\r\n\r\n /**\r\n * Returns the current in-memory session (live, not yet flushed).\r\n * Useful for debugging or real-time inspection.\r\n */\r\n getCurrentSession(): UiBlackboxSession {\r\n return this.session;\r\n }\r\n\r\n /**\r\n * Retrieve all sessions stored in IndexedDB (decompressed).\r\n */\r\n async getSessionHistory(): Promise<UiBlackboxSession[]> {\r\n return this.storage.getAllSessions();\r\n }\r\n\r\n /**\r\n * Retrieve sessions for the current device fingerprint.\r\n */\r\n async getSessionsForDevice(): Promise<UiBlackboxSession[]> {\r\n const fp = await this.fingerprint.getFingerprint();\r\n return this.storage.getSessionsByFingerprint(fp);\r\n }\r\n\r\n // ─── Public API: Export ────────────────────────────────────────────\r\n\r\n /**\r\n * Export all sessions as a downloadable JSONL Blob.\r\n *\r\n * @returns A Blob containing JSONL data (one session per line).\r\n *\r\n * @example\r\n * ```typescript\r\n * const blob = await blackbox.exportSessions();\r\n * const url = URL.createObjectURL(blob);\r\n * const a = document.createElement('a');\r\n * a.href = url;\r\n * a.download = 'blackbox-sessions.jsonl';\r\n * a.click();\r\n * ```\r\n */\r\n async exportSessions(): Promise<Blob> {\r\n // Flush current session first\r\n await this.flush();\r\n return this.storage.exportDump();\r\n }\r\n\r\n // ─── Public API: Lifecycle ─────────────────────────────────────────\r\n\r\n /**\r\n * Explicitly end the current session.\r\n * Flushes all buffered events and marks the session as ended.\r\n */\r\n async endSession(): Promise<void> {\r\n if (!this.initialised) return;\r\n this.session.endedAt = Date.now();\r\n await this.flush();\r\n }\r\n\r\n /**\r\n * Clear all stored sessions from IndexedDB.\r\n */\r\n async clearHistory(): Promise<void> {\r\n return this.storage.clearAll();\r\n }\r\n\r\n // ─── Buffer management ─────────────────────────────────────────────\r\n\r\n /**\r\n * Push an event into the centralised buffer.\r\n * Triggers an immediate flush if the buffer exceeds the threshold.\r\n * @internal\r\n */\r\n private pushBufferEvent(event: UiBlackboxBufferEvent): void {\r\n this.buffer.push(event);\r\n if (this.buffer.length >= this.config.flushThreshold) {\r\n this.flush();\r\n }\r\n }\r\n\r\n /**\r\n * Flush buffered events to IndexedDB asynchronously.\r\n * @internal\r\n */\r\n private async flush(): Promise<void> {\r\n if (!this.initialised || this.buffer.length === 0) return;\r\n\r\n // Drain buffer\r\n const events = this.buffer.splice(0);\r\n\r\n // Apply step events to the session\r\n for (const event of events) {\r\n if (event.kind === 'step') {\r\n // Steps are already pushed in real-time; ensure they're in the session\r\n if (!this.session.steps.includes(event.payload)) {\r\n this.session.steps.push(event.payload);\r\n }\r\n }\r\n // Actions, formEvents, httpCalls are already pushed in real-time\r\n // to the in-memory session by trackAction/trackFormEvent/trackHttpCall\r\n }\r\n\r\n // Save the full session snapshot\r\n try {\r\n await this.storage.saveSession(this.session);\r\n } catch (e) {\r\n // storage error — re-enqueue events for next flush\r\n console.warn('[UiBlackbox] Storage flush failed:', e);\r\n }\r\n }\r\n\r\n // ─── Utilities ─────────────────────────────────────────────────────\r\n\r\n /** Generate a UUID v4. */\r\n private generateUuid(): string {\r\n if (typeof crypto !== 'undefined' && crypto.randomUUID) {\r\n return crypto.randomUUID();\r\n }\r\n // Fallback for older browsers\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\r\n const r = (Math.random() * 16) | 0;\r\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n }\r\n\r\n // ─── Cleanup ───────────────────────────────────────────────────────\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n\r\n if (this.flushTimerId !== null) {\r\n clearInterval(this.flushTimerId);\r\n }\r\n\r\n if (this.beforeUnloadHandler) {\r\n window.removeEventListener('beforeunload', this.beforeUnloadHandler);\r\n }\r\n\r\n // Final flush\r\n void this.flush();\r\n }\r\n}\r\n","/**\r\n * @module ng-ui-system/http\r\n * Central HTTP orchestration service.\r\n *\r\n * Wraps Angular's `HttpClient` with an automatic pipeline:\r\n * - Loader activation via `UiLayoutService`\r\n * - Success / error toasts via `UiToastService`\r\n * - Debounced toast messages to prevent spam\r\n * - Optional BlackBox tracking of every call\r\n * - Pluggable custom headers via `UiHeadersProvider`\r\n *\r\n * @usageNotes\r\n * ### Basic GET\r\n * ```typescript\r\n * const http = inject(UiHttpService);\r\n * const endpoint: UiEndpoint = {\r\n * url: '/api/users',\r\n * id: 'users_list',\r\n * };\r\n * http.get<User[]>(endpoint).subscribe(users => { ... });\r\n * ```\r\n *\r\n * ### POST with success toast\r\n * ```typescript\r\n * const endpoint: UiEndpoint = {\r\n * url: '/api/users',\r\n * id: 'users_create',\r\n * showSuccess: true,\r\n * messages: { success: 'Utente creato!' },\r\n * };\r\n * http.post<User>(endpoint, payload).subscribe();\r\n * ```\r\n *\r\n * ### Custom headers provider\r\n * ```typescript\r\n * // app.config.ts\r\n * { provide: UI_HEADERS_PROVIDER, useClass: MyAuthHeaders }\r\n * ```\r\n */\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError, finalize, map } from 'rxjs/operators';\r\n\r\nimport type { UiEndpoint } from '../../core/types/index';\r\nimport { UiHttpMessageHandler } from './http-message.handler';\r\nimport { UI_HTTP_CONFIG, UI_HEADERS_PROVIDER } from './http.tokens';\r\nimport { UiBlackboxService } from '../blackbox/blackbox.service';\r\n\r\n/**\r\n * Central HTTP service with automatic loader, toast, and error handling.\r\n *\r\n * All toast flags default to `false` — enable them per-endpoint via\r\n * `showSuccess: true` and/or `showError: true`.\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class UiHttpService {\r\n private readonly http = inject(HttpClient);\r\n private readonly messageHandler = inject(UiHttpMessageHandler);\r\n private readonly config = inject(UI_HTTP_CONFIG, { optional: true });\r\n private readonly headersProvider = inject(UI_HEADERS_PROVIDER, { optional: true });\r\n private readonly blackbox = inject(UiBlackboxService, { optional: true });\r\n\r\n /** Resolved base URL from config token. */\r\n private get baseUrl(): string {\r\n return this.config?.baseUrl ?? '';\r\n }\r\n\r\n // ── HTTP Methods ───────────────────────────────────────────────────\r\n\r\n /** Execute a **GET** request. */\r\n get<T>(endpoint: UiEndpoint, options: { headers?: HttpHeaders; params?: any } = {}): Observable<T> {\r\n return this._request<T>('GET', endpoint, null, options);\r\n }\r\n\r\n /** Execute a **POST** request. */\r\n post<T>(endpoint: UiEndpoint, body: unknown, options: { headers?: HttpHeaders; params?: any } = {}): Observable<T> {\r\n return this._request<T>('POST', endpoint, body, options);\r\n }\r\n\r\n /** Execute a **PUT** request. */\r\n put<T>(endpoint: UiEndpoint, body: unknown, options: { headers?: HttpHeaders; params?: any } = {}): Observable<T> {\r\n return this._request<T>('PUT', endpoint, body, options);\r\n }\r\n\r\n /** Execute a **PATCH** request. */\r\n patch<T>(endpoint: UiEndpoint, body: unknown, options: { headers?: HttpHeaders; params?: any } = {}): Observable<T> {\r\n return this._request<T>('PATCH', endpoint, body, options);\r\n }\r\n\r\n /** Execute a **DELETE** request. */\r\n delete<T>(endpoint: UiEndpoint, body?: unknown, options: { headers?: HttpHeaders; params?: any } = {}): Observable<T> {\r\n return this._request<T>('DELETE', endpoint, body ?? null, options);\r\n }\r\n\r\n /**\r\n * Download a **binary file** (Blob).\r\n *\r\n * Applies the same loader / toast pipeline as JSON requests.\r\n */\r\n download(endpoint: UiEndpoint, options: { headers?: HttpHeaders; params?: any } = {}): Observable<Blob> {\r\n const headers = this.buildHeaders(options.headers);\r\n const requestOptions = {\r\n headers,\r\n params: options.params,\r\n observe: 'body' as const,\r\n responseType: 'blob' as const,\r\n };\r\n const url = this.baseUrl + endpoint.url;\r\n const startTime = Date.now();\r\n\r\n const observable = this.http.get(url, requestOptions);\r\n\r\n return this._handleRequest(observable, endpoint, 'GET', url, startTime);\r\n }\r\n\r\n // ── Manual controls ────────────────────────────────────────────────\r\n\r\n /** Show a custom success toast (not tied to an endpoint). */\r\n showCustomSuccess(message: string): void {\r\n this.messageHandler.showCustomSuccess(message);\r\n }\r\n\r\n /** Show a custom error toast (not tied to an endpoint). */\r\n showCustomError(message: string): void {\r\n this.messageHandler.showCustomError(message);\r\n }\r\n\r\n /** Manually control the loader state. */\r\n setLoading(loading: boolean): void {\r\n if (loading) {\r\n this.messageHandler.startLoading();\r\n } else {\r\n this.messageHandler.stopLoading();\r\n }\r\n }\r\n\r\n /** Show a success toast for a specific endpoint (manual trigger). */\r\n showEndpointSuccess(endpoint: UiEndpoint): void {\r\n this.messageHandler.showSuccess(endpoint);\r\n }\r\n\r\n /** Show an error toast for a specific endpoint (manual trigger). */\r\n showEndpointError(endpoint: UiEndpoint, error?: any, fallbackMessage?: string): void {\r\n this.messageHandler.showError(endpoint, error, fallbackMessage);\r\n }\r\n\r\n /** Cancel all pending debounce timeouts. */\r\n clearAllToastTimeouts(): void {\r\n this.messageHandler.clearAllTimeouts();\r\n }\r\n\r\n // ── Internals ──────────────────────────────────────────────────────\r\n\r\n /**\r\n * Generic JSON request handler.\r\n * Builds headers, serialises body, and pipes through the common pipeline.\r\n */\r\n private _request<T>(\r\n method: string,\r\n endpoint: UiEndpoint,\r\n body: unknown,\r\n options: { headers?: HttpHeaders; params?: any },\r\n ): Observable<T> {\r\n const headers = this.buildHeaders(options.headers);\r\n const url = this.baseUrl + endpoint.url;\r\n const startTime = Date.now();\r\n\r\n const requestOptions: Record<string, any> = {\r\n headers,\r\n params: options.params,\r\n body: body != null ? JSON.stringify(body) : undefined,\r\n observe: 'body' as const,\r\n };\r\n\r\n const observable = this.http.request<T>(method, url, requestOptions);\r\n return this._handleRequest(observable, endpoint, method, url, startTime);\r\n }\r\n\r\n /**\r\n * Common pipeline applied to every HTTP request:\r\n * 1. Start loader\r\n * 2. On success → show success toast\r\n * 3. On error → show error toast, log, re-throw\r\n * 4. Always stop loader\r\n * 5. Track in BlackBox (if available and endpoint is trackable)\r\n */\r\n private _handleRequest<T>(\r\n observable: Observable<T>,\r\n endpoint: UiEndpoint,\r\n method: string,\r\n url: string,\r\n startTime: number,\r\n ): Observable<T> {\r\n this.messageHandler.startLoading();\r\n\r\n return observable.pipe(\r\n map((response) => {\r\n this.messageHandler.showSuccess(endpoint);\r\n this.trackBlackbox(method, url, startTime, 200, endpoint);\r\n return response;\r\n }),\r\n catchError((error: HttpErrorResponse) => {\r\n this.handleErrors(error, endpoint);\r\n this.trackBlackbox(method, url, startTime, error.status ?? 0, endpoint);\r\n return throwError(() => error);\r\n }),\r\n finalize(() => this.messageHandler.stopLoading()),\r\n );\r\n }\r\n\r\n /**\r\n * Build the final HttpHeaders by merging:\r\n * 1. Default headers from config\r\n * 2. Custom headers from UiHeadersProvider\r\n * 3. Per-request headers\r\n */\r\n private buildHeaders(requestHeaders?: HttpHeaders): HttpHeaders {\r\n const defaults: Record<string, string> = {\r\n 'Content-Type': 'application/json; charset=utf-8',\r\n ...(this.config?.defaultHeaders ?? {}),\r\n };\r\n\r\n // Apply custom headers from provider\r\n const custom = this.headersProvider?.getHeaders() ?? {};\r\n\r\n let headers = new HttpHeaders({ ...defaults, ...custom });\r\n\r\n // Merge per-request headers\r\n if (requestHeaders) {\r\n requestHeaders.keys().forEach(key => {\r\n const value = requestHeaders.get(key);\r\n if (value !== null) {\r\n headers = headers.set(key, value);\r\n }\r\n });\r\n }\r\n\r\n return headers;\r\n }\r\n\r\n /**\r\n * Centralised error handling.\r\n * Logs the error and delegates toast display to the message handler.\r\n */\r\n private handleErrors(error: HttpErrorResponse, endpoint: UiEndpoint): void {\r\n console.error(`[UiHttpService] API Error (${error.status}):`, error.url, error);\r\n this.messageHandler.showError(endpoint, error, 'Si è verificato un errore imprevisto');\r\n }\r\n\r\n /**\r\n * Track the HTTP call in BlackBox if the service is available\r\n * and the endpoint hasn't opted out.\r\n */\r\n private trackBlackbox(\r\n method: string,\r\n url: string,\r\n startTime: number,\r\n status: number,\r\n endpoint: UiEndpoint,\r\n ): void {\r\n if (!this.blackbox || endpoint.trackable === false) return;\r\n\r\n this.blackbox.trackHttpCall({\r\n timestamp: startTime,\r\n method,\r\n url,\r\n status,\r\n durationMs: Date.now() - startTime,\r\n });\r\n }\r\n}\r\n","/**\r\n * ng-ui-system — HTTP Orchestration Service entry point.\r\n *\r\n * @example\r\n * ```typescript\r\n * import {\r\n * UiHttpService,\r\n * UiHttpMessageHandler,\r\n * UI_HTTP_CONFIG,\r\n * UI_HEADERS_PROVIDER,\r\n * } from '@gnggln/ng-ui-system';\r\n * ```\r\n */\r\n\r\n// Services\r\nexport { UiHttpService } from './http.service';\r\nexport { UiHttpMessageHandler } from './http-message.handler';\r\n\r\n// Tokens\r\nexport { UI_HTTP_CONFIG, UI_HEADERS_PROVIDER } from './http.tokens';\r\n\r\n// Types\r\nexport type { UiHttpConfig, UiHeadersProvider } from './http.types';\r\n","/**\n * Bootstrap del secondary entry `@gnggln/ng-ui-system/http`. Servizio HTTP e tipi endpoint.\n */\nexport * from './lib/components/http/index';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './entry-http';\n"],"names":[],"mappings":"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"}