@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.
- package/README.md +24 -0
- package/esm2020/lib/components/aw-facets-wrapper/aw-facets-wrapper.mjs +29 -0
- package/esm2020/lib/components/bubble-chart-wrapper/bubble-chart-wrapper.mjs +23 -0
- package/esm2020/lib/components/chart-tippy/chart-tippy.mjs +25 -0
- package/esm2020/lib/components/index.mjs +7 -0
- package/esm2020/lib/components/pdf-viewer/pdf-viewer.mjs +31 -0
- package/esm2020/lib/components/scheda-dropdown/scheda-dropdown.mjs +26 -0
- package/esm2020/lib/components/smart-breadcrumbs/smart-breadcrumbs.mjs +82 -0
- package/esm2020/lib/config/apollo.config.mjs +706 -0
- package/esm2020/lib/config-types/arianna/app.mjs +2 -0
- package/esm2020/lib/config-types/arianna/index.mjs +3 -0
- package/esm2020/lib/config-types/arianna/layouts.mjs +2 -0
- package/esm2020/lib/config-types/index.mjs +2 -0
- package/esm2020/lib/data-sources/autocomplete-wrapper.ds.mjs +48 -0
- package/esm2020/lib/data-sources/aw-facets-wrapper.ds.mjs +162 -0
- package/esm2020/lib/data-sources/bubble-chart.ds.mjs +95 -0
- package/esm2020/lib/data-sources/carousel.ds.mjs +74 -0
- package/esm2020/lib/data-sources/chart-tippy.ds.mjs +30 -0
- package/esm2020/lib/data-sources/entita-metadata-viewer.ds.mjs +16 -0
- package/esm2020/lib/data-sources/entita-nav.ds.mjs +74 -0
- package/esm2020/lib/data-sources/gallery-results.ds.mjs +103 -0
- package/esm2020/lib/data-sources/hero.ds.mjs +27 -0
- package/esm2020/lib/data-sources/home-autocomplete.ds.mjs +80 -0
- package/esm2020/lib/data-sources/home-facets-wrapper.ds.mjs +178 -0
- package/esm2020/lib/data-sources/home-hero-patrimonio.ds.mjs +7 -0
- package/esm2020/lib/data-sources/home-item-tags-wrapper.ds.mjs +7 -0
- package/esm2020/lib/data-sources/index.mjs +36 -0
- package/esm2020/lib/data-sources/linked-objects.ds.mjs +219 -0
- package/esm2020/lib/data-sources/map.ds.mjs +88 -0
- package/esm2020/lib/data-sources/related-entities.ds.mjs +35 -0
- package/esm2020/lib/data-sources/scheda-breadcrumbs.ds.mjs +18 -0
- package/esm2020/lib/data-sources/scheda-dropdown.ds.mjs +40 -0
- package/esm2020/lib/data-sources/scheda-image.ds.mjs +65 -0
- package/esm2020/lib/data-sources/scheda-inner-title.ds.mjs +7 -0
- package/esm2020/lib/data-sources/scheda-metadata.ds.mjs +11 -0
- package/esm2020/lib/data-sources/scheda-pdf.ds.mjs +54 -0
- package/esm2020/lib/data-sources/search-layout-tabs.ds.mjs +28 -0
- package/esm2020/lib/data-sources/sidebar-header.ds.mjs +24 -0
- package/esm2020/lib/data-sources/table.ds.mjs +8 -0
- package/esm2020/lib/data-sources/timeline.ds.mjs +106 -0
- package/esm2020/lib/data-sources/tree.ds.mjs +154 -0
- package/esm2020/lib/event-handlers/autocomplete-wrapper.eh.mjs +18 -0
- package/esm2020/lib/event-handlers/aw-facets-wrapper.eh.mjs +88 -0
- package/esm2020/lib/event-handlers/bubble-chart.eh.mjs +98 -0
- package/esm2020/lib/event-handlers/chart-tippy.eh.mjs +64 -0
- package/esm2020/lib/event-handlers/entita-nav.eh.mjs +22 -0
- package/esm2020/lib/event-handlers/gallery-results.eh.mjs +38 -0
- package/esm2020/lib/event-handlers/hero.eh.mjs +25 -0
- package/esm2020/lib/event-handlers/home-autocomplete.eh.mjs +15 -0
- package/esm2020/lib/event-handlers/home-facets-wrapper.eh.mjs +125 -0
- package/esm2020/lib/event-handlers/home-hero-patrimonio.eh.mjs +7 -0
- package/esm2020/lib/event-handlers/home-item-tags-wrapper.eh.mjs +18 -0
- package/esm2020/lib/event-handlers/index.mjs +30 -0
- package/esm2020/lib/event-handlers/linked-objects.eh.mjs +60 -0
- package/esm2020/lib/event-handlers/map.eh.mjs +23 -0
- package/esm2020/lib/event-handlers/scheda-breadcrumbs.eh.mjs +12 -0
- package/esm2020/lib/event-handlers/scheda-dropdown.eh.mjs +17 -0
- package/esm2020/lib/event-handlers/scheda-pdf.eh.mjs +14 -0
- package/esm2020/lib/event-handlers/search-layout-tabs.eh.mjs +7 -0
- package/esm2020/lib/event-handlers/sidebar-header.eh.mjs +11 -0
- package/esm2020/lib/event-handlers/table.eh.mjs +15 -0
- package/esm2020/lib/event-handlers/timeline.eh.mjs +46 -0
- package/esm2020/lib/event-handlers/tree.eh.mjs +113 -0
- package/esm2020/lib/helpers/metadata.helper.mjs +89 -0
- package/esm2020/lib/layouts/collection-layout/collection-layout.config.mjs +17 -0
- package/esm2020/lib/layouts/collection-layout/collection-layout.ds.mjs +173 -0
- package/esm2020/lib/layouts/collection-layout/collection-layout.eh.mjs +27 -0
- package/esm2020/lib/layouts/collection-layout/collection-layout.mjs +38 -0
- package/esm2020/lib/layouts/collection-layout/collection-layout.types.mjs +2 -0
- package/esm2020/lib/layouts/entita-layout/entita-layout.config.mjs +29 -0
- package/esm2020/lib/layouts/entita-layout/entita-layout.ds.mjs +310 -0
- package/esm2020/lib/layouts/entita-layout/entita-layout.eh.mjs +119 -0
- package/esm2020/lib/layouts/entita-layout/entita-layout.mjs +51 -0
- package/esm2020/lib/layouts/entita-layout/entita-layout.types.mjs +2 -0
- package/esm2020/lib/layouts/gallery-layout/gallery-facets.config.mjs +145 -0
- package/esm2020/lib/layouts/gallery-layout/gallery-layout.config.mjs +32 -0
- package/esm2020/lib/layouts/gallery-layout/gallery-layout.ds.mjs +15 -0
- package/esm2020/lib/layouts/gallery-layout/gallery-layout.eh.mjs +8 -0
- package/esm2020/lib/layouts/gallery-layout/gallery-layout.mjs +45 -0
- package/esm2020/lib/layouts/home-layout/home-layout.config.mjs +36 -0
- package/esm2020/lib/layouts/home-layout/home-layout.ds.mjs +286 -0
- package/esm2020/lib/layouts/home-layout/home-layout.eh.mjs +245 -0
- package/esm2020/lib/layouts/home-layout/home-layout.mjs +44 -0
- package/esm2020/lib/layouts/index.mjs +41 -0
- package/esm2020/lib/layouts/map-layout/map-layout.config.mjs +26 -0
- package/esm2020/lib/layouts/map-layout/map-layout.ds.mjs +112 -0
- package/esm2020/lib/layouts/map-layout/map-layout.eh.mjs +44 -0
- package/esm2020/lib/layouts/map-layout/map-layout.mjs +46 -0
- package/esm2020/lib/layouts/scheda-layout/scheda-layout.config.mjs +32 -0
- package/esm2020/lib/layouts/scheda-layout/scheda-layout.ds.mjs +282 -0
- package/esm2020/lib/layouts/scheda-layout/scheda-layout.eh.mjs +150 -0
- package/esm2020/lib/layouts/scheda-layout/scheda-layout.mjs +53 -0
- package/esm2020/lib/layouts/search-layout/search-facets.config.mjs +163 -0
- package/esm2020/lib/layouts/search-layout/search-layout.config.mjs +32 -0
- package/esm2020/lib/layouts/search-layout/search-layout.ds.mjs +296 -0
- package/esm2020/lib/layouts/search-layout/search-layout.eh.mjs +175 -0
- package/esm2020/lib/layouts/search-layout/search-layout.mjs +50 -0
- package/esm2020/lib/layouts/timeline-layout/timeline-layout.config.mjs +26 -0
- package/esm2020/lib/layouts/timeline-layout/timeline-layout.ds.mjs +133 -0
- package/esm2020/lib/layouts/timeline-layout/timeline-layout.eh.mjs +41 -0
- package/esm2020/lib/layouts/timeline-layout/timeline-layout.mjs +46 -0
- package/esm2020/lib/n7-boilerplate-arianna.module.mjs +110 -0
- package/esm2020/lib/search/aw-facet-inputs/aw-facet-input-checkbox.mjs +32 -0
- package/esm2020/lib/search/aw-facet-inputs/aw-facet-input-link.mjs +89 -0
- package/esm2020/lib/search/aw-facet-inputs/aw-facet-input-select.mjs +28 -0
- package/esm2020/lib/search/aw-facet-inputs/aw-facet-input-text.mjs +36 -0
- package/esm2020/lib/search/aw-facet-inputs/aw-facet-input.mjs +30 -0
- package/esm2020/lib/search/aw-facet-inputs/index.mjs +6 -0
- package/esm2020/lib/search/aw-search.model.mjs +331 -0
- package/esm2020/lib/search/aw-search.service.mjs +42 -0
- package/esm2020/lib/search/entity-links.helper.mjs +126 -0
- package/esm2020/net7-boilerplate-arianna.mjs +5 -0
- package/esm2020/public-api.mjs +11 -0
- package/fesm2015/net7-boilerplate-arianna.mjs +7482 -0
- package/fesm2015/net7-boilerplate-arianna.mjs.map +1 -0
- package/fesm2020/net7-boilerplate-arianna.mjs +7520 -0
- package/fesm2020/net7-boilerplate-arianna.mjs.map +1 -0
- package/lib/components/aw-facets-wrapper/aw-facets-wrapper.d.ts +9 -0
- package/lib/components/bubble-chart-wrapper/bubble-chart-wrapper.d.ts +9 -0
- package/lib/components/chart-tippy/chart-tippy.d.ts +9 -0
- package/lib/components/index.d.ts +6 -0
- package/lib/components/pdf-viewer/pdf-viewer.d.ts +38 -0
- package/lib/components/scheda-dropdown/scheda-dropdown.d.ts +23 -0
- package/lib/components/smart-breadcrumbs/smart-breadcrumbs.d.ts +71 -0
- package/lib/config/apollo.config.d.ts +67 -0
- package/lib/config-types/arianna/app.d.ts +103 -0
- package/lib/config-types/arianna/index.d.ts +2 -0
- package/lib/config-types/arianna/layouts.d.ts +164 -0
- package/lib/config-types/index.d.ts +1 -0
- package/lib/data-sources/autocomplete-wrapper.ds.d.ts +18 -0
- package/lib/data-sources/aw-facets-wrapper.ds.d.ts +50 -0
- package/lib/data-sources/bubble-chart.ds.d.ts +47 -0
- package/lib/data-sources/carousel.ds.d.ts +22 -0
- package/lib/data-sources/chart-tippy.ds.d.ts +4 -0
- package/lib/data-sources/entita-metadata-viewer.ds.d.ts +9 -0
- package/lib/data-sources/entita-nav.ds.d.ts +4 -0
- package/lib/data-sources/gallery-results.ds.d.ts +11 -0
- package/lib/data-sources/hero.ds.d.ts +20 -0
- package/lib/data-sources/home-autocomplete.ds.d.ts +37 -0
- package/lib/data-sources/home-facets-wrapper.ds.d.ts +14 -0
- package/lib/data-sources/home-hero-patrimonio.ds.d.ts +4 -0
- package/lib/data-sources/home-item-tags-wrapper.ds.d.ts +4 -0
- package/lib/data-sources/index.d.ts +27 -0
- package/lib/data-sources/linked-objects.ds.d.ts +22 -0
- package/lib/data-sources/map.ds.d.ts +17 -0
- package/lib/data-sources/related-entities.ds.d.ts +7 -0
- package/lib/data-sources/scheda-breadcrumbs.ds.d.ts +5 -0
- package/lib/data-sources/scheda-dropdown.ds.d.ts +7 -0
- package/lib/data-sources/scheda-image.ds.d.ts +10 -0
- package/lib/data-sources/scheda-inner-title.ds.d.ts +4 -0
- package/lib/data-sources/scheda-metadata.ds.d.ts +8 -0
- package/lib/data-sources/scheda-pdf.ds.d.ts +8 -0
- package/lib/data-sources/search-layout-tabs.ds.d.ts +12 -0
- package/lib/data-sources/sidebar-header.ds.d.ts +11 -0
- package/lib/data-sources/table.ds.d.ts +4 -0
- package/lib/data-sources/timeline.ds.d.ts +37 -0
- package/lib/data-sources/tree.ds.d.ts +19 -0
- package/lib/event-handlers/autocomplete-wrapper.eh.d.ts +4 -0
- package/lib/event-handlers/aw-facets-wrapper.eh.d.ts +7 -0
- package/lib/event-handlers/bubble-chart.eh.d.ts +7 -0
- package/lib/event-handlers/chart-tippy.eh.d.ts +6 -0
- package/lib/event-handlers/entita-nav.eh.d.ts +4 -0
- package/lib/event-handlers/gallery-results.eh.d.ts +4 -0
- package/lib/event-handlers/hero.eh.d.ts +4 -0
- package/lib/event-handlers/home-autocomplete.eh.d.ts +4 -0
- package/lib/event-handlers/home-facets-wrapper.eh.d.ts +7 -0
- package/lib/event-handlers/home-hero-patrimonio.eh.d.ts +4 -0
- package/lib/event-handlers/home-item-tags-wrapper.eh.d.ts +4 -0
- package/lib/event-handlers/index.d.ts +21 -0
- package/lib/event-handlers/linked-objects.eh.d.ts +5 -0
- package/lib/event-handlers/map.eh.d.ts +5 -0
- package/lib/event-handlers/scheda-breadcrumbs.eh.d.ts +4 -0
- package/lib/event-handlers/scheda-dropdown.eh.d.ts +4 -0
- package/lib/event-handlers/scheda-pdf.eh.d.ts +6 -0
- package/lib/event-handlers/search-layout-tabs.eh.d.ts +4 -0
- package/lib/event-handlers/sidebar-header.eh.d.ts +4 -0
- package/lib/event-handlers/table.eh.d.ts +4 -0
- package/lib/event-handlers/timeline.eh.d.ts +5 -0
- package/lib/event-handlers/tree.eh.d.ts +9 -0
- package/lib/helpers/metadata.helper.d.ts +15 -0
- package/lib/layouts/collection-layout/collection-layout.config.d.ts +13 -0
- package/lib/layouts/collection-layout/collection-layout.d.ts +21 -0
- package/lib/layouts/collection-layout/collection-layout.ds.d.ts +50 -0
- package/lib/layouts/collection-layout/collection-layout.eh.d.ts +6 -0
- package/lib/layouts/collection-layout/collection-layout.types.d.ts +31 -0
- package/lib/layouts/entita-layout/entita-layout.config.d.ts +29 -0
- package/lib/layouts/entita-layout/entita-layout.d.ts +28 -0
- package/lib/layouts/entita-layout/entita-layout.ds.d.ts +76 -0
- package/lib/layouts/entita-layout/entita-layout.eh.d.ts +13 -0
- package/lib/layouts/entita-layout/entita-layout.types.d.ts +17 -0
- package/lib/layouts/gallery-layout/gallery-facets.config.d.ts +150 -0
- package/lib/layouts/gallery-layout/gallery-layout.config.d.ts +38 -0
- package/lib/layouts/gallery-layout/gallery-layout.d.ts +26 -0
- package/lib/layouts/gallery-layout/gallery-layout.ds.d.ts +158 -0
- package/lib/layouts/gallery-layout/gallery-layout.eh.d.ts +4 -0
- package/lib/layouts/home-layout/home-layout.config.d.ts +15 -0
- package/lib/layouts/home-layout/home-layout.d.ts +23 -0
- package/lib/layouts/home-layout/home-layout.ds.d.ts +53 -0
- package/lib/layouts/home-layout/home-layout.eh.d.ts +11 -0
- package/lib/layouts/index.d.ts +32 -0
- package/lib/layouts/map-layout/map-layout.config.d.ts +22 -0
- package/lib/layouts/map-layout/map-layout.d.ts +23 -0
- package/lib/layouts/map-layout/map-layout.ds.d.ts +37 -0
- package/lib/layouts/map-layout/map-layout.eh.d.ts +5 -0
- package/lib/layouts/scheda-layout/scheda-layout.config.d.ts +19 -0
- package/lib/layouts/scheda-layout/scheda-layout.d.ts +33 -0
- package/lib/layouts/scheda-layout/scheda-layout.ds.d.ts +75 -0
- package/lib/layouts/scheda-layout/scheda-layout.eh.d.ts +11 -0
- package/lib/layouts/search-layout/search-facets.config.d.ts +168 -0
- package/lib/layouts/search-layout/search-layout.config.d.ts +38 -0
- package/lib/layouts/search-layout/search-layout.d.ts +31 -0
- package/lib/layouts/search-layout/search-layout.ds.d.ts +71 -0
- package/lib/layouts/search-layout/search-layout.eh.d.ts +31 -0
- package/lib/layouts/timeline-layout/timeline-layout.config.d.ts +22 -0
- package/lib/layouts/timeline-layout/timeline-layout.d.ts +23 -0
- package/lib/layouts/timeline-layout/timeline-layout.ds.d.ts +39 -0
- package/lib/layouts/timeline-layout/timeline-layout.eh.d.ts +5 -0
- package/lib/n7-boilerplate-arianna.module.d.ts +28 -0
- package/lib/search/aw-facet-inputs/aw-facet-input-checkbox.d.ts +18 -0
- package/lib/search/aw-facet-inputs/aw-facet-input-link.d.ts +8 -0
- package/lib/search/aw-facet-inputs/aw-facet-input-select.d.ts +21 -0
- package/lib/search/aw-facet-inputs/aw-facet-input-text.d.ts +30 -0
- package/lib/search/aw-facet-inputs/aw-facet-input.d.ts +35 -0
- package/lib/search/aw-facet-inputs/index.d.ts +5 -0
- package/lib/search/aw-search.model.d.ts +125 -0
- package/lib/search/aw-search.service.d.ts +13 -0
- package/lib/search/entity-links.helper.d.ts +12 -0
- package/net7-boilerplate-arianna.d.ts +5 -0
- package/package.json +36 -0
- package/public-api.d.ts +6 -0
- package/src/lib/styles/arianna/components/_advanced-autocomplete.scss +103 -0
- package/src/lib/styles/arianna/components/_breadcrumbs.scss +129 -0
- package/src/lib/styles/arianna/components/_bubble-popup-menu.scss +87 -0
- package/src/lib/styles/arianna/components/_carousel.scss +32 -0
- package/src/lib/styles/arianna/components/_facet-header.scss +58 -0
- package/src/lib/styles/arianna/components/_facet.scss +268 -0
- package/src/lib/styles/arianna/components/_footer.scss +64 -0
- package/src/lib/styles/arianna/components/_header.scss +61 -0
- package/src/lib/styles/arianna/components/_item-preview.scss +278 -0
- package/src/lib/styles/arianna/components/_map.scss +59 -0
- package/src/lib/styles/arianna/components/_metadata-viewer.scss +106 -0
- package/src/lib/styles/arianna/components/_pdf-viewer.scss +93 -0
- package/src/lib/styles/arianna/components/_simple-autocomplete.scss +60 -0
- package/src/lib/styles/arianna/components/_timeline.scss +112 -0
- package/src/lib/styles/arianna/components/_tippy-tooltip.scss +41 -0
- package/src/lib/styles/arianna/components/_tree.scss +110 -0
- package/src/lib/styles/arianna/generic/_color_scheme.scss +60 -0
- package/src/lib/styles/arianna/generic/_mixins.scss +18 -0
- package/src/lib/styles/arianna/generic/_variables.scss +380 -0
- package/src/lib/styles/arianna/layouts/_collection-layout.scss +200 -0
- package/src/lib/styles/arianna/layouts/_entita-layout.scss +344 -0
- package/src/lib/styles/arianna/layouts/_home-layout.scss +785 -0
- package/src/lib/styles/arianna/layouts/_multimedia-layout.scss +132 -0
- package/src/lib/styles/arianna/layouts/_scheda-layout.scss +438 -0
- package/src/lib/styles/arianna/layouts/_search-layout.scss +284 -0
- package/src/lib/styles/arianna/utilities/_item-preview-list.scss +48 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { SmartPaginationDS, SmartPaginationEH } from '@net7/boilerplate-common';
|
|
2
|
+
import { AwEntitaLayoutDS } from './entita-layout.ds';
|
|
3
|
+
import { AwEntitaLayoutEH } from './entita-layout.eh';
|
|
4
|
+
import * as DS from '../../data-sources';
|
|
5
|
+
import * as EH from '../../event-handlers';
|
|
6
|
+
export const AwEntitaLayoutConfig = {
|
|
7
|
+
layoutId: 'aw-entita-layout',
|
|
8
|
+
widgets: [
|
|
9
|
+
{ id: 'aw-entita-nav', hasStaticData: true },
|
|
10
|
+
{ id: 'aw-entita-metadata-viewer' },
|
|
11
|
+
{ id: 'aw-linked-objects' },
|
|
12
|
+
{ id: 'aw-bubble-chart' },
|
|
13
|
+
{ id: 'aw-related-entities' },
|
|
14
|
+
{ id: 'aw-chart-tippy' },
|
|
15
|
+
{
|
|
16
|
+
id: 'n7-smart-pagination',
|
|
17
|
+
dataSource: SmartPaginationDS,
|
|
18
|
+
eventHandler: SmartPaginationEH,
|
|
19
|
+
},
|
|
20
|
+
],
|
|
21
|
+
layoutDS: AwEntitaLayoutDS,
|
|
22
|
+
layoutEH: AwEntitaLayoutEH,
|
|
23
|
+
widgetsDataSources: DS,
|
|
24
|
+
widgetsEventHandlers: EH,
|
|
25
|
+
options: {
|
|
26
|
+
// TODO
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRhLWxheW91dC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uNy1ib2lsZXJwbGF0ZS1hcmlhbm5hL3NyYy9saWIvbGF5b3V0cy9lbnRpdGEtbGF5b3V0L2VudGl0YS1sYXlvdXQuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekMsT0FBTyxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzQyxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRztJQUNsQyxRQUFRLEVBQUUsa0JBQWtCO0lBQzVCLE9BQU8sRUFBRTtRQUNQLEVBQUUsRUFBRSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFO1FBQzVDLEVBQUUsRUFBRSxFQUFFLDJCQUEyQixFQUFFO1FBQ25DLEVBQUUsRUFBRSxFQUFFLG1CQUFtQixFQUFFO1FBQzNCLEVBQUUsRUFBRSxFQUFFLGlCQUFpQixFQUFFO1FBQ3pCLEVBQUUsRUFBRSxFQUFFLHFCQUFxQixFQUFFO1FBQzdCLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixFQUFFO1FBQ3hCO1lBQ0UsRUFBRSxFQUFFLHFCQUFxQjtZQUN6QixVQUFVLEVBQUUsaUJBQWlCO1lBQzdCLFlBQVksRUFBRSxpQkFBaUI7U0FDaEM7S0FDRjtJQUNELFFBQVEsRUFBRSxnQkFBZ0I7SUFDMUIsUUFBUSxFQUFFLGdCQUFnQjtJQUMxQixrQkFBa0IsRUFBRSxFQUFFO0lBQ3RCLG9CQUFvQixFQUFFLEVBQUU7SUFDeEIsT0FBTyxFQUFFO0lBQ1AsT0FBTztLQUNSO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNtYXJ0UGFnaW5hdGlvbkRTLCBTbWFydFBhZ2luYXRpb25FSCB9IGZyb20gJ0BuZXQ3L2JvaWxlcnBsYXRlLWNvbW1vbic7XG5pbXBvcnQgeyBBd0VudGl0YUxheW91dERTIH0gZnJvbSAnLi9lbnRpdGEtbGF5b3V0LmRzJztcbmltcG9ydCB7IEF3RW50aXRhTGF5b3V0RUggfSBmcm9tICcuL2VudGl0YS1sYXlvdXQuZWgnO1xuaW1wb3J0ICogYXMgRFMgZnJvbSAnLi4vLi4vZGF0YS1zb3VyY2VzJztcbmltcG9ydCAqIGFzIEVIIGZyb20gJy4uLy4uL2V2ZW50LWhhbmRsZXJzJztcblxuZXhwb3J0IGNvbnN0IEF3RW50aXRhTGF5b3V0Q29uZmlnID0ge1xuICBsYXlvdXRJZDogJ2F3LWVudGl0YS1sYXlvdXQnLFxuICB3aWRnZXRzOiBbIC8vIGFycmF5IG9mIGNvbXBvbmVudHMgb2YgdGhpcyBsYXlvdXRcbiAgICB7IGlkOiAnYXctZW50aXRhLW5hdicsIGhhc1N0YXRpY0RhdGE6IHRydWUgfSxcbiAgICB7IGlkOiAnYXctZW50aXRhLW1ldGFkYXRhLXZpZXdlcicgfSxcbiAgICB7IGlkOiAnYXctbGlua2VkLW9iamVjdHMnIH0sXG4gICAgeyBpZDogJ2F3LWJ1YmJsZS1jaGFydCcgfSxcbiAgICB7IGlkOiAnYXctcmVsYXRlZC1lbnRpdGllcycgfSxcbiAgICB7IGlkOiAnYXctY2hhcnQtdGlwcHknIH0sXG4gICAge1xuICAgICAgaWQ6ICduNy1zbWFydC1wYWdpbmF0aW9uJyxcbiAgICAgIGRhdGFTb3VyY2U6IFNtYXJ0UGFnaW5hdGlvbkRTLFxuICAgICAgZXZlbnRIYW5kbGVyOiBTbWFydFBhZ2luYXRpb25FSCxcbiAgICB9LFxuICBdLFxuICBsYXlvdXREUzogQXdFbnRpdGFMYXlvdXREUyxcbiAgbGF5b3V0RUg6IEF3RW50aXRhTGF5b3V0RUgsXG4gIHdpZGdldHNEYXRhU291cmNlczogRFMsXG4gIHdpZGdldHNFdmVudEhhbmRsZXJzOiBFSCxcbiAgb3B0aW9uczoge1xuICAgIC8vIFRPRE9cbiAgfSxcbn07XG4iXX0=
|
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
import { LayoutDataSource } from '@n7-frontend/core';
|
|
2
|
+
import { of } from 'rxjs';
|
|
3
|
+
import { catchError, filter, first, tap } from 'rxjs/operators';
|
|
4
|
+
import { get as _get } from 'lodash';
|
|
5
|
+
import metadataHelper from '../../helpers/metadata.helper';
|
|
6
|
+
export class AwEntitaLayoutDS extends LayoutDataSource {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(...arguments);
|
|
9
|
+
this.hasMetadataFields = false;
|
|
10
|
+
this.navHeader = {}; // nav-header (custom) data
|
|
11
|
+
this.currentPage = 1; // pagination value (url param)
|
|
12
|
+
this.pageSize = 10; // linked objects page size
|
|
13
|
+
// ===== BUBBLE CHART =====
|
|
14
|
+
this.bubblesSize = 10; // related entities (bubbles) page size
|
|
15
|
+
this.fallbackText = '';
|
|
16
|
+
this.loading = true;
|
|
17
|
+
this.updateComponent = (id, data, options) => {
|
|
18
|
+
if (options) {
|
|
19
|
+
this.one(id).updateOptions(options);
|
|
20
|
+
}
|
|
21
|
+
this.one(id).update(data);
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Updates the pagination component
|
|
25
|
+
*/
|
|
26
|
+
this.drawPagination = (totalItems, pageSize) => {
|
|
27
|
+
if (!this.getLinkedObjectItems())
|
|
28
|
+
return;
|
|
29
|
+
const { href, queryParams } = this._getPaginationURL();
|
|
30
|
+
this.one('n7-smart-pagination').updateOptions({
|
|
31
|
+
mode: 'href',
|
|
32
|
+
href,
|
|
33
|
+
queryParams,
|
|
34
|
+
});
|
|
35
|
+
this.one('n7-smart-pagination').update({
|
|
36
|
+
totalPages: this.getPageCount(totalItems, pageSize),
|
|
37
|
+
currentPage: +this.currentPage || 1,
|
|
38
|
+
pageLimit: 5,
|
|
39
|
+
sizes: {
|
|
40
|
+
label: 'Numero di risultati',
|
|
41
|
+
list: [10, 25, 50],
|
|
42
|
+
active: +this.pageSize,
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Updates the selected tab on tab change
|
|
48
|
+
*/
|
|
49
|
+
this.handlePageNavigation = () => {
|
|
50
|
+
if (!this.myResponse) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
this.getEntityDetailsPage(this.myResponse.id, +this.currentPage, +this.pageSize)
|
|
54
|
+
.pipe(first())
|
|
55
|
+
.subscribe({
|
|
56
|
+
// Await for network response
|
|
57
|
+
next: (data) => {
|
|
58
|
+
this.myResponse = data;
|
|
59
|
+
const { href, queryParams } = this._getPaginationURL();
|
|
60
|
+
// update layout state
|
|
61
|
+
this.pageSize = queryParams.size;
|
|
62
|
+
this.currentPage = queryParams.page;
|
|
63
|
+
// update components
|
|
64
|
+
this.drawPagination(this.getItemCount(), this.pageSize);
|
|
65
|
+
this.one('aw-linked-objects').updateOptions({
|
|
66
|
+
paginationParams: { href, queryParams },
|
|
67
|
+
context: this.selectedTab,
|
|
68
|
+
config: this.configuration,
|
|
69
|
+
dynamicPagination: {
|
|
70
|
+
total: this.getItemCount(),
|
|
71
|
+
},
|
|
72
|
+
page: queryParams.page,
|
|
73
|
+
size: queryParams.size,
|
|
74
|
+
pagination: true,
|
|
75
|
+
});
|
|
76
|
+
this.one('aw-linked-objects').update({ items: this.getLinkedObjectItems() });
|
|
77
|
+
},
|
|
78
|
+
error: (e) => catchError(e),
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
this.handleNavUpdate = (tab) => {
|
|
82
|
+
this.selectedTab = tab;
|
|
83
|
+
this.updateWidgets(this.myResponse);
|
|
84
|
+
this.one('aw-linked-objects').updateOptions({
|
|
85
|
+
context: this.selectedTab,
|
|
86
|
+
config: this.configuration,
|
|
87
|
+
dynamicPagination: {
|
|
88
|
+
total: this.getItemCount(),
|
|
89
|
+
},
|
|
90
|
+
page: this.currentPage,
|
|
91
|
+
size: this.pageSize,
|
|
92
|
+
pagination: true,
|
|
93
|
+
paginationParams: this._getPaginationURL(),
|
|
94
|
+
});
|
|
95
|
+
this.one('aw-linked-objects').update({ items: this.getLinkedObjectItems() });
|
|
96
|
+
// update the url with the correct page and size
|
|
97
|
+
const queryParams = {
|
|
98
|
+
page: this.currentPage, size: this.pageSize,
|
|
99
|
+
};
|
|
100
|
+
this.router.navigate([], {
|
|
101
|
+
relativeTo: this.route,
|
|
102
|
+
queryParams,
|
|
103
|
+
queryParamsHandling: 'merge'
|
|
104
|
+
});
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
onInit({ configuration, mainState, router, route, options, titleService, communication, }) {
|
|
108
|
+
this.route = route;
|
|
109
|
+
this.communication = communication;
|
|
110
|
+
this.configuration = configuration;
|
|
111
|
+
this.mainState = mainState;
|
|
112
|
+
this.options = options;
|
|
113
|
+
this.router = router;
|
|
114
|
+
this.titleService = titleService;
|
|
115
|
+
this.currentId = '';
|
|
116
|
+
this.currentPage = +this.route.snapshot.queryParams.page ?? 1;
|
|
117
|
+
this.one('aw-related-entities').updateOptions({
|
|
118
|
+
config: this.configuration,
|
|
119
|
+
});
|
|
120
|
+
// navigation update
|
|
121
|
+
this.mainState.updateCustom('currentNav', 'entita');
|
|
122
|
+
// update head title
|
|
123
|
+
this.mainState.update('headTitle', 'Arianna4View - Entità');
|
|
124
|
+
// check if there is only one tab
|
|
125
|
+
this.singleTabCheck();
|
|
126
|
+
}
|
|
127
|
+
singleTabCheck() {
|
|
128
|
+
const navDS = this.getWidgetDataSource('aw-entita-nav');
|
|
129
|
+
navDS.out$
|
|
130
|
+
.pipe(filter((output) => !!output))
|
|
131
|
+
.subscribe(({ items }) => {
|
|
132
|
+
// if there is only one tab
|
|
133
|
+
// and there are no query params
|
|
134
|
+
// navigate to the tab.
|
|
135
|
+
if (items.length === 1 && !this.currentPage) {
|
|
136
|
+
this.router.navigate([items[0].anchor.href], { replaceUrl: true });
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
updateWidgets(data) {
|
|
141
|
+
/*
|
|
142
|
+
Updates the widgets on this layout, based on route
|
|
143
|
+
*/
|
|
144
|
+
const selected = this.selectedTab;
|
|
145
|
+
Object.keys(data).forEach((k) => {
|
|
146
|
+
if (Array.isArray(data[k]) && data[k].length === 0) {
|
|
147
|
+
data[k] = null;
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
this.one('aw-entita-nav').update({
|
|
151
|
+
data,
|
|
152
|
+
selected,
|
|
153
|
+
basePath: this.getNavBasePath(),
|
|
154
|
+
});
|
|
155
|
+
this.updateComponent('aw-entita-metadata-viewer', this.getFields(this.myResponse));
|
|
156
|
+
this.one('aw-related-entities').update(this.myResponse.relatedEntities);
|
|
157
|
+
this.drawPagination(this.getItemCount(), this.pageSize);
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Given a page number and a list size, returns the data
|
|
161
|
+
* for a single page of content.
|
|
162
|
+
*
|
|
163
|
+
* @param id Entity ID
|
|
164
|
+
* @param pageNumber Page number to load
|
|
165
|
+
* @param pageSize How many items need to be loaded
|
|
166
|
+
*/
|
|
167
|
+
getEntityDetailsPage(id, pageNumber, pageSize) {
|
|
168
|
+
return this.communication.request$('getEntityDetails', {
|
|
169
|
+
onError: (error) => console.error(error),
|
|
170
|
+
params: {
|
|
171
|
+
entityId: id,
|
|
172
|
+
itemsPagination: { offset: ((pageNumber || 1) - 1) * pageSize, limit: +pageSize },
|
|
173
|
+
entitiesListSize: this.bubblesSize
|
|
174
|
+
},
|
|
175
|
+
}).pipe(
|
|
176
|
+
// global metadata tab control
|
|
177
|
+
tap(({ fields, typeOfEntity }) => {
|
|
178
|
+
this.hasMetadataFields = !!metadataHelper.normalize({
|
|
179
|
+
fields,
|
|
180
|
+
paths: this.configuration.get('paths'),
|
|
181
|
+
labels: this.configuration.get('labels'),
|
|
182
|
+
metadataToShow: _get(this.configuration.get('entita-layout'), 'metadata-to-show', []),
|
|
183
|
+
type: typeOfEntity
|
|
184
|
+
}).length;
|
|
185
|
+
}));
|
|
186
|
+
}
|
|
187
|
+
/*
|
|
188
|
+
* Loads the data for the selected nav item, into the adjacent text block.
|
|
189
|
+
*/
|
|
190
|
+
loadItem(id, slug, tab) {
|
|
191
|
+
this.loading = true;
|
|
192
|
+
if (id && tab) {
|
|
193
|
+
this.currentId = id; // store selected item from url
|
|
194
|
+
this.currentSlug = slug; // store selected item from url
|
|
195
|
+
this.selectedTab = tab; // store selected tab from url
|
|
196
|
+
return this.getEntityDetailsPage(id, this.currentPage, this.pageSize);
|
|
197
|
+
}
|
|
198
|
+
this.pageTitle = 'Entità Test';
|
|
199
|
+
return of(null);
|
|
200
|
+
}
|
|
201
|
+
loadContent(res) {
|
|
202
|
+
this.loading = false;
|
|
203
|
+
const config = this.configuration.get('config-keys')[res.typeOfEntity];
|
|
204
|
+
this.myResponse = res;
|
|
205
|
+
this.navHeader = {
|
|
206
|
+
icon: config ? config.icon : '',
|
|
207
|
+
text: this.myResponse.label,
|
|
208
|
+
color: config['class-name'],
|
|
209
|
+
};
|
|
210
|
+
this.one('aw-entita-nav').updateOptions({
|
|
211
|
+
bubblesEnabled: this.bubblesEnabled,
|
|
212
|
+
config: this.configuration.get('entita-layout'),
|
|
213
|
+
hasMetadataFields: this.hasMetadataFields,
|
|
214
|
+
labels: this.configuration.get('labels')
|
|
215
|
+
});
|
|
216
|
+
this.one('aw-entita-metadata-viewer').update(this.getFields(res));
|
|
217
|
+
this.one('aw-linked-objects').updateOptions({
|
|
218
|
+
context: this.selectedTab,
|
|
219
|
+
config: this.configuration,
|
|
220
|
+
page: this.currentPage,
|
|
221
|
+
pagination: true,
|
|
222
|
+
dynamicPagination: {
|
|
223
|
+
total: this.getItemCount(),
|
|
224
|
+
},
|
|
225
|
+
paginationParams: this._getPaginationURL(),
|
|
226
|
+
size: this.pageSize,
|
|
227
|
+
});
|
|
228
|
+
this.getLinkedObjectItems().forEach((el) => {
|
|
229
|
+
el.relationName = res.label.length > 30
|
|
230
|
+
? `${res.label.substr(0, 30)}... `
|
|
231
|
+
: res.label;
|
|
232
|
+
});
|
|
233
|
+
res.relatedEntities.forEach((el) => {
|
|
234
|
+
el.relationName = res.label.length > 30
|
|
235
|
+
? `${res.label.substr(0, 30)}... `
|
|
236
|
+
: res.label;
|
|
237
|
+
});
|
|
238
|
+
this.one('aw-linked-objects').update({ items: this.getLinkedObjectItems() });
|
|
239
|
+
this.one('aw-related-entities').update(res.relatedEntities);
|
|
240
|
+
// fallback text
|
|
241
|
+
if (!this.hasMetadataFields) {
|
|
242
|
+
this.fallbackText = this.configuration.get('entita-layout').fallback;
|
|
243
|
+
}
|
|
244
|
+
// update head title
|
|
245
|
+
this.mainState.update('headTitle', `Arianna4View - Entità - ${this.myResponse.label}`);
|
|
246
|
+
}
|
|
247
|
+
_getPaginationURL() {
|
|
248
|
+
return {
|
|
249
|
+
href: [
|
|
250
|
+
this.configuration.get('paths').entitaBasePath,
|
|
251
|
+
`${this.currentId}/`,
|
|
252
|
+
this.currentSlug,
|
|
253
|
+
`/${this.selectedTab}/`,
|
|
254
|
+
].join(''),
|
|
255
|
+
queryParams: {
|
|
256
|
+
page: this.currentPage || 1,
|
|
257
|
+
size: this.pageSize,
|
|
258
|
+
},
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
getNavBasePath() {
|
|
262
|
+
return [
|
|
263
|
+
this.configuration.get('paths').entitaBasePath,
|
|
264
|
+
`${this.currentId}/`,
|
|
265
|
+
this.currentSlug,
|
|
266
|
+
].join('');
|
|
267
|
+
}
|
|
268
|
+
getItemCount() {
|
|
269
|
+
switch (this.selectedTab) {
|
|
270
|
+
case 'fondi-collegati':
|
|
271
|
+
return this.myResponse.relatedLaTotalCount;
|
|
272
|
+
case 'oggetti-collegati':
|
|
273
|
+
return this.myResponse.relatedItemsTotalCount;
|
|
274
|
+
default:
|
|
275
|
+
return 0;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
getFields(response) {
|
|
279
|
+
const { fields, typeOfEntity } = response;
|
|
280
|
+
const paths = this.configuration.get('paths');
|
|
281
|
+
const labels = this.configuration.get('labels');
|
|
282
|
+
let metadataToShow = _get(this.configuration.get('entita-layout'), 'metadata-to-show', []);
|
|
283
|
+
if (this.selectedTab === 'overview') {
|
|
284
|
+
metadataToShow = _get(this.configuration.get('entita-layout'), 'overview.informazioni', []);
|
|
285
|
+
}
|
|
286
|
+
return metadataHelper.normalize({
|
|
287
|
+
fields,
|
|
288
|
+
paths,
|
|
289
|
+
labels,
|
|
290
|
+
metadataToShow,
|
|
291
|
+
type: typeOfEntity
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
getLinkedObjectItems() {
|
|
295
|
+
return this.selectedTab === 'fondi-collegati'
|
|
296
|
+
? this.myResponse.relatedLa
|
|
297
|
+
: this.myResponse.relatedItems;
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Calculates the total amount of pages
|
|
301
|
+
*
|
|
302
|
+
* @param items the number of records in the database
|
|
303
|
+
* @param size the number of items shown on a page
|
|
304
|
+
* @returns the total number of pages
|
|
305
|
+
*/
|
|
306
|
+
getPageCount(items, size) {
|
|
307
|
+
return Math.floor(items / size);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRhLWxheW91dC5kcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL243LWJvaWxlcnBsYXRlLWFyaWFubmEvc3JjL2xpYi9sYXlvdXRzL2VudGl0YS1sYXlvdXQvZW50aXRhLWxheW91dC5kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRCxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFDTCxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQy9CLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLEdBQUcsSUFBSSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFckMsT0FBTyxjQUFjLE1BQU0sK0JBQStCLENBQUM7QUFHM0QsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGdCQUFnQjtJQUF0RDs7UUFlUyxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFNMUIsY0FBUyxHQUFRLEVBQUUsQ0FBQyxDQUFDLDJCQUEyQjtRQU1oRCxnQkFBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLCtCQUErQjtRQUVoRCxhQUFRLEdBQUcsRUFBRSxDQUFDLENBQUMsMkJBQTJCO1FBRWpELDJCQUEyQjtRQUNwQixnQkFBVyxHQUFHLEVBQUUsQ0FBQyxDQUFDLHVDQUF1QztRQU96RCxpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUVsQixZQUFPLEdBQUcsSUFBSSxDQUFDO1FBNENmLG9CQUFlLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQVEsRUFBRSxFQUFFO1lBQzlDLElBQUksT0FBTyxFQUFFO2dCQUNYLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3JDO1lBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FB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LE1BQU07WUFDTixLQUFLO1lBQ0wsTUFBTTtZQUNOLGNBQWM7WUFDZCxJQUFJLEVBQUUsWUFBWTtTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxpQkFBaUI7WUFDM0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUztZQUMzQixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLFlBQVksQ0FBQyxLQUFhLEVBQUUsSUFBWTtRQUM5QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExheW91dERhdGFTb3VyY2UgfSBmcm9tICdAbjctZnJvbnRlbmQvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgY2F0Y2hFcnJvciwgZmlsdGVyLCBmaXJzdCwgdGFwXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGdldCBhcyBfZ2V0IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBQYXJhbXMsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgbWV0YWRhdGFIZWxwZXIgZnJvbSAnLi4vLi4vaGVscGVycy9tZXRhZGF0YS5oZWxwZXInO1xuaW1wb3J0IHsgRW50aXRhTGF5b3V0UmVzcG9uc2UgfSBmcm9tICcuL2VudGl0YS1sYXlvdXQudHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgQXdFbnRpdGFMYXlvdXREUyBleHRlbmRzIExheW91dERhdGFTb3VyY2Uge1xuICBwcm90ZWN0ZWQgY29uZmlndXJhdGlvbjogYW55O1xuXG4gIHByb3RlY3RlZCBtYWluU3RhdGU6IGFueTtcblxuICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXI7XG5cbiAgcHJvdGVjdGVkIHRpdGxlU2VydmljZTogYW55O1xuXG4gIHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGU7XG5cbiAgcHVibGljIG9wdGlvbnM6IGFueTtcblxuICBwdWJsaWMgcGFnZVRpdGxlOiBzdHJpbmc7XG5cbiAgcHVibGljIGhhc01ldGFkYXRhRmllbGRzID0gZmFsc2U7XG5cbiAgcHVibGljIG15UmVzcG9uc2U6IEVudGl0YUxheW91dFJlc3BvbnNlOyAvLyBiYWNrZW5kIHJlc3BvbnNlIG9iamVjdFxuXG4gIHB1YmxpYyBzZWxlY3RlZFRhYjogc3RyaW5nOyAvLyBzZWxlY3RlZCBuYXYgaXRlbVxuXG4gIHB1YmxpYyBuYXZIZWFkZXI6IGFueSA9IHt9OyAvLyBuYXYtaGVhZGVyIChjdXN0b20pIGRhdGFcblxuICBwdWJsaWMgY3VycmVudElkOiBzdHJpbmc7IC8vIHNlbGVjdGVkIGVudGl0eSAodXJsIHBhcmFtKVxuXG4gIHB1YmxpYyBjdXJyZW50U2x1Zzogc3RyaW5nOyAvLyBzZWxlY3RlZCBlbnRpdHkgKHVybCBwYXJhbSlcblxuICBwdWJsaWMgY3VycmVudFBhZ2UgPSAxOyAvLyBwYWdpbmF0aW9uIHZhbHVlICh1cmwgcGFyYW0pXG5cbiAgcHVibGljIHBhZ2VTaXplID0gMTA7IC8vIGxpbmtlZCBvYmplY3RzIHBhZ2Ugc2l6ZVxuXG4gIC8vID09PT09IEJVQkJMRSBDSEFSVCA9PT09PVxuICBwdWJsaWMgYnViYmxlc1NpemUgPSAxMDsgLy8gcmVsYXRlZCBlbnRpdGllcyAoYnViYmxlcykgcGFnZSBzaXplXG5cbiAgcHVibGljIGJ1YmJsZXNFbmFibGVkOiBib29sZWFuO1xuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PVxuICBwcml2YXRlIGNvbW11bmljYXRpb246IGFueTtcblxuICBwdWJsaWMgZmFsbGJhY2tUZXh0ID0gJyc7XG5cbiAgcHVibGljIGxvYWRpbmcgPSB0cnVlO1xuXG4gIG9uSW5pdCh7XG4gICAgY29uZmlndXJhdGlvbiwgbWFpblN0YXRlLCByb3V0ZXIsIHJvdXRlLCBvcHRpb25zLCB0aXRsZVNlcnZpY2UsIGNvbW11bmljYXRpb24sXG4gIH0pIHtcbiAgICB0aGlzLnJvdXRlID0gcm91dGU7XG4gICAgdGhpcy5jb21tdW5pY2F0aW9uID0gY29tbXVuaWNhdGlvbjtcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uO1xuICAgIHRoaXMubWFpblN0YXRlID0gbWFpblN0YXRlO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy5yb3V0ZXIgPSByb3V0ZXI7XG4gICAgdGhpcy50aXRsZVNlcnZpY2UgPSB0aXRsZVNlcnZpY2U7XG4gICAgdGhpcy5jdXJyZW50SWQgPSAnJztcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gK3RoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMucGFnZSA/PyAxO1xuICAgIHRoaXMub25lKCdhdy1yZWxhdGVkLWVudGl0aWVzJykudXBkYXRlT3B0aW9ucyh7XG4gICAgICBjb25maWc6IHRoaXMuY29uZmlndXJhdGlvbixcbiAgICB9KTtcblxuICAgIC8vIG5hdmlnYXRpb24gdXBkYXRlXG4gICAgdGhpcy5tYWluU3RhdGUudXBkYXRlQ3VzdG9tKCdjdXJyZW50TmF2JywgJ2VudGl0YScpO1xuXG4gICAgLy8gdXBkYXRlIGhlYWQgdGl0bGVcbiAgICB0aGlzLm1haW5TdGF0ZS51cGRhdGUoJ2hlYWRUaXRsZScsICdBcmlhbm5hNFZpZXcgLSBFbnRpdMOgJyk7XG5cbiAgICAvLyBjaGVjayBpZiB0aGVyZSBpcyBvbmx5IG9uZSB0YWJcbiAgICB0aGlzLnNpbmdsZVRhYkNoZWNrKCk7XG4gIH1cblxuICBzaW5nbGVUYWJDaGVjaygpIHtcbiAgICBjb25zdCBuYXZEUyA9IHRoaXMuZ2V0V2lkZ2V0RGF0YVNvdXJjZSgnYXctZW50aXRhLW5hdicpO1xuICAgIG5hdkRTLm91dCRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKG91dHB1dCkgPT4gISFvdXRwdXQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh7IGl0ZW1zIH0pID0+IHtcbiAgICAgICAgLy8gaWYgdGhlcmUgaXMgb25seSBvbmUgdGFiXG4gICAgICAgIC8vIGFuZCB0aGVyZSBhcmUgbm8gcXVlcnkgcGFyYW1zXG4gICAgICAgIC8vIG5hdmlnYXRlIHRvIHRoZSB0YWIuXG4gICAgICAgIGlmIChpdGVtcy5sZW5ndGggPT09IDEgJiYgIXRoaXMuY3VycmVudFBhZ2UpIHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbaXRlbXNbMF0uYW5jaG9yLmhyZWZdLCB7IHJlcGxhY2VVcmw6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUNvbXBvbmVudCA9IChpZCwgZGF0YSwgb3B0aW9ucz8pID0+IHtcbiAgICBpZiAob3B0aW9ucykge1xuICAgICAgdGhpcy5vbmUoaWQpLnVwZGF0ZU9wdGlvbnMob3B0aW9ucyk7XG4gICAgfVxuICAgIHRoaXMub25lKGlkKS51cGRhdGUoZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcGFnaW5hdGlvbiBjb21wb25lbnRcbiAgICovXG4gIGRyYXdQYWdpbmF0aW9uID0gKHRvdGFsSXRlbXMsIHBhZ2VTaXplKSA9PiB7XG4gICAgaWYgKCF0aGlzLmdldExpbmtlZE9iamVjdEl0ZW1zKCkpIHJldHVybjtcbiAgICBjb25zdCB7IGhyZWYsIHF1ZXJ5UGFyYW1zIH0gPSB0aGlzLl9nZXRQYWdpbmF0aW9uVVJMKCk7XG4gICAgdGhpcy5vbmUoJ243LXNtYXJ0LXBhZ2luYXRpb24nKS51cGRhdGVPcHRpb25zKHtcbiAgICAgIG1vZGU6ICdocmVmJyxcbiAgICAgIGhyZWYsXG4gICAgICBxdWVyeVBhcmFtcyxcbiAgICB9KTtcbiAgICB0aGlzLm9uZSgnbjctc21hcnQtcGFnaW5hdGlvbicpLnVwZGF0ZSh7XG4gICAgICB0b3RhbFBhZ2VzOiB0aGlzLmdldFBhZ2VDb3VudCh0b3RhbEl0ZW1zLCBwYWdlU2l6ZSksXG4gICAgICBjdXJyZW50UGFnZTogK3RoaXMuY3VycmVudFBhZ2UgfHwgMSxcbiAgICAgIHBhZ2VMaW1pdDogNSxcbiAgICAgIHNpemVzOiB7XG4gICAgICAgIGxhYmVsOiAnTnVtZXJvIGRpIHJpc3VsdGF0aScsXG4gICAgICAgIGxpc3Q6IFsxMCwgMjUsIDUwXSxcbiAgICAgICAgYWN0aXZlOiArdGhpcy5wYWdlU2l6ZSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgc2VsZWN0ZWQgdGFiIG9uIHRhYiBjaGFuZ2VcbiAgICovXG4gIGhhbmRsZVBhZ2VOYXZpZ2F0aW9uID0gKCkgPT4ge1xuICAgIGlmICghdGhpcy5teVJlc3BvbnNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZ2V0RW50aXR5RGV0YWlsc1BhZ2UodGhpcy5teVJlc3BvbnNlLmlkLCArdGhpcy5jdXJyZW50UGFnZSwgK3RoaXMucGFnZVNpemUpXG4gICAgICAucGlwZShmaXJzdCgpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIC8vIEF3YWl0IGZvciBuZXR3b3JrIHJlc3BvbnNlXG4gICAgICAgIG5leHQ6IChkYXRhKSA9PiB7XG4gICAgICAgICAgdGhpcy5teVJlc3BvbnNlID0gZGF0YTtcbiAgICAgICAgICBjb25zdCB7IGhyZWYsIHF1ZXJ5UGFyYW1zIH0gPSB0aGlzLl9nZXRQYWdpbmF0aW9uVVJMKCk7XG4gICAgICAgICAgLy8gdXBkYXRlIGxheW91dCBzdGF0ZVxuICAgICAgICAgIHRoaXMucGFnZVNpemUgPSBxdWVyeVBhcmFtcy5zaXplO1xuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSBxdWVyeVBhcmFtcy5wYWdlO1xuICAgICAgICAgIC8vIHVwZGF0ZSBjb21wb25lbnRzXG4gICAgICAgICAgdGhpcy5kcmF3UGFnaW5hdGlvbih0aGlzLmdldEl0ZW1Db3VudCgpLCB0aGlzLnBhZ2VTaXplKTtcbiAgICAgICAgICB0aGlzLm9uZSgnYXctbGlua2VkLW9iamVjdHMnKS51cGRhdGVPcHRpb25zKHtcbiAgICAgICAgICAgIHBhZ2luYXRpb25QYXJhbXM6IHsgaHJlZiwgcXVlcnlQYXJhbXMgfSxcbiAgICAgICAgICAgIGNvbnRleHQ6IHRoaXMuc2VsZWN0ZWRUYWIsXG4gICAgICAgICAgICBjb25maWc6IHRoaXMuY29uZmlndXJhdGlvbixcbiAgICAgICAgICAgIGR5bmFtaWNQYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICAgIHRvdGFsOiB0aGlzLmdldEl0ZW1Db3VudCgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhZ2U6IHF1ZXJ5UGFyYW1zLnBhZ2UsXG4gICAgICAgICAgICBzaXplOiBxdWVyeVBhcmFtcy5zaXplLFxuICAgICAgICAgICAgcGFnaW5hdGlvbjogdHJ1ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLm9uZSgnYXctbGlua2VkLW9iamVjdHMnKS51cGRhdGUoeyBpdGVtczogdGhpcy5nZXRMaW5rZWRPYmplY3RJdGVtcygpIH0pO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGUpID0+IGNhdGNoRXJyb3IoZSksXG4gICAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZU5hdlVwZGF0ZSA9ICh0YWIpID0+IHtcbiAgICB0aGlzLnNlbGVjdGVkVGFiID0gdGFiO1xuICAgIHRoaXMudXBkYXRlV2lkZ2V0cyh0aGlzLm15UmVzcG9uc2UpO1xuICAgIHRoaXMub25lKCdhdy1saW5rZWQtb2JqZWN0cycpLnVwZGF0ZU9wdGlvbnMoe1xuICAgICAgY29udGV4dDogdGhpcy5zZWxlY3RlZFRhYixcbiAgICAgIGNvbmZpZzogdGhpcy5jb25maWd1cmF0aW9uLFxuICAgICAgZHluYW1pY1BhZ2luYXRpb246IHtcbiAgICAgICAgdG90YWw6IHRoaXMuZ2V0SXRlbUNvdW50KCksXG4gICAgICB9LFxuICAgICAgcGFnZTogdGhpcy5jdXJyZW50UGFnZSxcbiAgICAgIHNpemU6IHRoaXMucGFnZVNpemUsXG4gICAgICBwYWdpbmF0aW9uOiB0cnVlLFxuICAgICAgcGFnaW5hdGlvblBhcmFtczogdGhpcy5fZ2V0UGFnaW5hdGlvblVSTCgpLFxuICAgIH0pO1xuICAgIHRoaXMub25lKCdhdy1saW5rZWQtb2JqZWN0cycpLnVwZGF0ZSh7IGl0ZW1zOiB0aGlzLmdldExpbmtlZE9iamVjdEl0ZW1zKCkgfSk7XG4gICAgLy8gdXBkYXRlIHRoZSB1cmwgd2l0aCB0aGUgY29ycmVjdCBwYWdlIGFuZCBzaXplXG4gICAgY29uc3QgcXVlcnlQYXJhbXM6IFBhcmFtcyA9IHtcbiAgICAgIHBhZ2U6IHRoaXMuY3VycmVudFBhZ2UsIHNpemU6IHRoaXMucGFnZVNpemUsXG4gICAgfTtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShcbiAgICAgIFtdLCB7XG4gICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXG4gICAgICAgIHF1ZXJ5UGFyYW1zLFxuICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHVwZGF0ZVdpZGdldHMoZGF0YSkge1xuICAgIC8qXG4gICAgICBVcGRhdGVzIHRoZSB3aWRnZXRzIG9uIHRoaXMgbGF5b3V0LCBiYXNlZCBvbiByb3V0ZVxuICAgICovXG4gICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkVGFiO1xuICAgIE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goKGspID0+IHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGFba10pICYmIGRhdGFba10ubGVuZ3RoID09PSAwKSB7IGRhdGFba10gPSBudWxsOyB9XG4gICAgfSk7XG4gICAgdGhpcy5vbmUoJ2F3LWVudGl0YS1uYXYnKS51cGRhdGUoe1xuICAgICAgZGF0YSxcbiAgICAgIHNlbGVjdGVkLFxuICAgICAgYmFzZVBhdGg6IHRoaXMuZ2V0TmF2QmFzZVBhdGgoKSxcbiAgICB9KTtcbiAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudCgnYXctZW50aXRhLW1ldGFkYXRhLXZpZXdlcicsIHRoaXMuZ2V0RmllbGRzKHRoaXMubXlSZXNwb25zZSkpO1xuICAgIHRoaXMub25lKCdhdy1yZWxhdGVkLWVudGl0aWVzJykudXBkYXRlKHRoaXMubXlSZXNwb25zZS5yZWxhdGVkRW50aXRpZXMpO1xuICAgIHRoaXMuZHJhd1BhZ2luYXRpb24odGhpcy5nZXRJdGVtQ291bnQoKSwgdGhpcy5wYWdlU2l6ZSk7XG4gIH1cblxuICAvKipcbiAgICogR2l2ZW4gYSBwYWdlIG51bWJlciBhbmQgYSBsaXN0IHNpemUsIHJldHVybnMgdGhlIGRhdGFcbiAgICogZm9yIGEgc2luZ2xlIHBhZ2Ugb2YgY29udGVudC5cbiAgICpcbiAgICogQHBhcmFtIGlkIEVudGl0eSBJRFxuICAgKiBAcGFyYW0gcGFnZU51bWJlciBQYWdlIG51bWJlciB0byBsb2FkXG4gICAqIEBwYXJhbSBwYWdlU2l6ZSBIb3cgbWFueSBpdGVtcyBuZWVkIHRvIGJlIGxvYWRlZFxuICAgKi9cbiAgZ2V0RW50aXR5RGV0YWlsc1BhZ2UoaWQsIHBhZ2VOdW1iZXI6IG51bWJlciwgcGFnZVNpemU6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuY29tbXVuaWNhdGlvbi5yZXF1ZXN0JCgnZ2V0RW50aXR5RGV0YWlscycsIHtcbiAgICAgIG9uRXJyb3I6IChlcnJvcikgPT4gY29uc29sZS5lcnJvcihlcnJvciksXG4gICAgICBwYXJhbXM6IHtcbiAgICAgICAgZW50aXR5SWQ6IGlkLFxuICAgICAgICBpdGVtc1BhZ2luYXRpb246IHsgb2Zmc2V0OiAoKHBhZ2VOdW1iZXIgfHwgMSkgLSAxKSAqIHBhZ2VTaXplLCBsaW1pdDogK3BhZ2VTaXplIH0sXG4gICAgICAgIGVudGl0aWVzTGlzdFNpemU6IHRoaXMuYnViYmxlc1NpemVcbiAgICAgIH0sXG4gICAgfSkucGlwZShcbiAgICAgIC8vIGdsb2JhbCBtZXRhZGF0YSB0YWIgY29udHJvbFxuICAgICAgdGFwKCh7IGZpZWxkcywgdHlwZU9mRW50aXR5IH0pID0+IHtcbiAgICAgICAgdGhpcy5oYXNNZXRhZGF0YUZpZWxkcyA9ICEhbWV0YWRhdGFIZWxwZXIubm9ybWFsaXplKHtcbiAgICAgICAgICBmaWVsZHMsXG4gICAgICAgICAgcGF0aHM6IHRoaXMuY29uZmlndXJhdGlvbi5nZXQoJ3BhdGhzJyksXG4gICAgICAgICAgbGFiZWxzOiB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0KCdsYWJlbHMnKSxcbiAgICAgICAgICBtZXRhZGF0YVRvU2hvdzogX2dldCh0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0KCdlbnRpdGEtbGF5b3V0JyksICdtZXRhZGF0YS10by1zaG93JywgW10pLFxuICAgICAgICAgIHR5cGU6IHR5cGVPZkVudGl0eVxuICAgICAgICB9KS5sZW5ndGg7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKlxuICAgKiBMb2FkcyB0aGUgZGF0YSBmb3IgdGhlIHNlbGVjdGVkIG5hdiBpdGVtLCBpbnRvIHRoZSBhZGphY2VudCB0ZXh0IGJsb2NrLlxuICAgKi9cbiAgbG9hZEl0ZW0oaWQsIHNsdWcsIHRhYik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICBpZiAoaWQgJiYgdGFiKSB7XG4gICAgICB0aGlzLmN1cnJlbnRJZCA9IGlkOyAvLyBzdG9yZSBzZWxlY3RlZCBpdGVtIGZyb20gdXJsXG4gICAgICB0aGlzLmN1cnJlbnRTbHVnID0gc2x1ZzsgLy8gc3RvcmUgc2VsZWN0ZWQgaXRlbSBmcm9tIHVybFxuICAgICAgdGhpcy5zZWxlY3RlZFRhYiA9IHRhYjsgLy8gc3RvcmUgc2VsZWN0ZWQgdGFiIGZyb20gdXJsXG4gICAgICByZXR1cm4gdGhpcy5nZXRFbnRpdHlEZXRhaWxzUGFnZShpZCwgdGhpcy5jdXJyZW50UGFnZSwgdGhpcy5wYWdlU2l6ZSk7XG4gICAgfVxuICAgIHRoaXMucGFnZVRpdGxlID0gJ0VudGl0w6AgVGVzdCc7XG4gICAgcmV0dXJuIG9mKG51bGwpO1xuICB9XG5cbiAgbG9hZENvbnRlbnQocmVzKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWd1cmF0aW9uLmdldCgnY29uZmlnLWtleXMnKVtyZXMudHlwZU9mRW50aXR5XTtcbiAgICB0aGlzLm15UmVzcG9uc2UgPSByZXM7XG4gICAgdGhpcy5uYXZIZWFkZXIgPSB7IC8vIGFsd2F5cyByZW5kZXIgbmF2IGhlYWRlclxuICAgICAgaWNvbjogY29uZmlnID8gY29uZmlnLmljb24gOiAnJyxcbiAgICAgIHRleHQ6IHRoaXMubXlSZXNwb25zZS5sYWJlbCxcbiAgICAgIGNvbG9yOiBjb25maWdbJ2NsYXNzLW5hbWUnXSxcbiAgICB9O1xuICAgIHRoaXMub25lKCdhdy1lbnRpdGEtbmF2JykudXBkYXRlT3B0aW9ucyh7XG4gICAgICBidWJibGVzRW5hYmxlZDogdGhpcy5idWJibGVzRW5hYmxlZCxcbiAgICAgIGNvbmZpZzogdGhpcy5jb25maWd1cmF0aW9uLmdldCgnZW50aXRhLWxheW91dCcpLFxuICAgICAgaGFzTWV0YWRhdGFGaWVsZHM6IHRoaXMuaGFzTWV0YWRhdGFGaWVsZHMsXG4gICAgICBsYWJlbHM6IHRoaXMuY29uZmlndXJhdGlvbi5nZXQoJ2xhYmVscycpXG4gICAgfSk7XG4gICAgdGhpcy5vbmUoJ2F3LWVudGl0YS1tZXRhZGF0YS12aWV3ZXInKS51cGRhdGUodGhpcy5nZXRGaWVsZHMocmVzKSk7XG4gICAgdGhpcy5vbmUoJ2F3LWxpbmtlZC1vYmplY3RzJykudXBkYXRlT3B0aW9ucyh7XG4gICAgICBjb250ZXh0OiB0aGlzLnNlbGVjdGVkVGFiLFxuICAgICAgY29uZmlnOiB0aGlzLmNvbmZpZ3VyYXRpb24sXG4gICAgICBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlLFxuICAgICAgcGFnaW5hdGlvbjogdHJ1ZSxcbiAgICAgIGR5bmFtaWNQYWdpbmF0aW9uOiB7XG4gICAgICAgIHRvdGFsOiB0aGlzLmdldEl0ZW1Db3VudCgpLFxuICAgICAgfSxcbiAgICAgIHBhZ2luYXRpb25QYXJhbXM6IHRoaXMuX2dldFBhZ2luYXRpb25VUkwoKSxcbiAgICAgIHNpemU6IHRoaXMucGFnZVNpemUsXG4gICAgfSk7XG4gICAgdGhpcy5nZXRMaW5rZWRPYmplY3RJdGVtcygpLmZvckVhY2goKGVsOiBhbnkpID0+IHtcbiAgICAgIGVsLnJlbGF0aW9uTmFtZSA9IHJlcy5sYWJlbC5sZW5ndGggPiAzMFxuICAgICAgICA/IGAke3Jlcy5sYWJlbC5zdWJzdHIoMCwgMzApfS4uLiBgXG4gICAgICAgIDogcmVzLmxhYmVsO1xuICAgIH0pO1xuICAgIHJlcy5yZWxhdGVkRW50aXRpZXMuZm9yRWFjaCgoZWw6IGFueSkgPT4ge1xuICAgICAgZWwucmVsYXRpb25OYW1lID0gcmVzLmxhYmVsLmxlbmd0aCA+IDMwXG4gICAgICAgID8gYCR7cmVzLmxhYmVsLnN1YnN0cigwLCAzMCl9Li4uIGBcbiAgICAgICAgOiByZXMubGFiZWw7XG4gICAgfSk7XG4gICAgdGhpcy5vbmUoJ2F3LWxpbmtlZC1vYmplY3RzJykudXBkYXRlKHsgaXRlbXM6IHRoaXMuZ2V0TGlua2VkT2JqZWN0SXRlbXMoKSB9KTtcbiAgICB0aGlzLm9uZSgnYXctcmVsYXRlZC1lbnRpdGllcycpLnVwZGF0ZShyZXMucmVsYXRlZEVudGl0aWVzKTtcbiAgICAvLyBmYWxsYmFjayB0ZXh0XG4gICAgaWYgKCF0aGlzLmhhc01ldGFkYXRhRmllbGRzKSB7XG4gICAgICB0aGlzLmZhbGxiYWNrVGV4dCA9IHRoaXMuY29uZmlndXJhdGlvbi5nZXQoJ2VudGl0YS1sYXlvdXQnKS5mYWxsYmFjaztcbiAgICB9XG4gICAgLy8gdXBkYXRlIGhlYWQgdGl0bGVcbiAgICB0aGlzLm1haW5TdGF0ZS51cGRhdGUoJ2hlYWRUaXRsZScsIGBBcmlhbm5hNFZpZXcgLSBFbnRpdMOgIC0gJHt0aGlzLm15UmVzcG9uc2UubGFiZWx9YCk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRQYWdpbmF0aW9uVVJMKCkge1xuICAgIHJldHVybiB7XG4gICAgICBocmVmOiBbXG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5nZXQoJ3BhdGhzJykuZW50aXRhQmFzZVBhdGgsXG4gICAgICAgIGAke3RoaXMuY3VycmVudElkfS9gLFxuICAgICAgICB0aGlzLmN1cnJlbnRTbHVnLFxuICAgICAgICBgLyR7dGhpcy5zZWxlY3RlZFRhYn0vYCxcbiAgICAgIF0uam9pbignJyksXG4gICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlIHx8IDEsXG4gICAgICAgIHNpemU6IHRoaXMucGFnZVNpemUsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZ2V0TmF2QmFzZVBhdGgoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5nZXQoJ3BhdGhzJykuZW50aXRhQmFzZVBhdGgsXG4gICAgICBgJHt0aGlzLmN1cnJlbnRJZH0vYCxcbiAgICAgIHRoaXMuY3VycmVudFNsdWcsXG4gICAgXS5qb2luKCcnKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRJdGVtQ291bnQoKTogbnVtYmVyIHtcbiAgICBzd2l0Y2ggKHRoaXMuc2VsZWN0ZWRUYWIpIHtcbiAgICAgIGNhc2UgJ2ZvbmRpLWNvbGxlZ2F0aSc6XG4gICAgICAgIHJldHVybiB0aGlzLm15UmVzcG9uc2UucmVsYXRlZExhVG90YWxDb3VudDtcbiAgICAgIGNhc2UgJ29nZ2V0dGktY29sbGVnYXRpJzpcbiAgICAgICAgcmV0dXJuIHRoaXMubXlSZXNwb25zZS5yZWxhdGVkSXRlbXNUb3RhbENvdW50O1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldEZpZWxkcyhyZXNwb25zZSkge1xuICAgIGNvbnN0IHsgZmllbGRzLCB0eXBlT2ZFbnRpdHkgfSA9IHJlc3BvbnNlO1xuICAgIGNvbnN0IHBhdGhzID0gdGhpcy5jb25maWd1cmF0aW9uLmdldCgncGF0aHMnKTtcbiAgICBjb25zdCBsYWJlbHMgPSB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0KCdsYWJlbHMnKTtcbiAgICBsZXQgbWV0YWRhdGFUb1Nob3cgPSBfZ2V0KHRoaXMuY29uZmlndXJhdGlvbi5nZXQoJ2VudGl0YS1sYXlvdXQnKSwgJ21ldGFkYXRhLXRvLXNob3cnLCBbXSk7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRUYWIgPT09ICdvdmVydmlldycpIHtcbiAgICAgIG1ldGFkYXRhVG9TaG93ID0gX2dldCh0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0KCdlbnRpdGEtbGF5b3V0JyksICdvdmVydmlldy5pbmZvcm1hemlvbmknLCBbXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1ldGFkYXRhSGVscGVyLm5vcm1hbGl6ZSh7XG4gICAgICBmaWVsZHMsXG4gICAgICBwYXRocyxcbiAgICAgIGxhYmVscyxcbiAgICAgIG1ldGFkYXRhVG9TaG93LFxuICAgICAgdHlwZTogdHlwZU9mRW50aXR5XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldExpbmtlZE9iamVjdEl0ZW1zKCkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVGFiID09PSAnZm9uZGktY29sbGVnYXRpJ1xuICAgICAgPyB0aGlzLm15UmVzcG9uc2UucmVsYXRlZExhXG4gICAgICA6IHRoaXMubXlSZXNwb25zZS5yZWxhdGVkSXRlbXM7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgdG90YWwgYW1vdW50IG9mIHBhZ2VzXG4gICAqXG4gICAqIEBwYXJhbSBpdGVtcyB0aGUgbnVtYmVyIG9mIHJlY29yZHMgaW4gdGhlIGRhdGFiYXNlXG4gICAqIEBwYXJhbSBzaXplIHRoZSBudW1iZXIgb2YgaXRlbXMgc2hvd24gb24gYSBwYWdlXG4gICAqIEByZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgcGFnZXNcbiAgICovXG4gIHByaXZhdGUgZ2V0UGFnZUNvdW50KGl0ZW1zOiBudW1iZXIsIHNpemU6IG51bWJlcikge1xuICAgIHJldHVybiBNYXRoLmZsb29yKGl0ZW1zIC8gc2l6ZSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { EventHandler } from '@n7-frontend/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import { map } from 'rxjs/operators';
|
|
4
|
+
export class AwEntitaLayoutEH extends EventHandler {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(...arguments);
|
|
7
|
+
this.destroyed$ = new Subject();
|
|
8
|
+
this.handlePageSizeChange = (size) => {
|
|
9
|
+
this.dataSource.pageSize = size;
|
|
10
|
+
this.dataSource.currentPage = 1;
|
|
11
|
+
this.dataSource.handleNavUpdate('oggetti-collegati');
|
|
12
|
+
// this.dataSource.handlePageNavigation();
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
listen() {
|
|
16
|
+
this.innerEvents$.subscribe(({ type, payload }) => {
|
|
17
|
+
switch (type) {
|
|
18
|
+
case 'aw-entita-layout.init':
|
|
19
|
+
this.dataSource.onInit(payload);
|
|
20
|
+
this.configuration = payload.configuration;
|
|
21
|
+
this.route = payload.route;
|
|
22
|
+
this.entityId = this.route.snapshot.params.id || '';
|
|
23
|
+
this.dataSource.currentPage = this.route.snapshot.params.page || 1;
|
|
24
|
+
this.listenRoute(this.entityId);
|
|
25
|
+
// scroll top
|
|
26
|
+
window.scrollTo(0, 0);
|
|
27
|
+
break;
|
|
28
|
+
case 'aw-entita-layout.destroy':
|
|
29
|
+
this.destroyed$.next();
|
|
30
|
+
break;
|
|
31
|
+
case 'aw-entita-layout.showmore':
|
|
32
|
+
if (payload) {
|
|
33
|
+
this.dataSource.handleNavUpdate(payload);
|
|
34
|
+
}
|
|
35
|
+
break;
|
|
36
|
+
default:
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
this.outerEvents$.subscribe(({ type, payload }) => {
|
|
41
|
+
switch (type) {
|
|
42
|
+
case 'aw-entita-nav.click':
|
|
43
|
+
if (payload) {
|
|
44
|
+
this.dataSource.selectedTab = payload;
|
|
45
|
+
this.dataSource.handleNavUpdate(payload);
|
|
46
|
+
}
|
|
47
|
+
break;
|
|
48
|
+
case 'aw-linked-objects.change':
|
|
49
|
+
{
|
|
50
|
+
const options = {
|
|
51
|
+
context: this.dataSource.selectedTab,
|
|
52
|
+
config: this.dataSource.configuration,
|
|
53
|
+
dynamicPagination: {
|
|
54
|
+
total: this.dataSource.myResponse.totalCount,
|
|
55
|
+
},
|
|
56
|
+
page: this.dataSource.currentPage,
|
|
57
|
+
size: this.dataSource.pageSize,
|
|
58
|
+
pagination: true,
|
|
59
|
+
};
|
|
60
|
+
this.dataSource.updateComponent('aw-linked-objects', { items: this.dataSource.myResponse.relatedItems }, options);
|
|
61
|
+
}
|
|
62
|
+
break;
|
|
63
|
+
case 'n7-smart-pagination.change': // changed page size value (pagination)
|
|
64
|
+
this.handlePageSizeChange(payload.value);
|
|
65
|
+
break;
|
|
66
|
+
default:
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Listens to routing events of this layout.
|
|
73
|
+
*/
|
|
74
|
+
listenRoute(selectedItem = '', forceReload = false) {
|
|
75
|
+
// listen for "page" query param changes-
|
|
76
|
+
this.route.queryParams.pipe(map((params) => ({
|
|
77
|
+
page: params.page,
|
|
78
|
+
size: params.size
|
|
79
|
+
}))).subscribe(({ page, size }) => {
|
|
80
|
+
if (size) {
|
|
81
|
+
this.dataSource.pageSize = size;
|
|
82
|
+
}
|
|
83
|
+
if (this.dataSource.currentPage !== page) {
|
|
84
|
+
this.dataSource.currentPage = page;
|
|
85
|
+
this.dataSource.handlePageNavigation();
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
// get URL parameters with angular's paramMap
|
|
89
|
+
this.route.paramMap.subscribe((params) => {
|
|
90
|
+
// look for id
|
|
91
|
+
if (params.get('id')) {
|
|
92
|
+
if (this.dataSource.currentId === params.get('id') && !forceReload) {
|
|
93
|
+
if (this.dataSource.selectedTab !== params.get('tab')) {
|
|
94
|
+
this.dataSource.handleNavUpdate(params.get('tab'));
|
|
95
|
+
}
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
// get item from response with id === id and return as promise
|
|
99
|
+
this.dataSource.loadItem(params.get('id'), params.get('slug'), params.get('tab'))
|
|
100
|
+
.subscribe((res) => {
|
|
101
|
+
if (res) {
|
|
102
|
+
this.dataSource.loadContent(res);
|
|
103
|
+
// remove the entity of this page
|
|
104
|
+
this.dataSource.updateWidgets(res);
|
|
105
|
+
if (selectedItem) {
|
|
106
|
+
this.emitOuter('selectItem', selectedItem);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
this.dataSource.loadItem();
|
|
113
|
+
}
|
|
114
|
+
// scroll top
|
|
115
|
+
window.scrollTo(0, 0);
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRhLWxheW91dC5laC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL243LWJvaWxlcnBsYXRlLWFyaWFubmEvc3JjL2xpYi9sYXlvdXRzL2VudGl0YS1sYXlvdXQvZW50aXRhLWxheW91dC5laC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFlBQVk7SUFBbEQ7O1FBQ1UsZUFBVSxHQUFpQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBdUV6Qyx5QkFBb0IsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3RDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUNyRCwwQ0FBMEM7UUFDNUMsQ0FBQyxDQUFBO0lBa0RILENBQUM7SUF0SFEsTUFBTTtRQUNYLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtZQUNoRCxRQUFRLElBQUksRUFBRTtnQkFDWixLQUFLLHVCQUF1QjtvQkFDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ2hDLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztvQkFDM0MsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO29CQUMzQixJ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LENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQzt5QkFDNUM7cUJBQ0Y7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDTjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQzVCO1lBQ0QsYUFBYTtZQUNiLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRIYW5kbGVyIH0gZnJvbSAnQG43LWZyb250ZW5kL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgY2xhc3MgQXdFbnRpdGFMYXlvdXRFSCBleHRlbmRzIEV2ZW50SGFuZGxlciB7XG4gIHByaXZhdGUgZGVzdHJveWVkJDogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIGNvbmZpZ3VyYXRpb246IGFueTtcblxuICBwcml2YXRlIHJvdXRlOiBhbnk7XG5cbiAgcHJpdmF0ZSBlbnRpdHlJZDogc3RyaW5nO1xuXG4gIHB1YmxpYyBsaXN0ZW4oKSB7XG4gICAgdGhpcy5pbm5lckV2ZW50cyQuc3Vic2NyaWJlKCh7IHR5cGUsIHBheWxvYWQgfSkgPT4ge1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgJ2F3LWVudGl0YS1sYXlvdXQuaW5pdCc6XG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlLm9uSW5pdChwYXlsb2FkKTtcbiAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBwYXlsb2FkLmNvbmZpZ3VyYXRpb247XG4gICAgICAgICAgdGhpcy5yb3V0ZSA9IHBheWxvYWQucm91dGU7XG4gICAgICAgICAgdGhpcy5lbnRpdHlJZCA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLmlkIHx8ICcnO1xuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5jdXJyZW50UGFnZSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLnBhZ2UgfHwgMTtcbiAgICAgICAgICB0aGlzLmxpc3RlblJvdXRlKHRoaXMuZW50aXR5SWQpO1xuICAgICAgICAgIC8vIHNjcm9sbCB0b3BcbiAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnYXctZW50aXRhLWxheW91dC5kZXN0cm95JzpcbiAgICAgICAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2F3LWVudGl0YS1sYXlvdXQuc2hvd21vcmUnOlxuICAgICAgICAgIGlmIChwYXlsb2FkKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UuaGFuZGxlTmF2VXBkYXRlKHBheWxvYWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5vdXRlckV2ZW50cyQuc3Vic2NyaWJlKCh7IHR5cGUsIHBheWxvYWQgfSkgPT4ge1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgJ2F3LWVudGl0YS1uYXYuY2xpY2snOlxuICAgICAgICAgIGlmIChwYXlsb2FkKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2Uuc2VsZWN0ZWRUYWIgPSBwYXlsb2FkO1xuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLmhhbmRsZU5hdlVwZGF0ZShwYXlsb2FkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2F3LWxpbmtlZC1vYmplY3RzLmNoYW5nZSc6IHtcbiAgICAgICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICAgICAgY29udGV4dDogdGhpcy5kYXRhU291cmNlLnNlbGVjdGVkVGFiLFxuICAgICAgICAgICAgY29uZmlnOiB0aGlzLmRhdGFTb3VyY2UuY29uZmlndXJhdGlvbixcbiAgICAgICAgICAgIGR5bmFtaWNQYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICAgIHRvdGFsOiB0aGlzLmRhdGFTb3VyY2UubXlSZXNwb25zZS50b3RhbENvdW50LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhZ2U6IHRoaXMuZGF0YVNvdXJjZS5jdXJyZW50UGFnZSxcbiAgICAgICAgICAgIHNpemU6IHRoaXMuZGF0YVNvdXJjZS5wYWdlU2l6ZSxcbiAgICAgICAgICAgIHBhZ2luYXRpb246IHRydWUsXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UudXBkYXRlQ29tcG9uZW50KFxuICAgICAgICAgICAgJ2F3LWxpbmtlZC1vYmplY3RzJyxcbiAgICAgICAgICAgIHsgaXRlbXM6IHRoaXMuZGF0YVNvdXJjZS5teVJlc3BvbnNlLnJlbGF0ZWRJdGVtcyB9LFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICApO1xuICAgICAgICB9IGJyZWFrO1xuICAgICAgICBjYXNlICduNy1zbWFydC1wYWdpbmF0aW9uLmNoYW5nZSc6IC8vIGNoYW5nZWQgcGFnZSBzaXplIHZhbHVlIChwYWdpbmF0aW9uKVxuICAgICAgICAgIHRoaXMuaGFuZGxlUGFnZVNpemVDaGFuZ2UocGF5bG9hZC52YWx1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVBhZ2VTaXplQ2hhbmdlID0gKHNpemUpID0+IHtcbiAgICB0aGlzLmRhdGFTb3VyY2UucGFnZVNpemUgPSBzaXplO1xuICAgIHRoaXMuZGF0YVNvdXJjZS5jdXJyZW50UGFnZSA9IDE7XG4gICAgdGhpcy5kYXRhU291cmNlLmhhbmRsZU5hdlVwZGF0ZSgnb2dnZXR0aS1jb2xsZWdhdGknKTtcbiAgICAvLyB0aGlzLmRhdGFTb3VyY2UuaGFuZGxlUGFnZU5hdmlnYXRpb24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW5zIHRvIHJvdXRpbmcgZXZlbnRzIG9mIHRoaXMgbGF5b3V0LlxuICAgKi9cbiAgcHJpdmF0ZSBsaXN0ZW5Sb3V0ZShzZWxlY3RlZEl0ZW0gPSAnJywgZm9yY2VSZWxvYWQgPSBmYWxzZSkge1xuICAgIC8vIGxpc3RlbiBmb3IgXCJwYWdlXCIgcXVlcnkgcGFyYW0gY2hhbmdlcy1cbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnBpcGUoXG4gICAgICBtYXAoKHBhcmFtczogYW55KSA9PiAoe1xuICAgICAgICBwYWdlOiBwYXJhbXMucGFnZSxcbiAgICAgICAgc2l6ZTogcGFyYW1zLnNpemVcbiAgICAgIH0pKSxcbiAgICApLnN1YnNjcmliZSgoeyBwYWdlLCBzaXplIH0pID0+IHtcbiAgICAgIGlmIChzaXplKSB7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5wYWdlU2l6ZSA9IHNpemU7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kYXRhU291cmNlLmN1cnJlbnRQYWdlICE9PSBwYWdlKSB7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5jdXJyZW50UGFnZSA9IHBhZ2U7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5oYW5kbGVQYWdlTmF2aWdhdGlvbigpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIC8vIGdldCBVUkwgcGFyYW1ldGVycyB3aXRoIGFuZ3VsYXIncyBwYXJhbU1hcFxuICAgIHRoaXMucm91dGUucGFyYW1NYXAuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcbiAgICAgIC8vIGxvb2sgZm9yIGlkXG4gICAgICBpZiAocGFyYW1zLmdldCgnaWQnKSkge1xuICAgICAgICBpZiAodGhpcy5kYXRhU291cmNlLmN1cnJlbnRJZCA9PT0gcGFyYW1zLmdldCgnaWQnKSAmJiAhZm9yY2VSZWxvYWQpIHtcbiAgICAgICAgICBpZiAodGhpcy5kYXRhU291cmNlLnNlbGVjdGVkVGFiICE9PSBwYXJhbXMuZ2V0KCd0YWInKSkge1xuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLmhhbmRsZU5hdlVwZGF0ZShwYXJhbXMuZ2V0KCd0YWInKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBnZXQgaXRlbSBmcm9tIHJlc3BvbnNlIHdpdGggaWQgPT09IGlkIGFuZCByZXR1cm4gYXMgcHJvbWlzZVxuICAgICAgICB0aGlzLmRhdGFTb3VyY2UubG9hZEl0ZW0ocGFyYW1zLmdldCgnaWQnKSwgcGFyYW1zLmdldCgnc2x1ZycpLCBwYXJhbXMuZ2V0KCd0YWInKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLmxvYWRDb250ZW50KHJlcyk7XG4gICAgICAgICAgICAgIC8vIHJlbW92ZSB0aGUgZW50aXR5IG9mIHRoaXMgcGFnZVxuICAgICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UudXBkYXRlV2lkZ2V0cyhyZXMpO1xuICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0T3V0ZXIoJ3NlbGVjdEl0ZW0nLCBzZWxlY3RlZEl0ZW0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UubG9hZEl0ZW0oKTtcbiAgICAgIH1cbiAgICAgIC8vIHNjcm9sbCB0b3BcbiAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|