@net7/boilerplate-arianna 4.9.7 → 5.0.0

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 (216) hide show
  1. package/esm2022/lib/components/aw-facets-wrapper/aw-facets-wrapper.mjs +29 -0
  2. package/{esm2020 → esm2022}/lib/components/bubble-chart-wrapper/bubble-chart-wrapper.mjs +4 -4
  3. package/{esm2020 → esm2022}/lib/components/chart-tippy/chart-tippy.mjs +4 -4
  4. package/{esm2020 → esm2022}/lib/components/extended-tree/extended-tree.mjs +4 -4
  5. package/{esm2020 → esm2022}/lib/components/gallery-breadcrumbs-tooltip/gallery-breadcrumbs-tooltip.mjs +4 -4
  6. package/esm2022/lib/components/pdf-viewer/pdf-viewer.mjs +31 -0
  7. package/esm2022/lib/components/scheda-dropdown/scheda-dropdown.mjs +26 -0
  8. package/{esm2020 → esm2022}/lib/components/scheda-image-navigator/scheda-image-navigator.mjs +4 -4
  9. package/{esm2020 → esm2022}/lib/components/scheda-search/scheda-search.mjs +4 -4
  10. package/esm2022/lib/components/smart-breadcrumbs/smart-breadcrumbs.mjs +82 -0
  11. package/esm2022/lib/config/apollo.config.mjs +738 -0
  12. package/esm2022/lib/data-sources/autocomplete-wrapper.ds.mjs +48 -0
  13. package/esm2022/lib/data-sources/aw-facets-wrapper.ds.mjs +162 -0
  14. package/esm2022/lib/data-sources/bubble-chart.ds.mjs +95 -0
  15. package/esm2022/lib/data-sources/carousel.ds.mjs +74 -0
  16. package/esm2022/lib/data-sources/entita-nav.ds.mjs +74 -0
  17. package/esm2022/lib/data-sources/extended-tree.ds.mjs +157 -0
  18. package/esm2022/lib/data-sources/gallery-results.ds.mjs +103 -0
  19. package/esm2022/lib/data-sources/home-autocomplete.ds.mjs +80 -0
  20. package/esm2022/lib/data-sources/home-facets-wrapper.ds.mjs +190 -0
  21. package/esm2022/lib/data-sources/linked-objects.ds.mjs +219 -0
  22. package/{esm2020 → esm2022}/lib/data-sources/map.ds.mjs +1 -1
  23. package/{esm2020 → esm2022}/lib/data-sources/related-entities.ds.mjs +2 -2
  24. package/{esm2020 → esm2022}/lib/data-sources/scheda-breadcrumbs.ds.mjs +1 -1
  25. package/{esm2020 → esm2022}/lib/data-sources/scheda-dropdown.ds.mjs +1 -1
  26. package/esm2022/lib/data-sources/scheda-image-navigator.ds.mjs +82 -0
  27. package/{esm2020 → esm2022}/lib/data-sources/scheda-image.ds.mjs +1 -1
  28. package/esm2022/lib/data-sources/scheda-pdf.ds.mjs +54 -0
  29. package/esm2022/lib/data-sources/scheda-search.ds.mjs +141 -0
  30. package/{esm2020 → esm2022}/lib/data-sources/sidebar-header.ds.mjs +1 -1
  31. package/esm2022/lib/data-sources/timeline.ds.mjs +106 -0
  32. package/esm2022/lib/data-sources/tree.ds.mjs +154 -0
  33. package/esm2022/lib/event-handlers/autocomplete-wrapper.eh.mjs +18 -0
  34. package/esm2022/lib/event-handlers/aw-facets-wrapper.eh.mjs +88 -0
  35. package/esm2022/lib/event-handlers/bubble-chart.eh.mjs +98 -0
  36. package/esm2022/lib/event-handlers/chart-tippy.eh.mjs +64 -0
  37. package/{esm2020 → esm2022}/lib/event-handlers/entita-nav.eh.mjs +1 -1
  38. package/esm2022/lib/event-handlers/extended-tree.eh.mjs +23 -0
  39. package/esm2022/lib/event-handlers/gallery-results.eh.mjs +38 -0
  40. package/esm2022/lib/event-handlers/hero.eh.mjs +25 -0
  41. package/{esm2020 → esm2022}/lib/event-handlers/home-autocomplete.eh.mjs +1 -1
  42. package/esm2022/lib/event-handlers/home-facets-wrapper.eh.mjs +125 -0
  43. package/{esm2020 → esm2022}/lib/event-handlers/home-item-tags-wrapper.eh.mjs +1 -1
  44. package/esm2022/lib/event-handlers/linked-objects.eh.mjs +60 -0
  45. package/esm2022/lib/event-handlers/map.eh.mjs +23 -0
  46. package/{esm2020 → esm2022}/lib/event-handlers/scheda-breadcrumbs.eh.mjs +1 -1
  47. package/esm2022/lib/event-handlers/scheda-dropdown.eh.mjs +17 -0
  48. package/esm2022/lib/event-handlers/scheda-image-navigator.eh.mjs +18 -0
  49. package/esm2022/lib/event-handlers/scheda-pdf.eh.mjs +14 -0
  50. package/{esm2020 → esm2022}/lib/event-handlers/scheda-search.eh.mjs +1 -1
  51. package/{esm2020 → esm2022}/lib/event-handlers/sidebar-header.eh.mjs +1 -1
  52. package/esm2022/lib/event-handlers/timeline.eh.mjs +46 -0
  53. package/esm2022/lib/event-handlers/tree.eh.mjs +119 -0
  54. package/esm2022/lib/helpers/metadata.helper.mjs +89 -0
  55. package/esm2022/lib/helpers/node.helper.mjs +14 -0
  56. package/esm2022/lib/helpers/title.helper.mjs +12 -0
  57. package/esm2022/lib/layouts/collection-layout/collection-layout.ds.mjs +185 -0
  58. package/esm2022/lib/layouts/collection-layout/collection-layout.eh.mjs +27 -0
  59. package/{esm2020 → esm2022}/lib/layouts/collection-layout/collection-layout.mjs +5 -5
  60. package/esm2022/lib/layouts/entita-layout/entita-layout.ds.mjs +320 -0
  61. package/esm2022/lib/layouts/entita-layout/entita-layout.eh.mjs +119 -0
  62. package/{esm2020 → esm2022}/lib/layouts/entita-layout/entita-layout.mjs +5 -5
  63. package/{esm2020 → esm2022}/lib/layouts/gallery-layout/gallery-facets.config.mjs +3 -3
  64. package/esm2022/lib/layouts/gallery-layout/gallery-layout.ds.mjs +48 -0
  65. package/{esm2020 → esm2022}/lib/layouts/gallery-layout/gallery-layout.mjs +5 -5
  66. package/esm2022/lib/layouts/home-layout/home-layout.ds.mjs +298 -0
  67. package/esm2022/lib/layouts/home-layout/home-layout.eh.mjs +245 -0
  68. package/{esm2020 → esm2022}/lib/layouts/home-layout/home-layout.mjs +5 -5
  69. package/esm2022/lib/layouts/map-layout/map-layout.ds.mjs +122 -0
  70. package/esm2022/lib/layouts/map-layout/map-layout.eh.mjs +44 -0
  71. package/{esm2020 → esm2022}/lib/layouts/map-layout/map-layout.mjs +5 -5
  72. package/esm2022/lib/layouts/scheda-layout/scheda-layout.ds.mjs +472 -0
  73. package/esm2022/lib/layouts/scheda-layout/scheda-layout.eh.mjs +347 -0
  74. package/{esm2020 → esm2022}/lib/layouts/scheda-layout/scheda-layout.mjs +5 -5
  75. package/{esm2020 → esm2022}/lib/layouts/search-layout/search-facets.config.mjs +3 -3
  76. package/esm2022/lib/layouts/search-layout/search-layout.ds.mjs +306 -0
  77. package/esm2022/lib/layouts/search-layout/search-layout.eh.mjs +175 -0
  78. package/{esm2020 → esm2022}/lib/layouts/search-layout/search-layout.mjs +5 -5
  79. package/esm2022/lib/layouts/timeline-layout/timeline-layout.ds.mjs +143 -0
  80. package/esm2022/lib/layouts/timeline-layout/timeline-layout.eh.mjs +41 -0
  81. package/{esm2020 → esm2022}/lib/layouts/timeline-layout/timeline-layout.mjs +5 -5
  82. package/{esm2020 → esm2022}/lib/n7-boilerplate-arianna.module.mjs +48 -48
  83. package/{esm2020 → esm2022}/lib/search/aw-facet-inputs/aw-facet-input-checkbox.mjs +1 -1
  84. package/esm2022/lib/search/aw-facet-inputs/aw-facet-input-link.mjs +89 -0
  85. package/esm2022/lib/search/aw-facet-inputs/aw-facet-input.mjs +30 -0
  86. package/esm2022/lib/search/aw-search.model.mjs +331 -0
  87. package/esm2022/lib/search/aw-search.service.mjs +42 -0
  88. package/esm2022/lib/search/entity-links.helper.mjs +126 -0
  89. package/{fesm2020 → fesm2022}/net7-boilerplate-arianna.mjs +170 -159
  90. package/fesm2022/net7-boilerplate-arianna.mjs.map +1 -0
  91. package/lib/components/aw-facets-wrapper/aw-facets-wrapper.d.ts +1 -1
  92. package/lib/components/bubble-chart-wrapper/bubble-chart-wrapper.d.ts +1 -1
  93. package/lib/components/chart-tippy/chart-tippy.d.ts +1 -1
  94. package/lib/components/extended-tree/extended-tree.d.ts +2 -2
  95. package/lib/components/gallery-breadcrumbs-tooltip/gallery-breadcrumbs-tooltip.d.ts +2 -2
  96. package/lib/components/pdf-viewer/pdf-viewer.d.ts +3 -3
  97. package/lib/components/scheda-dropdown/scheda-dropdown.d.ts +2 -2
  98. package/lib/components/scheda-image-navigator/scheda-image-navigator.d.ts +2 -2
  99. package/lib/components/scheda-search/scheda-search.d.ts +2 -2
  100. package/lib/components/smart-breadcrumbs/smart-breadcrumbs.d.ts +1 -1
  101. package/lib/config-types/arianna/app.d.ts +4 -4
  102. package/lib/config-types/arianna/layouts.d.ts +1 -1
  103. package/lib/data-sources/carousel.ds.d.ts +2 -2
  104. package/lib/data-sources/extended-tree.ds.d.ts +2 -2
  105. package/lib/layouts/collection-layout/collection-layout.d.ts +1 -1
  106. package/lib/layouts/collection-layout/collection-layout.types.d.ts +2 -2
  107. package/lib/layouts/entita-layout/entita-layout.d.ts +1 -1
  108. package/lib/layouts/entita-layout/entita-layout.types.d.ts +2 -2
  109. package/lib/layouts/gallery-layout/gallery-layout.d.ts +1 -1
  110. package/lib/layouts/home-layout/home-layout.d.ts +1 -1
  111. package/lib/layouts/map-layout/map-layout.d.ts +1 -1
  112. package/lib/layouts/map-layout/map-layout.ds.d.ts +1 -1
  113. package/lib/layouts/scheda-layout/scheda-layout.d.ts +1 -1
  114. package/lib/layouts/search-layout/search-layout.d.ts +1 -1
  115. package/lib/layouts/search-layout/search-layout.ds.d.ts +1 -1
  116. package/lib/layouts/timeline-layout/timeline-layout.d.ts +1 -1
  117. package/lib/layouts/timeline-layout/timeline-layout.ds.d.ts +1 -1
  118. package/lib/search/aw-search.model.d.ts +3 -3
  119. package/package.json +5 -11
  120. package/esm2020/lib/components/aw-facets-wrapper/aw-facets-wrapper.mjs +0 -29
  121. package/esm2020/lib/components/pdf-viewer/pdf-viewer.mjs +0 -31
  122. package/esm2020/lib/components/scheda-dropdown/scheda-dropdown.mjs +0 -26
  123. package/esm2020/lib/components/smart-breadcrumbs/smart-breadcrumbs.mjs +0 -82
  124. package/esm2020/lib/config/apollo.config.mjs +0 -738
  125. package/esm2020/lib/data-sources/autocomplete-wrapper.ds.mjs +0 -48
  126. package/esm2020/lib/data-sources/aw-facets-wrapper.ds.mjs +0 -162
  127. package/esm2020/lib/data-sources/bubble-chart.ds.mjs +0 -95
  128. package/esm2020/lib/data-sources/carousel.ds.mjs +0 -74
  129. package/esm2020/lib/data-sources/entita-nav.ds.mjs +0 -74
  130. package/esm2020/lib/data-sources/extended-tree.ds.mjs +0 -157
  131. package/esm2020/lib/data-sources/gallery-results.ds.mjs +0 -103
  132. package/esm2020/lib/data-sources/home-autocomplete.ds.mjs +0 -80
  133. package/esm2020/lib/data-sources/home-facets-wrapper.ds.mjs +0 -190
  134. package/esm2020/lib/data-sources/linked-objects.ds.mjs +0 -219
  135. package/esm2020/lib/data-sources/scheda-image-navigator.ds.mjs +0 -82
  136. package/esm2020/lib/data-sources/scheda-pdf.ds.mjs +0 -54
  137. package/esm2020/lib/data-sources/scheda-search.ds.mjs +0 -141
  138. package/esm2020/lib/data-sources/timeline.ds.mjs +0 -106
  139. package/esm2020/lib/data-sources/tree.ds.mjs +0 -154
  140. package/esm2020/lib/event-handlers/autocomplete-wrapper.eh.mjs +0 -18
  141. package/esm2020/lib/event-handlers/aw-facets-wrapper.eh.mjs +0 -88
  142. package/esm2020/lib/event-handlers/bubble-chart.eh.mjs +0 -98
  143. package/esm2020/lib/event-handlers/chart-tippy.eh.mjs +0 -64
  144. package/esm2020/lib/event-handlers/extended-tree.eh.mjs +0 -23
  145. package/esm2020/lib/event-handlers/gallery-results.eh.mjs +0 -38
  146. package/esm2020/lib/event-handlers/hero.eh.mjs +0 -25
  147. package/esm2020/lib/event-handlers/home-facets-wrapper.eh.mjs +0 -125
  148. package/esm2020/lib/event-handlers/linked-objects.eh.mjs +0 -60
  149. package/esm2020/lib/event-handlers/map.eh.mjs +0 -23
  150. package/esm2020/lib/event-handlers/scheda-dropdown.eh.mjs +0 -17
  151. package/esm2020/lib/event-handlers/scheda-image-navigator.eh.mjs +0 -18
  152. package/esm2020/lib/event-handlers/scheda-pdf.eh.mjs +0 -14
  153. package/esm2020/lib/event-handlers/timeline.eh.mjs +0 -46
  154. package/esm2020/lib/event-handlers/tree.eh.mjs +0 -119
  155. package/esm2020/lib/helpers/metadata.helper.mjs +0 -89
  156. package/esm2020/lib/helpers/node.helper.mjs +0 -14
  157. package/esm2020/lib/helpers/title.helper.mjs +0 -12
  158. package/esm2020/lib/layouts/collection-layout/collection-layout.ds.mjs +0 -185
  159. package/esm2020/lib/layouts/collection-layout/collection-layout.eh.mjs +0 -27
  160. package/esm2020/lib/layouts/entita-layout/entita-layout.ds.mjs +0 -320
  161. package/esm2020/lib/layouts/entita-layout/entita-layout.eh.mjs +0 -119
  162. package/esm2020/lib/layouts/gallery-layout/gallery-layout.ds.mjs +0 -48
  163. package/esm2020/lib/layouts/home-layout/home-layout.ds.mjs +0 -298
  164. package/esm2020/lib/layouts/home-layout/home-layout.eh.mjs +0 -245
  165. package/esm2020/lib/layouts/map-layout/map-layout.ds.mjs +0 -122
  166. package/esm2020/lib/layouts/map-layout/map-layout.eh.mjs +0 -44
  167. package/esm2020/lib/layouts/scheda-layout/scheda-layout.ds.mjs +0 -472
  168. package/esm2020/lib/layouts/scheda-layout/scheda-layout.eh.mjs +0 -347
  169. package/esm2020/lib/layouts/search-layout/search-layout.ds.mjs +0 -306
  170. package/esm2020/lib/layouts/search-layout/search-layout.eh.mjs +0 -175
  171. package/esm2020/lib/layouts/timeline-layout/timeline-layout.ds.mjs +0 -143
  172. package/esm2020/lib/layouts/timeline-layout/timeline-layout.eh.mjs +0 -41
  173. package/esm2020/lib/search/aw-facet-inputs/aw-facet-input-link.mjs +0 -89
  174. package/esm2020/lib/search/aw-facet-inputs/aw-facet-input.mjs +0 -30
  175. package/esm2020/lib/search/aw-search.model.mjs +0 -331
  176. package/esm2020/lib/search/aw-search.service.mjs +0 -42
  177. package/esm2020/lib/search/entity-links.helper.mjs +0 -126
  178. package/fesm2015/net7-boilerplate-arianna.mjs +0 -8551
  179. package/fesm2015/net7-boilerplate-arianna.mjs.map +0 -1
  180. package/fesm2020/net7-boilerplate-arianna.mjs.map +0 -1
  181. /package/{esm2020 → esm2022}/lib/components/index.mjs +0 -0
  182. /package/{esm2020 → esm2022}/lib/config-types/arianna/app.mjs +0 -0
  183. /package/{esm2020 → esm2022}/lib/config-types/arianna/index.mjs +0 -0
  184. /package/{esm2020 → esm2022}/lib/config-types/arianna/layouts.mjs +0 -0
  185. /package/{esm2020 → esm2022}/lib/config-types/index.mjs +0 -0
  186. /package/{esm2020 → esm2022}/lib/data-sources/chart-tippy.ds.mjs +0 -0
  187. /package/{esm2020 → esm2022}/lib/data-sources/entita-metadata-viewer.ds.mjs +0 -0
  188. /package/{esm2020 → esm2022}/lib/data-sources/hero.ds.mjs +0 -0
  189. /package/{esm2020 → esm2022}/lib/data-sources/home-hero-patrimonio.ds.mjs +0 -0
  190. /package/{esm2020 → esm2022}/lib/data-sources/home-item-tags-wrapper.ds.mjs +0 -0
  191. /package/{esm2020 → esm2022}/lib/data-sources/index.mjs +0 -0
  192. /package/{esm2020 → esm2022}/lib/data-sources/scheda-inner-title.ds.mjs +0 -0
  193. /package/{esm2020 → esm2022}/lib/data-sources/scheda-metadata.ds.mjs +0 -0
  194. /package/{esm2020 → esm2022}/lib/data-sources/search-layout-tabs.ds.mjs +0 -0
  195. /package/{esm2020 → esm2022}/lib/data-sources/table.ds.mjs +0 -0
  196. /package/{esm2020 → esm2022}/lib/event-handlers/home-hero-patrimonio.eh.mjs +0 -0
  197. /package/{esm2020 → esm2022}/lib/event-handlers/index.mjs +0 -0
  198. /package/{esm2020 → esm2022}/lib/event-handlers/search-layout-tabs.eh.mjs +0 -0
  199. /package/{esm2020 → esm2022}/lib/event-handlers/table.eh.mjs +0 -0
  200. /package/{esm2020 → esm2022}/lib/layouts/collection-layout/collection-layout.config.mjs +0 -0
  201. /package/{esm2020 → esm2022}/lib/layouts/collection-layout/collection-layout.types.mjs +0 -0
  202. /package/{esm2020 → esm2022}/lib/layouts/entita-layout/entita-layout.config.mjs +0 -0
  203. /package/{esm2020 → esm2022}/lib/layouts/entita-layout/entita-layout.types.mjs +0 -0
  204. /package/{esm2020 → esm2022}/lib/layouts/gallery-layout/gallery-layout.config.mjs +0 -0
  205. /package/{esm2020 → esm2022}/lib/layouts/gallery-layout/gallery-layout.eh.mjs +0 -0
  206. /package/{esm2020 → esm2022}/lib/layouts/home-layout/home-layout.config.mjs +0 -0
  207. /package/{esm2020 → esm2022}/lib/layouts/index.mjs +0 -0
  208. /package/{esm2020 → esm2022}/lib/layouts/map-layout/map-layout.config.mjs +0 -0
  209. /package/{esm2020 → esm2022}/lib/layouts/scheda-layout/scheda-layout.config.mjs +0 -0
  210. /package/{esm2020 → esm2022}/lib/layouts/search-layout/search-layout.config.mjs +0 -0
  211. /package/{esm2020 → esm2022}/lib/layouts/timeline-layout/timeline-layout.config.mjs +0 -0
  212. /package/{esm2020 → esm2022}/lib/search/aw-facet-inputs/aw-facet-input-select.mjs +0 -0
  213. /package/{esm2020 → esm2022}/lib/search/aw-facet-inputs/aw-facet-input-text.mjs +0 -0
  214. /package/{esm2020 → esm2022}/lib/search/aw-facet-inputs/index.mjs +0 -0
  215. /package/{esm2020 → esm2022}/net7-boilerplate-arianna.mjs +0 -0
  216. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
@@ -0,0 +1,141 @@
1
+ import { helpers } from '@net7/boilerplate-common';
2
+ import { DataSource } from '@net7/core';
3
+ import nodeHelper from '../helpers/node.helper';
4
+ const PAGE_LIMIT = 5;
5
+ export class AwSchedaSearchDS extends DataSource {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.transform = (nodes) => {
9
+ const { search, title, params, basePath, lite, configKeys, fallback, } = this.options || {};
10
+ const { totalCount } = nodes || {};
11
+ const page = params.page ? +params.page : 1;
12
+ const limit = params.limit ? +params.limit : 10;
13
+ // header
14
+ const header = {
15
+ title: {
16
+ main: {
17
+ text: title || 'Cerca nelle Aggregazioni Logiche',
18
+ }
19
+ }
20
+ };
21
+ // input
22
+ const input = {
23
+ id: 'scheda-search-input',
24
+ placeholder: search?.placeholder || 'Cerca...',
25
+ icon: 'n7-icon-search',
26
+ enterPayload: 'input-enter',
27
+ inputPayload: 'input-change'
28
+ };
29
+ // items
30
+ const items = (nodes?.items || []).map((item) => {
31
+ // breadcrumbs
32
+ const breadcrumbs = {
33
+ items: []
34
+ };
35
+ if (item.breadcrumbs) {
36
+ breadcrumbs.items = item.breadcrumbs.map(({ label, link: href }) => ({
37
+ label,
38
+ anchor: { href },
39
+ }));
40
+ }
41
+ return {
42
+ icon: nodeHelper.getNodeIcon(configKeys, item),
43
+ thumbnail: lite ? null : item.img,
44
+ label: item.label,
45
+ anchor: {
46
+ href: `${basePath}/${item.id}/${helpers.slugify(item.label)}`
47
+ },
48
+ breadcrumbs
49
+ };
50
+ });
51
+ // pagination
52
+ const pagination = nodes?.items?.length
53
+ ? this.getPagination(page, totalCount, limit)
54
+ : null;
55
+ // results limit select
56
+ const limitSelect = {
57
+ id: 'limit-select',
58
+ label: 'Numero di risultati',
59
+ options: [10, 25, 50].map((size) => ({
60
+ label: `${size}`,
61
+ value: size,
62
+ selected: size === limit
63
+ })),
64
+ payload: 'limit-select',
65
+ };
66
+ return {
67
+ header,
68
+ input,
69
+ items,
70
+ pagination,
71
+ limitSelect,
72
+ fallback: nodes ? fallback : null,
73
+ loading: false,
74
+ };
75
+ };
76
+ }
77
+ setLoading(loading) {
78
+ this.output.loading = loading;
79
+ }
80
+ getPagination(page, totalCount, limit) {
81
+ const pages = Math.ceil(totalCount / limit);
82
+ return {
83
+ links: this.getPaginationLinks(page, pages),
84
+ first: {
85
+ anchor: {
86
+ payload: 1,
87
+ },
88
+ classes: page === 1 ? 'is-disabled' : '',
89
+ },
90
+ prev: {
91
+ anchor: {
92
+ payload: page === 1 ? 1 : page - 1,
93
+ },
94
+ classes: page === 1 ? 'is-disabled' : ''
95
+ },
96
+ next: {
97
+ anchor: {
98
+ payload: page === pages ? pages : page + 1,
99
+ },
100
+ classes: page === pages ? 'is-disabled' : '',
101
+ },
102
+ last: {
103
+ anchor: {
104
+ payload: pages,
105
+ },
106
+ classes: page === pages ? 'is-disabled' : '',
107
+ }
108
+ };
109
+ }
110
+ getPaginationLinks(page, pages) {
111
+ let firstItem = 1;
112
+ const links = [];
113
+ const limit = PAGE_LIMIT;
114
+ let last = limit;
115
+ if (pages > limit) {
116
+ const steps = Math.floor(limit / 2);
117
+ if (page > steps) {
118
+ firstItem = page - steps;
119
+ }
120
+ if ((page + steps) > pages) {
121
+ firstItem = (pages - limit) + 1;
122
+ }
123
+ }
124
+ else {
125
+ last = pages;
126
+ }
127
+ let i;
128
+ for (i = 0; i < last; i += 1) {
129
+ const itemPage = firstItem + i;
130
+ links.push({
131
+ text: itemPage,
132
+ classes: itemPage === page ? 'is-disabled' : '',
133
+ anchor: {
134
+ payload: itemPage,
135
+ }
136
+ });
137
+ }
138
+ return links;
139
+ }
140
+ }
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWRhLXNlYXJjaC5kcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL243LWJvaWxlcnBsYXRlLWFyaWFubmEvc3JjL2xpYi9kYXRhLXNvdXJjZXMvc2NoZWRhLXNlYXJjaC5kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFJbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV4QyxPQUFPLFVBQVUsTUFBTSx3QkFBd0IsQ0FBQztBQUdoRCxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUM7QUFFckIsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFVBQVU7SUFBaEQ7O1FBQ1ksY0FBUyxHQUFHLENBQUMsS0FBb0IsRUFBb0IsRUFBRTtZQUMvRCxNQUFNLEVBQ0osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sUUFBUSxFQUNSLElBQUksRUFDSixVQUFVLEVBQ1YsUUFBUSxHQUNULEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7WUFDdkIsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDbkMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFFaEQsU0FBUztZQUNULE1BQU0sTUFBTSxHQUFtQjtnQkFDN0IsS0FBSyxFQUFFO29CQUNMLElBQUksRUFBRTt3QkFDSixJQUFJLEVBQUUsS0FBSyxJQUFJLGtDQUFrQztxQkFDbEQ7aUJBQ0Y7YUFDRixDQUFDO1lBRUYsUUFB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S0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNwQyxJQUFJLElBQUksR0FBRyxLQUFLLEVBQUUsQ0FBQztnQkFDakIsU0FBUyxHQUFHLElBQUksR0FBRyxLQUFLLENBQUM7WUFDM0IsQ0FBQztZQUVELElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUM7Z0JBQzNCLFNBQVMsR0FBRyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbEMsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxJQUFJLENBQUMsQ0FBQztRQUNOLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUM3QixNQUFNLFFBQVEsR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQy9CLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ1QsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsT0FBTyxFQUFFLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDL0MsTUFBTSxFQUFFO29CQUNOLE9BQU8sRUFBRSxRQUFRO2lCQUNsQjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGhlbHBlcnMgfSBmcm9tICdAbmV0Ny9ib2lsZXJwbGF0ZS1jb21tb24nO1xuaW1wb3J0IHtcbiAgQnV0dG9uLCBJbm5lclRpdGxlRGF0YSwgSW5wdXRTZWxlY3REYXRhLCBJbnB1dFRleHREYXRhLCBQYWdpbmF0aW9uRGF0YVxufSBmcm9tICdAbmV0Ny9jb21wb25lbnRzJztcbmltcG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tICdAbmV0Ny9jb3JlJztcbmltcG9ydCB7IFNjaGVkYVNlYXJjaERhdGEgfSBmcm9tICcuLi9jb21wb25lbnRzL3NjaGVkYS1zZWFyY2gvc2NoZWRhLXNlYXJjaCc7XG5pbXBvcnQgbm9kZUhlbHBlciBmcm9tICcuLi9oZWxwZXJzL25vZGUuaGVscGVyJztcbmltcG9ydCB7IE5vZGVzUmVzcG9uc2UgfSBmcm9tICcuL2V4dGVuZGVkLXRyZWUuZHMnO1xuXG5jb25zdCBQQUdFX0xJTUlUID0gNTtcblxuZXhwb3J0IGNsYXNzIEF3U2NoZWRhU2VhcmNoRFMgZXh0ZW5kcyBEYXRhU291cmNlIHtcbiAgcHJvdGVjdGVkIHRyYW5zZm9ybSA9IChub2RlczogTm9kZXNSZXNwb25zZSk6IFNjaGVkYVNlYXJjaERhdGEgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHNlYXJjaCxcbiAgICAgIHRpdGxlLFxuICAgICAgcGFyYW1zLFxuICAgICAgYmFzZVBhdGgsXG4gICAgICBsaXRlLFxuICAgICAgY29uZmlnS2V5cyxcbiAgICAgIGZhbGxiYWNrLFxuICAgIH0gPSB0aGlzLm9wdGlvbnMgfHwge307XG4gICAgY29uc3QgeyB0b3RhbENvdW50IH0gPSBub2RlcyB8fCB7fTtcbiAgICBjb25zdCBwYWdlID0gcGFyYW1zLnBhZ2UgPyArcGFyYW1zLnBhZ2UgOiAxO1xuICAgIGNvbnN0IGxpbWl0ID0gcGFyYW1zLmxpbWl0ID8gK3BhcmFtcy5saW1pdCA6IDEwO1xuXG4gICAgLy8gaGVhZGVyXG4gICAgY29uc3QgaGVhZGVyOiBJbm5lclRpdGxlRGF0YSA9IHtcbiAgICAgIHRpdGxlOiB7XG4gICAgICAgIG1haW46IHtcbiAgICAgICAgICB0ZXh0OiB0aXRsZSB8fCAnQ2VyY2EgbmVsbGUgQWdncmVnYXppb25pIExvZ2ljaGUnLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIGlucHV0XG4gICAgY29uc3QgaW5wdXQ6IElucHV0VGV4dERhdGEgPSB7XG4gICAgICBpZDogJ3NjaGVkYS1zZWFyY2gtaW5wdXQnLFxuICAgICAgcGxhY2Vob2xkZXI6IHNlYXJjaD8ucGxhY2Vob2xkZXIgfHwgJ0NlcmNhLi4uJyxcbiAgICAgIGljb246ICduNy1pY29uLXNlYXJjaCcsXG4gICAgICBlbnRlclBheWxvYWQ6ICdpbnB1dC1lbnRlcicsXG4gICAgICBpbnB1dFBheWxvYWQ6ICdpbnB1dC1jaGFuZ2UnXG4gICAgfTtcblxuICAgIC8vIGl0ZW1zXG4gICAgY29uc3QgaXRlbXMgPSAobm9kZXM/Lml0ZW1zIHx8IFtdKS5tYXAoKGl0ZW0pID0+IHtcbiAgICAgIC8vIGJyZWFkY3J1bWJzXG4gICAgICBjb25zdCBicmVhZGNydW1icyA9IHtcbiAgICAgICAgaXRlbXM6IFtdXG4gICAgICB9O1xuICAgICAgaWYgKGl0ZW0uYnJlYWRjcnVtYnMpIHtcbiAgICAgICAgYnJlYWRjcnVtYnMuaXRlbXMgPSBpdGVtLmJyZWFkY3J1bWJzLm1hcCgoeyBsYWJlbCwgbGluazogaHJlZiB9KSA9PiAoe1xuICAgICAgICAgIGxhYmVsLFxuICAgICAgICAgIGFuY2hvcjogeyBocmVmIH0sXG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGljb246IG5vZGVIZWxwZXIuZ2V0Tm9kZUljb24oY29uZmlnS2V5cywgaXRlbSksXG4gICAgICAgIHRodW1ibmFpbDogbGl0ZSA/IG51bGwgOiBpdGVtLmltZyxcbiAgICAgICAgbGFiZWw6IGl0ZW0ubGFiZWwsXG4gICAgICAgIGFuY2hvcjoge1xuICAgICAgICAgIGhyZWY6IGAke2Jhc2VQYXRofS8ke2l0ZW0uaWR9LyR7aGVscGVycy5zbHVnaWZ5KGl0ZW0ubGFiZWwpfWBcbiAgICAgICAgfSxcbiAgICAgICAgYnJlYWRjcnVtYnNcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvLyBwYWdpbmF0aW9uXG4gICAgY29uc3QgcGFnaW5hdGlvbjogUGFnaW5hdGlvbkRhdGEgPSBub2Rlcz8uaXRlbXM/Lmxlbmd0aFxuICAgICAgPyB0aGlzLmdldFBhZ2luYXRpb24ocGFnZSwgdG90YWxDb3VudCwgbGltaXQpXG4gICAgICA6IG51bGw7XG5cbiAgICAvLyByZXN1bHRzIGxpbWl0IHNlbGVjdFxuICAgIGNvbnN0IGxpbWl0U2VsZWN0OiBJbnB1dFNlbGVjdERhdGEgPSB7XG4gICAgICBpZDogJ2xpbWl0LXNlbGVjdCcsXG4gICAgICBsYWJlbDogJ051bWVybyBkaSByaXN1bHRhdGknLFxuICAgICAgb3B0aW9uczogWzEwLCAyNSwgNTBdLm1hcCgoc2l6ZSkgPT4gKHtcbiAgICAgICAgbGFiZWw6IGAke3NpemV9YCxcbiAgICAgICAgdmFsdWU6IHNpemUsXG4gICAgICAgIHNlbGVjdGVkOiBzaXplID09PSBsaW1pdFxuICAgICAgfSkpLFxuICAgICAgcGF5bG9hZDogJ2xpbWl0LXNlbGVjdCcsXG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgaGVhZGVyLFxuICAgICAgaW5wdXQsXG4gICAgICBpdGVtcyxcbiAgICAgIHBhZ2luYXRpb24sXG4gICAgICBsaW1pdFNlbGVjdCxcbiAgICAgIGZhbGxiYWNrOiBub2RlcyA/IGZhbGxiYWNrIDogbnVsbCxcbiAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgIH07XG4gIH07XG5cbiAgcHVibGljIHNldExvYWRpbmcobG9hZGluZzogYm9vbGVhbikge1xuICAgIHRoaXMub3V0cHV0LmxvYWRpbmcgPSBsb2FkaW5nO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYWdpbmF0aW9uKHBhZ2UsIHRvdGFsQ291bnQsIGxpbWl0KTogUGFnaW5hdGlvbkRhdGEge1xuICAgIGNvbnN0IHBhZ2VzID0gTWF0aC5jZWlsKHRvdGFsQ291bnQgLyBsaW1pdCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGlua3M6IHRoaXMuZ2V0UGFnaW5hdGlvbkxpbmtzKHBhZ2UsIHBhZ2VzKSxcbiAgICAgIGZpcnN0OiB7XG4gICAgICAgIGFuY2hvcjoge1xuICAgICAgICAgIHBheWxvYWQ6IDEsXG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzZXM6IHBhZ2UgPT09IDEgPyAnaXMtZGlzYWJsZWQnIDogJycsXG4gICAgICB9LFxuICAgICAgcHJldjoge1xuICAgICAgICBhbmNob3I6IHtcbiAgICAgICAgICBwYXlsb2FkOiBwYWdlID09PSAxID8gMSA6IHBhZ2UgLSAxLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc2VzOiBwYWdlID09PSAxID8gJ2lzLWRpc2FibGVkJyA6ICcnXG4gICAgICB9LFxuICAgICAgbmV4dDoge1xuICAgICAgICBhbmNob3I6IHtcbiAgICAgICAgICBwYXlsb2FkOiBwYWdlID09PSBwYWdlcyA/IHBhZ2VzIDogcGFnZSArIDEsXG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzZXM6IHBhZ2UgPT09IHBhZ2VzID8gJ2lzLWRpc2FibGVkJyA6ICcnLFxuICAgICAgfSxcbiAgICAgIGxhc3Q6IHtcbiAgICAgICAgYW5jaG9yOiB7XG4gICAgICAgICAgcGF5bG9hZDogcGFnZXMsXG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzZXM6IHBhZ2UgPT09IHBhZ2VzID8gJ2lzLWRpc2FibGVkJyA6ICcnLFxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldFBhZ2luYXRpb25MaW5rcyhwYWdlLCBwYWdlcyk6IEJ1dHRvbltdIHtcbiAgICBsZXQgZmlyc3RJdGVtID0gMTtcbiAgICBjb25zdCBsaW5rczogQnV0dG9uW10gPSBbXTtcbiAgICBjb25zdCBsaW1pdCA9IFBBR0VfTElNSVQ7XG4gICAgbGV0IGxhc3QgPSBsaW1pdDtcblxuICAgIGlmIChwYWdlcyA+IGxpbWl0KSB7XG4gICAgICBjb25zdCBzdGVwcyA9IE1hdGguZmxvb3IobGltaXQgLyAyKTtcbiAgICAgIGlmIChwYWdlID4gc3RlcHMpIHtcbiAgICAgICAgZmlyc3RJdGVtID0gcGFnZSAtIHN0ZXBzO1xuICAgICAgfVxuXG4gICAgICBpZiAoKHBhZ2UgKyBzdGVwcykgPiBwYWdlcykge1xuICAgICAgICBmaXJzdEl0ZW0gPSAocGFnZXMgLSBsaW1pdCkgKyAxO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsYXN0ID0gcGFnZXM7XG4gICAgfVxuXG4gICAgbGV0IGk7XG4gICAgZm9yIChpID0gMDsgaSA8IGxhc3Q7IGkgKz0gMSkge1xuICAgICAgY29uc3QgaXRlbVBhZ2UgPSBmaXJzdEl0ZW0gKyBpO1xuICAgICAgbGlua3MucHVzaCh7XG4gICAgICAgIHRleHQ6IGl0ZW1QYWdlLFxuICAgICAgICBjbGFzc2VzOiBpdGVtUGFnZSA9PT0gcGFnZSA/ICdpcy1kaXNhYmxlZCcgOiAnJyxcbiAgICAgICAgYW5jaG9yOiB7XG4gICAgICAgICAgcGF5bG9hZDogaXRlbVBhZ2UsXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBsaW5rcztcbiAgfVxufVxuIl19
@@ -21,4 +21,4 @@ export class AwSidebarHeaderDS extends DataSource {
21
21
  }
22
22
  }
23
23
  }
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci1oZWFkZXIuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uNy1ib2lsZXJwbGF0ZS1hcmlhbm5hL3NyYy9saWIvZGF0YS1zb3VyY2VzL3NpZGViYXItaGVhZGVyLmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFeEMsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFVBQVU7SUFDckMsU0FBUyxDQUFDLElBQUk7UUFDdEIsT0FBTztZQUNMLFFBQVEsRUFBRSxtQkFBbUI7WUFDN0IsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRTtZQUNyQixTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLHFCQUFxQjtZQUN6RSxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxjQUFjO1lBQ3pELE9BQU8sRUFBRSxRQUFRO1NBQ2xCLENBQUM7SUFDSixDQUFDO0lBRUQsYUFBYTtRQUNYLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDaEMsSUFBSSxXQUFXLENBQUMsT0FBTyxLQUFLLGFBQWEsRUFBRTtZQUN6QyxXQUFXLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQztZQUNyQyxXQUFXLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUFDO1NBQy9DO2FBQU07WUFDTCxXQUFXLENBQUMsT0FBTyxHQUFHLGFBQWEsQ0FBQztZQUNwQyxXQUFXLENBQUMsU0FBUyxHQUFHLG9CQUFvQixDQUFDO1NBQzlDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJ0BuZXQ3L2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgQXdTaWRlYmFySGVhZGVyRFMgZXh0ZW5kcyBEYXRhU291cmNlIHtcbiAgcHJvdGVjdGVkIHRyYW5zZm9ybShkYXRhKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGljb25MZWZ0OiAnbjctaWNvbi10cmVlLWljb24nLFxuICAgICAgdGV4dDogZGF0YS50ZXh0IHx8ICcnLFxuICAgICAgaWNvblJpZ2h0OiBkYXRhLmlzRXhwYW5kZWQgPyAnbjctaWNvbi1hbmdsZS1sZWZ0JyA6ICduNy1pY29uLWFuZ2xlLXJpZ2h0JyxcbiAgICAgIGNsYXNzZXM6IGRhdGEuaXNFeHBhbmRlZCA/ICdpcy1leHBhbmRlZCcgOiAnaXMtY29sbGFwc2VkJyxcbiAgICAgIHBheWxvYWQ6ICdoZWFkZXInLFxuICAgIH07XG4gIH1cblxuICB0b2dnbGVTaWRlYmFyKCkge1xuICAgIGNvbnN0IHNpZGViYXJEYXRhID0gdGhpcy5vdXRwdXQ7XG4gICAgaWYgKHNpZGViYXJEYXRhLmNsYXNzZXMgPT09ICdpcy1leHBhbmRlZCcpIHtcbiAgICAgIHNpZGViYXJEYXRhLmNsYXNzZXMgPSAnaXMtY29sbGFwc2VkJztcbiAgICAgIHNpZGViYXJEYXRhLmljb25SaWdodCA9ICduNy1pY29uLWFuZ2xlLXJpZ2h0JztcbiAgICB9IGVsc2Uge1xuICAgICAgc2lkZWJhckRhdGEuY2xhc3NlcyA9ICdpcy1leHBhbmRlZCc7XG4gICAgICBzaWRlYmFyRGF0YS5pY29uUmlnaHQgPSAnbjctaWNvbi1hbmdsZS1sZWZ0JztcbiAgICB9XG4gIH1cbn1cbiJdfQ==
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci1oZWFkZXIuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uNy1ib2lsZXJwbGF0ZS1hcmlhbm5hL3NyYy9saWIvZGF0YS1zb3VyY2VzL3NpZGViYXItaGVhZGVyLmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFeEMsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFVBQVU7SUFDckMsU0FBUyxDQUFDLElBQUk7UUFDdEIsT0FBTztZQUNMLFFBQVEsRUFBRSxtQkFBbUI7WUFDN0IsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRTtZQUNyQixTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLHFCQUFxQjtZQUN6RSxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxjQUFjO1lBQ3pELE9BQU8sRUFBRSxRQUFRO1NBQ2xCLENBQUM7SUFDSixDQUFDO0lBRUQsYUFBYTtRQUNYLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDaEMsSUFBSSxXQUFXLENBQUMsT0FBTyxLQUFLLGFBQWEsRUFBRSxDQUFDO1lBQzFDLFdBQVcsQ0FBQyxPQUFPLEdBQUcsY0FBYyxDQUFDO1lBQ3JDLFdBQVcsQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUM7UUFDaEQsQ0FBQzthQUFNLENBQUM7WUFDTixXQUFXLENBQUMsT0FBTyxHQUFHLGFBQWEsQ0FBQztZQUNwQyxXQUFXLENBQUMsU0FBUyxHQUFHLG9CQUFvQixDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnQG5ldDcvY29yZSc7XG5cbmV4cG9ydCBjbGFzcyBBd1NpZGViYXJIZWFkZXJEUyBleHRlbmRzIERhdGFTb3VyY2Uge1xuICBwcm90ZWN0ZWQgdHJhbnNmb3JtKGRhdGEpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWNvbkxlZnQ6ICduNy1pY29uLXRyZWUtaWNvbicsXG4gICAgICB0ZXh0OiBkYXRhLnRleHQgfHwgJycsXG4gICAgICBpY29uUmlnaHQ6IGRhdGEuaXNFeHBhbmRlZCA/ICduNy1pY29uLWFuZ2xlLWxlZnQnIDogJ243LWljb24tYW5nbGUtcmlnaHQnLFxuICAgICAgY2xhc3NlczogZGF0YS5pc0V4cGFuZGVkID8gJ2lzLWV4cGFuZGVkJyA6ICdpcy1jb2xsYXBzZWQnLFxuICAgICAgcGF5bG9hZDogJ2hlYWRlcicsXG4gICAgfTtcbiAgfVxuXG4gIHRvZ2dsZVNpZGViYXIoKSB7XG4gICAgY29uc3Qgc2lkZWJhckRhdGEgPSB0aGlzLm91dHB1dDtcbiAgICBpZiAoc2lkZWJhckRhdGEuY2xhc3NlcyA9PT0gJ2lzLWV4cGFuZGVkJykge1xuICAgICAgc2lkZWJhckRhdGEuY2xhc3NlcyA9ICdpcy1jb2xsYXBzZWQnO1xuICAgICAgc2lkZWJhckRhdGEuaWNvblJpZ2h0ID0gJ243LWljb24tYW5nbGUtcmlnaHQnO1xuICAgIH0gZWxzZSB7XG4gICAgICBzaWRlYmFyRGF0YS5jbGFzc2VzID0gJ2lzLWV4cGFuZGVkJztcbiAgICAgIHNpZGViYXJEYXRhLmljb25SaWdodCA9ICduNy1pY29uLWFuZ2xlLWxlZnQnO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,106 @@
1
+ import { DataSource } from '@net7/core';
2
+ import dayjs from 'dayjs'; // in arianna pkg "import * as dayjs" does not work
3
+ import { max as _max, min as _min } from 'lodash';
4
+ import { Subject } from 'rxjs';
5
+ const ONE_YEAR = 31557600000;
6
+ const YEARS_MARGIN = 30;
7
+ export class AwTimelineDS extends DataSource {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.timelineLoaded$ = new Subject();
11
+ this.timelineControlsVisible = false;
12
+ this.transform = (data) => {
13
+ const { disableEndDates } = this.options.configuration;
14
+ this.dataSet = data.map(({ id, start, end, item, label }) => ({
15
+ id,
16
+ item,
17
+ start: start ? dayjs(start).format('YYYY-MM-DD') : null,
18
+ end: (end && end !== start && !disableEndDates)
19
+ ? dayjs(end).format('YYYY-MM-DD') // show end date
20
+ : null, // hide end date
21
+ content: this.getItemTemplate(label, item.label),
22
+ _meta: {
23
+ dateText: label
24
+ }
25
+ }));
26
+ const max = this.getMax();
27
+ const min = this.getMin();
28
+ return {
29
+ containerID: 'timeline-component',
30
+ libOptions: {
31
+ max,
32
+ min,
33
+ start: min,
34
+ end: max,
35
+ align: 'left',
36
+ minHeight: '100px',
37
+ // height: '100px',
38
+ locale: 'it_IT',
39
+ // cluster: {
40
+ // fitOnDoubleClick: true,
41
+ // clusterCriteria: (f, s) => f.content.charAt(0) === s.content.charAt(0),
42
+ // titleTemplate: '{count} eventi',
43
+ // },
44
+ showCurrentTime: false,
45
+ showTooltips: false,
46
+ tooltip: {
47
+ followMouse: false,
48
+ template: (d, element) => `<div class="tooltip">${element.title}</div>`
49
+ },
50
+ width: '100%',
51
+ // minHeight: '350px',
52
+ // maxHeight: '800px',
53
+ zoomMax: ONE_YEAR * 2000, // 2000 years
54
+ zoomMin: ONE_YEAR / 12, // a month
55
+ // zoomFriction: 8
56
+ },
57
+ dataSet: this.dataSet,
58
+ _setInstance: (timeline) => {
59
+ this.timeline = timeline;
60
+ this.timelineLoaded$.next();
61
+ // fix cluster visualization
62
+ // setTimeout(() => {
63
+ // this.timeline.fit();
64
+ // });
65
+ // timeout for zoom controls
66
+ setTimeout(() => {
67
+ this.timelineControlsVisible = true;
68
+ }, 1000);
69
+ }
70
+ };
71
+ };
72
+ }
73
+ getItemTemplate(datesLabel, label) {
74
+ return (`
75
+ <div class="dates">
76
+ <em>${datesLabel}</em>
77
+ </div>
78
+ <div class="content">${label}</div>
79
+ `);
80
+ }
81
+ getMax() {
82
+ const maxDate = new Date(_max(this.getAllDates()));
83
+ const year = maxDate.getFullYear();
84
+ const month = maxDate.getMonth();
85
+ const day = maxDate.getDate();
86
+ return new Date(year + YEARS_MARGIN, month, day);
87
+ }
88
+ getMin() {
89
+ const minDate = new Date(_min(this.getAllDates()));
90
+ const year = minDate.getFullYear();
91
+ const month = minDate.getMonth();
92
+ const day = minDate.getDate();
93
+ return new Date(year - YEARS_MARGIN, month, day);
94
+ }
95
+ getAllDates() {
96
+ return [
97
+ ...this.dataSet
98
+ .filter(({ start }) => start)
99
+ .map(({ start }) => start),
100
+ ...this.dataSet
101
+ .filter(({ end }) => end)
102
+ .map(({ end }) => end)
103
+ ];
104
+ }
105
+ }
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uNy1ib2lsZXJwbGF0ZS1hcmlhbm5hL3NyYy9saWIvZGF0YS1zb3VyY2VzL3RpbWVsaW5lLmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDeEMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDLENBQUMsbURBQW1EO0FBQzlFLE9BQU8sRUFBRSxHQUFHLElBQUksSUFBSSxFQUFFLEdBQUcsSUFBSSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUM7QUFDN0IsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDO0FBRXhCLE1BQU0sT0FBTyxZQUFhLFNBQVEsVUFBVTtJQUE1Qzs7UUFHUyxvQkFBZSxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBSS9DLDRCQUF1QixHQUFHLEtBQUssQ0FBQztRQUU3QixjQUFTLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM3QixNQUFNLEVBQUUsZUFBZSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7WUFDdkQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDdkIsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFDNUIsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDTCxFQUFFO2dCQUNGLElBQUk7Z0JBQ0osS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtnQkFDdkQsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsS0FBSyxLQUFLLElBQUksQ0FBQyxlQUFlLENBQUM7b0JBQzdDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLGdCQUFnQjtvQkFDbEQsQ0FBQyxDQUFDLElBQUksRUFBRSxnQkFBZ0I7Z0JBQzFCLE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUNoRCxLQUFLLEVBQUU7b0JBQ0wsUUFBUSxFQUFFLEtBQUs7aUJBQ2hCO2FBQ0YsQ0FBQyxDQUFDLENBQUM7WUFFSixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDMUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBRTFCLE9BQU87Z0JBQ0wsV0FBVyxFQUFFLG9CQUFvQjtnQkFDakMsVUFBVSxFQUFFO29CQUNWLEdBQUc7b0JBQ0gsR0FBRztvQkFDSCxLQUFLLEVBQUUsR0FBRztvQkFDVixHQUFHLEVBQUUsR0FBRztvQkFDUixLQUFLLEVBQUUsTUFBTTtvQkFDYixTQUFTLEVBQUUsT0FBTztvQkFDbEIsbUJBQW1CO29CQUNuQixNQUFNLEVBQUUsT0FBTztvQkFDZixhQUFhO29CQUNiLDBCQUEwQjtvQkFDMUIsMEVBQTBFO29CQUMxRSxxQ0FBcUM7b0JBQ3JDLEtBQUs7b0JBQ0wsZUFBZSxFQUFFLEtBQUs7b0JBQ3RCLFlBQVksRUFBRSxLQUFLO29CQUNuQixPQUFPLEVBQUU7d0JBQ1AsV0FBVyxFQUFFLEtBQUs7d0JBQ2xCLFFBQVEsRUFBRSxDQUFDLENBQU0sRUFBRSxPQUEwQixFQUFFLEVBQUUsQ0FBQyx3QkFBd0IsT0FBTyxDQUFDLEtBQUssUUFBUTtxQkFDaEc7b0JBQ0QsS0FBSyxFQUFFLE1BQU07b0JBQ2Isc0JBQXNCO29CQUN0QixzQkFBc0I7b0JBQ3RCLE9BQU8sRUFBRSxRQUFRLEdBQUcsSUFBSSxFQUFFLGFBQWE7b0JBQ3ZDLE9BQU8sRUFBRSxRQUFRLEdBQUcsRUFBRSxFQUFFLFVBQVU7b0JBQ2xDLGtCQUFrQjtpQkFDbkI7Z0JBQ0QsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO2dCQUNyQixZQUFZLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRTtvQkFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBRTVCLDRCQUE0QjtvQkFDNUIscUJBQXFCO29CQUNyQix5QkFBeUI7b0JBQ3pCLE1BQU07b0JBRU4sNEJBQTRCO29CQUM1QixVQUFVLENBQUMsR0FBRyxFQUFFO3dCQUNkLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7b0JBQ3RDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDWCxDQUFDO2FBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQztJQXVDSixDQUFDO0lBckNDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsS0FBSztRQUMvQixPQUFPLENBQUM7O2NBRUUsVUFBVTs7NkJBRUssS0FBSztLQUM3QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTTtRQUNKLE1BQU0sT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRW5ELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzlCLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLFlBQVksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELE1BQU07UUFDSixNQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVuRCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM5QixPQUFPLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxZQUFZLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTztZQUNMLEdBQUcsSUFBSSxDQUFDLE9BQU87aUJBQ1osTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDO2lCQUM1QixHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDNUIsR0FBRyxJQUFJLENBQUMsT0FBTztpQkFDWixNQUFNLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUM7aUJBQ3hCLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQztTQUN6QixDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJ0BuZXQ3L2NvcmUnO1xuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJzsgLy8gaW4gYXJpYW5uYSBwa2cgXCJpbXBvcnQgKiBhcyBkYXlqc1wiIGRvZXMgbm90IHdvcmtcbmltcG9ydCB7IG1heCBhcyBfbWF4LCBtaW4gYXMgX21pbiB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmNvbnN0IE9ORV9ZRUFSID0gMzE1NTc2MDAwMDA7XG5jb25zdCBZRUFSU19NQVJHSU4gPSAzMDtcblxuZXhwb3J0IGNsYXNzIEF3VGltZWxpbmVEUyBleHRlbmRzIERhdGFTb3VyY2Uge1xuICBwdWJsaWMgdGltZWxpbmU7XG5cbiAgcHVibGljIHRpbWVsaW5lTG9hZGVkJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHVibGljIGRhdGFTZXQ7XG5cbiAgcHVibGljIHRpbWVsaW5lQ29udHJvbHNWaXNpYmxlID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIHRyYW5zZm9ybSA9IChkYXRhKSA9PiB7XG4gICAgY29uc3QgeyBkaXNhYmxlRW5kRGF0ZXMgfSA9IHRoaXMub3B0aW9ucy5jb25maWd1cmF0aW9uO1xuICAgIHRoaXMuZGF0YVNldCA9IGRhdGEubWFwKCh7XG4gICAgICBpZCwgc3RhcnQsIGVuZCwgaXRlbSwgbGFiZWxcbiAgICB9KSA9PiAoe1xuICAgICAgaWQsXG4gICAgICBpdGVtLFxuICAgICAgc3RhcnQ6IHN0YXJ0ID8gZGF5anMoc3RhcnQpLmZvcm1hdCgnWVlZWS1NTS1ERCcpIDogbnVsbCxcbiAgICAgIGVuZDogKGVuZCAmJiBlbmQgIT09IHN0YXJ0ICYmICFkaXNhYmxlRW5kRGF0ZXMpXG4gICAgICAgID8gZGF5anMoZW5kKS5mb3JtYXQoJ1lZWVktTU0tREQnKSAvLyBzaG93IGVuZCBkYXRlXG4gICAgICAgIDogbnVsbCwgLy8gaGlkZSBlbmQgZGF0ZVxuICAgICAgY29udGVudDogdGhpcy5nZXRJdGVtVGVtcGxhdGUobGFiZWwsIGl0ZW0ubGFiZWwpLFxuICAgICAgX21ldGE6IHtcbiAgICAgICAgZGF0ZVRleHQ6IGxhYmVsXG4gICAgICB9XG4gICAgfSkpO1xuXG4gICAgY29uc3QgbWF4ID0gdGhpcy5nZXRNYXgoKTtcbiAgICBjb25zdCBtaW4gPSB0aGlzLmdldE1pbigpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRhaW5lcklEOiAndGltZWxpbmUtY29tcG9uZW50JyxcbiAgICAgIGxpYk9wdGlvbnM6IHtcbiAgICAgICAgbWF4LFxuICAgICAgICBtaW4sXG4gICAgICAgIHN0YXJ0OiBtaW4sXG4gICAgICAgIGVuZDogbWF4LFxuICAgICAgICBhbGlnbjogJ2xlZnQnLFxuICAgICAgICBtaW5IZWlnaHQ6ICcxMDBweCcsXG4gICAgICAgIC8vIGhlaWdodDogJzEwMHB4JyxcbiAgICAgICAgbG9jYWxlOiAnaXRfSVQnLFxuICAgICAgICAvLyBjbHVzdGVyOiB7XG4gICAgICAgIC8vIGZpdE9uRG91YmxlQ2xpY2s6IHRydWUsXG4gICAgICAgIC8vIGNsdXN0ZXJDcml0ZXJpYTogKGYsIHMpID0+IGYuY29udGVudC5jaGFyQXQoMCkgPT09IHMuY29udGVudC5jaGFyQXQoMCksXG4gICAgICAgIC8vICAgdGl0bGVUZW1wbGF0ZTogJ3tjb3VudH0gZXZlbnRpJyxcbiAgICAgICAgLy8gfSxcbiAgICAgICAgc2hvd0N1cnJlbnRUaW1lOiBmYWxzZSxcbiAgICAgICAgc2hvd1Rvb2x0aXBzOiBmYWxzZSxcbiAgICAgICAgdG9vbHRpcDoge1xuICAgICAgICAgIGZvbGxvd01vdXNlOiBmYWxzZSxcbiAgICAgICAgICB0ZW1wbGF0ZTogKGQ6IGFueSwgZWxlbWVudDogeyB0aXRsZTogc3RyaW5nIH0pID0+IGA8ZGl2IGNsYXNzPVwidG9vbHRpcFwiPiR7ZWxlbWVudC50aXRsZX08L2Rpdj5gXG4gICAgICAgIH0sXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIC8vIG1pbkhlaWdodDogJzM1MHB4JyxcbiAgICAgICAgLy8gbWF4SGVpZ2h0OiAnODAwcHgnLFxuICAgICAgICB6b29tTWF4OiBPTkVfWUVBUiAqIDIwMDAsIC8vIDIwMDAgeWVhcnNcbiAgICAgICAgem9vbU1pbjogT05FX1lFQVIgLyAxMiwgLy8gYSBtb250aFxuICAgICAgICAvLyB6b29tRnJpY3Rpb246IDhcbiAgICAgIH0sXG4gICAgICBkYXRhU2V0OiB0aGlzLmRhdGFTZXQsXG4gICAgICBfc2V0SW5zdGFuY2U6ICh0aW1lbGluZSkgPT4ge1xuICAgICAgICB0aGlzLnRpbWVsaW5lID0gdGltZWxpbmU7XG4gICAgICAgIHRoaXMudGltZWxpbmVMb2FkZWQkLm5leHQoKTtcblxuICAgICAgICAvLyBmaXggY2x1c3RlciB2aXN1YWxpemF0aW9uXG4gICAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAvLyAgIHRoaXMudGltZWxpbmUuZml0KCk7XG4gICAgICAgIC8vIH0pO1xuXG4gICAgICAgIC8vIHRpbWVvdXQgZm9yIHpvb20gY29udHJvbHNcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy50aW1lbGluZUNvbnRyb2xzVmlzaWJsZSA9IHRydWU7XG4gICAgICAgIH0sIDEwMDApO1xuICAgICAgfVxuICAgIH07XG4gIH07XG5cbiAgZ2V0SXRlbVRlbXBsYXRlKGRhdGVzTGFiZWwsIGxhYmVsKSB7XG4gICAgcmV0dXJuIChgXG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXNcIj5cbiAgICAgICAgPGVtPiR7ZGF0ZXNMYWJlbH08L2VtPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPiR7bGFiZWx9PC9kaXY+XG4gICAgYCk7XG4gIH1cblxuICBnZXRNYXgoKSB7XG4gICAgY29uc3QgbWF4RGF0ZSA9IG5ldyBEYXRlKF9tYXgodGhpcy5nZXRBbGxEYXRlcygpKSk7XG5cbiAgICBjb25zdCB5ZWFyID0gbWF4RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIGNvbnN0IG1vbnRoID0gbWF4RGF0ZS5nZXRNb250aCgpO1xuICAgIGNvbnN0IGRheSA9IG1heERhdGUuZ2V0RGF0ZSgpO1xuICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyICsgWUVBUlNfTUFSR0lOLCBtb250aCwgZGF5KTtcbiAgfVxuXG4gIGdldE1pbigpIHtcbiAgICBjb25zdCBtaW5EYXRlID0gbmV3IERhdGUoX21pbih0aGlzLmdldEFsbERhdGVzKCkpKTtcblxuICAgIGNvbnN0IHllYXIgPSBtaW5EYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgY29uc3QgbW9udGggPSBtaW5EYXRlLmdldE1vbnRoKCk7XG4gICAgY29uc3QgZGF5ID0gbWluRGF0ZS5nZXREYXRlKCk7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHllYXIgLSBZRUFSU19NQVJHSU4sIG1vbnRoLCBkYXkpO1xuICB9XG5cbiAgZ2V0QWxsRGF0ZXMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLnRoaXMuZGF0YVNldFxuICAgICAgICAuZmlsdGVyKCh7IHN0YXJ0IH0pID0+IHN0YXJ0KVxuICAgICAgICAubWFwKCh7IHN0YXJ0IH0pID0+IHN0YXJ0KSxcbiAgICAgIC4uLnRoaXMuZGF0YVNldFxuICAgICAgICAuZmlsdGVyKCh7IGVuZCB9KSA9PiBlbmQpXG4gICAgICAgIC5tYXAoKHsgZW5kIH0pID0+IGVuZClcbiAgICBdO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,154 @@
1
+ import { DataSource } from '@net7/core';
2
+ import { helpers } from '@net7/boilerplate-common';
3
+ export class AwTreeDS extends DataSource {
4
+ constructor() {
5
+ super(...arguments);
6
+ this.transform = (data) => data;
7
+ this._getCachedData = () => AwTreeDS.dataCache[this.rootId];
8
+ this._normalize = ({ id, label, icon, img, branches, document_type: type, document_classification: classification }) => {
9
+ const hasBranches = !!(Array.isArray(branches) && branches.length);
10
+ this._getCachedData().flatData[id] = {
11
+ id, label, icon, img, hasBranches, type, classification
12
+ };
13
+ if (hasBranches) {
14
+ branches.forEach((data) => {
15
+ this._getCachedData().flatIds.push([id, data.id]);
16
+ this._normalize(data);
17
+ });
18
+ }
19
+ };
20
+ this._getParent = (id) => this._getCachedData().flatIds
21
+ .filter(([, childId]) => childId === id)
22
+ .map(([parentId]) => parentId)[0] || null;
23
+ this._getTreePath = (id) => {
24
+ const ids = [id];
25
+ let currentId = id;
26
+ while (currentId) {
27
+ const parentId = this._getParent(currentId);
28
+ if (parentId) {
29
+ ids.push(parentId);
30
+ }
31
+ currentId = parentId;
32
+ }
33
+ return ids.reverse();
34
+ };
35
+ this._getTree = (path) => {
36
+ const tree = {};
37
+ let counter = 0;
38
+ const loadItems = (id, source) => {
39
+ counter += 1;
40
+ const nextParent = path[counter];
41
+ source.items = [];
42
+ this._getCachedData().flatIds
43
+ .filter(([parentId]) => parentId === id)
44
+ .forEach(([, childId], index) => {
45
+ const inPath = childId === nextParent;
46
+ const item = this._getTreeItem(childId, inPath);
47
+ source.items.push(item);
48
+ if (inPath) {
49
+ loadItems(childId, source.items[index]);
50
+ }
51
+ });
52
+ };
53
+ // init
54
+ loadItems(path[0], tree);
55
+ return tree;
56
+ };
57
+ this._getTreeItem = (id, inPath) => {
58
+ const { label, img, hasBranches, type, classification } = this._getCachedData().flatData[id];
59
+ const defaultIcon = (this.options.config[type] || { icon: null }).icon;
60
+ let specificIcon = '';
61
+ const lastSegment = /.*\.(\w+)$/;
62
+ if (classification && lastSegment.test(classification)) {
63
+ const classID = classification
64
+ .match(lastSegment)[1] // get classification characters
65
+ .toUpperCase(); // normalize
66
+ specificIcon = this.options.config[type].classifications[classID].icon;
67
+ }
68
+ const arrowIcons = inPath ? 'n7-icon-angle-down' : 'n7-icon-angle-right';
69
+ const classes = [];
70
+ if (inPath) {
71
+ classes.push('is-expanded');
72
+ }
73
+ if (this.activeId === id) {
74
+ classes.push('is-active');
75
+ }
76
+ return {
77
+ classes: classes.join(' '),
78
+ text: label || null,
79
+ img: img || null,
80
+ icon: (specificIcon || defaultIcon),
81
+ toggle: hasBranches ? {
82
+ icon: arrowIcons,
83
+ payload: {
84
+ source: 'toggle',
85
+ id,
86
+ },
87
+ } : null,
88
+ meta: id,
89
+ anchor: {
90
+ href: `${this.basePath}/${id}/${helpers.slugify(label)}`,
91
+ },
92
+ };
93
+ };
94
+ }
95
+ static { this.dataCache = {}; }
96
+ load(data) {
97
+ const { tree, basePath } = data;
98
+ this.rootId = tree.id;
99
+ this.basePath = basePath;
100
+ // save in cache
101
+ if (!AwTreeDS.dataCache[this.rootId]) {
102
+ AwTreeDS.dataCache[this.rootId] = { flatIds: [], flatData: {} };
103
+ this._normalize(tree);
104
+ }
105
+ }
106
+ build(id) {
107
+ const path = this._getTreePath(id);
108
+ const oldPath = this._getTreePath(this.currentId);
109
+ const oldPathIndex = oldPath.indexOf(id);
110
+ if (oldPathIndex > 0) {
111
+ path.splice(oldPathIndex);
112
+ this.currentId = null;
113
+ }
114
+ else if (this.currentId === id) {
115
+ const idIndex = path.indexOf(this.currentId);
116
+ path.splice(idIndex);
117
+ this.currentId = null;
118
+ }
119
+ else {
120
+ this.currentId = id;
121
+ }
122
+ const tree = this._getTree(path);
123
+ this.update(tree);
124
+ }
125
+ setActive(id) {
126
+ this.activeId = id;
127
+ }
128
+ highlightActive() {
129
+ const control = (items) => {
130
+ items.forEach((item) => {
131
+ const founded = item.meta === this.activeId;
132
+ const hasActive = item.classes.indexOf('is-active') !== -1;
133
+ // clear is-active
134
+ if (hasActive && !founded) {
135
+ const currentClasses = item.classes.split(' ');
136
+ currentClasses.splice(currentClasses.indexOf('is-active'), 1);
137
+ item.classes = currentClasses.join(' ');
138
+ }
139
+ if (founded) {
140
+ const currentClasses = item.classes.split(' ');
141
+ if (currentClasses.indexOf('is-active') === -1) {
142
+ currentClasses.push('is-active');
143
+ }
144
+ item.classes = currentClasses.join(' ');
145
+ }
146
+ if (Array.isArray(item.items) && item.items.length) {
147
+ control(item.items);
148
+ }
149
+ });
150
+ };
151
+ control(this.output.items);
152
+ }
153
+ }
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5kcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL243LWJvaWxlcnBsYXRlLWFyaWFubmEvc3JjL2xpYi9kYXRhLXNvdXJjZXMvdHJlZS5kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVuRCxNQUFNLE9BQU8sUUFBUyxTQUFRLFVBQVU7SUFBeEM7O1FBV1ksY0FBUyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFrRTdCLG1CQUFjLEdBQUcsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFdkQsZUFBVSxHQUFHLENBQUMsRUFDcEIsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixFQUFFLGNBQWMsRUFDN0YsRUFBRSxFQUFFO1lBQ0gsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbkUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRztnQkFDbkMsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsY0FBYzthQUN4RCxDQUFDO1lBQ0YsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDaEIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO29CQUN4QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FB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QUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDOUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMxQyxDQUFDO2dCQUVELElBQUksT0FBTyxFQUFFLENBQUM7b0JBQ1osTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQy9DLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUMvQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUNuQyxDQUFDO29CQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDMUMsQ0FBQztnQkFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ25ELE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3RCLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztRQUNGLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnQG5ldDcvY29yZSc7XG5pbXBvcnQgeyBoZWxwZXJzIH0gZnJvbSAnQG5ldDcvYm9pbGVycGxhdGUtY29tbW9uJztcblxuZXhwb3J0IGNsYXNzIEF3VHJlZURTIGV4dGVuZHMgRGF0YVNvdXJjZSB7XG4gIHN0YXRpYyBkYXRhQ2FjaGU6IGFueSA9IHt9O1xuXG4gIHByaXZhdGUgYmFzZVBhdGg6IHN0cmluZztcblxuICBwcml2YXRlIHJvb3RJZDogc3RyaW5nO1xuXG4gIHByaXZhdGUgY3VycmVudElkOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBhY3RpdmVJZDogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCB0cmFuc2Zvcm0gPSAoZGF0YSkgPT4gZGF0YTtcblxuICBwdWJsaWMgbG9hZChkYXRhKSB7XG4gICAgY29uc3QgeyB0cmVlLCBiYXNlUGF0aCB9ID0gZGF0YTtcbiAgICB0aGlzLnJvb3RJZCA9IHRyZWUuaWQ7XG4gICAgdGhpcy5iYXNlUGF0aCA9IGJhc2VQYXRoO1xuICAgIC8vIHNhdmUgaW4gY2FjaGVcbiAgICBpZiAoIUF3VHJlZURTLmRhdGFDYWNoZVt0aGlzLnJvb3RJZF0pIHtcbiAgICAgIEF3VHJlZURTLmRhdGFDYWNoZVt0aGlzLnJvb3RJZF0gPSB7IGZsYXRJZHM6IFtdLCBmbGF0RGF0YToge30gfTtcbiAgICAgIHRoaXMuX25vcm1hbGl6ZSh0cmVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYnVpbGQoaWQpIHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5fZ2V0VHJlZVBhdGgoaWQpO1xuICAgIGNvbnN0IG9sZFBhdGggPSB0aGlzLl9nZXRUcmVlUGF0aCh0aGlzLmN1cnJlbnRJZCk7XG4gICAgY29uc3Qgb2xkUGF0aEluZGV4ID0gb2xkUGF0aC5pbmRleE9mKGlkKTtcblxuICAgIGlmIChvbGRQYXRoSW5kZXggPiAwKSB7XG4gICAgICBwYXRoLnNwbGljZShvbGRQYXRoSW5kZXgpO1xuICAgICAgdGhpcy5jdXJyZW50SWQgPSBudWxsO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50SWQgPT09IGlkKSB7XG4gICAgICBjb25zdCBpZEluZGV4ID0gcGF0aC5pbmRleE9mKHRoaXMuY3VycmVudElkKTtcbiAgICAgIHBhdGguc3BsaWNlKGlkSW5kZXgpO1xuICAgICAgdGhpcy5jdXJyZW50SWQgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1cnJlbnRJZCA9IGlkO1xuICAgIH1cblxuICAgIGNvbnN0IHRyZWU6IGFueSA9IHRoaXMuX2dldFRyZWUocGF0aCk7XG4gICAgdGhpcy51cGRhdGUodHJlZSk7XG4gIH1cblxuICBwdWJsaWMgc2V0QWN0aXZlKGlkKSB7XG4gICAgdGhpcy5hY3RpdmVJZCA9IGlkO1xuICB9XG5cbiAgcHVibGljIGhpZ2hsaWdodEFjdGl2ZSgpIHtcbiAgICBjb25zdCBjb250cm9sID0gKGl0ZW1zKSA9PiB7XG4gICAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGNvbnN0IGZvdW5kZWQgPSBpdGVtLm1ldGEgPT09IHRoaXMuYWN0aXZlSWQ7XG4gICAgICAgIGNvbnN0IGhhc0FjdGl2ZSA9IGl0ZW0uY2xhc3Nlcy5pbmRleE9mKCdpcy1hY3RpdmUnKSAhPT0gLTE7XG5cbiAgICAgICAgLy8gY2xlYXIgaXMtYWN0aXZlXG4gICAgICAgIGlmIChoYXNBY3RpdmUgJiYgIWZvdW5kZWQpIHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50Q2xhc3NlcyA9IGl0ZW0uY2xhc3Nlcy5zcGxpdCgnICcpO1xuICAgICAgICAgIGN1cnJlbnRDbGFzc2VzLnNwbGljZShjdXJyZW50Q2xhc3Nlcy5pbmRleE9mKCdpcy1hY3RpdmUnKSwgMSk7XG4gICAgICAgICAgaXRlbS5jbGFzc2VzID0gY3VycmVudENsYXNzZXMuam9pbignICcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZvdW5kZWQpIHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50Q2xhc3NlcyA9IGl0ZW0uY2xhc3Nlcy5zcGxpdCgnICcpO1xuICAgICAgICAgIGlmIChjdXJyZW50Q2xhc3Nlcy5pbmRleE9mKCdpcy1hY3RpdmUnKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIGN1cnJlbnRDbGFzc2VzLnB1c2goJ2lzLWFjdGl2ZScpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpdGVtLmNsYXNzZXMgPSBjdXJyZW50Q2xhc3Nlcy5qb2luKCcgJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtLml0ZW1zKSAmJiBpdGVtLml0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnRyb2woaXRlbS5pdGVtcyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG4gICAgY29udHJvbCh0aGlzLm91dHB1dC5pdGVtcyk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRDYWNoZWREYXRhID0gKCkgPT4gQXdUcmVlRFMuZGF0YUNhY2hlW3RoaXMucm9vdElkXTtcblxuICBwcml2YXRlIF9ub3JtYWxpemUgPSAoe1xuICAgIGlkLCBsYWJlbCwgaWNvbiwgaW1nLCBicmFuY2hlcywgZG9jdW1lbnRfdHlwZTogdHlwZSwgZG9jdW1lbnRfY2xhc3NpZmljYXRpb246IGNsYXNzaWZpY2F0aW9uXG4gIH0pID0+IHtcbiAgICBjb25zdCBoYXNCcmFuY2hlcyA9ICEhKEFycmF5LmlzQXJyYXkoYnJhbmNoZXMpICYmIGJyYW5jaGVzLmxlbmd0aCk7XG4gICAgdGhpcy5fZ2V0Q2FjaGVkRGF0YSgpLmZsYXREYXRhW2lkXSA9IHtcbiAgICAgIGlkLCBsYWJlbCwgaWNvbiwgaW1nLCBoYXNCcmFuY2hlcywgdHlwZSwgY2xhc3NpZmljYXRpb25cbiAgICB9O1xuICAgIGlmIChoYXNCcmFuY2hlcykge1xuICAgICAgYnJhbmNoZXMuZm9yRWFjaCgoZGF0YSkgPT4ge1xuICAgICAgICB0aGlzLl9nZXRDYWNoZWREYXRhKCkuZmxhdElkcy5wdXNoKFtpZCwgZGF0YS5pZF0pO1xuICAgICAgICB0aGlzLl9ub3JtYWxpemUoZGF0YSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBfZ2V0UGFyZW50ID0gKGlkKSA9PiB0aGlzLl9nZXRDYWNoZWREYXRhKCkuZmxhdElkc1xuICAgIC5maWx0ZXIoKFssIGNoaWxkSWRdKSA9PiBjaGlsZElkID09PSBpZClcbiAgICAubWFwKChbcGFyZW50SWRdKSA9PiBwYXJlbnRJZClbMF0gfHwgbnVsbDtcblxuICBwcml2YXRlIF9nZXRUcmVlUGF0aCA9IChpZCkgPT4ge1xuICAgIGNvbnN0IGlkcyA9IFtpZF07XG4gICAgbGV0IGN1cnJlbnRJZCA9IGlkO1xuICAgIHdoaWxlIChjdXJyZW50SWQpIHtcbiAgICAgIGNvbnN0IHBhcmVudElkID0gdGhpcy5fZ2V0UGFyZW50KGN1cnJlbnRJZCk7XG4gICAgICBpZiAocGFyZW50SWQpIHtcbiAgICAgICAgaWRzLnB1c2gocGFyZW50SWQpO1xuICAgICAgfVxuICAgICAgY3VycmVudElkID0gcGFyZW50SWQ7XG4gICAgfVxuICAgIHJldHVybiBpZHMucmV2ZXJzZSgpO1xuICB9O1xuXG4gIHByaXZhdGUgX2dldFRyZWUgPSAocGF0aCkgPT4ge1xuICAgIGNvbnN0IHRyZWUgPSB7fTtcbiAgICBsZXQgY291bnRlciA9IDA7XG5cbiAgICBjb25zdCBsb2FkSXRlbXMgPSAoaWQsIHNvdXJjZSkgPT4ge1xuICAgICAgY291bnRlciArPSAxO1xuICAgICAgY29uc3QgbmV4dFBhcmVudCA9IHBhdGhbY291bnRlcl07XG4gICAgICBzb3VyY2UuaXRlbXMgPSBbXTtcblxuICAgICAgdGhpcy5fZ2V0Q2FjaGVkRGF0YSgpLmZsYXRJZHNcbiAgICAgICAgLmZpbHRlcigoW3BhcmVudElkXSkgPT4gcGFyZW50SWQgPT09IGlkKVxuICAgICAgICAuZm9yRWFjaCgoWywgY2hpbGRJZF0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgaW5QYXRoID0gY2hpbGRJZCA9PT0gbmV4dFBhcmVudDtcbiAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5fZ2V0VHJlZUl0ZW0oY2hpbGRJZCwgaW5QYXRoKTtcbiAgICAgICAgICBzb3VyY2UuaXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICBpZiAoaW5QYXRoKSB7XG4gICAgICAgICAgICBsb2FkSXRlbXMoY2hpbGRJZCwgc291cmNlLml0ZW1zW2luZGV4XSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgLy8gaW5pdFxuICAgIGxvYWRJdGVtcyhwYXRoWzBdLCB0cmVlKTtcbiAgICByZXR1cm4gdHJlZTtcbiAgfTtcblxuICBwcml2YXRlIF9nZXRUcmVlSXRlbSA9IChpZCwgaW5QYXRoKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgbGFiZWwsIGltZywgaGFzQnJhbmNoZXMsIHR5cGUsIGNsYXNzaWZpY2F0aW9uXG4gICAgfSA9IHRoaXMuX2dldENhY2hlZERhdGEoKS5mbGF0RGF0YVtpZF07XG4gICAgY29uc3QgZGVmYXVsdEljb24gPSAodGhpcy5vcHRpb25zLmNvbmZpZ1t0eXBlXSB8fCB7IGljb246IG51bGwgfSkuaWNvbjtcbiAgICBsZXQgc3BlY2lmaWNJY29uID0gJyc7XG4gICAgY29uc3QgbGFzdFNlZ21lbnQgPSAvLipcXC4oXFx3KykkLztcbiAgICBpZiAoY2xhc3NpZmljYXRpb24gJiYgbGFzdFNlZ21lbnQudGVzdChjbGFzc2lmaWNhdGlvbikpIHtcbiAgICAgIGNvbnN0IGNsYXNzSUQgPSBjbGFzc2lmaWNhdGlvblxuICAgICAgICAubWF0Y2gobGFzdFNlZ21lbnQpWzFdIC8vIGdldCBjbGFzc2lmaWNhdGlvbiBjaGFyYWN0ZXJzXG4gICAgICAgIC50b1VwcGVyQ2FzZSgpOyAvLyBub3JtYWxpemVcbiAgICAgIHNwZWNpZmljSWNvbiA9IHRoaXMub3B0aW9ucy5jb25maWdbdHlwZV0uY2xhc3NpZmljYXRpb25zW2NsYXNzSURdLmljb247XG4gICAgfVxuICAgIGNvbnN0IGFycm93SWNvbnMgPSBpblBhdGggPyAnbjctaWNvbi1hbmdsZS1kb3duJyA6ICduNy1pY29uLWFuZ2xlLXJpZ2h0JztcbiAgICBjb25zdCBjbGFzc2VzID0gW107XG4gICAgaWYgKGluUGF0aCkge1xuICAgICAgY2xhc3Nlcy5wdXNoKCdpcy1leHBhbmRlZCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5hY3RpdmVJZCA9PT0gaWQpIHtcbiAgICAgIGNsYXNzZXMucHVzaCgnaXMtYWN0aXZlJyk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBjbGFzc2VzOiBjbGFzc2VzLmpvaW4oJyAnKSxcbiAgICAgIHRleHQ6IGxhYmVsIHx8IG51bGwsXG4gICAgICBpbWc6IGltZyB8fCBudWxsLFxuICAgICAgaWNvbjogKHNwZWNpZmljSWNvbiB8fCBkZWZhdWx0SWNvbiksXG4gICAgICB0b2dnbGU6IGhhc0JyYW5jaGVzID8ge1xuICAgICAgICBpY29uOiBhcnJvd0ljb25zLFxuICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgc291cmNlOiAndG9nZ2xlJyxcbiAgICAgICAgICBpZCxcbiAgICAgICAgfSxcbiAgICAgIH0gOiBudWxsLFxuICAgICAgbWV0YTogaWQsXG4gICAgICBhbmNob3I6IHtcbiAgICAgICAgaHJlZjogYCR7dGhpcy5iYXNlUGF0aH0vJHtpZH0vJHtoZWxwZXJzLnNsdWdpZnkobGFiZWwpfWAsXG4gICAgICB9LFxuICAgIH07XG4gIH07XG59XG4iXX0=
@@ -0,0 +1,18 @@
1
+ import { EventHandler } from '@net7/core';
2
+ export class AwAutocompleteWrapperEH extends EventHandler {
3
+ listen() {
4
+ this.innerEvents$.subscribe(({ type, payload }) => {
5
+ switch (type) {
6
+ case 'aw-autocomplete-wrapper.click':
7
+ if (payload !== 'fallback-simple-autocomplete') { // if this is the fallback item, kill the event.
8
+ this.emitOuter('clickresult', payload);
9
+ }
10
+ break;
11
+ default:
12
+ console.warn('unhandled event of type:', type);
13
+ break;
14
+ }
15
+ });
16
+ }
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLXdyYXBwZXIuZWguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uNy1ib2lsZXJwbGF0ZS1hcmlhbm5hL3NyYy9saWIvZXZlbnQtaGFuZGxlcnMvYXV0b2NvbXBsZXRlLXdyYXBwZXIuZWgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUxQyxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsWUFBWTtJQUNoRCxNQUFNO1FBQ1gsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFO1lBQ2hELFFBQVEsSUFBSSxFQUFFLENBQUM7Z0JBQ2IsS0FBSywrQkFBK0I7b0JBQ2xDLElBQUksT0FBTyxLQUFLLDhCQUE4QixFQUFFLENBQUMsQ0FBQyxnREFBZ0Q7d0JBQ2hHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO29CQUN6QyxDQUFDO29CQUNELE1BQU07Z0JBQ1I7b0JBQ0UsT0FBTyxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDL0MsTUFBTTtZQUNWLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50SGFuZGxlciB9IGZyb20gJ0BuZXQ3L2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgQXdBdXRvY29tcGxldGVXcmFwcGVyRUggZXh0ZW5kcyBFdmVudEhhbmRsZXIge1xuICBwdWJsaWMgbGlzdGVuKCkge1xuICAgIHRoaXMuaW5uZXJFdmVudHMkLnN1YnNjcmliZSgoeyB0eXBlLCBwYXlsb2FkIH0pID0+IHtcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlICdhdy1hdXRvY29tcGxldGUtd3JhcHBlci5jbGljayc6XG4gICAgICAgICAgaWYgKHBheWxvYWQgIT09ICdmYWxsYmFjay1zaW1wbGUtYXV0b2NvbXBsZXRlJykgeyAvLyBpZiB0aGlzIGlzIHRoZSBmYWxsYmFjayBpdGVtLCBraWxsIHRoZSBldmVudC5cbiAgICAgICAgICAgIHRoaXMuZW1pdE91dGVyKCdjbGlja3Jlc3VsdCcsIHBheWxvYWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ3VuaGFuZGxlZCBldmVudCBvZiB0eXBlOicsIHR5cGUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,88 @@
1
+ import { EventHandler } from '@net7/core';
2
+ import { Subject } from 'rxjs';
3
+ import { debounceTime } from 'rxjs/operators';
4
+ export class AwFacetsWrapperEH extends EventHandler {
5
+ constructor() {
6
+ super(...arguments);
7
+ this.internalFacetsChange$ = new Subject();
8
+ this.externalFacetsChange$ = new Subject();
9
+ }
10
+ listen() {
11
+ // listen to inner (widget) events
12
+ this.innerEvents$.subscribe(({ type, payload }) => {
13
+ switch (type) {
14
+ case 'facets-wrapper.facet':
15
+ {
16
+ // empty payload control
17
+ if (!payload.eventPayload.inputPayload) {
18
+ return;
19
+ }
20
+ const { facetId, value } = payload.eventPayload.inputPayload;
21
+ if (value === '__loading__') {
22
+ return;
23
+ }
24
+ const input = this.dataSource.getInputByFacetId(facetId);
25
+ const context = input.getContext();
26
+ // update
27
+ this.dataSource.onFacetChange(payload);
28
+ // internal
29
+ if (context === 'internal') {
30
+ this.internalFacetsChange$.next(input.getTarget());
31
+ // external
32
+ }
33
+ else {
34
+ this.externalFacetsChange$.next(facetId);
35
+ }
36
+ }
37
+ break;
38
+ case 'facets-wrapper.facetheader':
39
+ this.dataSource.toggleGroup(payload);
40
+ break;
41
+ default:
42
+ break;
43
+ }
44
+ });
45
+ this.outerEvents$.subscribe(({ type, payload }) => {
46
+ if (type.indexOf('queryparamschange') !== -1 && this.dataSource.searchModel) {
47
+ this.dataSource.updateFiltersFromQueryParams(payload);
48
+ this.dataSource.updateInputsFromFilters();
49
+ }
50
+ });
51
+ // listen to global events
52
+ EventHandler.globalEvents$.subscribe(({ type, payload }) => {
53
+ switch (type) {
54
+ case 'global.searchresponse':
55
+ if (this.dataSource.searchModel && this.dataSource.searchModel.getId() === payload) {
56
+ this.dataSource.updateInputLinks();
57
+ const internalFilters = this.dataSource.searchModel.getInternalFilters();
58
+ internalFilters.forEach((filter) => {
59
+ const input = this.dataSource.searchModel.getInputByFacetId(filter.facetId);
60
+ const target = input.getTarget();
61
+ // this.dataSource.filterTarget(target);
62
+ this.dataSource.updateFilteredTarget(target);
63
+ });
64
+ }
65
+ break;
66
+ default:
67
+ break;
68
+ }
69
+ });
70
+ // internal facets change
71
+ this.externalFacetsChange$.pipe(debounceTime(500)).subscribe((facetId) => {
72
+ const requestParams = this.dataSource.getRequestParams();
73
+ const queryParams = this.dataSource.filtersAsQueryParams(requestParams.filters);
74
+ Object.keys(queryParams).forEach((key) => { queryParams[key] = queryParams[key] || null; });
75
+ // signal
76
+ this.emitOuter('facetschange', { facetId });
77
+ // reset page
78
+ queryParams.page = 1;
79
+ // router signal
80
+ this.emitGlobal('navigate', {
81
+ handler: 'router',
82
+ path: [],
83
+ queryParams,
84
+ });
85
+ });
86
+ }
87
+ }
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXctZmFjZXRzLXdyYXBwZXIuZWguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uNy1ib2lsZXJwbGF0ZS1hcmlhbm5hL3NyYy9saWIvZXZlbnQtaGFuZGxlcnMvYXctZmFjZXRzLXdyYXBwZXIuZWgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMxQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5QyxNQUFNLE9BQU8saUJBQWtCLFNBQVEsWUFBWTtJQUFuRDs7UUFDUywwQkFBcUIsR0FBaUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUVwRCwwQkFBcUIsR0FBaUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQTJGN0QsQ0FBQztJQXpGUSxNQUFNO1FBQ1gsa0NBQWtDO1FBQ2xDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtZQUNoRCxRQUFRLElBQUksRUFBRSxDQUFDO2dCQUNiLEtBQUssc0JBQXNCO29CQUFFLENBQUM7d0JBQzVCLHdCQUF3Qjt3QkFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7NEJBQ3ZDLE9BQU87d0JBQ1QsQ0FBQzt3QkFDRCxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDO3dCQUM3RCxJQUFJLEtBQUssS0FBSyxhQUFhLEVBQUUsQ0FBQzs0QkFDNUIsT0FBTzt3QkFDVCxDQUFDO3dCQUNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7d0JBQ3pELE1BQU0s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R0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUYsU0FBUztZQUNULElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUU1QyxhQUFhO1lBQ2IsV0FBVyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7WUFFckIsZ0JBQWdCO1lBQ2hCLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFO2dCQUMxQixPQUFPLEVBQUUsUUFBUTtnQkFDakIsSUFBSSxFQUFFLEVBQUU7Z0JBQ1IsV0FBVzthQUNaLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRIYW5kbGVyIH0gZnJvbSAnQG5ldDcvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBjbGFzcyBBd0ZhY2V0c1dyYXBwZXJFSCBleHRlbmRzIEV2ZW50SGFuZGxlciB7XG4gIHB1YmxpYyBpbnRlcm5hbEZhY2V0c0NoYW5nZSQ6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHVibGljIGV4dGVybmFsRmFjZXRzQ2hhbmdlJDogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwdWJsaWMgbGlzdGVuKCkge1xuICAgIC8vIGxpc3RlbiB0byBpbm5lciAod2lkZ2V0KSBldmVudHNcbiAgICB0aGlzLmlubmVyRXZlbnRzJC5zdWJzY3JpYmUoKHsgdHlwZSwgcGF5bG9hZCB9KSA9PiB7XG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSAnZmFjZXRzLXdyYXBwZXIuZmFjZXQnOiB7XG4gICAgICAgICAgLy8gZW1wdHkgcGF5bG9hZCBjb250cm9sXG4gICAgICAgICAgaWYgKCFwYXlsb2FkLmV2ZW50UGF5bG9hZC5pbnB1dFBheWxvYWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgeyBmYWNldElkLCB2YWx1ZSB9ID0gcGF5bG9hZC5ldmVudFBheWxvYWQuaW5wdXRQYXlsb2FkO1xuICAgICAgICAgIGlmICh2YWx1ZSA9PT0gJ19fbG9hZGluZ19fJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMuZGF0YVNvdXJjZS5nZXRJbnB1dEJ5RmFjZXRJZChmYWNldElkKTtcbiAgICAgICAgICBjb25zdCBjb250ZXh0ID0gaW5wdXQuZ2V0Q29udGV4dCgpO1xuXG4gICAgICAgICAgLy8gdXBkYXRlXG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlLm9uRmFjZXRDaGFuZ2UocGF5bG9hZCk7XG5cbiAgICAgICAgICAvLyBpbnRlcm5hbFxuICAgICAgICAgIGlmIChjb250ZXh0ID09PSAnaW50ZXJuYWwnKSB7XG4gICAgICAgICAgICB0aGlzLmludGVybmFsRmFjZXRzQ2hhbmdlJC5uZXh0KGlucHV0LmdldFRhcmdldCgpKTtcbiAgICAgICAgICAgIC8vIGV4dGVybmFsXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZXh0ZXJuYWxGYWNldHNDaGFuZ2UkLm5leHQoZmFjZXRJZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZmFjZXRzLXdyYXBwZXIuZmFjZXRoZWFkZXInOlxuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS50b2dnbGVHcm91cChwYXlsb2FkKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5vdXRlckV2ZW50cyQuc3Vic2NyaWJlKCh7IHR5cGUsIHBheWxvYWQgfSkgPT4ge1xuICAgICAgaWYgKHR5cGUuaW5kZXhPZigncXVlcnlwYXJhbXNjaGFuZ2UnKSAhPT0gLTEgJiYgdGhpcy5kYXRhU291cmNlLnNlYXJjaE1vZGVsKSB7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS51cGRhdGVGaWx0ZXJzRnJvbVF1ZXJ5UGFyYW1zKHBheWxvYWQpO1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UudXBkYXRlSW5wdXRzRnJvbUZpbHRlcnMoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIGxpc3RlbiB0byBnbG9iYWwgZXZlbnRzXG4gICAgRXZlbnRIYW5kbGVyLmdsb2JhbEV2ZW50cyQuc3Vic2NyaWJlKCh7IHR5cGUsIHBheWxvYWQgfSkgPT4ge1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgJ2dsb2JhbC5zZWFyY2hyZXNwb25zZSc6XG4gICAgICAgICAgaWYgKHRoaXMuZGF0YVNvdXJjZS5zZWFyY2hNb2RlbCAmJiB0aGlzLmRhdGFTb3VyY2Uuc2VhcmNoTW9kZWwuZ2V0SWQoKSA9PT0gcGF5bG9hZCkge1xuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLnVwZGF0ZUlucHV0TGlua3MoKTtcbiAgICAgICAgICAgIGNvbnN0IGludGVybmFsRmlsdGVycyA9IHRoaXMuZGF0YVNvdXJjZS5zZWFyY2hNb2RlbC5nZXRJbnRlcm5hbEZpbHRlcnMoKTtcblxuICAgICAgICAgICAgaW50ZXJuYWxGaWx0ZXJzLmZvckVhY2goKGZpbHRlcikgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMuZGF0YVNvdXJjZS5zZWFyY2hNb2RlbC5nZXRJbnB1dEJ5RmFjZXRJZChmaWx0ZXIuZmFjZXRJZCk7XG4gICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGlucHV0LmdldFRhcmdldCgpO1xuICAgICAgICAgICAgICAvLyB0aGlzLmRhdGFTb3VyY2UuZmlsdGVyVGFyZ2V0KHRhcmdldCk7XG4gICAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS51cGRhdGVGaWx0ZXJlZFRhcmdldCh0YXJnZXQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBpbnRlcm5hbCBmYWNldHMgY2hhbmdlXG4gICAgdGhpcy5leHRlcm5hbEZhY2V0c0NoYW5nZSQucGlwZShcbiAgICAgIGRlYm91bmNlVGltZSg1MDApLFxuICAgICkuc3Vic2NyaWJlKChmYWNldElkKSA9PiB7XG4gICAgICBjb25zdCByZXF1ZXN0UGFyYW1zID0gdGhpcy5kYXRhU291cmNlLmdldFJlcXVlc3RQYXJhbXMoKTtcbiAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gdGhpcy5kYXRhU291cmNlLmZpbHRlcnNBc1F1ZXJ5UGFyYW1zKHJlcXVlc3RQYXJhbXMuZmlsdGVycyk7XG5cbiAgICAgIE9iamVjdC5rZXlzKHF1ZXJ5UGFyYW1zKS5mb3JFYWNoKChrZXkpID0+IHsgcXVlcnlQYXJhbXNba2V5XSA9IHF1ZXJ5UGFyYW1zW2tleV0gfHwgbnVsbDsgfSk7XG4gICAgICAvLyBzaWduYWxcbiAgICAgIHRoaXMuZW1pdE91dGVyKCdmYWNldHNjaGFuZ2UnLCB7IGZhY2V0SWQgfSk7XG5cbiAgICAgIC8vIHJlc2V0IHBhZ2VcbiAgICAgIHF1ZXJ5UGFyYW1zLnBhZ2UgPSAxO1xuXG4gICAgICAvLyByb3V0ZXIgc2lnbmFsXG4gICAgICB0aGlzLmVtaXRHbG9iYWwoJ25hdmlnYXRlJywge1xuICAgICAgICBoYW5kbGVyOiAncm91dGVyJyxcbiAgICAgICAgcGF0aDogW10sXG4gICAgICAgIHF1ZXJ5UGFyYW1zLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==