@alfresco/adf-content-services 8.1.0-16116633181 → 8.1.0-16117584844

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 (414) hide show
  1. package/bundles/assets/adf-content-services/i18n/en.json +1 -3
  2. package/esm2022/adf-content-services.mjs +5 -0
  3. package/esm2022/lib/agent/index.mjs +18 -0
  4. package/esm2022/lib/agent/public-api.mjs +18 -0
  5. package/esm2022/lib/agent/services/agent.service.mjs +60 -0
  6. package/esm2022/lib/alfresco-icon/alfresco-icon.component.mjs +27 -0
  7. package/esm2022/lib/api-factories/alfresco-api-no-auth.service.mjs +42 -0
  8. package/esm2022/lib/api-factories/alfresco-api-v2-loader.service.mjs +77 -0
  9. package/esm2022/lib/api-factories/index.mjs +18 -0
  10. package/esm2022/lib/api-factories/public-api.mjs +19 -0
  11. package/esm2022/lib/aspect-list/aspect-list-dialog-data.interface.mjs +18 -0
  12. package/esm2022/lib/aspect-list/aspect-list-dialog.component.mjs +77 -0
  13. package/esm2022/lib/aspect-list/aspect-list.component.mjs +139 -0
  14. package/esm2022/lib/aspect-list/aspect-list.module.mjs +35 -0
  15. package/esm2022/lib/aspect-list/index.mjs +18 -0
  16. package/esm2022/lib/aspect-list/public-api.mjs +24 -0
  17. package/esm2022/lib/aspect-list/services/aspect-list.service.mjs +83 -0
  18. package/esm2022/lib/aspect-list/services/dialog-aspect-list.service.mjs +86 -0
  19. package/esm2022/lib/aspect-list/services/node-aspect.service.mjs +52 -0
  20. package/esm2022/lib/auth-loader/content-auth-loader-factory.mjs +26 -0
  21. package/esm2022/lib/auth-loader/content-auth-loader.service.mjs +42 -0
  22. package/esm2022/lib/breadcrumb/breadcrumb.component.mjs +166 -0
  23. package/esm2022/lib/breadcrumb/breadcrumb.module.mjs +35 -0
  24. package/esm2022/lib/breadcrumb/dropdown-breadcrumb.component.mjs +65 -0
  25. package/esm2022/lib/breadcrumb/index.mjs +18 -0
  26. package/esm2022/lib/breadcrumb/public-api.mjs +20 -0
  27. package/esm2022/lib/category/categories-management/categories-management-mode.mjs +22 -0
  28. package/esm2022/lib/category/categories-management/categories-management.component.mjs +308 -0
  29. package/esm2022/lib/category/category.module.mjs +33 -0
  30. package/esm2022/lib/category/index.mjs +18 -0
  31. package/esm2022/lib/category/models/category-node.interface.mjs +18 -0
  32. package/esm2022/lib/category/public-api.mjs +23 -0
  33. package/esm2022/lib/category/services/category-tree-datasource.service.mjs +80 -0
  34. package/esm2022/lib/category/services/category.service.mjs +159 -0
  35. package/esm2022/lib/common/events/file.event.mjs +46 -0
  36. package/esm2022/lib/common/index.mjs +18 -0
  37. package/esm2022/lib/common/interfaces/saved-search.interface.mjs +18 -0
  38. package/esm2022/lib/common/interfaces/search-configuration.interface.mjs +18 -0
  39. package/esm2022/lib/common/mocks/ecm-user.service.mock.mjs +37 -0
  40. package/esm2022/lib/common/models/allowable-operations.enum.mjs +30 -0
  41. package/esm2022/lib/common/models/ecm-company.model.mjs +19 -0
  42. package/esm2022/lib/common/models/ecm-user.model.mjs +45 -0
  43. package/esm2022/lib/common/models/file.model.mjs +53 -0
  44. package/esm2022/lib/common/models/node-metadata.model.mjs +23 -0
  45. package/esm2022/lib/common/models/permissions.enum.mjs +32 -0
  46. package/esm2022/lib/common/public-api.mjs +37 -0
  47. package/esm2022/lib/common/services/card-view-content-update.service.mjs +55 -0
  48. package/esm2022/lib/common/services/content.service.mjs +180 -0
  49. package/esm2022/lib/common/services/discovery-api.service.mjs +79 -0
  50. package/esm2022/lib/common/services/favorites-api.service.mjs +84 -0
  51. package/esm2022/lib/common/services/nodes-api.service.mjs +251 -0
  52. package/esm2022/lib/common/services/people-content.service.mjs +138 -0
  53. package/esm2022/lib/common/services/rendition.service.mjs +270 -0
  54. package/esm2022/lib/common/services/saved-searches.service.mjs +206 -0
  55. package/esm2022/lib/common/services/sites.service.mjs +243 -0
  56. package/esm2022/lib/common/services/upload.service.mjs +391 -0
  57. package/esm2022/lib/content-metadata/components/content-metadata/content-metadata-header.component.mjs +54 -0
  58. package/esm2022/lib/content-metadata/components/content-metadata/content-metadata.component.mjs +490 -0
  59. package/esm2022/lib/content-metadata/components/content-metadata-card/content-metadata-card.component.mjs +128 -0
  60. package/esm2022/lib/content-metadata/content-metadata.module.mjs +36 -0
  61. package/esm2022/lib/content-metadata/index.mjs +18 -0
  62. package/esm2022/lib/content-metadata/interfaces/aspect-oriented-config.interface.mjs +18 -0
  63. package/esm2022/lib/content-metadata/interfaces/card-view-group.interface.mjs +18 -0
  64. package/esm2022/lib/content-metadata/interfaces/content-metadata-config.interface.mjs +18 -0
  65. package/esm2022/lib/content-metadata/interfaces/content-metadata-custom-panel.interface.mjs +18 -0
  66. package/esm2022/lib/content-metadata/interfaces/content-metadata-panel.interface.mjs +18 -0
  67. package/esm2022/lib/content-metadata/interfaces/content-metadata.interfaces.mjs +28 -0
  68. package/esm2022/lib/content-metadata/interfaces/indifferent-config.interface.mjs +18 -0
  69. package/esm2022/lib/content-metadata/interfaces/layout-oriented-config.interface.mjs +18 -0
  70. package/esm2022/lib/content-metadata/interfaces/organised-property-group.interface.mjs +18 -0
  71. package/esm2022/lib/content-metadata/interfaces/preset-config.interface.mjs +18 -0
  72. package/esm2022/lib/content-metadata/interfaces/property-group.interface.mjs +18 -0
  73. package/esm2022/lib/content-metadata/interfaces/property.interface.mjs +18 -0
  74. package/esm2022/lib/content-metadata/public-api.mjs +31 -0
  75. package/esm2022/lib/content-metadata/services/basic-properties.service.mjs +107 -0
  76. package/esm2022/lib/content-metadata/services/config/aspect-oriented-config.service.mjs +106 -0
  77. package/esm2022/lib/content-metadata/services/config/content-metadata-config.factory.mjs +76 -0
  78. package/esm2022/lib/content-metadata/services/config/indifferent-config.service.mjs +40 -0
  79. package/esm2022/lib/content-metadata/services/config/layout-oriented-config.service.mjs +108 -0
  80. package/esm2022/lib/content-metadata/services/config/property-group-reader.mjs +33 -0
  81. package/esm2022/lib/content-metadata/services/content-metadata.service.mjs +99 -0
  82. package/esm2022/lib/content-metadata/services/content-type-property.service.mjs +134 -0
  83. package/esm2022/lib/content-metadata/services/property-descriptors.service.mjs +52 -0
  84. package/esm2022/lib/content-metadata/services/property-groups-translator.service.mjs +169 -0
  85. package/esm2022/lib/content-node-selector/content-node-dialog.service.mjs +256 -0
  86. package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.component.mjs +617 -0
  87. package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.service.mjs +66 -0
  88. package/esm2022/lib/content-node-selector/content-node-selector.component-data.interface.mjs +18 -0
  89. package/esm2022/lib/content-node-selector/content-node-selector.component.mjs +205 -0
  90. package/esm2022/lib/content-node-selector/content-node-selector.module.mjs +50 -0
  91. package/esm2022/lib/content-node-selector/index.mjs +18 -0
  92. package/esm2022/lib/content-node-selector/name-location-cell/name-location-cell.component.mjs +48 -0
  93. package/esm2022/lib/content-node-selector/public-api.mjs +25 -0
  94. package/esm2022/lib/content-node-selector/site-dropdown/sites-dropdown.component.mjs +168 -0
  95. package/esm2022/lib/content-node-share/content-node-share.dialog.mjs +287 -0
  96. package/esm2022/lib/content-node-share/content-node-share.directive.mjs +102 -0
  97. package/esm2022/lib/content-node-share/content-node-share.module.mjs +35 -0
  98. package/esm2022/lib/content-node-share/content-node-share.settings.mjs +18 -0
  99. package/esm2022/lib/content-node-share/index.mjs +18 -0
  100. package/esm2022/lib/content-node-share/public-api.mjs +22 -0
  101. package/esm2022/lib/content-node-share/services/shared-links-api.service.mjs +83 -0
  102. package/esm2022/lib/content-type/content-type-dialog.component.mjs +57 -0
  103. package/esm2022/lib/content-type/content-type-metadata.interface.mjs +18 -0
  104. package/esm2022/lib/content-type/content-type.service.mjs +52 -0
  105. package/esm2022/lib/content-type/index.mjs +20 -0
  106. package/esm2022/lib/content.module.mjs +277 -0
  107. package/esm2022/lib/dialogs/category-selector/category-selector.dialog.mjs +51 -0
  108. package/esm2022/lib/dialogs/dialog.module.mjs +52 -0
  109. package/esm2022/lib/dialogs/download-zip/download-zip.dialog.mjs +111 -0
  110. package/esm2022/lib/dialogs/download-zip/download-zip.dialog.module.mjs +38 -0
  111. package/esm2022/lib/dialogs/download-zip/services/download-zip.service.mjs +66 -0
  112. package/esm2022/lib/dialogs/folder/folder-name.validators.mjs +44 -0
  113. package/esm2022/lib/dialogs/folder/folder.dialog.mjs +146 -0
  114. package/esm2022/lib/dialogs/index.mjs +18 -0
  115. package/esm2022/lib/dialogs/library/library.dialog.mjs +224 -0
  116. package/esm2022/lib/dialogs/node-lock/node-lock.dialog.mjs +115 -0
  117. package/esm2022/lib/dialogs/public-api.mjs +25 -0
  118. package/esm2022/lib/directives/auto-focus.directive.mjs +38 -0
  119. package/esm2022/lib/directives/check-allowable-operation.directive.mjs +126 -0
  120. package/esm2022/lib/directives/content-directive.module.mjs +75 -0
  121. package/esm2022/lib/directives/index.mjs +18 -0
  122. package/esm2022/lib/directives/library-favorite.directive.mjs +119 -0
  123. package/esm2022/lib/directives/library-membership.directive.mjs +202 -0
  124. package/esm2022/lib/directives/node-counter.directive.mjs +59 -0
  125. package/esm2022/lib/directives/node-delete.directive.mjs +177 -0
  126. package/esm2022/lib/directives/node-download.directive.mjs +138 -0
  127. package/esm2022/lib/directives/node-favorite.directive.mjs +193 -0
  128. package/esm2022/lib/directives/node-lock.directive.mjs +57 -0
  129. package/esm2022/lib/directives/node-restore.directive.mjs +218 -0
  130. package/esm2022/lib/directives/public-api.mjs +28 -0
  131. package/esm2022/lib/document-list/components/content-action/content-action-list.component.mjs +60 -0
  132. package/esm2022/lib/document-list/components/content-action/content-action.component.mjs +196 -0
  133. package/esm2022/lib/document-list/components/document-list.component.mjs +965 -0
  134. package/esm2022/lib/document-list/components/document-list.token.mjs +21 -0
  135. package/esm2022/lib/document-list/components/file-auto-download/file-auto-download.component.mjs +42 -0
  136. package/esm2022/lib/document-list/components/filter-header/filter-header.component.mjs +107 -0
  137. package/esm2022/lib/document-list/components/library-name-column/library-name-column.component.mjs +131 -0
  138. package/esm2022/lib/document-list/components/library-role-column/library-role-column.component.mjs +91 -0
  139. package/esm2022/lib/document-list/components/library-status-column/library-status-column.component.mjs +86 -0
  140. package/esm2022/lib/document-list/components/name-column/name-column.component.mjs +118 -0
  141. package/esm2022/lib/document-list/components/node.event.mjs +30 -0
  142. package/esm2022/lib/document-list/components/trashcan-name-column/trashcan-name-column.component.mjs +83 -0
  143. package/esm2022/lib/document-list/data/image-resolver.model.mjs +18 -0
  144. package/esm2022/lib/document-list/data/row-filter.model.mjs +18 -0
  145. package/esm2022/lib/document-list/data/share-data-row.model.mjs +102 -0
  146. package/esm2022/lib/document-list/data/share-datatable-adapter.mjs +258 -0
  147. package/esm2022/lib/document-list/document-list.module.mjs +75 -0
  148. package/esm2022/lib/document-list/index.mjs +18 -0
  149. package/esm2022/lib/document-list/interfaces/document-list-loader.interface.mjs +18 -0
  150. package/esm2022/lib/document-list/models/content-action.model.mjs +59 -0
  151. package/esm2022/lib/document-list/models/document-folder.model.mjs +23 -0
  152. package/esm2022/lib/document-list/models/node-action.enum.mjs +27 -0
  153. package/esm2022/lib/document-list/models/permissions-style.model.mjs +27 -0
  154. package/esm2022/lib/document-list/models/permissions.model.mjs +26 -0
  155. package/esm2022/lib/document-list/models/preset.model.mjs +257 -0
  156. package/esm2022/lib/document-list/public-api.mjs +47 -0
  157. package/esm2022/lib/document-list/services/custom-resources.service.mjs +378 -0
  158. package/esm2022/lib/document-list/services/document-actions.service.mjs +142 -0
  159. package/esm2022/lib/document-list/services/document-list.service.mjs +175 -0
  160. package/esm2022/lib/document-list/services/folder-actions.service.mjs +137 -0
  161. package/esm2022/lib/document-list/services/lock.service.mjs +72 -0
  162. package/esm2022/lib/document-list/services/node-actions.service.mjs +122 -0
  163. package/esm2022/lib/group/index.mjs +18 -0
  164. package/esm2022/lib/group/public-api.mjs +18 -0
  165. package/esm2022/lib/group/services/group.service.mjs +84 -0
  166. package/esm2022/lib/infinite-scroll-datasource/index.mjs +18 -0
  167. package/esm2022/lib/infinite-scroll-datasource/infinite-scroll-datasource.mjs +69 -0
  168. package/esm2022/lib/infinite-scroll-datasource/public-api.mjs +18 -0
  169. package/esm2022/lib/interfaces/base-card-view-content-update.interface.mjs +18 -0
  170. package/esm2022/lib/interfaces/index.mjs +18 -0
  171. package/esm2022/lib/interfaces/library-entity.interface.mjs +18 -0
  172. package/esm2022/lib/interfaces/library-membership-error-event.interface.mjs +18 -0
  173. package/esm2022/lib/interfaces/library-membership-toggle-event.interface.mjs +18 -0
  174. package/esm2022/lib/interfaces/node-allowable-operation-subject.interface.mjs +18 -0
  175. package/esm2022/lib/interfaces/public-api.mjs +23 -0
  176. package/esm2022/lib/interfaces/restore-message-model.interface.mjs +19 -0
  177. package/esm2022/lib/legal-hold/index.mjs +18 -0
  178. package/esm2022/lib/legal-hold/public-api.mjs +18 -0
  179. package/esm2022/lib/legal-hold/services/legal-hold.service.mjs +136 -0
  180. package/esm2022/lib/material.module.mjs +183 -0
  181. package/esm2022/lib/mock/alfresco-api.service.mock.mjs +43 -0
  182. package/esm2022/lib/mock/date-range-search-filter.mock.mjs +65 -0
  183. package/esm2022/lib/mock/document-library.model.mock.mjs +84 -0
  184. package/esm2022/lib/mock/document-list.component.mock.mjs +364 -0
  185. package/esm2022/lib/mock/index.mjs +18 -0
  186. package/esm2022/lib/mock/new-version-uploader.service.mock.mjs +161 -0
  187. package/esm2022/lib/mock/public-api.mjs +27 -0
  188. package/esm2022/lib/mock/search-filter-mock.mjs +637 -0
  189. package/esm2022/lib/mock/search-query.mock.mjs +40 -0
  190. package/esm2022/lib/mock/search.component.mock.mjs +165 -0
  191. package/esm2022/lib/mock/search.service.mock.mjs +61 -0
  192. package/esm2022/lib/mock/sites-dropdown.component.mock.mjs +281 -0
  193. package/esm2022/lib/new-version-uploader/index.mjs +18 -0
  194. package/esm2022/lib/new-version-uploader/models/index.mjs +18 -0
  195. package/esm2022/lib/new-version-uploader/models/new-version-uploader.model.mjs +24 -0
  196. package/esm2022/lib/new-version-uploader/new-version-uploader.dialog.mjs +74 -0
  197. package/esm2022/lib/new-version-uploader/new-version-uploader.module.mjs +33 -0
  198. package/esm2022/lib/new-version-uploader/new-version-uploader.service.mjs +103 -0
  199. package/esm2022/lib/new-version-uploader/public-api.mjs +21 -0
  200. package/esm2022/lib/node-comments/index.mjs +18 -0
  201. package/esm2022/lib/node-comments/node-comments.component.mjs +50 -0
  202. package/esm2022/lib/node-comments/node-comments.module.mjs +33 -0
  203. package/esm2022/lib/node-comments/public-api.mjs +20 -0
  204. package/esm2022/lib/node-comments/services/node-comments.service.mjs +85 -0
  205. package/esm2022/lib/permission-manager/components/add-permission/add-permission-dialog-data.interface.mjs +18 -0
  206. package/esm2022/lib/permission-manager/components/add-permission/add-permission-dialog.component.mjs +123 -0
  207. package/esm2022/lib/permission-manager/components/add-permission/add-permission-panel.component.mjs +102 -0
  208. package/esm2022/lib/permission-manager/components/add-permission/add-permission.component.mjs +69 -0
  209. package/esm2022/lib/permission-manager/components/add-permission/search-config-permission.service.mjs +45 -0
  210. package/esm2022/lib/permission-manager/components/inherited-button.directive.mjs +67 -0
  211. package/esm2022/lib/permission-manager/components/node-path-column/node-path-column.component.mjs +56 -0
  212. package/esm2022/lib/permission-manager/components/permission-container/permission-container.component.mjs +102 -0
  213. package/esm2022/lib/permission-manager/components/permission-list/permission-list.component.mjs +87 -0
  214. package/esm2022/lib/permission-manager/components/permission-list/permission-list.service.mjs +219 -0
  215. package/esm2022/lib/permission-manager/components/pop-over.directive.mjs +134 -0
  216. package/esm2022/lib/permission-manager/components/user-icon-column/user-icon-column.component.mjs +88 -0
  217. package/esm2022/lib/permission-manager/components/user-name-column/user-name-column.component.mjs +82 -0
  218. package/esm2022/lib/permission-manager/components/user-role-column/user-role-column.component.mjs +111 -0
  219. package/esm2022/lib/permission-manager/index.mjs +18 -0
  220. package/esm2022/lib/permission-manager/models/member.model.mjs +59 -0
  221. package/esm2022/lib/permission-manager/models/permission.model.mjs +29 -0
  222. package/esm2022/lib/permission-manager/models/role.model.mjs +18 -0
  223. package/esm2022/lib/permission-manager/permission-manager.module.mjs +84 -0
  224. package/esm2022/lib/permission-manager/public-api.mjs +36 -0
  225. package/esm2022/lib/permission-manager/services/node-permission-dialog.service.mjs +78 -0
  226. package/esm2022/lib/permission-manager/services/node-permission.service.mjs +299 -0
  227. package/esm2022/lib/pipes/content-pipe.module.mjs +37 -0
  228. package/esm2022/lib/pipes/index.mjs +18 -0
  229. package/esm2022/lib/pipes/node-name-tooltip.pipe.mjs +69 -0
  230. package/esm2022/lib/pipes/public-api.mjs +19 -0
  231. package/esm2022/lib/prediction/index.mjs +18 -0
  232. package/esm2022/lib/prediction/public-api.mjs +18 -0
  233. package/esm2022/lib/prediction/services/index.mjs +18 -0
  234. package/esm2022/lib/prediction/services/prediction.service.mjs +57 -0
  235. package/esm2022/lib/search/components/empty-search-result.component.mjs +27 -0
  236. package/esm2022/lib/search/components/index.mjs +43 -0
  237. package/esm2022/lib/search/components/reset-search.directive.mjs +41 -0
  238. package/esm2022/lib/search/components/search-check-list/index.mjs +18 -0
  239. package/esm2022/lib/search/components/search-check-list/search-check-list.component.mjs +158 -0
  240. package/esm2022/lib/search/components/search-chip-autocomplete-input/index.mjs +18 -0
  241. package/esm2022/lib/search/components/search-chip-autocomplete-input/search-chip-autocomplete-input.component.mjs +169 -0
  242. package/esm2022/lib/search/components/search-chip-list/search-chip-list.component.mjs +46 -0
  243. package/esm2022/lib/search/components/search-control.component.mjs +180 -0
  244. package/esm2022/lib/search/components/search-date-range-tabbed/index.mjs +22 -0
  245. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/date-range-type.mjs +23 -0
  246. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/in-last-date-type.mjs +23 -0
  247. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.component.mjs +196 -0
  248. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.mjs +18 -0
  249. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range-tabbed.component.mjs +201 -0
  250. package/esm2022/lib/search/components/search-datetime-range/index.mjs +18 -0
  251. package/esm2022/lib/search/components/search-datetime-range/search-datetime-range.component.mjs +223 -0
  252. package/esm2022/lib/search/components/search-facet-field/index.mjs +18 -0
  253. package/esm2022/lib/search/components/search-facet-field/search-facet-field.component.mjs +132 -0
  254. package/esm2022/lib/search/components/search-filter/index.mjs +19 -0
  255. package/esm2022/lib/search/components/search-filter/search-filter-card/search-filter-card.component.mjs +45 -0
  256. package/esm2022/lib/search/components/search-filter/search-filter.component.mjs +80 -0
  257. package/esm2022/lib/search/components/search-filter-autocomplete-chips/index.mjs +18 -0
  258. package/esm2022/lib/search/components/search-filter-autocomplete-chips/search-filter-autocomplete-chips.component.mjs +154 -0
  259. package/esm2022/lib/search/components/search-filter-chips/index.mjs +23 -0
  260. package/esm2022/lib/search/components/search-filter-chips/search-facet-chip/search-facet-chip.component.mjs +104 -0
  261. package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-chip-tabbed.component.mjs +109 -0
  262. package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-tabbed-content.component.mjs +129 -0
  263. package/esm2022/lib/search/components/search-filter-chips/search-filter-chips.component.mjs +63 -0
  264. package/esm2022/lib/search/components/search-filter-chips/search-filter-menu-card/search-filter-menu-card.component.mjs +43 -0
  265. package/esm2022/lib/search/components/search-filter-chips/search-widget-chip/search-widget-chip.component.mjs +109 -0
  266. package/esm2022/lib/search/components/search-filter-container/index.mjs +18 -0
  267. package/esm2022/lib/search/components/search-filter-container/search-filter-container.component.mjs +122 -0
  268. package/esm2022/lib/search/components/search-filter-tabbed/index.mjs +19 -0
  269. package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tab.directive.mjs +36 -0
  270. package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tabbed.component.mjs +63 -0
  271. package/esm2022/lib/search/components/search-form/index.mjs +18 -0
  272. package/esm2022/lib/search/components/search-form/search-form.component.mjs +52 -0
  273. package/esm2022/lib/search/components/search-input/index.mjs +18 -0
  274. package/esm2022/lib/search/components/search-input/search-input.component.mjs +108 -0
  275. package/esm2022/lib/search/components/search-logical-filter/index.mjs +18 -0
  276. package/esm2022/lib/search/components/search-logical-filter/search-logical-filter.component.mjs +163 -0
  277. package/esm2022/lib/search/components/search-number-range/index.mjs +18 -0
  278. package/esm2022/lib/search/components/search-number-range/search-number-range.component.mjs +154 -0
  279. package/esm2022/lib/search/components/search-panel/index.mjs +18 -0
  280. package/esm2022/lib/search/components/search-panel/search-panel.component.mjs +44 -0
  281. package/esm2022/lib/search/components/search-properties/file-size-condition.mjs +18 -0
  282. package/esm2022/lib/search/components/search-properties/file-size-operator.enum.mjs +23 -0
  283. package/esm2022/lib/search/components/search-properties/file-size-unit.enum.mjs +26 -0
  284. package/esm2022/lib/search/components/search-properties/index.mjs +22 -0
  285. package/esm2022/lib/search/components/search-properties/search-properties.component.mjs +244 -0
  286. package/esm2022/lib/search/components/search-properties/search-properties.mjs +18 -0
  287. package/esm2022/lib/search/components/search-radio/index.mjs +18 -0
  288. package/esm2022/lib/search/components/search-radio/search-radio.component.mjs +145 -0
  289. package/esm2022/lib/search/components/search-slider/index.mjs +18 -0
  290. package/esm2022/lib/search/components/search-slider/search-slider.component.mjs +119 -0
  291. package/esm2022/lib/search/components/search-sorting-picker/index.mjs +18 -0
  292. package/esm2022/lib/search/components/search-sorting-picker/search-sorting-picker.component.mjs +77 -0
  293. package/esm2022/lib/search/components/search-text/index.mjs +18 -0
  294. package/esm2022/lib/search/components/search-text/search-text.component.mjs +134 -0
  295. package/esm2022/lib/search/components/search-widget-container/index.mjs +18 -0
  296. package/esm2022/lib/search/components/search-widget-container/search-widget-container.component.mjs +113 -0
  297. package/esm2022/lib/search/components/search.component.mjs +152 -0
  298. package/esm2022/lib/search/forms/index.mjs +19 -0
  299. package/esm2022/lib/search/forms/live-error-state-matcher.mjs +23 -0
  300. package/esm2022/lib/search/forms/search-term-validator.mjs +26 -0
  301. package/esm2022/lib/search/index.mjs +18 -0
  302. package/esm2022/lib/search/mocks/index.mjs +18 -0
  303. package/esm2022/lib/search/mocks/search.service.mock.mjs +56 -0
  304. package/esm2022/lib/search/models/autocomplete-option.interface.mjs +22 -0
  305. package/esm2022/lib/search/models/facet-field-bucket.interface.mjs +18 -0
  306. package/esm2022/lib/search/models/facet-field.interface.mjs +29 -0
  307. package/esm2022/lib/search/models/facet-query.interface.mjs +18 -0
  308. package/esm2022/lib/search/models/facet-widget.interface.mjs +18 -0
  309. package/esm2022/lib/search/models/filter-query.interface.mjs +18 -0
  310. package/esm2022/lib/search/models/filter-search.interface.mjs +18 -0
  311. package/esm2022/lib/search/models/index.mjs +34 -0
  312. package/esm2022/lib/search/models/response-facet-query-list.model.mjs +31 -0
  313. package/esm2022/lib/search/models/search-category.interface.mjs +18 -0
  314. package/esm2022/lib/search/models/search-configuration.interface.mjs +18 -0
  315. package/esm2022/lib/search/models/search-filter-list.model.mjs +148 -0
  316. package/esm2022/lib/search/models/search-form.interface.mjs +18 -0
  317. package/esm2022/lib/search/models/search-range.interface.mjs +18 -0
  318. package/esm2022/lib/search/models/search-sorting-definition.interface.mjs +18 -0
  319. package/esm2022/lib/search/models/search-widget-settings.interface.mjs +18 -0
  320. package/esm2022/lib/search/models/search-widget.interface.mjs +18 -0
  321. package/esm2022/lib/search/models/tabbed-facet-field.interface.mjs +18 -0
  322. package/esm2022/lib/search/public-api.mjs +24 -0
  323. package/esm2022/lib/search/search-configuration.token.mjs +19 -0
  324. package/esm2022/lib/search/search.module.mjs +192 -0
  325. package/esm2022/lib/search/services/base-query-builder.service.mjs +509 -0
  326. package/esm2022/lib/search/services/index.mjs +24 -0
  327. package/esm2022/lib/search/services/search-configuration.service.mjs +50 -0
  328. package/esm2022/lib/search/services/search-facet-filters.service.mjs +374 -0
  329. package/esm2022/lib/search/services/search-filter.service.mjs +56 -0
  330. package/esm2022/lib/search/services/search-header-query-builder.service.mjs +136 -0
  331. package/esm2022/lib/search/services/search-query-builder.service.mjs +48 -0
  332. package/esm2022/lib/search/services/search.service.mjs +89 -0
  333. package/esm2022/lib/search-ai/index.mjs +18 -0
  334. package/esm2022/lib/search-ai/models/search-ai-input-state.mjs +18 -0
  335. package/esm2022/lib/search-ai/public-api.mjs +19 -0
  336. package/esm2022/lib/search-ai/services/search-ai.service.mjs +103 -0
  337. package/esm2022/lib/security/index.mjs +18 -0
  338. package/esm2022/lib/security/public-api.mjs +18 -0
  339. package/esm2022/lib/security/services/models/security-controls-group-response.interface.mjs +18 -0
  340. package/esm2022/lib/security/services/models/security-controls-mark-response.interface.mjs +18 -0
  341. package/esm2022/lib/security/services/security-controls-groups-marks-security.service.mjs +274 -0
  342. package/esm2022/lib/security-options-loader/security-options-loader.service.mjs +43 -0
  343. package/esm2022/lib/services/alfresco-api.interface.mjs +18 -0
  344. package/esm2022/lib/services/alfresco-api.service.mjs +120 -0
  345. package/esm2022/lib/services/index.mjs +18 -0
  346. package/esm2022/lib/services/public-api.mjs +18 -0
  347. package/esm2022/lib/tag/index.mjs +18 -0
  348. package/esm2022/lib/tag/public-api.mjs +24 -0
  349. package/esm2022/lib/tag/services/tag.service.mjs +171 -0
  350. package/esm2022/lib/tag/tag-actions/tag-actions.component.mjs +114 -0
  351. package/esm2022/lib/tag/tag-list/tag-list.component.mjs +98 -0
  352. package/esm2022/lib/tag/tag-node-list/tag-node-list.component.mjs +80 -0
  353. package/esm2022/lib/tag/tag.module.mjs +37 -0
  354. package/esm2022/lib/tag/tags-creator/tags-creator-mode.mjs +27 -0
  355. package/esm2022/lib/tag/tags-creator/tags-creator.component.mjs +370 -0
  356. package/esm2022/lib/testing/content.testing.module.mjs +56 -0
  357. package/esm2022/lib/tree/components/tree.component.mjs +312 -0
  358. package/esm2022/lib/tree/index.mjs +18 -0
  359. package/esm2022/lib/tree/models/tree-context-menu-result.interface.mjs +18 -0
  360. package/esm2022/lib/tree/models/tree-node.interface.mjs +22 -0
  361. package/esm2022/lib/tree/models/tree-response.interface.mjs +18 -0
  362. package/esm2022/lib/tree/public-api.mjs +23 -0
  363. package/esm2022/lib/tree/services/tree.service.mjs +134 -0
  364. package/esm2022/lib/tree/tree.module.mjs +33 -0
  365. package/esm2022/lib/tree-view/components/tree-view.component.mjs +75 -0
  366. package/esm2022/lib/tree-view/data/tree-view-datasource.mjs +99 -0
  367. package/esm2022/lib/tree-view/index.mjs +18 -0
  368. package/esm2022/lib/tree-view/models/tree-view.model.mjs +28 -0
  369. package/esm2022/lib/tree-view/public-api.mjs +22 -0
  370. package/esm2022/lib/tree-view/services/tree-view.service.mjs +38 -0
  371. package/esm2022/lib/tree-view/tree-view.module.mjs +33 -0
  372. package/esm2022/lib/upload/components/base-upload/upload-base.mjs +176 -0
  373. package/esm2022/lib/upload/components/file-uploading-dialog.component.mjs +190 -0
  374. package/esm2022/lib/upload/components/file-uploading-list-row.component.mjs +92 -0
  375. package/esm2022/lib/upload/components/file-uploading-list.component.mjs +124 -0
  376. package/esm2022/lib/upload/components/upload-button.component.mjs +133 -0
  377. package/esm2022/lib/upload/components/upload-drag-area.component.mjs +112 -0
  378. package/esm2022/lib/upload/components/upload-files.event.mjs +41 -0
  379. package/esm2022/lib/upload/components/upload-version-button.component.mjs +54 -0
  380. package/esm2022/lib/upload/directives/file-draggable.directive.mjs +154 -0
  381. package/esm2022/lib/upload/directives/toggle-icon.directive.mjs +75 -0
  382. package/esm2022/lib/upload/index.mjs +18 -0
  383. package/esm2022/lib/upload/pipes/file-upload-error.pipe.mjs +39 -0
  384. package/esm2022/lib/upload/public-api.mjs +29 -0
  385. package/esm2022/lib/upload/upload.module.mjs +72 -0
  386. package/esm2022/lib/version-compatibility/index.mjs +18 -0
  387. package/esm2022/lib/version-compatibility/public-api.mjs +20 -0
  388. package/esm2022/lib/version-compatibility/version-compatibility-factory.mjs +26 -0
  389. package/esm2022/lib/version-compatibility/version-compatibility.directive.mjs +53 -0
  390. package/esm2022/lib/version-compatibility/version-compatibility.module.mjs +33 -0
  391. package/esm2022/lib/version-compatibility/version-compatibility.service.mjs +76 -0
  392. package/esm2022/lib/version-manager/content-version.service.mjs +53 -0
  393. package/esm2022/lib/version-manager/index.mjs +18 -0
  394. package/esm2022/lib/version-manager/public-api.mjs +23 -0
  395. package/esm2022/lib/version-manager/version-comparison.component.mjs +42 -0
  396. package/esm2022/lib/version-manager/version-list.component.mjs +215 -0
  397. package/esm2022/lib/version-manager/version-manager.component.mjs +145 -0
  398. package/esm2022/lib/version-manager/version-manager.module.mjs +48 -0
  399. package/esm2022/lib/version-manager/version-upload.component.mjs +154 -0
  400. package/esm2022/lib/viewer/alfresco-viewer.module.mjs +33 -0
  401. package/esm2022/lib/viewer/components/alfresco-viewer.component.mjs +408 -0
  402. package/esm2022/lib/viewer/index.mjs +18 -0
  403. package/esm2022/lib/viewer/public-api.mjs +19 -0
  404. package/esm2022/public-api.mjs +56 -0
  405. package/fesm2022/adf-content-services.mjs +790 -831
  406. package/fesm2022/adf-content-services.mjs.map +1 -1
  407. package/lib/aspect-list/aspect-list.component.d.ts +0 -4
  408. package/lib/aspect-list/public-api.d.ts +0 -1
  409. package/lib/aspect-list/services/aspect-list.service.d.ts +4 -6
  410. package/lib/category/categories-management/categories-management.component.d.ts +0 -4
  411. package/lib/new-version-uploader/new-version-uploader.dialog.scss +1 -1
  412. package/lib/upload/components/base-upload/upload-base.d.ts +1 -1
  413. package/package.json +5 -3
  414. package/lib/aspect-list/interfaces/custom-aspect-paging.interface.d.ts +0 -21
@@ -0,0 +1,23 @@
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
+ export var InLastDateType;
18
+ (function (InLastDateType) {
19
+ InLastDateType["DAYS"] = "DAYS";
20
+ InLastDateType["WEEKS"] = "WEEKS";
21
+ InLastDateType["MONTHS"] = "MONTHS";
22
+ })(InLastDateType || (InLastDateType = {}));
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW4tbGFzdC1kYXRlLXR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL3NlYXJjaC9jb21wb25lbnRzL3NlYXJjaC1kYXRlLXJhbmdlLXRhYmJlZC9zZWFyY2gtZGF0ZS1yYW5nZS9pbi1sYXN0LWRhdGUtdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxNQUFNLENBQU4sSUFBWSxjQUlYO0FBSkQsV0FBWSxjQUFjO0lBQ3RCLCtCQUFhLENBQUE7SUFDYixpQ0FBZSxDQUFBO0lBQ2YsbUNBQWlCLENBQUE7QUFDckIsQ0FBQyxFQUpXLGNBQWMsS0FBZCxjQUFjLFFBSXpCIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5leHBvcnQgZW51bSBJbkxhc3REYXRlVHlwZSB7XG4gICAgREFZUyA9ICdEQVlTJyxcbiAgICBXRUVLUyA9ICdXRUVLUycsXG4gICAgTU9OVEhTID0gJ01PTlRIUydcbn1cbiJdfQ==
@@ -0,0 +1,196 @@
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 { Component, DestroyRef, EventEmitter, inject, Inject, Input, Output, ViewEncapsulation } from '@angular/core';
18
+ import { endOfDay, isAfter, isBefore, isValid, parse } from 'date-fns';
19
+ import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';
20
+ import { DateFnsAdapter, MAT_DATE_FNS_FORMATS } from '@angular/material-date-fns-adapter';
21
+ import { InLastDateType } from './in-last-date-type';
22
+ import { DateRangeType } from './date-range-type';
23
+ import { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';
24
+ import { DateFnsUtils, UserPreferencesService, UserPreferenceValues } from '@alfresco/adf-core';
25
+ import { CommonModule } from '@angular/common';
26
+ import { MatRadioModule } from '@angular/material/radio';
27
+ import { TranslatePipe } from '@ngx-translate/core';
28
+ import { MatFormFieldModule } from '@angular/material/form-field';
29
+ import { MatInputModule } from '@angular/material/input';
30
+ import { MatSelectModule } from '@angular/material/select';
31
+ import { MatDatepickerModule } from '@angular/material/datepicker';
32
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
33
+ import * as i0 from "@angular/core";
34
+ import * as i1 from "@angular/forms";
35
+ import * as i2 from "@alfresco/adf-core";
36
+ import * as i3 from "@angular/material/core";
37
+ import * as i4 from "@angular/common";
38
+ import * as i5 from "@angular/material/radio";
39
+ import * as i6 from "@angular/material/form-field";
40
+ import * as i7 from "@angular/material/input";
41
+ import * as i8 from "@angular/material/select";
42
+ import * as i9 from "@angular/material/datepicker";
43
+ const DEFAULT_DATE_DISPLAY_FORMAT = 'dd-MMM-yy';
44
+ export class SearchDateRangeComponent {
45
+ set initialValue(value) {
46
+ if (value) {
47
+ this.form.patchValue(value);
48
+ }
49
+ }
50
+ constructor(formBuilder, userPreferencesService, dateAdapter, dateFormatConfig) {
51
+ this.formBuilder = formBuilder;
52
+ this.userPreferencesService = userPreferencesService;
53
+ this.dateAdapter = dateAdapter;
54
+ this.dateFormatConfig = dateFormatConfig;
55
+ this.dateFormat = DEFAULT_DATE_DISPLAY_FORMAT;
56
+ this.changed = new EventEmitter();
57
+ this.valid = new EventEmitter();
58
+ this.form = this.formBuilder.group({
59
+ dateRangeType: DateRangeType.ANY,
60
+ inLastValueType: InLastDateType.DAYS,
61
+ inLastValue: undefined,
62
+ betweenStartDate: undefined,
63
+ betweenEndDate: undefined
64
+ });
65
+ this.betweenStartDateFormControl = this.form.controls.betweenStartDate;
66
+ this.betweenEndDateFormControl = this.form.controls.betweenEndDate;
67
+ this.DateRangeType = DateRangeType;
68
+ this.InLastDateType = InLastDateType;
69
+ this.destroyRef = inject(DestroyRef);
70
+ this.endDateValidator = (formControl) => {
71
+ if (isBefore(formControl.value, this.betweenStartDateFormControl.value) || isAfter(formControl.value, this.convertedMaxDate)) {
72
+ return {
73
+ invalidDate: true
74
+ };
75
+ }
76
+ return {};
77
+ };
78
+ }
79
+ ngOnInit() {
80
+ this.dateFormatConfig.display.dateInput = this.dateFormat;
81
+ this.convertedMaxDate = endOfDay(this.maxDate && this.maxDate !== 'today' ? parse(this.maxDate, this.dateFormat, new Date()) : new Date());
82
+ this.userPreferencesService
83
+ .select(UserPreferenceValues.Locale)
84
+ .pipe(takeUntilDestroyed(this.destroyRef))
85
+ .subscribe((locale) => this.dateAdapter.setLocale(DateFnsUtils.getLocaleFromString(locale)));
86
+ this.form.controls.dateRangeType.valueChanges
87
+ .pipe(takeUntilDestroyed(this.destroyRef))
88
+ .subscribe((dateRangeType) => this.updateValidators(dateRangeType));
89
+ this.form.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.onChange());
90
+ }
91
+ updateValidators(dateRangeType) {
92
+ switch (dateRangeType) {
93
+ case DateRangeType.BETWEEN:
94
+ this.betweenStartDateFormControl.setValidators(Validators.required);
95
+ this.betweenEndDateFormControl.setValidators([Validators.required, this.endDateValidator]);
96
+ this.form.controls.inLastValue.clearValidators();
97
+ break;
98
+ case DateRangeType.IN_LAST:
99
+ this.form.controls.inLastValue.setValidators(Validators.required);
100
+ this.betweenStartDateFormControl.clearValidators();
101
+ this.betweenEndDateFormControl.clearValidators();
102
+ break;
103
+ default:
104
+ this.form.controls.inLastValue.clearValidators();
105
+ this.betweenStartDateFormControl.clearValidators();
106
+ this.betweenEndDateFormControl.clearValidators();
107
+ break;
108
+ }
109
+ this.betweenStartDateFormControl.updateValueAndValidity();
110
+ this.betweenEndDateFormControl.updateValueAndValidity();
111
+ this.form.controls.inLastValue.updateValueAndValidity();
112
+ }
113
+ onChange() {
114
+ if (this.form.valid) {
115
+ this.changed.emit(this.form.value);
116
+ }
117
+ this.valid.emit(this.form.valid);
118
+ }
119
+ dateChanged(event, formControl) {
120
+ if (event?.target['value']?.trim()) {
121
+ const date = parse(event.target['value'], this.dateFormat, new Date());
122
+ if (!isValid(date)) {
123
+ formControl.setErrors({
124
+ ...formControl.errors,
125
+ required: false,
126
+ invalidDate: true
127
+ });
128
+ }
129
+ else {
130
+ formControl.setErrors({
131
+ ...formControl.errors,
132
+ invalidDate: false
133
+ });
134
+ formControl.setValue(date);
135
+ }
136
+ }
137
+ }
138
+ narrowDownAllowedCharacters(event) {
139
+ if (parseInt(event.target.value, 10) === 0) {
140
+ event.target.value = '';
141
+ }
142
+ else {
143
+ event.target.value = event.target.value.replace(/\D/g, '');
144
+ }
145
+ }
146
+ preventIncorrectNumberCharacters(event) {
147
+ switch (event.key) {
148
+ case '.':
149
+ case '-':
150
+ case 'e':
151
+ case '+':
152
+ return false;
153
+ case '0':
154
+ return !!event.target.value;
155
+ default:
156
+ return true;
157
+ }
158
+ }
159
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchDateRangeComponent, deps: [{ token: i1.FormBuilder }, { token: i2.UserPreferencesService }, { token: i3.DateAdapter }, { token: MAT_DATE_FORMATS }], target: i0.ɵɵFactoryTarget.Component }); }
160
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SearchDateRangeComponent, isStandalone: true, selector: "adf-search-date-range", inputs: { dateFormat: "dateFormat", maxDate: "maxDate", field: "field", initialValue: "initialValue" }, outputs: { changed: "changed", valid: "valid" }, host: { classAttribute: "adf-search-date-range" }, providers: [
161
+ { provide: DateAdapter, useClass: DateFnsAdapter, deps: [MAT_DATE_LOCALE] },
162
+ { provide: MAT_DATE_FORMATS, useValue: MAT_DATE_FNS_FORMATS }
163
+ ], ngImport: i0, template: "<div class=\"adf-search-date-range-container\" [formGroup]=\"form\">\n <mat-radio-group formControlName=\"dateRangeType\">\n <span class=\"adf-search-date-range-container-row\">\n <mat-radio-button [value]=\"DateRangeType.ANY\" data-automation-id=\"date-range-anytime\">\n {{ 'SEARCH.DATE_RANGE_ADVANCED.OPTIONS.ANYTIME' | translate }}\n </mat-radio-button>\n </span>\n <span class=\"adf-search-date-range-container-row\">\n <mat-radio-button [value]=\"DateRangeType.IN_LAST\" data-automation-id=\"date-range-in-last\">\n {{ 'SEARCH.DATE_RANGE_ADVANCED.OPTIONS.IN_LAST' | translate }}\n </mat-radio-button>\n <mat-form-field class=\"adf-search-date-range-form-field adf-search-date-range-input-field\" subscriptSizing=\"dynamic\">\n <input matInput [attr.aria-label]=\"'SEARCH.DATE_RANGE_ADVANCED.ARIA_LABEL.NUMBER_INPUT' | translate\"\n type=\"number\" min=\"1\" formControlName=\"inLastValue\"\n data-automation-id=\"date-range-in-last-input\" (input)=\"narrowDownAllowedCharacters($event)\"\n (keydown)=\"preventIncorrectNumberCharacters($event)\">\n <mat-error *ngIf=\"form.controls.inLastValue.errors?.required\">{{ 'SEARCH.DATE_RANGE_ADVANCED.ERROR.IN_LAST' | translate }}</mat-error>\n </mat-form-field>\n <mat-form-field class=\"adf-search-date-range-form-field adf-search-date-range-form-field-select\" subscriptSizing=\"dynamic\">\n <mat-select formControlName=\"inLastValueType\" data-automation-id=\"date-range-in-last-dropdown\">\n <mat-option data-automation-id=\"date-range-in-last-option-days\" [value]=\"InLastDateType.DAYS\">{{ 'SEARCH.DATE_RANGE_ADVANCED.IN_LAST_LABELS.DAYS' | translate }}</mat-option>\n <mat-option data-automation-id=\"date-range-in-last-option-weeks\" [value]=\"InLastDateType.WEEKS\">{{ 'SEARCH.DATE_RANGE_ADVANCED.IN_LAST_LABELS.WEEKS' | translate }}</mat-option>\n <mat-option data-automation-id=\"date-range-in-last-option-months\" [value]=\"InLastDateType.MONTHS\">{{ 'SEARCH.DATE_RANGE_ADVANCED.IN_LAST_LABELS.MONTHS' | translate }}</mat-option>\n </mat-select>\n </mat-form-field>\n </span>\n <span class=\"adf-search-date-range-container-row adf-search-date-range-container-row-date\">\n <mat-radio-button [value]=\"DateRangeType.BETWEEN\" data-automation-id=\"date-range-between\">\n {{ 'SEARCH.DATE_RANGE_ADVANCED.OPTIONS.BETWEEN' | translate }}\n </mat-radio-button>\n <mat-form-field class=\"adf-search-date-range-form-field\" subscriptSizing=\"dynamic\">\n <mat-date-range-input [rangePicker]=\"$any(picker)\" [max]=\"convertedMaxDate\">\n <input matStartDate placeholder=\"{{ 'SEARCH.DATE_RANGE_ADVANCED.BETWEEN_PLACEHOLDERS.START_DATE' | translate }}\"\n data-automation-id=\"date-range-between-start-input\" [formControl]=\"betweenStartDateFormControl\" (change)=\"dateChanged($event, betweenStartDateFormControl)\">\n <input matEndDate placeholder=\"{{ 'SEARCH.DATE_RANGE_ADVANCED.BETWEEN_PLACEHOLDERS.END_DATE' | translate }}\"\n data-automation-id=\"date-range-between-end-input\" [formControl]=\"betweenEndDateFormControl\" (change)=\"dateChanged($event, betweenEndDateFormControl)\">\n </mat-date-range-input>\n <mat-datepicker-toggle matSuffix [for]=\"picker\" data-automation-id=\"date-range-between-datepicker-toggle\" />\n <mat-date-range-picker #picker />\n\n <mat-error *ngIf=\"betweenStartDateFormControl.errors?.invalidDate\">{{ 'SEARCH.DATE_RANGE_ADVANCED.ERROR.START_DATE.INVALID_FORMAT' | translate }}</mat-error>\n <mat-error *ngIf=\"betweenStartDateFormControl.errors?.required\">{{ 'SEARCH.DATE_RANGE_ADVANCED.ERROR.START_DATE.REQUIRED' | translate }}</mat-error>\n <mat-error *ngIf=\"betweenEndDateFormControl.errors?.invalidDate\">{{ 'SEARCH.DATE_RANGE_ADVANCED.ERROR.END_DATE.INVALID_FORMAT' | translate }}</mat-error>\n <mat-error *ngIf=\"betweenEndDateFormControl.errors?.required\">{{ 'SEARCH.DATE_RANGE_ADVANCED.ERROR.END_DATE.REQUIRED' | translate }}</mat-error>\n </mat-form-field>\n </span>\n </mat-radio-group>\n</div>\n", styles: ["adf-search-date-range .adf-search-date-range-container{margin-top:20px;padding:10px}adf-search-date-range .adf-search-date-range-container .adf-search-date-range-form-field-select{width:180px;min-width:180px}adf-search-date-range .adf-search-date-range-container-row{display:flex;flex-direction:row;padding-bottom:21px;align-items:center}adf-search-date-range .adf-search-date-range-container-row-date{margin-top:8px}adf-search-date-range .adf-search-date-range-container-row .mat-mdc-select-arrow-wrapper{height:unset}adf-search-date-range .adf-search-date-range-container-row .adf-search-date-range-input-field{width:75px}adf-search-date-range .adf-search-date-range-container-row .adf-search-date-range-form-field{padding-left:10px;flex:1;margin-bottom:12px}adf-search-date-range .adf-search-date-range-container-row .adf-search-date-range-form-field .mat-mdc-form-field-flex{align-items:center}adf-search-date-range .adf-search-date-range-container-row .adf-search-date-range-form-field .mat-mdc-form-field-flex .mat-mdc-form-field-infix{padding:.375em 0 4px}adf-search-date-range .adf-search-widget-extra-width{max-width:500px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i5.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i5.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i8.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i9.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i9.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i9.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i9.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i9.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }], encapsulation: i0.ViewEncapsulation.None }); }
164
+ }
165
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchDateRangeComponent, decorators: [{
166
+ type: Component,
167
+ args: [{ selector: 'adf-search-date-range', standalone: true, imports: [
168
+ CommonModule,
169
+ MatRadioModule,
170
+ ReactiveFormsModule,
171
+ TranslatePipe,
172
+ MatFormFieldModule,
173
+ MatInputModule,
174
+ MatSelectModule,
175
+ MatDatepickerModule
176
+ ], providers: [
177
+ { provide: DateAdapter, useClass: DateFnsAdapter, deps: [MAT_DATE_LOCALE] },
178
+ { provide: MAT_DATE_FORMATS, useValue: MAT_DATE_FNS_FORMATS }
179
+ ], encapsulation: ViewEncapsulation.None, host: { class: 'adf-search-date-range' }, template: "<div class=\"adf-search-date-range-container\" [formGroup]=\"form\">\n <mat-radio-group formControlName=\"dateRangeType\">\n <span class=\"adf-search-date-range-container-row\">\n <mat-radio-button [value]=\"DateRangeType.ANY\" data-automation-id=\"date-range-anytime\">\n {{ 'SEARCH.DATE_RANGE_ADVANCED.OPTIONS.ANYTIME' | translate }}\n </mat-radio-button>\n </span>\n <span class=\"adf-search-date-range-container-row\">\n <mat-radio-button [value]=\"DateRangeType.IN_LAST\" data-automation-id=\"date-range-in-last\">\n {{ 'SEARCH.DATE_RANGE_ADVANCED.OPTIONS.IN_LAST' | translate }}\n </mat-radio-button>\n <mat-form-field class=\"adf-search-date-range-form-field adf-search-date-range-input-field\" subscriptSizing=\"dynamic\">\n <input matInput [attr.aria-label]=\"'SEARCH.DATE_RANGE_ADVANCED.ARIA_LABEL.NUMBER_INPUT' | translate\"\n type=\"number\" min=\"1\" formControlName=\"inLastValue\"\n data-automation-id=\"date-range-in-last-input\" (input)=\"narrowDownAllowedCharacters($event)\"\n (keydown)=\"preventIncorrectNumberCharacters($event)\">\n <mat-error *ngIf=\"form.controls.inLastValue.errors?.required\">{{ 'SEARCH.DATE_RANGE_ADVANCED.ERROR.IN_LAST' | translate }}</mat-error>\n </mat-form-field>\n <mat-form-field class=\"adf-search-date-range-form-field adf-search-date-range-form-field-select\" subscriptSizing=\"dynamic\">\n <mat-select formControlName=\"inLastValueType\" data-automation-id=\"date-range-in-last-dropdown\">\n <mat-option data-automation-id=\"date-range-in-last-option-days\" [value]=\"InLastDateType.DAYS\">{{ 'SEARCH.DATE_RANGE_ADVANCED.IN_LAST_LABELS.DAYS' | translate }}</mat-option>\n <mat-option data-automation-id=\"date-range-in-last-option-weeks\" [value]=\"InLastDateType.WEEKS\">{{ 'SEARCH.DATE_RANGE_ADVANCED.IN_LAST_LABELS.WEEKS' | translate }}</mat-option>\n <mat-option data-automation-id=\"date-range-in-last-option-months\" [value]=\"InLastDateType.MONTHS\">{{ 'SEARCH.DATE_RANGE_ADVANCED.IN_LAST_LABELS.MONTHS' | translate }}</mat-option>\n </mat-select>\n </mat-form-field>\n </span>\n <span class=\"adf-search-date-range-container-row adf-search-date-range-container-row-date\">\n <mat-radio-button [value]=\"DateRangeType.BETWEEN\" data-automation-id=\"date-range-between\">\n {{ 'SEARCH.DATE_RANGE_ADVANCED.OPTIONS.BETWEEN' | translate }}\n </mat-radio-button>\n <mat-form-field class=\"adf-search-date-range-form-field\" subscriptSizing=\"dynamic\">\n <mat-date-range-input [rangePicker]=\"$any(picker)\" [max]=\"convertedMaxDate\">\n <input matStartDate placeholder=\"{{ 'SEARCH.DATE_RANGE_ADVANCED.BETWEEN_PLACEHOLDERS.START_DATE' | translate }}\"\n data-automation-id=\"date-range-between-start-input\" [formControl]=\"betweenStartDateFormControl\" (change)=\"dateChanged($event, betweenStartDateFormControl)\">\n <input matEndDate placeholder=\"{{ 'SEARCH.DATE_RANGE_ADVANCED.BETWEEN_PLACEHOLDERS.END_DATE' | translate }}\"\n data-automation-id=\"date-range-between-end-input\" [formControl]=\"betweenEndDateFormControl\" (change)=\"dateChanged($event, betweenEndDateFormControl)\">\n </mat-date-range-input>\n <mat-datepicker-toggle matSuffix [for]=\"picker\" data-automation-id=\"date-range-between-datepicker-toggle\" />\n <mat-date-range-picker #picker />\n\n <mat-error *ngIf=\"betweenStartDateFormControl.errors?.invalidDate\">{{ 'SEARCH.DATE_RANGE_ADVANCED.ERROR.START_DATE.INVALID_FORMAT' | translate }}</mat-error>\n <mat-error *ngIf=\"betweenStartDateFormControl.errors?.required\">{{ 'SEARCH.DATE_RANGE_ADVANCED.ERROR.START_DATE.REQUIRED' | translate }}</mat-error>\n <mat-error *ngIf=\"betweenEndDateFormControl.errors?.invalidDate\">{{ 'SEARCH.DATE_RANGE_ADVANCED.ERROR.END_DATE.INVALID_FORMAT' | translate }}</mat-error>\n <mat-error *ngIf=\"betweenEndDateFormControl.errors?.required\">{{ 'SEARCH.DATE_RANGE_ADVANCED.ERROR.END_DATE.REQUIRED' | translate }}</mat-error>\n </mat-form-field>\n </span>\n </mat-radio-group>\n</div>\n", styles: ["adf-search-date-range .adf-search-date-range-container{margin-top:20px;padding:10px}adf-search-date-range .adf-search-date-range-container .adf-search-date-range-form-field-select{width:180px;min-width:180px}adf-search-date-range .adf-search-date-range-container-row{display:flex;flex-direction:row;padding-bottom:21px;align-items:center}adf-search-date-range .adf-search-date-range-container-row-date{margin-top:8px}adf-search-date-range .adf-search-date-range-container-row .mat-mdc-select-arrow-wrapper{height:unset}adf-search-date-range .adf-search-date-range-container-row .adf-search-date-range-input-field{width:75px}adf-search-date-range .adf-search-date-range-container-row .adf-search-date-range-form-field{padding-left:10px;flex:1;margin-bottom:12px}adf-search-date-range .adf-search-date-range-container-row .adf-search-date-range-form-field .mat-mdc-form-field-flex{align-items:center}adf-search-date-range .adf-search-date-range-container-row .adf-search-date-range-form-field .mat-mdc-form-field-flex .mat-mdc-form-field-infix{padding:.375em 0 4px}adf-search-date-range .adf-search-widget-extra-width{max-width:500px}\n"] }]
180
+ }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.UserPreferencesService }, { type: i3.DateAdapter }, { type: undefined, decorators: [{
181
+ type: Inject,
182
+ args: [MAT_DATE_FORMATS]
183
+ }] }], propDecorators: { dateFormat: [{
184
+ type: Input
185
+ }], maxDate: [{
186
+ type: Input
187
+ }], field: [{
188
+ type: Input
189
+ }], initialValue: [{
190
+ type: Input
191
+ }], changed: [{
192
+ type: Output
193
+ }], valid: [{
194
+ type: Output
195
+ }] } });
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWRhdGUtcmFuZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvbnRlbnQtc2VydmljZXMvc3JjL2xpYi9zZWFyY2gvY29tcG9uZW50cy9zZWFyY2gtZGF0ZS1yYW5nZS10YWJiZWQvc2VhcmNoLWRhdGUtcmFuZ2Uvc2VhcmNoLWRhdGUtcmFuZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvbnRlbnQtc2VydmljZXMvc3JjL2xpYi9zZWFyY2gvY29tcG9uZW50cy9zZWFyY2gtZGF0ZS1yYW5nZS10YWJiZWQvc2VhcmNoLWRhdGUtcmFuZ2Uvc2VhcmNoLWRhdGUtcmFuZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5SCxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBa0IsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RyxPQUFPLEVBQUUsY0FBYyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDMUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFzQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNs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QkFRTixPQUFPO3NCQUROLE1BQU07Z0JBR1AsS0FBSztzQkFESixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIERlc3Ryb3lSZWYsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbmplY3QsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGVuZE9mRGF5LCBpc0FmdGVyLCBpc0JlZm9yZSwgaXNWYWxpZCwgcGFyc2UgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyBEYXRlQWRhcHRlciwgTUFUX0RBVEVfRk9STUFUUywgTUFUX0RBVEVfTE9DQUxFLCBNYXREYXRlRm9ybWF0cyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgRGF0ZUZuc0FkYXB0ZXIsIE1BVF9EQVRFX0ZOU19GT1JNQVRTIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwtZGF0ZS1mbnMtYWRhcHRlcic7XG5pbXBvcnQgeyBJbkxhc3REYXRlVHlwZSB9IGZyb20gJy4vaW4tbGFzdC1kYXRlLXR5cGUnO1xuaW1wb3J0IHsgRGF0ZVJhbmdlVHlwZSB9IGZyb20gJy4vZGF0ZS1yYW5nZS10eXBlJztcbmltcG9ydCB7IFNlYXJjaERhdGVSYW5nZSB9IGZyb20gJy4vc2VhcmNoLWRhdGUtcmFuZ2UnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFVudHlwZWRGb3JtQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERhdGVGbnNVdGlscywgVXNlclByZWZlcmVuY2VzU2VydmljZSwgVXNlclByZWZlcmVuY2VWYWx1ZXMgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdFJhZGlvTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmNvbnN0IERFRkFVTFRfREFURV9ESVNQTEFZX0ZPUk1BVCA9ICdkZC1NTU0teXknO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FkZi1zZWFyY2gtZGF0ZS1yYW5nZScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgTWF0UmFkaW9Nb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIFRyYW5zbGF0ZVBpcGUsXG4gICAgICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICAgICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICAgICAgTWF0RGF0ZXBpY2tlck1vZHVsZVxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1kYXRlLXJhbmdlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtZGF0ZS1yYW5nZS5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IERhdGVBZGFwdGVyLCB1c2VDbGFzczogRGF0ZUZuc0FkYXB0ZXIsIGRlcHM6IFtNQVRfREFURV9MT0NBTEVdIH0sXG4gICAgICAgIHsgcHJvdmlkZTogTUFUX0RBVEVfRk9STUFUUywgdXNlVmFsdWU6IE1BVF9EQVRFX0ZOU19GT1JNQVRTIH1cbiAgICBdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDogeyBjbGFzczogJ2FkZi1zZWFyY2gtZGF0ZS1yYW5nZScgfVxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hEYXRlUmFuZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpXG4gICAgZGF0ZUZvcm1hdCA9IERFRkFVTFRfREFURV9ESVNQTEFZX0ZPUk1BVDtcbiAgICBASW5wdXQoKVxuICAgIG1heERhdGU6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBzZXQgaW5pdGlhbFZhbHVlKHZhbHVlOiBTZWFyY2hEYXRlUmFuZ2UpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAT3V0cHV0KClcbiAgICBjaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxQYXJ0aWFsPFNlYXJjaERhdGVSYW5nZT4+KCk7XG4gICAgQE91dHB1dCgpXG4gICAgdmFsaWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBmb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cDxTZWFyY2hEYXRlUmFuZ2U+KHtcbiAgICAgICAgZGF0ZVJhbmdlVHlwZTogRGF0ZVJhbmdlVHlwZS5BTlksXG4gICAgICAgIGluTGFzdFZhbHVlVHlwZTogSW5MYXN0RGF0ZVR5cGUuREFZUyxcbiAgICAgICAgaW5MYXN0VmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgYmV0d2VlblN0YXJ0RGF0ZTogdW5kZWZpbmVkLFxuICAgICAgICBiZXR3ZWVuRW5kRGF0ZTogdW5kZWZpbmVkXG4gICAgfSk7XG4gICAgYmV0d2VlblN0YXJ0RGF0ZUZvcm1Db250cm9sID0gdGhpcy5mb3JtLmNvbnRyb2xzLmJldHdlZW5TdGFydERhdGU7XG4gICAgYmV0d2VlbkVuZERhdGVGb3JtQ29udHJvbCA9IHRoaXMuZm9ybS5jb250cm9scy5iZXR3ZWVuRW5kRGF0ZTtcbiAgICBjb252ZXJ0ZWRNYXhEYXRlOiBEYXRlO1xuXG4gICAgcmVhZG9ubHkgRGF0ZVJhbmdlVHlwZSA9IERhdGVSYW5nZVR5cGU7XG4gICAgcmVhZG9ubHkgSW5MYXN0RGF0ZVR5cGUgPSBJbkxhc3REYXRlVHlwZTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICAgICAgcHJpdmF0ZSB1c2VyUHJlZmVyZW5jZXNTZXJ2aWNlOiBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGRhdGVBZGFwdGVyOiBEYXRlQWRhcHRlcjxEYXRlRm5zQWRhcHRlcj4sXG4gICAgICAgIEBJbmplY3QoTUFUX0RBVEVfRk9STUFUUykgcHJpdmF0ZSBkYXRlRm9ybWF0Q29uZmlnOiBNYXREYXRlRm9ybWF0c1xuICAgICkge31cblxuICAgIHJlYWRvbmx5IGVuZERhdGVWYWxpZGF0b3IgPSAoZm9ybUNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9IHwgbnVsbCA9PiB7XG4gICAgICAgIGlmIChpc0JlZm9yZShmb3JtQ29udHJvbC52YWx1ZSwgdGhpcy5iZXR3ZWVuU3RhcnREYXRlRm9ybUNvbnRyb2wudmFsdWUpIHx8IGlzQWZ0ZXIoZm9ybUNvbnRyb2wudmFsdWUsIHRoaXMuY29udmVydGVkTWF4RGF0ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaW52YWxpZERhdGU6IHRydWVcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH07XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXRlRm9ybWF0Q29uZmlnLmRpc3BsYXkuZGF0ZUlucHV0ID0gdGhpcy5kYXRlRm9ybWF0O1xuICAgICAgICB0aGlzLmNvbnZlcnRlZE1heERhdGUgPSBlbmRPZkRheSh0aGlzLm1heERhdGUgJiYgdGhpcy5tYXhEYXRlICE9PSAndG9kYXknID8gcGFyc2UodGhpcy5tYXhEYXRlLCB0aGlzLmRhdGVGb3JtYXQsIG5ldyBEYXRlKCkpIDogbmV3IERhdGUoKSk7XG4gICAgICAgIHRoaXMudXNlclByZWZlcmVuY2VzU2VydmljZVxuICAgICAgICAgICAgLnNlbGVjdChVc2VyUHJlZmVyZW5jZVZhbHVlcy5Mb2NhbGUpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGxvY2FsZSkgPT4gdGhpcy5kYXRlQWRhcHRlci5zZXRMb2NhbGUoRGF0ZUZuc1V0aWxzLmdldExvY2FsZUZyb21TdHJpbmcobG9jYWxlKSkpO1xuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuZGF0ZVJhbmdlVHlwZS52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZGF0ZVJhbmdlVHlwZSkgPT4gdGhpcy51cGRhdGVWYWxpZGF0b3JzKGRhdGVSYW5nZVR5cGUpKTtcbiAgICAgICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5vbkNoYW5nZSgpKTtcbiAgICB9XG4gICAgcHJpdmF0ZSB1cGRhdGVWYWxpZGF0b3JzKGRhdGVSYW5nZVR5cGU6IERhdGVSYW5nZVR5cGUpIHtcbiAgICAgICAgc3dpdGNoIChkYXRlUmFuZ2VUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIERhdGVSYW5nZVR5cGUuQkVUV0VFTjpcbiAgICAgICAgICAgICAgICB0aGlzLmJldHdlZW5TdGFydERhdGVGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgICAgICAgICAgIHRoaXMuYmV0d2VlbkVuZERhdGVGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCB0aGlzLmVuZERhdGVWYWxpZGF0b3JdKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuaW5MYXN0VmFsdWUuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIERhdGVSYW5nZVR5cGUuSU5fTEFTVDpcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuaW5MYXN0VmFsdWUuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJldHdlZW5TdGFydERhdGVGb3JtQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJldHdlZW5FbmREYXRlRm9ybUNvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5pbkxhc3RWYWx1ZS5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJldHdlZW5TdGFydERhdGVGb3JtQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJldHdlZW5FbmREYXRlRm9ybUNvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5iZXR3ZWVuU3RhcnREYXRlRm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICB0aGlzLmJldHdlZW5FbmREYXRlRm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuaW5MYXN0VmFsdWUudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25DaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmZvcm0udmFsaWQpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZC5lbWl0KHRoaXMuZm9ybS52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52YWxpZC5lbWl0KHRoaXMuZm9ybS52YWxpZCk7XG4gICAgfVxuXG4gICAgZGF0ZUNoYW5nZWQoZXZlbnQ6IEV2ZW50LCBmb3JtQ29udHJvbDogVW50eXBlZEZvcm1Db250cm9sKSB7XG4gICAgICAgIGlmIChldmVudD8udGFyZ2V0Wyd2YWx1ZSddPy50cmltKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBwYXJzZShldmVudC50YXJnZXRbJ3ZhbHVlJ10sIHRoaXMuZGF0ZUZvcm1hdCwgbmV3IERhdGUoKSk7XG4gICAgICAgICAgICBpZiAoIWlzVmFsaWQoZGF0ZSkpIHtcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbC5zZXRFcnJvcnMoe1xuICAgICAgICAgICAgICAgICAgICAuLi5mb3JtQ29udHJvbC5lcnJvcnMsXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgaW52YWxpZERhdGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2wuc2V0RXJyb3JzKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZm9ybUNvbnRyb2wuZXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICBpbnZhbGlkRGF0ZTogZmFsc2VcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbC5zZXRWYWx1ZShkYXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5hcnJvd0Rvd25BbGxvd2VkQ2hhcmFjdGVycyhldmVudDogRXZlbnQpIHtcbiAgICAgICAgaWYgKHBhcnNlSW50KChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUsIDEwKSA9PT0gMCkge1xuICAgICAgICAgICAgKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSA9ICcnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUucmVwbGFjZSgvXFxEL2csICcnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByZXZlbnRJbmNvcnJlY3ROdW1iZXJDaGFyYWN0ZXJzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgICAgICBjYXNlICcuJzpcbiAgICAgICAgICAgIGNhc2UgJy0nOlxuICAgICAgICAgICAgY2FzZSAnZSc6XG4gICAgICAgICAgICBjYXNlICcrJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICBjYXNlICcwJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gISEoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhZGYtc2VhcmNoLWRhdGUtcmFuZ2UtY29udGFpbmVyXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gIDxtYXQtcmFkaW8tZ3JvdXAgZm9ybUNvbnRyb2xOYW1lPVwiZGF0ZVJhbmdlVHlwZVwiPlxuICAgIDxzcGFuIGNsYXNzPVwiYWRmLXNlYXJjaC1kYXRlLXJhbmdlLWNvbnRhaW5lci1yb3dcIj5cbiAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIFt2YWx1ZV09XCJEYXRlUmFuZ2VUeXBlLkFOWVwiIGRhdGEtYXV0b21hdGlvbi1pZD1cImRhdGUtcmFuZ2UtYW55dGltZVwiPlxuICAgICAgICB7eyAnU0VBUkNILkRBVEVfUkFOR0VfQURWQU5DRUQuT1BUSU9OUy5BTllUSU1FJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxuICAgIDwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cImFkZi1zZWFyY2gtZGF0ZS1yYW5nZS1jb250YWluZXItcm93XCI+XG4gICAgICA8bWF0LXJhZGlvLWJ1dHRvbiBbdmFsdWVdPVwiRGF0ZVJhbmdlVHlwZS5JTl9MQVNUXCIgZGF0YS1hdXRvbWF0aW9uLWlkPVwiZGF0ZS1yYW5nZS1pbi1sYXN0XCI+XG4gICAgICAgIHt7ICdTRUFSQ0guREFURV9SQU5HRV9BRFZBTkNFRC5PUFRJT05TLklOX0xBU1QnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L21hdC1yYWRpby1idXR0b24+XG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJhZGYtc2VhcmNoLWRhdGUtcmFuZ2UtZm9ybS1maWVsZCBhZGYtc2VhcmNoLWRhdGUtcmFuZ2UtaW5wdXQtZmllbGRcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbYXR0ci5hcmlhLWxhYmVsXT1cIidTRUFSQ0guREFURV9SQU5HRV9BRFZBTkNFRC5BUklBX0xBQkVMLk5VTUJFUl9JTlBVVCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiIG1pbj1cIjFcIiBmb3JtQ29udHJvbE5hbWU9XCJpbkxhc3RWYWx1ZVwiXG4gICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJkYXRlLXJhbmdlLWluLWxhc3QtaW5wdXRcIiAoaW5wdXQpPVwibmFycm93RG93bkFsbG93ZWRDaGFyYWN0ZXJzKCRldmVudClcIlxuICAgICAgICAgICAgICAgKGtleWRvd24pPVwicHJldmVudEluY29ycmVjdE51bWJlckNoYXJhY3RlcnMoJGV2ZW50KVwiPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybS5jb250cm9scy5pbkxhc3RWYWx1ZS5lcnJvcnM/LnJlcXVpcmVkXCI+e3sgJ1NFQVJDSC5EQVRFX1JBTkdFX0FEVkFOQ0VELkVSUk9SLklOX0xBU1QnIHwgdHJhbnNsYXRlIH19PC9tYXQtZXJyb3I+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiYWRmLXNlYXJjaC1kYXRlLXJhbmdlLWZvcm0tZmllbGQgYWRmLXNlYXJjaC1kYXRlLXJhbmdlLWZvcm0tZmllbGQtc2VsZWN0XCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxuICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJpbkxhc3RWYWx1ZVR5cGVcIiBkYXRhLWF1dG9tYXRpb24taWQ9XCJkYXRlLXJhbmdlLWluLWxhc3QtZHJvcGRvd25cIj5cbiAgICAgICAgICA8bWF0LW9wdGlvbiBkYXRhLWF1dG9tYXRpb24taWQ9XCJkYXRlLXJhbmdlLWluLWxhc3Qtb3B0aW9uLWRheXNcIiBbdmFsdWVdPVwiSW5MYXN0RGF0ZVR5cGUuREFZU1wiPnt7ICdTRUFSQ0guREFURV9SQU5HRV9BRFZBTkNFRC5JTl9MQVNUX0xBQkVMUy5EQVlTJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8bWF0LW9wdGlvbiBkYXRhLWF1dG9tYXRpb24taWQ9XCJkYXRlLXJhbmdlLWluLWxhc3Qtb3B0aW9uLXdlZWtzXCIgW3ZhbHVlXT1cIkluTGFzdERhdGVUeXBlLldFRUtTXCI+e3sgJ1NFQVJDSC5EQVRFX1JBTkdFX0FEVkFOQ0VELklOX0xBU1RfTEFCRUxTLldFRUtTJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8bWF0LW9wdGlvbiBkYXRhLWF1dG9tYXRpb24taWQ9XCJkYXRlLXJhbmdlLWluLWxhc3Qtb3B0aW9uLW1vbnRoc1wiIFt2YWx1ZV09XCJJbkxhc3REYXRlVHlwZS5NT05USFNcIj57eyAnU0VBUkNILkRBVEVfUkFOR0VfQURWQU5DRUQuSU5fTEFTVF9MQUJFTFMuTU9OVEhTJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJhZGYtc2VhcmNoLWRhdGUtcmFuZ2UtY29udGFpbmVyLXJvdyBhZGYtc2VhcmNoLWRhdGUtcmFuZ2UtY29udGFpbmVyLXJvdy1kYXRlXCI+XG4gICAgICA8bWF0LXJhZGlvLWJ1dHRvbiBbdmFsdWVdPVwiRGF0ZVJhbmdlVHlwZS5CRVRXRUVOXCIgZGF0YS1hdXRvbWF0aW9uLWlkPVwiZGF0ZS1yYW5nZS1iZXR3ZWVuXCI+XG4gICAgICAgIHt7ICdTRUFSQ0guREFURV9SQU5HRV9BRFZBTkNFRC5PUFRJT05TLkJFVFdFRU4nIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L21hdC1yYWRpby1idXR0b24+XG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJhZGYtc2VhcmNoLWRhdGUtcmFuZ2UtZm9ybS1maWVsZFwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICAgICAgPG1hdC1kYXRlLXJhbmdlLWlucHV0IFtyYW5nZVBpY2tlcl09XCIkYW55KHBpY2tlcilcIiBbbWF4XT1cImNvbnZlcnRlZE1heERhdGVcIj5cbiAgICAgICAgICA8aW5wdXQgbWF0U3RhcnREYXRlIHBsYWNlaG9sZGVyPVwie3sgJ1NFQVJDSC5EQVRFX1JBTkdFX0FEVkFOQ0VELkJFVFdFRU5fUExBQ0VIT0xERVJTLlNUQVJUX0RBVEUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiZGF0ZS1yYW5nZS1iZXR3ZWVuLXN0YXJ0LWlucHV0XCIgW2Zvcm1Db250cm9sXT1cImJldHdlZW5TdGFydERhdGVGb3JtQ29udHJvbFwiIChjaGFuZ2UpPVwiZGF0ZUNoYW5nZWQoJGV2ZW50LCBiZXR3ZWVuU3RhcnREYXRlRm9ybUNvbnRyb2wpXCI+XG4gICAgICAgICAgPGlucHV0IG1hdEVuZERhdGUgcGxhY2Vob2xkZXI9XCJ7eyAnU0VBUkNILkRBVEVfUkFOR0VfQURWQU5DRUQuQkVUV0VFTl9QTEFDRUhPTERFUlMuRU5EX0RBVEUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiZGF0ZS1yYW5nZS1iZXR3ZWVuLWVuZC1pbnB1dFwiIFtmb3JtQ29udHJvbF09XCJiZXR3ZWVuRW5kRGF0ZUZvcm1Db250cm9sXCIgKGNoYW5nZSk9XCJkYXRlQ2hhbmdlZCgkZXZlbnQsIGJldHdlZW5FbmREYXRlRm9ybUNvbnRyb2wpXCI+XG4gICAgICAgIDwvbWF0LWRhdGUtcmFuZ2UtaW5wdXQ+XG4gICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwicGlja2VyXCIgZGF0YS1hdXRvbWF0aW9uLWlkPVwiZGF0ZS1yYW5nZS1iZXR3ZWVuLWRhdGVwaWNrZXItdG9nZ2xlXCIgLz5cbiAgICAgICAgPG1hdC1kYXRlLXJhbmdlLXBpY2tlciAjcGlja2VyIC8+XG5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImJldHdlZW5TdGFydERhdGVGb3JtQ29udHJvbC5lcnJvcnM/LmludmFsaWREYXRlXCI+e3sgJ1NFQVJDSC5EQVRFX1JBTkdFX0FEVkFOQ0VELkVSUk9SLlNUQVJUX0RBVEUuSU5WQUxJRF9GT1JNQVQnIHwgdHJhbnNsYXRlIH19PC9tYXQtZXJyb3I+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJiZXR3ZWVuU3RhcnREYXRlRm9ybUNvbnRyb2wuZXJyb3JzPy5yZXF1aXJlZFwiPnt7ICdTRUFSQ0guREFURV9SQU5HRV9BRFZBTkNFRC5FUlJPUi5TVEFSVF9EQVRFLlJFUVVJUkVEJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWVycm9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiYmV0d2VlbkVuZERhdGVGb3JtQ29udHJvbC5lcnJvcnM/LmludmFsaWREYXRlXCI+e3sgJ1NFQVJDSC5EQVRFX1JBTkdFX0FEVkFOQ0VELkVSUk9SLkVORF9EQVRFLklOVkFMSURfRk9STUFUJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWVycm9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiYmV0d2VlbkVuZERhdGVGb3JtQ29udHJvbC5lcnJvcnM/LnJlcXVpcmVkXCI+e3sgJ1NFQVJDSC5EQVRFX1JBTkdFX0FEVkFOQ0VELkVSUk9SLkVORF9EQVRFLlJFUVVJUkVEJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWVycm9yPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L3NwYW4+XG4gIDwvbWF0LXJhZGlvLWdyb3VwPlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,18 @@
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
+ export {};
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWRhdGUtcmFuZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL3NlYXJjaC9jb21wb25lbnRzL3NlYXJjaC1kYXRlLXJhbmdlLXRhYmJlZC9zZWFyY2gtZGF0ZS1yYW5nZS9zZWFyY2gtZGF0ZS1yYW5nZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUciLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IERhdGVSYW5nZVR5cGUgfSBmcm9tICcuL2RhdGUtcmFuZ2UtdHlwZSc7XG5pbXBvcnQgeyBJbkxhc3REYXRlVHlwZSB9IGZyb20gJy4vaW4tbGFzdC1kYXRlLXR5cGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaERhdGVSYW5nZSB7XG4gICAgZGF0ZVJhbmdlVHlwZTogRGF0ZVJhbmdlVHlwZTtcbiAgICBpbkxhc3RWYWx1ZVR5cGU/OiBJbkxhc3REYXRlVHlwZTtcbiAgICBpbkxhc3RWYWx1ZT86IHN0cmluZztcbiAgICBiZXR3ZWVuU3RhcnREYXRlPzogRGF0ZTtcbiAgICBiZXR3ZWVuRW5kRGF0ZT86IERhdGU7XG59XG4iXX0=
@@ -0,0 +1,201 @@
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 { Component, DestroyRef, inject, ViewEncapsulation } from '@angular/core';
18
+ import { ReplaySubject } from 'rxjs';
19
+ import { map } from 'rxjs/operators';
20
+ import { DateRangeType } from './search-date-range/date-range-type';
21
+ import { InLastDateType } from './search-date-range/in-last-date-type';
22
+ import { TranslationService } from '@alfresco/adf-core';
23
+ import { endOfDay, endOfToday, format, formatISO, parseISO, startOfDay, startOfMonth, startOfWeek, subDays, subMonths, subWeeks } from 'date-fns';
24
+ import { CommonModule } from '@angular/common';
25
+ import { SearchFilterTabbedComponent } from '../search-filter-tabbed/search-filter-tabbed.component';
26
+ import { SearchDateRangeComponent } from './search-date-range/search-date-range.component';
27
+ import { SearchFilterTabDirective } from '../search-filter-tabbed/search-filter-tab.directive';
28
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
29
+ import * as i0 from "@angular/core";
30
+ import * as i1 from "@alfresco/adf-core";
31
+ import * as i2 from "@angular/common";
32
+ const DEFAULT_DATE_DISPLAY_FORMAT = 'dd-MMM-yy';
33
+ export class SearchDateRangeTabbedComponent {
34
+ constructor(translateService) {
35
+ this.translateService = translateService;
36
+ this.displayValue$ = new ReplaySubject(1);
37
+ this.startValue = {
38
+ dateRangeType: DateRangeType.ANY,
39
+ inLastValueType: InLastDateType.DAYS,
40
+ inLastValue: undefined,
41
+ betweenStartDate: undefined,
42
+ betweenEndDate: undefined
43
+ };
44
+ this.preselectedValues = {};
45
+ this.tabsValidity = {};
46
+ this.value = {};
47
+ this.queryMapByField = new Map();
48
+ this.displayValueMapByField = new Map();
49
+ this.destroyRef = inject(DestroyRef);
50
+ }
51
+ ngOnInit() {
52
+ this.fields = this.settings?.field.split(',').map((field) => field.trim());
53
+ this.setDefaultDateFormatSettings();
54
+ this.context.populateFilters
55
+ .asObservable()
56
+ .pipe(map((filtersQueries) => filtersQueries[this.id]), takeUntilDestroyed(this.destroyRef))
57
+ .subscribe((filterQuery) => {
58
+ if (filterQuery) {
59
+ Object.keys(filterQuery).forEach((field) => {
60
+ filterQuery[field].betweenStartDate = filterQuery[field].betweenStartDate
61
+ ? parseISO(filterQuery[field].betweenStartDate)
62
+ : undefined;
63
+ filterQuery[field].betweenEndDate = filterQuery[field].betweenEndDate
64
+ ? parseISO(filterQuery[field].betweenEndDate)
65
+ : undefined;
66
+ this.preselectedValues[field] = filterQuery[field];
67
+ this.onDateRangedValueChanged(filterQuery[field], field);
68
+ });
69
+ this.submitValues(false);
70
+ }
71
+ else {
72
+ this.reset(false);
73
+ }
74
+ this.context.filterLoaded.next();
75
+ });
76
+ }
77
+ setDefaultDateFormatSettings() {
78
+ if (this.settings && !this.settings.dateFormat) {
79
+ this.settings.dateFormat = DEFAULT_DATE_DISPLAY_FORMAT;
80
+ }
81
+ }
82
+ getCurrentValue() {
83
+ return this.value;
84
+ }
85
+ hasValidValue() {
86
+ return Object.values(this.tabsValidity).every((valid) => valid);
87
+ }
88
+ reset(updateContext = true) {
89
+ this.combinedQuery = '';
90
+ this.combinedDisplayValue = '';
91
+ this.startValue = {
92
+ ...this.startValue
93
+ };
94
+ this.fields.forEach((field) => {
95
+ this.context.filterRawParams[field] = undefined;
96
+ });
97
+ this.context.queryFragments[this.id] = undefined;
98
+ this.context.filterRawParams[this.id] = undefined;
99
+ this.submitValues(updateContext);
100
+ }
101
+ setValue(value) {
102
+ this.value = value;
103
+ }
104
+ getTabLabel(field) {
105
+ return this.settings?.displayedLabelsByField?.[field] ? this.settings.displayedLabelsByField[field] : field;
106
+ }
107
+ submitValues(updateContext = true) {
108
+ this.context.queryFragments[this.id] = this.combinedQuery;
109
+ this.displayValue$.next(this.combinedDisplayValue);
110
+ if (this.id && this.context && updateContext) {
111
+ this.context.update();
112
+ }
113
+ }
114
+ onDateRangedValueChanged(value, field) {
115
+ this.context.filterRawParams[this.id] ||= {};
116
+ this.context.filterRawParams[this.id][field] = value;
117
+ this.value[field] = value;
118
+ this.updateQuery(value, field);
119
+ this.updateDisplayValue(value, field);
120
+ }
121
+ generateQuery(value, field) {
122
+ let query = '';
123
+ let startDate;
124
+ let endDate;
125
+ if (value.dateRangeType === DateRangeType.IN_LAST) {
126
+ if (value.inLastValue) {
127
+ switch (value.inLastValueType) {
128
+ case InLastDateType.DAYS:
129
+ startDate = startOfDay(subDays(new Date(), parseInt(value.inLastValue, 10)));
130
+ break;
131
+ case InLastDateType.WEEKS:
132
+ startDate = startOfWeek(subWeeks(new Date(), parseInt(value.inLastValue, 10)));
133
+ break;
134
+ case InLastDateType.MONTHS:
135
+ startDate = startOfMonth(subMonths(new Date(), parseInt(value.inLastValue, 10)));
136
+ break;
137
+ default:
138
+ break;
139
+ }
140
+ }
141
+ endDate = endOfToday();
142
+ }
143
+ else if (value.dateRangeType === DateRangeType.BETWEEN) {
144
+ if (value.betweenStartDate && value.betweenEndDate) {
145
+ startDate = startOfDay(value.betweenStartDate);
146
+ endDate = endOfDay(value.betweenEndDate);
147
+ }
148
+ }
149
+ if (startDate && endDate) {
150
+ query = `${field}:['${formatISO(startDate)}' TO '${formatISO(endDate)}']`;
151
+ }
152
+ return query;
153
+ }
154
+ generateDisplayValue(value) {
155
+ let displayValue = '';
156
+ if (value.dateRangeType === DateRangeType.IN_LAST && value.inLastValue) {
157
+ displayValue = this.translateService.instant(`SEARCH.DATE_RANGE_ADVANCED.IN_LAST_DISPLAY_LABELS.${value.inLastValueType}`, {
158
+ value: value.inLastValue
159
+ });
160
+ }
161
+ else if (value.dateRangeType === DateRangeType.BETWEEN && value.betweenStartDate && value.betweenEndDate) {
162
+ displayValue = `${format(startOfDay(value.betweenStartDate), this.settings.dateFormat)} - ${format(endOfDay(value.betweenEndDate), this.settings.dateFormat)}`;
163
+ }
164
+ return displayValue;
165
+ }
166
+ updateQuery(value, field) {
167
+ this.combinedQuery = '';
168
+ this.queryMapByField.set(field, this.generateQuery(value, field));
169
+ this.queryMapByField.forEach((query) => {
170
+ if (query) {
171
+ this.combinedQuery = this.combinedQuery ? `${this.combinedQuery} AND ${query}` : `${query}`;
172
+ }
173
+ });
174
+ }
175
+ updateDisplayValue(value, field) {
176
+ this.combinedDisplayValue = '';
177
+ this.displayValueMapByField.set(field, this.generateDisplayValue(value));
178
+ this.displayValueMapByField.forEach((displayValue, fieldForDisplayLabel) => {
179
+ if (displayValue) {
180
+ const displayLabelForField = `${this.translateService
181
+ .instant(this.getDisplayLabelForField(fieldForDisplayLabel))
182
+ .toUpperCase()}: ${displayValue}`;
183
+ this.combinedDisplayValue = this.combinedDisplayValue
184
+ ? `${this.combinedDisplayValue} ${displayLabelForField}`
185
+ : `${displayLabelForField}`;
186
+ }
187
+ });
188
+ }
189
+ getDisplayLabelForField(fieldForDisplayLabel) {
190
+ return this.settings?.displayedLabelsByField?.[fieldForDisplayLabel]
191
+ ? this.settings.displayedLabelsByField[fieldForDisplayLabel]
192
+ : fieldForDisplayLabel;
193
+ }
194
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchDateRangeTabbedComponent, deps: [{ token: i1.TranslationService }], target: i0.ɵɵFactoryTarget.Component }); }
195
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SearchDateRangeTabbedComponent, isStandalone: true, selector: "adf-search-date-range-tabbed", ngImport: i0, template: "<adf-search-filter-tabbed>\n <ng-container *ngFor=\"let field of fields\">\n <adf-search-date-range\n *adf-search-filter-tab=\"getTabLabel(field)\"\n [dateFormat]=\"settings.dateFormat\"\n [maxDate]=\"settings.maxDate\"\n [field]=\"field\"\n [initialValue]=\"preselectedValues[field]\"\n (changed)=\"onDateRangedValueChanged($event, field)\"\n (valid)=\"tabsValidity[field]=$event\" />\n </ng-container>\n</adf-search-filter-tabbed>\n", styles: ["adf-search-date-range-tabbed .mat-mdc-tab-header{margin-top:-5px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: SearchFilterTabbedComponent, selector: "adf-search-filter-tabbed" }, { kind: "component", type: SearchDateRangeComponent, selector: "adf-search-date-range", inputs: ["dateFormat", "maxDate", "field", "initialValue"], outputs: ["changed", "valid"] }, { kind: "directive", type: SearchFilterTabDirective, selector: "[adf-search-filter-tab]", inputs: ["adf-search-filter-tab"] }], encapsulation: i0.ViewEncapsulation.None }); }
196
+ }
197
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchDateRangeTabbedComponent, decorators: [{
198
+ type: Component,
199
+ args: [{ selector: 'adf-search-date-range-tabbed', standalone: true, imports: [CommonModule, SearchFilterTabbedComponent, SearchDateRangeComponent, SearchFilterTabDirective], encapsulation: ViewEncapsulation.None, template: "<adf-search-filter-tabbed>\n <ng-container *ngFor=\"let field of fields\">\n <adf-search-date-range\n *adf-search-filter-tab=\"getTabLabel(field)\"\n [dateFormat]=\"settings.dateFormat\"\n [maxDate]=\"settings.maxDate\"\n [field]=\"field\"\n [initialValue]=\"preselectedValues[field]\"\n (changed)=\"onDateRangedValueChanged($event, field)\"\n (valid)=\"tabsValidity[field]=$event\" />\n </ng-container>\n</adf-search-filter-tabbed>\n", styles: ["adf-search-date-range-tabbed .mat-mdc-tab-header{margin-top:-5px}\n"] }]
200
+ }], ctorParameters: () => [{ type: i1.TranslationService }] });
201
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWRhdGUtcmFuZ2UtdGFiYmVkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvc2VhcmNoL2NvbXBvbmVudHMvc2VhcmNoLWRhdGUtcmFuZ2UtdGFiYmVkL3NlYXJjaC1kYXRlLXJhbmdlLXRhYmJlZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL3NlYXJjaC9jb21wb25lbnRzL3NlYXJjaC1kYXRlLXJhbmdlLXRhYmJlZC9zZWFyY2gtZGF0ZS1yYW5nZS10YWJiZWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFVLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUtwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEosT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBRWhFLE1BQU0sMkJBQTJCLEdBQUcsV0FBVyxDQUFDO0FBVWhELE1BQU0sT0FBTyw4QkFBOEI7SUF3QnZDLFlBQW9CLGdCQUFvQztRQUFwQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO1FBdkJ4RCxrQkFBYSxHQUFHLElBQUksYUFBYSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBRTdDLGVBQVUsR0FBb0I7WUFDMUIsYUFBYSxFQUFFLGFBQWEsQ0FBQyxHQUFHO1lBQ2hDLGVBQWUsRUFBRSxjQUFjLENBQUMsSUFBSTtZQUNwQyxXQUFXLEVBQUUsU0FBUztZQUN0QixnQkFBZ0IsRUFBRSxTQUFTO1lBQzNCLGNBQWMsRUFBRSxTQUFTO1NBQzVCLENBQUM7UUFDRixzQkFBaUIsR0FBdUMsRUFBRSxDQUFDO1FBSTNELGlCQUFZLEdBQStCLEVBQUUsQ0FBQztRQUl0QyxVQUFLLEdBQWdELEVBQUUsQ0FBQztRQUN4RCxvQkFBZSxHQUF3QixJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQUNqRSwyQkFBc0IsR0FBd0IsSUFBSSxHQUFHLEVBQWtCLENBQUM7UUFFL0QsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVVLENBQUM7SUFFNUQsUUFBUTtRQUNKLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlO2FBQ3ZCLFlBQVksRUFBRTthQUNkLElBQUksQ0FDRCxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFDaEQsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUN0QzthQUNBLFNBQVMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3ZCLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ2QsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDdkMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxnQkFBZ0I7d0JBQ3JFLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixDQUFDO3dCQUMvQyxDQUFDLENBQUMsU0FBUyxDQUFDO29CQUNoQixXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjO3dCQUNqRSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUM7d0JBQzdDLENBQUMsQ0FBQyxTQUFTLENBQUM7b0JBQ2hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ25ELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQzdELENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0IsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEIsQ0FBQztZQUNELElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUNPLDRCQUE0QjtRQUNoQyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLDJCQUEyQixDQUFDO1FBQzNELENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZTtRQUNYLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsYUFBYTtRQUNULE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsR0FBRyxJQUFJO1FBQ3RCLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRztZQUNkLEdBQUcsSUFBSSxDQUFDLFVBQVU7U0FDckIsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEdBQUcsU0FBUyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQztRQUNqRCxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO1FBQ2xELElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUF5QztRQUM5QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWE7UUFDckIsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLHNCQUFzQixFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNoSCxDQUFDO0lBRUQsWUFBWSxDQUFDLGFBQWEsR0FBRyxJQUFJO1FBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzFELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ25ELElBQUksSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDMUIsQ0FBQztJQUNMLENBQUM7SUFDRCx3QkFBd0IsQ0FBQyxLQUErQixFQUFFLEtBQWE7UUFDbkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3JELElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVPLGFBQWEsQ0FBQyxLQUErQixFQUFFLEtBQWE7UUFDaEUsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2YsSUFBSSxTQUFlLENBQUM7UUFDcEIsSUFBSSxPQUFhLENBQUM7UUFDbEIsSUFBSSxLQUFLLENBQUMsYUFBYSxLQUFLLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNoRCxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDcEIsUUFBUSxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7b0JBQzVCLEtBQUssY0FBYyxDQUFDLElBQUk7d0JBQ3BCLFNBQVMsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM3RSxNQUFNO29CQUNWLEtBQUssY0FBYyxDQUFDLEtBQUs7d0JBQ3JCLFNBQVMsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUMvRSxNQUFNO29CQUNWLEtBQUssY0FBYyxDQUFDLE1BQU07d0JBQ3RCLFNBQVMsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUNqRixNQUFNO29CQUNWO3dCQUNJLE1BQU07Z0JBQ2QsQ0FBQztZQUNMLENBQUM7WUFDRCxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDM0IsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLGFBQWEsS0FBSyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkQsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNqRCxTQUFTLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUMvQyxPQUFPLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUM3QyxDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksU0FBUyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ3ZCLEtBQUssR0FBRyxHQUFHLEtBQUssTUFBTSxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDOUUsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxLQUErQjtRQUN4RCxJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxLQUFLLENBQUMsYUFBYSxLQUFLLGFBQWEsQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JFLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLHFEQUFxRCxLQUFLLENBQUMsZUFBZSxFQUFFLEVBQUU7Z0JBQ3ZILEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVzthQUMzQixDQUFDLENBQUM7UUFDUCxDQUFDO2FBQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxLQUFLLGFBQWEsQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLGdCQUFnQixJQUFJLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6RyxZQUFZLEdBQUcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sTUFBTSxDQUM5RixRQUFRLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxFQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FDM0IsRUFBRSxDQUFDO1FBQ1IsQ0FBQztRQUNELE9BQU8sWUFBWSxDQUFDO0lBQ3hCLENBQUM7SUFFTyxXQUFXLENBQUMsS0FBK0IsRUFBRSxLQUFhO1FBQzlELElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBYSxFQUFFLEVBQUU7WUFDM0MsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDUixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsUUFBUSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQztZQUNoRyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsS0FBK0IsRUFBRSxLQUFhO1FBQ3JFLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQW9CLEVBQUUsb0JBQTRCLEVBQUUsRUFBRTtZQUN2RixJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUNmLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCO3FCQUNoRCxPQUFPLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLG9CQUFvQixDQUFDLENBQUM7cUJBQzNELFdBQVcsRUFBRSxLQUFLLFlBQVksRUFBRSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLG9CQUFvQjtvQkFDakQsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixJQUFJLG9CQUFvQixFQUFFO29CQUN4RCxDQUFDLENBQUMsR0FBRyxvQkFBb0IsRUFBRSxDQUFDO1lBQ3BDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxvQkFBNEI7UUFDeEQsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLHNCQUFzQixFQUFFLENBQUMsb0JBQW9CLENBQUM7WUFDaEUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQUMsb0JBQW9CLENBQUM7WUFDNUQsQ0FBQyxDQUFDLG9CQUFvQixDQUFDO0lBQy9CLENBQUM7K0dBdExRLDhCQUE4QjttR0FBOUIsOEJBQThCLHdGQzVDM0MsOGdCQVlBLDRIRDJCYyxZQUFZLDRKQUFFLDJCQUEyQixxRUFBRSx3QkFBd0IsNkpBQUUsd0JBQXdCOzs0RkFLOUYsOEJBQThCO2tCQVIxQyxTQUFTOytCQUNJLDhCQUE4QixjQUM1QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsMkJBQTJCLEVBQUUsd0JBQXdCLEVBQUUsd0JBQXdCLENBQUMsaUJBR3pGLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgRGVzdHJveVJlZiwgaW5qZWN0LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEYXRlUmFuZ2VUeXBlIH0gZnJvbSAnLi9zZWFyY2gtZGF0ZS1yYW5nZS9kYXRlLXJhbmdlLXR5cGUnO1xuaW1wb3J0IHsgU2VhcmNoRGF0ZVJhbmdlIH0gZnJvbSAnLi9zZWFyY2gtZGF0ZS1yYW5nZS9zZWFyY2gtZGF0ZS1yYW5nZSc7XG5pbXBvcnQgeyBTZWFyY2hXaWRnZXQgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2VhcmNoLXdpZGdldC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2VhcmNoV2lkZ2V0U2V0dGluZ3MgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2VhcmNoLXdpZGdldC1zZXR0aW5ncy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2VhcmNoUXVlcnlCdWlsZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NlYXJjaC1xdWVyeS1idWlsZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgSW5MYXN0RGF0ZVR5cGUgfSBmcm9tICcuL3NlYXJjaC1kYXRlLXJhbmdlL2luLWxhc3QtZGF0ZS10eXBlJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBlbmRPZkRheSwgZW5kT2ZUb2RheSwgZm9ybWF0LCBmb3JtYXRJU08sIHBhcnNlSVNPLCBzdGFydE9mRGF5LCBzdGFydE9mTW9udGgsIHN0YXJ0T2ZXZWVrLCBzdWJEYXlzLCBzdWJNb250aHMsIHN1YldlZWtzIH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFNlYXJjaEZpbHRlclRhYmJlZENvbXBvbmVudCB9IGZyb20gJy4uL3NlYXJjaC1maWx0ZXItdGFiYmVkL3NlYXJjaC1maWx0ZXItdGFiYmVkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWFyY2hEYXRlUmFuZ2VDb21wb25lbnQgfSBmcm9tICcuL3NlYXJjaC1kYXRlLXJhbmdlL3NlYXJjaC1kYXRlLXJhbmdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWFyY2hGaWx0ZXJUYWJEaXJlY3RpdmUgfSBmcm9tICcuLi9zZWFyY2gtZmlsdGVyLXRhYmJlZC9zZWFyY2gtZmlsdGVyLXRhYi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5jb25zdCBERUZBVUxUX0RBVEVfRElTUExBWV9GT1JNQVQgPSAnZGQtTU1NLXl5JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhZGYtc2VhcmNoLWRhdGUtcmFuZ2UtdGFiYmVkJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFNlYXJjaEZpbHRlclRhYmJlZENvbXBvbmVudCwgU2VhcmNoRGF0ZVJhbmdlQ29tcG9uZW50LCBTZWFyY2hGaWx0ZXJUYWJEaXJlY3RpdmVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtZGF0ZS1yYW5nZS10YWJiZWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NlYXJjaC1kYXRlLXJhbmdlLXRhYmJlZC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoRGF0ZVJhbmdlVGFiYmVkQ29tcG9uZW50IGltcGxlbWVudHMgU2VhcmNoV2lkZ2V0LCBPbkluaXQge1xuICAgIGRpc3BsYXlWYWx1ZSQgPSBuZXcgUmVwbGF5U3ViamVjdDxzdHJpbmc+KDEpO1xuICAgIGlkOiBzdHJpbmc7XG4gICAgc3RhcnRWYWx1ZTogU2VhcmNoRGF0ZVJhbmdlID0ge1xuICAgICAgICBkYXRlUmFuZ2VUeXBlOiBEYXRlUmFuZ2VUeXBlLkFOWSxcbiAgICAgICAgaW5MYXN0VmFsdWVUeXBlOiBJbkxhc3REYXRlVHlwZS5EQVlTLFxuICAgICAgICBpbkxhc3RWYWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICBiZXR3ZWVuU3RhcnREYXRlOiB1bmRlZmluZWQsXG4gICAgICAgIGJldHdlZW5FbmREYXRlOiB1bmRlZmluZWRcbiAgICB9O1xuICAgIHByZXNlbGVjdGVkVmFsdWVzOiB7IFtrZXk6IHN0cmluZ106IFNlYXJjaERhdGVSYW5nZSB9ID0ge307XG4gICAgc2V0dGluZ3M/OiBTZWFyY2hXaWRnZXRTZXR0aW5ncztcbiAgICBjb250ZXh0PzogU2VhcmNoUXVlcnlCdWlsZGVyU2VydmljZTtcbiAgICBmaWVsZHM6IHN0cmluZ1tdO1xuICAgIHRhYnNWYWxpZGl0eTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcbiAgICBjb21iaW5lZFF1ZXJ5OiBzdHJpbmc7XG4gICAgY29tYmluZWREaXNwbGF5VmFsdWU6IHN0cmluZztcblxuICAgIHByaXZhdGUgdmFsdWU6IHsgW2tleTogc3RyaW5nXTogUGFydGlhbDxTZWFyY2hEYXRlUmFuZ2U+IH0gPSB7fTtcbiAgICBwcml2YXRlIHF1ZXJ5TWFwQnlGaWVsZDogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgcHJpdmF0ZSBkaXNwbGF5VmFsdWVNYXBCeUZpZWxkOiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRpb25TZXJ2aWNlKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmllbGRzID0gdGhpcy5zZXR0aW5ncz8uZmllbGQuc3BsaXQoJywnKS5tYXAoKGZpZWxkKSA9PiBmaWVsZC50cmltKCkpO1xuICAgICAgICB0aGlzLnNldERlZmF1bHREYXRlRm9ybWF0U2V0dGluZ3MoKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LnBvcHVsYXRlRmlsdGVyc1xuICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKGZpbHRlcnNRdWVyaWVzKSA9PiBmaWx0ZXJzUXVlcmllc1t0aGlzLmlkXSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGZpbHRlclF1ZXJ5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlclF1ZXJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGZpbHRlclF1ZXJ5KS5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUXVlcnlbZmllbGRdLmJldHdlZW5TdGFydERhdGUgPSBmaWx0ZXJRdWVyeVtmaWVsZF0uYmV0d2VlblN0YXJ0RGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJU08oZmlsdGVyUXVlcnlbZmllbGRdLmJldHdlZW5TdGFydERhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJRdWVyeVtmaWVsZF0uYmV0d2VlbkVuZERhdGUgPSBmaWx0ZXJRdWVyeVtmaWVsZF0uYmV0d2VlbkVuZERhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSVNPKGZpbHRlclF1ZXJ5W2ZpZWxkXS5iZXR3ZWVuRW5kRGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJlc2VsZWN0ZWRWYWx1ZXNbZmllbGRdID0gZmlsdGVyUXVlcnlbZmllbGRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkRhdGVSYW5nZWRWYWx1ZUNoYW5nZWQoZmlsdGVyUXVlcnlbZmllbGRdLCBmaWVsZCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN1Ym1pdFZhbHVlcyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldChmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5maWx0ZXJMb2FkZWQubmV4dCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuICAgIHByaXZhdGUgc2V0RGVmYXVsdERhdGVGb3JtYXRTZXR0aW5ncygpIHtcbiAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3MgJiYgIXRoaXMuc2V0dGluZ3MuZGF0ZUZvcm1hdCkge1xuICAgICAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXRlRm9ybWF0ID0gREVGQVVMVF9EQVRFX0RJU1BMQVlfRk9STUFUO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0Q3VycmVudFZhbHVlKCk6IHsgW2tleTogc3RyaW5nXTogUGFydGlhbDxTZWFyY2hEYXRlUmFuZ2U+IH0ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9XG5cbiAgICBoYXNWYWxpZFZhbHVlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLnRhYnNWYWxpZGl0eSkuZXZlcnkoKHZhbGlkKSA9PiB2YWxpZCk7XG4gICAgfVxuXG4gICAgcmVzZXQodXBkYXRlQ29udGV4dCA9IHRydWUpIHtcbiAgICAgICAgdGhpcy5jb21iaW5lZFF1ZXJ5ID0gJyc7XG4gICAgICAgIHRoaXMuY29tYmluZWREaXNwbGF5VmFsdWUgPSAnJztcbiAgICAgICAgdGhpcy5zdGFydFZhbHVlID0ge1xuICAgICAgICAgICAgLi4udGhpcy5zdGFydFZhbHVlXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbnRleHQuZmlsdGVyUmF3UGFyYW1zW2ZpZWxkXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY29udGV4dC5xdWVyeUZyYWdtZW50c1t0aGlzLmlkXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5jb250ZXh0LmZpbHRlclJhd1BhcmFtc1t0aGlzLmlkXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5zdWJtaXRWYWx1ZXModXBkYXRlQ29udGV4dCk7XG4gICAgfVxuXG4gICAgc2V0VmFsdWUodmFsdWU6IHsgW2tleTogc3RyaW5nXTogU2VhcmNoRGF0ZVJhbmdlIH0pIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldFRhYkxhYmVsKGZpZWxkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXR0aW5ncz8uZGlzcGxheWVkTGFiZWxzQnlGaWVsZD8uW2ZpZWxkXSA/IHRoaXMuc2V0dGluZ3MuZGlzcGxheWVkTGFiZWxzQnlGaWVsZFtmaWVsZF0gOiBmaWVsZDtcbiAgICB9XG5cbiAgICBzdWJtaXRWYWx1ZXModXBkYXRlQ29udGV4dCA9IHRydWUpIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LnF1ZXJ5RnJhZ21lbnRzW3RoaXMuaWRdID0gdGhpcy5jb21iaW5lZFF1ZXJ5O1xuICAgICAgICB0aGlzLmRpc3BsYXlWYWx1ZSQubmV4dCh0aGlzLmNvbWJpbmVkRGlzcGxheVZhbHVlKTtcbiAgICAgICAgaWYgKHRoaXMuaWQgJiYgdGhpcy5jb250ZXh0ICYmIHVwZGF0ZUNvbnRleHQpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC51cGRhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBvbkRhdGVSYW5nZWRWYWx1ZUNoYW5nZWQodmFsdWU6IFBhcnRpYWw8U2VhcmNoRGF0ZVJhbmdlPiwgZmllbGQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLmNvbnRleHQuZmlsdGVyUmF3UGFyYW1zW3RoaXMuaWRdIHx8PSB7fTtcbiAgICAgICAgdGhpcy5jb250ZXh0LmZpbHRlclJhd1BhcmFtc1t0aGlzLmlkXVtmaWVsZF0gPSB2YWx1ZTtcbiAgICAgICAgdGhpcy52YWx1ZVtmaWVsZF0gPSB2YWx1ZTtcbiAgICAgICAgdGhpcy51cGRhdGVRdWVyeSh2YWx1ZSwgZmllbGQpO1xuICAgICAgICB0aGlzLnVwZGF0ZURpc3BsYXlWYWx1ZSh2YWx1ZSwgZmllbGQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2VuZXJhdGVRdWVyeSh2YWx1ZTogUGFydGlhbDxTZWFyY2hEYXRlUmFuZ2U+LCBmaWVsZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHF1ZXJ5ID0gJyc7XG4gICAgICAgIGxldCBzdGFydERhdGU6IERhdGU7XG4gICAgICAgIGxldCBlbmREYXRlOiBEYXRlO1xuICAgICAgICBpZiAodmFsdWUuZGF0ZVJhbmdlVHlwZSA9PT0gRGF0ZVJhbmdlVHlwZS5JTl9MQVNUKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUuaW5MYXN0VmFsdWUpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHZhbHVlLmluTGFzdFZhbHVlVHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIEluTGFzdERhdGVUeXBlLkRBWVM6XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydERhdGUgPSBzdGFydE9mRGF5KHN1YkRheXMobmV3IERhdGUoKSwgcGFyc2VJbnQodmFsdWUuaW5MYXN0VmFsdWUsIDEwKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgSW5MYXN0RGF0ZVR5cGUuV0VFS1M6XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydERhdGUgPSBzdGFydE9mV2VlayhzdWJXZWVrcyhuZXcgRGF0ZSgpLCBwYXJzZUludCh2YWx1ZS5pbkxhc3RWYWx1ZSwgMTApKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBJbkxhc3REYXRlVHlwZS5NT05USFM6XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydERhdGUgPSBzdGFydE9mTW9udGgoc3ViTW9udGhzKG5ldyBEYXRlKCksIHBhcnNlSW50KHZhbHVlLmluTGFzdFZhbHVlLCAxMCkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZW5kRGF0ZSA9IGVuZE9mVG9kYXkoKTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5kYXRlUmFuZ2VUeXBlID09PSBEYXRlUmFuZ2VUeXBlLkJFVFdFRU4pIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5iZXR3ZWVuU3RhcnREYXRlICYmIHZhbHVlLmJldHdlZW5FbmREYXRlKSB7XG4gICAgICAgICAgICAgICAgc3RhcnREYXRlID0gc3RhcnRPZkRheSh2YWx1ZS5iZXR3ZWVuU3RhcnREYXRlKTtcbiAgICAgICAgICAgICAgICBlbmREYXRlID0gZW5kT2ZEYXkodmFsdWUuYmV0d2VlbkVuZERhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzdGFydERhdGUgJiYgZW5kRGF0ZSkge1xuICAgICAgICAgICAgcXVlcnkgPSBgJHtmaWVsZH06Wycke2Zvcm1hdElTTyhzdGFydERhdGUpfScgVE8gJyR7Zm9ybWF0SVNPKGVuZERhdGUpfSddYDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcXVlcnk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZURpc3BsYXlWYWx1ZSh2YWx1ZTogUGFydGlhbDxTZWFyY2hEYXRlUmFuZ2U+KTogc3RyaW5nIHtcbiAgICAgICAgbGV0IGRpc3BsYXlWYWx1ZSA9ICcnO1xuICAgICAgICBpZiAodmFsdWUuZGF0ZVJhbmdlVHlwZSA9PT0gRGF0ZVJhbmdlVHlwZS5JTl9MQVNUICYmIHZhbHVlLmluTGFzdFZhbHVlKSB7XG4gICAgICAgICAgICBkaXNwbGF5VmFsdWUgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChgU0VBUkNILkRBVEVfUkFOR0VfQURWQU5DRUQuSU5fTEFTVF9ESVNQTEFZX0xBQkVMUy4ke3ZhbHVlLmluTGFzdFZhbHVlVHlwZX1gLCB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLmluTGFzdFZhbHVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5kYXRlUmFuZ2VUeXBlID09PSBEYXRlUmFuZ2VUeXBlLkJFVFdFRU4gJiYgdmFsdWUuYmV0d2VlblN0YXJ0RGF0ZSAmJiB2YWx1ZS5iZXR3ZWVuRW5kRGF0ZSkge1xuICAgICAgICAgICAgZGlzcGxheVZhbHVlID0gYCR7Zm9ybWF0KHN0YXJ0T2ZEYXkodmFsdWUuYmV0d2VlblN0YXJ0RGF0ZSksIHRoaXMuc2V0dGluZ3MuZGF0ZUZvcm1hdCl9IC0gJHtmb3JtYXQoXG4gICAgICAgICAgICAgICAgZW5kT2ZEYXkodmFsdWUuYmV0d2VlbkVuZERhdGUpLFxuICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MuZGF0ZUZvcm1hdFxuICAgICAgICAgICAgKX1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkaXNwbGF5VmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVRdWVyeSh2YWx1ZTogUGFydGlhbDxTZWFyY2hEYXRlUmFuZ2U+LCBmaWVsZDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuY29tYmluZWRRdWVyeSA9ICcnO1xuICAgICAgICB0aGlzLnF1ZXJ5TWFwQnlGaWVsZC5zZXQoZmllbGQsIHRoaXMuZ2VuZXJhdGVRdWVyeSh2YWx1ZSwgZmllbGQpKTtcbiAgICAgICAgdGhpcy5xdWVyeU1hcEJ5RmllbGQuZm9yRWFjaCgocXVlcnk6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgaWYgKHF1ZXJ5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21iaW5lZFF1ZXJ5ID0gdGhpcy5jb21iaW5lZFF1ZXJ5ID8gYCR7dGhpcy5jb21iaW5lZFF1ZXJ5fSBBTkQgJHtxdWVyeX1gIDogYCR7cXVlcnl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVEaXNwbGF5VmFsdWUodmFsdWU6IFBhcnRpYWw8U2VhcmNoRGF0ZVJhbmdlPiwgZmllbGQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLmNvbWJpbmVkRGlzcGxheVZhbHVlID0gJyc7XG4gICAgICAgIHRoaXMuZGlzcGxheVZhbHVlTWFwQnlGaWVsZC5zZXQoZmllbGQsIHRoaXMuZ2VuZXJhdGVEaXNwbGF5VmFsdWUodmFsdWUpKTtcbiAgICAgICAgdGhpcy5kaXNwbGF5VmFsdWVNYXBCeUZpZWxkLmZvckVhY2goKGRpc3BsYXlWYWx1ZTogc3RyaW5nLCBmaWVsZEZvckRpc3BsYXlMYWJlbDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBpZiAoZGlzcGxheVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlzcGxheUxhYmVsRm9yRmllbGQgPSBgJHt0aGlzLnRyYW5zbGF0ZVNlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgLmluc3RhbnQodGhpcy5nZXREaXNwbGF5TGFiZWxGb3JGaWVsZChmaWVsZEZvckRpc3BsYXlMYWJlbCkpXG4gICAgICAgICAgICAgICAgICAgIC50b1VwcGVyQ2FzZSgpfTogJHtkaXNwbGF5VmFsdWV9YDtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbWJpbmVkRGlzcGxheVZhbHVlID0gdGhpcy5jb21iaW5lZERpc3BsYXlWYWx1ZVxuICAgICAgICAgICAgICAgICAgICA/IGAke3RoaXMuY29tYmluZWREaXNwbGF5VmFsdWV9ICR7ZGlzcGxheUxhYmVsRm9yRmllbGR9YFxuICAgICAgICAgICAgICAgICAgICA6IGAke2Rpc3BsYXlMYWJlbEZvckZpZWxkfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RGlzcGxheUxhYmVsRm9yRmllbGQoZmllbGRGb3JEaXNwbGF5TGFiZWw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldHRpbmdzPy5kaXNwbGF5ZWRMYWJlbHNCeUZpZWxkPy5bZmllbGRGb3JEaXNwbGF5TGFiZWxdXG4gICAgICAgICAgICA/IHRoaXMuc2V0dGluZ3MuZGlzcGxheWVkTGFiZWxzQnlGaWVsZFtmaWVsZEZvckRpc3BsYXlMYWJlbF1cbiAgICAgICAgICAgIDogZmllbGRGb3JEaXNwbGF5TGFiZWw7XG4gICAgfVxufVxuIiwiPGFkZi1zZWFyY2gtZmlsdGVyLXRhYmJlZD5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBmaWVsZHNcIj5cbiAgICAgICAgPGFkZi1zZWFyY2gtZGF0ZS1yYW5nZVxuICAgICAgICAgICAgKmFkZi1zZWFyY2gtZmlsdGVyLXRhYj1cImdldFRhYkxhYmVsKGZpZWxkKVwiXG4gICAgICAgICAgICBbZGF0ZUZvcm1hdF09XCJzZXR0aW5ncy5kYXRlRm9ybWF0XCJcbiAgICAgICAgICAgIFttYXhEYXRlXT1cInNldHRpbmdzLm1heERhdGVcIlxuICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcbiAgICAgICAgICAgIFtpbml0aWFsVmFsdWVdPVwicHJlc2VsZWN0ZWRWYWx1ZXNbZmllbGRdXCJcbiAgICAgICAgICAgIChjaGFuZ2VkKT1cIm9uRGF0ZVJhbmdlZFZhbHVlQ2hhbmdlZCgkZXZlbnQsIGZpZWxkKVwiXG4gICAgICAgICAgICAodmFsaWQpPVwidGFic1ZhbGlkaXR5W2ZpZWxkXT0kZXZlbnRcIiAvPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9hZGYtc2VhcmNoLWZpbHRlci10YWJiZWQ+XG4iXX0=
@@ -0,0 +1,18 @@
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
+ export * from './search-datetime-range.component';
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL3NlYXJjaC9jb21wb25lbnRzL3NlYXJjaC1kYXRldGltZS1yYW5nZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxjQUFjLG1DQUFtQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3NlYXJjaC1kYXRldGltZS1yYW5nZS5jb21wb25lbnQnO1xuIl19