geonetwork-ui 2.6.0-dev.5b83cdcc5 → 2.6.0-dev.609dd7257

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (298) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/common/distribution.mapper.mjs +3 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +40 -4
  3. package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
  4. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.mjs +8 -4
  5. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +5 -2
  6. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +4 -4
  7. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +2 -2
  8. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/constant.mjs +5 -2
  9. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +4 -4
  10. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +79 -16
  11. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +7 -1
  12. package/esm2022/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.mjs +2 -1
  13. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  14. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  15. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +45 -9
  16. package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +2 -2
  17. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +32 -2
  18. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +25 -6
  19. package/esm2022/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.mjs +266 -11
  20. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.mjs +1 -1
  21. package/esm2022/libs/feature/record/src/index.mjs +2 -3
  22. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +3 -3
  23. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +68 -16
  24. package/esm2022/libs/feature/record/src/lib/state/mdview.actions.mjs +3 -1
  25. package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +7 -1
  26. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +13 -13
  27. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +7 -1
  28. package/esm2022/libs/feature/record/src/lib/state/mdview.selectors.mjs +3 -1
  29. package/esm2022/libs/feature/search/src/lib/constants.mjs +4 -2
  30. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +5 -3
  31. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +6 -2
  32. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +13 -10
  33. package/esm2022/libs/ui/dataviz/src/lib/chart/chart.component.mjs +5 -3
  34. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.component.mjs +11 -6
  35. package/esm2022/libs/ui/elements/src/index.mjs +3 -2
  36. package/esm2022/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.mjs +55 -0
  37. package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +42 -83
  38. package/esm2022/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.mjs +59 -0
  39. package/esm2022/libs/ui/elements/src/lib/kind-badge/kind-badge.component.mjs +22 -5
  40. package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +3 -3
  41. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +3 -3
  42. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +37 -12
  43. package/esm2022/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.mjs +5 -1
  44. package/esm2022/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.mjs +72 -0
  45. package/esm2022/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.mjs +12 -4
  46. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +14 -4
  47. package/esm2022/libs/ui/inputs/src/index.mjs +2 -1
  48. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +3 -3
  49. package/esm2022/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.mjs +68 -0
  50. package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +3 -3
  51. package/esm2022/libs/ui/layout/src/index.mjs +2 -1
  52. package/esm2022/libs/ui/layout/src/lib/cell-popin/cell-popin.component.mjs +110 -0
  53. package/esm2022/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.mjs +34 -13
  54. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +20 -10
  55. package/esm2022/libs/ui/layout/src/lib/truncated-text/truncated-text.component.mjs +38 -21
  56. package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +2 -2
  57. package/esm2022/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.mjs +29 -4
  58. package/esm2022/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.mjs +2 -1
  59. package/esm2022/libs/ui/search/src/index.mjs +2 -1
  60. package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +4 -8
  61. package/esm2022/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.mjs +3 -3
  62. package/esm2022/libs/ui/search/src/lib/results-list/results-layout.config.mjs +2 -2
  63. package/esm2022/libs/ui/search/src/lib/results-list/results-list.component.mjs +3 -3
  64. package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +21 -12
  65. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +39 -18
  66. package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +10 -4
  67. package/esm2022/libs/util/i18n/src/lib/i18n.constants.mjs +42 -1
  68. package/esm2022/libs/util/i18n/src/lib/language-codes.mjs +24 -2
  69. package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +4 -1
  70. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +4 -1
  71. package/esm2022/translations/de.json +47 -7
  72. package/esm2022/translations/en.json +47 -9
  73. package/esm2022/translations/es.json +46 -6
  74. package/esm2022/translations/fr.json +47 -9
  75. package/esm2022/translations/it.json +76 -36
  76. package/esm2022/translations/nl.json +46 -6
  77. package/esm2022/translations/pt.json +46 -6
  78. package/fesm2022/geonetwork-ui.mjs +2475 -1201
  79. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  80. package/libs/api/metadata-converter/src/lib/common/distribution.mapper.d.ts.map +1 -1
  81. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  82. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +0 -1
  83. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
  84. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts +1 -0
  85. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts.map +1 -1
  86. package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts.map +1 -1
  87. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  88. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  89. package/libs/api/repository/src/lib/gn4/elasticsearch/constant.d.ts.map +1 -1
  90. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +1 -1
  91. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  92. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +13 -2
  93. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  94. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +2 -0
  95. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  96. package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts +1 -0
  97. package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts.map +1 -1
  98. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +21 -15
  99. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  100. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +6 -0
  101. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  102. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts +12 -8
  103. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  104. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +1 -0
  105. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  106. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +5 -2
  107. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  108. package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts +48 -3
  109. package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts.map +1 -1
  110. package/libs/feature/record/src/index.d.ts +1 -2
  111. package/libs/feature/record/src/index.d.ts.map +1 -1
  112. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +13 -5
  113. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  114. package/libs/feature/record/src/lib/state/mdview.actions.d.ts +10 -0
  115. package/libs/feature/record/src/lib/state/mdview.actions.d.ts.map +1 -1
  116. package/libs/feature/record/src/lib/state/mdview.effects.d.ts +6 -0
  117. package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
  118. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +28 -21
  119. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  120. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts +2 -0
  121. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
  122. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts +2 -0
  123. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts.map +1 -1
  124. package/libs/feature/search/src/lib/constants.d.ts.map +1 -1
  125. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +2 -1
  126. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
  127. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts +1 -1
  128. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts.map +1 -1
  129. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +6 -5
  130. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
  131. package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts +2 -1
  132. package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts.map +1 -1
  133. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts +6 -1
  134. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts.map +1 -1
  135. package/libs/ui/elements/src/index.d.ts +2 -1
  136. package/libs/ui/elements/src/index.d.ts.map +1 -1
  137. package/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.d.ts +15 -0
  138. package/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.d.ts.map +1 -0
  139. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts +6 -13
  140. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts.map +1 -1
  141. package/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.d.ts +14 -0
  142. package/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.d.ts.map +1 -0
  143. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts +3 -1
  144. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts.map +1 -1
  145. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts +3 -0
  146. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
  147. package/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.d.ts.map +1 -1
  148. package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts +27 -0
  149. package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts.map +1 -0
  150. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts +1 -0
  151. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts.map +1 -1
  152. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +3 -1
  153. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  154. package/libs/ui/inputs/src/index.d.ts +1 -0
  155. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  156. package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts +17 -0
  157. package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts.map +1 -0
  158. package/libs/ui/layout/src/index.d.ts +1 -0
  159. package/libs/ui/layout/src/index.d.ts.map +1 -1
  160. package/libs/ui/layout/src/lib/cell-popin/cell-popin.component.d.ts +28 -0
  161. package/libs/ui/layout/src/lib/cell-popin/cell-popin.component.d.ts.map +1 -0
  162. package/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.d.ts +15 -8
  163. package/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.d.ts.map +1 -1
  164. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +4 -2
  165. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -1
  166. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts +13 -9
  167. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts.map +1 -1
  168. package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts +6 -2
  169. package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts.map +1 -1
  170. package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts.map +1 -1
  171. package/libs/ui/search/src/index.d.ts +1 -0
  172. package/libs/ui/search/src/index.d.ts.map +1 -1
  173. package/libs/ui/search/src/lib/results-list/results-list.component.d.ts.map +1 -1
  174. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +4 -3
  175. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -1
  176. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +10 -4
  177. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  178. package/libs/ui/search/src/lib/ui-search.module.d.ts +2 -1
  179. package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
  180. package/libs/util/i18n/src/lib/i18n.constants.d.ts +1 -0
  181. package/libs/util/i18n/src/lib/i18n.constants.d.ts.map +1 -1
  182. package/libs/util/i18n/src/lib/language-codes.d.ts +23 -1
  183. package/libs/util/i18n/src/lib/language-codes.d.ts.map +1 -1
  184. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
  185. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  186. package/package.json +2 -2
  187. package/src/libs/api/metadata-converter/src/lib/common/distribution.mapper.ts +1 -0
  188. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +1 -1
  189. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +62 -4
  190. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +0 -1
  191. package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +13 -3
  192. package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +5 -1
  193. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +8 -4
  194. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +4 -1
  195. package/src/libs/api/repository/src/lib/gn4/elasticsearch/constant.ts +4 -1
  196. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +3 -3
  197. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +118 -16
  198. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +11 -0
  199. package/src/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.ts +3 -0
  200. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +22 -9
  201. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +6 -0
  202. package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +10 -0
  203. package/src/libs/common/fixtures/src/lib/link.fixtures.ts +14 -0
  204. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +62 -1
  205. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.html +12 -9
  206. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +54 -10
  207. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +37 -0
  208. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.html +1 -0
  209. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +27 -1
  210. package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.html +117 -11
  211. package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.ts +316 -6
  212. package/src/libs/feature/record/src/index.ts +1 -2
  213. package/src/libs/feature/record/src/lib/data-view/data-view.component.html +2 -0
  214. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +31 -10
  215. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +106 -18
  216. package/src/libs/feature/record/src/lib/state/mdview.actions.ts +10 -0
  217. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +22 -0
  218. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +22 -15
  219. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +12 -0
  220. package/src/libs/feature/record/src/lib/state/mdview.selectors.ts +9 -0
  221. package/src/libs/feature/search/src/lib/constants.ts +3 -1
  222. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.html +1 -1
  223. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +1 -0
  224. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +2 -0
  225. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +1 -0
  226. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +13 -3
  227. package/src/libs/ui/dataviz/src/lib/chart/chart.component.ts +2 -1
  228. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.html +6 -3
  229. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.ts +5 -4
  230. package/src/libs/ui/elements/src/index.ts +2 -1
  231. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.css +4 -0
  232. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.html +13 -0
  233. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.ts +54 -0
  234. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.html +68 -141
  235. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +38 -97
  236. package/src/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.html +69 -0
  237. package/src/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.ts +61 -0
  238. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.html +7 -5
  239. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.ts +21 -2
  240. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +6 -3
  241. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +4 -0
  242. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.html +1 -1
  243. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +48 -9
  244. package/src/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.ts +4 -0
  245. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.html +107 -0
  246. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.ts +83 -0
  247. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.html +15 -1
  248. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts +9 -1
  249. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +5 -1
  250. package/src/libs/ui/inputs/src/index.ts +1 -0
  251. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +1 -1
  252. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.html +43 -0
  253. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.ts +77 -0
  254. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.html +1 -2
  255. package/src/libs/ui/layout/src/index.ts +1 -0
  256. package/src/libs/ui/layout/src/lib/cell-popin/cell-popin.component.html +40 -0
  257. package/src/libs/ui/layout/src/lib/cell-popin/cell-popin.component.ts +141 -0
  258. package/src/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.html +24 -8
  259. package/src/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.ts +36 -10
  260. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +3 -2
  261. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +13 -6
  262. package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.html +25 -44
  263. package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.ts +46 -17
  264. package/src/libs/ui/layout/src/lib/ui-layout.module.ts +1 -1
  265. package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.html +3 -3
  266. package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.ts +27 -3
  267. package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.ts +1 -0
  268. package/src/libs/ui/search/src/index.ts +1 -0
  269. package/src/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.html +9 -81
  270. package/src/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.html +1 -0
  271. package/src/libs/ui/search/src/lib/results-list/results-layout.config.ts +2 -2
  272. package/src/libs/ui/search/src/lib/results-list/results-list.component.html +1 -0
  273. package/src/libs/ui/search/src/lib/results-list/results-list.component.ts +0 -1
  274. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +16 -6
  275. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +15 -11
  276. package/src/libs/ui/search/src/lib/results-table/results-table.component.css +4 -0
  277. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +31 -27
  278. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +33 -15
  279. package/src/libs/ui/search/src/lib/ui-search.module.ts +3 -0
  280. package/src/libs/util/i18n/src/lib/i18n.constants.ts +42 -0
  281. package/src/libs/util/i18n/src/lib/language-codes.ts +23 -1
  282. package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +3 -0
  283. package/src/libs/util/shared/src/lib/links/link-utils.ts +3 -0
  284. package/tailwind.base.css +1 -1
  285. package/translations/de.json +47 -7
  286. package/translations/en.json +47 -9
  287. package/translations/es.json +46 -6
  288. package/translations/fr.json +47 -9
  289. package/translations/it.json +76 -36
  290. package/translations/nl.json +46 -6
  291. package/translations/pt.json +46 -6
  292. package/translations/sk.json +46 -6
  293. package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +0 -46
  294. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts +0 -12
  295. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts.map +0 -1
  296. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +0 -30
  297. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.ts +0 -48
  298. /package/src/libs/ui/{elements/src/lib/related-record-card/related-record-card.component.css → inputs/src/lib/search-feature-catalog/search-feature-catalog.component.css} +0 -0
@@ -223,7 +223,7 @@ export class AutocompleteComponent {
223
223
  provideNgIconsConfig({
224
224
  size: '1.75rem',
225
225
  }),
226
- ], viewQueries: [{ propertyName: "triggerRef", first: true, predicate: MatAutocompleteTrigger, descendants: true }, { propertyName: "autocomplete", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "inputRef", first: true, predicate: ["searchInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<span class=\"w-full inline-block relative\">\n <div\n class=\"absolute inset-y-[--icon-padding] left-[--icon-padding] w-[--icon-width] pointer-events-none\"\n *ngIf=\"!allowSubmit\"\n >\n <ng-icon name=\"iconoirSearch\" class=\"text-primary search\"></ng-icon>\n </div>\n <div class=\"flex flex-row\">\n <input\n #searchInput\n type=\"text\"\n class=\"gn-ui-text-input\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n [ngClass]=\"{\n 'text-primary': searchActive && enterButton,\n 'text-gray-900': !searchActive,\n 'px-[--icon-width]': !allowSubmit,\n }\"\n />\n <gn-ui-button\n type=\"gray\"\n *ngIf=\"searchInput.value && displayEnterBtn\"\n extraClass=\"w-32 h-8 !opacity-100\"\n [ngStyle]=\"{ left: enterBtnPosition + 'px' }\"\n class=\"absolute\"\n disabled=\"true\"\n >\n <ng-icon\n name=\"iconoirLongArrowDownLeft\"\n class=\"!w-4 text-gray-900 font-bold\"\n ></ng-icon>\n <span translate class=\"text-bold text-gray-900 font-bold\">\n Enter to search\n </span>\n </gn-ui-button>\n </div>\n <gn-ui-button\n type=\"primary\"\n [extraClass]=\"getExtraClass()\"\n data-test=\"clear-btn\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (buttonClick)=\"clear()\"\n >\n <ng-icon class=\"text-white\" name=\"matClose\"></ng-icon>\n </gn-ui-button>\n <gn-ui-button\n type=\"light\"\n extraClass=\"border-0 border-l-[1px] border-gray-300 hover:border-gray-500 text-primary hover:text-primary-darkest focus:text-primary-darkest absolute inset-y-[--icon-padding] right-[--icon-padding]\"\n aria-label=\"Trigger search\"\n *ngIf=\"allowSubmit\"\n data-test=\"autocomplete-submit-btn\"\n (buttonClick)=\"handleClickSearch()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"matErrorOutlineOutline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</span>\n\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFnInternal\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFnInternal(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: ["span{--icon-padding: var(--gn-ui-text-input-border-size, 2px);--icon-width: calc(var(--gn-ui-text-input-padding, .6em) * 2 + 1.25em)}span>*:not(gn-ui-popup-alert){font-size:var(--gn-ui-text-input-font-size, 1em)}input:placeholder-shown{text-overflow:ellipsis}gn-ui-button{--gn-ui-button-rounded: 0;--gn-ui-button-width: var(--icon-width);--gn-ui-button-padding: 0;font-size:1em}ng-icon.search{margin-top:.6rem;margin-left:.6rem}gn-ui-button:last-of-type{--gn-ui-button-rounded: 0 var(--gn-ui-text-input-rounded, .25em) var(--gn-ui-text-input-rounded, .25em) 0}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"], dependencies: [{ kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
226
+ ], viewQueries: [{ propertyName: "triggerRef", first: true, predicate: MatAutocompleteTrigger, descendants: true }, { propertyName: "autocomplete", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "inputRef", first: true, predicate: ["searchInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<span class=\"w-full inline-block relative\">\n <div\n class=\"absolute inset-y-[--icon-padding] left-[--icon-padding] w-[--icon-width] pointer-events-none\"\n *ngIf=\"!allowSubmit\"\n >\n <ng-icon name=\"iconoirSearch\" class=\"text-primary search\"></ng-icon>\n </div>\n <div class=\"flex flex-row\">\n <input\n #searchInput\n type=\"text\"\n class=\"gn-ui-text-input\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n [ngClass]=\"{\n 'text-primary': searchActive && enterButton,\n 'text-gray-900': !searchActive,\n 'px-[--icon-width]': !allowSubmit,\n }\"\n />\n <gn-ui-button\n type=\"gray\"\n *ngIf=\"searchInput.value && displayEnterBtn\"\n extraClass=\"w-32 h-8 !opacity-100\"\n [ngStyle]=\"{ left: enterBtnPosition + 'px' }\"\n class=\"absolute\"\n disabled=\"true\"\n >\n <ng-icon\n name=\"iconoirLongArrowDownLeft\"\n class=\"!w-4 text-gray-900 font-bold\"\n ></ng-icon>\n <span translate class=\"text-bold text-gray-900 font-bold\">\n Enter to search\n </span>\n </gn-ui-button>\n </div>\n <gn-ui-button\n type=\"primary\"\n [extraClass]=\"getExtraClass()\"\n data-test=\"clear-btn\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (buttonClick)=\"clear()\"\n >\n <ng-icon class=\"text-white\" name=\"matClose\"></ng-icon>\n </gn-ui-button>\n <gn-ui-button\n type=\"light\"\n extraClass=\"border-0 border-l-[1px] border-gray-300 hover:border-gray-500 text-primary hover:text-primary-darkest focus:text-primary-darkest absolute inset-y-[--icon-padding] right-[--icon-padding]\"\n aria-label=\"Trigger search\"\n *ngIf=\"allowSubmit\"\n data-test=\"autocomplete-submit-btn\"\n (buttonClick)=\"handleClickSearch()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"matErrorOutlineOutline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</span>\n\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFnInternal\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion text-start\"\n >\n {{ displayWithFnInternal(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: ["span{--icon-padding: var(--gn-ui-text-input-border-size, 2px);--icon-width: calc(var(--gn-ui-text-input-padding, .6em) * 2 + 1.25em)}span>*:not(gn-ui-popup-alert){font-size:var(--gn-ui-text-input-font-size, 1em)}input:placeholder-shown{text-overflow:ellipsis}gn-ui-button{--gn-ui-button-rounded: 0;--gn-ui-button-width: var(--icon-width);--gn-ui-button-padding: 0;font-size:1em}ng-icon.search{margin-top:.6rem;margin-left:.6rem}gn-ui-button:last-of-type{--gn-ui-button-rounded: 0 var(--gn-ui-text-input-rounded, .25em) var(--gn-ui-text-input-rounded, .25em) 0}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"], dependencies: [{ kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
227
227
  }
228
228
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AutocompleteComponent, decorators: [{
229
229
  type: Component,
@@ -244,7 +244,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
244
244
  provideNgIconsConfig({
245
245
  size: '1.75rem',
246
246
  }),
247
- ], template: "<span class=\"w-full inline-block relative\">\n <div\n class=\"absolute inset-y-[--icon-padding] left-[--icon-padding] w-[--icon-width] pointer-events-none\"\n *ngIf=\"!allowSubmit\"\n >\n <ng-icon name=\"iconoirSearch\" class=\"text-primary search\"></ng-icon>\n </div>\n <div class=\"flex flex-row\">\n <input\n #searchInput\n type=\"text\"\n class=\"gn-ui-text-input\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n [ngClass]=\"{\n 'text-primary': searchActive && enterButton,\n 'text-gray-900': !searchActive,\n 'px-[--icon-width]': !allowSubmit,\n }\"\n />\n <gn-ui-button\n type=\"gray\"\n *ngIf=\"searchInput.value && displayEnterBtn\"\n extraClass=\"w-32 h-8 !opacity-100\"\n [ngStyle]=\"{ left: enterBtnPosition + 'px' }\"\n class=\"absolute\"\n disabled=\"true\"\n >\n <ng-icon\n name=\"iconoirLongArrowDownLeft\"\n class=\"!w-4 text-gray-900 font-bold\"\n ></ng-icon>\n <span translate class=\"text-bold text-gray-900 font-bold\">\n Enter to search\n </span>\n </gn-ui-button>\n </div>\n <gn-ui-button\n type=\"primary\"\n [extraClass]=\"getExtraClass()\"\n data-test=\"clear-btn\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (buttonClick)=\"clear()\"\n >\n <ng-icon class=\"text-white\" name=\"matClose\"></ng-icon>\n </gn-ui-button>\n <gn-ui-button\n type=\"light\"\n extraClass=\"border-0 border-l-[1px] border-gray-300 hover:border-gray-500 text-primary hover:text-primary-darkest focus:text-primary-darkest absolute inset-y-[--icon-padding] right-[--icon-padding]\"\n aria-label=\"Trigger search\"\n *ngIf=\"allowSubmit\"\n data-test=\"autocomplete-submit-btn\"\n (buttonClick)=\"handleClickSearch()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"matErrorOutlineOutline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</span>\n\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFnInternal\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFnInternal(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: ["span{--icon-padding: var(--gn-ui-text-input-border-size, 2px);--icon-width: calc(var(--gn-ui-text-input-padding, .6em) * 2 + 1.25em)}span>*:not(gn-ui-popup-alert){font-size:var(--gn-ui-text-input-font-size, 1em)}input:placeholder-shown{text-overflow:ellipsis}gn-ui-button{--gn-ui-button-rounded: 0;--gn-ui-button-width: var(--icon-width);--gn-ui-button-padding: 0;font-size:1em}ng-icon.search{margin-top:.6rem;margin-left:.6rem}gn-ui-button:last-of-type{--gn-ui-button-rounded: 0 var(--gn-ui-text-input-rounded, .25em) var(--gn-ui-text-input-rounded, .25em) 0}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"] }]
247
+ ], template: "<span class=\"w-full inline-block relative\">\n <div\n class=\"absolute inset-y-[--icon-padding] left-[--icon-padding] w-[--icon-width] pointer-events-none\"\n *ngIf=\"!allowSubmit\"\n >\n <ng-icon name=\"iconoirSearch\" class=\"text-primary search\"></ng-icon>\n </div>\n <div class=\"flex flex-row\">\n <input\n #searchInput\n type=\"text\"\n class=\"gn-ui-text-input\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n [ngClass]=\"{\n 'text-primary': searchActive && enterButton,\n 'text-gray-900': !searchActive,\n 'px-[--icon-width]': !allowSubmit,\n }\"\n />\n <gn-ui-button\n type=\"gray\"\n *ngIf=\"searchInput.value && displayEnterBtn\"\n extraClass=\"w-32 h-8 !opacity-100\"\n [ngStyle]=\"{ left: enterBtnPosition + 'px' }\"\n class=\"absolute\"\n disabled=\"true\"\n >\n <ng-icon\n name=\"iconoirLongArrowDownLeft\"\n class=\"!w-4 text-gray-900 font-bold\"\n ></ng-icon>\n <span translate class=\"text-bold text-gray-900 font-bold\">\n Enter to search\n </span>\n </gn-ui-button>\n </div>\n <gn-ui-button\n type=\"primary\"\n [extraClass]=\"getExtraClass()\"\n data-test=\"clear-btn\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (buttonClick)=\"clear()\"\n >\n <ng-icon class=\"text-white\" name=\"matClose\"></ng-icon>\n </gn-ui-button>\n <gn-ui-button\n type=\"light\"\n extraClass=\"border-0 border-l-[1px] border-gray-300 hover:border-gray-500 text-primary hover:text-primary-darkest focus:text-primary-darkest absolute inset-y-[--icon-padding] right-[--icon-padding]\"\n aria-label=\"Trigger search\"\n *ngIf=\"allowSubmit\"\n data-test=\"autocomplete-submit-btn\"\n (buttonClick)=\"handleClickSearch()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"matErrorOutlineOutline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</span>\n\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFnInternal\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion text-start\"\n >\n {{ displayWithFnInternal(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: ["span{--icon-padding: var(--gn-ui-text-input-border-size, 2px);--icon-width: calc(var(--gn-ui-text-input-padding, .6em) * 2 + 1.25em)}span>*:not(gn-ui-popup-alert){font-size:var(--gn-ui-text-input-font-size, 1em)}input:placeholder-shown{text-overflow:ellipsis}gn-ui-button{--gn-ui-button-rounded: 0;--gn-ui-button-width: var(--icon-width);--gn-ui-button-padding: 0;font-size:1em}ng-icon.search{margin-top:.6rem;margin-left:.6rem}gn-ui-button:last-of-type{--gn-ui-button-rounded: 0 var(--gn-ui-text-input-rounded, .25em) var(--gn-ui-text-input-rounded, .25em) 0}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"] }]
248
248
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { placeholder: [{
249
249
  type: Input
250
250
  }], enterButton: [{
@@ -285,4 +285,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
285
285
  }], displayWithFn: [{
286
286
  type: Input
287
287
  }] } });
288
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvaW5wdXRzL3NyYy9saWIvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMvbGliL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDeEUsT0FBTyxFQUNMLGVBQWUsRUFDZixxQkFBcUIsRUFFckIsc0JBQXNCLEdBQ3ZCLE1BQU0sZ0NBQWdDLENBQUE7QUFDdkMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDaEYsT0FBTyxFQUNMLFVBQVUsRUFDVixZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixRQUFRLEVBQ1IsR0FBRyxFQUNILFNBQVMsRUFDVCxJQUFJLEVBQ0osR0FBRyxHQUNKLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUE7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7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blN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUsIFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuaW1wb3J0IHtcbiAgTWF0QXV0b2NvbXBsZXRlLFxuICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gIE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQsXG4gIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSdcbmltcG9ydCB7IGZpcnN0LCBtZXJnZSwgT2JzZXJ2YWJsZSwgb2YsIFJlcGxheVN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnXG5pbXBvcnQge1xuICBjYXRjaEVycm9yLFxuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaWx0ZXIsXG4gIGZpbmFsaXplLFxuICBtYXAsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFwLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IFBvcHVwQWxlcnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3dpZGdldHMvc3JjJ1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL2J1dHRvbi9idXR0b24uY29tcG9uZW50J1xuaW1wb3J0IHtcbiAgTmdJY29uQ29tcG9uZW50LFxuICBwcm92aWRlSWNvbnMsXG4gIHByb3ZpZGVOZ0ljb25zQ29uZmlnLFxufSBmcm9tICdAbmctaWNvbnMvY29yZSdcbmltcG9ydCB7IGljb25vaXJMb25nQXJyb3dEb3duTGVmdCwgaWNvbm9pclNlYXJjaCB9IGZyb20gJ0BuZy1pY29ucy9pY29ub2lyJ1xuaW1wb3J0IHsgbWF0Q2xvc2UgfSBmcm9tICdAbmctaWNvbnMvbWF0ZXJpYWwtaWNvbnMvYmFzZWxpbmUnXG5cbmV4cG9ydCB0eXBlIEF1dG9jb21wbGV0ZUl0ZW0gPSB1bmtub3duXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLWF1dG9jb21wbGV0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hdXRvY29tcGxldGUuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFBvcHVwQWxlcnRDb21wb25lbnQsXG4gICAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgTmdJY29uQ29tcG9uZW50LFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBwcm92aWRlSWNvbnMoe1xuICAgICAgaWNvbm9pclNlYXJjaCxcbiAgICAgIG1hdENsb3NlLFxuICAgICAgaWNvbm9pckxvbmdBcnJvd0Rvd25MZWZ0LFxuICAgIH0pLFxuICAgIHByb3ZpZGVOZ0ljb25zQ29uZmlnKHtcbiAgICAgIHNpemU6ICcxLjc1cmVtJyxcbiAgICB9KSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlc1xue1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nXG4gIEBJbnB1dCgpIGVudGVyQnV0dG9uID0gZmFsc2VcbiAgQElucHV0KCkgYWN0aW9uOiAodmFsdWU6IHN0cmluZykgPT4gT2JzZXJ2YWJsZTxBdXRvY29tcGxldGVJdGVtW10+XG4gIEBJbnB1dCgpIHZhbHVlPzogQXV0b2NvbXBsZXRlSXRlbVxuICBASW5wdXQoKSBjbGVhck9uU2VsZWN0aW9uID0gZmFsc2VcbiAgQElucHV0KCkgcHJldmVudENvbXBsZXRlT25TZWxlY3Rpb24gPSBmYWxzZVxuICBASW5wdXQoKSBhdXRvRm9jdXMgPSBmYWxzZVxuICBASW5wdXQoKSBtaW5DaGFyYWN0ZXJDb3VudD8gPSAzXG4gIC8vIHRoaXMgd2lsbCBzaG93IGEgc3VibWl0IGJ1dHRvbiBuZXh0IHRvIHRoZSBpbnB1dDsgaWYgZmFsc2UsIGEgc2VhcmNoIGljb24gd2lsbCBhcHBlYXIgb24gdGhlIGxlZnRcbiAgQElucHV0KCkgYWxsb3dTdWJtaXQgPSBmYWxzZVxuICBASW5wdXQoKSBmb3JjZVRyYWNrUG9zaXRpb24gPSBmYWxzZVxuICBAT3V0cHV0KCkgaXRlbVNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxBdXRvY29tcGxldGVJdGVtPigpXG4gIEBPdXRwdXQoKSBpbnB1dFN1Ym1pdHRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpXG4gIEBPdXRwdXQoKSBpbnB1dENsZWFyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KClcbiAgQE91dHB1dCgpIGlzU2VhcmNoQWN0aXZlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpXG4gIEBWaWV3Q2hpbGQoTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcikgdHJpZ2dlclJlZjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlclxuICBAVmlld0NoaWxkKE1hdEF1dG9jb21wbGV0ZSkgYXV0b2NvbXBsZXRlOiBNYXRBdXRvY29tcGxldGVcbiAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXQnKSBpbnB1dFJlZjogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PlxuXG4gIHNlYXJjaGluZzogYm9vbGVhblxuICBjb250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpXG4gIGNhbmNlbEVudGVyID0gdHJ1ZVxuICBzZWxlY3Rpb25TdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8TWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudD4oMSlcbiAgbGFzdElucHV0VmFsdWUkID0gbmV3IFJlcGxheVN1YmplY3Q8c3RyaW5nPigxKVxuICBlcnJvcjogc3RyaW5nIHwgbnVsbCA9IG51bGxcbiAgc3VnZ2VzdGlvbnMkOiBPYnNlcnZhYmxlPEF1dG9jb21wbGV0ZUl0ZW1bXT5cbiAgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpXG4gIHByaXZhdGUgbGFzdFBvc2l0aW9uOiBET01SZWN0IHwgbnVsbCA9IG51bGxcbiAgcHJpdmF0ZSBpbnRlcnZhbElkUG9zaXRpb246IG51bWJlciB8IHVuZGVmaW5lZFxuICBlbnRlckJ0blBvc2l0aW9uID0gMFxuICBzZWFyY2hBY3RpdmUgPSBmYWxzZVxuXG4gIEBJbnB1dCgpIGRpc3BsYXlXaXRoRm46IChpdGVtOiBBdXRvY29tcGxldGVJdGVtKSA9PiBzdHJpbmcgPSAoaXRlbSkgPT5cbiAgICBpdGVtLnRvU3RyaW5nKClcblxuICBnZXQgZGlzcGxheUVudGVyQnRuKCkge1xuICAgIHJldHVybiB0aGlzLmVudGVyQnV0dG9uICYmIHRoaXMuYWxsb3dTdWJtaXQgJiYgIXRoaXMuc2VhcmNoQWN0aXZlXG4gIH1cblxuICBkaXNwbGF5V2l0aEZuSW50ZXJuYWwgPSAoaXRlbT86IEF1dG9jb21wbGV0ZUl0ZW0pID0+IHtcbiAgICBpZiAoaXRlbSA9PT0gbnVsbCB8fCBpdGVtID09PSB1bmRlZmluZWQpIHJldHVybiBudWxsXG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheVdpdGhGbihpdGVtKVxuICB9XG5cbiAgZ2V0RXh0cmFDbGFzcygpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmFsbG93U3VibWl0KSB7XG4gICAgICBpZiAodGhpcy5lbnRlckJ1dHRvbikge1xuICAgICAgICByZXR1cm4gJ2JvcmRlciByb3VuZGVkLWxnIGFic29sdXRlIHctOCBoLTggcmlnaHQtW2NhbGModmFyKC0taWNvbi13aWR0aCkrdmFyKC0taWNvbi1wYWRkaW5nKSldIGluc2V0LXktWy0taWNvbi1wYWRkaW5nXSdcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAnYm9yZGVyIHJvdW5kZWQtbGcgYWJzb2x1dGUgdy04IGgtOCByaWdodC1bY2FsYyh2YXIoLS1pY29uLXdpZHRoKSswLjI1KnZhcigtLWljb24td2lkdGgpKV0gaW5zZXQteS1bY2FsYygwLjI1KnZhcigtLWljb24td2lkdGgpKV0nXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghdGhpcy5lbnRlckJ1dHRvbikge1xuICAgICAgICByZXR1cm4gJ2JvcmRlciByb3VuZGVkLWxnIGFic29sdXRlIHctOCBoLTggcmlnaHQtMiBpbnNldC15LTInXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAnYm9yZGVyIHJvdW5kZWQtbGcgYWJzb2x1dGUgdy04IGgtOCdcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgeyB2YWx1ZSB9ID0gY2hhbmdlc1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgY29uc3QgcHJldmlvdXNUZXh0VmFsdWUgPSB0aGlzLmRpc3BsYXlXaXRoRm5JbnRlcm5hbCh2YWx1ZS5wcmV2aW91c1ZhbHVlKVxuICAgICAgY29uc3QgY3VycmVudFRleHRWYWx1ZSA9IHRoaXMuZGlzcGxheVdpdGhGbkludGVybmFsKHZhbHVlLmN1cnJlbnRWYWx1ZSlcbiAgICAgIGlmIChwcmV2aW91c1RleHRWYWx1ZSAhPT0gY3VycmVudFRleHRWYWx1ZSkge1xuICAgICAgICBpZiAoY3VycmVudFRleHRWYWx1ZSkge1xuICAgICAgICAgIHRoaXMuc2VhcmNoQWN0aXZlID0gdHJ1ZVxuICAgICAgICAgIHRoaXMuaXNTZWFyY2hBY3RpdmUuZW1pdCh0cnVlKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VhcmNoQWN0aXZlID0gZmFsc2VcbiAgICAgICAgICB0aGlzLmlzU2VhcmNoQWN0aXZlLmVtaXQoZmFsc2UpXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVJbnB1dFZhbHVlKHZhbHVlLmN1cnJlbnRWYWx1ZSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBuZXdWYWx1ZSQgPSBtZXJnZShcbiAgICAgIG9mKCcnKSxcbiAgICAgIHRoaXMuaW5wdXRDbGVhcmVkLnBpcGUobWFwKCgpID0+ICcnKSksXG4gICAgICB0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgIGZpbHRlcigodmFsdWUpID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBkZWJvdW5jZVRpbWUoNDAwKVxuICAgICAgKVxuICAgIClcblxuICAgIGNvbnN0IGV4dGVybmFsVmFsdWVDaGFuZ2UkID0gdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgZmlsdGVyKCh2YWx1ZSkgPT4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZS50aXRsZSksXG4gICAgICBtYXAoKGl0ZW0pID0+IGl0ZW0udGl0bGUpXG4gICAgKVxuXG4gICAgLy8gdGhpcyBvYnNlcnZhYmxlIGVtaXRzIGFycmF5cyBvZiBzdWdnZXN0aW9ucyBsb2FkZWQgdXNpbmcgdGhlIGdpdmVuIGFjdGlvblxuICAgIGNvbnN0IHN1Z2dlc3Rpb25zRnJvbUFjdGlvbiA9IG1lcmdlKFxuICAgICAgbmV3VmFsdWUkLnBpcGUoXG4gICAgICAgIGZpbHRlcigodmFsdWU6IHN0cmluZykgPT4gdmFsdWUubGVuZ3RoID49IHRoaXMubWluQ2hhcmFjdGVyQ291bnQpXG4gICAgICApLFxuICAgICAgZXh0ZXJuYWxWYWx1ZUNoYW5nZSRcbiAgICApLnBpcGUoXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICB0aGlzLnNlYXJjaGluZyA9IHRydWVcbiAgICAgICAgdGhpcy5lcnJvciA9IG51bGxcbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKCh2YWx1ZSkgPT4gdGhpcy5hY3Rpb24odmFsdWUpKSxcbiAgICAgIHRhcCgoc3VnZ2VzdGlvbnMpID0+IHtcbiAgICAgICAgLy8gZm9yY2luZyB0aGUgcGFuZWwgdG8gb3BlbiBpZiB0aGVyZSBhcmUgc3VnZ2VzdGlvbnNcbiAgICAgICAgaWYgKHN1Z2dlc3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLnRyaWdnZXJSZWY/Lm9wZW5QYW5lbCgpXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3IgPSBlcnJvci5tZXNzYWdlXG4gICAgICAgIHJldHVybiBvZihbXSlcbiAgICAgIH0pLFxuICAgICAgZmluYWxpemUoKCkgPT4gKHRoaXMuc2VhcmNoaW5nID0gZmFsc2UpKVxuICAgIClcblxuICAgIHRoaXMuc3VnZ2VzdGlvbnMkID0gbWVyZ2UoXG4gICAgICBzdWdnZXN0aW9uc0Zyb21BY3Rpb24sXG4gICAgICAvLyBpZiBhIG5ldyB2YWx1ZSBpcyB1bmRlciB0aGUgbWluIGNoYXIgY291bnQsIGNsZWFyIHN1Z2dlc3Rpb25zXG4gICAgICBuZXdWYWx1ZSQucGlwZShcbiAgICAgICAgZmlsdGVyKCh2YWx1ZTogc3RyaW5nKSA9PiB2YWx1ZS5sZW5ndGggPCB0aGlzLm1pbkNoYXJhY3RlckNvdW50KSxcbiAgICAgICAgbWFwKCgpID0+IFtdKVxuICAgICAgKVxuICAgIClcblxuICAgIC8vIGNsb3NlIHRoZSBwYW5lbCB3aGVuZXZlciBzdWdnZXN0aW9ucyBhcmUgY2xlYXJlZFxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMuc3VnZ2VzdGlvbnMkXG4gICAgICAgIC5waXBlKGZpbHRlcigoc3VnZ2VzdGlvbnMpID0+IHN1Z2dlc3Rpb25zLmxlbmd0aCA9PT0gMCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudHJpZ2dlclJlZj8uY2xvc2VQYW5lbCgpXG4gICAgICAgIH0pXG4gICAgKVxuXG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKGFueSkgPT4ge1xuICAgICAgICBpZiAoYW55ICE9PSAnJykge1xuICAgICAgICAgIHRoaXMuY2FuY2VsRW50ZXIgPSBmYWxzZVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcblxuICAgIHRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKGZpbHRlcigodmFsdWUpID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpKVxuICAgICAgLnN1YnNjcmliZSh0aGlzLmxhc3RJbnB1dFZhbHVlJClcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZS5vcHRpb25TZWxlY3RlZC5zdWJzY3JpYmUodGhpcy5zZWxlY3Rpb25TdWJqZWN0KVxuICAgIGlmICh0aGlzLmF1dG9Gb2N1cykge1xuICAgICAgdGhpcy5pbnB1dFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKClcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgfVxuXG4gICAgdGhpcy5zdGFydFRyYWNraW5nUG9zaXRpb24oKVxuICB9XG5cbiAgLyoqXG4gICAqICEhISBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgb25seSBmb3Igd2ViIGNvbXBvbmVudCBtb2RlLFxuICAgKiB0aGUgYXV0b2NvbXBsZXRlIGRyb3Bkb3duIG1heSBub3QgdXBkYXRlIGl0cyBwb3NpdGlvblxuICAgKiBpZiB0aGUgcGFnZSBvciBjb250YWluZXIgaXMgZGlzYWJsaW5nIHdpbmQgc2Nyb2xsLlxuICAgKi9cbiAgcHJpdmF0ZSB0cmFja1Bvc2l0aW9uID0gKCkgPT4ge1xuICAgIGNvbnN0IGRyb3Bkb3duT3BlbmVkID0gdGhpcy50cmlnZ2VyUmVmICYmIHRoaXMudHJpZ2dlclJlZi5wYW5lbE9wZW5cbiAgICBjb25zdCByZWN0ID0gdGhpcy5pbnB1dFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG5cbiAgICBpZiAoXG4gICAgICBkcm9wZG93bk9wZW5lZCAmJlxuICAgICAgKCF0aGlzLmxhc3RQb3NpdGlvbiB8fFxuICAgICAgICByZWN0LnRvcCAhPT0gdGhpcy5sYXN0UG9zaXRpb24udG9wIHx8XG4gICAgICAgIHJlY3QubGVmdCAhPT0gdGhpcy5sYXN0UG9zaXRpb24ubGVmdClcbiAgICApIHtcbiAgICAgIHRoaXMudHJpZ2dlclJlZi51cGRhdGVQb3NpdGlvbigpXG4gICAgfVxuXG4gICAgdGhpcy5sYXN0UG9zaXRpb24gPSByZWN0XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMudHJhY2tQb3NpdGlvbilcbiAgfVxuXG4gIC8qKlxuICAgKiAhISEgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIG9ubHkgZm9yIHdlYiBjb21wb25lbnQgbW9kZSxcbiAgICogdGhlIGF1dG9jb21wbGV0ZSBkcm9wZG93biBtYXkgbm90IHVwZGF0ZSBpdHMgcG9zaXRpb25cbiAgICogaWYgdGhlIHBhZ2Ugb3IgY29udGFpbmVyIGlzIGRpc2FibGluZyB3aW5kIHNjcm9sbC5cbiAgICovXG4gIHN0YXJ0VHJhY2tpbmdQb3NpdGlvbigpIHtcbiAgICBpZiAodGhpcy5mb3JjZVRyYWNrUG9zaXRpb24pIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLnRyYWNrUG9zaXRpb24pXG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKClcblxuICAgIGlmICh0aGlzLmludGVydmFsSWRQb3NpdGlvbikge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsSWRQb3NpdGlvbilcbiAgICB9XG4gIH1cblxuICB1cGRhdGVJbnB1dFZhbHVlKHZhbHVlOiBBdXRvY29tcGxldGVJdGVtKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsdWUpXG4gICAgfVxuICAgIGlmICh0aGlzLmlucHV0UmVmKSB7XG4gICAgICB0aGlzLmlucHV0UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAodmFsdWUgYXMgYW55KT8udGl0bGUgfHwgJydcbiAgICB9XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJ1xuICAgIHRoaXMuc2VhcmNoQWN0aXZlID0gZmFsc2VcbiAgICB0aGlzLmlzU2VhcmNoQWN0aXZlLmVtaXQoZmFsc2UpXG4gICAgdGhpcy5pbnB1dENsZWFyZWQuZW1pdCgpXG4gICAgdGhpcy5zZWxlY3Rpb25TdWJqZWN0XG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgoc2VsZWN0aW9uKSA9PiBzZWxlY3Rpb24gJiYgc2VsZWN0aW9uLm9wdGlvbi5kZXNlbGVjdCgpKVxuICAgIHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpXG4gIH1cblxuICBoYW5kbGVFbnRlcihhbnk6IHN0cmluZykge1xuICAgIGlmICghdGhpcy5jYW5jZWxFbnRlciAmJiB0aGlzLmFsbG93U3VibWl0KSB7XG4gICAgICB0aGlzLmlzU2VhcmNoQWN0aXZlLmVtaXQodHJ1ZSlcbiAgICAgIHRoaXMuc2VhcmNoQWN0aXZlID0gdHJ1ZVxuICAgICAgdGhpcy5pbnB1dFN1Ym1pdHRlZC5lbWl0KGFueSlcbiAgICB9XG4gIH1cblxuICBoYW5kbGVDbGlja1NlYXJjaCgpIHtcbiAgICB0aGlzLmlucHV0U3VibWl0dGVkLmVtaXQodGhpcy5pbnB1dFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlKVxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gaXMgdHJpZ2dlcmVkIHdoZW4gYW4gaXRlbSBpcyBzZWxlY3RlZCBpbiB0aGUgbGlzdCBvZiBkaXNwbGF5ZWQgaXRlbXMuXG4gICAqIElmIHByZXZlbnRDb21wbGV0ZU9uU2VsZWN0aW9uIGlzIHRydWUgdGhlbiB0aGUgaW5wdXQgd2lsbCBiZSBsZWZ0IGFzIGVudGVyZWQgYnkgdGhlIHVzZXIuXG4gICAqIElmIHByZXZlbnRDb21wbGV0ZU9uU2VsZWN0aW9uIGlzIGZhbHNlIChieSBkZWZhdWx0KSB0aGVuIHRoZSBpbnB1dCB3aWxsIGJlIGNvbXBsZXRlZCB3aXRoIHRoZSBpdGVtIHNlbGVjdGVkIGJ5IHRoZSB1c2VyLlxuICAgKiBJZiBjbGVhck9uU2VsZWN0aW9uIGlzIHRydWUgdGhlbiB0aGUgaW5wdXQgd2lsbCBiZSBjbGVhcmVkIHVwb24gc2VsZWN0aW9uLlxuICAgKiBAcGFyYW0gZXZlbnRcbiAgICovXG4gIGhhbmRsZVNlbGVjdGlvbihldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCkge1xuICAgIHRoaXMuY2FuY2VsRW50ZXIgPSB0cnVlXG4gICAgdGhpcy5pdGVtU2VsZWN0ZWQuZW1pdChldmVudC5vcHRpb24udmFsdWUpXG4gICAgaWYgKHRoaXMucHJldmVudENvbXBsZXRlT25TZWxlY3Rpb24pIHtcbiAgICAgIHRoaXMubGFzdElucHV0VmFsdWUkLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKChsYXN0SW5wdXRWYWx1ZSkgPT4ge1xuICAgICAgICB0aGlzLmlucHV0UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBsYXN0SW5wdXRWYWx1ZVxuICAgICAgfSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAodGhpcy5jbGVhck9uU2VsZWN0aW9uKSB7XG4gICAgICB0aGlzLmlucHV0UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJ1xuICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKCcnKVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUlucHV0KGV2ZW50OiBJbnB1dEV2ZW50KSB7XG4gICAgdGhpcy5zZWFyY2hBY3RpdmUgPSBmYWxzZVxuICAgIHRoaXMuaXNTZWFyY2hBY3RpdmUuZW1pdChmYWxzZSlcbiAgICB0aGlzLmVudGVyQnRuUG9zaXRpb24gPSBldmVudC50YXJnZXRbJ3ZhbHVlJ10ubGVuZ3RoICogOCArIDgwXG4gIH1cbn1cbiIsIjxzcGFuIGNsYXNzPVwidy1mdWxsIGlubGluZS1ibG9jayByZWxhdGl2ZVwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJhYnNvbHV0ZSBpbnNldC15LVstLWljb24tcGFkZGluZ10gbGVmdC1bLS1pY29uLXBhZGRpbmddIHctWy0taWNvbi13aWR0aF0gcG9pbnRlci1ldmVudHMtbm9uZVwiXG4gICAgKm5nSWY9XCIhYWxsb3dTdWJtaXRcIlxuICA+XG4gICAgPG5nLWljb24gbmFtZT1cImljb25vaXJTZWFyY2hcIiBjbGFzcz1cInRleHQtcHJpbWFyeSBzZWFyY2hcIj48L25nLWljb24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvd1wiPlxuICAgIDxpbnB1dFxuICAgICAgI3NlYXJjaElucHV0XG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBjbGFzcz1cImduLXVpLXRleHQtaW5wdXRcIlxuICAgICAgKGlucHV0KT1cImhhbmRsZUlucHV0KCRldmVudClcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG4gICAgICAoa2V5dXAuZW50ZXIpPVwiaGFuZGxlRW50ZXIoc2VhcmNoSW5wdXQudmFsdWUpXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3RleHQtcHJpbWFyeSc6IHNlYXJjaEFjdGl2ZSAmJiBlbnRlckJ1dHRvbixcbiAgICAgICAgJ3RleHQtZ3JheS05MDAnOiAhc2VhcmNoQWN0aXZlLFxuICAgICAgICAncHgtWy0taWNvbi13aWR0aF0nOiAhYWxsb3dTdWJtaXQsXG4gICAgICB9XCJcbiAgICAvPlxuICAgIDxnbi11aS1idXR0b25cbiAgICAgIHR5cGU9XCJncmF5XCJcbiAgICAgICpuZ0lmPVwic2VhcmNoSW5wdXQudmFsdWUgJiYgZGlzcGxheUVudGVyQnRuXCJcbiAgICAgIGV4dHJhQ2xhc3M9XCJ3LTMyIGgtOCAhb3BhY2l0eS0xMDBcIlxuICAgICAgW25nU3R5bGVdPVwieyBsZWZ0OiBlbnRlckJ0blBvc2l0aW9uICsgJ3B4JyB9XCJcbiAgICAgIGNsYXNzPVwiYWJzb2x1dGVcIlxuICAgICAgZGlzYWJsZWQ9XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8bmctaWNvblxuICAgICAgICBuYW1lPVwiaWNvbm9pckxvbmdBcnJvd0Rvd25MZWZ0XCJcbiAgICAgICAgY2xhc3M9XCIhdy00IHRleHQtZ3JheS05MDAgZm9udC1ib2xkXCJcbiAgICAgID48L25nLWljb24+XG4gICAgICA8c3BhbiB0cmFuc2xhdGUgY2xhc3M9XCJ0ZXh0LWJvbGQgdGV4dC1ncmF5LTkwMCBmb250LWJvbGRcIj5cbiAgICAgICAgRW50ZXIgdG8gc2VhcmNoXG4gICAgICA8L3NwYW4+XG4gICAgPC9nbi11aS1idXR0b24+XG4gIDwvZGl2PlxuICA8Z24tdWktYnV0dG9uXG4gICAgdHlwZT1cInByaW1hcnlcIlxuICAgIFtleHRyYUNsYXNzXT1cImdldEV4dHJhQ2xhc3MoKVwiXG4gICAgZGF0YS10ZXN0PVwiY2xlYXItYnRuXCJcbiAgICAqbmdJZj1cInNlYXJjaElucHV0LnZhbHVlXCJcbiAgICBhcmlhLWxhYmVsPVwiQ2xlYXJcIlxuICAgIChidXR0b25DbGljayk9XCJjbGVhcigpXCJcbiAgPlxuICAgIDxuZy1pY29uIGNsYXNzPVwidGV4dC13aGl0ZVwiIG5hbWU9XCJtYXRDbG9zZVwiPjwvbmctaWNvbj5cbiAgPC9nbi11aS1idXR0b24+XG4gIDxnbi11aS1idXR0b25cbiAgICB0eXBlPVwibGlnaHRcIlxuICAgIGV4dHJhQ2xhc3M9XCJib3JkZXItMCBib3JkZXItbC1bMXB4XSBib3JkZXItZ3JheS0zMDAgaG92ZXI6Ym9yZGVyLWdyYXktNTAwIHRleHQtcHJpbWFyeSBob3Zlcjp0ZXh0LXByaW1hcnktZGFya2VzdCBmb2N1czp0ZXh0LXByaW1hcnktZGFya2VzdCBhYnNvbHV0ZSBpbnNldC15LVstLWljb24tcGFkZGluZ10gcmlnaHQtWy0taWNvbi1wYWRkaW5nXVwiXG4gICAgYXJpYS1sYWJlbD1cIlRyaWdnZXIgc2VhcmNoXCJcbiAgICAqbmdJZj1cImFsbG93U3VibWl0XCJcbiAgICBkYXRhLXRlc3Q9XCJhdXRvY29tcGxldGUtc3VibWl0LWJ0blwiXG4gICAgKGJ1dHRvbkNsaWNrKT1cImhhbmRsZUNsaWNrU2VhcmNoKClcIlxuICA+XG4gICAgPG5nLWljb24gbmFtZT1cImljb25vaXJTZWFyY2hcIj48L25nLWljb24+XG4gIDwvZ24tdWktYnV0dG9uPlxuXG4gIDxnbi11aS1wb3B1cC1hbGVydFxuICAgICpuZ0lmPVwiZXJyb3JcIlxuICAgIGNsYXNzPVwiYWJzb2x1dGUgbXQtMiB3LWZ1bGwgdG9wLVsxMDAlXSBsZWZ0LTBcIlxuICAgIGljb249XCJtYXRFcnJvck91dGxpbmVPdXRsaW5lXCJcbiAgICBwb3NpdGlvbj1cInRvcFwiXG4gICAgdHlwZT1cIndhcm5pbmdcIlxuICA+XG4gICAgPHNwYW4gdHJhbnNsYXRlPnNlYXJjaC5hdXRvY29tcGxldGUuZXJyb3I8L3NwYW4+XG4gICAge3sgZXJyb3IgfX1cbiAgPC9nbi11aS1wb3B1cC1hbGVydD5cbjwvc3Bhbj5cblxuPG1hdC1hdXRvY29tcGxldGVcbiAgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIlxuICAob3B0aW9uU2VsZWN0ZWQpPVwiaGFuZGxlU2VsZWN0aW9uKCRldmVudClcIlxuICBbZGlzcGxheVdpdGhdPVwiZGlzcGxheVdpdGhGbkludGVybmFsXCJcbj5cbiAgPG1hdC1vcHRpb25cbiAgICAqbmdGb3I9XCJsZXQgc3VnZ2VzdGlvbiBvZiBzdWdnZXN0aW9ucyQgfCBhc3luY1wiXG4gICAgW3ZhbHVlXT1cInN1Z2dlc3Rpb25cIlxuICAgIGNsYXNzPVwicC0yIHN1Z2dlc3Rpb25cIlxuICA+XG4gICAge3sgZGlzcGxheVdpdGhGbkludGVybmFsKHN1Z2dlc3Rpb24pIH19XG4gIDwvbWF0LW9wdGlvbj5cbjwvbWF0LWF1dG9jb21wbGV0ZT5cbiJdfQ==
288
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvaW5wdXRzL3NyYy9saWIvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMvbGliL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDeEUsT0FBTyxFQUNMLGVBQWUsRUFDZixxQkFBcUIsRUFFckIsc0JBQXNCLEdBQ3ZCLE1BQU0sZ0NBQWdDLENBQUE7QUFDdkMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDaEYsT0FBTyxFQUNMLFVBQVUsRUFDVixZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixRQUFRLEVBQ1IsR0FBRyxFQUNILFNBQVMsRUFDVCxJQUFJLEVBQ0osR0FBRyxHQUNKLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUE7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7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blN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUsIFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuaW1wb3J0IHtcbiAgTWF0QXV0b2NvbXBsZXRlLFxuICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gIE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQsXG4gIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSdcbmltcG9ydCB7IGZpcnN0LCBtZXJnZSwgT2JzZXJ2YWJsZSwgb2YsIFJlcGxheVN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnXG5pbXBvcnQge1xuICBjYXRjaEVycm9yLFxuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaWx0ZXIsXG4gIGZpbmFsaXplLFxuICBtYXAsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFwLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IFBvcHVwQWxlcnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3dpZGdldHMvc3JjJ1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL2J1dHRvbi9idXR0b24uY29tcG9uZW50J1xuaW1wb3J0IHtcbiAgTmdJY29uQ29tcG9uZW50LFxuICBwcm92aWRlSWNvbnMsXG4gIHByb3ZpZGVOZ0ljb25zQ29uZmlnLFxufSBmcm9tICdAbmctaWNvbnMvY29yZSdcbmltcG9ydCB7IGljb25vaXJMb25nQXJyb3dEb3duTGVmdCwgaWNvbm9pclNlYXJjaCB9IGZyb20gJ0BuZy1pY29ucy9pY29ub2lyJ1xuaW1wb3J0IHsgbWF0Q2xvc2UgfSBmcm9tICdAbmctaWNvbnMvbWF0ZXJpYWwtaWNvbnMvYmFzZWxpbmUnXG5cbmV4cG9ydCB0eXBlIEF1dG9jb21wbGV0ZUl0ZW0gPSB1bmtub3duXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLWF1dG9jb21wbGV0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hdXRvY29tcGxldGUuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFBvcHVwQWxlcnRDb21wb25lbnQsXG4gICAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgTmdJY29uQ29tcG9uZW50LFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBwcm92aWRlSWNvbnMoe1xuICAgICAgaWNvbm9pclNlYXJjaCxcbiAgICAgIG1hdENsb3NlLFxuICAgICAgaWNvbm9pckxvbmdBcnJvd0Rvd25MZWZ0LFxuICAgIH0pLFxuICAgIHByb3ZpZGVOZ0ljb25zQ29uZmlnKHtcbiAgICAgIHNpemU6ICcxLjc1cmVtJyxcbiAgICB9KSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlc1xue1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nXG4gIEBJbnB1dCgpIGVudGVyQnV0dG9uID0gZmFsc2VcbiAgQElucHV0KCkgYWN0aW9uOiAodmFsdWU6IHN0cmluZykgPT4gT2JzZXJ2YWJsZTxBdXRvY29tcGxldGVJdGVtW10+XG4gIEBJbnB1dCgpIHZhbHVlPzogQXV0b2NvbXBsZXRlSXRlbVxuICBASW5wdXQoKSBjbGVhck9uU2VsZWN0aW9uID0gZmFsc2VcbiAgQElucHV0KCkgcHJldmVudENvbXBsZXRlT25TZWxlY3Rpb24gPSBmYWxzZVxuICBASW5wdXQoKSBhdXRvRm9jdXMgPSBmYWxzZVxuICBASW5wdXQoKSBtaW5DaGFyYWN0ZXJDb3VudD8gPSAzXG4gIC8vIHRoaXMgd2lsbCBzaG93IGEgc3VibWl0IGJ1dHRvbiBuZXh0IHRvIHRoZSBpbnB1dDsgaWYgZmFsc2UsIGEgc2VhcmNoIGljb24gd2lsbCBhcHBlYXIgb24gdGhlIGxlZnRcbiAgQElucHV0KCkgYWxsb3dTdWJtaXQgPSBmYWxzZVxuICBASW5wdXQoKSBmb3JjZVRyYWNrUG9zaXRpb24gPSBmYWxzZVxuICBAT3V0cHV0KCkgaXRlbVNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxBdXRvY29tcGxldGVJdGVtPigpXG4gIEBPdXRwdXQoKSBpbnB1dFN1Ym1pdHRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpXG4gIEBPdXRwdXQoKSBpbnB1dENsZWFyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KClcbiAgQE91dHB1dCgpIGlzU2VhcmNoQWN0aXZlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpXG4gIEBWaWV3Q2hpbGQoTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcikgdHJpZ2dlclJlZjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlclxuICBAVmlld0NoaWxkKE1hdEF1dG9jb21wbGV0ZSkgYXV0b2NvbXBsZXRlOiBNYXRBdXRvY29tcGxldGVcbiAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXQnKSBpbnB1dFJlZjogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PlxuXG4gIHNlYXJjaGluZzogYm9vbGVhblxuICBjb250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpXG4gIGNhbmNlbEVudGVyID0gdHJ1ZVxuICBzZWxlY3Rpb25TdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8TWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudD4oMSlcbiAgbGFzdElucHV0VmFsdWUkID0gbmV3IFJlcGxheVN1YmplY3Q8c3RyaW5nPigxKVxuICBlcnJvcjogc3RyaW5nIHwgbnVsbCA9IG51bGxcbiAgc3VnZ2VzdGlvbnMkOiBPYnNlcnZhYmxlPEF1dG9jb21wbGV0ZUl0ZW1bXT5cbiAgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpXG4gIHByaXZhdGUgbGFzdFBvc2l0aW9uOiBET01SZWN0IHwgbnVsbCA9IG51bGxcbiAgcHJpdmF0ZSBpbnRlcnZhbElkUG9zaXRpb246IG51bWJlciB8IHVuZGVmaW5lZFxuICBlbnRlckJ0blBvc2l0aW9uID0gMFxuICBzZWFyY2hBY3RpdmUgPSBmYWxzZVxuXG4gIEBJbnB1dCgpIGRpc3BsYXlXaXRoRm46IChpdGVtOiBBdXRvY29tcGxldGVJdGVtKSA9PiBzdHJpbmcgPSAoaXRlbSkgPT5cbiAgICBpdGVtLnRvU3RyaW5nKClcblxuICBnZXQgZGlzcGxheUVudGVyQnRuKCkge1xuICAgIHJldHVybiB0aGlzLmVudGVyQnV0dG9uICYmIHRoaXMuYWxsb3dTdWJtaXQgJiYgIXRoaXMuc2VhcmNoQWN0aXZlXG4gIH1cblxuICBkaXNwbGF5V2l0aEZuSW50ZXJuYWwgPSAoaXRlbT86IEF1dG9jb21wbGV0ZUl0ZW0pID0+IHtcbiAgICBpZiAoaXRlbSA9PT0gbnVsbCB8fCBpdGVtID09PSB1bmRlZmluZWQpIHJldHVybiBudWxsXG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheVdpdGhGbihpdGVtKVxuICB9XG5cbiAgZ2V0RXh0cmFDbGFzcygpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmFsbG93U3VibWl0KSB7XG4gICAgICBpZiAodGhpcy5lbnRlckJ1dHRvbikge1xuICAgICAgICByZXR1cm4gJ2JvcmRlciByb3VuZGVkLWxnIGFic29sdXRlIHctOCBoLTggcmlnaHQtW2NhbGModmFyKC0taWNvbi13aWR0aCkrdmFyKC0taWNvbi1wYWRkaW5nKSldIGluc2V0LXktWy0taWNvbi1wYWRkaW5nXSdcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAnYm9yZGVyIHJvdW5kZWQtbGcgYWJzb2x1dGUgdy04IGgtOCByaWdodC1bY2FsYyh2YXIoLS1pY29uLXdpZHRoKSswLjI1KnZhcigtLWljb24td2lkdGgpKV0gaW5zZXQteS1bY2FsYygwLjI1KnZhcigtLWljb24td2lkdGgpKV0nXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghdGhpcy5lbnRlckJ1dHRvbikge1xuICAgICAgICByZXR1cm4gJ2JvcmRlciByb3VuZGVkLWxnIGFic29sdXRlIHctOCBoLTggcmlnaHQtMiBpbnNldC15LTInXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAnYm9yZGVyIHJvdW5kZWQtbGcgYWJzb2x1dGUgdy04IGgtOCdcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgeyB2YWx1ZSB9ID0gY2hhbmdlc1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgY29uc3QgcHJldmlvdXNUZXh0VmFsdWUgPSB0aGlzLmRpc3BsYXlXaXRoRm5JbnRlcm5hbCh2YWx1ZS5wcmV2aW91c1ZhbHVlKVxuICAgICAgY29uc3QgY3VycmVudFRleHRWYWx1ZSA9IHRoaXMuZGlzcGxheVdpdGhGbkludGVybmFsKHZhbHVlLmN1cnJlbnRWYWx1ZSlcbiAgICAgIGlmIChwcmV2aW91c1RleHRWYWx1ZSAhPT0gY3VycmVudFRleHRWYWx1ZSkge1xuICAgICAgICBpZiAoY3VycmVudFRleHRWYWx1ZSkge1xuICAgICAgICAgIHRoaXMuc2VhcmNoQWN0aXZlID0gdHJ1ZVxuICAgICAgICAgIHRoaXMuaXNTZWFyY2hBY3RpdmUuZW1pdCh0cnVlKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VhcmNoQWN0aXZlID0gZmFsc2VcbiAgICAgICAgICB0aGlzLmlzU2VhcmNoQWN0aXZlLmVtaXQoZmFsc2UpXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVJbnB1dFZhbHVlKHZhbHVlLmN1cnJlbnRWYWx1ZSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBuZXdWYWx1ZSQgPSBtZXJnZShcbiAgICAgIG9mKCcnKSxcbiAgICAgIHRoaXMuaW5wdXRDbGVhcmVkLnBpcGUobWFwKCgpID0+ICcnKSksXG4gICAgICB0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgIGZpbHRlcigodmFsdWUpID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBkZWJvdW5jZVRpbWUoNDAwKVxuICAgICAgKVxuICAgIClcblxuICAgIGNvbnN0IGV4dGVybmFsVmFsdWVDaGFuZ2UkID0gdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgZmlsdGVyKCh2YWx1ZSkgPT4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZS50aXRsZSksXG4gICAgICBtYXAoKGl0ZW0pID0+IGl0ZW0udGl0bGUpXG4gICAgKVxuXG4gICAgLy8gdGhpcyBvYnNlcnZhYmxlIGVtaXRzIGFycmF5cyBvZiBzdWdnZXN0aW9ucyBsb2FkZWQgdXNpbmcgdGhlIGdpdmVuIGFjdGlvblxuICAgIGNvbnN0IHN1Z2dlc3Rpb25zRnJvbUFjdGlvbiA9IG1lcmdlKFxuICAgICAgbmV3VmFsdWUkLnBpcGUoXG4gICAgICAgIGZpbHRlcigodmFsdWU6IHN0cmluZykgPT4gdmFsdWUubGVuZ3RoID49IHRoaXMubWluQ2hhcmFjdGVyQ291bnQpXG4gICAgICApLFxuICAgICAgZXh0ZXJuYWxWYWx1ZUNoYW5nZSRcbiAgICApLnBpcGUoXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICB0aGlzLnNlYXJjaGluZyA9IHRydWVcbiAgICAgICAgdGhpcy5lcnJvciA9IG51bGxcbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKCh2YWx1ZSkgPT4gdGhpcy5hY3Rpb24odmFsdWUpKSxcbiAgICAgIHRhcCgoc3VnZ2VzdGlvbnMpID0+IHtcbiAgICAgICAgLy8gZm9yY2luZyB0aGUgcGFuZWwgdG8gb3BlbiBpZiB0aGVyZSBhcmUgc3VnZ2VzdGlvbnNcbiAgICAgICAgaWYgKHN1Z2dlc3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLnRyaWdnZXJSZWY/Lm9wZW5QYW5lbCgpXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3IgPSBlcnJvci5tZXNzYWdlXG4gICAgICAgIHJldHVybiBvZihbXSlcbiAgICAgIH0pLFxuICAgICAgZmluYWxpemUoKCkgPT4gKHRoaXMuc2VhcmNoaW5nID0gZmFsc2UpKVxuICAgIClcblxuICAgIHRoaXMuc3VnZ2VzdGlvbnMkID0gbWVyZ2UoXG4gICAgICBzdWdnZXN0aW9uc0Zyb21BY3Rpb24sXG4gICAgICAvLyBpZiBhIG5ldyB2YWx1ZSBpcyB1bmRlciB0aGUgbWluIGNoYXIgY291bnQsIGNsZWFyIHN1Z2dlc3Rpb25zXG4gICAgICBuZXdWYWx1ZSQucGlwZShcbiAgICAgICAgZmlsdGVyKCh2YWx1ZTogc3RyaW5nKSA9PiB2YWx1ZS5sZW5ndGggPCB0aGlzLm1pbkNoYXJhY3RlckNvdW50KSxcbiAgICAgICAgbWFwKCgpID0+IFtdKVxuICAgICAgKVxuICAgIClcblxuICAgIC8vIGNsb3NlIHRoZSBwYW5lbCB3aGVuZXZlciBzdWdnZXN0aW9ucyBhcmUgY2xlYXJlZFxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMuc3VnZ2VzdGlvbnMkXG4gICAgICAgIC5waXBlKGZpbHRlcigoc3VnZ2VzdGlvbnMpID0+IHN1Z2dlc3Rpb25zLmxlbmd0aCA9PT0gMCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudHJpZ2dlclJlZj8uY2xvc2VQYW5lbCgpXG4gICAgICAgIH0pXG4gICAgKVxuXG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKGFueSkgPT4ge1xuICAgICAgICBpZiAoYW55ICE9PSAnJykge1xuICAgICAgICAgIHRoaXMuY2FuY2VsRW50ZXIgPSBmYWxzZVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcblxuICAgIHRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKGZpbHRlcigodmFsdWUpID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpKVxuICAgICAgLnN1YnNjcmliZSh0aGlzLmxhc3RJbnB1dFZhbHVlJClcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZS5vcHRpb25TZWxlY3RlZC5zdWJzY3JpYmUodGhpcy5zZWxlY3Rpb25TdWJqZWN0KVxuICAgIGlmICh0aGlzLmF1dG9Gb2N1cykge1xuICAgICAgdGhpcy5pbnB1dFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKClcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgfVxuXG4gICAgdGhpcy5zdGFydFRyYWNraW5nUG9zaXRpb24oKVxuICB9XG5cbiAgLyoqXG4gICAqICEhISBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgb25seSBmb3Igd2ViIGNvbXBvbmVudCBtb2RlLFxuICAgKiB0aGUgYXV0b2NvbXBsZXRlIGRyb3Bkb3duIG1heSBub3QgdXBkYXRlIGl0cyBwb3NpdGlvblxuICAgKiBpZiB0aGUgcGFnZSBvciBjb250YWluZXIgaXMgZGlzYWJsaW5nIHdpbmQgc2Nyb2xsLlxuICAgKi9cbiAgcHJpdmF0ZSB0cmFja1Bvc2l0aW9uID0gKCkgPT4ge1xuICAgIGNvbnN0IGRyb3Bkb3duT3BlbmVkID0gdGhpcy50cmlnZ2VyUmVmICYmIHRoaXMudHJpZ2dlclJlZi5wYW5lbE9wZW5cbiAgICBjb25zdCByZWN0ID0gdGhpcy5pbnB1dFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG5cbiAgICBpZiAoXG4gICAgICBkcm9wZG93bk9wZW5lZCAmJlxuICAgICAgKCF0aGlzLmxhc3RQb3NpdGlvbiB8fFxuICAgICAgICByZWN0LnRvcCAhPT0gdGhpcy5sYXN0UG9zaXRpb24udG9wIHx8XG4gICAgICAgIHJlY3QubGVmdCAhPT0gdGhpcy5sYXN0UG9zaXRpb24ubGVmdClcbiAgICApIHtcbiAgICAgIHRoaXMudHJpZ2dlclJlZi51cGRhdGVQb3NpdGlvbigpXG4gICAgfVxuXG4gICAgdGhpcy5sYXN0UG9zaXRpb24gPSByZWN0XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMudHJhY2tQb3NpdGlvbilcbiAgfVxuXG4gIC8qKlxuICAgKiAhISEgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIG9ubHkgZm9yIHdlYiBjb21wb25lbnQgbW9kZSxcbiAgICogdGhlIGF1dG9jb21wbGV0ZSBkcm9wZG93biBtYXkgbm90IHVwZGF0ZSBpdHMgcG9zaXRpb25cbiAgICogaWYgdGhlIHBhZ2Ugb3IgY29udGFpbmVyIGlzIGRpc2FibGluZyB3aW5kIHNjcm9sbC5cbiAgICovXG4gIHN0YXJ0VHJhY2tpbmdQb3NpdGlvbigpIHtcbiAgICBpZiAodGhpcy5mb3JjZVRyYWNrUG9zaXRpb24pIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLnRyYWNrUG9zaXRpb24pXG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKClcblxuICAgIGlmICh0aGlzLmludGVydmFsSWRQb3NpdGlvbikge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsSWRQb3NpdGlvbilcbiAgICB9XG4gIH1cblxuICB1cGRhdGVJbnB1dFZhbHVlKHZhbHVlOiBBdXRvY29tcGxldGVJdGVtKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsdWUpXG4gICAgfVxuICAgIGlmICh0aGlzLmlucHV0UmVmKSB7XG4gICAgICB0aGlzLmlucHV0UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAodmFsdWUgYXMgYW55KT8udGl0bGUgfHwgJydcbiAgICB9XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJ1xuICAgIHRoaXMuc2VhcmNoQWN0aXZlID0gZmFsc2VcbiAgICB0aGlzLmlzU2VhcmNoQWN0aXZlLmVtaXQoZmFsc2UpXG4gICAgdGhpcy5pbnB1dENsZWFyZWQuZW1pdCgpXG4gICAgdGhpcy5zZWxlY3Rpb25TdWJqZWN0XG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgoc2VsZWN0aW9uKSA9PiBzZWxlY3Rpb24gJiYgc2VsZWN0aW9uLm9wdGlvbi5kZXNlbGVjdCgpKVxuICAgIHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpXG4gIH1cblxuICBoYW5kbGVFbnRlcihhbnk6IHN0cmluZykge1xuICAgIGlmICghdGhpcy5jYW5jZWxFbnRlciAmJiB0aGlzLmFsbG93U3VibWl0KSB7XG4gICAgICB0aGlzLmlzU2VhcmNoQWN0aXZlLmVtaXQodHJ1ZSlcbiAgICAgIHRoaXMuc2VhcmNoQWN0aXZlID0gdHJ1ZVxuICAgICAgdGhpcy5pbnB1dFN1Ym1pdHRlZC5lbWl0KGFueSlcbiAgICB9XG4gIH1cblxuICBoYW5kbGVDbGlja1NlYXJjaCgpIHtcbiAgICB0aGlzLmlucHV0U3VibWl0dGVkLmVtaXQodGhpcy5pbnB1dFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlKVxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gaXMgdHJpZ2dlcmVkIHdoZW4gYW4gaXRlbSBpcyBzZWxlY3RlZCBpbiB0aGUgbGlzdCBvZiBkaXNwbGF5ZWQgaXRlbXMuXG4gICAqIElmIHByZXZlbnRDb21wbGV0ZU9uU2VsZWN0aW9uIGlzIHRydWUgdGhlbiB0aGUgaW5wdXQgd2lsbCBiZSBsZWZ0IGFzIGVudGVyZWQgYnkgdGhlIHVzZXIuXG4gICAqIElmIHByZXZlbnRDb21wbGV0ZU9uU2VsZWN0aW9uIGlzIGZhbHNlIChieSBkZWZhdWx0KSB0aGVuIHRoZSBpbnB1dCB3aWxsIGJlIGNvbXBsZXRlZCB3aXRoIHRoZSBpdGVtIHNlbGVjdGVkIGJ5IHRoZSB1c2VyLlxuICAgKiBJZiBjbGVhck9uU2VsZWN0aW9uIGlzIHRydWUgdGhlbiB0aGUgaW5wdXQgd2lsbCBiZSBjbGVhcmVkIHVwb24gc2VsZWN0aW9uLlxuICAgKiBAcGFyYW0gZXZlbnRcbiAgICovXG4gIGhhbmRsZVNlbGVjdGlvbihldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCkge1xuICAgIHRoaXMuY2FuY2VsRW50ZXIgPSB0cnVlXG4gICAgdGhpcy5pdGVtU2VsZWN0ZWQuZW1pdChldmVudC5vcHRpb24udmFsdWUpXG4gICAgaWYgKHRoaXMucHJldmVudENvbXBsZXRlT25TZWxlY3Rpb24pIHtcbiAgICAgIHRoaXMubGFzdElucHV0VmFsdWUkLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKChsYXN0SW5wdXRWYWx1ZSkgPT4ge1xuICAgICAgICB0aGlzLmlucHV0UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBsYXN0SW5wdXRWYWx1ZVxuICAgICAgfSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAodGhpcy5jbGVhck9uU2VsZWN0aW9uKSB7XG4gICAgICB0aGlzLmlucHV0UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJ1xuICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKCcnKVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUlucHV0KGV2ZW50OiBJbnB1dEV2ZW50KSB7XG4gICAgdGhpcy5zZWFyY2hBY3RpdmUgPSBmYWxzZVxuICAgIHRoaXMuaXNTZWFyY2hBY3RpdmUuZW1pdChmYWxzZSlcbiAgICB0aGlzLmVudGVyQnRuUG9zaXRpb24gPSBldmVudC50YXJnZXRbJ3ZhbHVlJ10ubGVuZ3RoICogOCArIDgwXG4gIH1cbn1cbiIsIjxzcGFuIGNsYXNzPVwidy1mdWxsIGlubGluZS1ibG9jayByZWxhdGl2ZVwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJhYnNvbHV0ZSBpbnNldC15LVstLWljb24tcGFkZGluZ10gbGVmdC1bLS1pY29uLXBhZGRpbmddIHctWy0taWNvbi13aWR0aF0gcG9pbnRlci1ldmVudHMtbm9uZVwiXG4gICAgKm5nSWY9XCIhYWxsb3dTdWJtaXRcIlxuICA+XG4gICAgPG5nLWljb24gbmFtZT1cImljb25vaXJTZWFyY2hcIiBjbGFzcz1cInRleHQtcHJpbWFyeSBzZWFyY2hcIj48L25nLWljb24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvd1wiPlxuICAgIDxpbnB1dFxuICAgICAgI3NlYXJjaElucHV0XG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBjbGFzcz1cImduLXVpLXRleHQtaW5wdXRcIlxuICAgICAgKGlucHV0KT1cImhhbmRsZUlucHV0KCRldmVudClcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG4gICAgICAoa2V5dXAuZW50ZXIpPVwiaGFuZGxlRW50ZXIoc2VhcmNoSW5wdXQudmFsdWUpXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3RleHQtcHJpbWFyeSc6IHNlYXJjaEFjdGl2ZSAmJiBlbnRlckJ1dHRvbixcbiAgICAgICAgJ3RleHQtZ3JheS05MDAnOiAhc2VhcmNoQWN0aXZlLFxuICAgICAgICAncHgtWy0taWNvbi13aWR0aF0nOiAhYWxsb3dTdWJtaXQsXG4gICAgICB9XCJcbiAgICAvPlxuICAgIDxnbi11aS1idXR0b25cbiAgICAgIHR5cGU9XCJncmF5XCJcbiAgICAgICpuZ0lmPVwic2VhcmNoSW5wdXQudmFsdWUgJiYgZGlzcGxheUVudGVyQnRuXCJcbiAgICAgIGV4dHJhQ2xhc3M9XCJ3LTMyIGgtOCAhb3BhY2l0eS0xMDBcIlxuICAgICAgW25nU3R5bGVdPVwieyBsZWZ0OiBlbnRlckJ0blBvc2l0aW9uICsgJ3B4JyB9XCJcbiAgICAgIGNsYXNzPVwiYWJzb2x1dGVcIlxuICAgICAgZGlzYWJsZWQ9XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8bmctaWNvblxuICAgICAgICBuYW1lPVwiaWNvbm9pckxvbmdBcnJvd0Rvd25MZWZ0XCJcbiAgICAgICAgY2xhc3M9XCIhdy00IHRleHQtZ3JheS05MDAgZm9udC1ib2xkXCJcbiAgICAgID48L25nLWljb24+XG4gICAgICA8c3BhbiB0cmFuc2xhdGUgY2xhc3M9XCJ0ZXh0LWJvbGQgdGV4dC1ncmF5LTkwMCBmb250LWJvbGRcIj5cbiAgICAgICAgRW50ZXIgdG8gc2VhcmNoXG4gICAgICA8L3NwYW4+XG4gICAgPC9nbi11aS1idXR0b24+XG4gIDwvZGl2PlxuICA8Z24tdWktYnV0dG9uXG4gICAgdHlwZT1cInByaW1hcnlcIlxuICAgIFtleHRyYUNsYXNzXT1cImdldEV4dHJhQ2xhc3MoKVwiXG4gICAgZGF0YS10ZXN0PVwiY2xlYXItYnRuXCJcbiAgICAqbmdJZj1cInNlYXJjaElucHV0LnZhbHVlXCJcbiAgICBhcmlhLWxhYmVsPVwiQ2xlYXJcIlxuICAgIChidXR0b25DbGljayk9XCJjbGVhcigpXCJcbiAgPlxuICAgIDxuZy1pY29uIGNsYXNzPVwidGV4dC13aGl0ZVwiIG5hbWU9XCJtYXRDbG9zZVwiPjwvbmctaWNvbj5cbiAgPC9nbi11aS1idXR0b24+XG4gIDxnbi11aS1idXR0b25cbiAgICB0eXBlPVwibGlnaHRcIlxuICAgIGV4dHJhQ2xhc3M9XCJib3JkZXItMCBib3JkZXItbC1bMXB4XSBib3JkZXItZ3JheS0zMDAgaG92ZXI6Ym9yZGVyLWdyYXktNTAwIHRleHQtcHJpbWFyeSBob3Zlcjp0ZXh0LXByaW1hcnktZGFya2VzdCBmb2N1czp0ZXh0LXByaW1hcnktZGFya2VzdCBhYnNvbHV0ZSBpbnNldC15LVstLWljb24tcGFkZGluZ10gcmlnaHQtWy0taWNvbi1wYWRkaW5nXVwiXG4gICAgYXJpYS1sYWJlbD1cIlRyaWdnZXIgc2VhcmNoXCJcbiAgICAqbmdJZj1cImFsbG93U3VibWl0XCJcbiAgICBkYXRhLXRlc3Q9XCJhdXRvY29tcGxldGUtc3VibWl0LWJ0blwiXG4gICAgKGJ1dHRvbkNsaWNrKT1cImhhbmRsZUNsaWNrU2VhcmNoKClcIlxuICA+XG4gICAgPG5nLWljb24gbmFtZT1cImljb25vaXJTZWFyY2hcIj48L25nLWljb24+XG4gIDwvZ24tdWktYnV0dG9uPlxuXG4gIDxnbi11aS1wb3B1cC1hbGVydFxuICAgICpuZ0lmPVwiZXJyb3JcIlxuICAgIGNsYXNzPVwiYWJzb2x1dGUgbXQtMiB3LWZ1bGwgdG9wLVsxMDAlXSBsZWZ0LTBcIlxuICAgIGljb249XCJtYXRFcnJvck91dGxpbmVPdXRsaW5lXCJcbiAgICBwb3NpdGlvbj1cInRvcFwiXG4gICAgdHlwZT1cIndhcm5pbmdcIlxuICA+XG4gICAgPHNwYW4gdHJhbnNsYXRlPnNlYXJjaC5hdXRvY29tcGxldGUuZXJyb3I8L3NwYW4+XG4gICAge3sgZXJyb3IgfX1cbiAgPC9nbi11aS1wb3B1cC1hbGVydD5cbjwvc3Bhbj5cblxuPG1hdC1hdXRvY29tcGxldGVcbiAgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIlxuICAob3B0aW9uU2VsZWN0ZWQpPVwiaGFuZGxlU2VsZWN0aW9uKCRldmVudClcIlxuICBbZGlzcGxheVdpdGhdPVwiZGlzcGxheVdpdGhGbkludGVybmFsXCJcbj5cbiAgPG1hdC1vcHRpb25cbiAgICAqbmdGb3I9XCJsZXQgc3VnZ2VzdGlvbiBvZiBzdWdnZXN0aW9ucyQgfCBhc3luY1wiXG4gICAgW3ZhbHVlXT1cInN1Z2dlc3Rpb25cIlxuICAgIGNsYXNzPVwicC0yIHN1Z2dlc3Rpb24gdGV4dC1zdGFydFwiXG4gID5cbiAgICB7eyBkaXNwbGF5V2l0aEZuSW50ZXJuYWwoc3VnZ2VzdGlvbikgfX1cbiAgPC9tYXQtb3B0aW9uPlxuPC9tYXQtYXV0b2NvbXBsZXRlPlxuIl19
@@ -0,0 +1,68 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { TranslateModule } from '@ngx-translate/core';
4
+ import { NgIcon, provideIcons, provideNgIconsConfig } from '@ng-icons/core';
5
+ import { FormsModule } from '@angular/forms';
6
+ import { of } from 'rxjs';
7
+ import { debounceTime, distinctUntilChanged, tap } from 'rxjs/operators';
8
+ import { createFuzzyFilter } from '../../../../../../libs/util/shared/src';
9
+ import { iconoirSearch } from '@ng-icons/iconoir';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/common";
12
+ import * as i2 from "@ngx-translate/core";
13
+ import * as i3 from "@angular/forms";
14
+ export class SearchFeatureCatalogComponent {
15
+ constructor() {
16
+ this.filteredFeatureCatalogChange = new EventEmitter();
17
+ this.filterAction = (searchTerm) => {
18
+ of(searchTerm)
19
+ .pipe(debounceTime(300), distinctUntilChanged(), tap(() => {
20
+ const filtered = (this.featureCatalog?.featureTypes || []).filter((featureType) => {
21
+ const fuzzyFilter = createFuzzyFilter(searchTerm);
22
+ return (fuzzyFilter(featureType.name) ||
23
+ (featureType.definition && fuzzyFilter(featureType.definition)));
24
+ });
25
+ this.filteredFeatureCatalog = {
26
+ ...this.featureCatalog,
27
+ featureTypes: filtered,
28
+ };
29
+ this.filteredFeatureCatalogChange.emit(this.filteredFeatureCatalog);
30
+ }))
31
+ .subscribe();
32
+ };
33
+ }
34
+ set featureCatalog(value) {
35
+ this._featureCatalog = value;
36
+ this.filteredFeatureCatalog = value;
37
+ }
38
+ get featureCatalog() {
39
+ return this._featureCatalog;
40
+ }
41
+ get totalObjects() {
42
+ return this.filteredFeatureCatalog?.featureTypes?.length || 0;
43
+ }
44
+ get totalAttributes() {
45
+ return (this.filteredFeatureCatalog?.featureTypes?.reduce((total, featureType) => total + (featureType.attributes?.length || 0), 0) || 0);
46
+ }
47
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchFeatureCatalogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
48
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SearchFeatureCatalogComponent, isStandalone: true, selector: "gn-ui-search-feature-catalog", inputs: { featureCatalog: "featureCatalog" }, outputs: { filteredFeatureCatalogChange: "filteredFeatureCatalogChange" }, ngImport: i0, template: "<div\n class=\"flex items-center justify-between p-3 mt-8 bg-white rounded-lg border-b solid border-gray-300\"\n>\n <div\n class=\"relative shrink-0\"\n *ngIf=\"featureCatalog?.featureTypes?.length > 1\"\n >\n <input\n type=\"text\"\n [placeholder]=\"'search.filter.into.feature.catalog' | translate\"\n class=\"w-[220px] h-8 pl-3 pr-10 py-2 border rounded-md\"\n [(ngModel)]=\"searchTerm\"\n (ngModelChange)=\"filterAction(searchTerm)\"\n />\n <ng-icon\n class=\"absolute right-2.5 top-1 w-6 h-6 text-black\"\n name=\"iconoirSearch\"\n ></ng-icon>\n </div>\n <div class=\"text-sm px-1 ml-auto hidden sm:inline\">\n <ng-container *ngIf=\"featureCatalog?.featureTypes?.length > 1\">\n <span\n class=\"text-sm font-medium text-gray-900\"\n data-cy=\"total-objects-label\"\n translate\n >record.feature.catalog.number.total.object</span\n ><span\n class=\"text-sm font-bold px-1 text-gray-900\"\n data-cy=\"total-objects\"\n >{{ totalObjects }}</span\n >\n <span class=\"px-1.5\">|</span>\n </ng-container>\n <span\n class=\"text-sm font-medium px-1 text-gray-900\"\n data-cy=\"total-attributes-label\"\n translate\n >record.feature.catalog.number.total.attribute</span\n ><span class=\"text-sm font-bold text-gray-900\" data-cy=\"total-attributes\">{{\n totalAttributes\n }}</span>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], viewProviders: [
49
+ provideIcons({ iconoirSearch }),
50
+ provideNgIconsConfig({
51
+ size: '1.5rem',
52
+ }),
53
+ ] }); }
54
+ }
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchFeatureCatalogComponent, decorators: [{
56
+ type: Component,
57
+ args: [{ selector: 'gn-ui-search-feature-catalog', standalone: true, imports: [CommonModule, NgIcon, TranslateModule, FormsModule], viewProviders: [
58
+ provideIcons({ iconoirSearch }),
59
+ provideNgIconsConfig({
60
+ size: '1.5rem',
61
+ }),
62
+ ], template: "<div\n class=\"flex items-center justify-between p-3 mt-8 bg-white rounded-lg border-b solid border-gray-300\"\n>\n <div\n class=\"relative shrink-0\"\n *ngIf=\"featureCatalog?.featureTypes?.length > 1\"\n >\n <input\n type=\"text\"\n [placeholder]=\"'search.filter.into.feature.catalog' | translate\"\n class=\"w-[220px] h-8 pl-3 pr-10 py-2 border rounded-md\"\n [(ngModel)]=\"searchTerm\"\n (ngModelChange)=\"filterAction(searchTerm)\"\n />\n <ng-icon\n class=\"absolute right-2.5 top-1 w-6 h-6 text-black\"\n name=\"iconoirSearch\"\n ></ng-icon>\n </div>\n <div class=\"text-sm px-1 ml-auto hidden sm:inline\">\n <ng-container *ngIf=\"featureCatalog?.featureTypes?.length > 1\">\n <span\n class=\"text-sm font-medium text-gray-900\"\n data-cy=\"total-objects-label\"\n translate\n >record.feature.catalog.number.total.object</span\n ><span\n class=\"text-sm font-bold px-1 text-gray-900\"\n data-cy=\"total-objects\"\n >{{ totalObjects }}</span\n >\n <span class=\"px-1.5\">|</span>\n </ng-container>\n <span\n class=\"text-sm font-medium px-1 text-gray-900\"\n data-cy=\"total-attributes-label\"\n translate\n >record.feature.catalog.number.total.attribute</span\n ><span class=\"text-sm font-bold text-gray-900\" data-cy=\"total-attributes\">{{\n totalAttributes\n }}</span>\n </div>\n</div>\n" }]
63
+ }], propDecorators: { featureCatalog: [{
64
+ type: Input
65
+ }], filteredFeatureCatalogChange: [{
66
+ type: Output
67
+ }] } });
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWZlYXR1cmUtY2F0YWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMvbGliL3NlYXJjaC1mZWF0dXJlLWNhdGFsb2cvc2VhcmNoLWZlYXR1cmUtY2F0YWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMvbGliL3NlYXJjaC1mZWF0dXJlLWNhdGFsb2cvc2VhcmNoLWZlYXR1cmUtY2F0YWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3RFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUUzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDNUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUN6QixPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFBO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTs7Ozs7QUFlakQsTUFBTSxPQUFPLDZCQUE2QjtJQWIxQztRQXdCWSxpQ0FBNEIsR0FDcEMsSUFBSSxZQUFZLEVBQXlCLENBQUE7UUFHM0MsaUJBQVksR0FBRyxDQUFDLFVBQWtCLEVBQVEsRUFBRTtZQUMxQyxFQUFFLENBQUMsVUFBVSxDQUFDO2lCQUNYLElBQUksQ0FDSCxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQ2pCLG9CQUFvQixFQUFFLEVBQ3RCLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1AsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQy9ELENBQUMsV0FBVyxFQUFFLEVBQUU7b0JBQ2QsTUFBTSxXQUFXLEdBQUcsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUE7b0JBQ2pELE9BQU8sQ0FDTCxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQzt3QkFDN0IsQ0FBQyxXQUFXLENBQUMsVUFBVSxJQUFJLFdBQVcsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FDaEUsQ0FBQTtnQkFDSCxDQUFDLENBQ0YsQ0FBQTtnQkFDRCxJQUFJLENBQUMsc0JBQXNCLEdBQUc7b0JBQzVCLEdBQUcsSUFBSSxDQUFDLGNBQWM7b0JBQ3RCLFlBQVksRUFBRSxRQUFRO2lCQUN2QixDQUFBO2dCQUNELElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUE7WUFDckUsQ0FBQyxDQUFDLENBQ0g7aUJBQ0EsU0FBUyxFQUFFLENBQUE7UUFDaEIsQ0FBQyxDQUFBO0tBY0Y7SUFqREMsSUFBYSxjQUFjLENBQUMsS0FBNEI7UUFDdEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUE7UUFDNUIsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQTtJQUNyQyxDQUFDO0lBQ0QsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQTtJQUM3QixDQUFDO0lBK0JELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixFQUFFLFlBQVksRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFBO0lBQy9ELENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxDQUNMLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUMvQyxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxFQUNyRSxDQUFDLENBQ0YsSUFBSSxDQUFDLENBQ1AsQ0FBQTtJQUNILENBQUM7K0dBbkRVLDZCQUE2QjttR0FBN0IsNkJBQTZCLGlOQ3hCMUMsNDdDQTJDQSx5REQzQlksWUFBWSxtSUFBRSxNQUFNLDRHQUFFLGVBQWUsa09BQUUsV0FBVyxvbUJBQzdDO1lBQ2IsWUFBWSxDQUFDLEVBQUUsYUFBYSxFQUFFLENBQUM7WUFDL0Isb0JBQW9CLENBQUM7Z0JBQ25CLElBQUksRUFBRSxRQUFRO2FBQ2YsQ0FBQztTQUNIOzs0RkFFVSw2QkFBNkI7a0JBYnpDLFNBQVM7K0JBQ0UsOEJBQThCLGNBRzVCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLFdBQVcsQ0FBQyxpQkFDOUM7d0JBQ2IsWUFBWSxDQUFDLEVBQUUsYUFBYSxFQUFFLENBQUM7d0JBQy9CLG9CQUFvQixDQUFDOzRCQUNuQixJQUFJLEVBQUUsUUFBUTt5QkFDZixDQUFDO3FCQUNIOzhCQUtZLGNBQWM7c0JBQTFCLEtBQUs7Z0JBUUksNEJBQTRCO3NCQUFyQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IE5nSWNvbiwgcHJvdmlkZUljb25zLCBwcm92aWRlTmdJY29uc0NvbmZpZyB9IGZyb20gJ0BuZy1pY29ucy9jb3JlJ1xuaW1wb3J0IHsgRGF0YXNldEZlYXR1cmVDYXRhbG9nIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3JtcydcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgY3JlYXRlRnV6enlGaWx0ZXIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYydcbmltcG9ydCB7IGljb25vaXJTZWFyY2ggfSBmcm9tICdAbmctaWNvbnMvaWNvbm9pcidcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ24tdWktc2VhcmNoLWZlYXR1cmUtY2F0YWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtZmVhdHVyZS1jYXRhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoLWZlYXR1cmUtY2F0YWxvZy5jb21wb25lbnQuY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE5nSWNvbiwgVHJhbnNsYXRlTW9kdWxlLCBGb3Jtc01vZHVsZV0sXG4gIHZpZXdQcm92aWRlcnM6IFtcbiAgICBwcm92aWRlSWNvbnMoeyBpY29ub2lyU2VhcmNoIH0pLFxuICAgIHByb3ZpZGVOZ0ljb25zQ29uZmlnKHtcbiAgICAgIHNpemU6ICcxLjVyZW0nLFxuICAgIH0pLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hGZWF0dXJlQ2F0YWxvZ0NvbXBvbmVudCB7XG4gIHByaXZhdGUgX2ZlYXR1cmVDYXRhbG9nOiBEYXRhc2V0RmVhdHVyZUNhdGFsb2dcbiAgc2VhcmNoVGVybTogYW55XG4gIEBJbnB1dCgpIHNldCBmZWF0dXJlQ2F0YWxvZyh2YWx1ZTogRGF0YXNldEZlYXR1cmVDYXRhbG9nKSB7XG4gICAgdGhpcy5fZmVhdHVyZUNhdGFsb2cgPSB2YWx1ZVxuICAgIHRoaXMuZmlsdGVyZWRGZWF0dXJlQ2F0YWxvZyA9IHZhbHVlXG4gIH1cbiAgZ2V0IGZlYXR1cmVDYXRhbG9nKCk6IERhdGFzZXRGZWF0dXJlQ2F0YWxvZyB7XG4gICAgcmV0dXJuIHRoaXMuX2ZlYXR1cmVDYXRhbG9nXG4gIH1cblxuICBAT3V0cHV0KCkgZmlsdGVyZWRGZWF0dXJlQ2F0YWxvZ0NoYW5nZSA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxEYXRhc2V0RmVhdHVyZUNhdGFsb2c+KClcbiAgZmlsdGVyZWRGZWF0dXJlQ2F0YWxvZzogRGF0YXNldEZlYXR1cmVDYXRhbG9nXG5cbiAgZmlsdGVyQWN0aW9uID0gKHNlYXJjaFRlcm06IHN0cmluZyk6IHZvaWQgPT4ge1xuICAgIG9mKHNlYXJjaFRlcm0pXG4gICAgICAucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDMwMCksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgZmlsdGVyZWQgPSAodGhpcy5mZWF0dXJlQ2F0YWxvZz8uZmVhdHVyZVR5cGVzIHx8IFtdKS5maWx0ZXIoXG4gICAgICAgICAgICAoZmVhdHVyZVR5cGUpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZnV6enlGaWx0ZXIgPSBjcmVhdGVGdXp6eUZpbHRlcihzZWFyY2hUZXJtKVxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIGZ1enp5RmlsdGVyKGZlYXR1cmVUeXBlLm5hbWUpIHx8XG4gICAgICAgICAgICAgICAgKGZlYXR1cmVUeXBlLmRlZmluaXRpb24gJiYgZnV6enlGaWx0ZXIoZmVhdHVyZVR5cGUuZGVmaW5pdGlvbikpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApXG4gICAgICAgICAgdGhpcy5maWx0ZXJlZEZlYXR1cmVDYXRhbG9nID0ge1xuICAgICAgICAgICAgLi4udGhpcy5mZWF0dXJlQ2F0YWxvZyxcbiAgICAgICAgICAgIGZlYXR1cmVUeXBlczogZmlsdGVyZWQsXG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZmlsdGVyZWRGZWF0dXJlQ2F0YWxvZ0NoYW5nZS5lbWl0KHRoaXMuZmlsdGVyZWRGZWF0dXJlQ2F0YWxvZylcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKVxuICB9XG5cbiAgZ2V0IHRvdGFsT2JqZWN0cygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmZpbHRlcmVkRmVhdHVyZUNhdGFsb2c/LmZlYXR1cmVUeXBlcz8ubGVuZ3RoIHx8IDBcbiAgfVxuXG4gIGdldCB0b3RhbEF0dHJpYnV0ZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5maWx0ZXJlZEZlYXR1cmVDYXRhbG9nPy5mZWF0dXJlVHlwZXM/LnJlZHVjZShcbiAgICAgICAgKHRvdGFsLCBmZWF0dXJlVHlwZSkgPT4gdG90YWwgKyAoZmVhdHVyZVR5cGUuYXR0cmlidXRlcz8ubGVuZ3RoIHx8IDApLFxuICAgICAgICAwXG4gICAgICApIHx8IDBcbiAgICApXG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcC0zIG10LTggYmctd2hpdGUgcm91bmRlZC1sZyBib3JkZXItYiBzb2xpZCBib3JkZXItZ3JheS0zMDBcIlxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJyZWxhdGl2ZSBzaHJpbmstMFwiXG4gICAgKm5nSWY9XCJmZWF0dXJlQ2F0YWxvZz8uZmVhdHVyZVR5cGVzPy5sZW5ndGggPiAxXCJcbiAgPlxuICAgIDxpbnB1dFxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cIidzZWFyY2guZmlsdGVyLmludG8uZmVhdHVyZS5jYXRhbG9nJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBjbGFzcz1cInctWzIyMHB4XSBoLTggcGwtMyBwci0xMCBweS0yIGJvcmRlciByb3VuZGVkLW1kXCJcbiAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGVybVwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJmaWx0ZXJBY3Rpb24oc2VhcmNoVGVybSlcIlxuICAgIC8+XG4gICAgPG5nLWljb25cbiAgICAgIGNsYXNzPVwiYWJzb2x1dGUgcmlnaHQtMi41IHRvcC0xIHctNiBoLTYgdGV4dC1ibGFja1wiXG4gICAgICBuYW1lPVwiaWNvbm9pclNlYXJjaFwiXG4gICAgPjwvbmctaWNvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtIHB4LTEgbWwtYXV0byBoaWRkZW4gc206aW5saW5lXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZlYXR1cmVDYXRhbG9nPy5mZWF0dXJlVHlwZXM/Lmxlbmd0aCA+IDFcIj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwidGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwXCJcbiAgICAgICAgZGF0YS1jeT1cInRvdGFsLW9iamVjdHMtbGFiZWxcIlxuICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgPnJlY29yZC5mZWF0dXJlLmNhdGFsb2cubnVtYmVyLnRvdGFsLm9iamVjdDwvc3BhblxuICAgICAgPjxzcGFuXG4gICAgICAgIGNsYXNzPVwidGV4dC1zbSBmb250LWJvbGQgcHgtMSB0ZXh0LWdyYXktOTAwXCJcbiAgICAgICAgZGF0YS1jeT1cInRvdGFsLW9iamVjdHNcIlxuICAgICAgICA+e3sgdG90YWxPYmplY3RzIH19PC9zcGFuXG4gICAgICA+XG4gICAgICA8c3BhbiBjbGFzcz1cInB4LTEuNVwiPnw8L3NwYW4+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwidGV4dC1zbSBmb250LW1lZGl1bSBweC0xIHRleHQtZ3JheS05MDBcIlxuICAgICAgZGF0YS1jeT1cInRvdGFsLWF0dHJpYnV0ZXMtbGFiZWxcIlxuICAgICAgdHJhbnNsYXRlXG4gICAgICA+cmVjb3JkLmZlYXR1cmUuY2F0YWxvZy5udW1iZXIudG90YWwuYXR0cmlidXRlPC9zcGFuXG4gICAgPjxzcGFuIGNsYXNzPVwidGV4dC1zbSBmb250LWJvbGQgdGV4dC1ncmF5LTkwMFwiIGRhdGEtY3k9XCJ0b3RhbC1hdHRyaWJ1dGVzXCI+e3tcbiAgICAgIHRvdGFsQXR0cmlidXRlc1xuICAgIH19PC9zcGFuPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -25,11 +25,11 @@ export class StarToggleComponent {
25
25
  event.preventDefault();
26
26
  }
27
27
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StarToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
28
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StarToggleComponent, isStandalone: true, selector: "gn-ui-star-toggle", inputs: { toggled: "toggled", disabled: "disabled" }, outputs: { newValue: "newValue" }, viewQueries: [{ propertyName: "overlay", first: true, predicate: ["starOverlay"], descendants: true }], ngImport: i0, template: "<div class=\"inline-block relative align-middle\" style=\"line-height: 0.7em\">\n <gn-ui-button\n [type]=\"'outline'\"\n [disabled]=\"disabled\"\n class=\"-m-[8px] p-[8px]\"\n (buttonClick)=\"toggle($event)\"\n [ngClass]=\"{\n enabled: toggled,\n disabled: !toggled || disabled,\n 'transition hover:scale-125 will-change-transform': !disabled,\n }\"\n >\n <ng-icon [name]=\"toggled ? 'matStar' : 'matStarBorder'\"></ng-icon>\n </gn-ui-button>\n <svg\n #starOverlay\n class=\"star-toggle-overlay\"\n width=\"40px\"\n height=\"40px\"\n viewBox=\"-15 -15 30 30\"\n >\n <g>\n <path d=\"M 0,13.229167 V 0\" />\n <path d=\"M -12.484186,4.0880377 0,0\" />\n <path d=\"M -7.6784102,-10.70262 0,0\" />\n <path d=\"M 7.8734079,-10.70262 0,0\" />\n <path d=\"M 12.679184,4.0880376 0,0\" />\n </g>\n </svg>\n</div>\n", styles: ["button.enabled{color:var(--star-toggle-enabled-color, var(--color-secondary))}button.disabled{color:var(--star-toggle-disabled-color, var(--color-primary))}.star-filled{font-variation-settings:\"FILL\" 1}.star-toggle-overlay{stroke:var(--color-secondary);stroke-width:3.5px;stroke-linecap:round;position:absolute;top:50%;left:50%;width:2.5em;height:2.5em;transform:translate(-50%,-50%);pointer-events:none;stroke-dasharray:5 20;stroke-dashoffset:-15;animation:overlay-dash .8s cubic-bezier(.16,.66,.44,.96) forwards;animation-play-state:paused}@keyframes overlay-dash{to{stroke-dashoffset:7}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }], viewProviders: [provideIcons({ matStar, matStarBorder })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
28
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StarToggleComponent, isStandalone: true, selector: "gn-ui-star-toggle", inputs: { toggled: "toggled", disabled: "disabled" }, outputs: { newValue: "newValue" }, viewQueries: [{ propertyName: "overlay", first: true, predicate: ["starOverlay"], descendants: true }], ngImport: i0, template: "<div class=\"inline-block relative align-middle\">\n <gn-ui-button\n [type]=\"'outline'\"\n [disabled]=\"disabled\"\n (buttonClick)=\"toggle($event)\"\n [ngClass]=\"{\n enabled: toggled,\n disabled: !toggled || disabled,\n 'transition hover:scale-125 will-change-transform': !disabled,\n }\"\n >\n <ng-icon [name]=\"toggled ? 'matStar' : 'matStarBorder'\"></ng-icon>\n </gn-ui-button>\n <svg\n #starOverlay\n class=\"star-toggle-overlay\"\n width=\"40px\"\n height=\"40px\"\n viewBox=\"-15 -15 30 30\"\n >\n <g>\n <path d=\"M 0,13.229167 V 0\" />\n <path d=\"M -12.484186,4.0880377 0,0\" />\n <path d=\"M -7.6784102,-10.70262 0,0\" />\n <path d=\"M 7.8734079,-10.70262 0,0\" />\n <path d=\"M 12.679184,4.0880376 0,0\" />\n </g>\n </svg>\n</div>\n", styles: ["button.enabled{color:var(--star-toggle-enabled-color, var(--color-secondary))}button.disabled{color:var(--star-toggle-disabled-color, var(--color-primary))}.star-filled{font-variation-settings:\"FILL\" 1}.star-toggle-overlay{stroke:var(--color-secondary);stroke-width:3.5px;stroke-linecap:round;position:absolute;top:50%;left:50%;width:2.5em;height:2.5em;transform:translate(-50%,-50%);pointer-events:none;stroke-dasharray:5 20;stroke-dashoffset:-15;animation:overlay-dash .8s cubic-bezier(.16,.66,.44,.96) forwards;animation-play-state:paused}@keyframes overlay-dash{to{stroke-dashoffset:7}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }], viewProviders: [provideIcons({ matStar, matStarBorder })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
29
29
  }
30
30
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StarToggleComponent, decorators: [{
31
31
  type: Component,
32
- args: [{ selector: 'gn-ui-star-toggle', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIcon, ButtonComponent], viewProviders: [provideIcons({ matStar, matStarBorder })], template: "<div class=\"inline-block relative align-middle\" style=\"line-height: 0.7em\">\n <gn-ui-button\n [type]=\"'outline'\"\n [disabled]=\"disabled\"\n class=\"-m-[8px] p-[8px]\"\n (buttonClick)=\"toggle($event)\"\n [ngClass]=\"{\n enabled: toggled,\n disabled: !toggled || disabled,\n 'transition hover:scale-125 will-change-transform': !disabled,\n }\"\n >\n <ng-icon [name]=\"toggled ? 'matStar' : 'matStarBorder'\"></ng-icon>\n </gn-ui-button>\n <svg\n #starOverlay\n class=\"star-toggle-overlay\"\n width=\"40px\"\n height=\"40px\"\n viewBox=\"-15 -15 30 30\"\n >\n <g>\n <path d=\"M 0,13.229167 V 0\" />\n <path d=\"M -12.484186,4.0880377 0,0\" />\n <path d=\"M -7.6784102,-10.70262 0,0\" />\n <path d=\"M 7.8734079,-10.70262 0,0\" />\n <path d=\"M 12.679184,4.0880376 0,0\" />\n </g>\n </svg>\n</div>\n", styles: ["button.enabled{color:var(--star-toggle-enabled-color, var(--color-secondary))}button.disabled{color:var(--star-toggle-disabled-color, var(--color-primary))}.star-filled{font-variation-settings:\"FILL\" 1}.star-toggle-overlay{stroke:var(--color-secondary);stroke-width:3.5px;stroke-linecap:round;position:absolute;top:50%;left:50%;width:2.5em;height:2.5em;transform:translate(-50%,-50%);pointer-events:none;stroke-dasharray:5 20;stroke-dashoffset:-15;animation:overlay-dash .8s cubic-bezier(.16,.66,.44,.96) forwards;animation-play-state:paused}@keyframes overlay-dash{to{stroke-dashoffset:7}}\n"] }]
32
+ args: [{ selector: 'gn-ui-star-toggle', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIcon, ButtonComponent], viewProviders: [provideIcons({ matStar, matStarBorder })], template: "<div class=\"inline-block relative align-middle\">\n <gn-ui-button\n [type]=\"'outline'\"\n [disabled]=\"disabled\"\n (buttonClick)=\"toggle($event)\"\n [ngClass]=\"{\n enabled: toggled,\n disabled: !toggled || disabled,\n 'transition hover:scale-125 will-change-transform': !disabled,\n }\"\n >\n <ng-icon [name]=\"toggled ? 'matStar' : 'matStarBorder'\"></ng-icon>\n </gn-ui-button>\n <svg\n #starOverlay\n class=\"star-toggle-overlay\"\n width=\"40px\"\n height=\"40px\"\n viewBox=\"-15 -15 30 30\"\n >\n <g>\n <path d=\"M 0,13.229167 V 0\" />\n <path d=\"M -12.484186,4.0880377 0,0\" />\n <path d=\"M -7.6784102,-10.70262 0,0\" />\n <path d=\"M 7.8734079,-10.70262 0,0\" />\n <path d=\"M 12.679184,4.0880376 0,0\" />\n </g>\n </svg>\n</div>\n", styles: ["button.enabled{color:var(--star-toggle-enabled-color, var(--color-secondary))}button.disabled{color:var(--star-toggle-disabled-color, var(--color-primary))}.star-filled{font-variation-settings:\"FILL\" 1}.star-toggle-overlay{stroke:var(--color-secondary);stroke-width:3.5px;stroke-linecap:round;position:absolute;top:50%;left:50%;width:2.5em;height:2.5em;transform:translate(-50%,-50%);pointer-events:none;stroke-dasharray:5 20;stroke-dashoffset:-15;animation:overlay-dash .8s cubic-bezier(.16,.66,.44,.96) forwards;animation-play-state:paused}@keyframes overlay-dash{to{stroke-dashoffset:7}}\n"] }]
33
33
  }], propDecorators: { toggled: [{
34
34
  type: Input
35
35
  }], disabled: [{
@@ -40,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
40
40
  type: ViewChild,
41
41
  args: ['starOverlay']
42
42
  }] } });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rhci10b2dnbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9pbnB1dHMvc3JjL2xpYi9zdGFyLXRvZ2dsZS9zdGFyLXRvZ2dsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMvbGliL3N0YXItdG9nZ2xlL3N0YXItdG9nZ2xlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFDaEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7OztBQVc1RCxNQUFNLE9BQU8sbUJBQW1CO0lBVGhDO1FBV1csYUFBUSxHQUFHLEtBQUssQ0FBQTtRQUNmLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFBO0tBZ0JqRDtJQWJDLE1BQU0sQ0FBQyxLQUFZO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7WUFDNUIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2pCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUMxRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUE7Z0JBQ2IsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO1lBQ2IsQ0FBQztZQUNELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNsQyxDQUFDO1FBQ0QsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDOUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFBO0lBQ3hCLENBQUM7K0dBbEJVLG1CQUFtQjttR0FBbkIsbUJBQW1CLDhRQ3hCaEMsODNCQThCQSwyb0JEVFksWUFBWSw2SEFBRSxNQUFNLDZHQUFFLGVBQWUsb0hBQ2hDLENBQUMsWUFBWSxDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7OzRGQUU5QyxtQkFBbUI7a0JBVC9CLFNBQVM7K0JBQ0UsbUJBQW1CLG1CQUdaLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxlQUFlLENBQUMsaUJBQ2pDLENBQUMsWUFBWSxDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7OEJBR2hELE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ21CLE9BQU87c0JBQWhDLFNBQVM7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgcHJvcGFnYXRlVG9Eb2N1bWVudE9ubHkgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYydcbmltcG9ydCB7IE5nSWNvbiwgcHJvdmlkZUljb25zIH0gZnJvbSAnQG5nLWljb25zL2NvcmUnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBtYXRTdGFyLCBtYXRTdGFyQm9yZGVyIH0gZnJvbSAnQG5nLWljb25zL21hdGVyaWFsLWljb25zL2Jhc2VsaW5lJ1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLXN0YXItdG9nZ2xlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0YXItdG9nZ2xlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3Rhci10b2dnbGUuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTmdJY29uLCBCdXR0b25Db21wb25lbnRdLFxuICB2aWV3UHJvdmlkZXJzOiBbcHJvdmlkZUljb25zKHsgbWF0U3RhciwgbWF0U3RhckJvcmRlciB9KV0sXG59KVxuZXhwb3J0IGNsYXNzIFN0YXJUb2dnbGVDb21wb25lbnQge1xuICBASW5wdXQoKSB0b2dnbGVkITogYm9vbGVhblxuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlXG4gIEBPdXRwdXQoKSBuZXdWYWx1ZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKVxuICBAVmlld0NoaWxkKCdzdGFyT3ZlcmxheScpIG92ZXJsYXk6IEVsZW1lbnRSZWZcblxuICB0b2dnbGUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnRvZ2dsZWQgPSAhdGhpcy50b2dnbGVkXG4gICAgICBpZiAodGhpcy50b2dnbGVkKSB7XG4gICAgICAgIGNvbnN0IGFuaW0gPSB0aGlzLm92ZXJsYXkubmF0aXZlRWxlbWVudC5nZXRBbmltYXRpb25zKClbMF1cbiAgICAgICAgYW5pbS5jYW5jZWwoKVxuICAgICAgICBhbmltLnBsYXkoKVxuICAgICAgfVxuICAgICAgdGhpcy5uZXdWYWx1ZS5lbWl0KHRoaXMudG9nZ2xlZClcbiAgICB9XG4gICAgcHJvcGFnYXRlVG9Eb2N1bWVudE9ubHkoZXZlbnQpXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaW5saW5lLWJsb2NrIHJlbGF0aXZlIGFsaWduLW1pZGRsZVwiIHN0eWxlPVwibGluZS1oZWlnaHQ6IDAuN2VtXCI+XG4gIDxnbi11aS1idXR0b25cbiAgICBbdHlwZV09XCInb3V0bGluZSdcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgY2xhc3M9XCItbS1bOHB4XSBwLVs4cHhdXCJcbiAgICAoYnV0dG9uQ2xpY2spPVwidG9nZ2xlKCRldmVudClcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgIGVuYWJsZWQ6IHRvZ2dsZWQsXG4gICAgICBkaXNhYmxlZDogIXRvZ2dsZWQgfHwgZGlzYWJsZWQsXG4gICAgICAndHJhbnNpdGlvbiBob3ZlcjpzY2FsZS0xMjUgd2lsbC1jaGFuZ2UtdHJhbnNmb3JtJzogIWRpc2FibGVkLFxuICAgIH1cIlxuICA+XG4gICAgPG5nLWljb24gW25hbWVdPVwidG9nZ2xlZCA/ICdtYXRTdGFyJyA6ICdtYXRTdGFyQm9yZGVyJ1wiPjwvbmctaWNvbj5cbiAgPC9nbi11aS1idXR0b24+XG4gIDxzdmdcbiAgICAjc3Rhck92ZXJsYXlcbiAgICBjbGFzcz1cInN0YXItdG9nZ2xlLW92ZXJsYXlcIlxuICAgIHdpZHRoPVwiNDBweFwiXG4gICAgaGVpZ2h0PVwiNDBweFwiXG4gICAgdmlld0JveD1cIi0xNSAtMTUgMzAgMzBcIlxuICA+XG4gICAgPGc+XG4gICAgICA8cGF0aCBkPVwiTSAwLDEzLjIyOTE2NyBWIDBcIiAvPlxuICAgICAgPHBhdGggZD1cIk0gLTEyLjQ4NDE4Niw0LjA4ODAzNzcgMCwwXCIgLz5cbiAgICAgIDxwYXRoIGQ9XCJNIC03LjY3ODQxMDIsLTEwLjcwMjYyIDAsMFwiIC8+XG4gICAgICA8cGF0aCBkPVwiTSA3Ljg3MzQwNzksLTEwLjcwMjYyIDAsMFwiIC8+XG4gICAgICA8cGF0aCBkPVwiTSAxMi42NzkxODQsNC4wODgwMzc2IDAsMFwiIC8+XG4gICAgPC9nPlxuICA8L3N2Zz5cbjwvZGl2PlxuIl19
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rhci10b2dnbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9pbnB1dHMvc3JjL2xpYi9zdGFyLXRvZ2dsZS9zdGFyLXRvZ2dsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMvbGliL3N0YXItdG9nZ2xlL3N0YXItdG9nZ2xlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFDaEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7OztBQVc1RCxNQUFNLE9BQU8sbUJBQW1CO0lBVGhDO1FBV1csYUFBUSxHQUFHLEtBQUssQ0FBQTtRQUNmLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFBO0tBZ0JqRDtJQWJDLE1BQU0sQ0FBQyxLQUFZO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7WUFDNUIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2pCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUMxRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUE7Z0JBQ2IsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO1lBQ2IsQ0FBQztZQUNELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNsQyxDQUFDO1FBQ0QsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDOUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFBO0lBQ3hCLENBQUM7K0dBbEJVLG1CQUFtQjttR0FBbkIsbUJBQW1CLDhRQ3hCaEMsaTBCQTZCQSwyb0JEUlksWUFBWSw2SEFBRSxNQUFNLDZHQUFFLGVBQWUsb0hBQ2hDLENBQUMsWUFBWSxDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7OzRGQUU5QyxtQkFBbUI7a0JBVC9CLFNBQVM7K0JBQ0UsbUJBQW1CLG1CQUdaLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxlQUFlLENBQUMsaUJBQ2pDLENBQUMsWUFBWSxDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7OEJBR2hELE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ21CLE9BQU87c0JBQWhDLFNBQVM7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgcHJvcGFnYXRlVG9Eb2N1bWVudE9ubHkgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYydcbmltcG9ydCB7IE5nSWNvbiwgcHJvdmlkZUljb25zIH0gZnJvbSAnQG5nLWljb25zL2NvcmUnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBtYXRTdGFyLCBtYXRTdGFyQm9yZGVyIH0gZnJvbSAnQG5nLWljb25zL21hdGVyaWFsLWljb25zL2Jhc2VsaW5lJ1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLXN0YXItdG9nZ2xlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0YXItdG9nZ2xlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3Rhci10b2dnbGUuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTmdJY29uLCBCdXR0b25Db21wb25lbnRdLFxuICB2aWV3UHJvdmlkZXJzOiBbcHJvdmlkZUljb25zKHsgbWF0U3RhciwgbWF0U3RhckJvcmRlciB9KV0sXG59KVxuZXhwb3J0IGNsYXNzIFN0YXJUb2dnbGVDb21wb25lbnQge1xuICBASW5wdXQoKSB0b2dnbGVkITogYm9vbGVhblxuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlXG4gIEBPdXRwdXQoKSBuZXdWYWx1ZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKVxuICBAVmlld0NoaWxkKCdzdGFyT3ZlcmxheScpIG92ZXJsYXk6IEVsZW1lbnRSZWZcblxuICB0b2dnbGUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnRvZ2dsZWQgPSAhdGhpcy50b2dnbGVkXG4gICAgICBpZiAodGhpcy50b2dnbGVkKSB7XG4gICAgICAgIGNvbnN0IGFuaW0gPSB0aGlzLm92ZXJsYXkubmF0aXZlRWxlbWVudC5nZXRBbmltYXRpb25zKClbMF1cbiAgICAgICAgYW5pbS5jYW5jZWwoKVxuICAgICAgICBhbmltLnBsYXkoKVxuICAgICAgfVxuICAgICAgdGhpcy5uZXdWYWx1ZS5lbWl0KHRoaXMudG9nZ2xlZClcbiAgICB9XG4gICAgcHJvcGFnYXRlVG9Eb2N1bWVudE9ubHkoZXZlbnQpXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaW5saW5lLWJsb2NrIHJlbGF0aXZlIGFsaWduLW1pZGRsZVwiPlxuICA8Z24tdWktYnV0dG9uXG4gICAgW3R5cGVdPVwiJ291dGxpbmUnXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIChidXR0b25DbGljayk9XCJ0b2dnbGUoJGV2ZW50KVwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgZW5hYmxlZDogdG9nZ2xlZCxcbiAgICAgIGRpc2FibGVkOiAhdG9nZ2xlZCB8fCBkaXNhYmxlZCxcbiAgICAgICd0cmFuc2l0aW9uIGhvdmVyOnNjYWxlLTEyNSB3aWxsLWNoYW5nZS10cmFuc2Zvcm0nOiAhZGlzYWJsZWQsXG4gICAgfVwiXG4gID5cbiAgICA8bmctaWNvbiBbbmFtZV09XCJ0b2dnbGVkID8gJ21hdFN0YXInIDogJ21hdFN0YXJCb3JkZXInXCI+PC9uZy1pY29uPlxuICA8L2duLXVpLWJ1dHRvbj5cbiAgPHN2Z1xuICAgICNzdGFyT3ZlcmxheVxuICAgIGNsYXNzPVwic3Rhci10b2dnbGUtb3ZlcmxheVwiXG4gICAgd2lkdGg9XCI0MHB4XCJcbiAgICBoZWlnaHQ9XCI0MHB4XCJcbiAgICB2aWV3Qm94PVwiLTE1IC0xNSAzMCAzMFwiXG4gID5cbiAgICA8Zz5cbiAgICAgIDxwYXRoIGQ9XCJNIDAsMTMuMjI5MTY3IFYgMFwiIC8+XG4gICAgICA8cGF0aCBkPVwiTSAtMTIuNDg0MTg2LDQuMDg4MDM3NyAwLDBcIiAvPlxuICAgICAgPHBhdGggZD1cIk0gLTcuNjc4NDEwMiwtMTAuNzAyNjIgMCwwXCIgLz5cbiAgICAgIDxwYXRoIGQ9XCJNIDcuODczNDA3OSwtMTAuNzAyNjIgMCwwXCIgLz5cbiAgICAgIDxwYXRoIGQ9XCJNIDEyLjY3OTE4NCw0LjA4ODAzNzYgMCwwXCIgLz5cbiAgICA8L2c+XG4gIDwvc3ZnPlxuPC9kaXY+XG4iXX0=
@@ -1,5 +1,6 @@
1
1
  export * from './lib/anchor-link/anchor-link.directive';
2
2
  export * from './lib/carousel/carousel.component';
3
+ export * from './lib/cell-popin/cell-popin.component';
3
4
  export * from './lib/expandable-panel-button/expandable-panel-button.component';
4
5
  export * from './lib/expandable-panel/expandable-panel.component';
5
6
  export * from './lib/form-field-wrapper/form-field-wrapper.component';
@@ -17,4 +18,4 @@ export * from './lib/previous-next-buttons/previous-next-buttons.component';
17
18
  export * from './lib/paginable.interface';
18
19
  export * from './lib/ui-layout.module';
19
20
  export * from './lib/truncated-text/truncated-text.component';
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2xheW91dC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5Q0FBeUMsQ0FBQTtBQUN2RCxjQUFjLG1DQUFtQyxDQUFBO0FBQ2pELGNBQWMsaUVBQWlFLENBQUE7QUFDL0UsY0FBYyxtREFBbUQsQ0FBQTtBQUNqRSxjQUFjLHVEQUF1RCxDQUFBO0FBQ3JFLGNBQWMscUNBQXFDLENBQUE7QUFDbkQsY0FBYyxxRkFBcUYsQ0FBQTtBQUNuRyxjQUFjLHFEQUFxRCxDQUFBO0FBQ25FLGNBQWMsNkNBQTZDLENBQUE7QUFDM0QsY0FBYyx1Q0FBdUMsQ0FBQTtBQUNyRCxjQUFjLDZDQUE2QyxDQUFBO0FBQzNELGNBQWMsMkNBQTJDLENBQUE7QUFDekQsY0FBYyx1Q0FBdUMsQ0FBQTtBQUNyRCxjQUFjLHVEQUF1RCxDQUFBO0FBQ3JFLGNBQWMsaURBQWlELENBQUE7QUFDL0QsY0FBYyw2REFBNkQsQ0FBQTtBQUMzRSxjQUFjLDJCQUEyQixDQUFBO0FBQ3pDLGNBQWMsd0JBQXdCLENBQUE7QUFDdEMsY0FBYywrQ0FBK0MsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2FuY2hvci1saW5rL2FuY2hvci1saW5rLmRpcmVjdGl2ZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Nhcm91c2VsL2Nhcm91c2VsLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2V4cGFuZGFibGUtcGFuZWwtYnV0dG9uL2V4cGFuZGFibGUtcGFuZWwtYnV0dG9uLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2V4cGFuZGFibGUtcGFuZWwvZXhwYW5kYWJsZS1wYW5lbC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3JtLWZpZWxkLXdyYXBwZXIvZm9ybS1maWVsZC13cmFwcGVyLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL21heC1saW5lcy9tYXgtbGluZXMuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJhY3RpdmUtdGFibGUvaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uL2ludGVyYWN0aXZlLXRhYmxlLWNvbHVtbi5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmFjdGl2ZS10YWJsZS9pbnRlcmFjdGl2ZS10YWJsZS5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdGlja3ktaGVhZGVyL3N0aWNreS1oZWFkZXIuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYmxvY2stbGlzdC9ibG9jay1saXN0LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NvcnRhYmxlLWxpc3Qvc29ydGFibGUtbGlzdC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RhbC1kaWFsb2cvbW9kYWwtZGlhbG9nLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wYWdpbmF0aW9uLWJ1dHRvbnMvcGFnaW5hdGlvbi1idXR0b25zLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BhZ2luYXRpb24tZG90cy9wYWdpbmF0aW9uLWRvdHMuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHJldmlvdXMtbmV4dC1idXR0b25zL3ByZXZpb3VzLW5leHQtYnV0dG9ucy5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wYWdpbmFibGUuaW50ZXJmYWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktbGF5b3V0Lm1vZHVsZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RydW5jYXRlZC10ZXh0L3RydW5jYXRlZC10ZXh0LmNvbXBvbmVudCdcbiJdfQ==
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2xheW91dC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5Q0FBeUMsQ0FBQTtBQUN2RCxjQUFjLG1DQUFtQyxDQUFBO0FBQ2pELGNBQWMsdUNBQXVDLENBQUE7QUFDckQsY0FBYyxpRUFBaUUsQ0FBQTtBQUMvRSxjQUFjLG1EQUFtRCxDQUFBO0FBQ2pFLGNBQWMsdURBQXVELENBQUE7QUFDckUsY0FBYyxxQ0FBcUMsQ0FBQTtBQUNuRCxjQUFjLHFGQUFxRixDQUFBO0FBQ25HLGNBQWMscURBQXFELENBQUE7QUFDbkUsY0FBYyw2Q0FBNkMsQ0FBQTtBQUMzRCxjQUFjLHVDQUF1QyxDQUFBO0FBQ3JELGNBQWMsNkNBQTZDLENBQUE7QUFDM0QsY0FBYywyQ0FBMkMsQ0FBQTtBQUN6RCxjQUFjLHVDQUF1QyxDQUFBO0FBQ3JELGNBQWMsdURBQXVELENBQUE7QUFDckUsY0FBYyxpREFBaUQsQ0FBQTtBQUMvRCxjQUFjLDZEQUE2RCxDQUFBO0FBQzNFLGNBQWMsMkJBQTJCLENBQUE7QUFDekMsY0FBYyx3QkFBd0IsQ0FBQTtBQUN0QyxjQUFjLCtDQUErQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvYW5jaG9yLWxpbmsvYW5jaG9yLWxpbmsuZGlyZWN0aXZlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2Fyb3VzZWwvY2Fyb3VzZWwuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2VsbC1wb3Bpbi9jZWxsLXBvcGluLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2V4cGFuZGFibGUtcGFuZWwtYnV0dG9uL2V4cGFuZGFibGUtcGFuZWwtYnV0dG9uLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2V4cGFuZGFibGUtcGFuZWwvZXhwYW5kYWJsZS1wYW5lbC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3JtLWZpZWxkLXdyYXBwZXIvZm9ybS1maWVsZC13cmFwcGVyLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL21heC1saW5lcy9tYXgtbGluZXMuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJhY3RpdmUtdGFibGUvaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uL2ludGVyYWN0aXZlLXRhYmxlLWNvbHVtbi5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmFjdGl2ZS10YWJsZS9pbnRlcmFjdGl2ZS10YWJsZS5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdGlja3ktaGVhZGVyL3N0aWNreS1oZWFkZXIuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYmxvY2stbGlzdC9ibG9jay1saXN0LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NvcnRhYmxlLWxpc3Qvc29ydGFibGUtbGlzdC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RhbC1kaWFsb2cvbW9kYWwtZGlhbG9nLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wYWdpbmF0aW9uLWJ1dHRvbnMvcGFnaW5hdGlvbi1idXR0b25zLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BhZ2luYXRpb24tZG90cy9wYWdpbmF0aW9uLWRvdHMuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHJldmlvdXMtbmV4dC1idXR0b25zL3ByZXZpb3VzLW5leHQtYnV0dG9ucy5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wYWdpbmFibGUuaW50ZXJmYWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdWktbGF5b3V0Lm1vZHVsZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RydW5jYXRlZC10ZXh0L3RydW5jYXRlZC10ZXh0LmNvbXBvbmVudCdcbiJdfQ==
@@ -0,0 +1,110 @@
1
+ import { Component, Input, ElementRef, ViewChild, ChangeDetectorRef, } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { provideIcons, NgIconComponent } from '@ng-icons/core';
4
+ import { iconoirReduce } from '@ng-icons/iconoir';
5
+ import { MatButtonModule } from '@angular/material/button';
6
+ import { OverlayModule, ScrollDispatcher, CdkScrollable, } from '@angular/cdk/overlay';
7
+ import { ButtonComponent } from '../../../../../../libs/ui/inputs/src';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/cdk/overlay";
10
+ import * as i2 from "@angular/common";
11
+ export class CellPopinComponent {
12
+ set activePopin(active) {
13
+ this._activePopin = !!active;
14
+ this.updateIntersectionObserver();
15
+ }
16
+ get activePopin() {
17
+ return this._activePopin;
18
+ }
19
+ constructor(scrollDispatcher, cdr) {
20
+ this.scrollDispatcher = scrollDispatcher;
21
+ this.cdr = cdr;
22
+ this.extraClass = '';
23
+ this.isOpen = false;
24
+ this.isVisible = true;
25
+ this.overlayPositions = [
26
+ {
27
+ originX: 'end',
28
+ originY: 'top',
29
+ overlayX: 'end',
30
+ overlayY: 'top',
31
+ },
32
+ {
33
+ originX: 'start',
34
+ originY: 'top',
35
+ overlayX: 'start',
36
+ overlayY: 'top',
37
+ },
38
+ ];
39
+ this.firstCheck = true;
40
+ this._activePopin = true;
41
+ }
42
+ ngAfterViewInit() {
43
+ if (!this.activePopin) {
44
+ return;
45
+ }
46
+ if (this.cdkScrollContainer) {
47
+ this.scrollDispatcher.register(this.cdkScrollContainer);
48
+ }
49
+ this.updateIntersectionObserver();
50
+ }
51
+ ngOnDestroy() {
52
+ this.intersectionObserver?.disconnect();
53
+ this.scrollDispatcher.deregister(this.cdkScrollContainer);
54
+ }
55
+ updateIntersectionObserver() {
56
+ if (!this.scrollContainer || !this.anchorRef) {
57
+ return;
58
+ }
59
+ if (this.intersectionObserver) {
60
+ this.intersectionObserver?.disconnect();
61
+ }
62
+ this.intersectionObserver = new IntersectionObserver(([entry]) => {
63
+ const visible = entry.intersectionRatio >= 1;
64
+ // Ignore first visibility if first time opening it
65
+ if (this.firstCheck && !visible) {
66
+ this.firstCheck = false;
67
+ return;
68
+ }
69
+ this.firstCheck = false;
70
+ if (this.isVisible !== visible) {
71
+ this.isVisible = visible;
72
+ this.cdr.detectChanges();
73
+ }
74
+ }, {
75
+ root: this.scrollContainer.nativeElement,
76
+ threshold: 1.0,
77
+ });
78
+ this.intersectionObserver.observe(this.anchorRef.nativeElement);
79
+ }
80
+ openOverlay() {
81
+ this.isOpen = true;
82
+ }
83
+ closeOverlay() {
84
+ this.isOpen = false;
85
+ }
86
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CellPopinComponent, deps: [{ token: i1.ScrollDispatcher }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
87
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CellPopinComponent, isStandalone: true, selector: "gn-ui-cell-popin", inputs: { extraClass: "extraClass", cdkScrollContainer: "cdkScrollContainer", scrollContainer: "scrollContainer", activePopin: "activePopin" }, providers: [provideIcons({ iconoirReduce })], viewQueries: [{ propertyName: "anchorRef", first: true, predicate: ["anchorRef"], descendants: true }], ngImport: i0, template: "<div\n class=\"h-full flex items-center justify-center\"\n cdkOverlayOrigin\n #anchorRef\n #trigger=\"cdkOverlayOrigin\"\n [class]=\"extraClass\"\n data-cy=\"cell-popin\"\n>\n <ng-content select=\"[cellContent]\"></ng-content>\n <ng-template\n *ngIf=\"activePopin\"\n cdkConnectedOverlay\n [cdkConnectedOverlayPush]=\"false\"\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayWidth]=\"'auto'\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\n (detach)=\"closeOverlay()\"\n >\n <div\n *ngIf=\"activePopin && isVisible\"\n class=\"bg-white shadow-lg border border-gray-300 relative\"\n data-cy=\"cell-popin-content\"\n >\n <ng-content select=\"[popinContent]\"></ng-content>\n <gn-ui-button\n data-cy=\"cell-popin-close\"\n [style.--gn-ui-button-background]=\"'bg-transparent'\"\n class=\"absolute top-2 right-2\"\n type=\"light\"\n (buttonClick)=\"closeOverlay()\"\n extraClass=\"w-10 h-8 px-1\"\n >\n <ng-icon name=\"iconoirReduce\" size=\"24\"></ng-icon>\n </gn-ui-button>\n </div>\n </ng-template>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }] }); }
88
+ }
89
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CellPopinComponent, decorators: [{
90
+ type: Component,
91
+ args: [{ selector: 'gn-ui-cell-popin', standalone: true, imports: [
92
+ CommonModule,
93
+ MatButtonModule,
94
+ OverlayModule,
95
+ ButtonComponent,
96
+ NgIconComponent,
97
+ ], providers: [provideIcons({ iconoirReduce })], template: "<div\n class=\"h-full flex items-center justify-center\"\n cdkOverlayOrigin\n #anchorRef\n #trigger=\"cdkOverlayOrigin\"\n [class]=\"extraClass\"\n data-cy=\"cell-popin\"\n>\n <ng-content select=\"[cellContent]\"></ng-content>\n <ng-template\n *ngIf=\"activePopin\"\n cdkConnectedOverlay\n [cdkConnectedOverlayPush]=\"false\"\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayWidth]=\"'auto'\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\n (detach)=\"closeOverlay()\"\n >\n <div\n *ngIf=\"activePopin && isVisible\"\n class=\"bg-white shadow-lg border border-gray-300 relative\"\n data-cy=\"cell-popin-content\"\n >\n <ng-content select=\"[popinContent]\"></ng-content>\n <gn-ui-button\n data-cy=\"cell-popin-close\"\n [style.--gn-ui-button-background]=\"'bg-transparent'\"\n class=\"absolute top-2 right-2\"\n type=\"light\"\n (buttonClick)=\"closeOverlay()\"\n extraClass=\"w-10 h-8 px-1\"\n >\n <ng-icon name=\"iconoirReduce\" size=\"24\"></ng-icon>\n </gn-ui-button>\n </div>\n </ng-template>\n</div>\n" }]
98
+ }], ctorParameters: () => [{ type: i1.ScrollDispatcher }, { type: i0.ChangeDetectorRef }], propDecorators: { extraClass: [{
99
+ type: Input
100
+ }], cdkScrollContainer: [{
101
+ type: Input
102
+ }], scrollContainer: [{
103
+ type: Input
104
+ }], anchorRef: [{
105
+ type: ViewChild,
106
+ args: ['anchorRef']
107
+ }], activePopin: [{
108
+ type: Input
109
+ }] } });
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC1wb3Bpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2xheW91dC9zcmMvbGliL2NlbGwtcG9waW4vY2VsbC1wb3Bpbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2xheW91dC9zcmMvbGliL2NlbGwtcG9waW4vY2VsbC1wb3Bpbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULEtBQUssRUFFTCxVQUFVLEVBRVYsU0FBUyxFQUVULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQzFELE9BQU8sRUFDTCxhQUFhLEVBRWIsZ0JBQWdCLEVBQ2hCLGFBQWEsR0FHZCxNQUFNLHNCQUFzQixDQUFBO0FBQzdCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTs7OztBQWV0RSxNQUFNLE9BQU8sa0JBQWtCO0lBNkI3QixJQUNJLFdBQVcsQ0FBQyxNQUEyQjtRQUN6QyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUE7UUFDNUIsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUE7SUFDbkMsQ0FBQztJQUNELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQTtJQUMxQixDQUFDO0lBRUQsWUFDVSxnQkFBa0MsRUFDbEMsR0FBc0I7UUFEdEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFr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QWtCO2tCQWQ5QixTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixlQUFlO3FCQUNoQixhQUNVLENBQUMsWUFBWSxDQUFDLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztxSEFLbkMsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFFa0IsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQXlCbEIsV0FBVztzQkFEZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBFbGVtZW50UmVmLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBJbmplY3RvcixcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBwcm92aWRlSWNvbnMsIE5nSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BuZy1pY29ucy9jb3JlJ1xuaW1wb3J0IHsgaWNvbm9pclJlZHVjZSB9IGZyb20gJ0BuZy1pY29ucy9pY29ub2lyJ1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJ1xuaW1wb3J0IHtcbiAgT3ZlcmxheU1vZHVsZSxcbiAgQ29ubmVjdGVkUG9zaXRpb24sXG4gIFNjcm9sbERpc3BhdGNoZXIsXG4gIENka1Njcm9sbGFibGUsXG4gIENka0Nvbm5lY3RlZE92ZXJsYXksXG4gIE92ZXJsYXlDb250YWluZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5J1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9pbnB1dHMvc3JjJ1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ24tdWktY2VsbC1wb3BpbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE92ZXJsYXlNb2R1bGUsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIE5nSWNvbkNvbXBvbmVudCxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbcHJvdmlkZUljb25zKHsgaWNvbm9pclJlZHVjZSB9KV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jZWxsLXBvcGluLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2VsbFBvcGluQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgZXh0cmFDbGFzcyA9ICcnXG4gIEBJbnB1dCgpIGNka1Njcm9sbENvbnRhaW5lciE6IENka1Njcm9sbGFibGVcbiAgQElucHV0KCkgc2Nyb2xsQ29udGFpbmVyITogRWxlbWVudFJlZlxuXG4gIEBWaWV3Q2hpbGQoJ2FuY2hvclJlZicpIGFuY2hvclJlZiE6IEVsZW1lbnRSZWZcblxuICBwcm90ZWN0ZWQgaXNPcGVuID0gZmFsc2VcbiAgcHJvdGVjdGVkIGlzVmlzaWJsZSA9IHRydWVcbiAgcHJvdGVjdGVkIG92ZXJsYXlQb3NpdGlvbnM6IENvbm5lY3RlZFBvc2l0aW9uW10gPSBbXG4gICAge1xuICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgIG92ZXJsYXlYOiAnZW5kJyxcbiAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgIH0sXG4gIF1cblxuICBwcml2YXRlIGZpcnN0Q2hlY2sgPSB0cnVlXG4gIHByaXZhdGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXI6IEludGVyc2VjdGlvbk9ic2VydmVyXG5cbiAgcHJpdmF0ZSBfYWN0aXZlUG9waW4gPSB0cnVlXG5cbiAgQElucHV0KClcbiAgc2V0IGFjdGl2ZVBvcGluKGFjdGl2ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2FjdGl2ZVBvcGluID0gISFhY3RpdmVcbiAgICB0aGlzLnVwZGF0ZUludGVyc2VjdGlvbk9ic2VydmVyKClcbiAgfVxuICBnZXQgYWN0aXZlUG9waW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVBvcGluXG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNjcm9sbERpc3BhdGNoZXI6IFNjcm9sbERpc3BhdGNoZXIsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKCF0aGlzLmFjdGl2ZVBvcGluKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAodGhpcy5jZGtTY3JvbGxDb250YWluZXIpIHtcbiAgICAgIHRoaXMuc2Nyb2xsRGlzcGF0Y2hlci5yZWdpc3Rlcih0aGlzLmNka1Njcm9sbENvbnRhaW5lcilcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZUludGVyc2VjdGlvbk9ic2VydmVyKClcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKVxuICAgIHRoaXMuc2Nyb2xsRGlzcGF0Y2hlci5kZXJlZ2lzdGVyKHRoaXMuY2RrU2Nyb2xsQ29udGFpbmVyKVxuICB9XG5cbiAgdXBkYXRlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKSB7XG4gICAgaWYgKCF0aGlzLnNjcm9sbENvbnRhaW5lciB8fCAhdGhpcy5hbmNob3JSZWYpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICh0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyKSB7XG4gICAgICB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyPy5kaXNjb25uZWN0KClcbiAgICB9XG5cbiAgICB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKFxuICAgICAgKFtlbnRyeV0pID0+IHtcbiAgICAgICAgY29uc3QgdmlzaWJsZSA9IGVudHJ5LmludGVyc2VjdGlvblJhdGlvID49IDFcblxuICAgICAgICAvLyBJZ25vcmUgZmlyc3QgdmlzaWJpbGl0eSBpZiBmaXJzdCB0aW1lIG9wZW5pbmcgaXRcbiAgICAgICAgaWYgKHRoaXMuZmlyc3RDaGVjayAmJiAhdmlzaWJsZSkge1xuICAgICAgICAgIHRoaXMuZmlyc3RDaGVjayA9IGZhbHNlXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZpcnN0Q2hlY2sgPSBmYWxzZVxuXG4gICAgICAgIGlmICh0aGlzLmlzVmlzaWJsZSAhPT0gdmlzaWJsZSkge1xuICAgICAgICAgIHRoaXMuaXNWaXNpYmxlID0gdmlzaWJsZVxuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICByb290OiB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LFxuICAgICAgICB0aHJlc2hvbGQ6IDEuMCxcbiAgICAgIH1cbiAgICApXG5cbiAgICB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyLm9ic2VydmUodGhpcy5hbmNob3JSZWYubmF0aXZlRWxlbWVudClcbiAgfVxuXG4gIG9wZW5PdmVybGF5KCkge1xuICAgIHRoaXMuaXNPcGVuID0gdHJ1ZVxuICB9XG5cbiAgY2xvc2VPdmVybGF5KCkge1xuICAgIHRoaXMuaXNPcGVuID0gZmFsc2VcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImgtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiXG4gIGNka092ZXJsYXlPcmlnaW5cbiAgI2FuY2hvclJlZlxuICAjdHJpZ2dlcj1cImNka092ZXJsYXlPcmlnaW5cIlxuICBbY2xhc3NdPVwiZXh0cmFDbGFzc1wiXG4gIGRhdGEtY3k9XCJjZWxsLXBvcGluXCJcbj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2NlbGxDb250ZW50XVwiPjwvbmctY29udGVudD5cbiAgPG5nLXRlbXBsYXRlXG4gICAgKm5nSWY9XCJhY3RpdmVQb3BpblwiXG4gICAgY2RrQ29ubmVjdGVkT3ZlcmxheVxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5UHVzaF09XCJmYWxzZVwiXG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwidHJpZ2dlclwiXG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcGVuXT1cImlzT3BlblwiXG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnNdPVwib3ZlcmxheVBvc2l0aW9uc1wiXG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlXaWR0aF09XCInYXV0bydcIlxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5RmxleGlibGVEaW1lbnNpb25zXT1cInRydWVcIlxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5R3Jvd0FmdGVyT3Blbl09XCJ0cnVlXCJcbiAgICAoZGV0YWNoKT1cImNsb3NlT3ZlcmxheSgpXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwiYWN0aXZlUG9waW4gJiYgaXNWaXNpYmxlXCJcbiAgICAgIGNsYXNzPVwiYmctd2hpdGUgc2hhZG93LWxnIGJvcmRlciBib3JkZXItZ3JheS0zMDAgcmVsYXRpdmVcIlxuICAgICAgZGF0YS1jeT1cImNlbGwtcG9waW4tY29udGVudFwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3BvcGluQ29udGVudF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8Z24tdWktYnV0dG9uXG4gICAgICAgIGRhdGEtY3k9XCJjZWxsLXBvcGluLWNsb3NlXCJcbiAgICAgICAgW3N0eWxlLi0tZ24tdWktYnV0dG9uLWJhY2tncm91bmRdPVwiJ2JnLXRyYW5zcGFyZW50J1wiXG4gICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgdG9wLTIgcmlnaHQtMlwiXG4gICAgICAgIHR5cGU9XCJsaWdodFwiXG4gICAgICAgIChidXR0b25DbGljayk9XCJjbG9zZU92ZXJsYXkoKVwiXG4gICAgICAgIGV4dHJhQ2xhc3M9XCJ3LTEwIGgtOCBweC0xXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWljb24gbmFtZT1cImljb25vaXJSZWR1Y2VcIiBzaXplPVwiMjRcIj48L25nLWljb24+XG4gICAgICA8L2duLXVpLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19