@net7/boilerplate-arianna 3.0.1-rc.2

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 (256) hide show
  1. package/README.md +24 -0
  2. package/esm2020/lib/components/aw-facets-wrapper/aw-facets-wrapper.mjs +29 -0
  3. package/esm2020/lib/components/bubble-chart-wrapper/bubble-chart-wrapper.mjs +23 -0
  4. package/esm2020/lib/components/chart-tippy/chart-tippy.mjs +25 -0
  5. package/esm2020/lib/components/index.mjs +7 -0
  6. package/esm2020/lib/components/pdf-viewer/pdf-viewer.mjs +31 -0
  7. package/esm2020/lib/components/scheda-dropdown/scheda-dropdown.mjs +26 -0
  8. package/esm2020/lib/components/smart-breadcrumbs/smart-breadcrumbs.mjs +82 -0
  9. package/esm2020/lib/config/apollo.config.mjs +706 -0
  10. package/esm2020/lib/config-types/arianna/app.mjs +2 -0
  11. package/esm2020/lib/config-types/arianna/index.mjs +3 -0
  12. package/esm2020/lib/config-types/arianna/layouts.mjs +2 -0
  13. package/esm2020/lib/config-types/index.mjs +2 -0
  14. package/esm2020/lib/data-sources/autocomplete-wrapper.ds.mjs +48 -0
  15. package/esm2020/lib/data-sources/aw-facets-wrapper.ds.mjs +162 -0
  16. package/esm2020/lib/data-sources/bubble-chart.ds.mjs +95 -0
  17. package/esm2020/lib/data-sources/carousel.ds.mjs +74 -0
  18. package/esm2020/lib/data-sources/chart-tippy.ds.mjs +30 -0
  19. package/esm2020/lib/data-sources/entita-metadata-viewer.ds.mjs +16 -0
  20. package/esm2020/lib/data-sources/entita-nav.ds.mjs +74 -0
  21. package/esm2020/lib/data-sources/gallery-results.ds.mjs +103 -0
  22. package/esm2020/lib/data-sources/hero.ds.mjs +27 -0
  23. package/esm2020/lib/data-sources/home-autocomplete.ds.mjs +80 -0
  24. package/esm2020/lib/data-sources/home-facets-wrapper.ds.mjs +178 -0
  25. package/esm2020/lib/data-sources/home-hero-patrimonio.ds.mjs +7 -0
  26. package/esm2020/lib/data-sources/home-item-tags-wrapper.ds.mjs +7 -0
  27. package/esm2020/lib/data-sources/index.mjs +36 -0
  28. package/esm2020/lib/data-sources/linked-objects.ds.mjs +219 -0
  29. package/esm2020/lib/data-sources/map.ds.mjs +88 -0
  30. package/esm2020/lib/data-sources/related-entities.ds.mjs +35 -0
  31. package/esm2020/lib/data-sources/scheda-breadcrumbs.ds.mjs +18 -0
  32. package/esm2020/lib/data-sources/scheda-dropdown.ds.mjs +40 -0
  33. package/esm2020/lib/data-sources/scheda-image.ds.mjs +65 -0
  34. package/esm2020/lib/data-sources/scheda-inner-title.ds.mjs +7 -0
  35. package/esm2020/lib/data-sources/scheda-metadata.ds.mjs +11 -0
  36. package/esm2020/lib/data-sources/scheda-pdf.ds.mjs +54 -0
  37. package/esm2020/lib/data-sources/search-layout-tabs.ds.mjs +28 -0
  38. package/esm2020/lib/data-sources/sidebar-header.ds.mjs +24 -0
  39. package/esm2020/lib/data-sources/table.ds.mjs +8 -0
  40. package/esm2020/lib/data-sources/timeline.ds.mjs +106 -0
  41. package/esm2020/lib/data-sources/tree.ds.mjs +154 -0
  42. package/esm2020/lib/event-handlers/autocomplete-wrapper.eh.mjs +18 -0
  43. package/esm2020/lib/event-handlers/aw-facets-wrapper.eh.mjs +88 -0
  44. package/esm2020/lib/event-handlers/bubble-chart.eh.mjs +98 -0
  45. package/esm2020/lib/event-handlers/chart-tippy.eh.mjs +64 -0
  46. package/esm2020/lib/event-handlers/entita-nav.eh.mjs +22 -0
  47. package/esm2020/lib/event-handlers/gallery-results.eh.mjs +38 -0
  48. package/esm2020/lib/event-handlers/hero.eh.mjs +25 -0
  49. package/esm2020/lib/event-handlers/home-autocomplete.eh.mjs +15 -0
  50. package/esm2020/lib/event-handlers/home-facets-wrapper.eh.mjs +125 -0
  51. package/esm2020/lib/event-handlers/home-hero-patrimonio.eh.mjs +7 -0
  52. package/esm2020/lib/event-handlers/home-item-tags-wrapper.eh.mjs +18 -0
  53. package/esm2020/lib/event-handlers/index.mjs +30 -0
  54. package/esm2020/lib/event-handlers/linked-objects.eh.mjs +60 -0
  55. package/esm2020/lib/event-handlers/map.eh.mjs +23 -0
  56. package/esm2020/lib/event-handlers/scheda-breadcrumbs.eh.mjs +12 -0
  57. package/esm2020/lib/event-handlers/scheda-dropdown.eh.mjs +17 -0
  58. package/esm2020/lib/event-handlers/scheda-pdf.eh.mjs +14 -0
  59. package/esm2020/lib/event-handlers/search-layout-tabs.eh.mjs +7 -0
  60. package/esm2020/lib/event-handlers/sidebar-header.eh.mjs +11 -0
  61. package/esm2020/lib/event-handlers/table.eh.mjs +15 -0
  62. package/esm2020/lib/event-handlers/timeline.eh.mjs +46 -0
  63. package/esm2020/lib/event-handlers/tree.eh.mjs +113 -0
  64. package/esm2020/lib/helpers/metadata.helper.mjs +89 -0
  65. package/esm2020/lib/layouts/collection-layout/collection-layout.config.mjs +17 -0
  66. package/esm2020/lib/layouts/collection-layout/collection-layout.ds.mjs +173 -0
  67. package/esm2020/lib/layouts/collection-layout/collection-layout.eh.mjs +27 -0
  68. package/esm2020/lib/layouts/collection-layout/collection-layout.mjs +38 -0
  69. package/esm2020/lib/layouts/collection-layout/collection-layout.types.mjs +2 -0
  70. package/esm2020/lib/layouts/entita-layout/entita-layout.config.mjs +29 -0
  71. package/esm2020/lib/layouts/entita-layout/entita-layout.ds.mjs +310 -0
  72. package/esm2020/lib/layouts/entita-layout/entita-layout.eh.mjs +119 -0
  73. package/esm2020/lib/layouts/entita-layout/entita-layout.mjs +51 -0
  74. package/esm2020/lib/layouts/entita-layout/entita-layout.types.mjs +2 -0
  75. package/esm2020/lib/layouts/gallery-layout/gallery-facets.config.mjs +145 -0
  76. package/esm2020/lib/layouts/gallery-layout/gallery-layout.config.mjs +32 -0
  77. package/esm2020/lib/layouts/gallery-layout/gallery-layout.ds.mjs +15 -0
  78. package/esm2020/lib/layouts/gallery-layout/gallery-layout.eh.mjs +8 -0
  79. package/esm2020/lib/layouts/gallery-layout/gallery-layout.mjs +45 -0
  80. package/esm2020/lib/layouts/home-layout/home-layout.config.mjs +36 -0
  81. package/esm2020/lib/layouts/home-layout/home-layout.ds.mjs +286 -0
  82. package/esm2020/lib/layouts/home-layout/home-layout.eh.mjs +245 -0
  83. package/esm2020/lib/layouts/home-layout/home-layout.mjs +44 -0
  84. package/esm2020/lib/layouts/index.mjs +41 -0
  85. package/esm2020/lib/layouts/map-layout/map-layout.config.mjs +26 -0
  86. package/esm2020/lib/layouts/map-layout/map-layout.ds.mjs +112 -0
  87. package/esm2020/lib/layouts/map-layout/map-layout.eh.mjs +44 -0
  88. package/esm2020/lib/layouts/map-layout/map-layout.mjs +46 -0
  89. package/esm2020/lib/layouts/scheda-layout/scheda-layout.config.mjs +32 -0
  90. package/esm2020/lib/layouts/scheda-layout/scheda-layout.ds.mjs +282 -0
  91. package/esm2020/lib/layouts/scheda-layout/scheda-layout.eh.mjs +150 -0
  92. package/esm2020/lib/layouts/scheda-layout/scheda-layout.mjs +53 -0
  93. package/esm2020/lib/layouts/search-layout/search-facets.config.mjs +163 -0
  94. package/esm2020/lib/layouts/search-layout/search-layout.config.mjs +32 -0
  95. package/esm2020/lib/layouts/search-layout/search-layout.ds.mjs +296 -0
  96. package/esm2020/lib/layouts/search-layout/search-layout.eh.mjs +175 -0
  97. package/esm2020/lib/layouts/search-layout/search-layout.mjs +50 -0
  98. package/esm2020/lib/layouts/timeline-layout/timeline-layout.config.mjs +26 -0
  99. package/esm2020/lib/layouts/timeline-layout/timeline-layout.ds.mjs +133 -0
  100. package/esm2020/lib/layouts/timeline-layout/timeline-layout.eh.mjs +41 -0
  101. package/esm2020/lib/layouts/timeline-layout/timeline-layout.mjs +46 -0
  102. package/esm2020/lib/n7-boilerplate-arianna.module.mjs +110 -0
  103. package/esm2020/lib/search/aw-facet-inputs/aw-facet-input-checkbox.mjs +32 -0
  104. package/esm2020/lib/search/aw-facet-inputs/aw-facet-input-link.mjs +89 -0
  105. package/esm2020/lib/search/aw-facet-inputs/aw-facet-input-select.mjs +28 -0
  106. package/esm2020/lib/search/aw-facet-inputs/aw-facet-input-text.mjs +36 -0
  107. package/esm2020/lib/search/aw-facet-inputs/aw-facet-input.mjs +30 -0
  108. package/esm2020/lib/search/aw-facet-inputs/index.mjs +6 -0
  109. package/esm2020/lib/search/aw-search.model.mjs +331 -0
  110. package/esm2020/lib/search/aw-search.service.mjs +42 -0
  111. package/esm2020/lib/search/entity-links.helper.mjs +126 -0
  112. package/esm2020/net7-boilerplate-arianna.mjs +5 -0
  113. package/esm2020/public-api.mjs +11 -0
  114. package/fesm2015/net7-boilerplate-arianna.mjs +7482 -0
  115. package/fesm2015/net7-boilerplate-arianna.mjs.map +1 -0
  116. package/fesm2020/net7-boilerplate-arianna.mjs +7520 -0
  117. package/fesm2020/net7-boilerplate-arianna.mjs.map +1 -0
  118. package/lib/components/aw-facets-wrapper/aw-facets-wrapper.d.ts +9 -0
  119. package/lib/components/bubble-chart-wrapper/bubble-chart-wrapper.d.ts +9 -0
  120. package/lib/components/chart-tippy/chart-tippy.d.ts +9 -0
  121. package/lib/components/index.d.ts +6 -0
  122. package/lib/components/pdf-viewer/pdf-viewer.d.ts +38 -0
  123. package/lib/components/scheda-dropdown/scheda-dropdown.d.ts +23 -0
  124. package/lib/components/smart-breadcrumbs/smart-breadcrumbs.d.ts +71 -0
  125. package/lib/config/apollo.config.d.ts +67 -0
  126. package/lib/config-types/arianna/app.d.ts +103 -0
  127. package/lib/config-types/arianna/index.d.ts +2 -0
  128. package/lib/config-types/arianna/layouts.d.ts +164 -0
  129. package/lib/config-types/index.d.ts +1 -0
  130. package/lib/data-sources/autocomplete-wrapper.ds.d.ts +18 -0
  131. package/lib/data-sources/aw-facets-wrapper.ds.d.ts +50 -0
  132. package/lib/data-sources/bubble-chart.ds.d.ts +47 -0
  133. package/lib/data-sources/carousel.ds.d.ts +22 -0
  134. package/lib/data-sources/chart-tippy.ds.d.ts +4 -0
  135. package/lib/data-sources/entita-metadata-viewer.ds.d.ts +9 -0
  136. package/lib/data-sources/entita-nav.ds.d.ts +4 -0
  137. package/lib/data-sources/gallery-results.ds.d.ts +11 -0
  138. package/lib/data-sources/hero.ds.d.ts +20 -0
  139. package/lib/data-sources/home-autocomplete.ds.d.ts +37 -0
  140. package/lib/data-sources/home-facets-wrapper.ds.d.ts +14 -0
  141. package/lib/data-sources/home-hero-patrimonio.ds.d.ts +4 -0
  142. package/lib/data-sources/home-item-tags-wrapper.ds.d.ts +4 -0
  143. package/lib/data-sources/index.d.ts +27 -0
  144. package/lib/data-sources/linked-objects.ds.d.ts +22 -0
  145. package/lib/data-sources/map.ds.d.ts +17 -0
  146. package/lib/data-sources/related-entities.ds.d.ts +7 -0
  147. package/lib/data-sources/scheda-breadcrumbs.ds.d.ts +5 -0
  148. package/lib/data-sources/scheda-dropdown.ds.d.ts +7 -0
  149. package/lib/data-sources/scheda-image.ds.d.ts +10 -0
  150. package/lib/data-sources/scheda-inner-title.ds.d.ts +4 -0
  151. package/lib/data-sources/scheda-metadata.ds.d.ts +8 -0
  152. package/lib/data-sources/scheda-pdf.ds.d.ts +8 -0
  153. package/lib/data-sources/search-layout-tabs.ds.d.ts +12 -0
  154. package/lib/data-sources/sidebar-header.ds.d.ts +11 -0
  155. package/lib/data-sources/table.ds.d.ts +4 -0
  156. package/lib/data-sources/timeline.ds.d.ts +37 -0
  157. package/lib/data-sources/tree.ds.d.ts +19 -0
  158. package/lib/event-handlers/autocomplete-wrapper.eh.d.ts +4 -0
  159. package/lib/event-handlers/aw-facets-wrapper.eh.d.ts +7 -0
  160. package/lib/event-handlers/bubble-chart.eh.d.ts +7 -0
  161. package/lib/event-handlers/chart-tippy.eh.d.ts +6 -0
  162. package/lib/event-handlers/entita-nav.eh.d.ts +4 -0
  163. package/lib/event-handlers/gallery-results.eh.d.ts +4 -0
  164. package/lib/event-handlers/hero.eh.d.ts +4 -0
  165. package/lib/event-handlers/home-autocomplete.eh.d.ts +4 -0
  166. package/lib/event-handlers/home-facets-wrapper.eh.d.ts +7 -0
  167. package/lib/event-handlers/home-hero-patrimonio.eh.d.ts +4 -0
  168. package/lib/event-handlers/home-item-tags-wrapper.eh.d.ts +4 -0
  169. package/lib/event-handlers/index.d.ts +21 -0
  170. package/lib/event-handlers/linked-objects.eh.d.ts +5 -0
  171. package/lib/event-handlers/map.eh.d.ts +5 -0
  172. package/lib/event-handlers/scheda-breadcrumbs.eh.d.ts +4 -0
  173. package/lib/event-handlers/scheda-dropdown.eh.d.ts +4 -0
  174. package/lib/event-handlers/scheda-pdf.eh.d.ts +6 -0
  175. package/lib/event-handlers/search-layout-tabs.eh.d.ts +4 -0
  176. package/lib/event-handlers/sidebar-header.eh.d.ts +4 -0
  177. package/lib/event-handlers/table.eh.d.ts +4 -0
  178. package/lib/event-handlers/timeline.eh.d.ts +5 -0
  179. package/lib/event-handlers/tree.eh.d.ts +9 -0
  180. package/lib/helpers/metadata.helper.d.ts +15 -0
  181. package/lib/layouts/collection-layout/collection-layout.config.d.ts +13 -0
  182. package/lib/layouts/collection-layout/collection-layout.d.ts +21 -0
  183. package/lib/layouts/collection-layout/collection-layout.ds.d.ts +50 -0
  184. package/lib/layouts/collection-layout/collection-layout.eh.d.ts +6 -0
  185. package/lib/layouts/collection-layout/collection-layout.types.d.ts +31 -0
  186. package/lib/layouts/entita-layout/entita-layout.config.d.ts +29 -0
  187. package/lib/layouts/entita-layout/entita-layout.d.ts +28 -0
  188. package/lib/layouts/entita-layout/entita-layout.ds.d.ts +76 -0
  189. package/lib/layouts/entita-layout/entita-layout.eh.d.ts +13 -0
  190. package/lib/layouts/entita-layout/entita-layout.types.d.ts +17 -0
  191. package/lib/layouts/gallery-layout/gallery-facets.config.d.ts +150 -0
  192. package/lib/layouts/gallery-layout/gallery-layout.config.d.ts +38 -0
  193. package/lib/layouts/gallery-layout/gallery-layout.d.ts +26 -0
  194. package/lib/layouts/gallery-layout/gallery-layout.ds.d.ts +158 -0
  195. package/lib/layouts/gallery-layout/gallery-layout.eh.d.ts +4 -0
  196. package/lib/layouts/home-layout/home-layout.config.d.ts +15 -0
  197. package/lib/layouts/home-layout/home-layout.d.ts +23 -0
  198. package/lib/layouts/home-layout/home-layout.ds.d.ts +53 -0
  199. package/lib/layouts/home-layout/home-layout.eh.d.ts +11 -0
  200. package/lib/layouts/index.d.ts +32 -0
  201. package/lib/layouts/map-layout/map-layout.config.d.ts +22 -0
  202. package/lib/layouts/map-layout/map-layout.d.ts +23 -0
  203. package/lib/layouts/map-layout/map-layout.ds.d.ts +37 -0
  204. package/lib/layouts/map-layout/map-layout.eh.d.ts +5 -0
  205. package/lib/layouts/scheda-layout/scheda-layout.config.d.ts +19 -0
  206. package/lib/layouts/scheda-layout/scheda-layout.d.ts +33 -0
  207. package/lib/layouts/scheda-layout/scheda-layout.ds.d.ts +75 -0
  208. package/lib/layouts/scheda-layout/scheda-layout.eh.d.ts +11 -0
  209. package/lib/layouts/search-layout/search-facets.config.d.ts +168 -0
  210. package/lib/layouts/search-layout/search-layout.config.d.ts +38 -0
  211. package/lib/layouts/search-layout/search-layout.d.ts +31 -0
  212. package/lib/layouts/search-layout/search-layout.ds.d.ts +71 -0
  213. package/lib/layouts/search-layout/search-layout.eh.d.ts +31 -0
  214. package/lib/layouts/timeline-layout/timeline-layout.config.d.ts +22 -0
  215. package/lib/layouts/timeline-layout/timeline-layout.d.ts +23 -0
  216. package/lib/layouts/timeline-layout/timeline-layout.ds.d.ts +39 -0
  217. package/lib/layouts/timeline-layout/timeline-layout.eh.d.ts +5 -0
  218. package/lib/n7-boilerplate-arianna.module.d.ts +28 -0
  219. package/lib/search/aw-facet-inputs/aw-facet-input-checkbox.d.ts +18 -0
  220. package/lib/search/aw-facet-inputs/aw-facet-input-link.d.ts +8 -0
  221. package/lib/search/aw-facet-inputs/aw-facet-input-select.d.ts +21 -0
  222. package/lib/search/aw-facet-inputs/aw-facet-input-text.d.ts +30 -0
  223. package/lib/search/aw-facet-inputs/aw-facet-input.d.ts +35 -0
  224. package/lib/search/aw-facet-inputs/index.d.ts +5 -0
  225. package/lib/search/aw-search.model.d.ts +125 -0
  226. package/lib/search/aw-search.service.d.ts +13 -0
  227. package/lib/search/entity-links.helper.d.ts +12 -0
  228. package/net7-boilerplate-arianna.d.ts +5 -0
  229. package/package.json +36 -0
  230. package/public-api.d.ts +6 -0
  231. package/src/lib/styles/arianna/components/_advanced-autocomplete.scss +103 -0
  232. package/src/lib/styles/arianna/components/_breadcrumbs.scss +129 -0
  233. package/src/lib/styles/arianna/components/_bubble-popup-menu.scss +87 -0
  234. package/src/lib/styles/arianna/components/_carousel.scss +32 -0
  235. package/src/lib/styles/arianna/components/_facet-header.scss +58 -0
  236. package/src/lib/styles/arianna/components/_facet.scss +268 -0
  237. package/src/lib/styles/arianna/components/_footer.scss +64 -0
  238. package/src/lib/styles/arianna/components/_header.scss +61 -0
  239. package/src/lib/styles/arianna/components/_item-preview.scss +278 -0
  240. package/src/lib/styles/arianna/components/_map.scss +59 -0
  241. package/src/lib/styles/arianna/components/_metadata-viewer.scss +106 -0
  242. package/src/lib/styles/arianna/components/_pdf-viewer.scss +93 -0
  243. package/src/lib/styles/arianna/components/_simple-autocomplete.scss +60 -0
  244. package/src/lib/styles/arianna/components/_timeline.scss +112 -0
  245. package/src/lib/styles/arianna/components/_tippy-tooltip.scss +41 -0
  246. package/src/lib/styles/arianna/components/_tree.scss +110 -0
  247. package/src/lib/styles/arianna/generic/_color_scheme.scss +60 -0
  248. package/src/lib/styles/arianna/generic/_mixins.scss +18 -0
  249. package/src/lib/styles/arianna/generic/_variables.scss +380 -0
  250. package/src/lib/styles/arianna/layouts/_collection-layout.scss +200 -0
  251. package/src/lib/styles/arianna/layouts/_entita-layout.scss +344 -0
  252. package/src/lib/styles/arianna/layouts/_home-layout.scss +785 -0
  253. package/src/lib/styles/arianna/layouts/_multimedia-layout.scss +132 -0
  254. package/src/lib/styles/arianna/layouts/_scheda-layout.scss +438 -0
  255. package/src/lib/styles/arianna/layouts/_search-layout.scss +284 -0
  256. package/src/lib/styles/arianna/utilities/_item-preview-list.scss +48 -0
@@ -0,0 +1,282 @@
1
+ import { LayoutDataSource } from '@n7-frontend/core';
2
+ import { fromEvent, Subject, of, merge, } from 'rxjs';
3
+ import { takeUntil } from 'rxjs/operators';
4
+ import { get as _get } from 'lodash';
5
+ import { helpers } from '@net7/boilerplate-common';
6
+ import metadataHelper from '../../helpers/metadata.helper';
7
+ export class AwSchedaLayoutDS extends LayoutDataSource {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.destroyed$ = new Subject();
11
+ this.stickyControlTrigger$ = new Subject();
12
+ this.contentParts = {};
13
+ this.sidebarIsSticky = false;
14
+ this.treeMaxHeight = '100%';
15
+ this.contentIsLoading = false;
16
+ this.currentId = null;
17
+ /** Switch loaded-content and loaded-empty states */
18
+ this.hasContent = true;
19
+ /** Name of query that should be used (chosen in config) */
20
+ this.getTreeQuery = 'getTree';
21
+ this.getTree = () => AwSchedaLayoutDS.tree;
22
+ }
23
+ onInit({ configuration, mainState, router, options, titleService, communication, }) {
24
+ if (configuration) {
25
+ this.configuration = configuration;
26
+ this.layoutConfig = this.configuration.get('scheda-layout');
27
+ }
28
+ this.mainState = mainState;
29
+ this.router = router;
30
+ this.titleService = titleService;
31
+ this.communication = communication;
32
+ this.options = options;
33
+ if (!this.sidebarCollapsed) {
34
+ this.sidebarCollapsed = this.layoutConfig.tree.collapsedByDefault ?? false;
35
+ }
36
+ this.relatedEntitiesHeader = this.layoutConfig['related-entities'].title;
37
+ this.similarItemsSectionTitle = this.layoutConfig['related-items'].title;
38
+ this.externalUrlText = this.layoutConfig['external-url-text'];
39
+ this.metadataSectionTitle = this.getMetadataSectionTitle();
40
+ this.hasSimilarItems = false;
41
+ this.one('aw-chart-tippy').updateOptions({
42
+ basePath: this.configuration.get('paths').entitaBasePath,
43
+ });
44
+ this.emptyLabel = this.layoutConfig['empty-label'];
45
+ this.emptyStateString = this.layoutConfig['empty-html'];
46
+ this.one('aw-tree').updateOptions({ config: this.configuration.get('config-keys') });
47
+ // switch the tree query to the slim version
48
+ if (this.layoutConfig?.tree?.lite) {
49
+ this.getTreeQuery = 'getTreeLite';
50
+ }
51
+ this.mainState.update('headTitle', 'Arianna4View - Patrimonio');
52
+ this.mainState.update('pageTitle', 'Arianna4View - Patrimonio');
53
+ this.mainState.updateCustom('currentNav', 'patrimonio');
54
+ // image viewer context-menu check
55
+ const imageViewerConfig = this.configuration.get('scheda-layout')['image-viewer'] || {};
56
+ this.hasContextMenu = () => !!imageViewerConfig['context-menu'];
57
+ // pdf viewer options
58
+ this.one('aw-scheda-pdf').updateOptions(this.configuration.get('scheda-layout')['pdf-viewer'] || {});
59
+ // sidebar sticky control
60
+ this._sidebarStickyControl();
61
+ }
62
+ onDestroy() {
63
+ this.destroyed$.next();
64
+ }
65
+ getMetadataSectionTitle() {
66
+ const layoutConfig = this.configuration.get('scheda-layout');
67
+ const metadataConfig = layoutConfig.metadata || {};
68
+ return metadataConfig.title || null;
69
+ }
70
+ getNavigation(id) {
71
+ if (AwSchedaLayoutDS.tree) {
72
+ return of(AwSchedaLayoutDS.tree);
73
+ }
74
+ return this.communication.request$(this.getTreeQuery, {
75
+ onError: (error) => console.error(error),
76
+ params: { treeId: id },
77
+ });
78
+ }
79
+ setTree(tree) {
80
+ AwSchedaLayoutDS.tree = tree;
81
+ }
82
+ updateNavigation(text) {
83
+ this.one('aw-sidebar-header').update({ text, isExpanded: !this.sidebarCollapsed });
84
+ }
85
+ loadItem(id) {
86
+ const maxSimilarItems = this.configuration.get('scheda-layout')['related-items']['max-related-items'];
87
+ return this.communication.request$('getNode', {
88
+ onError: (error) => console.error(error),
89
+ params: { id, maxSimilarItems },
90
+ });
91
+ }
92
+ /**
93
+ * Loads the content of the selected tree item in the right portion of the view.
94
+ * @param response http response for the tree item
95
+ */
96
+ loadContent(response) {
97
+ if (response) {
98
+ // reset
99
+ this.currentDigitalObject = null;
100
+ this.currentDigitalObjectIndex = null;
101
+ const metadataFields = this.getFields(response);
102
+ this.hasMetadata = !!(Array.isArray(metadataFields) && metadataFields.length);
103
+ this.hasSimilarItems = Array.isArray(response.relatedItems) && response.relatedItems.length;
104
+ this.hasBreadcrumb = Array.isArray(response.breadcrumbs) && response.breadcrumbs.length;
105
+ this.hasDigitalObjects = (Array.isArray(response.digitalObjects)
106
+ && response.digitalObjects.length);
107
+ this.hasRelatedEntities = (Array.isArray(response.relatedEntities)
108
+ && response.relatedEntities.length);
109
+ this.hasContent = !!(this.hasMetadata
110
+ || this.hasSimilarItems
111
+ || this.hasRelatedEntities
112
+ || this.hasDigitalObjects);
113
+ this.contentParts = [];
114
+ const content = { content: null };
115
+ if (response.text) {
116
+ content.content = response.text;
117
+ }
118
+ this.contentParts.push(content);
119
+ // digital objects
120
+ if (this.hasDigitalObjects) {
121
+ response.digitalObjects = this.normalizeDigitalObjects(response.digitalObjects);
122
+ // this.one('aw-scheda-digital-objects').update(response.digitalObjects);
123
+ this.one('aw-scheda-dropdown').update(response);
124
+ this.digitalObjects = response.digitalObjects;
125
+ this.changeDigitalObject(0);
126
+ }
127
+ const titleObj = {
128
+ icon: response.icon,
129
+ title: {
130
+ main: {
131
+ text: response.title || response.label,
132
+ classes: 'bold',
133
+ },
134
+ },
135
+ tools: response.subTitle,
136
+ actions: {},
137
+ };
138
+ this.one('aw-scheda-inner-title').update(titleObj);
139
+ this.one('aw-scheda-metadata').update(metadataFields);
140
+ // Breadcrumb section
141
+ const breadcrumbs = {
142
+ items: [],
143
+ };
144
+ if (response.breadcrumbs) {
145
+ response.breadcrumbs.forEach((element) => {
146
+ breadcrumbs.items.push({
147
+ label: element.label,
148
+ anchor: {
149
+ href: [
150
+ this.configuration.get('paths').schedaBasePath,
151
+ `${element.link}/`,
152
+ helpers.slugify(element.label),
153
+ ].join(''),
154
+ },
155
+ });
156
+ });
157
+ this.one('aw-scheda-breadcrumbs').update(breadcrumbs);
158
+ }
159
+ // update head title
160
+ this.mainState.update('headTitle', `Arianna4View - Patrimonio - ${response.title || response.label}`);
161
+ }
162
+ if (response.relatedItems) {
163
+ this.one('aw-linked-objects').updateOptions({ context: 'scheda', config: this.configuration });
164
+ this.one('aw-linked-objects').update(response);
165
+ }
166
+ if (response.relatedEntities) {
167
+ response.relatedEntities.forEach((el) => {
168
+ const label = response.title || response.label;
169
+ el.relationName = label.length > 30
170
+ ? `${label.substr(0, 30)}... `
171
+ : label;
172
+ });
173
+ this.one('aw-related-entities').updateOptions({
174
+ context: 'scheda', config: this.configuration, list: 'relatedEntities', title: response.title
175
+ });
176
+ this.one('aw-related-entities').update(response.relatedEntities);
177
+ }
178
+ // control sticky
179
+ setTimeout(() => {
180
+ this.stickyControlTrigger$.next();
181
+ });
182
+ }
183
+ /**
184
+ * Toggle between the tree's collapsed or expanded state.
185
+ */
186
+ collapseSidebar() {
187
+ // overwrite the configuration to prevent unwanted changes to the tree state.
188
+ this.layoutConfig.tree.collapsedByDefault = !this.layoutConfig.tree.collapsedByDefault;
189
+ this.sidebarCollapsed = !this.sidebarCollapsed;
190
+ this.getWidgetDataSource('aw-sidebar-header').toggleSidebar();
191
+ }
192
+ _sidebarStickyControl() {
193
+ // no sticky for Internet Explorer
194
+ if (helpers.browserIsIE()) {
195
+ return;
196
+ }
197
+ const source$ = fromEvent(window, 'scroll');
198
+ merge(source$, this.stickyControlTrigger$).pipe(takeUntil(this.destroyed$)).subscribe(() => {
199
+ const windowTop = window.pageYOffset;
200
+ const windowBottom = window.scrollY + window.innerHeight;
201
+ const wrapper = document.getElementsByClassName('sticky-parent')[0];
202
+ const wrapperTop = wrapper.offsetTop;
203
+ const wrapperBottom = wrapperTop + wrapper.clientHeight;
204
+ this.sidebarIsSticky = wrapperTop <= windowTop;
205
+ // tree height control
206
+ if (this.sidebarIsSticky && windowBottom < wrapperBottom) {
207
+ this.treeMaxHeight = `${windowBottom - windowTop - 50}px`;
208
+ }
209
+ else if (this.sidebarIsSticky && windowBottom >= wrapperBottom) {
210
+ this.treeMaxHeight = `${wrapperBottom - windowTop - 50}px`;
211
+ }
212
+ else if (windowBottom < wrapperBottom) {
213
+ this.treeMaxHeight = `${windowBottom - wrapperTop - 50}px`;
214
+ }
215
+ else {
216
+ this.treeMaxHeight = `${wrapperBottom - wrapperTop - 50}px`;
217
+ }
218
+ });
219
+ }
220
+ getFields(response) {
221
+ const { fields, document_type: dt, document_classification: dc } = response;
222
+ const paths = this.configuration.get('paths');
223
+ const labels = this.configuration.get('labels');
224
+ const dcSegments = typeof dc === 'string' ? dc.split('.') : [];
225
+ const dcLastSegment = dcSegments[dcSegments.length - 1];
226
+ let metadataToShow = _get(this.configuration.get('scheda-layout'), 'metadata-to-show', {});
227
+ metadataToShow = metadataToShow[dcLastSegment] || metadataToShow[dt] || [];
228
+ return metadataHelper.normalize({
229
+ fields,
230
+ paths,
231
+ labels,
232
+ metadataToShow,
233
+ type: dt
234
+ });
235
+ }
236
+ changeDigitalObject(payload) {
237
+ if (this.currentDigitalObjectIndex !== payload) {
238
+ // link check
239
+ if (this.digitalObjects[payload].type === 'external' && this.currentDigitalObject) {
240
+ window.open(this.digitalObjects[payload].url, '_blank');
241
+ }
242
+ else {
243
+ // always reset image viewer
244
+ const schedaImageDS = this.getWidgetDataSource('aw-scheda-image');
245
+ schedaImageDS.reset();
246
+ this.currentDigitalObjectIndex = payload;
247
+ this.currentDigitalObject = this.digitalObjects[payload];
248
+ if (this.currentDigitalObject.type.includes('images')) {
249
+ if (schedaImageDS.hasInstance()) {
250
+ schedaImageDS.updateImages(this.currentDigitalObject);
251
+ }
252
+ else {
253
+ this.one('aw-scheda-image').update(this.currentDigitalObject);
254
+ }
255
+ }
256
+ else if (this.currentDigitalObject.type === 'pdf') {
257
+ this.one('aw-scheda-pdf').update(this.currentDigitalObject);
258
+ }
259
+ }
260
+ }
261
+ }
262
+ normalizeDigitalObjects(digitalObjects) {
263
+ return digitalObjects.map(($do) => {
264
+ if ($do.type.includes('images')) {
265
+ return {
266
+ id: 'scheda-layout-viewer',
267
+ type: $do.type,
268
+ label: $do.label,
269
+ hasNavigation: $do.items.length > 1,
270
+ items: $do.items.map(({ url, iiifImages }) => ({
271
+ url,
272
+ iiifImages,
273
+ type: $do.type,
274
+ }))
275
+ };
276
+ }
277
+ return $do;
278
+ });
279
+ }
280
+ }
281
+ AwSchedaLayoutDS.tree = null;
282
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWRhLWxheW91dC5kcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL243LWJvaWxlcnBsYXRlLWFyaWFubmEvc3JjL2xpYi9sYXlvdXRzL3NjaGVkYS1sYXlvdXQvc2NoZWRhLWxheW91dC5kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsU0FBUyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsS0FBSyxHQUM5QixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsR0FBRyxJQUFJLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNyQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbkQsT0FBTyxjQUFjLE1BQU0sK0JBQStCLENBQUM7QUFFM0QsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGdCQUFnQjtJQUF0RDs7UUFHVSxlQUFVLEdBQWlCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFekMsMEJBQXFCLEdBQWlCLElBQUksT0FBTyxFQUFFLENBQUM7UUFvQnJELGlCQUFZLEdBQVEsRUFBRSxDQUFDO1FBNEJ2QixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUV4QixrQkFBYSxHQUFHLE1BQU0sQ0FBQztRQUV2QixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFFekIsY0FBUyxHQUFrQixJQUFJLENBQUM7UUFJdkMsb0RBQW9EO1FBQzdDLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFTekIsMkRBQTJEO1FBQ25ELGlCQUFZLEdBQThCLFNBQVMsQ0FBQztRQXlFNUQsWUFBTyxHQUFHLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQztJQXFPeEMsQ0FBQztJQTVTQyxNQUFNLENBQUMsRUFD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QkFBb0IsQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFO29CQUNuRCxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztpQkFDN0Q7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVPLHVCQUF1QixDQUFDLGNBQWM7UUFDNUMsT0FBTyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDaEMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDL0IsT0FBTztvQkFDTCxFQUFFLEVBQUUsc0JBQXNCO29CQUMxQixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7b0JBQ2QsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLO29CQUNoQixhQUFhLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQztvQkFDbkMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQzdDLEdBQUc7d0JBQ0gsVUFBVTt3QkFDVixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7cUJBQ2YsQ0FBQyxDQUFDO2lCQUNKLENBQUM7YUFDSDtZQUNELE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztBQXRYTSxxQkFBSSxHQUFRLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExheW91dERhdGFTb3VyY2UgfSBmcm9tICdAbjctZnJvbnRlbmQvY29yZSc7XG5pbXBvcnQge1xuICBmcm9tRXZlbnQsIFN1YmplY3QsIG9mLCBtZXJnZSxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBnZXQgYXMgX2dldCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBoZWxwZXJzIH0gZnJvbSAnQG5ldDcvYm9pbGVycGxhdGUtY29tbW9uJztcbmltcG9ydCBtZXRhZGF0YUhlbHBlciBmcm9tICcuLi8uLi9oZWxwZXJzL21ldGFkYXRhLmhlbHBlcic7XG5cbmV4cG9ydCBjbGFzcyBBd1NjaGVkYUxheW91dERTIGV4dGVuZHMgTGF5b3V0RGF0YVNvdXJjZSB7XG4gIHN0YXRpYyB0cmVlOiBhbnkgPSBudWxsO1xuXG4gIHByaXZhdGUgZGVzdHJveWVkJDogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIHN0aWNreUNvbnRyb2xUcmlnZ2VyJDogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIGNvbW11bmljYXRpb246IGFueTtcblxuICBwcm90ZWN0ZWQgY29uZmlndXJhdGlvbjogYW55O1xuXG4gIHByb3RlY3RlZCBtYWluU3RhdGU6IGFueTtcblxuICBwcm90ZWN0ZWQgcm91dGVyOiBhbnk7XG5cbiAgcHJvdGVjdGVkIHRpdGxlU2VydmljZTogYW55O1xuXG4gIHB1YmxpYyBvcHRpb25zOiBhbnk7XG5cbiAgcHJpdmF0ZSBsYXlvdXRDb25maWc7XG5cbiAgcHVibGljIHBhZ2VUaXRsZTogc3RyaW5nO1xuXG4gIHB1YmxpYyBoYXNCcmVhZGNydW1iOiBib29sZWFuO1xuXG4gIHB1YmxpYyBjb250ZW50UGFydHM6IGFueSA9IHt9O1xuXG4gIHB1YmxpYyB0cmVlOiBhbnk7XG5cbiAgcHVibGljIHNpZGViYXJDb2xsYXBzZWQ6IGJvb2xlYW47XG5cbiAgcHVibGljIHJlbGF0ZWRFbnRpdGllc0hlYWRlcjogc3RyaW5nO1xuXG4gIHB1YmxpYyBzaW1pbGFySXRlbXNTZWN0aW9uVGl0bGU6IHN0cmluZztcblxuICBwdWJsaWMgbWV0YWRhdGFTZWN0aW9uVGl0bGU6IHN0cmluZztcblxuICBwdWJsaWMgaGFzTWV0YWRhdGE6IGJvb2xlYW47XG5cbiAgcHVibGljIGhhc1JlbGF0ZWRFbnRpdGllczogYm9vbGVhbjtcblxuICBwdWJsaWMgaGFzU2ltaWxhckl0ZW1zOiBib29sZWFuO1xuXG4gIHB1YmxpYyBoYXNEaWdpdGFsT2JqZWN0czogYm9vbGVhbjtcblxuICBwdWJsaWMgZGlnaXRhbE9iamVjdHM6IGFueTtcblxuICBwdWJsaWMgY3VycmVudERpZ2l0YWxPYmplY3Q6IGFueTtcblxuICBwdWJsaWMgY3VycmVudERpZ2l0YWxPYmplY3RJbmRleDogbnVtYmVyO1xuXG4gIHB1YmxpYyBpbWFnZVZpZXdlcklzdGFuY2U6IGFueTtcblxuICBwdWJsaWMgc2lkZWJhcklzU3RpY2t5ID0gZmFsc2U7XG5cbiAgcHVibGljIHRyZWVNYXhIZWlnaHQgPSAnMTAwJSc7XG5cbiAgcHVibGljIGNvbnRlbnRJc0xvYWRpbmcgPSBmYWxzZTtcblxuICBwdWJsaWMgY3VycmVudElkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgZW1wdHlMYWJlbDogc3RyaW5nO1xuXG4gIC8qKiBTd2l0Y2ggbG9hZGVkLWNvbnRlbnQgYW5kIGxvYWRlZC1lbXB0eSBzdGF0ZXMgKi9cbiAgcHVibGljIGhhc0NvbnRlbnQgPSB0cnVlO1xuXG4gIC8qKiBTdHJpbmcgdG8gcmVuZGVyIGluIHRoZSBsb2FkZWQtZW1wdHkgc3RhdGUgKi9cbiAgcHVibGljIGVtcHR5U3RhdGVTdHJpbmc6IHN0cmluZztcblxuICBwdWJsaWMgZXh0ZXJuYWxVcmxUZXh0OiBzdHJpbmc7XG5cbiAgcHVibGljIGhhc0NvbnRleHRNZW51OiAoKSA9PiBib29sZWFuO1xuXG4gIC8qKiBOYW1lIG9mIHF1ZXJ5IHRoYXQgc2hvdWxkIGJlIHVzZWQgKGNob3NlbiBpbiBjb25maWcpICovXG4gIHByaXZhdGUgZ2V0VHJlZVF1ZXJ5OiAnZ2V0VHJlZScgfCAnZ2V0VHJlZUxpdGUnID0gJ2dldFRyZWUnO1xuXG4gIG9uSW5pdCh7XG4gICAgY29uZmlndXJhdGlvbiwgbWFpblN0YXRlLCByb3V0ZXIsIG9wdGlvbnMsIHRpdGxlU2VydmljZSwgY29tbXVuaWNhdGlvbixcbiAgfSkge1xuICAgIGlmIChjb25maWd1cmF0aW9uKSB7XG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uO1xuICAgICAgdGhpcy5sYXlvdXRDb25maWcgPSB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0KCdzY2hlZGEtbGF5b3V0Jyk7XG4gICAgfVxuICAgIHRoaXMubWFpblN0YXRlID0gbWFpblN0YXRlO1xuICAgIHRoaXMucm91dGVyID0gcm91dGVyO1xuICAgIHRoaXMudGl0bGVTZXJ2aWNlID0gdGl0bGVTZXJ2aWNlO1xuICAgIHRoaXMuY29tbXVuaWNhdGlvbiA9IGNvbW11bmljYXRpb247XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICBpZiAoIXRoaXMuc2lkZWJhckNvbGxhcHNlZCkge1xuICAgICAgdGhpcy5zaWRlYmFyQ29sbGFwc2VkID0gdGhpcy5sYXlvdXRDb25maWcudHJlZS5jb2xsYXBzZWRCeURlZmF1bHQgPz8gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMucmVsYXRlZEVudGl0aWVzSGVhZGVyID0gdGhpcy5sYXlvdXRDb25maWdbJ3JlbGF0ZWQtZW50aXRpZXMnXS50aXRsZTtcbiAgICB0aGlzLnNpbWlsYXJJdGVtc1NlY3Rpb25UaXRsZSA9IHRoaXMubGF5b3V0Q29uZmlnWydyZWxhdGVkLWl0ZW1zJ10udGl0bGU7XG4gICAgdGhpcy5leHRlcm5hbFVybFRleHQgPSB0aGlzLmxheW91dENvbmZpZ1snZXh0ZXJuYWwtdXJsLXRleHQnXTtcbiAgICB0aGlzLm1ldGFkYXRhU2VjdGlvblRpdGxlID0gdGhpcy5nZXRNZXRhZGF0YVNlY3Rpb25UaXRsZSgpO1xuICAgIHRoaXMuaGFzU2ltaWxhckl0ZW1zID0gZmFsc2U7XG4gICAgdGhpcy5vbmUoJ2F3LWNoYXJ0LXRpcHB5JykudXBkYXRlT3B0aW9ucyh7XG4gICAgICBiYXNlUGF0aDogdGhpcy5jb25maWd1cmF0aW9uLmdldCgncGF0aHMnKS5lbnRpdGFCYXNlUGF0aCxcbiAgICB9KTtcbiAgICB0aGlzLmVtcHR5TGFiZWwgPSB0aGlzLmxheW91dENvbmZpZ1snZW1wdHktbGFiZWwnXTtcbiAgICB0aGlzLmVtcHR5U3RhdGVTdHJpbmcgPSB0aGlzLmxheW91dENvbmZpZ1snZW1wdHktaHRtbCddO1xuICAgIHRoaXMub25lKCdhdy10cmVlJykudXBkYXRlT3B0aW9ucyh7IGNvbmZpZzogdGhpcy5jb25maWd1cmF0aW9uLmdldCgnY29uZmlnLWtleXMnKSB9KTtcblxuICAgIC8vIHN3aXRjaCB0aGUgdHJlZSBxdWVyeSB0byB0aGUgc2xpbSB2ZXJzaW9uXG4gICAgaWYgKHRoaXMubGF5b3V0Q29uZmlnPy50cmVlPy5saXRlKSB7XG4gICAgICB0aGlzLmdldFRyZWVRdWVyeSA9ICdnZXRUcmVlTGl0ZSc7XG4gICAgfVxuXG4gICAgdGhpcy5tYWluU3RhdGUudXBkYXRlKCdoZWFkVGl0bGUnLCAnQXJpYW5uYTRWaWV3IC0gUGF0cmltb25pbycpO1xuICAgIHRoaXMubWFpblN0YXRlLnVwZGF0ZSgncGFnZVRpdGxlJywgJ0FyaWFubmE0VmlldyAtIFBhdHJpbW9uaW8nKTtcbiAgICB0aGlzLm1haW5TdGF0ZS51cGRhdGVDdXN0b20oJ2N1cnJlbnROYXYnLCAncGF0cmltb25pbycpO1xuXG4gICAgLy8gaW1hZ2Ugdmlld2VyIGNvbnRleHQtbWVudSBjaGVja1xuICAgIGNvbnN0IGltYWdlVmlld2VyQ29uZmlnID0gdGhpcy5jb25maWd1cmF0aW9uLmdldCgnc2NoZWRhLWxheW91dCcpWydpbWFnZS12aWV3ZXInXSB8fCB7fTtcbiAgICB0aGlzLmhhc0NvbnRleHRNZW51ID0gKCkgPT4gISFpbWFnZVZpZXdlckNvbmZpZ1snY29udGV4dC1tZW51J107XG5cbiAgICAvLyBwZGYgdmlld2VyIG9wdGlvbnNcbiAgICB0aGlzLm9uZSgnYXctc2NoZWRhLXBkZicpLnVwZGF0ZU9wdGlvbnModGhpcy5jb25maWd1cmF0aW9uLmdldCgnc2NoZWRhLWxheW91dCcpWydwZGYtdmlld2VyJ10gfHwge30pO1xuXG4gICAgLy8gc2lkZWJhciBzdGlja3kgY29udHJvbFxuICAgIHRoaXMuX3NpZGViYXJTdGlja3lDb250cm9sKCk7XG4gIH1cblxuICBvbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcbiAgfVxuXG4gIGdldE1ldGFkYXRhU2VjdGlvblRpdGxlKCkge1xuICAgIGNvbnN0IGxheW91dENvbmZpZyA9IHRoaXMuY29uZmlndXJhdGlvbi5nZXQoJ3NjaGVkYS1sYXlvdXQnKTtcbiAgICBjb25zdCBtZXRhZGF0YUNvbmZpZyA9IGxheW91dENvbmZpZy5tZXRhZGF0YSB8fCB7fTtcbiAgICByZXR1cm4gbWV0YWRhdGFDb25maWcudGl0bGUgfHwgbnVsbDtcbiAgfVxuXG4gIGdldE5hdmlnYXRpb24oaWQpIHtcbiAgICBpZiAoQXdTY2hlZGFMYXlvdXREUy50cmVlKSB7XG4gICAgICByZXR1cm4gb2YoQXdTY2hlZGFMYXlvdXREUy50cmVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29tbXVuaWNhdGlvbi5yZXF1ZXN0JCh0aGlzLmdldFRyZWVRdWVyeSwge1xuICAgICAgb25FcnJvcjogKGVycm9yKSA9PiBjb25zb2xlLmVycm9yKGVycm9yKSxcbiAgICAgIHBhcmFtczogeyB0cmVlSWQ6IGlkIH0sXG4gICAgfSk7XG4gIH1cblxuICBzZXRUcmVlKHRyZWUpIHtcbiAgICBBd1NjaGVkYUxheW91dERTLnRyZWUgPSB0cmVlO1xuICB9XG5cbiAgZ2V0VHJlZSA9ICgpID0+IEF3U2NoZWRhTGF5b3V0RFMudHJlZTtcblxuICB1cGRhdGVOYXZpZ2F0aW9uKHRleHQpIHtcbiAgICB0aGlzLm9uZSgnYXctc2lkZWJhci1oZWFkZXInKS51cGRhdGUoeyB0ZXh0LCBpc0V4cGFuZGVkOiAhdGhpcy5zaWRlYmFyQ29sbGFwc2VkIH0pO1xuICB9XG5cbiAgbG9hZEl0ZW0oaWQpIHtcbiAgICBjb25zdCBtYXhTaW1pbGFySXRlbXMgPSB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0KCdzY2hlZGEtbGF5b3V0JylbJ3JlbGF0ZWQtaXRlbXMnXVsnbWF4LXJlbGF0ZWQtaXRlbXMnXTtcbiAgICByZXR1cm4gdGhpcy5jb21tdW5pY2F0aW9uLnJlcXVlc3QkKCdnZXROb2RlJywge1xuICAgICAgb25FcnJvcjogKGVycm9yKSA9PiBjb25zb2xlLmVycm9yKGVycm9yKSxcbiAgICAgIHBhcmFtczogeyBpZCwgbWF4U2ltaWxhckl0ZW1zIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgdGhlIGNvbnRlbnQgb2YgdGhlIHNlbGVjdGVkIHRyZWUgaXRlbSBpbiB0aGUgcmlnaHQgcG9ydGlvbiBvZiB0aGUgdmlldy5cbiAgICogQHBhcmFtIHJlc3BvbnNlIGh0dHAgcmVzcG9uc2UgZm9yIHRoZSB0cmVlIGl0ZW1cbiAgICovXG4gIGxvYWRDb250ZW50KHJlc3BvbnNlKSB7XG4gICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICAvLyByZXNldFxuICAgICAgdGhpcy5jdXJyZW50RGlnaXRhbE9iamVjdCA9IG51bGw7XG4gICAgICB0aGlzLmN1cnJlbnREaWdpdGFsT2JqZWN0SW5kZXggPSBudWxsO1xuXG4gICAgICBjb25zdCBtZXRhZGF0YUZpZWxkcyA9IHRoaXMuZ2V0RmllbGRzKHJlc3BvbnNlKTtcbiAgICAgIHRoaXMuaGFzTWV0YWRhdGEgPSAhIShBcnJheS5pc0FycmF5KG1ldGFkYXRhRmllbGRzKSAmJiBtZXRhZGF0YUZpZWxkcy5sZW5ndGgpO1xuICAgICAgdGhpcy5oYXNTaW1pbGFySXRlbXMgPSBBcnJheS5pc0FycmF5KHJlc3BvbnNlLnJlbGF0ZWRJdGVtcykgJiYgcmVzcG9uc2UucmVsYXRlZEl0ZW1zLmxlbmd0aDtcbiAgICAgIHRoaXMuaGFzQnJlYWRjcnVtYiA9IEFycmF5LmlzQXJyYXkocmVzcG9uc2UuYnJlYWRjcnVtYnMpICYmIHJlc3BvbnNlLmJyZWFkY3J1bWJzLmxlbmd0aDtcbiAgICAgIHRoaXMuaGFzRGlnaXRhbE9iamVjdHMgPSAoXG4gICAgICAgIEFycmF5LmlzQXJyYXkocmVzcG9uc2UuZGlnaXRhbE9iamVjdHMpXG4gICAgICAgICYmIHJlc3BvbnNlLmRpZ2l0YWxPYmplY3RzLmxlbmd0aFxuICAgICAgKTtcbiAgICAgIHRoaXMuaGFzUmVsYXRlZEVudGl0aWVzID0gKFxuICAgICAgICBBcnJheS5pc0FycmF5KHJlc3BvbnNlLnJlbGF0ZWRFbnRpdGllcylcbiAgICAgICAgJiYgcmVzcG9uc2UucmVsYXRlZEVudGl0aWVzLmxlbmd0aFxuICAgICAgKTtcbiAgICAgIHRoaXMuaGFzQ29udGVudCA9ICEhKFxuICAgICAgICB0aGlzLmhhc01ldGFkYXRhXG4gICAgICAgIHx8IHRoaXMuaGFzU2ltaWxhckl0ZW1zXG4gICAgICAgIHx8IHRoaXMuaGFzUmVsYXRlZEVudGl0aWVzXG4gICAgICAgIHx8IHRoaXMuaGFzRGlnaXRhbE9iamVjdHNcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuY29udGVudFBhcnRzID0gW107XG4gICAgICBjb25zdCBjb250ZW50ID0geyBjb250ZW50OiBudWxsIH07XG5cbiAgICAgIGlmIChyZXNwb25zZS50ZXh0KSB7XG4gICAgICAgIGNvbnRlbnQuY29udGVudCA9IHJlc3BvbnNlLnRleHQ7XG4gICAgICB9XG4gICAgICB0aGlzLmNvbnRlbnRQYXJ0cy5wdXNoKGNvbnRlbnQpO1xuXG4gICAgICAvLyBkaWdpdGFsIG9iamVjdHNcbiAgICAgIGlmICh0aGlzLmhhc0RpZ2l0YWxPYmplY3RzKSB7XG4gICAgICAgIHJlc3BvbnNlLmRpZ2l0YWxPYmplY3RzID0gdGhpcy5ub3JtYWxpemVEaWdpdGFsT2JqZWN0cyhyZXNwb25zZS5kaWdpdGFsT2JqZWN0cyk7XG4gICAgICAgIC8vIHRoaXMub25lKCdhdy1zY2hlZGEtZGlnaXRhbC1vYmplY3RzJykudXBkYXRlKHJlc3BvbnNlLmRpZ2l0YWxPYmplY3RzKTtcbiAgICAgICAgdGhpcy5vbmUoJ2F3LXNjaGVkYS1kcm9wZG93bicpLnVwZGF0ZShyZXNwb25zZSk7XG4gICAgICAgIHRoaXMuZGlnaXRhbE9iamVjdHMgPSByZXNwb25zZS5kaWdpdGFsT2JqZWN0cztcbiAgICAgICAgdGhpcy5jaGFuZ2VEaWdpdGFsT2JqZWN0KDApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0aXRsZU9iaiA9IHtcbiAgICAgICAgaWNvbjogcmVzcG9uc2UuaWNvbixcbiAgICAgICAgdGl0bGU6IHtcbiAgICAgICAgICBtYWluOiB7XG4gICAgICAgICAgICB0ZXh0OiByZXNwb25zZS50aXRsZSB8fCByZXNwb25zZS5sYWJlbCxcbiAgICAgICAgICAgIGNsYXNzZXM6ICdib2xkJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB0b29sczogcmVzcG9uc2Uuc3ViVGl0bGUsXG4gICAgICAgIGFjdGlvbnM6IHt9LFxuICAgICAgfTtcblxuICAgICAgdGhpcy5vbmUoJ2F3LXNjaGVkYS1pbm5lci10aXRsZScpLnVwZGF0ZSh0aXRsZU9iaik7XG4gICAgICB0aGlzLm9uZSgnYXctc2NoZWRhLW1ldGFkYXRhJykudXBkYXRlKG1ldGFkYXRhRmllbGRzKTtcblxuICAgICAgLy8gQnJlYWRjcnVtYiBzZWN0aW9uXG4gICAgICBjb25zdCBicmVhZGNydW1icyA9IHtcbiAgICAgICAgaXRlbXM6IFtdLFxuICAgICAgfTtcblxuICAgICAgaWYgKHJlc3BvbnNlLmJyZWFkY3J1bWJzKSB7XG4gICAgICAgIHJlc3BvbnNlLmJyZWFkY3J1bWJzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICBicmVhZGNydW1icy5pdGVtcy5wdXNoKHtcbiAgICAgICAgICAgIGxhYmVsOiBlbGVtZW50LmxhYmVsLFxuICAgICAgICAgICAgYW5jaG9yOiB7XG4gICAgICAgICAgICAgIGhyZWY6IFtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0KCdwYXRocycpLnNjaGVkYUJhc2VQYXRoLFxuICAgICAgICAgICAgICAgIGAke2VsZW1lbnQubGlua30vYCxcbiAgICAgICAgICAgICAgICBoZWxwZXJzLnNsdWdpZnkoZWxlbWVudC5sYWJlbCksXG4gICAgICAgICAgICAgIF0uam9pbignJyksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5vbmUoJ2F3LXNjaGVkYS1icmVhZGNydW1icycpLnVwZGF0ZShicmVhZGNydW1icyk7XG4gICAgICB9XG5cbiAgICAgIC8vIHVwZGF0ZSBoZWFkIHRpdGxlXG4gICAgICB0aGlzLm1haW5TdGF0ZS51cGRhdGUoJ2hlYWRUaXRsZScsIGBBcmlhbm5hNFZpZXcgLSBQYXRyaW1vbmlvIC0gJHtyZXNwb25zZS50aXRsZSB8fCByZXNwb25zZS5sYWJlbH1gKTtcbiAgICB9XG5cbiAgICBpZiAocmVzcG9uc2UucmVsYXRlZEl0ZW1zKSB7XG4gICAgICB0aGlzLm9uZSgnYXctbGlua2VkLW9iamVjdHMnKS51cGRhdGVPcHRpb25zKHsgY29udGV4dDogJ3NjaGVkYScsIGNvbmZpZzogdGhpcy5jb25maWd1cmF0aW9uIH0pO1xuICAgICAgdGhpcy5vbmUoJ2F3LWxpbmtlZC1vYmplY3RzJykudXBkYXRlKHJlc3BvbnNlKTtcbiAgICB9XG4gICAgaWYgKHJlc3BvbnNlLnJlbGF0ZWRFbnRpdGllcykge1xuICAgICAgcmVzcG9uc2UucmVsYXRlZEVudGl0aWVzLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgIGNvbnN0IGxhYmVsID0gcmVzcG9uc2UudGl0bGUgfHwgcmVzcG9uc2UubGFiZWw7XG4gICAgICAgIGVsLnJlbGF0aW9uTmFtZSA9IGxhYmVsLmxlbmd0aCA+IDMwXG4gICAgICAgICAgPyBgJHtsYWJlbC5zdWJzdHIoMCwgMzApfS4uLiBgXG4gICAgICAgICAgOiBsYWJlbDtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5vbmUoJ2F3LXJlbGF0ZWQtZW50aXRpZXMnKS51cGRhdGVPcHRpb25zKHtcbiAgICAgICAgY29udGV4dDogJ3NjaGVkYScsIGNvbmZpZzogdGhpcy5jb25maWd1cmF0aW9uLCBsaXN0OiAncmVsYXRlZEVudGl0aWVzJywgdGl0bGU6IHJlc3BvbnNlLnRpdGxlXG4gICAgICB9KTtcbiAgICAgIHRoaXMub25lKCdhdy1yZWxhdGVkLWVudGl0aWVzJykudXBkYXRlKHJlc3BvbnNlLnJlbGF0ZWRFbnRpdGllcyk7XG4gICAgfVxuXG4gICAgLy8gY29udHJvbCBzdGlja3lcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc3RpY2t5Q29udHJvbFRyaWdnZXIkLm5leHQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGUgYmV0d2VlbiB0aGUgdHJlZSdzIGNvbGxhcHNlZCBvciBleHBhbmRlZCBzdGF0ZS5cbiAgICovXG4gIGNvbGxhcHNlU2lkZWJhcigpIHtcbiAgICAvLyBvdmVyd3JpdGUgdGhlIGNvbmZpZ3VyYXRpb24gdG8gcHJldmVudCB1bndhbnRlZCBjaGFuZ2VzIHRvIHRoZSB0cmVlIHN0YXRlLlxuICAgIHRoaXMubGF5b3V0Q29uZmlnLnRyZWUuY29sbGFwc2VkQnlEZWZhdWx0ID0gIXRoaXMubGF5b3V0Q29uZmlnLnRyZWUuY29sbGFwc2VkQnlEZWZhdWx0O1xuICAgIHRoaXMuc2lkZWJhckNvbGxhcHNlZCA9ICF0aGlzLnNpZGViYXJDb2xsYXBzZWQ7XG4gICAgdGhpcy5nZXRXaWRnZXREYXRhU291cmNlKCdhdy1zaWRlYmFyLWhlYWRlcicpLnRvZ2dsZVNpZGViYXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NpZGViYXJTdGlja3lDb250cm9sKCkge1xuICAgIC8vIG5vIHN0aWNreSBmb3IgSW50ZXJuZXQgRXhwbG9yZXJcbiAgICBpZiAoaGVscGVycy5icm93c2VySXNJRSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHNvdXJjZSQgPSBmcm9tRXZlbnQod2luZG93LCAnc2Nyb2xsJyk7XG5cbiAgICBtZXJnZShzb3VyY2UkLCB0aGlzLnN0aWNreUNvbnRyb2xUcmlnZ2VyJCkucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLFxuICAgICkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGNvbnN0IHdpbmRvd1RvcCA9IHdpbmRvdy5wYWdlWU9mZnNldDtcbiAgICAgIGNvbnN0IHdpbmRvd0JvdHRvbSA9IHdpbmRvdy5zY3JvbGxZICsgd2luZG93LmlubmVySGVpZ2h0O1xuICAgICAgY29uc3Qgd3JhcHBlciA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3N0aWNreS1wYXJlbnQnKVswXSBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGNvbnN0IHdyYXBwZXJUb3AgPSB3cmFwcGVyLm9mZnNldFRvcDtcbiAgICAgIGNvbnN0IHdyYXBwZXJCb3R0b20gPSB3cmFwcGVyVG9wICsgd3JhcHBlci5jbGllbnRIZWlnaHQ7XG5cbiAgICAgIHRoaXMuc2lkZWJhcklzU3RpY2t5ID0gd3JhcHBlclRvcCA8PSB3aW5kb3dUb3A7XG5cbiAgICAgIC8vIHRyZWUgaGVpZ2h0IGNvbnRyb2xcbiAgICAgIGlmICh0aGlzLnNpZGViYXJJc1N0aWNreSAmJiB3aW5kb3dCb3R0b20gPCB3cmFwcGVyQm90dG9tKSB7XG4gICAgICAgIHRoaXMudHJlZU1heEhlaWdodCA9IGAke3dpbmRvd0JvdHRvbSAtIHdpbmRvd1RvcCAtIDUwfXB4YDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zaWRlYmFySXNTdGlja3kgJiYgd2luZG93Qm90dG9tID49IHdyYXBwZXJCb3R0b20pIHtcbiAgICAgICAgdGhpcy50cmVlTWF4SGVpZ2h0ID0gYCR7d3JhcHBlckJvdHRvbSAtIHdpbmRvd1RvcCAtIDUwfXB4YDtcbiAgICAgIH0gZWxzZSBpZiAod2luZG93Qm90dG9tIDwgd3JhcHBlckJvdHRvbSkge1xuICAgICAgICB0aGlzLnRyZWVNYXhIZWlnaHQgPSBgJHt3aW5kb3dCb3R0b20gLSB3cmFwcGVyVG9wIC0gNTB9cHhgO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50cmVlTWF4SGVpZ2h0ID0gYCR7d3JhcHBlckJvdHRvbSAtIHdyYXBwZXJUb3AgLSA1MH1weGA7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RmllbGRzKHJlc3BvbnNlKSB7XG4gICAgY29uc3Qge1xuICAgICAgZmllbGRzLFxuICAgICAgZG9jdW1lbnRfdHlwZTogZHQsXG4gICAgICBkb2N1bWVudF9jbGFzc2lmaWNhdGlvbjogZGNcbiAgICB9ID0gcmVzcG9uc2U7XG4gICAgY29uc3QgcGF0aHMgPSB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0KCdwYXRocycpO1xuICAgIGNvbnN0IGxhYmVscyA9IHRoaXMuY29uZmlndXJhdGlvbi5nZXQoJ2xhYmVscycpO1xuICAgIGNvbnN0IGRjU2VnbWVudHMgPSB0eXBlb2YgZGMgPT09ICdzdHJpbmcnID8gZGMuc3BsaXQoJy4nKSA6IFtdO1xuICAgIGNvbnN0IGRjTGFzdFNlZ21lbnQgPSBkY1NlZ21lbnRzW2RjU2VnbWVudHMubGVuZ3RoIC0gMV07XG4gICAgbGV0IG1ldGFkYXRhVG9TaG93ID0gX2dldCh0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0KCdzY2hlZGEtbGF5b3V0JyksICdtZXRhZGF0YS10by1zaG93Jywge30pO1xuICAgIG1ldGFkYXRhVG9TaG93ID0gbWV0YWRhdGFUb1Nob3dbZGNMYXN0U2VnbWVudF0gfHwgbWV0YWRhdGFUb1Nob3dbZHRdIHx8IFtdO1xuXG4gICAgcmV0dXJuIG1ldGFkYXRhSGVscGVyLm5vcm1hbGl6ZSh7XG4gICAgICBmaWVsZHMsXG4gICAgICBwYXRocyxcbiAgICAgIGxhYmVscyxcbiAgICAgIG1ldGFkYXRhVG9TaG93LFxuICAgICAgdHlwZTogZHRcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2VEaWdpdGFsT2JqZWN0KHBheWxvYWQpIHtcbiAgICBpZiAodGhpcy5jdXJyZW50RGlnaXRhbE9iamVjdEluZGV4ICE9PSBwYXlsb2FkKSB7XG4gICAgICAvLyBsaW5rIGNoZWNrXG4gICAgICBpZiAodGhpcy5kaWdpdGFsT2JqZWN0c1twYXlsb2FkXS50eXBlID09PSAnZXh0ZXJuYWwnICYmIHRoaXMuY3VycmVudERpZ2l0YWxPYmplY3QpIHtcbiAgICAgICAgd2luZG93Lm9wZW4odGhpcy5kaWdpdGFsT2JqZWN0c1twYXlsb2FkXS51cmwsICdfYmxhbmsnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGFsd2F5cyByZXNldCBpbWFnZSB2aWV3ZXJcbiAgICAgICAgY29uc3Qgc2NoZWRhSW1hZ2VEUyA9IHRoaXMuZ2V0V2lkZ2V0RGF0YVNvdXJjZSgnYXctc2NoZWRhLWltYWdlJyk7XG4gICAgICAgIHNjaGVkYUltYWdlRFMucmVzZXQoKTtcblxuICAgICAgICB0aGlzLmN1cnJlbnREaWdpdGFsT2JqZWN0SW5kZXggPSBwYXlsb2FkO1xuICAgICAgICB0aGlzLmN1cnJlbnREaWdpdGFsT2JqZWN0ID0gdGhpcy5kaWdpdGFsT2JqZWN0c1twYXlsb2FkXTtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudERpZ2l0YWxPYmplY3QudHlwZS5pbmNsdWRlcygnaW1hZ2VzJykpIHtcbiAgICAgICAgICBpZiAoc2NoZWRhSW1hZ2VEUy5oYXNJbnN0YW5jZSgpKSB7XG4gICAgICAgICAgICBzY2hlZGFJbWFnZURTLnVwZGF0ZUltYWdlcyh0aGlzLmN1cnJlbnREaWdpdGFsT2JqZWN0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vbmUoJ2F3LXNjaGVkYS1pbWFnZScpLnVwZGF0ZSh0aGlzLmN1cnJlbnREaWdpdGFsT2JqZWN0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50RGlnaXRhbE9iamVjdC50eXBlID09PSAncGRmJykge1xuICAgICAgICAgIHRoaXMub25lKCdhdy1zY2hlZGEtcGRmJykudXBkYXRlKHRoaXMuY3VycmVudERpZ2l0YWxPYmplY3QpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVEaWdpdGFsT2JqZWN0cyhkaWdpdGFsT2JqZWN0cykge1xuICAgIHJldHVybiBkaWdpdGFsT2JqZWN0cy5tYXAoKCRkbykgPT4ge1xuICAgICAgaWYgKCRkby50eXBlLmluY2x1ZGVzKCdpbWFnZXMnKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGlkOiAnc2NoZWRhLWxheW91dC12aWV3ZXInLFxuICAgICAgICAgIHR5cGU6ICRkby50eXBlLFxuICAgICAgICAgIGxhYmVsOiAkZG8ubGFiZWwsXG4gICAgICAgICAgaGFzTmF2aWdhdGlvbjogJGRvLml0ZW1zLmxlbmd0aCA+IDEsXG4gICAgICAgICAgaXRlbXM6ICRkby5pdGVtcy5tYXAoKHsgdXJsLCBpaWlmSW1hZ2VzIH0pID0+ICh7XG4gICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICBpaWlmSW1hZ2VzLFxuICAgICAgICAgICAgdHlwZTogJGRvLnR5cGUsXG4gICAgICAgICAgfSkpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gJGRvO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,150 @@
1
+ import { EventHandler } from '@n7-frontend/core';
2
+ import { isEmpty } from 'lodash';
3
+ import { forkJoin, from, of, Subject } from 'rxjs';
4
+ import { switchMap } from 'rxjs/operators';
5
+ export class AwSchedaLayoutEH extends EventHandler {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.destroyed$ = new Subject();
9
+ }
10
+ listen() {
11
+ this.innerEvents$.subscribe(({ type, payload }) => {
12
+ switch (type) {
13
+ case 'aw-scheda-layout.init':
14
+ {
15
+ this.dataSource.onInit(payload);
16
+ this.configuration = payload.configuration;
17
+ this.route = payload.route;
18
+ const paramId = this.route.snapshot.params.id || '';
19
+ if (paramId) {
20
+ this.dataSource.currentId = paramId;
21
+ }
22
+ this.listenRoute();
23
+ this.loadNavigation(paramId);
24
+ this.emitOuter('viewleaf');
25
+ // scroll top
26
+ window.scrollTo(0, 0);
27
+ }
28
+ break;
29
+ case 'aw-scheda-layout.destroy':
30
+ this.destroyed$.next();
31
+ this.dataSource.onDestroy();
32
+ break;
33
+ case 'aw-scheda-layout.togglesidebar':
34
+ this.dataSource.collapseSidebar();
35
+ break;
36
+ default:
37
+ console.warn('unhandled inner event of type', type);
38
+ break;
39
+ }
40
+ });
41
+ this.outerEvents$.subscribe(({ type, payload }) => {
42
+ switch (type) {
43
+ case 'aw-sidebar-header.click':
44
+ this.dataSource.collapseSidebar();
45
+ break;
46
+ case 'aw-scheda-dropdown.click':
47
+ this.dataSource.changeDigitalObject(payload);
48
+ break;
49
+ default:
50
+ break;
51
+ }
52
+ });
53
+ }
54
+ listenRoute() {
55
+ this.route.paramMap.subscribe((params) => {
56
+ const paramId = params.get('id');
57
+ if (paramId) {
58
+ if (paramId) {
59
+ this.dataSource.currentId = paramId;
60
+ this.emitOuter('routechanged', paramId);
61
+ }
62
+ this.dataSource.contentIsLoading = true;
63
+ this.dataSource.loadItem(paramId).pipe(switchMap((response) => this.parseDigitalObjects$(response))).subscribe((response) => {
64
+ this.dataSource.contentIsLoading = false;
65
+ if (response)
66
+ this.dataSource.loadContent(response);
67
+ });
68
+ }
69
+ // scroll top
70
+ window.scrollTo(0, 0);
71
+ });
72
+ }
73
+ loadNavigation(selectedItem) {
74
+ this.dataSource.updateNavigation('Caricamento in corso...');
75
+ this.dataSource.getNavigation('patrimonio').subscribe((response) => {
76
+ if (response) {
77
+ this.dataSource.setTree(response);
78
+ this.dataSource.updateNavigation(this.dataSource.getTree().label);
79
+ this.emitOuter('navigationresponse', {
80
+ tree: this.dataSource.getTree(),
81
+ currentItem: selectedItem,
82
+ basePath: this.configuration.get('paths').schedaBasePath,
83
+ });
84
+ }
85
+ });
86
+ }
87
+ parseDigitalObjects$(response) {
88
+ const iiifManifest$ = {};
89
+ const baseUrls = this.configuration.get('baseUrls') || {};
90
+ const { iiifServer, iipServer } = baseUrls;
91
+ if (Array.isArray(response?.digitalObjects)) {
92
+ response.digitalObjects.forEach((digitalObject) => {
93
+ // iip config url check
94
+ if (iipServer && digitalObject.type === 'images-iip') {
95
+ digitalObject.items.forEach((item) => {
96
+ item.url = `${iipServer}${item.url}`;
97
+ });
98
+ }
99
+ // iiif config url check
100
+ if (iiifServer && digitalObject.type === 'images-iiif') {
101
+ digitalObject.items.forEach((item) => {
102
+ item.url = `${iiifServer}${item.url}`;
103
+ });
104
+ }
105
+ if (digitalObject.type === 'images-iiif') {
106
+ digitalObject.items.forEach(({ url }) => {
107
+ iiifManifest$[url] = from(fetch(url)
108
+ .then((data) => {
109
+ if (!data.ok) {
110
+ throw Error(data.statusText);
111
+ }
112
+ return data.json();
113
+ })
114
+ .catch((err) => {
115
+ console.warn(`Error loading iiif manifest ${url}`, err);
116
+ return null;
117
+ }));
118
+ });
119
+ }
120
+ });
121
+ }
122
+ if (!isEmpty(iiifManifest$)) {
123
+ return forkJoin(iiifManifest$).pipe(switchMap((data) => {
124
+ response.digitalObjects.forEach((digitalObject) => {
125
+ if (digitalObject.type === 'images-iiif') {
126
+ digitalObject.items.forEach((itemImages, index) => {
127
+ digitalObject.items[index].iiifImages = this.getManifestImages(data[itemImages.url]);
128
+ });
129
+ }
130
+ });
131
+ return of(response);
132
+ }));
133
+ }
134
+ return of(response);
135
+ }
136
+ getManifestImages(manifest) {
137
+ const iiifImages = [];
138
+ if (manifest?.sequences) {
139
+ manifest.sequences.forEach(({ canvases }) => {
140
+ canvases.forEach(({ images }) => {
141
+ images.forEach(({ resource }) => {
142
+ iiifImages.push(resource['@id']);
143
+ });
144
+ });
145
+ });
146
+ }
147
+ return iiifImages;
148
+ }
149
+ }
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWRhLWxheW91dC5laC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL243LWJvaWxlcnBsYXRlLWFyaWFubmEvc3JjL2xpYi9sYXlvdXRzL3NjaGVkYS1sYXlvdXQvc2NoZWRhLWxheW91dC5laC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQ0wsUUFBUSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUM1QixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUczQyxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsWUFBWTtJQUFsRDs7UUFDVSxlQUFVLEdBQWlCLElBQUksT0FBTyxFQUFFLENBQUM7SUErSm5ELENBQUM7SUF6SlEsTUFBTTtRQUNYLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtZQUNoRCxRQUFRLElBQUksRUFBRTtnQkFDWixLQUFLLHVCQUF1QjtvQkFBRTt3QkFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7d0JBQ2hDLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQzt3QkFDM0MsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO3dCQUMzQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQzt3QkFDcEQsSUFBSSxPQUFPLEVBQUU7NEJBQ1gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEdBQUcsT0FB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LENBQUMsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQUU7NEJBQ2hELGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FDNUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FDckIsQ0FBQzt3QkFDSixDQUFDLENBQUMsQ0FBQztxQkFDSjtnQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0QixDQUFDLENBQUMsQ0FDSCxDQUFDO1NBQ0g7UUFDRCxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRU8saUJBQWlCLENBQUMsUUFBUTtRQUNoQyxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxRQUFRLEVBQUUsU0FBUyxFQUFFO1lBQ3ZCLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFO2dCQUMxQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO29CQUM5QixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFO3dCQUM5QixVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUNuQyxDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEhhbmRsZXIgfSBmcm9tICdAbjctZnJvbnRlbmQvY29yZSc7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7XG4gIGZvcmtKb2luLCBmcm9tLCBvZiwgU3ViamVjdFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnQG5ldDcvYm9pbGVycGxhdGUtY29tbW9uJztcblxuZXhwb3J0IGNsYXNzIEF3U2NoZWRhTGF5b3V0RUggZXh0ZW5kcyBFdmVudEhhbmRsZXIge1xuICBwcml2YXRlIGRlc3Ryb3llZCQ6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJpdmF0ZSBjb25maWd1cmF0aW9uOiBDb25maWd1cmF0aW9uU2VydmljZTtcblxuICBwcml2YXRlIHJvdXRlOiBhbnk7XG5cbiAgcHVibGljIGxpc3RlbigpIHtcbiAgICB0aGlzLmlubmVyRXZlbnRzJC5zdWJzY3JpYmUoKHsgdHlwZSwgcGF5bG9hZCB9KSA9PiB7XG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSAnYXctc2NoZWRhLWxheW91dC5pbml0Jzoge1xuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5vbkluaXQocGF5bG9hZCk7XG4gICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gcGF5bG9hZC5jb25maWd1cmF0aW9uO1xuICAgICAgICAgIHRoaXMucm91dGUgPSBwYXlsb2FkLnJvdXRlO1xuICAgICAgICAgIGNvbnN0IHBhcmFtSWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5pZCB8fCAnJztcbiAgICAgICAgICBpZiAocGFyYW1JZCkge1xuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLmN1cnJlbnRJZCA9IHBhcmFtSWQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMubGlzdGVuUm91dGUoKTtcbiAgICAgICAgICB0aGlzLmxvYWROYXZpZ2F0aW9uKHBhcmFtSWQpO1xuICAgICAgICAgIHRoaXMuZW1pdE91dGVyKCd2aWV3bGVhZicpO1xuICAgICAgICAgIC8vIHNjcm9sbCB0b3BcbiAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG4gICAgICAgIH0gYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnYXctc2NoZWRhLWxheW91dC5kZXN0cm95JzpcbiAgICAgICAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5vbkRlc3Ryb3koKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdhdy1zY2hlZGEtbGF5b3V0LnRvZ2dsZXNpZGViYXInOlxuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5jb2xsYXBzZVNpZGViYXIoKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNvbnNvbGUud2FybigndW5oYW5kbGVkIGlubmVyIGV2ZW50IG9mIHR5cGUnLCB0eXBlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMub3V0ZXJFdmVudHMkLnN1YnNjcmliZSgoeyB0eXBlLCBwYXlsb2FkIH0pID0+IHtcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlICdhdy1zaWRlYmFyLWhlYWRlci5jbGljayc6XG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlLmNvbGxhcHNlU2lkZWJhcigpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdhdy1zY2hlZGEtZHJvcGRvd24uY2xpY2snOlxuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5jaGFuZ2VEaWdpdGFsT2JqZWN0KHBheWxvYWQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Sb3V0ZSgpIHtcbiAgICB0aGlzLnJvdXRlLnBhcmFtTWFwLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XG4gICAgICBjb25zdCBwYXJhbUlkID0gcGFyYW1zLmdldCgnaWQnKTtcbiAgICAgIGlmIChwYXJhbUlkKSB7XG4gICAgICAgIGlmIChwYXJhbUlkKSB7XG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlLmN1cnJlbnRJZCA9IHBhcmFtSWQ7XG4gICAgICAgICAgdGhpcy5lbWl0T3V0ZXIoJ3JvdXRlY2hhbmdlZCcsIHBhcmFtSWQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5jb250ZW50SXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmxvYWRJdGVtKHBhcmFtSWQpLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKChyZXNwb25zZSkgPT4gdGhpcy5wYXJzZURpZ2l0YWxPYmplY3RzJChyZXNwb25zZSkpXG4gICAgICAgICkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5jb250ZW50SXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlKSB0aGlzLmRhdGFTb3VyY2UubG9hZENvbnRlbnQocmVzcG9uc2UpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIC8vIHNjcm9sbCB0b3BcbiAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZE5hdmlnYXRpb24oc2VsZWN0ZWRJdGVtKSB7XG4gICAgdGhpcy5kYXRhU291cmNlLnVwZGF0ZU5hdmlnYXRpb24oJ0NhcmljYW1lbnRvIGluIGNvcnNvLi4uJyk7XG4gICAgdGhpcy5kYXRhU291cmNlLmdldE5hdmlnYXRpb24oJ3BhdHJpbW9uaW8nKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLnNldFRyZWUocmVzcG9uc2UpO1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UudXBkYXRlTmF2aWdhdGlvbih0aGlzLmRhdGFTb3VyY2UuZ2V0VHJlZSgpLmxhYmVsKTtcbiAgICAgICAgdGhpcy5lbWl0T3V0ZXIoJ25hdmlnYXRpb25yZXNwb25zZScsIHtcbiAgICAgICAgICB0cmVlOiB0aGlzLmRhdGFTb3VyY2UuZ2V0VHJlZSgpLFxuICAgICAgICAgIGN1cnJlbnRJdGVtOiBzZWxlY3RlZEl0ZW0sXG4gICAgICAgICAgYmFzZVBhdGg6IHRoaXMuY29uZmlndXJhdGlvbi5nZXQoJ3BhdGhzJykuc2NoZWRhQmFzZVBhdGgsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZURpZ2l0YWxPYmplY3RzJChyZXNwb25zZSkge1xuICAgIGNvbnN0IGlpaWZNYW5pZmVzdCQgPSB7fTtcbiAgICBjb25zdCBiYXNlVXJscyA9IHRoaXMuY29uZmlndXJhdGlvbi5nZXQoJ2Jhc2VVcmxzJykgfHwge307XG4gICAgY29uc3QgeyBpaWlmU2VydmVyLCBpaXBTZXJ2ZXIgfSA9IGJhc2VVcmxzO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3BvbnNlPy5kaWdpdGFsT2JqZWN0cykpIHtcbiAgICAgIHJlc3BvbnNlLmRpZ2l0YWxPYmplY3RzLmZvckVhY2goKGRpZ2l0YWxPYmplY3QpID0+IHtcbiAgICAgICAgLy8gaWlwIGNvbmZpZyB1cmwgY2hlY2tcbiAgICAgICAgaWYgKGlpcFNlcnZlciAmJiBkaWdpdGFsT2JqZWN0LnR5cGUgPT09ICdpbWFnZXMtaWlwJykge1xuICAgICAgICAgIGRpZ2l0YWxPYmplY3QuaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaXRlbS51cmwgPSBgJHtpaXBTZXJ2ZXJ9JHtpdGVtLnVybH1gO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIGlpaWYgY29uZmlnIHVybCBjaGVja1xuICAgICAgICBpZiAoaWlpZlNlcnZlciAmJiBkaWdpdGFsT2JqZWN0LnR5cGUgPT09ICdpbWFnZXMtaWlpZicpIHtcbiAgICAgICAgICBkaWdpdGFsT2JqZWN0Lml0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGl0ZW0udXJsID0gYCR7aWlpZlNlcnZlcn0ke2l0ZW0udXJsfWA7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGlnaXRhbE9iamVjdC50eXBlID09PSAnaW1hZ2VzLWlpaWYnKSB7XG4gICAgICAgICAgZGlnaXRhbE9iamVjdC5pdGVtcy5mb3JFYWNoKCh7IHVybCB9KSA9PiB7XG4gICAgICAgICAgICBpaWlmTWFuaWZlc3QkW3VybF0gPSBmcm9tKFxuICAgICAgICAgICAgICBmZXRjaCh1cmwpXG4gICAgICAgICAgICAgICAgLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmICghZGF0YS5vaykge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihkYXRhLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEuanNvbigpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgRXJyb3IgbG9hZGluZyBpaWlmIG1hbmlmZXN0ICR7dXJsfWAsIGVycik7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICghaXNFbXB0eShpaWlmTWFuaWZlc3QkKSkge1xuICAgICAgcmV0dXJuIGZvcmtKb2luKGlpaWZNYW5pZmVzdCQpLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoZGF0YTogb2JqZWN0KSA9PiB7XG4gICAgICAgICAgcmVzcG9uc2UuZGlnaXRhbE9iamVjdHMuZm9yRWFjaCgoZGlnaXRhbE9iamVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKGRpZ2l0YWxPYmplY3QudHlwZSA9PT0gJ2ltYWdlcy1paWlmJykge1xuICAgICAgICAgICAgICBkaWdpdGFsT2JqZWN0Lml0ZW1zLmZvckVhY2goKGl0ZW1JbWFnZXMsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgZGlnaXRhbE9iamVjdC5pdGVtc1tpbmRleF0uaWlpZkltYWdlcyA9IHRoaXMuZ2V0TWFuaWZlc3RJbWFnZXMoXG4gICAgICAgICAgICAgICAgICBkYXRhW2l0ZW1JbWFnZXMudXJsXVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBvZihyZXNwb25zZSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gb2YocmVzcG9uc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNYW5pZmVzdEltYWdlcyhtYW5pZmVzdCkge1xuICAgIGNvbnN0IGlpaWZJbWFnZXMgPSBbXTtcbiAgICBpZiAobWFuaWZlc3Q/LnNlcXVlbmNlcykge1xuICAgICAgbWFuaWZlc3Quc2VxdWVuY2VzLmZvckVhY2goKHsgY2FudmFzZXMgfSkgPT4ge1xuICAgICAgICBjYW52YXNlcy5mb3JFYWNoKCh7IGltYWdlcyB9KSA9PiB7XG4gICAgICAgICAgaW1hZ2VzLmZvckVhY2goKHsgcmVzb3VyY2UgfSkgPT4ge1xuICAgICAgICAgICAgaWlpZkltYWdlcy5wdXNoKHJlc291cmNlWydAaWQnXSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBpaWlmSW1hZ2VzO1xuICB9XG59XG4iXX0=