@alfresco/adf-core 8.1.0-16295248176 → 8.1.0-16342534841

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 (598) hide show
  1. package/bundles/assets/adf-core/i18n/de.json +1 -1
  2. package/bundles/assets/adf-core/i18n/es.json +1 -1
  3. package/bundles/assets/adf-core/i18n/fr.json +1 -1
  4. package/bundles/assets/adf-core/i18n/it.json +1 -1
  5. package/bundles/assets/adf-core/i18n/pl.json +1 -1
  6. package/bundles/assets/adf-core/i18n/pt.json +1 -1
  7. package/esm2022/adf-core.mjs +5 -0
  8. package/esm2022/api/alfresco-adf-core-api.mjs +5 -0
  9. package/esm2022/api/index.mjs +20 -0
  10. package/esm2022/api/lib/adf-http-client.service.mjs +311 -0
  11. package/esm2022/api/lib/alfresco-api/alfresco-api.param-encoder.mjs +33 -0
  12. package/esm2022/api/lib/alfresco-api/alfresco-api.response-error.mjs +25 -0
  13. package/esm2022/api/lib/alfresco-api/alfresco-api.utils.mjs +80 -0
  14. package/esm2022/api/lib/interfaces.mjs +18 -0
  15. package/esm2022/api/lib/types.mjs +18 -0
  16. package/esm2022/auth/alfresco-adf-core-auth.mjs +5 -0
  17. package/esm2022/auth/authentication-interceptor/authentication.interceptor.mjs +56 -0
  18. package/esm2022/auth/authentication.mjs +19 -0
  19. package/esm2022/auth/index.mjs +19 -0
  20. package/esm2022/breadcrumbs/alfresco-adf-core-breadcrumbs.mjs +5 -0
  21. package/esm2022/breadcrumbs/components/breadcrumb/breadcrumb.component.mjs +82 -0
  22. package/esm2022/breadcrumbs/components/breadcrumb-item/breadcrumb-item.component.mjs +42 -0
  23. package/esm2022/breadcrumbs/directives/breadcrumb-focus.directive.mjs +44 -0
  24. package/esm2022/breadcrumbs/index.mjs +19 -0
  25. package/esm2022/feature-flags/alfresco-adf-core-feature-flags.mjs +5 -0
  26. package/esm2022/feature-flags/index.mjs +29 -0
  27. package/esm2022/feature-flags/lib/components/feature-flags-wrapper.mjs +36 -0
  28. package/esm2022/feature-flags/lib/components/feature-override-indicator.component.mjs +56 -0
  29. package/esm2022/feature-flags/lib/components/flags/flags.component.mjs +129 -0
  30. package/esm2022/feature-flags/lib/directives/features.directive.mjs +63 -0
  31. package/esm2022/feature-flags/lib/directives/not-features.directive.mjs +63 -0
  32. package/esm2022/feature-flags/lib/guards/is-feature-off.guard.mjs +38 -0
  33. package/esm2022/feature-flags/lib/guards/is-feature-on.guard.mjs +38 -0
  34. package/esm2022/feature-flags/lib/guards/is-flags-override-on.guard.mjs +40 -0
  35. package/esm2022/feature-flags/lib/interfaces/features.interface.mjs +24 -0
  36. package/esm2022/feature-flags/lib/mocks/features-service-mock.factory.mjs +62 -0
  37. package/esm2022/feature-flags/lib/providers/debug-feature-flags.provider.mjs +51 -0
  38. package/esm2022/feature-flags/lib/providers/dummy-feature-flags.provider.mjs +36 -0
  39. package/esm2022/feature-flags/lib/services/debug-features.service.mjs +94 -0
  40. package/esm2022/feature-flags/lib/services/dummy-features.service.mjs +40 -0
  41. package/esm2022/feature-flags/lib/services/flagset.parser.mjs +38 -0
  42. package/esm2022/feature-flags/lib/services/qa-features.helper.mjs +62 -0
  43. package/esm2022/feature-flags/lib/services/storage-features.service.mjs +126 -0
  44. package/esm2022/lib/about/about-extension-list/about-extension-list.component.mjs +51 -0
  45. package/esm2022/lib/about/about-license-list/about-license-list.component.mjs +51 -0
  46. package/esm2022/lib/about/about-module-list/module-list.component.mjs +51 -0
  47. package/esm2022/lib/about/about-package/package-list.component.mjs +65 -0
  48. package/esm2022/lib/about/about-panel.directive.mjs +37 -0
  49. package/esm2022/lib/about/about-repository-info/about-repository-info.component.mjs +59 -0
  50. package/esm2022/lib/about/about-repository-info/repository-info.interface.mjs +18 -0
  51. package/esm2022/lib/about/about-server-settings/about-server-settings.component.mjs +42 -0
  52. package/esm2022/lib/about/about-status-list/about-status-list.component.mjs +51 -0
  53. package/esm2022/lib/about/about.component.mjs +35 -0
  54. package/esm2022/lib/about/about.module.mjs +75 -0
  55. package/esm2022/lib/about/index.mjs +18 -0
  56. package/esm2022/lib/about/interfaces.mjs +18 -0
  57. package/esm2022/lib/about/public-api.mjs +28 -0
  58. package/esm2022/lib/app-config/app-config-storage-prefix.factory.mjs +51 -0
  59. package/esm2022/lib/app-config/app-config.loader.mjs +41 -0
  60. package/esm2022/lib/app-config/app-config.module.mjs +33 -0
  61. package/esm2022/lib/app-config/app-config.pipe.mjs +38 -0
  62. package/esm2022/lib/app-config/app-config.service.mjs +243 -0
  63. package/esm2022/lib/app-config/debug-app-config.service.mjs +44 -0
  64. package/esm2022/lib/app-config/index.mjs +18 -0
  65. package/esm2022/lib/app-config/provide-app-config.mjs +44 -0
  66. package/esm2022/lib/app-config/public-api.mjs +23 -0
  67. package/esm2022/lib/auth/authentication-interceptor/auth-bearer.interceptor.mjs +67 -0
  68. package/esm2022/lib/auth/basic-auth/basic-alfresco-auth.service.mjs +356 -0
  69. package/esm2022/lib/auth/basic-auth/content-auth.mjs +189 -0
  70. package/esm2022/lib/auth/basic-auth/process-auth.mjs +193 -0
  71. package/esm2022/lib/auth/guard/auth-guard-bpm.service.mjs +31 -0
  72. package/esm2022/lib/auth/guard/auth-guard-ecm.service.mjs +31 -0
  73. package/esm2022/lib/auth/guard/auth-guard-sso-role.service.mjs +57 -0
  74. package/esm2022/lib/auth/guard/auth-guard.mjs +53 -0
  75. package/esm2022/lib/auth/guard/auth-guard.service.mjs +113 -0
  76. package/esm2022/lib/auth/index.mjs +18 -0
  77. package/esm2022/lib/auth/interfaces/authentication-service.interface.mjs +18 -0
  78. package/esm2022/lib/auth/interfaces/authentication.interface.mjs +18 -0
  79. package/esm2022/lib/auth/interfaces/identity-group.interface.mjs +18 -0
  80. package/esm2022/lib/auth/interfaces/identity-user.service.interface.mjs +18 -0
  81. package/esm2022/lib/auth/interfaces/openid-configuration.interface.mjs +18 -0
  82. package/esm2022/lib/auth/models/application-access.model.mjs +18 -0
  83. package/esm2022/lib/auth/models/identity-group.model.mjs +18 -0
  84. package/esm2022/lib/auth/models/identity-role.model.mjs +30 -0
  85. package/esm2022/lib/auth/models/identity-user.model.mjs +18 -0
  86. package/esm2022/lib/auth/models/oauth-config.model.mjs +18 -0
  87. package/esm2022/lib/auth/models/redirection.model.mjs +28 -0
  88. package/esm2022/lib/auth/models/user-access.model.mjs +18 -0
  89. package/esm2022/lib/auth/oidc/auth-config.mjs +19 -0
  90. package/esm2022/lib/auth/oidc/auth-config.service.mjs +110 -0
  91. package/esm2022/lib/auth/oidc/auth-routing.module.mjs +34 -0
  92. package/esm2022/lib/auth/oidc/auth.module.mjs +112 -0
  93. package/esm2022/lib/auth/oidc/auth.service.mjs +22 -0
  94. package/esm2022/lib/auth/oidc/oidc-auth.guard.mjs +37 -0
  95. package/esm2022/lib/auth/oidc/oidc-authentication.service.mjs +202 -0
  96. package/esm2022/lib/auth/oidc/public-api.mjs +24 -0
  97. package/esm2022/lib/auth/oidc/redirect-auth.service.mjs +267 -0
  98. package/esm2022/lib/auth/oidc/retry-login.service.mjs +66 -0
  99. package/esm2022/lib/auth/oidc/token.interceptor.mjs +62 -0
  100. package/esm2022/lib/auth/oidc/view/authentication-confirmation/authentication-confirmation.component.mjs +31 -0
  101. package/esm2022/lib/auth/public-api.mjs +44 -0
  102. package/esm2022/lib/auth/services/authentication.service.mjs +190 -0
  103. package/esm2022/lib/auth/services/base-authentication.service.mjs +99 -0
  104. package/esm2022/lib/auth/services/identity-group.service.mjs +269 -0
  105. package/esm2022/lib/auth/services/identity-role.service.mjs +99 -0
  106. package/esm2022/lib/auth/services/identity-user.service.mjs +443 -0
  107. package/esm2022/lib/auth/services/jwt-helper.service.mjs +205 -0
  108. package/esm2022/lib/auth/services/oauth2.service.mjs +69 -0
  109. package/esm2022/lib/auth/services/time-sync.service.mjs +83 -0
  110. package/esm2022/lib/auth/services/user-access.service.mjs +110 -0
  111. package/esm2022/lib/avatar/avatar.component.mjs +51 -0
  112. package/esm2022/lib/blank-page/blank-page.component.mjs +31 -0
  113. package/esm2022/lib/blank-page/blank-page.module.mjs +33 -0
  114. package/esm2022/lib/blank-page/index.mjs +18 -0
  115. package/esm2022/lib/blank-page/public-api.mjs +19 -0
  116. package/esm2022/lib/button/button.component.mjs +61 -0
  117. package/esm2022/lib/card-view/card-view.module.mjs +80 -0
  118. package/esm2022/lib/card-view/components/base-card-view.mjs +51 -0
  119. package/esm2022/lib/card-view/components/card-view/card-view.component.mjs +66 -0
  120. package/esm2022/lib/card-view/components/card-view-arrayitem/card-view-arrayitem.component.mjs +55 -0
  121. package/esm2022/lib/card-view/components/card-view-boolitem/card-view-boolitem.component.mjs +39 -0
  122. package/esm2022/lib/card-view/components/card-view-dateitem/card-view-dateitem.component.mjs +182 -0
  123. package/esm2022/lib/card-view/components/card-view-item-dispatcher/card-view-item-dispatcher.component.mjs +108 -0
  124. package/esm2022/lib/card-view/components/card-view-keyvaluepairsitem/card-view-keyvaluepairsitem.component.mjs +64 -0
  125. package/esm2022/lib/card-view/components/card-view-mapitem/card-view-mapitem.component.mjs +46 -0
  126. package/esm2022/lib/card-view/components/card-view-selectitem/card-view-selectitem.component.mjs +137 -0
  127. package/esm2022/lib/card-view/components/card-view-selectitem/select-filter-input/select-filter-input.component.mjs +113 -0
  128. package/esm2022/lib/card-view/components/card-view-textitem/card-view-textitem.component.mjs +239 -0
  129. package/esm2022/lib/card-view/components/card-view.components.mjs +28 -0
  130. package/esm2022/lib/card-view/index.mjs +18 -0
  131. package/esm2022/lib/card-view/interfaces/base-card-view-update.interface.mjs +18 -0
  132. package/esm2022/lib/card-view/interfaces/card-view-arrayitem-properties.interface.mjs +18 -0
  133. package/esm2022/lib/card-view/interfaces/card-view-boolitem-properties.interface.mjs +18 -0
  134. package/esm2022/lib/card-view/interfaces/card-view-dateitem-properties.interface.mjs +18 -0
  135. package/esm2022/lib/card-view/interfaces/card-view-item-properties.interface.mjs +18 -0
  136. package/esm2022/lib/card-view/interfaces/card-view-item-validator.interface.mjs +18 -0
  137. package/esm2022/lib/card-view/interfaces/card-view-item.interface.mjs +18 -0
  138. package/esm2022/lib/card-view/interfaces/card-view-keyvaluepairsitem-properties.interface.mjs +18 -0
  139. package/esm2022/lib/card-view/interfaces/card-view-selectitem-properties.interface.mjs +18 -0
  140. package/esm2022/lib/card-view/interfaces/card-view-textitem-pipe-property.interface.mjs +18 -0
  141. package/esm2022/lib/card-view/interfaces/card-view-textitem-properties.interface.mjs +18 -0
  142. package/esm2022/lib/card-view/interfaces/card-view.interfaces.mjs +29 -0
  143. package/esm2022/lib/card-view/interfaces/click-notification.interface.mjs +18 -0
  144. package/esm2022/lib/card-view/interfaces/update-notification.interface.mjs +18 -0
  145. package/esm2022/lib/card-view/models/card-view-arrayitem.model.mjs +28 -0
  146. package/esm2022/lib/card-view/models/card-view-baseitem.model.mjs +64 -0
  147. package/esm2022/lib/card-view/models/card-view-boolitem.model.mjs +36 -0
  148. package/esm2022/lib/card-view/models/card-view-dateitem.model.mjs +58 -0
  149. package/esm2022/lib/card-view/models/card-view-datetimeitem.model.mjs +28 -0
  150. package/esm2022/lib/card-view/models/card-view-floatitem.model.mjs +33 -0
  151. package/esm2022/lib/card-view/models/card-view-intitem.model.mjs +36 -0
  152. package/esm2022/lib/card-view/models/card-view-keyvaluepairs.model.mjs +27 -0
  153. package/esm2022/lib/card-view/models/card-view-longitem.model.mjs +36 -0
  154. package/esm2022/lib/card-view/models/card-view-mapitem.model.mjs +32 -0
  155. package/esm2022/lib/card-view/models/card-view-selectitem.model.mjs +41 -0
  156. package/esm2022/lib/card-view/models/card-view-textitem.model.mjs +40 -0
  157. package/esm2022/lib/card-view/models/card-view.models.mjs +29 -0
  158. package/esm2022/lib/card-view/public-api.mjs +25 -0
  159. package/esm2022/lib/card-view/services/card-item-types.service.mjs +54 -0
  160. package/esm2022/lib/card-view/services/card-view-update.service.mjs +59 -0
  161. package/esm2022/lib/card-view/services/card-view.services.mjs +19 -0
  162. package/esm2022/lib/card-view/validators/card-view-item-float.validator.mjs +31 -0
  163. package/esm2022/lib/card-view/validators/card-view-item-int.validator.mjs +35 -0
  164. package/esm2022/lib/card-view/validators/card-view-item-length.validator.mjs +34 -0
  165. package/esm2022/lib/card-view/validators/card-view-item-long.validator.mjs +35 -0
  166. package/esm2022/lib/card-view/validators/card-view-item-match.validator.mjs +35 -0
  167. package/esm2022/lib/card-view/validators/card-view-item-minmax.validator.mjs +35 -0
  168. package/esm2022/lib/card-view/validators/card-view-item-only-positive-int.validator.mjs +32 -0
  169. package/esm2022/lib/card-view/validators/card-view-item-only-positive-long.validator.mjs +31 -0
  170. package/esm2022/lib/card-view/validators/card-view.validators.mjs +26 -0
  171. package/esm2022/lib/card-view/validators/validators.map.mjs +26 -0
  172. package/esm2022/lib/clipboard/clipboard.directive.mjs +98 -0
  173. package/esm2022/lib/clipboard/clipboard.module.mjs +34 -0
  174. package/esm2022/lib/clipboard/clipboard.service.mjs +103 -0
  175. package/esm2022/lib/clipboard/index.mjs +18 -0
  176. package/esm2022/lib/clipboard/public-api.mjs +21 -0
  177. package/esm2022/lib/comments/comment-list/comment-list.component.mjs +52 -0
  178. package/esm2022/lib/comments/comment-list/comment-list.module.mjs +33 -0
  179. package/esm2022/lib/comments/comment-list/index.mjs +18 -0
  180. package/esm2022/lib/comments/comment-list/public-api.mjs +19 -0
  181. package/esm2022/lib/comments/comments.component.mjs +132 -0
  182. package/esm2022/lib/comments/comments.module.mjs +33 -0
  183. package/esm2022/lib/comments/index.mjs +18 -0
  184. package/esm2022/lib/comments/interfaces/comments-service.interface.mjs +18 -0
  185. package/esm2022/lib/comments/interfaces/comments.token.mjs +19 -0
  186. package/esm2022/lib/comments/public-api.mjs +22 -0
  187. package/esm2022/lib/common/index.mjs +35 -0
  188. package/esm2022/lib/common/interface/search-component.interface.mjs +18 -0
  189. package/esm2022/lib/common/mock/app-config.service.mock.mjs +47 -0
  190. package/esm2022/lib/common/models/default-languages.model.mjs +36 -0
  191. package/esm2022/lib/common/models/log-levels.model.mjs +33 -0
  192. package/esm2022/lib/common/models/user-info-mode.enum.mjs +25 -0
  193. package/esm2022/lib/common/services/cookie.service.mjs +82 -0
  194. package/esm2022/lib/common/services/download.service.mjs +102 -0
  195. package/esm2022/lib/common/services/dynamic-component-mapper.service.mjs +89 -0
  196. package/esm2022/lib/common/services/highlight-transform.service.mjs +61 -0
  197. package/esm2022/lib/common/services/language-item.interface.mjs +18 -0
  198. package/esm2022/lib/common/services/log.service.mjs +171 -0
  199. package/esm2022/lib/common/services/page-title.service.mjs +63 -0
  200. package/esm2022/lib/common/services/sort-by-category.service.mjs +81 -0
  201. package/esm2022/lib/common/services/storage.service.mjs +143 -0
  202. package/esm2022/lib/common/services/thumbnail.service.mjs +194 -0
  203. package/esm2022/lib/common/services/url.service.mjs +45 -0
  204. package/esm2022/lib/common/services/user-preferences.service.mjs +238 -0
  205. package/esm2022/lib/common/utils/date-fns-adapter.mjs +115 -0
  206. package/esm2022/lib/common/utils/date-fns-utils.mjs +222 -0
  207. package/esm2022/lib/common/utils/datetime-fns-adapter.mjs +134 -0
  208. package/esm2022/lib/common/utils/file-utils.mjs +65 -0
  209. package/esm2022/lib/common/utils/index.mjs +18 -0
  210. package/esm2022/lib/common/utils/moment-date-adapter.mjs +202 -0
  211. package/esm2022/lib/common/utils/moment-date-formats.model.mjs +32 -0
  212. package/esm2022/lib/common/utils/object-utils.mjs +107 -0
  213. package/esm2022/lib/common/utils/public-api.mjs +25 -0
  214. package/esm2022/lib/common/utils/string-utils.mjs +45 -0
  215. package/esm2022/lib/context-menu/animations.mjs +33 -0
  216. package/esm2022/lib/context-menu/context-menu-list.component.mjs +91 -0
  217. package/esm2022/lib/context-menu/context-menu-overlay.mjs +25 -0
  218. package/esm2022/lib/context-menu/context-menu-overlay.service.mjs +109 -0
  219. package/esm2022/lib/context-menu/context-menu.directive.mjs +63 -0
  220. package/esm2022/lib/context-menu/context-menu.module.mjs +35 -0
  221. package/esm2022/lib/context-menu/context-menu.tokens.mjs +19 -0
  222. package/esm2022/lib/context-menu/index.mjs +18 -0
  223. package/esm2022/lib/context-menu/interfaces.mjs +18 -0
  224. package/esm2022/lib/context-menu/public-api.mjs +21 -0
  225. package/esm2022/lib/core.module.mjs +296 -0
  226. package/esm2022/lib/datatable/components/amount-cell/amount-cell.component.mjs +45 -0
  227. package/esm2022/lib/datatable/components/boolean-cell/boolean-cell.component.mjs +65 -0
  228. package/esm2022/lib/datatable/components/columns-selector/columns-search-filter.pipe.mjs +55 -0
  229. package/esm2022/lib/datatable/components/columns-selector/columns-selector.component.mjs +113 -0
  230. package/esm2022/lib/datatable/components/data-cell.event.mjs +31 -0
  231. package/esm2022/lib/datatable/components/data-row-action.event.mjs +34 -0
  232. package/esm2022/lib/datatable/components/datatable/datatable.component.mjs +914 -0
  233. package/esm2022/lib/datatable/components/datatable-cell/datatable-cell.component.mjs +126 -0
  234. package/esm2022/lib/datatable/components/datatable-row/datatable-row.component.mjs +98 -0
  235. package/esm2022/lib/datatable/components/date-cell/date-cell.component.mjs +78 -0
  236. package/esm2022/lib/datatable/components/empty-list/empty-list.component.mjs +60 -0
  237. package/esm2022/lib/datatable/components/filesize-cell/filesize-cell.component.mjs +49 -0
  238. package/esm2022/lib/datatable/components/icon-cell/icon-cell.component.mjs +67 -0
  239. package/esm2022/lib/datatable/components/json-cell/json-cell.component.mjs +86 -0
  240. package/esm2022/lib/datatable/components/location-cell/location-cell.component.mjs +69 -0
  241. package/esm2022/lib/datatable/components/mocks/datatable.mock.mjs +153 -0
  242. package/esm2022/lib/datatable/components/number-cell/number-cell.component.mjs +42 -0
  243. package/esm2022/lib/datatable/data/data-column.model.mjs +18 -0
  244. package/esm2022/lib/datatable/data/data-row-event.model.mjs +26 -0
  245. package/esm2022/lib/datatable/data/data-row-update.model.mjs +18 -0
  246. package/esm2022/lib/datatable/data/data-row.model.mjs +18 -0
  247. package/esm2022/lib/datatable/data/data-sorting.model.mjs +24 -0
  248. package/esm2022/lib/datatable/data/data-table.schema.mjs +132 -0
  249. package/esm2022/lib/datatable/data/datatable-adapter.mjs +18 -0
  250. package/esm2022/lib/datatable/data/object-datacolumn.model.mjs +46 -0
  251. package/esm2022/lib/datatable/data/object-datarow.model.mjs +41 -0
  252. package/esm2022/lib/datatable/data/object-datatable-adapter.mjs +134 -0
  253. package/esm2022/lib/datatable/data-column/data-column-header.component.mjs +45 -0
  254. package/esm2022/lib/datatable/data-column/data-column-list.component.mjs +36 -0
  255. package/esm2022/lib/datatable/data-column/data-column.component.mjs +114 -0
  256. package/esm2022/lib/datatable/data-column/index.mjs +18 -0
  257. package/esm2022/lib/datatable/data-column/public-api.mjs +20 -0
  258. package/esm2022/lib/datatable/datatable.module.mjs +161 -0
  259. package/esm2022/lib/datatable/directives/custom-empty-content-template.directive.mjs +35 -0
  260. package/esm2022/lib/datatable/directives/custom-loading-template.directive.mjs +30 -0
  261. package/esm2022/lib/datatable/directives/custom-no-permission-template.directive.mjs +35 -0
  262. package/esm2022/lib/datatable/directives/drop-zone.directive.mjs +89 -0
  263. package/esm2022/lib/datatable/directives/header-filter-template.directive.mjs +43 -0
  264. package/esm2022/lib/datatable/directives/loading-template.directive.mjs +46 -0
  265. package/esm2022/lib/datatable/directives/main-data-table-action-template.directive.mjs +43 -0
  266. package/esm2022/lib/datatable/directives/no-content-template.directive.mjs +46 -0
  267. package/esm2022/lib/datatable/directives/no-permission-template.directive.mjs +46 -0
  268. package/esm2022/lib/datatable/directives/resizable/resizable.directive.mjs +173 -0
  269. package/esm2022/lib/datatable/directives/resizable/resize-handle.directive.mjs +72 -0
  270. package/esm2022/lib/datatable/directives/resizable/types.mjs +18 -0
  271. package/esm2022/lib/datatable/index.mjs +18 -0
  272. package/esm2022/lib/datatable/public-api.mjs +55 -0
  273. package/esm2022/lib/datatable/services/datatable.service.mjs +33 -0
  274. package/esm2022/lib/dialogs/confirm-dialog/confirm.dialog.mjs +50 -0
  275. package/esm2022/lib/dialogs/confirm-dialog/confirm.dialog.module.mjs +38 -0
  276. package/esm2022/lib/dialogs/dialog/dialog-data.interface.mjs +18 -0
  277. package/esm2022/lib/dialogs/dialog/dialog.component.mjs +70 -0
  278. package/esm2022/lib/dialogs/dialog/dialog.model.mjs +22 -0
  279. package/esm2022/lib/dialogs/dialog/index.mjs +20 -0
  280. package/esm2022/lib/dialogs/edit-json/edit-json.dialog.mjs +52 -0
  281. package/esm2022/lib/dialogs/edit-json/edit-json.dialog.module.mjs +34 -0
  282. package/esm2022/lib/dialogs/index.mjs +18 -0
  283. package/esm2022/lib/dialogs/public-api.mjs +25 -0
  284. package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.component.mjs +73 -0
  285. package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.model.mjs +18 -0
  286. package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.module.mjs +33 -0
  287. package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes.guard.mjs +64 -0
  288. package/esm2022/lib/directives/directive.module.mjs +56 -0
  289. package/esm2022/lib/directives/highlight.directive.mjs +67 -0
  290. package/esm2022/lib/directives/index.mjs +18 -0
  291. package/esm2022/lib/directives/infinite-select-scroll.directive.mjs +67 -0
  292. package/esm2022/lib/directives/logout.directive.mjs +72 -0
  293. package/esm2022/lib/directives/public-api.mjs +24 -0
  294. package/esm2022/lib/directives/tooltip-card/tooltip-card.component.mjs +60 -0
  295. package/esm2022/lib/directives/tooltip-card/tooltip-card.directive.mjs +104 -0
  296. package/esm2022/lib/directives/upload.directive.mjs +241 -0
  297. package/esm2022/lib/dynamic-chip-list/chip.mjs +18 -0
  298. package/esm2022/lib/dynamic-chip-list/dynamic-chip-list.component.mjs +204 -0
  299. package/esm2022/lib/dynamic-chip-list/dynamic-chip-list.module.mjs +33 -0
  300. package/esm2022/lib/dynamic-chip-list/index.mjs +18 -0
  301. package/esm2022/lib/dynamic-chip-list/public-api.mjs +20 -0
  302. package/esm2022/lib/events/base-ui.event.mjs +21 -0
  303. package/esm2022/lib/events/base.event.mjs +29 -0
  304. package/esm2022/lib/events/index.mjs +18 -0
  305. package/esm2022/lib/events/public-api.mjs +19 -0
  306. package/esm2022/lib/form/components/form-base.component.mjs +212 -0
  307. package/esm2022/lib/form/components/form-custom-button.directive.mjs +30 -0
  308. package/esm2022/lib/form/components/form-field/form-field.component.mjs +142 -0
  309. package/esm2022/lib/form/components/form-renderer.component.mjs +161 -0
  310. package/esm2022/lib/form/components/form-section/form-section.component.mjs +46 -0
  311. package/esm2022/lib/form/components/helpers/buttons-visibility.mjs +37 -0
  312. package/esm2022/lib/form/components/inplace-form-input/inplace-form-input.component.mjs +37 -0
  313. package/esm2022/lib/form/components/middlewares/decimal-middleware.service.mjs +48 -0
  314. package/esm2022/lib/form/components/middlewares/middleware.mjs +19 -0
  315. package/esm2022/lib/form/components/widgets/amount/amount.widget.mjs +77 -0
  316. package/esm2022/lib/form/components/widgets/base-viewer/base-viewer.widget.mjs +59 -0
  317. package/esm2022/lib/form/components/widgets/checkbox/checkbox.widget.mjs +52 -0
  318. package/esm2022/lib/form/components/widgets/core/container-column.model.mjs +28 -0
  319. package/esm2022/lib/form/components/widgets/core/container.model.mjs +50 -0
  320. package/esm2022/lib/form/components/widgets/core/content-link.model.mjs +52 -0
  321. package/esm2022/lib/form/components/widgets/core/displayable-cm-properties.model.mjs +18 -0
  322. package/esm2022/lib/form/components/widgets/core/error-message.model.mjs +38 -0
  323. package/esm2022/lib/form/components/widgets/core/external-content-link.mjs +18 -0
  324. package/esm2022/lib/form/components/widgets/core/external-content.mjs +18 -0
  325. package/esm2022/lib/form/components/widgets/core/form-field-file-source.mjs +18 -0
  326. package/esm2022/lib/form/components/widgets/core/form-field-metadata.mjs +18 -0
  327. package/esm2022/lib/form/components/widgets/core/form-field-option.mjs +18 -0
  328. package/esm2022/lib/form/components/widgets/core/form-field-rule.mjs +18 -0
  329. package/esm2022/lib/form/components/widgets/core/form-field-selected-folder.mjs +18 -0
  330. package/esm2022/lib/form/components/widgets/core/form-field-templates.mjs +18 -0
  331. package/esm2022/lib/form/components/widgets/core/form-field-types.mjs +74 -0
  332. package/esm2022/lib/form/components/widgets/core/form-field-utils.mjs +23 -0
  333. package/esm2022/lib/form/components/widgets/core/form-field-validator.mjs +268 -0
  334. package/esm2022/lib/form/components/widgets/core/form-field-variable-options.mjs +18 -0
  335. package/esm2022/lib/form/components/widgets/core/form-field.model.mjs +490 -0
  336. package/esm2022/lib/form/components/widgets/core/form-outcome-event.model.mjs +32 -0
  337. package/esm2022/lib/form/components/widgets/core/form-outcome.model.mjs +38 -0
  338. package/esm2022/lib/form/components/widgets/core/form-values.mjs +18 -0
  339. package/esm2022/lib/form/components/widgets/core/form-variable.model.mjs +18 -0
  340. package/esm2022/lib/form/components/widgets/core/form-widget.model.mjs +33 -0
  341. package/esm2022/lib/form/components/widgets/core/form.model.mjs +387 -0
  342. package/esm2022/lib/form/components/widgets/core/group.model.mjs +18 -0
  343. package/esm2022/lib/form/components/widgets/core/index.mjs +49 -0
  344. package/esm2022/lib/form/components/widgets/core/predefined-theme.mjs +115 -0
  345. package/esm2022/lib/form/components/widgets/core/process-form-model.interface.mjs +18 -0
  346. package/esm2022/lib/form/components/widgets/core/process-variable.model.mjs +18 -0
  347. package/esm2022/lib/form/components/widgets/core/tab.model.mjs +34 -0
  348. package/esm2022/lib/form/components/widgets/core/theme.model.mjs +18 -0
  349. package/esm2022/lib/form/components/widgets/core/upload-widget-content-link.model.mjs +27 -0
  350. package/esm2022/lib/form/components/widgets/core/widget-schema.model.mjs +18 -0
  351. package/esm2022/lib/form/components/widgets/date/date.widget.mjs +162 -0
  352. package/esm2022/lib/form/components/widgets/date-time/date-time.widget.mjs +153 -0
  353. package/esm2022/lib/form/components/widgets/decimal/decimal.component.mjs +53 -0
  354. package/esm2022/lib/form/components/widgets/display-text/display-text.schema.mjs +86 -0
  355. package/esm2022/lib/form/components/widgets/display-text/display-text.widget.mjs +46 -0
  356. package/esm2022/lib/form/components/widgets/display-text/index.mjs +19 -0
  357. package/esm2022/lib/form/components/widgets/error/error.component.mjs +92 -0
  358. package/esm2022/lib/form/components/widgets/header/header.schema.mjs +86 -0
  359. package/esm2022/lib/form/components/widgets/header/header.widget.mjs +42 -0
  360. package/esm2022/lib/form/components/widgets/header/index.mjs +19 -0
  361. package/esm2022/lib/form/components/widgets/hyperlink/hyperlink.widget.mjs +69 -0
  362. package/esm2022/lib/form/components/widgets/index.mjs +71 -0
  363. package/esm2022/lib/form/components/widgets/json/json.widget.mjs +66 -0
  364. package/esm2022/lib/form/components/widgets/multiline-text/multiline-text.widget.mjs +55 -0
  365. package/esm2022/lib/form/components/widgets/number/number.widget.mjs +71 -0
  366. package/esm2022/lib/form/components/widgets/reactive-widget.interface.mjs +18 -0
  367. package/esm2022/lib/form/components/widgets/text/text-mask.component.mjs +215 -0
  368. package/esm2022/lib/form/components/widgets/text/text.widget.mjs +65 -0
  369. package/esm2022/lib/form/components/widgets/unknown/unknown.widget.mjs +63 -0
  370. package/esm2022/lib/form/components/widgets/widget.component.mjs +110 -0
  371. package/esm2022/lib/form/events/form-error.event.mjs +24 -0
  372. package/esm2022/lib/form/events/form-field.event.mjs +24 -0
  373. package/esm2022/lib/form/events/form-rules.event.mjs +25 -0
  374. package/esm2022/lib/form/events/form-spinner.event.mjs +23 -0
  375. package/esm2022/lib/form/events/form.event.mjs +29 -0
  376. package/esm2022/lib/form/events/index.mjs +24 -0
  377. package/esm2022/lib/form/events/validate-form-field.event.mjs +24 -0
  378. package/esm2022/lib/form/events/validate-form.event.mjs +25 -0
  379. package/esm2022/lib/form/form-base.module.mjs +75 -0
  380. package/esm2022/lib/form/index.mjs +18 -0
  381. package/esm2022/lib/form/models/form-rules.model.mjs +77 -0
  382. package/esm2022/lib/form/models/task-process-variable.model.mjs +19 -0
  383. package/esm2022/lib/form/models/widget-visibility.model.mjs +104 -0
  384. package/esm2022/lib/form/pipes/field-style.pipe.mjs +45 -0
  385. package/esm2022/lib/form/pipes/index.mjs +18 -0
  386. package/esm2022/lib/form/public-api.mjs +35 -0
  387. package/esm2022/lib/form/services/form-rendering.service.mjs +53 -0
  388. package/esm2022/lib/form/services/form-validation-service.interface.mjs +18 -0
  389. package/esm2022/lib/form/services/form.service.mjs +86 -0
  390. package/esm2022/lib/form/services/widget-visibility.service.mjs +294 -0
  391. package/esm2022/lib/header/header.component.mjs +73 -0
  392. package/esm2022/lib/header/index.mjs +18 -0
  393. package/esm2022/lib/header/navbar/navbar-item.component.mjs +37 -0
  394. package/esm2022/lib/header/navbar/navbar.component.mjs +36 -0
  395. package/esm2022/lib/header/public-api.mjs +20 -0
  396. package/esm2022/lib/icon/icon.component.mjs +51 -0
  397. package/esm2022/lib/icon/icon.module.mjs +36 -0
  398. package/esm2022/lib/icon/index.mjs +18 -0
  399. package/esm2022/lib/icon/public-api.mjs +19 -0
  400. package/esm2022/lib/identity-user-info/identity-user-info.component.mjs +86 -0
  401. package/esm2022/lib/identity-user-info/identity-user-info.module.mjs +33 -0
  402. package/esm2022/lib/identity-user-info/index.mjs +18 -0
  403. package/esm2022/lib/identity-user-info/public-api.mjs +19 -0
  404. package/esm2022/lib/info-drawer/index.mjs +18 -0
  405. package/esm2022/lib/info-drawer/info-drawer-layout.component.mjs +71 -0
  406. package/esm2022/lib/info-drawer/info-drawer.component.mjs +113 -0
  407. package/esm2022/lib/info-drawer/info-drawer.module.mjs +53 -0
  408. package/esm2022/lib/info-drawer/public-api.mjs +20 -0
  409. package/esm2022/lib/interface/index.mjs +18 -0
  410. package/esm2022/lib/interface/injection.tokens.mjs +19 -0
  411. package/esm2022/lib/interface/public-api.mjs +18 -0
  412. package/esm2022/lib/language-menu/index.mjs +18 -0
  413. package/esm2022/lib/language-menu/language-menu.component.mjs +61 -0
  414. package/esm2022/lib/language-menu/language-menu.module.mjs +35 -0
  415. package/esm2022/lib/language-menu/language-picker.component.mjs +77 -0
  416. package/esm2022/lib/language-menu/public-api.mjs +21 -0
  417. package/esm2022/lib/language-menu/service/language.service.interface.mjs +18 -0
  418. package/esm2022/lib/language-menu/service/language.service.mjs +34 -0
  419. package/esm2022/lib/layout/components/header/header.component.mjs +99 -0
  420. package/esm2022/lib/layout/components/layout-container/layout-container.component.mjs +180 -0
  421. package/esm2022/lib/layout/components/sidebar-action/sidebar-action-menu.component.mjs +82 -0
  422. package/esm2022/lib/layout/components/sidenav-layout/sidenav-layout.component.mjs +145 -0
  423. package/esm2022/lib/layout/directives/sidenav-layout-content.directive.mjs +33 -0
  424. package/esm2022/lib/layout/directives/sidenav-layout-header.directive.mjs +33 -0
  425. package/esm2022/lib/layout/directives/sidenav-layout-navigation.directive.mjs +33 -0
  426. package/esm2022/lib/layout/index.mjs +18 -0
  427. package/esm2022/lib/layout/layout.module.mjs +72 -0
  428. package/esm2022/lib/layout/public-api.mjs +25 -0
  429. package/esm2022/lib/login/components/login/login.component.mjs +367 -0
  430. package/esm2022/lib/login/components/login-dialog/login-dialog-component-data.interface.mjs +18 -0
  431. package/esm2022/lib/login/components/login-dialog/login-dialog.component.mjs +57 -0
  432. package/esm2022/lib/login/components/login-dialog-panel/login-dialog-panel.component.mjs +48 -0
  433. package/esm2022/lib/login/directives/login-footer.directive.mjs +41 -0
  434. package/esm2022/lib/login/directives/login-header.directive.mjs +41 -0
  435. package/esm2022/lib/login/index.mjs +18 -0
  436. package/esm2022/lib/login/login.module.mjs +54 -0
  437. package/esm2022/lib/login/models/login-error.event.mjs +22 -0
  438. package/esm2022/lib/login/models/login-submit.event.mjs +32 -0
  439. package/esm2022/lib/login/models/login-success.event.mjs +24 -0
  440. package/esm2022/lib/login/public-api.mjs +27 -0
  441. package/esm2022/lib/material.module.mjs +254 -0
  442. package/esm2022/lib/mock/cookie.service.mock.mjs +43 -0
  443. package/esm2022/lib/mock/data-column.mock.mjs +73 -0
  444. package/esm2022/lib/mock/event.mock.mjs +39 -0
  445. package/esm2022/lib/mock/form/form-definition-readonly.mock.mjs +225 -0
  446. package/esm2022/lib/mock/form/form-definition-visibility.mock.mjs +347 -0
  447. package/esm2022/lib/mock/form/form-definition.mock.mjs +403 -0
  448. package/esm2022/lib/mock/form/form.component.mock.mjs +275 -0
  449. package/esm2022/lib/mock/form/form.service.mock.mjs +248 -0
  450. package/esm2022/lib/mock/form/widget-visibility.service.mock.mjs +1835 -0
  451. package/esm2022/lib/mock/index.mjs +18 -0
  452. package/esm2022/lib/mock/public-api.mjs +27 -0
  453. package/esm2022/lib/mock/translation.service.mock.mjs +44 -0
  454. package/esm2022/lib/models/comment.model.mjs +51 -0
  455. package/esm2022/lib/models/component.model.mjs +24 -0
  456. package/esm2022/lib/models/decimal-number.model.mjs +26 -0
  457. package/esm2022/lib/models/general-user.model.mjs +24 -0
  458. package/esm2022/lib/models/index.mjs +18 -0
  459. package/esm2022/lib/models/pagination.model.mjs +29 -0
  460. package/esm2022/lib/models/path.model.mjs +24 -0
  461. package/esm2022/lib/models/product-version.model.mjs +28 -0
  462. package/esm2022/lib/models/public-api.mjs +24 -0
  463. package/esm2022/lib/models/request-pagination.model.mjs +25 -0
  464. package/esm2022/lib/notifications/components/add-notification.stories.component.mjs +44 -0
  465. package/esm2022/lib/notifications/components/notification-history.component.mjs +138 -0
  466. package/esm2022/lib/notifications/helpers/notification.factory.mjs +43 -0
  467. package/esm2022/lib/notifications/index.mjs +18 -0
  468. package/esm2022/lib/notifications/models/notification.model.mjs +25 -0
  469. package/esm2022/lib/notifications/notification-history.module.mjs +35 -0
  470. package/esm2022/lib/notifications/public-api.mjs +23 -0
  471. package/esm2022/lib/notifications/services/notification.service.mjs +166 -0
  472. package/esm2022/lib/pagination/index.mjs +18 -0
  473. package/esm2022/lib/pagination/infinite-pagination.component.mjs +111 -0
  474. package/esm2022/lib/pagination/paginated-component.interface.mjs +18 -0
  475. package/esm2022/lib/pagination/pagination-component.interface.mjs +18 -0
  476. package/esm2022/lib/pagination/pagination.component.mjs +263 -0
  477. package/esm2022/lib/pagination/pagination.module.mjs +35 -0
  478. package/esm2022/lib/pagination/public-api.mjs +22 -0
  479. package/esm2022/lib/pipes/date-time.pipe.mjs +46 -0
  480. package/esm2022/lib/pipes/decimal-number.pipe.mjs +78 -0
  481. package/esm2022/lib/pipes/file-size.pipe.mjs +54 -0
  482. package/esm2022/lib/pipes/file-type.pipe.mjs +40 -0
  483. package/esm2022/lib/pipes/format-space.pipe.mjs +39 -0
  484. package/esm2022/lib/pipes/full-name.pipe.mjs +43 -0
  485. package/esm2022/lib/pipes/index.mjs +18 -0
  486. package/esm2022/lib/pipes/localized-date.pipe.mjs +70 -0
  487. package/esm2022/lib/pipes/multi-value.pipe.mjs +37 -0
  488. package/esm2022/lib/pipes/pipe.module.mjs +83 -0
  489. package/esm2022/lib/pipes/public-api.mjs +30 -0
  490. package/esm2022/lib/pipes/text-highlight.pipe.mjs +39 -0
  491. package/esm2022/lib/pipes/time-ago.pipe.mjs +65 -0
  492. package/esm2022/lib/pipes/truncate.pipe.mjs +33 -0
  493. package/esm2022/lib/pipes/user-initial.pipe.mjs +52 -0
  494. package/esm2022/lib/pipes/user-like.interface.mjs +18 -0
  495. package/esm2022/lib/progress/progress.component.mjs +90 -0
  496. package/esm2022/lib/search-text/animations.mjs +32 -0
  497. package/esm2022/lib/search-text/index.mjs +18 -0
  498. package/esm2022/lib/search-text/models/search-text-input.model.mjs +23 -0
  499. package/esm2022/lib/search-text/public-api.mjs +22 -0
  500. package/esm2022/lib/search-text/search-text-input.component.mjs +283 -0
  501. package/esm2022/lib/search-text/search-text-input.module.mjs +35 -0
  502. package/esm2022/lib/search-text/search-trigger.directive.mjs +181 -0
  503. package/esm2022/lib/snackbar-content/index.mjs +18 -0
  504. package/esm2022/lib/snackbar-content/public-api.mjs +20 -0
  505. package/esm2022/lib/snackbar-content/snack-bar-data.mjs +18 -0
  506. package/esm2022/lib/snackbar-content/snackbar-content.component.mjs +49 -0
  507. package/esm2022/lib/snackbar-content/snackbar-content.module.mjs +33 -0
  508. package/esm2022/lib/sorting-picker/index.mjs +18 -0
  509. package/esm2022/lib/sorting-picker/public-api.mjs +18 -0
  510. package/esm2022/lib/sorting-picker/sorting-picker.component.mjs +67 -0
  511. package/esm2022/lib/templates/empty-content/empty-content.component.mjs +43 -0
  512. package/esm2022/lib/templates/error-content/error-content.component.mjs +61 -0
  513. package/esm2022/lib/templates/index.mjs +18 -0
  514. package/esm2022/lib/templates/public-api.mjs +20 -0
  515. package/esm2022/lib/templates/template.module.mjs +38 -0
  516. package/esm2022/lib/testing/core.story.module.mjs +39 -0
  517. package/esm2022/lib/testing/core.testing.module.mjs +36 -0
  518. package/esm2022/lib/testing/index.mjs +22 -0
  519. package/esm2022/lib/testing/noop-auth.module.mjs +80 -0
  520. package/esm2022/lib/testing/noop-translate.module.mjs +75 -0
  521. package/esm2022/lib/testing/unit-testing-utils.mjs +364 -0
  522. package/esm2022/lib/toolbar/index.mjs +18 -0
  523. package/esm2022/lib/toolbar/public-api.mjs +21 -0
  524. package/esm2022/lib/toolbar/toolbar-divider.component.mjs +27 -0
  525. package/esm2022/lib/toolbar/toolbar-title.component.mjs +32 -0
  526. package/esm2022/lib/toolbar/toolbar.component.mjs +39 -0
  527. package/esm2022/lib/toolbar/toolbar.module.mjs +36 -0
  528. package/esm2022/lib/translation/index.mjs +18 -0
  529. package/esm2022/lib/translation/public-api.mjs +19 -0
  530. package/esm2022/lib/translation/translate-loader.service.mjs +153 -0
  531. package/esm2022/lib/translation/translation.service.mjs +148 -0
  532. package/esm2022/lib/viewer/components/download-prompt-dialog/download-prompt-dialog.component.mjs +36 -0
  533. package/esm2022/lib/viewer/components/img-viewer/img-viewer.component.mjs +220 -0
  534. package/esm2022/lib/viewer/components/media-player/media-player.component.mjs +64 -0
  535. package/esm2022/lib/viewer/components/pdf-viewer/pdf-viewer.component.mjs +550 -0
  536. package/esm2022/lib/viewer/components/pdf-viewer-password-dialog/pdf-viewer-password-dialog.mjs +60 -0
  537. package/esm2022/lib/viewer/components/pdf-viewer-thumb/pdf-viewer-thumb.component.mjs +48 -0
  538. package/esm2022/lib/viewer/components/pdf-viewer-thumbnails/pdf-viewer-thumbnails.component.mjs +198 -0
  539. package/esm2022/lib/viewer/components/txt-viewer/txt-viewer.component.mjs +85 -0
  540. package/esm2022/lib/viewer/components/unknown-format/unknown-format.component.mjs +32 -0
  541. package/esm2022/lib/viewer/components/viewer-more-actions.component.mjs +34 -0
  542. package/esm2022/lib/viewer/components/viewer-open-with.component.mjs +34 -0
  543. package/esm2022/lib/viewer/components/viewer-render/viewer-render.component.mjs +216 -0
  544. package/esm2022/lib/viewer/components/viewer-sidebar.component.mjs +46 -0
  545. package/esm2022/lib/viewer/components/viewer-toolbar-actions.component.mjs +34 -0
  546. package/esm2022/lib/viewer/components/viewer-toolbar-custom-actions.component.mjs +34 -0
  547. package/esm2022/lib/viewer/components/viewer-toolbar.component.mjs +34 -0
  548. package/esm2022/lib/viewer/components/viewer.component.mjs +486 -0
  549. package/esm2022/lib/viewer/directives/viewer-extension.directive.mjs +67 -0
  550. package/esm2022/lib/viewer/index.mjs +18 -0
  551. package/esm2022/lib/viewer/models/download-prompt.actions.mjs +23 -0
  552. package/esm2022/lib/viewer/models/viewer.model.mjs +22 -0
  553. package/esm2022/lib/viewer/public-api.mjs +40 -0
  554. package/esm2022/lib/viewer/services/rendering-queue.services.mjs +179 -0
  555. package/esm2022/lib/viewer/services/view-util.service.mjs +149 -0
  556. package/esm2022/lib/viewer/viewer.module.mjs +110 -0
  557. package/esm2022/public-api.mjs +60 -0
  558. package/esm2022/shell/alfresco-adf-core-shell.mjs +5 -0
  559. package/esm2022/shell/index.mjs +21 -0
  560. package/esm2022/shell/lib/components/shell/shell.component.mjs +122 -0
  561. package/esm2022/shell/lib/services/shell-app.service.mjs +22 -0
  562. package/esm2022/shell/lib/shell.module.mjs +75 -0
  563. package/esm2022/shell/lib/shell.routes.mjs +50 -0
  564. package/feature-flags/lib/providers/debug-feature-flags.provider.d.ts +35 -4
  565. package/fesm2022/adf-core.mjs +1083 -1101
  566. package/fesm2022/adf-core.mjs.map +1 -1
  567. package/fesm2022/alfresco-adf-core-api.mjs +4 -4
  568. package/fesm2022/alfresco-adf-core-api.mjs.map +1 -1
  569. package/fesm2022/alfresco-adf-core-auth.mjs +3 -3
  570. package/fesm2022/alfresco-adf-core-auth.mjs.map +1 -1
  571. package/fesm2022/alfresco-adf-core-breadcrumbs.mjs +11 -11
  572. package/fesm2022/alfresco-adf-core-breadcrumbs.mjs.map +1 -1
  573. package/fesm2022/alfresco-adf-core-feature-flags.mjs +59 -52
  574. package/fesm2022/alfresco-adf-core-feature-flags.mjs.map +1 -1
  575. package/fesm2022/alfresco-adf-core-shell.mjs +14 -68
  576. package/fesm2022/alfresco-adf-core-shell.mjs.map +1 -1
  577. package/lib/app-config/provide-app-config.d.ts +2 -2
  578. package/lib/auth/oidc/auth.module.d.ts +4 -4
  579. package/lib/auth/oidc/view/authentication-confirmation/authentication-confirmation.component.d.ts +1 -1
  580. package/lib/card-view/components/base-card-view.d.ts +1 -1
  581. package/lib/card-view/components/card-view/card-view.component.scss +9 -12
  582. package/lib/card-view/components/card-view-selectitem/card-view-selectitem.component.scss +2 -1
  583. package/lib/card-view/components/card-view-textitem/card-view-textitem.component.scss +5 -2
  584. package/lib/datatable/data/data-table.schema.d.ts +1 -1
  585. package/lib/dialogs/confirm-dialog/confirm.dialog.d.ts +1 -1
  586. package/lib/dialogs/confirm-dialog/confirm.dialog.module.d.ts +6 -2
  587. package/lib/form/components/form-renderer.component.scss +4 -5
  588. package/lib/translation/public-api.d.ts +0 -1
  589. package/package.json +15 -3
  590. package/public-api.d.ts +0 -1
  591. package/shell/README.md +3 -13
  592. package/shell/index.d.ts +0 -1
  593. package/shell/lib/shell.module.d.ts +1 -1
  594. package/lib/landing-page/index.d.ts +0 -17
  595. package/lib/landing-page/provider.d.ts +0 -24
  596. package/lib/landing-page/public-api.d.ts +0 -17
  597. package/lib/translation/provide-i18n.d.ts +0 -39
  598. package/shell/lib/providers.d.ts +0 -36
@@ -0,0 +1,238 @@
1
+ /*!
2
+ * @license
3
+ * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { inject, Injectable, RendererFactory2 } from '@angular/core';
18
+ import { TranslateService } from '@ngx-translate/core';
19
+ import { BehaviorSubject } from 'rxjs';
20
+ import { AppConfigService, AppConfigValues } from '../../app-config/app-config.service';
21
+ import { StorageService } from './storage.service';
22
+ import { distinctUntilChanged, map } from 'rxjs/operators';
23
+ import { DOCUMENT } from '@angular/common';
24
+ import { Directionality } from '@angular/cdk/bidi';
25
+ import { DEFAULT_LANGUAGE_LIST } from '../models/default-languages.model';
26
+ import * as i0 from "@angular/core";
27
+ import * as i1 from "@ngx-translate/core";
28
+ import * as i2 from "../../app-config/app-config.service";
29
+ import * as i3 from "./storage.service";
30
+ // eslint-disable-next-line no-shadow
31
+ export var UserPreferenceValues;
32
+ (function (UserPreferenceValues) {
33
+ UserPreferenceValues["PaginationSize"] = "paginationSize";
34
+ UserPreferenceValues["Locale"] = "locale";
35
+ UserPreferenceValues["SupportedPageSizes"] = "supportedPageSizes";
36
+ UserPreferenceValues["ExpandedSideNavStatus"] = "expandedSidenav";
37
+ })(UserPreferenceValues || (UserPreferenceValues = {}));
38
+ export class UserPreferencesService {
39
+ constructor(translate, appConfig, storage) {
40
+ this.translate = translate;
41
+ this.appConfig = appConfig;
42
+ this.storage = storage;
43
+ this.document = inject(DOCUMENT);
44
+ this.rendererFactory = inject(RendererFactory2);
45
+ this.directionality = inject(Directionality);
46
+ this.defaults = {
47
+ paginationSize: 25,
48
+ supportedPageSizes: [5, 10, 15, 20],
49
+ locale: 'en',
50
+ expandedSidenav: true
51
+ };
52
+ this.userPreferenceStatus = this.defaults;
53
+ this.onChangeSubject = new BehaviorSubject(this.userPreferenceStatus);
54
+ this.onChange = this.onChangeSubject.asObservable();
55
+ this.appConfig.onLoad.subscribe(() => {
56
+ this.initUserPreferenceStatus();
57
+ });
58
+ const renderer = this.rendererFactory.createRenderer(null, null);
59
+ this.select('textOrientation').subscribe((direction) => {
60
+ renderer.setAttribute(this.document.body, 'dir', direction);
61
+ this.directionality.value = direction;
62
+ });
63
+ }
64
+ initUserPreferenceStatus() {
65
+ this.initUserLanguage();
66
+ this.set(UserPreferenceValues.PaginationSize, this.paginationSize);
67
+ this.set(UserPreferenceValues.SupportedPageSizes, JSON.stringify(this.supportedPageSizes));
68
+ }
69
+ initUserLanguage() {
70
+ if (this.locale || this.appConfig.get(UserPreferenceValues.Locale)) {
71
+ const locale = this.locale || this.getDefaultLocale();
72
+ this.set(UserPreferenceValues.Locale, locale);
73
+ this.set('textOrientation', this.getLanguageByKey(locale).direction || 'ltr');
74
+ }
75
+ else {
76
+ const locale = this.locale || this.getDefaultLocale();
77
+ this.setWithoutStore(UserPreferenceValues.Locale, locale);
78
+ this.setWithoutStore('textOrientation', this.getLanguageByKey(locale).direction || 'ltr');
79
+ }
80
+ }
81
+ /**
82
+ * Sets up a callback to notify when a property has changed.
83
+ *
84
+ * @param property The property to watch
85
+ * @returns Notification callback
86
+ */
87
+ select(property) {
88
+ return this.onChange.pipe(map((userPreferenceStatus) => userPreferenceStatus[property]), distinctUntilChanged());
89
+ }
90
+ /**
91
+ * Gets a preference property.
92
+ *
93
+ * @param property Name of the property
94
+ * @param defaultValue Default to return if the property is not found
95
+ * @returns Preference property
96
+ */
97
+ get(property, defaultValue) {
98
+ const key = this.getPropertyKey(property);
99
+ const value = this.storage.getItem(key);
100
+ if (value === undefined || value === null) {
101
+ return defaultValue;
102
+ }
103
+ return value;
104
+ }
105
+ /**
106
+ * Sets a preference property.
107
+ *
108
+ * @param property Name of the property
109
+ * @param value New value for the property
110
+ */
111
+ set(property, value) {
112
+ if (!property) {
113
+ return;
114
+ }
115
+ this.storage.setItem(this.getPropertyKey(property), value);
116
+ this.userPreferenceStatus[property] = value;
117
+ this.onChangeSubject.next(this.userPreferenceStatus);
118
+ }
119
+ /**
120
+ * Sets a preference property.
121
+ *
122
+ * @param property Name of the property
123
+ * @param value New value for the property
124
+ */
125
+ setWithoutStore(property, value) {
126
+ if (!property) {
127
+ return;
128
+ }
129
+ this.userPreferenceStatus[property] = value;
130
+ this.onChangeSubject.next(this.userPreferenceStatus);
131
+ }
132
+ /**
133
+ * Check if an item is present in the storage
134
+ *
135
+ * @param property Name of the property
136
+ * @returns True if the item is present, false otherwise
137
+ */
138
+ hasItem(property) {
139
+ if (!property) {
140
+ return false;
141
+ }
142
+ return this.storage.hasItem(this.getPropertyKey(property));
143
+ }
144
+ /**
145
+ * Gets the active storage prefix for preferences.
146
+ *
147
+ * @returns Storage prefix
148
+ */
149
+ getStoragePrefix() {
150
+ return this.storage.getItem('USER_PROFILE') || 'GUEST';
151
+ }
152
+ /**
153
+ * Sets the active storage prefix for preferences.
154
+ *
155
+ * @param value Name of the prefix
156
+ */
157
+ setStoragePrefix(value) {
158
+ this.storage.setItem('USER_PROFILE', value || 'GUEST');
159
+ this.initUserPreferenceStatus();
160
+ }
161
+ /**
162
+ * Gets the full property key with prefix.
163
+ *
164
+ * @param property The property name
165
+ * @returns Property key
166
+ */
167
+ getPropertyKey(property) {
168
+ return `${this.getStoragePrefix()}__${property}`;
169
+ }
170
+ /**
171
+ * Gets an array containing the available page sizes.
172
+ *
173
+ * @returns Array of page size values
174
+ */
175
+ get supportedPageSizes() {
176
+ const supportedPageSizes = this.get(UserPreferenceValues.SupportedPageSizes);
177
+ if (supportedPageSizes) {
178
+ return JSON.parse(supportedPageSizes);
179
+ }
180
+ else {
181
+ return this.appConfig.get('pagination.supportedPageSizes', this.defaults.supportedPageSizes);
182
+ }
183
+ }
184
+ set supportedPageSizes(value) {
185
+ this.set(UserPreferenceValues.SupportedPageSizes, JSON.stringify(value));
186
+ }
187
+ /** Pagination size. */
188
+ set paginationSize(value) {
189
+ this.set(UserPreferenceValues.PaginationSize, value);
190
+ }
191
+ get paginationSize() {
192
+ const paginationSize = this.get(UserPreferenceValues.PaginationSize);
193
+ if (paginationSize) {
194
+ return Number(paginationSize);
195
+ }
196
+ else {
197
+ return Number(this.appConfig.get('pagination.size', this.defaults.paginationSize));
198
+ }
199
+ }
200
+ /**
201
+ * Current locale setting.
202
+ *
203
+ * @returns locale name
204
+ */
205
+ get locale() {
206
+ return this.get(UserPreferenceValues.Locale);
207
+ }
208
+ set locale(value) {
209
+ this.set(UserPreferenceValues.Locale, value);
210
+ }
211
+ /**
212
+ * Gets the default locale.
213
+ *
214
+ * @returns Default locale language code
215
+ */
216
+ getDefaultLocale() {
217
+ return this.appConfig.get(UserPreferenceValues.Locale) || this.translate.getBrowserCultureLang() || 'en';
218
+ }
219
+ getLanguageByKey(key) {
220
+ const defaultLanguage = { key: 'en' };
221
+ let language;
222
+ const customLanguages = this.appConfig.get(AppConfigValues.APP_CONFIG_LANGUAGES_KEY);
223
+ if (Array.isArray(customLanguages)) {
224
+ language = customLanguages.find((customLanguage) => key.includes(customLanguage.key));
225
+ }
226
+ language ??= DEFAULT_LANGUAGE_LIST.find((defaultLang) => defaultLang.key === key) ?? defaultLanguage;
227
+ return language;
228
+ }
229
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserPreferencesService, deps: [{ token: i1.TranslateService }, { token: i2.AppConfigService }, { token: i3.StorageService }], target: i0.ɵɵFactoryTarget.Injectable }); }
230
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserPreferencesService, providedIn: 'root' }); }
231
+ }
232
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserPreferencesService, decorators: [{
233
+ type: Injectable,
234
+ args: [{
235
+ providedIn: 'root'
236
+ }]
237
+ }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.AppConfigService }, { type: i3.StorageService }] });
238
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wcmVmZXJlbmNlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvcmUvc3JjL2xpYi9jb21tb24vc2VydmljZXMvdXNlci1wcmVmZXJlbmNlcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBYyxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQWEsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7QUFFMUUscUNBQXFDO0FBQ3JDLE1BQU0sQ0FBTixJQUFZLG9CQUtYO0FBTEQsV0FBWSxvQkFBb0I7SUFDNUIseURBQWlDLENBQUE7SUFDakMseUNBQWlCLENBQUE7SUFDakIsaUVBQXlDLENBQUE7SUFDekMsaUVBQXlDLENBQUE7QUFDN0MsQ0FBQyxFQUxXLG9CQUFvQixLQUFwQixvQkFBb0IsUUFLL0I7QUFLRCxNQUFNLE9BQU8sc0JBQXNCO0lBZ0IvQixZQUFtQixTQUEyQixFQUFVLFNBQTJCLEVBQVUsT0FBdUI7UUFBakcsY0FBUyxHQUFULFNBQVMs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R0FBVztRQUNoQyxNQUFNLGVBQWUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQWtCLENBQUM7UUFDdEQsSUFBSSxRQUFzQixDQUFDO1FBRTNCLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFzQixlQUFlLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUMxRyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUNqQyxRQUFRLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxRixDQUFDO1FBQ0QsUUFBUSxLQUFLLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsSUFBSSxlQUFlLENBQUM7UUFDckcsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQzsrR0ExTlEsc0JBQXNCO21IQUF0QixzQkFBc0IsY0FGbkIsTUFBTTs7NEZBRVQsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBSZW5kZXJlckZhY3RvcnkyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UsIEFwcENvbmZpZ1ZhbHVlcyB9IGZyb20gJy4uLy4uL2FwcC1jb25maWcvYXBwLWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IExhbmd1YWdlSXRlbSB9IGZyb20gJy4vbGFuZ3VhZ2UtaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRGlyZWN0aW9uYWxpdHksIERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IERFRkFVTFRfTEFOR1VBR0VfTElTVCB9IGZyb20gJy4uL21vZGVscy9kZWZhdWx0LWxhbmd1YWdlcy5tb2RlbCc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zaGFkb3dcbmV4cG9ydCBlbnVtIFVzZXJQcmVmZXJlbmNlVmFsdWVzIHtcbiAgICBQYWdpbmF0aW9uU2l6ZSA9ICdwYWdpbmF0aW9uU2l6ZScsXG4gICAgTG9jYWxlID0gJ2xvY2FsZScsXG4gICAgU3VwcG9ydGVkUGFnZVNpemVzID0gJ3N1cHBvcnRlZFBhZ2VTaXplcycsXG4gICAgRXhwYW5kZWRTaWRlTmF2U3RhdHVzID0gJ2V4cGFuZGVkU2lkZW5hdidcbn1cblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlIHtcbiAgICBwcml2YXRlIGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgICBwcml2YXRlIHJlbmRlcmVyRmFjdG9yeSA9IGluamVjdChSZW5kZXJlckZhY3RvcnkyKTtcbiAgICBwcml2YXRlIGRpcmVjdGlvbmFsaXR5ID0gaW5qZWN0KERpcmVjdGlvbmFsaXR5KTtcblxuICAgIGRlZmF1bHRzID0ge1xuICAgICAgICBwYWdpbmF0aW9uU2l6ZTogMjUsXG4gICAgICAgIHN1cHBvcnRlZFBhZ2VTaXplczogWzUsIDEwLCAxNSwgMjBdLFxuICAgICAgICBsb2NhbGU6ICdlbicsXG4gICAgICAgIGV4cGFuZGVkU2lkZW5hdjogdHJ1ZVxuICAgIH07XG5cbiAgICBwcml2YXRlIHVzZXJQcmVmZXJlbmNlU3RhdHVzOiBhbnkgPSB0aGlzLmRlZmF1bHRzO1xuICAgIHByaXZhdGUgb25DaGFuZ2VTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55PjtcbiAgICBvbkNoYW5nZTogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgcHJpdmF0ZSBhcHBDb25maWc6IEFwcENvbmZpZ1NlcnZpY2UsIHByaXZhdGUgc3RvcmFnZTogU3RvcmFnZVNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMudXNlclByZWZlcmVuY2VTdGF0dXMpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gdGhpcy5vbkNoYW5nZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICAgICAgdGhpcy5hcHBDb25maWcub25Mb2FkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmluaXRVc2VyUHJlZmVyZW5jZVN0YXR1cygpO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCByZW5kZXJlciA9IHRoaXMucmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0KCd0ZXh0T3JpZW50YXRpb24nKS5zdWJzY3JpYmUoKGRpcmVjdGlvbjogRGlyZWN0aW9uKSA9PiB7XG4gICAgICAgICAgICByZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5kb2N1bWVudC5ib2R5LCAnZGlyJywgZGlyZWN0aW9uKTtcbiAgICAgICAgICAgICh0aGlzLmRpcmVjdGlvbmFsaXR5IGFzIGFueSkudmFsdWUgPSBkaXJlY3Rpb247XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFVzZXJQcmVmZXJlbmNlU3RhdHVzKCkge1xuICAgICAgICB0aGlzLmluaXRVc2VyTGFuZ3VhZ2UoKTtcbiAgICAgICAgdGhpcy5zZXQoVXNlclByZWZlcmVuY2VWYWx1ZXMuUGFnaW5hdGlvblNpemUsIHRoaXMucGFnaW5hdGlvblNpemUpO1xuICAgICAgICB0aGlzLnNldChVc2VyUHJlZmVyZW5jZVZhbHVlcy5TdXBwb3J0ZWRQYWdlU2l6ZXMsIEpTT04uc3RyaW5naWZ5KHRoaXMuc3VwcG9ydGVkUGFnZVNpemVzKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0VXNlckxhbmd1YWdlKCkge1xuICAgICAgICBpZiAodGhpcy5sb2NhbGUgfHwgdGhpcy5hcHBDb25maWcuZ2V0PHN0cmluZz4oVXNlclByZWZlcmVuY2VWYWx1ZXMuTG9jYWxlKSkge1xuICAgICAgICAgICAgY29uc3QgbG9jYWxlID0gdGhpcy5sb2NhbGUgfHwgdGhpcy5nZXREZWZhdWx0TG9jYWxlKCk7XG5cbiAgICAgICAgICAgIHRoaXMuc2V0KFVzZXJQcmVmZXJlbmNlVmFsdWVzLkxvY2FsZSwgbG9jYWxlKTtcbiAgICAgICAgICAgIHRoaXMuc2V0KCd0ZXh0T3JpZW50YXRpb24nLCB0aGlzLmdldExhbmd1YWdlQnlLZXkobG9jYWxlKS5kaXJlY3Rpb24gfHwgJ2x0cicpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbG9jYWxlID0gdGhpcy5sb2NhbGUgfHwgdGhpcy5nZXREZWZhdWx0TG9jYWxlKCk7XG5cbiAgICAgICAgICAgIHRoaXMuc2V0V2l0aG91dFN0b3JlKFVzZXJQcmVmZXJlbmNlVmFsdWVzLkxvY2FsZSwgbG9jYWxlKTtcbiAgICAgICAgICAgIHRoaXMuc2V0V2l0aG91dFN0b3JlKCd0ZXh0T3JpZW50YXRpb24nLCB0aGlzLmdldExhbmd1YWdlQnlLZXkobG9jYWxlKS5kaXJlY3Rpb24gfHwgJ2x0cicpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB1cCBhIGNhbGxiYWNrIHRvIG5vdGlmeSB3aGVuIGEgcHJvcGVydHkgaGFzIGNoYW5nZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgVGhlIHByb3BlcnR5IHRvIHdhdGNoXG4gICAgICogQHJldHVybnMgTm90aWZpY2F0aW9uIGNhbGxiYWNrXG4gICAgICovXG4gICAgc2VsZWN0PFQgPSBhbnk+KHByb3BlcnR5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMub25DaGFuZ2UucGlwZShcbiAgICAgICAgICAgIG1hcCgodXNlclByZWZlcmVuY2VTdGF0dXMpID0+IHVzZXJQcmVmZXJlbmNlU3RhdHVzW3Byb3BlcnR5XSksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIHByZWZlcmVuY2UgcHJvcGVydHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgTmFtZSBvZiB0aGUgcHJvcGVydHlcbiAgICAgKiBAcGFyYW0gZGVmYXVsdFZhbHVlIERlZmF1bHQgdG8gcmV0dXJuIGlmIHRoZSBwcm9wZXJ0eSBpcyBub3QgZm91bmRcbiAgICAgKiBAcmV0dXJucyBQcmVmZXJlbmNlIHByb3BlcnR5XG4gICAgICovXG4gICAgZ2V0KHByb3BlcnR5OiBzdHJpbmcsIGRlZmF1bHRWYWx1ZT86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0UHJvcGVydHlLZXkocHJvcGVydHkpO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKGtleSk7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGEgcHJlZmVyZW5jZSBwcm9wZXJ0eS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBOYW1lIG9mIHRoZSBwcm9wZXJ0eVxuICAgICAqIEBwYXJhbSB2YWx1ZSBOZXcgdmFsdWUgZm9yIHRoZSBwcm9wZXJ0eVxuICAgICAqL1xuICAgIHNldChwcm9wZXJ0eTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgICAgIGlmICghcHJvcGVydHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmdldFByb3BlcnR5S2V5KHByb3BlcnR5KSwgdmFsdWUpO1xuICAgICAgICB0aGlzLnVzZXJQcmVmZXJlbmNlU3RhdHVzW3Byb3BlcnR5XSA9IHZhbHVlO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlU3ViamVjdC5uZXh0KHRoaXMudXNlclByZWZlcmVuY2VTdGF0dXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgYSBwcmVmZXJlbmNlIHByb3BlcnR5LlxuICAgICAqXG4gICAgICogQHBhcmFtIHByb3BlcnR5IE5hbWUgb2YgdGhlIHByb3BlcnR5XG4gICAgICogQHBhcmFtIHZhbHVlIE5ldyB2YWx1ZSBmb3IgdGhlIHByb3BlcnR5XG4gICAgICovXG4gICAgc2V0V2l0aG91dFN0b3JlKHByb3BlcnR5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKCFwcm9wZXJ0eSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXNlclByZWZlcmVuY2VTdGF0dXNbcHJvcGVydHldID0gdmFsdWU7XG4gICAgICAgIHRoaXMub25DaGFuZ2VTdWJqZWN0Lm5leHQodGhpcy51c2VyUHJlZmVyZW5jZVN0YXR1cyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgYW4gaXRlbSBpcyBwcmVzZW50IGluIHRoZSBzdG9yYWdlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgTmFtZSBvZiB0aGUgcHJvcGVydHlcbiAgICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBpdGVtIGlzIHByZXNlbnQsIGZhbHNlIG90aGVyd2lzZVxuICAgICAqL1xuICAgIGhhc0l0ZW0ocHJvcGVydHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXByb3BlcnR5KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5oYXNJdGVtKHRoaXMuZ2V0UHJvcGVydHlLZXkocHJvcGVydHkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBhY3RpdmUgc3RvcmFnZSBwcmVmaXggZm9yIHByZWZlcmVuY2VzLlxuICAgICAqXG4gICAgICogQHJldHVybnMgU3RvcmFnZSBwcmVmaXhcbiAgICAgKi9cbiAgICBnZXRTdG9yYWdlUHJlZml4KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbSgnVVNFUl9QUk9GSUxFJykgfHwgJ0dVRVNUJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBhY3RpdmUgc3RvcmFnZSBwcmVmaXggZm9yIHByZWZlcmVuY2VzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlIE5hbWUgb2YgdGhlIHByZWZpeFxuICAgICAqL1xuICAgIHNldFN0b3JhZ2VQcmVmaXgodmFsdWU6IHN0cmluZyB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5zdG9yYWdlLnNldEl0ZW0oJ1VTRVJfUFJPRklMRScsIHZhbHVlIHx8ICdHVUVTVCcpO1xuICAgICAgICB0aGlzLmluaXRVc2VyUHJlZmVyZW5jZVN0YXR1cygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGZ1bGwgcHJvcGVydHkga2V5IHdpdGggcHJlZml4LlxuICAgICAqXG4gICAgICogQHBhcmFtIHByb3BlcnR5IFRoZSBwcm9wZXJ0eSBuYW1lXG4gICAgICogQHJldHVybnMgUHJvcGVydHkga2V5XG4gICAgICovXG4gICAgZ2V0UHJvcGVydHlLZXkocHJvcGVydHk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmdldFN0b3JhZ2VQcmVmaXgoKX1fXyR7cHJvcGVydHl9YDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGF2YWlsYWJsZSBwYWdlIHNpemVzLlxuICAgICAqXG4gICAgICogQHJldHVybnMgQXJyYXkgb2YgcGFnZSBzaXplIHZhbHVlc1xuICAgICAqL1xuICAgIGdldCBzdXBwb3J0ZWRQYWdlU2l6ZXMoKTogbnVtYmVyW10ge1xuICAgICAgICBjb25zdCBzdXBwb3J0ZWRQYWdlU2l6ZXMgPSB0aGlzLmdldChVc2VyUHJlZmVyZW5jZVZhbHVlcy5TdXBwb3J0ZWRQYWdlU2l6ZXMpO1xuXG4gICAgICAgIGlmIChzdXBwb3J0ZWRQYWdlU2l6ZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKHN1cHBvcnRlZFBhZ2VTaXplcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hcHBDb25maWcuZ2V0KCdwYWdpbmF0aW9uLnN1cHBvcnRlZFBhZ2VTaXplcycsIHRoaXMuZGVmYXVsdHMuc3VwcG9ydGVkUGFnZVNpemVzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldCBzdXBwb3J0ZWRQYWdlU2l6ZXModmFsdWU6IG51bWJlcltdKSB7XG4gICAgICAgIHRoaXMuc2V0KFVzZXJQcmVmZXJlbmNlVmFsdWVzLlN1cHBvcnRlZFBhZ2VTaXplcywgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcbiAgICB9XG5cbiAgICAvKiogUGFnaW5hdGlvbiBzaXplLiAqL1xuICAgIHNldCBwYWdpbmF0aW9uU2l6ZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KFVzZXJQcmVmZXJlbmNlVmFsdWVzLlBhZ2luYXRpb25TaXplLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0IHBhZ2luYXRpb25TaXplKCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHBhZ2luYXRpb25TaXplID0gdGhpcy5nZXQoVXNlclByZWZlcmVuY2VWYWx1ZXMuUGFnaW5hdGlvblNpemUpO1xuXG4gICAgICAgIGlmIChwYWdpbmF0aW9uU2l6ZSkge1xuICAgICAgICAgICAgcmV0dXJuIE51bWJlcihwYWdpbmF0aW9uU2l6ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyKHRoaXMuYXBwQ29uZmlnLmdldCgncGFnaW5hdGlvbi5zaXplJywgdGhpcy5kZWZhdWx0cy5wYWdpbmF0aW9uU2l6ZSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3VycmVudCBsb2NhbGUgc2V0dGluZy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIGxvY2FsZSBuYW1lXG4gICAgICovXG4gICAgZ2V0IGxvY2FsZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQoVXNlclByZWZlcmVuY2VWYWx1ZXMuTG9jYWxlKTtcbiAgICB9XG5cbiAgICBzZXQgbG9jYWxlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZXQoVXNlclByZWZlcmVuY2VWYWx1ZXMuTG9jYWxlLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgZGVmYXVsdCBsb2NhbGUuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBEZWZhdWx0IGxvY2FsZSBsYW5ndWFnZSBjb2RlXG4gICAgICovXG4gICAgZ2V0RGVmYXVsdExvY2FsZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5hcHBDb25maWcuZ2V0PHN0cmluZz4oVXNlclByZWZlcmVuY2VWYWx1ZXMuTG9jYWxlKSB8fCB0aGlzLnRyYW5zbGF0ZS5nZXRCcm93c2VyQ3VsdHVyZUxhbmcoKSB8fCAnZW4nO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TGFuZ3VhZ2VCeUtleShrZXk6IHN0cmluZyk6IExhbmd1YWdlSXRlbSB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRMYW5ndWFnZSA9IHsga2V5OiAnZW4nIH0gYXMgTGFuZ3VhZ2VJdGVtO1xuICAgICAgICBsZXQgbGFuZ3VhZ2U6IExhbmd1YWdlSXRlbTtcblxuICAgICAgICBjb25zdCBjdXN0b21MYW5ndWFnZXMgPSB0aGlzLmFwcENvbmZpZy5nZXQ8QXJyYXk8TGFuZ3VhZ2VJdGVtPj4oQXBwQ29uZmlnVmFsdWVzLkFQUF9DT05GSUdfTEFOR1VBR0VTX0tFWSk7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGN1c3RvbUxhbmd1YWdlcykpIHtcbiAgICAgICAgICAgIGxhbmd1YWdlID0gY3VzdG9tTGFuZ3VhZ2VzLmZpbmQoKGN1c3RvbUxhbmd1YWdlKSA9PiBrZXkuaW5jbHVkZXMoY3VzdG9tTGFuZ3VhZ2Uua2V5KSk7XG4gICAgICAgIH1cbiAgICAgICAgbGFuZ3VhZ2UgPz89IERFRkFVTFRfTEFOR1VBR0VfTElTVC5maW5kKChkZWZhdWx0TGFuZykgPT4gZGVmYXVsdExhbmcua2V5ID09PSBrZXkpID8/IGRlZmF1bHRMYW5ndWFnZTtcbiAgICAgICAgcmV0dXJuIGxhbmd1YWdlO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,115 @@
1
+ /*!
2
+ * @license
3
+ * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { DateFnsAdapter } from '@angular/material-date-fns-adapter';
18
+ import { DateFnsUtils } from './date-fns-utils';
19
+ import { Inject, Injectable, Optional } from '@angular/core';
20
+ import { MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';
21
+ import { UserPreferenceValues, UserPreferencesService } from '../services/user-preferences.service';
22
+ import { isValid, parse } from 'date-fns';
23
+ import * as i0 from "@angular/core";
24
+ import * as i1 from "../services/user-preferences.service";
25
+ /**
26
+ * Date-fns adapter with moment-to-date-fns conversion.
27
+ *
28
+ * Automatically switches locales based on user preferences.
29
+ * Supports custom display format.
30
+ *
31
+ * @example
32
+ *
33
+ * Add the following to the component `providers` section
34
+ *
35
+ * providers: [
36
+ * { provide: MAT_DATE_FORMATS, useValue: ADF_FORM_DATE_FORMATS },
37
+ * { provide: DateAdapter, useClass: AdfDateFnsAdapter }
38
+ * ]
39
+ *
40
+ * Setting custom format
41
+ *
42
+ * constructor(private dateAdapter: DateAdapter<Date>) {}
43
+ *
44
+ * ngOnInit() {
45
+ * const adapter = this.dateAdapter as AdfDateFnsAdapter;
46
+ adapter.displayFormat = '<custom date-fns format>';
47
+ * }
48
+ */
49
+ export const DEFAULT_DATE_FORMAT = 'dd-MM-yyyy';
50
+ /**
51
+ * Material date formats for Date-fns
52
+ */
53
+ export const ADF_DATE_FORMATS = {
54
+ parse: {
55
+ dateInput: DEFAULT_DATE_FORMAT
56
+ },
57
+ display: {
58
+ dateInput: DEFAULT_DATE_FORMAT,
59
+ monthLabel: 'LLL',
60
+ monthYearLabel: 'LLL uuuu',
61
+ dateA11yLabel: 'PP',
62
+ monthYearA11yLabel: 'LLLL uuuu'
63
+ }
64
+ };
65
+ export class AdfDateFnsAdapter extends DateFnsAdapter {
66
+ get displayFormat() {
67
+ return this._displayFormat;
68
+ }
69
+ set displayFormat(value) {
70
+ this._displayFormat = value ? DateFnsUtils.convertMomentToDateFnsFormat(value) : null;
71
+ }
72
+ constructor(matDateLocale, formats, preferences) {
73
+ super(matDateLocale);
74
+ this.formats = formats;
75
+ this._displayFormat = null;
76
+ preferences.select(UserPreferenceValues.Locale).subscribe((locale) => {
77
+ this.setLocale(DateFnsUtils.getLocaleFromString(locale));
78
+ });
79
+ }
80
+ parse(value, parseFormat) {
81
+ const dateValue = this.isValid(value) ? value : this.parseAndValidateDate(value);
82
+ const format = Array.isArray(parseFormat)
83
+ ? parseFormat.map(DateFnsUtils.convertMomentToDateFnsFormat)
84
+ : DateFnsUtils.convertMomentToDateFnsFormat(parseFormat);
85
+ return super.parse(dateValue, format);
86
+ }
87
+ format(date, displayFormat) {
88
+ displayFormat = DateFnsUtils.convertMomentToDateFnsFormat(displayFormat);
89
+ if (this.displayFormat && displayFormat === this.formats?.display?.dateInput) {
90
+ return super.format(date, this.displayFormat || displayFormat);
91
+ }
92
+ return super.format(date, displayFormat);
93
+ }
94
+ parseAndValidateDate(value) {
95
+ const parsedDate = parse(value, this.displayFormat || DEFAULT_DATE_FORMAT, new Date());
96
+ return isValid(parsedDate) ? parsedDate : value;
97
+ }
98
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AdfDateFnsAdapter, deps: [{ token: MAT_DATE_LOCALE, optional: true }, { token: MAT_DATE_FORMATS, optional: true }, { token: i1.UserPreferencesService }], target: i0.ɵɵFactoryTarget.Injectable }); }
99
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AdfDateFnsAdapter, providedIn: 'root' }); }
100
+ }
101
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AdfDateFnsAdapter, decorators: [{
102
+ type: Injectable,
103
+ args: [{ providedIn: 'root' }]
104
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
105
+ type: Optional
106
+ }, {
107
+ type: Inject,
108
+ args: [MAT_DATE_LOCALE]
109
+ }] }, { type: undefined, decorators: [{
110
+ type: Optional
111
+ }, {
112
+ type: Inject,
113
+ args: [MAT_DATE_FORMATS]
114
+ }] }, { type: i1.UserPreferencesService }] });
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1mbnMtYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvY29tbW9uL3V0aWxzL2RhdGUtZm5zLWFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBa0IsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRyxPQUFPLEVBQUUsT0FBTyxFQUFVLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQzs7O0FBRWxEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUVILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLFlBQVksQ0FBQztBQUVoRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFtQjtJQUM1QyxLQUFLLEVBQUU7UUFDSCxTQUFTLEVBQUUsbUJBQW1CO0tBQ2pDO0lBQ0QsT0FBTyxFQUFFO1FBQ0wsU0FBUyxFQUFFLG1CQUFtQjtRQUM5QixVQUFVLEVBQUUsS0FBSztRQUNqQixjQUFjLEVBQUUsVUFBVTtRQUMxQixhQUFhLEVBQUUsSUFBSTtRQUNuQixrQkFBa0IsRUFBRSxXQUFXO0tBQ2xDO0NBQ0osQ0FBQztBQUdGLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxjQUFjO0lBR2pELElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxhQUFhLENBQUMsS0FBb0I7UUFDbEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzFGLENBQUM7SUFFRCxZQUN5QyxhQUFxQixFQUNaLE9BQXVCLEVBQ3JFLFdBQW1DO1FBRW5DLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUh5QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQVpqRSxtQkFBYyxHQUFZLElBQUksQ0FBQztRQWlCbkMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFjLEVBQUUsRUFBRTtZQUN6RSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVRLEtBQUssQ0FBQyxLQUFVLEVBQUUsV0FBOEI7UUFDckQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakYsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7WUFDckMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLDRCQUE0QixDQUFDO1lBQzVELENBQUMsQ0FBQyxZQUFZLENBQUMsNEJBQTRCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDN0QsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRVEsTUFBTSxDQUFDLElBQVUsRUFBRSxhQUFxQjtRQUM3QyxhQUFhLEdBQUcsWUFBWSxDQUFDLDRCQUE0QixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXpFLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxhQUFhLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDM0UsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxJQUFJLGFBQWEsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxLQUFVO1FBQ25DLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsSUFBSSxtQkFBbUIsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkYsT0FBTyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3BELENBQUM7K0dBNUNRLGlCQUFpQixrQkFZRixlQUFlLDZCQUNmLGdCQUFnQjttSEFiL0IsaUJBQWlCLGNBREosTUFBTTs7NEZBQ25CLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQWF6QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGVBQWU7OzBCQUNsQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgRGF0ZUZuc0FkYXB0ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC1kYXRlLWZucy1hZGFwdGVyJztcbmltcG9ydCB7IERhdGVGbnNVdGlscyB9IGZyb20gJy4vZGF0ZS1mbnMtdXRpbHMnO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTUFUX0RBVEVfRk9STUFUUywgTUFUX0RBVEVfTE9DQUxFLCBNYXREYXRlRm9ybWF0cyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgVXNlclByZWZlcmVuY2VWYWx1ZXMsIFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy91c2VyLXByZWZlcmVuY2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgaXNWYWxpZCwgTG9jYWxlLCBwYXJzZSB9IGZyb20gJ2RhdGUtZm5zJztcblxuLyoqXG4gKiBEYXRlLWZucyBhZGFwdGVyIHdpdGggbW9tZW50LXRvLWRhdGUtZm5zIGNvbnZlcnNpb24uXG4gKlxuICogQXV0b21hdGljYWxseSBzd2l0Y2hlcyBsb2NhbGVzIGJhc2VkIG9uIHVzZXIgcHJlZmVyZW5jZXMuXG4gKiBTdXBwb3J0cyBjdXN0b20gZGlzcGxheSBmb3JtYXQuXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiBBZGQgdGhlIGZvbGxvd2luZyB0byB0aGUgY29tcG9uZW50IGBwcm92aWRlcnNgIHNlY3Rpb25cbiAqXG4gKiBwcm92aWRlcnM6IFtcbiAqICB7IHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiBBREZfRk9STV9EQVRFX0ZPUk1BVFMgfSxcbiAqICB7IHByb3ZpZGU6IERhdGVBZGFwdGVyLCB1c2VDbGFzczogQWRmRGF0ZUZuc0FkYXB0ZXIgfVxuICogXVxuICpcbiAqIFNldHRpbmcgY3VzdG9tIGZvcm1hdFxuICpcbiAqIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0ZUFkYXB0ZXI6IERhdGVBZGFwdGVyPERhdGU+KSB7fVxuICpcbiAqIG5nT25Jbml0KCkge1xuICogICBjb25zdCBhZGFwdGVyID0gdGhpcy5kYXRlQWRhcHRlciBhcyBBZGZEYXRlRm5zQWRhcHRlcjtcbiAgICAgYWRhcHRlci5kaXNwbGF5Rm9ybWF0ID0gJzxjdXN0b20gZGF0ZS1mbnMgZm9ybWF0Pic7XG4gKiB9XG4gKi9cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfREFURV9GT1JNQVQgPSAnZGQtTU0teXl5eSc7XG5cbi8qKlxuICogTWF0ZXJpYWwgZGF0ZSBmb3JtYXRzIGZvciBEYXRlLWZuc1xuICovXG5leHBvcnQgY29uc3QgQURGX0RBVEVfRk9STUFUUzogTWF0RGF0ZUZvcm1hdHMgPSB7XG4gICAgcGFyc2U6IHtcbiAgICAgICAgZGF0ZUlucHV0OiBERUZBVUxUX0RBVEVfRk9STUFUXG4gICAgfSxcbiAgICBkaXNwbGF5OiB7XG4gICAgICAgIGRhdGVJbnB1dDogREVGQVVMVF9EQVRFX0ZPUk1BVCxcbiAgICAgICAgbW9udGhMYWJlbDogJ0xMTCcsXG4gICAgICAgIG1vbnRoWWVhckxhYmVsOiAnTExMIHV1dXUnLFxuICAgICAgICBkYXRlQTExeUxhYmVsOiAnUFAnLFxuICAgICAgICBtb250aFllYXJBMTF5TGFiZWw6ICdMTExMIHV1dXUnXG4gICAgfVxufTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBZGZEYXRlRm5zQWRhcHRlciBleHRlbmRzIERhdGVGbnNBZGFwdGVyIHtcbiAgICBwcml2YXRlIF9kaXNwbGF5Rm9ybWF0Pzogc3RyaW5nID0gbnVsbDtcblxuICAgIGdldCBkaXNwbGF5Rm9ybWF0KCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGxheUZvcm1hdDtcbiAgICB9XG5cbiAgICBzZXQgZGlzcGxheUZvcm1hdCh2YWx1ZTogc3RyaW5nIHwgbnVsbCkge1xuICAgICAgICB0aGlzLl9kaXNwbGF5Rm9ybWF0ID0gdmFsdWUgPyBEYXRlRm5zVXRpbHMuY29udmVydE1vbWVudFRvRGF0ZUZuc0Zvcm1hdCh2YWx1ZSkgOiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1BVF9EQVRFX0xPQ0FMRSkgbWF0RGF0ZUxvY2FsZTogTG9jYWxlLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1BVF9EQVRFX0ZPUk1BVFMpIHByaXZhdGUgZm9ybWF0czogTWF0RGF0ZUZvcm1hdHMsXG4gICAgICAgIHByZWZlcmVuY2VzOiBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKG1hdERhdGVMb2NhbGUpO1xuXG4gICAgICAgIHByZWZlcmVuY2VzLnNlbGVjdChVc2VyUHJlZmVyZW5jZVZhbHVlcy5Mb2NhbGUpLnN1YnNjcmliZSgobG9jYWxlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0TG9jYWxlKERhdGVGbnNVdGlscy5nZXRMb2NhbGVGcm9tU3RyaW5nKGxvY2FsZSkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBwYXJzZSh2YWx1ZTogYW55LCBwYXJzZUZvcm1hdDogc3RyaW5nIHwgc3RyaW5nW10pOiBEYXRlIHtcbiAgICAgICAgY29uc3QgZGF0ZVZhbHVlID0gdGhpcy5pc1ZhbGlkKHZhbHVlKSA/IHZhbHVlIDogdGhpcy5wYXJzZUFuZFZhbGlkYXRlRGF0ZSh2YWx1ZSk7XG4gICAgICAgIGNvbnN0IGZvcm1hdCA9IEFycmF5LmlzQXJyYXkocGFyc2VGb3JtYXQpXG4gICAgICAgICAgICA/IHBhcnNlRm9ybWF0Lm1hcChEYXRlRm5zVXRpbHMuY29udmVydE1vbWVudFRvRGF0ZUZuc0Zvcm1hdClcbiAgICAgICAgICAgIDogRGF0ZUZuc1V0aWxzLmNvbnZlcnRNb21lbnRUb0RhdGVGbnNGb3JtYXQocGFyc2VGb3JtYXQpO1xuICAgICAgICByZXR1cm4gc3VwZXIucGFyc2UoZGF0ZVZhbHVlLCBmb3JtYXQpO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGZvcm1hdChkYXRlOiBEYXRlLCBkaXNwbGF5Rm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBkaXNwbGF5Rm9ybWF0ID0gRGF0ZUZuc1V0aWxzLmNvbnZlcnRNb21lbnRUb0RhdGVGbnNGb3JtYXQoZGlzcGxheUZvcm1hdCk7XG5cbiAgICAgICAgaWYgKHRoaXMuZGlzcGxheUZvcm1hdCAmJiBkaXNwbGF5Rm9ybWF0ID09PSB0aGlzLmZvcm1hdHM/LmRpc3BsYXk/LmRhdGVJbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmZvcm1hdChkYXRlLCB0aGlzLmRpc3BsYXlGb3JtYXQgfHwgZGlzcGxheUZvcm1hdCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VwZXIuZm9ybWF0KGRhdGUsIGRpc3BsYXlGb3JtYXQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcGFyc2VBbmRWYWxpZGF0ZURhdGUodmFsdWU6IGFueSk6IERhdGUge1xuICAgICAgICBjb25zdCBwYXJzZWREYXRlID0gcGFyc2UodmFsdWUsIHRoaXMuZGlzcGxheUZvcm1hdCB8fCBERUZBVUxUX0RBVEVfRk9STUFULCBuZXcgRGF0ZSgpKTtcbiAgICAgICAgcmV0dXJuIGlzVmFsaWQocGFyc2VkRGF0ZSkgPyBwYXJzZWREYXRlIDogdmFsdWU7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,222 @@
1
+ /*!
2
+ * @license
3
+ * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { format, parse, parseISO, isValid, isBefore, isAfter } from 'date-fns';
18
+ import { ar, cs, da, de, enUS, es, fi, fr, it, ja, nb, nl, pl, ptBR, ru, sv, zhCN } from 'date-fns/locale';
19
+ const panDate = (num = 1) => {
20
+ let text = num.toString();
21
+ while (text.length < 2) {
22
+ text = '0' + text;
23
+ }
24
+ return text;
25
+ };
26
+ export class DateFnsUtils {
27
+ static getLocaleFromString(locale) {
28
+ let dateFnsLocale;
29
+ switch (locale) {
30
+ case 'ar':
31
+ dateFnsLocale = ar;
32
+ break;
33
+ case 'cs':
34
+ dateFnsLocale = cs;
35
+ break;
36
+ case 'da':
37
+ dateFnsLocale = da;
38
+ break;
39
+ case 'de':
40
+ dateFnsLocale = de;
41
+ break;
42
+ case 'en':
43
+ dateFnsLocale = enUS;
44
+ break;
45
+ case 'es':
46
+ dateFnsLocale = es;
47
+ break;
48
+ case 'fi':
49
+ dateFnsLocale = fi;
50
+ break;
51
+ case 'fr':
52
+ dateFnsLocale = fr;
53
+ break;
54
+ case 'it':
55
+ dateFnsLocale = it;
56
+ break;
57
+ case 'ja':
58
+ dateFnsLocale = ja;
59
+ break;
60
+ case 'nb':
61
+ dateFnsLocale = nb;
62
+ break;
63
+ case 'nl':
64
+ dateFnsLocale = nl;
65
+ break;
66
+ case 'pl':
67
+ dateFnsLocale = pl;
68
+ break;
69
+ case 'pt-BR':
70
+ dateFnsLocale = ptBR;
71
+ break;
72
+ case 'ru':
73
+ dateFnsLocale = ru;
74
+ break;
75
+ case 'sv':
76
+ dateFnsLocale = sv;
77
+ break;
78
+ case 'zh-CN':
79
+ dateFnsLocale = zhCN;
80
+ break;
81
+ default:
82
+ dateFnsLocale = enUS;
83
+ break;
84
+ }
85
+ return dateFnsLocale;
86
+ }
87
+ static { this.momentToDateFnsMap = {
88
+ D: 'd',
89
+ Y: 'y',
90
+ AZ: 'aa',
91
+ A: 'a',
92
+ ll: 'PP',
93
+ T: `'T'`,
94
+ ZZ: 'XX',
95
+ Z: `XXX`
96
+ }; }
97
+ /**
98
+ * Converts a Moment.js date format string to the equivalent date-fns format string.
99
+ *
100
+ * @param dateDisplayFormat - The Moment.js date format string to convert.
101
+ * @returns The equivalent date-fns format string.
102
+ */
103
+ static convertMomentToDateFnsFormat(dateDisplayFormat) {
104
+ if (dateDisplayFormat && dateDisplayFormat.trim() !== '') {
105
+ // normalise the input to support double conversion of the same string
106
+ dateDisplayFormat = dateDisplayFormat.replace(`'T'`, 'T');
107
+ for (const [search, replace] of Object.entries(this.momentToDateFnsMap)) {
108
+ dateDisplayFormat = dateDisplayFormat.replace(new RegExp(search, 'g'), replace);
109
+ }
110
+ return dateDisplayFormat;
111
+ }
112
+ return '';
113
+ }
114
+ /**
115
+ * Formats a date using the specified date format.
116
+ *
117
+ * @param date - The date to format, can be a number or a Date object.
118
+ * @param dateFormat - The date format string to use for formatting.
119
+ * @returns The formatted date as a string
120
+ */
121
+ static formatDate(date, dateFormat) {
122
+ if (typeof date === 'string') {
123
+ date = parseISO(date);
124
+ }
125
+ return format(date, this.convertMomentToDateFnsFormat(dateFormat));
126
+ }
127
+ /**
128
+ * Parses a date string using the specified date format.
129
+ *
130
+ * @param value - The date value to parse. Can be a string or a Date (for generic calls)
131
+ * @param dateFormat - The date format string to use for parsing.
132
+ * @param options - Additional options
133
+ * @param options.dateOnly - Strip the time and zone
134
+ * @returns The parsed Date object.
135
+ */
136
+ static parseDate(value, dateFormat, options) {
137
+ if (value) {
138
+ if (typeof value === 'string') {
139
+ if (options?.dateOnly && value.includes('T')) {
140
+ value = value.split('T')[0];
141
+ }
142
+ return parse(value, this.convertMomentToDateFnsFormat(dateFormat), new Date());
143
+ }
144
+ return value;
145
+ }
146
+ return new Date('error');
147
+ }
148
+ /**
149
+ * Parses a datetime string using the ISO format
150
+ *
151
+ * @param value - The date and time string to parse
152
+ * @returns returns the parsed Date object
153
+ */
154
+ static parseDateTime(value) {
155
+ return parseISO(value);
156
+ }
157
+ /**
158
+ * Checks if the date string is a valid date according to the specified format
159
+ *
160
+ * @param dateValue Date value
161
+ * @param dateFormat The date format
162
+ * @returns `true` if the date is valid, otherwise `false`
163
+ */
164
+ static isValidDate(dateValue, dateFormat) {
165
+ if (dateValue) {
166
+ const date = this.parseDate(dateValue, dateFormat);
167
+ return isValid(date);
168
+ }
169
+ return false;
170
+ }
171
+ /**
172
+ * Validates a date is before another one
173
+ *
174
+ * @param source source date to compare
175
+ * @param target target date to compare
176
+ * @returns `true` if the source date is before the target one, otherwise `false`
177
+ */
178
+ static isBeforeDate(source, target) {
179
+ return isBefore(source, target);
180
+ }
181
+ /**
182
+ * Validates a date is after another one
183
+ *
184
+ * @param source source date to compare
185
+ * @param target target date to compare
186
+ * @returns `true` if the source date is after the target one, otherwise `false`
187
+ */
188
+ static isAfterDate(source, target) {
189
+ return isAfter(source, target);
190
+ }
191
+ static utcToLocal(date) {
192
+ return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds()));
193
+ }
194
+ static localToUtc(date) {
195
+ return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());
196
+ }
197
+ static forceLocal(date) {
198
+ if (typeof date === 'string') {
199
+ date = parseISO(date);
200
+ }
201
+ const localDate = `${date.getUTCFullYear()}-${panDate(date.getUTCMonth() + 1)}-${panDate(date.getUTCDate())}T00:00:00.000`;
202
+ return new Date(localDate);
203
+ }
204
+ static forceUtc(date) {
205
+ if (typeof date === 'string') {
206
+ date = parseISO(date);
207
+ }
208
+ const utcDate = `${date.getFullYear()}-${panDate(date.getMonth() + 1)}-${panDate(date.getDate())}T00:00:00.000Z`;
209
+ return new Date(utcDate);
210
+ }
211
+ static stringDateContainsTimeZone(value) {
212
+ return /(Z|([+|-]\d\d:?\d\d))$/.test(value);
213
+ }
214
+ static getDate(value) {
215
+ let date = new Date(value);
216
+ if (typeof value === 'string' && !DateFnsUtils.stringDateContainsTimeZone(value)) {
217
+ date = this.utcToLocal(date);
218
+ }
219
+ return date;
220
+ }
221
+ }
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1mbnMtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29yZS9zcmMvbGliL2NvbW1vbi91dGlscy9kYXRlLWZucy11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDL0UsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUzRyxNQUFNLE9BQU8sR0FBRyxDQUFDLE1BQWMsQ0FBQyxFQUFVLEVBQUU7SUFDeEMsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzFCLE9BQU8sSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNyQixJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQztJQUN0QixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxPQUFPLFlBQVk7SUFDckIsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE1BQWM7UUFDckMsSUFBSSxhQUFxQixDQUFDO1FBQzFCLFFBQVEsTUFBTSxFQUFFLENBQUM7WUFDYixLQUFLLElBQUk7Z0JBQ0wsYUFBYSxHQUFHLEVBQUUsQ0FBQztnQkFDbkIsTUFBTTtZQUNWLEtBQUssSUFBSTtnQkFDTCxhQUFhLEdBQUcsRUFBRSxDQUFDO2dCQUNu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O1FBQy9CLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDM0IsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixDQUFDO1FBQ0QsTUFBTSxPQUFPLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO1FBQ2pILE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxLQUFhO1FBQzNDLE9BQU8sd0JBQXdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQTZCO1FBQ3hDLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTNCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsWUFBWSxDQUFDLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDL0UsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IGZvcm1hdCwgcGFyc2UsIHBhcnNlSVNPLCBpc1ZhbGlkLCBpc0JlZm9yZSwgaXNBZnRlciB9IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCB7IGFyLCBjcywgZGEsIGRlLCBlblVTLCBlcywgZmksIGZyLCBpdCwgamEsIG5iLCBubCwgcGwsIHB0QlIsIHJ1LCBzdiwgemhDTiB9IGZyb20gJ2RhdGUtZm5zL2xvY2FsZSc7XG5cbmNvbnN0IHBhbkRhdGUgPSAobnVtOiBudW1iZXIgPSAxKTogc3RyaW5nID0+IHtcbiAgICBsZXQgdGV4dCA9IG51bS50b1N0cmluZygpO1xuICAgIHdoaWxlICh0ZXh0Lmxlbmd0aCA8IDIpIHtcbiAgICAgICAgdGV4dCA9ICcwJyArIHRleHQ7XG4gICAgfVxuICAgIHJldHVybiB0ZXh0O1xufTtcblxuZXhwb3J0IGNsYXNzIERhdGVGbnNVdGlscyB7XG4gICAgc3RhdGljIGdldExvY2FsZUZyb21TdHJpbmcobG9jYWxlOiBzdHJpbmcpOiBMb2NhbGUge1xuICAgICAgICBsZXQgZGF0ZUZuc0xvY2FsZTogTG9jYWxlO1xuICAgICAgICBzd2l0Y2ggKGxvY2FsZSkge1xuICAgICAgICAgICAgY2FzZSAnYXInOlxuICAgICAgICAgICAgICAgIGRhdGVGbnNMb2NhbGUgPSBhcjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NzJzpcbiAgICAgICAgICAgICAgICBkYXRlRm5zTG9jYWxlID0gY3M7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkYSc6XG4gICAgICAgICAgICAgICAgZGF0ZUZuc0xvY2FsZSA9IGRhO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZGUnOlxuICAgICAgICAgICAgICAgIGRhdGVGbnNMb2NhbGUgPSBkZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2VuJzpcbiAgICAgICAgICAgICAgICBkYXRlRm5zTG9jYWxlID0gZW5VUztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2VzJzpcbiAgICAgICAgICAgICAgICBkYXRlRm5zTG9jYWxlID0gZXM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdmaSc6XG4gICAgICAgICAgICAgICAgZGF0ZUZuc0xvY2FsZSA9IGZpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZnInOlxuICAgICAgICAgICAgICAgIGRhdGVGbnNMb2NhbGUgPSBmcjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2l0JzpcbiAgICAgICAgICAgICAgICBkYXRlRm5zTG9jYWxlID0gaXQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdqYSc6XG4gICAgICAgICAgICAgICAgZGF0ZUZuc0xvY2FsZSA9IGphO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbmInOlxuICAgICAgICAgICAgICAgIGRhdGVGbnNMb2NhbGUgPSBuYjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ25sJzpcbiAgICAgICAgICAgICAgICBkYXRlRm5zTG9jYWxlID0gbmw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdwbCc6XG4gICAgICAgICAgICAgICAgZGF0ZUZuc0xvY2FsZSA9IHBsO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncHQtQlInOlxuICAgICAgICAgICAgICAgIGRhdGVGbnNMb2NhbGUgPSBwdEJSO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncnUnOlxuICAgICAgICAgICAgICAgIGRhdGVGbnNMb2NhbGUgPSBydTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3N2JzpcbiAgICAgICAgICAgICAgICBkYXRlRm5zTG9jYWxlID0gc3Y7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd6aC1DTic6XG4gICAgICAgICAgICAgICAgZGF0ZUZuc0xvY2FsZSA9IHpoQ047XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGRhdGVGbnNMb2NhbGUgPSBlblVTO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYXRlRm5zTG9jYWxlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIG1vbWVudFRvRGF0ZUZuc01hcCA9IHtcbiAgICAgICAgRDogJ2QnLFxuICAgICAgICBZOiAneScsXG4gICAgICAgIEFaOiAnYWEnLFxuICAgICAgICBBOiAnYScsXG4gICAgICAgIGxsOiAnUFAnLFxuICAgICAgICBUOiBgJ1QnYCxcbiAgICAgICAgWlo6ICdYWCcsXG4gICAgICAgIFo6IGBYWFhgXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGEgTW9tZW50LmpzIGRhdGUgZm9ybWF0IHN0cmluZyB0byB0aGUgZXF1aXZhbGVudCBkYXRlLWZucyBmb3JtYXQgc3RyaW5nLlxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGVEaXNwbGF5Rm9ybWF0IC0gVGhlIE1vbWVudC5qcyBkYXRlIGZvcm1hdCBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyBUaGUgZXF1aXZhbGVudCBkYXRlLWZucyBmb3JtYXQgc3RyaW5nLlxuICAgICAqL1xuICAgIHN0YXRpYyBjb252ZXJ0TW9tZW50VG9EYXRlRm5zRm9ybWF0KGRhdGVEaXNwbGF5Rm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBpZiAoZGF0ZURpc3BsYXlGb3JtYXQgJiYgZGF0ZURpc3BsYXlGb3JtYXQudHJpbSgpICE9PSAnJykge1xuICAgICAgICAgICAgLy8gbm9ybWFsaXNlIHRoZSBpbnB1dCB0byBzdXBwb3J0IGRvdWJsZSBjb252ZXJzaW9uIG9mIHRoZSBzYW1lIHN0cmluZ1xuICAgICAgICAgICAgZGF0ZURpc3BsYXlGb3JtYXQgPSBkYXRlRGlzcGxheUZvcm1hdC5yZXBsYWNlKGAnVCdgLCAnVCcpO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtzZWFyY2gsIHJlcGxhY2VdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMubW9tZW50VG9EYXRlRm5zTWFwKSkge1xuICAgICAgICAgICAgICAgIGRhdGVEaXNwbGF5Rm9ybWF0ID0gZGF0ZURpc3BsYXlGb3JtYXQucmVwbGFjZShuZXcgUmVnRXhwKHNlYXJjaCwgJ2cnKSwgcmVwbGFjZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZGF0ZURpc3BsYXlGb3JtYXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZvcm1hdHMgYSBkYXRlIHVzaW5nIHRoZSBzcGVjaWZpZWQgZGF0ZSBmb3JtYXQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGZvcm1hdCwgY2FuIGJlIGEgbnVtYmVyIG9yIGEgRGF0ZSBvYmplY3QuXG4gICAgICogQHBhcmFtIGRhdGVGb3JtYXQgLSBUaGUgZGF0ZSBmb3JtYXQgc3RyaW5nIHRvIHVzZSBmb3IgZm9ybWF0dGluZy5cbiAgICAgKiBAcmV0dXJucyBUaGUgZm9ybWF0dGVkIGRhdGUgYXMgYSBzdHJpbmdcbiAgICAgKi9cbiAgICBzdGF0aWMgZm9ybWF0RGF0ZShkYXRlOiBudW1iZXIgfCBEYXRlIHwgc3RyaW5nLCBkYXRlRm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBpZiAodHlwZW9mIGRhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBkYXRlID0gcGFyc2VJU08oZGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcm1hdChkYXRlLCB0aGlzLmNvbnZlcnRNb21lbnRUb0RhdGVGbnNGb3JtYXQoZGF0ZUZvcm1hdCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhcnNlcyBhIGRhdGUgc3RyaW5nIHVzaW5nIHRoZSBzcGVjaWZpZWQgZGF0ZSBmb3JtYXQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgZGF0ZSB2YWx1ZSB0byBwYXJzZS4gQ2FuIGJlIGEgc3RyaW5nIG9yIGEgRGF0ZSAoZm9yIGdlbmVyaWMgY2FsbHMpXG4gICAgICogQHBhcmFtIGRhdGVGb3JtYXQgLSBUaGUgZGF0ZSBmb3JtYXQgc3RyaW5nIHRvIHVzZSBmb3IgcGFyc2luZy5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIEFkZGl0aW9uYWwgb3B0aW9uc1xuICAgICAqIEBwYXJhbSBvcHRpb25zLmRhdGVPbmx5IC0gU3RyaXAgdGhlIHRpbWUgYW5kIHpvbmVcbiAgICAgKiBAcmV0dXJucyBUaGUgcGFyc2VkIERhdGUgb2JqZWN0LlxuICAgICAqL1xuICAgIHN0YXRpYyBwYXJzZURhdGUodmFsdWU6IHN0cmluZyB8IERhdGUsIGRhdGVGb3JtYXQ6IHN0cmluZywgb3B0aW9ucz86IHsgZGF0ZU9ubHk/OiBib29sZWFuIH0pOiBEYXRlIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zPy5kYXRlT25seSAmJiB2YWx1ZS5pbmNsdWRlcygnVCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuc3BsaXQoJ1QnKVswXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2UodmFsdWUsIHRoaXMuY29udmVydE1vbWVudFRvRGF0ZUZuc0Zvcm1hdChkYXRlRm9ybWF0KSwgbmV3IERhdGUoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKCdlcnJvcicpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhcnNlcyBhIGRhdGV0aW1lIHN0cmluZyB1c2luZyB0aGUgSVNPIGZvcm1hdFxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlIC0gVGhlIGRhdGUgYW5kIHRpbWUgc3RyaW5nIHRvIHBhcnNlXG4gICAgICogQHJldHVybnMgcmV0dXJucyB0aGUgcGFyc2VkIERhdGUgb2JqZWN0XG4gICAgICovXG4gICAgc3RhdGljIHBhcnNlRGF0ZVRpbWUodmFsdWU6IHN0cmluZyk6IERhdGUge1xuICAgICAgICByZXR1cm4gcGFyc2VJU08odmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgZGF0ZSBzdHJpbmcgaXMgYSB2YWxpZCBkYXRlIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIGZvcm1hdFxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGVWYWx1ZSBEYXRlIHZhbHVlXG4gICAgICogQHBhcmFtIGRhdGVGb3JtYXQgVGhlIGRhdGUgZm9ybWF0XG4gICAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBkYXRlIGlzIHZhbGlkLCBvdGhlcndpc2UgYGZhbHNlYFxuICAgICAqL1xuICAgIHN0YXRpYyBpc1ZhbGlkRGF0ZShkYXRlVmFsdWU6IHN0cmluZywgZGF0ZUZvcm1hdDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChkYXRlVmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLnBhcnNlRGF0ZShkYXRlVmFsdWUsIGRhdGVGb3JtYXQpO1xuICAgICAgICAgICAgcmV0dXJuIGlzVmFsaWQoZGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFZhbGlkYXRlcyBhIGRhdGUgaXMgYmVmb3JlIGFub3RoZXIgb25lXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc291cmNlIHNvdXJjZSBkYXRlIHRvIGNvbXBhcmVcbiAgICAgKiBAcGFyYW0gdGFyZ2V0IHRhcmdldCBkYXRlIHRvIGNvbXBhcmVcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHNvdXJjZSBkYXRlIGlzIGJlZm9yZSB0aGUgdGFyZ2V0IG9uZSwgb3RoZXJ3aXNlIGBmYWxzZWBcbiAgICAgKi9cbiAgICBzdGF0aWMgaXNCZWZvcmVEYXRlKHNvdXJjZTogRGF0ZSwgdGFyZ2V0OiBEYXRlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpc0JlZm9yZShzb3VyY2UsIHRhcmdldCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVmFsaWRhdGVzIGEgZGF0ZSBpcyBhZnRlciBhbm90aGVyIG9uZVxuICAgICAqXG4gICAgICogQHBhcmFtIHNvdXJjZSBzb3VyY2UgZGF0ZSB0byBjb21wYXJlXG4gICAgICogQHBhcmFtIHRhcmdldCB0YXJnZXQgZGF0ZSB0byBjb21wYXJlXG4gICAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBzb3VyY2UgZGF0ZSBpcyBhZnRlciB0aGUgdGFyZ2V0IG9uZSwgb3RoZXJ3aXNlIGBmYWxzZWBcbiAgICAgKi9cbiAgICBzdGF0aWMgaXNBZnRlckRhdGUoc291cmNlOiBEYXRlLCB0YXJnZXQ6IERhdGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGlzQWZ0ZXIoc291cmNlLCB0YXJnZXQpO1xuICAgIH1cblxuICAgIHN0YXRpYyB1dGNUb0xvY2FsKGRhdGU6IERhdGUpOiBEYXRlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSwgZGF0ZS5nZXRIb3VycygpLCBkYXRlLmdldE1pbnV0ZXMoKSwgZGF0ZS5nZXRTZWNvbmRzKCkpKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgbG9jYWxUb1V0YyhkYXRlOiBEYXRlKTogRGF0ZSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldFVUQ0Z1bGxZZWFyKCksIGRhdGUuZ2V0VVRDTW9udGgoKSwgZGF0ZS5nZXRVVENEYXRlKCksIGRhdGUuZ2V0VVRDSG91cnMoKSwgZGF0ZS5nZXRVVENNaW51dGVzKCksIGRhdGUuZ2V0VVRDU2Vjb25kcygpKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZm9yY2VMb2NhbChkYXRlOiBEYXRlIHwgc3RyaW5nKTogRGF0ZSB7XG4gICAgICAgIGlmICh0eXBlb2YgZGF0ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGRhdGUgPSBwYXJzZUlTTyhkYXRlKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsb2NhbERhdGUgPSBgJHtkYXRlLmdldFVUQ0Z1bGxZZWFyKCl9LSR7cGFuRGF0ZShkYXRlLmdldFVUQ01vbnRoKCkgKyAxKX0tJHtwYW5EYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpKX1UMDA6MDA6MDAuMDAwYDtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGxvY2FsRGF0ZSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGZvcmNlVXRjKGRhdGU6IERhdGUgfCBzdHJpbmcpOiBEYXRlIHtcbiAgICAgICAgaWYgKHR5cGVvZiBkYXRlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgZGF0ZSA9IHBhcnNlSVNPKGRhdGUpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHV0Y0RhdGUgPSBgJHtkYXRlLmdldEZ1bGxZZWFyKCl9LSR7cGFuRGF0ZShkYXRlLmdldE1vbnRoKCkgKyAxKX0tJHtwYW5EYXRlKGRhdGUuZ2V0RGF0ZSgpKX1UMDA6MDA6MDAuMDAwWmA7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSh1dGNEYXRlKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgc3RyaW5nRGF0ZUNvbnRhaW5zVGltZVpvbmUodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gLyhafChbK3wtXVxcZFxcZDo/XFxkXFxkKSkkLy50ZXN0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0RGF0ZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSk6IERhdGUge1xuICAgICAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKHZhbHVlKTtcblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAhRGF0ZUZuc1V0aWxzLnN0cmluZ0RhdGVDb250YWluc1RpbWVab25lKHZhbHVlKSkge1xuICAgICAgICAgICAgZGF0ZSA9IHRoaXMudXRjVG9Mb2NhbChkYXRlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbn1cbiJdfQ==