@sdcorejs/angular 19.1.3 → 19.1.5

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 (298) hide show
  1. package/README.md +19 -14
  2. package/components/audit-diff/index.d.ts +2 -0
  3. package/components/audit-diff/src/audit-diff.component.d.ts +30 -0
  4. package/components/audit-diff/src/audit-diff.engine.d.ts +40 -0
  5. package/components/badge/src/badge.component.d.ts +1 -1
  6. package/components/breadcrumb/index.d.ts +1 -0
  7. package/components/breadcrumb/src/breadcrumb.component.d.ts +50 -0
  8. package/components/data-state/index.d.ts +1 -0
  9. package/components/data-state/src/data-state.component.d.ts +40 -0
  10. package/components/document-builder/src/components/header-footer-builder/header-footer-builder.component.d.ts +1 -2
  11. package/components/document-builder/src/document-builder.component.d.ts +4 -4
  12. package/components/form-generic/src/components/form-builder/components/attribute-expression/attribute-expression.component.d.ts +7 -8
  13. package/components/form-generic/src/components/form-builder/components/attribute-input/attribute-input.component.d.ts +4 -5
  14. package/components/form-generic/src/components/form-builder/components/attribute-input-number/attribute-input-number.component.d.ts +1 -2
  15. package/components/form-generic/src/components/form-builder/components/attribute-parameter/attribute-parameter.component.d.ts +6 -5
  16. package/components/form-generic/src/components/form-builder/components/attribute-select/attribute-select.component.d.ts +4 -5
  17. package/components/form-generic/src/components/form-builder/components/attribute-selection/attribute-selection.component.d.ts +9 -9
  18. package/components/form-generic/src/components/form-builder/components/attribute-selection/components/build-queries/build-queries.component.d.ts +8 -7
  19. package/components/form-generic/src/components/form-builder/components/attribute-selection/components/build-variables/build-variables.component.d.ts +8 -7
  20. package/components/form-generic/src/components/form-builder/components/attribute-switch/attribute-switch.component.d.ts +3 -4
  21. package/components/form-generic/src/components/form-builder/components/attribute-table/attribute-table.component.d.ts +5 -6
  22. package/components/form-generic/src/components/form-builder/components/attribute-template/attribute-template.component.d.ts +1 -2
  23. package/components/form-generic/src/components/form-builder/components/attribute-textarea/attribute-textarea.component.d.ts +4 -5
  24. package/components/form-generic/src/components/form-builder/components/checkbox/attribute/checkbox-attribute.component.d.ts +6 -6
  25. package/components/form-generic/src/components/form-builder/components/chip-calendar/attribute/chip-calendar-attribute.component.d.ts +6 -6
  26. package/components/form-generic/src/components/form-builder/components/chip-calendar/control/chip-calendar-control.component.d.ts +3 -3
  27. package/components/form-generic/src/components/form-builder/components/chip-string/attribute/chip-string-attribute.component.d.ts +6 -6
  28. package/components/form-generic/src/components/form-builder/components/chip-string/control/chip-string-control.component.d.ts +3 -3
  29. package/components/form-generic/src/components/form-builder/components/configure-validation/configure-validation.component.d.ts +2 -2
  30. package/components/form-generic/src/components/form-builder/components/datetime/attribute/datetime-attribute.component.d.ts +6 -6
  31. package/components/form-generic/src/components/form-builder/components/datetime/control/datetime-control.component.d.ts +3 -3
  32. package/components/form-generic/src/components/form-builder/components/expression-builder/expression-builder.component.d.ts +6 -5
  33. package/components/form-generic/src/components/form-builder/components/html/attribute/components/build-queries/build-queries.component.d.ts +7 -6
  34. package/components/form-generic/src/components/form-builder/components/html/attribute/html-attribute.component.d.ts +7 -8
  35. package/components/form-generic/src/components/form-builder/components/html/control/html-control.component.d.ts +3 -4
  36. package/components/form-generic/src/components/form-builder/components/number/attribute/number-attribute.component.d.ts +6 -6
  37. package/components/form-generic/src/components/form-builder/components/number/control/number-control.component.d.ts +3 -3
  38. package/components/form-generic/src/components/form-builder/components/radio/attribute/radio-attribute.component.d.ts +6 -6
  39. package/components/form-generic/src/components/form-builder/components/radio/control/radio-control.component.d.ts +3 -3
  40. package/components/form-generic/src/components/form-builder/components/select/attribute/select-attribute.component.d.ts +6 -6
  41. package/components/form-generic/src/components/form-builder/components/select/control/select-control.component.d.ts +3 -3
  42. package/components/form-generic/src/components/form-builder/components/table/attribute/table-attribute.component.d.ts +6 -6
  43. package/components/form-generic/src/components/form-builder/components/table/control/table-control.component.d.ts +3 -3
  44. package/components/form-generic/src/components/form-builder/components/textarea/attribute/textarea-attribute.component.d.ts +6 -6
  45. package/components/form-generic/src/components/form-builder/components/textarea/control/textarea-control.component.d.ts +3 -3
  46. package/components/form-generic/src/components/form-builder/components/textfield/attribute/textfield-attribute.component.d.ts +6 -6
  47. package/components/form-generic/src/components/form-builder/components/textfield/control/textfield-control.component.d.ts +3 -3
  48. package/components/form-generic/src/components/form-builder/components/upload/attribute/upload-attribute.component.d.ts +6 -6
  49. package/components/form-generic/src/components/form-builder/components/upload/control/upload-control.component.d.ts +3 -3
  50. package/components/form-generic/src/components/form-render/components/item/components/chip-calendar/chip-calendar.component.d.ts +7 -6
  51. package/components/form-generic/src/components/form-render/components/item/components/chip-string/chip-string.component.d.ts +7 -6
  52. package/components/form-generic/src/components/form-render/components/item/components/datetime/datetime.component.d.ts +7 -7
  53. package/components/form-generic/src/components/form-render/components/item/components/html/html.component.d.ts +6 -6
  54. package/components/form-generic/src/components/form-render/components/item/components/number/number.component.d.ts +7 -6
  55. package/components/form-generic/src/components/form-render/components/item/components/radio/radio.component.d.ts +6 -7
  56. package/components/form-generic/src/components/form-render/components/item/components/select/select.component.d.ts +6 -7
  57. package/components/form-generic/src/components/form-render/components/item/components/table/table.component.d.ts +8 -8
  58. package/components/form-generic/src/components/form-render/components/item/components/textarea/textarea.component.d.ts +7 -6
  59. package/components/form-generic/src/components/form-render/components/item/components/textfield/textfield.component.d.ts +7 -6
  60. package/components/form-generic/src/components/form-render/components/item/components/upload/upload.component.d.ts +7 -6
  61. package/components/form-generic/src/components/form-render/components/item/item.component.d.ts +4 -4
  62. package/components/form-generic/src/components/sd-feel-expression/sd-feel-expression.component.d.ts +8 -9
  63. package/components/form-generic/src/pipes/component-viewed.pipe.d.ts +2 -3
  64. package/components/form-generic/src/pipes/html.pipe.d.ts +2 -2
  65. package/components/form-generic/src/services/form-render.service.d.ts +2 -2
  66. package/components/import-excel/src/import-excel.component.d.ts +4 -7
  67. package/components/import-excel/src/pipes/column-transform.pipe.d.ts +3 -2
  68. package/components/index.d.ts +4 -0
  69. package/components/job-progress/index.d.ts +1 -0
  70. package/components/job-progress/src/job-progress.component.d.ts +34 -0
  71. package/components/mini-editor/src/mini-editor.component.d.ts +7 -7
  72. package/components/modal/src/modal.component.d.ts +6 -1
  73. package/components/preview/index.d.ts +3 -0
  74. package/components/preview/src/preview-pdf/preview-pdf.browser.d.ts +28 -0
  75. package/components/preview/src/preview-pdf/preview-pdf.component.d.ts +61 -23
  76. package/components/preview/src/preview-pdf/preview-pdf.pdfjs.d.ts +77 -0
  77. package/components/preview/src/preview-pdf/preview-pdf.print.d.ts +10 -0
  78. package/components/preview/src/preview-pdf/preview-pdf.types.d.ts +11 -9
  79. package/components/side-drawer/src/side-drawer.component.d.ts +6 -1
  80. package/components/tab/src/tab-group.component.d.ts +1 -0
  81. package/components/tab/src/tab.component.d.ts +7 -1
  82. package/components/tab-router/src/components/tab-router-item/tab-router-item.component.d.ts +3 -4
  83. package/components/tab-router/src/pipes/tab-info.pipe.d.ts +2 -2
  84. package/components/tab-router/src/services/tab-decorator.service.d.ts +2 -1
  85. package/components/table/src/components/filter/column-filter/column-filter.component.d.ts +1 -1
  86. package/components/table/src/components/popup-export/popup-export.component.d.ts +6 -6
  87. package/components/table/src/models/table-column.model.d.ts +1 -1
  88. package/components/table/src/services/config.service.d.ts +3 -2
  89. package/components/table/src/services/table-filter/table-filter.model.d.ts +1 -1
  90. package/components/table/src/services/table-filter/table-filter.service.d.ts +2 -2
  91. package/components/tree/src/tree.component.d.ts +13 -2
  92. package/components/tree/src/tree.model.d.ts +11 -0
  93. package/components/upload-file/src/components/preview/preview.component.d.ts +4 -4
  94. package/directives/src/sd-hover-copy.directive.d.ts +6 -5
  95. package/directives/src/sd-href.directive.d.ts +2 -2
  96. package/directives/src/sd-scroll.directive.d.ts +3 -2
  97. package/fesm2022/sdcorejs-angular-components-anchor.mjs +14 -14
  98. package/fesm2022/sdcorejs-angular-components-anchor.mjs.map +1 -1
  99. package/fesm2022/sdcorejs-angular-components-audit-diff.mjs +332 -0
  100. package/fesm2022/sdcorejs-angular-components-audit-diff.mjs.map +1 -0
  101. package/fesm2022/sdcorejs-angular-components-badge.mjs +1 -0
  102. package/fesm2022/sdcorejs-angular-components-badge.mjs.map +1 -1
  103. package/fesm2022/sdcorejs-angular-components-breadcrumb.mjs +121 -0
  104. package/fesm2022/sdcorejs-angular-components-breadcrumb.mjs.map +1 -0
  105. package/fesm2022/sdcorejs-angular-components-data-state.mjs +68 -0
  106. package/fesm2022/sdcorejs-angular-components-data-state.mjs.map +1 -0
  107. package/fesm2022/sdcorejs-angular-components-document-builder.mjs +16 -21
  108. package/fesm2022/sdcorejs-angular-components-document-builder.mjs.map +1 -1
  109. package/fesm2022/sdcorejs-angular-components-editor.mjs +6 -4
  110. package/fesm2022/sdcorejs-angular-components-editor.mjs.map +1 -1
  111. package/fesm2022/sdcorejs-angular-components-form-generic.mjs +463 -806
  112. package/fesm2022/sdcorejs-angular-components-form-generic.mjs.map +1 -1
  113. package/fesm2022/sdcorejs-angular-components-import-excel.mjs +23 -33
  114. package/fesm2022/sdcorejs-angular-components-import-excel.mjs.map +1 -1
  115. package/fesm2022/sdcorejs-angular-components-job-progress.mjs +97 -0
  116. package/fesm2022/sdcorejs-angular-components-job-progress.mjs.map +1 -0
  117. package/fesm2022/sdcorejs-angular-components-mini-editor.mjs +9 -19
  118. package/fesm2022/sdcorejs-angular-components-mini-editor.mjs.map +1 -1
  119. package/fesm2022/sdcorejs-angular-components-modal.mjs +60 -3
  120. package/fesm2022/sdcorejs-angular-components-modal.mjs.map +1 -1
  121. package/fesm2022/sdcorejs-angular-components-preview.mjs +1437 -217
  122. package/fesm2022/sdcorejs-angular-components-preview.mjs.map +1 -1
  123. package/fesm2022/sdcorejs-angular-components-query-bar.mjs +4 -4
  124. package/fesm2022/sdcorejs-angular-components-query-bar.mjs.map +1 -1
  125. package/fesm2022/sdcorejs-angular-components-query-builder.mjs +1 -1
  126. package/fesm2022/sdcorejs-angular-components-query-builder.mjs.map +1 -1
  127. package/fesm2022/sdcorejs-angular-components-side-drawer.mjs +38 -1
  128. package/fesm2022/sdcorejs-angular-components-side-drawer.mjs.map +1 -1
  129. package/fesm2022/sdcorejs-angular-components-tab-router.mjs +16 -22
  130. package/fesm2022/sdcorejs-angular-components-tab-router.mjs.map +1 -1
  131. package/fesm2022/sdcorejs-angular-components-tab.mjs +47 -3
  132. package/fesm2022/sdcorejs-angular-components-tab.mjs.map +1 -1
  133. package/fesm2022/sdcorejs-angular-components-table.mjs +94 -61
  134. package/fesm2022/sdcorejs-angular-components-table.mjs.map +1 -1
  135. package/fesm2022/sdcorejs-angular-components-tree.mjs +185 -16
  136. package/fesm2022/sdcorejs-angular-components-tree.mjs.map +1 -1
  137. package/fesm2022/sdcorejs-angular-components-upload-file.mjs +14 -21
  138. package/fesm2022/sdcorejs-angular-components-upload-file.mjs.map +1 -1
  139. package/fesm2022/sdcorejs-angular-components.mjs +4 -0
  140. package/fesm2022/sdcorejs-angular-components.mjs.map +1 -1
  141. package/fesm2022/sdcorejs-angular-directives.mjs +29 -41
  142. package/fesm2022/sdcorejs-angular-directives.mjs.map +1 -1
  143. package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs +7 -7
  144. package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs.map +1 -1
  145. package/fesm2022/sdcorejs-angular-forms-checkbox.mjs +20 -73
  146. package/fesm2022/sdcorejs-angular-forms-checkbox.mjs.map +1 -1
  147. package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs +6 -3
  148. package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs.map +1 -1
  149. package/fesm2022/sdcorejs-angular-forms-chip.mjs +6 -3
  150. package/fesm2022/sdcorejs-angular-forms-chip.mjs.map +1 -1
  151. package/fesm2022/sdcorejs-angular-forms-date-range.mjs +16 -13
  152. package/fesm2022/sdcorejs-angular-forms-date-range.mjs.map +1 -1
  153. package/fesm2022/sdcorejs-angular-forms-date.mjs +42 -65
  154. package/fesm2022/sdcorejs-angular-forms-date.mjs.map +1 -1
  155. package/fesm2022/sdcorejs-angular-forms-datetime.mjs +51 -66
  156. package/fesm2022/sdcorejs-angular-forms-datetime.mjs.map +1 -1
  157. package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs +384 -0
  158. package/fesm2022/sdcorejs-angular-forms-entity-picker.mjs.map +1 -0
  159. package/fesm2022/sdcorejs-angular-forms-input-color.mjs +1 -1
  160. package/fesm2022/sdcorejs-angular-forms-input-color.mjs.map +1 -1
  161. package/fesm2022/sdcorejs-angular-forms-input-number.mjs +7 -5
  162. package/fesm2022/sdcorejs-angular-forms-input-number.mjs.map +1 -1
  163. package/fesm2022/sdcorejs-angular-forms-input.mjs +289 -55
  164. package/fesm2022/sdcorejs-angular-forms-input.mjs.map +1 -1
  165. package/fesm2022/sdcorejs-angular-forms-models.mjs +155 -2
  166. package/fesm2022/sdcorejs-angular-forms-models.mjs.map +1 -1
  167. package/fesm2022/sdcorejs-angular-forms-radio.mjs +44 -68
  168. package/fesm2022/sdcorejs-angular-forms-radio.mjs.map +1 -1
  169. package/fesm2022/sdcorejs-angular-forms-select.mjs +6 -20
  170. package/fesm2022/sdcorejs-angular-forms-select.mjs.map +1 -1
  171. package/fesm2022/sdcorejs-angular-forms-switch.mjs +19 -66
  172. package/fesm2022/sdcorejs-angular-forms-switch.mjs.map +1 -1
  173. package/fesm2022/sdcorejs-angular-forms-textarea.mjs +6 -5
  174. package/fesm2022/sdcorejs-angular-forms-textarea.mjs.map +1 -1
  175. package/fesm2022/sdcorejs-angular-forms-time-range.mjs +279 -0
  176. package/fesm2022/sdcorejs-angular-forms-time-range.mjs.map +1 -0
  177. package/fesm2022/sdcorejs-angular-forms-time.mjs +309 -0
  178. package/fesm2022/sdcorejs-angular-forms-time.mjs.map +1 -0
  179. package/fesm2022/sdcorejs-angular-forms-tree-select.mjs +210 -0
  180. package/fesm2022/sdcorejs-angular-forms-tree-select.mjs.map +1 -0
  181. package/fesm2022/sdcorejs-angular-forms.mjs +73 -4
  182. package/fesm2022/sdcorejs-angular-forms.mjs.map +1 -1
  183. package/fesm2022/sdcorejs-angular-i18n.mjs +375 -10
  184. package/fesm2022/sdcorejs-angular-i18n.mjs.map +1 -1
  185. package/fesm2022/sdcorejs-angular-interceptors.mjs +12 -17
  186. package/fesm2022/sdcorejs-angular-interceptors.mjs.map +1 -1
  187. package/fesm2022/sdcorejs-angular-modules-layout.mjs +992 -166
  188. package/fesm2022/sdcorejs-angular-modules-layout.mjs.map +1 -1
  189. package/fesm2022/sdcorejs-angular-pipes.mjs +5 -7
  190. package/fesm2022/sdcorejs-angular-pipes.mjs.map +1 -1
  191. package/fesm2022/sdcorejs-angular-services-api.mjs +407 -137
  192. package/fesm2022/sdcorejs-angular-services-api.mjs.map +1 -1
  193. package/fesm2022/sdcorejs-angular-services-cache.mjs +515 -105
  194. package/fesm2022/sdcorejs-angular-services-cache.mjs.map +1 -1
  195. package/fesm2022/sdcorejs-angular-services-confirm.mjs +5 -7
  196. package/fesm2022/sdcorejs-angular-services-confirm.mjs.map +1 -1
  197. package/fesm2022/sdcorejs-angular-services-docx.mjs +7 -10
  198. package/fesm2022/sdcorejs-angular-services-docx.mjs.map +1 -1
  199. package/fesm2022/sdcorejs-angular-services-loading.mjs +339 -74
  200. package/fesm2022/sdcorejs-angular-services-loading.mjs.map +1 -1
  201. package/fesm2022/sdcorejs-angular-services-notify.mjs +7 -10
  202. package/fesm2022/sdcorejs-angular-services-notify.mjs.map +1 -1
  203. package/fesm2022/sdcorejs-angular-services-persistence.mjs +899 -0
  204. package/fesm2022/sdcorejs-angular-services-persistence.mjs.map +1 -0
  205. package/fesm2022/sdcorejs-angular-services-storage.mjs +324 -122
  206. package/fesm2022/sdcorejs-angular-services-storage.mjs.map +1 -1
  207. package/fesm2022/sdcorejs-angular-services-task.mjs +389 -0
  208. package/fesm2022/sdcorejs-angular-services-task.mjs.map +1 -0
  209. package/fesm2022/sdcorejs-angular-services-unsaved-changes.mjs +255 -0
  210. package/fesm2022/sdcorejs-angular-services-unsaved-changes.mjs.map +1 -0
  211. package/fesm2022/sdcorejs-angular-services-viewport.mjs +76 -0
  212. package/fesm2022/sdcorejs-angular-services-viewport.mjs.map +1 -0
  213. package/fesm2022/sdcorejs-angular-services.mjs +4 -0
  214. package/fesm2022/sdcorejs-angular-services.mjs.map +1 -1
  215. package/forms/autocomplete/src/autocomplete.component.d.ts +3 -4
  216. package/forms/checkbox/src/checkbox.component.d.ts +4 -8
  217. package/forms/date/src/date.component.d.ts +3 -2
  218. package/forms/date-range/src/date-range.component.d.ts +5 -8
  219. package/forms/datetime/src/datetime.component.d.ts +3 -2
  220. package/forms/entity-picker/index.d.ts +1 -0
  221. package/forms/entity-picker/src/entity-picker.component.d.ts +123 -0
  222. package/forms/index.d.ts +6 -0
  223. package/forms/input/index.d.ts +1 -0
  224. package/forms/input/src/input-mask.d.ts +43 -0
  225. package/forms/input/src/input.component.d.ts +26 -9
  226. package/forms/input-number/src/input-number.component.d.ts +1 -1
  227. package/forms/models/index.d.ts +1 -0
  228. package/forms/models/src/sd-form-control-connector.d.ts +86 -0
  229. package/forms/radio/src/radio.component.d.ts +12 -8
  230. package/forms/src/forms.module.d.ts +9 -5
  231. package/forms/switch/src/switch.component.d.ts +4 -7
  232. package/forms/time/index.d.ts +3 -0
  233. package/forms/time/src/time-picker.adapter.d.ts +13 -0
  234. package/forms/time/src/time-value.d.ts +19 -0
  235. package/forms/time/src/time.component.d.ts +78 -0
  236. package/forms/time-range/index.d.ts +2 -0
  237. package/forms/time-range/src/time-range-value.d.ts +14 -0
  238. package/forms/time-range/src/time-range.component.d.ts +80 -0
  239. package/forms/tree-select/index.d.ts +1 -0
  240. package/forms/tree-select/src/tree-select.component.d.ts +71 -0
  241. package/i18n/src/en.d.ts +72 -2
  242. package/interceptors/no-internet/no-internet.interceptor.d.ts +2 -3
  243. package/interceptors/unauthorized/unauthorized.interceptor.d.ts +2 -2
  244. package/modules/layout/components/index.d.ts +6 -0
  245. package/modules/layout/components/layout-main/layout-main.component.d.ts +7 -2
  246. package/modules/layout/components/shared/menu-tree/menu-tree.component.d.ts +33 -0
  247. package/modules/layout/components/shared/search-field/search-field.component.d.ts +9 -0
  248. package/modules/layout/components/shared/user-menu/user-menu.component.d.ts +45 -0
  249. package/modules/layout/components/sidebar-mobile-v1/components/user/user.component.d.ts +3 -11
  250. package/modules/layout/components/sidebar-mobile-v2/main.component.d.ts +27 -0
  251. package/modules/layout/components/sidebar-mobile-v3/main.component.d.ts +28 -0
  252. package/modules/layout/components/sidebar-v1/components/sidebar/sidebar.component.d.ts +4 -4
  253. package/modules/layout/components/sidebar-v1/components/user/user.component.d.ts +3 -9
  254. package/modules/layout/components/sidebar-v1/main.component.d.ts +3 -2
  255. package/modules/layout/components/sidebar-v2/main.component.d.ts +36 -0
  256. package/modules/layout/components/sidebar-v3/main.component.d.ts +29 -0
  257. package/modules/layout/configurations/layout.configuration.d.ts +78 -5
  258. package/modules/layout/index.d.ts +1 -0
  259. package/modules/layout/pipes/menu.pipe.d.ts +2 -2
  260. package/modules/layout/services/index.d.ts +3 -0
  261. package/modules/layout/services/layout.service.d.ts +2 -2
  262. package/modules/layout/services/menu/menu.utils.d.ts +6 -0
  263. package/modules/layout/services/navigation-state/navigation-state.service.d.ts +18 -0
  264. package/modules/layout/services/responsive/responsive.service.d.ts +12 -0
  265. package/modules/layout/services/storage/storage.service.d.ts +21 -8
  266. package/package.json +49 -1
  267. package/pipes/src/safe-html.pipe.d.ts +2 -2
  268. package/services/api/src/api.model.d.ts +54 -15
  269. package/services/api/src/api.service.d.ts +13 -8
  270. package/services/api/src/interceptors/api.interceptor.d.ts +1 -1
  271. package/services/cache/src/cache.model.d.ts +46 -13
  272. package/services/cache/src/cache.service.d.ts +5 -2
  273. package/services/confirm/src/lib/confirm.service.d.ts +2 -2
  274. package/services/docx/src/lib/docx.service.d.ts +2 -3
  275. package/services/index.d.ts +4 -0
  276. package/services/loading/src/loading.service.d.ts +15 -8
  277. package/services/notify/src/components/toast/toast.component.d.ts +2 -3
  278. package/services/persistence/index.d.ts +5 -0
  279. package/services/persistence/src/graph-serializer.d.ts +16 -0
  280. package/services/persistence/src/persistence-envelope.d.ts +28 -0
  281. package/services/persistence/src/persistence-key.d.ts +17 -0
  282. package/services/persistence/src/persistence.model.d.ts +63 -0
  283. package/services/persistence/src/storage-adapter.d.ts +29 -0
  284. package/services/storage/src/storage.model.d.ts +20 -5
  285. package/services/storage/src/storage.service.d.ts +6 -3
  286. package/services/task/index.d.ts +3 -0
  287. package/services/task/src/task.model.d.ts +75 -0
  288. package/services/task/src/task.service.d.ts +14 -0
  289. package/services/task/src/task.tokens.d.ts +12 -0
  290. package/services/unsaved-changes/index.d.ts +4 -0
  291. package/services/unsaved-changes/src/unsaved-changes.adapters.d.ts +15 -0
  292. package/services/unsaved-changes/src/unsaved-changes.model.d.ts +41 -0
  293. package/services/unsaved-changes/src/unsaved-changes.service.d.ts +16 -0
  294. package/services/unsaved-changes/src/unsaved-changes.tokens.d.ts +9 -0
  295. package/services/viewport/index.d.ts +3 -0
  296. package/services/viewport/src/viewport.model.d.ts +12 -0
  297. package/services/viewport/src/viewport.service.d.ts +18 -0
  298. package/services/viewport/src/viewport.tokens.d.ts +6 -0
@@ -1,30 +1,63 @@
1
1
  import { InjectionToken } from '@angular/core';
2
+ import { SdPersistenceIdentityCanonicalizer, SdPersistenceSerializer } from '@sdcorejs/angular/services/persistence';
2
3
  import { Observable } from 'rxjs';
3
- export interface SdCacheOption<T = any> {
4
+ export interface SdCacheOption<T = unknown> {
4
5
  type?: 'memory' | 'session' | 'local';
5
6
  hours?: number;
7
+ ttlMs?: number;
6
8
  default?: T;
7
- args?: Record<string, any>;
9
+ args?: Readonly<Record<string, unknown>>;
10
+ namespace?: string;
11
+ version?: string | number;
12
+ serializer?: SdPersistenceSerializer;
13
+ identityCanonicalizer?: SdPersistenceIdentityCanonicalizer;
8
14
  }
9
- export interface SdCache<T = any> {
10
- get: () => T;
15
+ export interface SdCache<T = unknown> {
16
+ get: () => T | undefined;
17
+ snapshot: () => SdCacheSnapshot<T>;
11
18
  set: (data: T) => void;
12
19
  has: () => boolean;
13
20
  remove: () => void;
21
+ /** Releases only this facade while preserving its backing cache entry. */
22
+ release: () => void;
14
23
  destroy: () => void;
15
24
  observer: Observable<T | undefined>;
16
25
  load: (callback: () => Promise<T>) => Promise<T>;
17
26
  }
27
+ export type SdCacheSnapshot<T> = {
28
+ present: false;
29
+ } | {
30
+ present: true;
31
+ value: T;
32
+ };
33
+ export interface SdCacheWithDefault<T> extends Omit<SdCache<T>, 'get' | 'observer'> {
34
+ get: () => T;
35
+ observer: Observable<T>;
36
+ }
37
+ export interface SdCacheStoredValue<T = unknown> {
38
+ data: T;
39
+ createdOn: Date;
40
+ }
41
+ export type SdCacheSetCallback = (key: string, value: SdCacheStoredValue<unknown>, option?: SdCacheOption<unknown>) => Promise<void> | void;
42
+ export type SdCacheGetCallback = (key: string, option?: SdCacheOption<unknown>) => Promise<SdCacheStoredValue<unknown> | undefined>;
43
+ export type SdCacheRemoveCallback = (key: string, option?: SdCacheOption<unknown>) => Promise<void> | void;
18
44
  export interface ISdCacheConfiguration {
19
45
  convertKey?: (key: string) => string;
20
- set?: (key: string, value: {
21
- data: any;
22
- createdOn: Date;
23
- }, option?: SdCacheOption) => Promise<void>;
24
- get?: (key: string, option?: SdCacheOption) => Promise<{
25
- data: any;
26
- createdOn: Date;
27
- }>;
28
- remove?: (key: string, option?: SdCacheOption) => Promise<void>;
46
+ namespace?: string;
47
+ version?: string | number;
48
+ serializer?: SdPersistenceSerializer;
49
+ identityCanonicalizer?: SdPersistenceIdentityCanonicalizer;
50
+ set?: SdCacheSetCallback;
51
+ get?: SdCacheGetCallback;
52
+ remove?: SdCacheRemoveCallback;
29
53
  }
30
54
  export declare const SD_CACHE_CONFIG: InjectionToken<ISdCacheConfiguration>;
55
+ export interface SdLegacyCacheCallbacks<T> {
56
+ matches: (key: string, option?: SdCacheOption<unknown>) => boolean;
57
+ isValue: (value: unknown) => value is T;
58
+ set?: (key: string, value: SdCacheStoredValue<T>, option?: SdCacheOption<unknown>) => Promise<void> | void;
59
+ get?: (key: string, option?: SdCacheOption<unknown>) => Promise<SdCacheStoredValue<T> | undefined>;
60
+ remove?: (key: string, option?: SdCacheOption<unknown>) => Promise<void> | void;
61
+ }
62
+ /** @deprecated Prefer globally safe unknown callbacks on `ISdCacheConfiguration`. */
63
+ export declare function adaptLegacySdCacheCallbacks<T>(callbacks: SdLegacyCacheCallbacks<T>): ISdCacheConfiguration;
@@ -1,9 +1,12 @@
1
- import { SdCache, SdCacheOption } from './cache.model';
1
+ import { SdCache, SdCacheOption, SdCacheWithDefault } from './cache.model';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class SdCacheService {
4
4
  #private;
5
5
  constructor();
6
- create<T = any>(key: string | object, option?: SdCacheOption<T>): SdCache<T>;
6
+ create<T>(key: string | object, option: SdCacheOption<T> & {
7
+ default: T;
8
+ }): SdCacheWithDefault<T>;
9
+ create<T = unknown>(key: string | object, option?: SdCacheOption<unknown>): SdCache<T>;
7
10
  static ɵfac: i0.ɵɵFactoryDeclaration<SdCacheService, never>;
8
11
  static ɵprov: i0.ɵɵInjectableDeclaration<SdCacheService>;
9
12
  }
@@ -1,10 +1,10 @@
1
- import { MatDialog } from '@angular/material/dialog';
2
1
  import { Color } from '@sdcorejs/utils/models';
3
2
  import * as i0 from "@angular/core";
4
3
  export declare class SdConfirmService {
5
4
  #private;
6
5
  private dialog;
7
- constructor(dialog: MatDialog);
6
+ /** Inserted by Angular inject() migration for backwards compatibility */
7
+ constructor(...args: unknown[]);
8
8
  confirm: (message: string, option?: {
9
9
  title?: string;
10
10
  yesTitle?: string;
@@ -1,12 +1,11 @@
1
- import { SdNotifyService } from '@sdcorejs/angular/services/notify';
2
- import { SdLoadingService } from '@sdcorejs/angular/services/loading';
3
1
  import { SdDocxConvertOptions, SdDocxConvertResult } from './docx.model';
4
2
  import * as i0 from "@angular/core";
5
3
  export declare class SdDocxService {
6
4
  #private;
7
5
  private notifyService;
8
6
  private loadingService;
9
- constructor(notifyService: SdNotifyService, loadingService: SdLoadingService);
7
+ /** Inserted by Angular inject() migration for backwards compatibility */
8
+ constructor(...args: unknown[]);
10
9
  open(options?: SdDocxConvertOptions): Promise<SdDocxConvertResult | null>;
11
10
  convertToHtml(input: File | Blob | ArrayBuffer, options?: SdDocxConvertOptions): Promise<SdDocxConvertResult | null>;
12
11
  convertToHtmlString(input: File | Blob | ArrayBuffer, options?: SdDocxConvertOptions): Promise<string | null>;
@@ -1,8 +1,12 @@
1
1
  export * from '@sdcorejs/angular/services/cache';
2
2
  export * from '@sdcorejs/angular/services/storage';
3
+ export * from '@sdcorejs/angular/services/persistence';
3
4
  export * from '@sdcorejs/angular/services/notify';
4
5
  export * from '@sdcorejs/angular/services/confirm';
5
6
  export * from '@sdcorejs/angular/services/api';
6
7
  export * from '@sdcorejs/angular/services/loading';
7
8
  export * from '@sdcorejs/angular/services/excel';
8
9
  export * from '@sdcorejs/angular/services/docx';
10
+ export * from '@sdcorejs/angular/services/viewport';
11
+ export * from '@sdcorejs/angular/services/unsaved-changes';
12
+ export * from '@sdcorejs/angular/services/task';
@@ -1,14 +1,21 @@
1
- import { RendererFactory2 } from '@angular/core';
2
1
  import * as i0 from "@angular/core";
2
+ export interface SdLoadingRef {
3
+ readonly closed: boolean;
4
+ close(): void;
5
+ }
3
6
  export declare class SdLoadingService {
4
7
  #private;
5
- private loadingId;
6
- private renderer;
7
- private loadingMap;
8
- constructor(rendererFactory: RendererFactory2);
9
- start: (element?: string) => void;
10
- isLoading: (element?: string) => false | Element | null;
11
- stop: (element?: string) => void;
8
+ private static readonly documentRecords;
9
+ /** Inserted by Angular inject() migration for backwards compatibility. */
10
+ constructor(...args: unknown[]);
11
+ /** Starts loading for every current selector match and returns ownership of those exact hosts. */
12
+ start: (selector?: string) => SdLoadingRef;
13
+ /** Returns the first matched globally loading host, `false` for idle matches, or `null` when unavailable. */
14
+ isLoading: (selector?: string) => Element | false | null;
15
+ /** Releases the oldest exact-selector start, with a current-host fallback for legacy cross-selector calls. */
16
+ stop: (selector?: string) => void;
17
+ run<T>(task: () => T | PromiseLike<T>, selector?: string): Promise<T>;
18
+ run<T>(task: PromiseLike<T>, selector?: string): Promise<T>;
12
19
  static ɵfac: i0.ɵɵFactoryDeclaration<SdLoadingService, never>;
13
20
  static ɵprov: i0.ɵɵInjectableDeclaration<SdLoadingService>;
14
21
  }
@@ -1,7 +1,5 @@
1
1
  import { OnDestroy, OnInit } from '@angular/core';
2
- import { DomSanitizer } from '@angular/platform-browser';
3
2
  import { ToastData } from '../../notify.model';
4
- import { SdNotifyService } from '../../notify.service';
5
3
  import * as i0 from "@angular/core";
6
4
  export declare class ToastComponent implements OnInit, OnDestroy {
7
5
  private notifyService;
@@ -15,7 +13,8 @@ export declare class ToastComponent implements OnInit, OnDestroy {
15
13
  private closeTimer;
16
14
  private start;
17
15
  private remaining;
18
- constructor(notifyService: SdNotifyService, sanitizer: DomSanitizer);
16
+ /** Inserted by Angular inject() migration for backwards compatibility */
17
+ constructor(...args: unknown[]);
19
18
  ngOnInit(): void;
20
19
  ngOnDestroy(): void;
21
20
  pauseTimer(): void;
@@ -0,0 +1,5 @@
1
+ export * from './src/persistence.model';
2
+ export * from './src/graph-serializer';
3
+ export * from './src/storage-adapter';
4
+ export * from './src/persistence-key';
5
+ export * from './src/persistence-envelope';
@@ -0,0 +1,16 @@
1
+ import { SdGraphSerializerLimits, SdPersistenceErrorCode, SdPersistenceSerializer } from './persistence.model';
2
+ export declare const SD_GRAPH_HARD_LIMITS: Readonly<SdGraphSerializerLimits>;
3
+ export declare class SdPersistenceError extends Error {
4
+ readonly code: SdPersistenceErrorCode;
5
+ readonly name = "SdPersistenceError";
6
+ constructor(code: SdPersistenceErrorCode, message: string);
7
+ }
8
+ export declare class SdGraphSerializer implements SdPersistenceSerializer {
9
+ #private;
10
+ readonly format = "sdcorejs.graph@1";
11
+ readonly limits: Readonly<SdGraphSerializerLimits>;
12
+ constructor(limits?: Partial<SdGraphSerializerLimits>);
13
+ stringify<T>(value: T): string;
14
+ parse<T = unknown>(serialized: string): T;
15
+ clone<T>(value: T): T;
16
+ }
@@ -0,0 +1,28 @@
1
+ export declare const SD_PERSISTENCE_ENVELOPE_FORMAT = "sdcorejs.persistence-envelope";
2
+ export declare const SD_PERSISTENCE_ENVELOPE_VERSION = 1;
3
+ export interface SdPersistenceEnvelopeLimits {
4
+ maxDocumentCharacters: number;
5
+ maxPayloadCharacters: number;
6
+ maxSerializerCharacters: number;
7
+ maxIdentityCharacters: number;
8
+ }
9
+ export declare const SD_PERSISTENCE_ENVELOPE_HARD_LIMITS: Readonly<SdPersistenceEnvelopeLimits>;
10
+ export interface SdPersistenceValueEnvelope {
11
+ format: typeof SD_PERSISTENCE_ENVELOPE_FORMAT;
12
+ version: typeof SD_PERSISTENCE_ENVELOPE_VERSION;
13
+ kind: 'value';
14
+ identity: string;
15
+ serializer: string;
16
+ payload: string;
17
+ }
18
+ export interface SdPersistenceTombstoneEnvelope {
19
+ format: typeof SD_PERSISTENCE_ENVELOPE_FORMAT;
20
+ version: typeof SD_PERSISTENCE_ENVELOPE_VERSION;
21
+ kind: 'tombstone';
22
+ identity: string;
23
+ serializer: string;
24
+ }
25
+ export type SdPersistenceEnvelope = SdPersistenceValueEnvelope | SdPersistenceTombstoneEnvelope;
26
+ export declare function stringifySdPersistenceValueEnvelope(identity: string, serializer: string, payload: string, limits?: Partial<SdPersistenceEnvelopeLimits>): string;
27
+ export declare function stringifySdPersistenceTombstoneEnvelope(identity: string, serializer: string, limits?: Partial<SdPersistenceEnvelopeLimits>): string;
28
+ export declare function parseSdPersistenceEnvelope(serialized: string, expectedIdentity: string, expectedSerializer: string, limits?: Partial<SdPersistenceEnvelopeLimits>): SdPersistenceEnvelope | undefined;
@@ -0,0 +1,17 @@
1
+ import { SdPersistenceIdentityCanonicalizer } from './persistence.model';
2
+ export interface SdPersistenceKeyField {
3
+ tag: string;
4
+ value: string;
5
+ }
6
+ export declare class SdPersistenceIdentityError extends Error {
7
+ readonly name = "SdPersistenceIdentityError";
8
+ constructor(message: string);
9
+ }
10
+ export declare function buildSdPersistenceKey(baseKey: string, fields: readonly SdPersistenceKeyField[]): string;
11
+ export declare class SdGraphIdentityCanonicalizer implements SdPersistenceIdentityCanonicalizer {
12
+ #private;
13
+ readonly format = "sdcorejs.graph-identity@1";
14
+ canonicalize(value: unknown): string;
15
+ }
16
+ export declare function canonicalizeSdPersistenceValue(canonicalizer: SdPersistenceIdentityCanonicalizer, value: unknown, label: string): string;
17
+ export declare function digestSdPersistenceKey(value: string): string;
@@ -0,0 +1,63 @@
1
+ export declare const SD_GRAPH_FORMAT = "sdcorejs.graph";
2
+ export declare const SD_GRAPH_VERSION = 1;
3
+ export type SdPersistenceErrorCode = 'INVALID_DOCUMENT' | 'UNKNOWN_FORMAT' | 'UNKNOWN_VERSION' | 'INVALID_NODE' | 'INVALID_REFERENCE' | 'UNSUPPORTED_VALUE' | 'LIMIT_EXCEEDED';
4
+ export interface SdGraphSerializerLimits {
5
+ maxDocumentCharacters: number;
6
+ maxDepth: number;
7
+ maxNodes: number;
8
+ maxEntries: number;
9
+ maxStringCharacters: number;
10
+ maxKeyCharacters: number;
11
+ maxBigIntDigits: number;
12
+ }
13
+ export interface SdPersistenceSerializer {
14
+ readonly format: string;
15
+ stringify<T>(value: T): string;
16
+ parse<T = unknown>(serialized: string): T;
17
+ clone<T>(value: T): T;
18
+ }
19
+ /** Deterministic, versioned canonicalization used only for persistence identity. */
20
+ export interface SdPersistenceIdentityCanonicalizer {
21
+ readonly format: string;
22
+ canonicalize(value: unknown): string;
23
+ }
24
+ export type SdGraphSpecialNumber = 'NaN' | 'Infinity' | '-Infinity' | '-0';
25
+ export type SdGraphValue = null | boolean | string | number | {
26
+ $ref: number;
27
+ } | {
28
+ $type: 'undefined';
29
+ } | {
30
+ $type: 'number';
31
+ value: SdGraphSpecialNumber;
32
+ } | {
33
+ $type: 'bigint';
34
+ value: string;
35
+ };
36
+ export interface SdGraphArrayNode {
37
+ type: 'array';
38
+ values: SdGraphValue[];
39
+ }
40
+ export interface SdGraphObjectNode {
41
+ type: 'object';
42
+ prototype: 'object' | 'null';
43
+ entries: [string, SdGraphValue][];
44
+ }
45
+ export interface SdGraphDateNode {
46
+ type: 'date';
47
+ value: string;
48
+ }
49
+ export interface SdGraphMapNode {
50
+ type: 'map';
51
+ entries: [SdGraphValue, SdGraphValue][];
52
+ }
53
+ export interface SdGraphSetNode {
54
+ type: 'set';
55
+ values: SdGraphValue[];
56
+ }
57
+ export type SdGraphNode = SdGraphArrayNode | SdGraphObjectNode | SdGraphDateNode | SdGraphMapNode | SdGraphSetNode;
58
+ export interface SdGraphEnvelope {
59
+ format: typeof SD_GRAPH_FORMAT;
60
+ version: typeof SD_GRAPH_VERSION;
61
+ root: SdGraphValue;
62
+ nodes: SdGraphNode[];
63
+ }
@@ -0,0 +1,29 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export type SdPersistenceStorageArea = 'local' | 'session';
4
+ export type SdPersistenceStorageRead = {
5
+ status: 'found';
6
+ value: string;
7
+ } | {
8
+ status: 'absent';
9
+ } | {
10
+ status: 'unavailable';
11
+ };
12
+ export interface SdPersistenceStorageAdapter {
13
+ /** Optional tri-state read. Legacy adapters may continue to implement only `getItem`. */
14
+ readItem?(area: SdPersistenceStorageArea, key: string): SdPersistenceStorageRead;
15
+ getItem(area: SdPersistenceStorageArea, key: string): string | null;
16
+ setItem(area: SdPersistenceStorageArea, key: string, value: string): boolean;
17
+ removeItem(area: SdPersistenceStorageArea, key: string): boolean;
18
+ }
19
+ export declare class SdBrowserStorageAdapter implements SdPersistenceStorageAdapter {
20
+ #private;
21
+ readItem(area: SdPersistenceStorageArea, key: string): SdPersistenceStorageRead;
22
+ getItem(area: SdPersistenceStorageArea, key: string): string | null;
23
+ setItem(area: SdPersistenceStorageArea, key: string, value: string): boolean;
24
+ removeItem(area: SdPersistenceStorageArea, key: string): boolean;
25
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdBrowserStorageAdapter, never>;
26
+ static ɵprov: i0.ɵɵInjectableDeclaration<SdBrowserStorageAdapter>;
27
+ }
28
+ export declare function readSdPersistenceStorageItem(adapter: SdPersistenceStorageAdapter, area: SdPersistenceStorageArea, key: string): SdPersistenceStorageRead;
29
+ export declare const SD_PERSISTENCE_STORAGE_ADAPTER: InjectionToken<SdPersistenceStorageAdapter>;
@@ -1,20 +1,35 @@
1
1
  import { InjectionToken } from '@angular/core';
2
+ import { SdPersistenceIdentityCanonicalizer, SdPersistenceSerializer } from '@sdcorejs/angular/services/persistence';
2
3
  import { BehaviorSubject, Observable } from 'rxjs';
3
- export interface SdStorageOption<T = any> {
4
- type?: 'session';
4
+ export interface SdStorageOption<T = unknown> {
5
+ type?: 'local' | 'session';
5
6
  default?: T;
6
- args?: Record<string, any>;
7
+ args?: Readonly<Record<string, unknown>>;
8
+ namespace?: string;
9
+ version?: string | number;
10
+ serializer?: SdPersistenceSerializer;
11
+ identityCanonicalizer?: SdPersistenceIdentityCanonicalizer;
7
12
  }
8
- export interface SdStorage<T = any> {
9
- get: () => T;
13
+ export interface SdStorage<T = unknown> {
14
+ get: () => T | undefined;
10
15
  set: (data: T) => void;
11
16
  setSilent: (data: T) => void;
12
17
  has: () => boolean;
13
18
  remove: () => void;
19
+ destroy: () => void;
20
+ subject: BehaviorSubject<T | undefined>;
21
+ observer: Observable<T | undefined>;
22
+ }
23
+ export interface SdStorageWithDefault<T> extends Omit<SdStorage<T>, 'get' | 'subject' | 'observer'> {
24
+ get: () => T;
14
25
  subject: BehaviorSubject<T>;
15
26
  observer: Observable<T>;
16
27
  }
17
28
  export interface ISdStorageConfiguration {
18
29
  key?: (key: string) => string;
30
+ namespace?: string;
31
+ version?: string | number;
32
+ serializer?: SdPersistenceSerializer;
33
+ identityCanonicalizer?: SdPersistenceIdentityCanonicalizer;
19
34
  }
20
35
  export declare const SD_STORAGE_CONFIG: InjectionToken<ISdStorageConfiguration>;
@@ -1,9 +1,12 @@
1
- import { SdStorage, SdStorageOption } from './storage.model';
1
+ import { SdStorage, SdStorageOption, SdStorageWithDefault } from './storage.model';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class SdStorageService {
4
4
  #private;
5
- private readonly configuration;
6
- create<T = any>(key: string | object, option?: SdStorageOption<T>): SdStorage<T>;
5
+ constructor();
6
+ create<T>(key: string | object, option: SdStorageOption<T> & {
7
+ default: T;
8
+ }): SdStorageWithDefault<T>;
9
+ create<T = unknown>(key: string | object, option?: SdStorageOption<unknown>): SdStorage<T>;
7
10
  static ɵfac: i0.ɵɵFactoryDeclaration<SdStorageService, never>;
8
11
  static ɵprov: i0.ɵɵInjectableDeclaration<SdStorageService>;
9
12
  }
@@ -0,0 +1,3 @@
1
+ export * from './src/task.model';
2
+ export * from './src/task.tokens';
3
+ export * from './src/task.service';
@@ -0,0 +1,75 @@
1
+ import { Signal } from '@angular/core';
2
+ export type SdTaskMaybeAsync<T> = T | PromiseLike<T>;
3
+ export type SdTaskStatus = 'idle' | 'queued' | 'running' | 'succeeded' | 'failed' | 'cancelled';
4
+ export type SdTaskConnectionState = 'idle' | 'connecting' | 'open' | 'reconnecting' | 'closed' | 'error';
5
+ export interface SdTaskState<TResult = unknown> {
6
+ readonly id: string;
7
+ readonly status: SdTaskStatus;
8
+ readonly progress?: number;
9
+ readonly title?: string;
10
+ readonly message?: string;
11
+ readonly error?: unknown;
12
+ readonly result?: TResult;
13
+ readonly updatedAt?: number | Date;
14
+ }
15
+ export interface SdTaskRetryPolicy {
16
+ readonly maxAttempts?: number;
17
+ readonly initialDelayMs?: number;
18
+ readonly backoff?: number;
19
+ readonly maxDelayMs?: number;
20
+ readonly jitter?: number;
21
+ }
22
+ export interface SdTaskLoadContext<TResult = unknown> {
23
+ readonly id: string;
24
+ readonly signal: AbortSignal;
25
+ readonly attempt: number;
26
+ readonly state: SdTaskState<TResult>;
27
+ }
28
+ export interface SdTaskActionContext<TResult = unknown> {
29
+ readonly id: string;
30
+ readonly state: SdTaskState<TResult>;
31
+ }
32
+ export type SdTaskCancelResult<TResult = unknown> = void | boolean | SdTaskState<TResult>;
33
+ export type SdTaskCancelHandler<TResult = unknown> = (context: SdTaskActionContext<TResult>) => SdTaskMaybeAsync<SdTaskCancelResult<TResult>>;
34
+ interface SdTaskSourceBase<TResult> {
35
+ readonly cancel?: SdTaskCancelHandler<TResult>;
36
+ }
37
+ export interface SdTaskManualSource<TResult = unknown> extends SdTaskSourceBase<TResult> {
38
+ readonly mode: 'manual';
39
+ }
40
+ export interface SdTaskPollingSource<TResult = unknown> extends SdTaskSourceBase<TResult> {
41
+ readonly mode: 'poll';
42
+ readonly load: (context: SdTaskLoadContext<TResult>) => SdTaskMaybeAsync<SdTaskState<TResult>>;
43
+ readonly intervalMs?: number;
44
+ readonly retry?: SdTaskRetryPolicy;
45
+ }
46
+ export interface SdTaskSseSource<TResult = unknown> extends SdTaskSourceBase<TResult> {
47
+ readonly mode: 'sse';
48
+ readonly url: string | (() => string);
49
+ readonly eventSourceInit?: EventSourceInit;
50
+ readonly parse?: (event: MessageEvent<string>) => SdTaskMaybeAsync<SdTaskState<TResult>>;
51
+ readonly retry?: SdTaskRetryPolicy;
52
+ }
53
+ export type SdTaskSource<TResult = unknown> = SdTaskManualSource<TResult> | SdTaskPollingSource<TResult> | SdTaskSseSource<TResult>;
54
+ export interface SdTaskWatchOptions<TResult = unknown> {
55
+ readonly id: string;
56
+ readonly initialState?: SdTaskState<TResult>;
57
+ readonly source: SdTaskSource<TResult>;
58
+ }
59
+ export interface SdTaskView<TResult = unknown> {
60
+ readonly id: string;
61
+ readonly state: Signal<SdTaskState<TResult>>;
62
+ readonly connection: Signal<SdTaskConnectionState>;
63
+ readonly error: Signal<unknown | null>;
64
+ readonly subscriberCount: Signal<number>;
65
+ readonly canCancel: Signal<boolean>;
66
+ readonly canRetry: Signal<boolean>;
67
+ cancel(): Promise<boolean>;
68
+ retry(): void;
69
+ }
70
+ export interface SdTaskSubscription<TResult = unknown> extends SdTaskView<TResult> {
71
+ readonly destroyed: Signal<boolean>;
72
+ destroy(): void;
73
+ }
74
+ export declare function isSdTaskTerminal(status: SdTaskStatus): boolean;
75
+ export {};
@@ -0,0 +1,14 @@
1
+ import { SdTaskState, SdTaskSubscription, SdTaskView, SdTaskWatchOptions } from './task.model';
2
+ import * as i0 from "@angular/core";
3
+ export declare class SdTaskService {
4
+ #private;
5
+ readonly tasks: import("@angular/core").Signal<SdTaskView<unknown>[]>;
6
+ constructor();
7
+ watch<TResult = unknown>(options: SdTaskWatchOptions<TResult>): SdTaskSubscription<TResult>;
8
+ get<TResult = unknown>(id: string): SdTaskView<TResult> | undefined;
9
+ update<TResult = unknown>(id: string, patch: Partial<Omit<SdTaskState<TResult>, 'id'>>): boolean;
10
+ cancel(id: string): Promise<boolean>;
11
+ retry(id: string): boolean;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdTaskService, never>;
13
+ static ɵprov: i0.ɵɵInjectableDeclaration<SdTaskService>;
14
+ }
@@ -0,0 +1,12 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export interface SdTaskEventSource {
3
+ onopen: ((event: Event) => void) | null;
4
+ onmessage: ((event: MessageEvent<string>) => void) | null;
5
+ onerror: ((event: Event) => void) | null;
6
+ close(): void;
7
+ }
8
+ export interface SdTaskEventSourceFactory {
9
+ create(url: string, init?: EventSourceInit): SdTaskEventSource;
10
+ }
11
+ export declare const SD_TASK_EVENT_SOURCE_FACTORY: InjectionToken<SdTaskEventSourceFactory | null>;
12
+ export declare const SD_TASK_RANDOM: InjectionToken<() => number>;
@@ -0,0 +1,4 @@
1
+ export * from './src/unsaved-changes.model';
2
+ export * from './src/unsaved-changes.tokens';
3
+ export * from './src/unsaved-changes.service';
4
+ export * from './src/unsaved-changes.adapters';
@@ -0,0 +1,15 @@
1
+ import { FormGroup } from '@angular/forms';
2
+ import { CanDeactivateFn } from '@angular/router';
3
+ import { SdUnsavedChangesConfirmOptions, SdUnsavedChangesMaybeAsync, SdUnsavedChangesRegistration } from './unsaved-changes.model';
4
+ import { SdUnsavedChangesService } from './unsaved-changes.service';
5
+ export interface SdUnsavedChangesFormOptions<TValue> {
6
+ readonly id: string;
7
+ readonly scope?: unknown;
8
+ readonly message?: string;
9
+ readonly save?: (value: TValue) => SdUnsavedChangesMaybeAsync<void | boolean>;
10
+ readonly reset?: (form: FormGroup) => SdUnsavedChangesMaybeAsync<void | boolean>;
11
+ readonly discard?: (form: FormGroup) => SdUnsavedChangesMaybeAsync<void | boolean>;
12
+ }
13
+ export declare function registerSdUnsavedChangesForm<TValue extends Record<string, unknown>>(service: SdUnsavedChangesService, form: FormGroup, options: SdUnsavedChangesFormOptions<TValue>): SdUnsavedChangesRegistration;
14
+ export declare function createSdUnsavedChangesCloseGuard(service: SdUnsavedChangesService, options?: Omit<SdUnsavedChangesConfirmOptions, 'reason'>): () => Promise<boolean>;
15
+ export declare const sdUnsavedChangesGuard: CanDeactivateFn<unknown>;
@@ -0,0 +1,41 @@
1
+ import { Signal } from '@angular/core';
2
+ export type SdUnsavedChangesMaybeAsync<T> = T | PromiseLike<T>;
3
+ export type SdUnsavedChangesDirtySource = boolean | Signal<boolean> | (() => boolean);
4
+ export type SdUnsavedChangesDecision = 'save' | 'discard' | 'cancel';
5
+ export type SdUnsavedChangesReason = 'navigation' | 'close' | 'manual';
6
+ export interface SdUnsavedChangesWatcher {
7
+ readonly id: string;
8
+ readonly scope?: unknown;
9
+ readonly isDirty: SdUnsavedChangesDirtySource;
10
+ readonly message?: string;
11
+ readonly save?: () => SdUnsavedChangesMaybeAsync<void | boolean>;
12
+ readonly reset?: () => SdUnsavedChangesMaybeAsync<void | boolean>;
13
+ readonly discard?: () => SdUnsavedChangesMaybeAsync<void | boolean>;
14
+ readonly cleanup?: () => void;
15
+ }
16
+ export interface SdUnsavedChangesPromptContext {
17
+ readonly reason: SdUnsavedChangesReason;
18
+ readonly scope?: unknown;
19
+ readonly message: string;
20
+ readonly watchers: readonly SdUnsavedChangesRegistration[];
21
+ }
22
+ export interface SdUnsavedChangesConfirmationAdapter {
23
+ confirm(context: SdUnsavedChangesPromptContext): SdUnsavedChangesMaybeAsync<SdUnsavedChangesDecision | boolean>;
24
+ }
25
+ export interface SdUnsavedChangesRegistration {
26
+ readonly id: string;
27
+ readonly scope?: unknown;
28
+ readonly message?: string;
29
+ readonly destroyed: Signal<boolean>;
30
+ readonly dirty: Signal<boolean>;
31
+ markDirty(): void;
32
+ markPristine(): void;
33
+ save(): Promise<boolean>;
34
+ reset(): Promise<boolean>;
35
+ discard(): Promise<boolean>;
36
+ destroy(): void;
37
+ }
38
+ export interface SdUnsavedChangesConfirmOptions {
39
+ readonly scope?: unknown;
40
+ readonly reason?: SdUnsavedChangesReason;
41
+ }
@@ -0,0 +1,16 @@
1
+ import { SdUnsavedChangesConfirmOptions, SdUnsavedChangesRegistration, SdUnsavedChangesWatcher } from './unsaved-changes.model';
2
+ import * as i0 from "@angular/core";
3
+ export declare class SdUnsavedChangesService {
4
+ #private;
5
+ readonly registrations: import("@angular/core").Signal<SdUnsavedChangesRegistration[]>;
6
+ readonly dirty: import("@angular/core").Signal<boolean>;
7
+ constructor();
8
+ register(watcher: SdUnsavedChangesWatcher): SdUnsavedChangesRegistration;
9
+ hasChanges(scope?: unknown): boolean;
10
+ confirmLeave(options?: SdUnsavedChangesConfirmOptions): Promise<boolean>;
11
+ saveAll(scope?: unknown): Promise<boolean>;
12
+ resetAll(scope?: unknown): Promise<boolean>;
13
+ discardAll(scope?: unknown): Promise<boolean>;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdUnsavedChangesService, never>;
15
+ static ɵprov: i0.ɵɵInjectableDeclaration<SdUnsavedChangesService>;
16
+ }
@@ -0,0 +1,9 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { SdUnsavedChangesConfirmationAdapter } from './unsaved-changes.model';
3
+ export interface SdUnsavedChangesWindow {
4
+ addEventListener(type: 'beforeunload', listener: (event: BeforeUnloadEvent) => void): void;
5
+ removeEventListener(type: 'beforeunload', listener: (event: BeforeUnloadEvent) => void): void;
6
+ confirm?(message?: string): boolean;
7
+ }
8
+ export declare const SD_UNSAVED_CHANGES_WINDOW: InjectionToken<SdUnsavedChangesWindow | null>;
9
+ export declare const SD_UNSAVED_CHANGES_CONFIRMATION_ADAPTER: InjectionToken<SdUnsavedChangesConfirmationAdapter>;
@@ -0,0 +1,3 @@
1
+ export * from './src/viewport.model';
2
+ export * from './src/viewport.tokens';
3
+ export * from './src/viewport.service';
@@ -0,0 +1,12 @@
1
+ export interface SdViewportBreakpoints {
2
+ mobile: number;
3
+ tablet: number;
4
+ desktop: number;
5
+ }
6
+ export type SdViewportBreakpoint = keyof SdViewportBreakpoints;
7
+ export interface SdViewport {
8
+ innerWidth: number;
9
+ innerHeight?: number;
10
+ addEventListener(type: 'resize', listener: EventListenerOrEventListenerObject): void;
11
+ removeEventListener(type: 'resize', listener: EventListenerOrEventListenerObject): void;
12
+ }