geonetwork-ui 2.2.0-dev.3ee8e2c9 → 2.2.0-dev.40043f45

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 (379) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/gn4/atomic-operations.mjs +27 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +64 -61
  3. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.mjs +7 -4
  4. package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
  5. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.mjs +14 -0
  6. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/converter.mjs +25 -17
  7. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +55 -23
  8. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +52 -32
  9. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +2 -2
  10. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.mjs +10 -3
  11. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.mjs +14 -5
  12. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +33 -8
  13. package/esm2022/libs/api/repository/src/lib/gn4/selection/selection.service.mjs +13 -26
  14. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  15. package/esm2022/libs/common/domain/src/lib/model/search/aggregation.model.mjs +1 -1
  16. package/esm2022/libs/common/domain/src/lib/model/search/field.model.mjs +2 -0
  17. package/esm2022/libs/common/domain/src/lib/model/search/filter.model.mjs +1 -1
  18. package/esm2022/libs/common/domain/src/lib/model/search/index.mjs +2 -1
  19. package/esm2022/libs/common/domain/src/lib/model/search/search.model.mjs +1 -1
  20. package/esm2022/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.mjs +1 -1
  21. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  22. package/esm2022/libs/feature/catalog/src/lib/my-org/my-org.service.mjs +4 -10
  23. package/esm2022/libs/feature/editor/src/index.mjs +6 -1
  24. package/esm2022/libs/feature/editor/src/lib/+state/editor.actions.mjs +8 -0
  25. package/esm2022/libs/feature/editor/src/lib/+state/editor.effects.mjs +26 -0
  26. package/esm2022/libs/feature/editor/src/lib/+state/editor.facade.mjs +30 -0
  27. package/esm2022/libs/feature/editor/src/lib/+state/editor.models.mjs +2 -0
  28. package/esm2022/libs/feature/editor/src/lib/+state/editor.reducer.mjs +42 -0
  29. package/esm2022/libs/feature/editor/src/lib/+state/editor.selectors.mjs +13 -0
  30. package/esm2022/libs/feature/editor/src/lib/expressions.mjs +13 -0
  31. package/esm2022/libs/feature/editor/src/lib/feature-editor.module.mjs +16 -4
  32. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +34 -0
  33. package/esm2022/libs/feature/editor/src/lib/models/fields.model.mjs +2 -0
  34. package/esm2022/libs/feature/editor/src/lib/record-form/record-form.component.mjs +15 -11
  35. package/esm2022/libs/feature/editor/src/lib/services/editor.service.mjs +22 -44
  36. package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +10 -1
  37. package/esm2022/libs/feature/map/src/lib/geocoding/geocoding.component.mjs +32 -15
  38. package/esm2022/libs/feature/map/src/lib/geocoding.service.mjs +40 -0
  39. package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +9 -1
  40. package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +13 -13
  41. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +2 -2
  42. package/esm2022/libs/feature/router/src/lib/default/index.mjs +2 -1
  43. package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +1 -1
  44. package/esm2022/libs/feature/search/src/index.mjs +4 -1
  45. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +3 -3
  46. package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +2 -6
  47. package/esm2022/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.mjs +1 -1
  48. package/esm2022/libs/feature/search/src/lib/filter-geometry.token.mjs +4 -0
  49. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +7 -3
  50. package/esm2022/libs/feature/search/src/lib/record-url.token.mjs +4 -0
  51. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +2 -2
  52. package/esm2022/libs/feature/search/src/lib/results-table/results-table.component.mjs +128 -0
  53. package/esm2022/libs/feature/search/src/lib/state/effects.mjs +6 -4
  54. package/esm2022/libs/feature/search/src/lib/state/search.facade.mjs +3 -2
  55. package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +41 -26
  56. package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +11 -9
  57. package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +3 -3
  58. package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +3 -3
  59. package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +3 -3
  60. package/esm2022/libs/ui/elements/src/lib/max-lines/max-lines.component.mjs +5 -3
  61. package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +3 -3
  62. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +47 -22
  63. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +3 -4
  64. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +9 -6
  65. package/esm2022/libs/ui/elements/src/lib/thumbnail/thumbnail.component.mjs +3 -3
  66. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +4 -4
  67. package/esm2022/libs/ui/inputs/src/index.mjs +2 -1
  68. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +3 -3
  69. package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +9 -9
  70. package/esm2022/libs/ui/inputs/src/lib/checkbox/checkbox.component.mjs +3 -3
  71. package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +3 -3
  72. package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +3 -3
  73. package/esm2022/libs/ui/inputs/src/lib/editable-label/editable-label.directive.mjs +3 -2
  74. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field.component.mjs +4 -2
  75. package/esm2022/libs/ui/inputs/src/lib/form-field/form-field.model.mjs +1 -1
  76. package/esm2022/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.mjs +3 -3
  77. package/esm2022/libs/ui/inputs/src/lib/text-area/text-area.component.mjs +3 -3
  78. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +9 -9
  79. package/esm2022/libs/ui/layout/src/index.mjs +3 -1
  80. package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +3 -3
  81. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.mjs +36 -0
  82. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +37 -0
  83. package/esm2022/libs/ui/search/src/index.mjs +1 -2
  84. package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +9 -10
  85. package/esm2022/libs/ui/widgets/src/lib/badge/badge.component.mjs +3 -3
  86. package/esm2022/libs/util/i18n/src/index.mjs +1 -2
  87. package/esm2022/libs/util/i18n/src/lib/i18n.constants.mjs +18 -1
  88. package/esm2022/libs/util/shared/src/lib/utils/index.mjs +2 -1
  89. package/esm2022/libs/util/shared/src/lib/utils/temporal-extent-union.mjs +32 -0
  90. package/esm2022/translations/de.json +37 -26
  91. package/esm2022/translations/en.json +37 -26
  92. package/esm2022/translations/es.json +31 -20
  93. package/esm2022/translations/fr.json +51 -40
  94. package/esm2022/translations/it.json +44 -33
  95. package/esm2022/translations/nl.json +32 -21
  96. package/esm2022/translations/pt.json +31 -20
  97. package/fesm2022/geonetwork-ui.mjs +1290 -881
  98. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  99. package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts +2 -0
  100. package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts.map +1 -1
  101. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts +0 -1
  102. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  103. package/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.d.ts.map +1 -1
  104. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +4 -5
  105. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
  106. package/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.d.ts +3 -0
  107. package/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.d.ts.map +1 -0
  108. package/libs/api/metadata-converter/src/lib/iso19139/converter.d.ts.map +1 -1
  109. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +7 -6
  110. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  111. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +4 -3
  112. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  113. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  114. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts.map +1 -1
  115. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts +1 -1
  116. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts.map +1 -1
  117. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +9 -2
  118. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  119. package/libs/api/repository/src/lib/gn4/selection/selection.service.d.ts +4 -5
  120. package/libs/api/repository/src/lib/gn4/selection/selection.service.d.ts.map +1 -1
  121. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +21 -12
  122. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  123. package/libs/common/domain/src/lib/model/search/aggregation.model.d.ts +1 -1
  124. package/libs/common/domain/src/lib/model/search/aggregation.model.d.ts.map +1 -1
  125. package/libs/common/domain/src/lib/model/search/field.model.d.ts +2 -0
  126. package/libs/common/domain/src/lib/model/search/field.model.d.ts.map +1 -0
  127. package/libs/common/domain/src/lib/model/search/filter.model.d.ts +1 -1
  128. package/libs/common/domain/src/lib/model/search/filter.model.d.ts.map +1 -1
  129. package/libs/common/domain/src/lib/model/search/index.d.ts +1 -0
  130. package/libs/common/domain/src/lib/model/search/index.d.ts.map +1 -1
  131. package/libs/common/domain/src/lib/model/search/search.model.d.ts +2 -3
  132. package/libs/common/domain/src/lib/model/search/search.model.d.ts.map +1 -1
  133. package/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.d.ts +1 -0
  134. package/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.d.ts.map +1 -1
  135. package/libs/common/domain/src/lib/platform.service.interface.d.ts +1 -1
  136. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  137. package/libs/feature/catalog/src/lib/my-org/my-org.service.d.ts +0 -1
  138. package/libs/feature/catalog/src/lib/my-org/my-org.service.d.ts.map +1 -1
  139. package/libs/feature/editor/src/index.d.ts +5 -0
  140. package/libs/feature/editor/src/index.d.ts.map +1 -1
  141. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts +23 -0
  142. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts.map +1 -0
  143. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts +15 -0
  144. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts.map +1 -0
  145. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts +19 -0
  146. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts.map +1 -0
  147. package/libs/feature/editor/src/lib/+state/editor.models.d.ts +2 -0
  148. package/libs/feature/editor/src/lib/+state/editor.models.d.ts.map +1 -0
  149. package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts +18 -0
  150. package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts.map +1 -0
  151. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts +15 -0
  152. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts.map +1 -0
  153. package/libs/feature/editor/src/lib/expressions.d.ts +4 -0
  154. package/libs/feature/editor/src/lib/expressions.d.ts.map +1 -0
  155. package/libs/feature/editor/src/lib/feature-editor.module.d.ts +3 -1
  156. package/libs/feature/editor/src/lib/feature-editor.module.d.ts.map +1 -1
  157. package/libs/feature/editor/src/lib/fields.config.d.ts +3 -0
  158. package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -0
  159. package/libs/feature/editor/src/lib/models/fields.model.d.ts +15 -0
  160. package/libs/feature/editor/src/lib/models/fields.model.d.ts.map +1 -0
  161. package/libs/feature/editor/src/lib/record-form/record-form.component.d.ts +10 -5
  162. package/libs/feature/editor/src/lib/record-form/record-form.component.d.ts.map +1 -1
  163. package/libs/feature/editor/src/lib/services/editor.service.d.ts +3 -13
  164. package/libs/feature/editor/src/lib/services/editor.service.d.ts.map +1 -1
  165. package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
  166. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts +6 -1
  167. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts.map +1 -1
  168. package/libs/feature/map/src/lib/geocoding.service.d.ts +18 -0
  169. package/libs/feature/map/src/lib/geocoding.service.d.ts.map +1 -0
  170. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts +1 -0
  171. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
  172. package/libs/feature/router/src/lib/default/index.d.ts +1 -0
  173. package/libs/feature/router/src/lib/default/index.d.ts.map +1 -1
  174. package/libs/feature/router/src/lib/default/router.service.d.ts +1 -1
  175. package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
  176. package/libs/feature/search/src/index.d.ts +3 -0
  177. package/libs/feature/search/src/index.d.ts.map +1 -1
  178. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts +3 -3
  179. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
  180. package/libs/feature/search/src/lib/feature-search.module.d.ts +0 -4
  181. package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
  182. package/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.d.ts +3 -2
  183. package/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.d.ts.map +1 -1
  184. package/libs/feature/search/src/lib/filter-geometry.token.d.ts +4 -0
  185. package/libs/feature/search/src/lib/filter-geometry.token.d.ts.map +1 -0
  186. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +1 -1
  187. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
  188. package/libs/feature/search/src/lib/record-url.token.d.ts +3 -0
  189. package/libs/feature/search/src/lib/record-url.token.d.ts.map +1 -0
  190. package/libs/feature/search/src/lib/results-table/results-table.component.d.ts +33 -0
  191. package/libs/feature/search/src/lib/results-table/results-table.component.d.ts.map +1 -0
  192. package/libs/feature/search/src/lib/state/effects.d.ts.map +1 -1
  193. package/libs/feature/search/src/lib/state/search.facade.d.ts +1 -1
  194. package/libs/feature/search/src/lib/state/search.facade.d.ts.map +1 -1
  195. package/libs/feature/search/src/lib/utils/service/fields.d.ts +21 -8
  196. package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
  197. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
  198. package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts +1 -1
  199. package/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.d.ts +1 -1
  200. package/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.d.ts.map +1 -1
  201. package/libs/ui/elements/src/lib/max-lines/max-lines.component.d.ts.map +1 -1
  202. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +16 -6
  203. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  204. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
  205. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +3 -1
  206. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  207. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +13 -13
  208. package/libs/ui/inputs/src/index.d.ts +1 -0
  209. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  210. package/libs/ui/inputs/src/lib/button/button.component.d.ts +1 -1
  211. package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
  212. package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts +1 -1
  213. package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts.map +1 -1
  214. package/libs/ui/inputs/src/lib/form-field/form-field.component.d.ts.map +1 -1
  215. package/libs/ui/inputs/src/lib/form-field/form-field.model.d.ts +0 -1
  216. package/libs/ui/inputs/src/lib/form-field/form-field.model.d.ts.map +1 -1
  217. package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts +1 -1
  218. package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts.map +1 -1
  219. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +40 -40
  220. package/libs/ui/layout/src/index.d.ts +2 -0
  221. package/libs/ui/layout/src/index.d.ts.map +1 -1
  222. package/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts +14 -0
  223. package/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts.map +1 -0
  224. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +15 -0
  225. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -0
  226. package/libs/ui/search/src/index.d.ts +0 -1
  227. package/libs/ui/search/src/index.d.ts.map +1 -1
  228. package/libs/ui/search/src/lib/ui-search.module.d.ts +15 -15
  229. package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
  230. package/libs/util/i18n/src/index.d.ts +0 -1
  231. package/libs/util/i18n/src/index.d.ts.map +1 -1
  232. package/libs/util/i18n/src/lib/i18n.constants.d.ts +17 -0
  233. package/libs/util/i18n/src/lib/i18n.constants.d.ts.map +1 -1
  234. package/libs/util/shared/src/lib/utils/index.d.ts +1 -0
  235. package/libs/util/shared/src/lib/utils/index.d.ts.map +1 -1
  236. package/libs/util/shared/src/lib/utils/temporal-extent-union.d.ts +5 -0
  237. package/libs/util/shared/src/lib/utils/temporal-extent-union.d.ts.map +1 -0
  238. package/package.json +2 -2
  239. package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +63 -8
  240. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +57 -9
  241. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +229 -24
  242. package/src/libs/api/metadata-converter/src/lib/gn4/atomic-operations.ts +29 -0
  243. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +99 -76
  244. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.ts +6 -3
  245. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +4 -5
  246. package/src/libs/api/metadata-converter/src/lib/iso19139/codelists/keyword.mapper.ts +16 -0
  247. package/src/libs/api/metadata-converter/src/lib/iso19139/converter.ts +30 -21
  248. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +120 -63
  249. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +177 -97
  250. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +1 -1
  251. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.ts +22 -2
  252. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.ts +15 -4
  253. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +47 -8
  254. package/src/libs/api/repository/src/lib/gn4/selection/selection.service.ts +14 -38
  255. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +25 -14
  256. package/src/libs/common/domain/src/lib/model/search/aggregation.model.ts +1 -1
  257. package/src/libs/common/domain/src/lib/model/search/field.model.ts +1 -0
  258. package/src/libs/common/domain/src/lib/model/search/filter.model.ts +1 -1
  259. package/src/libs/common/domain/src/lib/model/search/index.ts +1 -0
  260. package/src/libs/common/domain/src/lib/model/search/search.model.ts +2 -2
  261. package/src/libs/common/domain/src/lib/model/thesaurus/thesaurus.model.ts +1 -0
  262. package/src/libs/common/domain/src/lib/model/user/index.ts +1 -0
  263. package/src/libs/common/domain/src/lib/platform.service.interface.ts +1 -4
  264. package/src/libs/common/fixtures/src/lib/elasticsearch/full-response.ts +1 -1
  265. package/src/libs/common/fixtures/src/lib/gn4/groups.fixtures.ts +1 -1
  266. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +52 -10
  267. package/src/libs/feature/catalog/src/lib/my-org/my-org.service.ts +4 -16
  268. package/src/libs/feature/editor/src/index.ts +5 -0
  269. package/src/libs/feature/editor/src/lib/+state/editor.actions.ts +24 -0
  270. package/src/libs/feature/editor/src/lib/+state/editor.effects.ts +49 -0
  271. package/src/libs/feature/editor/src/lib/+state/editor.facade.ts +30 -0
  272. package/src/libs/feature/editor/src/lib/+state/editor.models.ts +1 -0
  273. package/src/libs/feature/editor/src/lib/+state/editor.reducer.ts +68 -0
  274. package/src/libs/feature/editor/src/lib/+state/editor.selectors.ts +39 -0
  275. package/src/libs/feature/editor/src/lib/expressions.ts +16 -0
  276. package/src/libs/feature/editor/src/lib/feature-editor.module.ts +11 -0
  277. package/src/libs/feature/editor/src/lib/fields.config.ts +35 -0
  278. package/src/libs/feature/editor/src/lib/models/fields.model.ts +29 -0
  279. package/src/libs/feature/editor/src/lib/record-form/record-form.component.html +9 -7
  280. package/src/libs/feature/editor/src/lib/record-form/record-form.component.ts +11 -5
  281. package/src/libs/feature/editor/src/lib/services/editor.service.ts +34 -73
  282. package/src/libs/feature/map/src/lib/feature-map.module.ts +5 -0
  283. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.ts +27 -11
  284. package/src/libs/feature/map/src/lib/geocoding.service.ts +59 -0
  285. package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +10 -0
  286. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +12 -12
  287. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +1 -1
  288. package/src/libs/feature/router/src/lib/default/index.ts +1 -0
  289. package/src/libs/feature/router/src/lib/default/router.service.ts +1 -1
  290. package/src/libs/feature/search/src/index.ts +3 -0
  291. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +5 -4
  292. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +1 -1
  293. package/src/libs/feature/search/src/lib/feature-search.module.ts +1 -10
  294. package/src/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.ts +4 -4
  295. package/src/libs/feature/search/src/lib/filter-geometry.token.ts +7 -0
  296. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +9 -3
  297. package/src/libs/feature/search/src/lib/record-url.token.ts +4 -0
  298. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +1 -1
  299. package/src/libs/feature/search/src/lib/results-table/results-table.component.css +0 -0
  300. package/src/libs/feature/search/src/lib/results-table/results-table.component.html +112 -0
  301. package/src/libs/feature/search/src/lib/results-table/results-table.component.ts +164 -0
  302. package/src/libs/feature/search/src/lib/state/effects.ts +5 -4
  303. package/src/libs/feature/search/src/lib/state/search.facade.ts +2 -1
  304. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +21 -16
  305. package/src/libs/feature/search/src/lib/utils/service/fields.ts +43 -34
  306. package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.html +1 -1
  307. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +3 -2
  308. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.css +5 -0
  309. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.html +39 -0
  310. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.ts +58 -0
  311. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.css +2 -2
  312. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.ts +1 -0
  313. package/src/libs/ui/elements/src/lib/max-lines/max-lines.component.html +5 -1
  314. package/src/libs/ui/elements/src/lib/max-lines/max-lines.component.ts +1 -0
  315. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +2 -2
  316. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +169 -52
  317. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +51 -15
  318. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +2 -3
  319. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.html +5 -5
  320. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +12 -4
  321. package/src/libs/ui/elements/src/lib/thumbnail/thumbnail.component.html +2 -2
  322. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +1 -1
  323. package/src/libs/ui/inputs/src/index.ts +1 -0
  324. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +1 -1
  325. package/src/libs/ui/inputs/src/lib/button/button.component.css +0 -5
  326. package/src/libs/ui/inputs/src/lib/button/button.component.html +0 -1
  327. package/src/libs/ui/inputs/src/lib/button/button.component.ts +7 -6
  328. package/src/libs/ui/inputs/src/lib/checkbox/checkbox.component.html +0 -1
  329. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.html +2 -2
  330. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.html +3 -1
  331. package/src/libs/ui/inputs/src/lib/editable-label/editable-label.directive.ts +1 -0
  332. package/src/libs/ui/inputs/src/lib/form-field/form-field.component.ts +3 -1
  333. package/src/libs/ui/inputs/src/lib/form-field/form-field.model.ts +0 -1
  334. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.css +3 -0
  335. package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.html +1 -1
  336. package/src/libs/ui/inputs/src/lib/text-area/text-area.component.ts +1 -0
  337. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +3 -3
  338. package/src/libs/ui/layout/src/index.ts +2 -0
  339. package/src/libs/ui/layout/src/lib/carousel/carousel.component.html +1 -0
  340. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.css +0 -0
  341. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.html +1 -0
  342. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.ts +33 -0
  343. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.css +15 -0
  344. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +54 -0
  345. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +42 -0
  346. package/src/libs/ui/search/src/index.ts +0 -1
  347. package/src/libs/ui/search/src/lib/ui-search.module.ts +2 -3
  348. package/src/libs/ui/widgets/src/lib/badge/badge.component.html +3 -1
  349. package/src/libs/util/i18n/src/index.ts +0 -1
  350. package/src/libs/util/i18n/src/lib/i18n.constants.ts +18 -0
  351. package/src/libs/util/shared/src/lib/utils/index.ts +1 -0
  352. package/src/libs/util/shared/src/lib/utils/temporal-extent-union.ts +32 -0
  353. package/tailwind.base.css +44 -15
  354. package/translations/de.json +37 -26
  355. package/translations/en.json +37 -26
  356. package/translations/es.json +31 -20
  357. package/translations/fr.json +51 -40
  358. package/translations/it.json +44 -33
  359. package/translations/nl.json +32 -21
  360. package/translations/pt.json +31 -20
  361. package/translations/sk.json +119 -108
  362. package/esm2022/libs/ui/search/src/lib/record-table/record-table.component.mjs +0 -145
  363. package/esm2022/libs/util/i18n/src/lib/testing/test.translate.loader.mjs +0 -24
  364. package/esm2022/libs/util/i18n/src/lib/testing/test.translate.module.mjs +0 -109
  365. package/esm2022/libs/util/i18n/src/lib/testing/translations.model.mjs +0 -6
  366. package/libs/ui/search/src/lib/record-table/record-table.component.d.ts +0 -31
  367. package/libs/ui/search/src/lib/record-table/record-table.component.d.ts.map +0 -1
  368. package/libs/util/i18n/src/lib/testing/test.translate.loader.d.ts +0 -17
  369. package/libs/util/i18n/src/lib/testing/test.translate.loader.d.ts.map +0 -1
  370. package/libs/util/i18n/src/lib/testing/test.translate.module.d.ts +0 -131
  371. package/libs/util/i18n/src/lib/testing/test.translate.module.d.ts.map +0 -1
  372. package/libs/util/i18n/src/lib/testing/translations.model.d.ts +0 -21
  373. package/libs/util/i18n/src/lib/testing/translations.model.d.ts.map +0 -1
  374. package/src/libs/ui/search/src/lib/record-table/record-table.component.css +0 -7
  375. package/src/libs/ui/search/src/lib/record-table/record-table.component.html +0 -215
  376. package/src/libs/ui/search/src/lib/record-table/record-table.component.ts +0 -149
  377. package/src/libs/util/i18n/src/lib/testing/test.translate.loader.ts +0 -26
  378. package/src/libs/util/i18n/src/lib/testing/test.translate.module.ts +0 -235
  379. package/src/libs/util/i18n/src/lib/testing/translations.model.ts +0 -28
@@ -1,109 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { FakeMissingTranslationHandler, TranslateDefaultParser, TranslateFakeCompiler, TranslateModule, TranslateService, } from '@ngx-translate/core';
3
- import { TestTranslateLoader } from './test.translate.loader';
4
- import * as i0 from "@angular/core";
5
- // IMPORTANT:
6
- // This was copy-pasted from https://github.com/mwootendev/ngx-translate-plugins/blob/7c6c73c7d16c9519a7bafff939d29fd8ea5e574a/projects/testing/src/lib/testing.module.ts
7
- // because the original package was expecting rxjs 7+ as a peer dep and that was conflicting with many other dependencies
8
- // FIXME: when rxjs 7 can be used in the project, remove this and do `npm install ngx-translate-testing --save-dev`
9
- /**
10
- * The TranslateTestingModule provides the {TranslateModule} as well as a
11
- * {TranslateService} configured to return translations specific for the
12
- * test environment.
13
- *
14
- * @export
15
- */
16
- export class TranslateTestingModule {
17
- constructor() {
18
- this._translations = {};
19
- }
20
- static withTranslations(languageOrTranslations, translations) {
21
- const translateTestingModule = new TranslateTestingModule();
22
- if (typeof languageOrTranslations === 'string') {
23
- return translateTestingModule.withTranslations(languageOrTranslations, translations);
24
- }
25
- return translateTestingModule.withTranslations(languageOrTranslations);
26
- }
27
- get ngModule() {
28
- return TranslateTestingModule;
29
- }
30
- get providers() {
31
- const translateService = new TranslateService(null, new TestTranslateLoader(this._translations), this._compiler || new TranslateFakeCompiler(), new TranslateDefaultParser(), new FakeMissingTranslationHandler(), true, true, false, this._defaultLanguage);
32
- return [
33
- {
34
- provide: TranslateService,
35
- useValue: translateService,
36
- },
37
- ];
38
- }
39
- withTranslations(languageOrTranslations, translations) {
40
- if (typeof languageOrTranslations === 'string' && translations) {
41
- this.addTranslations(languageOrTranslations, translations);
42
- this._defaultLanguage = languageOrTranslations;
43
- }
44
- else if (languageOrTranslations) {
45
- Object.keys(languageOrTranslations).forEach((language) => this.addTranslations(language, languageOrTranslations[language]));
46
- }
47
- return this;
48
- }
49
- /**
50
- * Updates the {TranslationTestingModule} to provide a {TranslateService} that will
51
- * use the provided {TranslateCompiler} to translate the test translations.
52
- *
53
- * @example
54
- *
55
- * TranslateTestingModule.withTranslations('en', {people: '{gender, select, male{He is} female{She is} other{They are}} {how})'})
56
- * .withCompiler(new TranslateMessageFormatCompiler());
57
- *
58
- * @param compiler the compiler to use to compile the test translations.
59
- * @returns the instance that can be used to chain additional configuration.
60
- * @memberof TranslateTestingModule
61
- */
62
- withCompiler(compiler) {
63
- this._compiler = compiler;
64
- return this;
65
- }
66
- /**
67
- * Updates the {TranslateTestingModule} to use the provided language as the default language.
68
- * By default, the default language will be set to the first language provided.
69
- *
70
- * @example
71
- *
72
- * TranslateTestingModule.withTranslations('es', SPANISH_TRANSLATIONS)
73
- * .withTranslations('en', ENGLISH_TRANSLATIONS)
74
- * .withDefaultLanguage('en');
75
- *
76
- * @param language the new default language for translations.
77
- * @returns the instance that can be used to chain additional configuration.
78
- * @memberof TranslateTestingModule
79
- */
80
- withDefaultLanguage(language) {
81
- this._defaultLanguage = language || this._defaultLanguage;
82
- return this;
83
- }
84
- addTranslations(language, translations) {
85
- if (!this._defaultLanguage) {
86
- this._defaultLanguage = language;
87
- }
88
- if (this._translations[language]) {
89
- this._translations[language] = {
90
- ...this._translations[language],
91
- ...translations,
92
- };
93
- }
94
- else {
95
- this._translations[language] = translations;
96
- }
97
- }
98
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TranslateTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
99
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: TranslateTestingModule, imports: [TranslateModule], exports: [TranslateModule] }); }
100
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TranslateTestingModule, imports: [TranslateModule, TranslateModule] }); }
101
- }
102
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TranslateTestingModule, decorators: [{
103
- type: NgModule,
104
- args: [{
105
- imports: [TranslateModule],
106
- exports: [TranslateModule],
107
- }]
108
- }] });
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC50cmFuc2xhdGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL2kxOG4vc3JjL2xpYi90ZXN0aW5nL3Rlc3QudHJhbnNsYXRlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUM3RCxPQUFPLEVBQ0wsNkJBQTZCLEVBQzdCLHNCQUFzQixFQUN0QixxQkFBcUIsRUFDckIsZUFBZSxFQUNmLGdCQUFnQixHQUVqQixNQUFNLHFCQUFxQixDQUFBO0FBQzVCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFBOztBQUc3RCxhQUFhO0FBQ2IseUtBQXlLO0FBQ3pLLHlIQUF5SDtBQUN6SCxtSEFBbUg7QUFFbkg7Ozs7OztHQU1HO0FBS0gsTUFBTSxPQUFPLHNCQUFzQjtJQUpuQztRQU9VLGtCQUFhLEdBQWlCLEVBQUUsQ0FBQTtLQTJNekM7SUF6SlEsTUFBTSxDQUFDLGdCQUFnQixDQUM1QixzQkFBNkMsRUFDN0MsWUFBbUM7UUFFbkMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLHNCQUFzQixFQUFFLENBQUE7UUFFM0QsSUFBSSxPQUFPLHNCQUFzQixLQUFLLFFBQVEsRUFBRTtZQUM5QyxPQUFPLHNCQUFzQixDQUFDLGdCQUFnQixDQUNwQyxzQkFBc0IsRUFDOUIsWUFBWSxDQUNiLENBQUE7U0FDRjtRQUVELE9BQU8sc0JBQXNCLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtJQUN4RSxDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sc0JBQXNCLENBQUE7SUFDL0IsQ0FBQztJQUVELElBQVcsU0FBUztRQUNsQixNQUFNLGdCQUFnQixHQUFHLElBQUksZ0JBQWdCLENBQzNDLElBQUksRUFDSixJQUFJLG1CQUFtQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFDM0MsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLHFCQUFxQixFQUFFLEVBQzdDLElBQUksc0JBQXNCLEVBQUUsRUFDNUIsSUFBSSw2QkFBNkIsRUFBRSxFQUNuQyxJQUFJLEVBQ0osSUFBSSxFQUNKLEtBQUssRUFDTCxJQUFJLENBQUMsZ0JBQWdCLENBQ3RCLENBQUE7UUFFRCxPQUFPO1lBQ0w7Z0JBQ0UsT0FBTyxFQUFFLGdCQUFnQjtnQkFDekIsUUFBUSxFQUFFLGdCQUFnQjthQUMzQjtTQUNGLENBQUE7SUFDSCxDQUFDO0lBNkNNLGdCQUFnQixDQUNyQixzQkFBNkMsRUFDN0MsWUFBbUM7UUFFbkMsSUFBSSxPQUFPLHNCQUFzQixLQUFLLFFBQVEsSUFBSSxZQUFZLEVBQUU7WUFDOUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsRUFBRSxZQUFZLENBQUMsQ0FBQTtZQUMxRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsc0JBQXNCLENBQUE7U0FDL0M7YUFBTSxJQUFJLHNCQUFzQixFQUFFO1lBQ2pDLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUN2RCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUNqRSxDQUFBO1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDSSxZQUFZLENBQUMsUUFBMkI7UUFDN0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUE7UUFDekIsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7T0FhRztJQUNJLG1CQUFtQixDQUFDLFFBQWdCO1FBQ3pDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxRQUFRLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFBO1FBQ3pELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVPLGVBQWUsQ0FDckIsUUFBZ0IsRUFDaEIsWUFBa0M7UUFFbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUMxQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFBO1NBQ2pDO1FBRUQsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2hDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEdBQUc7Z0JBQzdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7Z0JBQy9CLEdBQUcsWUFBWTthQUNoQixDQUFBO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEdBQUcsWUFBWSxDQUFBO1NBQzVDO0lBQ0gsQ0FBQzs4R0E3TVUsc0JBQXNCOytHQUF0QixzQkFBc0IsWUFIdkIsZUFBZSxhQUNmLGVBQWU7K0dBRWQsc0JBQXNCLFlBSHZCLGVBQWUsRUFDZixlQUFlOzsyRkFFZCxzQkFBc0I7a0JBSmxDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsZUFBZSxDQUFDO29CQUMxQixPQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUM7aUJBQzNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgRmFrZU1pc3NpbmdUcmFuc2xhdGlvbkhhbmRsZXIsXG4gIFRyYW5zbGF0ZURlZmF1bHRQYXJzZXIsXG4gIFRyYW5zbGF0ZUZha2VDb21waWxlcixcbiAgVHJhbnNsYXRlTW9kdWxlLFxuICBUcmFuc2xhdGVTZXJ2aWNlLFxuICBUcmFuc2xhdGVDb21waWxlcixcbn0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IFRlc3RUcmFuc2xhdGVMb2FkZXIgfSBmcm9tICcuL3Rlc3QudHJhbnNsYXRlLmxvYWRlcidcbmltcG9ydCB7IExhbmd1YWdlVHJhbnNsYXRpb25zLCBUcmFuc2xhdGlvbnMgfSBmcm9tICcuL3RyYW5zbGF0aW9ucy5tb2RlbCdcblxuLy8gSU1QT1JUQU5UOlxuLy8gVGhpcyB3YXMgY29weS1wYXN0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbXdvb3RlbmRldi9uZ3gtdHJhbnNsYXRlLXBsdWdpbnMvYmxvYi83YzZjNzNjN2QxNmM5NTE5YTdiYWZmZjkzOWQyOWZkOGVhNWU1NzRhL3Byb2plY3RzL3Rlc3Rpbmcvc3JjL2xpYi90ZXN0aW5nLm1vZHVsZS50c1xuLy8gYmVjYXVzZSB0aGUgb3JpZ2luYWwgcGFja2FnZSB3YXMgZXhwZWN0aW5nIHJ4anMgNysgYXMgYSBwZWVyIGRlcCBhbmQgdGhhdCB3YXMgY29uZmxpY3Rpbmcgd2l0aCBtYW55IG90aGVyIGRlcGVuZGVuY2llc1xuLy8gRklYTUU6IHdoZW4gcnhqcyA3IGNhbiBiZSB1c2VkIGluIHRoZSBwcm9qZWN0LCByZW1vdmUgdGhpcyBhbmQgZG8gYG5wbSBpbnN0YWxsIG5neC10cmFuc2xhdGUtdGVzdGluZyAtLXNhdmUtZGV2YFxuXG4vKipcbiAqIFRoZSBUcmFuc2xhdGVUZXN0aW5nTW9kdWxlIHByb3ZpZGVzIHRoZSB7VHJhbnNsYXRlTW9kdWxlfSBhcyB3ZWxsIGFzIGFcbiAqIHtUcmFuc2xhdGVTZXJ2aWNlfSBjb25maWd1cmVkIHRvIHJldHVybiB0cmFuc2xhdGlvbnMgc3BlY2lmaWMgZm9yIHRoZVxuICogdGVzdCBlbnZpcm9ubWVudC5cbiAqXG4gKiBAZXhwb3J0XG4gKi9cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtUcmFuc2xhdGVNb2R1bGVdLFxuICBleHBvcnRzOiBbVHJhbnNsYXRlTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRlVGVzdGluZ01vZHVsZVxuICBpbXBsZW1lbnRzIE1vZHVsZVdpdGhQcm92aWRlcnM8VHJhbnNsYXRlVGVzdGluZ01vZHVsZT5cbntcbiAgcHJpdmF0ZSBfdHJhbnNsYXRpb25zOiBUcmFuc2xhdGlvbnMgPSB7fVxuXG4gIHByaXZhdGUgX2RlZmF1bHRMYW5ndWFnZTogc3RyaW5nXG5cbiAgcHJpdmF0ZSBfY29tcGlsZXI6IFRyYW5zbGF0ZUNvbXBpbGVyXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIHtUcmFuc2xhdGVUZXN0aW5nTW9kdWxlfSB3aXRoIHRyYW5zbGF0aW9ucyBmb3IgdGhlIHNwZWNpZmllZCBsYW5ndWFnZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICpcbiAgICogY29uc3QgRU5HTElTSF9UUkFOU0xBVElPTlMgPSB7IGdyZWV0aW5nOiAnSGVsbG8nIH07XG4gICAqIGNvbnN0IHRyYW5zbGF0ZU1vZHVsZSA9IFRyYW5zbGF0ZVRlc3RpbmdNb2R1bGUud2l0aFRyYW5zbGF0aW9ucygnZW4nLCBFTkdMSVNIX1RSQU5TTEFUSU9OUyk7XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqIFRyYW5zbGF0ZVRlc3RpbmdNb2R1bGUud2l0aFRyYW5zbGF0aW9ucygnZW4nLCByZXF1aXJlKCcuLi8uLi9hc3NldHMvaTE4bi9lbi5qc29uJykpO1xuICAgKlxuICAgKiBAc3RhdGljXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsYW5ndWFnZSB0aGUgbGFuZ3VhZ2UgZm9yIHRoZSB0cmFuc2xhdGlvbnMuXG4gICAqIEBwYXJhbSB7VHJhbnNsYXRpb25zfSB0cmFuc2xhdGlvbnMgdGhlIHRyYW5zbGF0aW9ucyB0byBiZSB1c2VkIGluIHRoZSB0ZXN0cy5cbiAgICogQHJldHVybnMgdGhlIG5ldyBpbnN0YW5jZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGNoYWluIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbi5cbiAgICogQG1lbWJlcm9mIFRyYW5zbGF0ZVRlc3RpbmdNb2R1bGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aFRyYW5zbGF0aW9ucyhcbiAgICBsYW5ndWFnZTogc3RyaW5nLFxuICAgIHRyYW5zbGF0aW9uczogTGFuZ3VhZ2VUcmFuc2xhdGlvbnNcbiAgKTogVHJhbnNsYXRlVGVzdGluZ01vZHVsZVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSB7VHJhbnNsYXRlVGVzdGluZ01vZHVsZX0gd2l0aCB0aGUgcHJvdmlkZWQgdHJhbnNsYXRpb25zLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKlxuICAgKiBjb25zdCBUUkFOU0xBVElPTlMgPSB7IGVuOiB7IGdyZWV0aW5nOiAnSGVsbG8nIH0sIGVzOiB7IGdyZWV0aW5nOiAnSG9sYScgfSB9O1xuICAgKiBjb25zdCB0cmFuc2xhdGVNb2R1bGUgPSBUcmFuc2xhdGVUZXN0aW5nTW9kdWxlLndpdGhUcmFuc2xhdGlvbnMoVFJBTlNMQVRJT05TKTtcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICpcbiAgICogVHJhbnNsYXRlVGVzdGluZ01vZHVsZS53aXRoVHJhbnNsYXRpb25zKHJlcXVpcmUoJy4vdGVzdC5pMThuLmpzb24nKSk7XG4gICAqXG4gICAqIEBzdGF0aWNcbiAgICogQHBhcmFtIHtUcmFuc2xhdGlvbnN9IHRoZSBsYW5ndWFnZSB0cmFuc2xhdGlvbnMgdGhlIHRyYW5zbGF0aW9ucyB0byBiZSB1c2VkIGluIHRoZSB0ZXN0cy5cbiAgICogQHJldHVybnMgdGhlIG5ldyBpbnN0YW5jZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGNoYWluIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbi5cbiAgICogQG1lbWJlcm9mIFRyYW5zbGF0ZVRlc3RpbmdNb2R1bGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgd2l0aFRyYW5zbGF0aW9ucyhcbiAgICB0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9uc1xuICApOiBUcmFuc2xhdGVUZXN0aW5nTW9kdWxlXG5cbiAgcHVibGljIHN0YXRpYyB3aXRoVHJhbnNsYXRpb25zKFxuICAgIGxhbmd1YWdlT3JUcmFuc2xhdGlvbnM6IHN0cmluZyB8IFRyYW5zbGF0aW9ucyxcbiAgICB0cmFuc2xhdGlvbnM/OiBMYW5ndWFnZVRyYW5zbGF0aW9uc1xuICApOiBUcmFuc2xhdGVUZXN0aW5nTW9kdWxlIHtcbiAgICBjb25zdCB0cmFuc2xhdGVUZXN0aW5nTW9kdWxlID0gbmV3IFRyYW5zbGF0ZVRlc3RpbmdNb2R1bGUoKVxuXG4gICAgaWYgKHR5cGVvZiBsYW5ndWFnZU9yVHJhbnNsYXRpb25zID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHRyYW5zbGF0ZVRlc3RpbmdNb2R1bGUud2l0aFRyYW5zbGF0aW9ucyhcbiAgICAgICAgPHN0cmluZz5sYW5ndWFnZU9yVHJhbnNsYXRpb25zLFxuICAgICAgICB0cmFuc2xhdGlvbnNcbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gdHJhbnNsYXRlVGVzdGluZ01vZHVsZS53aXRoVHJhbnNsYXRpb25zKGxhbmd1YWdlT3JUcmFuc2xhdGlvbnMpXG4gIH1cblxuICBwdWJsaWMgZ2V0IG5nTW9kdWxlKCkge1xuICAgIHJldHVybiBUcmFuc2xhdGVUZXN0aW5nTW9kdWxlXG4gIH1cblxuICBwdWJsaWMgZ2V0IHByb3ZpZGVycygpIHtcbiAgICBjb25zdCB0cmFuc2xhdGVTZXJ2aWNlID0gbmV3IFRyYW5zbGF0ZVNlcnZpY2UoXG4gICAgICBudWxsLFxuICAgICAgbmV3IFRlc3RUcmFuc2xhdGVMb2FkZXIodGhpcy5fdHJhbnNsYXRpb25zKSxcbiAgICAgIHRoaXMuX2NvbXBpbGVyIHx8IG5ldyBUcmFuc2xhdGVGYWtlQ29tcGlsZXIoKSxcbiAgICAgIG5ldyBUcmFuc2xhdGVEZWZhdWx0UGFyc2VyKCksXG4gICAgICBuZXcgRmFrZU1pc3NpbmdUcmFuc2xhdGlvbkhhbmRsZXIoKSxcbiAgICAgIHRydWUsXG4gICAgICB0cnVlLFxuICAgICAgZmFsc2UsXG4gICAgICB0aGlzLl9kZWZhdWx0TGFuZ3VhZ2VcbiAgICApXG5cbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBwcm92aWRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICB1c2VWYWx1ZTogdHJhbnNsYXRlU2VydmljZSxcbiAgICAgIH0sXG4gICAgXVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHtUcmFuc2xhdGVUZXN0aW5nTW9kdWxlfSBpbnN0YW5jZSB3aXRoIGFkZGl0aW9uYWwgdHJhbnNsYXRpb25zLiBUaGVcbiAgICogdHJhbnNsYXRpb25zIHdpbGwgYmUgc2hhbGxvd2x5IG1lcmdlZCB3aXRoIGFueSBleGlzdGluZyB0cmFuc2xhdGlvbnMuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqIGNvbnN0IEVOR0xJU0hfVFJBTlNMQVRJT05TID0geyBlbjogeyBncmVldGluZzogJ0hlbGxvJyB9IH07XG4gICAqIGNvbnN0IFNQQU5JU0hfVFJBTlNMQVRJT05TID0geyBlbjogeyBncmVldGluZzogJ0hvbGEnIH0gfTtcbiAgICogY29uc3QgdHJhbnNsYXRlTW9kdWxlID0gVHJhbnNsYXRlVGVzdGluZ01vZHVsZS53aXRoVHJhbnNsYXRpb25zKEVOR0xJU0hfVFJBTlNMQVRJT05TKVxuICAgKiAgIC53aXRoVHJhbnNsYXRpb25zKFNQQU5JU0hfVFJBTlNMQVRJT05TKTtcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2xhdGlvbnN9IHRyYW5zbGF0aW9ucyB0aGUgYWRkaXRpb25hbCB0cmFuc2xhdGlvbnMgdG8gYWRkIHRvIHRoZSB0ZXN0aW5nIHNlcnZpY2UuXG4gICAqIEByZXR1cm5zIHRoZSBpbnN0YW5jZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGNoYWluIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbi5cbiAgICogQG1lbWJlcm9mIFRyYW5zbGF0ZVRlc3RpbmdNb2R1bGVcbiAgICovXG4gIHB1YmxpYyB3aXRoVHJhbnNsYXRpb25zKHRyYW5zbGF0aW9uczogVHJhbnNsYXRpb25zKTogVHJhbnNsYXRlVGVzdGluZ01vZHVsZVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSB7VHJhbnNsYXRlVGVzdGluZ01vZHVsZX0gaW5zdGFuY2Ugd2l0aCBhZGRpdGlvbmFsIHRyYW5zbGF0aW9ucyBmb3IgYVxuICAgKiBzcGVjaWZpZWQgbGFuZ3VhZ2UuIFRoZSB0cmFuc2xhdGlvbnMgd2lsbCBiZSBzaGFsbG93bHkgbWVyZ2VkIHdpdGggYW55IGV4aXN0aW5nIHRyYW5zbGF0aW9ucy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICpcbiAgICogY29uc3QgRU5HTElTSF9UUkFOU0xBVElPTlMgPSB7IGdyZWV0aW5nOiAnSGVsbG8nIH07XG4gICAqIGNvbnN0IFNQQU5JU0hfVFJBTlNMQVRJT05TID0geyBncmVldGluZzogJ0hvbGEnIH07XG4gICAqIGNvbnN0IHRyYW5zbGF0ZU1vZHVsZSA9IFRyYW5zbGF0ZVRlc3RpbmdNb2R1bGUud2l0aFRyYW5zbGF0aW9ucygnZW4nLCBFTkdMSVNIX1RSQU5TTEFUSU9OUylcbiAgICogICAud2l0aFRyYW5zbGF0aW9ucygnZXMnLCBTUEFOSVNIX1RSQU5TTEFUSU9OUyk7XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqIFRyYW5zbGF0ZVRlc3RpbmdNb2R1bGUud2l0aFRyYW5zbGF0aW9ucygnZW4nLCByZXF1aXJlKCcuLi8uLi9hc3NldHMvaTE4bi9lbi5qc29uJykpXG4gICAqICAgLndpdGhUcmFuc2xhdGlvbnMoJ2VzJywgcmVxdWlyZSgnLi4vLi4vYXNzZXRzL2kxOG4vZXMuanNvbicpKTtcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxhbmd1YWdlIHRoZSBsYW5ndWFnZSBmb3Igd2hpY2ggdGhlIG5ldyB0cmFuc2xhdGlvbnMgYXJlIGJlaW5nIGFkZGVkLlxuICAgKiBAcGFyYW0ge0xhbmd1YWdlVHJhbnNsYXRpb25zfSB0cmFuc2xhdGlvbnMgdGhlIHRyYW5zbGF0aW9ucyBmb3IgdGhlIHNwZWNpZmllZCBsYW5ndWFnZS5cbiAgICogQHJldHVybnMgdGhlIGluc3RhbmNlIHRoYXQgY2FuIGJlIHVzZWQgdG8gY2hhaW4gYWRkaXRpb25hbCBjb25maWd1cmF0aW9uLlxuICAgKiBAbWVtYmVyb2YgVHJhbnNsYXRlVGVzdGluZ01vZHVsZVxuICAgKi9cbiAgcHVibGljIHdpdGhUcmFuc2xhdGlvbnMoXG4gICAgbGFuZ3VhZ2U6IHN0cmluZyxcbiAgICB0cmFuc2xhdGlvbnM6IExhbmd1YWdlVHJhbnNsYXRpb25zXG4gICk6IFRyYW5zbGF0ZVRlc3RpbmdNb2R1bGVcblxuICBwdWJsaWMgd2l0aFRyYW5zbGF0aW9ucyhcbiAgICBsYW5ndWFnZU9yVHJhbnNsYXRpb25zOiBzdHJpbmcgfCBUcmFuc2xhdGlvbnMsXG4gICAgdHJhbnNsYXRpb25zPzogTGFuZ3VhZ2VUcmFuc2xhdGlvbnNcbiAgKTogVHJhbnNsYXRlVGVzdGluZ01vZHVsZSB7XG4gICAgaWYgKHR5cGVvZiBsYW5ndWFnZU9yVHJhbnNsYXRpb25zID09PSAnc3RyaW5nJyAmJiB0cmFuc2xhdGlvbnMpIHtcbiAgICAgIHRoaXMuYWRkVHJhbnNsYXRpb25zKGxhbmd1YWdlT3JUcmFuc2xhdGlvbnMsIHRyYW5zbGF0aW9ucylcbiAgICAgIHRoaXMuX2RlZmF1bHRMYW5ndWFnZSA9IGxhbmd1YWdlT3JUcmFuc2xhdGlvbnNcbiAgICB9IGVsc2UgaWYgKGxhbmd1YWdlT3JUcmFuc2xhdGlvbnMpIHtcbiAgICAgIE9iamVjdC5rZXlzKGxhbmd1YWdlT3JUcmFuc2xhdGlvbnMpLmZvckVhY2goKGxhbmd1YWdlKSA9PlxuICAgICAgICB0aGlzLmFkZFRyYW5zbGF0aW9ucyhsYW5ndWFnZSwgbGFuZ3VhZ2VPclRyYW5zbGF0aW9uc1tsYW5ndWFnZV0pXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUge1RyYW5zbGF0aW9uVGVzdGluZ01vZHVsZX0gdG8gcHJvdmlkZSBhIHtUcmFuc2xhdGVTZXJ2aWNlfSB0aGF0IHdpbGxcbiAgICogdXNlIHRoZSBwcm92aWRlZCB7VHJhbnNsYXRlQ29tcGlsZXJ9IHRvIHRyYW5zbGF0ZSB0aGUgdGVzdCB0cmFuc2xhdGlvbnMuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqIFRyYW5zbGF0ZVRlc3RpbmdNb2R1bGUud2l0aFRyYW5zbGF0aW9ucygnZW4nLCB7cGVvcGxlOiAne2dlbmRlciwgc2VsZWN0LCBtYWxle0hlIGlzfSBmZW1hbGV7U2hlIGlzfSBvdGhlcntUaGV5IGFyZX19IHtob3d9KSd9KVxuICAgKiAgIC53aXRoQ29tcGlsZXIobmV3IFRyYW5zbGF0ZU1lc3NhZ2VGb3JtYXRDb21waWxlcigpKTtcbiAgICpcbiAgICogQHBhcmFtIGNvbXBpbGVyIHRoZSBjb21waWxlciB0byB1c2UgdG8gY29tcGlsZSB0aGUgdGVzdCB0cmFuc2xhdGlvbnMuXG4gICAqIEByZXR1cm5zIHRoZSBpbnN0YW5jZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGNoYWluIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbi5cbiAgICogQG1lbWJlcm9mIFRyYW5zbGF0ZVRlc3RpbmdNb2R1bGVcbiAgICovXG4gIHB1YmxpYyB3aXRoQ29tcGlsZXIoY29tcGlsZXI6IFRyYW5zbGF0ZUNvbXBpbGVyKTogVHJhbnNsYXRlVGVzdGluZ01vZHVsZSB7XG4gICAgdGhpcy5fY29tcGlsZXIgPSBjb21waWxlclxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUge1RyYW5zbGF0ZVRlc3RpbmdNb2R1bGV9IHRvIHVzZSB0aGUgcHJvdmlkZWQgbGFuZ3VhZ2UgYXMgdGhlIGRlZmF1bHQgbGFuZ3VhZ2UuXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBkZWZhdWx0IGxhbmd1YWdlIHdpbGwgYmUgc2V0IHRvIHRoZSBmaXJzdCBsYW5ndWFnZSBwcm92aWRlZC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICpcbiAgICogVHJhbnNsYXRlVGVzdGluZ01vZHVsZS53aXRoVHJhbnNsYXRpb25zKCdlcycsIFNQQU5JU0hfVFJBTlNMQVRJT05TKVxuICAgKiAgIC53aXRoVHJhbnNsYXRpb25zKCdlbicsIEVOR0xJU0hfVFJBTlNMQVRJT05TKVxuICAgKiAgIC53aXRoRGVmYXVsdExhbmd1YWdlKCdlbicpO1xuICAgKlxuICAgKiBAcGFyYW0gbGFuZ3VhZ2UgdGhlIG5ldyBkZWZhdWx0IGxhbmd1YWdlIGZvciB0cmFuc2xhdGlvbnMuXG4gICAqIEByZXR1cm5zIHRoZSBpbnN0YW5jZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGNoYWluIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbi5cbiAgICogQG1lbWJlcm9mIFRyYW5zbGF0ZVRlc3RpbmdNb2R1bGVcbiAgICovXG4gIHB1YmxpYyB3aXRoRGVmYXVsdExhbmd1YWdlKGxhbmd1YWdlOiBzdHJpbmcpOiBUcmFuc2xhdGVUZXN0aW5nTW9kdWxlIHtcbiAgICB0aGlzLl9kZWZhdWx0TGFuZ3VhZ2UgPSBsYW5ndWFnZSB8fCB0aGlzLl9kZWZhdWx0TGFuZ3VhZ2VcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRUcmFuc2xhdGlvbnMoXG4gICAgbGFuZ3VhZ2U6IHN0cmluZyxcbiAgICB0cmFuc2xhdGlvbnM6IExhbmd1YWdlVHJhbnNsYXRpb25zXG4gICkge1xuICAgIGlmICghdGhpcy5fZGVmYXVsdExhbmd1YWdlKSB7XG4gICAgICB0aGlzLl9kZWZhdWx0TGFuZ3VhZ2UgPSBsYW5ndWFnZVxuICAgIH1cblxuICAgIGlmICh0aGlzLl90cmFuc2xhdGlvbnNbbGFuZ3VhZ2VdKSB7XG4gICAgICB0aGlzLl90cmFuc2xhdGlvbnNbbGFuZ3VhZ2VdID0ge1xuICAgICAgICAuLi50aGlzLl90cmFuc2xhdGlvbnNbbGFuZ3VhZ2VdLFxuICAgICAgICAuLi50cmFuc2xhdGlvbnMsXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3RyYW5zbGF0aW9uc1tsYW5ndWFnZV0gPSB0cmFuc2xhdGlvbnNcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,6 +0,0 @@
1
- // IMPORTANT:
2
- // This was copy-pasted from https://github.com/mwootendev/ngx-translate-plugins/blob/7c6c73c7d16c9519a7bafff939d29fd8ea5e574a/projects/testing/src/lib/translations.model.ts
3
- // because the original package was expecting rxjs 7+ as a peer dep and that was conflicting with many other dependencies
4
- // FIXME: when rxjs 7 can be used in the project, remove this and do `npm install ngx-translate-testing --save-dev`
5
- export {};
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb25zLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL2kxOG4vc3JjL2xpYi90ZXN0aW5nL3RyYW5zbGF0aW9ucy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxhQUFhO0FBQ2IsNktBQTZLO0FBQzdLLHlIQUF5SDtBQUN6SCxtSEFBbUgiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJTVBPUlRBTlQ6XG4vLyBUaGlzIHdhcyBjb3B5LXBhc3RlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9td29vdGVuZGV2L25neC10cmFuc2xhdGUtcGx1Z2lucy9ibG9iLzdjNmM3M2M3ZDE2Yzk1MTlhN2JhZmZmOTM5ZDI5ZmQ4ZWE1ZTU3NGEvcHJvamVjdHMvdGVzdGluZy9zcmMvbGliL3RyYW5zbGF0aW9ucy5tb2RlbC50c1xuLy8gYmVjYXVzZSB0aGUgb3JpZ2luYWwgcGFja2FnZSB3YXMgZXhwZWN0aW5nIHJ4anMgNysgYXMgYSBwZWVyIGRlcCBhbmQgdGhhdCB3YXMgY29uZmxpY3Rpbmcgd2l0aCBtYW55IG90aGVyIGRlcGVuZGVuY2llc1xuLy8gRklYTUU6IHdoZW4gcnhqcyA3IGNhbiBiZSB1c2VkIGluIHRoZSBwcm9qZWN0LCByZW1vdmUgdGhpcyBhbmQgZG8gYG5wbSBpbnN0YWxsIG5neC10cmFuc2xhdGUtdGVzdGluZyAtLXNhdmUtZGV2YFxuXG5leHBvcnQgZGVjbGFyZSB0eXBlIExhbmd1YWdlVHJhbnNsYXRpb24gPVxuICB8IHN0cmluZ1xuICB8IHN0cmluZ1tdXG4gIHwgeyBbdHJhbnNsYXRpb25LZXk6IHN0cmluZ106IExhbmd1YWdlVHJhbnNsYXRpb24gfVxuXG4vKipcbiAqIExhbmd1YWdlVHJhbnNsYXRpb25zIHJlcHJlc2VudHMgYSBtYXBwaW5nIGJldHdlZW4gYSB0cmFuc2xhdGlvbiBrZXkgYW5kIHRoZSB0cmFuc2xhdGlvbiBmb3IgdGhhdCBrZXlcbiAqIG9yIHRvIG5lc3RlZCB0cmFuc2xhdGlvbiBrZXlzLlxuICpcbiAqIEBleHBvcnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYW5ndWFnZVRyYW5zbGF0aW9ucyB7XG4gIFt0cmFuc2xhdGlvbktleTogc3RyaW5nXTogTGFuZ3VhZ2VUcmFuc2xhdGlvblxufVxuXG4vKipcbiAqIFRyYW5zbGF0aW9ucyByZXByZXNlbnRzIGEgbWFwcGluZyBiZXR3ZWVuIGEgbGFuZ3VhZ2UgYW5kIHRoZSB0cmFuc2xhdGlvbnMgZm9yIHRoYXQgbGFuZ3VhZ2UuXG4gKlxuICogQGV4cG9ydFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zbGF0aW9ucyB7XG4gIFtsYW5ndWFnZTogc3RyaW5nXTogTGFuZ3VhZ2VUcmFuc2xhdGlvbnNcbn1cbiJdfQ==
@@ -1,31 +0,0 @@
1
- import { EventEmitter } from '@angular/core';
2
- import { CatalogRecord } from '../../../../../../libs/common/domain/src/lib/model/record';
3
- import { FileFormat } from '../../../../../../libs/util/shared/src';
4
- import { SortByField } from '../../../../../../libs/common/domain/src/lib/model/search';
5
- import * as i0 from "@angular/core";
6
- export declare class RecordTableComponent {
7
- selectedRecords: string[];
8
- records: any[];
9
- totalHits?: number;
10
- sortBy?: SortByField;
11
- recordClick: EventEmitter<CatalogRecord>;
12
- recordsSelect: EventEmitter<CatalogRecord[]>;
13
- recordsDeselect: EventEmitter<CatalogRecord[]>;
14
- sortByChange: EventEmitter<SortByField>;
15
- dateToString(date: Date): string;
16
- getStatus(isPublishedToAll: boolean | unknown): "published" | "not published";
17
- formatUserInfo(userInfo: string | unknown): string;
18
- getRecordFormats(record: CatalogRecord): FileFormat[];
19
- getBadgeColor(format: FileFormat): string;
20
- private getOrderForColumn;
21
- setSortBy(col: string): void;
22
- isSortedBy(col: string, order: 'asc' | 'desc'): boolean;
23
- isChecked(record: CatalogRecord): boolean;
24
- handleRecordSelectedChange(selected: boolean, record: CatalogRecord): void;
25
- selectAll(): void;
26
- isAllSelected(): boolean;
27
- isSomeSelected(): boolean;
28
- static ɵfac: i0.ɵɵFactoryDeclaration<RecordTableComponent, never>;
29
- static ɵcmp: i0.ɵɵComponentDeclaration<RecordTableComponent, "gn-ui-record-table", never, { "selectedRecords": { "alias": "selectedRecords"; "required": false; }; "records": { "alias": "records"; "required": false; }; "totalHits": { "alias": "totalHits"; "required": false; }; "sortBy": { "alias": "sortBy"; "required": false; }; }, { "recordClick": "recordClick"; "recordsSelect": "recordsSelect"; "recordsDeselect": "recordsDeselect"; "sortByChange": "sortByChange"; }, never, never, false, never>;
30
- }
31
- //# sourceMappingURL=record-table.component.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"record-table.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/search/src/lib/record-table/record-table.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAiB,MAAM,eAAe,CAAA;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;AACzF,OAAO,EACL,UAAU,EAIX,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,2DAA2D,CAAA;;AAEvF,qBAKa,oBAAoB;IACtB,eAAe,EAAE,MAAM,EAAE,CAAK;IAC9B,OAAO,EAAE,GAAG,EAAE,CAAK;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,WAAW,CAAA;IACnB,WAAW,8BAAoC;IAC/C,aAAa,gCAAsC;IACnD,eAAe,gCAAsC;IACrD,YAAY,4BAAkC;IAExD,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAShC,SAAS,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO;IAI7C,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM;IAQlD,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,UAAU,EAAE;IAarD,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;IAIzC,OAAO,CAAC,iBAAiB;IAgBzB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAY5B,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO;IAKvD,SAAS,CAAC,MAAM,EAAE,aAAa;IAO/B,0BAA0B,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa;IAYnE,SAAS;IAYT,aAAa,IAAI,OAAO;IAYxB,cAAc,IAAI,OAAO;yCA5Hd,oBAAoB;2CAApB,oBAAoB;CAqIhC"}
@@ -1,17 +0,0 @@
1
- import { TranslateLoader } from '@ngx-translate/core';
2
- import { Observable } from 'rxjs';
3
- import { Translations, LanguageTranslations } from './translations.model';
4
- export declare class TestTranslateLoader extends TranslateLoader {
5
- private _translations;
6
- constructor(_translations?: Translations);
7
- /**
8
- * Returns an {Observable} of translations for the specified language. If the
9
- * language is not recognized, an empty translations object will be returned.
10
- *
11
- * @param language the language for which the translations should be retrieved.
12
- * @returns the translations for the specified
13
- * language or an empty set of translations if the language is not recognized.
14
- */
15
- getTranslation(language: string): Observable<LanguageTranslations>;
16
- }
17
- //# sourceMappingURL=test.translate.loader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test.translate.loader.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/i18n/src/lib/testing/test.translate.loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAsB,MAAM,MAAM,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAOzE,qBAAa,mBAAoB,SAAQ,eAAe;IAC1C,OAAO,CAAC,aAAa;gBAAb,aAAa,GAAE,YAAiB;IAIpD;;;;;;;OAOG;IACI,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAC,oBAAoB,CAAC;CAG1E"}
@@ -1,131 +0,0 @@
1
- import { ModuleWithProviders } from '@angular/core';
2
- import { TranslateService, TranslateCompiler } from '@ngx-translate/core';
3
- import { LanguageTranslations, Translations } from './translations.model';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@ngx-translate/core";
6
- /**
7
- * The TranslateTestingModule provides the {TranslateModule} as well as a
8
- * {TranslateService} configured to return translations specific for the
9
- * test environment.
10
- *
11
- * @export
12
- */
13
- export declare class TranslateTestingModule implements ModuleWithProviders<TranslateTestingModule> {
14
- private _translations;
15
- private _defaultLanguage;
16
- private _compiler;
17
- /**
18
- * Creates a new instance of the {TranslateTestingModule} with translations for the specified language.
19
- *
20
- * @example
21
- *
22
- * const ENGLISH_TRANSLATIONS = { greeting: 'Hello' };
23
- * const translateModule = TranslateTestingModule.withTranslations('en', ENGLISH_TRANSLATIONS);
24
- *
25
- * @example
26
- *
27
- * TranslateTestingModule.withTranslations('en', require('../../assets/i18n/en.json'));
28
- *
29
- * @static
30
- * @param {string} language the language for the translations.
31
- * @param {Translations} translations the translations to be used in the tests.
32
- * @returns the new instance that can be used to chain additional configuration.
33
- * @memberof TranslateTestingModule
34
- */
35
- static withTranslations(language: string, translations: LanguageTranslations): TranslateTestingModule;
36
- /**
37
- * Creates a new instance of the {TranslateTestingModule} with the provided translations.
38
- *
39
- * @example
40
- *
41
- * const TRANSLATIONS = { en: { greeting: 'Hello' }, es: { greeting: 'Hola' } };
42
- * const translateModule = TranslateTestingModule.withTranslations(TRANSLATIONS);
43
- *
44
- * @example
45
- *
46
- * TranslateTestingModule.withTranslations(require('./test.i18n.json'));
47
- *
48
- * @static
49
- * @param {Translations} the language translations the translations to be used in the tests.
50
- * @returns the new instance that can be used to chain additional configuration.
51
- * @memberof TranslateTestingModule
52
- */
53
- static withTranslations(translations: Translations): TranslateTestingModule;
54
- get ngModule(): typeof TranslateTestingModule;
55
- get providers(): {
56
- provide: typeof TranslateService;
57
- useValue: TranslateService;
58
- }[];
59
- /**
60
- * Updates the {TranslateTestingModule} instance with additional translations. The
61
- * translations will be shallowly merged with any existing translations.
62
- *
63
- * @example
64
- *
65
- * const ENGLISH_TRANSLATIONS = { en: { greeting: 'Hello' } };
66
- * const SPANISH_TRANSLATIONS = { en: { greeting: 'Hola' } };
67
- * const translateModule = TranslateTestingModule.withTranslations(ENGLISH_TRANSLATIONS)
68
- * .withTranslations(SPANISH_TRANSLATIONS);
69
- *
70
- * @param {Translations} translations the additional translations to add to the testing service.
71
- * @returns the instance that can be used to chain additional configuration.
72
- * @memberof TranslateTestingModule
73
- */
74
- withTranslations(translations: Translations): TranslateTestingModule;
75
- /**
76
- * Updates the {TranslateTestingModule} instance with additional translations for a
77
- * specified language. The translations will be shallowly merged with any existing translations.
78
- *
79
- * @example
80
- *
81
- * const ENGLISH_TRANSLATIONS = { greeting: 'Hello' };
82
- * const SPANISH_TRANSLATIONS = { greeting: 'Hola' };
83
- * const translateModule = TranslateTestingModule.withTranslations('en', ENGLISH_TRANSLATIONS)
84
- * .withTranslations('es', SPANISH_TRANSLATIONS);
85
- *
86
- * @example
87
- *
88
- * TranslateTestingModule.withTranslations('en', require('../../assets/i18n/en.json'))
89
- * .withTranslations('es', require('../../assets/i18n/es.json'));
90
- *
91
- * @param {string} language the language for which the new translations are being added.
92
- * @param {LanguageTranslations} translations the translations for the specified language.
93
- * @returns the instance that can be used to chain additional configuration.
94
- * @memberof TranslateTestingModule
95
- */
96
- withTranslations(language: string, translations: LanguageTranslations): TranslateTestingModule;
97
- /**
98
- * Updates the {TranslationTestingModule} to provide a {TranslateService} that will
99
- * use the provided {TranslateCompiler} to translate the test translations.
100
- *
101
- * @example
102
- *
103
- * TranslateTestingModule.withTranslations('en', {people: '{gender, select, male{He is} female{She is} other{They are}} {how})'})
104
- * .withCompiler(new TranslateMessageFormatCompiler());
105
- *
106
- * @param compiler the compiler to use to compile the test translations.
107
- * @returns the instance that can be used to chain additional configuration.
108
- * @memberof TranslateTestingModule
109
- */
110
- withCompiler(compiler: TranslateCompiler): TranslateTestingModule;
111
- /**
112
- * Updates the {TranslateTestingModule} to use the provided language as the default language.
113
- * By default, the default language will be set to the first language provided.
114
- *
115
- * @example
116
- *
117
- * TranslateTestingModule.withTranslations('es', SPANISH_TRANSLATIONS)
118
- * .withTranslations('en', ENGLISH_TRANSLATIONS)
119
- * .withDefaultLanguage('en');
120
- *
121
- * @param language the new default language for translations.
122
- * @returns the instance that can be used to chain additional configuration.
123
- * @memberof TranslateTestingModule
124
- */
125
- withDefaultLanguage(language: string): TranslateTestingModule;
126
- private addTranslations;
127
- static ɵfac: i0.ɵɵFactoryDeclaration<TranslateTestingModule, never>;
128
- static ɵmod: i0.ɵɵNgModuleDeclaration<TranslateTestingModule, never, [typeof i1.TranslateModule], [typeof i1.TranslateModule]>;
129
- static ɵinj: i0.ɵɵInjectorDeclaration<TranslateTestingModule>;
130
- }
131
- //# sourceMappingURL=test.translate.module.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test.translate.module.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/i18n/src/lib/testing/test.translate.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAY,MAAM,eAAe,CAAA;AAC7D,OAAO,EAKL,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;;;AAOzE;;;;;;GAMG;AACH,qBAIa,sBACX,YAAW,mBAAmB,CAAC,sBAAsB,CAAC;IAEtD,OAAO,CAAC,aAAa,CAAmB;IAExC,OAAO,CAAC,gBAAgB,CAAQ;IAEhC,OAAO,CAAC,SAAS,CAAmB;IAEpC;;;;;;;;;;;;;;;;;OAiBG;WACW,gBAAgB,CAC5B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,oBAAoB,GACjC,sBAAsB;IAEzB;;;;;;;;;;;;;;;;OAgBG;WACW,gBAAgB,CAC5B,YAAY,EAAE,YAAY,GACzB,sBAAsB;IAkBzB,IAAW,QAAQ,kCAElB;IAED,IAAW,SAAS;;;QAmBnB;IAED;;;;;;;;;;;;;;OAcG;IACI,gBAAgB,CAAC,YAAY,EAAE,YAAY,GAAG,sBAAsB;IAE3E;;;;;;;;;;;;;;;;;;;;OAoBG;IACI,gBAAgB,CACrB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,oBAAoB,GACjC,sBAAsB;IAiBzB;;;;;;;;;;;;OAYG;IACI,YAAY,CAAC,QAAQ,EAAE,iBAAiB,GAAG,sBAAsB;IAKxE;;;;;;;;;;;;;OAaG;IACI,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,sBAAsB;IAKpE,OAAO,CAAC,eAAe;yCA7LZ,sBAAsB;0CAAtB,sBAAsB;0CAAtB,sBAAsB;CA8MlC"}
@@ -1,21 +0,0 @@
1
- export declare type LanguageTranslation = string | string[] | {
2
- [translationKey: string]: LanguageTranslation;
3
- };
4
- /**
5
- * LanguageTranslations represents a mapping between a translation key and the translation for that key
6
- * or to nested translation keys.
7
- *
8
- * @export
9
- */
10
- export interface LanguageTranslations {
11
- [translationKey: string]: LanguageTranslation;
12
- }
13
- /**
14
- * Translations represents a mapping between a language and the translations for that language.
15
- *
16
- * @export
17
- */
18
- export interface Translations {
19
- [language: string]: LanguageTranslations;
20
- }
21
- //# sourceMappingURL=translations.model.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"translations.model.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/util/i18n/src/lib/testing/translations.model.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,OAAO,MAAM,mBAAmB,GACnC,MAAM,GACN,MAAM,EAAE,GACR;IAAE,CAAC,cAAc,EAAE,MAAM,GAAG,mBAAmB,CAAA;CAAE,CAAA;AAErD;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,CAAC,cAAc,EAAE,MAAM,GAAG,mBAAmB,CAAA;CAC9C;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB,CAAA;CACzC"}
@@ -1,7 +0,0 @@
1
- .record-table-col {
2
- @apply px-5 py-3 items-center truncate;
3
- }
4
-
5
- .record-table-header {
6
- @apply record-table-col capitalize;
7
- }
@@ -1,215 +0,0 @@
1
- <div>
2
- <div *ngIf="totalHits" class="">
3
- <div class="flex records-information">
4
- <div
5
- translate
6
- class="my-8 ml-4 block text-gray-800"
7
- [translateParams]="{
8
- displayed: records.length,
9
- hits: totalHits
10
- }"
11
- >
12
- results.records.hits.displayedOn
13
- </div>
14
- <div
15
- *ngIf="selectedRecords.length > 0"
16
- class="my-8 ml-6 block text-gray-400 selected-records"
17
- translate
18
- [translateParams]="{ amount: selectedRecords.length }"
19
- >
20
- results.records.hits.selected
21
- </div>
22
- </div>
23
-
24
- <div
25
- class="grid grid-cols-[repeat(3,minmax(0,max-content))] gap-x-4 gap-y-1"
26
- *ngIf="records[0].name"
27
- >
28
- <div class="contents text-sm">
29
- <div class="record-table-header text-gray-400 flex gap-1">
30
- <span translate>dashboard.records.userDetail</span>
31
- </div>
32
- <div class="record-table-header text-gray-400 flex gap-1">
33
- <span translate>dashboard.records.username</span>
34
- </div>
35
- <div class="record-table-header text-gray-400 flex gap-1">
36
- <span translate>dashboard.records.userEmail</span>
37
- </div>
38
- </div>
39
- <div
40
- class="contents hover:text-gray-900 text-gray-800 cursor-pointer"
41
- (click)="recordsSelect.emit([record])"
42
- *ngFor="let record of records"
43
- >
44
- <div class="record-table-col text-16">
45
- {{ record.name }}
46
- </div>
47
- <div class="record-table-col text-16">
48
- {{ record.username }}
49
- </div>
50
- <div class="record-table-col text-16">
51
- {{ record.emailAddresses[0] }}
52
- </div>
53
- </div>
54
- </div>
55
-
56
- <div
57
- class="grid grid-cols-[repeat(6,minmax(0,max-content))] gap-x-4 gap-y-1"
58
- *ngIf="!records[0].name"
59
- >
60
- <div class="contents text-sm">
61
- <div class="flex justify-center items-center">
62
- <gn-ui-checkbox
63
- [checked]="isAllSelected()"
64
- [indeterminate]="isSomeSelected()"
65
- (changed)="selectAll()"
66
- type="default"
67
- >
68
- </gn-ui-checkbox>
69
- </div>
70
- <div class="record-table-header text-gray-400 flex gap-1">
71
- <gn-ui-button
72
- type="light"
73
- extraClass="px-3 pl-0 space-x-1 text-left"
74
- (buttonClick)="setSortBy('resourceTitleObject.default.keyword')"
75
- >
76
- <span translate>record.metadata.title</span>
77
- <mat-icon
78
- class="material-symbols-outlined"
79
- *ngIf="isSortedBy('resourceTitleObject.default.keyword', 'desc')"
80
- >
81
- expand_more</mat-icon
82
- >
83
- <mat-icon
84
- class="material-symbols-outlined"
85
- *ngIf="isSortedBy('resourceTitleObject.default.keyword', 'asc')"
86
- >
87
- expand_less</mat-icon
88
- >
89
- </gn-ui-button>
90
- </div>
91
- <div translate="" class="record-table-header text-gray-400 flex gap-1">
92
- record.metadata.formats
93
- </div>
94
- <div class="record-table-header text-gray-400 flex gap-1">
95
- <gn-ui-button
96
- type="light"
97
- extraClass="px-3 pl-0 space-x-1"
98
- (buttonClick)="setSortBy('recordOwner')"
99
- >
100
- <span translate>record.metadata.author</span>
101
- <mat-icon
102
- class="material-symbols-outlined"
103
- *ngIf="isSortedBy('recordOwner', 'desc')"
104
- >
105
- expand_more</mat-icon
106
- >
107
- <mat-icon
108
- class="material-symbols-outlined"
109
- *ngIf="isSortedBy('recordOwner', 'asc')"
110
- >
111
- expand_less</mat-icon
112
- >
113
- </gn-ui-button>
114
- </div>
115
- <div class="record-table-header text-gray-400 flex gap-1">
116
- <gn-ui-button
117
- type="light"
118
- extraClass="px-3 pl-0 space-x-1"
119
- (buttonClick)="setSortBy('changeDate')"
120
- >
121
- <span translate>record.metadata.updatedOn</span>
122
- <mat-icon
123
- class="material-symbols-outlined"
124
- *ngIf="isSortedBy('changeDate', 'desc')"
125
- >
126
- expand_more</mat-icon
127
- >
128
- <mat-icon
129
- class="material-symbols-outlined"
130
- *ngIf="isSortedBy('changeDate', 'asc')"
131
- >
132
- expand_less</mat-icon
133
- >
134
- </gn-ui-button>
135
- </div>
136
- <div class="record-table-header text-gray-400 flex gap-1">
137
- <gn-ui-button
138
- type="light"
139
- extraClass="px-3 pl-0 space-x-1"
140
- (buttonClick)="setSortBy('createDate')"
141
- >
142
- <span translate>record.metadata.createdOn</span>
143
- <mat-icon
144
- class="material-symbols-outlined"
145
- *ngIf="isSortedBy('createDate', 'desc')"
146
- >
147
- expand_more</mat-icon
148
- >
149
- <mat-icon
150
- class="material-symbols-outlined"
151
- *ngIf="isSortedBy('createDate', 'asc')"
152
- >
153
- expand_less</mat-icon
154
- >
155
- </gn-ui-button>
156
- </div>
157
- </div>
158
- <div
159
- class="contents hover:text-gray-900 text-gray-800 cursor-pointer"
160
- (click)="recordsSelect.emit([record])"
161
- *ngFor="let record of records"
162
- >
163
- <div class="record-table-col">
164
- <gn-ui-checkbox
165
- [checked]="isChecked(record)"
166
- (changed)="handleRecordSelectedChange($event, record)"
167
- type="default"
168
- ></gn-ui-checkbox>
169
- </div>
170
- <div
171
- [title]="record.title"
172
- class="record-table-col text-16 self-center"
173
- >
174
- {{ record.title }}
175
- </div>
176
- <div
177
- class="record-table-col flex justify-start items-center gap-2 text-16"
178
- [title]="formats.join(', ')"
179
- *ngIf="getRecordFormats(record) as formats"
180
- >
181
- <span
182
- class="badge-btn min-w-[45px] text-sm text-white px-2 flex-shrink-0"
183
- [style.background-color]="getBadgeColor(formats[0])"
184
- *ngIf="formats[0]"
185
- >
186
- {{ formats[0] }}
187
- </span>
188
- <span
189
- class="badge-btn min-w-[45px] text-sm text-white px-2 flex-shrink-0"
190
- [style.background-color]="getBadgeColor(formats[1])"
191
- *ngIf="formats[1]"
192
- >
193
- {{ formats[1] }}
194
- </span>
195
- <div
196
- class="flex-shrink-0"
197
- *ngIf="!record.name && formats.slice(2).length > 0"
198
- >
199
- <span>+{{ formats.slice(2).length }}</span>
200
- </div>
201
- </div>
202
- <div class="record-table-col flex items-center gap-2 text-16">
203
- <mat-icon class="material-symbols-outlined"> person </mat-icon>
204
- <span class="">{{ formatUserInfo(record.extras?.ownerInfo) }}</span>
205
- </div>
206
- <div class="record-table-col text-16 self-center">
207
- {{ dateToString(record.recordUpdated) }}
208
- </div>
209
- <div class="record-table-col text-16 self-center">
210
- {{ dateToString(record.recordCreated) }}
211
- </div>
212
- </div>
213
- </div>
214
- </div>
215
- </div>